@tinya-code/gas-admin-ui 0.2.0-alpha.12 → 0.2.0-alpha.15

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 (369) hide show
  1. package/README.md +222 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +3 -15
  4. package/src/lib/actions/action-registry.spec.ts +52 -0
  5. package/src/lib/actions/action-registry.ts +126 -0
  6. package/src/lib/actions/action-service.spec.ts +215 -0
  7. package/src/lib/actions/action-service.ts +87 -0
  8. package/src/lib/actions/descriptors.spec.ts +155 -0
  9. package/src/lib/actions/descriptors.ts +154 -0
  10. package/src/lib/columns/column-cell.ts +33 -0
  11. package/src/lib/columns/column-defaults.spec.ts +99 -0
  12. package/src/lib/columns/column-defaults.ts +84 -0
  13. package/src/lib/columns/column-format.spec.ts +274 -0
  14. package/src/lib/columns/descriptors.ts +113 -0
  15. package/src/lib/columns/format-badge.ts +51 -0
  16. package/src/lib/columns/format-boolean.ts +58 -0
  17. package/src/lib/columns/format-currency.ts +30 -0
  18. package/src/lib/columns/format-date.ts +35 -0
  19. package/src/lib/columns/format-number.ts +32 -0
  20. package/src/lib/columns/format-text.ts +23 -0
  21. package/src/lib/columns/format-thumbnail.ts +63 -0
  22. package/src/lib/core/adapters/firebase-auth.adapter.ts +6 -0
  23. package/src/lib/core/guards/auth.guard.spec.ts +88 -0
  24. package/src/lib/core/guards/auth.guard.ts +48 -0
  25. package/src/lib/core/guards/unsaved-changes.guard.ts +16 -0
  26. package/src/lib/core/interceptors/api-error.interceptor.spec.ts +182 -0
  27. package/src/lib/core/interceptors/api-error.interceptor.ts +87 -0
  28. package/src/lib/core/models/api.model.ts +104 -0
  29. package/src/lib/core/models/schema-descriptions.ts +118 -0
  30. package/src/lib/core/models/schema.model.ts +1097 -0
  31. package/src/lib/core/registry/composition-validator.spec.ts +358 -0
  32. package/src/lib/core/registry/composition-validator.ts +270 -0
  33. package/src/lib/core/registry/field-validators.spec.ts +199 -0
  34. package/src/lib/core/registry/field-validators.ts +440 -0
  35. package/src/lib/core/registry/render-host.spec.ts +208 -0
  36. package/src/lib/core/registry/render-host.ts +646 -0
  37. package/src/lib/core/registry/render-registry.spec.ts +96 -0
  38. package/src/lib/core/registry/render-registry.ts +312 -0
  39. package/src/lib/core/registry/schema-catalog.ts +156 -0
  40. package/src/lib/core/services/api.service.spec.ts +1142 -0
  41. package/src/lib/core/services/api.service.ts +371 -0
  42. package/src/lib/core/services/auth.service.spec.ts +653 -0
  43. package/src/lib/core/services/auth.service.ts +503 -0
  44. package/src/lib/core/services/config.service.spec.ts +121 -0
  45. package/src/lib/core/services/config.service.ts +119 -0
  46. package/src/lib/core/services/data-source.service.spec.ts +179 -0
  47. package/src/lib/core/services/data-source.service.ts +142 -0
  48. package/src/lib/core/services/error-mapper.service.spec.ts +50 -0
  49. package/src/lib/core/services/error-mapper.service.ts +49 -0
  50. package/src/lib/core/services/notification.service.ts +73 -0
  51. package/src/lib/core/services/relation-drawer.service.ts +41 -0
  52. package/src/lib/core/services/theme.service.spec.ts +106 -0
  53. package/src/lib/core/services/theme.service.ts +86 -0
  54. package/src/lib/core/services/transport.spec.ts +198 -0
  55. package/src/lib/core/services/transport.ts +164 -0
  56. package/src/lib/core/services/upload.service.ts +81 -0
  57. package/src/lib/core/testing/categories.schema.ts +125 -0
  58. package/src/lib/core/testing/orders.schema.ts +372 -0
  59. package/src/lib/core/testing/products.schema.ts +258 -0
  60. package/src/lib/core/testing/site.schema.ts +195 -0
  61. package/src/lib/core/testing/test-catalog.ts +21 -0
  62. package/src/lib/core/tokens.ts +112 -0
  63. package/src/lib/core/utils/clipboard.spec.ts +55 -0
  64. package/src/lib/core/utils/clipboard.ts +90 -0
  65. package/src/lib/core/utils/context-resolver.spec.ts +95 -0
  66. package/src/lib/core/utils/context-resolver.ts +101 -0
  67. package/src/lib/core/utils/response-unwrapper.spec.ts +70 -0
  68. package/src/lib/core/utils/response-unwrapper.ts +103 -0
  69. package/src/lib/core/utils/source-options.spec.ts +96 -0
  70. package/src/lib/core/utils/source-options.ts +54 -0
  71. package/src/lib/core/utils/template-interpolator.spec.ts +59 -0
  72. package/src/lib/core/utils/template-interpolator.ts +56 -0
  73. package/src/lib/core/view-navigation/view-navigation.service.spec.ts +207 -0
  74. package/src/lib/core/view-navigation/view-navigation.service.ts +132 -0
  75. package/src/lib/fields/boolean/boolean.descriptor.ts +11 -0
  76. package/src/lib/fields/boolean/boolean.ts +40 -0
  77. package/src/lib/fields/color/color.descriptor.ts +12 -0
  78. package/src/lib/fields/color/color.ts +34 -0
  79. package/src/lib/fields/currency/currency.descriptor.ts +12 -0
  80. package/src/lib/fields/currency/currency.ts +67 -0
  81. package/src/lib/fields/date/date.descriptor.ts +12 -0
  82. package/src/lib/fields/date/date.ts +36 -0
  83. package/src/lib/fields/descriptors.ts +122 -0
  84. package/src/lib/fields/display/display-badge.ts +65 -0
  85. package/src/lib/fields/display/display-date.ts +39 -0
  86. package/src/lib/fields/display/display-defaults.ts +84 -0
  87. package/src/lib/fields/display/display-file.ts +41 -0
  88. package/src/lib/fields/display/display-image.ts +54 -0
  89. package/src/lib/fields/display/display-list.ts +107 -0
  90. package/src/lib/fields/display/display-number.ts +41 -0
  91. package/src/lib/fields/display/display-text.ts +42 -0
  92. package/src/lib/fields/display/display.spec.ts +242 -0
  93. package/src/lib/fields/dropdown/dropdown.descriptor.ts +12 -0
  94. package/src/lib/fields/dropdown/dropdown.ts +45 -0
  95. package/src/lib/fields/email/email.descriptor.ts +12 -0
  96. package/src/lib/fields/email/email.ts +28 -0
  97. package/src/lib/fields/field-aria.ts +60 -0
  98. package/src/lib/fields/field-host/field-host.spec.ts +118 -0
  99. package/src/lib/fields/field-host/field-host.ts +47 -0
  100. package/src/lib/fields/field-node.ts +88 -0
  101. package/src/lib/fields/file/file.descriptor.ts +14 -0
  102. package/src/lib/fields/file/file.spec.ts +134 -0
  103. package/src/lib/fields/file/file.ts +281 -0
  104. package/src/lib/fields/group/group.descriptor.ts +21 -0
  105. package/src/lib/fields/group/group.ts +110 -0
  106. package/src/lib/fields/image/image.descriptor.ts +12 -0
  107. package/src/lib/fields/image/image.spec.ts +117 -0
  108. package/src/lib/fields/image/image.ts +281 -0
  109. package/src/lib/fields/key-value/key-value.descriptor.ts +11 -0
  110. package/src/lib/fields/key-value/key-value.ts +283 -0
  111. package/src/lib/fields/list/list.descriptor.ts +21 -0
  112. package/src/lib/fields/list/list.ts +376 -0
  113. package/src/lib/fields/multiselect/multiselect.descriptor.ts +11 -0
  114. package/src/lib/fields/multiselect/multiselect.spec.ts +142 -0
  115. package/src/lib/fields/multiselect/multiselect.ts +152 -0
  116. package/src/lib/fields/number/number.descriptor.ts +12 -0
  117. package/src/lib/fields/number/number.ts +40 -0
  118. package/src/lib/fields/phone/phone.descriptor.ts +12 -0
  119. package/src/lib/fields/phone/phone.ts +46 -0
  120. package/src/lib/fields/readonly-text/readonly-text.descriptor.ts +12 -0
  121. package/src/lib/fields/readonly-text/readonly-text.ts +58 -0
  122. package/src/lib/fields/relation/relation.descriptor.ts +12 -0
  123. package/src/lib/fields/relation/relation.spec.ts +193 -0
  124. package/src/lib/fields/relation/relation.ts +224 -0
  125. package/src/lib/fields/rich-select/rich-select.descriptor.ts +12 -0
  126. package/src/lib/fields/rich-select/rich-select.ts +175 -0
  127. package/src/lib/fields/select/radio-mode.ts +25 -0
  128. package/src/lib/fields/select/select.descriptor.ts +12 -0
  129. package/src/lib/fields/select/select.spec.ts +162 -0
  130. package/src/lib/fields/select/select.ts +210 -0
  131. package/src/lib/fields/slug/slug.descriptor.ts +19 -0
  132. package/src/lib/fields/slug/slug.ts +67 -0
  133. package/src/lib/fields/string-list/string-list.descriptor.ts +11 -0
  134. package/src/lib/fields/string-list/string-list.ts +222 -0
  135. package/src/lib/fields/text/text.descriptor.ts +12 -0
  136. package/src/lib/fields/text/text.ts +35 -0
  137. package/src/lib/fields/textarea/textarea.descriptor.ts +12 -0
  138. package/src/lib/fields/textarea/textarea.spec.ts +117 -0
  139. package/src/lib/fields/textarea/textarea.ts +126 -0
  140. package/src/lib/fields/time/time.descriptor.ts +12 -0
  141. package/src/lib/fields/time/time.ts +28 -0
  142. package/src/lib/fields/unknown-render/unknown-render.ts +49 -0
  143. package/src/lib/fields/url/url.descriptor.ts +12 -0
  144. package/src/lib/fields/url/url.ts +53 -0
  145. package/src/lib/gas-admin-ui.spec.ts +21 -0
  146. package/src/lib/gas-admin-ui.ts +9 -0
  147. package/src/lib/layouts/descriptors.ts +9 -0
  148. package/src/lib/pages/dashboard/dashboard.ts +167 -0
  149. package/src/lib/pages/detail-view/detail-view.spec.ts +333 -0
  150. package/src/lib/pages/detail-view/detail-view.ts +570 -0
  151. package/src/lib/pages/drawer-form/drawer-form.ts +228 -0
  152. package/src/lib/pages/form-view/form-model.ts +88 -0
  153. package/src/lib/pages/form-view/form-schema.ts +255 -0
  154. package/src/lib/pages/form-view/form-view.ts +1622 -0
  155. package/src/lib/pages/list-view/list-view.formats.spec.ts +214 -0
  156. package/src/lib/pages/list-view/list-view.ts +882 -0
  157. package/src/lib/pages/login/login.spec.ts +109 -0
  158. package/src/lib/pages/login/login.ts +227 -0
  159. package/src/lib/pages/resource-page/resource-page.ts +234 -0
  160. package/src/lib/shared/components/badge/badge.ts +35 -0
  161. package/src/lib/shared/components/button/button.ts +65 -0
  162. package/src/lib/shared/components/confirm-dialog/confirm-dialog.ts +48 -0
  163. package/src/lib/shared/components/copy-button/copy-button.ts +56 -0
  164. package/src/lib/shared/components/copy-share/copy-share.spec.ts +122 -0
  165. package/src/lib/shared/components/copy-share/copy-share.ts +107 -0
  166. package/src/lib/shared/components/drawer/drawer.spec.ts +127 -0
  167. package/src/lib/shared/components/drawer/drawer.ts +172 -0
  168. package/src/lib/shared/components/empty-state/empty-state.ts +30 -0
  169. package/src/lib/shared/components/modal/modal.spec.ts +149 -0
  170. package/src/lib/shared/components/modal/modal.ts +145 -0
  171. package/src/lib/shared/components/post-create-modal/post-create-modal.spec.ts +165 -0
  172. package/src/lib/shared/components/post-create-modal/post-create-modal.ts +159 -0
  173. package/src/lib/shared/components/skeleton/skeleton.ts +31 -0
  174. package/src/lib/shared/components/toast/toast.ts +58 -0
  175. package/src/lib/shared/utils/col-span.ts +25 -0
  176. package/src/lib/shared/utils/condition-evaluator.ts +53 -0
  177. package/src/lib/shared/utils/depends-on.ts +48 -0
  178. package/src/lib/shared/utils/dialog-focus.ts +28 -0
  179. package/src/lib/shared/utils/field-path.ts +49 -0
  180. package/src/lib/shared/utils/gap-sorting.ts +144 -0
  181. package/src/lib/shared/utils/seed.spec.ts +64 -0
  182. package/src/lib/shared/utils/seed.ts +149 -0
  183. package/src/lib/shared/utils/slugify.ts +13 -0
  184. package/src/lib/shared/utils/validators.ts +41 -0
  185. package/src/lib/shell/layout/layout.ts +63 -0
  186. package/src/lib/shell/shell.routes.spec.ts +59 -0
  187. package/src/lib/shell/shell.routes.ts +122 -0
  188. package/src/lib/shell/sidebar/sidebar.ts +139 -0
  189. package/src/lib/shell/theme-toggle/theme-toggle.ts +74 -0
  190. package/src/lib/views/calendar-view/calendar-model.ts +426 -0
  191. package/src/lib/views/calendar-view/calendar-view.spec.ts +557 -0
  192. package/src/lib/views/calendar-view/calendar-view.ts +568 -0
  193. package/src/lib/views/composer/composer-host.spec.ts +301 -0
  194. package/src/lib/views/composer/composer-host.ts +248 -0
  195. package/src/lib/views/composer/composer-imports.spec.ts +54 -0
  196. package/src/lib/views/composer/view-context.spec.ts +117 -0
  197. package/src/lib/views/composer/view-context.ts +109 -0
  198. package/src/lib/views/composer/view-slot.spec.ts +130 -0
  199. package/src/lib/views/composer/view-slot.ts +178 -0
  200. package/src/lib/views/descriptors.ts +46 -0
  201. package/src/lib/views/kanban-view/kanban-model.ts +173 -0
  202. package/src/lib/views/kanban-view/kanban-view.spec.ts +540 -0
  203. package/src/lib/views/kanban-view/kanban-view.ts +327 -0
  204. package/src/lib/widgets/bar-chart/bar-chart.descriptor.ts +17 -0
  205. package/src/lib/widgets/bar-chart/bar-chart.spec.ts +66 -0
  206. package/src/lib/widgets/bar-chart/bar-chart.ts +76 -0
  207. package/src/lib/widgets/chart-line/chart-line.descriptor.ts +17 -0
  208. package/src/lib/widgets/chart-line/chart-line.spec.ts +113 -0
  209. package/src/lib/widgets/chart-line/chart-line.ts +219 -0
  210. package/src/lib/widgets/descriptors.ts +29 -0
  211. package/src/lib/widgets/metric-card/metric-card.descriptor.ts +41 -0
  212. package/src/lib/widgets/metric-card/metric-card.spec.ts +52 -0
  213. package/src/lib/widgets/metric-card/metric-card.ts +48 -0
  214. package/src/lib/widgets/quick-actions/quick-actions.descriptor.ts +13 -0
  215. package/src/lib/widgets/quick-actions/quick-actions.spec.ts +61 -0
  216. package/src/lib/widgets/quick-actions/quick-actions.ts +100 -0
  217. package/src/lib/widgets/record-list/record-list.descriptor.ts +16 -0
  218. package/src/lib/widgets/record-list/record-list.spec.ts +79 -0
  219. package/src/lib/widgets/record-list/record-list.ts +115 -0
  220. package/src/lib/widgets/series.spec.ts +42 -0
  221. package/src/lib/widgets/series.ts +56 -0
  222. package/src/lib/widgets/status-progress/status-progress.descriptor.ts +19 -0
  223. package/src/lib/widgets/status-progress/status-progress.spec.ts +63 -0
  224. package/src/lib/widgets/status-progress/status-progress.ts +104 -0
  225. package/src/lib/widgets/widget-host/widget-host.spec.ts +179 -0
  226. package/src/lib/widgets/widget-host/widget-host.ts +99 -0
  227. package/src/public-api.ts +104 -0
  228. package/tinya-code-gas-admin-ui-0.2.0-alpha.15.tgz +0 -0
  229. package/tsconfig.lib.json +13 -0
  230. package/tsconfig.lib.prod.json +11 -0
  231. package/tsconfig.spec.json +10 -0
  232. package/fesm2022/tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs +0 -84
  233. package/fesm2022/tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs.map +0 -1
  234. package/fesm2022/tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs +0 -140
  235. package/fesm2022/tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs.map +0 -1
  236. package/fesm2022/tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs +0 -113
  237. package/fesm2022/tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs.map +0 -1
  238. package/fesm2022/tinya-code-gas-admin-ui-button-BQjNW8KB.mjs +0 -163
  239. package/fesm2022/tinya-code-gas-admin-ui-button-BQjNW8KB.mjs.map +0 -1
  240. package/fesm2022/tinya-code-gas-admin-ui-calendar-view-DCY8bj2V.mjs +0 -1027
  241. package/fesm2022/tinya-code-gas-admin-ui-calendar-view-DCY8bj2V.mjs.map +0 -1
  242. package/fesm2022/tinya-code-gas-admin-ui-chart-line-BjdlKHoH.mjs +0 -278
  243. package/fesm2022/tinya-code-gas-admin-ui-chart-line-BjdlKHoH.mjs.map +0 -1
  244. package/fesm2022/tinya-code-gas-admin-ui-color-Dljh_By3.mjs +0 -107
  245. package/fesm2022/tinya-code-gas-admin-ui-color-Dljh_By3.mjs.map +0 -1
  246. package/fesm2022/tinya-code-gas-admin-ui-condition-evaluator-DY2k1M3C.mjs +0 -101
  247. package/fesm2022/tinya-code-gas-admin-ui-condition-evaluator-DY2k1M3C.mjs.map +0 -1
  248. package/fesm2022/tinya-code-gas-admin-ui-currency-BvuF3Z63.mjs +0 -141
  249. package/fesm2022/tinya-code-gas-admin-ui-currency-BvuF3Z63.mjs.map +0 -1
  250. package/fesm2022/tinya-code-gas-admin-ui-data-source.service-96FSbN72.mjs +0 -88
  251. package/fesm2022/tinya-code-gas-admin-ui-data-source.service-96FSbN72.mjs.map +0 -1
  252. package/fesm2022/tinya-code-gas-admin-ui-date-1SJGXZrd.mjs +0 -107
  253. package/fesm2022/tinya-code-gas-admin-ui-date-1SJGXZrd.mjs.map +0 -1
  254. package/fesm2022/tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs +0 -140
  255. package/fesm2022/tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs.map +0 -1
  256. package/fesm2022/tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs +0 -119
  257. package/fesm2022/tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs.map +0 -1
  258. package/fesm2022/tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs +0 -125
  259. package/fesm2022/tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs.map +0 -1
  260. package/fesm2022/tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs +0 -152
  261. package/fesm2022/tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs.map +0 -1
  262. package/fesm2022/tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs +0 -211
  263. package/fesm2022/tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs.map +0 -1
  264. package/fesm2022/tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs +0 -116
  265. package/fesm2022/tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs.map +0 -1
  266. package/fesm2022/tinya-code-gas-admin-ui-display-text-B8CdVNpv.mjs +0 -111
  267. package/fesm2022/tinya-code-gas-admin-ui-display-text-B8CdVNpv.mjs.map +0 -1
  268. package/fesm2022/tinya-code-gas-admin-ui-dropdown-C3blvmE1.mjs +0 -122
  269. package/fesm2022/tinya-code-gas-admin-ui-dropdown-C3blvmE1.mjs.map +0 -1
  270. package/fesm2022/tinya-code-gas-admin-ui-email-CT_O5ihA.mjs +0 -107
  271. package/fesm2022/tinya-code-gas-admin-ui-email-CT_O5ihA.mjs.map +0 -1
  272. package/fesm2022/tinya-code-gas-admin-ui-empty-state-BMc0QtoT.mjs +0 -109
  273. package/fesm2022/tinya-code-gas-admin-ui-empty-state-BMc0QtoT.mjs.map +0 -1
  274. package/fesm2022/tinya-code-gas-admin-ui-error-mapper.service-DY5y1FjE.mjs +0 -45
  275. package/fesm2022/tinya-code-gas-admin-ui-error-mapper.service-DY5y1FjE.mjs.map +0 -1
  276. package/fesm2022/tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs +0 -50
  277. package/fesm2022/tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs.map +0 -1
  278. package/fesm2022/tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs +0 -24
  279. package/fesm2022/tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs.map +0 -1
  280. package/fesm2022/tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs +0 -27
  281. package/fesm2022/tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs.map +0 -1
  282. package/fesm2022/tinya-code-gas-admin-ui-file-Dmxioog7.mjs +0 -408
  283. package/fesm2022/tinya-code-gas-admin-ui-file-Dmxioog7.mjs.map +0 -1
  284. package/fesm2022/tinya-code-gas-admin-ui-form-view-C709rc57.mjs +0 -4516
  285. package/fesm2022/tinya-code-gas-admin-ui-form-view-C709rc57.mjs.map +0 -1
  286. package/fesm2022/tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs +0 -82
  287. package/fesm2022/tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs.map +0 -1
  288. package/fesm2022/tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs +0 -105
  289. package/fesm2022/tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs.map +0 -1
  290. package/fesm2022/tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs +0 -65
  291. package/fesm2022/tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs.map +0 -1
  292. package/fesm2022/tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs +0 -65
  293. package/fesm2022/tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs.map +0 -1
  294. package/fesm2022/tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs +0 -65
  295. package/fesm2022/tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs.map +0 -1
  296. package/fesm2022/tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs +0 -59
  297. package/fesm2022/tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs.map +0 -1
  298. package/fesm2022/tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs +0 -94
  299. package/fesm2022/tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs.map +0 -1
  300. package/fesm2022/tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs +0 -72
  301. package/fesm2022/tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs.map +0 -1
  302. package/fesm2022/tinya-code-gas-admin-ui-group-h7-O8tt4.mjs +0 -238
  303. package/fesm2022/tinya-code-gas-admin-ui-group-h7-O8tt4.mjs.map +0 -1
  304. package/fesm2022/tinya-code-gas-admin-ui-image-7UhJ7nqI.mjs +0 -416
  305. package/fesm2022/tinya-code-gas-admin-ui-image-7UhJ7nqI.mjs.map +0 -1
  306. package/fesm2022/tinya-code-gas-admin-ui-kanban-view-Dl0Ol5Kb.mjs +0 -439
  307. package/fesm2022/tinya-code-gas-admin-ui-kanban-view-Dl0Ol5Kb.mjs.map +0 -1
  308. package/fesm2022/tinya-code-gas-admin-ui-key-value-nVdgg5at.mjs +0 -513
  309. package/fesm2022/tinya-code-gas-admin-ui-key-value-nVdgg5at.mjs.map +0 -1
  310. package/fesm2022/tinya-code-gas-admin-ui-list-C8ijJHAx.mjs +0 -637
  311. package/fesm2022/tinya-code-gas-admin-ui-list-C8ijJHAx.mjs.map +0 -1
  312. package/fesm2022/tinya-code-gas-admin-ui-metric-card-DnGMQL8l.mjs +0 -127
  313. package/fesm2022/tinya-code-gas-admin-ui-metric-card-DnGMQL8l.mjs.map +0 -1
  314. package/fesm2022/tinya-code-gas-admin-ui-multiselect-PB28e-jl.mjs +0 -251
  315. package/fesm2022/tinya-code-gas-admin-ui-multiselect-PB28e-jl.mjs.map +0 -1
  316. package/fesm2022/tinya-code-gas-admin-ui-notification.service-LjSULER6.mjs +0 -66
  317. package/fesm2022/tinya-code-gas-admin-ui-notification.service-LjSULER6.mjs.map +0 -1
  318. package/fesm2022/tinya-code-gas-admin-ui-number-JNr7glc8.mjs +0 -114
  319. package/fesm2022/tinya-code-gas-admin-ui-number-JNr7glc8.mjs.map +0 -1
  320. package/fesm2022/tinya-code-gas-admin-ui-phone-jR417hPf.mjs +0 -116
  321. package/fesm2022/tinya-code-gas-admin-ui-phone-jR417hPf.mjs.map +0 -1
  322. package/fesm2022/tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs +0 -235
  323. package/fesm2022/tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs.map +0 -1
  324. package/fesm2022/tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs +0 -8
  325. package/fesm2022/tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs.map +0 -1
  326. package/fesm2022/tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs +0 -124
  327. package/fesm2022/tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs.map +0 -1
  328. package/fesm2022/tinya-code-gas-admin-ui-record-list-BiZfnd_7.mjs +0 -249
  329. package/fesm2022/tinya-code-gas-admin-ui-record-list-BiZfnd_7.mjs.map +0 -1
  330. package/fesm2022/tinya-code-gas-admin-ui-relation-drawer.service-B0kT8EiW.mjs +0 -39
  331. package/fesm2022/tinya-code-gas-admin-ui-relation-drawer.service-B0kT8EiW.mjs.map +0 -1
  332. package/fesm2022/tinya-code-gas-admin-ui-relation-ykpJ3PYl.mjs +0 -309
  333. package/fesm2022/tinya-code-gas-admin-ui-relation-ykpJ3PYl.mjs.map +0 -1
  334. package/fesm2022/tinya-code-gas-admin-ui-render-registry-CULkxrSt.mjs +0 -576
  335. package/fesm2022/tinya-code-gas-admin-ui-render-registry-CULkxrSt.mjs.map +0 -1
  336. package/fesm2022/tinya-code-gas-admin-ui-rich-select-CIHaOrbU.mjs +0 -161
  337. package/fesm2022/tinya-code-gas-admin-ui-rich-select-CIHaOrbU.mjs.map +0 -1
  338. package/fesm2022/tinya-code-gas-admin-ui-rolldown-runtime-DpJrqANO.mjs +0 -11
  339. package/fesm2022/tinya-code-gas-admin-ui-schema-catalog-D0Pk0wAN.mjs +0 -685
  340. package/fesm2022/tinya-code-gas-admin-ui-schema-catalog-D0Pk0wAN.mjs.map +0 -1
  341. package/fesm2022/tinya-code-gas-admin-ui-seed-CcCA3FdQ.mjs +0 -80
  342. package/fesm2022/tinya-code-gas-admin-ui-seed-CcCA3FdQ.mjs.map +0 -1
  343. package/fesm2022/tinya-code-gas-admin-ui-select-CDwX9yNO.mjs +0 -296
  344. package/fesm2022/tinya-code-gas-admin-ui-select-CDwX9yNO.mjs.map +0 -1
  345. package/fesm2022/tinya-code-gas-admin-ui-skeleton-DnWK0tcZ.mjs +0 -119
  346. package/fesm2022/tinya-code-gas-admin-ui-skeleton-DnWK0tcZ.mjs.map +0 -1
  347. package/fesm2022/tinya-code-gas-admin-ui-slug-DU58cbiY.mjs +0 -158
  348. package/fesm2022/tinya-code-gas-admin-ui-slug-DU58cbiY.mjs.map +0 -1
  349. package/fesm2022/tinya-code-gas-admin-ui-source-options-B9R4mw8-.mjs +0 -26
  350. package/fesm2022/tinya-code-gas-admin-ui-source-options-B9R4mw8-.mjs.map +0 -1
  351. package/fesm2022/tinya-code-gas-admin-ui-status-progress-DmeG8htE.mjs +0 -205
  352. package/fesm2022/tinya-code-gas-admin-ui-status-progress-DmeG8htE.mjs.map +0 -1
  353. package/fesm2022/tinya-code-gas-admin-ui-string-list-gleasqzD.mjs +0 -432
  354. package/fesm2022/tinya-code-gas-admin-ui-string-list-gleasqzD.mjs.map +0 -1
  355. package/fesm2022/tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs +0 -36
  356. package/fesm2022/tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs.map +0 -1
  357. package/fesm2022/tinya-code-gas-admin-ui-text-CUPmL7W_.mjs +0 -107
  358. package/fesm2022/tinya-code-gas-admin-ui-text-CUPmL7W_.mjs.map +0 -1
  359. package/fesm2022/tinya-code-gas-admin-ui-textarea-CGLSIW13.mjs +0 -223
  360. package/fesm2022/tinya-code-gas-admin-ui-textarea-CGLSIW13.mjs.map +0 -1
  361. package/fesm2022/tinya-code-gas-admin-ui-time-BcHzsTWf.mjs +0 -107
  362. package/fesm2022/tinya-code-gas-admin-ui-time-BcHzsTWf.mjs.map +0 -1
  363. package/fesm2022/tinya-code-gas-admin-ui-upload.service-CZPEPCeN.mjs +0 -60
  364. package/fesm2022/tinya-code-gas-admin-ui-upload.service-CZPEPCeN.mjs.map +0 -1
  365. package/fesm2022/tinya-code-gas-admin-ui-url-GO4LZi__.mjs +0 -141
  366. package/fesm2022/tinya-code-gas-admin-ui-url-GO4LZi__.mjs.map +0 -1
  367. package/fesm2022/tinya-code-gas-admin-ui.mjs +0 -4599
  368. package/fesm2022/tinya-code-gas-admin-ui.mjs.map +0 -1
  369. package/types/tinya-code-gas-admin-ui.d.ts +0 -3632
