@rxap/schematic-angular 18.1.0-dev.1 → 18.1.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/collection.json +10 -0
  3. package/package.json +8 -8
  4. package/src/lib/accordion/accordion-header-kind.d.ts +1 -2
  5. package/src/lib/accordion/accordion-header-kind.js +0 -1
  6. package/src/lib/accordion/accordion-header-kind.js.map +1 -1
  7. package/src/lib/accordion/accordion-item-kind.d.ts +2 -1
  8. package/src/lib/accordion/accordion-item-kind.js +1 -0
  9. package/src/lib/accordion/accordion-item-kind.js.map +1 -1
  10. package/src/lib/accordion/accordion-item.d.ts +3 -2
  11. package/src/lib/accordion/accordion-item.js +3 -0
  12. package/src/lib/accordion/accordion-item.js.map +1 -1
  13. package/src/lib/accordion/accordion.d.ts +29 -0
  14. package/src/lib/accordion/accordion.js +58 -0
  15. package/src/lib/accordion/accordion.js.map +1 -0
  16. package/src/lib/accordion/item/base-accordion-item.js +0 -4
  17. package/src/lib/accordion/item/base-accordion-item.js.map +1 -1
  18. package/src/lib/accordion/item/nested-accordion-item.d.ts +14 -0
  19. package/src/lib/accordion/item/nested-accordion-item.js +19 -0
  20. package/src/lib/accordion/item/nested-accordion-item.js.map +1 -0
  21. package/src/lib/coerce-accordion-component.js +15 -5
  22. package/src/lib/coerce-accordion-component.js.map +1 -1
  23. package/src/lib/coerce-accordion-item-table-component.d.ts +4 -1
  24. package/src/lib/coerce-accordion-item-table-component.js +4 -1
  25. package/src/lib/coerce-accordion-item-table-component.js.map +1 -1
  26. package/src/lib/form/control/autocomplete-form-control.d.ts +32 -0
  27. package/src/lib/form/control/autocomplete-form-control.js +58 -0
  28. package/src/lib/form/control/autocomplete-form-control.js.map +1 -0
  29. package/src/lib/form/control/form-control-kind.d.ts +1 -0
  30. package/src/lib/form/control/form-control-kind.js +1 -0
  31. package/src/lib/form/control/form-control-kind.js.map +1 -1
  32. package/src/lib/form/control/form-control.js +3 -0
  33. package/src/lib/form/control/form-control.js.map +1 -1
  34. package/src/lib/form/control/table-select-form-control.d.ts +6 -11
  35. package/src/lib/form/control/table-select-form-control.js +5 -6
  36. package/src/lib/form/control/table-select-form-control.js.map +1 -1
  37. package/src/lib/minimum-table-component-options.js +49 -23
  38. package/src/lib/minimum-table-component-options.js.map +1 -1
  39. package/src/lib/utilities/to-function.d.ts +9 -0
  40. package/src/lib/utilities/to-function.js +14 -0
  41. package/src/lib/utilities/to-function.js.map +1 -0
  42. package/src/schema.json +219 -58
  43. package/src/schematic-input.schema.json +38 -0
  44. package/src/schematics/accordion/accordion-component/files/component/__componentName__.component.stories.ts.hbs +34 -0
  45. package/src/schematics/accordion/accordion-component/index.d.ts +2 -15
  46. package/src/schematics/accordion/accordion-component/index.js +33 -44
  47. package/src/schematics/accordion/accordion-component/index.js.map +1 -1
  48. package/src/schematics/accordion/accordion-component/schema.d.ts +2 -19
  49. package/src/schematics/accordion/accordion-component/schema.json +155 -59
  50. package/src/schematics/accordion/accordion-component/template.schema.json +3 -72
  51. package/src/schematics/accordion/accordion-item-component/files/component/__componentName__.component.html.template +1 -1
  52. package/src/schematics/accordion/accordion-item-component/files/component/__componentName__.component.stories.ts.hbs +40 -0
  53. package/src/schematics/accordion/accordion-item-component/index.d.ts +4 -8
  54. package/src/schematics/accordion/accordion-item-component/index.js +77 -29
  55. package/src/schematics/accordion/accordion-item-component/index.js.map +1 -1
  56. package/src/schematics/accordion/accordion-item-component/schema.d.ts +4 -5
  57. package/src/schematics/accordion/accordion-item-component/schema.json +253 -0
  58. package/src/schematics/accordion/item/accordion-item-data-grid-component/index.d.ts +6 -3
  59. package/src/schematics/accordion/item/accordion-item-data-grid-component/index.js +5 -4
  60. package/src/schematics/accordion/item/accordion-item-data-grid-component/index.js.map +1 -1
  61. package/src/schematics/accordion/item/accordion-item-data-grid-component/schema.d.ts +4 -2
  62. package/src/schematics/accordion/item/accordion-item-data-grid-component/schema.json +55 -0
  63. package/src/schematics/accordion/item/accordion-item-nested-component/index.d.ts +12 -0
  64. package/src/schematics/accordion/item/accordion-item-nested-component/index.js +40 -0
  65. package/src/schematics/accordion/item/accordion-item-nested-component/index.js.map +1 -0
  66. package/src/schematics/accordion/item/accordion-item-nested-component/schema.d.ts +6 -0
  67. package/src/schematics/accordion/item/accordion-item-nested-component/schema.json +2645 -0
  68. package/src/schematics/accordion/item/accordion-item-nested-component/template.schema.json +20 -0
  69. package/src/schematics/accordion/item/accordion-item-switch-component/index.d.ts +6 -3
  70. package/src/schematics/accordion/item/accordion-item-switch-component/index.js +1 -3
  71. package/src/schematics/accordion/item/accordion-item-switch-component/index.js.map +1 -1
  72. package/src/schematics/accordion/item/accordion-item-switch-component/schema.d.ts +4 -2
  73. package/src/schematics/accordion/item/accordion-item-switch-component/schema.json +253 -0
  74. package/src/schematics/accordion/item/accordion-item-table-component/index.d.ts +6 -3
  75. package/src/schematics/accordion/item/accordion-item-table-component/index.js +4 -4
  76. package/src/schematics/accordion/item/accordion-item-table-component/index.js.map +1 -1
  77. package/src/schematics/accordion/item/accordion-item-table-component/schema.d.ts +4 -2
  78. package/src/schematics/accordion/item/accordion-item-table-component/schema.json +55 -0
  79. package/src/schematics/accordion/item/accordion-item-tree-table-component/index.d.ts +7 -3
  80. package/src/schematics/accordion/item/accordion-item-tree-table-component/index.js +1 -3
  81. package/src/schematics/accordion/item/accordion-item-tree-table-component/index.js.map +1 -1
  82. package/src/schematics/accordion/item/accordion-item-tree-table-component/schema.d.ts +4 -2
  83. package/src/schematics/accordion/item/accordion-item-tree-table-component/schema.json +55 -0
  84. package/src/schematics/accordion/templates/nested-accordion-item.hbs +15 -0
  85. package/src/schematics/accordion-item.schema.json +6 -0
  86. package/src/schematics/accordion.schema.json +91 -0
  87. package/src/schematics/autocomplete-form-control.schema.json +66 -0
  88. package/src/schematics/data-grid-component/schema.json +55 -0
  89. package/src/schematics/form/control/autocomplete-form-control/index.d.ts +8 -0
  90. package/src/schematics/form/control/autocomplete-form-control/index.js +151 -0
  91. package/src/schematics/form/control/autocomplete-form-control/index.js.map +1 -0
  92. package/src/schematics/form/control/autocomplete-form-control/schema.d.ts +4 -0
  93. package/src/schematics/form/control/autocomplete-form-control/schema.json +537 -0
  94. package/src/schematics/form/control/autocomplete-form-control/template.schema.json +39 -0
  95. package/src/schematics/form/control/autocomplete-table-select-form-control/index.js +1 -1
  96. package/src/schematics/form/control/autocomplete-table-select-form-control/index.js.map +1 -1
  97. package/src/schematics/form/form-array/schema.json +55 -0
  98. package/src/schematics/form/form-component/schema.json +55 -0
  99. package/src/schematics/form/form-control/index.js +2 -0
  100. package/src/schematics/form/form-control/index.js.map +1 -1
  101. package/src/schematics/form/form-control/schema.json +55 -0
  102. package/src/schematics/form/form-definition/schema.json +55 -0
  103. package/src/schematics/form/form-group/schema.json +55 -0
  104. package/src/schematics/form/templates/autocomplete-form-control.hbs +22 -0
  105. package/src/schematics/form-control.schema.json +6 -0
  106. package/src/schematics/nested-accordion-item.schema.json +30 -0
  107. package/src/schematics/table/action/dialog-table-action/schema.json +55 -0
  108. package/src/schematics/table/action/form-table-action/index.js +9 -5
  109. package/src/schematics/table/action/form-table-action/index.js.map +1 -1
  110. package/src/schematics/table/action/form-table-action/schema.json +55 -0
  111. package/src/schematics/table/action/navigation-table-action/schema.json +55 -0
  112. package/src/schematics/table/action/open-api-table-action/schema.json +55 -0
  113. package/src/schematics/table/action/operation-table-action/index.js +11 -7
  114. package/src/schematics/table/action/operation-table-action/index.js.map +1 -1
  115. package/src/schematics/table/action/operation-table-action/schema.json +55 -0
  116. package/src/schematics/table/header-button/form-table-header-button/schema.json +55 -0
  117. package/src/schematics/table/table-action/index.js.map +1 -1
  118. package/src/schematics/table/table-action/schema.d.ts +1 -2
  119. package/src/schematics/table/table-action/schema.json +55 -0
  120. package/src/schematics/table/table-component/schema.json +55 -0
  121. package/src/schematics/table/tree-table-component/schema.json +55 -0
  122. package/src/template.schema.json +15 -0
