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

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 (368) hide show
  1. package/fesm2022/tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs +84 -0
  2. package/fesm2022/tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs.map +1 -0
  3. package/fesm2022/tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs +140 -0
  4. package/fesm2022/tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs.map +1 -0
  5. package/fesm2022/tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs +113 -0
  6. package/fesm2022/tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs.map +1 -0
  7. package/fesm2022/tinya-code-gas-admin-ui-button-BQjNW8KB.mjs +163 -0
  8. package/fesm2022/tinya-code-gas-admin-ui-button-BQjNW8KB.mjs.map +1 -0
  9. package/fesm2022/tinya-code-gas-admin-ui-calendar-view-DCY8bj2V.mjs +1027 -0
  10. package/fesm2022/tinya-code-gas-admin-ui-calendar-view-DCY8bj2V.mjs.map +1 -0
  11. package/fesm2022/tinya-code-gas-admin-ui-chart-line-BjdlKHoH.mjs +278 -0
  12. package/fesm2022/tinya-code-gas-admin-ui-chart-line-BjdlKHoH.mjs.map +1 -0
  13. package/fesm2022/tinya-code-gas-admin-ui-color-Dljh_By3.mjs +107 -0
  14. package/fesm2022/tinya-code-gas-admin-ui-color-Dljh_By3.mjs.map +1 -0
  15. package/fesm2022/tinya-code-gas-admin-ui-condition-evaluator-DY2k1M3C.mjs +101 -0
  16. package/fesm2022/tinya-code-gas-admin-ui-condition-evaluator-DY2k1M3C.mjs.map +1 -0
  17. package/fesm2022/tinya-code-gas-admin-ui-currency-BvuF3Z63.mjs +141 -0
  18. package/fesm2022/tinya-code-gas-admin-ui-currency-BvuF3Z63.mjs.map +1 -0
  19. package/fesm2022/tinya-code-gas-admin-ui-data-source.service-96FSbN72.mjs +88 -0
  20. package/fesm2022/tinya-code-gas-admin-ui-data-source.service-96FSbN72.mjs.map +1 -0
  21. package/fesm2022/tinya-code-gas-admin-ui-date-1SJGXZrd.mjs +107 -0
  22. package/fesm2022/tinya-code-gas-admin-ui-date-1SJGXZrd.mjs.map +1 -0
  23. package/fesm2022/tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs +140 -0
  24. package/fesm2022/tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs.map +1 -0
  25. package/fesm2022/tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs +119 -0
  26. package/fesm2022/tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs.map +1 -0
  27. package/fesm2022/tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs +125 -0
  28. package/fesm2022/tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs.map +1 -0
  29. package/fesm2022/tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs +152 -0
  30. package/fesm2022/tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs.map +1 -0
  31. package/fesm2022/tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs +211 -0
  32. package/fesm2022/tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs.map +1 -0
  33. package/fesm2022/tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs +116 -0
  34. package/fesm2022/tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs.map +1 -0
  35. package/fesm2022/tinya-code-gas-admin-ui-display-text-B8CdVNpv.mjs +111 -0
  36. package/fesm2022/tinya-code-gas-admin-ui-display-text-B8CdVNpv.mjs.map +1 -0
  37. package/fesm2022/tinya-code-gas-admin-ui-dropdown-C3blvmE1.mjs +122 -0
  38. package/fesm2022/tinya-code-gas-admin-ui-dropdown-C3blvmE1.mjs.map +1 -0
  39. package/fesm2022/tinya-code-gas-admin-ui-email-CT_O5ihA.mjs +107 -0
  40. package/fesm2022/tinya-code-gas-admin-ui-email-CT_O5ihA.mjs.map +1 -0
  41. package/fesm2022/tinya-code-gas-admin-ui-empty-state-BMc0QtoT.mjs +109 -0
  42. package/fesm2022/tinya-code-gas-admin-ui-empty-state-BMc0QtoT.mjs.map +1 -0
  43. package/fesm2022/tinya-code-gas-admin-ui-error-mapper.service-DY5y1FjE.mjs +45 -0
  44. package/fesm2022/tinya-code-gas-admin-ui-error-mapper.service-DY5y1FjE.mjs.map +1 -0
  45. package/fesm2022/tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs +50 -0
  46. package/fesm2022/tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs.map +1 -0
  47. package/fesm2022/tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs +24 -0
  48. package/fesm2022/tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs.map +1 -0
  49. package/fesm2022/tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs +27 -0
  50. package/fesm2022/tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs.map +1 -0
  51. package/fesm2022/tinya-code-gas-admin-ui-file-Dmxioog7.mjs +408 -0
  52. package/fesm2022/tinya-code-gas-admin-ui-file-Dmxioog7.mjs.map +1 -0
  53. package/fesm2022/tinya-code-gas-admin-ui-form-view-CEe7aZ4m.mjs +4516 -0
  54. package/fesm2022/tinya-code-gas-admin-ui-form-view-CEe7aZ4m.mjs.map +1 -0
  55. package/fesm2022/tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs +82 -0
  56. package/fesm2022/tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs.map +1 -0
  57. package/fesm2022/tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs +105 -0
  58. package/fesm2022/tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs.map +1 -0
  59. package/fesm2022/tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs +65 -0
  60. package/fesm2022/tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs.map +1 -0
  61. package/fesm2022/tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs +65 -0
  62. package/fesm2022/tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs.map +1 -0
  63. package/fesm2022/tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs +65 -0
  64. package/fesm2022/tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs.map +1 -0
  65. package/fesm2022/tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs +59 -0
  66. package/fesm2022/tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs.map +1 -0
  67. package/fesm2022/tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs +94 -0
  68. package/fesm2022/tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs.map +1 -0
  69. package/fesm2022/tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs +72 -0
  70. package/fesm2022/tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs.map +1 -0
  71. package/fesm2022/tinya-code-gas-admin-ui-group-h7-O8tt4.mjs +238 -0
  72. package/fesm2022/tinya-code-gas-admin-ui-group-h7-O8tt4.mjs.map +1 -0
  73. package/fesm2022/tinya-code-gas-admin-ui-image-7UhJ7nqI.mjs +416 -0
  74. package/fesm2022/tinya-code-gas-admin-ui-image-7UhJ7nqI.mjs.map +1 -0
  75. package/fesm2022/tinya-code-gas-admin-ui-kanban-view-Dl0Ol5Kb.mjs +439 -0
  76. package/fesm2022/tinya-code-gas-admin-ui-kanban-view-Dl0Ol5Kb.mjs.map +1 -0
  77. package/fesm2022/tinya-code-gas-admin-ui-key-value-nVdgg5at.mjs +513 -0
  78. package/fesm2022/tinya-code-gas-admin-ui-key-value-nVdgg5at.mjs.map +1 -0
  79. package/fesm2022/tinya-code-gas-admin-ui-list-DTtCYS4d.mjs +637 -0
  80. package/fesm2022/tinya-code-gas-admin-ui-list-DTtCYS4d.mjs.map +1 -0
  81. package/fesm2022/tinya-code-gas-admin-ui-metric-card-DnGMQL8l.mjs +127 -0
  82. package/fesm2022/tinya-code-gas-admin-ui-metric-card-DnGMQL8l.mjs.map +1 -0
  83. package/fesm2022/tinya-code-gas-admin-ui-multiselect-PB28e-jl.mjs +251 -0
  84. package/fesm2022/tinya-code-gas-admin-ui-multiselect-PB28e-jl.mjs.map +1 -0
  85. package/fesm2022/tinya-code-gas-admin-ui-notification.service-LjSULER6.mjs +66 -0
  86. package/fesm2022/tinya-code-gas-admin-ui-notification.service-LjSULER6.mjs.map +1 -0
  87. package/fesm2022/tinya-code-gas-admin-ui-number-JNr7glc8.mjs +114 -0
  88. package/fesm2022/tinya-code-gas-admin-ui-number-JNr7glc8.mjs.map +1 -0
  89. package/fesm2022/tinya-code-gas-admin-ui-phone-jR417hPf.mjs +116 -0
  90. package/fesm2022/tinya-code-gas-admin-ui-phone-jR417hPf.mjs.map +1 -0
  91. package/fesm2022/tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs +235 -0
  92. package/fesm2022/tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs.map +1 -0
  93. package/fesm2022/tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs +8 -0
  94. package/fesm2022/tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs.map +1 -0
  95. package/fesm2022/tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs +124 -0
  96. package/fesm2022/tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs.map +1 -0
  97. package/fesm2022/tinya-code-gas-admin-ui-record-list-BiZfnd_7.mjs +249 -0
  98. package/fesm2022/tinya-code-gas-admin-ui-record-list-BiZfnd_7.mjs.map +1 -0
  99. package/fesm2022/tinya-code-gas-admin-ui-relation-drawer.service-B0kT8EiW.mjs +39 -0
  100. package/fesm2022/tinya-code-gas-admin-ui-relation-drawer.service-B0kT8EiW.mjs.map +1 -0
  101. package/fesm2022/tinya-code-gas-admin-ui-relation-ykpJ3PYl.mjs +309 -0
  102. package/fesm2022/tinya-code-gas-admin-ui-relation-ykpJ3PYl.mjs.map +1 -0
  103. package/fesm2022/tinya-code-gas-admin-ui-render-registry-B88Pme-y.mjs +576 -0
  104. package/fesm2022/tinya-code-gas-admin-ui-render-registry-B88Pme-y.mjs.map +1 -0
  105. package/fesm2022/tinya-code-gas-admin-ui-rich-select-CIHaOrbU.mjs +161 -0
  106. package/fesm2022/tinya-code-gas-admin-ui-rich-select-CIHaOrbU.mjs.map +1 -0
  107. package/fesm2022/tinya-code-gas-admin-ui-rolldown-runtime-DpJrqANO.mjs +11 -0
  108. package/fesm2022/tinya-code-gas-admin-ui-schema-catalog-D0Pk0wAN.mjs +685 -0
  109. package/fesm2022/tinya-code-gas-admin-ui-schema-catalog-D0Pk0wAN.mjs.map +1 -0
  110. package/fesm2022/tinya-code-gas-admin-ui-seed-DkVZbxPP.mjs +80 -0
  111. package/fesm2022/tinya-code-gas-admin-ui-seed-DkVZbxPP.mjs.map +1 -0
  112. package/fesm2022/tinya-code-gas-admin-ui-select-CDwX9yNO.mjs +296 -0
  113. package/fesm2022/tinya-code-gas-admin-ui-select-CDwX9yNO.mjs.map +1 -0
  114. package/fesm2022/tinya-code-gas-admin-ui-skeleton-DnWK0tcZ.mjs +119 -0
  115. package/fesm2022/tinya-code-gas-admin-ui-skeleton-DnWK0tcZ.mjs.map +1 -0
  116. package/fesm2022/tinya-code-gas-admin-ui-slug-DU58cbiY.mjs +158 -0
  117. package/fesm2022/tinya-code-gas-admin-ui-slug-DU58cbiY.mjs.map +1 -0
  118. package/fesm2022/tinya-code-gas-admin-ui-source-options-B9R4mw8-.mjs +26 -0
  119. package/fesm2022/tinya-code-gas-admin-ui-source-options-B9R4mw8-.mjs.map +1 -0
  120. package/fesm2022/tinya-code-gas-admin-ui-status-progress-DmeG8htE.mjs +205 -0
  121. package/fesm2022/tinya-code-gas-admin-ui-status-progress-DmeG8htE.mjs.map +1 -0
  122. package/fesm2022/tinya-code-gas-admin-ui-string-list-gleasqzD.mjs +432 -0
  123. package/fesm2022/tinya-code-gas-admin-ui-string-list-gleasqzD.mjs.map +1 -0
  124. package/fesm2022/tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs +36 -0
  125. package/fesm2022/tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs.map +1 -0
  126. package/fesm2022/tinya-code-gas-admin-ui-text-CUPmL7W_.mjs +107 -0
  127. package/fesm2022/tinya-code-gas-admin-ui-text-CUPmL7W_.mjs.map +1 -0
  128. package/fesm2022/tinya-code-gas-admin-ui-textarea-CGLSIW13.mjs +223 -0
  129. package/fesm2022/tinya-code-gas-admin-ui-textarea-CGLSIW13.mjs.map +1 -0
  130. package/fesm2022/tinya-code-gas-admin-ui-time-BcHzsTWf.mjs +107 -0
  131. package/fesm2022/tinya-code-gas-admin-ui-time-BcHzsTWf.mjs.map +1 -0
  132. package/fesm2022/tinya-code-gas-admin-ui-upload.service-CZPEPCeN.mjs +60 -0
  133. package/fesm2022/tinya-code-gas-admin-ui-upload.service-CZPEPCeN.mjs.map +1 -0
  134. package/fesm2022/tinya-code-gas-admin-ui-url-GO4LZi__.mjs +141 -0
  135. package/fesm2022/tinya-code-gas-admin-ui-url-GO4LZi__.mjs.map +1 -0
  136. package/fesm2022/tinya-code-gas-admin-ui.mjs +4738 -0
  137. package/fesm2022/tinya-code-gas-admin-ui.mjs.map +1 -0
  138. package/package.json +15 -3
  139. package/types/tinya-code-gas-admin-ui.d.ts +3634 -0
  140. package/ng-package.json +0 -7
  141. package/src/lib/actions/action-registry.spec.ts +0 -52
  142. package/src/lib/actions/action-registry.ts +0 -126
  143. package/src/lib/actions/action-service.spec.ts +0 -215
  144. package/src/lib/actions/action-service.ts +0 -87
  145. package/src/lib/actions/descriptors.spec.ts +0 -155
  146. package/src/lib/actions/descriptors.ts +0 -154
  147. package/src/lib/columns/column-cell.ts +0 -33
  148. package/src/lib/columns/column-defaults.spec.ts +0 -99
  149. package/src/lib/columns/column-defaults.ts +0 -84
  150. package/src/lib/columns/column-format.spec.ts +0 -274
  151. package/src/lib/columns/descriptors.ts +0 -113
  152. package/src/lib/columns/format-badge.ts +0 -51
  153. package/src/lib/columns/format-boolean.ts +0 -58
  154. package/src/lib/columns/format-currency.ts +0 -30
  155. package/src/lib/columns/format-date.ts +0 -35
  156. package/src/lib/columns/format-number.ts +0 -32
  157. package/src/lib/columns/format-text.ts +0 -23
  158. package/src/lib/columns/format-thumbnail.ts +0 -63
  159. package/src/lib/core/adapters/firebase-auth.adapter.ts +0 -6
  160. package/src/lib/core/guards/auth.guard.spec.ts +0 -88
  161. package/src/lib/core/guards/auth.guard.ts +0 -48
  162. package/src/lib/core/guards/unsaved-changes.guard.ts +0 -16
  163. package/src/lib/core/interceptors/api-error.interceptor.spec.ts +0 -182
  164. package/src/lib/core/interceptors/api-error.interceptor.ts +0 -87
  165. package/src/lib/core/models/api.model.ts +0 -104
  166. package/src/lib/core/models/schema-descriptions.ts +0 -118
  167. package/src/lib/core/models/schema.model.ts +0 -1097
  168. package/src/lib/core/registry/composition-validator.spec.ts +0 -358
  169. package/src/lib/core/registry/composition-validator.ts +0 -270
  170. package/src/lib/core/registry/field-validators.spec.ts +0 -199
  171. package/src/lib/core/registry/field-validators.ts +0 -440
  172. package/src/lib/core/registry/render-host.spec.ts +0 -208
  173. package/src/lib/core/registry/render-host.ts +0 -646
  174. package/src/lib/core/registry/render-registry.spec.ts +0 -96
  175. package/src/lib/core/registry/render-registry.ts +0 -312
  176. package/src/lib/core/registry/schema-catalog.ts +0 -156
  177. package/src/lib/core/services/api.service.spec.ts +0 -1142
  178. package/src/lib/core/services/api.service.ts +0 -371
  179. package/src/lib/core/services/auth.service.spec.ts +0 -653
  180. package/src/lib/core/services/auth.service.ts +0 -503
  181. package/src/lib/core/services/config.service.spec.ts +0 -121
  182. package/src/lib/core/services/config.service.ts +0 -119
  183. package/src/lib/core/services/data-source.service.spec.ts +0 -179
  184. package/src/lib/core/services/data-source.service.ts +0 -142
  185. package/src/lib/core/services/error-mapper.service.spec.ts +0 -50
  186. package/src/lib/core/services/error-mapper.service.ts +0 -49
  187. package/src/lib/core/services/notification.service.ts +0 -73
  188. package/src/lib/core/services/relation-drawer.service.ts +0 -41
  189. package/src/lib/core/services/theme.service.spec.ts +0 -106
  190. package/src/lib/core/services/theme.service.ts +0 -86
  191. package/src/lib/core/services/transport.spec.ts +0 -198
  192. package/src/lib/core/services/transport.ts +0 -164
  193. package/src/lib/core/services/upload.service.ts +0 -81
  194. package/src/lib/core/testing/categories.schema.ts +0 -125
  195. package/src/lib/core/testing/orders.schema.ts +0 -372
  196. package/src/lib/core/testing/products.schema.ts +0 -258
  197. package/src/lib/core/testing/site.schema.ts +0 -195
  198. package/src/lib/core/testing/test-catalog.ts +0 -21
  199. package/src/lib/core/tokens.ts +0 -112
  200. package/src/lib/core/utils/clipboard.spec.ts +0 -55
  201. package/src/lib/core/utils/clipboard.ts +0 -90
  202. package/src/lib/core/utils/context-resolver.spec.ts +0 -95
  203. package/src/lib/core/utils/context-resolver.ts +0 -101
  204. package/src/lib/core/utils/response-unwrapper.spec.ts +0 -70
  205. package/src/lib/core/utils/response-unwrapper.ts +0 -103
  206. package/src/lib/core/utils/source-options.spec.ts +0 -96
  207. package/src/lib/core/utils/source-options.ts +0 -54
  208. package/src/lib/core/utils/template-interpolator.spec.ts +0 -59
  209. package/src/lib/core/utils/template-interpolator.ts +0 -56
  210. package/src/lib/core/view-navigation/view-navigation.service.spec.ts +0 -207
  211. package/src/lib/core/view-navigation/view-navigation.service.ts +0 -132
  212. package/src/lib/fields/boolean/boolean.descriptor.ts +0 -11
  213. package/src/lib/fields/boolean/boolean.ts +0 -40
  214. package/src/lib/fields/color/color.descriptor.ts +0 -12
  215. package/src/lib/fields/color/color.ts +0 -34
  216. package/src/lib/fields/currency/currency.descriptor.ts +0 -12
  217. package/src/lib/fields/currency/currency.ts +0 -67
  218. package/src/lib/fields/date/date.descriptor.ts +0 -12
  219. package/src/lib/fields/date/date.ts +0 -36
  220. package/src/lib/fields/descriptors.ts +0 -122
  221. package/src/lib/fields/display/display-badge.ts +0 -65
  222. package/src/lib/fields/display/display-date.ts +0 -39
  223. package/src/lib/fields/display/display-defaults.ts +0 -84
  224. package/src/lib/fields/display/display-file.ts +0 -41
  225. package/src/lib/fields/display/display-image.ts +0 -54
  226. package/src/lib/fields/display/display-list.ts +0 -107
  227. package/src/lib/fields/display/display-number.ts +0 -41
  228. package/src/lib/fields/display/display-text.ts +0 -42
  229. package/src/lib/fields/display/display.spec.ts +0 -242
  230. package/src/lib/fields/dropdown/dropdown.descriptor.ts +0 -12
  231. package/src/lib/fields/dropdown/dropdown.ts +0 -45
  232. package/src/lib/fields/email/email.descriptor.ts +0 -12
  233. package/src/lib/fields/email/email.ts +0 -28
  234. package/src/lib/fields/field-aria.ts +0 -60
  235. package/src/lib/fields/field-host/field-host.spec.ts +0 -118
  236. package/src/lib/fields/field-host/field-host.ts +0 -47
  237. package/src/lib/fields/field-node.ts +0 -88
  238. package/src/lib/fields/file/file.descriptor.ts +0 -14
  239. package/src/lib/fields/file/file.spec.ts +0 -134
  240. package/src/lib/fields/file/file.ts +0 -281
  241. package/src/lib/fields/group/group.descriptor.ts +0 -21
  242. package/src/lib/fields/group/group.ts +0 -110
  243. package/src/lib/fields/image/image.descriptor.ts +0 -12
  244. package/src/lib/fields/image/image.spec.ts +0 -117
  245. package/src/lib/fields/image/image.ts +0 -281
  246. package/src/lib/fields/key-value/key-value.descriptor.ts +0 -11
  247. package/src/lib/fields/key-value/key-value.ts +0 -283
  248. package/src/lib/fields/list/list.descriptor.ts +0 -21
  249. package/src/lib/fields/list/list.ts +0 -376
  250. package/src/lib/fields/multiselect/multiselect.descriptor.ts +0 -11
  251. package/src/lib/fields/multiselect/multiselect.spec.ts +0 -142
  252. package/src/lib/fields/multiselect/multiselect.ts +0 -152
  253. package/src/lib/fields/number/number.descriptor.ts +0 -12
  254. package/src/lib/fields/number/number.ts +0 -40
  255. package/src/lib/fields/phone/phone.descriptor.ts +0 -12
  256. package/src/lib/fields/phone/phone.ts +0 -46
  257. package/src/lib/fields/readonly-text/readonly-text.descriptor.ts +0 -12
  258. package/src/lib/fields/readonly-text/readonly-text.ts +0 -58
  259. package/src/lib/fields/relation/relation.descriptor.ts +0 -12
  260. package/src/lib/fields/relation/relation.spec.ts +0 -193
  261. package/src/lib/fields/relation/relation.ts +0 -224
  262. package/src/lib/fields/rich-select/rich-select.descriptor.ts +0 -12
  263. package/src/lib/fields/rich-select/rich-select.ts +0 -175
  264. package/src/lib/fields/select/radio-mode.ts +0 -25
  265. package/src/lib/fields/select/select.descriptor.ts +0 -12
  266. package/src/lib/fields/select/select.spec.ts +0 -162
  267. package/src/lib/fields/select/select.ts +0 -210
  268. package/src/lib/fields/slug/slug.descriptor.ts +0 -19
  269. package/src/lib/fields/slug/slug.ts +0 -67
  270. package/src/lib/fields/string-list/string-list.descriptor.ts +0 -11
  271. package/src/lib/fields/string-list/string-list.ts +0 -222
  272. package/src/lib/fields/text/text.descriptor.ts +0 -12
  273. package/src/lib/fields/text/text.ts +0 -35
  274. package/src/lib/fields/textarea/textarea.descriptor.ts +0 -12
  275. package/src/lib/fields/textarea/textarea.spec.ts +0 -117
  276. package/src/lib/fields/textarea/textarea.ts +0 -126
  277. package/src/lib/fields/time/time.descriptor.ts +0 -12
  278. package/src/lib/fields/time/time.ts +0 -28
  279. package/src/lib/fields/unknown-render/unknown-render.ts +0 -49
  280. package/src/lib/fields/url/url.descriptor.ts +0 -12
  281. package/src/lib/fields/url/url.ts +0 -53
  282. package/src/lib/gas-admin-ui.spec.ts +0 -21
  283. package/src/lib/gas-admin-ui.ts +0 -9
  284. package/src/lib/layouts/descriptors.ts +0 -9
  285. package/src/lib/pages/dashboard/dashboard.ts +0 -167
  286. package/src/lib/pages/detail-view/detail-view.spec.ts +0 -333
  287. package/src/lib/pages/detail-view/detail-view.ts +0 -570
  288. package/src/lib/pages/drawer-form/drawer-form.ts +0 -228
  289. package/src/lib/pages/form-view/form-model.ts +0 -88
  290. package/src/lib/pages/form-view/form-schema.ts +0 -255
  291. package/src/lib/pages/form-view/form-view.ts +0 -1622
  292. package/src/lib/pages/list-view/list-view.formats.spec.ts +0 -214
  293. package/src/lib/pages/list-view/list-view.ts +0 -882
  294. package/src/lib/pages/login/login.spec.ts +0 -109
  295. package/src/lib/pages/login/login.ts +0 -227
  296. package/src/lib/pages/resource-page/resource-page.ts +0 -234
  297. package/src/lib/shared/components/badge/badge.ts +0 -35
  298. package/src/lib/shared/components/button/button.ts +0 -65
  299. package/src/lib/shared/components/confirm-dialog/confirm-dialog.ts +0 -48
  300. package/src/lib/shared/components/copy-button/copy-button.ts +0 -56
  301. package/src/lib/shared/components/copy-share/copy-share.spec.ts +0 -122
  302. package/src/lib/shared/components/copy-share/copy-share.ts +0 -107
  303. package/src/lib/shared/components/drawer/drawer.spec.ts +0 -127
  304. package/src/lib/shared/components/drawer/drawer.ts +0 -172
  305. package/src/lib/shared/components/empty-state/empty-state.ts +0 -30
  306. package/src/lib/shared/components/modal/modal.spec.ts +0 -149
  307. package/src/lib/shared/components/modal/modal.ts +0 -145
  308. package/src/lib/shared/components/post-create-modal/post-create-modal.spec.ts +0 -165
  309. package/src/lib/shared/components/post-create-modal/post-create-modal.ts +0 -159
  310. package/src/lib/shared/components/skeleton/skeleton.ts +0 -31
  311. package/src/lib/shared/components/toast/toast.ts +0 -58
  312. package/src/lib/shared/utils/col-span.ts +0 -25
  313. package/src/lib/shared/utils/condition-evaluator.ts +0 -53
  314. package/src/lib/shared/utils/depends-on.ts +0 -48
  315. package/src/lib/shared/utils/dialog-focus.ts +0 -28
  316. package/src/lib/shared/utils/field-path.ts +0 -49
  317. package/src/lib/shared/utils/gap-sorting.ts +0 -144
  318. package/src/lib/shared/utils/seed.spec.ts +0 -64
  319. package/src/lib/shared/utils/seed.ts +0 -149
  320. package/src/lib/shared/utils/slugify.ts +0 -13
  321. package/src/lib/shared/utils/validators.ts +0 -41
  322. package/src/lib/shell/layout/layout.ts +0 -63
  323. package/src/lib/shell/shell.routes.spec.ts +0 -59
  324. package/src/lib/shell/shell.routes.ts +0 -122
  325. package/src/lib/shell/sidebar/sidebar.ts +0 -139
  326. package/src/lib/shell/theme-toggle/theme-toggle.ts +0 -74
  327. package/src/lib/views/calendar-view/calendar-model.ts +0 -426
  328. package/src/lib/views/calendar-view/calendar-view.spec.ts +0 -557
  329. package/src/lib/views/calendar-view/calendar-view.ts +0 -568
  330. package/src/lib/views/composer/composer-host.spec.ts +0 -301
  331. package/src/lib/views/composer/composer-host.ts +0 -248
  332. package/src/lib/views/composer/composer-imports.spec.ts +0 -54
  333. package/src/lib/views/composer/view-context.spec.ts +0 -117
  334. package/src/lib/views/composer/view-context.ts +0 -109
  335. package/src/lib/views/composer/view-slot.spec.ts +0 -130
  336. package/src/lib/views/composer/view-slot.ts +0 -178
  337. package/src/lib/views/descriptors.ts +0 -46
  338. package/src/lib/views/kanban-view/kanban-model.ts +0 -173
  339. package/src/lib/views/kanban-view/kanban-view.spec.ts +0 -540
  340. package/src/lib/views/kanban-view/kanban-view.ts +0 -327
  341. package/src/lib/widgets/bar-chart/bar-chart.descriptor.ts +0 -17
  342. package/src/lib/widgets/bar-chart/bar-chart.spec.ts +0 -66
  343. package/src/lib/widgets/bar-chart/bar-chart.ts +0 -76
  344. package/src/lib/widgets/chart-line/chart-line.descriptor.ts +0 -17
  345. package/src/lib/widgets/chart-line/chart-line.spec.ts +0 -113
  346. package/src/lib/widgets/chart-line/chart-line.ts +0 -219
  347. package/src/lib/widgets/descriptors.ts +0 -29
  348. package/src/lib/widgets/metric-card/metric-card.descriptor.ts +0 -41
  349. package/src/lib/widgets/metric-card/metric-card.spec.ts +0 -52
  350. package/src/lib/widgets/metric-card/metric-card.ts +0 -48
  351. package/src/lib/widgets/quick-actions/quick-actions.descriptor.ts +0 -13
  352. package/src/lib/widgets/quick-actions/quick-actions.spec.ts +0 -61
  353. package/src/lib/widgets/quick-actions/quick-actions.ts +0 -100
  354. package/src/lib/widgets/record-list/record-list.descriptor.ts +0 -16
  355. package/src/lib/widgets/record-list/record-list.spec.ts +0 -79
  356. package/src/lib/widgets/record-list/record-list.ts +0 -115
  357. package/src/lib/widgets/series.spec.ts +0 -42
  358. package/src/lib/widgets/series.ts +0 -56
  359. package/src/lib/widgets/status-progress/status-progress.descriptor.ts +0 -19
  360. package/src/lib/widgets/status-progress/status-progress.spec.ts +0 -63
  361. package/src/lib/widgets/status-progress/status-progress.ts +0 -104
  362. package/src/lib/widgets/widget-host/widget-host.spec.ts +0 -179
  363. package/src/lib/widgets/widget-host/widget-host.ts +0 -99
  364. package/src/public-api.ts +0 -104
  365. package/tinya-code-gas-admin-ui-0.2.0-alpha.15.tgz +0 -0
  366. package/tsconfig.lib.json +0 -13
  367. package/tsconfig.lib.prod.json +0 -11
  368. package/tsconfig.spec.json +0 -10