@@ -1,116 +0,0 @@
1
- import { n as FieldAria } from "./tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs";
2
- import { t as childTree } from "./tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs";
3
- import * as i0 from "@angular/core";
4
- import { Component, computed, input } from "@angular/core";
5
- import { FormField } from "@angular/forms/signals";
6
- var FieldPhone = class FieldPhone {
7
- field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
8
- tree = input.required(...ngDevMode ? [{ debugName: "tree" }] : /* istanbul ignore next */ []);
9
- node = computed(() => childTree(this.tree(), this.field().key), ...ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []);
10
- state = computed(() => this.node()(), ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
11
- normalize() {
12
- const current = this.state().value();
13
- if (typeof current !== "string" || current === "") return;
14
- const digits = current.replace(/\D/g, "");
15
- const normalized = this.field().format === "digits" ? digits : digits !== "" ? `+${digits.slice(0, 15)}` : "";
16
- if (normalized !== current) this.state().value.set(normalized);
17
- }
18
- static ɵfac = i0.ɵɵngDeclareFactory({
19
- minVersion: "12.0.0",
20
- version: "22.2.3",
21
- ngImport: i0,
22
- type: FieldPhone,
23
- deps: [],
24
- target: i0.ɵɵFactoryTarget.Component
25
- });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({
27
- minVersion: "17.1.0",
28
- version: "22.2.3",
29
- type: FieldPhone,
30
- isStandalone: true,
31
- selector: "app-field-phone",
32
- inputs: {
33
- field: {
34
- classPropertyName: "field",
35
- publicName: "field",
36
- isSignal: true,
37
- isRequired: true,
38
- transformFunction: null
39
- },
40
- tree: {
41
- classPropertyName: "tree",
42
- publicName: "tree",
43
- isSignal: true,
44
- isRequired: true,
45
- transformFunction: null
46
- }
47
- },
48
- ngImport: i0,
49
- template: `
50
- <input
51
- type="tel"
52
- class="field-input"
53
- [id]="state().name()"
54
- [formField]="node()"
55
- [placeholder]="field().placeholder ?? ''"
56
- (blur)="normalize()"
57
- />
58
- `,
59
- isInline: true,
60
- dependencies: [{
61
- kind: "directive",
62
- type: FieldAria,
63
- selector: "input[id], select[id], textarea[id], output[id]"
64
- }, {
65
- kind: "directive",
66
- type: FormField,
67
- selector: "[formField]",
68
- inputs: ["formField"],
69
- exportAs: ["formField"]
70
- }]
71
- });
72
- };
73
- i0.ɵɵngDeclareClassMetadata({
74
- minVersion: "12.0.0",
75
- version: "22.2.3",
76
- ngImport: i0,
77
- type: FieldPhone,
78
- decorators: [{
79
- type: Component,
80
- args: [{
81
- selector: "app-field-phone",
82
- imports: [FieldAria, FormField],
83
- template: `
84
- <input
85
- type="tel"
86
- class="field-input"
87
- [id]="state().name()"
88
- [formField]="node()"
89
- [placeholder]="field().placeholder ?? ''"
90
- (blur)="normalize()"
91
- />
92
- `
93
- }]
94
- }],
95
- propDecorators: {
96
- field: [{
97
- type: i0.Input,
98
- args: [{
99
- isSignal: true,
100
- alias: "field",
101
- required: true
102
- }]
103
- }],
104
- tree: [{
105
- type: i0.Input,
106
- args: [{
107
- isSignal: true,
108
- alias: "tree",
109
- required: true
110
- }]
111
- }]
112
- }
113
- });
114
- export { FieldPhone };
115
-
116
- //# sourceMappingURL=tinya-code-gas-admin-ui-phone-jR417hPf.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-phone-jR417hPf.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/phone/phone.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\n\nimport type { PhoneField } from '../../core/models/schema.model';\nimport { FieldAria } from '../field-aria';\nimport { childTree, type RootTree } from '../field-node';\n\n/**\n * Input telefónico (base.md §5.1). El valor se normaliza al perder el foco:\n * `e164` → `+` y dígitos (máx. 15); `digits` → solo dígitos. Mientras se\n * escribe se conserva lo tipeado.\n */\n@Component({\n selector: 'app-field-phone',\n imports: [FieldAria, FormField],\n template: `\n <input\n type=\"tel\"\n class=\"field-input\"\n [id]=\"state().name()\"\n [formField]=\"node()\"\n [placeholder]=\"field().placeholder ?? ''\"\n (blur)=\"normalize()\"\n />\n `,\n})\nexport class FieldPhone {\n readonly field = input.required<PhoneField>();\n readonly tree = input.required<RootTree>();\n\n protected readonly node = computed(() => childTree<string>(this.tree(), this.field().key));\n protected readonly state = computed(() => this.node()());\n\n protected normalize(): void {\n const current = this.state().value();\n if (typeof current !== 'string' || current === '') {\n return;\n }\n const digits = current.replace(/\\D/g, '');\n const normalized =\n this.field().format === 'digits' ? digits : digits !== '' ? `+${digits.slice(0, 15)}` : '';\n if (normalized !== current) {\n this.state().value.set(normalized);\n }\n }\n}\n"],"mappings":";;;;;AA0BA,IAAa,aAAb,MAAa,WAAU;CACZ,QAAQ,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACpC,OAAO,MAAM,SAAoB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEvB,OAAO,eAAe,UAAkB,KAAK,KAAI,GAAI,KAAK,MAAK,CAAE,CAAC,GAAG,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CACvE,QAAQ,eAAe,KAAK,KAAI,CAAE,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE9C,YAAS;EACjB,MAAM,UAAU,KAAK,MAAK,CAAE,CAAC,MAAK;EAClC,IAAI,OAAO,YAAY,YAAY,YAAY,IAC7C;EAEF,MAAM,SAAS,QAAQ,QAAQ,OAAO,EAAE;EACxC,MAAM,aACJ,KAAK,MAAK,CAAE,CAAC,WAAW,WAAW,SAAS,WAAW,KAAK,IAAI,OAAO,MAAM,GAAG,EAAE,MAAM;EAC1F,IAAI,eAAe,SACjB,KAAK,MAAK,CAAE,CAAC,MAAM,IAAI,UAAU;CAErC;CAlBW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAU,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAV,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAU,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UAXX;;;;;;;;;;EAST,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAVS;GAAS,UAAA;EAAA,GAAA;GAAA,MAAA;GAAA,MAAE;GAAS,UAAA;GAAA,QAAA,CAAA,WAAA;GAAA,UAAA,CAAA,WAAA;EAAA,CAAA;CAAA,CAAA;;AAYnB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAU,YAAA,CAAA;EAdtB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,WAAW,SAAS;GAC9B,UAAU;;;;;;;;;;EAUX,CAAA"}
@@ -1,235 +0,0 @@
1
- import { n as parseNavigationUrl } from "./tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs";
2
- import * as i0 from "@angular/core";
3
- import { Component, input } from "@angular/core";
4
- import { RouterLink } from "@angular/router";
5
- import { LucideExternalLink, LucideFileText, LucidePlus, LucideSettings, LucideZap } from "@lucide/angular";
6
- const BUTTON_CLASSES = {
7
- primary: "bg-primary text-surface hover:bg-primary/90 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors",
8
- outline: "border border-neutral/40 bg-surface text-neutral hover:bg-neutral/10 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors",
9
- secondary: "bg-neutral/10 text-neutral-light hover:bg-neutral/20 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors"
10
- };
11
- var QuickActions = class QuickActions {
12
- widget = input.required(...ngDevMode ? [{ debugName: "widget" }] : /* istanbul ignore next */ []);
13
- isExternal(url) {
14
- return /^https?:\/\//i.test(url);
15
- }
16
- parseRoute(url) {
17
- return parseNavigationUrl(url);
18
- }
19
- buttonClass(variant) {
20
- return BUTTON_CLASSES[variant || "secondary"] || BUTTON_CLASSES["secondary"];
21
- }
22
- static ɵfac = i0.ɵɵngDeclareFactory({
23
- minVersion: "12.0.0",
24
- version: "22.2.3",
25
- ngImport: i0,
26
- type: QuickActions,
27
- deps: [],
28
- target: i0.ɵɵFactoryTarget.Component
29
- });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({
31
- minVersion: "17.0.0",
32
- version: "22.2.3",
33
- type: QuickActions,
34
- isStandalone: true,
35
- selector: "app-quick-actions",
36
- inputs: { widget: {
37
- classPropertyName: "widget",
38
- publicName: "widget",
39
- isSignal: true,
40
- isRequired: true,
41
- transformFunction: null
42
- } },
43
- ngImport: i0,
44
- template: `
45
- <article class="flex h-full flex-col rounded-xl border border-neutral/20 bg-surface p-4">
46
- <h2 class="mb-3 text-sm font-semibold text-neutral-light">{{ widget().label }}</h2>
47
-
48
- <div class="grid flex-1 grid-cols-1 gap-2.5 sm:grid-cols-2">
49
- @for (action of widget().actions; track action.label) {
50
- @if (isExternal(action.navigateTo)) {
51
- <a
52
- [href]="action.navigateTo"
53
- target="_blank"
54
- rel="noopener noreferrer"
55
- [class]="buttonClass(action.variant)"
56
- >
57
- @switch (action.icon) {
58
- @case ('plus') {
59
- <svg lucidePlus size="16" class="shrink-0" />
60
- }
61
- @case ('settings') {
62
- <svg lucideSettings size="16" class="shrink-0" />
63
- }
64
- @case ('document') {
65
- <svg lucideFileText size="16" class="shrink-0" />
66
- }
67
- @default {
68
- <svg lucideExternalLink size="16" class="shrink-0" />
69
- }
70
- }
71
- <span class="truncate">{{ action.label }}</span>
72
- </a>
73
- } @else {
74
- <a
75
- [routerLink]="parseRoute(action.navigateTo).path"
76
- [queryParams]="parseRoute(action.navigateTo).queryParams"
77
- [class]="buttonClass(action.variant)"
78
- >
79
- @switch (action.icon) {
80
- @case ('plus') {
81
- <svg lucidePlus size="16" class="shrink-0" />
82
- }
83
- @case ('settings') {
84
- <svg lucideSettings size="16" class="shrink-0" />
85
- }
86
- @case ('document') {
87
- <svg lucideFileText size="16" class="shrink-0" />
88
- }
89
- @default {
90
- <svg lucideZap size="16" class="shrink-0" />
91
- }
92
- }
93
- <span class="truncate">{{ action.label }}</span>
94
- </a>
95
- }
96
- }
97
- </div>
98
- </article>
99
- `,
100
- isInline: true,
101
- dependencies: [
102
- {
103
- kind: "directive",
104
- type: RouterLink,
105
- selector: "[routerLink]",
106
- inputs: [
107
- "target",
108
- "queryParams",
109
- "fragment",
110
- "queryParamsHandling",
111
- "state",
112
- "info",
113
- "relativeTo",
114
- "preserveFragment",
115
- "skipLocationChange",
116
- "replaceUrl",
117
- "browserUrl",
118
- "routerLink"
119
- ]
120
- },
121
- {
122
- kind: "component",
123
- type: LucidePlus,
124
- selector: "svg[lucidePlus]"
125
- },
126
- {
127
- kind: "component",
128
- type: LucideSettings,
129
- selector: "svg[lucideSettings]"
130
- },
131
- {
132
- kind: "component",
133
- type: LucideFileText,
134
- selector: "svg[lucideFileText]"
135
- },
136
- {
137
- kind: "component",
138
- type: LucideExternalLink,
139
- selector: "svg[lucideExternalLink]"
140
- },
141
- {
142
- kind: "component",
143
- type: LucideZap,
144
- selector: "svg[lucideZap]"
145
- }
146
- ]
147
- });
148
- };
149
- i0.ɵɵngDeclareClassMetadata({
150
- minVersion: "12.0.0",
151
- version: "22.2.3",
152
- ngImport: i0,
153
- type: QuickActions,
154
- decorators: [{
155
- type: Component,
156
- args: [{
157
- selector: "app-quick-actions",
158
- imports: [
159
- RouterLink,
160
- LucidePlus,
161
- LucideSettings,
162
- LucideFileText,
163
- LucideExternalLink,
164
- LucideZap
165
- ],
166
- template: `
167
- <article class="flex h-full flex-col rounded-xl border border-neutral/20 bg-surface p-4">
168
- <h2 class="mb-3 text-sm font-semibold text-neutral-light">{{ widget().label }}</h2>
169
-
170
- <div class="grid flex-1 grid-cols-1 gap-2.5 sm:grid-cols-2">
171
- @for (action of widget().actions; track action.label) {
172
- @if (isExternal(action.navigateTo)) {
173
- <a
174
- [href]="action.navigateTo"
175
- target="_blank"
176
- rel="noopener noreferrer"
177
- [class]="buttonClass(action.variant)"
178
- >
179
- @switch (action.icon) {
180
- @case ('plus') {
181
- <svg lucidePlus size="16" class="shrink-0" />
182
- }
183
- @case ('settings') {
184
- <svg lucideSettings size="16" class="shrink-0" />
185
- }
186
- @case ('document') {
187
- <svg lucideFileText size="16" class="shrink-0" />
188
- }
189
- @default {
190
- <svg lucideExternalLink size="16" class="shrink-0" />
191
- }
192
- }
193
- <span class="truncate">{{ action.label }}</span>
194
- </a>
195
- } @else {
196
- <a
197
- [routerLink]="parseRoute(action.navigateTo).path"
198
- [queryParams]="parseRoute(action.navigateTo).queryParams"
199
- [class]="buttonClass(action.variant)"
200
- >
201
- @switch (action.icon) {
202
- @case ('plus') {
203
- <svg lucidePlus size="16" class="shrink-0" />
204
- }
205
- @case ('settings') {
206
- <svg lucideSettings size="16" class="shrink-0" />
207
- }
208
- @case ('document') {
209
- <svg lucideFileText size="16" class="shrink-0" />
210
- }
211
- @default {
212
- <svg lucideZap size="16" class="shrink-0" />
213
- }
214
- }
215
- <span class="truncate">{{ action.label }}</span>
216
- </a>
217
- }
218
- }
219
- </div>
220
- </article>
221
- `
222
- }]
223
- }],
224
- propDecorators: { widget: [{
225
- type: i0.Input,
226
- args: [{
227
- isSignal: true,
228
- alias: "widget",
229
- required: true
230
- }]
231
- }] }
232
- });
233
- export { QuickActions };
234
-
235
- //# sourceMappingURL=tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/widgets/quick-actions/quick-actions.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport {\n LucideExternalLink,\n LucideFileText,\n LucidePlus,\n LucideSettings,\n LucideZap,\n} from '@lucide/angular';\n\nimport type { QuickActionsWidget } from '../../core/models/schema.model';\nimport { parseNavigationUrl, type ParsedRoute } from '../../core/utils/template-interpolator';\n\nconst BUTTON_CLASSES: Record<string, string> = {\n primary:\n 'bg-primary text-surface hover:bg-primary/90 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors',\n outline:\n 'border border-neutral/40 bg-surface text-neutral hover:bg-neutral/10 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors',\n secondary:\n 'bg-neutral/10 text-neutral-light hover:bg-neutral/20 font-medium px-4 py-2.5 rounded-lg inline-flex items-center gap-2 text-sm transition-colors',\n};\n\n/**\n * Grid de accesos directos y atajos operativos para el Dashboard.\n */\n@Component({\n selector: 'app-quick-actions',\n imports: [RouterLink, LucidePlus, LucideSettings, LucideFileText, LucideExternalLink, LucideZap],\n template: `\n <article class=\"flex h-full flex-col rounded-xl border border-neutral/20 bg-surface p-4\">\n <h2 class=\"mb-3 text-sm font-semibold text-neutral-light\">{{ widget().label }}</h2>\n\n <div class=\"grid flex-1 grid-cols-1 gap-2.5 sm:grid-cols-2\">\n @for (action of widget().actions; track action.label) {\n @if (isExternal(action.navigateTo)) {\n <a\n [href]=\"action.navigateTo\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [class]=\"buttonClass(action.variant)\"\n >\n @switch (action.icon) {\n @case ('plus') {\n <svg lucidePlus size=\"16\" class=\"shrink-0\" />\n }\n @case ('settings') {\n <svg lucideSettings size=\"16\" class=\"shrink-0\" />\n }\n @case ('document') {\n <svg lucideFileText size=\"16\" class=\"shrink-0\" />\n }\n @default {\n <svg lucideExternalLink size=\"16\" class=\"shrink-0\" />\n }\n }\n <span class=\"truncate\">{{ action.label }}</span>\n </a>\n } @else {\n <a\n [routerLink]=\"parseRoute(action.navigateTo).path\"\n [queryParams]=\"parseRoute(action.navigateTo).queryParams\"\n [class]=\"buttonClass(action.variant)\"\n >\n @switch (action.icon) {\n @case ('plus') {\n <svg lucidePlus size=\"16\" class=\"shrink-0\" />\n }\n @case ('settings') {\n <svg lucideSettings size=\"16\" class=\"shrink-0\" />\n }\n @case ('document') {\n <svg lucideFileText size=\"16\" class=\"shrink-0\" />\n }\n @default {\n <svg lucideZap size=\"16\" class=\"shrink-0\" />\n }\n }\n <span class=\"truncate\">{{ action.label }}</span>\n </a>\n }\n }\n </div>\n </article>\n `,\n})\nexport class QuickActions {\n readonly widget = input.required<QuickActionsWidget>();\n\n protected isExternal(url: string): boolean {\n return /^https?:\\/\\//i.test(url);\n }\n\n protected parseRoute(url: string): ParsedRoute {\n return parseNavigationUrl(url);\n }\n\n protected buttonClass(variant?: string): string {\n return BUTTON_CLASSES[variant || 'secondary'] || BUTTON_CLASSES['secondary'];\n }\n}\n"],"mappings":";;;;;AAaA,MAAM,iBAAyC;CAC7C,SACE;CACF,SACE;CACF,WACE;AACH;AAiED,IAAa,eAAb,MAAa,aAAY;CACd,SAAS,MAAM,SAA8B,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAE5C,WAAW,KAAW;EAC9B,OAAO,gBAAgB,KAAK,GAAG;CACjC;CAEU,WAAW,KAAW;EAC9B,OAAO,mBAAmB,GAAG;CAC/B;CAEU,YAAY,SAAgB;EACpC,OAAO,eAAe,WAAW,gBAAgB,eAAe;CAClE;CAbW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAY,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAZ,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAY,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,QAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAzDb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDT,UAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MAxDS;IAAU,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAU,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAc,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAc,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAkB,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAS,UAAA;GAAA;EAAA;CAAA,CAAA;;AA0DpF,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EA5DxB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS;IAAC;IAAY;IAAY;IAAgB;IAAgB;IAAoB;GAAS;GAC/F,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDX,CAAA"}
@@ -1,8 +0,0 @@
1
- function esGrupoRadio(field) {
2
- if (field.source !== void 0) return false;
3
- const total = field.options?.length ?? 0;
4
- return total >= 2 && total <= 4;
5
- }
6
- export { esGrupoRadio as t };
7
-
8
- //# sourceMappingURL=tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/select/radio-mode.ts"],"sourcesContent":["import type { SelectField } from '../../core/models/schema.model';\n\n/**\n * Guía de control (standards §Control selection): 2–4 opciones → radio\n * buttons; 5–7 → dropdown simple; más de 7 → dropdown con búsqueda.\n *\n * Dos limitaciones deliberadas:\n * - **Sólo opciones estáticas** (`source` excluido): una fuente se carga\n * después y su cantidad de filas puede cambiar; el control no debe mutar\n * de `<select>` a radios en mitad de una edición.\n * - **Mínimo 2**: con una sola opción el dropdown (o un único radio) no\n * aporta nada y el caso real (`users.role`) ya existe así.\n *\n * La comparten el campo (`select.ts`, para ramificar su plantilla) y el\n * rótulo del host (`render-host.ts`): sin este mismo cálculo el host\n * dibujaría un `label[for]` apuntando a un id que un grupo de radios no\n * tiene (el ancla la reemplaza `role=\"radiogroup\"` + `aria-label`).\n */\nexport function esGrupoRadio(field: SelectField): boolean {\n if (field.source !== undefined) {\n return false;\n }\n const total = field.options?.length ?? 0;\n return total >= 2 && total <= 4;\n}\n"],"mappings":"AAkBA,SAAgB,aAAa,OAAkB;CAC7C,IAAI,MAAM,WAAW,QACnB,OAAO;CAET,MAAM,QAAQ,MAAM,SAAS,UAAU;CACvC,OAAO,SAAS,KAAK,SAAS;AAChC"}
@@ -1,124 +0,0 @@
1
- import { n as FieldAria } from "./tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs";
2
- import { t as childTree } from "./tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs";
3
- import * as i0 from "@angular/core";
4
- import { Component, computed, input } from "@angular/core";
5
- var FieldReadonlyText = class FieldReadonlyText {
6
- field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
7
- tree = input.required(...ngDevMode ? [{ debugName: "tree" }] : /* istanbul ignore next */ []);
8
- node = computed(() => childTree(this.tree(), this.field().key), ...ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []);
9
- state = computed(() => this.node()(), ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
10
- display = computed(() => {
11
- const value = this.state().value();
12
- if (value === null || value === void 0 || value === "") return "—";
13
- const format = this.field().format;
14
- if (format === "date" || format === "datetime") {
15
- const date = new Date(String(value));
16
- if (Number.isNaN(date.getTime())) return String(value);
17
- return new Intl.DateTimeFormat("es-PE", {
18
- timeZone: "UTC",
19
- day: "2-digit",
20
- month: "2-digit",
21
- year: "numeric",
22
- ...format === "datetime" ? {
23
- hour: "2-digit",
24
- minute: "2-digit"
25
- } : {}
26
- }).format(date);
27
- }
28
- if (format === "number") {
29
- const number = Number(value);
30
- return Number.isNaN(number) ? String(value) : new Intl.NumberFormat("es-PE").format(number);
31
- }
32
- return typeof value === "string" ? value : String(value);
33
- }, ...ngDevMode ? [{ debugName: "display" }] : /* istanbul ignore next */ []);
34
- static ɵfac = i0.ɵɵngDeclareFactory({
35
- minVersion: "12.0.0",
36
- version: "22.2.3",
37
- ngImport: i0,
38
- type: FieldReadonlyText,
39
- deps: [],
40
- target: i0.ɵɵFactoryTarget.Component
41
- });
42
- static ɵcmp = i0.ɵɵngDeclareComponent({
43
- minVersion: "17.1.0",
44
- version: "22.2.3",
45
- type: FieldReadonlyText,
46
- isStandalone: true,
47
- selector: "app-field-readonly-text",
48
- inputs: {
49
- field: {
50
- classPropertyName: "field",
51
- publicName: "field",
52
- isSignal: true,
53
- isRequired: true,
54
- transformFunction: null
55
- },
56
- tree: {
57
- classPropertyName: "tree",
58
- publicName: "tree",
59
- isSignal: true,
60
- isRequired: true,
61
- transformFunction: null
62
- }
63
- },
64
- ngImport: i0,
65
- template: `
66
- <output
67
- [id]="state().name()"
68
- class="block py-2 text-sm text-neutral"
69
- data-testid="readonly-text"
70
- >
71
- {{ display() }}
72
- </output>
73
- `,
74
- isInline: true,
75
- dependencies: [{
76
- kind: "directive",
77
- type: FieldAria,
78
- selector: "input[id], select[id], textarea[id], output[id]"
79
- }]
80
- });
81
- };
82
- i0.ɵɵngDeclareClassMetadata({
83
- minVersion: "12.0.0",
84
- version: "22.2.3",
85
- ngImport: i0,
86
- type: FieldReadonlyText,
87
- decorators: [{
88
- type: Component,
89
- args: [{
90
- selector: "app-field-readonly-text",
91
- imports: [FieldAria],
92
- template: `
93
- <output
94
- [id]="state().name()"
95
- class="block py-2 text-sm text-neutral"
96
- data-testid="readonly-text"
97
- >
98
- {{ display() }}
99
- </output>
100
- `
101
- }]
102
- }],
103
- propDecorators: {
104
- field: [{
105
- type: i0.Input,
106
- args: [{
107
- isSignal: true,
108
- alias: "field",
109
- required: true
110
- }]
111
- }],
112
- tree: [{
113
- type: i0.Input,
114
- args: [{
115
- isSignal: true,
116
- alias: "tree",
117
- required: true
118
- }]
119
- }]
120
- }
121
- });
122
- export { FieldReadonlyText };
123
-
124
- //# sourceMappingURL=tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/readonly-text/readonly-text.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport type { ReadonlyTextField } from '../../core/models/schema.model';\nimport { FieldAria } from '../field-aria';\nimport { childTree, type RootTree } from '../field-node';\n\n/**\n * Dato de solo lectura (base.md §5.1, ej. `updated_at`). No edita: lee el\n * valor del árbol y lo presenta según `format` (`date`, `datetime`,\n * `number`; por defecto, texto). Renderiza `<output>` para que el `<label>`\n * del host pueda asociarse por `for`.\n */\n@Component({\n selector: 'app-field-readonly-text',\n imports: [FieldAria],\n template: `\n <output\n [id]=\"state().name()\"\n class=\"block py-2 text-sm text-neutral\"\n data-testid=\"readonly-text\"\n >\n {{ display() }}\n </output>\n `,\n})\nexport class FieldReadonlyText {\n readonly field = input.required<ReadonlyTextField>();\n readonly tree = input.required<RootTree>();\n\n private readonly node = computed(() => childTree<unknown>(this.tree(), this.field().key));\n protected readonly state = computed(() => this.node()());\n\n protected readonly display = computed(() => {\n const value = this.state().value();\n if (value === null || value === undefined || value === '') {\n return '—';\n }\n const format = this.field().format;\n if (format === 'date' || format === 'datetime') {\n const date = new Date(String(value));\n if (Number.isNaN(date.getTime())) {\n return String(value);\n }\n return new Intl.DateTimeFormat('es-PE', {\n timeZone: 'UTC',\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n ...(format === 'datetime' ? { hour: '2-digit', minute: '2-digit' } : {}),\n }).format(date);\n }\n if (format === 'number') {\n const number = Number(value);\n return Number.isNaN(number) ? String(value) : new Intl.NumberFormat('es-PE').format(number);\n }\n return typeof value === 'string' ? value : String(value);\n });\n}\n"],"mappings":";;;;AAyBA,IAAa,oBAAb,MAAa,kBAAiB;CACnB,QAAQ,MAAM,SAA6B,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAC3C,OAAO,MAAM,SAAoB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,OAAO,eAAe,UAAmB,KAAK,KAAI,GAAI,KAAK,MAAK,CAAE,CAAC,GAAG,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CACtE,QAAQ,eAAe,KAAK,KAAI,CAAE,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAErC,UAAU,eAAc;EACzC,MAAM,QAAQ,KAAK,MAAK,CAAE,CAAC,MAAK;EAChC,IAAI,UAAU,QAAQ,UAAU,UAAa,UAAU,IACrD,OAAO;EAET,MAAM,SAAS,KAAK,MAAK,CAAE,CAAC;EAC5B,IAAI,WAAW,UAAU,WAAW,YAAY;GAC9C,MAAM,OAAO,IAAI,KAAK,OAAO,KAAK,CAAC;GACnC,IAAI,OAAO,MAAM,KAAK,QAAO,CAAE,GAC7B,OAAO,OAAO,KAAK;GAErB,OAAO,IAAI,KAAK,eAAe,SAAS;IACtC,UAAU;IACV,KAAK;IACL,OAAO;IACP,MAAM;IACN,GAAI,WAAW,aAAa;KAAE,MAAM;KAAW,QAAQ;IAAS,IAAK,CAAA;GACtE,CAAA,CAAC,CAAC,OAAO,IAAI;EAChB;EACA,IAAI,WAAW,UAAU;GACvB,MAAM,SAAS,OAAO,KAAK;GAC3B,OAAO,OAAO,MAAM,MAAM,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,aAAa,OAAO,CAAC,CAAC,OAAO,MAAM;EAC5F;EACA,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;CACzD,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CA/BS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAiB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAjB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAiB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UAVlB;;;;;;;;;EAQT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MATS;GAAS,UAAA;EAAA,CAAA;CAAA,CAAA;;AAWR,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAb7B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,SAAS;GACnB,UAAU;;;;;;;;;EASX,CAAA"}