@cccteam/ccc-lib 0.0.15 → 0.0.16

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 (221) hide show
  1. package/README.md +38 -13
  2. package/fesm2022/cccteam-ccc-lib-src-auth-authentication-guard.mjs +36 -0
  3. package/fesm2022/cccteam-ccc-lib-src-auth-authentication-guard.mjs.map +1 -0
  4. package/fesm2022/cccteam-ccc-lib-src-auth-authorization-guard.mjs +25 -0
  5. package/fesm2022/cccteam-ccc-lib-src-auth-authorization-guard.mjs.map +1 -0
  6. package/fesm2022/cccteam-ccc-lib-src-auth-forms.mjs +83 -0
  7. package/fesm2022/cccteam-ccc-lib-src-auth-forms.mjs.map +1 -0
  8. package/fesm2022/cccteam-ccc-lib-src-auth-has-permission.mjs +44 -0
  9. package/fesm2022/cccteam-ccc-lib-src-auth-has-permission.mjs.map +1 -0
  10. package/fesm2022/cccteam-ccc-lib-src-auth-service.mjs +82 -0
  11. package/fesm2022/cccteam-ccc-lib-src-auth-service.mjs.map +1 -0
  12. package/fesm2022/cccteam-ccc-lib-src-ccc-camel-case-to-title.mjs +33 -0
  13. package/fesm2022/cccteam-ccc-lib-src-ccc-camel-case-to-title.mjs.map +1 -0
  14. package/fesm2022/cccteam-ccc-lib-src-ccc-grid.mjs +256 -0
  15. package/fesm2022/cccteam-ccc-lib-src-ccc-grid.mjs.map +1 -0
  16. package/fesm2022/cccteam-ccc-lib-src-ccc-resource.mjs +3129 -0
  17. package/fesm2022/cccteam-ccc-lib-src-ccc-resource.mjs.map +1 -0
  18. package/fesm2022/cccteam-ccc-lib-src-forms.mjs +79 -0
  19. package/fesm2022/cccteam-ccc-lib-src-forms.mjs.map +1 -0
  20. package/fesm2022/cccteam-ccc-lib-src-internal-types.mjs +6 -0
  21. package/fesm2022/cccteam-ccc-lib-src-internal-types.mjs.map +1 -0
  22. package/fesm2022/cccteam-ccc-lib-src-types.mjs +431 -0
  23. package/fesm2022/cccteam-ccc-lib-src-types.mjs.map +1 -0
  24. package/fesm2022/cccteam-ccc-lib-src-ui-alert.mjs +48 -0
  25. package/fesm2022/cccteam-ccc-lib-src-ui-alert.mjs.map +1 -0
  26. package/fesm2022/cccteam-ccc-lib-src-ui-core-service.mjs +41 -0
  27. package/fesm2022/cccteam-ccc-lib-src-ui-core-service.mjs.map +1 -0
  28. package/fesm2022/cccteam-ccc-lib-src-ui-idle-service.mjs +157 -0
  29. package/fesm2022/cccteam-ccc-lib-src-ui-idle-service.mjs.map +1 -0
  30. package/fesm2022/cccteam-ccc-lib-src-ui-interceptor.mjs +50 -0
  31. package/fesm2022/cccteam-ccc-lib-src-ui-interceptor.mjs.map +1 -0
  32. package/fesm2022/cccteam-ccc-lib-src-ui-notification-service.mjs +63 -0
  33. package/fesm2022/cccteam-ccc-lib-src-ui-notification-service.mjs.map +1 -0
  34. package/fesm2022/cccteam-ccc-lib-src-ui-sidenav.mjs +60 -0
  35. package/fesm2022/cccteam-ccc-lib-src-ui-sidenav.mjs.map +1 -0
  36. package/fesm2022/cccteam-ccc-lib-src-util-request-options.mjs +19 -0
  37. package/fesm2022/cccteam-ccc-lib-src-util-request-options.mjs.map +1 -0
  38. package/fesm2022/cccteam-ccc-lib.mjs +4444 -0
  39. package/fesm2022/cccteam-ccc-lib.mjs.map +1 -0
  40. package/package.json +88 -5
  41. package/types/cccteam-ccc-lib-src-auth-authentication-guard.d.ts +6 -0
  42. package/types/cccteam-ccc-lib-src-auth-authorization-guard.d.ts +6 -0
  43. package/types/cccteam-ccc-lib-src-auth-forms.d.ts +28 -0
  44. package/types/cccteam-ccc-lib-src-auth-has-permission.d.ts +15 -0
  45. package/types/cccteam-ccc-lib-src-auth-service.d.ts +38 -0
  46. package/types/cccteam-ccc-lib-src-ccc-camel-case-to-title.d.ts +10 -0
  47. package/types/cccteam-ccc-lib-src-ccc-grid.d.ts +35 -0
  48. package/types/cccteam-ccc-lib-src-ccc-resource.d.ts +674 -0
  49. package/types/cccteam-ccc-lib-src-forms.d.ts +27 -0
  50. package/types/cccteam-ccc-lib-src-types.d.ts +934 -0
  51. package/types/cccteam-ccc-lib-src-ui-alert.d.ts +16 -0
  52. package/types/cccteam-ccc-lib-src-ui-core-service.d.ts +20 -0
  53. package/types/cccteam-ccc-lib-src-ui-idle-service.d.ts +49 -0
  54. package/types/cccteam-ccc-lib-src-ui-interceptor.d.ts +16 -0
  55. package/types/cccteam-ccc-lib-src-ui-notification-service.d.ts +33 -0
  56. package/types/cccteam-ccc-lib-src-ui-sidenav.d.ts +33 -0
  57. package/types/cccteam-ccc-lib-src-util-request-options.d.ts +12 -0
  58. package/types/cccteam-ccc-lib.d.ts +1877 -0
  59. package/eslint.config.js +0 -32
  60. package/ng-package.json +0 -11
  61. package/src/auth-authentication-guard/authentication.guard.ts +0 -40
  62. package/src/auth-authentication-guard/index.ts +0 -1
  63. package/src/auth-authentication-guard/ng-package.json +0 -6
  64. package/src/auth-authorization-guard/authorization.guard.ts +0 -17
  65. package/src/auth-authorization-guard/index.ts +0 -1
  66. package/src/auth-authorization-guard/ng-package.json +0 -6
  67. package/src/auth-forms/ccc-field/ccc-field.component.html +0 -1
  68. package/src/auth-forms/ccc-field/ccc-field.component.scss +0 -0
  69. package/src/auth-forms/ccc-field/ccc-field.component.spec.ts +0 -22
  70. package/src/auth-forms/ccc-field/ccc-field.component.ts +0 -74
  71. package/src/auth-forms/form-helpers.ts +0 -39
  72. package/src/auth-forms/index.ts +0 -3
  73. package/src/auth-forms/ng-package.json +0 -6
  74. package/src/auth-has-permission/has-permission.directive.ts +0 -34
  75. package/src/auth-has-permission/index.ts +0 -1
  76. package/src/auth-has-permission/ng-package.json +0 -6
  77. package/src/auth-service/auth.service.ts +0 -92
  78. package/src/auth-service/index.ts +0 -1
  79. package/src/auth-service/ng-package.json +0 -6
  80. package/src/ccc-camel-case-to-title/camel-case-to-title.pipe.ts +0 -23
  81. package/src/ccc-camel-case-to-title/index.ts +0 -1
  82. package/src/ccc-camel-case-to-title/ng-package.json +0 -6
  83. package/src/ccc-grid/ccc-grid.component.ts +0 -155
  84. package/src/ccc-grid/index.ts +0 -3
  85. package/src/ccc-grid/ng-package.json +0 -6
  86. package/src/ccc-grid/table-button/table-button.component.html +0 -16
  87. package/src/ccc-grid/table-button/table-button.component.scss +0 -5
  88. package/src/ccc-grid/table-button/table-button.component.spec.ts +0 -22
  89. package/src/ccc-grid/table-button/table-button.component.ts +0 -49
  90. package/src/ccc-resource/can-deactivate.guard.ts +0 -41
  91. package/src/ccc-resource/compound-resource/compound-resource.component.html +0 -57
  92. package/src/ccc-resource/compound-resource/compound-resource.component.scss +0 -86
  93. package/src/ccc-resource/compound-resource/compound-resource.component.spec.ts +0 -22
  94. package/src/ccc-resource/compound-resource/compound-resource.component.ts +0 -158
  95. package/src/ccc-resource/concat-fns.ts +0 -162
  96. package/src/ccc-resource/empty-readonly-field/empty-readonly-field.component.html +0 -12
  97. package/src/ccc-resource/empty-readonly-field/empty-readonly-field.component.scss +0 -0
  98. package/src/ccc-resource/empty-readonly-field/empty-readonly-field.component.spec.ts +0 -23
  99. package/src/ccc-resource/empty-readonly-field/empty-readonly-field.component.ts +0 -17
  100. package/src/ccc-resource/form-state.service.ts +0 -24
  101. package/src/ccc-resource/format-fns.ts +0 -49
  102. package/src/ccc-resource/gui-constants.ts +0 -88
  103. package/src/ccc-resource/index.ts +0 -23
  104. package/src/ccc-resource/leave-page-confirmation-modal/leave-page-confirmation-modal.component.html +0 -8
  105. package/src/ccc-resource/leave-page-confirmation-modal/leave-page-confirmation-modal.component.scss +0 -0
  106. package/src/ccc-resource/leave-page-confirmation-modal/leave-page-confirmation-modal.component.spec.ts +0 -22
  107. package/src/ccc-resource/leave-page-confirmation-modal/leave-page-confirmation-modal.component.ts +0 -12
  108. package/src/ccc-resource/ng-package.json +0 -6
  109. package/src/ccc-resource/operation-types.ts +0 -19
  110. package/src/ccc-resource/padding-element/padding-element.component.html +0 -1
  111. package/src/ccc-resource/padding-element/padding-element.component.scss +0 -3
  112. package/src/ccc-resource/padding-element/padding-element.component.spec.ts +0 -22
  113. package/src/ccc-resource/padding-element/padding-element.component.ts +0 -20
  114. package/src/ccc-resource/resource-array-view/resource-array-view.component.html +0 -81
  115. package/src/ccc-resource/resource-array-view/resource-array-view.component.scss +0 -21
  116. package/src/ccc-resource/resource-array-view/resource-array-view.component.spec.ts +0 -22
  117. package/src/ccc-resource/resource-array-view/resource-array-view.component.ts +0 -143
  118. package/src/ccc-resource/resource-base/resource-base.component.spec.ts +0 -22
  119. package/src/ccc-resource/resource-base/resource-base.component.ts +0 -11
  120. package/src/ccc-resource/resource-cache.service.ts +0 -232
  121. package/src/ccc-resource/resource-create/resource-create.component.html +0 -31
  122. package/src/ccc-resource/resource-create/resource-create.component.scss +0 -130
  123. package/src/ccc-resource/resource-create/resource-create.component.spec.ts +0 -22
  124. package/src/ccc-resource/resource-create/resource-create.component.ts +0 -303
  125. package/src/ccc-resource/resource-field/base-field.directive.ts +0 -102
  126. package/src/ccc-resource/resource-field/fields/boolean-field/boolean-field.component.html +0 -16
  127. package/src/ccc-resource/resource-field/fields/boolean-field/boolean-field.component.scss +0 -0
  128. package/src/ccc-resource/resource-field/fields/boolean-field/boolean-field.component.spec.ts +0 -22
  129. package/src/ccc-resource/resource-field/fields/boolean-field/boolean-field.component.ts +0 -15
  130. package/src/ccc-resource/resource-field/fields/computed-field/computed-field.component.html +0 -13
  131. package/src/ccc-resource/resource-field/fields/computed-field/computed-field.component.scss +0 -0
  132. package/src/ccc-resource/resource-field/fields/computed-field/computed-field.component.spec.ts +0 -23
  133. package/src/ccc-resource/resource-field/fields/computed-field/computed-field.component.ts +0 -50
  134. package/src/ccc-resource/resource-field/fields/date-field/date-field.component.html +0 -22
  135. package/src/ccc-resource/resource-field/fields/date-field/date-field.component.scss +0 -0
  136. package/src/ccc-resource/resource-field/fields/date-field/date-field.component.spec.ts +0 -22
  137. package/src/ccc-resource/resource-field/fields/date-field/date-field.component.ts +0 -14
  138. package/src/ccc-resource/resource-field/fields/enumerated-field/enumerated-field.component.html +0 -71
  139. package/src/ccc-resource/resource-field/fields/enumerated-field/enumerated-field.component.scss +0 -9
  140. package/src/ccc-resource/resource-field/fields/enumerated-field/enumerated-field.component.spec.ts +0 -22
  141. package/src/ccc-resource/resource-field/fields/enumerated-field/enumerated-field.component.ts +0 -207
  142. package/src/ccc-resource/resource-field/fields/nullboolean-field/nullboolean-field.component.html +0 -38
  143. package/src/ccc-resource/resource-field/fields/nullboolean-field/nullboolean-field.component.scss +0 -3
  144. package/src/ccc-resource/resource-field/fields/nullboolean-field/nullboolean-field.component.spec.ts +0 -22
  145. package/src/ccc-resource/resource-field/fields/nullboolean-field/nullboolean-field.component.ts +0 -87
  146. package/src/ccc-resource/resource-field/fields/number-field/number-field.component.html +0 -23
  147. package/src/ccc-resource/resource-field/fields/number-field/number-field.component.scss +0 -6
  148. package/src/ccc-resource/resource-field/fields/number-field/number-field.component.spec.ts +0 -22
  149. package/src/ccc-resource/resource-field/fields/number-field/number-field.component.ts +0 -14
  150. package/src/ccc-resource/resource-field/fields/text-field/text-field.component.html +0 -29
  151. package/src/ccc-resource/resource-field/fields/text-field/text-field.component.scss +0 -6
  152. package/src/ccc-resource/resource-field/fields/text-field/text-field.component.spec.ts +0 -22
  153. package/src/ccc-resource/resource-field/fields/text-field/text-field.component.ts +0 -23
  154. package/src/ccc-resource/resource-field/resource-field.component.html +0 -112
  155. package/src/ccc-resource/resource-field/resource-field.component.scss +0 -7
  156. package/src/ccc-resource/resource-field/resource-field.component.spec.ts +0 -22
  157. package/src/ccc-resource/resource-field/resource-field.component.ts +0 -214
  158. package/src/ccc-resource/resource-layout/resource-layout.component.html +0 -73
  159. package/src/ccc-resource/resource-layout/resource-layout.component.scss +0 -26
  160. package/src/ccc-resource/resource-layout/resource-layout.component.spec.ts +0 -22
  161. package/src/ccc-resource/resource-layout/resource-layout.component.ts +0 -176
  162. package/src/ccc-resource/resource-list/ resource-list.component.spec.ts +0 -22
  163. package/src/ccc-resource/resource-list/resource-list.component.html +0 -27
  164. package/src/ccc-resource/resource-list/resource-list.component.scss +0 -67
  165. package/src/ccc-resource/resource-list/resource-list.component.ts +0 -376
  166. package/src/ccc-resource/resource-list-create/resource-list-create.component.html +0 -71
  167. package/src/ccc-resource/resource-list-create/resource-list-create.component.scss +0 -9
  168. package/src/ccc-resource/resource-list-create/resource-list-create.component.spec.ts +0 -22
  169. package/src/ccc-resource/resource-list-create/resource-list-create.component.ts +0 -103
  170. package/src/ccc-resource/resource-resolver/resource-resolver.component.html +0 -1
  171. package/src/ccc-resource/resource-resolver/resource-resolver.component.scss +0 -0
  172. package/src/ccc-resource/resource-resolver/resource-resolver.component.spec.ts +0 -22
  173. package/src/ccc-resource/resource-resolver/resource-resolver.component.ts +0 -69
  174. package/src/ccc-resource/resource-store.service.ts +0 -93
  175. package/src/ccc-resource/resource-view/resource-view.component.html +0 -133
  176. package/src/ccc-resource/resource-view/resource-view.component.scss +0 -150
  177. package/src/ccc-resource/resource-view/resource-view.component.spec.ts +0 -22
  178. package/src/ccc-resource/resource-view/resource-view.component.ts +0 -354
  179. package/src/ccc-resource/resources-helpers.ts +0 -262
  180. package/src/ccc-resource/utils/validator-utils.ts +0 -6
  181. package/src/index.ts +0 -44
  182. package/src/internal-types/ng-package.json +0 -6
  183. package/src/types/auth.actions.ts +0 -46
  184. package/src/types/configs.ts +0 -952
  185. package/src/types/constants.ts +0 -1
  186. package/src/types/core.actions.ts +0 -33
  187. package/src/types/index.ts +0 -9
  188. package/src/types/ng-package.json +0 -6
  189. package/src/types/notification-message.ts +0 -20
  190. package/src/types/permissions.ts +0 -17
  191. package/src/types/session-info.ts +0 -10
  192. package/src/types/tokens.ts +0 -20
  193. package/src/ui-alert/alert.component.html +0 -13
  194. package/src/ui-alert/alert.component.scss +0 -48
  195. package/src/ui-alert/alert.component.spec.ts +0 -22
  196. package/src/ui-alert/alert.component.ts +0 -35
  197. package/src/ui-alert/index.ts +0 -1
  198. package/src/ui-alert/ng-package.json +0 -6
  199. package/src/ui-core-service/index.ts +0 -1
  200. package/src/ui-core-service/ng-package.json +0 -6
  201. package/src/ui-core-service/ui-core.service.ts +0 -34
  202. package/src/ui-interceptor/api.interceptor.spec.ts +0 -16
  203. package/src/ui-interceptor/api.interceptor.ts +0 -45
  204. package/src/ui-interceptor/index.ts +0 -1
  205. package/src/ui-interceptor/ng-package.json +0 -6
  206. package/src/ui-notification-service/index.ts +0 -1
  207. package/src/ui-notification-service/ng-package.json +0 -6
  208. package/src/ui-notification-service/notification.service.ts +0 -59
  209. package/src/ui-sidenav/index.ts +0 -1
  210. package/src/ui-sidenav/ng-package.json +0 -6
  211. package/src/ui-sidenav/sidenav.component.html +0 -60
  212. package/src/ui-sidenav/sidenav.component.scss +0 -99
  213. package/src/ui-sidenav/sidenav.component.spec.ts +0 -22
  214. package/src/ui-sidenav/sidenav.component.ts +0 -64
  215. package/src/util-request-options/index.ts +0 -1
  216. package/src/util-request-options/ng-package.json +0 -6
  217. package/src/util-request-options/request-options.ts +0 -17
  218. package/tsconfig.lib.json +0 -13
  219. package/tsconfig.lib.prod.json +0 -11
  220. package/tsconfig.spec.json +0 -15
  221. /package/{src/internal-types/index.ts → types/cccteam-ccc-lib-src-internal-types.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cccteam-ccc-lib-src-ccc-resource.mjs","sources":["../../../projects/ccc-lib/src/ccc-resource/actions/action-button-smart/action-access-control-wrapper.component.ts","../../../projects/ccc-lib/src/ccc-resource/gui-constants.ts","../../../projects/ccc-lib/src/ccc-resource/padding-element/padding-element.component.ts","../../../projects/ccc-lib/src/ccc-resource/padding-element/padding-element.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/computed-field/computed-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/computed-field/computed-field.component.html","../../../projects/ccc-lib/src/ccc-resource/empty-readonly-field/empty-readonly-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/empty-readonly-field/empty-readonly-field.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-store.service.ts","../../../projects/ccc-lib/src/ccc-resource/form-state.service.ts","../../../projects/ccc-lib/src/ccc-resource/leave-page-confirmation-modal/leave-page-confirmation-modal.component.ts","../../../projects/ccc-lib/src/ccc-resource/leave-page-confirmation-modal/leave-page-confirmation-modal.component.html","../../../projects/ccc-lib/src/ccc-resource/can-deactivate.guard.ts","../../../projects/ccc-lib/src/ccc-resource/resources-helpers.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/base-field.directive.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/boolean-field/boolean-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/boolean-field/boolean-field.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/date-field/date-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/date-field/date-field.component.html","../../../projects/ccc-lib/src/ccc-resource/concat-fns.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/enumerated-field/enumerated-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/enumerated-field/enumerated-field.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/nullboolean-field/nullboolean-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/nullboolean-field/nullboolean-field.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/number-field/number-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/number-field/number-field.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/text-field/text-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/fields/text-field/text-field.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-field/resource-field.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-field/resource-field.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-layout/resource-layout.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-layout/resource-layout.component.html","../../../projects/ccc-lib/src/ccc-resource/base-rpc-modal/base-rpc-modal.component.ts","../../../projects/ccc-lib/src/ccc-resource/base-rpc-modal/base-rpc-modal.component.html","../../../projects/ccc-lib/src/ccc-resource/actions/rpc-button/rpc-button.component.ts","../../../projects/ccc-lib/src/ccc-resource/actions/rpc-button/rpc-button.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-create/resource-create.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-create/resource-create.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-array-view/resource-array-view.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-array-view/resource-array-view.component.html","../../../projects/ccc-lib/src/ccc-resource/format-fns.ts","../../../projects/ccc-lib/src/ccc-resource/resource-list/resource-list.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-list/resource-list.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-list-create/resource-list-create.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-list-create/resource-list-create.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-resolver/resource-resolver.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-resolver/resource-resolver.component.html","../../../projects/ccc-lib/src/ccc-resource/delete-resource-confirmation-modal/delete-resource-confirmation-modal.component.ts","../../../projects/ccc-lib/src/ccc-resource/delete-resource-confirmation-modal/delete-resource-confirmation-modal.component.html","../../../projects/ccc-lib/src/ccc-resource/resource-view/resource-view.component.ts","../../../projects/ccc-lib/src/ccc-resource/resource-view/resource-view.component.html","../../../projects/ccc-lib/src/ccc-resource/compound-resource/compound-resource.component.ts","../../../projects/ccc-lib/src/ccc-resource/compound-resource/compound-resource.component.html","../../../projects/ccc-lib/src/ccc-resource/cccteam-ccc-lib-src-ccc-resource.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { RecordData, ResourceMeta } from '@cccteam/ccc-lib/src/types';\n\nexport type ActionButtonContext =\n | {\n actionType: 'create' | 'edit' | 'delete';\n meta: ResourceMeta;\n resourceData: RecordData;\n shouldRender: (data: RecordData) => boolean;\n }\n | {\n actionType: 'rpc';\n // meta: RpcMethod; // Currently unused, but likely where ABAC permissions should live once implemented\n resourceData: RecordData;\n shouldRender: (data: RecordData) => boolean;\n };\n\n@Component({\n selector: 'action-access-control-wrapper',\n styles: `\n :host {\n margin-top: auto;\n margin-bottom: auto;\n }\n `,\n template: `@if (showAction()) {\n <ng-content />\n }`,\n})\nexport class ActionAccessControlWrapperComponent {\n actionContext = input<ActionButtonContext>();\n\n showAction = computed(() => {\n const context = this.actionContext();\n let isActionPermittedForUser = true;\n\n if (context === undefined) {\n return true;\n }\n\n const actionType = context.actionType;\n if (actionType === 'rpc') {\n //TODO: When ABAC permissions is completed, update this logic\n isActionPermittedForUser = true;\n }\n\n if (actionType === 'create') {\n isActionPermittedForUser = !context.meta.createDisabled;\n }\n\n if (actionType === 'edit') {\n isActionPermittedForUser = !context.meta.updateDisabled;\n }\n\n if (actionType === 'delete') {\n isActionPermittedForUser = !context.meta.deleteDisabled;\n }\n\n if (!isActionPermittedForUser) {\n console.debug('ACCESS CONTROL | ', actionType, ' action not permitted for user in context: ', context);\n return false;\n }\n\n let showAction = true;\n try {\n showAction = context.shouldRender(context.resourceData);\n } catch (e) {\n console.error('Failed to calculate value for should Render function for action: ', actionType);\n console.error(e);\n }\n return showAction;\n });\n}\n","import { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport { ConfigElement, createResourceValidator } from '@cccteam/ccc-lib/src/types';\nimport { isDate } from 'date-fns';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { isNumber } from 'lodash-es';\n\nexport const maxConfigElementRecursionDepth = 240;\nexport const maxLayoutNestingDepth = 48;\n\n/** Returns a flat array of nested elements by recursively traversing\n * through the elements graph */\nexport const flattenElements: (elements: ConfigElement[], depth?: number) => ConfigElement[] = (\n elements: ConfigElement[],\n depth = 0,\n) => {\n depth++;\n if (!elements || elements.length === 0 || depth > maxConfigElementRecursionDepth) {\n return [];\n }\n return elements.reduce((acc, element) => {\n if (element.type === 'section') {\n return acc.concat(element, flattenElements(element.children, depth));\n }\n return acc.concat(element);\n }, [] as ConfigElement[]);\n};\n\nexport const civildateCoercion = (value: string): Date => {\n if (value === undefined || value === '') {\n return new Date(value);\n }\n return new Date(formatInTimeZone(new Date(value), 'UTC', 'yyyy-MM-dd HH:mm:ss'));\n};\n\nconst currentOrFutureDateValidator = (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null; // Let \"REQUIRED\" validator handle empty values\n }\n\n if (!isDate(control.value)) {\n return { errorMsg: 'Value must be a valid date' };\n }\n\n const selectedDate = new Date(control.value);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n if (selectedDate >= today) {\n return null;\n }\n\n return { errorMsg: 'Past date not allowed' };\n};\n\nconst positiveNumberValidator = (control: AbstractControl): ValidationErrors | null => {\n if (!control.value && control.value !== 0) {\n return null; // Let \"REQUIRED\" validator handle \"empty\" values\n }\n\n if (isNumber(control.value) && control.value > 0) {\n return null;\n }\n\n return { errorMsg: 'Value must be a positive number' };\n};\n\nconst notFutureDateValidator = (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null; // Let \"REQUIRED\" validator handle empty values\n }\n\n if (!isDate(control.value)) {\n return { errorMsg: 'Value must be a valid date' };\n }\n\n const selectedDate = new Date(control.value);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n if (selectedDate <= today) {\n return null;\n }\n\n return { errorMsg: 'Future date not allowed' };\n};\n\nconst valueInRangeInclusive = (min: number, max: number) => {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value && control.value !== 0) {\n return null; // Let \"REQUIRED\" validator handle \"empty\" values\n }\n\n if (isNumber(control.value) && control.value >= min && control.value <= max) {\n return null;\n }\n\n return { errorMsg: `Value must be in the range [${min}, ${max}]` };\n };\n};\n\n/**\n * This object stores every possible validator used across the application\n * Add all validators that are used in configs to this object\n *\n * Available validators that may be added: min, max, required, requiredTrue,\n * email, minLength, maxLength, pattern, nullValidator\n */\nexport const resourceValidators = Object.freeze({\n REQUIRED: createResourceValidator(Validators.required),\n EMAIL: createResourceValidator(Validators.email),\n CURRENT_OR_FUTURE_DATE: createResourceValidator(currentOrFutureDateValidator),\n POSITIVE_NUMBER: createResourceValidator(positiveNumberValidator),\n NOT_FUTURE_DATE: createResourceValidator(notFutureDateValidator),\n VALUE_IN_RANGE_INCLUSIVE: (min: number, max: number) => createResourceValidator(valueInRangeInclusive(min, max)),\n MAX_LENGTH: (maxLength: number) => createResourceValidator(Validators.maxLength(maxLength)),\n\n // Add any additional validators here. They may be defined in\n // a different file if they are too large. E.g.:\n // MIN_LENGTH_3: createResourceValidator(Validators.minLength(3)),\n});\n","import { Component, HostBinding, input, OnInit } from '@angular/core';\nimport { PaddingElement } from '@cccteam/ccc-lib/src/types';\n\n@Component({\n selector: 'ccc-padding-element',\n imports: [],\n templateUrl: './padding-element.component.html',\n styleUrls: ['./padding-element.component.scss'],\n})\nexport class PaddingElementComponent implements OnInit {\n paddingElement = input.required<PaddingElement>();\n\n @HostBinding('class') class = 'col-6';\n\n ngOnInit(): void {\n if (this.paddingElement().cols) {\n this.class = 'col-' + this.paddingElement()?.cols;\n }\n }\n}\n","<div class=\"padding-container\"></div>\n","import { Component, computed, effect, HostBinding, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ComputedDisplayFieldElement, RecordData } from '@cccteam/ccc-lib/src/types';\n\n@Component({\n selector: 'ccc-computed-field',\n imports: [MatFormFieldModule, MatButtonModule, MatInputModule],\n templateUrl: './computed-field.component.html',\n styleUrl: './computed-field.component.scss',\n})\nexport class ComputedFieldComponent {\n fieldConfig = input.required<ComputedDisplayFieldElement>();\n fieldClass = input<string>();\n formDataState = input<RecordData>();\n\n computedValue = computed(() => {\n try {\n return this.fieldConfig().calculatedValue(this.formDataState());\n } catch (e) {\n console.error('Failed to calculate value for computed field: ', this.fieldConfig().label);\n console.error(e);\n return '';\n }\n });\n\n showField = computed(() => {\n const shouldRender = this.fieldConfig().shouldRender;\n if (typeof shouldRender === 'boolean') {\n return shouldRender;\n }\n\n try {\n return shouldRender(this.formDataState());\n } catch (e) {\n console.error('Failed to calculate value for should Render function for field: ', this.fieldConfig().label);\n console.error(e);\n return true;\n }\n });\n\n @HostBinding('class') class = '';\n\n constructor() {\n effect(() => {\n this.class = this.showField() ? 'col-' + this.fieldConfig()?.cols : 'hidden-field';\n });\n }\n}\n","@if (showField()) {\n <div class=\"readonly-field\">\n <mat-form-field class=\"field {{ fieldClass() }}\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ fieldConfig().label }}</mat-label>\n <input\n matInput\n (keydown.enter)=\"$event.preventDefault()\"\n [readonly]=\"true\"\n type=\"text\"\n [value]=\"computedValue()\" />\n </mat-form-field>\n </div>\n}\n","import { Component, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { defaultEmptyFieldValue } from '@cccteam/ccc-lib/src/types';\n\n@Component({\n selector: 'ccc-empty-readonly-field',\n imports: [MatFormFieldModule, MatButtonModule, MatInputModule],\n templateUrl: './empty-readonly-field.component.html',\n styleUrl: './empty-readonly-field.component.scss',\n})\nexport class EmptyReadonlyFieldComponent {\n label = input.required<string>();\n\n displayValue = defaultEmptyFieldValue;\n}\n","<div class=\"readonly-field\">\n <mat-form-field class=\"field\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ label() }}</mat-label>\n <input\n matInput\n (keydown.enter)=\"$event.preventDefault()\"\n [readonly]=\"true\"\n type=\"text\"\n [value]=\"displayValue\"\n id=\"{{ label() }}-readonly-input-text\" />\n </mat-form-field>\n</div>\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { computed, inject, Injectable, Injector, ResourceRef, Signal, signal, untracked } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport {\n AlertLevel,\n API_URL,\n ColumnConfig,\n CreateNotificationMessage,\n FieldName,\n FieldSort,\n METHOD_META,\n RecordData,\n Resource,\n ResourceMeta,\n RPCConfig,\n} from '@cccteam/ccc-lib/src/types';\nimport { NotificationService } from '@cccteam/ccc-lib/src/ui-notification-service';\nimport { Observable, of, tap } from 'rxjs';\nimport { Operation } from './resources-helpers';\n\n@Injectable()\nexport class ResourceStore {\n resourceMeta = signal({} as ResourceMeta);\n resourceName = signal<Resource>('' as Resource);\n filter = signal<string>('');\n disableCacheForFilterPii = signal(false);\n searchTokens = signal<string>('');\n sorts = signal<FieldSort[]>([]);\n listColumns = signal<ColumnConfig[]>([]);\n requireSearchToDisplayResults = signal(false);\n uuid = signal<string>('');\n error = signal<string>('');\n\n notifications = inject(NotificationService);\n http = inject(HttpClient);\n router = inject(Router);\n injector = inject(Injector);\n apiUrl = inject(API_URL);\n methodMeta = inject(METHOD_META);\n\n private resourceListRef = signal<ResourceRef<RecordData[]> | undefined>(undefined);\n listData = computed(() => {\n const ref = this.resourceListRef();\n if (ref && ref.status() === 'resolved') {\n return ref.value();\n }\n return [];\n });\n listStatus = computed(() => {\n return this.resourceListRef()?.status();\n });\n\n private resourceViewRef = signal<ResourceRef<RecordData> | undefined>(undefined);\n viewData = computed(() => {\n const ref = this.resourceViewRef();\n if (ref && ref.status() === 'resolved') {\n return ref.value();\n }\n return {} as RecordData;\n });\n viewStatus = computed(() => {\n return this.resourceViewRef()?.status();\n });\n\n overrideRoute = signal<string>('');\n resourceRoute = computed(() => this.resourceMeta()?.route);\n route = computed(() => {\n if (this.overrideRoute()) {\n return this.overrideRoute();\n }\n const route = this.resourceRoute();\n if (route) {\n return route;\n }\n return '';\n });\n\n reloadViewData(): void {\n this.resourceViewRef()?.reload();\n }\n\n reloadListData(): void {\n this.resourceListRef()?.reload();\n }\n\n buildStoreListData(): void {\n const route = this.route();\n const name = this.resourceName();\n if (!route || name === '') {\n return;\n }\n const columnIds = this.listColumns().flatMap((col) => {\n return [col.id];\n });\n const resourceMeta = this.resourceMeta();\n if (resourceMeta && resourceMeta.fields.some((field) => field.fieldName === 'id')) {\n columnIds.push('id' as FieldName);\n }\n const uniqueColumns = signal([...new Set([...columnIds])]);\n\n const ref = this.resourceList(\n this.route,\n this.filter,\n uniqueColumns,\n this.disableCacheForFilterPii,\n this.searchTokens,\n this.sorts,\n );\n this.resourceListRef.set(ref);\n this.reloadListData();\n }\n\n buildStoreViewData(): void {\n const route = this.route();\n const uuid = this.uuid();\n if (!route || !uuid || uuid === 'undefined') {\n return;\n }\n\n const ref = this.resourceView(this.route, this.uuid);\n this.resourceViewRef.set(ref);\n this.reloadListData();\n }\n\n routes = {\n resources: (rootUrl: string, resources: string): string => `${rootUrl}/${resources}`,\n resource: (rootUrl: string, resources: string, uuid: string): string => `${rootUrl}/${resources}/${uuid}`,\n method: (rootUrl: string, method: string): string => `${rootUrl}/${method}`,\n };\n\n makePatches(operations: Operation[], route: string, resource: Resource): Observable<Record<string, unknown>> {\n return this.patchMultiple(String(route), operations).pipe(\n tap(() => {\n this.notifications.addGlobalNotification({\n message: `${resource} updated successfully`,\n level: AlertLevel.SUCCESS,\n duration: 5000,\n link: '',\n } satisfies CreateNotificationMessage);\n }),\n );\n }\n\n createPatch(operation: Operation, route: string, resource: Resource): Observable<Record<string, unknown>> {\n return this.patchMultiple(String(route), [operation]).pipe(\n tap(() => {\n this.notifications.addGlobalNotification({\n message: `${resource} created successfully`,\n level: AlertLevel.SUCCESS,\n duration: 5000,\n link: '',\n } satisfies CreateNotificationMessage);\n }),\n );\n }\n\n private patchMultiple(resourceRoute: string, data: Operation[]): Observable<Record<string, unknown>> {\n return this.http.patch<Record<string, unknown>>(this.routes.resources(this.apiUrl, resourceRoute), data);\n }\n\n resourceView(route: Signal<string>, uuid: Signal<string>): ResourceRef<RecordData> {\n return untracked(\n () =>\n rxResource({\n injector: this.injector,\n params: () => ({\n route: route,\n uuid: uuid,\n }),\n stream: ({ params }) => {\n if (!params.route() || !params.uuid() || params.uuid() === 'undefined') return of({} as RecordData);\n return this.http.get<RecordData>(\n this.routes.resource(this.apiUrl, String(params.route()), params.uuid() || ''),\n );\n },\n }) as ResourceRef<RecordData>,\n );\n }\n\n resourceList(\n route: Signal<string>,\n filter: Signal<string> = signal(''),\n columns: Signal<string[]> = signal([]),\n disableCacheForFilterPii: Signal<boolean> = signal(false),\n searchTokens: Signal<string> = signal(''),\n sorts: Signal<FieldSort[]> = signal([]),\n defaultEmpty = false,\n ): ResourceRef<RecordData[]> {\n return untracked(() => {\n return rxResource({\n defaultValue: [] as RecordData[],\n injector: this.injector,\n params: () => ({\n route: route(),\n filter: filter(),\n columns: columns(),\n searchTokens: searchTokens(),\n sorts: sorts(),\n }),\n stream: ({ params }) => {\n if (!params.route) return of([] as RecordData[]);\n if (defaultEmpty && (!params.searchTokens || params.searchTokens.trim() === '')) {\n return of([] as RecordData[]);\n }\n return this.list<RecordData>(\n String(params.route),\n params.filter,\n disableCacheForFilterPii(),\n params.columns,\n params.searchTokens,\n params.sorts,\n );\n },\n }) as ResourceRef<RecordData[]>;\n });\n }\n\n private list<T>(\n resourceRoute: string,\n filter?: string,\n disableCacheForFilterPii?: boolean,\n columns?: string[],\n searchTokens?: string,\n sort?: FieldSort[],\n ): Observable<T[]> {\n const paramsObj: Record<string, string> = {};\n if (filter && filter.trim() !== '') paramsObj['filter'] = filter;\n if (columns && columns.length > 0) paramsObj['columns'] = columns.join(',');\n if (searchTokens && searchTokens.trim() !== '') paramsObj['SearchTokens'] = searchTokens;\n if (sort && sort.length > 0) {\n paramsObj['sort'] = sort.map((s) => `${s.field}:${s.direction}`).join(',');\n }\n const params = new HttpParams({ fromObject: paramsObj });\n if (disableCacheForFilterPii) {\n const paramsObjWithoutFilter = { ...paramsObj };\n delete paramsObjWithoutFilter['filter'];\n return this.http.post<T[]>(\n this.routes.resources(this.apiUrl, resourceRoute),\n { filter: filter },\n paramsObjWithoutFilter,\n );\n }\n return this.http.get<T[]>(this.routes.resources(this.apiUrl, resourceRoute), { params });\n }\n\n rpcCall<T>(rpcConfig: RPCConfig, body: T): Observable<T> {\n const methodData = this.methodMeta(rpcConfig.method);\n if (!methodData) {\n console.error('Method not found in methodMap:', rpcConfig.method);\n return of({} as T);\n }\n\n return this.http.post<T>(this.routes.method(this.apiUrl, methodData.route), body).pipe(\n tap(() => {\n this.notifications.addGlobalNotification({\n message: rpcConfig.successMessage ? rpcConfig.successMessage : `${rpcConfig.method} called successfully`,\n level: AlertLevel.SUCCESS,\n duration: 5000,\n link: '',\n } satisfies CreateNotificationMessage);\n if (rpcConfig.afterMethodRedirect) {\n if (typeof rpcConfig.afterMethodRedirect === 'string') {\n this.router.navigate([rpcConfig.afterMethodRedirect]);\n } else {\n this.router.navigate(rpcConfig.afterMethodRedirect);\n }\n }\n }),\n );\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormStateService {\n dirtyForms = signal(0);\n\n incrementDirtyForms(): void {\n this.dirtyForms.set(this.dirtyForms() + 1);\n }\n\n decrementDirtyForms(): void {\n this.dirtyForms.set(this.dirtyForms() - 1);\n }\n\n resetDirtyForms(): void {\n this.dirtyForms.set(0);\n }\n\n isDirty = computed(() => {\n return this.dirtyForms() > 0;\n });\n}\n","import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogActions, MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\n@Component({\n selector: 'ccc-leave-page-confirmation-modal',\n imports: [MatDialogModule, MatFormFieldModule, MatDialogActions, MatButtonModule],\n templateUrl: './leave-page-confirmation-modal.component.html',\n styleUrls: ['./leave-page-confirmation-modal.component.scss'],\n})\nexport class LeavePageConfirmationModalComponent {}\n","<div mat-dialog-title>You have unsaved changes, are you sure you want to leave?</div>\n<mat-dialog-content>\n <p>Any unsaved changes will be lost.</p>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-raised-button color=\"warn\" [mat-dialog-close]=\"false\">Cancel</button>\n <button mat-raised-button color=\"accent\" [mat-dialog-close]=\"true\">Confirm</button>\n</mat-dialog-actions>\n","import { inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CanDeactivateFn, UrlTree } from '@angular/router';\nimport { AuthService } from '@cccteam/ccc-lib/src/auth-service';\nimport { firstValueFrom, Observable, tap } from 'rxjs';\nimport { FormStateService } from './form-state.service';\nimport { LeavePageConfirmationModalComponent } from './leave-page-confirmation-modal/leave-page-confirmation-modal.component';\n\nexport type CanDeactivateType = Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;\n\nexport interface CanComponentDeactivate {\n canDeactivate: () => CanDeactivateType;\n}\n\nexport const canDeactivateGuard: CanDeactivateFn<CanComponentDeactivate> = async (_, __, ___, nextState) => {\n const auth = inject(AuthService);\n const dialog = inject(MatDialog);\n const formStateService = inject(FormStateService);\n\n if (nextState?.url.includes(auth.loginRoute())) {\n return true;\n }\n\n if (!formStateService.isDirty()) {\n return true;\n }\n\n const existingDialog = dialog.openDialogs.find(\n (d) => d.componentInstance instanceof LeavePageConfirmationModalComponent,\n );\n\n const dialogRef = existingDialog ?? dialog.open(LeavePageConfirmationModalComponent, { delayFocusTrap: false });\n\n const result = dialogRef.afterClosed().pipe(\n tap((value) => {\n if (value === true) {\n formStateService.resetDirtyForms();\n }\n }),\n );\n\n return firstValueFrom(result);\n};\n","import { ModelSignal } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Route } from '@angular/router';\nimport {\n ConfigElement,\n DataType,\n FieldElement,\n MenuItem,\n MethodMeta,\n RecordData,\n Resource,\n ResourceMeta,\n RootConfig,\n RouteResourceData,\n RPCRecordData,\n ViewConfig\n} from '@cccteam/ccc-lib/src/types';\nimport { format, isValid } from 'date-fns';\nimport { canDeactivateGuard } from './can-deactivate.guard';\nimport { civildateCoercion, flattenElements } from './gui-constants';\n\nexport const generatedNavItems = [] as MenuItem[];\nexport const generatedNavGroups = [] as string[];\n\nexport interface Link {\n id: string;\n resource: Resource;\n text: string;\n}\n\nexport type ResourceMap = Record<Resource, ResourceMeta>;\n\nexport type PristineData = Record<string, DataType | null>;\n\nexport const createFormGroup = (\n meta: ResourceMeta,\n resourceData: RecordData,\n config: ViewConfig,\n formDataState?: ModelSignal<RecordData>,\n): {\n formGroup: FormGroup;\n pristineFormValues: PristineData;\n} => {\n const fg = new FormGroup({});\n const pristineValues: Record<string, DataType | null> = {};\n const allElements = flattenElements(config.elements);\n\n for (const field of meta.fields || []) {\n const isFieldNameRegistered = fg.get(field.fieldName) !== null;\n if (isFieldNameRegistered) {\n continue;\n }\n\n const findConfig = allElements.find((element) => element.type === 'field' && element.name === field.fieldName);\n const fieldConfig = findConfig as FieldElement | undefined;\n if (!fieldConfig) {\n continue;\n }\n\n let value: DataType | null = null;\n const stringValue = resourceData?.[field.fieldName] ? String(resourceData[field.fieldName]) : '';\n\n if (field.displayType === 'civildate' && stringValue) {\n value = civildateCoercion(stringValue);\n } else if (resourceData[field.fieldName] !== undefined) {\n value = resourceData[field.fieldName];\n }\n\n const control = new FormControl(value);\n\n if (fieldConfig.validators.length > 0) {\n control.setValidators(fieldConfig.validators);\n }\n\n fg.addControl(field.fieldName, control);\n pristineValues[field.fieldName] = value;\n }\n // todo: swap this with a manual subscription where the form data is subscribed to and\n // is dstroyed once the form is destroyed, similar to gui/src/app/components/Resource/resource-view/resource-view.component.ts\n // constructor effect\n console.debug(formDataState);\n // formDataState && formDataState.set(pristineValues);\n\n return {\n formGroup: fg,\n pristineFormValues: pristineValues,\n };\n};\n\nexport const resourceRoutes = (config: RootConfig, resourceMeta: (resource: Resource) => ResourceMeta): Route => {\n const meta = resourceMeta(config.parentConfig.primaryResource as Resource);\n if (!meta) {\n return {} as Route;\n }\n\n if (config.nav.group) {\n if (config.routeData.route) {\n addToNavItems(config.nav, config.routeData.route);\n } else {\n addToNavItems(config.nav, meta.route);\n }\n }\n\n if (config.routeData.route) {\n const baseRoute: Route = {\n path: config.routeData.route,\n data: { config: config } satisfies RouteResourceData,\n children: [\n {\n path: '',\n loadComponent: () => import('./resource-list-create/resource-list-create.component').then((mod) => mod.ResourceListCreateComponent),\n canDeactivate: [canDeactivateGuard],\n },\n ],\n };\n if (config.routeData.hasViewRoute !== false) {\n baseRoute.children?.push({\n path: ':uuid',\n loadComponent: () => import('./compound-resource/compound-resource.component').then((mod) => mod.CompoundResourceComponent),\n canDeactivate: [canDeactivateGuard],\n });\n return baseRoute;\n }\n }\n\n return {\n path: meta.route,\n data: { config: config } as RouteResourceData,\n children: [\n {\n path: ':uuid',\n loadComponent: () => import('./compound-resource/compound-resource.component').then((mod) => mod.CompoundResourceComponent),\n canDeactivate: [canDeactivateGuard],\n },\n {\n path: '',\n loadComponent: () => import('./resource-list-create/resource-list-create.component').then((mod) => mod.ResourceListCreateComponent),\n canDeactivate: [canDeactivateGuard],\n },\n ],\n } satisfies Route;\n};\n\nfunction addToNavItems(\n nav: {\n navItem: MenuItem;\n group?: string;\n },\n route: string,\n): void {\n nav.navItem.route = [route];\n\n if (!nav.group) {\n generatedNavItems.push(nav.navItem);\n return;\n }\n\n if (!generatedNavGroups.includes(nav.group)) {\n generatedNavGroups.push(nav.group);\n }\n\n let groupItem = generatedNavItems.find((item) => item.label === nav.group);\n\n if (!groupItem) {\n groupItem = { label: nav.group, children: [] };\n generatedNavItems.push(groupItem);\n }\n\n groupItem.children = groupItem.children || [];\n groupItem.children.push(nav.navItem);\n\n generatedNavItems.sort((a, b) => (a.label > b.label ? -1 : 1));\n}\n\n/**\n * Recursive function to extract nested field names from a config.\n * @param elements - The elements to extract field names from.\n * @returns - An array of field names.\n */\nexport function extractFieldNames(elements: ConfigElement[]): string[] {\n const fields: string[] = [];\n for (const element of elements) {\n if (element.type === 'section') {\n fields.push(...extractFieldNames(element.children));\n } else if (element.type === 'field') {\n fields.push(element.name as string);\n }\n }\n return fields;\n}\n\nexport type PatchOperation = 'add' | 'patch' | 'remove';\n\nexport interface Operation {\n op: PatchOperation;\n value?: Record<string, unknown>;\n path: string;\n}\n\nexport interface CreateOperation extends Operation {\n op: 'add';\n}\n\nexport interface UpdateOperation extends Operation {\n op: 'patch';\n}\n\nexport interface DeleteOperation extends Operation {\n op: 'remove';\n}\n\n/**\n * Checks if a string is a valid UUID (versions 1-5) according to RFC 4122.\n *\n * @param str - The string to validate.\n * @returns `true` if the string is a valid UUID, otherwise `false`.\n */\nexport function isUUID(str: string): boolean {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(str);\n}\n\n/**\n * Coerces metadata types in a record according to the metadata.\n *\n * @param record - The record to coerce.\n * @param meta - The metadata (resource or method).\n * @returns The coerced record.\n */\nexport function metadataTypeCoercion(record: RecordData, meta: ResourceMeta): RecordData;\nexport function metadataTypeCoercion(record: RPCRecordData, meta: MethodMeta): RPCRecordData;\nexport function metadataTypeCoercion(\n record: RecordData | RPCRecordData,\n meta: ResourceMeta | MethodMeta,\n): RecordData | RPCRecordData {\n if (!meta?.fields) return record;\n\n const displayTypeByField = new Map(meta.fields.map((f) => [f.fieldName, f.displayType]));\n\n for (const [key, value] of Object.entries(record)) {\n const displayType = displayTypeByField.get(key);\n if (displayType === 'civildate' && value && isValid(value)) {\n const date = value as Date;\n record[key] = format(date, 'yyyy-MM-dd');\n }\n }\n\n return record;\n}\n","import { computed, Directive, inject, Injector, input, ResourceRef, signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n DataType,\n FieldElement,\n FieldMeta,\n Meta,\n RecordData,\n RESOURCE_META,\n RPCFieldMeta,\n} from '@cccteam/ccc-lib/src/types';\nimport { ResourceStore } from '../resource-store.service';\nimport { isUUID } from '../resources-helpers';\n/*\n * Base class for all resource input components.\n */\n@Directive()\nexport abstract class BaseInputComponent {\n resourceMeta = inject(RESOURCE_META);\n injector = inject(Injector);\n store = inject(ResourceStore);\n\n meta = input.required<Meta>();\n pristineValue = input<DataType | null>();\n editMode = input.required<'edit' | 'view'>();\n showField = input<boolean>();\n fieldConfig = input.required<FieldElement>();\n fieldClass = input<string>();\n fieldMeta = input.required<FieldMeta | RPCFieldMeta>();\n form = input.required<FormGroup>();\n relatedData = input<RecordData>();\n\n /**\n * Resets the field back to its pristine value.\n */\n reset(): void {\n const control = this.form().get(this.fieldConfig().name as string);\n if (control) {\n control.setValue(this.pristineValue());\n control.markAsPristine();\n }\n }\n\n private affixResources = new Map<string, ResourceRef<RecordData>>();\n\n prefixString = computed(() => {\n const relatedData = this.relatedData();\n let builtPrefix = '';\n this.fieldConfig().prefixes.forEach((prefix) => {\n if (typeof prefix === 'string') {\n builtPrefix += prefix;\n } else if ('resource' in prefix) {\n if (!relatedData || !relatedData[prefix.id]) {\n return;\n }\n const id = relatedData[prefix.id];\n if (typeof id !== 'string' || !id || !isUUID(id)) {\n return;\n }\n\n const cacheKey = `${prefix.resource}-${id}`;\n let resourceRef = this.affixResources.get(cacheKey);\n\n if (!resourceRef) {\n const prefixResourceMeta = this.resourceMeta(prefix.resource);\n resourceRef = this.store.resourceView(signal(prefixResourceMeta.route), signal(id));\n this.affixResources.set(cacheKey, resourceRef!);\n }\n\n const resource = resourceRef.value();\n if (resource && prefix.field in resource) {\n builtPrefix += resource[String(prefix.field)];\n }\n } else if ('field' in prefix) {\n if (relatedData) {\n const fieldValue = relatedData[prefix.field];\n builtPrefix += fieldValue ? fieldValue : '';\n }\n }\n });\n return builtPrefix;\n });\n\n suffixString = computed(() => {\n const relatedData = this.relatedData();\n let builtSuffix = '';\n this.fieldConfig().suffixes.forEach((suffix) => {\n if (typeof suffix === 'string') {\n builtSuffix += suffix;\n } else if ('resource' in suffix) {\n if (!relatedData || !relatedData[suffix.id]) {\n return;\n }\n const id = relatedData[suffix.id];\n if (typeof id !== 'string' || !id || !isUUID(id)) {\n return;\n }\n\n const cacheKey = `${suffix.resource}-${id}`;\n let resourceRef = this.affixResources.get(cacheKey);\n\n if (!resourceRef) {\n const suffixResourceMeta = this.resourceMeta(suffix.resource);\n resourceRef = this.store.resourceView(signal(suffixResourceMeta.route), signal(id));\n this.affixResources.set(cacheKey, resourceRef!);\n }\n\n const resource = resourceRef.value();\n if (resource && suffix.field in resource) {\n builtSuffix += resource[suffix.field];\n }\n } else if ('field' in suffix) {\n if (relatedData) {\n const fieldValue = relatedData[suffix.field];\n builtSuffix += fieldValue ? fieldValue : '';\n }\n }\n });\n return builtSuffix;\n });\n\n floatLabel = computed(() => {\n if (this.fieldConfig().prefixes.length > 0 || this.fieldConfig().suffixes.length > 0) {\n return 'always';\n } else {\n return 'auto';\n }\n });\n}\n","import { Component } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { BaseInputComponent } from '../../base-field.directive';\n\n@Component({\n selector: 'ccc-boolean-field',\n imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, ReactiveFormsModule, MatCheckboxModule],\n templateUrl: './boolean-field.component.html',\n styleUrl: './boolean-field.component.scss',\n})\nexport class BooleanFieldComponent extends BaseInputComponent {}\n","@if (showField()) {\n <ng-container [formGroup]=\"form()\">\n <div [class.readonly-field]=\"editMode() === 'view'\">\n <mat-checkbox\n class=\"field checkbox {{ fieldClass() }}\"\n [formControlName]=\"fieldConfig().name\"\n (keydown.enter)=\"$event.preventDefault()\">\n {{ fieldConfig().label }}\n </mat-checkbox>\n </div>\n </ng-container>\n} @else {\n <ng-container [formGroup]=\"form()\">\n <input type=\"hidden\" [formControlName]=\"fieldConfig().name\" />\n </ng-container>\n}\n","import { Component } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { BaseInputComponent } from '../../base-field.directive';\n\n@Component({\n selector: 'ccc-date-field',\n imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, ReactiveFormsModule],\n templateUrl: './date-field.component.html',\n styleUrl: './date-field.component.scss',\n})\nexport class DateFieldComponent extends BaseInputComponent {}\n","@if (showField()) {\n <div [class.readonly-field]=\"editMode() === 'view'\">\n <mat-form-field class=\"field {{ fieldClass() }}\" [formGroup]=\"form()\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ fieldConfig().label }}</mat-label>\n <input\n matInput\n [readonly]=\"editMode() === 'view'\"\n [matDatepicker]=\"picker\"\n type=\"text\"\n (keydown.enter)=\"$event.preventDefault()\"\n [formControlName]=\"fieldConfig().name\" />\n @if (editMode() === 'edit') {\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n }\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n} @else {\n <ng-container [formGroup]=\"form()\">\n <input type=\"hidden\" [formControlName]=\"fieldConfig().name\" />\n </ng-container>\n}\n","export const concatFunctions = {\n 'space-concat': spaceConcat,\n 'hyphen-concat': hyphenConcat,\n 'space-hyphen-concat': spaceHyphenConcat,\n 'hyphen-space-concat': hyphenSpaceConcat,\n};\n\n/**\n * Concatenates the strings corresponding to the given keys in the resource,\n * using a space separator.\n * @param resource A record mapping keys to string values.\n * @param args Keys of the resource to concatenate.\n * @returns Concatenated string.\n * @example\n * const resource = { foo: 'foo', bar: 'bar', baz: 'baz' };\n * spaceConcat(resource, 'foo', 'bar', 'baz'); // returns 'foo bar baz'\n */\nexport function spaceConcat(resource: Record<string, string>, ...args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return resource[args[0] ?? ''] ?? '';\n return args.map((arg) => resource[arg] ?? '').join(' ');\n}\n\n/**\n * Concatenates the strings corresponding to the given keys in the resource,\n * using a hyphen separator.\n * @param resource A record mapping keys to string values.\n * @param args Keys of the resource to concatenate.\n * @returns Concatenated string.\n * @example\n * const resource = { foo: 'foo', bar: 'bar', baz: 'baz' };\n * hyphenConcat(resource, 'foo', 'bar', 'baz'); // returns 'foo - bar - baz'\n */\nexport function hyphenConcat(resource: Record<string, string>, ...args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return resource[args[0] ?? ''] ?? '';\n return args.map((arg) => resource[arg] ?? '').join(' - ');\n}\n\n/**\n * Concatenates the given strings so that all but the last are joined with a space,\n * and the last string is appended with a \" - \" separator.\n * @param resource A mapping of keys to string values.\n * @param args Keys of strings to concatenate.\n * @returns Concatenated string.\n * @example spaceHyphenConcat(resource, 'foo', 'bar', 'baz') => 'foo bar - baz'\n */\nexport function spaceHyphenConcat(resource: Record<string, string>, ...args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return resource[args[0] || ''] || '';\n\n const initialPart = args\n .slice(0, -1)\n .map((arg) => resource[arg] || '')\n .join(' ');\n\n const lastPart = resource[args[args.length - 1] || ''] || '';\n\n return `${initialPart} - ${lastPart}`;\n}\n\n/**\n * Concatenates the given strings so that all but the first are joined with a space,\n * and the first string is appended with a \" - \" separator.\n * @param resource A mapping of keys to string values.\n * @param args Keys of strings to concatenate.\n * @returns Concatenated string.\n * @example spaceHyphenConcat(resource, 'foo', 'bar', 'baz') => 'foo - bar baz'\n */\nexport function hyphenSpaceConcat(resource: Record<string, string>, ...args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return resource[args[0] || ''] || '';\n\n const initialPart = args[0] !== undefined ? resource[args[0]] || '' : '';\n\n const lastPart = args\n .slice(1, args.length)\n .map((arg) => resource[arg] || '')\n .join(' ');\n\n return `${initialPart} - ${lastPart}`;\n}\n\n/**\n * Concatenates the strings using a space separator.\n * @param args Strings to concatenate.\n * @returns Concatenated string.\n * @example\n * spaceConcatWithoutResource(['foo', 'bar', 'baz']); // returns 'foo bar baz'\n */\nexport function spaceConcatWithoutResource(args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return args[0] ?? '';\n return args.map((arg) => arg ?? '').join(' ');\n}\n\n/**\n * Concatenates the strings using a hyphen separator.\n * @param args Strings to concatenate.\n * @returns Concatenated string.\n * @example\n * hyphenConcatWithoutResource(['foo', 'bar', 'baz']); // returns 'foo - bar - baz'\n */\nexport function hyphenConcatWithoutResource(args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return args[0] || '';\n return args.join(' - ');\n}\n\n/**\n * Concatenates the given strings so that all but the last are joined with a space,\n * and the last string is appended with a \" - \" separator.\n * @param args Strings to concatenate.\n * @returns Concatenated string.\n * @example spaceHyphenConcatWithoutResource(['foo', 'bar', 'baz']) => 'foo bar - baz'\n */\nexport function spaceHyphenConcatWithoutResource(args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return args[0] || '';\n\n const initialPart = args\n .slice(0, -1)\n .map((arg) => arg || '')\n .join(' ');\n\n const lastPart = args[args.length - 1] || '';\n\n return `${initialPart} - ${lastPart}`;\n}\n\n/**\n * Concatenates the given strings so that all but the first are joined with a space,\n * and the first string is appended with a \" - \" separator.\n * @param args Strings to concatenate.\n * @returns Concatenated string.\n * @example hyphenSpaceConcatWithoutResource(['foo', 'bar', 'baz']) => 'foo - bar baz'\n */\nexport function hyphenSpaceConcatWithoutResource(args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return args[0] || '';\n\n const initialPart = args[0] || '';\n\n const lastPart = args\n .slice(1, args.length)\n .map((arg) => arg || '')\n .join(' ');\n\n return `${initialPart} - ${lastPart}`;\n}\n\n/**\n * Concatenates the given strings without any space,\n * @param args Strings to concatenate.\n * @returns Concatenated string.\n * @example noSpaceConcatWithoutResource(['foo', 'bar', 'baz']) => 'foobarbaz'\n */\nexport function noSpaceConcatWithoutResource(args: string[]): string {\n if (args.length === 0) return '';\n if (args.length === 1) return args[0] || '';\n return args.join('');\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, signal, untracked } from '@angular/core';\nimport { ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { defaultEmptyFieldValue, EnumeratedConfig, FieldElement, Resource, RootConfig } from '@cccteam/ccc-lib/src/types';\nimport { concatFunctions, hyphenConcat } from '../../../../ccc-resource/concat-fns';\nimport { BaseInputComponent } from '../../base-field.directive';\n\n@Component({\n selector: 'ccc-enumerated-field',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n ReactiveFormsModule,\n MatOptionModule,\n MatSelectModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n RouterModule,\n MatAutocompleteModule,\n ],\n templateUrl: './enumerated-field.component.html',\n styleUrl: './enumerated-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnumeratedFieldComponent extends BaseInputComponent {\n activatedRoute = inject(ActivatedRoute);\n router = inject(Router);\n reloadSignal = signal(false);\n\n query = signal('');\n\n resource = computed(() => {\n if (this.fieldConfig()?.enumeratedConfig?.overrideResource) {\n return this.fieldConfig()?.enumeratedConfig?.overrideResource;\n }\n return this.fieldMeta()?.enumeratedResource as Resource;\n });\n\n tooltipMessage = computed(() => {\n const label = this.fieldConfig().label;\n return 'View ' + label + ' details';\n });\n\n route = computed(() => {\n const resource = this.fieldMeta()?.enumeratedResource;\n return this.resourceMeta(resource as Resource)?.route;\n });\n\n viewDetails = computed(() => {\n return this.editMode() === 'view' && this.fieldConfig().enumeratedConfig.viewDetails === true;\n });\n\n sorts = computed(() => {\n return this.fieldConfig().enumeratedConfig.sorts;\n });\n\n singleEnumResourceRef = computed(() => {\n this.editMode();\n if (this.showField() === false) {\n return undefined;\n }\n\n const route = this.route();\n const resource = this.resource();\n\n this.reloadSignal();\n const fieldValue = this.form().get(this.fieldConfig().name)?.value;\n\n if (fieldValue && route && resource) {\n return untracked(() => this.store.resourceView(this.route, signal(fieldValue)));\n }\n return undefined;\n });\n\n rootResourceRef = computed(() => {\n const rootConfig = this.activatedRoute.snapshot.data['config'] as RootConfig;\n const uuid = (this.activatedRoute.snapshot.params['uuid'] || '') as string;\n const rootMeta = this.resourceMeta(rootConfig.parentConfig.primaryResource);\n return this.store.resourceView(signal(rootMeta.route), signal(uuid));\n });\n\n enumResourceRef = computed(() => {\n if (this.showField() === false) return undefined;\n const enumeratedMeta = this.resourceMeta(this.resource() as Resource);\n const config = this.fieldConfig().enumeratedConfig;\n const filter =\n config.filterType === 'rootResource'\n ? config?.filter?.(this.rootResourceRef()?.value() || {})\n : config?.filter?.(this.relatedData() || {});\n return this.store.resourceList(\n signal(enumeratedMeta.route),\n signal(filter),\n signal([]),\n signal(config.disableCacheForFilterPii),\n this.query,\n this.sorts,\n );\n });\n\n singleEnumDisplayText = computed(() => {\n const showField = this.showField();\n if (showField === false) {\n return undefined;\n }\n\n const form = this.form();\n const fieldConfig = this.fieldConfig();\n const singleEnumResourceRef = this.singleEnumResourceRef();\n\n if (form === undefined || fieldConfig === undefined || singleEnumResourceRef === undefined) {\n return defaultEmptyFieldValue;\n }\n\n const record = singleEnumResourceRef.value();\n if (record === undefined) {\n return defaultEmptyFieldValue;\n }\n\n const enumeratedValues = this.toEnumerated(record as Record<string, string>, fieldConfig);\n return enumeratedValues.display;\n });\n\n hasRequiredValidator = computed(() => {\n const form = this.form();\n const fieldConfig = this.fieldConfig();\n\n if (form === undefined || fieldConfig === undefined) {\n return false;\n }\n\n const control = form.get(fieldConfig.name);\n if (!control) {\n return false;\n }\n\n return control.hasValidator(Validators.required);\n });\n\n singleEnumValue = computed(() => {\n if (this.showField() === false) return undefined;\n const currentValue = this.form().get(this.fieldConfig().name)?.value;\n const record = this.singleEnumResourceRef()?.value();\n if (!currentValue) return [];\n if (!record) return [];\n return [this.toEnumerated(record as Record<string, string>, this.fieldConfig())];\n });\n\n listEnumValues = computed(() => {\n if (this.showField() === false) return [];\n const currentValue = this.singleEnumValue();\n const records = this.enumResourceRef()?.value();\n if (!records || !records.length) return currentValue || [];\n return records.map((record) => this.toEnumerated(record as Record<string, string>, this.fieldConfig()));\n });\n\n availableEnumOptions = computed(() => {\n if (this.editMode() === 'edit') {\n return this.listEnumValues();\n }\n return this.singleEnumValue();\n });\n\n toEnumerated(resource: Record<string, string>, element: FieldElement): { id: string; display: string } {\n const enumeratedConfig = element.enumeratedConfig as EnumeratedConfig;\n const displayFields =\n this.editMode() === 'edit' && enumeratedConfig.listDisplay.length > 0\n ? enumeratedConfig.listDisplay\n : enumeratedConfig.viewDisplay;\n const concat =\n this.editMode() === 'edit'\n ? enumeratedConfig.listConcatFn || enumeratedConfig.viewConcatFn\n : enumeratedConfig.viewConcatFn;\n\n const concatFunction = concatFunctions[concat] || hyphenConcat;\n\n return {\n id: resource['id'] ?? '',\n display: concatFunction(resource, ...displayFields),\n };\n }\n\n getDisplayText = (value: string | Record<string, string> | null): string => {\n if (!value) return '';\n\n if (typeof value === 'string') {\n const option = this.availableEnumOptions()?.find((o) => o.id === value);\n return option ? option['display'] || this.formatDisplay(option) : '';\n }\n\n return value['display'] || this.formatDisplay(value);\n };\n\n private formatDisplay(resource: Record<string, string>): string {\n return this.toEnumerated(resource, this.fieldConfig()).display;\n }\n\n search(value: string): void {\n this.query.set(value);\n }\n\n select(value: string): void {\n this.form().patchValue({ [this.fieldConfig().name]: value });\n this.form().markAsDirty();\n this.form().markAsTouched();\n this.reloadSignal.update((prev) => !prev);\n }\n}\n","<ng-container [formGroup]=\"form()\">\n @if (showField()) {\n @let options = availableEnumOptions();\n @if (editMode() === 'edit') {\n <div class=\"enumerated-field-container\">\n <mat-form-field class=\"field {{ fieldClass() }}\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ fieldConfig().label }}</mat-label>\n @if (fieldConfig().enumeratedConfig.searchable) {\n <input\n #input\n type=\"text\"\n placeholder=\"Search\"\n matInput\n [matAutocomplete]=\"auto\"\n [formControlName]=\"fieldConfig().name\"\n (input)=\"search(input.value)\" />\n <mat-autocomplete\n (optionSelected)=\"select($event.option.value)\"\n #auto=\"matAutocomplete\"\n [displayWith]=\"getDisplayText\">\n @for (option of options; track option.id) {\n <mat-option [value]=\"option.id\">{{ option?.display }}</mat-option>\n }\n </mat-autocomplete>\n } @else {\n <mat-select\n [formControlName]=\"fieldConfig().name\"\n (keydown.enter)=\"$event.preventDefault()\"\n (selectionChange)=\"select($event.value)\"\n [ariaReadOnly]=\"editMode() === 'view'\">\n @for (option of options; track option.id) {\n @if (option?.id === form().get(this.fieldConfig().name)?.value) {\n <mat-option [value]=\"option?.id\" selected>{{ option?.display }}</mat-option>\n } @else {\n <mat-option [value]=\"option?.id\">{{ option?.display }}</mat-option>\n }\n }\n </mat-select>\n }\n </mat-form-field>\n </div>\n } @else {\n <div class=\"enumerated-field-container readonly-field\">\n <mat-form-field class=\"field {{ fieldClass() }}\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ fieldConfig().label }}</mat-label>\n <input\n id=\"{{ fieldConfig().name }}-readonly-input-text\"\n matInput\n (keydown.enter)=\"$event.preventDefault()\"\n [readonly]=\"true\"\n type=\"text\"\n [required]=\"hasRequiredValidator()\"\n [value]=\"singleEnumDisplayText()\" />\n </mat-form-field>\n @if (viewDetails()) {\n <a\n mat-icon-button\n color=\"accent\"\n [matTooltip]=\"tooltipMessage()\"\n matTooltipPosition=\"below\"\n [routerLink]=\"['/', route(), form().get(this.fieldConfig().name)?.value]\">\n <mat-icon>arrow_forward</mat-icon>\n </a>\n }\n </div>\n <input class=\"display-none\" [formControlName]=\"fieldConfig().name\" />\n }\n } @else {\n <input class=\"display-none\" [formControlName]=\"fieldConfig().name\" />\n }\n</ng-container>\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterModule } from '@angular/router';\nimport { NullBoolean } from '@cccteam/ccc-lib/src/types';\nimport { BaseInputComponent } from '../../base-field.directive';\n\n@Component({\n selector: 'ccc-nullboolean-field',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n ReactiveFormsModule,\n MatOptionModule,\n MatSelectModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n RouterModule,\n MatAutocompleteModule,\n ],\n templateUrl: './nullboolean-field.component.html',\n styleUrl: './nullboolean-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NullBooleanFieldComponent extends BaseInputComponent {\n availableEnumOptions = computed(() => {\n const fieldConfig = this.fieldConfig();\n if (fieldConfig === undefined) {\n return;\n }\n const valueMap = new Map<NullBoolean, string>();\n\n Object.values(fieldConfig.nullBooleanConfig.displayValues).forEach((value) => {\n valueMap.set(value.value, value.label);\n });\n\n return valueMap;\n });\n\n currentValue = computed(() => {\n const form = this.form();\n const fieldConfig = this.fieldConfig();\n\n if (form === undefined || fieldConfig === undefined) {\n return;\n }\n\n return form.get(fieldConfig.name)?.value;\n });\n\n currentDisplayText = computed(() => {\n const value = this.currentValue();\n const availableOptions = this.availableEnumOptions();\n\n if (availableOptions === undefined || value === undefined) {\n return;\n }\n\n return availableOptions.get(value);\n });\n\n hasRequiredValidator = computed(() => {\n const form = this.form();\n const fieldConfig = this.fieldConfig();\n\n if (form === undefined || fieldConfig === undefined) {\n return false;\n }\n\n const control = form.get(fieldConfig.name);\n if (control === null) {\n return false;\n }\n\n return control.hasValidator(Validators.required);\n });\n}\n","<ng-container [formGroup]=\"form()\">\n @if (showField()) {\n @let options = availableEnumOptions();\n @if (editMode() === 'edit') {\n <mat-form-field class=\"field {{ fieldClass() }}\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ fieldConfig().label }}</mat-label>\n <mat-select\n [formControlName]=\"fieldConfig().name\"\n (keydown.enter)=\"$event.preventDefault()\"\n [canSelectNullableOptions]=\"true\"\n [ariaReadOnly]=\"editMode() === 'view'\">\n @for (option of options; track option[0]) {\n @if (option[0] === currentValue()) {\n <mat-option [value]=\"option[0]\" selected>{{ option[1] }}</mat-option>\n } @else {\n <mat-option [value]=\"option[0]\">{{ option[1] }}</mat-option>\n }\n }\n </mat-select>\n </mat-form-field>\n } @else {\n <div class=\"readonly-field\">\n <mat-form-field class=\"field {{ fieldClass() }}\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ fieldConfig().label }}</mat-label>\n <input\n matInput\n (keydown.enter)=\"$event.preventDefault()\"\n [readonly]=\"true\"\n type=\"text\"\n [required]=\"hasRequiredValidator()\"\n [value]=\"currentDisplayText()\" />\n </mat-form-field>\n </div>\n }\n } @else {\n <input class=\"display-none\" [formControlName]=\"fieldConfig().name\" />\n }\n</ng-container>\n","import { Component } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { BaseInputComponent } from '../../base-field.directive';\n\n@Component({\n selector: 'ccc-number-field',\n imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, ReactiveFormsModule],\n templateUrl: './number-field.component.html',\n styleUrl: './number-field.component.scss',\n})\nexport class NumberFieldComponent extends BaseInputComponent {}\n","@if (showField()) {\n <div [class.readonly-field]=\"editMode() === 'view'\">\n <mat-form-field\n class=\"field {{ fieldClass() }}\"\n [formGroup]=\"form()\"\n [subscriptSizing]=\"'dynamic'\"\n [floatLabel]=\"floatLabel()\">\n <mat-label>{{ fieldConfig().label }}</mat-label>\n <span matTextPrefix class=\"prefix\">{{ prefixString() }}</span>\n <span matTextSuffix class=\"suffix\">{{ suffixString() }}</span>\n <input\n matInput\n (keydown.enter)=\"$event.preventDefault()\"\n [readonly]=\"editMode() === 'view'\"\n type=\"number\"\n [formControlName]=\"fieldConfig().name\" />\n </mat-form-field>\n </div>\n} @else {\n <ng-container [formGroup]=\"form()\">\n <input type=\"hidden\" [formControlName]=\"fieldConfig().name\" />\n </ng-container>\n}\n","import { Component } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { BaseInputComponent } from '../../base-field.directive';\n\n@Component({\n selector: 'ccc-text-field',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n ReactiveFormsModule,\n MatIconModule,\n MatButtonModule,\n ],\n templateUrl: './text-field.component.html',\n styleUrl: './text-field.component.scss',\n})\nexport class TextFieldComponent extends BaseInputComponent {}\n","@if (showField()) {\n <div [class.readonly-field]=\"editMode() === 'view'\">\n <mat-form-field\n class=\"field {{ fieldClass() }}\"\n [formGroup]=\"form()\"\n [subscriptSizing]=\"'dynamic'\"\n [floatLabel]=\"floatLabel()\">\n <mat-label>{{ fieldConfig().label }}</mat-label>\n <span matTextPrefix class=\"prefix\">{{ prefixString() }}</span>\n <span matTextSuffix class=\"suffix\">{{ suffixString() }}</span>\n <input\n matInput\n (keydown.enter)=\"$event.preventDefault()\"\n [readonly]=\"editMode() === 'view'\"\n type=\"text\"\n [formControlName]=\"fieldConfig().name\"\n [class.dirty-input]=\"form().get(fieldConfig().name)?.dirty\" />\n @if (editMode() === 'edit' && form().get(fieldConfig().name)?.dirty) {\n <button matSuffix mat-icon-button (click)=\"reset()\" tabindex=\"-1\">\n <mat-icon>refresh</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n} @else {\n <ng-container [formGroup]=\"form()\">\n <input type=\"hidden\" [formControlName]=\"fieldConfig().name\" />\n </ng-container>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n HostBinding,\n input,\n Signal,\n untracked,\n} from '@angular/core';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { DataType, FieldElement, FieldMeta, Meta, RecordData, validatorsPresent, ValidDisplayTypes } from '@cccteam/ccc-lib/src/types';\nimport { EmptyReadonlyFieldComponent } from '../empty-readonly-field/empty-readonly-field.component';\nimport { BooleanFieldComponent } from './fields/boolean-field/boolean-field.component';\nimport { DateFieldComponent } from './fields/date-field/date-field.component';\nimport { EnumeratedFieldComponent } from './fields/enumerated-field/enumerated-field.component';\nimport { NullBooleanFieldComponent } from './fields/nullboolean-field/nullboolean-field.component';\nimport { NumberFieldComponent } from './fields/number-field/number-field.component';\nimport { TextFieldComponent } from './fields/text-field/text-field.component';\n\n@Component({\n selector: 'ccc-resource-field',\n imports: [\n DateFieldComponent,\n BooleanFieldComponent,\n TextFieldComponent,\n NumberFieldComponent,\n EnumeratedFieldComponent,\n MatFormFieldModule,\n EmptyReadonlyFieldComponent,\n NullBooleanFieldComponent,\n NgTemplateOutlet,\n ],\n templateUrl: './resource-field.component.html',\n styleUrl: './resource-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResourceFieldComponent {\n fieldConfig = input.required<FieldElement>();\n meta = input.required<Meta>();\n fieldClass = input<string>();\n editMode = input<'edit' | 'view'>('edit');\n form = input.required<FormGroup>();\n formDataState = input<RecordData>();\n pristineValue = input<DataType | null>();\n data = input<RecordData>();\n previouslyNulled: boolean | null = null;\n\n fieldMeta: Signal<FieldMeta> = computed(() => {\n return (\n (this.meta().fields?.find((field) => field.fieldName === this.fieldConfig().name) as FieldMeta) ||\n ({} as FieldMeta)\n );\n });\n\n mode = computed(() => {\n if (this.fieldConfig().readOnly) {\n return 'view';\n }\n return this.editMode();\n });\n\n showField = computed(() => {\n const shouldRender = this.fieldConfig().shouldRender;\n const conditionallyNull = this.fieldConfig().nullIfConditionallyHidden;\n const isForeignKeyDefault = this.fieldConfig().default?.type === 'foreignKey';\n\n if (typeof shouldRender === 'boolean') {\n return shouldRender && !isForeignKeyDefault;\n }\n const formValues = this.formDataState();\n if (!formValues) {\n return true;\n }\n\n console.debug('Field: ', this.fieldConfig().name, ' | Values to be used in showField calculation ', formValues);\n\n try {\n const showField = shouldRender(formValues) && !isForeignKeyDefault;\n\n if (!conditionallyNull) {\n return showField;\n }\n\n const formControlName = this.fieldConfig()?.name;\n const control = this.form()?.controls[formControlName];\n const pristineFieldValue = this.data()?.[formControlName];\n const previouslyNulled = this.previouslyNulled;\n\n untracked(() => {\n if (!showField && !previouslyNulled) {\n this.previouslyNulled = true;\n control?.setValue(null);\n }\n\n if (showField && previouslyNulled) {\n this.previouslyNulled = false;\n control?.setValue(pristineFieldValue);\n }\n });\n\n return showField;\n } catch (e) {\n console.error('Failed to calculate value for should Render function for field: ', this.fieldConfig().name);\n console.error(e);\n return true;\n }\n });\n\n showEmptyField = computed(() => {\n const editMode = this.mode();\n const showField = this.showField();\n\n if (!showField || editMode === 'edit') {\n return false;\n }\n\n const form = this.form();\n const config = this.fieldConfig();\n const meta = this.fieldMeta();\n if (form === undefined || config === undefined || meta === undefined) {\n return false;\n }\n\n if (meta.displayType === 'nullboolean') {\n return false;\n }\n\n const value = form.get(config.name)?.value;\n if (value === null || value === '') {\n return true;\n }\n\n return false;\n });\n\n @HostBinding('class') class = '';\n\n booleanEditDisplayType: Signal<BooleanDisplayTypes> = computed(() => {\n const fieldConfig = this.fieldConfig();\n const fieldMeta = this.fieldMeta();\n const form = this.form();\n\n if (fieldConfig === undefined || fieldMeta === undefined || form === undefined) {\n return 'boolean';\n }\n\n const control = form.get(fieldConfig.name);\n if (control === null) {\n console.warn(\"Unable to find control for field '\" + fieldConfig.name + \"' to determine boolean display type\");\n return 'boolean';\n }\n\n // Frontend forcing users to make a choice displays nullboolean to\n // trigger form validation - users must interact and explicitly\n // choose a true or false value\n if (control.hasValidator(Validators.required) || fieldMeta.displayType === 'nullboolean') {\n return 'nullboolean';\n }\n\n return 'boolean';\n });\n\n previousValidatorCount = 0;\n\n constructor() {\n effect(() => {\n this.class = this.showField() ? 'col-' + this.fieldConfig()?.cols : 'hidden-field';\n });\n\n effect(() => {\n const getValidators = this.fieldConfig().validators;\n\n if (typeof getValidators !== 'function') {\n return;\n }\n\n const formValues = this.formDataState();\n\n if (!formValues) {\n return;\n }\n\n console.debug('Field: ', this.fieldConfig().name, ' | Values to be used in validators calculation ', formValues);\n\n try {\n const newValidators = getValidators(formValues);\n\n const formControlName = this.fieldConfig().name;\n const control = this.form().get(formControlName);\n\n if (control === null) {\n throw new Error(`Control with name ${this.fieldConfig().name} not found during forceRequired calculation`);\n }\n\n const addValidators = !validatorsPresent(control, newValidators, this.previousValidatorCount);\n\n if (addValidators) {\n control.setValidators(newValidators);\n control.updateValueAndValidity();\n }\n\n this.previousValidatorCount = newValidators.length;\n } catch (e) {\n console.error('Failed to calculate value for forceRequired function for field: ', this.fieldConfig().name);\n console.error(e);\n return;\n }\n });\n }\n}\n\ntype BooleanDisplayTypes = Extract<ValidDisplayTypes, 'boolean' | 'nullboolean'>;\n","<div [class.hidden-field]=\"!showField()\">\n @if (showEmptyField()) {\n <ccc-empty-readonly-field [label]=\"fieldConfig().label\"></ccc-empty-readonly-field>\n } @else {\n @switch (fieldMeta().displayType) {\n @case ('date') {\n <ccc-date-field\n [form]=\"form()\"\n [fieldConfig]=\"fieldConfig()\"\n [editMode]=\"mode()\"\n [fieldClass]=\"fieldClass()\"\n [meta]=\"meta()\"\n [pristineValue]=\"pristineValue()\"\n [relatedData]=\"data()\"\n [fieldMeta]=\"fieldMeta()\"\n [showField]=\"showField()\">\n </ccc-date-field>\n }\n\n @case ('civildate') {\n <ccc-date-field\n [form]=\"form()\"\n [fieldConfig]=\"fieldConfig()\"\n [editMode]=\"mode()\"\n [fieldClass]=\"fieldClass()\"\n [meta]=\"meta()\"\n [pristineValue]=\"pristineValue()\"\n [relatedData]=\"data()\"\n [fieldMeta]=\"fieldMeta()\"\n [showField]=\"showField()\">\n </ccc-date-field>\n }\n\n @case ('number') {\n <ccc-number-field\n [form]=\"form()\"\n [fieldConfig]=\"fieldConfig()\"\n [editMode]=\"mode()\"\n [fieldClass]=\"fieldClass()\"\n [meta]=\"meta()\"\n [pristineValue]=\"pristineValue()\"\n [relatedData]=\"data()\"\n [fieldMeta]=\"fieldMeta()\"\n [showField]=\"showField()\">\n </ccc-number-field>\n }\n\n @case ('boolean') {\n <ng-container *ngTemplateOutlet=\"booleanFragment\"></ng-container>\n }\n @case ('nullboolean') {\n <ng-container *ngTemplateOutlet=\"booleanFragment\"></ng-container>\n }\n\n @case ('enumerated') {\n <ccc-enumerated-field\n [form]=\"form()\"\n [fieldConfig]=\"fieldConfig()\"\n [editMode]=\"mode()\"\n [fieldClass]=\"fieldClass()\"\n [meta]=\"meta()\"\n [pristineValue]=\"pristineValue()\"\n [relatedData]=\"data()\"\n [fieldMeta]=\"fieldMeta()\"\n [showField]=\"showField()\">\n </ccc-enumerated-field>\n }\n\n @default {\n <ccc-text-field\n [form]=\"form()\"\n [fieldConfig]=\"fieldConfig()\"\n [editMode]=\"mode()\"\n [fieldClass]=\"fieldClass()\"\n [meta]=\"meta()\"\n [pristineValue]=\"pristineValue()\"\n [relatedData]=\"data()\"\n [fieldMeta]=\"fieldMeta()\"\n [showField]=\"showField()\">\n </ccc-text-field>\n }\n }\n }\n</div>\n\n<ng-template #booleanFragment>\n @if (booleanEditDisplayType() === 'boolean') {\n <ccc-boolean-field\n [form]=\"form()\"\n [fieldConfig]=\"fieldConfig()\"\n [editMode]=\"mode()\"\n [fieldClass]=\"fieldClass()\"\n [meta]=\"meta()\"\n [pristineValue]=\"pristineValue()\"\n [relatedData]=\"data()\"\n [fieldMeta]=\"fieldMeta()\"\n [showField]=\"showField()\">\n </ccc-boolean-field>\n } @else if (booleanEditDisplayType() === 'nullboolean') {\n <ccc-nullboolean-field\n [form]=\"form()\"\n [fieldConfig]=\"fieldConfig()\"\n [editMode]=\"mode()\"\n [fieldClass]=\"fieldClass()\"\n [meta]=\"meta()\"\n [pristineValue]=\"pristineValue()\"\n [relatedData]=\"data()\"\n [fieldMeta]=\"fieldMeta()\"\n [showField]=\"showField()\">\n </ccc-nullboolean-field>\n }\n</ng-template>\n","import { Component, computed, effect, HostBinding, input, model, OnInit, untracked } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ConfigElement, DataType, FieldElement, Meta, RecordData } from '@cccteam/ccc-lib/src/types';\nimport { flattenElements, maxLayoutNestingDepth } from '../gui-constants';\nimport { PaddingElementComponent } from '../padding-element/padding-element.component';\nimport { ComputedFieldComponent } from '../resource-field/fields/computed-field/computed-field.component';\nimport { ResourceFieldComponent } from '../resource-field/resource-field.component';\n\n@Component({\n selector: 'ccc-resource-layout-template',\n imports: [PaddingElementComponent, ResourceFieldComponent, ComputedFieldComponent],\n templateUrl: './resource-layout.component.html',\n styleUrls: ['./resource-layout.component.scss'],\n})\nexport class ResourceLayoutComponent implements OnInit {\n element = input.required<ConfigElement>();\n meta = input.required<Meta>();\n fieldClass = input<string>();\n editMode = input.required<'edit' | 'view'>();\n form = input.required<FormGroup>();\n formDataState = model<RecordData>();\n pristineValue = input<DataType | null>('');\n relatedData = input<RecordData>();\n parentClass = input<string>();\n layoutNestingDepth = input<number>(1);\n\n maxLayoutNestingDepth = maxLayoutNestingDepth;\n\n children = computed(() => {\n const element = this.element();\n if (element.type === 'section') {\n return element.children;\n }\n return [];\n });\n\n layoutChildrenConfig = computed(() => {\n return flattenElements(this.children());\n });\n previouslyNulled = false;\n\n nullIfConditionallyHidden = computed(() => {\n const element = this.element();\n if (element.type === 'field') {\n return element.nullIfConditionallyHidden;\n }\n if (element.type === 'section') {\n return element.nullAllChildrenIfConditionallyHidden;\n }\n return false;\n });\n\n showLayout = computed(() => {\n const element = this.element();\n const shouldRender = element.shouldRender;\n const conditionallyNull = this.nullIfConditionallyHidden();\n const form = this.form();\n const label = 'label' in element ? element.label : 'padding';\n const isForeignKeyDefault = element.type === 'field' && element.default?.type === 'foreignKey';\n\n if (typeof shouldRender === 'boolean') {\n return shouldRender && !isForeignKeyDefault;\n }\n\n const formValues = this.formDataState();\n if (!formValues) {\n return true;\n }\n\n console.debug('Layout: ', label, ' | Values to be used in showLayout calculation ', formValues);\n try {\n const showLayout = shouldRender(formValues) && !isForeignKeyDefault;\n\n if (!conditionallyNull) {\n return showLayout;\n }\n const previouslyNulled = this.previouslyNulled;\n\n untracked(() => {\n this.layoutChildrenConfig().forEach((configElement) => {\n const isFormControl = configElement.type === 'field';\n if (!isFormControl) {\n return;\n }\n\n const control = form?.controls[configElement.name];\n const pristineFieldValue = this.relatedData()?.[configElement.name];\n\n if (!showLayout && !previouslyNulled) {\n this.previouslyNulled = true;\n control?.setValue(null);\n }\n\n if (showLayout && previouslyNulled) {\n this.previouslyNulled = false;\n control?.setValue(pristineFieldValue);\n }\n });\n });\n\n return showLayout;\n } catch (e) {\n console.error('Failed to calculate value for should Render function for layout: ', label);\n console.error(e);\n return true;\n }\n });\n\n @HostBinding('class') class = '';\n\n constructor() {\n // TODO: Remove this effect once Angular supports signals in Reactive forms to obtain changes to form values.\n // This effect has been necessary because translating from Observables to Signals, specifically via an input signal\n // doesn't have a clean solution\n\n effect((onCleanup) => {\n const element = this.element();\n if (element === undefined) {\n return;\n }\n const currentForm = this.form();\n const shouldRender = element.shouldRender;\n const nestingDepth = this.layoutNestingDepth();\n const layoutChildren = this.layoutChildrenConfig();\n const label = 'label' in element ? element.label : 'padding';\n if (!this.shouldInitializeFormData(currentForm, nestingDepth, shouldRender, layoutChildren)) {\n return;\n }\n console.debug('USAGE | New subscription for formValuesSignal created for layout: ', label);\n\n this.formDataState.set(currentForm.getRawValue());\n const subscription = currentForm.valueChanges.subscribe((value) => {\n this.formDataState.set(value);\n });\n\n onCleanup(() => {\n console.debug('USAGE | Unsubscribing from valueChanges for layout: ', label);\n subscription.unsubscribe();\n });\n });\n }\n\n ngOnInit(): void {\n this.class = 'col-' + this.element().cols;\n }\n\n shouldInitializeFormData(\n form: FormGroup,\n layoutNestingDepth: number,\n shouldRender: ConfigElement['shouldRender'],\n layoutChildren: ConfigElement[],\n ): boolean {\n const childrenNeedFormDataState = layoutChildren.some((config) => {\n const shouldRenderIsFunction = typeof config.shouldRender === 'function';\n const isComputedField = config.type === 'computedDisplayField';\n let validatorsIsFunction = false;\n\n const castConfig = config as FieldElement;\n if (castConfig.validators && typeof castConfig.validators === 'function') {\n validatorsIsFunction = true;\n }\n\n return shouldRenderIsFunction || isComputedField || validatorsIsFunction;\n });\n\n if (!form || layoutNestingDepth > 1) {\n return false;\n }\n\n if (!childrenNeedFormDataState && typeof shouldRender !== 'function') {\n return false;\n }\n\n return true;\n }\n}\n","<div class=\"section {{ parentClass() }}\" [class.hidden-field]=\"!showLayout()\">\n @let parentElement = element();\n @if (children().length > 0) {\n <div\n class=\"section-elements dense-1 resource-layout-container\"\n [class]=\"layoutNestingDepth() % 2 === 0 ? 'resource-layout-container-even' : 'resource-layout-container-odd'\">\n @if (parentElement.type !== 'padding' && parentElement.label !== '') {\n <div class=\"label\">{{ parentElement.label }}</div>\n }\n @for (elementField of children(); track elementField) {\n @let childElement = elementField;\n @if (childElement.type === 'section') {\n @if (layoutNestingDepth() < maxLayoutNestingDepth) {\n <ccc-resource-layout-template\n [layoutNestingDepth]=\"layoutNestingDepth() + 1\"\n [element]=\"childElement\"\n [meta]=\"meta()\"\n [fieldClass]=\"fieldClass()\"\n [editMode]=\"editMode()\"\n [form]=\"form()\"\n [formDataState]=\"formDataState()\"\n [pristineValue]=\"pristineValue()\"\n [relatedData]=\"relatedData()\"\n [parentClass]=\"parentClass()\">\n </ccc-resource-layout-template>\n }\n } @else if (childElement.type === 'field') {\n <ccc-resource-field\n [meta]=\"meta()\"\n [fieldClass]=\"fieldClass()\"\n [fieldConfig]=\"childElement\"\n [editMode]=\"editMode()\"\n [form]=\"form()\"\n [formDataState]=\"formDataState()\"\n [pristineValue]=\"pristineValue()\"\n [data]=\"relatedData()\">\n </ccc-resource-field>\n } @else if (childElement.type === 'computedDisplayField') {\n <ccc-computed-field\n [fieldClass]=\"fieldClass()\"\n [fieldConfig]=\"childElement\"\n [formDataState]=\"formDataState()\"></ccc-computed-field>\n } @else if (childElement.type === 'padding') {\n <ccc-padding-element [paddingElement]=\"childElement\"></ccc-padding-element>\n }\n }\n </div>\n } @else {\n @if (parentElement.type === 'field') {\n <div\n class=\"section-elements dense-1 resource-layout-container\"\n [class]=\"layoutNestingDepth() % 2 === 0 ? 'resource-layout-container-even' : 'resource-layout-container-odd'\">\n <ccc-resource-field\n [meta]=\"meta()\"\n [fieldClass]=\"fieldClass()\"\n [fieldConfig]=\"parentElement\"\n [editMode]=\"editMode()\"\n [form]=\"form()\"\n [formDataState]=\"formDataState()\"\n [pristineValue]=\"pristineValue()\"\n [data]=\"relatedData()\">\n </ccc-resource-field>\n </div>\n } @else if (parentElement.type === 'computedDisplayField') {\n <ccc-computed-field\n [fieldClass]=\"fieldClass()\"\n [fieldConfig]=\"parentElement\"\n [formDataState]=\"formDataState()\"></ccc-computed-field>\n } @else if (parentElement.type === 'padding') {\n <ccc-padding-element [paddingElement]=\"parentElement\"></ccc-padding-element>\n }\n }\n</div>\n","import { Component, computed, inject, signal } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { DataType, FieldElement, Method, METHOD_META, RPCBaseFormData } from '@cccteam/ccc-lib/src/types';\nimport { flattenElements } from '../gui-constants';\nimport { ResourceLayoutComponent } from '../resource-layout/resource-layout.component';\nimport { ResourceStore } from '../resource-store.service';\n\n@Component({\n selector: 'ccc-base-rpc-modal',\n imports: [\n MatDialogModule,\n MatDialogActions,\n MatButtonModule,\n ResourceLayoutComponent,\n FormsModule,\n MatInputModule,\n ReactiveFormsModule,\n ],\n templateUrl: './base-rpc-modal.component.html',\n styleUrls: ['./base-rpc-modal.component.scss'],\n providers: [ResourceStore],\n})\nexport class BaseRPCModalComponent {\n methodMeta = inject(METHOD_META);\n private dialogRef = inject(MatDialogRef);\n\n data = inject<{ elements: FieldElement[]; label: string; method: Method; width: string }>(MAT_DIALOG_DATA);\n formData = signal({} as RPCBaseFormData);\n meta = computed(() => {\n return this.methodMeta(this.formData().method as Method);\n });\n\n constructor() {\n this.formData.set(this.data);\n if (this.data.width) {\n this.dialogRef.updateSize(this.data.width);\n }\n }\n\n onConfirm(): void {\n this.dialogRef.close(this.form());\n }\n\n form = computed(() => {\n const fg = new FormGroup({});\n this.formData();\n const meta = this.meta();\n const allElements = flattenElements(this.data.elements);\n if (meta) {\n for (const field of meta.fields || []) {\n const value = '';\n const control = new FormControl(value);\n const findConfig = allElements.find((element) => element.type === 'field' && element.name === field.fieldName);\n const fieldConfig = findConfig as FieldElement | undefined;\n if (!fieldConfig) {\n continue;\n }\n if (fieldConfig.validators.length > 0) {\n control.setValidators(fieldConfig.validators);\n }\n fg.addControl(field.fieldName, control);\n this.pristineForm[field.fieldName] = value;\n }\n }\n return fg;\n });\n\n pristineForm: Record<string, DataType> = {};\n}\n","<div mat-dialog-title>{{ formData().label }}</div>\n<mat-dialog-content>\n <div class=\"resource-container\">\n <form [formGroup]=\"form()\">\n <div class=\"resource row\">\n @for (element of formData().elements; track element) {\n <ccc-resource-layout-template\n [element]=\"element\"\n [meta]=\"meta()\"\n [pristineValue]=\"pristineForm[element.name]\"\n editMode=\"edit\"\n [form]=\"form()\"></ccc-resource-layout-template>\n }\n </div>\n </form>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-raised-button color=\"warn\" [mat-dialog-close]=\"false\">Cancel</button>\n <button mat-raised-button color=\"accent\" [mat-dialog-close]=\"form().getRawValue()\" [disabled]=\"!form().valid\">\n Complete\n </button>\n</mat-dialog-actions>\n","import { Component, computed, inject, input, ResourceRef } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n AlertLevel,\n FieldPointer,\n ListViewConfig,\n METHOD_META,\n RecordData,\n Resource,\n RootConfig,\n RPCConfig,\n rpcConfigDefaults,\n RPCFieldMeta,\n RpcMethod,\n RPCRecordData,\n ViewConfig,\n} from '@cccteam/ccc-lib/src/types';\nimport { NotificationService } from '@cccteam/ccc-lib/src/ui-notification-service';\nimport { filter, tap } from 'rxjs';\nimport { BaseRPCModalComponent } from '../../base-rpc-modal/base-rpc-modal.component';\nimport { FormStateService } from '../../form-state.service';\nimport { ResourceStore } from '../../resource-store.service';\nimport { metadataTypeCoercion } from '../../resources-helpers';\n\n@Component({\n selector: 'ccc-rpc-button',\n imports: [MatButtonModule],\n templateUrl: './rpc-button.component.html',\n styleUrls: ['./rpc-button.component.scss'],\n providers: [ResourceStore],\n})\nexport class RpcButtonComponent {\n activatedRoute = inject(ActivatedRoute);\n router = inject(Router);\n notifications = inject(NotificationService);\n formState = inject(FormStateService);\n dialog = inject(MatDialog);\n store = inject(ResourceStore);\n\n methodMeta = inject(METHOD_META);\n\n relatedData = input.required<RecordData>({});\n rpcConfig = input.required<RPCConfig>();\n primaryResource = input.required<Resource>();\n dependentResources = input<ResourceRef<RecordData[]>[]>([]);\n\n resourceConfigRouteSnapshot = computed(() => {\n return (\n this.rpcConfig() ||\n (this.activatedRoute.snapshot.data['config'] as RootConfig)?.parentConfig ||\n ({} as ViewConfig | ListViewConfig)\n );\n });\n\n showRPCButton = computed(() => {\n const rpcConfig = this.rpcConfig();\n if (!rpcConfig) {\n return false;\n }\n let canView = true;\n for (const condition of rpcConfig.conditions || []) {\n const filterField = condition.field;\n const matchValues = condition.matchValues;\n const parentFieldData = this.relatedData()[filterField ? filterField : ''];\n for (const matchValue of matchValues) {\n if (parentFieldData === matchValue) {\n canView = true;\n break;\n }\n canView = false;\n }\n if (!canView) {\n break;\n }\n }\n return canView;\n });\n\n submitRPC(): void {\n const rpcConfig = this.rpcConfig();\n if (!rpcConfig) {\n console.error('RPC config is not defined');\n return;\n }\n\n const submitBody: RPCRecordData = {};\n let dialogRef: MatDialogRef<BaseRPCModalComponent> | undefined;\n\n if (rpcConfig.customComponent !== rpcConfigDefaults.customComponent) {\n let componentToOpen;\n if (!componentToOpen) {\n console.error('Custom RPC component ' + rpcConfig.customComponent.component + ' not found.');\n return;\n }\n\n if (!dialogRef) {\n console.error('Dialog reference is undefined.');\n return;\n }\n } else if (rpcConfig.elements.length > 0) {\n dialogRef = this.dialog.open(BaseRPCModalComponent, {\n data: {\n label: rpcConfig.label,\n elements: rpcConfig.elements,\n method: rpcConfig.method,\n width: rpcConfig.defaultModalWidth,\n },\n });\n } else {\n this.buildRpcBody(rpcConfig, submitBody);\n return;\n }\n\n const meta = this.methodMeta(rpcConfig.method);\n dialogRef\n .afterClosed()\n .pipe(\n filter((data) => !!data),\n tap((data) => {\n const coercedData = metadataTypeCoercion(data as RPCRecordData, meta);\n Object.keys(coercedData).forEach((key: string) => {\n const value = coercedData[key];\n if (value) {\n submitBody[key] = value;\n }\n });\n this.buildRpcBody(rpcConfig, submitBody);\n }),\n tap(() => {\n this.reloadDependentResources();\n }),\n )\n .subscribe();\n }\n\n buildRpcBody(rpcConfig: RPCConfig, submitBody: RPCRecordData): void {\n let canSubmitRPC = true;\n const method = this.methodMeta(rpcConfig.method);\n if (method.fields) {\n method.fields.forEach((methodField: RPCFieldMeta) => {\n const key = methodField.fieldName;\n if (submitBody[key] === undefined || submitBody[key] === null || submitBody[key] === '') {\n if (!method.fields) {\n return;\n }\n const value = rpcConfig.methodBodyTemplate[key as keyof RpcMethod] as string | FieldPointer;\n if (value == undefined) {\n return;\n }\n if (typeof value !== 'string') {\n const returnValue = this.relatedData()[value.field];\n if (returnValue === undefined) {\n this.notifications.addGlobalNotification({\n message: 'Value not found for field: ' + value.field,\n link: '',\n level: AlertLevel.ERROR,\n });\n canSubmitRPC = false;\n return;\n }\n if (returnValue) submitBody[key] = returnValue as string | number | string[] | number[] | boolean;\n } else {\n submitBody[key] = value;\n }\n }\n });\n }\n\n if (!canSubmitRPC) {\n return;\n }\n this.callRpc(rpcConfig, submitBody);\n }\n\n callRpc(rpc: RPCConfig, submitBody: RPCRecordData): void {\n this.store\n .rpcCall(rpc, submitBody)\n .pipe(\n tap(() => {\n this.reloadDependentResources();\n }),\n )\n .subscribe();\n }\n\n reloadDependentResources(): void {\n // TODO: this does not work. We need to invalidate the cache via resource names.\n for (const ref of this.dependentResources()) {\n ref.reload();\n }\n }\n}\n","@if (showRPCButton()) {\n <div class=\"button-container\">\n <button mat-raised-button color=\"accent\" (click)=\"submitRPC()\" [disabled]=\"formState.isDirty()\">\n {{ rpcConfig().label }}\n </button>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n OnInit,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { CamelCaseToTitlePipe } from '@cccteam/ccc-lib/src/ccc-camel-case-to-title';\nimport { cleanStringForm } from '@cccteam/ccc-lib/src/forms';\nimport {\n ChildResourceConfig,\n DataType,\n FieldElement,\n ListViewConfig,\n RecordData,\n Resource,\n RESOURCE_META,\n RootConfig,\n ViewConfig,\n} from '@cccteam/ccc-lib/src/types';\nimport { NotificationService } from '@cccteam/ccc-lib/src/ui-notification-service';\nimport { camelCase } from 'lodash-es';\nimport { tap } from 'rxjs';\nimport { FormStateService } from '../form-state.service';\nimport { flattenElements } from '../gui-constants';\nimport { ResourceLayoutComponent } from '../resource-layout/resource-layout.component';\nimport { ResourceStore } from '../resource-store.service';\nimport { CreateOperation, metadataTypeCoercion } from '../resources-helpers';\n\n@Component({\n selector: 'ccc-resource-create',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatDividerModule,\n ResourceLayoutComponent,\n ],\n templateUrl: './resource-create.component.html',\n styleUrl: './resource-create.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ResourceStore],\n})\nexport class ResourceCreateComponent implements OnInit {\n resourceMeta = inject(RESOURCE_META);\n activatedRoute = inject(ActivatedRoute);\n notifications = inject(NotificationService);\n store = inject(ResourceStore);\n router = inject(Router);\n destroyRef = inject(DestroyRef);\n formState = inject(FormStateService);\n\n isDirty = signal(false);\n submitted = signal<boolean>(false);\n complete = output<boolean>();\n resourceConfig = input<ChildResourceConfig>();\n parentData = input<RecordData>({});\n loadCreatedResource = input<boolean>(false);\n\n rootConfig = computed(() => {\n return this.activatedRoute.snapshot.data['config'] as RootConfig;\n });\n\n config = computed(() => {\n const inputConfig = this.resourceConfig() as ViewConfig;\n if (inputConfig !== undefined) {\n return inputConfig;\n }\n return this.rootConfig().parentConfig as ListViewConfig;\n });\n\n indentTitle = computed(() => {\n if (this.config().collapsible || this.resourceConfig() === undefined) {\n return false;\n }\n\n return true;\n });\n\n form = computed(() => {\n const meta = this.store.resourceMeta();\n const fg = new FormGroup({});\n const allElements = flattenElements(this.config().elements);\n\n for (const field of meta.fields || []) {\n if (fg.get(field.fieldName)) {\n continue;\n }\n\n let control = new FormControl<DataType>('');\n if (field.displayType === 'boolean') {\n control = new FormControl<boolean>(false);\n }\n\n const findElement = allElements.find((element) => element.type === 'field' && element.name === field.fieldName);\n const fieldConfig = findElement as FieldElement | undefined;\n if (!fieldConfig) {\n continue;\n }\n const fieldDefault = fieldConfig.default;\n if (field.displayType === 'boolean') {\n const booleanDefaultValue =\n fieldDefault?.type == 'static' && typeof fieldDefault?.value === 'boolean' ? fieldDefault.value : null;\n if (booleanDefaultValue === null) {\n console.error(\n `Default value for boolean field, ${field.fieldName}, is null, add a default value to the config`,\n );\n }\n control = new FormControl<boolean | null>(booleanDefaultValue);\n }\n\n if (fieldDefault?.type === 'foreignKey' && this.parentData()) {\n const parentValue = this.parentData()[fieldDefault.parentId];\n if (parentValue !== undefined) {\n control.setValue(parentValue);\n }\n } else if (fieldDefault?.type == 'static') {\n const staticDefault = fieldDefault;\n if (staticDefault.value) {\n control.setValue(staticDefault.value);\n }\n }\n\n control.setValidators([]);\n if (fieldConfig.validators.length > 0) {\n control.addValidators(fieldConfig.validators);\n }\n\n if (field.required && !control.hasValidator(Validators.required)) {\n control.addValidators(Validators.required);\n }\n fg.addControl(field.fieldName, control);\n }\n return fg;\n });\n\n route = computed(() => {\n const meta = this.store.resourceMeta();\n if (!meta) return '';\n return meta.consolidatedRoute || meta.route;\n });\n\n primaryKeys = computed(() => {\n const meta = this.store.resourceMeta();\n if (!meta) return [];\n return meta.fields\n .filter((field) => field.primaryKey)\n .sort((a, b) => a.primaryKey!.ordinalPosition - b.primaryKey!.ordinalPosition);\n });\n\n hasRequiredPrimaryKey = computed(() => {\n const meta = this.store.resourceMeta();\n if (!meta) {\n return false;\n }\n return meta.fields.some((field) => field.primaryKey && field.required);\n });\n\n primaryKeyPath = computed(() => {\n const meta = this.store.resourceMeta();\n const isConsolidated = meta.consolidatedRoute !== undefined;\n const pathPrefix = isConsolidated ? '/' + meta.route : '';\n const keyPath = this.primaryKeys()\n .map((field) => this.form().get(field.fieldName)?.value)\n .join('/');\n\n if (keyPath === '' && pathPrefix === '') {\n return '/';\n }\n\n if (keyPath === '') {\n return pathPrefix;\n }\n\n return pathPrefix + '/' + keyPath;\n });\n\n camelCaseToTitlePipe = new CamelCaseToTitlePipe();\n\n ngOnInit(): void {\n if (this.resourceMeta(this.config().primaryResource as Resource)) {\n this.store.resourceName.set(this.config().primaryResource as Resource);\n this.store.resourceMeta.set(this.resourceMeta(this.config().primaryResource as Resource));\n }\n }\n\n saveForm(): void {\n if (!this.form().valid) {\n this.submitted.set(true);\n this.form().markAllAsTouched();\n const formElement = document.getElementById('resource-form');\n const invalidField = formElement?.querySelector('.mdc-text-field--invalid');\n if (invalidField) {\n invalidField.scrollIntoView({ behavior: 'smooth' });\n }\n return;\n }\n\n const resourceMeta = this.store.resourceMeta();\n if (!resourceMeta) {\n return;\n }\n const cleanedForm = cleanStringForm<Record<string, string>>(this.form());\n if (cleanedForm === undefined || cleanedForm === null) {\n return;\n }\n const coercedCleanedData = metadataTypeCoercion(cleanedForm, this.store.resourceMeta());\n\n const cleanedDataWithoutPrimaryKeys = Object.fromEntries(\n Object.entries(coercedCleanedData).filter(\n ([key]) => !this.primaryKeys().some((field) => field.fieldName === key),\n ),\n );\n\n const createPatch: CreateOperation = {\n op: 'add',\n value: cleanedDataWithoutPrimaryKeys,\n path: this.primaryKeyPath(),\n };\n\n this.store\n .createPatch(createPatch, this.route(), this.store.resourceName())\n .pipe(\n tap((response) => {\n this.formState.decrementDirtyForms();\n\n if (!response) {\n this.complete.emit(true);\n return;\n }\n\n let createIds: string[] = [];\n if (resourceMeta.consolidatedRoute) {\n const resourceName = camelCase(this.store.resourceName());\n createIds = (response[resourceName] as string[]) || [];\n } else {\n createIds = (response['iDs'] || []) as string[];\n }\n\n if (this.loadCreatedResource() && createIds.length === 1) {\n let route = this.rootConfig().routeData.route;\n if (this.parentData() || !route) {\n route = resourceMeta.route;\n }\n\n const navigationRoutes = this.config().createNavigation;\n if (navigationRoutes.length === 0) {\n this.router.navigate([route, createIds[0]]);\n } else {\n if (createIds[0]) {\n navigationRoutes.push(createIds[0]);\n }\n this.router.navigate(navigationRoutes);\n }\n } else {\n this.complete.emit(true);\n }\n }),\n )\n .subscribe();\n }\n\n cancelForm(): void {\n if (this.form().dirty) {\n this.formState.decrementDirtyForms();\n }\n this.complete.emit(true);\n }\n\n constructor() {\n effect(() => {\n console.debug('USAGE | New FormGroup subscription for: ', this.config().title);\n\n this.form()\n .valueChanges.pipe(\n tap(() => {\n const dirty = this.form().dirty;\n\n if (dirty !== this.isDirty()) {\n this.isDirty.set(dirty);\n if (dirty) {\n this.formState.incrementDirtyForms();\n } else {\n this.formState.decrementDirtyForms();\n }\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n });\n }\n}\n","<div class=\"page-container\">\n <div class=\"header-container\">\n <div class=\"title\" [class.indent]=\"indentTitle()\">\n <h1>Create {{ config().title }}</h1>\n </div>\n\n <div class=\"state-buttons\">\n @if (!form().valid && submitted()) {\n <div class=\"invalid message\">Please complete or fix required fields.</div>\n }\n <button mat-raised-button color=\"primary\" (click)=\"cancelForm()\">Cancel</button>\n <button mat-raised-button color=\"accent\" (click)=\"saveForm()\" [disabled]=\"form().pristine\">Create</button>\n </div>\n </div>\n\n <div class=\"resource-container\">\n <form [formGroup]=\"form()\">\n <div class=\"resource row\">\n @for (element of config().elements; track element) {\n <ccc-resource-layout-template\n [element]=\"element\"\n [meta]=\"store.resourceMeta()\"\n [fieldClass]=\"config().fieldClass\"\n [relatedData]=\"parentData()\"\n editMode=\"edit\"\n [form]=\"form()\"></ccc-resource-layout-template>\n }\n </div>\n </form>\n </div>\n</div>\n","import { NgComponentOutlet } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n inject,\n Injector,\n input,\n OnInit,\n output,\n Signal,\n signal,\n Type,\n viewChild\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ArrayConfig, ColumnConfig, RecordData, RESOURCE_META, ViewConfig } from '@cccteam/ccc-lib/src/types';\nimport { ActionAccessControlWrapperComponent } from '../actions/action-button-smart/action-access-control-wrapper.component';\nimport { ActionButtonContext } from '../actions/actions.interface';\nimport { ResourceCreateComponent } from '../resource-create/resource-create.component';\nimport { ResourceStore } from '../resource-store.service';\n\n@Component({\n selector: 'ccc-resource-array-view',\n templateUrl: './resource-array-view.component.html',\n styleUrl: './resource-array-view.component.scss',\n imports: [\n MatButtonModule,\n MatExpansionModule,\n MatIconModule,\n MatTooltipModule,\n ResourceCreateComponent,\n ActionAccessControlWrapperComponent,\n NgComponentOutlet,\n ],\n providers: [ResourceStore],\n})\nexport class ResourceArrayViewComponent implements OnInit {\n resourceMeta = inject(RESOURCE_META);\n store = inject(ResourceStore);\n injector = inject(Injector);\n\n resourceConfig = input.required<ArrayConfig>();\n parentData = input<RecordData>({});\n expPanel = viewChild<MatExpansionPanel, MatExpansionPanel>('expPanel', { read: MatExpansionPanel });\n\n emptyOneToOne = output<boolean>();\n\n createMode = signal(false);\n/* eslint-disable @typescript-eslint/no-explicit-any */\n compoundResourceComponent = input.required<Type<any>>();\n\n showCreateButton = computed(() => {\n const list = this.store.listData();\n const resourceConfig = this.resourceConfig();\n const iteratedConfig = resourceConfig.iteratedConfig;\n if (list && resourceConfig?.viewType === 'OneToOne') {\n this.emptyOneToOne.emit(list.length === 0);\n return list.length === 0;\n }\n if ('createTitle' in iteratedConfig && iteratedConfig.createTitle !== '') {\n return true;\n }\n return false;\n });\n\n createActionConfig: Signal<ActionButtonContext | undefined> = computed(() => {\n const config = this.resourceConfig();\n const showCreate = this.showCreateButton();\n const meta = this.store.resourceMeta();\n\n if (config === undefined || showCreate === undefined || meta === undefined) {\n return undefined;\n }\n\n return {\n actionType: 'create',\n meta: this.store.resourceMeta(),\n shouldRender: () => (showCreate && config.shouldRenderActions?.create?.(this.parentData())) ?? false,\n resourceData: this.parentData(),\n };\n });\n\n createConfig = computed(() => {\n const config = this.resourceConfig();\n if (config.createConfig && Object.keys(config.createConfig).length !== 0) {\n return config.createConfig as ViewConfig;\n }\n if (config.iteratedConfig && Object.keys(config.iteratedConfig).length !== 0) {\n return config.iteratedConfig as ViewConfig;\n }\n return config;\n });\n\n resourceListRoute = computed(() => {\n const config = this.resourceConfig();\n const meta = this.resourceMeta(config.connectorResource || config.primaryResource);\n return meta.route;\n });\n\n setCreateMode(value: boolean): void {\n this.createMode.set(value);\n if (value && this.expPanel && this.expPanel()?.closed) {\n this.expPanel()?.open();\n }\n }\n\n ngOnInit(): void {\n this.store.resourceName.set(this.resourceConfig().primaryResource);\n const meta = this.resourceMeta(this.resourceConfig().primaryResource);\n this.store.resourceMeta.set(meta);\n this.store.overrideRoute.set(this.resourceListRoute());\n const columnArray = [];\n if (this.resourceConfig().connectorField !== '') {\n columnArray.push({ id: this.resourceConfig().connectorField });\n } else {\n columnArray.push({ id: 'id' } as ColumnConfig);\n }\n this.store.listColumns.set(columnArray);\n this.store.sorts.set(this.resourceConfig().sorts);\n }\n\n constructor() {\n effect(() => {\n const parentData = this.parentData();\n const resourceConfig = this.resourceConfig();\n\n if (resourceConfig && 'listFilter' in resourceConfig && parentData) {\n const filter = resourceConfig.listFilter(parentData);\n\n this.store.filter.set(filter);\n this.store.disableCacheForFilterPii.set(resourceConfig.disableCacheForFilterPii);\n this.store.buildStoreListData();\n }\n });\n }\n\n createResource(event: MouseEvent): void {\n event.stopPropagation();\n const expPanel = this.expPanel();\n\n if (!expPanel) {\n this.setCreateMode(true);\n return;\n }\n this.setCreateMode(true);\n if (expPanel.closed) {\n expPanel.open();\n }\n }\n\n onResourceDeleted(): void {\n this.setCreateMode(false);\n }\n\n onCreateCompleted(): void {\n this.store.reloadListData();\n this.setCreateMode(false);\n }\n}\n","@if (resourceConfig().title !== '') {\n <div class=\"resource-array-view\">\n <mat-expansion-panel\n #expPanel\n [@.disabled]=\"true\"\n [disabled]=\"!resourceConfig().collapsible\"\n [expanded]=\"!resourceConfig().collapsible\">\n <mat-expansion-panel-header>\n @if (resourceConfig().title) {\n <mat-panel-title>\n <h1 class=\"title\">\n {{ resourceConfig().title }}\n </h1>\n </mat-panel-title>\n }\n <action-access-control-wrapper [actionContext]=\"createActionConfig()\">\n <button\n mat-icon-button\n class=\"exp-panel-add-element-btn\"\n color=\"accent\"\n (click)=\"createResource($event)\"\n [matTooltip]=\"resourceConfig().createButtonLabel\"\n matTooltipPosition=\"above\">\n <mat-icon color=\"accent\">add_circle</mat-icon>\n </button>\n </action-access-control-wrapper>\n </mat-expansion-panel-header>\n\n @if (!resourceConfig().collapsible && !resourceConfig().title) {\n <div class=\"no-title-exp-panel-padding\"></div>\n }\n\n @if (createMode()) {\n <ccc-resource-create\n [resourceConfig]=\"createConfig()\"\n [parentData]=\"parentData()\"\n (complete)=\"onCreateCompleted()\">\n </ccc-resource-create>\n }\n @if (store.listStatus() === 'resolved') {\n @for (resource of store.listData(); track resource['id']; let i = $index) {\n @let resourceId = (resource[resourceConfig().connectorField] || resource['id']) + '';\n\n @if (parentData() && resourceConfig().iteratedConfig && resourceId && i + 1 <= resourceConfig().limit) {\n <ng-container *ngComponentOutlet=\"compoundResourceComponent();\n inputs: { \n uuid: resourceId, \n parentData: parentData(), \n isArrayChild: true, \n resourceConfig: resourceConfig().iteratedConfig \n }\">\n </ng-container>\n }\n }\n } @else {\n <div class=\"resource-container empty\">\n <div class=\"resource row\"></div>\n </div>\n }\n\n @if (store.listData().length === 0) {\n <div>No records found</div>\n }\n </mat-expansion-panel>\n </div>\n} @else {\n @if (createMode()) {\n <ccc-resource-create [resourceConfig]=\"createConfig()\" [parentData]=\"parentData()\" (complete)=\"onCreateCompleted()\">\n </ccc-resource-create>\n }\n @if (store.listStatus() === 'resolved') {\n @for (resource of store.listData(); track resource['id']; let i = $index) {\n @if (parentData() && resourceConfig().iteratedConfig && resource['id'] && i + 1 <= resourceConfig().limit) {\n <ng-container *ngComponentOutlet=\"compoundResourceComponent();\n inputs: { \n uuid: resource['id'] + '', \n parentData: parentData(), \n isArrayChild: true, \n resourceConfig: resourceConfig().iteratedConfig \n }\">\n </ng-container>\n }\n }\n } @else {\n <div class=\"resource-container empty\">\n <div class=\"resource row\"></div>\n </div>\n }\n\n @if (store.listData().length === 0) {\n <div>No records found</div>\n }\n}\n","import { FormatType } from '@cccteam/ccc-lib/src/types';\nimport { format, isValid, parseISO } from 'date-fns';\n\nexport type FormatterFn = (value: string) => string;\n\nexport const simpleSlashDateFormatter = (value: string): string => {\n if (!value) return '';\n const parsedDate = parseISO(value.toString());\n\n if (isValid(parsedDate)) {\n return format(parsedDate, 'M/d/yyyy');\n }\n\n console.error('Applying simpleSlashDateFormatter to invalid date value:', value);\n return value.toString();\n};\n\nexport const ValueFormatters: Record<FormatType, FormatterFn> = {\n ['simpleSlashDateFormat']: simpleSlashDateFormatter,\n};\n\nexport function applyFormatting(formatString: string, value: string): string {\n if (!value) return '';\n if (formatString in ValueFormatters) {\n return ValueFormatters[formatString as FormatType](value);\n }\n\n //default to formatting as a date with provided format string\n const parsedDate = parseISO(value.toString());\n\n if (isValid(parsedDate)) {\n return format(parsedDate, formatString);\n }\n\n return value.toString();\n}\n\nexport function formatDateString(formatString: string, value: string): string {\n if (!value) return '';\n\n //default to formatting as a date with provided format string\n const parsedDate = parseISO(value.toString());\n\n if (isValid(parsedDate)) {\n return format(parsedDate, formatString);\n }\n\n return value.toString();\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n inject,\n Injector,\n input,\n OnInit,\n output,\n ResourceRef,\n runInInjectionContext,\n signal,\n Type,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { AppGridComponent } from '@cccteam/ccc-lib/src/ccc-grid';\nimport {\n ChildResourceConfig,\n ColumnConfig,\n FieldName,\n ListViewConfig,\n RecordData,\n Resource,\n RESOURCE_META,\n RootConfig,\n} from '@cccteam/ccc-lib/src/types';\nimport { ActionAccessControlWrapperComponent } from '../actions/action-button-smart/action-access-control-wrapper.component';\nimport { ActionButtonContext } from '../actions/actions.interface';\nimport {\n hyphenConcatWithoutResource,\n hyphenSpaceConcatWithoutResource,\n noSpaceConcatWithoutResource,\n spaceConcatWithoutResource,\n spaceHyphenConcatWithoutResource,\n} from '../concat-fns';\nimport { applyFormatting, formatDateString } from '../format-fns';\nimport { ResourceStore } from '../resource-store.service';\n\n@Component({\n standalone: true,\n imports: [\n AppGridComponent,\n RouterModule,\n MatIconModule,\n MatButtonModule,\n MatExpansionModule,\n MatTooltipModule,\n ReactiveFormsModule,\n MatInputModule,\n ActionAccessControlWrapperComponent,\n NgComponentOutlet,\n ],\n selector: 'ccc-resource-list',\n templateUrl: './resource-list.component.html',\n styleUrls: ['./resource-list.component.scss'],\n providers: [ResourceStore],\n})\nexport class ResourceListComponent implements OnInit {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n compoundResourceComponent = input.required<Type<any>>();\n\n resourceMeta = inject(RESOURCE_META);\n router = inject(Router);\n store = inject(ResourceStore);\n injector = inject(Injector);\n activatedRoute = inject(ActivatedRoute);\n\n hideCreateButton = input<boolean>(true);\n createMode = output<boolean>();\n resourceConfig = input<ChildResourceConfig>();\n viewRoute = input<string>();\n filter = input<string>('');\n linkCreateType = input<boolean>(false);\n isRootList = input<boolean>(true);\n\n showCreateButton = computed(() => {\n const config = this.config();\n if (config.createTitle !== '' && !config.collapsible && !this.hideCreateButton()) {\n return true;\n }\n if (config.createConfig && Object.keys(config.createConfig).length !== 0) {\n return true;\n }\n return false;\n });\n\n createButtonContext = computed(() => {\n const config = this.resourceConfig();\n const showCreate = this.showCreateButton();\n\n if (config === undefined || showCreate === undefined) {\n return undefined;\n }\n\n if (config.shouldRenderActions === undefined) {\n return undefined;\n }\n\n return {\n actionType: 'create',\n meta: this.meta(),\n shouldRender: (data: RecordData): boolean => showCreate && config.shouldRenderActions.create(data),\n resourceData: this.relatedData() ?? {},\n } satisfies ActionButtonContext;\n });\n\n searchableFields = computed(() => {\n const meta = this.meta();\n if (!meta) return '';\n return `over fields of ${meta.route}`;\n // TODO: implement searchable fields based on resource meta\n // return meta.searchableFields.join(', ') || '';\n });\n\n relatedData = input<RecordData>();\n parentId = input<string>();\n\n routeConfig = computed(() => {\n return this.activatedRoute.snapshot.data['config'] as RootConfig;\n });\n\n config = computed(() => {\n return this.resourceConfig() as ListViewConfig;\n });\n\n expansionConfig = computed(() => {\n const config = this.config().rowExpansionConfig;\n if (config.type !== 'Component' && config.type !== 'Array') {\n config.showBackButton = false;\n }\n return config;\n });\n\n viewRouteFallback = computed(() => {\n if (this.viewRoute()) {\n return this.viewRoute();\n }\n\n return this.resourceMeta(this.config().primaryResource).route;\n });\n\n listTitle = computed(() => {\n if (this.config()?.collapsible) return '';\n return this.config().title || '';\n });\n\n indentTitle = computed(() => {\n if (this.config() === undefined) {\n return false;\n }\n\n return true;\n });\n\n createButtonLabel = computed(() => {\n return this.config().createButtonLabel || 'Create';\n });\n\n meta = computed(() => {\n const config = this.config();\n return this.resourceMeta(config.overrideResource || config.primaryResource);\n });\n resourceRefMap = signal(new Map<Resource, ResourceRef<RecordData[]>>());\n primaryKeys = computed(() => {\n const meta = this.meta();\n if (!meta) {\n return [];\n }\n return meta.fields.filter((field) => field.primaryKey !== undefined);\n });\n rootColumns = computed(() => {\n const config = this.config();\n const idCols = [];\n for (const pk of this.primaryKeys()) {\n if (pk.required) {\n continue;\n }\n idCols.push({\n id: pk.fieldName as FieldName,\n hidden: true,\n });\n }\n for (const col of config.listColumns) {\n if (!('additionalIds' in col)) continue;\n for (const additionalCol of col.additionalIds) {\n if (additionalCol.resource !== undefined) continue;\n idCols.push({\n id: additionalCol.id as FieldName,\n hidden: true,\n });\n }\n }\n\n return [...new Set([...idCols, ...config.listColumns])];\n });\n columns = computed(() => {\n const refmap = this.resourceRefMap();\n const cols = this.rootColumns();\n const columns: ColumnConfig[] = [];\n const usedIds = new Set<string>();\n\n for (const col of cols) {\n const indexId = this.getUniqueId(col.id, usedIds) as FieldName;\n usedIds.add(indexId);\n\n if (col.hidden) {\n continue;\n }\n\n if ('additionalIds' in col) {\n columns.push({\n id: indexId,\n header: col.header,\n width: col.width,\n resizable: col.resizable,\n valueGetter: (data) => {\n const concatArray: string[] = [];\n\n col.additionalIds.forEach((additionalCol) => {\n if (!additionalCol.resource) {\n concatArray.push(data[additionalCol.id]);\n } else {\n const resource = signal(additionalCol.resource as Resource);\n const resourceRef = refmap.get(resource());\n const resData = resourceRef?.value();\n if (!resData) {\n return;\n }\n for (const res of resData) {\n if (res[additionalCol.id] === data[col.id] && additionalCol.field) {\n const value = res[additionalCol.field];\n if (col.formatType && typeof value === 'string') {\n concatArray.push(formatDateString(col.formatType, value));\n } else if (value) {\n concatArray.push(value as string);\n }\n }\n }\n }\n });\n\n if (concatArray.length === 0) {\n return col.emptyDataValue as string;\n }\n\n switch (col.concatFn) {\n case 'space-concat':\n return spaceConcatWithoutResource(concatArray);\n case 'space-hyphen-concat':\n return spaceHyphenConcatWithoutResource(concatArray);\n case 'hyphen-space-concat':\n return hyphenSpaceConcatWithoutResource(concatArray);\n case 'no-space-concat':\n return noSpaceConcatWithoutResource(concatArray);\n default: {\n // default case is hyphen-concat\n return hyphenConcatWithoutResource(concatArray);\n }\n }\n },\n });\n } else {\n columns.push({\n id: indexId,\n header: col.header,\n width: col.width,\n resizable: col.resizable,\n valueFormatter: (params) => {\n if (col.formatType) {\n const retValue = applyFormatting(col.formatType, params);\n return retValue || col.emptyDataValue;\n }\n return params || col.emptyDataValue;\n },\n });\n }\n }\n\n if (this.config().showViewButton) {\n let route = '';\n const isRootList = this.isRootList() === undefined;\n\n if (this.viewRouteFallback() && isRootList) {\n route = this.viewRouteFallback() || '';\n } else {\n let viewResource = this.config().viewResource;\n if (!viewResource || viewResource === '') {\n viewResource = this.config().primaryResource;\n }\n\n const meta = this.resourceMeta(viewResource as Resource);\n if (meta !== undefined) {\n route = meta.route;\n }\n }\n\n columns.push({\n id: 'view' as FieldName,\n header: 'View',\n hideHeader: true,\n buttonConfig: {\n label: 'View',\n icon: 'arrow_forward',\n viewRoute: route,\n actionType: 'link',\n },\n });\n }\n\n return columns;\n });\n\n reloadListData(): void {\n this.store.reloadListData();\n }\n\n processedRowData = computed(() => {\n this.filter();\n this.relatedData();\n const data = this.store.listData();\n if (!data) return [];\n const columns = this.columns();\n\n return data.map((row) => {\n const updatedRow = { ...row };\n for (const col of columns) {\n if (col.valueGetter) {\n updatedRow[col.id] = col.valueGetter(row);\n } else {\n updatedRow[col.id] = row[col.id];\n }\n\n if (typeof col.valueFormatter === 'function') {\n updatedRow[col.id] = col.valueFormatter(updatedRow[col.id]);\n }\n }\n return updatedRow;\n });\n });\n\n filters = computed(() => {\n const configFilter = this.config().filter?.(this.relatedData()) || '';\n const inputFilter = this.filter();\n if (inputFilter && configFilter) {\n return `(${inputFilter}),(${configFilter})`;\n }\n if (inputFilter) {\n return `(${inputFilter})`;\n }\n return configFilter || '';\n });\n\n createResource(event: MouseEvent): void {\n event.stopPropagation();\n this.createMode.emit(true);\n }\n\n parentKey = computed(() => {\n if (this.relatedData() === undefined || this.childKey() === undefined) {\n return '';\n }\n const parent = this.config().parentRelation?.parentKey;\n return this.relatedData()?.[parent] || '';\n });\n\n childKey = computed(() => {\n if (!this.config().parentRelation) {\n return '';\n }\n return this.config().parentRelation?.childKey as string;\n });\n\n private getUniqueId(baseId: string, usedIds: Set<string>): string {\n if (!usedIds.has(baseId)) {\n return baseId;\n }\n\n let counter = 1;\n let newId = `${baseId}_${counter}`;\n while (usedIds.has(newId)) {\n counter++;\n newId = `${baseId}_${counter}`;\n }\n return newId;\n }\n\n ngOnInit(): void {\n const primaryResource = this.config().primaryResource;\n if (this.meta()) {\n this.store.resourceName.set(primaryResource);\n this.store.resourceMeta.set(this.meta());\n this.store.listColumns.set(this.config().listColumns || []);\n this.store.requireSearchToDisplayResults.set(this.config().requireSearchToDisplayResults || false);\n this.store.sorts.set(this.config().sorts || []);\n }\n\n this.store.filter.set(this.filters());\n this.store.disableCacheForFilterPii.set(this.config().disableCacheForFilterPii);\n\n runInInjectionContext(this.injector, () => {\n this.config().listColumns.forEach((element) => {\n if (!('additionalIds' in element)) {\n return;\n }\n element.additionalIds.forEach((id) => {\n if (id.resource === undefined) {\n return;\n }\n const meta = this.resourceMeta(id.resource);\n if (meta === undefined) {\n return;\n }\n const route = signal(meta.route);\n const resource = signal(id.resource);\n if (!this.resourceRefMap().has(resource())) {\n const ref = this.store.resourceList(route);\n if (ref === undefined) {\n return;\n }\n this.resourceRefMap.set(this.resourceRefMap().set(resource(), ref));\n }\n });\n });\n\n effect(() => {\n this.filter();\n this.relatedData();\n this.store.filter.set(this.filters());\n this.store.disableCacheForFilterPii.set(this.config().disableCacheForFilterPii);\n this.store.buildStoreListData();\n });\n });\n }\n}\n","<div [class]=\"linkCreateType() ? 'page-container hide' : 'page-container'\">\n <div class=\"header-container\" [class.show-background]=\"!config().collapsible\" [class.indent]=\"indentTitle()\">\n <h1 class=\"title\">{{ listTitle() }}</h1>\n <action-access-control-wrapper [actionContext]=\"createButtonContext()\">\n <div class=\"create-button\">\n <button mat-raised-button color=\"accent\" (click)=\"createResource($event)\">\n <div class=\"edit-text\">\n <mat-icon>create</mat-icon>\n <span class=\"edit-button-text\"> {{ createButtonLabel() }} </span>\n </div>\n </button>\n </div>\n </action-access-control-wrapper>\n </div>\n <div class=\"resource-container\">\n @if (config().searchable) {\n <mat-form-field class=\"search\">\n <input matInput #qry (keyup)=\"store.searchTokens.set(qry.value)\" placeholder=\"Search\" aria-label=\"Search\" />\n @if (searchableFields() !== '') {\n <mat-hint>Search {{ searchableFields() }}</mat-hint>\n }\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n }\n <ccc-grid\n [rowData]=\"processedRowData()\"\n [columnDefs]=\"columns()\"\n [enableRowExpansion]=\"config().enableRowExpansion\"\n [detailTemplate]=\"expandedRowTemplate\">\n </ccc-grid>\n </div>\n</div>\n\n<ng-template #expandedRowTemplate let-rowData>\n <ng-container\n *ngComponentOutlet=\"\n compoundResourceComponent();\n inputs: {\n uuid: rowData.id,\n navAfterDelete: false,\n deleted: store.reloadListData.bind(store),\n resourceConfig: expansionConfig(),\n }\n \">\n </ng-container>\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, inject, Injector, input, signal, Type, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ListViewConfig, RecordData, RootConfig } from '@cccteam/ccc-lib/src/types';\nimport { ResourceCreateComponent } from '../resource-create/resource-create.component';\nimport { ResourceListComponent } from '../resource-list/resource-list.component';\nimport { ResourceStore } from '../resource-store.service';\n\n@Component({\n standalone: true,\n selector: 'ccc-resource-list-create',\n templateUrl: './resource-list-create.component.html',\n styleUrl: './resource-list-create.component.scss',\n imports: [\n MatExpansionModule,\n MatIconModule,\n MatTooltipModule,\n MatButtonModule,\n ResourceCreateComponent,\n ResourceListComponent,\n NgTemplateOutlet,\n ],\n providers: [ResourceStore],\n})\nexport class ResourceListCreateComponent {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n compoundResourceComponent = input.required<Type<any>>();\n\n injector = inject(Injector);\n store = inject(ResourceStore);\n listChild = viewChild<ResourceListComponent, ResourceListComponent>('list', { read: ResourceListComponent });\n\n route = inject(ActivatedRoute);\n router = inject(Router);\n create = signal<boolean>(false);\n parentId = input<string>();\n parentData = input<RecordData>({});\n searchParams = input<Record<string, string>[]>([]);\n resourceConfig = input<ListViewConfig>();\n isRootList = input<boolean>(true);\n\n childKey = computed(() => {\n if (!this.config().parentRelation) {\n return '';\n }\n return this.config().parentRelation?.childKey as string;\n });\n\n filter = computed(() => {\n const filters = [];\n if (this.childKey() !== '' && this.parentKey() !== '') {\n filters.push(`${this.childKey()}:eq:${this.parentKey()}`);\n }\n return filters.join(',');\n });\n\n parentKey = computed(() => {\n if (this.parentData() === undefined || this.childKey() === undefined) {\n return '';\n }\n const parent = this.config().parentRelation?.parentKey;\n return this.parentData()?.[parent] || '';\n });\n\n config = computed(() => {\n const inputConfig = this.resourceConfig();\n if (inputConfig) {\n return inputConfig as ListViewConfig;\n }\n return this.rootConfig().parentConfig as ListViewConfig;\n });\n\n expPanel = viewChild<MatExpansionPanel, MatExpansionPanel>('expPanel', { read: MatExpansionPanel });\n\n rootConfig = computed(() => {\n return this.route.snapshot.data['config'] as RootConfig;\n });\n\n createLinkType = computed(() => {\n return this.config().loadCreatedResource && this.create();\n });\n\n createConfig = computed(() => {\n const config = this.config();\n if (Object.keys(config.createConfig).length !== 0) {\n return config.createConfig;\n }\n return config;\n });\n\n createResource(event: MouseEvent): void {\n event.stopPropagation();\n this.create.set(true);\n\n if (this.expPanel() && this.expPanel()?.closed) {\n this.expPanel()?.open();\n }\n }\n\n makeCreatePatches(): void {\n if (this.create()) {\n this.listChild()?.reloadListData();\n this.create.set(false);\n }\n }\n}\n","@if (config().collapsible) {\n <div class=\"page-container\">\n <mat-expansion-panel\n #expPanel\n [@.disabled]=\"true\"\n disabled=\"{{ !config().collapsible }}\"\n expanded=\"{{ !config().collapsible }}\">\n @if (config().collapsible || config().title) {\n <mat-expansion-panel-header>\n <mat-panel-title>\n <h1 class=\"title\">\n {{ config().title }}\n </h1>\n </mat-panel-title>\n @if (config().createTitle !== '') {\n <button\n mat-icon-button\n class=\"exp-panel-add-element-btn\"\n color=\"accent\"\n (click)=\"createResource($event)\"\n matTooltip=\"{{ config().createButtonLabel }}\"\n matTooltipPosition=\"above\">\n <mat-icon color=\"accent\">add_circle</mat-icon>\n </button>\n }\n </mat-expansion-panel-header>\n } @else {\n <div class=\"no-title-exp-panel-padding\"></div>\n }\n\n <ng-container *ngTemplateOutlet=\"resourceComponents\"></ng-container>\n </mat-expansion-panel>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"resourceComponents\"></ng-container>\n}\n\n<ng-template #resourceComponents>\n @if (create()) {\n <ccc-resource-create\n [resourceConfig]=\"createConfig()\"\n [parentData]=\"parentData()\"\n [loadCreatedResource]=\"config().loadCreatedResource\"\n (complete)=\"makeCreatePatches()\">\n </ccc-resource-create>\n }\n\n <ccc-resource-list\n #list\n [viewRoute]=\"rootConfig().routeData.route\"\n [resourceConfig]=\"config()\"\n [filter]=\"filter()\"\n [hideCreateButton]=\"create()\"\n [relatedData]=\"parentData()\"\n [parentId]=\"parentId()\"\n [linkCreateType]=\"createLinkType()\"\n [isRootList]=\"isRootList()\"\n (createMode)=\"create.set($event)\"\n [compoundResourceComponent]=\"compoundResourceComponent()\">\n </ccc-resource-list>\n</ng-template>\n","import { Component, computed, effect, input, Type, untracked, viewChild, ViewContainerRef } from '@angular/core';\nimport { ChildResourceConfig, ComponentConfig, FieldName, RecordData } from '@cccteam/ccc-lib/src/types';\nimport { ResourceStore } from '../resource-store.service';\n\n@Component({\n selector: 'ccc-resource-resolver',\n imports: [],\n templateUrl: './resource-resolver.component.html',\n styleUrl: './resource-resolver.component.scss',\n providers: [ResourceStore],\n})\nexport class ResourceResolverComponent {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n compoundResourceComponent = input.required<Type<any>>();\n resourceConfig = input<ChildResourceConfig>();\n\n config = computed(() => {\n return this.resourceConfig() as ComponentConfig;\n });\n\n dynamicSlot = viewChild.required<ViewContainerRef, ViewContainerRef>('dynamicSlot', { read: ViewContainerRef });\n\n parentData = input.required<RecordData>();\n\n constructor() {\n effect(() => {\n const parentData = this.parentData();\n const config = this.config();\n const params = config?.params;\n if (params === undefined || config === undefined) {\n return;\n }\n\n untracked(() => {\n this.dynamicSlot().clear();\n const component = config.component;\n switch (component) {\n case 'SwitchResolver': {\n let uuid = '';\n let caseConfig = {} as ChildResourceConfig;\n for (const c of params.cases) {\n if (parentData) {\n if (parentData[c.parentField] === c.caseId) {\n uuid = String(parentData[c.childId]);\n caseConfig = c.config;\n if ('parentRelation' in caseConfig) {\n caseConfig.parentRelation.childKey = '' as FieldName;\n caseConfig.parentRelation.parentKey = '' as FieldName;\n }\n break;\n }\n }\n }\n\n if (uuid == '') {\n return;\n }\n\n // Use dynamic import to avoid circular dependency\n const primaryComponentRef = this.dynamicSlot().createComponent(this.compoundResourceComponent());\n primaryComponentRef.setInput('resourceConfig', caseConfig);\n primaryComponentRef.setInput('uuid', uuid);\n primaryComponentRef.setInput('parentData', parentData);\n break;\n }\n default:\n console.warn('Component not found', component);\n // add default component to dynamic slot\n break;\n }\n });\n });\n }\n}\n","<ng-template #dynamicSlot></ng-template>","import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogActions, MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'ccc-delete-resource-confirmation-modal',\n imports: [MatDialogModule, MatFormFieldModule, MatDialogActions, MatButtonModule, MatInputModule],\n templateUrl: './delete-resource-confirmation-modal.component.html',\n styleUrls: ['./delete-resource-confirmation-modal.component.scss'],\n})\nexport class DeleteResourceConfirmationModalComponent {}\n","<div mat-dialog-title>Are you sure you want to delete this resource?</div>\n<mat-dialog-actions align=\"end\">\n <button mat-raised-button color=\"warn\" [mat-dialog-close]=\"false\">Cancel</button>\n <button mat-raised-button color=\"accent\" [mat-dialog-close]=\"true\">Confirm</button>\n</mat-dialog-actions>\n","import { CommonModule, Location } from '@angular/common';\nimport {\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n Injector,\n input,\n model,\n OnInit,\n output,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { sparseFormData } from '@cccteam/ccc-lib/src/forms';\nimport {\n AlertLevel,\n DataType,\n FieldElement,\n ListViewConfig,\n RecordData,\n Resource,\n RESOURCE_META,\n RootConfig,\n RPCConfig,\n ViewConfig,\n} from '@cccteam/ccc-lib/src/types';\nimport { NotificationService } from '@cccteam/ccc-lib/src/ui-notification-service';\nimport { filter, tap } from 'rxjs';\nimport { ActionAccessControlWrapperComponent } from '../actions/action-button-smart/action-access-control-wrapper.component';\nimport { ActionButtonContext } from '../actions/actions.interface';\nimport { RpcButtonComponent } from '../actions/rpc-button/rpc-button.component';\nimport { DeleteResourceConfirmationModalComponent } from '../delete-resource-confirmation-modal/delete-resource-confirmation-modal.component';\nimport { FormStateService } from '../form-state.service';\nimport { civildateCoercion, flattenElements } from '../gui-constants';\nimport { ResourceCreateComponent } from '../resource-create/resource-create.component';\nimport { ResourceLayoutComponent } from '../resource-layout/resource-layout.component';\nimport { ResourceStore } from '../resource-store.service';\nimport { DeleteOperation, metadataTypeCoercion, UpdateOperation } from '../resources-helpers';\n\n@Component({\n selector: 'ccc-resource-view',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatDividerModule,\n ResourceLayoutComponent,\n MatExpansionPanel,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n RpcButtonComponent,\n CommonModule,\n ActionAccessControlWrapperComponent,\n ResourceCreateComponent,\n ],\n templateUrl: './resource-view.component.html',\n styleUrl: './resource-view.component.scss',\n providers: [ResourceStore],\n})\nexport class ResourceViewComponent implements OnInit {\n resourceMeta = inject(RESOURCE_META);\n location = inject(Location);\n router = inject(Router);\n activatedRoute = inject(ActivatedRoute);\n notifications = inject(NotificationService);\n store = inject(ResourceStore);\n injector = inject(Injector);\n destroyRef = inject(DestroyRef);\n formState = inject(FormStateService);\n dialog = inject(MatDialog);\n\n editMode: WritableSignal<'edit' | 'view'> = signal('view');\n uuid = input.required<string>();\n config = input.required<ViewConfig | ListViewConfig>();\n relatedData = input<RecordData>({});\n compoundResourceView = input<boolean>(false);\n isDirty = signal(false);\n\n displayFormInvalidMessage = signal<boolean>(false);\n deleted = output<boolean>();\n navAfterDelete = input(true);\n\n showCreateForm = model(false);\n createConfig = computed(() => {\n if (Object.keys(this.config().createConfig || {}).length > 0) {\n return this.config().createConfig;\n }\n return this.config();\n });\n\n rootConfig = computed(() => {\n return this.activatedRoute.snapshot.data['config'] as RootConfig;\n });\n\n showCloseButton = computed(() => {\n const config = this.config();\n const showBackButton = config.showBackButton ?? true;\n if (config) {\n return showBackButton && config.primaryResource === this.rootConfig().parentConfig.primaryResource;\n }\n return showBackButton;\n });\n\n commonButtonConfig = computed(() => {\n const config = this.config();\n\n if (config === undefined) {\n return undefined;\n }\n\n if (config.shouldRenderActions === undefined) {\n return undefined;\n }\n\n return {\n meta: this.store.resourceMeta(),\n resourceData: this.relatedData(),\n config,\n };\n });\n\n editButtonContext = computed(() => {\n const commonConfig = this.commonButtonConfig();\n\n if (commonConfig === undefined) {\n return undefined;\n }\n\n return {\n actionType: 'edit',\n meta: commonConfig.meta,\n resourceData: commonConfig.resourceData,\n shouldRender: commonConfig.config.shouldRenderActions.edit,\n } satisfies ActionButtonContext;\n });\n\n deleteButtonContext = computed(() => {\n const commonConfig = this.commonButtonConfig();\n\n if (commonConfig === undefined) {\n return undefined;\n }\n\n return {\n actionType: 'delete',\n meta: commonConfig.meta,\n resourceData: commonConfig.resourceData,\n shouldRender: (data: RecordData): boolean => commonConfig.config.shouldRenderActions.delete(data),\n } satisfies ActionButtonContext;\n });\n\n inlineRpcConfigs = computed(() => {\n const config = this.config();\n if (config === undefined) {\n return [];\n }\n\n const rpcConfigs = config.rpcConfigs?.filter((rpc: RPCConfig) => rpc.placement === 'inline');\n\n return rpcConfigs?.map((config) => {\n return {\n config,\n context: {\n actionType: 'rpc',\n shouldRender: config.shouldRender,\n resourceData: this.relatedData(),\n } satisfies ActionButtonContext,\n };\n });\n });\n\n endRpcConfigs = computed(() => {\n const config = this.config();\n\n if (config === undefined) {\n return [];\n }\n\n const rpcConfigs = config.rpcConfigs?.filter((rpc: RPCConfig) => rpc.placement === 'end');\n\n return rpcConfigs?.map((config) => {\n return {\n config,\n context: {\n actionType: 'rpc',\n shouldRender: config.shouldRender,\n resourceData: this.relatedData(),\n } satisfies ActionButtonContext,\n };\n });\n });\n\n useExpansionPanel = computed(() => {\n const config = this.config();\n // TODO: Investigate why we're doing this check, it's weird because viewType is not part of the input configs\n if (config && 'viewType' in config && config.viewType !== 'View') {\n return false;\n }\n\n return config.collapsible || !this.compoundResourceView();\n });\n\n resourceConfigRouteSnapshot = computed(() => {\n return (\n this.config() ||\n (this.activatedRoute.snapshot.data['config'] as RootConfig)?.parentConfig ||\n ({} as ViewConfig | ListViewConfig)\n );\n });\n\n emptyFormGroup = new FormGroup({});\n\n form = computed(() => {\n const meta = this.store.resourceMeta();\n const resourceData = this.store.viewData();\n const config = this.config();\n\n if (meta === undefined || resourceData === undefined || config === undefined) {\n return this.emptyFormGroup;\n }\n\n const fg = new FormGroup({});\n const pristineValues: Record<string, DataType | null> = {};\n const allElements = flattenElements(config.elements);\n\n for (const field of meta.fields || []) {\n const isFieldNameRegistered = fg.get(field.fieldName) !== null;\n if (isFieldNameRegistered) {\n continue;\n }\n\n const findConfig = allElements.find((element) => element.type === 'field' && element.name === field.fieldName);\n const fieldConfig = findConfig as FieldElement | undefined;\n if (!fieldConfig) {\n continue;\n }\n\n let value: DataType | null = null;\n const stringValue = resourceData?.[field.fieldName] ? String(resourceData[field.fieldName]) : '';\n\n if (field.displayType === 'civildate' && stringValue) {\n value = civildateCoercion(stringValue);\n } else if (resourceData[field.fieldName] !== undefined) {\n value = resourceData[field.fieldName];\n }\n\n const control = new FormControl(value);\n\n if (fieldConfig.validators.length > 0) {\n control.setValidators(fieldConfig.validators);\n }\n\n fg.addControl(field.fieldName, control);\n pristineValues[field.fieldName] = value;\n }\n this.pristineFormValues = pristineValues;\n\n return fg;\n });\n\n pristineFormValues: Record<string, DataType | null> = {};\n\n route = computed(() => {\n const meta = this.store.resourceMeta();\n if (!meta) return '';\n return meta.consolidatedRoute || meta.route;\n });\n\n primaryKeys = computed(() => {\n const meta = this.store.resourceMeta();\n if (!meta) return [];\n return meta.fields\n .filter((field) => field.primaryKey)\n .sort((a, b) => a.primaryKey!.ordinalPosition - b.primaryKey!.ordinalPosition);\n });\n\n primaryKeyPath = computed(() => {\n const meta = this.store.resourceMeta();\n const isConsolidated = !!meta.consolidatedRoute;\n let resourceIdentifier = '';\n if (isConsolidated) {\n resourceIdentifier = '/' + String(meta.route);\n }\n return (\n resourceIdentifier +\n '/' +\n this.primaryKeys()\n .map((field) => this.store.viewData()[field.fieldName])\n .join('/')\n );\n });\n\n ngOnInit(): void {\n if (this.resourceMeta(this.config().primaryResource as Resource)) {\n this.store.resourceName.set(this.config().primaryResource as Resource);\n this.store.resourceMeta.set(this.resourceMeta(this.config().primaryResource as Resource));\n }\n\n this.inlineRpcConfigs();\n this.endRpcConfigs();\n }\n\n setEditMode(mode: 'edit' | 'view'): void {\n if (mode === 'view') {\n const changeData = sparseFormData(this.form(), this.pristineFormValues);\n if (Object.keys(changeData).length !== 0) {\n this.notifications.addGlobalNotification({\n message: 'You have unsaved changes.',\n link: '',\n level: AlertLevel.ERROR,\n });\n return;\n }\n this.editMode.set('view');\n } else if (mode === 'edit') {\n this.editMode.set('edit');\n }\n }\n\n saveForm(): void {\n if (!this.form().valid) {\n this.displayFormInvalidMessage.set(true);\n this.form().markAllAsTouched();\n return;\n }\n\n this.displayFormInvalidMessage.set(false);\n\n const resourceMeta = this.store.resourceMeta();\n if (!resourceMeta) {\n return;\n }\n\n const sparseData = sparseFormData(this.form(), this.pristineFormValues);\n const coercedSparseData = metadataTypeCoercion(sparseData, resourceMeta);\n\n const updatePatch: UpdateOperation = {\n op: 'patch',\n value: coercedSparseData,\n path: this.primaryKeyPath(),\n };\n\n this.pristineFormValues = this.form().getRawValue();\n\n if (Object.keys(coercedSparseData).length === 0) {\n return;\n }\n this.store\n .makePatches([updatePatch], this.route(), this.store.resourceName())\n .pipe(\n tap(() => {\n this.form().markAsPristine();\n this.setEditMode('view');\n this.formState.decrementDirtyForms();\n this.store.reloadViewData();\n }),\n )\n .subscribe();\n }\n\n resetForm(): void {\n this.form().reset();\n this.form().patchValue(this.pristineFormValues);\n this.setEditMode('view');\n if (this.form().dirty) {\n this.formState.decrementDirtyForms();\n }\n }\n\n confirmDeleteResource(): void {\n const existingDialog = this.dialog.openDialogs.find(\n (d) => d.componentInstance instanceof DeleteResourceConfirmationModalComponent,\n );\n\n const dialogRef =\n existingDialog ?? this.dialog.open(DeleteResourceConfirmationModalComponent, { delayFocusTrap: false });\n\n const result = dialogRef.afterClosed().pipe(\n tap((value) => {\n if (value === true) {\n console.debug('Deleting resource | ', this.config().title, '|', this.relatedId());\n this.deleteResource();\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n );\n\n result.subscribe();\n }\n\n deleteResource(): void {\n const deletePatch: DeleteOperation = {\n op: 'remove',\n value: {},\n path: this.primaryKeyPath(),\n };\n\n this.store\n .makePatches([deletePatch], this.route(), this.store.resourceName())\n .pipe(\n tap(() => {\n this.deleted.emit(true);\n }),\n filter(() => this.compoundResourceView()),\n tap(() => {\n const navAfterDelete = this.navAfterDelete() !== false;\n if (navAfterDelete) {\n this.location.back();\n } else {\n this.showCreateForm.set(true);\n }\n }),\n )\n .subscribe();\n }\n\n relatedId(): string {\n const uuid = this.uuid();\n const relatedData = this.relatedData();\n const config = this.config();\n if (config.parentRelation?.parentKey) {\n return String(relatedData[config.parentRelation.parentKey]);\n }\n return uuid;\n }\n\n constructor() {\n effect(() => {\n console.debug('USAGE | New FormGroup subscription for: ', this.config().title);\n\n this.form()\n .valueChanges.pipe(\n tap(() => {\n const dirty = this.form().dirty;\n if (dirty !== this.isDirty()) {\n this.isDirty.set(dirty);\n if (dirty) {\n this.formState.incrementDirtyForms();\n } else {\n this.formState.decrementDirtyForms();\n }\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n });\n\n effect(() => {\n const id = this.relatedId();\n const create = this.showCreateForm();\n this.store.uuid.set(id);\n if (!create) {\n this.store.buildStoreViewData();\n }\n });\n }\n\n createResource(): void {\n this.showCreateForm.set(false);\n this.store.buildStoreViewData();\n }\n}\n","@if (useExpansionPanel()) {\n <div class=\"resource-view\">\n <mat-expansion-panel [@.disabled]=\"true\" [disabled]=\"!config().collapsible\" [expanded]=\"!config().collapsible\">\n @if (config().title) {\n <mat-expansion-panel-header>\n <mat-panel-title>\n <h1 class=\"title\">{{ showCreateForm() ? 'Create' : '' }}{{ config().title }}</h1>\n </mat-panel-title>\n </mat-expansion-panel-header>\n } @else {\n <div class=\"no-title-exp-panel-padding\"></div>\n }\n <ng-container *ngTemplateOutlet=\"headerSlot\"></ng-container>\n @if (store.viewStatus() === 'resolved') {\n <div class=\"resource-container\" [class.form-edit-mode]=\"editMode() === 'edit'\">\n <form [formGroup]=\"form()\">\n <div class=\"resource row\">\n @if (showCreateForm()) {\n <ccc-resource-create\n [resourceConfig]=\"createConfig()\"\n [parentData]=\"relatedData()\"\n (complete)=\"createResource()\">\n </ccc-resource-create>\n } @else {\n <ng-container *ngTemplateOutlet=\"formSlot\"></ng-container>\n }\n </div>\n </form>\n <ng-container *ngTemplateOutlet=\"footerSlot\"></ng-container>\n </div>\n } @else {\n <div class=\"resource-container empty\">\n <div class=\"resource row\"></div>\n </div>\n }\n </mat-expansion-panel>\n </div>\n} @else {\n <div class=\"page-container\">\n @if (!showCreateForm()) {\n <ng-container *ngTemplateOutlet=\"headerSlot\"></ng-container>\n }\n @if (store.viewStatus() === 'resolved') {\n <div class=\"resource-container base-container-bg\" [class.form-edit-mode]=\"editMode() === 'edit'\">\n <form [formGroup]=\"form()\">\n <div class=\"resource row\">\n @if (showCreateForm()) {\n <ccc-resource-create\n [resourceConfig]=\"createConfig()\"\n [parentData]=\"relatedData()\"\n (complete)=\"createResource()\">\n </ccc-resource-create>\n } @else {\n <ng-container *ngTemplateOutlet=\"formSlot\"></ng-container>\n }\n </div>\n </form>\n </div>\n } @else {\n <div class=\"resource-container\">\n <div class=\"resource row empty\"></div>\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerSlot\"></ng-container>\n </div>\n}\n\n<ng-template #formSlot>\n @for (element of config().elements; track element) {\n @if (element.type === 'section' || element.type === 'computedDisplayField' || element.type === 'padding') {\n <ccc-resource-layout-template\n [element]=\"element\"\n [meta]=\"store.resourceMeta()\"\n [fieldClass]=\"config().fieldClass\"\n [editMode]=\"editMode()\"\n [relatedData]=\"relatedData()\"\n [form]=\"form()\">\n </ccc-resource-layout-template>\n } @else {\n <ccc-resource-layout-template\n [element]=\"element\"\n [meta]=\"store.resourceMeta()\"\n [fieldClass]=\"config().fieldClass\"\n [pristineValue]=\"pristineFormValues[element.name]\"\n [editMode]=\"editMode()\"\n [relatedData]=\"relatedData()\"\n [form]=\"form()\">\n </ccc-resource-layout-template>\n }\n }\n</ng-template>\n\n<ng-template #headerSlot>\n <div class=\"header-container\">\n <div class=\"state-buttons\">\n @if (store.viewStatus() === 'resolved') {\n @for (rpc of inlineRpcConfigs(); track rpc.context) {\n <action-access-control-wrapper [actionContext]=\"rpc.context\">\n <ccc-rpc-button\n [rpcConfig]=\"rpc.config\"\n [relatedData]=\"relatedData()\"\n [primaryResource]=\"config().primaryResource\">\n </ccc-rpc-button>\n </action-access-control-wrapper>\n }\n @if (editMode() === 'view') {\n <action-access-control-wrapper [actionContext]=\"editButtonContext()\">\n <div class=\"edit-button\">\n <button mat-raised-button color=\"accent\" (click)=\"setEditMode('edit')\">\n <div class=\"button-text\">\n <mat-icon>edit</mat-icon>\n <span class=\"mode-text\"> Edit </span>\n </div>\n </button>\n </div>\n </action-access-control-wrapper>\n\n <action-access-control-wrapper [actionContext]=\"deleteButtonContext()\">\n <button mat-raised-button color=\"primary\" (click)=\"confirmDeleteResource()\">Delete</button>\n </action-access-control-wrapper>\n }\n\n @if (editMode() === 'edit') {\n @if (form().dirty) {\n <div class=\"unsaved message\">You have unsaved changes!</div>\n }\n @if (!form().valid && displayFormInvalidMessage()) {\n <div class=\"invalid message\">Please complete or fix required fields.</div>\n }\n <button mat-raised-button color=\"primary\" (click)=\"resetForm()\">Cancel</button>\n <button mat-raised-button color=\"accent\" (click)=\"saveForm()\" [disabled]=\"form().pristine\">Save</button>\n }\n\n @if (showCloseButton()) {\n <div class=\"close-button\">\n <button mat-icon-button color=\"warn\" (click)=\"location.back()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #footerSlot>\n @for (rpc of endRpcConfigs(); track rpc) {\n <action-access-control-wrapper [actionContext]=\"rpc.context\">\n <ccc-rpc-button\n [rpcConfig]=\"rpc.config\"\n [relatedData]=\"relatedData()\"\n [primaryResource]=\"config().primaryResource\">\n </ccc-rpc-button>\n </action-access-control-wrapper>\n }\n</ng-template>\n","import { Location } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Injector,\n input,\n OnInit,\n output,\n signal,\n Type,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\nimport {\n ChildResourceConfig,\n ParentResourceConfig,\n RecordData,\n Resource,\n RESOURCE_META,\n RootConfig,\n} from '@cccteam/ccc-lib/src/types';\nimport { ActionAccessControlWrapperComponent } from '../actions/action-button-smart/action-access-control-wrapper.component';\nimport { ActionButtonContext } from '../actions/actions.interface';\nimport { RpcButtonComponent } from '../actions/rpc-button/rpc-button.component';\nimport { ResourceArrayViewComponent } from '../resource-array-view/resource-array-view.component';\nimport { ResourceListCreateComponent } from '../resource-list-create/resource-list-create.component';\nimport { ResourceResolverComponent } from '../resource-resolver/resource-resolver.component';\nimport { ResourceStore } from '../resource-store.service';\nimport { ResourceViewComponent } from '../resource-view/resource-view.component';\n\n@Component({\n selector: 'compound-resource',\n templateUrl: './compound-resource.component.html',\n styleUrl: './compound-resource.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIconModule,\n RouterModule,\n MatButtonModule,\n RpcButtonComponent,\n ResourceViewComponent,\n ResourceListCreateComponent,\n ResourceArrayViewComponent,\n ResourceResolverComponent,\n ActionAccessControlWrapperComponent,\n RouterModule,\n ],\n providers: [ResourceStore],\n})\nexport class CompoundResourceComponent implements OnInit {\n location = inject(Location);\n route = inject(ActivatedRoute);\n store = inject(ResourceStore);\n injector = inject(Injector);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n componentRef: Type<any> = CompoundResourceComponent;\n resourceMeta = inject(RESOURCE_META);\n\n resourceConfig = input<ParentResourceConfig | ChildResourceConfig>();\n isArrayChild = input<boolean>(false);\n uuid = input.required<string>();\n parentData = input<RecordData>();\n\n rootConfig = computed(() => this.route.snapshot.data['config'] as RootConfig);\n\n emptyOneToOne = signal(false);\n missingRoot = input(false);\n resourceCreate = output();\n deleted = output<boolean>();\n navAfterDelete = input<boolean>(true);\n navAfterDeleteConsideringRoot = computed(() => {\n const navAfterDeleteInput = this.navAfterDelete();\n if (navAfterDeleteInput === undefined) return true;\n return false;\n });\n\n hasElements = computed(() => {\n const config = this.primaryConfig();\n return config && (config.type === 'ListView' || config.type === 'View') && config.elements.length > 0;\n });\n\n primaryConfigParentId = computed(() => {\n const config = this.primaryConfig();\n const data = this.resolvedData();\n if (config.type === 'View' || config.type === 'ListView') {\n const parentKey = config.parentRelation?.parentKey;\n if (parentKey !== '') {\n return String(data[parentKey]);\n }\n }\n return this.uuid();\n });\n\n primaryConfig = computed(() => {\n const config = this.resourceConfig();\n if (config) {\n return config;\n }\n return this.rootConfig().parentConfig;\n });\n\n title = computed(() => {\n if (this.isArrayChild()) {\n return '';\n }\n const config = this.primaryConfig();\n if (config.type !== 'Component') {\n return config.title;\n }\n return '';\n });\n\n isRootConfig = computed(() => {\n return this.resourceConfig() === undefined;\n });\n\n configs = computed(() => {\n if (this.hasElements() && this.emptyOneToOne()) {\n return [];\n }\n\n if (this.isRootConfig()) {\n return this.rootConfig().relatedConfigs;\n }\n\n const config = this.primaryConfig();\n if (config.type === 'ListView' || config.type === 'View') {\n return config.relatedConfigs;\n }\n return [];\n });\n\n rpcConfigs = computed(() => {\n const isRootConfig = this.isRootConfig();\n const rootConfig = this.rootConfig();\n\n if (isRootConfig === undefined || rootConfig === undefined) {\n return [];\n }\n\n if (!isRootConfig || rootConfig.rpcConfigs === undefined) {\n return [];\n }\n\n return rootConfig.rpcConfigs?.map((config) => ({\n config,\n context: {\n actionType: 'rpc',\n shouldRender: config.shouldRender,\n resourceData: this.resolvedData(),\n } satisfies ActionButtonContext,\n }));\n });\n hasRpcConfigs = computed(() => !!this.rpcConfigs() && this.rpcConfigs()!.length > 0);\n\n resolvedData = computed(() => {\n if (Object.keys(this.store.viewData()).length > 0) {\n return this.store.viewData() as RecordData;\n }\n\n return this.parentData() || ({} as RecordData);\n });\n\n ngOnInit(): void {\n const resource = this.primaryConfig().primaryResource as Resource;\n const meta = this.resourceMeta(resource);\n\n if (meta) {\n this.store.resourceName.set(resource);\n this.store.resourceMeta.set(meta);\n }\n }\n\n constructor() {\n effect(() => {\n this.store.uuid.set(this.primaryConfigParentId());\n\n const c = this.primaryConfig();\n if (this.missingRoot()) {\n return;\n }\n if (c.type === 'View') {\n this.store.buildStoreViewData();\n } else if (c.type === 'ListView') {\n this.store.buildStoreListData();\n this.store.buildStoreViewData();\n }\n });\n }\n\n goBack(): void {\n this.location.back();\n }\n}\n","<div class=\"page-container\">\n <div class=\"header-container\">\n <div class=\"title\" [class.title-without-back]=\"title()\">\n @if (title() !== '') {\n <h1>{{ title() }}</h1>\n }\n </div>\n </div>\n\n @if (hasElements() || configs().length > 0) {\n <div class=\"resource-container\" [class.empty-elements]=\"!hasElements()\">\n @let primaryConfigRef = primaryConfig();\n @if (primaryConfigRef.type === 'View' || primaryConfigRef.type === 'ListView') {\n <ccc-resource-view\n [uuid]=\"uuid()\"\n [config]=\"primaryConfigRef\"\n [relatedData]=\"resolvedData()\"\n [showCreateForm]=\"missingRoot()\"\n [compoundResourceView]=\"true\"\n [navAfterDelete]=\"navAfterDeleteConsideringRoot()\"\n (createChange)=\"resourceCreate.emit()\"\n (deleted)=\"deleted.emit(true)\">\n </ccc-resource-view>\n }\n\n @for (config of configs(); track config) {\n @let hasrelatedConfigs = 'relatedConfigs' in config && config.relatedConfigs.length > 0;\n @if (hasrelatedConfigs) {\n <compound-resource [uuid]=\"primaryConfigParentId()\" [parentData]=\"resolvedData()\" [resourceConfig]=\"config\">\n </compound-resource>\n } @else if (config.type === 'ListView') {\n <ccc-resource-list-create\n [resourceConfig]=\"config\"\n [parentData]=\"resolvedData()\"\n [isRootList]=\"false\"\n [parentId]=\"primaryConfigParentId()\"\n [compoundResourceComponent]=\"componentRef\">\n </ccc-resource-list-create>\n } @else if (config.type === 'Array') {\n <ccc-resource-array-view\n [resourceConfig]=\"config\"\n [parentData]=\"store.viewData()\"\n [compoundResourceComponent]=\"componentRef\">\n </ccc-resource-array-view>\n } @else if (config.type === 'View') {\n @let relatedId = resolvedData()[config.parentRelation.parentKey] || primaryConfigParentId();\n @if (relatedId) {\n <ccc-resource-view\n [navAfterDelete]=\"navAfterDeleteConsideringRoot()\"\n [uuid]=\"relatedId + ''\"\n [config]=\"config\"\n [relatedData]=\"resolvedData()\"></ccc-resource-view>\n }\n } @else if (config.type === 'Component') {\n <ccc-resource-resolver\n [parentData]=\"resolvedData()\"\n [resourceConfig]=\"config\"\n [compoundResourceComponent]=\"componentRef\">\n </ccc-resource-resolver>\n }\n }\n @if (hasRpcConfigs()) {\n <div class=\"rpc-buttons-container\">\n @for (rpc of rpcConfigs(); track rpc.config.label) {\n <action-access-control-wrapper [actionContext]=\"rpc.context\">\n <ccc-rpc-button\n [rpcConfig]=\"rpc.config\"\n [relatedData]=\"resolvedData()\"\n [primaryResource]=\"primaryConfig().primaryResource\">\n </ccc-rpc-button>\n </action-access-control-wrapper>\n }\n </div>\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i6","i5"],"mappings":"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"}