@@ -1,21 +1,4 @@
1
- import {
2
- DataProperty,
3
- TypeImport,
4
- UpstreamOptions,
5
- } from '@rxap/ts-morph';
6
- import { AccordionIdentifier } from '../../../lib/accordion-identifier';
7
- import { AccordionHeader } from '../../../lib/accordion/accordion-header';
8
- import { AccordionItem } from '../../../lib/accordion/accordion-item';
1
+ import { Accordion } from '../../../lib/accordion/accordion';
9
2
  import { AngularOptions } from '../../../lib/angular-options';
10
- import { Persistent } from '../../../lib/persistent';
11
3
 
12
- export interface AccordionComponentOptions extends AngularOptions {
13
- itemList?: Array<AccordionItem>;
14
- multiple?: boolean;
15
- persistent?: Persistent;
16
- header?: AccordionHeader;
17
- identifier?: AccordionIdentifier;
18
- upstream?: UpstreamOptions;
19
- propertyList?: DataProperty[];
20
- importList?: TypeImport[];
21
- }
4
+ export type AccordionComponentOptions = Accordion & AngularOptions;
@@ -6,65 +6,7 @@
6
6
  "$ref": "#/definitions/angular"
7
7
  },
8
8
  {
9
- "type": "object",
10
- "properties": {
11
- "multiple": {
12
- "type": "boolean",
13
- "description": "Whether the accordion should allow multiple panels to be expanded at the same time",
14
- "default": false,
15
- "alias": "multi"
16
- },
17
- "persistent": {
18
- "oneOf": [
19
- {
20
- "type": "object",
21
- "properties": {
22
- "key": {
23
- "type": "string"
24
- }
25
- },
26
- "required": [
27
- "key"
28
- ]
29
- },
30
- {
31
- "type": "object",
32
- "properties": {
33
- "property": {
34
- "$ref": "#/definitions/property"
35
- }
36
- },
37
- "required": [
38
- "property"
39
- ]
40
- }
41
- ]
42
- },
43
- "identifier": {
44
- "$ref": "#/definitions/accordionIdentifier"
45
- },
46
- "header": {
47
- "$ref": "#/definitions/accordionHeader"
48
- },
49
- "itemList": {
50
- "alias": "item",
51
- "type": "array",
52
- "items": {
53
- "$ref": "#/definitions/accordionItem"
54
- },
55
- "description": "The list of accordion expansion panels"
56
- },
57
- "upstream": {
58
- "$ref": "#/definitions/upstream"
59
- },
60
- "propertyList": {
61
- "alias": "property",
62
- "type": "array",
63
- "items": {
64
- "$ref": "#/definitions/property"
65
- }
66
- }
67
- }
9
+ "$ref": "#/definitions/accordion"
68
10
  }
