@gnggln/ng-ui-system 1.0.0-alpha.2 → 1.0.0-alpha.21
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/accordion/entry-accordion.d.ts +4 -0
- package/accordion/index.d.ts +5 -0
- package/accordion/lib/components/accordion/accordion.component.d.ts +125 -0
- package/accordion/lib/components/accordion/accordion.types.d.ts +64 -0
- package/accordion/lib/components/accordion/index.d.ts +2 -0
- package/accordion/lib/core/types/index.d.ts +133 -0
- package/base-layout/entry-base-layout.d.ts +4 -0
- package/base-layout/index.d.ts +5 -0
- package/base-layout/lib/components/base-layout/base-layout.component.d.ts +108 -0
- package/base-layout/lib/components/base-layout/base-layout.types.d.ts +40 -0
- package/base-layout/lib/components/base-layout/index.d.ts +13 -0
- package/base-layout/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/base-layout/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/base-layout/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/base-layout/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/base-layout/lib/components/button/button-area.component.d.ts +93 -0
- package/base-layout/lib/components/button/button.component.d.ts +61 -0
- package/base-layout/lib/components/button/button.types.d.ts +75 -0
- package/base-layout/lib/components/page-header/breadcrumb.service.d.ts +96 -0
- package/base-layout/lib/components/page-header/page-header.component.d.ts +59 -0
- package/base-layout/lib/components/page-header/page-header.types.d.ts +96 -0
- package/base-layout/lib/core/types/index.d.ts +133 -0
- package/blackbox/entry-blackbox.d.ts +4 -0
- package/blackbox/index.d.ts +5 -0
- package/blackbox/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
- package/blackbox/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
- package/blackbox/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/blackbox/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
- package/blackbox/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/blackbox/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
- package/blackbox/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/blackbox/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/blackbox/lib/components/blackbox/index.d.ts +23 -0
- package/blackbox/lib/components/blackbox/ui-track.directive.d.ts +20 -0
- package/blackbox/lib/components/button/button-area.component.d.ts +93 -0
- package/blackbox/lib/components/button/button.component.d.ts +61 -0
- package/blackbox/lib/components/button/button.types.d.ts +75 -0
- package/blackbox/lib/components/button/index.d.ts +15 -0
- package/blackbox/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/blackbox/lib/components/modal/index.d.ts +4 -0
- package/blackbox/lib/components/modal/modal.component.d.ts +44 -0
- package/blackbox/lib/components/modal/modal.service.d.ts +93 -0
- package/blackbox/lib/components/modal/modal.types.d.ts +110 -0
- package/blackbox/lib/core/types/index.d.ts +133 -0
- package/button/entry-button.d.ts +4 -0
- package/button/index.d.ts +5 -0
- package/button/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/button/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/button/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/button/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/button/lib/components/button/button-area.component.d.ts +93 -0
- package/button/lib/components/button/button.component.d.ts +61 -0
- package/button/lib/components/button/button.types.d.ts +75 -0
- package/button/lib/components/button/index.d.ts +15 -0
- package/button/lib/core/types/index.d.ts +133 -0
- package/core/entry-core.d.ts +5 -0
- package/core/index.d.ts +5 -0
- package/core/lib/core/types/index.d.ts +133 -0
- package/core/lib/core/utils/index.d.ts +60 -0
- package/crud-table/entry-crud-table.d.ts +4 -0
- package/crud-table/index.d.ts +5 -0
- package/crud-table/lib/components/accordion/accordion.component.d.ts +125 -0
- package/crud-table/lib/components/accordion/accordion.types.d.ts +64 -0
- package/crud-table/lib/components/accordion/index.d.ts +2 -0
- package/crud-table/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/crud-table/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/crud-table/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/crud-table/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/crud-table/lib/components/button/button-area.component.d.ts +93 -0
- package/crud-table/lib/components/button/button.component.d.ts +61 -0
- package/crud-table/lib/components/button/button.types.d.ts +75 -0
- package/crud-table/lib/components/button/index.d.ts +15 -0
- package/crud-table/lib/components/crud-table/crud-table.component.d.ts +143 -0
- package/crud-table/lib/components/crud-table/crud-table.types.d.ts +207 -0
- package/crud-table/lib/components/crud-table/index.d.ts +15 -0
- package/crud-table/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
- package/crud-table/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
- package/crud-table/lib/components/form-builder/form-builder.component.d.ts +279 -0
- package/crud-table/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
- package/crud-table/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
- package/crud-table/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
- package/crud-table/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
- package/crud-table/lib/components/form-builder/services/location.service.d.ts +83 -0
- package/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
- package/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
- package/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
- package/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
- package/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
- package/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
- package/crud-table/lib/components/form-builder/types/condition.types.d.ts +51 -0
- package/crud-table/lib/components/form-builder/types/field.types.d.ts +330 -0
- package/crud-table/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
- package/crud-table/lib/components/form-builder/types/schema.types.d.ts +304 -0
- package/crud-table/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
- package/crud-table/lib/components/form-builder/types/validation.types.d.ts +179 -0
- package/crud-table/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/crud-table/lib/components/modal/modal.service.d.ts +93 -0
- package/crud-table/lib/components/modal/modal.types.d.ts +110 -0
- package/crud-table/lib/core/logging/logger.config.d.ts +18 -0
- package/crud-table/lib/core/logging/logger.service.d.ts +75 -0
- package/crud-table/lib/core/logging/logger.types.d.ts +70 -0
- package/crud-table/lib/core/types/index.d.ts +133 -0
- package/esm2022/accordion/entry-accordion.mjs +5 -0
- package/esm2022/accordion/gnggln-ng-ui-system-accordion.mjs +5 -0
- package/esm2022/accordion/lib/components/accordion/accordion.component.mjs +398 -0
- package/esm2022/accordion/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/accordion/lib/components/accordion/index.mjs +2 -0
- package/esm2022/accordion/lib/core/types/index.mjs +6 -0
- package/esm2022/base-layout/entry-base-layout.mjs +5 -0
- package/esm2022/base-layout/gnggln-ng-ui-system-base-layout.mjs +5 -0
- package/esm2022/base-layout/lib/components/base-layout/base-layout.component.mjs +272 -0
- package/esm2022/base-layout/lib/components/base-layout/base-layout.types.mjs +6 -0
- package/esm2022/base-layout/lib/components/base-layout/index.mjs +14 -0
- package/esm2022/base-layout/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/base-layout/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/base-layout/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/base-layout/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/base-layout/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/base-layout/lib/components/button/button.component.mjs +180 -0
- package/esm2022/base-layout/lib/components/button/button.types.mjs +6 -0
- package/esm2022/base-layout/lib/components/page-header/breadcrumb.service.mjs +243 -0
- package/esm2022/base-layout/lib/components/page-header/page-header.component.mjs +243 -0
- package/esm2022/base-layout/lib/components/page-header/page-header.types.mjs +21 -0
- package/esm2022/base-layout/lib/core/types/index.mjs +6 -0
- package/esm2022/blackbox/entry-blackbox.mjs +5 -0
- package/esm2022/blackbox/gnggln-ng-ui-system-blackbox.mjs +5 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/blackbox/lib/components/blackbox/index.mjs +27 -0
- package/esm2022/blackbox/lib/components/blackbox/ui-track.directive.mjs +69 -0
- package/esm2022/blackbox/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/blackbox/lib/components/button/button.component.mjs +180 -0
- package/esm2022/blackbox/lib/components/button/button.types.mjs +6 -0
- package/esm2022/blackbox/lib/components/button/index.mjs +16 -0
- package/esm2022/blackbox/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/blackbox/lib/components/modal/index.mjs +4 -0
- package/esm2022/blackbox/lib/components/modal/modal.component.mjs +139 -0
- package/esm2022/blackbox/lib/components/modal/modal.service.mjs +197 -0
- package/esm2022/blackbox/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/blackbox/lib/core/types/index.mjs +6 -0
- package/esm2022/button/entry-button.mjs +5 -0
- package/esm2022/button/gnggln-ng-ui-system-button.mjs +5 -0
- package/esm2022/button/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/button/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/button/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/button/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/button/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/button/lib/components/button/button.component.mjs +180 -0
- package/esm2022/button/lib/components/button/button.types.mjs +6 -0
- package/esm2022/button/lib/components/button/index.mjs +16 -0
- package/esm2022/button/lib/core/types/index.mjs +6 -0
- package/esm2022/core/entry-core.mjs +6 -0
- package/esm2022/core/gnggln-ng-ui-system-core.mjs +5 -0
- package/esm2022/core/lib/core/types/index.mjs +6 -0
- package/esm2022/core/lib/core/utils/index.mjs +102 -0
- package/esm2022/crud-table/entry-crud-table.mjs +5 -0
- package/esm2022/crud-table/gnggln-ng-ui-system-crud-table.mjs +5 -0
- package/esm2022/crud-table/lib/components/accordion/accordion.component.mjs +398 -0
- package/esm2022/crud-table/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/accordion/index.mjs +2 -0
- package/esm2022/crud-table/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/crud-table/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/crud-table/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/crud-table/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/crud-table/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/crud-table/lib/components/button/button.component.mjs +180 -0
- package/esm2022/crud-table/lib/components/button/button.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/button/index.mjs +16 -0
- package/esm2022/crud-table/lib/components/crud-table/crud-table.component.mjs +789 -0
- package/esm2022/crud-table/lib/components/crud-table/crud-table.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/crud-table/index.mjs +16 -0
- package/esm2022/crud-table/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
- package/esm2022/crud-table/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
- package/esm2022/crud-table/lib/components/form-builder/form-builder.component.mjs +1351 -0
- package/esm2022/crud-table/lib/components/form-builder/services/form-condition.service.mjs +132 -0
- package/esm2022/crud-table/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
- package/esm2022/crud-table/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
- package/esm2022/crud-table/lib/components/form-builder/services/form-validation.service.mjs +381 -0
- package/esm2022/crud-table/lib/components/form-builder/services/location.service.mjs +141 -0
- package/esm2022/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
- package/esm2022/crud-table/lib/components/form-builder/types/condition.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/field.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/schema.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/territoriale.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/validation.types.mjs +10 -0
- package/esm2022/crud-table/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/crud-table/lib/components/modal/modal.service.mjs +197 -0
- package/esm2022/crud-table/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/crud-table/lib/core/logging/logger.config.mjs +18 -0
- package/esm2022/crud-table/lib/core/logging/logger.service.mjs +295 -0
- package/esm2022/crud-table/lib/core/logging/logger.types.mjs +7 -0
- package/esm2022/crud-table/lib/core/types/index.mjs +6 -0
- package/esm2022/crud-table/lib/sources/location-data.opt.json +8942 -0
- package/esm2022/crud-table/lib/sources/nazioni.opt.json +215 -0
- package/esm2022/form-builder/entry-form-builder.mjs +5 -0
- package/esm2022/form-builder/gnggln-ng-ui-system-form-builder.mjs +5 -0
- package/esm2022/form-builder/lib/components/accordion/accordion.component.mjs +398 -0
- package/esm2022/form-builder/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/accordion/index.mjs +2 -0
- package/esm2022/form-builder/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/form-builder/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/form-builder/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/form-builder/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/form-builder/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/form-builder/lib/components/button/button.component.mjs +180 -0
- package/esm2022/form-builder/lib/components/button/button.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/button/index.mjs +16 -0
- package/esm2022/form-builder/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
- package/esm2022/form-builder/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
- package/esm2022/form-builder/lib/components/form-builder/form-builder.component.mjs +1351 -0
- package/esm2022/form-builder/lib/components/form-builder/form-wizard.component.mjs +1064 -0
- package/esm2022/form-builder/lib/components/form-builder/index.mjs +24 -0
- package/esm2022/form-builder/lib/components/form-builder/services/form-condition.service.mjs +132 -0
- package/esm2022/form-builder/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
- package/esm2022/form-builder/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
- package/esm2022/form-builder/lib/components/form-builder/services/form-validation.service.mjs +381 -0
- package/esm2022/form-builder/lib/components/form-builder/services/location.service.mjs +141 -0
- package/esm2022/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
- package/esm2022/form-builder/lib/components/form-builder/services/wizard-sync.service.mjs +84 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
- package/esm2022/form-builder/lib/components/form-builder/types/condition.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/field.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/index.mjs +3 -0
- package/esm2022/form-builder/lib/components/form-builder/types/schema.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/territoriale.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/validation.types.mjs +10 -0
- package/esm2022/form-builder/lib/core/logging/logger.config.mjs +18 -0
- package/esm2022/form-builder/lib/core/logging/logger.service.mjs +295 -0
- package/esm2022/form-builder/lib/core/logging/logger.types.mjs +7 -0
- package/esm2022/form-builder/lib/core/types/index.mjs +6 -0
- package/esm2022/form-builder/lib/sources/location-data.opt.json +8942 -0
- package/esm2022/form-builder/lib/sources/nazioni.opt.json +215 -0
- package/esm2022/form-builder-editor/entry-form-builder-editor.mjs +5 -0
- package/esm2022/form-builder-editor/gnggln-ng-ui-system-form-builder-editor.mjs +5 -0
- package/esm2022/form-builder-editor/lib/components/accordion/accordion.component.mjs +398 -0
- package/esm2022/form-builder-editor/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/accordion/index.mjs +2 -0
- package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/form-builder-editor/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/form-builder-editor/lib/components/button/button.component.mjs +180 -0
- package/esm2022/form-builder-editor/lib/components/button/button.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/button/index.mjs +16 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/form-builder.component.mjs +1351 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/form-condition.service.mjs +132 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/form-validation.service.mjs +381 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/location.service.mjs +141 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/condition.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/field.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/index.mjs +3 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/schema.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/territoriale.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/validation.types.mjs +10 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.mjs +730 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.mjs +56 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/index.mjs +23 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.mjs +190 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.mjs +324 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.mjs +188 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.mjs +667 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.mjs +317 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.mjs +611 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.mjs +267 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.mjs +276 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.mjs +323 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +238 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +473 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.mjs +473 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/types/editor.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/form-builder-editor/lib/components/modal/index.mjs +4 -0
- package/esm2022/form-builder-editor/lib/components/modal/modal.component.mjs +139 -0
- package/esm2022/form-builder-editor/lib/components/modal/modal.service.mjs +197 -0
- package/esm2022/form-builder-editor/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/core/logging/logger.config.mjs +18 -0
- package/esm2022/form-builder-editor/lib/core/logging/logger.service.mjs +295 -0
- package/esm2022/form-builder-editor/lib/core/logging/logger.types.mjs +7 -0
- package/esm2022/form-builder-editor/lib/core/types/index.mjs +6 -0
- package/esm2022/form-builder-editor/lib/sources/location-data.opt.json +8942 -0
- package/esm2022/form-builder-editor/lib/sources/nazioni.opt.json +215 -0
- package/esm2022/http/entry-http.mjs +5 -0
- package/esm2022/http/gnggln-ng-ui-system-http.mjs +5 -0
- package/esm2022/http/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/http/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/http/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/http/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/http/lib/components/http/http-message.handler.mjs +143 -0
- package/esm2022/http/lib/components/http/http.service.mjs +228 -0
- package/esm2022/http/lib/components/http/http.tokens.mjs +29 -0
- package/esm2022/http/lib/components/http/http.types.mjs +6 -0
- package/esm2022/http/lib/components/http/index.mjs +19 -0
- package/esm2022/http/lib/components/layout-builder/layout-builder.types.mjs +9 -0
- package/esm2022/http/lib/components/layout-builder/layout.service.mjs +239 -0
- package/esm2022/http/lib/components/toast/toast-container.component.mjs +80 -0
- package/esm2022/http/lib/components/toast/toast.component.mjs +151 -0
- package/esm2022/http/lib/components/toast/toast.service.mjs +156 -0
- package/esm2022/http/lib/components/toast/toast.types.mjs +12 -0
- package/esm2022/http/lib/core/types/index.mjs +6 -0
- package/esm2022/http/lib/core/utils/index.mjs +102 -0
- package/esm2022/layout-builder/entry-layout-builder.mjs +5 -0
- package/esm2022/layout-builder/gnggln-ng-ui-system-layout-builder.mjs +5 -0
- package/esm2022/layout-builder/lib/components/layout-builder/index.mjs +18 -0
- package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.component.mjs +1804 -0
- package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.types.mjs +9 -0
- package/esm2022/layout-builder/lib/components/layout-builder/layout.service.mjs +239 -0
- package/esm2022/layout-builder/lib/core/types/index.mjs +6 -0
- package/esm2022/lib/components/accordion/accordion.component.mjs +106 -61
- package/esm2022/lib/components/accordion/accordion.types.mjs +1 -1
- package/esm2022/lib/components/base-layout/base-layout.component.mjs +88 -34
- package/esm2022/lib/components/base-layout/base-layout.types.mjs +1 -1
- package/esm2022/lib/components/base-layout/index.mjs +1 -1
- package/esm2022/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
- package/esm2022/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
- package/esm2022/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
- package/esm2022/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
- package/esm2022/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/lib/components/blackbox/index.mjs +27 -0
- package/esm2022/lib/components/blackbox/ui-track.directive.mjs +69 -0
- package/esm2022/lib/components/button/button-area.component.mjs +16 -2
- package/esm2022/lib/components/button/button.component.mjs +23 -7
- package/esm2022/lib/components/button/button.types.mjs +1 -1
- package/esm2022/lib/components/crud-table/crud-table.component.mjs +14 -14
- package/esm2022/lib/components/form-builder/form-builder.component.mjs +710 -183
- package/esm2022/lib/components/form-builder/form-wizard.component.mjs +789 -235
- package/esm2022/lib/components/form-builder/index.mjs +7 -2
- package/esm2022/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
- package/esm2022/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
- package/esm2022/lib/components/form-builder/services/location.service.mjs +4 -3
- package/esm2022/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
- package/esm2022/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +142 -113
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
- package/esm2022/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
- package/esm2022/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +3 -3
- package/esm2022/lib/components/form-builder/types/field.types.mjs +1 -1
- package/esm2022/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/index.mjs +3 -2
- package/esm2022/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/lib/components/form-builder/types/validation.types.mjs +6 -2
- package/esm2022/lib/components/form-builder-editor/form-builder-editor.component.mjs +3 -3
- package/esm2022/lib/components/form-builder-editor/index.mjs +3 -1
- package/esm2022/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +2 -2
- package/esm2022/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +2 -1
- package/esm2022/lib/components/http/http-message.handler.mjs +143 -0
- package/esm2022/lib/components/http/http.service.mjs +228 -0
- package/esm2022/lib/components/http/http.tokens.mjs +29 -0
- package/esm2022/lib/components/http/http.types.mjs +6 -0
- package/esm2022/lib/components/http/index.mjs +19 -0
- package/esm2022/lib/components/layout-builder/layout-builder.component.mjs +27 -15
- package/esm2022/lib/components/modal/confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/components/modal/modal.service.mjs +5 -2
- package/esm2022/lib/components/page-header/breadcrumb.service.mjs +5 -4
- package/esm2022/lib/components/table/paginated-table.component.mjs +17 -3
- package/esm2022/lib/components/table/table.types.mjs +1 -1
- package/esm2022/lib/components/toast/index.mjs +18 -0
- package/esm2022/lib/components/toast/toast-container.component.mjs +80 -0
- package/esm2022/lib/components/toast/toast.component.mjs +151 -0
- package/esm2022/lib/components/toast/toast.service.mjs +156 -0
- package/esm2022/lib/components/toast/toast.types.mjs +12 -0
- package/esm2022/lib/core/logging/index.mjs +10 -0
- package/esm2022/lib/core/logging/logger.config.mjs +18 -0
- package/esm2022/lib/core/logging/logger.service.mjs +295 -0
- package/esm2022/lib/core/logging/logger.types.mjs +7 -0
- package/esm2022/lib/core/types/index.mjs +1 -1
- package/esm2022/lib/core/utils/index.mjs +50 -1
- package/esm2022/lib/version/ng-ui-system-version.mjs +12 -0
- package/esm2022/modal/entry-modal.mjs +5 -0
- package/esm2022/modal/gnggln-ng-ui-system-modal.mjs +5 -0
- package/esm2022/modal/lib/components/button/button.component.mjs +180 -0
- package/esm2022/modal/lib/components/button/button.types.mjs +6 -0
- package/esm2022/modal/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/modal/lib/components/modal/index.mjs +4 -0
- package/esm2022/modal/lib/components/modal/modal.component.mjs +139 -0
- package/esm2022/modal/lib/components/modal/modal.service.mjs +197 -0
- package/esm2022/modal/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/modal/lib/core/types/index.mjs +6 -0
- package/esm2022/page-header/entry-page-header.mjs +5 -0
- package/esm2022/page-header/gnggln-ng-ui-system-page-header.mjs +5 -0
- package/esm2022/page-header/lib/components/page-header/breadcrumb.service.mjs +243 -0
- package/esm2022/page-header/lib/components/page-header/index.mjs +20 -0
- package/esm2022/page-header/lib/components/page-header/page-header.component.mjs +243 -0
- package/esm2022/page-header/lib/components/page-header/page-header.types.mjs +21 -0
- package/esm2022/public-api.mjs +17 -8
- package/esm2022/table/entry-table.mjs +5 -0
- package/esm2022/table/gnggln-ng-ui-system-table.mjs +5 -0
- package/esm2022/table/lib/components/table/index.mjs +2 -0
- package/esm2022/table/lib/components/table/paginated-table.component.mjs +421 -0
- package/esm2022/table/lib/components/table/table.types.mjs +6 -0
- package/esm2022/table/lib/core/utils/index.mjs +102 -0
- package/esm2022/toast/entry-toast.mjs +5 -0
- package/esm2022/toast/gnggln-ng-ui-system-toast.mjs +5 -0
- package/esm2022/toast/lib/components/toast/index.mjs +18 -0
- package/esm2022/toast/lib/components/toast/toast-container.component.mjs +80 -0
- package/esm2022/toast/lib/components/toast/toast.component.mjs +151 -0
- package/esm2022/toast/lib/components/toast/toast.service.mjs +156 -0
- package/esm2022/toast/lib/components/toast/toast.types.mjs +12 -0
- package/esm2022/toast/lib/core/types/index.mjs +6 -0
- package/esm2022/toast/lib/core/utils/index.mjs +102 -0
- package/fesm2022/gnggln-ng-ui-system-accordion.mjs +409 -0
- package/fesm2022/gnggln-ng-ui-system-accordion.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-base-layout.mjs +1905 -0
- package/fesm2022/gnggln-ng-ui-system-base-layout.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-blackbox.mjs +2829 -0
- package/fesm2022/gnggln-ng-ui-system-blackbox.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-button.mjs +1148 -0
- package/fesm2022/gnggln-ng-ui-system-button.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-core.mjs +117 -0
- package/fesm2022/gnggln-ng-ui-system-core.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +49600 -0
- package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +54332 -0
- package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +49609 -0
- package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-http.mjs +1878 -0
- package/fesm2022/gnggln-ng-ui-system-http.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs +2064 -0
- package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-modal.mjs +664 -0
- package/fesm2022/gnggln-ng-ui-system-modal.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-page-header.mjs +526 -0
- package/fesm2022/gnggln-ng-ui-system-page-header.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-table.mjs +533 -0
- package/fesm2022/gnggln-ng-ui-system-table.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-toast.mjs +516 -0
- package/fesm2022/gnggln-ng-ui-system-toast.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system.mjs +10068 -4234
- package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
- package/form-builder/entry-form-builder.d.ts +4 -0
- package/form-builder/index.d.ts +5 -0
- package/form-builder/lib/components/accordion/accordion.component.d.ts +125 -0
- package/form-builder/lib/components/accordion/accordion.types.d.ts +64 -0
- package/form-builder/lib/components/accordion/index.d.ts +2 -0
- package/form-builder/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/form-builder/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/form-builder/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/form-builder/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/form-builder/lib/components/button/button-area.component.d.ts +93 -0
- package/form-builder/lib/components/button/button.component.d.ts +61 -0
- package/form-builder/lib/components/button/button.types.d.ts +75 -0
- package/form-builder/lib/components/button/index.d.ts +15 -0
- package/form-builder/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
- package/form-builder/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
- package/form-builder/lib/components/form-builder/form-builder.component.d.ts +279 -0
- package/form-builder/lib/components/form-builder/form-wizard.component.d.ts +172 -0
- package/form-builder/lib/components/form-builder/index.d.ts +19 -0
- package/form-builder/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
- package/form-builder/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
- package/form-builder/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
- package/form-builder/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
- package/form-builder/lib/components/form-builder/services/location.service.d.ts +83 -0
- package/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
- package/form-builder/lib/components/form-builder/services/wizard-sync.service.d.ts +63 -0
- package/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
- package/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
- package/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
- package/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
- package/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
- package/form-builder/lib/components/form-builder/types/condition.types.d.ts +51 -0
- package/form-builder/lib/components/form-builder/types/field.types.d.ts +330 -0
- package/form-builder/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
- package/form-builder/lib/components/form-builder/types/index.d.ts +6 -0
- package/form-builder/lib/components/form-builder/types/schema.types.d.ts +304 -0
- package/form-builder/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
- package/form-builder/lib/components/form-builder/types/validation.types.d.ts +179 -0
- package/form-builder/lib/core/logging/logger.config.d.ts +18 -0
- package/form-builder/lib/core/logging/logger.service.d.ts +75 -0
- package/form-builder/lib/core/logging/logger.types.d.ts +70 -0
- package/form-builder/lib/core/types/index.d.ts +133 -0
- package/form-builder-editor/entry-form-builder-editor.d.ts +4 -0
- package/form-builder-editor/index.d.ts +5 -0
- package/form-builder-editor/lib/components/accordion/accordion.component.d.ts +125 -0
- package/form-builder-editor/lib/components/accordion/accordion.types.d.ts +64 -0
- package/form-builder-editor/lib/components/accordion/index.d.ts +2 -0
- package/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/form-builder-editor/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/form-builder-editor/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/form-builder-editor/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/form-builder-editor/lib/components/button/button-area.component.d.ts +93 -0
- package/form-builder-editor/lib/components/button/button.component.d.ts +61 -0
- package/form-builder-editor/lib/components/button/button.types.d.ts +75 -0
- package/form-builder-editor/lib/components/button/index.d.ts +15 -0
- package/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
- package/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
- package/form-builder-editor/lib/components/form-builder/form-builder.component.d.ts +279 -0
- package/form-builder-editor/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
- package/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
- package/form-builder-editor/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
- package/form-builder-editor/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
- package/form-builder-editor/lib/components/form-builder/services/location.service.d.ts +83 -0
- package/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
- package/form-builder-editor/lib/components/form-builder/types/condition.types.d.ts +51 -0
- package/form-builder-editor/lib/components/form-builder/types/field.types.d.ts +330 -0
- package/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
- package/form-builder-editor/lib/components/form-builder/types/index.d.ts +6 -0
- package/form-builder-editor/lib/components/form-builder/types/schema.types.d.ts +304 -0
- package/form-builder-editor/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
- package/form-builder-editor/lib/components/form-builder/types/validation.types.d.ts +179 -0
- package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.d.ts +117 -0
- package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.d.ts +38 -0
- package/form-builder-editor/lib/components/form-builder-editor/index.d.ts +17 -0
- package/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
- package/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.d.ts +42 -0
- package/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.d.ts +66 -0
- package/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.d.ts +28 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.d.ts +139 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.d.ts +43 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.d.ts +83 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.d.ts +40 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.d.ts +51 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.d.ts +63 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.d.ts +68 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.d.ts +82 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.d.ts +112 -0
- package/form-builder-editor/lib/components/form-builder-editor/types/editor.types.d.ts +124 -0
- package/form-builder-editor/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/form-builder-editor/lib/components/modal/index.d.ts +4 -0
- package/form-builder-editor/lib/components/modal/modal.component.d.ts +44 -0
- package/form-builder-editor/lib/components/modal/modal.service.d.ts +93 -0
- package/form-builder-editor/lib/components/modal/modal.types.d.ts +110 -0
- package/form-builder-editor/lib/core/logging/logger.config.d.ts +18 -0
- package/form-builder-editor/lib/core/logging/logger.service.d.ts +75 -0
- package/form-builder-editor/lib/core/logging/logger.types.d.ts +70 -0
- package/form-builder-editor/lib/core/types/index.d.ts +133 -0
- package/http/entry-http.d.ts +4 -0
- package/http/index.d.ts +5 -0
- package/http/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/http/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/http/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/http/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/http/lib/components/http/http-message.handler.d.ts +59 -0
- package/http/lib/components/http/http.service.d.ts +98 -0
- package/http/lib/components/http/http.tokens.d.ts +29 -0
- package/http/lib/components/http/http.types.d.ts +50 -0
- package/http/lib/components/http/index.d.ts +17 -0
- package/http/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
- package/http/lib/components/layout-builder/layout.service.d.ts +100 -0
- package/http/lib/components/toast/toast-container.component.d.ts +27 -0
- package/http/lib/components/toast/toast.component.d.ts +37 -0
- package/http/lib/components/toast/toast.service.d.ts +39 -0
- package/http/lib/components/toast/toast.types.d.ts +52 -0
- package/http/lib/core/types/index.d.ts +133 -0
- package/http/lib/core/utils/index.d.ts +60 -0
- package/layout-builder/entry-layout-builder.d.ts +4 -0
- package/layout-builder/index.d.ts +5 -0
- package/layout-builder/lib/components/layout-builder/index.d.ts +16 -0
- package/layout-builder/lib/components/layout-builder/layout-builder.component.d.ts +85 -0
- package/layout-builder/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
- package/layout-builder/lib/components/layout-builder/layout.service.d.ts +100 -0
- package/layout-builder/lib/core/types/index.d.ts +133 -0
- package/lib/components/accordion/accordion.component.d.ts +10 -3
- package/lib/components/accordion/accordion.types.d.ts +2 -0
- package/lib/components/base-layout/base-layout.component.d.ts +36 -11
- package/lib/components/base-layout/base-layout.types.d.ts +14 -0
- package/lib/components/base-layout/index.d.ts +1 -1
- package/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
- package/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
- package/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
- package/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
- package/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/lib/components/blackbox/index.d.ts +23 -0
- package/lib/components/blackbox/ui-track.directive.d.ts +20 -0
- package/lib/components/button/button-area.component.d.ts +6 -1
- package/lib/components/button/button.component.d.ts +8 -2
- package/lib/components/button/button.types.d.ts +5 -0
- package/lib/components/form-builder/form-builder.component.d.ts +125 -29
- package/lib/components/form-builder/form-wizard.component.d.ts +89 -4
- package/lib/components/form-builder/index.d.ts +7 -1
- package/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
- package/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
- package/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
- package/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +9 -6
- package/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
- package/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
- package/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
- package/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
- package/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
- package/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
- package/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
- package/lib/components/form-builder/types/field.types.d.ts +48 -6
- package/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
- package/lib/components/form-builder/types/index.d.ts +4 -3
- package/lib/components/form-builder/types/schema.types.d.ts +83 -6
- package/lib/components/form-builder/types/validation.types.d.ts +5 -0
- package/lib/components/form-builder-editor/index.d.ts +2 -0
- package/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
- package/lib/components/http/http-message.handler.d.ts +59 -0
- package/lib/components/http/http.service.d.ts +98 -0
- package/lib/components/http/http.tokens.d.ts +29 -0
- package/lib/components/http/http.types.d.ts +50 -0
- package/lib/components/http/index.d.ts +17 -0
- package/lib/components/page-header/breadcrumb.service.d.ts +2 -2
- package/lib/components/table/table.types.d.ts +5 -0
- package/lib/components/toast/index.d.ts +17 -0
- package/lib/components/toast/toast-container.component.d.ts +27 -0
- package/lib/components/toast/toast.component.d.ts +37 -0
- package/lib/components/toast/toast.service.d.ts +39 -0
- package/lib/components/toast/toast.types.d.ts +52 -0
- package/lib/core/logging/index.d.ts +8 -0
- package/lib/core/logging/logger.config.d.ts +18 -0
- package/lib/core/logging/logger.service.d.ts +75 -0
- package/lib/core/logging/logger.types.d.ts +70 -0
- package/lib/core/types/index.d.ts +76 -0
- package/lib/core/utils/index.d.ts +31 -0
- package/lib/version/ng-ui-system-version.d.ts +9 -0
- package/modal/entry-modal.d.ts +4 -0
- package/modal/index.d.ts +5 -0
- package/modal/lib/components/button/button.component.d.ts +61 -0
- package/modal/lib/components/button/button.types.d.ts +75 -0
- package/modal/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/modal/lib/components/modal/index.d.ts +4 -0
- package/modal/lib/components/modal/modal.component.d.ts +44 -0
- package/modal/lib/components/modal/modal.service.d.ts +93 -0
- package/modal/lib/components/modal/modal.types.d.ts +110 -0
- package/modal/lib/core/types/index.d.ts +133 -0
- package/package.json +93 -8
- package/page-header/entry-page-header.d.ts +4 -0
- package/page-header/index.d.ts +5 -0
- package/page-header/lib/components/page-header/breadcrumb.service.d.ts +96 -0
- package/page-header/lib/components/page-header/index.d.ts +16 -0
- package/page-header/lib/components/page-header/page-header.component.d.ts +59 -0
- package/page-header/lib/components/page-header/page-header.types.d.ts +96 -0
- package/public-api.d.ts +11 -6
- package/table/entry-table.d.ts +4 -0
- package/table/index.d.ts +5 -0
- package/table/lib/components/table/index.d.ts +2 -0
- package/table/lib/components/table/paginated-table.component.d.ts +85 -0
- package/table/lib/components/table/table.types.d.ts +86 -0
- package/table/lib/core/utils/index.d.ts +60 -0
- package/toast/entry-toast.d.ts +4 -0
- package/toast/index.d.ts +5 -0
- package/toast/lib/components/toast/index.d.ts +17 -0
- package/toast/lib/components/toast/toast-container.component.d.ts +27 -0
- package/toast/lib/components/toast/toast.component.d.ts +37 -0
- package/toast/lib/components/toast/toast.service.d.ts +39 -0
- package/toast/lib/components/toast/toast.types.d.ts +52 -0
- package/toast/lib/core/types/index.d.ts +133 -0
- package/toast/lib/core/utils/index.d.ts +60 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy, ViewEncapsulation, signal, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { LucideAngularModule } from 'lucide-angular';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "lucide-angular";
|
|
6
|
+
/**
|
|
7
|
+
* Componente file input standalone con drag & drop,
|
|
8
|
+
* anteprima, validazione e supporto multiplo.
|
|
9
|
+
*
|
|
10
|
+
* Implementa `ControlValueAccessor` per integrazione
|
|
11
|
+
* diretta con Angular Reactive Forms.
|
|
12
|
+
*
|
|
13
|
+
* @selector ui-file-input
|
|
14
|
+
*/
|
|
15
|
+
export class UiFileInputComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
/** File rimosso dalla lista. */
|
|
18
|
+
this.fileRemoved = new EventEmitter();
|
|
19
|
+
/** Errore di validazione file. */
|
|
20
|
+
this.validationError = new EventEmitter();
|
|
21
|
+
// ── Stato interno (signals) ──
|
|
22
|
+
this.files = signal([]);
|
|
23
|
+
this.disabled = signal(false);
|
|
24
|
+
this.isDragOver = signal(false);
|
|
25
|
+
this.onChange = () => { };
|
|
26
|
+
this.onTouched = () => { };
|
|
27
|
+
}
|
|
28
|
+
/** Stringa accept per l'input nativo. */
|
|
29
|
+
get acceptString() {
|
|
30
|
+
return this.config?.acceptedTypes?.join(',') || '';
|
|
31
|
+
}
|
|
32
|
+
// ── ControlValueAccessor ──
|
|
33
|
+
writeValue(value) {
|
|
34
|
+
this.files.set(Array.isArray(value) ? value : []);
|
|
35
|
+
}
|
|
36
|
+
registerOnChange(fn) {
|
|
37
|
+
this.onChange = fn;
|
|
38
|
+
}
|
|
39
|
+
registerOnTouched(fn) {
|
|
40
|
+
this.onTouched = fn;
|
|
41
|
+
}
|
|
42
|
+
setDisabledState(isDisabled) {
|
|
43
|
+
this.disabled.set(isDisabled);
|
|
44
|
+
}
|
|
45
|
+
// ── Drag & drop ──
|
|
46
|
+
onDragOver(event) {
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
event.stopPropagation();
|
|
49
|
+
this.isDragOver.set(true);
|
|
50
|
+
}
|
|
51
|
+
onDragLeave() {
|
|
52
|
+
this.isDragOver.set(false);
|
|
53
|
+
}
|
|
54
|
+
onDrop(event) {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
event.stopPropagation();
|
|
57
|
+
this.isDragOver.set(false);
|
|
58
|
+
if (this.disabled())
|
|
59
|
+
return;
|
|
60
|
+
const droppedFiles = event.dataTransfer?.files;
|
|
61
|
+
if (droppedFiles?.length) {
|
|
62
|
+
this.processFiles(droppedFiles);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
onFileSelected(event) {
|
|
66
|
+
const input = event.target;
|
|
67
|
+
if (input.files?.length) {
|
|
68
|
+
this.processFiles(input.files);
|
|
69
|
+
input.value = ''; // Reset per permettere la ri-selezione dello stesso file
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
removeFile(index) {
|
|
73
|
+
const current = [...this.files()];
|
|
74
|
+
const removed = current.splice(index, 1);
|
|
75
|
+
this.files.set(current);
|
|
76
|
+
this.onChange(current);
|
|
77
|
+
if (removed[0])
|
|
78
|
+
this.fileRemoved.emit(removed[0]);
|
|
79
|
+
}
|
|
80
|
+
formatSize(bytes) {
|
|
81
|
+
if (bytes === 0)
|
|
82
|
+
return '0 B';
|
|
83
|
+
const k = 1024;
|
|
84
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
85
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
86
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];
|
|
87
|
+
}
|
|
88
|
+
// ── Processing ──
|
|
89
|
+
async processFiles(fileList) {
|
|
90
|
+
this.onTouched();
|
|
91
|
+
const maxFiles = this.config?.maxFiles || Infinity;
|
|
92
|
+
const current = this.config?.multiple ? [...this.files()] : [];
|
|
93
|
+
const remaining = maxFiles - current.length;
|
|
94
|
+
if (remaining <= 0) {
|
|
95
|
+
this.validationError.emit(`Numero massimo di file raggiunto (${maxFiles})`);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const filesToProcess = Array.from(fileList).slice(0, remaining);
|
|
99
|
+
for (const file of filesToProcess) {
|
|
100
|
+
// Validazione dimensione
|
|
101
|
+
if (this.config?.maxFileSize && file.size > this.config.maxFileSize) {
|
|
102
|
+
this.validationError.emit(`Il file "${file.name}" supera la dimensione massima consentita`);
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Validazione tipo
|
|
106
|
+
if (this.config?.acceptedTypes?.length) {
|
|
107
|
+
const isAccepted = this.config.acceptedTypes.some((type) => {
|
|
108
|
+
if (type.endsWith('/*')) {
|
|
109
|
+
return file.type.startsWith(type.split('/')[0] + '/');
|
|
110
|
+
}
|
|
111
|
+
return file.type === type;
|
|
112
|
+
});
|
|
113
|
+
if (!isAccepted) {
|
|
114
|
+
this.validationError.emit(`Il formato del file "${file.name}" non e accettato`);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const content = new Uint8Array(await file.arrayBuffer());
|
|
119
|
+
const ext = file.name.split('.').pop() || '';
|
|
120
|
+
const fileData = {
|
|
121
|
+
filename: file.name,
|
|
122
|
+
content,
|
|
123
|
+
mimeType: file.type,
|
|
124
|
+
extension: ext,
|
|
125
|
+
size: file.size,
|
|
126
|
+
needsUpload: true,
|
|
127
|
+
id: `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`, // NOSONAR - Used for non-cryptographic file ID generation in UI
|
|
128
|
+
timestamp: new Date(),
|
|
129
|
+
};
|
|
130
|
+
// Genera preview per immagini
|
|
131
|
+
if (this.config?.showPreview && file.type.startsWith('image/')) {
|
|
132
|
+
fileData.previewUrl = URL.createObjectURL(file);
|
|
133
|
+
}
|
|
134
|
+
current.push(fileData);
|
|
135
|
+
}
|
|
136
|
+
this.files.set(current);
|
|
137
|
+
this.onChange(current);
|
|
138
|
+
}
|
|
139
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
140
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UiFileInputComponent, isStandalone: true, selector: "ui-file-input", inputs: { config: "config" }, outputs: { fileRemoved: "fileRemoved", validationError: "validationError" }, providers: [
|
|
141
|
+
{
|
|
142
|
+
provide: NG_VALUE_ACCESSOR,
|
|
143
|
+
useExisting: forwardRef(() => UiFileInputComponent),
|
|
144
|
+
multi: true,
|
|
145
|
+
},
|
|
146
|
+
], ngImport: i0, template: `
|
|
147
|
+
<div class="ui-file-input" [class.ui-file-input--disabled]="disabled()" [class.ui-file-input--drag-over]="isDragOver()">
|
|
148
|
+
<!-- Area drag & drop -->
|
|
149
|
+
@if (config?.enableDragDrop !== false) {
|
|
150
|
+
<div
|
|
151
|
+
class="ui-file-input__drop-zone"
|
|
152
|
+
(dragover)="onDragOver($event)"
|
|
153
|
+
(dragleave)="onDragLeave()"
|
|
154
|
+
(drop)="onDrop($event)"
|
|
155
|
+
(click)="fileInput.click()"
|
|
156
|
+
role="button"
|
|
157
|
+
tabindex="0"
|
|
158
|
+
[attr.aria-label]="config?.dragDropText || 'Trascina i file qui o clicca per selezionare'"
|
|
159
|
+
(keydown.enter)="fileInput.click()"
|
|
160
|
+
(keydown.space)="fileInput.click()"
|
|
161
|
+
>
|
|
162
|
+
<lucide-icon name="upload" [size]="24" aria-hidden="true" />
|
|
163
|
+
<span class="ui-file-input__drop-text">
|
|
164
|
+
{{ config?.dragDropText || 'Trascina i file qui o clicca per selezionare' }}
|
|
165
|
+
</span>
|
|
166
|
+
@if (config?.acceptedTypes?.length) {
|
|
167
|
+
<span class="ui-file-input__hint">
|
|
168
|
+
Formati: {{ config!.acceptedTypes!.join(', ') }}
|
|
169
|
+
</span>
|
|
170
|
+
}
|
|
171
|
+
</div>
|
|
172
|
+
} @else {
|
|
173
|
+
<button
|
|
174
|
+
class="ui-file-input__select-btn"
|
|
175
|
+
type="button"
|
|
176
|
+
[disabled]="disabled()"
|
|
177
|
+
(click)="fileInput.click()"
|
|
178
|
+
>
|
|
179
|
+
<lucide-icon name="paperclip" [size]="16" aria-hidden="true" />
|
|
180
|
+
{{ config?.placeholder || 'Seleziona file' }}
|
|
181
|
+
</button>
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
<input
|
|
185
|
+
#fileInput
|
|
186
|
+
type="file"
|
|
187
|
+
class="ui-file-input__native"
|
|
188
|
+
[accept]="acceptString"
|
|
189
|
+
[multiple]="config?.multiple ?? false"
|
|
190
|
+
[disabled]="disabled()"
|
|
191
|
+
(change)="onFileSelected($event)"
|
|
192
|
+
/>
|
|
193
|
+
|
|
194
|
+
<!-- Lista file selezionati -->
|
|
195
|
+
@if (files().length > 0) {
|
|
196
|
+
<div class="ui-file-input__file-list" role="list">
|
|
197
|
+
@for (file of files(); track file.id || $index) {
|
|
198
|
+
<div class="ui-file-input__file-item" role="listitem">
|
|
199
|
+
<div class="ui-file-input__file-info">
|
|
200
|
+
<lucide-icon name="file" [size]="16" aria-hidden="true" />
|
|
201
|
+
<span class="ui-file-input__file-name">{{ file.filename }}</span>
|
|
202
|
+
<span class="ui-file-input__file-size">{{ formatSize(file.size) }}</span>
|
|
203
|
+
</div>
|
|
204
|
+
@if (!disabled()) {
|
|
205
|
+
<button
|
|
206
|
+
class="ui-file-input__remove-btn"
|
|
207
|
+
type="button"
|
|
208
|
+
[attr.aria-label]="'Rimuovi ' + file.filename"
|
|
209
|
+
(click)="removeFile($index)"
|
|
210
|
+
>
|
|
211
|
+
<lucide-icon name="x" [size]="14" aria-hidden="true" />
|
|
212
|
+
</button>
|
|
213
|
+
}
|
|
214
|
+
</div>
|
|
215
|
+
}
|
|
216
|
+
</div>
|
|
217
|
+
}
|
|
218
|
+
</div>
|
|
219
|
+
`, isInline: true, styles: [".ui-file-input{display:flex;flex-direction:column;gap:var(--ui-spacing-2)}.ui-file-input--disabled{opacity:.55;pointer-events:none}.ui-file-input__native{display:none}.ui-file-input__drop-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ui-spacing-2);padding:var(--ui-spacing-6) var(--ui-spacing-4);border:2px dashed var(--ui-color-border);border-radius:var(--ui-radius-lg);background:var(--ui-color-bg-subtle);cursor:pointer;transition:border-color var(--ui-transition-fast),background-color var(--ui-transition-fast)}.ui-file-input__drop-zone:focus{outline:none}.ui-file-input__drop-zone:focus-visible{outline:var(--ui-focus-ring-width) solid var(--ui-focus-ring-color);outline-offset:var(--ui-focus-ring-offset)}.ui-file-input__drop-zone:hover{border-color:var(--ui-color-primary);background:var(--ui-color-primary-subtle, rgba(37, 99, 235, .04))}.ui-file-input--drag-over .ui-file-input__drop-zone{border-color:var(--ui-color-primary);background:var(--ui-color-primary-subtle, rgba(37, 99, 235, .08))}.ui-file-input__drop-zone lucide-icon{color:var(--ui-color-text-muted)}.ui-file-input__drop-text{font-size:var(--ui-font-size-sm);color:var(--ui-color-text-secondary);text-align:center}.ui-file-input__hint{font-size:var(--ui-font-size-xs);color:var(--ui-color-text-muted)}.ui-file-input__select-btn{appearance:none;border:1px solid var(--ui-color-border);border-radius:var(--ui-radius-md);background:var(--ui-color-surface);padding:var(--ui-spacing-2) var(--ui-spacing-3);display:inline-flex;align-items:center;gap:var(--ui-spacing-2);cursor:pointer;font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);color:var(--ui-color-text);transition:background-color var(--ui-transition-fast)}.ui-file-input__select-btn:focus{outline:none}.ui-file-input__select-btn:focus-visible{outline:var(--ui-focus-ring-width) solid var(--ui-focus-ring-color);outline-offset:var(--ui-focus-ring-offset)}.ui-file-input__select-btn:hover:not(:disabled){background:var(--ui-color-surface-hover)}.ui-file-input__file-list{display:flex;flex-direction:column;gap:var(--ui-spacing-1)}.ui-file-input__file-item{display:flex;align-items:center;justify-content:space-between;padding:var(--ui-spacing-2) var(--ui-spacing-3);border:1px solid var(--ui-color-border);border-radius:var(--ui-radius-md);background:var(--ui-color-surface)}.ui-file-input__file-info{display:flex;align-items:center;gap:var(--ui-spacing-2);min-width:0}.ui-file-input__file-info lucide-icon{flex-shrink:0;color:var(--ui-color-text-muted)}.ui-file-input__file-name{font-size:var(--ui-font-size-sm);color:var(--ui-color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-file-input__file-size{font-size:var(--ui-font-size-xs);color:var(--ui-color-text-muted);flex-shrink:0}.ui-file-input__remove-btn{appearance:none;border:none;background:transparent;cursor:pointer;padding:var(--ui-spacing-1);border-radius:var(--ui-radius-sm);color:var(--ui-color-text-muted);transition:color var(--ui-transition-fast),background-color var(--ui-transition-fast)}.ui-file-input__remove-btn:focus{outline:none}.ui-file-input__remove-btn:focus-visible{outline:var(--ui-focus-ring-width) solid var(--ui-focus-ring-color);outline-offset:var(--ui-focus-ring-offset)}.ui-file-input__remove-btn:hover{color:var(--ui-color-error, #dc2626);background:var(--ui-color-error-subtle, #fef2f2)}\n"], dependencies: [{ kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i1.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
220
|
+
}
|
|
221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFileInputComponent, decorators: [{
|
|
222
|
+
type: Component,
|
|
223
|
+
args: [{ selector: 'ui-file-input', standalone: true, imports: [LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
224
|
+
{
|
|
225
|
+
provide: NG_VALUE_ACCESSOR,
|
|
226
|
+
useExisting: forwardRef(() => UiFileInputComponent),
|
|
227
|
+
multi: true,
|
|
228
|
+
},
|
|
229
|
+
], template: `
|
|
230
|
+
<div class="ui-file-input" [class.ui-file-input--disabled]="disabled()" [class.ui-file-input--drag-over]="isDragOver()">
|
|
231
|
+
<!-- Area drag & drop -->
|
|
232
|
+
@if (config?.enableDragDrop !== false) {
|
|
233
|
+
<div
|
|
234
|
+
class="ui-file-input__drop-zone"
|
|
235
|
+
(dragover)="onDragOver($event)"
|
|
236
|
+
(dragleave)="onDragLeave()"
|
|
237
|
+
(drop)="onDrop($event)"
|
|
238
|
+
(click)="fileInput.click()"
|
|
239
|
+
role="button"
|
|
240
|
+
tabindex="0"
|
|
241
|
+
[attr.aria-label]="config?.dragDropText || 'Trascina i file qui o clicca per selezionare'"
|
|
242
|
+
(keydown.enter)="fileInput.click()"
|
|
243
|
+
(keydown.space)="fileInput.click()"
|
|
244
|
+
>
|
|
245
|
+
<lucide-icon name="upload" [size]="24" aria-hidden="true" />
|
|
246
|
+
<span class="ui-file-input__drop-text">
|
|
247
|
+
{{ config?.dragDropText || 'Trascina i file qui o clicca per selezionare' }}
|
|
248
|
+
</span>
|
|
249
|
+
@if (config?.acceptedTypes?.length) {
|
|
250
|
+
<span class="ui-file-input__hint">
|
|
251
|
+
Formati: {{ config!.acceptedTypes!.join(', ') }}
|
|
252
|
+
</span>
|
|
253
|
+
}
|
|
254
|
+
</div>
|
|
255
|
+
} @else {
|
|
256
|
+
<button
|
|
257
|
+
class="ui-file-input__select-btn"
|
|
258
|
+
type="button"
|
|
259
|
+
[disabled]="disabled()"
|
|
260
|
+
(click)="fileInput.click()"
|
|
261
|
+
>
|
|
262
|
+
<lucide-icon name="paperclip" [size]="16" aria-hidden="true" />
|
|
263
|
+
{{ config?.placeholder || 'Seleziona file' }}
|
|
264
|
+
</button>
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
<input
|
|
268
|
+
#fileInput
|
|
269
|
+
type="file"
|
|
270
|
+
class="ui-file-input__native"
|
|
271
|
+
[accept]="acceptString"
|
|
272
|
+
[multiple]="config?.multiple ?? false"
|
|
273
|
+
[disabled]="disabled()"
|
|
274
|
+
(change)="onFileSelected($event)"
|
|
275
|
+
/>
|
|
276
|
+
|
|
277
|
+
<!-- Lista file selezionati -->
|
|
278
|
+
@if (files().length > 0) {
|
|
279
|
+
<div class="ui-file-input__file-list" role="list">
|
|
280
|
+
@for (file of files(); track file.id || $index) {
|
|
281
|
+
<div class="ui-file-input__file-item" role="listitem">
|
|
282
|
+
<div class="ui-file-input__file-info">
|
|
283
|
+
<lucide-icon name="file" [size]="16" aria-hidden="true" />
|
|
284
|
+
<span class="ui-file-input__file-name">{{ file.filename }}</span>
|
|
285
|
+
<span class="ui-file-input__file-size">{{ formatSize(file.size) }}</span>
|
|
286
|
+
</div>
|
|
287
|
+
@if (!disabled()) {
|
|
288
|
+
<button
|
|
289
|
+
class="ui-file-input__remove-btn"
|
|
290
|
+
type="button"
|
|
291
|
+
[attr.aria-label]="'Rimuovi ' + file.filename"
|
|
292
|
+
(click)="removeFile($index)"
|
|
293
|
+
>
|
|
294
|
+
<lucide-icon name="x" [size]="14" aria-hidden="true" />
|
|
295
|
+
</button>
|
|
296
|
+
}
|
|
297
|
+
</div>
|
|
298
|
+
}
|
|
299
|
+
</div>
|
|
300
|
+
}
|
|
301
|
+
</div>
|
|
302
|
+
`, styles: [".ui-file-input{display:flex;flex-direction:column;gap:var(--ui-spacing-2)}.ui-file-input--disabled{opacity:.55;pointer-events:none}.ui-file-input__native{display:none}.ui-file-input__drop-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ui-spacing-2);padding:var(--ui-spacing-6) var(--ui-spacing-4);border:2px dashed var(--ui-color-border);border-radius:var(--ui-radius-lg);background:var(--ui-color-bg-subtle);cursor:pointer;transition:border-color var(--ui-transition-fast),background-color var(--ui-transition-fast)}.ui-file-input__drop-zone:focus{outline:none}.ui-file-input__drop-zone:focus-visible{outline:var(--ui-focus-ring-width) solid var(--ui-focus-ring-color);outline-offset:var(--ui-focus-ring-offset)}.ui-file-input__drop-zone:hover{border-color:var(--ui-color-primary);background:var(--ui-color-primary-subtle, rgba(37, 99, 235, .04))}.ui-file-input--drag-over .ui-file-input__drop-zone{border-color:var(--ui-color-primary);background:var(--ui-color-primary-subtle, rgba(37, 99, 235, .08))}.ui-file-input__drop-zone lucide-icon{color:var(--ui-color-text-muted)}.ui-file-input__drop-text{font-size:var(--ui-font-size-sm);color:var(--ui-color-text-secondary);text-align:center}.ui-file-input__hint{font-size:var(--ui-font-size-xs);color:var(--ui-color-text-muted)}.ui-file-input__select-btn{appearance:none;border:1px solid var(--ui-color-border);border-radius:var(--ui-radius-md);background:var(--ui-color-surface);padding:var(--ui-spacing-2) var(--ui-spacing-3);display:inline-flex;align-items:center;gap:var(--ui-spacing-2);cursor:pointer;font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);color:var(--ui-color-text);transition:background-color var(--ui-transition-fast)}.ui-file-input__select-btn:focus{outline:none}.ui-file-input__select-btn:focus-visible{outline:var(--ui-focus-ring-width) solid var(--ui-focus-ring-color);outline-offset:var(--ui-focus-ring-offset)}.ui-file-input__select-btn:hover:not(:disabled){background:var(--ui-color-surface-hover)}.ui-file-input__file-list{display:flex;flex-direction:column;gap:var(--ui-spacing-1)}.ui-file-input__file-item{display:flex;align-items:center;justify-content:space-between;padding:var(--ui-spacing-2) var(--ui-spacing-3);border:1px solid var(--ui-color-border);border-radius:var(--ui-radius-md);background:var(--ui-color-surface)}.ui-file-input__file-info{display:flex;align-items:center;gap:var(--ui-spacing-2);min-width:0}.ui-file-input__file-info lucide-icon{flex-shrink:0;color:var(--ui-color-text-muted)}.ui-file-input__file-name{font-size:var(--ui-font-size-sm);color:var(--ui-color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-file-input__file-size{font-size:var(--ui-font-size-xs);color:var(--ui-color-text-muted);flex-shrink:0}.ui-file-input__remove-btn{appearance:none;border:none;background:transparent;cursor:pointer;padding:var(--ui-spacing-1);border-radius:var(--ui-radius-sm);color:var(--ui-color-text-muted);transition:color var(--ui-transition-fast),background-color var(--ui-transition-fast)}.ui-file-input__remove-btn:focus{outline:none}.ui-file-input__remove-btn:focus-visible{outline:var(--ui-focus-ring-width) solid var(--ui-focus-ring-color);outline-offset:var(--ui-focus-ring-offset)}.ui-file-input__remove-btn:hover{color:var(--ui-color-error, #dc2626);background:var(--ui-color-error-subtle, #fef2f2)}\n"] }]
|
|
303
|
+
}], propDecorators: { config: [{
|
|
304
|
+
type: Input
|
|
305
|
+
}], fileRemoved: [{
|
|
306
|
+
type: Output
|
|
307
|
+
}], validationError: [{
|
|
308
|
+
type: Output
|
|
309
|
+
}] } });
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tYnVpbGRlci9zdWItY29tcG9uZW50cy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNWLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3JEOzs7Ozs7OztHQVFHO0FBMEZILE1BQU0sT0FBTyxvQkFBb0I7SUF6RmpDO1FBNkZFLGdDQUFnQztRQUN0QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFFdkQsa0NBQWtDO1FBQ3hCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2RCxnQ0FBZ0M7UUFDdkIsVUFBSyxHQUFHLE1BQU0sQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsYUFBUSxHQUFrQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDbkQsY0FBUyxHQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztLQWdJMUM7SUE5SEMseUNBQXlDO0lBQ3pDLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FB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QUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUVUOzhCQUtRLE1BQU07c0JBQWQsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgc2lnbmFsLFxyXG4gIGNvbXB1dGVkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEx1Y2lkZUFuZ3VsYXJNb2R1bGUgfSBmcm9tICdsdWNpZGUtYW5ndWxhcic7XHJcbmltcG9ydCB7IFVpRmlsZURhdGEsIFVpRmlsZUlucHV0Q29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMvZmllbGQudHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgZmlsZSBpbnB1dCBzdGFuZGFsb25lIGNvbiBkcmFnICYgZHJvcCxcclxuICogYW50ZXByaW1hLCB2YWxpZGF6aW9uZSBlIHN1cHBvcnRvIG11bHRpcGxvLlxyXG4gKlxyXG4gKiBJbXBsZW1lbnRhIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgcGVyIGludGVncmF6aW9uZVxyXG4gKiBkaXJldHRhIGNvbiBBbmd1bGFyIFJlYWN0aXZlIEZvcm1zLlxyXG4gKlxyXG4gKiBAc2VsZWN0b3IgdWktZmlsZS1pbnB1dFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1maWxlLWlucHV0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtMdWNpZGVBbmd1bGFyTW9kdWxlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVWlGaWxlSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInVpLWZpbGUtaW5wdXRcIiBbY2xhc3MudWktZmlsZS1pbnB1dC0tZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiIFtjbGFzcy51aS1maWxlLWlucHV0LS1kcmFnLW92ZXJdPVwiaXNEcmFnT3ZlcigpXCI+XHJcbiAgICAgIDwhLS0gQXJlYSBkcmFnICYgZHJvcCAtLT5cclxuICAgICAgQGlmIChjb25maWc/LmVuYWJsZURyYWdEcm9wICE9PSBmYWxzZSkge1xyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidWktZmlsZS1pbnB1dF9fZHJvcC16b25lXCJcclxuICAgICAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gICAgICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgpXCJcclxuICAgICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcclxuICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXHJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbmZpZz8uZHJhZ0Ryb3BUZXh0IHx8ICdUcmFzY2luYSBpIGZpbGUgcXVpIG8gY2xpY2NhIHBlciBzZWxlemlvbmFyZSdcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZmlsZUlucHV0LmNsaWNrKClcIlxyXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiZmlsZUlucHV0LmNsaWNrKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsdWNpZGUtaWNvbiBuYW1lPVwidXBsb2FkXCIgW3NpemVdPVwiMjRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1aS1maWxlLWlucHV0X19kcm9wLXRleHRcIj5cclxuICAgICAgICAgICAge3sgY29uZmlnPy5kcmFnRHJvcFRleHQgfHwgJ1RyYXNjaW5hIGkgZmlsZSBxdWkgbyBjbGljY2EgcGVyIHNlbGV6aW9uYXJlJyB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgQGlmIChjb25maWc/LmFjY2VwdGVkVHlwZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVpLWZpbGUtaW5wdXRfX2hpbnRcIj5cclxuICAgICAgICAgICAgICBGb3JtYXRpOiB7eyBjb25maWchLmFjY2VwdGVkVHlwZXMhLmpvaW4oJywgJykgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cInVpLWZpbGUtaW5wdXRfX3NlbGVjdC1idG5cIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsdWNpZGUtaWNvbiBuYW1lPVwicGFwZXJjbGlwXCIgW3NpemVdPVwiMTZcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxyXG4gICAgICAgICAge3sgY29uZmlnPy5wbGFjZWhvbGRlciB8fCAnU2VsZXppb25hIGZpbGUnIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgICNmaWxlSW5wdXRcclxuICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgY2xhc3M9XCJ1aS1maWxlLWlucHV0X19uYXRpdmVcIlxyXG4gICAgICAgIFthY2NlcHRdPVwiYWNjZXB0U3RyaW5nXCJcclxuICAgICAgICBbbXVsdGlwbGVdPVwiY29uZmlnPy5tdWx0aXBsZSA/PyBmYWxzZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8IS0tIExpc3RhIGZpbGUgc2VsZXppb25hdGkgLS0+XHJcbiAgICAgIEBpZiAoZmlsZXMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVpLWZpbGUtaW5wdXRfX2ZpbGUtbGlzdFwiIHJvbGU9XCJsaXN0XCI+XHJcbiAgICAgICAgICBAZm9yIChmaWxlIG9mIGZpbGVzKCk7IHRyYWNrIGZpbGUuaWQgfHwgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1maWxlLWlucHV0X19maWxlLWl0ZW1cIiByb2xlPVwibGlzdGl0ZW1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWktZmlsZS1pbnB1dF9fZmlsZS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICA8bHVjaWRlLWljb24gbmFtZT1cImZpbGVcIiBbc2l6ZV09XCIxNlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVpLWZpbGUtaW5wdXRfX2ZpbGUtbmFtZVwiPnt7IGZpbGUuZmlsZW5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVpLWZpbGUtaW5wdXRfX2ZpbGUtc2l6ZVwiPnt7IGZvcm1hdFNpemUoZmlsZS5zaXplKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBAaWYgKCFkaXNhYmxlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktZmlsZS1pbnB1dF9fcmVtb3ZlLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSaW11b3ZpICcgKyBmaWxlLmZpbGVuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUoJGluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxsdWNpZGUtaWNvbiBuYW1lPVwieFwiIFtzaXplXT1cIjE0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVVcmw6ICcuL2ZpbGUtaW5wdXQuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlGaWxlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgLyoqIENvbmZpZ3VyYXppb25lIGRlbCBmaWxlIGlucHV0LiAqL1xyXG4gIEBJbnB1dCgpIGNvbmZpZzogVWlGaWxlSW5wdXRDb25maWcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKiBGaWxlIHJpbW9zc28gZGFsbGEgbGlzdGEuICovXHJcbiAgQE91dHB1dCgpIGZpbGVSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxVaUZpbGVEYXRhPigpO1xyXG5cclxuICAvKiogRXJyb3JlIGRpIHZhbGlkYXppb25lIGZpbGUuICovXHJcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvLyDilIDilIAgU3RhdG8gaW50ZXJubyAoc2lnbmFscykg4pSA4pSAXHJcbiAgcmVhZG9ubHkgZmlsZXMgPSBzaWduYWw8VWlGaWxlRGF0YVtdPihbXSk7XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xyXG4gIHJlYWRvbmx5IGlzRHJhZ092ZXIgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IFVpRmlsZURhdGFbXSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIC8qKiBTdHJpbmdhIGFjY2VwdCBwZXIgbCdpbnB1dCBuYXRpdm8uICovXHJcbiAgZ2V0IGFjY2VwdFN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5hY2NlcHRlZFR5cGVzPy5qb2luKCcsJykgfHwgJyc7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIAgQ29udHJvbFZhbHVlQWNjZXNzb3Ig4pSA4pSAXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVWlGaWxlRGF0YVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVzLnNldChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10pO1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgCBEcmFnICYgZHJvcCDilIDilIBcclxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdMZWF2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuaXNEcmFnT3Zlci5zZXQoZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRyb3BwZWRGaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XHJcbiAgICBpZiAoZHJvcHBlZEZpbGVzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5wcm9jZXNzRmlsZXMoZHJvcHBlZEZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChpbnB1dC5maWxlcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucHJvY2Vzc0ZpbGVzKGlucHV0LmZpbGVzKTtcclxuICAgICAgaW5wdXQudmFsdWUgPSAnJzsgLy8gUmVzZXQgcGVyIHBlcm1ldHRlcmUgbGEgcmktc2VsZXppb25lIGRlbGxvIHN0ZXNzbyBmaWxlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVGaWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSBbLi4udGhpcy5maWxlcygpXTtcclxuICAgIGNvbnN0IHJlbW92ZWQgPSBjdXJyZW50LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmZpbGVzLnNldChjdXJyZW50KTtcclxuICAgIHRoaXMub25DaGFuZ2UoY3VycmVudCk7XHJcbiAgICBpZiAocmVtb3ZlZFswXSkgdGhpcy5maWxlUmVtb3ZlZC5lbWl0KHJlbW92ZWRbMF0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0U2l6ZShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEInO1xyXG4gICAgY29uc3QgayA9IDEwMjQ7XHJcbiAgICBjb25zdCBzaXplcyA9IFsnQicsICdLQicsICdNQicsICdHQiddO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoMSkpICsgJyAnICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIAgUHJvY2Vzc2luZyDilIDilIBcclxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NGaWxlcyhmaWxlTGlzdDogRmlsZUxpc3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICBjb25zdCBtYXhGaWxlcyA9IHRoaXMuY29uZmlnPy5tYXhGaWxlcyB8fCBJbmZpbml0eTtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmNvbmZpZz8ubXVsdGlwbGUgPyBbLi4udGhpcy5maWxlcygpXSA6IFtdO1xyXG4gICAgY29uc3QgcmVtYWluaW5nID0gbWF4RmlsZXMgLSBjdXJyZW50Lmxlbmd0aDtcclxuXHJcbiAgICBpZiAocmVtYWluaW5nIDw9IDApIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IuZW1pdChgTnVtZXJvIG1hc3NpbW8gZGkgZmlsZSByYWdnaXVudG8gKCR7bWF4RmlsZXN9KWApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsZXNUb1Byb2Nlc3MgPSBBcnJheS5mcm9tKGZpbGVMaXN0KS5zbGljZSgwLCByZW1haW5pbmcpO1xyXG5cclxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlc1RvUHJvY2Vzcykge1xyXG4gICAgICAvLyBWYWxpZGF6aW9uZSBkaW1lbnNpb25lXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ubWF4RmlsZVNpemUgJiYgZmlsZS5zaXplID4gdGhpcy5jb25maWcubWF4RmlsZVNpemUpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KGBJbCBmaWxlIFwiJHtmaWxlLm5hbWV9XCIgc3VwZXJhIGxhIGRpbWVuc2lvbmUgbWFzc2ltYSBjb25zZW50aXRhYCk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFZhbGlkYXppb25lIHRpcG9cclxuICAgICAgaWYgKHRoaXMuY29uZmlnPy5hY2NlcHRlZFR5cGVzPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBpc0FjY2VwdGVkID0gdGhpcy5jb25maWcuYWNjZXB0ZWRUeXBlcy5zb21lKCh0eXBlKSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZS5lbmRzV2l0aCgnLyonKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgodHlwZS5zcGxpdCgnLycpWzBdICsgJy8nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBmaWxlLnR5cGUgPT09IHR5cGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFpc0FjY2VwdGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KGBJbCBmb3JtYXRvIGRlbCBmaWxlIFwiJHtmaWxlLm5hbWV9XCIgbm9uIGUgYWNjZXR0YXRvYCk7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBuZXcgVWludDhBcnJheShhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCkpO1xyXG4gICAgICBjb25zdCBleHQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSB8fCAnJztcclxuXHJcbiAgICAgIGNvbnN0IGZpbGVEYXRhOiBVaUZpbGVEYXRhID0ge1xyXG4gICAgICAgIGZpbGVuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBtaW1lVHlwZTogZmlsZS50eXBlLFxyXG4gICAgICAgIGV4dGVuc2lvbjogZXh0LFxyXG4gICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcclxuICAgICAgICBuZWVkc1VwbG9hZDogdHJ1ZSxcclxuICAgICAgICBpZDogYCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOSl9YCwgLy8gTk9TT05BUiAtIFVzZWQgZm9yIG5vbi1jcnlwdG9ncmFwaGljIGZpbGUgSUQgZ2VuZXJhdGlvbiBpbiBVSVxyXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIEdlbmVyYSBwcmV2aWV3IHBlciBpbW1hZ2luaVxyXG4gICAgICBpZiAodGhpcy5jb25maWc/LnNob3dQcmV2aWV3ICYmIGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xyXG4gICAgICAgIGZpbGVEYXRhLnByZXZpZXdVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjdXJyZW50LnB1c2goZmlsZURhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsZXMuc2V0KGN1cnJlbnQpO1xyXG4gICAgdGhpcy5vbkNoYW5nZShjdXJyZW50KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, inject, } from '@angular/core';
|
|
2
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { ErrorStateMatcher } from '@angular/material/core';
|
|
4
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
5
|
+
import { MatInputModule } from '@angular/material/input';
|
|
6
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
7
|
+
import { LucideAngularModule } from 'lucide-angular';
|
|
8
|
+
import { UiCurrencyInputDirective } from '../../directives/currency-input.directive';
|
|
9
|
+
import { UiFormErrorStateMatcher } from '../../services/form-error-state.matcher';
|
|
10
|
+
import { UiFormFieldErrorService } from '../../services/form-field-error.service';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/forms";
|
|
13
|
+
import * as i2 from "@angular/material/form-field";
|
|
14
|
+
import * as i3 from "@angular/material/input";
|
|
15
|
+
import * as i4 from "@angular/material/tooltip";
|
|
16
|
+
import * as i5 from "lucide-angular";
|
|
17
|
+
/**
|
|
18
|
+
|
|
19
|
+
* Campo atomico number / currency — stesso rendering del form-builder.
|
|
20
|
+
|
|
21
|
+
*
|
|
22
|
+
|
|
23
|
+
* @selector ui-form-number-field
|
|
24
|
+
|
|
25
|
+
*/
|
|
26
|
+
export class UiFormNumberFieldComponent {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.fieldErrorService = inject(UiFormFieldErrorService);
|
|
29
|
+
this.readonly = false;
|
|
30
|
+
this.errors = null;
|
|
31
|
+
/** Modalità valuta standalone (equivalente a `field.metadata.type === 'currency'`). */
|
|
32
|
+
this.currencyMode = false;
|
|
33
|
+
this.currencySymbol = 'EUR';
|
|
34
|
+
this.decimalPlaces = 2;
|
|
35
|
+
this.blurred = new EventEmitter();
|
|
36
|
+
}
|
|
37
|
+
get effectiveLabel() {
|
|
38
|
+
return this.field?.label ?? this.label ?? '';
|
|
39
|
+
}
|
|
40
|
+
get effectivePlaceholder() {
|
|
41
|
+
return this.field?.placeholder ?? this.placeholder ?? '';
|
|
42
|
+
}
|
|
43
|
+
get isReadonly() {
|
|
44
|
+
return this.readonly || this.field?.readonly === true;
|
|
45
|
+
}
|
|
46
|
+
get isCurrency() {
|
|
47
|
+
if (this.field?.metadata?.['type'] === 'currency')
|
|
48
|
+
return true;
|
|
49
|
+
return this.currencyMode;
|
|
50
|
+
}
|
|
51
|
+
get effectiveCurrencySymbol() {
|
|
52
|
+
return this.field?.metadata?.['currency'] || this.currencySymbol;
|
|
53
|
+
}
|
|
54
|
+
get effectiveDecimalPlaces() {
|
|
55
|
+
const fromField = this.field?.metadata?.['decimals'];
|
|
56
|
+
return fromField != null ? Number(fromField) : this.decimalPlaces;
|
|
57
|
+
}
|
|
58
|
+
get effectiveRules() {
|
|
59
|
+
return this.field?.validation ?? this.validationRules ?? [];
|
|
60
|
+
}
|
|
61
|
+
get fieldControl() {
|
|
62
|
+
if (!this.field || !this.formGroup)
|
|
63
|
+
return null;
|
|
64
|
+
const c = this.formGroup.get(this.field.key);
|
|
65
|
+
return c instanceof FormControl ? c : null;
|
|
66
|
+
}
|
|
67
|
+
resolvedErrors(control) {
|
|
68
|
+
if (this.errors != null)
|
|
69
|
+
return this.errors;
|
|
70
|
+
return this.fieldErrorService.getFieldErrors(control, this.effectiveRules);
|
|
71
|
+
}
|
|
72
|
+
onBlur() {
|
|
73
|
+
this.blurred.emit();
|
|
74
|
+
}
|
|
75
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormNumberFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
76
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UiFormNumberFieldComponent, isStandalone: true, selector: "ui-form-number-field", inputs: { field: "field", formGroup: "formGroup", readonly: "readonly", errors: "errors", control: "control", label: "label", placeholder: "placeholder", validationRules: "validationRules", currencyMode: "currencyMode", currencySymbol: "currencySymbol", decimalPlaces: "decimalPlaces" }, outputs: { blurred: "blurred" }, providers: [{ provide: ErrorStateMatcher, useClass: UiFormErrorStateMatcher }], ngImport: i0, template: "@if (field && formGroup) {\r\n <div [formGroup]=\"formGroup\" class=\"ui-fb-field-ctx\">\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n @if (isCurrency) {\r\n <input\r\n matInput\r\n type=\"text\"\r\n [formControlName]=\"field.key\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n uiCurrencyInput\r\n [currencySymbol]=\"effectiveCurrencySymbol\"\r\n [decimalPlaces]=\"effectiveDecimalPlaces\"\r\n (blur)=\"onBlur()\"\r\n />\r\n } @else {\r\n <input\r\n matInput\r\n type=\"number\"\r\n [formControlName]=\"field.key\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n (blur)=\"onBlur()\"\r\n />\r\n }\r\n @if (field.iconTooltip) {\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n type=\"button\"\r\n [matTooltip]=\"field.iconTooltip.text\"\r\n [attr.aria-label]=\"field.iconTooltip.text\"\r\n >\r\n <lucide-icon [name]=\"field.iconTooltip.icon || 'info'\" [size]=\"18\" />\r\n </button>\r\n }\r\n <mat-error>\r\n @for (err of resolvedErrors(fieldControl); track $index) {\r\n <div>{{ err }}</div>\r\n }\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n} @else if (control) {\r\n <div class=\"ui-form-field-atom\">\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n @if (effectiveLabel) {\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n }\r\n @if (isCurrency) {\r\n <input\r\n matInput\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n uiCurrencyInput\r\n [currencySymbol]=\"effectiveCurrencySymbol\"\r\n [decimalPlaces]=\"effectiveDecimalPlaces\"\r\n (blur)=\"onBlur()\"\r\n />\r\n } @else {\r\n <input\r\n matInput\r\n type=\"number\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n (blur)=\"onBlur()\"\r\n />\r\n }\r\n <mat-error>\r\n @for (err of resolvedErrors(control); track $index) {\r\n <div>{{ err }}</div>\r\n }\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n}\r\n", styles: ["ui-form-text-field,ui-form-textarea-field,ui-form-number-field,ui-form-select-field,ui-form-radio-field{display:block;width:100%}.ui-form-field-atom{display:block;width:100%}.ui-form-field-atom mat-error,ui-form-text-field mat-error,ui-form-textarea-field mat-error,ui-form-number-field mat-error,ui-form-select-field mat-error{font-size:var(--ui-font-size-xs, 12px);display:flex;flex-direction:column;gap:2px;transform:translateY(-5px)}.ui-form-field-atom .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,.ui-form-field-atom .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,.ui-form-field-atom .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing,ui-form-text-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,ui-form-text-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,ui-form-text-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing,ui-form-textarea-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,ui-form-textarea-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,ui-form-textarea-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing,ui-form-number-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,ui-form-number-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,ui-form-number-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing,ui-form-select-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,ui-form-select-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,ui-form-select-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing{border-color:var(--ui-color-error, #dc2626)!important}.ui-form-field-atom .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label,ui-form-text-field .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label,ui-form-textarea-field .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label,ui-form-number-field .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label,ui-form-select-field .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label{color:var(--ui-color-error, #dc2626)}.ui-form-field-atom mat-hint.ui-form-builder__char-count,ui-form-text-field mat-hint.ui-form-builder__char-count,ui-form-textarea-field mat-hint.ui-form-builder__char-count{font-size:var(--ui-font-size-xs);color:var(--ui-color-text-muted);padding:var(--ui-spacing-2)}.ui-form-field-atom mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--warn,ui-form-text-field mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--warn,ui-form-textarea-field mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--warn{color:var(--ui-color-warn, #d97706)}.ui-form-field-atom mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--error,ui-form-text-field mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--error,ui-form-textarea-field mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--error{color:var(--ui-color-error, #dc2626);font-weight:var(--ui-font-weight-semibold)}.ui-form-field-atom .ui-form-builder__textarea-wrapper,ui-form-textarea-field .ui-form-builder__textarea-wrapper{position:relative}ui-form-radio-field .ui-form-builder__field-label,.ui-form-field-atom.ui-form-builder__radio-wrapper .ui-form-builder__field-label{display:block;font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-weight-medium);color:var(--ui-color-text);margin-bottom:var(--ui-spacing-4)}ui-form-radio-field .ui-form-builder__required,.ui-form-field-atom.ui-form-builder__radio-wrapper .ui-form-builder__required{color:var(--ui-color-error, #dc2626);margin-left:2px}ui-form-radio-field .ui-form-builder__field-error,.ui-form-field-atom.ui-form-builder__radio-wrapper .ui-form-builder__field-error{margin-top:var(--ui-spacing-1);font-size:var(--ui-font-size-xs);color:var(--ui-color-error, #dc2626);display:flex;flex-direction:column;gap:2px}ui-form-radio-field mat-radio-group,.ui-form-field-atom.ui-form-builder__radio-wrapper mat-radio-group{display:flex;flex-wrap:wrap;gap:var(--ui-spacing-3)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i5.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "directive", type: UiCurrencyInputDirective, selector: "[uiCurrencyInput]", inputs: ["currencySymbol", "decimalPlaces"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormNumberFieldComponent, decorators: [{
|
|
79
|
+
type: Component,
|
|
80
|
+
args: [{ selector: 'ui-form-number-field', standalone: true, imports: [
|
|
81
|
+
ReactiveFormsModule,
|
|
82
|
+
MatFormFieldModule,
|
|
83
|
+
MatInputModule,
|
|
84
|
+
MatTooltipModule,
|
|
85
|
+
LucideAngularModule,
|
|
86
|
+
UiCurrencyInputDirective,
|
|
87
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: ErrorStateMatcher, useClass: UiFormErrorStateMatcher }], template: "@if (field && formGroup) {\r\n <div [formGroup]=\"formGroup\" class=\"ui-fb-field-ctx\">\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n @if (isCurrency) {\r\n <input\r\n matInput\r\n type=\"text\"\r\n [formControlName]=\"field.key\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n uiCurrencyInput\r\n [currencySymbol]=\"effectiveCurrencySymbol\"\r\n [decimalPlaces]=\"effectiveDecimalPlaces\"\r\n (blur)=\"onBlur()\"\r\n />\r\n } @else {\r\n <input\r\n matInput\r\n type=\"number\"\r\n [formControlName]=\"field.key\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n (blur)=\"onBlur()\"\r\n />\r\n }\r\n @if (field.iconTooltip) {\r\n <button\r\n matSuffix\r\n mat-icon-button\r\n type=\"button\"\r\n [matTooltip]=\"field.iconTooltip.text\"\r\n [attr.aria-label]=\"field.iconTooltip.text\"\r\n >\r\n <lucide-icon [name]=\"field.iconTooltip.icon || 'info'\" [size]=\"18\" />\r\n </button>\r\n }\r\n <mat-error>\r\n @for (err of resolvedErrors(fieldControl); track $index) {\r\n <div>{{ err }}</div>\r\n }\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n} @else if (control) {\r\n <div class=\"ui-form-field-atom\">\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n @if (effectiveLabel) {\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n }\r\n @if (isCurrency) {\r\n <input\r\n matInput\r\n type=\"text\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n uiCurrencyInput\r\n [currencySymbol]=\"effectiveCurrencySymbol\"\r\n [decimalPlaces]=\"effectiveDecimalPlaces\"\r\n (blur)=\"onBlur()\"\r\n />\r\n } @else {\r\n <input\r\n matInput\r\n type=\"number\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n (blur)=\"onBlur()\"\r\n />\r\n }\r\n <mat-error>\r\n @for (err of resolvedErrors(control); track $index) {\r\n <div>{{ err }}</div>\r\n }\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n}\r\n", styles: ["ui-form-text-field,ui-form-textarea-field,ui-form-number-field,ui-form-select-field,ui-form-radio-field{display:block;width:100%}.ui-form-field-atom{display:block;width:100%}.ui-form-field-atom mat-error,ui-form-text-field mat-error,ui-form-textarea-field mat-error,ui-form-number-field mat-error,ui-form-select-field mat-error{font-size:var(--ui-font-size-xs, 12px);display:flex;flex-direction:column;gap:2px;transform:translateY(-5px)}.ui-form-field-atom .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,.ui-form-field-atom .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,.ui-form-field-atom .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing,ui-form-text-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,ui-form-text-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,ui-form-text-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing,ui-form-textarea-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,ui-form-textarea-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,ui-form-textarea-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing,ui-form-number-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,ui-form-number-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,ui-form-number-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing,ui-form-select-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__leading,ui-form-select-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__notch,ui-form-select-field .mat-mdc-form-field.mat-form-field-invalid .mdc-notched-outline__trailing{border-color:var(--ui-color-error, #dc2626)!important}.ui-form-field-atom .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label,ui-form-text-field .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label,ui-form-textarea-field .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label,ui-form-number-field .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label,ui-form-select-field .mat-mdc-form-field.mat-form-field-invalid .mat-mdc-floating-label{color:var(--ui-color-error, #dc2626)}.ui-form-field-atom mat-hint.ui-form-builder__char-count,ui-form-text-field mat-hint.ui-form-builder__char-count,ui-form-textarea-field mat-hint.ui-form-builder__char-count{font-size:var(--ui-font-size-xs);color:var(--ui-color-text-muted);padding:var(--ui-spacing-2)}.ui-form-field-atom mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--warn,ui-form-text-field mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--warn,ui-form-textarea-field mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--warn{color:var(--ui-color-warn, #d97706)}.ui-form-field-atom mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--error,ui-form-text-field mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--error,ui-form-textarea-field mat-hint.ui-form-builder__char-count.ui-form-builder__char-count--error{color:var(--ui-color-error, #dc2626);font-weight:var(--ui-font-weight-semibold)}.ui-form-field-atom .ui-form-builder__textarea-wrapper,ui-form-textarea-field .ui-form-builder__textarea-wrapper{position:relative}ui-form-radio-field .ui-form-builder__field-label,.ui-form-field-atom.ui-form-builder__radio-wrapper .ui-form-builder__field-label{display:block;font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-weight-medium);color:var(--ui-color-text);margin-bottom:var(--ui-spacing-4)}ui-form-radio-field .ui-form-builder__required,.ui-form-field-atom.ui-form-builder__radio-wrapper .ui-form-builder__required{color:var(--ui-color-error, #dc2626);margin-left:2px}ui-form-radio-field .ui-form-builder__field-error,.ui-form-field-atom.ui-form-builder__radio-wrapper .ui-form-builder__field-error{margin-top:var(--ui-spacing-1);font-size:var(--ui-font-size-xs);color:var(--ui-color-error, #dc2626);display:flex;flex-direction:column;gap:2px}ui-form-radio-field mat-radio-group,.ui-form-field-atom.ui-form-builder__radio-wrapper mat-radio-group{display:flex;flex-wrap:wrap;gap:var(--ui-spacing-3)}\n"] }]
|
|
88
|
+
}], propDecorators: { field: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], formGroup: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], readonly: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], errors: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], control: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], label: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], placeholder: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], validationRules: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], currencyMode: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], currencySymbol: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], decimalPlaces: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], blurred: [{
|
|
111
|
+
type: Output
|
|
112
|
+
}] } });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1udW1iZXItZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvc3ViLWNvbXBvbmVudHMvZm9ybS1maWVsZHMvZm9ybS1udW1iZXItZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvc3ViLWNvbXBvbmVudHMvZm9ybS1maWVsZHMvZm9ybS1udW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEVBRU4saUJBQWlCLEVBRWpCLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXJGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5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LG1CQUFtQixnUEFFbkIsd0JBQXdCOzs0RkFnQmYsMEJBQTBCO2tCQWxDdEMsU0FBUzsrQkFFRSxzQkFBc0IsY0FFcEIsSUFBSSxXQUVQO3dCQUVQLG1CQUFtQjt3QkFFbkIsa0JBQWtCO3dCQUVsQixjQUFjO3dCQUVkLGdCQUFnQjt3QkFFaEIsbUJBQW1CO3dCQUVuQix3QkFBd0I7cUJBRXpCLG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUVoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBRTFCLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLENBQUM7OEJBY3JFLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUlJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcclxuICBDb21wb25lbnQsXHJcclxuICBFdmVudEVtaXR0ZXIsXHJcclxuICBJbnB1dCxcclxyXG4gIE91dHB1dCxcclxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXHJcbiAgaW5qZWN0LFxyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxyXG5pbXBvcnQgeyBMdWNpZGVBbmd1bGFyTW9kdWxlIH0gZnJvbSAnbHVjaWRlLWFuZ3VsYXInO1xyXHJcbmltcG9ydCB7IFVpQ3VycmVuY3lJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY3VycmVuY3ktaW5wdXQuZGlyZWN0aXZlJztcclxyXG5pbXBvcnQgeyBVaUZvcm1FcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZXJyb3Itc3RhdGUubWF0Y2hlcic7XHJcclxuaW1wb3J0IHsgVWlGb3JtRmllbGRFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLWZpZWxkLWVycm9yLnNlcnZpY2UnO1xyXHJcbmltcG9ydCB7IFVpRm9ybUZpZWxkRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL3R5cGVzL2ZpZWxkLnR5cGVzJztcclxyXG5pbXBvcnQgeyBVaVZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdmFsaWRhdGlvbi50eXBlcyc7XHJcclxuXHJcclxuLyoqXHJcclxuICogQ2FtcG8gYXRvbWljbyBudW1iZXIgLyBjdXJyZW5jeSDigJQgc3Rlc3NvIHJlbmRlcmluZyBkZWwgZm9ybS1idWlsZGVyLlxyXHJcbiAqXHJcclxuICogQHNlbGVjdG9yIHVpLWZvcm0tbnVtYmVyLWZpZWxkXHJcclxuICovXHJcclxuQENvbXBvbmVudCh7XHJcclxuICBzZWxlY3RvcjogJ3VpLWZvcm0tbnVtYmVyLWZpZWxkJyxcclxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcclxuICBpbXBvcnRzOiBbXHJcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcclxuICAgIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsXHJcclxuICAgIFVpQ3VycmVuY3lJbnB1dERpcmVjdGl2ZSxcclxyXG4gIF0sXHJcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEVycm9yU3RhdGVNYXRjaGVyLCB1c2VDbGFzczogVWlGb3JtRXJyb3JTdGF0ZU1hdGNoZXIgfV0sXHJcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1udW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXHJcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tZmllbGRzLnNjc3MnLFxyXHJcbn0pXHJcclxuZXhwb3J0IGNsYXNzIFVpRm9ybU51bWJlckZpZWxkQ29tcG9uZW50IHtcclxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZmllbGRFcnJvclNlcnZpY2UgPSBpbmplY3QoVWlGb3JtRmllbGRFcnJvclNlcnZpY2UpO1xyXHJcblxyXHJcbiAgQElucHV0KCkgZmllbGQ/OiBVaUZvcm1GaWVsZERlc2NyaXB0b3I7XHJcclxuICBASW5wdXQoKSBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XHJcclxuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xyXHJcbiAgQElucHV0KCkgZXJyb3JzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xyXHJcblxyXHJcbiAgQElucHV0KCkgY29udHJvbD86IEZvcm1Db250cm9sO1xyXHJcbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XHJcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcclxyXG4gIEBJbnB1dCgpIHZhbGlkYXRpb25SdWxlcz86IFVpVmFsaWRhdGlvblJ1bGVbXTtcclxyXG4gIC8qKiBNb2RhbGl0w6AgdmFsdXRhIHN0YW5kYWxvbmUgKGVxdWl2YWxlbnRlIGEgYGZpZWxkLm1ldGFkYXRhLnR5cGUgPT09ICdjdXJyZW5jeSdgKS4gKi9cclxyXG4gIEBJbnB1dCgpIGN1cnJlbmN5TW9kZSA9IGZhbHNlO1xyXHJcbiAgQElucHV0KCkgY3VycmVuY3lTeW1ib2wgPSAnRVVSJztcclxyXG4gIEBJbnB1dCgpIGRlY2ltYWxQbGFjZXMgPSAyO1xyXHJcblxyXHJcbiAgQE91dHB1dCgpIGJsdXJyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcclxuXHJcclxuICBnZXQgZWZmZWN0aXZlTGFiZWwoKTogc3RyaW5nIHtcclxyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQ/LmxhYmVsID8/IHRoaXMubGFiZWwgPz8gJyc7XHJcclxuICB9XHJcclxuXHJcclxuICBnZXQgZWZmZWN0aXZlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQ/LnBsYWNlaG9sZGVyID8/IHRoaXMucGxhY2Vob2xkZXIgPz8gJyc7XHJcclxuICB9XHJcclxuXHJcclxuICBnZXQgaXNSZWFkb25seSgpOiBib29sZWFuIHtcclxyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgfHwgdGhpcy5maWVsZD8ucmVhZG9ubHkgPT09IHRydWU7XHJcclxuICB9XHJcclxuXHJcclxuICBnZXQgaXNDdXJyZW5jeSgpOiBib29sZWFuIHtcclxyXG4gICAgaWYgKHRoaXMuZmllbGQ/Lm1ldGFkYXRhPy5bJ3R5cGUnXSA9PT0gJ2N1cnJlbmN5JykgcmV0dXJuIHRydWU7XHJcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5TW9kZTtcclxyXG4gIH1cclxyXG5cclxyXG4gIGdldCBlZmZlY3RpdmVDdXJyZW5jeVN5bWJvbCgpOiBzdHJpbmcge1xyXHJcbiAgICByZXR1cm4gKHRoaXMuZmllbGQ/Lm1ldGFkYXRhPy5bJ2N1cnJlbmN5J10gYXMgc3RyaW5nKSB8fCB0aGlzLmN1cnJlbmN5U3ltYm9sO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgZ2V0IGVmZmVjdGl2ZURlY2ltYWxQbGFjZXMoKTogbnVtYmVyIHtcclxyXG4gICAgY29uc3QgZnJvbUZpZWxkID0gdGhpcy5maWVsZD8ubWV0YWRhdGE/LlsnZGVjaW1hbHMnXTtcclxyXG4gICAgcmV0dXJuIGZyb21GaWVsZCAhPSBudWxsID8gTnVtYmVyKGZyb21GaWVsZCkgOiB0aGlzLmRlY2ltYWxQbGFjZXM7XHJcclxuICB9XHJcclxuXHJcclxuICBnZXQgZWZmZWN0aXZlUnVsZXMoKTogVWlWYWxpZGF0aW9uUnVsZVtdIHtcclxyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQ/LnZhbGlkYXRpb24gPz8gdGhpcy52YWxpZGF0aW9uUnVsZXMgPz8gW107XHJcclxuICB9XHJcclxuXHJcclxuICBnZXQgZmllbGRDb250cm9sKCk6IEZvcm1Db250cm9sIHwgbnVsbCB7XHJcclxuICAgIGlmICghdGhpcy5maWVsZCB8fCAhdGhpcy5mb3JtR3JvdXApIHJldHVybiBudWxsO1xyXHJcbiAgICBjb25zdCBjID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZmllbGQua2V5KTtcclxyXG4gICAgcmV0dXJuIGMgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCA/IGMgOiBudWxsO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgcmVzb2x2ZWRFcnJvcnMoY29udHJvbDogRm9ybUNvbnRyb2wgfCBudWxsKTogc3RyaW5nW10ge1xyXHJcbiAgICBpZiAodGhpcy5lcnJvcnMgIT0gbnVsbCkgcmV0dXJuIHRoaXMuZXJyb3JzO1xyXHJcbiAgICByZXR1cm4gdGhpcy5maWVsZEVycm9yU2VydmljZS5nZXRGaWVsZEVycm9ycyhjb250cm9sLCB0aGlzLmVmZmVjdGl2ZVJ1bGVzKTtcclxyXG4gIH1cclxyXG5cclxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxyXG4gICAgdGhpcy5ibHVycmVkLmVtaXQoKTtcclxyXG4gIH1cclxyXG59XHJcclxuXHIiLCJAaWYgKGZpZWxkICYmIGZvcm1Hcm91cCkge1xyXG4gIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cInVpLWZiLWZpZWxkLWN0eFwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ1aS1mb3JtLWJ1aWxkZXJfX2Z1bGwtd2lkdGhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3sgZWZmZWN0aXZlTGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgQGlmIChpc0N1cnJlbmN5KSB7XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5rZXlcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVmZmVjdGl2ZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJpc1JlYWRvbmx5XCJcclxuICAgICAgICAgIHVpQ3VycmVuY3lJbnB1dFxyXG4gICAgICAgICAgW2N1cnJlbmN5U3ltYm9sXT1cImVmZmVjdGl2ZUN1cnJlbmN5U3ltYm9sXCJcclxuICAgICAgICAgIFtkZWNpbWFsUGxhY2VzXT1cImVmZmVjdGl2ZURlY2ltYWxQbGFjZXNcIlxyXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5rZXlcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVmZmVjdGl2ZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJpc1JlYWRvbmx5XCJcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoZmllbGQuaWNvblRvb2x0aXApIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5pY29uVG9vbHRpcC50ZXh0XCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmllbGQuaWNvblRvb2x0aXAudGV4dFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGx1Y2lkZS1pY29uIFtuYW1lXT1cImZpZWxkLmljb25Ub29sdGlwLmljb24gfHwgJ2luZm8nXCIgW3NpemVdPVwiMThcIiAvPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgQGZvciAoZXJyIG9mIHJlc29sdmVkRXJyb3JzKGZpZWxkQ29udHJvbCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdj57eyBlcnIgfX08L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxufSBAZWxzZSBpZiAoY29udHJvbCkge1xyXG4gIDxkaXYgY2xhc3M9XCJ1aS1mb3JtLWZpZWxkLWF0b21cIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19mdWxsLXdpZHRoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICBAaWYgKGVmZmVjdGl2ZUxhYmVsKSB7XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyBlZmZlY3RpdmVMYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoaXNDdXJyZW5jeSkge1xyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlZmZlY3RpdmVQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICB1aUN1cnJlbmN5SW5wdXRcclxuICAgICAgICAgIFtjdXJyZW5jeVN5bWJvbF09XCJlZmZlY3RpdmVDdXJyZW5jeVN5bWJvbFwiXHJcbiAgICAgICAgICBbZGVjaW1hbFBsYWNlc109XCJlZmZlY3RpdmVEZWNpbWFsUGxhY2VzXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlZmZlY3RpdmVQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgfVxyXG4gICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgIEBmb3IgKGVyciBvZiByZXNvbHZlZEVycm9ycyhjb250cm9sKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2Pnt7IGVyciB9fTwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==
|