@tinya-code/gas-admin-ui 0.2.0-alpha.15 → 0.2.0-alpha.17
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.
- package/fesm2022/tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs +84 -0
- package/fesm2022/tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs +140 -0
- package/fesm2022/tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs +113 -0
- package/fesm2022/tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-button-BQjNW8KB.mjs +163 -0
- package/fesm2022/tinya-code-gas-admin-ui-button-BQjNW8KB.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-calendar-view-DCY8bj2V.mjs +1027 -0
- package/fesm2022/tinya-code-gas-admin-ui-calendar-view-DCY8bj2V.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-chart-line-BjdlKHoH.mjs +278 -0
- package/fesm2022/tinya-code-gas-admin-ui-chart-line-BjdlKHoH.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-color-Dljh_By3.mjs +107 -0
- package/fesm2022/tinya-code-gas-admin-ui-color-Dljh_By3.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-condition-evaluator-DY2k1M3C.mjs +101 -0
- package/fesm2022/tinya-code-gas-admin-ui-condition-evaluator-DY2k1M3C.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-currency-BvuF3Z63.mjs +141 -0
- package/fesm2022/tinya-code-gas-admin-ui-currency-BvuF3Z63.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-data-source.service-96FSbN72.mjs +88 -0
- package/fesm2022/tinya-code-gas-admin-ui-data-source.service-96FSbN72.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-date-1SJGXZrd.mjs +107 -0
- package/fesm2022/tinya-code-gas-admin-ui-date-1SJGXZrd.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs +140 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-badge-fwk6sDU7.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs +119 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-date-D7zLiDiG.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs +125 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-file-BiIhqvQC.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs +152 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-image-C1dhnZi1.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs +211 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-list-DOEuUbGe.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs +116 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-number-DDMzr4Hn.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-text-B8CdVNpv.mjs +111 -0
- package/fesm2022/tinya-code-gas-admin-ui-display-text-B8CdVNpv.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-dropdown-C3blvmE1.mjs +122 -0
- package/fesm2022/tinya-code-gas-admin-ui-dropdown-C3blvmE1.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-email-CT_O5ihA.mjs +107 -0
- package/fesm2022/tinya-code-gas-admin-ui-email-CT_O5ihA.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-empty-state-BMc0QtoT.mjs +109 -0
- package/fesm2022/tinya-code-gas-admin-ui-empty-state-BMc0QtoT.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-error-mapper.service-DY5y1FjE.mjs +45 -0
- package/fesm2022/tinya-code-gas-admin-ui-error-mapper.service-DY5y1FjE.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs +50 -0
- package/fesm2022/tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs +24 -0
- package/fesm2022/tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs +27 -0
- package/fesm2022/tinya-code-gas-admin-ui-field-path-B4-FTBGZ.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-file-Dmxioog7.mjs +408 -0
- package/fesm2022/tinya-code-gas-admin-ui-file-Dmxioog7.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-form-view-CEe7aZ4m.mjs +4516 -0
- package/fesm2022/tinya-code-gas-admin-ui-form-view-CEe7aZ4m.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs +82 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-badge-CK8ct5Wk.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs +105 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-boolean-ClzezZz-.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs +65 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-currency-CVmniKml.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs +65 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-date-Dr1YsDd_.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs +65 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-number-CWCjpI4n.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs +59 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-text-DBOgJkH0.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs +94 -0
- package/fesm2022/tinya-code-gas-admin-ui-format-thumbnail-PCRvxWKt.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs +72 -0
- package/fesm2022/tinya-code-gas-admin-ui-gap-sorting-iTdy_DYG.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-group-h7-O8tt4.mjs +238 -0
- package/fesm2022/tinya-code-gas-admin-ui-group-h7-O8tt4.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-image-7UhJ7nqI.mjs +416 -0
- package/fesm2022/tinya-code-gas-admin-ui-image-7UhJ7nqI.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-kanban-view-Dl0Ol5Kb.mjs +439 -0
- package/fesm2022/tinya-code-gas-admin-ui-kanban-view-Dl0Ol5Kb.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-key-value-nVdgg5at.mjs +513 -0
- package/fesm2022/tinya-code-gas-admin-ui-key-value-nVdgg5at.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-list-DTtCYS4d.mjs +637 -0
- package/fesm2022/tinya-code-gas-admin-ui-list-DTtCYS4d.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-metric-card-DnGMQL8l.mjs +127 -0
- package/fesm2022/tinya-code-gas-admin-ui-metric-card-DnGMQL8l.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-multiselect-PB28e-jl.mjs +251 -0
- package/fesm2022/tinya-code-gas-admin-ui-multiselect-PB28e-jl.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-notification.service-LjSULER6.mjs +66 -0
- package/fesm2022/tinya-code-gas-admin-ui-notification.service-LjSULER6.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-number-JNr7glc8.mjs +114 -0
- package/fesm2022/tinya-code-gas-admin-ui-number-JNr7glc8.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-phone-jR417hPf.mjs +116 -0
- package/fesm2022/tinya-code-gas-admin-ui-phone-jR417hPf.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs +235 -0
- package/fesm2022/tinya-code-gas-admin-ui-quick-actions-DCQ6emmF.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs +8 -0
- package/fesm2022/tinya-code-gas-admin-ui-radio-mode-DxvN07DY.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs +124 -0
- package/fesm2022/tinya-code-gas-admin-ui-readonly-text-BL7-4qie.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-record-list-BiZfnd_7.mjs +249 -0
- package/fesm2022/tinya-code-gas-admin-ui-record-list-BiZfnd_7.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-relation-drawer.service-B0kT8EiW.mjs +39 -0
- package/fesm2022/tinya-code-gas-admin-ui-relation-drawer.service-B0kT8EiW.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-relation-ykpJ3PYl.mjs +309 -0
- package/fesm2022/tinya-code-gas-admin-ui-relation-ykpJ3PYl.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-render-registry-B88Pme-y.mjs +576 -0
- package/fesm2022/tinya-code-gas-admin-ui-render-registry-B88Pme-y.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-rich-select-CIHaOrbU.mjs +161 -0
- package/fesm2022/tinya-code-gas-admin-ui-rich-select-CIHaOrbU.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-rolldown-runtime-DpJrqANO.mjs +11 -0
- package/fesm2022/tinya-code-gas-admin-ui-schema-catalog-D0Pk0wAN.mjs +685 -0
- package/fesm2022/tinya-code-gas-admin-ui-schema-catalog-D0Pk0wAN.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-seed-DkVZbxPP.mjs +80 -0
- package/fesm2022/tinya-code-gas-admin-ui-seed-DkVZbxPP.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-select-CDwX9yNO.mjs +296 -0
- package/fesm2022/tinya-code-gas-admin-ui-select-CDwX9yNO.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-skeleton-DnWK0tcZ.mjs +119 -0
- package/fesm2022/tinya-code-gas-admin-ui-skeleton-DnWK0tcZ.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-slug-DU58cbiY.mjs +158 -0
- package/fesm2022/tinya-code-gas-admin-ui-slug-DU58cbiY.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-source-options-B9R4mw8-.mjs +26 -0
- package/fesm2022/tinya-code-gas-admin-ui-source-options-B9R4mw8-.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-status-progress-DmeG8htE.mjs +205 -0
- package/fesm2022/tinya-code-gas-admin-ui-status-progress-DmeG8htE.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-string-list-gleasqzD.mjs +432 -0
- package/fesm2022/tinya-code-gas-admin-ui-string-list-gleasqzD.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs +36 -0
- package/fesm2022/tinya-code-gas-admin-ui-template-interpolator-ewv7CkNX.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-text-CUPmL7W_.mjs +107 -0
- package/fesm2022/tinya-code-gas-admin-ui-text-CUPmL7W_.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-textarea-CGLSIW13.mjs +223 -0
- package/fesm2022/tinya-code-gas-admin-ui-textarea-CGLSIW13.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-time-BcHzsTWf.mjs +107 -0
- package/fesm2022/tinya-code-gas-admin-ui-time-BcHzsTWf.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-upload.service-CZPEPCeN.mjs +60 -0
- package/fesm2022/tinya-code-gas-admin-ui-upload.service-CZPEPCeN.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui-url-GO4LZi__.mjs +141 -0
- package/fesm2022/tinya-code-gas-admin-ui-url-GO4LZi__.mjs.map +1 -0
- package/fesm2022/tinya-code-gas-admin-ui.mjs +4738 -0
- package/fesm2022/tinya-code-gas-admin-ui.mjs.map +1 -0
- package/package.json +15 -3
- package/types/tinya-code-gas-admin-ui.d.ts +3634 -0
- package/ng-package.json +0 -7
- package/src/lib/actions/action-registry.spec.ts +0 -52
- package/src/lib/actions/action-registry.ts +0 -126
- package/src/lib/actions/action-service.spec.ts +0 -215
- package/src/lib/actions/action-service.ts +0 -87
- package/src/lib/actions/descriptors.spec.ts +0 -155
- package/src/lib/actions/descriptors.ts +0 -154
- package/src/lib/columns/column-cell.ts +0 -33
- package/src/lib/columns/column-defaults.spec.ts +0 -99
- package/src/lib/columns/column-defaults.ts +0 -84
- package/src/lib/columns/column-format.spec.ts +0 -274
- package/src/lib/columns/descriptors.ts +0 -113
- package/src/lib/columns/format-badge.ts +0 -51
- package/src/lib/columns/format-boolean.ts +0 -58
- package/src/lib/columns/format-currency.ts +0 -30
- package/src/lib/columns/format-date.ts +0 -35
- package/src/lib/columns/format-number.ts +0 -32
- package/src/lib/columns/format-text.ts +0 -23
- package/src/lib/columns/format-thumbnail.ts +0 -63
- package/src/lib/core/adapters/firebase-auth.adapter.ts +0 -6
- package/src/lib/core/guards/auth.guard.spec.ts +0 -88
- package/src/lib/core/guards/auth.guard.ts +0 -48
- package/src/lib/core/guards/unsaved-changes.guard.ts +0 -16
- package/src/lib/core/interceptors/api-error.interceptor.spec.ts +0 -182
- package/src/lib/core/interceptors/api-error.interceptor.ts +0 -87
- package/src/lib/core/models/api.model.ts +0 -104
- package/src/lib/core/models/schema-descriptions.ts +0 -118
- package/src/lib/core/models/schema.model.ts +0 -1097
- package/src/lib/core/registry/composition-validator.spec.ts +0 -358
- package/src/lib/core/registry/composition-validator.ts +0 -270
- package/src/lib/core/registry/field-validators.spec.ts +0 -199
- package/src/lib/core/registry/field-validators.ts +0 -440
- package/src/lib/core/registry/render-host.spec.ts +0 -208
- package/src/lib/core/registry/render-host.ts +0 -646
- package/src/lib/core/registry/render-registry.spec.ts +0 -96
- package/src/lib/core/registry/render-registry.ts +0 -312
- package/src/lib/core/registry/schema-catalog.ts +0 -156
- package/src/lib/core/services/api.service.spec.ts +0 -1142
- package/src/lib/core/services/api.service.ts +0 -371
- package/src/lib/core/services/auth.service.spec.ts +0 -653
- package/src/lib/core/services/auth.service.ts +0 -503
- package/src/lib/core/services/config.service.spec.ts +0 -121
- package/src/lib/core/services/config.service.ts +0 -119
- package/src/lib/core/services/data-source.service.spec.ts +0 -179
- package/src/lib/core/services/data-source.service.ts +0 -142
- package/src/lib/core/services/error-mapper.service.spec.ts +0 -50
- package/src/lib/core/services/error-mapper.service.ts +0 -49
- package/src/lib/core/services/notification.service.ts +0 -73
- package/src/lib/core/services/relation-drawer.service.ts +0 -41
- package/src/lib/core/services/theme.service.spec.ts +0 -106
- package/src/lib/core/services/theme.service.ts +0 -86
- package/src/lib/core/services/transport.spec.ts +0 -198
- package/src/lib/core/services/transport.ts +0 -164
- package/src/lib/core/services/upload.service.ts +0 -81
- package/src/lib/core/testing/categories.schema.ts +0 -125
- package/src/lib/core/testing/orders.schema.ts +0 -372
- package/src/lib/core/testing/products.schema.ts +0 -258
- package/src/lib/core/testing/site.schema.ts +0 -195
- package/src/lib/core/testing/test-catalog.ts +0 -21
- package/src/lib/core/tokens.ts +0 -112
- package/src/lib/core/utils/clipboard.spec.ts +0 -55
- package/src/lib/core/utils/clipboard.ts +0 -90
- package/src/lib/core/utils/context-resolver.spec.ts +0 -95
- package/src/lib/core/utils/context-resolver.ts +0 -101
- package/src/lib/core/utils/response-unwrapper.spec.ts +0 -70
- package/src/lib/core/utils/response-unwrapper.ts +0 -103
- package/src/lib/core/utils/source-options.spec.ts +0 -96
- package/src/lib/core/utils/source-options.ts +0 -54
- package/src/lib/core/utils/template-interpolator.spec.ts +0 -59
- package/src/lib/core/utils/template-interpolator.ts +0 -56
- package/src/lib/core/view-navigation/view-navigation.service.spec.ts +0 -207
- package/src/lib/core/view-navigation/view-navigation.service.ts +0 -132
- package/src/lib/fields/boolean/boolean.descriptor.ts +0 -11
- package/src/lib/fields/boolean/boolean.ts +0 -40
- package/src/lib/fields/color/color.descriptor.ts +0 -12
- package/src/lib/fields/color/color.ts +0 -34
- package/src/lib/fields/currency/currency.descriptor.ts +0 -12
- package/src/lib/fields/currency/currency.ts +0 -67
- package/src/lib/fields/date/date.descriptor.ts +0 -12
- package/src/lib/fields/date/date.ts +0 -36
- package/src/lib/fields/descriptors.ts +0 -122
- package/src/lib/fields/display/display-badge.ts +0 -65
- package/src/lib/fields/display/display-date.ts +0 -39
- package/src/lib/fields/display/display-defaults.ts +0 -84
- package/src/lib/fields/display/display-file.ts +0 -41
- package/src/lib/fields/display/display-image.ts +0 -54
- package/src/lib/fields/display/display-list.ts +0 -107
- package/src/lib/fields/display/display-number.ts +0 -41
- package/src/lib/fields/display/display-text.ts +0 -42
- package/src/lib/fields/display/display.spec.ts +0 -242
- package/src/lib/fields/dropdown/dropdown.descriptor.ts +0 -12
- package/src/lib/fields/dropdown/dropdown.ts +0 -45
- package/src/lib/fields/email/email.descriptor.ts +0 -12
- package/src/lib/fields/email/email.ts +0 -28
- package/src/lib/fields/field-aria.ts +0 -60
- package/src/lib/fields/field-host/field-host.spec.ts +0 -118
- package/src/lib/fields/field-host/field-host.ts +0 -47
- package/src/lib/fields/field-node.ts +0 -88
- package/src/lib/fields/file/file.descriptor.ts +0 -14
- package/src/lib/fields/file/file.spec.ts +0 -134
- package/src/lib/fields/file/file.ts +0 -281
- package/src/lib/fields/group/group.descriptor.ts +0 -21
- package/src/lib/fields/group/group.ts +0 -110
- package/src/lib/fields/image/image.descriptor.ts +0 -12
- package/src/lib/fields/image/image.spec.ts +0 -117
- package/src/lib/fields/image/image.ts +0 -281
- package/src/lib/fields/key-value/key-value.descriptor.ts +0 -11
- package/src/lib/fields/key-value/key-value.ts +0 -283
- package/src/lib/fields/list/list.descriptor.ts +0 -21
- package/src/lib/fields/list/list.ts +0 -376
- package/src/lib/fields/multiselect/multiselect.descriptor.ts +0 -11
- package/src/lib/fields/multiselect/multiselect.spec.ts +0 -142
- package/src/lib/fields/multiselect/multiselect.ts +0 -152
- package/src/lib/fields/number/number.descriptor.ts +0 -12
- package/src/lib/fields/number/number.ts +0 -40
- package/src/lib/fields/phone/phone.descriptor.ts +0 -12
- package/src/lib/fields/phone/phone.ts +0 -46
- package/src/lib/fields/readonly-text/readonly-text.descriptor.ts +0 -12
- package/src/lib/fields/readonly-text/readonly-text.ts +0 -58
- package/src/lib/fields/relation/relation.descriptor.ts +0 -12
- package/src/lib/fields/relation/relation.spec.ts +0 -193
- package/src/lib/fields/relation/relation.ts +0 -224
- package/src/lib/fields/rich-select/rich-select.descriptor.ts +0 -12
- package/src/lib/fields/rich-select/rich-select.ts +0 -175
- package/src/lib/fields/select/radio-mode.ts +0 -25
- package/src/lib/fields/select/select.descriptor.ts +0 -12
- package/src/lib/fields/select/select.spec.ts +0 -162
- package/src/lib/fields/select/select.ts +0 -210
- package/src/lib/fields/slug/slug.descriptor.ts +0 -19
- package/src/lib/fields/slug/slug.ts +0 -67
- package/src/lib/fields/string-list/string-list.descriptor.ts +0 -11
- package/src/lib/fields/string-list/string-list.ts +0 -222
- package/src/lib/fields/text/text.descriptor.ts +0 -12
- package/src/lib/fields/text/text.ts +0 -35
- package/src/lib/fields/textarea/textarea.descriptor.ts +0 -12
- package/src/lib/fields/textarea/textarea.spec.ts +0 -117
- package/src/lib/fields/textarea/textarea.ts +0 -126
- package/src/lib/fields/time/time.descriptor.ts +0 -12
- package/src/lib/fields/time/time.ts +0 -28
- package/src/lib/fields/unknown-render/unknown-render.ts +0 -49
- package/src/lib/fields/url/url.descriptor.ts +0 -12
- package/src/lib/fields/url/url.ts +0 -53
- package/src/lib/gas-admin-ui.spec.ts +0 -21
- package/src/lib/gas-admin-ui.ts +0 -9
- package/src/lib/layouts/descriptors.ts +0 -9
- package/src/lib/pages/dashboard/dashboard.ts +0 -167
- package/src/lib/pages/detail-view/detail-view.spec.ts +0 -333
- package/src/lib/pages/detail-view/detail-view.ts +0 -570
- package/src/lib/pages/drawer-form/drawer-form.ts +0 -228
- package/src/lib/pages/form-view/form-model.ts +0 -88
- package/src/lib/pages/form-view/form-schema.ts +0 -255
- package/src/lib/pages/form-view/form-view.ts +0 -1622
- package/src/lib/pages/list-view/list-view.formats.spec.ts +0 -214
- package/src/lib/pages/list-view/list-view.ts +0 -882
- package/src/lib/pages/login/login.spec.ts +0 -109
- package/src/lib/pages/login/login.ts +0 -227
- package/src/lib/pages/resource-page/resource-page.ts +0 -234
- package/src/lib/shared/components/badge/badge.ts +0 -35
- package/src/lib/shared/components/button/button.ts +0 -65
- package/src/lib/shared/components/confirm-dialog/confirm-dialog.ts +0 -48
- package/src/lib/shared/components/copy-button/copy-button.ts +0 -56
- package/src/lib/shared/components/copy-share/copy-share.spec.ts +0 -122
- package/src/lib/shared/components/copy-share/copy-share.ts +0 -107
- package/src/lib/shared/components/drawer/drawer.spec.ts +0 -127
- package/src/lib/shared/components/drawer/drawer.ts +0 -172
- package/src/lib/shared/components/empty-state/empty-state.ts +0 -30
- package/src/lib/shared/components/modal/modal.spec.ts +0 -149
- package/src/lib/shared/components/modal/modal.ts +0 -145
- package/src/lib/shared/components/post-create-modal/post-create-modal.spec.ts +0 -165
- package/src/lib/shared/components/post-create-modal/post-create-modal.ts +0 -159
- package/src/lib/shared/components/skeleton/skeleton.ts +0 -31
- package/src/lib/shared/components/toast/toast.ts +0 -58
- package/src/lib/shared/utils/col-span.ts +0 -25
- package/src/lib/shared/utils/condition-evaluator.ts +0 -53
- package/src/lib/shared/utils/depends-on.ts +0 -48
- package/src/lib/shared/utils/dialog-focus.ts +0 -28
- package/src/lib/shared/utils/field-path.ts +0 -49
- package/src/lib/shared/utils/gap-sorting.ts +0 -144
- package/src/lib/shared/utils/seed.spec.ts +0 -64
- package/src/lib/shared/utils/seed.ts +0 -149
- package/src/lib/shared/utils/slugify.ts +0 -13
- package/src/lib/shared/utils/validators.ts +0 -41
- package/src/lib/shell/layout/layout.ts +0 -63
- package/src/lib/shell/shell.routes.spec.ts +0 -59
- package/src/lib/shell/shell.routes.ts +0 -122
- package/src/lib/shell/sidebar/sidebar.ts +0 -139
- package/src/lib/shell/theme-toggle/theme-toggle.ts +0 -74
- package/src/lib/views/calendar-view/calendar-model.ts +0 -426
- package/src/lib/views/calendar-view/calendar-view.spec.ts +0 -557
- package/src/lib/views/calendar-view/calendar-view.ts +0 -568
- package/src/lib/views/composer/composer-host.spec.ts +0 -301
- package/src/lib/views/composer/composer-host.ts +0 -248
- package/src/lib/views/composer/composer-imports.spec.ts +0 -54
- package/src/lib/views/composer/view-context.spec.ts +0 -117
- package/src/lib/views/composer/view-context.ts +0 -109
- package/src/lib/views/composer/view-slot.spec.ts +0 -130
- package/src/lib/views/composer/view-slot.ts +0 -178
- package/src/lib/views/descriptors.ts +0 -46
- package/src/lib/views/kanban-view/kanban-model.ts +0 -173
- package/src/lib/views/kanban-view/kanban-view.spec.ts +0 -540
- package/src/lib/views/kanban-view/kanban-view.ts +0 -327
- package/src/lib/widgets/bar-chart/bar-chart.descriptor.ts +0 -17
- package/src/lib/widgets/bar-chart/bar-chart.spec.ts +0 -66
- package/src/lib/widgets/bar-chart/bar-chart.ts +0 -76
- package/src/lib/widgets/chart-line/chart-line.descriptor.ts +0 -17
- package/src/lib/widgets/chart-line/chart-line.spec.ts +0 -113
- package/src/lib/widgets/chart-line/chart-line.ts +0 -219
- package/src/lib/widgets/descriptors.ts +0 -29
- package/src/lib/widgets/metric-card/metric-card.descriptor.ts +0 -41
- package/src/lib/widgets/metric-card/metric-card.spec.ts +0 -52
- package/src/lib/widgets/metric-card/metric-card.ts +0 -48
- package/src/lib/widgets/quick-actions/quick-actions.descriptor.ts +0 -13
- package/src/lib/widgets/quick-actions/quick-actions.spec.ts +0 -61
- package/src/lib/widgets/quick-actions/quick-actions.ts +0 -100
- package/src/lib/widgets/record-list/record-list.descriptor.ts +0 -16
- package/src/lib/widgets/record-list/record-list.spec.ts +0 -79
- package/src/lib/widgets/record-list/record-list.ts +0 -115
- package/src/lib/widgets/series.spec.ts +0 -42
- package/src/lib/widgets/series.ts +0 -56
- package/src/lib/widgets/status-progress/status-progress.descriptor.ts +0 -19
- package/src/lib/widgets/status-progress/status-progress.spec.ts +0 -63
- package/src/lib/widgets/status-progress/status-progress.ts +0 -104
- package/src/lib/widgets/widget-host/widget-host.spec.ts +0 -179
- package/src/lib/widgets/widget-host/widget-host.ts +0 -99
- package/src/public-api.ts +0 -104
- package/tinya-code-gas-admin-ui-0.2.0-alpha.15.tgz +0 -0
- package/tsconfig.lib.json +0 -13
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.spec.json +0 -10
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { Component, computed, input } from "@angular/core";
|
|
3
|
+
const KINDS = {
|
|
4
|
+
success: "bg-success text-surface",
|
|
5
|
+
danger: "bg-danger text-surface",
|
|
6
|
+
warning: "bg-accent/20 text-accent-text font-semibold",
|
|
7
|
+
info: "bg-primary text-surface",
|
|
8
|
+
neutral: "bg-neutral text-surface"
|
|
9
|
+
};
|
|
10
|
+
var Badge = class Badge {
|
|
11
|
+
label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
12
|
+
kind = input("neutral", ...ngDevMode ? [{ debugName: "kind" }] : /* istanbul ignore next */ []);
|
|
13
|
+
classes = computed(() => `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${KINDS[this.kind()]}`, ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
15
|
+
minVersion: "12.0.0",
|
|
16
|
+
version: "22.2.3",
|
|
17
|
+
ngImport: i0,
|
|
18
|
+
type: Badge,
|
|
19
|
+
deps: [],
|
|
20
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
21
|
+
});
|
|
22
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
23
|
+
minVersion: "17.1.0",
|
|
24
|
+
version: "22.2.3",
|
|
25
|
+
type: Badge,
|
|
26
|
+
isStandalone: true,
|
|
27
|
+
selector: "app-badge",
|
|
28
|
+
inputs: {
|
|
29
|
+
label: {
|
|
30
|
+
classPropertyName: "label",
|
|
31
|
+
publicName: "label",
|
|
32
|
+
isSignal: true,
|
|
33
|
+
isRequired: true,
|
|
34
|
+
transformFunction: null
|
|
35
|
+
},
|
|
36
|
+
kind: {
|
|
37
|
+
classPropertyName: "kind",
|
|
38
|
+
publicName: "kind",
|
|
39
|
+
isSignal: true,
|
|
40
|
+
isRequired: false,
|
|
41
|
+
transformFunction: null
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
host: { properties: { "class": "classes()" } },
|
|
45
|
+
ngImport: i0,
|
|
46
|
+
template: `{{ label() }}`,
|
|
47
|
+
isInline: true
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
51
|
+
minVersion: "12.0.0",
|
|
52
|
+
version: "22.2.3",
|
|
53
|
+
ngImport: i0,
|
|
54
|
+
type: Badge,
|
|
55
|
+
decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{
|
|
58
|
+
selector: "app-badge",
|
|
59
|
+
host: { "[class]": "classes()" },
|
|
60
|
+
template: `{{ label() }}`
|
|
61
|
+
}]
|
|
62
|
+
}],
|
|
63
|
+
propDecorators: {
|
|
64
|
+
label: [{
|
|
65
|
+
type: i0.Input,
|
|
66
|
+
args: [{
|
|
67
|
+
isSignal: true,
|
|
68
|
+
alias: "label",
|
|
69
|
+
required: true
|
|
70
|
+
}]
|
|
71
|
+
}],
|
|
72
|
+
kind: [{
|
|
73
|
+
type: i0.Input,
|
|
74
|
+
args: [{
|
|
75
|
+
isSignal: true,
|
|
76
|
+
alias: "kind",
|
|
77
|
+
required: false
|
|
78
|
+
}]
|
|
79
|
+
}]
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
export { Badge as t };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tinya-code-gas-admin-ui-badge-EeCA_l-o.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/shared/components/badge/badge.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nexport type BadgeKind = 'success' | 'danger' | 'warning' | 'info' | 'neutral';\n\nconst KINDS: Record<BadgeKind, string> = {\n success: 'bg-success text-surface',\n danger: 'bg-danger text-surface',\n warning: 'bg-accent/20 text-accent-text font-semibold',\n info: 'bg-primary text-surface',\n neutral: 'bg-neutral text-surface',\n};\n\n/**\n * Etiqueta compacta (booleanos, estados).\n *\n * El texto va con `text-surface` y no `text-white` porque el fondo lo da\n * el token y en oscuro se aclara: blanco sobre `--color-danger` oscuro\n * sería 2,8:1. `--color-surface` vale #fff en claro, así que el render\n * actual no cambia, y en oscuro el texto se vuelve oscuro sobre el tono\n * aclarado (6,4–9,2:1).\n */\n@Component({\n selector: 'app-badge',\n host: { '[class]': 'classes()' },\n template: `{{ label() }}`,\n})\nexport class Badge {\n readonly label = input.required<string>();\n readonly kind = input<BadgeKind>('neutral');\n\n readonly classes = computed(\n () =>\n `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${KINDS[this.kind()]}`,\n );\n}\n"],"mappings":";;AAIA,MAAM,QAAmC;CACvC,SAAS;CACT,QAAQ;CACR,SAAS;CACT,MAAM;CACN,SAAS;AACV;AAgBD,IAAa,QAAb,MAAa,MAAK;CACP,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,OAAO,MAAiB,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAElC,UAAU,eAEf,yEAAyE,MAAM,KAAK,KAAI,MAC3F,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAPU,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAK,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAL,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAK,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,YAAA,EAAA;EAAA,UAAA;EAAA,UAFN;EAAe,UAAA;CAAA,CAAA;;AAEd,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAK,YAAA,CAAA;EALjB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM,EAAE,WAAW,YAAW;GAC9B,UAAU;EACX,CAAA"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { Component, computed, input } from "@angular/core";
|
|
3
|
+
var BarChart = class BarChart {
|
|
4
|
+
label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
5
|
+
data = input([], ...ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []);
|
|
6
|
+
unit = input("", ...ngDevMode ? [{ debugName: "unit" }] : /* istanbul ignore next */ []);
|
|
7
|
+
max = computed(() => Math.max(0, ...this.data().map((row) => row.value)), ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
|
|
8
|
+
height(value) {
|
|
9
|
+
if (value === 0) return 0;
|
|
10
|
+
const max = this.max();
|
|
11
|
+
if (max === 0) return 0;
|
|
12
|
+
return Math.max(2, value / max * 100);
|
|
13
|
+
}
|
|
14
|
+
summary = computed(() => {
|
|
15
|
+
const rows = this.data();
|
|
16
|
+
if (rows.length === 0) return "Sin datos.";
|
|
17
|
+
const top = rows.reduce((best, row) => row.value > best.value ? row : best, rows[0]);
|
|
18
|
+
const unit = this.unit();
|
|
19
|
+
return `${rows.length} categorías. Mayor: ${top.label} con ${top.value}${unit}. Menor: ${rows.reduce((low, row) => row.value < low.value ? row : low, rows[0]).label}.`;
|
|
20
|
+
}, ...ngDevMode ? [{ debugName: "summary" }] : /* istanbul ignore next */ []);
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
22
|
+
minVersion: "12.0.0",
|
|
23
|
+
version: "22.2.3",
|
|
24
|
+
ngImport: i0,
|
|
25
|
+
type: BarChart,
|
|
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: BarChart,
|
|
33
|
+
isStandalone: true,
|
|
34
|
+
selector: "app-bar-chart",
|
|
35
|
+
inputs: {
|
|
36
|
+
label: {
|
|
37
|
+
classPropertyName: "label",
|
|
38
|
+
publicName: "label",
|
|
39
|
+
isSignal: true,
|
|
40
|
+
isRequired: true,
|
|
41
|
+
transformFunction: null
|
|
42
|
+
},
|
|
43
|
+
data: {
|
|
44
|
+
classPropertyName: "data",
|
|
45
|
+
publicName: "data",
|
|
46
|
+
isSignal: true,
|
|
47
|
+
isRequired: false,
|
|
48
|
+
transformFunction: null
|
|
49
|
+
},
|
|
50
|
+
unit: {
|
|
51
|
+
classPropertyName: "unit",
|
|
52
|
+
publicName: "unit",
|
|
53
|
+
isSignal: true,
|
|
54
|
+
isRequired: false,
|
|
55
|
+
transformFunction: null
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
ngImport: i0,
|
|
59
|
+
template: `
|
|
60
|
+
<div class="rounded-lg border border-neutral/20 bg-surface p-4">
|
|
61
|
+
<p class="mb-3 text-sm text-neutral">{{ label() }}</p>
|
|
62
|
+
|
|
63
|
+
@if (data().length === 0) {
|
|
64
|
+
<p class="text-sm text-neutral/60" data-testid="empty">Sin datos.</p>
|
|
65
|
+
} @else {
|
|
66
|
+
<div role="img" [attr.aria-label]="summary()" class="flex h-32 items-end gap-2">
|
|
67
|
+
@for (row of data(); track row.label) {
|
|
68
|
+
<div class="flex min-w-0 flex-1 flex-col items-center justify-end gap-1">
|
|
69
|
+
<span class="text-xs tabular-nums text-neutral"> {{ row.value }}{{ unit() }} </span>
|
|
70
|
+
<div class="w-full rounded-t bg-primary" [style.height.%]="height(row.value)"></div>
|
|
71
|
+
<span class="w-full truncate text-center text-xs text-neutral">{{ row.label }}</span>
|
|
72
|
+
</div>
|
|
73
|
+
}
|
|
74
|
+
</div>
|
|
75
|
+
}
|
|
76
|
+
</div>
|
|
77
|
+
`,
|
|
78
|
+
isInline: true
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
82
|
+
minVersion: "12.0.0",
|
|
83
|
+
version: "22.2.3",
|
|
84
|
+
ngImport: i0,
|
|
85
|
+
type: BarChart,
|
|
86
|
+
decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{
|
|
89
|
+
selector: "app-bar-chart",
|
|
90
|
+
template: `
|
|
91
|
+
<div class="rounded-lg border border-neutral/20 bg-surface p-4">
|
|
92
|
+
<p class="mb-3 text-sm text-neutral">{{ label() }}</p>
|
|
93
|
+
|
|
94
|
+
@if (data().length === 0) {
|
|
95
|
+
<p class="text-sm text-neutral/60" data-testid="empty">Sin datos.</p>
|
|
96
|
+
} @else {
|
|
97
|
+
<div role="img" [attr.aria-label]="summary()" class="flex h-32 items-end gap-2">
|
|
98
|
+
@for (row of data(); track row.label) {
|
|
99
|
+
<div class="flex min-w-0 flex-1 flex-col items-center justify-end gap-1">
|
|
100
|
+
<span class="text-xs tabular-nums text-neutral"> {{ row.value }}{{ unit() }} </span>
|
|
101
|
+
<div class="w-full rounded-t bg-primary" [style.height.%]="height(row.value)"></div>
|
|
102
|
+
<span class="w-full truncate text-center text-xs text-neutral">{{ row.label }}</span>
|
|
103
|
+
</div>
|
|
104
|
+
}
|
|
105
|
+
</div>
|
|
106
|
+
}
|
|
107
|
+
</div>
|
|
108
|
+
`
|
|
109
|
+
}]
|
|
110
|
+
}],
|
|
111
|
+
propDecorators: {
|
|
112
|
+
label: [{
|
|
113
|
+
type: i0.Input,
|
|
114
|
+
args: [{
|
|
115
|
+
isSignal: true,
|
|
116
|
+
alias: "label",
|
|
117
|
+
required: true
|
|
118
|
+
}]
|
|
119
|
+
}],
|
|
120
|
+
data: [{
|
|
121
|
+
type: i0.Input,
|
|
122
|
+
args: [{
|
|
123
|
+
isSignal: true,
|
|
124
|
+
alias: "data",
|
|
125
|
+
required: false
|
|
126
|
+
}]
|
|
127
|
+
}],
|
|
128
|
+
unit: [{
|
|
129
|
+
type: i0.Input,
|
|
130
|
+
args: [{
|
|
131
|
+
isSignal: true,
|
|
132
|
+
alias: "unit",
|
|
133
|
+
required: false
|
|
134
|
+
}]
|
|
135
|
+
}]
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
export { BarChart };
|
|
139
|
+
|
|
140
|
+
//# sourceMappingURL=tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tinya-code-gas-admin-ui-bar-chart-G7sEMSBY.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/widgets/bar-chart/bar-chart.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nexport interface BarDatum {\n label: string;\n value: number;\n}\n\n/**\n * Barras por categoría, sin librería: se dibujan con CSS y un `@for` de\n * Angular (~1 K gz frente a los 61,4 K de Chart.js — viabilidad B2.1).\n *\n * Accesibilidad (plan 3.2): la grilla es `role=\"img\"` con un `aria-label`\n * que resume los datos, de modo que un lector de pantalla no recorra cada\n * barra suelta sino que escuche «8 categorías. Mayor: …».\n */\n@Component({\n selector: 'app-bar-chart',\n template: `\n <div class=\"rounded-lg border border-neutral/20 bg-surface p-4\">\n <p class=\"mb-3 text-sm text-neutral\">{{ label() }}</p>\n\n @if (data().length === 0) {\n <p class=\"text-sm text-neutral/60\" data-testid=\"empty\">Sin datos.</p>\n } @else {\n <div role=\"img\" [attr.aria-label]=\"summary()\" class=\"flex h-32 items-end gap-2\">\n @for (row of data(); track row.label) {\n <div class=\"flex min-w-0 flex-1 flex-col items-center justify-end gap-1\">\n <span class=\"text-xs tabular-nums text-neutral\"> {{ row.value }}{{ unit() }} </span>\n <div class=\"w-full rounded-t bg-primary\" [style.height.%]=\"height(row.value)\"></div>\n <span class=\"w-full truncate text-center text-xs text-neutral\">{{ row.label }}</span>\n </div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class BarChart {\n /** Título del gráfico. */\n readonly label = input.required<string>();\n /** Series a dibujar; vacío ⇒ estado «Sin datos». */\n readonly data = input<BarDatum[]>([]);\n /** Sufijo de las cifras del eje («unidades», «S/»). */\n readonly unit = input('');\n\n private readonly max = computed(() => Math.max(0, ...this.data().map((row) => row.value)));\n\n /**\n * Altura relativa de una barra. `max = 0` ⇒ 0 % (nada de división por\n * cero); un valor de 0 se queda en 0, y los demás bajan a un 2 % mínimo\n * para que la barra siga siendo visible.\n */\n protected height(value: number): number {\n if (value === 0) {\n return 0;\n }\n const max = this.max();\n if (max === 0) {\n return 0;\n }\n return Math.max(2, (value / max) * 100);\n }\n\n protected readonly summary = computed(() => {\n const rows = this.data();\n if (rows.length === 0) {\n return 'Sin datos.';\n }\n const top = rows.reduce((best, row) => (row.value > best.value ? row : best), rows[0]);\n const unit = this.unit();\n return (\n `${rows.length} categorías. Mayor: ${top.label} con ${top.value}${unit}. ` +\n `Menor: ${rows.reduce((low, row) => (row.value < low.value ? row : low), rows[0]).label}.`\n );\n });\n}\n"],"mappings":";;AAqCA,IAAa,WAAb,MAAa,SAAQ;CAEV,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAEhC,OAAO,MAAkB,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAE5B,OAAO,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAER,MAAM,eAAe,KAAK,IAAI,GAAG,GAAG,KAAK,KAAI,CAAE,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,MAAA,CAAA,+BAAA,CAAA,CAAA;CAOhF,OAAO,OAAa;EAC5B,IAAI,UAAU,GACZ,OAAO;EAET,MAAM,MAAM,KAAK,IAAG;EACpB,IAAI,QAAQ,GACV,OAAO;EAET,OAAO,KAAK,IAAI,GAAI,QAAQ,MAAO,GAAG;CACxC;CAEmB,UAAU,eAAc;EACzC,MAAM,OAAO,KAAK,KAAI;EACtB,IAAI,KAAK,WAAW,GAClB,OAAO;EAET,MAAM,MAAM,KAAK,QAAQ,MAAM,QAAS,IAAI,QAAQ,KAAK,QAAQ,MAAM,MAAO,KAAK,EAAE;EACrF,MAAM,OAAO,KAAK,KAAI;EACtB,OACE,GAAG,KAAK,OAAM,sBAAuB,IAAI,MAAK,OAAQ,IAAI,QAAQ,KAAI,WAC5D,KAAK,QAAQ,KAAK,QAAS,IAAI,QAAQ,IAAI,QAAQ,MAAM,KAAM,KAAK,EAAE,CAAC,CAAC,MAAK;CAE3F,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CArCS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAQ,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAR,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAQ,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UApBT;;;;;;;;;;;;;;;;;;;EAkBT,UAAA;CAAA,CAAA;;AAEU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAQ,YAAA,CAAA;EAtBpB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,UAAU;;;;;;;;;;;;;;;;;;;EAmBX,CAAA"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { n as FieldAria } from "./tinya-code-gas-admin-ui-field-aria-BD1Wiggc.mjs";
|
|
2
|
+
import { t as childTree } from "./tinya-code-gas-admin-ui-field-node-CIK6KNN_.mjs";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import { Component, computed, input } from "@angular/core";
|
|
5
|
+
import { FormField } from "@angular/forms/signals";
|
|
6
|
+
var FieldBoolean = class FieldBoolean {
|
|
7
|
+
field = input.required(...ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []);
|
|
8
|
+
tree = input.required(...ngDevMode ? [{ debugName: "tree" }] : /* istanbul ignore next */ []);
|
|
9
|
+
node = computed(() => childTree(this.tree(), this.field().key), ...ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []);
|
|
10
|
+
state = computed(() => this.node()(), ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
|
|
11
|
+
currentLabel = computed(() => {
|
|
12
|
+
const on = this.state().value() === true;
|
|
13
|
+
const field = this.field();
|
|
14
|
+
if (on) return field.trueLabel ?? "Sí";
|
|
15
|
+
return field.falseLabel ?? "No";
|
|
16
|
+
}, ...ngDevMode ? [{ debugName: "currentLabel" }] : /* istanbul ignore next */ []);
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
18
|
+
minVersion: "12.0.0",
|
|
19
|
+
version: "22.2.3",
|
|
20
|
+
ngImport: i0,
|
|
21
|
+
type: FieldBoolean,
|
|
22
|
+
deps: [],
|
|
23
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
24
|
+
});
|
|
25
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
26
|
+
minVersion: "17.1.0",
|
|
27
|
+
version: "22.2.3",
|
|
28
|
+
type: FieldBoolean,
|
|
29
|
+
isStandalone: true,
|
|
30
|
+
selector: "app-field-boolean",
|
|
31
|
+
inputs: {
|
|
32
|
+
field: {
|
|
33
|
+
classPropertyName: "field",
|
|
34
|
+
publicName: "field",
|
|
35
|
+
isSignal: true,
|
|
36
|
+
isRequired: true,
|
|
37
|
+
transformFunction: null
|
|
38
|
+
},
|
|
39
|
+
tree: {
|
|
40
|
+
classPropertyName: "tree",
|
|
41
|
+
publicName: "tree",
|
|
42
|
+
isSignal: true,
|
|
43
|
+
isRequired: true,
|
|
44
|
+
transformFunction: null
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
ngImport: i0,
|
|
48
|
+
template: `
|
|
49
|
+
<label class="inline-flex cursor-pointer items-center gap-2">
|
|
50
|
+
<input type="checkbox" class="peer sr-only" [id]="state().name()" [formField]="node()" />
|
|
51
|
+
<span
|
|
52
|
+
class="relative h-5 w-9 shrink-0 rounded-full bg-neutral/30 transition-colors peer-checked:bg-primary after:absolute after:top-0.5 after:left-0.5 after:h-4 after:w-4 after:rounded-full after:bg-white after:transition-transform after:content-[''] peer-checked:after:translate-x-4"
|
|
53
|
+
></span>
|
|
54
|
+
<span class="text-sm">{{ currentLabel() }}</span>
|
|
55
|
+
</label>
|
|
56
|
+
`,
|
|
57
|
+
isInline: true,
|
|
58
|
+
dependencies: [{
|
|
59
|
+
kind: "directive",
|
|
60
|
+
type: FieldAria,
|
|
61
|
+
selector: "input[id], select[id], textarea[id], output[id]"
|
|
62
|
+
}, {
|
|
63
|
+
kind: "directive",
|
|
64
|
+
type: FormField,
|
|
65
|
+
selector: "[formField]",
|
|
66
|
+
inputs: ["formField"],
|
|
67
|
+
exportAs: ["formField"]
|
|
68
|
+
}]
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
72
|
+
minVersion: "12.0.0",
|
|
73
|
+
version: "22.2.3",
|
|
74
|
+
ngImport: i0,
|
|
75
|
+
type: FieldBoolean,
|
|
76
|
+
decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{
|
|
79
|
+
selector: "app-field-boolean",
|
|
80
|
+
imports: [FieldAria, FormField],
|
|
81
|
+
template: `
|
|
82
|
+
<label class="inline-flex cursor-pointer items-center gap-2">
|
|
83
|
+
<input type="checkbox" class="peer sr-only" [id]="state().name()" [formField]="node()" />
|
|
84
|
+
<span
|
|
85
|
+
class="relative h-5 w-9 shrink-0 rounded-full bg-neutral/30 transition-colors peer-checked:bg-primary after:absolute after:top-0.5 after:left-0.5 after:h-4 after:w-4 after:rounded-full after:bg-white after:transition-transform after:content-[''] peer-checked:after:translate-x-4"
|
|
86
|
+
></span>
|
|
87
|
+
<span class="text-sm">{{ currentLabel() }}</span>
|
|
88
|
+
</label>
|
|
89
|
+
`
|
|
90
|
+
}]
|
|
91
|
+
}],
|
|
92
|
+
propDecorators: {
|
|
93
|
+
field: [{
|
|
94
|
+
type: i0.Input,
|
|
95
|
+
args: [{
|
|
96
|
+
isSignal: true,
|
|
97
|
+
alias: "field",
|
|
98
|
+
required: true
|
|
99
|
+
}]
|
|
100
|
+
}],
|
|
101
|
+
tree: [{
|
|
102
|
+
type: i0.Input,
|
|
103
|
+
args: [{
|
|
104
|
+
isSignal: true,
|
|
105
|
+
alias: "tree",
|
|
106
|
+
required: true
|
|
107
|
+
}]
|
|
108
|
+
}]
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
export { FieldBoolean };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tinya-code-gas-admin-ui-boolean-B2ASKL0E.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/fields/boolean/boolean.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\n\nimport type { BooleanField } from '../../core/models/schema.model';\nimport { FieldAria } from '../field-aria';\nimport { childTree, type RootTree } from '../field-node';\n\n/**\n * Interruptor booleano (base.md §5.1) con `trueLabel`/`falseLabel`.\n * Checkbox nativo + `formField` (se estiliza como switch con `peer-checked`).\n */\n@Component({\n selector: 'app-field-boolean',\n imports: [FieldAria, FormField],\n template: `\n <label class=\"inline-flex cursor-pointer items-center gap-2\">\n <input type=\"checkbox\" class=\"peer sr-only\" [id]=\"state().name()\" [formField]=\"node()\" />\n <span\n class=\"relative h-5 w-9 shrink-0 rounded-full bg-neutral/30 transition-colors peer-checked:bg-primary after:absolute after:top-0.5 after:left-0.5 after:h-4 after:w-4 after:rounded-full after:bg-white after:transition-transform after:content-[''] peer-checked:after:translate-x-4\"\n ></span>\n <span class=\"text-sm\">{{ currentLabel() }}</span>\n </label>\n `,\n})\nexport class FieldBoolean {\n readonly field = input.required<BooleanField>();\n readonly tree = input.required<RootTree>();\n\n protected readonly node = computed(() => childTree<boolean>(this.tree(), this.field().key));\n protected readonly state = computed(() => this.node()());\n\n protected readonly currentLabel = computed(() => {\n const on = this.state().value() === true;\n const field = this.field();\n if (on) {\n return field.trueLabel ?? 'Sí';\n }\n return field.falseLabel ?? 'No';\n });\n}\n"],"mappings":";;;;;AAwBA,IAAa,eAAb,MAAa,aAAY;CACd,QAAQ,MAAM,SAAwB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACtC,OAAO,MAAM,SAAoB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAEvB,OAAO,eAAe,UAAmB,KAAK,KAAI,GAAI,KAAK,MAAK,CAAE,CAAC,GAAG,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CACxE,QAAQ,eAAe,KAAK,KAAI,CAAE,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAErC,eAAe,eAAc;EAC9C,MAAM,KAAK,KAAK,MAAK,CAAE,CAAC,MAAK,MAAO;EACpC,MAAM,QAAQ,KAAK,MAAK;EACxB,IAAI,IACF,OAAO,MAAM,aAAa;EAE5B,OAAO,MAAM,cAAc;CAC7B,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAdS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAY,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAZ,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAY,cAAA;EAAA,UAAA;EAAA,QAAA;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,UAVb;;;;;;;;;EAQT,UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MATS;GAAS,UAAA;EAAA,GAAA;GAAA,MAAA;GAAA,MAAE;GAAS,UAAA;GAAA,QAAA,CAAA,WAAA;GAAA,UAAA,CAAA,WAAA;EAAA,CAAA;CAAA,CAAA;;AAWnB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EAbxB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,SAAS,CAAC,WAAW,SAAS;GAC9B,UAAU;;;;;;;;;EASX,CAAA"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { Component, computed, input } from "@angular/core";
|
|
3
|
+
const BASE = "inline-flex cursor-pointer items-center justify-center gap-2 rounded-lg font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:cursor-not-allowed disabled:opacity-50";
|
|
4
|
+
const VARIANTS = {
|
|
5
|
+
primary: "bg-primary text-surface hover:bg-primary/90",
|
|
6
|
+
outline: "border border-neutral/40 bg-surface text-neutral hover:bg-neutral/10",
|
|
7
|
+
danger: "bg-danger text-surface hover:bg-danger/90",
|
|
8
|
+
ghost: "text-neutral hover:bg-neutral/10"
|
|
9
|
+
};
|
|
10
|
+
const SIZES = {
|
|
11
|
+
md: "px-4 py-2 text-sm min-h-11 lg:min-h-0",
|
|
12
|
+
sm: "px-2 py-1 text-xs min-h-11 lg:min-h-0",
|
|
13
|
+
icon: "p-1 min-h-11 min-w-11 lg:min-h-0 lg:min-w-0"
|
|
14
|
+
};
|
|
15
|
+
var Button = class Button {
|
|
16
|
+
variant = input("primary", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
17
|
+
size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
18
|
+
type = input("button", ...ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []);
|
|
19
|
+
disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
|
|
20
|
+
loading = input(false, ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
|
|
21
|
+
classes = computed(() => `${BASE} ${VARIANTS[this.variant()]} ${SIZES[this.size()]}`, ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
23
|
+
minVersion: "12.0.0",
|
|
24
|
+
version: "22.2.3",
|
|
25
|
+
ngImport: i0,
|
|
26
|
+
type: Button,
|
|
27
|
+
deps: [],
|
|
28
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
29
|
+
});
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
31
|
+
minVersion: "17.0.0",
|
|
32
|
+
version: "22.2.3",
|
|
33
|
+
type: Button,
|
|
34
|
+
isStandalone: true,
|
|
35
|
+
selector: "button[app-button]",
|
|
36
|
+
inputs: {
|
|
37
|
+
variant: {
|
|
38
|
+
classPropertyName: "variant",
|
|
39
|
+
publicName: "variant",
|
|
40
|
+
isSignal: true,
|
|
41
|
+
isRequired: false,
|
|
42
|
+
transformFunction: null
|
|
43
|
+
},
|
|
44
|
+
size: {
|
|
45
|
+
classPropertyName: "size",
|
|
46
|
+
publicName: "size",
|
|
47
|
+
isSignal: true,
|
|
48
|
+
isRequired: false,
|
|
49
|
+
transformFunction: null
|
|
50
|
+
},
|
|
51
|
+
type: {
|
|
52
|
+
classPropertyName: "type",
|
|
53
|
+
publicName: "type",
|
|
54
|
+
isSignal: true,
|
|
55
|
+
isRequired: false,
|
|
56
|
+
transformFunction: null
|
|
57
|
+
},
|
|
58
|
+
disabled: {
|
|
59
|
+
classPropertyName: "disabled",
|
|
60
|
+
publicName: "disabled",
|
|
61
|
+
isSignal: true,
|
|
62
|
+
isRequired: false,
|
|
63
|
+
transformFunction: null
|
|
64
|
+
},
|
|
65
|
+
loading: {
|
|
66
|
+
classPropertyName: "loading",
|
|
67
|
+
publicName: "loading",
|
|
68
|
+
isSignal: true,
|
|
69
|
+
isRequired: false,
|
|
70
|
+
transformFunction: null
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
host: { properties: {
|
|
74
|
+
"class": "classes()",
|
|
75
|
+
"type": "type()",
|
|
76
|
+
"disabled": "disabled() || loading()",
|
|
77
|
+
"attr.aria-busy": "loading() || null"
|
|
78
|
+
} },
|
|
79
|
+
ngImport: i0,
|
|
80
|
+
template: `
|
|
81
|
+
@if (loading()) {
|
|
82
|
+
<span
|
|
83
|
+
class="size-4 animate-spin rounded-full border-2 border-current border-t-transparent"
|
|
84
|
+
aria-hidden="true"
|
|
85
|
+
></span>
|
|
86
|
+
}
|
|
87
|
+
<ng-content />
|
|
88
|
+
`,
|
|
89
|
+
isInline: true
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
93
|
+
minVersion: "12.0.0",
|
|
94
|
+
version: "22.2.3",
|
|
95
|
+
ngImport: i0,
|
|
96
|
+
type: Button,
|
|
97
|
+
decorators: [{
|
|
98
|
+
type: Component,
|
|
99
|
+
args: [{
|
|
100
|
+
selector: "button[app-button]",
|
|
101
|
+
host: {
|
|
102
|
+
"[class]": "classes()",
|
|
103
|
+
"[type]": "type()",
|
|
104
|
+
"[disabled]": "disabled() || loading()",
|
|
105
|
+
"[attr.aria-busy]": "loading() || null"
|
|
106
|
+
},
|
|
107
|
+
template: `
|
|
108
|
+
@if (loading()) {
|
|
109
|
+
<span
|
|
110
|
+
class="size-4 animate-spin rounded-full border-2 border-current border-t-transparent"
|
|
111
|
+
aria-hidden="true"
|
|
112
|
+
></span>
|
|
113
|
+
}
|
|
114
|
+
<ng-content />
|
|
115
|
+
`
|
|
116
|
+
}]
|
|
117
|
+
}],
|
|
118
|
+
propDecorators: {
|
|
119
|
+
variant: [{
|
|
120
|
+
type: i0.Input,
|
|
121
|
+
args: [{
|
|
122
|
+
isSignal: true,
|
|
123
|
+
alias: "variant",
|
|
124
|
+
required: false
|
|
125
|
+
}]
|
|
126
|
+
}],
|
|
127
|
+
size: [{
|
|
128
|
+
type: i0.Input,
|
|
129
|
+
args: [{
|
|
130
|
+
isSignal: true,
|
|
131
|
+
alias: "size",
|
|
132
|
+
required: false
|
|
133
|
+
}]
|
|
134
|
+
}],
|
|
135
|
+
type: [{
|
|
136
|
+
type: i0.Input,
|
|
137
|
+
args: [{
|
|
138
|
+
isSignal: true,
|
|
139
|
+
alias: "type",
|
|
140
|
+
required: false
|
|
141
|
+
}]
|
|
142
|
+
}],
|
|
143
|
+
disabled: [{
|
|
144
|
+
type: i0.Input,
|
|
145
|
+
args: [{
|
|
146
|
+
isSignal: true,
|
|
147
|
+
alias: "disabled",
|
|
148
|
+
required: false
|
|
149
|
+
}]
|
|
150
|
+
}],
|
|
151
|
+
loading: [{
|
|
152
|
+
type: i0.Input,
|
|
153
|
+
args: [{
|
|
154
|
+
isSignal: true,
|
|
155
|
+
alias: "loading",
|
|
156
|
+
required: false
|
|
157
|
+
}]
|
|
158
|
+
}]
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
export { Button as t };
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=tinya-code-gas-admin-ui-button-BQjNW8KB.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tinya-code-gas-admin-ui-button-BQjNW8KB.mjs","names":[],"sources":["../../../projects/gas-admin-ui/src/lib/shared/components/button/button.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'outline' | 'danger' | 'ghost';\nexport type ButtonSize = 'md' | 'sm' | 'icon';\n\nconst BASE =\n 'inline-flex cursor-pointer items-center justify-center gap-2 rounded-lg font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:cursor-not-allowed disabled:opacity-50';\n\nconst VARIANTS: Record<ButtonVariant, string> = {\n primary: 'bg-primary text-surface hover:bg-primary/90',\n outline: 'border border-neutral/40 bg-surface text-neutral hover:bg-neutral/10',\n danger: 'bg-danger text-surface hover:bg-danger/90',\n ghost: 'text-neutral hover:bg-neutral/10',\n};\n\n/**\n * Tamaño: el padding y el tip-size viven AQUÍ, no en `BASE`. Dos botones\n * con la misma propiedad (px-4 vs px-2) los resolvería el orden del CSS\n * generado, no el código — el motivo por el que los chips del textarea\n * acabaron con `!important`.\n *\n * Mobile-first: todas arrancan en `min-h-11` (44 px, objetivo táctil de la\n * guía mobile §8.2) y en `lg` relajan al tamaño de escritorio, así el mismo\n * componente cumple la guía táctil sin engordar la UI de escritorio.\n * - `md` → botón de texto (Guardar, Cancelar…)\n * - `sm` → chips y acciones compactas (texto `xs`)\n * - `icon` → sólo glifo, cuadrado (toolbars de filas, arrastre)\n */\nconst SIZES: Record<ButtonSize, string> = {\n md: 'px-4 py-2 text-sm min-h-11 lg:min-h-0',\n sm: 'px-2 py-1 text-xs min-h-11 lg:min-h-0',\n icon: 'p-1 min-h-11 min-w-11 lg:min-h-0 lg:min-w-0',\n};\n\n/**\n * Botón nativo (selector por atributo, patrón Material `button[mat-button]`):\n * conserva semántica y estilos de `<button>` y las clases del consumidor.\n */\n@Component({\n selector: 'button[app-button]',\n host: {\n '[class]': 'classes()',\n '[type]': 'type()',\n '[disabled]': 'disabled() || loading()',\n '[attr.aria-busy]': 'loading() || null',\n },\n template: `\n @if (loading()) {\n <span\n class=\"size-4 animate-spin rounded-full border-2 border-current border-t-transparent\"\n aria-hidden=\"true\"\n ></span>\n }\n <ng-content />\n `,\n})\nexport class Button {\n readonly variant = input<ButtonVariant>('primary');\n readonly size = input<ButtonSize>('md');\n readonly type = input<'button' | 'submit'>('button');\n readonly disabled = input(false);\n readonly loading = input(false);\n\n readonly classes = computed(() => `${BASE} ${VARIANTS[this.variant()]} ${SIZES[this.size()]}`);\n}\n"],"mappings":";;AAKA,MAAM,OACJ;AAEF,MAAM,WAA0C;CAC9C,SAAS;CACT,SAAS;CACT,QAAQ;CACR,OAAO;AACR;AAeD,MAAM,QAAoC;CACxC,IAAI;CACJ,IAAI;CACJ,MAAM;AACP;AAwBD,IAAa,SAAb,MAAa,OAAM;CACR,UAAU,MAAqB,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACzC,OAAO,MAAkB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAC9B,OAAO,MAA2B,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAC3C,WAAW,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACvB,UAAU,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAEtB,UAAU,eAAe,GAAG,KAAI,GAAI,SAAS,KAAK,QAAO,GAAG,GAAI,MAAM,KAAK,KAAI,MAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAPnF,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAM,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAN,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAM,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,MAAA,EAAA,YAAA;GAAA,SAAA;GAAA,QAAA;GAAA,YAAA;GAAA,kBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UAVP;;;;;;;;;EAQT,UAAA;CAAA,CAAA;;AAEU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAM,YAAA,CAAA;EAlBlB,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IACJ,WAAW;IACX,UAAU;IACV,cAAc;IACd,oBAAoB;GACrB;GACD,UAAU;;;;;;;;;EASX,CAAA"}
|