@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 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/display/display-date.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { Badge } from '../../shared/components/badge/badge';\nimport type { FieldSchema } from '../../core/models/schema.model';\n\nconst FORMATO_FECHA = new Intl.DateTimeFormat('es-PE', { dateStyle: 'medium', timeZone: 'UTC' });\n\n/**\n * Display por defecto de `date` (R4.1 · modo `display`).\n *\n * Misma fórmula que `formatValue` de `detail-view` antes de R4.2: `es-PE`,\n * `dateStyle: 'medium'`, **UTC** para que la fecha no se corra un día según\n * el huso de quien abra la ficha, y texto crudo si no es parseable.\n */\n@Component({\n selector: 'app-field-display-date',\n imports: [Badge],\n template: `\n @if (chip()) {\n <app-badge [label]=\"texto()\" />\n } @else {\n {{ texto() }}\n }\n `,\n})\nexport class FieldDisplayDate {\n readonly field = input.required<FieldSchema>();\n readonly value = input<unknown>(null);\n /** `true` en la cabecera: la fecha se pinta como chip compacto. */\n readonly chip = input(false);\n\n protected readonly texto = computed(() => {\n const d = new Date(String(this.value()));\n if (Number.isNaN(d.getTime())) {\n return String(this.value());\n }\n return FORMATO_FECHA.format(d);\n });\n}\n"],"mappings":";;;AAKA,MAAM,gBAAgB,IAAI,KAAK,eAAe,SAAS;CAAE,WAAW;CAAU,UAAU;AAAK,CAAE;AAoB/F,IAAa,mBAAb,MAAa,iBAAgB;CAClB,QAAQ,MAAM,SAAuB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACrC,QAAQ,MAAe,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE5B,OAAO,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAET,QAAQ,eAAc;EACvC,MAAM,IAAI,IAAI,KAAK,OAAO,KAAK,MAAK,CAAE,CAAC;EACvC,IAAI,OAAO,MAAM,EAAE,QAAO,CAAE,GAC1B,OAAO,OAAO,KAAK,MAAK,CAAE;EAE5B,OAAO,cAAc,OAAO,CAAC;CAC/B,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAZS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAgB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAhB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAgB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;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,UARjB;;;;;;;EAMT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAPS;GAAK,UAAA;GAAA,QAAA,CAAA,SAAA,MAAA;EAAA,CAAA;CAAA,CAAA;;AASJ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgB,YAAA,CAAA;EAX5B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,KAAK;GACf,UAAU;;;;;;;EAOX,CAAA"}
@@ -1,125 +0,0 @@
1
- import { t as Badge } from "./tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs";
2
- import * as i0 from "@angular/core";
3
- import { Component, computed, input } from "@angular/core";
4
- var FieldDisplayFile = class FieldDisplayFile {
5
- field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
6
- value = input(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
7
- chip = input(false, ...ngDevMode ? [{ debugName: "chip" }] : /* istanbul ignore next */ []);
8
- url = computed(() => String(this.value()), ...ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []);
9
- static ɵfac = i0.ɵɵngDeclareFactory({
10
- minVersion: "12.0.0",
11
- version: "22.2.3",
12
- ngImport: i0,
13
- type: FieldDisplayFile,
14
- deps: [],
15
- target: i0.ɵɵFactoryTarget.Component
16
- });
17
- static ɵcmp = i0.ɵɵngDeclareComponent({
18
- minVersion: "17.0.0",
19
- version: "22.2.3",
20
- type: FieldDisplayFile,
21
- isStandalone: true,
22
- selector: "app-field-display-file",
23
- inputs: {
24
- field: {
25
- classPropertyName: "field",
26
- publicName: "field",
27
- isSignal: true,
28
- isRequired: true,
29
- transformFunction: null
30
- },
31
- value: {
32
- classPropertyName: "value",
33
- publicName: "value",
34
- isSignal: true,
35
- isRequired: false,
36
- transformFunction: null
37
- },
38
- chip: {
39
- classPropertyName: "chip",
40
- publicName: "chip",
41
- isSignal: true,
42
- isRequired: false,
43
- transformFunction: null
44
- }
45
- },
46
- ngImport: i0,
47
- template: `
48
- @if (chip()) {
49
- <app-badge [label]="url()" />
50
- } @else {
51
- <a
52
- class="font-medium text-primary hover:underline"
53
- [href]="url()"
54
- target="_blank"
55
- rel="noopener noreferrer"
56
- >
57
- Abrir archivo
58
- </a>
59
- }
60
- `,
61
- isInline: true,
62
- dependencies: [{
63
- kind: "component",
64
- type: Badge,
65
- selector: "app-badge",
66
- inputs: ["label", "kind"]
67
- }]
68
- });
69
- };
70
- i0.ɵɵngDeclareClassMetadata({
71
- minVersion: "12.0.0",
72
- version: "22.2.3",
73
- ngImport: i0,
74
- type: FieldDisplayFile,
75
- decorators: [{
76
- type: Component,
77
- args: [{
78
- selector: "app-field-display-file",
79
- imports: [Badge],
80
- template: `
81
- @if (chip()) {
82
- <app-badge [label]="url()" />
83
- } @else {
84
- <a
85
- class="font-medium text-primary hover:underline"
86
- [href]="url()"
87
- target="_blank"
88
- rel="noopener noreferrer"
89
- >
90
- Abrir archivo
91
- </a>
92
- }
93
- `
94
- }]
95
- }],
96
- propDecorators: {
97
- field: [{
98
- type: i0.Input,
99
- args: [{
100
- isSignal: true,
101
- alias: "field",
102
- required: true
103
- }]
104
- }],
105
- value: [{
106
- type: i0.Input,
107
- args: [{
108
- isSignal: true,
109
- alias: "value",
110
- required: false
111
- }]
112
- }],
113
- chip: [{
114
- type: i0.Input,
115
- args: [{
116
- isSignal: true,
117
- alias: "chip",
118
- required: false
119
- }]
120
- }]
121
- }
122
- });
123
- export { FieldDisplayFile };
124
-
125
- //# sourceMappingURL=tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/display/display-file.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { Badge } from '../../shared/components/badge/badge';\nimport type { FieldSchema } from '../../core/models/schema.model';\n\n/**\n * Display por defecto de `file` (R4.1 · modo `display` · R9.5.3).\n *\n * Un archivo no tiene miniatura: el valor es la URL pública, y lo honesto\n * en la ficha de detalle es un enlace que lo abre (mismo lenguaje que el\n * «Abrir» de `url`). En la cabecera (`chip`) va como badge con la URL, la\n * paridad con el resto de los displays.\n */\n@Component({\n selector: 'app-field-display-file',\n imports: [Badge],\n template: `\n @if (chip()) {\n <app-badge [label]=\"url()\" />\n } @else {\n <a\n class=\"font-medium text-primary hover:underline\"\n [href]=\"url()\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Abrir archivo\n </a>\n }\n `,\n})\nexport class FieldDisplayFile {\n /** Campo que se pinta. Lo usa el tipo; acá sólo tipa la forma común. */\n readonly field = input.required<FieldSchema>();\n /** Valor crudo del registro (la URL pública). El host ya filtró el vacío. */\n readonly value = input<unknown>(null);\n /** `true` en la cabecera: la URL se pinta como chip compacto. */\n readonly chip = input(false);\n\n protected readonly url = computed(() => String(this.value()));\n}\n"],"mappings":";;;AA+BA,IAAa,mBAAb,MAAa,iBAAgB;CAElB,QAAQ,MAAM,SAAuB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAErC,QAAQ,MAAe,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE5B,OAAO,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAET,MAAM,eAAe,OAAO,KAAK,MAAK,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,MAAA,CAAA,+BAAA,CAAA,CAAA;CARlD,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAgB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAhB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAgB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;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,UAfjB;;;;;;;;;;;;;;EAaT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAdS;GAAK,UAAA;GAAA,QAAA,CAAA,SAAA,MAAA;EAAA,CAAA;CAAA,CAAA;;AAgBJ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgB,YAAA,CAAA;EAlB5B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,KAAK;GACf,UAAU;;;;;;;;;;;;;;EAcX,CAAA"}
@@ -1,152 +0,0 @@
1
- import { t as Badge } from "./tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs";
2
- import * as i0 from "@angular/core";
3
- import { Component, computed, input } from "@angular/core";
4
- import { LucideExternalLink } from "@lucide/angular";
5
- var FieldDisplayImage = class FieldDisplayImage {
6
- field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
7
- value = input(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
8
- chip = input(false, ...ngDevMode ? [{ debugName: "chip" }] : /* istanbul ignore next */ []);
9
- url = computed(() => String(this.value()), ...ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []);
10
- static ɵfac = i0.ɵɵngDeclareFactory({
11
- minVersion: "12.0.0",
12
- version: "22.2.3",
13
- ngImport: i0,
14
- type: FieldDisplayImage,
15
- deps: [],
16
- target: i0.ɵɵFactoryTarget.Component
17
- });
18
- static ɵcmp = i0.ɵɵngDeclareComponent({
19
- minVersion: "17.0.0",
20
- version: "22.2.3",
21
- type: FieldDisplayImage,
22
- isStandalone: true,
23
- selector: "app-field-display-image",
24
- inputs: {
25
- field: {
26
- classPropertyName: "field",
27
- publicName: "field",
28
- isSignal: true,
29
- isRequired: true,
30
- transformFunction: null
31
- },
32
- value: {
33
- classPropertyName: "value",
34
- publicName: "value",
35
- isSignal: true,
36
- isRequired: false,
37
- transformFunction: null
38
- },
39
- chip: {
40
- classPropertyName: "chip",
41
- publicName: "chip",
42
- isSignal: true,
43
- isRequired: false,
44
- transformFunction: null
45
- }
46
- },
47
- ngImport: i0,
48
- template: `
49
- @if (chip()) {
50
- <!-- Paridad R4.2: la cabecera siempre mostró el valor formateado
51
- como chip, y para una imagen ese valor era la URL. -->
52
- <app-badge [label]="url()" />
53
- } @else {
54
- <a
55
- [href]="url()"
56
- target="_blank"
57
- rel="noopener noreferrer"
58
- class="group relative inline-block overflow-hidden rounded-xl border border-neutral/20 shadow-xs transition hover:border-primary"
59
- >
60
- <img
61
- [src]="url()"
62
- [alt]="field().label"
63
- class="h-28 w-28 object-cover transition duration-300 group-hover:scale-105"
64
- />
65
- <div
66
- class="absolute inset-0 flex items-center justify-center bg-black/40 opacity-0 transition group-hover:opacity-100"
67
- >
68
- <svg lucideExternalLink size="18" class="text-white" />
69
- </div>
70
- </a>
71
- }
72
- `,
73
- isInline: true,
74
- dependencies: [{
75
- kind: "component",
76
- type: Badge,
77
- selector: "app-badge",
78
- inputs: ["label", "kind"]
79
- }, {
80
- kind: "component",
81
- type: LucideExternalLink,
82
- selector: "svg[lucideExternalLink]"
83
- }]
84
- });
85
- };
86
- i0.ɵɵngDeclareClassMetadata({
87
- minVersion: "12.0.0",
88
- version: "22.2.3",
89
- ngImport: i0,
90
- type: FieldDisplayImage,
91
- decorators: [{
92
- type: Component,
93
- args: [{
94
- selector: "app-field-display-image",
95
- imports: [Badge, LucideExternalLink],
96
- template: `
97
- @if (chip()) {
98
- <!-- Paridad R4.2: la cabecera siempre mostró el valor formateado
99
- como chip, y para una imagen ese valor era la URL. -->
100
- <app-badge [label]="url()" />
101
- } @else {
102
- <a
103
- [href]="url()"
104
- target="_blank"
105
- rel="noopener noreferrer"
106
- class="group relative inline-block overflow-hidden rounded-xl border border-neutral/20 shadow-xs transition hover:border-primary"
107
- >
108
- <img
109
- [src]="url()"
110
- [alt]="field().label"
111
- class="h-28 w-28 object-cover transition duration-300 group-hover:scale-105"
112
- />
113
- <div
114
- class="absolute inset-0 flex items-center justify-center bg-black/40 opacity-0 transition group-hover:opacity-100"
115
- >
116
- <svg lucideExternalLink size="18" class="text-white" />
117
- </div>
118
- </a>
119
- }
120
- `
121
- }]
122
- }],
123
- propDecorators: {
124
- field: [{
125
- type: i0.Input,
126
- args: [{
127
- isSignal: true,
128
- alias: "field",
129
- required: true
130
- }]
131
- }],
132
- value: [{
133
- type: i0.Input,
134
- args: [{
135
- isSignal: true,
136
- alias: "value",
137
- required: false
138
- }]
139
- }],
140
- chip: [{
141
- type: i0.Input,
142
- args: [{
143
- isSignal: true,
144
- alias: "chip",
145
- required: false
146
- }]
147
- }]
148
- }
149
- });
150
- export { FieldDisplayImage };
151
-
152
- //# sourceMappingURL=tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/display/display-image.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { LucideExternalLink } from '@lucide/angular';\n\nimport { Badge } from '../../shared/components/badge/badge';\nimport type { FieldSchema } from '../../core/models/schema.model';\n\n/**\n * Display por defecto de `image` (R4.1 · modo `display`).\n *\n * Mismo maquetado que la rama `kind === 'image'` de `detail-view` antes de\n * R4.2: miniatura de 7×7 con enlace a la imagen completa y overlay con el\n * icono de «abrir». El `alt` sigue siendo la etiqueta del campo.\n *\n * El host ya se encarga del valor vacío (pinta `—`), así que acá la URL\n * siempre existe.\n */\n@Component({\n selector: 'app-field-display-image',\n imports: [Badge, LucideExternalLink],\n template: `\n @if (chip()) {\n <!-- Paridad R4.2: la cabecera siempre mostró el valor formateado\n como chip, y para una imagen ese valor era la URL. -->\n <app-badge [label]=\"url()\" />\n } @else {\n <a\n [href]=\"url()\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"group relative inline-block overflow-hidden rounded-xl border border-neutral/20 shadow-xs transition hover:border-primary\"\n >\n <img\n [src]=\"url()\"\n [alt]=\"field().label\"\n class=\"h-28 w-28 object-cover transition duration-300 group-hover:scale-105\"\n />\n <div\n class=\"absolute inset-0 flex items-center justify-center bg-black/40 opacity-0 transition group-hover:opacity-100\"\n >\n <svg lucideExternalLink size=\"18\" class=\"text-white\" />\n </div>\n </a>\n }\n `,\n})\nexport class FieldDisplayImage {\n readonly field = input.required<FieldSchema>();\n readonly value = input<unknown>(null);\n /** `true` en la cabecera: la URL se pinta como chip compacto. */\n readonly chip = input(false);\n\n protected readonly url = computed(() => String(this.value()));\n}\n"],"mappings":";;;;AA8CA,IAAa,oBAAb,MAAa,kBAAiB;CACnB,QAAQ,MAAM,SAAuB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACrC,QAAQ,MAAe,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE5B,OAAO,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAET,MAAM,eAAe,OAAO,KAAK,MAAK,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,MAAA,CAAA,+BAAA,CAAA,CAAA;CANlD,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,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,UA1BlB;;;;;;;;;;;;;;;;;;;;;;;;;EAwBT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAzBS;GAAK,UAAA;GAAA,QAAA,CAAA,SAAA,MAAA;EAAA,GAAA;GAAA,MAAA;GAAA,MAAE;GAAkB,UAAA;EAAA,CAAA;CAAA,CAAA;;AA2BxB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EA7B7B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,OAAO,kBAAkB;GACnC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;EAyBX,CAAA"}
@@ -1,211 +0,0 @@
1
- import { t as Badge } from "./tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs";
2
- import { n as resolveBadgeKind } from "./tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs";
3
- import * as i0 from "@angular/core";
4
- import { Component, computed, input } from "@angular/core";
5
- import { LucideClock } from "@lucide/angular";
6
- const FORMATO_FECHA_HORA = new Intl.DateTimeFormat("es-PE", {
7
- dateStyle: "medium",
8
- timeStyle: "short",
9
- timeZone: "UTC"
10
- });
11
- var FieldDisplayList = class FieldDisplayList {
12
- field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
13
- value = input(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
14
- chip = input(false, ...ngDevMode ? [{ debugName: "chip" }] : /* istanbul ignore next */ []);
15
- items = computed(() => Array.isArray(this.value()) ? this.value() : [], ...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
16
- resumen() {
17
- return `${this.items().length} elementos`;
18
- }
19
- fechaHora(valor) {
20
- if (!valor) return "—";
21
- const d = new Date(String(valor));
22
- return Number.isNaN(d.getTime()) ? String(valor) : FORMATO_FECHA_HORA.format(d);
23
- }
24
- etiquetaAccion(valor) {
25
- if (!valor) return "";
26
- return String(valor).replace(/_/g, " ");
27
- }
28
- kindAccion(valor) {
29
- return resolveBadgeKind(String(valor));
30
- }
31
- static ɵfac = i0.ɵɵngDeclareFactory({
32
- minVersion: "12.0.0",
33
- version: "22.2.3",
34
- ngImport: i0,
35
- type: FieldDisplayList,
36
- deps: [],
37
- target: i0.ɵɵFactoryTarget.Component
38
- });
39
- static ɵcmp = i0.ɵɵngDeclareComponent({
40
- minVersion: "17.0.0",
41
- version: "22.2.3",
42
- type: FieldDisplayList,
43
- isStandalone: true,
44
- selector: "app-field-display-list",
45
- inputs: {
46
- field: {
47
- classPropertyName: "field",
48
- publicName: "field",
49
- isSignal: true,
50
- isRequired: true,
51
- transformFunction: null
52
- },
53
- value: {
54
- classPropertyName: "value",
55
- publicName: "value",
56
- isSignal: true,
57
- isRequired: false,
58
- transformFunction: null
59
- },
60
- chip: {
61
- classPropertyName: "chip",
62
- publicName: "chip",
63
- isSignal: true,
64
- isRequired: false,
65
- transformFunction: null
66
- }
67
- },
68
- ngImport: i0,
69
- template: `
70
- @if (chip()) {
71
- <!-- Paridad R4.2: la cabecera siempre mostró el valor formateado
72
- como chip, y para una lista ese valor era «N elementos». -->
73
- <app-badge [label]="resumen()" />
74
- } @else if (items().length > 0) {
75
- <div
76
- class="relative pl-6 space-y-4 before:absolute before:left-2 before:top-2 before:bottom-2 before:w-0.5 before:bg-neutral/20"
77
- >
78
- @for (item of items(); track $index) {
79
- <div class="relative group">
80
- <span
81
- class="absolute -left-6 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-primary/20 ring-4 ring-surface"
82
- >
83
- <span class="h-1.5 w-1.5 rounded-full bg-primary"></span>
84
- </span>
85
- <div
86
- class="rounded-xl border border-neutral/10 bg-neutral/5 p-3.5 transition hover:border-neutral/20"
87
- >
88
- <div class="flex flex-wrap items-center justify-between gap-2 mb-1.5">
89
- @if (item['action']) {
90
- <app-badge
91
- [label]="etiquetaAccion(item['action'])"
92
- [kind]="kindAccion(item['action'])"
93
- />
94
- }
95
- @if (item['at']) {
96
- <span class="text-xs text-neutral flex items-center gap-1">
97
- <svg lucideClock size="12" />
98
- {{ fechaHora(item['at']) }}
99
- </span>
100
- }
101
- </div>
102
- @if (item['detail']) {
103
- <p class="text-sm text-neutral-light">{{ item['detail'] }}</p>
104
- }
105
- </div>
106
- </div>
107
- }
108
- </div>
109
- } @else {
110
- <p class="text-xs italic text-neutral">No hay registros en el historial.</p>
111
- }
112
- `,
113
- isInline: true,
114
- dependencies: [{
115
- kind: "component",
116
- type: Badge,
117
- selector: "app-badge",
118
- inputs: ["label", "kind"]
119
- }, {
120
- kind: "component",
121
- type: LucideClock,
122
- selector: "svg[lucideClock]"
123
- }]
124
- });
125
- };
126
- i0.ɵɵngDeclareClassMetadata({
127
- minVersion: "12.0.0",
128
- version: "22.2.3",
129
- ngImport: i0,
130
- type: FieldDisplayList,
131
- decorators: [{
132
- type: Component,
133
- args: [{
134
- selector: "app-field-display-list",
135
- imports: [Badge, LucideClock],
136
- template: `
137
- @if (chip()) {
138
- <!-- Paridad R4.2: la cabecera siempre mostró el valor formateado
139
- como chip, y para una lista ese valor era «N elementos». -->
140
- <app-badge [label]="resumen()" />
141
- } @else if (items().length > 0) {
142
- <div
143
- class="relative pl-6 space-y-4 before:absolute before:left-2 before:top-2 before:bottom-2 before:w-0.5 before:bg-neutral/20"
144
- >
145
- @for (item of items(); track $index) {
146
- <div class="relative group">
147
- <span
148
- class="absolute -left-6 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-primary/20 ring-4 ring-surface"
149
- >
150
- <span class="h-1.5 w-1.5 rounded-full bg-primary"></span>
151
- </span>
152
- <div
153
- class="rounded-xl border border-neutral/10 bg-neutral/5 p-3.5 transition hover:border-neutral/20"
154
- >
155
- <div class="flex flex-wrap items-center justify-between gap-2 mb-1.5">
156
- @if (item['action']) {
157
- <app-badge
158
- [label]="etiquetaAccion(item['action'])"
159
- [kind]="kindAccion(item['action'])"
160
- />
161
- }
162
- @if (item['at']) {
163
- <span class="text-xs text-neutral flex items-center gap-1">
164
- <svg lucideClock size="12" />
165
- {{ fechaHora(item['at']) }}
166
- </span>
167
- }
168
- </div>
169
- @if (item['detail']) {
170
- <p class="text-sm text-neutral-light">{{ item['detail'] }}</p>
171
- }
172
- </div>
173
- </div>
174
- }
175
- </div>
176
- } @else {
177
- <p class="text-xs italic text-neutral">No hay registros en el historial.</p>
178
- }
179
- `
180
- }]
181
- }],
182
- propDecorators: {
183
- field: [{
184
- type: i0.Input,
185
- args: [{
186
- isSignal: true,
187
- alias: "field",
188
- required: true
189
- }]
190
- }],
191
- value: [{
192
- type: i0.Input,
193
- args: [{
194
- isSignal: true,
195
- alias: "value",
196
- required: false
197
- }]
198
- }],
199
- chip: [{
200
- type: i0.Input,
201
- args: [{
202
- isSignal: true,
203
- alias: "chip",
204
- required: false
205
- }]
206
- }]
207
- }
208
- });
209
- export { FieldDisplayList };
210
-
211
- //# sourceMappingURL=tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/display/display-list.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { LucideClock } from '@lucide/angular';\n\nimport { Badge, type BadgeKind } from '../../shared/components/badge/badge';\nimport type { FieldSchema } from '../../core/models/schema.model';\nimport { resolveBadgeKind } from './display-badge';\n\nconst FORMATO_FECHA_HORA = new Intl.DateTimeFormat('es-PE', {\n dateStyle: 'medium',\n timeStyle: 'short',\n timeZone: 'UTC',\n});\n\ntype Item = Record<string, unknown>;\n\n/**\n * Display por defecto de `list` (R4.1 · modo `display`).\n *\n * Es la línea de tiempo del historial: **toda la plantilla de `list` que\n * vivía en `detail-view`** se muda acá, que es lo que R4.2 exige\n * («`detail-view` no tiene plantilla propia de campo»). El agrupador sigue\n * siendo `detail-view`: él decide que este campo va en su bloque con el\n * `<h3>` y el ancho grande; acá sólo se pinta el valor.\n *\n * `itemFields` no participa: el timeline lee `action` / `at` / `detail`\n * directamente, igual que antes.\n */\n@Component({\n selector: 'app-field-display-list',\n imports: [Badge, LucideClock],\n template: `\n @if (chip()) {\n <!-- Paridad R4.2: la cabecera siempre mostró el valor formateado\n como chip, y para una lista ese valor era «N elementos». -->\n <app-badge [label]=\"resumen()\" />\n } @else if (items().length > 0) {\n <div\n class=\"relative pl-6 space-y-4 before:absolute before:left-2 before:top-2 before:bottom-2 before:w-0.5 before:bg-neutral/20\"\n >\n @for (item of items(); track $index) {\n <div class=\"relative group\">\n <span\n class=\"absolute -left-6 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-primary/20 ring-4 ring-surface\"\n >\n <span class=\"h-1.5 w-1.5 rounded-full bg-primary\"></span>\n </span>\n <div\n class=\"rounded-xl border border-neutral/10 bg-neutral/5 p-3.5 transition hover:border-neutral/20\"\n >\n <div class=\"flex flex-wrap items-center justify-between gap-2 mb-1.5\">\n @if (item['action']) {\n <app-badge\n [label]=\"etiquetaAccion(item['action'])\"\n [kind]=\"kindAccion(item['action'])\"\n />\n }\n @if (item['at']) {\n <span class=\"text-xs text-neutral flex items-center gap-1\">\n <svg lucideClock size=\"12\" />\n {{ fechaHora(item['at']) }}\n </span>\n }\n </div>\n @if (item['detail']) {\n <p class=\"text-sm text-neutral-light\">{{ item['detail'] }}</p>\n }\n </div>\n </div>\n }\n </div>\n } @else {\n <p class=\"text-xs italic text-neutral\">No hay registros en el historial.</p>\n }\n `,\n})\nexport class FieldDisplayList {\n readonly field = input.required<FieldSchema>();\n readonly value = input<unknown>(null);\n /** `true` en la cabecera: el resumen «N elementos» va como chip. */\n readonly chip = input(false);\n\n /** El host entrega el valor crudo; sólo un array tiene timeline. */\n protected readonly items = computed<Item[]>(() =>\n Array.isArray(this.value()) ? (this.value() as Item[]) : [],\n );\n\n /** Mismo texto que daba el formateo de detalle previo a R4.2. */\n protected resumen(): string {\n return `${this.items().length} elementos`;\n }\n\n protected fechaHora(valor: unknown): string {\n if (!valor) return '—';\n const d = new Date(String(valor));\n return Number.isNaN(d.getTime()) ? String(valor) : FORMATO_FECHA_HORA.format(d);\n }\n\n protected etiquetaAccion(valor: unknown): string {\n if (!valor) return '';\n return String(valor).replace(/_/g, ' ');\n }\n\n protected kindAccion(valor: unknown): BadgeKind {\n return resolveBadgeKind(String(valor));\n }\n}\n"],"mappings":";;;;;AAQA,MAAM,qBAAqB,IAAI,KAAK,eAAe,SAAS;CAC1D,WAAW;CACX,WAAW;CACX,UAAU;AACX,CAAA;AAgED,IAAa,mBAAb,MAAa,iBAAgB;CAClB,QAAQ,MAAM,SAAuB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACrC,QAAQ,MAAe,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE5B,OAAO,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAGT,QAAQ,eACzB,MAAM,QAAQ,KAAK,MAAK,CAAE,IAAK,KAAK,MAAK,IAAgB,CAAA,GAC1D,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAGS,UAAO;EACf,OAAO,GAAG,KAAK,MAAK,CAAE,CAAC,OAAM;CAC/B;CAEU,UAAU,OAAc;EAChC,IAAI,CAAC,OAAO,OAAO;EACnB,MAAM,IAAI,IAAI,KAAK,OAAO,KAAK,CAAC;EAChC,OAAO,OAAO,MAAM,EAAE,QAAO,CAAE,IAAI,OAAO,KAAK,IAAI,mBAAmB,OAAO,CAAC;CAChF;CAEU,eAAe,OAAc;EACrC,IAAI,CAAC,OAAO,OAAO;EACnB,OAAO,OAAO,KAAK,CAAC,CAAC,QAAQ,MAAM,GAAG;CACxC;CAEU,WAAW,OAAc;EACjC,OAAO,iBAAiB,OAAO,KAAK,CAAC;CACvC;CA7BW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAgB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAhB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAgB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;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,UA7CjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MA5CS;GAAK,UAAA;GAAA,QAAA,CAAA,SAAA,MAAA;EAAA,GAAA;GAAA,MAAA;GAAA,MAAE;GAAW,UAAA;EAAA,CAAA;CAAA,CAAA;;AA8CjB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgB,YAAA,CAAA;EAhD5B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,OAAO,WAAW;GAC5B,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CX,CAAA"}
@@ -1,116 +0,0 @@
1
- import { t as Badge } from "./tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs";
2
- import * as i0 from "@angular/core";
3
- import { Component, computed, input } from "@angular/core";
4
- const FORMATO_NUMERO = new Intl.NumberFormat("es-PE");
5
- var FieldDisplayNumber = class FieldDisplayNumber {
6
- field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
7
- value = input(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
8
- chip = input(false, ...ngDevMode ? [{ debugName: "chip" }] : /* istanbul ignore next */ []);
9
- texto = computed(() => {
10
- const n = Number(this.value());
11
- if (!Number.isFinite(n)) return String(this.value());
12
- return FORMATO_NUMERO.format(n);
13
- }, ...ngDevMode ? [{ debugName: "texto" }] : /* istanbul ignore next */ []);
14
- static ɵfac = i0.ɵɵngDeclareFactory({
15
- minVersion: "12.0.0",
16
- version: "22.2.3",
17
- ngImport: i0,
18
- type: FieldDisplayNumber,
19
- deps: [],
20
- target: i0.ɵɵFactoryTarget.Component
21
- });
22
- static ɵcmp = i0.ɵɵngDeclareComponent({
23
- minVersion: "17.0.0",
24
- version: "22.2.3",
25
- type: FieldDisplayNumber,
26
- isStandalone: true,
27
- selector: "app-field-display-number",
28
- inputs: {
29
- field: {
30
- classPropertyName: "field",
31
- publicName: "field",
32
- isSignal: true,
33
- isRequired: true,
34
- transformFunction: null
35
- },
36
- value: {
37
- classPropertyName: "value",
38
- publicName: "value",
39
- isSignal: true,
40
- isRequired: false,
41
- transformFunction: null
42
- },
43
- chip: {
44
- classPropertyName: "chip",
45
- publicName: "chip",
46
- isSignal: true,
47
- isRequired: false,
48
- transformFunction: null
49
- }
50
- },
51
- ngImport: i0,
52
- template: `
53
- @if (chip()) {
54
- <app-badge [label]="texto()" />
55
- } @else {
56
- {{ texto() }}
57
- }
58
- `,
59
- isInline: true,
60
- dependencies: [{
61
- kind: "component",
62
- type: Badge,
63
- selector: "app-badge",
64
- inputs: ["label", "kind"]
65
- }]
66
- });
67
- };
68
- i0.ɵɵngDeclareClassMetadata({
69
- minVersion: "12.0.0",
70
- version: "22.2.3",
71
- ngImport: i0,
72
- type: FieldDisplayNumber,
73
- decorators: [{
74
- type: Component,
75
- args: [{
76
- selector: "app-field-display-number",
77
- imports: [Badge],
78
- template: `
79
- @if (chip()) {
80
- <app-badge [label]="texto()" />
81
- } @else {
82
- {{ texto() }}
83
- }
84
- `
85
- }]
86
- }],
87
- propDecorators: {
88
- field: [{
89
- type: i0.Input,
90
- args: [{
91
- isSignal: true,
92
- alias: "field",
93
- required: true
94
- }]
95
- }],
96
- value: [{
97
- type: i0.Input,
98
- args: [{
99
- isSignal: true,
100
- alias: "value",
101
- required: false
102
- }]
103
- }],
104
- chip: [{
105
- type: i0.Input,
106
- args: [{
107
- isSignal: true,
108
- alias: "chip",
109
- required: false
110
- }]
111
- }]
112
- }
113
- });
114
- export { FieldDisplayNumber };
115
-
116
- //# sourceMappingURL=tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/display/display-number.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { Badge } from '../../shared/components/badge/badge';\nimport type { FieldSchema } from '../../core/models/schema.model';\n\nconst FORMATO_NUMERO = new Intl.NumberFormat('es-PE');\n\n/**\n * Display por defecto de `number` y `currency` (R4.1 · modo `display`).\n *\n * Los dos tipos compartían rama en `formatValue` y la comparten acá: miles\n * con separador `es-PE` y sin decimales fijos (el schema controla los\n * decimales con `decimals` en el form; en display manda el valor tal cual\n * viene). Si no es número, se pinta el texto crudo — la degradación que ya\n * hacía `detail-view`.\n */\n@Component({\n selector: 'app-field-display-number',\n imports: [Badge],\n template: `\n @if (chip()) {\n <app-badge [label]=\"texto()\" />\n } @else {\n {{ texto() }}\n }\n `,\n})\nexport class FieldDisplayNumber {\n readonly field = input.required<FieldSchema>();\n readonly value = input<unknown>(null);\n /** `true` en la cabecera: el número se pinta como chip compacto. */\n readonly chip = input(false);\n\n protected readonly texto = computed(() => {\n const n = Number(this.value());\n if (!Number.isFinite(n)) {\n return String(this.value());\n }\n return FORMATO_NUMERO.format(n);\n });\n}\n"],"mappings":";;;AAKA,MAAM,iBAAiB,IAAI,KAAK,aAAa,OAAO;AAsBpD,IAAa,qBAAb,MAAa,mBAAkB;CACpB,QAAQ,MAAM,SAAuB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACrC,QAAQ,MAAe,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE5B,OAAO,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAET,QAAQ,eAAc;EACvC,MAAM,IAAI,OAAO,KAAK,MAAK,CAAE;EAC7B,IAAI,CAAC,OAAO,SAAS,CAAC,GACpB,OAAO,OAAO,KAAK,MAAK,CAAE;EAE5B,OAAO,eAAe,OAAO,CAAC;CAChC,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAZS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAkB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAlB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAkB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;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,UARnB;;;;;;;EAMT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAPS;GAAK,UAAA;GAAA,QAAA,CAAA,SAAA,MAAA;EAAA,CAAA;CAAA,CAAA;;AASJ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAkB,YAAA,CAAA;EAX9B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,KAAK;GACf,UAAU;;;;;;;EAOX,CAAA"}