Skip to content

Commit

Permalink
fix(plugin): input.required parameter should be the option object if …
Browse files Browse the repository at this point in the history
…exist
  • Loading branch information
nartc committed Jan 12, 2024
1 parent 16d85f1 commit dbb7cf4
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ export class MyCmp {
withDefaultAlias = input(123, {alias: 'defaultAlias'});
withoutDefaultAlias = input<number| undefined>(undefined, {alias: 'noDefaultAlias'});
justAStringAlias = input('', { alias: 'stringAlias' });
withTransform = input<boolean,string | ''>(false, {transform: booleanAttribute});
withTransform = input<boolean,string | ''>(booleanAttribute(false), {transform: booleanAttribute});
requiredInput = input.required<string>();
requiredWithAlias = input.required<boolean>(, {alias: 'requiredAlias'});
requiredWithAliasAndTransform = input.required<number,string | ''>(, {alias: 'transformedRequiredAlias', transform: numberAttribute});
requiredWithAlias = input.required<boolean>({alias: 'requiredAlias'});
requiredWithAliasAndTransform = input.required<number,string | ''>({alias: 'transformedRequiredAlias', transform: numberAttribute});
@Input() set leaveMeAlone(value: number) {
console.log('setter', value);
Expand Down Expand Up @@ -94,10 +94,10 @@ export class MyCmp {
withDefaultAlias = input(123, {alias: 'defaultAlias'});
withoutDefaultAlias = input<number| undefined>(undefined, {alias: 'noDefaultAlias'});
justAStringAlias = input('', { alias: 'stringAlias' });
withTransform = input<boolean,string | ''>(false, {transform: booleanAttribute});
withTransform = input<boolean,string | ''>(booleanAttribute(false), {transform: booleanAttribute});
requiredInput = input.required<string>();
requiredWithAlias = input.required<boolean>(, {alias: 'requiredAlias'});
requiredWithAliasAndTransform = input.required<number,string | ''>(, {alias: 'transformedRequiredAlias', transform: numberAttribute});
requiredWithAlias = input.required<boolean>({alias: 'requiredAlias'});
requiredWithAliasAndTransform = input.required<number,string | ''>({alias: 'transformedRequiredAlias', transform: numberAttribute});
@Input() set leaveMeAlone(value: number) {
console.log('setter', value);
Expand Down
61 changes: 0 additions & 61 deletions libs/plugin/src/generators/convert-signal-inputs/generator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,67 +123,6 @@ export class MyCmp {
`,
} as const;

const output = `import { Component, Input, input } from '@angular/core';
import { input } from '@angular/core';
@Component({
template: \`
<div>{{ inputWithoutType() }}</div>
<div [id]="normalInput()">{{ withoutDefault() }}</div>
@if (withoutDefaultUnion()) {
<app-test [acceptsString]="withoutDefaultUnion()!" />
@if (withoutDefaultAlias()) {
<app-test [acceptsString]="withoutDefaultAlias()! || withoutDefaultUnion()!" />
}
}
<ng-container *ngIf="withDefaultAlias()">
<app-test [acceptsString]="withDefaultAlias()" />
<ng-container *ngIf="withoutDefaultAlias()">
<app-test [acceptsString]="withoutDefaultAlias() || withDefaultAlias()" />
</ng-container>
</ng-container>
\`
})
export class MyCmp {
@Input()
set leaveMeAlone(value: number) {
console.log('setter', value);
}
normalInput = input('');
withoutDefault = input<string | undefined>();
withoutDefaultUnion = input<string | undefined>();
withDefaultAlias = input(123, { alias: 'defaultAlias' });
withoutDefaultAlias = input<number | undefined>(undefined, { alias: 'noDefaultAlias' });
justAStringAlias = input('', { alias: 'stringAlias' });
withTransform = input<boolean, string | ''>(false, { transform: booleanAttribute });
requiredInput = input.required<string>();
requiredWithAlias = input.required<boolean>({ alias: 'requiredAlias' });
requiredWithAliasAndTransform = input.required<number, string | ''>({ alias: 'transformedRequiredAlias', transform: numberAttribute });
ngOnInit() {
let imABoolean = false;
console.log(this.justAStringAlias());
if (this.withTransform()) {
imABoolean = this.withTransform()!;
}
}
handleClick() {
if (this.requiredInput()) {
let test = this.requiredInput() + this.requiredWithAlias();
} else {
let test = this.requiredWithAliasAndTransform() + this.requiredWithAlias();
}
}
}
`;

describe('convertSignalInputsGenerator', () => {
let tree: Tree;
const options: ConvertSignalInputsGeneratorSchema = {
Expand Down
21 changes: 16 additions & 5 deletions libs/plugin/src/generators/convert-signal-inputs/generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,17 @@ function getSignalInputInitializer(
writer.write('(');

if (!isRequired) {
if (propertyInitializer) {
writer.write(propertyInitializer.getText());
} else if (defaultToUndefined) {
writer.write('undefined');
let defaultValue = propertyInitializer
? propertyInitializer.getText()
: defaultToUndefined
? 'undefined'
: '';

if (defaultValue) {
if (['boolean', 'number'].includes(transformType)) {
defaultValue = `${transformType}Attribute(${defaultValue})`;
}
writer.write(defaultValue);
}
}
};
Expand Down Expand Up @@ -156,7 +163,11 @@ function getSignalInputInitializer(
}

writeTypeNodeAndInitializer(writer, required, transformType, true);
writer.write(optionsAsText ? `, ${optionsAsText});` : ');');
if (required) {
writer.write(optionsAsText ? `${optionsAsText});` : ');');
} else {
writer.write(optionsAsText ? `, ${optionsAsText});` : ');');
}
} else if (Node.isStringLiteral(decoratorArg)) {
writeTypeNodeAndInitializer(writer, false, '', true);
writer.write(`, { alias: ${decoratorArg.getText()} });`);
Expand Down

0 comments on commit dbb7cf4

Please sign in to comment.