@@ -0,0 +1,82 @@
1
+ import { t as getValue } from "./tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs";
2
+ import { t as Badge } from "./tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs";
3
+ import { n as resolveBadgeKind } from "./tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs";
4
+ import * as i0 from "@angular/core";
5
+ import { Component, computed, input } from "@angular/core";
6
+ var ColumnFormatBadge = class ColumnFormatBadge {
7
+ cell = input.required(...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
8
+ badge = computed(() => badgeInfo(this.cell()), ...ngDevMode ? [{ debugName: "badge" }] : /* istanbul ignore next */ []);
9
+ static ɵfac = i0.ɵɵngDeclareFactory({
10
+ minVersion: "12.0.0",
11
+ version: "22.2.3",
12
+ ngImport: i0,
13
+ type: ColumnFormatBadge,
14
+ deps: [],
15
+ target: i0.ɵɵFactoryTarget.Component
16
+ });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({
18
+ minVersion: "17.1.0",
19
+ version: "22.2.3",
20
+ type: ColumnFormatBadge,
21
+ isStandalone: true,
22
+ selector: "app-column-format-badge",
23
+ inputs: { cell: {
24
+ classPropertyName: "cell",
25
+ publicName: "cell",
26
+ isSignal: true,
27
+ isRequired: true,
28
+ transformFunction: null
29
+ } },
30
+ ngImport: i0,
31
+ template: `<app-badge [label]="badge().label" [kind]="badge().kind" />`,
32
+ isInline: true,
33
+ dependencies: [{
34
+ kind: "component",
35
+ type: Badge,
36
+ selector: "app-badge",
37
+ inputs: ["label", "kind"]
38
+ }]
39
+ });
40
+ };
41
+ i0.ɵɵngDeclareClassMetadata({
42
+ minVersion: "12.0.0",
43
+ version: "22.2.3",
44
+ ngImport: i0,
45
+ type: ColumnFormatBadge,
46
+ decorators: [{
47
+ type: Component,
48
+ args: [{
49
+ selector: "app-column-format-badge",
50
+ imports: [Badge],
51
+ template: `<app-badge [label]="badge().label" [kind]="badge().kind" />`
52
+ }]
53
+ }],
54
+ propDecorators: { cell: [{
55
+ type: i0.Input,
56
+ args: [{
57
+ isSignal: true,
58
+ alias: "cell",
59
+ required: true
60
+ }]
61
+ }] }
62
+ });
63
+ function badgeInfo(cell) {
64
+ const value = getValue(cell.row, cell.column.key);
65
+ const field = cell.fields.find((candidate) => candidate.key === cell.column.key);
66
+ if (typeof value === "boolean") return {
67
+ label: value === true ? (field?.type === "boolean" ? field.trueLabel : void 0) ?? "Sí" : (field?.type === "boolean" ? field.falseLabel : void 0) ?? "No",
68
+ kind: value ? "success" : "danger"
69
+ };
70
+ const text = value == null ? "" : String(value);
71
+ if (text === "") return {
72
+ label: "Sin dato",
73
+ kind: "danger"
74
+ };
75
+ return {
76
+ label: field?.type === "select" ? field.options?.find((option) => option.value === text)?.label ?? text : text,
77
+ kind: resolveBadgeKind(text)
78
+ };
79
+ }
80
+ export { ColumnFormatBadge, badgeInfo };
81
+
82
+ //# sourceMappingURL=tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/columns/format-badge.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { Badge, type BadgeKind } from '../shared/components/badge/badge';\nimport { resolveBadgeKind } from '../fields/display/display-badge';\nimport type { SelectField } from '../core/models/schema.model';\nimport { getValue } from '../shared/utils/field-path';\nimport type { ColumnCell } from './column-cell';\n\n/**\n * Formato `badge` (R4.3, afinado en R4.4).\n *\n * Un booleano usa `trueLabel`/`falseLabel` del campo (o «Sí»/«No») con\n * `success`/`danger` — el vocabulario de la lista para el control que\n * permite escribir. El vacío sigue siendo «Sin dato»/`danger`.\n *\n * El resto alinea el chip con el display del detalle (D41): un `select`\n * pinta la **etiqueta** de la opción y los estados se clasifican con\n * `resolveBadgeKind`, el mismo criterio que la cabecera de la ficha —\n * antes, toda columna declarada `badge` salía verde sin mirar el valor.\n */\n@Component({\n selector: 'app-column-format-badge',\n imports: [Badge],\n template: `<app-badge [label]=\"badge().label\" [kind]=\"badge().kind\" />`,\n})\nexport class ColumnFormatBadge {\n readonly cell = input.required<ColumnCell>();\n\n protected readonly badge = computed(() => badgeInfo(this.cell()));\n}\n\nexport function badgeInfo(cell: ColumnCell): { label: string; kind: BadgeKind } {\n const value = getValue(cell.row, cell.column.key);\n const field = cell.fields.find((candidate) => candidate.key === cell.column.key);\n if (typeof value === 'boolean') {\n const label =\n value === true\n ? ((field?.type === 'boolean' ? field.trueLabel : undefined) ?? 'Sí')\n : ((field?.type === 'boolean' ? field.falseLabel : undefined) ?? 'No');\n return { label, kind: value ? 'success' : 'danger' };\n }\n const text = value == null ? '' : String(value);\n if (text === '') {\n return { label: 'Sin dato', kind: 'danger' };\n }\n const etiqueta =\n field?.type === 'select'\n ? ((field as SelectField).options?.find((option) => option.value === text)?.label ?? text)\n : text;\n return { label: etiqueta, kind: resolveBadgeKind(text) };\n}\n"],"mappings":";;;;;AAyBA,IAAa,oBAAb,MAAa,kBAAiB;CACnB,OAAO,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,QAAQ,eAAe,UAAU,KAAK,KAAI,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAHtD,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,EAAA,MAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAFlB;EAA6D,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAD7D;GAAK,UAAA;GAAA,QAAA,CAAA,SAAA,MAAA;EAAA,CAAA;CAAA,CAAA;;AAGJ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAL7B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,KAAK;GACf,UAAU;EACX,CAAA;;;;;;;;;;;AAOD,SAAgB,UAAU,MAAgB;CACxC,MAAM,QAAQ,SAAS,KAAK,KAAK,KAAK,OAAO,GAAG;CAChD,MAAM,QAAQ,KAAK,OAAO,MAAM,cAAc,UAAU,QAAQ,KAAK,OAAO,GAAG;CAC/E,IAAI,OAAO,UAAU,WAKnB,OAAO;EAAE,OAHP,UAAU,QACJ,OAAO,SAAS,YAAY,MAAM,YAAY,WAAc,QAC5D,OAAO,SAAS,YAAY,MAAM,aAAa,WAAc;EACrD,MAAM,QAAQ,YAAY;CAAQ;CAEpD,MAAM,OAAO,SAAS,OAAO,KAAK,OAAO,KAAK;CAC9C,IAAI,SAAS,IACX,OAAO;EAAE,OAAO;EAAY,MAAM;CAAQ;CAM5C,OAAO;EAAE,OAHP,OAAO,SAAS,WACV,MAAsB,SAAS,MAAM,WAAW,OAAO,UAAU,IAAI,CAAC,EAAE,SAAS,OACnF;EACoB,MAAM,iBAAiB,IAAI;CAAC;AACxD"}
@@ -0,0 +1,105 @@
1
+ import { t as getValue } from "./tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs";
2
+ import { t as Badge } from "./tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs";
3
+ import { badgeInfo } from "./tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs";
4
+ import * as i0 from "@angular/core";
5
+ import { Component, computed, input } from "@angular/core";
6
+ var ColumnFormatBoolean = class ColumnFormatBoolean {
7
+ cell = input.required(...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
8
+ badge = computed(() => badgeInfo(this.cell()), ...ngDevMode ? [{ debugName: "badge" }] : /* istanbul ignore next */ []);
9
+ valor = computed(() => {
10
+ const value = getValue(this.cell().row, this.cell().column.key);
11
+ return value === true || value === "true";
12
+ }, ...ngDevMode ? [{ debugName: "valor" }] : /* istanbul ignore next */ []);
13
+ esInterruptor = computed(() => {
14
+ const cell = this.cell();
15
+ if (cell.column.key !== "active" || !cell.canUpdate) return false;
16
+ return cell.fields.some((field) => field.type === "boolean" && field.key === "active");
17
+ }, ...ngDevMode ? [{ debugName: "esInterruptor" }] : /* istanbul ignore next */ []);
18
+ alternar(event) {
19
+ this.cell().toggle?.(event.target.checked);
20
+ }
21
+ static ɵfac = i0.ɵɵngDeclareFactory({
22
+ minVersion: "12.0.0",
23
+ version: "22.2.3",
24
+ ngImport: i0,
25
+ type: ColumnFormatBoolean,
26
+ deps: [],
27
+ target: i0.ɵɵFactoryTarget.Component
28
+ });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({
30
+ minVersion: "17.0.0",
31
+ version: "22.2.3",
32
+ type: ColumnFormatBoolean,
33
+ isStandalone: true,
34
+ selector: "app-column-format-boolean",
35
+ inputs: { cell: {
36
+ classPropertyName: "cell",
37
+ publicName: "cell",
38
+ isSignal: true,
39
+ isRequired: true,
40
+ transformFunction: null
41
+ } },
42
+ ngImport: i0,
43
+ template: `
44
+ @if (esInterruptor()) {
45
+ <input
46
+ type="checkbox"
47
+ class="size-5 cursor-pointer accent-primary"
48
+ [checked]="valor()"
49
+ [disabled]="cell().saving"
50
+ [attr.aria-label]="cell().column.label + ': ' + cell().title"
51
+ (click)="$event.stopPropagation()"
52
+ (change)="alternar($event)"
53
+ />
54
+ } @else {
55
+ <app-badge [label]="badge().label" [kind]="badge().kind" />
56
+ }
57
+ `,
58
+ isInline: true,
59
+ dependencies: [{
60
+ kind: "component",
61
+ type: Badge,
62
+ selector: "app-badge",
63
+ inputs: ["label", "kind"]
64
+ }]
65
+ });
66
+ };
67
+ i0.ɵɵngDeclareClassMetadata({
68
+ minVersion: "12.0.0",
69
+ version: "22.2.3",
70
+ ngImport: i0,
71
+ type: ColumnFormatBoolean,
72
+ decorators: [{
73
+ type: Component,
74
+ args: [{
75
+ selector: "app-column-format-boolean",
76
+ imports: [Badge],
77
+ template: `
78
+ @if (esInterruptor()) {
79
+ <input
80
+ type="checkbox"
81
+ class="size-5 cursor-pointer accent-primary"
82
+ [checked]="valor()"
83
+ [disabled]="cell().saving"
84
+ [attr.aria-label]="cell().column.label + ': ' + cell().title"
85
+ (click)="$event.stopPropagation()"
86
+ (change)="alternar($event)"
87
+ />
88
+ } @else {
89
+ <app-badge [label]="badge().label" [kind]="badge().kind" />
90
+ }
91
+ `
92
+ }]
93
+ }],
94
+ propDecorators: { cell: [{
95
+ type: i0.Input,
96
+ args: [{
97
+ isSignal: true,
98
+ alias: "cell",
99
+ required: true
100
+ }]
101
+ }] }
102
+ });
103
+ export { ColumnFormatBoolean };
104
+
105
+ //# sourceMappingURL=tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/columns/format-boolean.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { Badge } from '../shared/components/badge/badge';\nimport { getValue } from '../shared/utils/field-path';\nimport type { ColumnCell } from './column-cell';\nimport { badgeInfo } from './format-badge';\n\n/**\n * Formato `boolean` (R4.3): interruptor o badge.\n *\n * Es la rama `@case ('boolean')` de `list-view`, con una sola diferencia de\n * domicilio: hoy sólo monta este componente si el formato efectivo ya es\n * `boolean`, así que la comprobación `column.format === 'boolean'` que hacía\n * `isSwitchColumn` sobra. El criterio restante — `active` booleano y con\n * permiso de edición (base.md §10) — vive acá, que es quien dibuja el control.\n */\n@Component({\n selector: 'app-column-format-boolean',\n imports: [Badge],\n template: `\n @if (esInterruptor()) {\n <input\n type=\"checkbox\"\n class=\"size-5 cursor-pointer accent-primary\"\n [checked]=\"valor()\"\n [disabled]=\"cell().saving\"\n [attr.aria-label]=\"cell().column.label + ': ' + cell().title\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"alternar($event)\"\n />\n } @else {\n <app-badge [label]=\"badge().label\" [kind]=\"badge().kind\" />\n }\n `,\n})\nexport class ColumnFormatBoolean {\n readonly cell = input.required<ColumnCell>();\n\n protected readonly badge = computed(() => badgeInfo(this.cell()));\n\n protected readonly valor = computed(() => {\n const value = getValue(this.cell().row, this.cell().column.key);\n return value === true || value === 'true';\n });\n\n /** `active` declarado como boolean en el schema → interruptor (base.md §10). */\n protected readonly esInterruptor = computed(() => {\n const cell = this.cell();\n if (cell.column.key !== 'active' || !cell.canUpdate) {\n return false;\n }\n return cell.fields.some((field) => field.type === 'boolean' && field.key === 'active');\n });\n\n protected alternar(event: Event): void {\n this.cell().toggle?.((event.target as HTMLInputElement).checked);\n }\n}\n"],"mappings":";;;;;AAmCA,IAAa,sBAAb,MAAa,oBAAmB;CACrB,OAAO,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,QAAQ,eAAe,UAAU,KAAK,KAAI,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE9C,QAAQ,eAAc;EACvC,MAAM,QAAQ,SAAS,KAAK,KAAI,CAAE,CAAC,KAAK,KAAK,KAAI,CAAE,CAAC,OAAO,GAAG;EAC9D,OAAO,UAAU,QAAQ,UAAU;CACrC,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAGiB,gBAAgB,eAAc;EAC/C,MAAM,OAAO,KAAK,KAAI;EACtB,IAAI,KAAK,OAAO,QAAQ,YAAY,CAAC,KAAK,WACxC,OAAO;EAET,OAAO,KAAK,OAAO,MAAM,UAAU,MAAM,SAAS,aAAa,MAAM,QAAQ,QAAQ;CACvF,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;CAEQ,SAAS,OAAY;EAC7B,KAAK,KAAI,CAAE,CAAC,SAAU,MAAM,OAA4B,OAAO;CACjE;CArBW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAmB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAnB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAmB,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,MAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAhBpB;;;;;;;;;;;;;;;EAcT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAfS;GAAK,UAAA;GAAA,QAAA,CAAA,SAAA,MAAA;EAAA,CAAA;CAAA,CAAA;;AAiBJ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EAnB/B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,KAAK;GACf,UAAU;;;;;;;;;;;;;;;EAeX,CAAA"}
@@ -0,0 +1,65 @@
1
+ import { t as getValue } from "./tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs";
2
+ import * as i0 from "@angular/core";
3
+ import { Component, computed, input } from "@angular/core";
4
+ var ColumnFormatCurrency = class ColumnFormatCurrency {
5
+ cell = input.required(...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
6
+ precio = computed(() => {
7
+ const cell = this.cell();
8
+ const value = getValue(cell.row, cell.column.key);
9
+ const number = Number(value);
10
+ if (!Number.isFinite(number)) return value == null ? "" : String(value);
11
+ return new Intl.NumberFormat("es-PE", {
12
+ style: "currency",
13
+ currency: cell.currency
14
+ }).format(number);
15
+ }, ...ngDevMode ? [{ debugName: "precio" }] : /* istanbul ignore next */ []);
16
+ static ɵfac = i0.ɵɵngDeclareFactory({
17
+ minVersion: "12.0.0",
18
+ version: "22.2.3",
19
+ ngImport: i0,
20
+ type: ColumnFormatCurrency,
21
+ deps: [],
22
+ target: i0.ɵɵFactoryTarget.Component
23
+ });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({
25
+ minVersion: "17.1.0",
26
+ version: "22.2.3",
27
+ type: ColumnFormatCurrency,
28
+ isStandalone: true,
29
+ selector: "app-column-format-currency",
30
+ inputs: { cell: {
31
+ classPropertyName: "cell",
32
+ publicName: "cell",
33
+ isSignal: true,
34
+ isRequired: true,
35
+ transformFunction: null
36
+ } },
37
+ ngImport: i0,
38
+ template: `{{ precio() }}`,
39
+ isInline: true
40
+ });
41
+ };
42
+ i0.ɵɵngDeclareClassMetadata({
43
+ minVersion: "12.0.0",
44
+ version: "22.2.3",
45
+ ngImport: i0,
46
+ type: ColumnFormatCurrency,
47
+ decorators: [{
48
+ type: Component,
49
+ args: [{
50
+ selector: "app-column-format-currency",
51
+ template: `{{ precio() }}`
52
+ }]
53
+ }],
54
+ propDecorators: { cell: [{
55
+ type: i0.Input,
56
+ args: [{
57
+ isSignal: true,
58
+ alias: "cell",
59
+ required: true
60
+ }]
61
+ }] }
62
+ });
63
+ export { ColumnFormatCurrency };
64
+
65
+ //# sourceMappingURL=tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/columns/format-currency.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { getValue } from '../shared/utils/field-path';\nimport type { ColumnCell } from './column-cell';\n\n/**\n * Formato `currency` (R4.3). Igual que el helper de `list-view`: `es-PE`,\n * moneda tomada del schema (se pasaba desde la vista porque sólo ella la\n * conoce) y texto crudo si el valor no es número.\n */\n@Component({\n selector: 'app-column-format-currency',\n template: `{{ precio() }}`,\n})\nexport class ColumnFormatCurrency {\n readonly cell = input.required<ColumnCell>();\n\n protected readonly precio = computed(() => {\n const cell = this.cell();\n const value = getValue(cell.row, cell.column.key);\n const number = Number(value);\n if (!Number.isFinite(number)) {\n return value == null ? '' : String(value);\n }\n return new Intl.NumberFormat('es-PE', {\n style: 'currency',\n currency: cell.currency,\n }).format(number);\n });\n}\n"],"mappings":";;;AAcA,IAAa,uBAAb,MAAa,qBAAoB;CACtB,OAAO,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,SAAS,eAAc;EACxC,MAAM,OAAO,KAAK,KAAI;EACtB,MAAM,QAAQ,SAAS,KAAK,KAAK,KAAK,OAAO,GAAG;EAChD,MAAM,SAAS,OAAO,KAAK;EAC3B,IAAI,CAAC,OAAO,SAAS,MAAM,GACzB,OAAO,SAAS,OAAO,KAAK,OAAO,KAAK;EAE1C,OAAO,IAAI,KAAK,aAAa,SAAS;GACpC,OAAO;GACP,UAAU,KAAK;EAChB,CAAA,CAAC,CAAC,OAAO,MAAM;CAClB,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAdS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAoB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAApB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAoB,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,MAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAFrB;EAAgB,UAAA;CAAA,CAAA;;AAEf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EAJhC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,UAAU;EACX,CAAA"}
@@ -0,0 +1,65 @@
1
+ import { t as getValue } from "./tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs";
2
+ import * as i0 from "@angular/core";
3
+ import { Component, computed, input } from "@angular/core";
4
+ function formatDate(value) {
5
+ if (typeof value !== "string" || value === "") return value == null ? "" : String(value);
6
+ const date = new Date(value);
7
+ if (Number.isNaN(date.getTime())) return value;
8
+ return date.toLocaleDateString("es-PE", { timeZone: "UTC" });
9
+ }
10
+ var ColumnFormatDate = class ColumnFormatDate {
11
+ cell = input.required(...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
12
+ fecha = computed(() => formatDate(this.valor()), ...ngDevMode ? [{ debugName: "fecha" }] : /* istanbul ignore next */ []);
13
+ valor() {
14
+ return getValue(this.cell().row, this.cell().column.key);
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({
17
+ minVersion: "12.0.0",
18
+ version: "22.2.3",
19
+ ngImport: i0,
20
+ type: ColumnFormatDate,
21
+ deps: [],
22
+ target: i0.ɵɵFactoryTarget.Component
23
+ });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({
25
+ minVersion: "17.1.0",
26
+ version: "22.2.3",
27
+ type: ColumnFormatDate,
28
+ isStandalone: true,
29
+ selector: "app-column-format-date",
30
+ inputs: { cell: {
31
+ classPropertyName: "cell",
32
+ publicName: "cell",
33
+ isSignal: true,
34
+ isRequired: true,
35
+ transformFunction: null
36
+ } },
37
+ ngImport: i0,
38
+ template: `{{ fecha() }}`,
39
+ isInline: true
40
+ });
41
+ };
42
+ i0.ɵɵngDeclareClassMetadata({
43
+ minVersion: "12.0.0",
44
+ version: "22.2.3",
45
+ ngImport: i0,
46
+ type: ColumnFormatDate,
47
+ decorators: [{
48
+ type: Component,
49
+ args: [{
50
+ selector: "app-column-format-date",
51
+ template: `{{ fecha() }}`
52
+ }]
53
+ }],
54
+ propDecorators: { cell: [{
55
+ type: i0.Input,
56
+ args: [{
57
+ isSignal: true,
58
+ alias: "cell",
59
+ required: true
60
+ }]
61
+ }] }
62
+ });
63
+ export { ColumnFormatDate };
64
+
65
+ //# sourceMappingURL=tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/columns/format-date.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { getValue } from '../shared/utils/field-path';\nimport type { ColumnCell } from './column-cell';\n\nfunction formatDate(value: unknown): string {\n if (typeof value !== 'string' || value === '') {\n return value == null ? '' : String(value);\n }\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) {\n return value;\n }\n // Fechas `YYYY-MM-DD`: forzar UTC para no desfasar un día.\n return date.toLocaleDateString('es-PE', { timeZone: 'UTC' });\n}\n\n/**\n * Formato `date` (R4.3). Corto (`toLocaleDateString`), a diferencia del\n * display de la ficha, que va con `dateStyle: 'medium'`: cada superficie\n * con su formato, pero ambos desde su propio componente.\n */\n@Component({\n selector: 'app-column-format-date',\n template: `{{ fecha() }}`,\n})\nexport class ColumnFormatDate {\n readonly cell = input.required<ColumnCell>();\n\n protected readonly fecha = computed(() => formatDate(this.valor()));\n\n private valor(): unknown {\n return getValue(this.cell().row, this.cell().column.key);\n }\n}\n"],"mappings":";;;AAKA,SAAS,WAAW,OAAc;CAChC,IAAI,OAAO,UAAU,YAAY,UAAU,IACzC,OAAO,SAAS,OAAO,KAAK,OAAO,KAAK;CAE1C,MAAM,OAAO,IAAI,KAAK,KAAK;CAC3B,IAAI,OAAO,MAAM,KAAK,QAAO,CAAE,GAC7B,OAAO;CAGT,OAAO,KAAK,mBAAmB,SAAS,EAAE,UAAU,MAAK,CAAE;AAC7D;AAWA,IAAa,mBAAb,MAAa,iBAAgB;CAClB,OAAO,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,QAAQ,eAAe,WAAW,KAAK,MAAK,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAE3D,QAAK;EACX,OAAO,SAAS,KAAK,KAAI,CAAE,CAAC,KAAK,KAAK,KAAI,CAAE,CAAC,OAAO,GAAG;CACzD;CAPW,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,EAAA,MAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAFjB;EAAe,UAAA;CAAA,CAAA;;AAEd,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgB,YAAA,CAAA;EAJ5B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,UAAU;EACX,CAAA"}
@@ -0,0 +1,65 @@
1
+ import { t as getValue } from "./tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs";
2
+ import * as i0 from "@angular/core";
3
+ import { Component, computed, input } from "@angular/core";
4
+ const NUMBER_FORMAT = new Intl.NumberFormat("es-PE");
5
+ function formatNumber(value) {
6
+ const number = Number(value);
7
+ if (!Number.isFinite(number)) return value == null ? "" : String(value);
8
+ return NUMBER_FORMAT.format(number);
9
+ }
10
+ var ColumnFormatNumber = class ColumnFormatNumber {
11
+ cell = input.required(...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
12
+ numero = computed(() => formatNumber(this.valor()), ...ngDevMode ? [{ debugName: "numero" }] : /* istanbul ignore next */ []);
13
+ valor() {
14
+ return getValue(this.cell().row, this.cell().column.key);
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({
17
+ minVersion: "12.0.0",
18
+ version: "22.2.3",
19
+ ngImport: i0,
20
+ type: ColumnFormatNumber,
21
+ deps: [],
22
+ target: i0.ɵɵFactoryTarget.Component
23
+ });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({
25
+ minVersion: "17.1.0",
26
+ version: "22.2.3",
27
+ type: ColumnFormatNumber,
28
+ isStandalone: true,
29
+ selector: "app-column-format-number",
30
+ inputs: { cell: {
31
+ classPropertyName: "cell",
32
+ publicName: "cell",
33
+ isSignal: true,
34
+ isRequired: true,
35
+ transformFunction: null
36
+ } },
37
+ ngImport: i0,
38
+ template: `{{ numero() }}`,
39
+ isInline: true
40
+ });
41
+ };
42
+ i0.ɵɵngDeclareClassMetadata({
43
+ minVersion: "12.0.0",
44
+ version: "22.2.3",
45
+ ngImport: i0,
46
+ type: ColumnFormatNumber,
47
+ decorators: [{
48
+ type: Component,
49
+ args: [{
50
+ selector: "app-column-format-number",
51
+ template: `{{ numero() }}`
52
+ }]
53
+ }],
54
+ propDecorators: { cell: [{
55
+ type: i0.Input,
56
+ args: [{
57
+ isSignal: true,
58
+ alias: "cell",
59
+ required: true
60
+ }]
61
+ }] }
62
+ });
63
+ export { ColumnFormatNumber };
64
+
65
+ //# sourceMappingURL=tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/columns/format-number.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { getValue } from '../shared/utils/field-path';\nimport type { ColumnCell } from './column-cell';\n\nconst NUMBER_FORMAT = new Intl.NumberFormat('es-PE');\n\nfunction formatNumber(value: unknown): string {\n const number = Number(value);\n if (!Number.isFinite(number)) {\n return value == null ? '' : String(value);\n }\n return NUMBER_FORMAT.format(number);\n}\n\n/**\n * Formato `number` (R4.3). Misma fórmula que el helper de `list-view`:\n * miles con separador `es-PE` y texto crudo si el valor no es número.\n */\n@Component({\n selector: 'app-column-format-number',\n template: `{{ numero() }}`,\n})\nexport class ColumnFormatNumber {\n readonly cell = input.required<ColumnCell>();\n\n protected readonly numero = computed(() => formatNumber(this.valor()));\n\n private valor(): unknown {\n return getValue(this.cell().row, this.cell().column.key);\n }\n}\n"],"mappings":";;;AAKA,MAAM,gBAAgB,IAAI,KAAK,aAAa,OAAO;AAEnD,SAAS,aAAa,OAAc;CAClC,MAAM,SAAS,OAAO,KAAK;CAC3B,IAAI,CAAC,OAAO,SAAS,MAAM,GACzB,OAAO,SAAS,OAAO,KAAK,OAAO,KAAK;CAE1C,OAAO,cAAc,OAAO,MAAM;AACpC;AAUA,IAAa,qBAAb,MAAa,mBAAkB;CACpB,OAAO,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,SAAS,eAAe,aAAa,KAAK,MAAK,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAE9D,QAAK;EACX,OAAO,SAAS,KAAK,KAAI,CAAE,CAAC,KAAK,KAAK,KAAI,CAAE,CAAC,OAAO,GAAG;CACzD;CAPW,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,EAAA,MAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAFnB;EAAgB,UAAA;CAAA,CAAA;;AAEf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAkB,YAAA,CAAA;EAJ9B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,UAAU;EACX,CAAA"}
@@ -0,0 +1,59 @@
1
+ import { t as getValue } from "./tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs";
2
+ import * as i0 from "@angular/core";
3
+ import { Component, computed, input } from "@angular/core";
4
+ var ColumnFormatText = class ColumnFormatText {
5
+ cell = input.required(...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
6
+ texto = computed(() => {
7
+ const value = getValue(this.cell().row, this.cell().column.key);
8
+ return value == null ? "" : String(value);
9
+ }, ...ngDevMode ? [{ debugName: "texto" }] : /* istanbul ignore next */ []);
10
+ static ɵfac = i0.ɵɵngDeclareFactory({
11
+ minVersion: "12.0.0",
12
+ version: "22.2.3",
13
+ ngImport: i0,
14
+ type: ColumnFormatText,
15
+ deps: [],
16
+ target: i0.ɵɵFactoryTarget.Component
17
+ });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({
19
+ minVersion: "17.1.0",
20
+ version: "22.2.3",
21
+ type: ColumnFormatText,
22
+ isStandalone: true,
23
+ selector: "app-column-format-text",
24
+ inputs: { cell: {
25
+ classPropertyName: "cell",
26
+ publicName: "cell",
27
+ isSignal: true,
28
+ isRequired: true,
29
+ transformFunction: null
30
+ } },
31
+ ngImport: i0,
32
+ template: `{{ texto() }}`,
33
+ isInline: true
34
+ });
35
+ };
36
+ i0.ɵɵngDeclareClassMetadata({
37
+ minVersion: "12.0.0",
38
+ version: "22.2.3",
39
+ ngImport: i0,
40
+ type: ColumnFormatText,
41
+ decorators: [{
42
+ type: Component,
43
+ args: [{
44
+ selector: "app-column-format-text",
45
+ template: `{{ texto() }}`
46
+ }]
47
+ }],
48
+ propDecorators: { cell: [{
49
+ type: i0.Input,
50
+ args: [{
51
+ isSignal: true,
52
+ alias: "cell",
53
+ required: true
54
+ }]
55
+ }] }
56
+ });
57
+ export { ColumnFormatText };
58
+
59
+ //# sourceMappingURL=tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/columns/format-text.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { getValue } from '../shared/utils/field-path';\nimport type { ColumnCell } from './column-cell';\n\n/**\n * Formato `text` (R4.3 · el `@default` del `@switch` viejo).\n *\n * `cellText` de `list-view`: `null`/`undefined` se pintan vacíos y el resto\n * pasa por `String()` — un objeto sale `[object Object]`, igual que antes.\n */\n@Component({\n selector: 'app-column-format-text',\n template: `{{ texto() }}`,\n})\nexport class ColumnFormatText {\n readonly cell = input.required<ColumnCell>();\n\n protected readonly texto = computed(() => {\n const value = getValue(this.cell().row, this.cell().column.key);\n return value == null ? '' : String(value);\n });\n}\n"],"mappings":";;;AAeA,IAAa,mBAAb,MAAa,iBAAgB;CAClB,OAAO,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,QAAQ,eAAc;EACvC,MAAM,QAAQ,SAAS,KAAK,KAAI,CAAE,CAAC,KAAK,KAAK,KAAI,CAAE,CAAC,OAAO,GAAG;EAC9D,OAAO,SAAS,OAAO,KAAK,OAAO,KAAK;CAC1C,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CANS,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,EAAA,MAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAFjB;EAAe,UAAA;CAAA,CAAA;;AAEd,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgB,YAAA,CAAA;EAJ5B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,UAAU;EACX,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { t as getValue } from "./tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs";
2
+ import * as i0 from "@angular/core";
3
+ import { Component, computed, input } from "@angular/core";
4
+ var ColumnFormatThumbnail = class ColumnFormatThumbnail {
5
+ cell = input.required(...ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []);
6
+ src = computed(() => {
7
+ const value = this.valor();
8
+ if (typeof value === "string") return value !== "" ? value : null;
9
+ if (Array.isArray(value)) {
10
+ const first = value[0];
11
+ const url = typeof first === "string" ? first : getValue(first, "image_url");
12
+ return typeof url === "string" && url !== "" ? url : null;
13
+ }
14
+ if (value && typeof value === "object") {
15
+ const url = getValue(value, "image_url");
16
+ return typeof url === "string" && url !== "" ? url : null;
17
+ }
18
+ return null;
19
+ }, ...ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []);
20
+ alt = computed(() => {
21
+ const value = this.valor();
22
+ let item = this.cell().row;
23
+ if (Array.isArray(value)) item = value[0] ?? null;
24
+ else if (value && typeof value === "object") item = value;
25
+ const alt = item == null ? null : getValue(item, "image_alt");
26
+ if (typeof alt === "string" && alt !== "") return alt;
27
+ const rootAlt = this.cell().row["image_alt"];
28
+ return typeof rootAlt === "string" ? rootAlt : "";
29
+ }, ...ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []);
30
+ valor() {
31
+ return getValue(this.cell().row, this.cell().column.key);
32
+ }
33
+ static ɵfac = i0.ɵɵngDeclareFactory({
34
+ minVersion: "12.0.0",
35
+ version: "22.2.3",
36
+ ngImport: i0,
37
+ type: ColumnFormatThumbnail,
38
+ deps: [],
39
+ target: i0.ɵɵFactoryTarget.Component
40
+ });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({
42
+ minVersion: "17.0.0",
43
+ version: "22.2.3",
44
+ type: ColumnFormatThumbnail,
45
+ isStandalone: true,
46
+ selector: "app-column-format-thumbnail",
47
+ inputs: { cell: {
48
+ classPropertyName: "cell",
49
+ publicName: "cell",
50
+ isSignal: true,
51
+ isRequired: true,
52
+ transformFunction: null
53
+ } },
54
+ ngImport: i0,
55
+ template: `
56
+ @if (src(); as url) {
57
+ <img [src]="url" [alt]="alt()" class="size-9 rounded-md object-cover" loading="lazy" />
58
+ } @else {
59
+ <span class="text-neutral" aria-hidden="true">—</span>
60
+ }
61
+ `,
62
+ isInline: true
63
+ });
64
+ };
65
+ i0.ɵɵngDeclareClassMetadata({
66
+ minVersion: "12.0.0",
67
+ version: "22.2.3",
68
+ ngImport: i0,
69
+ type: ColumnFormatThumbnail,
70
+ decorators: [{
71
+ type: Component,
72
+ args: [{
73
+ selector: "app-column-format-thumbnail",
74
+ template: `
75
+ @if (src(); as url) {
76
+ <img [src]="url" [alt]="alt()" class="size-9 rounded-md object-cover" loading="lazy" />
77
+ } @else {
78
+ <span class="text-neutral" aria-hidden="true">—</span>
79
+ }
80
+ `
81
+ }]
82
+ }],
83
+ propDecorators: { cell: [{
84
+ type: i0.Input,
85
+ args: [{
86
+ isSignal: true,
87
+ alias: "cell",
88
+ required: true
89
+ }]
90
+ }] }
91
+ });
92
+ export { ColumnFormatThumbnail };
93
+
94
+ //# sourceMappingURL=tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/columns/format-thumbnail.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nimport { getValue } from '../shared/utils/field-path';\nimport type { ColumnCell } from './column-cell';\n\n/**\n * Formato `thumbnail` (R4.3): miniatura de la fila.\n *\n * Tanto `thumbnailSrc` como `thumbnailAlt` se mudan desde `list-view`: la\n * columna puede apuntar a `image_url`, al primer elemento de `images[]` o a\n * un objeto con `image_url`, y el texto alternativo sale del item o de la\n * fila. Sin URL se pinta el `—` de siempre.\n */\n@Component({\n selector: 'app-column-format-thumbnail',\n template: `\n @if (src(); as url) {\n <img [src]=\"url\" [alt]=\"alt()\" class=\"size-9 rounded-md object-cover\" loading=\"lazy\" />\n } @else {\n <span class=\"text-neutral\" aria-hidden=\"true\">—</span>\n }\n `,\n})\nexport class ColumnFormatThumbnail {\n readonly cell = input.required<ColumnCell>();\n\n protected readonly src = computed(() => {\n const value = this.valor();\n if (typeof value === 'string') {\n return value !== '' ? value : null;\n }\n if (Array.isArray(value)) {\n const first = value[0];\n const url = typeof first === 'string' ? first : getValue(first, 'image_url');\n return typeof url === 'string' && url !== '' ? url : null;\n }\n if (value && typeof value === 'object') {\n const url = getValue(value, 'image_url');\n return typeof url === 'string' && url !== '' ? url : null;\n }\n return null;\n });\n\n protected readonly alt = computed(() => {\n const value = this.valor();\n let item: unknown = this.cell().row;\n if (Array.isArray(value)) {\n item = value[0] ?? null;\n } else if (value && typeof value === 'object') {\n item = value;\n }\n const alt = item == null ? null : getValue(item, 'image_alt');\n if (typeof alt === 'string' && alt !== '') {\n return alt;\n }\n const rootAlt = this.cell().row['image_alt'];\n return typeof rootAlt === 'string' ? rootAlt : '';\n });\n\n private valor(): unknown {\n return getValue(this.cell().row, this.cell().column.key);\n }\n}\n"],"mappings":";;;AAuBA,IAAa,wBAAb,MAAa,sBAAqB;CACvB,OAAO,MAAM,SAAsB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEzB,MAAM,eAAc;EACrC,MAAM,QAAQ,KAAK,MAAK;EACxB,IAAI,OAAO,UAAU,UACnB,OAAO,UAAU,KAAK,QAAQ;EAEhC,IAAI,MAAM,QAAQ,KAAK,GAAG;GACxB,MAAM,QAAQ,MAAM;GACpB,MAAM,MAAM,OAAO,UAAU,WAAW,QAAQ,SAAS,OAAO,WAAW;GAC3E,OAAO,OAAO,QAAQ,YAAY,QAAQ,KAAK,MAAM;EACvD;EACA,IAAI,SAAS,OAAO,UAAU,UAAU;GACtC,MAAM,MAAM,SAAS,OAAO,WAAW;GACvC,OAAO,OAAO,QAAQ,YAAY,QAAQ,KAAK,MAAM;EACvD;EACA,OAAO;CACT,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,MAAA,CAAA,+BAAA,CAAA,CAAA;CAEiB,MAAM,eAAc;EACrC,MAAM,QAAQ,KAAK,MAAK;EACxB,IAAI,OAAgB,KAAK,KAAI,CAAE,CAAC;EAChC,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,MAAM;OACd,IAAI,SAAS,OAAO,UAAU,UACnC,OAAO;EAET,MAAM,MAAM,QAAQ,OAAO,OAAO,SAAS,MAAM,WAAW;EAC5D,IAAI,OAAO,QAAQ,YAAY,QAAQ,IACrC,OAAO;EAET,MAAM,UAAU,KAAK,KAAI,CAAE,CAAC,IAAI;EAChC,OAAO,OAAO,YAAY,WAAW,UAAU;CACjD,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,MAAA,CAAA,+BAAA,CAAA,CAAA;CAEM,QAAK;EACX,OAAO,SAAS,KAAK,KAAI,CAAE,CAAC,KAAK,KAAK,KAAI,CAAE,CAAC,OAAO,GAAG;CACzD;CAtCW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAqB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAArB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAqB,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,MAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UARtB;;;;;;;EAMT,UAAA;CAAA,CAAA;;AAEU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA;EAVjC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,UAAU;;;;;;;EAOX,CAAA"}
@@ -0,0 +1,72 @@
1
+ const GAP = 1e3;
2
+ function moveBetween(prevPosition, nextPosition) {
3
+ return Math.floor((prevPosition + nextPosition) / 2);
4
+ }
5
+ function moveToStart(firstPosition) {
6
+ return Math.floor(firstPosition / 2);
7
+ }
8
+ function moveToEnd(lastPosition) {
9
+ return lastPosition + GAP;
10
+ }
11
+ function appendPosition(items) {
12
+ const sorted = sortItems(items);
13
+ if (sorted.length === 0) return GAP;
14
+ return moveToEnd(sorted[sorted.length - 1].position);
15
+ }
16
+ function needsRebalance(items, movingKey, targetIndex) {
17
+ const without = sortItems(items.filter((item) => item.key !== movingKey));
18
+ if (without.length === 0) return false;
19
+ const index = clamp(targetIndex, 0, without.length);
20
+ if (index === without.length) return false;
21
+ if (index === 0) {
22
+ const first = without[0];
23
+ return first.position - moveToStart(first.position) < 2;
24
+ }
25
+ const prev = without[index - 1];
26
+ return without[index].position - prev.position < 2;
27
+ }
28
+ function rebalance(items, gap = GAP) {
29
+ return sortItems(items).map((item, index) => ({
30
+ key: item.key,
31
+ position: (index + 1) * gap
32
+ }));
33
+ }
34
+ function computeMove(items, movingKey, targetIndex) {
35
+ const sorted = sortItems(items);
36
+ if (!sorted.some((item) => item.key === movingKey)) throw new Error(`Elemento no encontrado: ${movingKey}`);
37
+ const without = sorted.filter((item) => item.key !== movingKey);
38
+ const index = clamp(targetIndex, 0, without.length);
39
+ if (needsRebalance(sorted, movingKey, targetIndex)) {
40
+ const renumbered = rebalance(without);
41
+ const position = positionFor(renumbered, index);
42
+ return {
43
+ rebalanced: true,
44
+ changes: [...renumbered, {
45
+ key: movingKey,
46
+ position
47
+ }]
48
+ };
49
+ }
50
+ return {
51
+ rebalanced: false,
52
+ changes: [{
53
+ key: movingKey,
54
+ position: positionFor(without, index)
55
+ }]
56
+ };
57
+ }
58
+ function positionFor(without, index) {
59
+ if (without.length === 0) return GAP;
60
+ if (index === 0) return moveToStart(without[0].position);
61
+ if (index === without.length) return moveToEnd(without[without.length - 1].position);
62
+ return moveBetween(without[index - 1].position, without[index].position);
63
+ }
64
+ function sortItems(items) {
65
+ return [...items].sort((a, b) => a.position - b.position);
66
+ }
67
+ function clamp(value, min, max) {
68
+ return Math.min(Math.max(value, min), max);
69
+ }
70
+ export { appendPosition as n, computeMove as r, GAP as t };
71
+
72
+ //# sourceMappingURL=tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs.map