69
11
  ],
70
12
  "definitions": {
@@ -140,6 +82,79 @@
140
82
  }
141
83
  ]
142
84
  },
85
+ "accordion": {
86
+ "type": "object",
87
+ "properties": {
88
+ "name": {
89
+ "type": "string",
90
+ "description": "The name of the accordion component"
91
+ },
92
+ "importList": {
93
+ "alias": "import",
94
+ "type": "array",
95
+ "items": {
96
+ "$ref": "#/definitions/type"
97
+ },
98
+ "description": "The list of imports"
99
+ },
100
+ "multiple": {
101
+ "type": "boolean",
102
+ "description": "Whether the accordion should allow multiple panels to be expanded at the same time",
103
+ "default": false,
104
+ "alias": "multi"
105
+ },
106
+ "persistent": {
107
+ "oneOf": [
108
+ {
109
+ "type": "object",
110
+ "properties": {
111
+ "key": {
112
+ "type": "string"
113
+ }
114
+ },
115
+ "required": [
116
+ "key"
117
+ ]
118
+ },
119
+ {
120
+ "type": "object",
121
+ "properties": {
122
+ "property": {
123
+ "$ref": "#/definitions/property"
124
+ }
125
+ },
126
+ "required": [
127
+ "property"
128
+ ]
129
+ }
130
+ ]
131
+ },
132
+ "identifier": {
133
+ "$ref": "#/definitions/accordionIdentifier"
134
+ },
135
+ "header": {
136
+ "$ref": "#/definitions/accordionHeader"
137
+ },
138
+ "itemList": {
139
+ "alias": "item",
140
+ "type": "array",
141
+ "items": {
142
+ "$ref": "#/definitions/accordionItem"
143
+ },
144
+ "description": "The list of accordion expansion panels"
145
+ },
146
+ "upstream": {
147
+ "$ref": "#/definitions/upstream"
148
+ },
149
+ "propertyList": {
150
+ "alias": "property",
151
+ "type": "array",
152
+ "items": {
153
+ "$ref": "#/definitions/property"
154
+ }
155
+ }
156
+ }
157
+ },
143
158
  "accordionHeader": {
144
159
  "oneOf": [
145
160
  {
@@ -214,6 +229,9 @@
214
229
  },
215
230
  {
216
231
  "$ref": "#/definitions/treeTableAccordionItem"
232
+ },
233
+ {
234
+ "$ref": "#/definitions/nestedAccordionItem"
217
235
  }
218
236
  ]
219
237
  },
