@rxap/schematic-angular 16.2.0-dev.2 → 16.2.0-dev.20

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 (242) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/README.md +1 -1
  3. package/package.json +11 -9
  4. package/src/lib/accordion-header.d.ts +5 -0
  5. package/src/lib/accordion-header.js +9 -3
  6. package/src/lib/accordion-header.js.map +1 -1
  7. package/src/lib/accordion-identifier.d.ts +4 -0
  8. package/src/lib/accordion-identifier.js.map +1 -1
  9. package/src/lib/accordion-item.d.ts +25 -17
  10. package/src/lib/accordion-item.js +72 -33
  11. package/src/lib/accordion-item.js.map +1 -1
  12. package/src/lib/accordion-itme-kinds.d.ts +8 -0
  13. package/src/lib/accordion-itme-kinds.js +16 -0
  14. package/src/lib/accordion-itme-kinds.js.map +1 -0
  15. package/src/lib/coerce-accordion-component.js +7 -3
  16. package/src/lib/coerce-accordion-component.js.map +1 -1
  17. package/src/lib/coerce-accordion-item-table-component.js +1 -1
  18. package/src/lib/coerce-accordion-item-table-component.js.map +1 -1
  19. package/src/lib/coerce-form-component.js +5 -2
  20. package/src/lib/coerce-form-component.js.map +1 -1
  21. package/src/lib/coerce-minimum-table-component.js +9 -3
  22. package/src/lib/coerce-minimum-table-component.js.map +1 -1
  23. package/src/lib/coerce-tree-table-component.js +16 -0
  24. package/src/lib/coerce-tree-table-component.js.map +1 -1
  25. package/src/lib/data-grid-item.d.ts +46 -11
  26. package/src/lib/data-grid-item.js +80 -5
  27. package/src/lib/data-grid-item.js.map +1 -1
  28. package/src/lib/data-grid-mode.d.ts +4 -0
  29. package/src/lib/data-grid-mode.js +9 -0
  30. package/src/lib/data-grid-mode.js.map +1 -0
  31. package/src/lib/data-grid-options.d.ts +12 -5
  32. package/src/lib/data-grid-options.js +43 -13
  33. package/src/lib/data-grid-options.js.map +1 -1
  34. package/src/lib/form/generate-form-template.d.ts +5 -0
  35. package/src/lib/form/generate-form-template.js +12 -0
  36. package/src/lib/form/generate-form-template.js.map +1 -0
  37. package/src/lib/form-component-control.d.ts +2 -6
  38. package/src/lib/form-component-control.js.map +1 -1
  39. package/src/lib/form-control.d.ts +136 -0
  40. package/src/lib/form-control.js +265 -0
  41. package/src/lib/form-control.js.map +1 -0
  42. package/src/lib/form-definition-control.d.ts +3 -57
  43. package/src/lib/form-definition-control.js +18 -144
  44. package/src/lib/form-definition-control.js.map +1 -1
  45. package/src/lib/load-handlebars-template.d.ts +4 -0
  46. package/src/lib/load-handlebars-template.js +28 -0
  47. package/src/lib/load-handlebars-template.js.map +1 -0
  48. package/src/lib/merge-with-column-list.js +3 -1
  49. package/src/lib/merge-with-column-list.js.map +1 -1
  50. package/src/lib/minimum-table-component-options.d.ts +12 -2
  51. package/src/lib/minimum-table-component-options.js +14 -17
  52. package/src/lib/minimum-table-component-options.js.map +1 -1
  53. package/src/lib/minimum-table-options.d.ts +1 -1
  54. package/src/lib/minimum-table-options.js +2 -2
  55. package/src/lib/minimum-table-options.js.map +1 -1
  56. package/src/lib/pipe-option.d.ts +11 -0
  57. package/src/lib/pipe-option.js +75 -0
  58. package/src/lib/pipe-option.js.map +1 -0
  59. package/src/lib/table/table-filter-column-rule.d.ts +13 -0
  60. package/src/lib/table/table-filter-column-rule.js +88 -0
  61. package/src/lib/table/table-filter-column-rule.js.map +1 -0
  62. package/src/lib/table-column.d.ts +19 -9
  63. package/src/lib/table-column.js +132 -113
  64. package/src/lib/table-column.js.map +1 -1
  65. package/src/lib/table-options.d.ts +1 -1
  66. package/src/lib/tree-table-options.d.ts +1 -1
  67. package/src/lib/use-pick-from-table-interface-as-form-type.d.ts +10 -0
  68. package/src/lib/use-pick-from-table-interface-as-form-type.js +32 -0
  69. package/src/lib/use-pick-from-table-interface-as-form-type.js.map +1 -0
  70. package/src/lib/value-option.d.ts +12 -0
  71. package/src/lib/value-option.js +66 -0
  72. package/src/lib/value-option.js.map +1 -0
  73. package/src/schema.json +2368 -0
  74. package/src/schematic-input.schema.json +607 -0
  75. package/src/schematics/accordion/accordion-component/files/component/__componentName__.component.html.hbs +25 -0
  76. package/src/schematics/accordion/accordion-component/index.d.ts +5 -2
  77. package/src/schematics/accordion/accordion-component/index.js +56 -122
  78. package/src/schematics/accordion/accordion-component/index.js.map +1 -1
  79. package/src/schematics/accordion/accordion-component/schema.d.ts +6 -0
  80. package/src/schematics/accordion/accordion-component/schema.json +314 -132
  81. package/src/schematics/accordion/accordion-component/template.schema.json +105 -0
  82. package/src/schematics/accordion/accordion-item-component/index.d.ts +9 -4
  83. package/src/schematics/accordion/accordion-item-component/index.js +112 -86
  84. package/src/schematics/accordion/accordion-item-component/index.js.map +1 -1
  85. package/src/schematics/accordion/accordion-item-component/schema.d.ts +2 -2
  86. package/src/schematics/accordion/accordion-item-component/schema.json +282 -70
  87. package/src/schematics/accordion/accordion-item-component/template.schema.json +32 -0
  88. package/src/schematics/accordion/item/accordion-item-data-grid-component/index.d.ts +1 -1
  89. package/src/schematics/accordion/item/accordion-item-data-grid-component/index.js +35 -51
  90. package/src/schematics/accordion/item/accordion-item-data-grid-component/index.js.map +1 -1
  91. package/src/schematics/accordion/item/accordion-item-data-grid-component/schema.d.ts +1 -1
  92. package/src/schematics/accordion/item/accordion-item-data-grid-component/schema.json +454 -85
  93. package/src/schematics/accordion/item/accordion-item-data-grid-component/template.schema.json +31 -0
  94. package/src/schematics/accordion/item/accordion-item-switch-component/index.d.ts +1 -1
  95. package/src/schematics/accordion/item/accordion-item-switch-component/index.js +16 -8
  96. package/src/schematics/accordion/item/accordion-item-switch-component/index.js.map +1 -1
  97. package/src/schematics/accordion/item/accordion-item-switch-component/schema.d.ts +1 -1
  98. package/src/schematics/accordion/item/accordion-item-switch-component/schema.json +322 -190
  99. package/src/schematics/accordion/item/accordion-item-switch-component/template.schema.json +81 -0
  100. package/src/schematics/accordion/item/accordion-item-table-component/index.d.ts +1 -1
  101. package/src/schematics/accordion/item/accordion-item-table-component/index.js +16 -19
  102. package/src/schematics/accordion/item/accordion-item-table-component/index.js.map +1 -1
  103. package/src/schematics/accordion/item/accordion-item-table-component/schema.d.ts +1 -1
  104. package/src/schematics/accordion/item/accordion-item-table-component/schema.json +615 -278
  105. package/src/schematics/accordion/item/accordion-item-table-component/template.schema.json +43 -0
  106. package/src/schematics/accordion/item/accordion-item-tree-table-component/index.d.ts +1 -1
  107. package/src/schematics/accordion/item/accordion-item-tree-table-component/index.js +48 -84
  108. package/src/schematics/accordion/item/accordion-item-tree-table-component/index.js.map +1 -1
  109. package/src/schematics/accordion/item/accordion-item-tree-table-component/schema.d.ts +1 -1
  110. package/src/schematics/accordion/item/accordion-item-tree-table-component/schema.json +591 -271
  111. package/src/schematics/accordion/item/accordion-item-tree-table-component/template.schema.json +43 -0
  112. package/src/schematics/accordion/templates/accordion-header.hbs +6 -0
  113. package/src/schematics/accordion/templates/data-grid-accordion-item.hbs +15 -0
  114. package/src/schematics/accordion/templates/default-accordion-item.hbs +15 -0
  115. package/src/schematics/accordion/templates/switch-accordion-item.hbs +21 -0
  116. package/src/schematics/accordion/templates/table-accordion-item.hbs +15 -0
  117. package/src/schematics/accordion/templates/tree-table-accordion-item.hbs +15 -0
  118. package/src/schematics/accordion-identifier.schema.json +25 -0
  119. package/src/schematics/accordion-item.schema.json +59 -0
  120. package/src/schematics/angular.schema.json +11 -11
  121. package/src/schematics/backend.schema.json +13 -0
  122. package/src/schematics/button.schema.json +30 -0
  123. package/src/schematics/data-grid-component/files/component/__componentName__.component.html.hbs +35 -0
  124. package/src/schematics/data-grid-component/index.d.ts +2 -4
  125. package/src/schematics/data-grid-component/index.js +83 -52
  126. package/src/schematics/data-grid-component/index.js.map +1 -1
  127. package/src/schematics/data-grid-component/schema.json +413 -141
  128. package/src/schematics/data-grid-component/template.schema.json +20 -0
  129. package/src/schematics/data-grid-component/templates/default-data-grid-item.hbs +3 -0
  130. package/src/schematics/data-grid-component/templates/link-data-grid-item.hbs +8 -0
  131. package/src/schematics/data-grid-item.schema.json +50 -0
  132. package/src/schematics/data-grid.schema.json +66 -0
  133. package/src/schematics/dialog-component/schema.json +141 -65
  134. package/src/schematics/dialog-component/template.schema.json +62 -0
  135. package/src/schematics/form/control/input-form-control/index.d.ts +2 -2
  136. package/src/schematics/form/control/input-form-control/index.js +4 -27
  137. package/src/schematics/form/control/input-form-control/index.js.map +1 -1
  138. package/src/schematics/form/control/input-form-control/schema.d.ts +2 -3
  139. package/src/schematics/form/control/input-form-control/schema.json +182 -105
  140. package/src/schematics/form/control/input-form-control/template.schema.json +20 -0
  141. package/src/schematics/form/control/select-form-control/index.d.ts +4 -2
  142. package/src/schematics/form/control/select-form-control/index.js +132 -96
  143. package/src/schematics/form/control/select-form-control/index.js.map +1 -1
  144. package/src/schematics/form/control/select-form-control/schema.d.ts +2 -3
  145. package/src/schematics/form/control/select-form-control/schema.json +194 -86
  146. package/src/schematics/form/control/select-form-control/template.schema.json +20 -0
  147. package/src/schematics/form/control/table-select-form-control/index.d.ts +9 -5
  148. package/src/schematics/form/control/table-select-form-control/index.js +199 -143
  149. package/src/schematics/form/control/table-select-form-control/index.js.map +1 -1
  150. package/src/schematics/form/control/table-select-form-control/schema.d.ts +2 -4
  151. package/src/schematics/form/control/table-select-form-control/schema.json +245 -100
  152. package/src/schematics/form/control/table-select-form-control/template.schema.json +83 -0
  153. package/src/schematics/form/form-component/files/component/{__componentName__.component.html.template → __componentName__.component.html.hbs} +3 -3
  154. package/src/schematics/form/form-component/index.d.ts +2 -0
  155. package/src/schematics/form/form-component/index.js +22 -7
  156. package/src/schematics/form/form-component/index.js.map +1 -1
  157. package/src/schematics/form/form-component/schema.d.ts +3 -1
  158. package/src/schematics/form/form-component/schema.json +275 -150
  159. package/src/schematics/form/form-component/template.schema.json +20 -0
  160. package/src/schematics/form/form-control/index.d.ts +3 -1
  161. package/src/schematics/form/form-control/index.js +19 -8
  162. package/src/schematics/form/form-control/index.js.map +1 -1
  163. package/src/schematics/form/form-control/schema.json +203 -75
  164. package/src/schematics/form/form-control/template.schema.json +34 -0
  165. package/src/schematics/form/form-definition/index.js +14 -1
  166. package/src/schematics/form/form-definition/index.js.map +1 -1
  167. package/src/schematics/form/form-definition/schema.json +210 -127
  168. package/src/schematics/form/form-definition/template.schema.json +30 -0
  169. package/src/schematics/form/templates/checkbox-form-control.hbs +9 -0
  170. package/src/schematics/form/templates/default-form-control.hbs +2 -0
  171. package/src/schematics/form/templates/input-form-control.hbs +9 -0
  172. package/src/schematics/form/templates/mat-form-field.hbs +31 -0
  173. package/src/schematics/form/templates/slide-toggle-form-control.hbs +8 -0
  174. package/src/schematics/form/templates/table-select-form-control.hbs +18 -0
  175. package/src/schematics/form-component.schema.json +45 -0
  176. package/src/schematics/form-control.schema.json +68 -0
  177. package/src/schematics/form-definition.schema.json +22 -0
  178. package/src/schematics/form-field.schema.json +24 -0
  179. package/src/schematics/general.schema.json +1 -4
  180. package/src/schematics/header-button.schema.json +42 -0
  181. package/src/schematics/input-form-control.schema.json +55 -0
  182. package/src/schematics/minimum-table.schema.json +60 -0
  183. package/src/schematics/pipe.schema.json +38 -0
  184. package/src/schematics/property.schema.json +31 -0
  185. package/src/schematics/select-form-control.schema.json +64 -0
  186. package/src/schematics/table/action/dialog-table-action/schema.json +209 -125
  187. package/src/schematics/table/action/dialog-table-action/template.schema.json +58 -0
  188. package/src/schematics/table/action/form-table-action/schema.json +383 -153
  189. package/src/schematics/table/action/form-table-action/template.schema.json +75 -0
  190. package/src/schematics/table/action/navigation-table-action/schema.json +187 -80
  191. package/src/schematics/table/action/navigation-table-action/template.schema.json +28 -0
  192. package/src/schematics/table/action/open-api-table-action/schema.json +206 -97
  193. package/src/schematics/table/action/open-api-table-action/template.schema.json +56 -0
  194. package/src/schematics/table/action/operation-table-action/schema.json +174 -84
  195. package/src/schematics/table/action/operation-table-action/template.schema.json +14 -0
  196. package/src/schematics/table/header-button/form-table-header-button/schema.json +272 -114
  197. package/src/schematics/table/header-button/form-table-header-button/template.schema.json +51 -0
  198. package/src/schematics/table/header-button/navigation-table-header-button/schema.json +167 -71
  199. package/src/schematics/table/header-button/navigation-table-header-button/template.schema.json +28 -0
  200. package/src/schematics/table/table-action/schema.json +165 -78
  201. package/src/schematics/table/table-action/template.schema.json +30 -0
  202. package/src/schematics/table/table-component/files/component/__componentName__.component.html.hbs +241 -0
  203. package/src/schematics/table/table-component/index.d.ts +1 -3
  204. package/src/schematics/table/table-component/index.js +14 -120
  205. package/src/schematics/table/table-component/index.js.map +1 -1
  206. package/src/schematics/table/table-component/schema.json +524 -277
  207. package/src/schematics/table/table-component/template.schema.json +20 -0
  208. package/src/schematics/table/table-header-button/schema.json +146 -64
  209. package/src/schematics/table/table-header-button/template.schema.json +30 -0
  210. package/src/schematics/table/templates/boolean-table-column.hbs +10 -0
  211. package/src/schematics/table/templates/component-table-column.hbs +12 -0
  212. package/src/schematics/table/templates/copy-to-clipboard-table-column.hbs +10 -0
  213. package/src/schematics/table/templates/date-table-column.hbs +11 -0
  214. package/src/schematics/table/templates/default-table-column.hbs +8 -0
  215. package/src/schematics/table/templates/icon-table-column.hbs +10 -0
  216. package/src/schematics/table/templates/link-table-column.hbs +10 -0
  217. package/src/schematics/table/tree-table-component/files/component/__componentName__.component.html.hbs +255 -0
  218. package/src/schematics/table/tree-table-component/index.d.ts +3 -0
  219. package/src/schematics/table/tree-table-component/index.js +28 -7
  220. package/src/schematics/table/tree-table-component/index.js.map +1 -1
  221. package/src/schematics/table/tree-table-component/schema.json +514 -260
  222. package/src/schematics/table/tree-table-component/template.schema.json +20 -0
  223. package/src/schematics/table-action.schema.json +61 -0
  224. package/src/schematics/table-column.schema.json +75 -0
  225. package/src/schematics/table.schema.json +57 -0
  226. package/src/schematics/templates/pipe.hbs +4 -0
  227. package/src/schematics/tree-component/schema.json +115 -70
  228. package/src/schematics/tree-component/template.schema.json +36 -0
  229. package/src/schematics/tree-table.schema.json +40 -0
  230. package/src/schematics/type.schema.json +35 -0
  231. package/src/schematics/upstream.schema.json +56 -0
  232. package/src/schematics/value.schema.json +26 -0
  233. package/src/template.schema.json +173 -0
  234. package/src/lib/accordion-itme-types.d.ts +0 -8
  235. package/src/lib/accordion-itme-types.js +0 -16
  236. package/src/lib/accordion-itme-types.js.map +0 -1
  237. package/src/schematics/accordion/accordion-component/files/component/__componentName__.component.html.template +0 -94
  238. package/src/schematics/accordion/accordion-component/files/header-component/accordion-header.component.html.template +0 -10
  239. package/src/schematics/data-grid-component/files/form/__componentName__.component.html.template +0 -42
  240. package/src/schematics/data-grid-component/files/plain/__componentName__.component.html.template +0 -25
  241. package/src/schematics/table/table-component/files/component/__componentName__.component.html.template +0 -299
  242. package/src/schematics/table/tree-table-component/files/component/__componentName__.component.html.template +0 -213
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "accordion-item-tree-table-component-schematic",
4
+ "allOf": [
5
+ {
6
+ "$ref": "#/definitions/angular"
7
+ },
8
+ {
9
+ "$ref": "#/definitions/accordionItem"
10
+ },
11
+ {
12
+ "type": "object",
13
+ "properties": {
14
+ "modifiers": {
15
+ "alias": "modifier",
16
+ "type": "array",
17
+ "items": {
18
+ "type": "string",
19
+ "enum": [
20
+ "navigation-back-header",
21
+ "without-title"
22
+ ]
23
+ },
24
+ "description": "The table modifiers"
25
+ },
26
+ "table": {
27
+ "$ref": "#/definitions/treeTable"
28
+ }
29
+ }
30
+ }
31
+ ],
32
+ "definitions": {
33
+ "treeTable": {
34
+ "$ref": "../../../tree-table.schema.json"
35
+ },
36
+ "accordionItem": {
37
+ "$ref": "../../../accordion-item.schema.json"
38
+ },
39
+ "angular": {
40
+ "$ref": "../../../angular.schema.json"
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,6 @@
1
+ <rxap-navigate-back-button>
2
+ <ng-container>
3
+ {{#if header.title}}<h1>{{header.title}}</h1>{{/if~}}
4
+ {{#if header.property}}<h1>\{{ data.{{header.property.name}} }}</h1>{{/if~}}
5
+ </ng-container>
6
+ </rxap-navigate-back-button>
@@ -0,0 +1,15 @@
1
+
2
+ <mat-expansion-panel>
3
+
4
+ <mat-expansion-panel-header>
5
+ <mat-panel-title i18n>{{item.title}}</mat-panel-title>
6
+ {{#if item.description}}
7
+ <mat-panel-description i18n>{{item.description}}</mat-panel-description>
8
+ {{/if}}
9
+ </mat-expansion-panel-header>
10
+
11
+ <ng-template matExpansionPanelContent>
12
+ <{{prefix}}-{{item.name}}-panel></{{prefix}}-{{item.name}}-panel>
13
+ </ng-template>
14
+
15
+ </mat-expansion-panel>
@@ -0,0 +1,15 @@
1
+
2
+ <mat-expansion-panel>
3
+
4
+ <mat-expansion-panel-header>
5
+ <mat-panel-title i18n>{{item.title}}</mat-panel-title>
6
+ {{#if item.description}}
7
+ <mat-panel-description i18n>{{item.description}}</mat-panel-description>
8
+ {{/if}}
9
+ </mat-expansion-panel-header>
10
+
11
+ <ng-template matExpansionPanelContent>
12
+ <{{prefix}}-{{item.name}}-panel></{{prefix}}-{{item.name}}-panel>
13
+ </ng-template>
14
+
15
+ </mat-expansion-panel>
@@ -0,0 +1,21 @@
1
+
2
+ <ng-container [ngSwitch]="data.{{item.switch.property.name}}">
3
+ {{#each item.switch.case}}
4
+ <ng-template [ngSwitchCase]="{{this.test}}">
5
+ {{#each this.itemList}}
6
+ {{#if this.permission}}<ng-template rxapIfHasPermission="{{item.permission}}">{{/if~}}
7
+ {{ indent (compile this.handlebars item=this prefix=../../prefix) 2 }}
8
+ {{#if this.permission}}</ng-template>{{/if~}}
9
+ {{/each}}
10
+ </ng-template>
11
+ {{/each}}
12
+ {{#if item.switch.defaultCase}}
13
+ <ng-template ngSwitchDefault>
14
+ {{#each item.switch.defaultCase.itemList}}
15
+ {{#if this.permission}}<ng-template rxapIfHasPermission="{{item.permission}}">{{/if~}}
16
+ {{ indent (compile this.handlebars item=this prefix=../prefix) 2 }}
17
+ {{#if this.permission}}</ng-template>{{/if~}}
18
+ {{/each}}
19
+ </ng-template>
20
+ {{/if}}
21
+ </ng-container>
@@ -0,0 +1,15 @@
1
+
2
+ <mat-expansion-panel>
3
+
4
+ <mat-expansion-panel-header>
5
+ <mat-panel-title i18n>{{item.title}}</mat-panel-title>
6
+ {{#if item.description}}
7
+ <mat-panel-description i18n>{{item.description}}</mat-panel-description>
8
+ {{/if}}
9
+ </mat-expansion-panel-header>
10
+
11
+ <ng-template matExpansionPanelContent>
12
+ <{{prefix}}-{{item.name}}-panel></{{prefix}}-{{item.name}}-panel>
13
+ </ng-template>
14
+
15
+ </mat-expansion-panel>
@@ -0,0 +1,15 @@
1
+
2
+ <mat-expansion-panel>
3
+
4
+ <mat-expansion-panel-header>
5
+ <mat-panel-title i18n>{{item.title}}</mat-panel-title>
6
+ {{#if item.description}}
7
+ <mat-panel-description i18n>{{item.description}}</mat-panel-description>
8
+ {{/if}}
9
+ </mat-expansion-panel-header>
10
+
11
+ <ng-template matExpansionPanelContent>
12
+ <{{prefix}}-{{item.name}}-panel></{{prefix}}-{{item.name}}-panel>
13
+ </ng-template>
14
+
15
+ </mat-expansion-panel>
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "accordion-identifier",
4
+ "type": "object",
5
+ "properties": {
6
+ "property": {
7
+ "$ref": "#/definitions/property"
8
+ },
9
+ "source": {
10
+ "type": "string",
11
+ "enum": [
12
+ "route"
13
+ ],
14
+ "default": "route"
15
+ }
16
+ },
17
+ "required": [
18
+ "property"
19
+ ],
20
+ "definitions": {
21
+ "property": {
22
+ "$ref": "./property.schema.json"
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "accordion-item",
4
+ "type": "object",
5
+ "properties": {
6
+ "kind": {
7
+ "type": "string",
8
+ "enum": [
9
+ "default",
10
+ "table",
11
+ "data-grid",
12
+ "data-grid-collection",
13
+ "tree-table",
14
+ "switch"
15
+ ],
16
+ "description": "The type of the accordion item",
17
+ "default": "panel"
18
+ },
19
+ "modifiers": {
20
+ "alias": "modifier",
21
+ "type": "array",
22
+ "items": {
23
+ "type": "string"
24
+ },
25
+ "description": "The modifiers to apply to the accordion item type"
26
+ },
27
+ "identifier": {
28
+ "$ref": "#/definitions/accordionIdentifier"
29
+ },
30
+ "title": {
31
+ "type": "string"
32
+ },
33
+ "description": {
34
+ "type": "string"
35
+ },
36
+ "upstream": {
37
+ "$ref": "#/definitions/upstream"
38
+ },
39
+ "propertyList": {
40
+ "alias": "property",
41
+ "type": "array",
42
+ "items": {
43
+ "$ref": "#/definitions/property"
44
+ }
45
+ }
46
+ },
47
+ "definitions": {
48
+ "accordionIdentifier": {
49
+ "$ref": "./accordion-identifier.schema.json"
50
+ },
51
+ "upstream": {
52
+ "$ref": "./upstream.schema.json"
53
+ },
54
+ "property": {
55
+ "$ref": "./property.schema.json"
56
+ }
57
+ },
58
+ "additionalProperties": true
59
+ }
@@ -3,7 +3,7 @@
3
3
  "$id": "angular",
4
4
  "allOf": [
5
5
  {
6
- "$ref": "https://unpkg.com/@rxap/schematic-angular@16.1.0-dev.23/src/schematics/general.schema.json"
6
+ "$ref": "#/definitions/general"
7
7
  },
8
8
  {
9
9
  "type": "object",
@@ -26,15 +26,7 @@
26
26
  "type": "string"
27
27
  },
28
28
  "backend": {
29
- "type": "string",
30
- "description": "The backend that should be used to handel data",
31
- "enum": [
32
- "none",
33
- "nestjs",
34
- "open-api",
35
- "local"
36
- ],
37
- "default": "none"
29
+ "$ref": "#/definitions/backend"
38
30
  },
39
31
  "directory": {
40
32
  "type": "string",
@@ -57,5 +49,13 @@
57
49
  }
58
50
  }
59
51
  }
60
- ]
52
+ ],
53
+ "definitions": {
54
+ "general": {
55
+ "$ref": "./general.schema.json"
56
+ },
57
+ "backend": {
58
+ "$ref": "./backend.schema.json"
59
+ }
60
+ }
61
61
  }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "backend",
4
+ "type": "string",
5
+ "description": "The backend that should be used to handel data",
6
+ "enum": [
7
+ "none",
8
+ "nestjs",
9
+ "open-api",
10
+ "local"
11
+ ],
12
+ "default": "none"
13
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "button",
4
+ "type": "object",
5
+ "properties": {
6
+ "svgIcon": {
7
+ "type": "string"
8
+ },
9
+ "icon": {
10
+ "type": "string"
11
+ },
12
+ "directiveList": {
13
+ "type": "array",
14
+ "items": {
15
+ "$ref": "#/definitions/type"
16
+ }
17
+ },
18
+ "importList": {
19
+ "type": "array",
20
+ "items": {
21
+ "$ref": "#/definitions/type"
22
+ }
23
+ }
24
+ },
25
+ "definitions": {
26
+ "type": {
27
+ "$ref": "./type.schema.json"
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,35 @@
1
+ {{#if inCard}}
2
+ <mat-card>
3
+ {{#if title}}
4
+ <mat-card-header>
5
+ <mat-card-title>{{title}}</mat-card-title>
6
+ {{#if subtitle}}<mat-card-subtitle>{{subtitle}}</mat-card-subtitle>{{/if}}
7
+ </mat-card-header>
8
+ {{/if}}
9
+ <mat-card-content>
10
+ {{/if}}
11
+ <div class="p-4">
12
+ {{#if isForm}}<form #form="rxapForm" rxapForm>{{/if~}}
13
+ <rxap-data-grid {{#if collection}}[data]="data"{{else}}[dataSource]="dataGridDataSource"{{/if}} mode="{{mode}}">
14
+ {{#each itemList}}
15
+ <ng-container rxapDataGridRowDef="{{this.name}}">
16
+ {{#if this.hasHeaderCellDef}}
17
+ <th *rxapDataGridHeaderCellDef class="whitespace-nowrap" i18n>{{this.header}}</th>
18
+ {{/if}}
19
+ {{#if this.hasEditCellDef}}
20
+ <ng-template rxapDataGridEditCellDef>
21
+ {{ indent (compile this.formControl.handlebars control=this.formControl) 14}}
22
+ </ng-template>
23
+ {{/if}}
24
+ {{#if this.hasCellDef}}
25
+ {{ indent (compile this.handlebars item=this) 12}}
26
+ {{/if}}
27
+ </ng-container>
28
+ {{/each}}
29
+ </rxap-data-grid>
30
+ {{#if isForm}}</form>{{/if}}
31
+ </div>
32
+ {{#if inCard}}
33
+ </mat-card-content>
34
+ </mat-card>
35
+ {{/if}}
@@ -1,16 +1,14 @@
1
1
  import { Rule } from '@angular-devkit/schematics';
2
2
  import { Normalized } from '@rxap/utilities';
3
3
  import { NormalizedAngularOptions } from '../../lib/angular-options';
4
- import { NormalizedDataGridItem } from '../../lib/data-grid-item';
5
4
  import { NormalizedDataGridOptions } from '../../lib/data-grid-options';
6
5
  import { DataGridComponentOptions } from './schema';
7
- export interface NormalizedDataGridComponentOptions extends Omit<Readonly<Normalized<DataGridComponentOptions> & NormalizedAngularOptions & NormalizedDataGridOptions>, 'itemList'> {
8
- nestController: string;
6
+ export interface NormalizedDataGridComponentOptions extends Readonly<Normalized<Omit<DataGridComponentOptions, 'itemList' | 'propertyList'>> & NormalizedAngularOptions & NormalizedDataGridOptions> {
9
7
  dataSourceClassName: string;
10
8
  dataSourceFileName: string;
11
9
  componentName: string;
10
+ controllerName: string;
12
11
  name: string;
13
- itemList: ReadonlyArray<NormalizedDataGridItem>;
14
12
  }
15
13
  export declare function NormalizeDataGridComponentOptions(options: Readonly<DataGridComponentOptions>): NormalizedDataGridComponentOptions;
16
14
  export default function (options: DataGridComponentOptions): () => Rule;
@@ -10,25 +10,24 @@ const path_1 = require("path");
10
10
  const ts_morph_2 = require("ts-morph");
11
11
  const angular_options_1 = require("../../lib/angular-options");
12
12
  const backend_types_1 = require("../../lib/backend-types");
13
+ const data_grid_mode_1 = require("../../lib/data-grid-mode");
13
14
  const data_grid_options_1 = require("../../lib/data-grid-options");
15
+ const load_handlebars_template_1 = require("../../lib/load-handlebars-template");
14
16
  function NormalizeDataGridComponentOptions(options) {
15
17
  const normalizedAngularOptions = (0, angular_options_1.NormalizeAngularOptions)(options);
16
18
  const normalizedDataGridOptions = (0, data_grid_options_1.NormalizeDataGridOptions)(options);
17
19
  (0, angular_options_1.AssertAngularOptionsNameProperty)(normalizedAngularOptions);
18
- const { name, directory, } = normalizedAngularOptions;
20
+ const { name, directory, nestModule, } = normalizedAngularOptions;
19
21
  const componentName = (0, schematics_utilities_1.CoerceSuffix)((0, schematics_utilities_1.dasherize)(name), '-data-grid');
20
- return Object.freeze(Object.assign(Object.assign(Object.assign({}, normalizedAngularOptions), normalizedDataGridOptions), { directory: (0, path_1.join)(directory !== null && directory !== void 0 ? directory : '', componentName), componentName, nestController: componentName, dataSourceClassName: (0, schematics_utilities_1.CoerceSuffix)((0, schematics_utilities_1.classify)(name), 'DataGridDataSource'), dataSourceFileName: (0, schematics_utilities_1.CoerceSuffix)(name, '-data-grid.data-source') }));
21
- }
22
- exports.NormalizeDataGridComponentOptions = NormalizeDataGridComponentOptions;
23
- function getControllerName(normalizedOptions) {
24
- const { componentName, nestModule, } = normalizedOptions;
25
- return (0, schematics_ts_morph_1.BuildNestControllerName)({
26
- controllerName: componentName,
22
+ const controllerName = (0, schematics_ts_morph_1.BuildNestControllerName)({
23
+ controllerName: name,
27
24
  nestModule,
28
25
  });
26
+ return Object.freeze(Object.assign(Object.assign(Object.assign({}, normalizedAngularOptions), normalizedDataGridOptions), { controllerName, directory: (0, path_1.join)(directory !== null && directory !== void 0 ? directory : '', componentName), componentName, dataSourceClassName: (0, schematics_utilities_1.CoerceSuffix)((0, schematics_utilities_1.classify)(name), 'DataGridDataSource'), dataSourceFileName: (0, schematics_utilities_1.CoerceSuffix)(name, '-data-grid.data-source') }));
29
27
  }
28
+ exports.NormalizeDataGridComponentOptions = NormalizeDataGridComponentOptions;
30
29
  function componentRule(normalizedOptions) {
31
- const { project, feature, directory, mode, componentName, overwrite, collection, name, } = normalizedOptions;
30
+ const { project, feature, directory, mode, componentName, overwrite, collection, name, inCard, } = normalizedOptions;
32
31
  const templateOptions = Object.assign(Object.assign({}, core_1.strings), normalizedOptions);
33
32
  return (0, schematics_1.chain)([
34
33
  () => console.log('Coerce data source component ...'),
@@ -39,25 +38,35 @@ function componentRule(normalizedOptions) {
39
38
  directory,
40
39
  overwrite,
41
40
  template: {
42
- url: `./files/${mode}`,
43
41
  options: templateOptions,
44
42
  },
43
+ handlebars: {
44
+ partials: {
45
+ matFormField: (0, load_handlebars_template_1.LoadMatFormFieldHandlebarsTemplate)(),
46
+ pipe: (0, load_handlebars_template_1.LoadPipeHandlebarsTemplate)(),
47
+ }
48
+ },
45
49
  tsMorphTransform: (project, [sourceFile], [classDeclaration]) => {
46
50
  (0, ts_morph_1.CoerceComponentImport)(classDeclaration, { name: 'DataGridModule', moduleSpecifier: '@rxap/data-grid' });
47
- (0, ts_morph_1.CoerceComponentImport)(classDeclaration, { name: 'MatCardModule', moduleSpecifier: '@angular/material/card' });
51
+ if (inCard) {
52
+ (0, ts_morph_1.CoerceComponentImport)(classDeclaration, {
53
+ name: 'MatCardModule',
54
+ moduleSpecifier: '@angular/material/card'
55
+ });
56
+ }
48
57
  if (!collection) {
49
58
  const dataSourceClassName = `${(0, schematics_utilities_1.classify)(name)}DataGridDataSource`;
50
59
  (0, schematics_ts_morph_1.AddComponentProvider)(sourceFile, dataSourceClassName);
51
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
60
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
52
61
  namedImports: [dataSourceClassName],
53
62
  moduleSpecifier: `./${name}-data-grid.data-source`,
54
63
  });
55
- (0, schematics_ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'dataGridDataSource', {
64
+ (0, ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'dataGridDataSource', {
56
65
  isReadonly: true,
57
66
  scope: ts_morph_2.Scope.Public,
58
67
  initializer: `inject(${dataSourceClassName})`,
59
68
  });
60
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
69
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
61
70
  namedImports: ['inject'],
62
71
  moduleSpecifier: '@angular/core',
63
72
  });
@@ -66,28 +75,36 @@ function componentRule(normalizedOptions) {
66
75
  (0, ts_morph_1.CoerceComponentInput)(classDeclaration, 'data', 'any', { isRequired: true });
67
76
  }
68
77
  switch (mode) {
69
- case data_grid_options_1.DataGridMode.Form:
78
+ case data_grid_mode_1.DataGridMode.Form:
70
79
  (0, ts_morph_1.CoerceComponentImport)(classDeclaration, { name: 'RxapFormsModule', moduleSpecifier: '@rxap/forms' });
71
80
  (0, ts_morph_1.CoerceComponentImport)(classDeclaration, { name: 'ReactiveFormsModule', moduleSpecifier: '@angular/forms' });
72
81
  (0, schematics_ts_morph_1.AddComponentProvider)(sourceFile, 'FormProviders');
73
82
  (0, schematics_ts_morph_1.AddComponentProvider)(sourceFile, 'FormComponentProviders');
74
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
83
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
75
84
  namedImports: ['FormProviders', 'FormComponentProviders'],
76
85
  moduleSpecifier: './form.providers',
77
86
  });
78
87
  break;
79
- case data_grid_options_1.DataGridMode.Plain:
88
+ case data_grid_mode_1.DataGridMode.Plain:
80
89
  break;
81
90
  }
82
91
  },
83
92
  }),
84
93
  ]);
85
94
  }
95
+ function buildGetOperationId(normalizedOptions) {
96
+ const { identifier } = normalizedOptions;
97
+ return (0, schematics_ts_morph_1.buildOperationId)(normalizedOptions, identifier ? 'getById' : 'get', (0, schematics_ts_morph_1.BuildNestControllerName)(normalizedOptions));
98
+ }
99
+ function buildSubmitOperationId(normalizedOptions) {
100
+ const { identifier } = normalizedOptions;
101
+ return (0, schematics_ts_morph_1.buildOperationId)(normalizedOptions, identifier ? 'submitById' : 'submit', (0, schematics_ts_morph_1.BuildNestControllerName)(normalizedOptions));
102
+ }
86
103
  function nestjsFormModeRule(normalizedOptions) {
87
- const { project, feature, nestModule, name, componentName, directory, shared, itemList, collection, scope, } = normalizedOptions;
88
- const controllerName = getControllerName(normalizedOptions);
89
- const submitOperationId = (0, schematics_ts_morph_1.buildOperationId)(normalizedOptions, 'submit', controllerName);
90
- const dataGridResponseClassName = (0, schematics_utilities_1.CoerceSuffix)((0, schematics_utilities_1.classify)([nestModule, componentName].filter(Boolean).join('-')), 'ControllerGetResponse');
104
+ const { project, feature, nestModule, name, directory, shared, itemList, collection, scope, identifier, controllerName, } = normalizedOptions;
105
+ const submitOperationId = buildSubmitOperationId(normalizedOptions);
106
+ const getOperationId = buildGetOperationId(normalizedOptions);
107
+ const dataGridResponseClassName = (0, ts_morph_1.OperationIdToResponseClassName)(getOperationId);
91
108
  return (0, schematics_1.chain)([
92
109
  () => console.log('Coerce form provider rule for the data grid data source submit method ...'),
93
110
  (0, schematics_ts_morph_1.CoerceFormProviderRule)({
@@ -137,25 +154,37 @@ function nestjsFormModeRule(normalizedOptions) {
137
154
  type: 'unknown',
138
155
  });
139
156
  typeAliasDeclaration.setIsExported(true);
140
- typeAliasDeclaration.setType(dataGridResponseClassName);
141
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
157
+ const excludedProperties = itemList
158
+ .filter(item => !item.formControl)
159
+ .map(item => item.name)
160
+ .filter(name => !itemList.filter(i => i.formControl).some(i => { var _a; return ((_a = i.formControl) === null || _a === void 0 ? void 0 : _a.name) === name; }));
161
+ // if an identifier is defined and the identifier is not an item with a form control add the identifier property to the excluded properties list
162
+ if (identifier && !itemList.some(item => { var _a; return ((_a = item.formControl) === null || _a === void 0 ? void 0 : _a.name) === (identifier === null || identifier === void 0 ? void 0 : identifier.property.name); })) {
163
+ excludedProperties.push(identifier.property.name);
164
+ }
165
+ if (excludedProperties.length) {
166
+ typeAliasDeclaration.setType(`Omit<${dataGridResponseClassName}, '${excludedProperties.join('\' | \'')}'>`);
167
+ }
168
+ else {
169
+ typeAliasDeclaration.setType(dataGridResponseClassName);
170
+ }
171
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
142
172
  namedImports: [dataGridResponseClassName],
143
- moduleSpecifier: (0, schematics_ts_morph_1.OpenApiResponseClassImportPath)(dataGridResponseClassName, (0, schematics_ts_morph_1.buildNestProjectName)(normalizedOptions), scope),
173
+ moduleSpecifier: (0, ts_morph_1.OperationIdToResponseClassImportPath)(getOperationId, scope),
144
174
  });
145
175
  },
146
176
  }),
147
177
  () => console.log('Coerce submit operation for the data grid data source ...'),
148
178
  (0, schematics_ts_morph_1.CoerceSubmitDataGridOperation)({
149
- controllerName: name,
179
+ controllerName,
150
180
  nestModule,
151
181
  project,
152
182
  feature,
153
183
  shared,
184
+ idProperty: identifier === null || identifier === void 0 ? void 0 : identifier.property,
154
185
  propertyList: itemList
155
- .map(item => ({
156
- name: item.name,
157
- type: item.type,
158
- })),
186
+ .map(item => item.formControl)
187
+ .filter((formControl) => !!formControl),
159
188
  skipCoerce: true,
160
189
  collection,
161
190
  }),
@@ -164,15 +193,14 @@ function nestjsFormModeRule(normalizedOptions) {
164
193
  function nestjsModeRule(normalizedOptions) {
165
194
  const { mode } = normalizedOptions;
166
195
  switch (mode) {
167
- case data_grid_options_1.DataGridMode.Form:
196
+ case data_grid_mode_1.DataGridMode.Form:
168
197
  return nestjsFormModeRule(normalizedOptions);
169
198
  }
170
199
  return (0, schematics_1.noop)();
171
200
  }
172
201
  function nestjsBackendRule(normalizedOptions) {
173
- const { project, feature, collection, shared, nestModule, name, itemList, directory, scope, } = normalizedOptions;
174
- const controllerName = getControllerName(normalizedOptions);
175
- const getOperationId = (0, schematics_ts_morph_1.buildOperationId)(normalizedOptions, 'get', controllerName);
202
+ const { project, feature, collection, shared, nestModule, name, directory, scope, upstream, propertyList, identifier, controllerName, } = normalizedOptions;
203
+ const getOperationId = buildGetOperationId(normalizedOptions);
176
204
  return (0, schematics_1.chain)([
177
205
  () => console.log('Coerce get operation for the data grid data source ...'),
178
206
  (0, schematics_ts_morph_1.CoerceGetDataGridOperation)({
@@ -181,12 +209,10 @@ function nestjsBackendRule(normalizedOptions) {
181
209
  shared,
182
210
  nestModule,
183
211
  collection,
184
- controllerName: name,
185
- propertyList: itemList
186
- .map((item) => ({
187
- name: item.name,
188
- type: item.type,
189
- })),
212
+ controllerName,
213
+ upstream,
214
+ propertyList,
215
+ idProperty: identifier === null || identifier === void 0 ? void 0 : identifier.property,
190
216
  }),
191
217
  () => console.log('Coerce data grid data source class'),
192
218
  (0, schematics_ts_morph_1.CoerceDataSourceClass)({
@@ -196,26 +222,26 @@ function nestjsBackendRule(normalizedOptions) {
196
222
  directory,
197
223
  name: (0, schematics_utilities_1.CoerceSuffix)(name, '-data-grid'),
198
224
  tsMorphTransform: (project, sourceFile, classDeclaration) => {
199
- classDeclaration.setExtends(`DataGridDataSource<${(0, schematics_ts_morph_1.OperationIdToResponseClassName)(getOperationId)}>`);
200
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
201
- namedImports: [(0, schematics_ts_morph_1.OperationIdToResponseClassName)(getOperationId)],
202
- moduleSpecifier: (0, schematics_ts_morph_1.OperationIdToResponseClassImportPath)(getOperationId, scope),
225
+ classDeclaration.setExtends(`DataGridDataSource<${(0, ts_morph_1.OperationIdToResponseClassName)(getOperationId)}>`);
226
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
227
+ namedImports: [(0, ts_morph_1.OperationIdToResponseClassName)(getOperationId)],
228
+ moduleSpecifier: (0, ts_morph_1.OperationIdToResponseClassImportPath)(getOperationId, scope),
203
229
  });
204
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
230
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
205
231
  namedImports: [(0, schematics_ts_morph_1.OperationIdToClassName)(getOperationId)],
206
232
  moduleSpecifier: (0, schematics_ts_morph_1.OperationIdToClassImportPath)(getOperationId, scope),
207
233
  });
208
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
234
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
209
235
  namedImports: ['DataGridDataSource'],
210
236
  moduleSpecifier: '@rxap/data-grid',
211
237
  });
212
- (0, schematics_ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'method', {
238
+ (0, ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'method', {
213
239
  scope: ts_morph_2.Scope.Protected,
214
240
  isReadonly: true,
215
241
  hasOverrideKeyword: true,
216
242
  initializer: `inject(${(0, schematics_ts_morph_1.OperationIdToClassName)(getOperationId)})`,
217
243
  });
218
- (0, schematics_ts_morph_1.CoerceImports)(sourceFile, {
244
+ (0, ts_morph_1.CoerceImports)(sourceFile, {
219
245
  namedImports: ['inject'],
220
246
  moduleSpecifier: '@angular/core',
221
247
  });
@@ -260,15 +286,20 @@ function backendRule(normalizedOptions) {
260
286
  return (0, schematics_1.noop)();
261
287
  }
262
288
  function formModeRule(normalizedOptions) {
263
- const { project, feature, directory, name, itemList, dataSourceClassName, dataSourceFileName, componentName, overwrite, } = normalizedOptions;
289
+ const { project, feature, directory, name, itemList, dataSourceClassName, dataSourceFileName, componentName, overwrite, backend, nestModule, controllerName, identifier, } = normalizedOptions;
264
290
  return (0, schematics_1.chain)([
265
291
  () => console.log('Coerce form definition ...'),
266
- (0, schematics_ts_morph_1.CoerceFormDefinition)({
292
+ (0, schematics_utilities_1.ExecuteSchematic)('form-definition', {
267
293
  name,
268
294
  project,
269
- feature,
270
295
  directory,
271
- controlList: itemList,
296
+ feature,
297
+ controlList: itemList.map(item => item.formControl).filter((formControl) => !!formControl),
298
+ overwrite,
299
+ backend,
300
+ nestModule,
301
+ controllerName,
302
+ identifier,
272
303
  }),
273
304
  () => console.log('Coerce form providers ...'),
274
305
  (0, schematics_ts_morph_1.CoerceFormProvidersFile)({
@@ -322,7 +353,7 @@ function formModeRule(normalizedOptions) {
322
353
  function modeRule(normalizedOptions) {
323
354
  const { mode } = normalizedOptions;
324
355
  switch (mode) {
325
- case data_grid_options_1.DataGridMode.Form:
356
+ case data_grid_mode_1.DataGridMode.Form:
326
357
  return formModeRule(normalizedOptions);
327
358
  }
328
359
  return (0, schematics_1.noop)();