@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,105 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, inject, } from '@angular/core';
|
|
2
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { MatRadioModule } from '@angular/material/radio';
|
|
4
|
+
import { LucideAngularModule } from 'lucide-angular';
|
|
5
|
+
import { UiFormFieldErrorService } from '../../services/form-field-error.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
import * as i2 from "@angular/material/radio";
|
|
9
|
+
import * as i3 from "lucide-angular";
|
|
10
|
+
/**
|
|
11
|
+
|
|
12
|
+
* Campo atomico radio group — stesso rendering del form-builder.
|
|
13
|
+
|
|
14
|
+
*
|
|
15
|
+
|
|
16
|
+
* @selector ui-form-radio-field
|
|
17
|
+
|
|
18
|
+
*/
|
|
19
|
+
export class UiFormRadioFieldComponent {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.fieldErrorService = inject(UiFormFieldErrorService);
|
|
22
|
+
this.readonly = false;
|
|
23
|
+
this.errors = null;
|
|
24
|
+
this.options = [];
|
|
25
|
+
/** Indica asterisco obbligatorio (builder: `isFieldRequired`). */
|
|
26
|
+
this.required = false;
|
|
27
|
+
/** Override visibilità errori; se null deriva dal controllo. */
|
|
28
|
+
this.showErrors = null;
|
|
29
|
+
this.errorDisplayOptions = {};
|
|
30
|
+
this.color = 'primary';
|
|
31
|
+
this.blurred = new EventEmitter();
|
|
32
|
+
}
|
|
33
|
+
get effectiveLabel() {
|
|
34
|
+
return this.field?.label ?? this.label ?? '';
|
|
35
|
+
}
|
|
36
|
+
get isDisabled() {
|
|
37
|
+
return this.readonly || this.field?.readonly === true || this.field?.disabled === true;
|
|
38
|
+
}
|
|
39
|
+
get effectiveOptions() {
|
|
40
|
+
return this.options;
|
|
41
|
+
}
|
|
42
|
+
get effectiveColor() {
|
|
43
|
+
return this.field?.appearance?.color ?? this.color;
|
|
44
|
+
}
|
|
45
|
+
get effectiveRules() {
|
|
46
|
+
return this.field?.validation ?? this.validationRules ?? [];
|
|
47
|
+
}
|
|
48
|
+
get showRequiredMarker() {
|
|
49
|
+
if (this.required)
|
|
50
|
+
return true;
|
|
51
|
+
return this.effectiveRules.some((r) => r.type === 'required' && !r.conditions?.length);
|
|
52
|
+
}
|
|
53
|
+
get fieldControl() {
|
|
54
|
+
if (!this.field || !this.formGroup)
|
|
55
|
+
return null;
|
|
56
|
+
const c = this.formGroup.get(this.field.key);
|
|
57
|
+
return c instanceof FormControl ? c : null;
|
|
58
|
+
}
|
|
59
|
+
resolvedErrors(control) {
|
|
60
|
+
if (this.errors != null)
|
|
61
|
+
return this.errors;
|
|
62
|
+
return this.fieldErrorService.getFieldErrors(control, this.effectiveRules);
|
|
63
|
+
}
|
|
64
|
+
shouldShowErrors(control) {
|
|
65
|
+
if (this.showErrors != null)
|
|
66
|
+
return this.showErrors;
|
|
67
|
+
return this.fieldErrorService.shouldShowFieldErrors(control, this.errorDisplayOptions);
|
|
68
|
+
}
|
|
69
|
+
onBlur() {
|
|
70
|
+
this.blurred.emit();
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormRadioFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UiFormRadioFieldComponent, isStandalone: true, selector: "ui-form-radio-field", inputs: { field: "field", formGroup: "formGroup", readonly: "readonly", errors: "errors", options: "options", required: "required", showErrors: "showErrors", errorDisplayOptions: "errorDisplayOptions", control: "control", label: "label", validationRules: "validationRules", color: "color" }, outputs: { blurred: "blurred" }, ngImport: i0, template: "@if (field && formGroup) {\r\n <div [formGroup]=\"formGroup\" class=\"ui-fb-field-ctx\">\r\n <div class=\"ui-form-builder__radio-wrapper\">\r\n <label class=\"ui-form-builder__field-label\">\r\n {{ effectiveLabel }}\r\n @if (showRequiredMarker) {\r\n <span class=\"ui-form-builder__required\">*</span>\r\n }\r\n </label>\r\n <mat-radio-group\r\n [formControlName]=\"field.key\"\r\n [color]=\"effectiveColor\"\r\n (blur)=\"onBlur()\"\r\n >\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-radio-button [value]=\"opt.value\" [disabled]=\"opt.disabled || isDisabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" />\r\n }\r\n {{ opt.label }}\r\n </mat-radio-button>\r\n }\r\n </mat-radio-group>\r\n @if (shouldShowErrors(fieldControl)) {\r\n <div class=\"ui-form-builder__field-error\">\r\n @for (err of resolvedErrors(fieldControl); track $index) {\r\n <span>{{ err }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n} @else if (control) {\r\n <div class=\"ui-form-field-atom ui-form-builder__radio-wrapper\">\r\n @if (effectiveLabel) {\r\n <label class=\"ui-form-builder__field-label\">\r\n {{ effectiveLabel }}\r\n @if (showRequiredMarker) {\r\n <span class=\"ui-form-builder__required\">*</span>\r\n }\r\n </label>\r\n }\r\n <mat-radio-group [formControl]=\"control\" [color]=\"effectiveColor\" (blur)=\"onBlur()\">\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-radio-button [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" />\r\n }\r\n {{ opt.label }}\r\n </mat-radio-button>\r\n }\r\n </mat-radio-group>\r\n @if (shouldShowErrors(control)) {\r\n <div class=\"ui-form-builder__field-error\">\r\n @for (err of resolvedErrors(control); track $index) {\r\n <span>{{ err }}</span>\r\n }\r\n </div>\r\n }\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.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: MatRadioModule }, { kind: "directive", type: i2.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i2.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i3.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 }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormRadioFieldComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'ui-form-radio-field', standalone: true, imports: [ReactiveFormsModule, MatRadioModule, LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if (field && formGroup) {\r\n <div [formGroup]=\"formGroup\" class=\"ui-fb-field-ctx\">\r\n <div class=\"ui-form-builder__radio-wrapper\">\r\n <label class=\"ui-form-builder__field-label\">\r\n {{ effectiveLabel }}\r\n @if (showRequiredMarker) {\r\n <span class=\"ui-form-builder__required\">*</span>\r\n }\r\n </label>\r\n <mat-radio-group\r\n [formControlName]=\"field.key\"\r\n [color]=\"effectiveColor\"\r\n (blur)=\"onBlur()\"\r\n >\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-radio-button [value]=\"opt.value\" [disabled]=\"opt.disabled || isDisabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" />\r\n }\r\n {{ opt.label }}\r\n </mat-radio-button>\r\n }\r\n </mat-radio-group>\r\n @if (shouldShowErrors(fieldControl)) {\r\n <div class=\"ui-form-builder__field-error\">\r\n @for (err of resolvedErrors(fieldControl); track $index) {\r\n <span>{{ err }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n} @else if (control) {\r\n <div class=\"ui-form-field-atom ui-form-builder__radio-wrapper\">\r\n @if (effectiveLabel) {\r\n <label class=\"ui-form-builder__field-label\">\r\n {{ effectiveLabel }}\r\n @if (showRequiredMarker) {\r\n <span class=\"ui-form-builder__required\">*</span>\r\n }\r\n </label>\r\n }\r\n <mat-radio-group [formControl]=\"control\" [color]=\"effectiveColor\" (blur)=\"onBlur()\">\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-radio-button [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" />\r\n }\r\n {{ opt.label }}\r\n </mat-radio-button>\r\n }\r\n </mat-radio-group>\r\n @if (shouldShowErrors(control)) {\r\n <div class=\"ui-form-builder__field-error\">\r\n @for (err of resolvedErrors(control); track $index) {\r\n <span>{{ err }}</span>\r\n }\r\n </div>\r\n }\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"] }]
|
|
78
|
+
}], propDecorators: { field: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], formGroup: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], readonly: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], errors: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], options: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], required: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], showErrors: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], errorDisplayOptions: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], control: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], label: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], validationRules: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], color: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], blurred: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}] } });
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yYWRpby1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tYnVpbGRlci9zdWItY29tcG9uZW50cy9mb3JtLWZpZWxkcy9mb3JtLXJhZGlvLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXVpLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1idWlsZGVyL3N1Yi1jb21wb25lbnRzL2Zvcm0tZmllbGRzL2Zvcm0tcmFkaW8tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEVBRU4saUJBQWlCLEVBRWpCLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSx1QkFBdUIsRUFBOEIsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7QUFROUc7Ozs7Ozs7O0dBUUc7QUFvQkgsTUFBTSxPQUFPLHlCQUF5QjtJQWxCdEM7UUFvQm1CLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBUTVELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsV0FBTSxHQUFvQixJQUFJLENBQUM7UUFFL0IsWUFBTyxHQUFvQixFQUFFLENBQUM7UUFFdkMsa0VBQWtFO1FBRXpELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUIsZ0VBQWdFO1FBRXZELGVBQVUsR0FBbUIsSUFBSSxDQUFDO1FBRWxDLHdCQUFtQixHQUErQixFQUFFLENBQUM7UUFVckQsVUFBSyxHQUFrQyxTQUFTLENBQUM7UUFJaEQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0E0RjlDO0lBeEZDLElBQUksY0FBYztRQUVoQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBRS9DLENBQUM7SUFJRCxJQUFJLFVBQVU7UUFFWixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLElBQUksQ0FBQztJQUV6RixDQUFDO0lBSUQsSUFBSSxnQkFBZ0I7UUFFbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBRXRCLENBQUM7SUFJRCxJQUFJLGNBQWM7UUFFaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztJQUVyRCxDQUFDO0lBSUQsSUFBSSxjQUFjO1FBRWhCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFFOUQsQ0FBQztJQUlELElBQUksa0JBQWtCO1FBRXBCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQztRQUUvQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFekYsQ0FBQztJQUlELElBQUksWUFBWTtRQUVkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVoRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdDLE9BQU8sQ0FBQyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFN0MsQ0FBQztJQUlELGNBQWMsQ0FBQyxPQUEyQjtRQUV4QyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUU1QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU3RSxDQUFDO0lBSUQsZ0JBQWdCLENBQUMsT0FBMkI7UUFFMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFcEQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXpGLENBQUM7SUFJRCxNQUFNO1FBRUosSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUV0QixDQUFDOytHQWhJVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixvWkM1RHRDLHlyRUE2REEsK3hJRGJZLG1CQUFtQixzd0JBQUUsY0FBYyxvbEJBQUUsbUJBQW1COzs0RkFZdkQseUJBQXlCO2tCQWxCckMsU0FBUzsrQkFFRSxxQkFBcUIsY0FFbkIsSUFBSSxXQUVQLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixDQUFDLG1CQUVsRCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUVoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQWM1QixLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUlJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcclxuICBDb21wb25lbnQsXHJcclxuICBFdmVudEVtaXR0ZXIsXHJcclxuICBJbnB1dCxcclxyXG4gIE91dHB1dCxcclxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXHJcbiAgaW5qZWN0LFxyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxyXG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxyXG5pbXBvcnQgeyBMdWNpZGVBbmd1bGFyTW9kdWxlIH0gZnJvbSAnbHVjaWRlLWFuZ3VsYXInO1xyXHJcbmltcG9ydCB7IFVpRm9ybUZpZWxkRXJyb3JTZXJ2aWNlLCBVaUZpZWxkRXJyb3JEaXNwbGF5T3B0aW9ucyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGQtZXJyb3Iuc2VydmljZSc7XHJcclxuaW1wb3J0IHsgVWlGaWVsZE9wdGlvbiwgVWlGb3JtRmllbGREZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vdHlwZXMvZmllbGQudHlwZXMnO1xyXHJcbmltcG9ydCB7IFVpVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuLi8uLi90eXBlcy92YWxpZGF0aW9uLnR5cGVzJztcclxyXG5cclxyXG4vKipcclxyXG4gKiBDYW1wbyBhdG9taWNvIHJhZGlvIGdyb3VwIOKAlCBzdGVzc28gcmVuZGVyaW5nIGRlbCBmb3JtLWJ1aWxkZXIuXHJcclxuICpcclxyXG4gKiBAc2VsZWN0b3IgdWktZm9ybS1yYWRpby1maWVsZFxyXHJcbiAqL1xyXHJcbkBDb21wb25lbnQoe1xyXHJcbiAgc2VsZWN0b3I6ICd1aS1mb3JtLXJhZGlvLWZpZWxkJyxcclxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcclxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0UmFkaW9Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGVdLFxyXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tcmFkaW8tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXHJcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tZmllbGRzLnNjc3MnLFxyXHJcbn0pXHJcclxuZXhwb3J0IGNsYXNzIFVpRm9ybVJhZGlvRmllbGRDb21wb25lbnQge1xyXHJcbiAgcHJpdmF0ZSByZWFkb25seSBmaWVsZEVycm9yU2VydmljZSA9IGluamVjdChVaUZvcm1GaWVsZEVycm9yU2VydmljZSk7XHJcclxuXHJcclxuICBASW5wdXQoKSBmaWVsZD86IFVpRm9ybUZpZWxkRGVzY3JpcHRvcjtcclxyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcclxyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcclxuICBASW5wdXQoKSBlcnJvcnM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XHJcclxuICBASW5wdXQoKSBvcHRpb25zOiBVaUZpZWxkT3B0aW9uW10gPSBbXTtcclxyXG4gIC8qKiBJbmRpY2EgYXN0ZXJpc2NvIG9iYmxpZ2F0b3JpbyAoYnVpbGRlcjogYGlzRmllbGRSZXF1aXJlZGApLiAqL1xyXHJcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcclxyXG4gIC8qKiBPdmVycmlkZSB2aXNpYmlsaXTDoCBlcnJvcmk7IHNlIG51bGwgZGVyaXZhIGRhbCBjb250cm9sbG8uICovXHJcclxuICBASW5wdXQoKSBzaG93RXJyb3JzOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XHJcclxuICBASW5wdXQoKSBlcnJvckRpc3BsYXlPcHRpb25zOiBVaUZpZWxkRXJyb3JEaXNwbGF5T3B0aW9ucyA9IHt9O1xyXHJcblxyXHJcbiAgQElucHV0KCkgY29udHJvbD86IEZvcm1Db250cm9sO1xyXHJcbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XHJcclxuICBASW5wdXQoKSB2YWxpZGF0aW9uUnVsZXM/OiBVaVZhbGlkYXRpb25SdWxlW107XHJcclxuICBASW5wdXQoKSBjb2xvcjogJ3ByaW1hcnknIHwgJ2FjY2VudCcgfCAnd2FybicgPSAncHJpbWFyeSc7XHJcclxuXHJcclxuICBAT3V0cHV0KCkgYmx1cnJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxyXG5cclxyXG4gIGdldCBlZmZlY3RpdmVMYWJlbCgpOiBzdHJpbmcge1xyXHJcbiAgICByZXR1cm4gdGhpcy5maWVsZD8ubGFiZWwgPz8gdGhpcy5sYWJlbCA/PyAnJztcclxyXG4gIH1cclxyXG5cclxyXG4gIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXHJcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmZpZWxkPy5yZWFkb25seSA9PT0gdHJ1ZSB8fCB0aGlzLmZpZWxkPy5kaXNhYmxlZCA9PT0gdHJ1ZTtcclxyXG4gIH1cclxyXG5cclxyXG4gIGdldCBlZmZlY3RpdmVPcHRpb25zKCk6IFVpRmllbGRPcHRpb25bXSB7XHJcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XHJcclxuICB9XHJcclxuXHJcclxuICBnZXQgZWZmZWN0aXZlQ29sb3IoKTogJ3ByaW1hcnknIHwgJ2FjY2VudCcgfCAnd2Fybicge1xyXHJcbiAgICByZXR1cm4gdGhpcy5maWVsZD8uYXBwZWFyYW5jZT8uY29sb3IgPz8gdGhpcy5jb2xvcjtcclxyXG4gIH1cclxyXG5cclxyXG4gIGdldCBlZmZlY3RpdmVSdWxlcygpOiBVaVZhbGlkYXRpb25SdWxlW10ge1xyXHJcbiAgICByZXR1cm4gdGhpcy5maWVsZD8udmFsaWRhdGlvbiA/PyB0aGlzLnZhbGlkYXRpb25SdWxlcyA/PyBbXTtcclxyXG4gIH1cclxyXG5cclxyXG4gIGdldCBzaG93UmVxdWlyZWRNYXJrZXIoKTogYm9vbGVhbiB7XHJcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSByZXR1cm4gdHJ1ZTtcclxyXG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0aXZlUnVsZXMuc29tZSgocikgPT4gci50eXBlID09PSAncmVxdWlyZWQnICYmICFyLmNvbmRpdGlvbnM/Lmxlbmd0aCk7XHJcclxuICB9XHJcclxuXHJcclxuICBnZXQgZmllbGRDb250cm9sKCk6IEZvcm1Db250cm9sIHwgbnVsbCB7XHJcclxuICAgIGlmICghdGhpcy5maWVsZCB8fCAhdGhpcy5mb3JtR3JvdXApIHJldHVybiBudWxsO1xyXHJcbiAgICBjb25zdCBjID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZmllbGQua2V5KTtcclxyXG4gICAgcmV0dXJuIGMgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCA/IGMgOiBudWxsO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgcmVzb2x2ZWRFcnJvcnMoY29udHJvbDogRm9ybUNvbnRyb2wgfCBudWxsKTogc3RyaW5nW10ge1xyXHJcbiAgICBpZiAodGhpcy5lcnJvcnMgIT0gbnVsbCkgcmV0dXJuIHRoaXMuZXJyb3JzO1xyXHJcbiAgICByZXR1cm4gdGhpcy5maWVsZEVycm9yU2VydmljZS5nZXRGaWVsZEVycm9ycyhjb250cm9sLCB0aGlzLmVmZmVjdGl2ZVJ1bGVzKTtcclxyXG4gIH1cclxyXG5cclxyXG4gIHNob3VsZFNob3dFcnJvcnMoY29udHJvbDogRm9ybUNvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcclxuICAgIGlmICh0aGlzLnNob3dFcnJvcnMgIT0gbnVsbCkgcmV0dXJuIHRoaXMuc2hvd0Vycm9ycztcclxyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRFcnJvclNlcnZpY2Uuc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKGNvbnRyb2wsIHRoaXMuZXJyb3JEaXNwbGF5T3B0aW9ucyk7XHJcclxuICB9XHJcclxuXHJcclxuICBvbkJsdXIoKTogdm9pZCB7XHJcclxuICAgIHRoaXMuYmx1cnJlZC5lbWl0KCk7XHJcclxuICB9XHJcclxufVxyXHJcblxyIiwiQGlmIChmaWVsZCAmJiBmb3JtR3JvdXApIHtcclxuICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJ1aS1mYi1maWVsZC1jdHhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1aS1mb3JtLWJ1aWxkZXJfX3JhZGlvLXdyYXBwZXJcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19maWVsZC1sYWJlbFwiPlxyXG4gICAgICAgIHt7IGVmZmVjdGl2ZUxhYmVsIH19XHJcbiAgICAgICAgQGlmIChzaG93UmVxdWlyZWRNYXJrZXIpIHtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19yZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5rZXlcIlxyXG4gICAgICAgIFtjb2xvcl09XCJlZmZlY3RpdmVDb2xvclwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQGZvciAob3B0IG9mIGVmZmVjdGl2ZU9wdGlvbnM7IHRyYWNrIG9wdC52YWx1ZSkge1xyXG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cIm9wdC52YWx1ZVwiIFtkaXNhYmxlZF09XCJvcHQuZGlzYWJsZWQgfHwgaXNEaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICBAaWYgKG9wdC5pY29uKSB7XHJcbiAgICAgICAgICAgICAgPGx1Y2lkZS1pY29uIFtuYW1lXT1cIm9wdC5pY29uXCIgW3NpemVdPVwiMTZcIiAvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHt7IG9wdC5sYWJlbCB9fVxyXG4gICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICAgIEBpZiAoc2hvdWxkU2hvd0Vycm9ycyhmaWVsZENvbnRyb2wpKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVpLWZvcm0tYnVpbGRlcl9fZmllbGQtZXJyb3JcIj5cclxuICAgICAgICAgIEBmb3IgKGVyciBvZiByZXNvbHZlZEVycm9ycyhmaWVsZENvbnRyb2wpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPHNwYW4+e3sgZXJyIH19PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxufSBAZWxzZSBpZiAoY29udHJvbCkge1xyXG4gIDxkaXYgY2xhc3M9XCJ1aS1mb3JtLWZpZWxkLWF0b20gdWktZm9ybS1idWlsZGVyX19yYWRpby13cmFwcGVyXCI+XHJcbiAgICBAaWYgKGVmZmVjdGl2ZUxhYmVsKSB7XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInVpLWZvcm0tYnVpbGRlcl9fZmllbGQtbGFiZWxcIj5cclxuICAgICAgICB7eyBlZmZlY3RpdmVMYWJlbCB9fVxyXG4gICAgICAgIEBpZiAoc2hvd1JlcXVpcmVkTWFya2VyKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVpLWZvcm0tYnVpbGRlcl9fcmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9sYWJlbD5cclxuICAgIH1cclxuICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBbY29sb3JdPVwiZWZmZWN0aXZlQ29sb3JcIiAoYmx1cik9XCJvbkJsdXIoKVwiPlxyXG4gICAgICBAZm9yIChvcHQgb2YgZWZmZWN0aXZlT3B0aW9uczsgdHJhY2sgb3B0LnZhbHVlKSB7XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cIm9wdC52YWx1ZVwiIFtkaXNhYmxlZF09XCJvcHQuZGlzYWJsZWRcIj5cclxuICAgICAgICAgIEBpZiAob3B0Lmljb24pIHtcclxuICAgICAgICAgICAgPGx1Y2lkZS1pY29uIFtuYW1lXT1cIm9wdC5pY29uXCIgW3NpemVdPVwiMTZcIiAvPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAge3sgb3B0LmxhYmVsIH19XHJcbiAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgIEBpZiAoc2hvdWxkU2hvd0Vycm9ycyhjb250cm9sKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19maWVsZC1lcnJvclwiPlxyXG4gICAgICAgIEBmb3IgKGVyciBvZiByZXNvbHZlZEVycm9ycyhjb250cm9sKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICA8c3Bhbj57eyBlcnIgfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,126 @@
|
|
|
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 { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
5
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
+
import { MatInputModule } from '@angular/material/input';
|
|
7
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
8
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
9
|
+
import { LucideAngularModule } from 'lucide-angular';
|
|
10
|
+
import { UiFormErrorStateMatcher } from '../../services/form-error-state.matcher';
|
|
11
|
+
import { UiFormFieldErrorService } from '../../services/form-field-error.service';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@angular/forms";
|
|
14
|
+
import * as i2 from "@angular/material/form-field";
|
|
15
|
+
import * as i3 from "@angular/material/input";
|
|
16
|
+
import * as i4 from "@angular/material/select";
|
|
17
|
+
import * as i5 from "@angular/material/core";
|
|
18
|
+
import * as i6 from "@angular/material/autocomplete";
|
|
19
|
+
import * as i7 from "@angular/material/tooltip";
|
|
20
|
+
import * as i8 from "lucide-angular";
|
|
21
|
+
/**
|
|
22
|
+
|
|
23
|
+
* Campo atomico select (mat-select o autocomplete searchable).
|
|
24
|
+
|
|
25
|
+
*
|
|
26
|
+
|
|
27
|
+
* @selector ui-form-select-field
|
|
28
|
+
|
|
29
|
+
*/
|
|
30
|
+
export class UiFormSelectFieldComponent {
|
|
31
|
+
constructor() {
|
|
32
|
+
this.fieldErrorService = inject(UiFormFieldErrorService);
|
|
33
|
+
this.readonly = false;
|
|
34
|
+
this.errors = null;
|
|
35
|
+
this.options = [];
|
|
36
|
+
this.searchable = false;
|
|
37
|
+
this.hideEmptyOption = false;
|
|
38
|
+
this.optionsFilter = new EventEmitter();
|
|
39
|
+
this.blurred = new EventEmitter();
|
|
40
|
+
this.displayWith = (value) => {
|
|
41
|
+
const opt = this.effectiveOptions.find((o) => o.value === value);
|
|
42
|
+
return opt?.label ?? '';
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
get effectiveLabel() {
|
|
46
|
+
return this.field?.label ?? this.label ?? '';
|
|
47
|
+
}
|
|
48
|
+
get effectivePlaceholder() {
|
|
49
|
+
return this.field?.placeholder ?? this.placeholder ?? '';
|
|
50
|
+
}
|
|
51
|
+
get isReadonly() {
|
|
52
|
+
return this.readonly || this.field?.readonly === true;
|
|
53
|
+
}
|
|
54
|
+
get isSearchable() {
|
|
55
|
+
return this.field?.searchable === true || this.searchable;
|
|
56
|
+
}
|
|
57
|
+
get showEmptyOption() {
|
|
58
|
+
if (this.field)
|
|
59
|
+
return !this.field.hideEmptyOption;
|
|
60
|
+
return !this.hideEmptyOption;
|
|
61
|
+
}
|
|
62
|
+
get effectiveOptions() {
|
|
63
|
+
return this.options;
|
|
64
|
+
}
|
|
65
|
+
get effectiveRules() {
|
|
66
|
+
return this.field?.validation ?? this.validationRules ?? [];
|
|
67
|
+
}
|
|
68
|
+
get fieldControl() {
|
|
69
|
+
if (!this.field || !this.formGroup)
|
|
70
|
+
return null;
|
|
71
|
+
const c = this.formGroup.get(this.field.key);
|
|
72
|
+
return c instanceof FormControl ? c : null;
|
|
73
|
+
}
|
|
74
|
+
resolvedErrors(control) {
|
|
75
|
+
if (this.errors != null)
|
|
76
|
+
return this.errors;
|
|
77
|
+
return this.fieldErrorService.getFieldErrors(control, this.effectiveRules);
|
|
78
|
+
}
|
|
79
|
+
onInput(query) {
|
|
80
|
+
this.optionsFilter.emit(query);
|
|
81
|
+
}
|
|
82
|
+
onBlur() {
|
|
83
|
+
this.blurred.emit();
|
|
84
|
+
}
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormSelectFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UiFormSelectFieldComponent, isStandalone: true, selector: "ui-form-select-field", inputs: { field: "field", formGroup: "formGroup", readonly: "readonly", errors: "errors", options: "options", control: "control", label: "label", placeholder: "placeholder", searchable: "searchable", hideEmptyOption: "hideEmptyOption", validationRules: "validationRules" }, outputs: { optionsFilter: "optionsFilter", 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 @if (isSearchable) {\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"field.key\"\r\n [matAutocomplete]=\"selectAuto\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <mat-autocomplete #selectAuto=\"matAutocomplete\" [displayWith]=\"displayWith\">\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" class=\"ui-form-builder__option-icon\" />\r\n }\r\n {{ opt.label }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\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 } @else {\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n <mat-select [formControlName]=\"field.key\" [placeholder]=\"effectivePlaceholder\">\r\n @if (showEmptyOption) {\r\n <mat-option [value]=\"null\">--</mat-option>\r\n }\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" class=\"ui-form-builder__option-icon\" />\r\n }\r\n {{ opt.label }}\r\n @if (opt.tooltip) {\r\n <lucide-icon\r\n name=\"info\"\r\n [size]=\"14\"\r\n [matTooltip]=\"opt.tooltip\"\r\n class=\"ui-form-builder__option-info\"\r\n />\r\n }\r\n </mat-option>\r\n }\r\n </mat-select>\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 }\r\n </div>\r\n} @else if (control) {\r\n <div class=\"ui-form-field-atom\">\r\n @if (isSearchable) {\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 <input\r\n matInput\r\n [formControl]=\"control\"\r\n [matAutocomplete]=\"selectAutoStandalone\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <mat-autocomplete #selectAutoStandalone=\"matAutocomplete\" [displayWith]=\"displayWith\">\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" class=\"ui-form-builder__option-icon\" />\r\n }\r\n {{ opt.label }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\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 } @else {\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 <mat-select [formControl]=\"control\" [placeholder]=\"effectivePlaceholder\">\r\n @if (showEmptyOption) {\r\n <mat-option [value]=\"null\">--</mat-option>\r\n }\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" class=\"ui-form-builder__option-icon\" />\r\n }\r\n {{ opt.label }}\r\n @if (opt.tooltip) {\r\n <lucide-icon\r\n name=\"info\"\r\n [size]=\"14\"\r\n [matTooltip]=\"opt.tooltip\"\r\n class=\"ui-form-builder__option-info\"\r\n />\r\n }\r\n </mat-option>\r\n }\r\n </mat-select>\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 }\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.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: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i8.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 }); }
|
|
87
|
+
}
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormSelectFieldComponent, decorators: [{
|
|
89
|
+
type: Component,
|
|
90
|
+
args: [{ selector: 'ui-form-select-field', standalone: true, imports: [
|
|
91
|
+
ReactiveFormsModule,
|
|
92
|
+
MatFormFieldModule,
|
|
93
|
+
MatInputModule,
|
|
94
|
+
MatSelectModule,
|
|
95
|
+
MatAutocompleteModule,
|
|
96
|
+
MatTooltipModule,
|
|
97
|
+
LucideAngularModule,
|
|
98
|
+
], 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 @if (isSearchable) {\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"field.key\"\r\n [matAutocomplete]=\"selectAuto\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <mat-autocomplete #selectAuto=\"matAutocomplete\" [displayWith]=\"displayWith\">\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" class=\"ui-form-builder__option-icon\" />\r\n }\r\n {{ opt.label }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\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 } @else {\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n <mat-select [formControlName]=\"field.key\" [placeholder]=\"effectivePlaceholder\">\r\n @if (showEmptyOption) {\r\n <mat-option [value]=\"null\">--</mat-option>\r\n }\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" class=\"ui-form-builder__option-icon\" />\r\n }\r\n {{ opt.label }}\r\n @if (opt.tooltip) {\r\n <lucide-icon\r\n name=\"info\"\r\n [size]=\"14\"\r\n [matTooltip]=\"opt.tooltip\"\r\n class=\"ui-form-builder__option-info\"\r\n />\r\n }\r\n </mat-option>\r\n }\r\n </mat-select>\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 }\r\n </div>\r\n} @else if (control) {\r\n <div class=\"ui-form-field-atom\">\r\n @if (isSearchable) {\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 <input\r\n matInput\r\n [formControl]=\"control\"\r\n [matAutocomplete]=\"selectAutoStandalone\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <mat-autocomplete #selectAutoStandalone=\"matAutocomplete\" [displayWith]=\"displayWith\">\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" class=\"ui-form-builder__option-icon\" />\r\n }\r\n {{ opt.label }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\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 } @else {\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 <mat-select [formControl]=\"control\" [placeholder]=\"effectivePlaceholder\">\r\n @if (showEmptyOption) {\r\n <mat-option [value]=\"null\">--</mat-option>\r\n }\r\n @for (opt of effectiveOptions; track opt.value) {\r\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\r\n @if (opt.icon) {\r\n <lucide-icon [name]=\"opt.icon\" [size]=\"16\" class=\"ui-form-builder__option-icon\" />\r\n }\r\n {{ opt.label }}\r\n @if (opt.tooltip) {\r\n <lucide-icon\r\n name=\"info\"\r\n [size]=\"14\"\r\n [matTooltip]=\"opt.tooltip\"\r\n class=\"ui-form-builder__option-info\"\r\n />\r\n }\r\n </mat-option>\r\n }\r\n </mat-select>\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 }\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"] }]
|
|
99
|
+
}], propDecorators: { field: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], formGroup: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], readonly: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], errors: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], options: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], control: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], label: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], placeholder: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], searchable: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], hideEmptyOption: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], validationRules: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], optionsFilter: [{
|
|
122
|
+
type: Output
|
|
123
|
+
}], blurred: [{
|
|
124
|
+
type: Output
|
|
125
|
+
}] } });
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvc3ViLWNvbXBvbmVudHMvZm9ybS1maWVsZHMvZm9ybS1zZWxlY3QtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvc3ViLWNvbXBvbmVudHMvZm9ybS1maWVsZHMvZm9ybS1zZWxlY3QtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEVBRU4saUJBQWlCLEVBRWpCLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMs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QyxJQUFJLEVBQUUsQ0FBQztJQUV0QixDQUFDOytHQTVJVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixzWkFSMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQywwQkNsRmhGLHVqTEEySUEsK3hJRDdFSSxtQkFBbUIsc2hDQUVuQixrQkFBa0Isd2dCQUVsQixjQUFjLDBXQUVkLGVBQWUsbXJCQUVmLHFCQUFxQix1ckJBRXJCLGdCQUFnQiw0VEFFaEIsbUJBQW1COzs0RkFnQlYsMEJBQTBCO2tCQXBDdEMsU0FBUzsrQkFFRSxzQkFBc0IsY0FFcEIsSUFBSSxXQUVQO3dCQUVQLG1CQUFtQjt3QkFFbkIsa0JBQWtCO3dCQUVsQixjQUFjO3dCQUVkLGVBQWU7d0JBRWYscUJBQXFCO3dCQUVyQixnQkFBZ0I7d0JBRWhCLG1CQUFtQjtxQkFFcEIsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0saUJBRWhDLGlCQUFpQixDQUFDLElBQUksYUFFMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQzs4QkFjckUsS0FBSztzQkFBYixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcclxuICBDb21wb25lbnQsXHJcclxuICBFdmVudEVtaXR0ZXIsXHJcclxuICBJbnB1dCxcclxyXG4gIE91dHB1dCxcclxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXHJcbiAgaW5qZWN0LFxyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcclxuaW1wb3J0IHsgTHVjaWRlQW5ndWxhck1vZHVsZSB9IGZyb20gJ2x1Y2lkZS1hbmd1bGFyJztcclxyXG5pbXBvcnQgeyBVaUZvcm1FcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZXJyb3Itc3RhdGUubWF0Y2hlcic7XHJcclxuaW1wb3J0IHsgVWlGb3JtRmllbGRFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLWZpZWxkLWVycm9yLnNlcnZpY2UnO1xyXHJcbmltcG9ydCB7IFVpRmllbGRPcHRpb24sIFVpRm9ybUZpZWxkRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL3R5cGVzL2ZpZWxkLnR5cGVzJztcclxyXG5pbXBvcnQgeyBVaVZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdmFsaWRhdGlvbi50eXBlcyc7XHJcclxuXHJcclxuLyoqXHJcclxuICogQ2FtcG8gYXRvbWljbyBzZWxlY3QgKG1hdC1zZWxlY3QgbyBhdXRvY29tcGxldGUgc2VhcmNoYWJsZSkuXHJcclxuICpcclxyXG4gKiBAc2VsZWN0b3IgdWktZm9ybS1zZWxlY3QtZmllbGRcclxyXG4gKi9cclxyXG5AQ29tcG9uZW50KHtcclxyXG4gIHNlbGVjdG9yOiAndWktZm9ybS1zZWxlY3QtZmllbGQnLFxyXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxyXG4gIGltcG9ydHM6IFtcclxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcclxuICAgIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsXHJcclxuICBdLFxyXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBFcnJvclN0YXRlTWF0Y2hlciwgdXNlQ2xhc3M6IFVpRm9ybUVycm9yU3RhdGVNYXRjaGVyIH1dLFxyXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tc2VsZWN0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxyXG4gIHN0eWxlVXJsOiAnLi9mb3JtLWZpZWxkcy5zY3NzJyxcclxyXG59KVxyXHJcbmV4cG9ydCBjbGFzcyBVaUZvcm1TZWxlY3RGaWVsZENvbXBvbmVudCB7XHJcclxuICBwcml2YXRlIHJlYWRvbmx5IGZpZWxkRXJyb3JTZXJ2aWNlID0gaW5qZWN0KFVpRm9ybUZpZWxkRXJyb3JTZXJ2aWNlKTtcclxyXG5cclxyXG4gIEBJbnB1dCgpIGZpZWxkPzogVWlGb3JtRmllbGREZXNjcmlwdG9yO1xyXHJcbiAgQElucHV0KCkgZm9ybUdyb3VwPzogRm9ybUdyb3VwO1xyXHJcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxyXG4gIEBJbnB1dCgpIGVycm9yczogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcclxyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFVpRmllbGRPcHRpb25bXSA9IFtdO1xyXHJcblxyXHJcbiAgQElucHV0KCkgY29udHJvbD86IEZvcm1Db250cm9sO1xyXHJcbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XHJcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcclxyXG4gIEBJbnB1dCgpIHNlYXJjaGFibGUgPSBmYWxzZTtcclxyXG4gIEBJbnB1dCgpIGhpZGVFbXB0eU9wdGlvbiA9IGZhbHNlO1xyXHJcbiAgQElucHV0KCkgdmFsaWRhdGlvblJ1bGVzPzogVWlWYWxpZGF0aW9uUnVsZVtdO1xyXHJcblxyXHJcbiAgQE91dHB1dCgpIG9wdGlvbnNGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxyXG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXHJcblxyXHJcbiAgZ2V0IGVmZmVjdGl2ZUxhYmVsKCk6IHN0cmluZyB7XHJcclxuICAgIHJldHVybiB0aGlzLmZpZWxkPy5sYWJlbCA/PyB0aGlzLmxhYmVsID8/ICcnO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgZ2V0IGVmZmVjdGl2ZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcclxuICAgIHJldHVybiB0aGlzLmZpZWxkPy5wbGFjZWhvbGRlciA/PyB0aGlzLnBsYWNlaG9sZGVyID8/ICcnO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgZ2V0IGlzUmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZmllbGQ/LnJlYWRvbmx5ID09PSB0cnVlO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgZ2V0IGlzU2VhcmNoYWJsZSgpOiBib29sZWFuIHtcclxyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQ/LnNlYXJjaGFibGUgPT09IHRydWUgfHwgdGhpcy5zZWFyY2hhYmxlO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgZ2V0IHNob3dFbXB0eU9wdGlvbigpOiBib29sZWFuIHtcclxyXG4gICAgaWYgKHRoaXMuZmllbGQpIHJldHVybiAhdGhpcy5maWVsZC5oaWRlRW1wdHlPcHRpb247XHJcclxuICAgIHJldHVybiAhdGhpcy5oaWRlRW1wdHlPcHRpb247XHJcclxuICB9XHJcclxuXHJcclxuICBnZXQgZWZmZWN0aXZlT3B0aW9ucygpOiBVaUZpZWxkT3B0aW9uW10ge1xyXHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgZ2V0IGVmZmVjdGl2ZVJ1bGVzKCk6IFVpVmFsaWRhdGlvblJ1bGVbXSB7XHJcclxuICAgIHJldHVybiB0aGlzLmZpZWxkPy52YWxpZGF0aW9uID8/IHRoaXMudmFsaWRhdGlvblJ1bGVzID8/IFtdO1xyXHJcbiAgfVxyXHJcblxyXHJcbiAgZ2V0IGZpZWxkQ29udHJvbCgpOiBGb3JtQ29udHJvbCB8IG51bGwge1xyXHJcbiAgICBpZiAoIXRoaXMuZmllbGQgfHwgIXRoaXMuZm9ybUdyb3VwKSByZXR1cm4gbnVsbDtcclxyXG4gICAgY29uc3QgYyA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZpZWxkLmtleSk7XHJcclxuICAgIHJldHVybiBjIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wgPyBjIDogbnVsbDtcclxyXG4gIH1cclxyXG5cclxyXG4gIHJlc29sdmVkRXJyb3JzKGNvbnRyb2w6IEZvcm1Db250cm9sIHwgbnVsbCk6IHN0cmluZ1tdIHtcclxyXG4gICAgaWYgKHRoaXMuZXJyb3JzICE9IG51bGwpIHJldHVybiB0aGlzLmVycm9ycztcclxyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRFcnJvclNlcnZpY2UuZ2V0RmllbGRFcnJvcnMoY29udHJvbCwgdGhpcy5lZmZlY3RpdmVSdWxlcyk7XHJcclxuICB9XHJcclxuXHJcclxuICBkaXNwbGF5V2l0aCA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XHJcclxuICAgIGNvbnN0IG9wdCA9IHRoaXMuZWZmZWN0aXZlT3B0aW9ucy5maW5kKChvKSA9PiBvLnZhbHVlID09PSB2YWx1ZSk7XHJcclxuICAgIHJldHVybiBvcHQ/LmxhYmVsID8/ICcnO1xyXHJcbiAgfTtcclxyXG5cclxyXG4gIG9uSW5wdXQocXVlcnk6IHN0cmluZyk6IHZvaWQge1xyXHJcbiAgICB0aGlzLm9wdGlvbnNGaWx0ZXIuZW1pdChxdWVyeSk7XHJcclxuICB9XHJcclxuXHJcclxuICBvbkJsdXIoKTogdm9pZCB7XHJcclxuICAgIHRoaXMuYmx1cnJlZC5lbWl0KCk7XHJcclxuICB9XHJcclxufVxyXHJcblxyIiwiQGlmIChmaWVsZCAmJiBmb3JtR3JvdXApIHtcclxuICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJ1aS1mYi1maWVsZC1jdHhcIj5cclxuICAgIEBpZiAoaXNTZWFyY2hhYmxlKSB7XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19mdWxsLXdpZHRoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgZWZmZWN0aXZlTGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmtleVwiXHJcbiAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cInNlbGVjdEF1dG9cIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVmZmVjdGl2ZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJpc1JlYWRvbmx5XCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNzZWxlY3RBdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlXaXRoXCI+XHJcbiAgICAgICAgICBAZm9yIChvcHQgb2YgZWZmZWN0aXZlT3B0aW9uczsgdHJhY2sgb3B0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJvcHQudmFsdWVcIiBbZGlzYWJsZWRdPVwib3B0LmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgQGlmIChvcHQuaWNvbikge1xyXG4gICAgICAgICAgICAgICAgPGx1Y2lkZS1pY29uIFtuYW1lXT1cIm9wdC5pY29uXCIgW3NpemVdPVwiMTZcIiBjbGFzcz1cInVpLWZvcm0tYnVpbGRlcl9fb3B0aW9uLWljb25cIiAvPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB7eyBvcHQubGFiZWwgfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgQGZvciAoZXJyIG9mIHJlc29sdmVkRXJyb3JzKGZpZWxkQ29udHJvbCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8ZGl2Pnt7IGVyciB9fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19mdWxsLXdpZHRoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgZWZmZWN0aXZlTGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmtleVwiIFtwbGFjZWhvbGRlcl09XCJlZmZlY3RpdmVQbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgQGlmIChzaG93RW1wdHlPcHRpb24pIHtcclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm51bGxcIj4tLTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBmb3IgKG9wdCBvZiBlZmZlY3RpdmVPcHRpb25zOyB0cmFjayBvcHQudmFsdWUpIHtcclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdC52YWx1ZVwiIFtkaXNhYmxlZF09XCJvcHQuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICBAaWYgKG9wdC5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICA8bHVjaWRlLWljb24gW25hbWVdPVwib3B0Lmljb25cIiBbc2l6ZV09XCIxNlwiIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19vcHRpb24taWNvblwiIC8+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHt7IG9wdC5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIEBpZiAob3B0LnRvb2x0aXApIHtcclxuICAgICAgICAgICAgICAgIDxsdWNpZGUtaWNvblxyXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiaW5mb1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwib3B0LnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInVpLWZvcm0tYnVpbGRlcl9fb3B0aW9uLWluZm9cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgQGlmIChmaWVsZC5pY29uVG9vbHRpcCkge1xyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5pY29uVG9vbHRpcC50ZXh0XCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5pY29uVG9vbHRpcC50ZXh0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGx1Y2lkZS1pY29uIFtuYW1lXT1cImZpZWxkLmljb25Ub29sdGlwLmljb24gfHwgJ2luZm8nXCIgW3NpemVdPVwiMThcIiAvPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICBAZm9yIChlcnIgb2YgcmVzb2x2ZWRFcnJvcnMoZmllbGRDb250cm9sKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXY+e3sgZXJyIH19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbn0gQGVsc2UgaWYgKGNvbnRyb2wpIHtcclxuICA8ZGl2IGNsYXNzPVwidWktZm9ybS1maWVsZC1hdG9tXCI+XHJcbiAgICBAaWYgKGlzU2VhcmNoYWJsZSkge1xyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWZvcm0tYnVpbGRlcl9fZnVsbC13aWR0aFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cclxuICAgICAgICBAaWYgKGVmZmVjdGl2ZUxhYmVsKSB7XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnt7IGVmZmVjdGl2ZUxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwic2VsZWN0QXV0b1N0YW5kYWxvbmVcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVmZmVjdGl2ZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNzZWxlY3RBdXRvU3RhbmRhbG9uZT1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5V2l0aFwiPlxyXG4gICAgICAgICAgQGZvciAob3B0IG9mIGVmZmVjdGl2ZU9wdGlvbnM7IHRyYWNrIG9wdC52YWx1ZSkge1xyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0LnZhbHVlXCIgW2Rpc2FibGVkXT1cIm9wdC5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgIEBpZiAob3B0Lmljb24pIHtcclxuICAgICAgICAgICAgICAgIDxsdWNpZGUtaWNvbiBbbmFtZV09XCJvcHQuaWNvblwiIFtzaXplXT1cIjE2XCIgY2xhc3M9XCJ1aS1mb3JtLWJ1aWxkZXJfX29wdGlvbi1pY29uXCIgLz5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAge3sgb3B0LmxhYmVsIH19XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgIEBmb3IgKGVyciBvZiByZXNvbHZlZEVycm9ycyhjb250cm9sKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXY+e3sgZXJyIH19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ1aS1mb3JtLWJ1aWxkZXJfX2Z1bGwtd2lkdGhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgQGlmIChlZmZlY3RpdmVMYWJlbCkge1xyXG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBlZmZlY3RpdmVMYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFtwbGFjZWhvbGRlcl09XCJlZmZlY3RpdmVQbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgQGlmIChzaG93RW1wdHlPcHRpb24pIHtcclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm51bGxcIj4tLTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBmb3IgKG9wdCBvZiBlZmZlY3RpdmVPcHRpb25zOyB0cmFjayBvcHQudmFsdWUpIHtcclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdC52YWx1ZVwiIFtkaXNhYmxlZF09XCJvcHQuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICBAaWYgKG9wdC5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICA8bHVjaWRlLWljb24gW25hbWVdPVwib3B0Lmljb25cIiBbc2l6ZV09XCIxNlwiIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19vcHRpb24taWNvblwiIC8+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHt7IG9wdC5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIEBpZiAob3B0LnRvb2x0aXApIHtcclxuICAgICAgICAgICAgICAgIDxsdWNpZGUtaWNvblxyXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiaW5mb1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjE0XCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwib3B0LnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInVpLWZvcm0tYnVpbGRlcl9fb3B0aW9uLWluZm9cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgIEBmb3IgKGVyciBvZiByZXNvbHZlZEVycm9ycyhjb250cm9sKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXY+e3sgZXJyIH19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,147 @@
|
|
|
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 { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
7
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
8
|
+
import { LucideAngularModule } from 'lucide-angular';
|
|
9
|
+
import { UiFormFieldErrorService } from '../../services/form-field-error.service';
|
|
10
|
+
import { UiFormErrorStateMatcher } from '../../services/form-error-state.matcher';
|
|
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/autocomplete";
|
|
16
|
+
import * as i5 from "@angular/material/core";
|
|
17
|
+
import * as i6 from "@angular/material/tooltip";
|
|
18
|
+
import * as i7 from "lucide-angular";
|
|
19
|
+
/**
|
|
20
|
+
* Campo atomico text / email / password — stesso rendering del form-builder.
|
|
21
|
+
* Modalità builder: `field` + `formGroup`. Modalità standalone: `control` + `label`.
|
|
22
|
+
*
|
|
23
|
+
* @selector ui-form-text-field
|
|
24
|
+
*/
|
|
25
|
+
export class UiFormTextFieldComponent {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.fieldErrorService = inject(UiFormFieldErrorService);
|
|
28
|
+
/** Readonly globale dal form-builder. */
|
|
29
|
+
this.readonly = false;
|
|
30
|
+
/** Errori pre-calcolati dal builder; se null, derivati dal controllo. */
|
|
31
|
+
this.errors = null;
|
|
32
|
+
this.inputType = 'text';
|
|
33
|
+
/** Opzioni autocomplete (campo text searchable nel builder). */
|
|
34
|
+
this.options = [];
|
|
35
|
+
this.optionsFilter = new EventEmitter();
|
|
36
|
+
this.blurred = new EventEmitter();
|
|
37
|
+
}
|
|
38
|
+
/** True se il campo schema è text searchable. */
|
|
39
|
+
get isSearchableText() {
|
|
40
|
+
return this.field?.searchable === true && this.field?.type === 'text';
|
|
41
|
+
}
|
|
42
|
+
/** Etichetta effettiva. */
|
|
43
|
+
get effectiveLabel() {
|
|
44
|
+
return this.field?.label ?? this.label ?? '';
|
|
45
|
+
}
|
|
46
|
+
/** Placeholder effettivo. */
|
|
47
|
+
get effectivePlaceholder() {
|
|
48
|
+
return this.field?.placeholder ?? this.placeholder ?? '';
|
|
49
|
+
}
|
|
50
|
+
/** Tipo input HTML nativo. */
|
|
51
|
+
get nativeInputType() {
|
|
52
|
+
if (this.field) {
|
|
53
|
+
switch (this.field.type) {
|
|
54
|
+
case 'password':
|
|
55
|
+
return 'password';
|
|
56
|
+
case 'email':
|
|
57
|
+
return 'email';
|
|
58
|
+
default:
|
|
59
|
+
return 'text';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return this.inputType;
|
|
63
|
+
}
|
|
64
|
+
/** Readonly effettivo sul campo. */
|
|
65
|
+
get isReadonly() {
|
|
66
|
+
return this.readonly || this.field?.readonly === true;
|
|
67
|
+
}
|
|
68
|
+
/** Controllo risolto per modalità standalone. */
|
|
69
|
+
get resolvedControl() {
|
|
70
|
+
return this.control ?? null;
|
|
71
|
+
}
|
|
72
|
+
/** Regole validation per messaggi errore. */
|
|
73
|
+
get effectiveRules() {
|
|
74
|
+
return this.field?.validation ?? this.validationRules ?? [];
|
|
75
|
+
}
|
|
76
|
+
/** Max length da regole o input. */
|
|
77
|
+
get effectiveMaxLength() {
|
|
78
|
+
if (this.maxLength != null)
|
|
79
|
+
return this.maxLength;
|
|
80
|
+
return this.fieldErrorService.resolveMaxLength(this.effectiveRules);
|
|
81
|
+
}
|
|
82
|
+
/** Controllo del campo in modalità builder. */
|
|
83
|
+
get fieldControl() {
|
|
84
|
+
if (!this.field || !this.formGroup)
|
|
85
|
+
return null;
|
|
86
|
+
const c = this.formGroup.get(this.field.key);
|
|
87
|
+
return c instanceof FormControl ? c : null;
|
|
88
|
+
}
|
|
89
|
+
/** Messaggi errore da mostrare in mat-error. */
|
|
90
|
+
resolvedErrors(control) {
|
|
91
|
+
if (this.errors != null)
|
|
92
|
+
return this.errors;
|
|
93
|
+
return this.fieldErrorService.getFieldErrors(control, this.effectiveRules);
|
|
94
|
+
}
|
|
95
|
+
/** Conteggio caratteri (solo text con maxLength). */
|
|
96
|
+
charCount(control) {
|
|
97
|
+
if (this.field && this.field.type !== 'text')
|
|
98
|
+
return null;
|
|
99
|
+
return this.fieldErrorService.getCharCount(control, this.effectiveMaxLength);
|
|
100
|
+
}
|
|
101
|
+
onInput(query) {
|
|
102
|
+
this.optionsFilter.emit(query);
|
|
103
|
+
}
|
|
104
|
+
onBlur() {
|
|
105
|
+
this.blurred.emit();
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormTextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UiFormTextFieldComponent, isStandalone: true, selector: "ui-form-text-field", inputs: { field: "field", formGroup: "formGroup", readonly: "readonly", errors: "errors", control: "control", label: "label", placeholder: "placeholder", maxLength: "maxLength", inputType: "inputType", validationRules: "validationRules", options: "options" }, outputs: { optionsFilter: "optionsFilter", blurred: "blurred" }, providers: [{ provide: ErrorStateMatcher, useClass: UiFormErrorStateMatcher }], ngImport: i0, template: "@if (field && formGroup) {\r\n <div [formGroup]=\"formGroup\" class=\"ui-fb-text-ctx\">\r\n @if (isSearchableText) {\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"field.key\"\r\n [type]=\"nativeInputType\"\r\n [matAutocomplete]=\"textAuto\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <mat-autocomplete #textAuto=\"matAutocomplete\">\r\n @for (opt of options; track opt.value) {\r\n <mat-option [value]=\"opt.value\">{{ opt.label }}</mat-option>\r\n }\r\n </mat-autocomplete>\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 } @else {\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"field.key\"\r\n [type]=\"nativeInputType\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n (blur)=\"onBlur()\"\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 @if (charCount(fieldControl); as cc) {\r\n <mat-hint\r\n align=\"end\"\r\n class=\"ui-form-builder__char-count\"\r\n [class.ui-form-builder__char-count--warn]=\"cc.current > cc.max * 0.9\"\r\n [class.ui-form-builder__char-count--error]=\"cc.current > cc.max\"\r\n >\r\n {{ cc.current }} / {{ cc.max }}\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n }\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 <input\r\n matInput\r\n [formControl]=\"control\"\r\n [type]=\"nativeInputType\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [attr.maxlength]=\"effectiveMaxLength\"\r\n (blur)=\"onBlur()\"\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 @if (charCount(control); as cc) {\r\n <mat-hint\r\n align=\"end\"\r\n class=\"ui-form-builder__char-count\"\r\n [class.ui-form-builder__char-count--warn]=\"cc.current > cc.max * 0.9\"\r\n [class.ui-form-builder__char-count--error]=\"cc.current > cc.max\"\r\n >\r\n {{ cc.current }} / {{ cc.max }}\r\n </mat-hint>\r\n }\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.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.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { 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: MatAutocompleteModule }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: LucideAngularModule }, { kind: "component", type: i7.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 }); }
|
|
109
|
+
}
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormTextFieldComponent, decorators: [{
|
|
111
|
+
type: Component,
|
|
112
|
+
args: [{ selector: 'ui-form-text-field', standalone: true, imports: [
|
|
113
|
+
ReactiveFormsModule,
|
|
114
|
+
MatFormFieldModule,
|
|
115
|
+
MatInputModule,
|
|
116
|
+
MatAutocompleteModule,
|
|
117
|
+
MatTooltipModule,
|
|
118
|
+
LucideAngularModule,
|
|
119
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: ErrorStateMatcher, useClass: UiFormErrorStateMatcher }], template: "@if (field && formGroup) {\r\n <div [formGroup]=\"formGroup\" class=\"ui-fb-text-ctx\">\r\n @if (isSearchableText) {\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"field.key\"\r\n [type]=\"nativeInputType\"\r\n [matAutocomplete]=\"textAuto\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <mat-autocomplete #textAuto=\"matAutocomplete\">\r\n @for (opt of options; track opt.value) {\r\n <mat-option [value]=\"opt.value\">{{ opt.label }}</mat-option>\r\n }\r\n </mat-autocomplete>\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 } @else {\r\n <mat-form-field appearance=\"outline\" class=\"ui-form-builder__full-width\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{ effectiveLabel }}</mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"field.key\"\r\n [type]=\"nativeInputType\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [readonly]=\"isReadonly\"\r\n (blur)=\"onBlur()\"\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 @if (charCount(fieldControl); as cc) {\r\n <mat-hint\r\n align=\"end\"\r\n class=\"ui-form-builder__char-count\"\r\n [class.ui-form-builder__char-count--warn]=\"cc.current > cc.max * 0.9\"\r\n [class.ui-form-builder__char-count--error]=\"cc.current > cc.max\"\r\n >\r\n {{ cc.current }} / {{ cc.max }}\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n }\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 <input\r\n matInput\r\n [formControl]=\"control\"\r\n [type]=\"nativeInputType\"\r\n [placeholder]=\"effectivePlaceholder\"\r\n [attr.maxlength]=\"effectiveMaxLength\"\r\n (blur)=\"onBlur()\"\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 @if (charCount(control); as cc) {\r\n <mat-hint\r\n align=\"end\"\r\n class=\"ui-form-builder__char-count\"\r\n [class.ui-form-builder__char-count--warn]=\"cc.current > cc.max * 0.9\"\r\n [class.ui-form-builder__char-count--error]=\"cc.current > cc.max\"\r\n >\r\n {{ cc.current }} / {{ cc.max }}\r\n </mat-hint>\r\n }\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"] }]
|
|
120
|
+
}], propDecorators: { field: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], formGroup: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], readonly: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], errors: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], control: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], label: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], placeholder: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], maxLength: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], inputType: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}], validationRules: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], options: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], optionsFilter: [{
|
|
143
|
+
type: Output
|
|
144
|
+
}], blurred: [{
|
|
145
|
+
type: Output
|
|
146
|
+
}] } });
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZXh0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXVpLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1idWlsZGVyL3N1Yi1jb21wb25lbnRzL2Zvcm0tZmllbGRzL2Zvcm0tdGV4dC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tYnVpbGRlci9zdWItY29tcG9uZW50cy9mb3JtLWZpZWxkcy9mb3JtLXRleHQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7QUFJbEY7Ozs7O0dBS0c7QUFrQkgsTUFBTSxPQUFPLHdCQUF3QjtJQWpCckM7UUFrQm1CLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBTXJFLHlDQUF5QztRQUNoQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHlFQUF5RTtRQUNoRSxXQUFNLEdBQW9CLElBQUksQ0FBQztRQU8vQixjQUFTLEdBQWtDLE1BQU0sQ0FBQztRQUczRCxnRUFBZ0U7UUFDdkQsWUFBTyxHQUFvQixFQUFFLENBQUM7UUFDN0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBK0U5QztJQTdFQyxpREFBaUQ7SUFDakQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEtBQUssTUFBTSxDQUFDO0lBQ3hFLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsSUFBSSxlQUFlO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4QixLQUFLLFVBQVU7b0JBQ2IsT0FBTyxVQUFVLENBQUM7Z0JBQ3BCLEtBQUssT0FBTztvQkFDVixPQUFPLE9BQU8sQ0FBQztnQkFDakI7b0JBQ0UsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQ3hELENBQUM7SUFFRCxpREFBaUQ7SUFDakQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLElBQUksa0JBQWtCO1FBQ3BCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNoRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0MsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxjQUFjLENBQUMsT0FBMkI7UUFDeEMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxTQUFTLENBQUMsT0FBMkI7UUFDbkMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzsrR0FyR1Usd0JBQXdCO21HQUF4Qix3QkFBd0Isc1lBSnhCLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLENBQUMsMEJDeENoRixzb0hBa0dBLCt4SURuRUksbUJBQW1CLHNoQ0FDbkIsa0JBQWtCLGdtQkFDbEIsY0FBYywwV0FDZCxxQkFBcUIsdzFCQUNyQixnQkFBZ0IsNFRBQ2hCLG1CQUFtQjs7NEZBUVYsd0JBQXdCO2tCQWpCcEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7cUJBQ3BCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLENBQUM7OEJBUXJFLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBMdWNpZGVBbmd1bGFyTW9kdWxlIH0gZnJvbSAnbHVjaWRlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBVaUZvcm1GaWVsZEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGQtZXJyb3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpRm9ybUVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS1lcnJvci1zdGF0ZS5tYXRjaGVyJztcclxuaW1wb3J0IHsgVWlGb3JtRmllbGREZXNjcmlwdG9yLCBVaUZpZWxkT3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvZmllbGQudHlwZXMnO1xyXG5pbXBvcnQgeyBVaVZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdmFsaWRhdGlvbi50eXBlcyc7XHJcblxyXG4vKipcclxuICogQ2FtcG8gYXRvbWljbyB0ZXh0IC8gZW1haWwgLyBwYXNzd29yZCDigJQgc3Rlc3NvIHJlbmRlcmluZyBkZWwgZm9ybS1idWlsZGVyLlxyXG4gKiBNb2RhbGl0w6AgYnVpbGRlcjogYGZpZWxkYCArIGBmb3JtR3JvdXBgLiBNb2RhbGl0w6Agc3RhbmRhbG9uZTogYGNvbnRyb2xgICsgYGxhYmVsYC5cclxuICpcclxuICogQHNlbGVjdG9yIHVpLWZvcm0tdGV4dC1maWVsZFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1mb3JtLXRleHQtZmllbGQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRXJyb3JTdGF0ZU1hdGNoZXIsIHVzZUNsYXNzOiBVaUZvcm1FcnJvclN0YXRlTWF0Y2hlciB9XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS10ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9ybS1maWVsZHMuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUZvcm1UZXh0RmllbGRDb21wb25lbnQge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZmllbGRFcnJvclNlcnZpY2UgPSBpbmplY3QoVWlGb3JtRmllbGRFcnJvclNlcnZpY2UpO1xyXG5cclxuICAvKiogRGVzY3JpcHRvciBzY2hlbWEgKG1vZGFsaXTDoCBidWlsZGVyKS4gKi9cclxuICBASW5wdXQoKSBmaWVsZD86IFVpRm9ybUZpZWxkRGVzY3JpcHRvcjtcclxuICAvKiogRm9ybUdyb3VwIGRlbGwnaXN0YW56YSAobW9kYWxpdMOgIGJ1aWxkZXIpLiAqL1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcclxuICAvKiogUmVhZG9ubHkgZ2xvYmFsZSBkYWwgZm9ybS1idWlsZGVyLiAqL1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgLyoqIEVycm9yaSBwcmUtY2FsY29sYXRpIGRhbCBidWlsZGVyOyBzZSBudWxsLCBkZXJpdmF0aSBkYWwgY29udHJvbGxvLiAqL1xyXG4gIEBJbnB1dCgpIGVycm9yczogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIENvbnRyb2wgZGlyZXR0byAobW9kYWxpdMOgIHN0YW5kYWxvbmUgLyBDVkEpLiAqL1xyXG4gIEBJbnB1dCgpIGNvbnRyb2w/OiBGb3JtQ29udHJvbDtcclxuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgaW5wdXRUeXBlOiAndGV4dCcgfCAnZW1haWwnIHwgJ3Bhc3N3b3JkJyA9ICd0ZXh0JztcclxuICBASW5wdXQoKSB2YWxpZGF0aW9uUnVsZXM/OiBVaVZhbGlkYXRpb25SdWxlW107XHJcblxyXG4gIC8qKiBPcHppb25pIGF1dG9jb21wbGV0ZSAoY2FtcG8gdGV4dCBzZWFyY2hhYmxlIG5lbCBidWlsZGVyKS4gKi9cclxuICBASW5wdXQoKSBvcHRpb25zOiBVaUZpZWxkT3B0aW9uW10gPSBbXTtcclxuICBAT3V0cHV0KCkgb3B0aW9uc0ZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKiogVHJ1ZSBzZSBpbCBjYW1wbyBzY2hlbWEgw6ggdGV4dCBzZWFyY2hhYmxlLiAqL1xyXG4gIGdldCBpc1NlYXJjaGFibGVUZXh0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQ/LnNlYXJjaGFibGUgPT09IHRydWUgJiYgdGhpcy5maWVsZD8udHlwZSA9PT0gJ3RleHQnO1xyXG4gIH1cclxuXHJcbiAgLyoqIEV0aWNoZXR0YSBlZmZldHRpdmEuICovXHJcbiAgZ2V0IGVmZmVjdGl2ZUxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZD8ubGFiZWwgPz8gdGhpcy5sYWJlbCA/PyAnJztcclxuICB9XHJcblxyXG4gIC8qKiBQbGFjZWhvbGRlciBlZmZldHRpdm8uICovXHJcbiAgZ2V0IGVmZmVjdGl2ZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZD8ucGxhY2Vob2xkZXIgPz8gdGhpcy5wbGFjZWhvbGRlciA/PyAnJztcclxuICB9XHJcblxyXG4gIC8qKiBUaXBvIGlucHV0IEhUTUwgbmF0aXZvLiAqL1xyXG4gIGdldCBuYXRpdmVJbnB1dFR5cGUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmZpZWxkKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5maWVsZC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAncGFzc3dvcmQnOlxyXG4gICAgICAgICAgcmV0dXJuICdwYXNzd29yZCc7XHJcbiAgICAgICAgY2FzZSAnZW1haWwnOlxyXG4gICAgICAgICAgcmV0dXJuICdlbWFpbCc7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAndGV4dCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmlucHV0VHlwZTtcclxuICB9XHJcblxyXG4gIC8qKiBSZWFkb25seSBlZmZldHRpdm8gc3VsIGNhbXBvLiAqL1xyXG4gIGdldCBpc1JlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgfHwgdGhpcy5maWVsZD8ucmVhZG9ubHkgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKiogQ29udHJvbGxvIHJpc29sdG8gcGVyIG1vZGFsaXTDoCBzdGFuZGFsb25lLiAqL1xyXG4gIGdldCByZXNvbHZlZENvbnRyb2woKTogRm9ybUNvbnRyb2wgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKiBSZWdvbGUgdmFsaWRhdGlvbiBwZXIgbWVzc2FnZ2kgZXJyb3JlLiAqL1xyXG4gIGdldCBlZmZlY3RpdmVSdWxlcygpOiBVaVZhbGlkYXRpb25SdWxlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQ/LnZhbGlkYXRpb24gPz8gdGhpcy52YWxpZGF0aW9uUnVsZXMgPz8gW107XHJcbiAgfVxyXG5cclxuICAvKiogTWF4IGxlbmd0aCBkYSByZWdvbGUgbyBpbnB1dC4gKi9cclxuICBnZXQgZWZmZWN0aXZlTWF4TGVuZ3RoKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAodGhpcy5tYXhMZW5ndGggIT0gbnVsbCkgcmV0dXJuIHRoaXMubWF4TGVuZ3RoO1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRFcnJvclNlcnZpY2UucmVzb2x2ZU1heExlbmd0aCh0aGlzLmVmZmVjdGl2ZVJ1bGVzKTtcclxuICB9XHJcblxyXG4gIC8qKiBDb250cm9sbG8gZGVsIGNhbXBvIGluIG1vZGFsaXTDoCBidWlsZGVyLiAqL1xyXG4gIGdldCBmaWVsZENvbnRyb2woKTogRm9ybUNvbnRyb2wgfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5maWVsZCB8fCAhdGhpcy5mb3JtR3JvdXApIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgYyA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZpZWxkLmtleSk7XHJcbiAgICByZXR1cm4gYyBpbnN0YW5jZW9mIEZvcm1Db250cm9sID8gYyA6IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKiogTWVzc2FnZ2kgZXJyb3JlIGRhIG1vc3RyYXJlIGluIG1hdC1lcnJvci4gKi9cclxuICByZXNvbHZlZEVycm9ycyhjb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwpOiBzdHJpbmdbXSB7XHJcbiAgICBpZiAodGhpcy5lcnJvcnMgIT0gbnVsbCkgcmV0dXJuIHRoaXMuZXJyb3JzO1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRFcnJvclNlcnZpY2UuZ2V0RmllbGRFcnJvcnMoY29udHJvbCwgdGhpcy5lZmZlY3RpdmVSdWxlcyk7XHJcbiAgfVxyXG5cclxuICAvKiogQ29udGVnZ2lvIGNhcmF0dGVyaSAoc29sbyB0ZXh0IGNvbiBtYXhMZW5ndGgpLiAqL1xyXG4gIGNoYXJDb3VudChjb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwpOiB7IGN1cnJlbnQ6IG51bWJlcjsgbWF4OiBudW1iZXIgfSB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC50eXBlICE9PSAndGV4dCcpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRFcnJvclNlcnZpY2UuZ2V0Q2hhckNvdW50KGNvbnRyb2wsIHRoaXMuZWZmZWN0aXZlTWF4TGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXQocXVlcnk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5vcHRpb25zRmlsdGVyLmVtaXQocXVlcnkpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ibHVycmVkLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChmaWVsZCAmJiBmb3JtR3JvdXApIHtcclxuICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJ1aS1mYi10ZXh0LWN0eFwiPlxyXG4gICAgQGlmIChpc1NlYXJjaGFibGVUZXh0KSB7XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19mdWxsLXdpZHRoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgZWZmZWN0aXZlTGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLmtleVwiXHJcbiAgICAgICAgICBbdHlwZV09XCJuYXRpdmVJbnB1dFR5cGVcIlxyXG4gICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJ0ZXh0QXV0b1wiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZWZmZWN0aXZlUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZG9ubHlcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI3RleHRBdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgICAgICBAZm9yIChvcHQgb2Ygb3B0aW9uczsgdHJhY2sgb3B0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJvcHQudmFsdWVcIj57eyBvcHQubGFiZWwgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICBAZm9yIChlcnIgb2YgcmVzb2x2ZWRFcnJvcnMoZmllbGRDb250cm9sKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXY+e3sgZXJyIH19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ1aS1mb3JtLWJ1aWxkZXJfX2Z1bGwtd2lkdGhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyBlZmZlY3RpdmVMYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQua2V5XCJcclxuICAgICAgICAgIFt0eXBlXT1cIm5hdGl2ZUlucHV0VHlwZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZWZmZWN0aXZlUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZG9ubHlcIlxyXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgQGlmIChmaWVsZC5pY29uVG9vbHRpcCkge1xyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5pY29uVG9vbHRpcC50ZXh0XCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5pY29uVG9vbHRpcC50ZXh0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGx1Y2lkZS1pY29uIFtuYW1lXT1cImZpZWxkLmljb25Ub29sdGlwLmljb24gfHwgJ2luZm8nXCIgW3NpemVdPVwiMThcIiAvPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICBAZm9yIChlcnIgb2YgcmVzb2x2ZWRFcnJvcnMoZmllbGRDb250cm9sKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXY+e3sgZXJyIH19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgQGlmIChjaGFyQ291bnQoZmllbGRDb250cm9sKTsgYXMgY2MpIHtcclxuICAgICAgICAgIDxtYXQtaGludFxyXG4gICAgICAgICAgICBhbGlnbj1cImVuZFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19jaGFyLWNvdW50XCJcclxuICAgICAgICAgICAgW2NsYXNzLnVpLWZvcm0tYnVpbGRlcl9fY2hhci1jb3VudC0td2Fybl09XCJjYy5jdXJyZW50ID4gY2MubWF4ICogMC45XCJcclxuICAgICAgICAgICAgW2NsYXNzLnVpLWZvcm0tYnVpbGRlcl9fY2hhci1jb3VudC0tZXJyb3JdPVwiY2MuY3VycmVudCA+IGNjLm1heFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNjLmN1cnJlbnQgfX0gLyB7eyBjYy5tYXggfX1cclxuICAgICAgICAgIDwvbWF0LWhpbnQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG59IEBlbHNlIGlmIChjb250cm9sKSB7XHJcbiAgPGRpdiBjbGFzcz1cInVpLWZvcm0tZmllbGQtYXRvbVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ1aS1mb3JtLWJ1aWxkZXJfX2Z1bGwtd2lkdGhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgIEBpZiAoZWZmZWN0aXZlTGFiZWwpIHtcclxuICAgICAgICA8bWF0LWxhYmVsPnt7IGVmZmVjdGl2ZUxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgIH1cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgW3R5cGVdPVwibmF0aXZlSW5wdXRUeXBlXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZWZmZWN0aXZlUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJlZmZlY3RpdmVNYXhMZW5ndGhcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgLz5cclxuICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICBAZm9yIChlcnIgb2YgcmVzb2x2ZWRFcnJvcnMoY29udHJvbCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgPGRpdj57eyBlcnIgfX08L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICBAaWYgKGNoYXJDb3VudChjb250cm9sKTsgYXMgY2MpIHtcclxuICAgICAgICA8bWF0LWhpbnRcclxuICAgICAgICAgIGFsaWduPVwiZW5kXCJcclxuICAgICAgICAgIGNsYXNzPVwidWktZm9ybS1idWlsZGVyX19jaGFyLWNvdW50XCJcclxuICAgICAgICAgIFtjbGFzcy51aS1mb3JtLWJ1aWxkZXJfX2NoYXItY291bnQtLXdhcm5dPVwiY2MuY3VycmVudCA+IGNjLm1heCAqIDAuOVwiXHJcbiAgICAgICAgICBbY2xhc3MudWktZm9ybS1idWlsZGVyX19jaGFyLWNvdW50LS1lcnJvcl09XCJjYy5jdXJyZW50ID4gY2MubWF4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBjYy5jdXJyZW50IH19IC8ge3sgY2MubWF4IH19XHJcbiAgICAgICAgPC9tYXQtaGludD5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxufVxyXG4iXX0=
|