@@ -268,6 +286,58 @@
268
286
  }
269
287
  ]
270
288
  },
289
+ "autocompleteFormControl": {
290
+ "allOf": [
291
+ {
292
+ "$ref": "#/definitions/baseFormControl"
293
+ },
294
+ {
295
+ "type": "object",
296
+ "properties": {
297
+ "formField": {
298
+ "$ref": "#/definitions/formField"
299
+ },
300
+ "kind": {
301
+ "type": "string",
302
+ "const": "autocomplete"
303
+ },
304
+ "placeholder": {
305
+ "type": "string"
306
+ },
307
+ "toDisplay": {
308
+ "type": "object",
309
+ "properties": {
310
+ "property": {
311
+ "$ref": "#/definitions/property"
312
+ }
313
+ }
314
+ },
315
+ "toValue": {
316
+ "type": "object",
317
+ "properties": {
318
+ "property": {
319
+ "$ref": "#/definitions/property"
320
+ }
321
+ }
322
+ },
323
+ "upstream": {
324
+ "$ref": "#/definitions/upstream"
325
+ },
326
+ "resolver": {
327
+ "type": "object",
328
+ "properties": {
329
+ "upstream": {
330
+ "$ref": "#/definitions/upstream"
331
+ }
332
+ }
333
+ }
334
+ },
335
+ "required": [
336
+ "kind"
337
+ ]
338
+ }
339
+ ]
340
+ },
271
341
  "autocompleteTableSelectFormControl": {
272
342
  "allOf": [
273
343
  {
@@ -1159,6 +1229,9 @@
1159
1229
  },
1160
1230
  {
1161
1231
  "$ref": "#/definitions/autocompleteTableSelectFormControl"
1232
+ },
1233
+ {
1234
+ "$ref": "#/definitions/autocompleteFormControl"
1162
1235
  }
1163
1236
  ]
1164
1237
  }
@@ -1611,6 +1684,29 @@
1611
1684
  }
1612
1685
  ]
1613
1686
  },
1687
+ "nestedAccordionItem": {
1688
+ "allOf": [
1689
+ {
1690
+ "$ref": "#/definitions/baseAccordionItem"
1691
+ },
1692
+ {
1693
+ "type": "object",
1694
+ "properties": {
1695
+ "kind": {
1696
+ "type": "string",
1697
+ "const": "nested"
1698
+ },
1699
+ "accordion": {
1700
+ "$ref": "#/definitions/accordion"
1701
+ }
1702
+ },
1703
+ "required": [
1704
+ "kind",
1705
+ "accordion"
1706
+ ]
1707
+ }
1708
+ ]
1709
+ },
1614
1710
  "openApiTableAction": {
1615
1711
  "allOf": [
1616
1712
  {
@@ -6,84 +6,15 @@
6
6
  "$ref": "#/definitions/angular"
7
7
  },
8
8
  {
9
- "type": "object",
10
- "properties": {
11
- "multiple": {
12
- "type": "boolean",
13
- "description": "Whether the accordion should allow multiple panels to be expanded at the same time",
14
- "default": false,
15
- "alias": "multi"
16
- },
17
- "persistent": {
18
- "oneOf": [
19
- {
20
- "type": "object",
21
- "properties": {
22
- "key": {
23
- "type": "string"
24
- }
25
- },
26
- "required": ["key"]
27
- },
28
- {
29
- "type": "object",
30
- "properties": {
31
- "property": {
32
- "$ref": "#/definitions/property"
33
- }
34
- },
35
- "required": ["property"]
36
- }
37
- ]
38
- },
39
- "identifier": {
40
- "$ref": "#/definitions/accordionIdentifier"
41
- },
42
- "header": {
43
- "$ref": "#/definitions/accordionHeader"
44
- },
45
- "itemList": {
46
- "alias": "item",
47
- "type": "array",
48
- "items": {
49
- "$ref": "#/definitions/accordionItem"
50
- },
51
- "description": "The list of accordion expansion panels"
52
- },
53
- "upstream": {
54
- "$ref": "#/definitions/upstream"
55
- },
56
- "propertyList": {
57
- "alias": "property",
58
- "type": "array",
59
- "items": {
60
- "$ref": "#/definitions/property"
61
- }
62
- }
63
- }
9
+ "$ref": "#/definitions/accordion"
64
10
  }
65
11
  ],
66
-
67
-
68
-
69
12
  "definitions": {
70
13
  "angular": {
71
14
  "$ref": "../../angular.schema.json"
72
15
  },
73
- "accordionItem": {
74
- "$ref": "../../accordion-item.schema.json"
75
- },
76
- "property": {
77
- "$ref": "../../property.schema.json"
78
- },
79
- "accordionIdentifier": {
80
- "$ref": "../../accordion-identifier.schema.json"
81
- },
82
- "accordionHeader": {
83
- "$ref": "../../accordion-header.schema.json"
84
- },
85
- "upstream": {
86
- "$ref": "../../upstream.schema.json"
16
+ "accordion": {
17
+ "$ref": "../../accordion.schema.json"
87
18
  }
88
19
  }
89
20
  }
@@ -1,4 +1,4 @@
1
- <mat-progress-bar *ngIf="panelDataSource.loading$ | async" mode="indeterminate"></mat-progress-bar>
1
+ <mat-progress-bar class="py-2" *ngIf="loading()" mode="indeterminate"></mat-progress-bar>
2
2
  <ng-template #errorTemplate let-error let-refresh="refresh">
3
3
  <<%= prefix %>-data-source-error [error]="error" [refresh]="refresh"></<%= prefix %>-data-source-error>
4
4
  </ng-template>
@@ -0,0 +1,40 @@
1
+ import { Meta, moduleMetadata, StoryObj } from '@storybook/angular';
2
+ import { ACCORDION_DATA_SOURCE } from '@rxap/data-source/accordion';
3
+ import { {{ classify accordionName }}DataSource } from '../{{ accordionName }}.data-source';
4
+ import { faker } from '@faker-js/faker';
5
+ import { {{ classify componentName }}Component } from './{{ name }}-panel.component';
6
+ {{#if method }}
7
+ import { {{ method.name }} } from '{{ method.moduleSpecifier }}';
8
+ import { {{ method.response }} } from '{{ method.responseModuleSpecifier }}';
9
+ {{/if}}
10
+ import { ProvideActivatedRoutes, ProvideMethodMock } from 'angular-testing';
11
+ {{#if method }}
12
+ const data: {{ method.response }} = {
13
+ uuid: faker.datatype.uuid(),
14
+ };
15
+ {{/if}}
16
+
17
+ const meta: Meta<{{ classify componentName }}Component> = {
18
+ component: {{ classify componentName }}Component,
19
+ title: '{{ classify feature }} / {{ classify accordionName }} / {{ classify componentName }}',
20
+ decorators: [
21
+ moduleMetadata({
22
+ providers: [
23
+ {
24
+ provide: ACCORDION_DATA_SOURCE,
25
+ useClass: {{ classify accordionName }}DataSource,
26
+ },
27
+ ProvideActivatedRoutes({params: {uuid: faker.datatype.uuid()}}),
28
+ {{#if method }}
29
+ ProvideMethodMock({{ method.name }}, () => structuredClone(data)),
30
+ {{/if}}
31
+ ],
32
+ }),
33
+ ],
34
+ };
35
+ export default meta;
36
+ type Story = StoryObj<{{ classify componentName }}Component>;
37
+
38
+ export const Primary: Story = {
39
+ args: {},
40
+ };
@@ -1,19 +1,15 @@
1
1
  import { Rule } from '@angular-devkit/schematics';
2
2
  import { Normalized } from '@rxap/utilities';
3
- import { BaseAccordionItem, NormalizedBaseAccordionItem } from '../../../lib/accordion/item/base-accordion-item';
3
+ import { AccordionItem, NormalizedAccordionItem } from '../../../lib/accordion/accordion-item';
4
4
  import { AngularOptions, NormalizedAngularOptions } from '../../../lib/angular-options';
5
5
  import { AccordionItemComponentOptions } from './schema';
6
- export type AccordionItemStandaloneComponentOptions = Omit<AccordionItemComponentOptions, 'kind'>;
7
- export interface NormalizedAccordionItemStandaloneComponentOptions extends Readonly<Normalized<Omit<AccordionItemStandaloneComponentOptions, keyof AngularOptions | keyof BaseAccordionItem>> & NormalizedAngularOptions & NormalizedBaseAccordionItem> {
8
- componentName: string;
9
- controllerName: string;
10
- }
11
- export declare function NormalizeAccordionItemStandaloneComponentOptions(options: Readonly<AccordionItemStandaloneComponentOptions>): NormalizedAccordionItemStandaloneComponentOptions;
6
+ export type NormalizedAccordionItemStandaloneComponentOptions = Readonly<Normalized<Omit<AccordionItemComponentOptions, keyof AngularOptions | keyof AccordionItem>>> & NormalizedAngularOptions & NormalizedAccordionItem & Readonly<NonNullable<Pick<AngularOptions, 'controllerName' | 'componentName' | 'directory' | 'nestModule'>>>;
7
+ export declare function NormalizeAccordionItemStandaloneComponentOptions(options: Readonly<AccordionItemComponentOptions>): NormalizedAccordionItemStandaloneComponentOptions;
12
8
  export type NormalizedAccordionItemComponentOptions = Readonly<NormalizedAccordionItemStandaloneComponentOptions & {
13
9
  kind: string;
14
10
  }>;
15
11
  export declare function NormalizeAccordionItemComponentOptions(options: Readonly<AccordionItemComponentOptions>): NormalizedAccordionItemComponentOptions;
16
- export declare function printAccordionItemComponentOptions(options: NormalizedAccordionItemComponentOptions, schematicName?: string): void;
12
+ export declare function printAccordionItemComponentOptions(options: NormalizedAngularOptions & Pick<NormalizedAccordionItem, 'kind' | 'identifier'>, schematicName?: string): void;
17
13
  interface ItemOptions {
18
14
  hasSharedModifier: boolean;
19
15
  hasCollectionModifier: boolean;
@@ -14,22 +14,32 @@ const accordion_item_kind_1 = require("../../../lib/accordion/accordion-item-kin
14
14
  const angular_options_1 = require("../../../lib/angular-options");
15
15
  const backend_types_1 = require("../../../lib/backend-types");
16
16
  function NormalizeAccordionItemStandaloneComponentOptions(options) {
17
- var _a, _b, _c;
18
17
  const normalizedAngularOptions = (0, angular_options_1.NormalizeAngularOptions)(options);
19
- const { feature, controllerName, shared } = normalizedAngularOptions;
20
- const name = (0, schematics_utilities_1.dasherize)(options.name);
21
- const componentName = (0, schematics_utilities_1.CoerceSuffix)(name, '-panel');
22
- let accordionName = (_a = options.accordionName) !== null && _a !== void 0 ? _a : feature;
18
+ const { name } = normalizedAngularOptions;
19
+ let { directory, controllerName, componentName, } = normalizedAngularOptions;
20
+ let { accordionName, nestModule, } = options;
21
+ if (!name) {
22
+ throw new Error('The name is required!');
23
+ }
24
+ if (!accordionName) {
25
+ throw new Error('The accordion name is required!');
26
+ }
23
27
  accordionName = (0, schematics_utilities_1.CoerceSuffix)((0, schematics_utilities_1.dasherize)(accordionName), '-accordion');
24
- const nestModule = (_b = options.nestModule) !== null && _b !== void 0 ? _b : accordionName;
25
- const normalizedAccordionItem = (0, accordion_item_1.NormalizeAccordionItem)(Object.assign({ kind: accordion_item_kind_1.AccordionItemKinds.Default }, options));
26
- const { modifiers } = normalizedAccordionItem;
27
- const { hasSharedModifier } = GetItemOptions({ modifiers, shared });
28
- return Object.freeze(Object.assign(Object.assign(Object.assign({}, normalizedAngularOptions), normalizedAccordionItem), { controllerName: controllerName !== null && controllerName !== void 0 ? controllerName : (0, schematics_ts_morph_1.BuildNestControllerName)({
29
- controllerName: name,
30
- // nestModule: hasSharedModifier ? undefined : nestModule,
31
- }), name,
32
- nestModule, modifiers: (_c = options.modifiers) !== null && _c !== void 0 ? _c : [], accordionName: accordionName, directory: (0, path_1.join)(accordionName, componentName), componentName }));
28
+ componentName !== null && componentName !== void 0 ? componentName : (componentName = (0, schematics_utilities_1.CoerceSuffix)(name, '-panel'));
29
+ directory !== null && directory !== void 0 ? directory : (directory = (0, path_1.join)(accordionName, componentName));
30
+ if (!directory.endsWith(componentName)) {
31
+ directory = (0, path_1.join)(directory, componentName);
32
+ }
33
+ nestModule !== null && nestModule !== void 0 ? nestModule : (nestModule = accordionName);
34
+ controllerName !== null && controllerName !== void 0 ? controllerName : (controllerName = (0, schematics_ts_morph_1.BuildNestControllerName)({
35
+ controllerName: name,
36
+ nestModule,
37
+ }));
38
+ return Object.freeze(Object.assign(Object.assign(Object.assign({}, normalizedAngularOptions), (0, accordion_item_1.NormalizeAccordionItem)(options)), { controllerName,
39
+ nestModule,
40
+ directory,
41
+ componentName,
42
+ accordionName }));
33
43
  }
34
44
  exports.NormalizeAccordionItemStandaloneComponentOptions = NormalizeAccordionItemStandaloneComponentOptions;
35
45
  function NormalizeAccordionItemComponentOptions(options) {
@@ -92,19 +102,19 @@ function panelItemOpenApiDataSourceRule(normalizedOptions) {
92
102
  name: (0, schematics_utilities_1.CoerceSuffix)(name, '-panel'),
93
103
  tsMorphTransform: (project, sourceFile, classDeclaration) => {
94
104
  classDeclaration.setExtends(`PanelAccordionDataSource<${(0, schematics_ts_morph_1.OperationIdToResponseClassName)(operationId)}>`);
95
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
105
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
96
106
  namedImports: [(0, schematics_ts_morph_1.OperationIdToResponseClassName)(operationId)],
97
107
  moduleSpecifier: (0, schematics_ts_morph_1.OperationIdToResponseClassImportPath)(operationId, scope),
98
108
  });
99
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
109
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
100
110
  namedImports: [(0, schematics_ts_morph_1.OperationIdToClassName)(operationId)],
101
111
  moduleSpecifier: (0, schematics_ts_morph_1.OperationIdToClassImportPath)(operationId, scope),
102
112
  });
103
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
113
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
104
114
  moduleSpecifier: '@rxap/data-source/accordion',
105
115
  namedImports: ['PanelAccordionDataSource'],
106
116
  });
107
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
117
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
108
118
  moduleSpecifier: '@angular/core',
109
119
  namedImports: ['inject'],
110
120
  });
@@ -141,7 +151,7 @@ function panelItemLocalDataSourceRule(normalizedOptions) {
141
151
  directory,
142
152
  name: componentName,
143
153
  tsMorphTransform: (project, sourceFile) => {
144
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, [
154
+ (0, ts_morph_1.CoerceImports)(sourceFile, [
145
155
  {
146
156
  namedImports: ['faker'],
147
157
  moduleSpecifier: '@faker-js/faker',
@@ -168,23 +178,23 @@ function panelItemLocalDataSourceRule(normalizedOptions) {
168
178
  name: (0, schematics_utilities_1.CoerceSuffix)(name, '-panel'),
169
179
  tsMorphTransform: (project, sourceFile, classDeclaration) => {
170
180
  classDeclaration.setExtends(`PanelAccordionDataSource<${(0, utilities_1.classify)(componentName)}>`);
171
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
181
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
172
182
  namedImports: [(0, utilities_1.classify)(componentName)],
173
183
  moduleSpecifier: `./${(0, schematics_utilities_1.dasherize)(componentName)}`,
174
184
  });
175
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
185
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
176
186
  namedImports: [(0, utilities_1.classify)(componentName) + 'Method'],
177
187
  moduleSpecifier: `./${(0, schematics_utilities_1.dasherize)(componentName)}.method`,
178
188
  });
179
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
189
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
180
190
  moduleSpecifier: '@angular/core',
181
191
  namedImports: ['Inject'],
182
192
  });
183
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
193
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
184
194
  moduleSpecifier: '@angular/core',
185
195
  namedImports: ['inject'],
186
196
  });
187
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
197
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
188
198
  moduleSpecifier: '@rxap/data-source/accordion',
189
199
  namedImports: ['PanelAccordionDataSource'],
190
200
  });
@@ -224,8 +234,24 @@ function panelItemBackendRule(normalizedOptions) {
224
234
  return (0, schematics_1.noop)();
225
235
  }
226
236
  function panelItemRule(normalizedOptions) {
227
- const { name, directory, project, feature, shared, componentName, } = normalizedOptions;
228
- const templateOptions = Object.assign(Object.assign({}, core_1.strings), normalizedOptions);
237
+ const { name, directory, project, feature, shared, componentName, importList, backend } = normalizedOptions;
238
+ let methodName = null;
239
+ let methodModuleSpecifier = null;
240
+ let methodResponse = null;
241
+ let methodResponseModuleSpecifier = null;
242
+ if (backend.kind === backend_types_1.BackendTypes.NESTJS) {
243
+ const operationId = buildGetOperationId(normalizedOptions);
244
+ methodName = (0, ts_morph_1.OperationIdToRemoteMethodClassName)(operationId);
245
+ methodModuleSpecifier = (0, ts_morph_1.OperationIdToClassRemoteMethodImportPath)(operationId, normalizedOptions.scope);
246
+ methodResponse = (0, schematics_ts_morph_1.OperationIdToResponseClassName)(operationId);
247
+ methodResponseModuleSpecifier = (0, schematics_ts_morph_1.OperationIdToResponseClassImportPath)(operationId, normalizedOptions.scope);
248
+ }
249
+ const templateOptions = Object.assign(Object.assign(Object.assign({}, core_1.strings), normalizedOptions), { method: backend.kind === backend_types_1.BackendTypes.NESTJS ? {
250
+ name: methodName,
251
+ moduleSpecifier: methodModuleSpecifier,
252
+ response: methodResponse,
253
+ responseModuleSpecifier: methodResponseModuleSpecifier,
254
+ } : null });
229
255
  return (0, schematics_1.chain)([
230
256
  (0, schematics_ts_morph_1.CoerceComponentRule)({
231
257
  name: componentName,
@@ -243,14 +269,15 @@ function panelItemRule(normalizedOptions) {
243
269
  (0, ts_morph_1.CoerceComponentImport)(classDeclaration, { name: 'DataSourceErrorComponent', moduleSpecifier: '@rxap/data-source' });
244
270
  (0, ts_morph_1.CoerceComponentImport)(classDeclaration, { name: 'AsyncPipe', moduleSpecifier: '@angular/common' });
245
271
  (0, ts_morph_1.CoerceComponentImport)(classDeclaration, { name: 'JsonPipe', moduleSpecifier: '@angular/common' });
272
+ (0, ts_morph_1.CoerceComponentImport)(classDeclaration, { name: 'NgIf', moduleSpecifier: '@angular/common' });
246
273
  const pipeDataSourceName = `${(0, utilities_1.classify)(name)}PanelDataSource`;
247
274
  (0, schematics_ts_morph_1.AddComponentProvider)(sourceFile, pipeDataSourceName);
248
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
275
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
249
276
  moduleSpecifier: `./${(0, schematics_utilities_1.dasherize)(name)}-panel.data-source`,
250
277
  namedImports: [pipeDataSourceName],
251
278
  });
252
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
253
- namedImports: ['inject'],
279
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
280
+ namedImports: ['inject', 'signal', 'computed', 'toSignal'],
254
281
  moduleSpecifier: '@angular/core'
255
282
  });
256
283
  (0, ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'panelDataSource', {
@@ -258,6 +285,24 @@ function panelItemRule(normalizedOptions) {
258
285
  initializer: `inject(${pipeDataSourceName})`,
259
286
  scope: ts_morph_2.Scope.Public,
260
287
  });
288
+ (0, ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'updating', {
289
+ isReadonly: true,
290
+ initializer: `signal(false)`,
291
+ scope: ts_morph_2.Scope.Public,
292
+ });
293
+ (0, ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'loading', {
294
+ isReadonly: true,
295
+ initializer: `computed(() => this.updating() || this.panelDataSource.loading())`,
296
+ scope: ts_morph_2.Scope.Public,
297
+ });
298
+ (0, ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'data', {
299
+ isReadonly: true,
300
+ initializer: `toSignal(this.panelDataSource.connect({id: 'to-signal-${name}-panel'}))`,
301
+ scope: ts_morph_2.Scope.Public,
302
+ });
303
+ for (const angularImport of importList) {
304
+ (0, ts_morph_1.CoerceComponentImport)(classDeclaration, angularImport);
305
+ }
261
306
  }
262
307
  }),
263
308
  panelItemBackendRule(normalizedOptions),
@@ -294,6 +339,9 @@ function itemRule(normalizedOptions) {
294
339
  case accordion_item_kind_1.AccordionItemKinds.Switch:
295
340
  rules.push((0, schematics_utilities_1.ExecuteSchematic)('accordion-item-switch-component', normalizedOptions));
296
341
  break;
342
+ case accordion_item_kind_1.AccordionItemKinds.Nested:
343
+ rules.push((0, schematics_utilities_1.ExecuteSchematic)('accordion-item-nested-component', normalizedOptions));
344
+ break;
297
345
  default:
298
346
  throw new schematics_1.SchematicsException(`Invalid accordion item type '${kind}'!`);
299
347
  }