@updevs/components 1.0.0-alpha.6 → 1.0.0-alpha.60
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/README.md +1 -11
- package/assets/styles/_bootstrap-components.scss +18 -1
- package/assets/styles/_core.scss +9 -0
- package/assets/styles/_debug.scss +49 -0
- package/assets/styles/_props.scss +91 -0
- package/assets/styles/_seven-columns.scss +73 -0
- package/assets/styles/_updevs.scss +16 -0
- package/assets/styles/_utilities-marketing.scss +209 -0
- package/assets/styles/_utilities.scss +127 -92
- package/assets/styles/_variables-dark.scss +8 -6
- package/assets/styles/_variables.scss +325 -256
- package/assets/styles/helpers/_index.scss +143 -0
- package/assets/styles/layout/_core.scss +3 -2
- package/assets/styles/layout/_dark.scss +40 -35
- package/assets/styles/layout/_footer.scss +1 -1
- package/assets/styles/layout/_navbar.scss +31 -19
- package/assets/styles/layout/_page.scss +6 -5
- package/assets/styles/layout/_root.scss +26 -34
- package/assets/styles/marketing/_browser.scss +67 -0
- package/assets/styles/marketing/_core.scss +8 -0
- package/assets/styles/marketing/_filters.scss +0 -0
- package/assets/styles/marketing/_hero.scss +70 -0
- package/assets/styles/marketing/_pricing.scss +111 -0
- package/assets/styles/marketing/_sections.scss +124 -0
- package/assets/styles/marketing/_shape.scss +31 -0
- package/assets/styles/mixins/_functions.scss +53 -0
- package/assets/styles/mixins/_mixins.scss +9 -9
- package/assets/styles/ui/_accordion.scss +165 -11
- package/assets/styles/ui/_alerts.scss +80 -38
- package/assets/styles/ui/_avatars.scss +36 -9
- package/assets/styles/ui/_badges.scss +47 -13
- package/assets/styles/ui/_button-group.scss +1 -1
- package/assets/styles/ui/_buttons.scss +33 -37
- package/assets/styles/ui/_calendars.scss +2 -2
- package/assets/styles/ui/_cards.scss +9 -0
- package/assets/styles/ui/_carousel.scss +1 -1
- package/assets/styles/ui/_charts.scss +1 -1
- package/assets/styles/ui/_chat.scss +38 -0
- package/assets/styles/ui/_close.scss +54 -1
- package/assets/styles/ui/_datagrid.scss +1 -1
- package/assets/styles/ui/_dropdowns.scss +3 -0
- package/assets/styles/ui/_empty.scss +0 -5
- package/assets/styles/ui/_flags.scss +2 -2
- package/assets/styles/ui/_forms.scss +33 -7
- package/assets/styles/ui/_grid.scss +1 -1
- package/assets/styles/ui/_icons.scss +1 -1
- package/assets/styles/ui/_images.scss +4 -0
- package/assets/styles/ui/_lists.scss +12 -16
- package/assets/styles/ui/_loaders.scss +1 -1
- package/assets/styles/ui/_markdown.scss +15 -4
- package/assets/styles/ui/_modals.scss +2 -2
- package/assets/styles/ui/_nav.scss +17 -3
- package/assets/styles/ui/_offcanvas.scss +2 -2
- package/assets/styles/ui/_pagination.scss +2 -0
- package/assets/styles/ui/_payments.scss +1 -1
- package/assets/styles/ui/_placeholder.scss +1 -1
- package/assets/styles/ui/_progress.scss +1 -1
- package/assets/styles/ui/_ribbons.scss +1 -0
- package/assets/styles/ui/_segmented.scss +101 -0
- package/assets/styles/ui/_signature.scss +15 -0
- package/assets/styles/ui/_social.scss +52 -0
- package/assets/styles/ui/_status.scss +1 -1
- package/assets/styles/ui/_steps.scss +5 -1
- package/assets/styles/ui/_switch-icon.scss +1 -1
- package/assets/styles/ui/_tables.scss +27 -1
- package/assets/styles/ui/_tags.scss +1 -1
- package/assets/styles/ui/_timeline.scss +1 -1
- package/assets/styles/ui/_toasts.scss +0 -1
- package/assets/styles/ui/_tracking.scss +1 -1
- package/assets/styles/ui/_type.scss +169 -8
- package/assets/styles/ui/forms/_form-check.scss +1 -1
- package/assets/styles/ui/forms/_form-colorinput.scss +1 -1
- package/assets/styles/ui/forms/_form-custom.scss +1 -1
- package/assets/styles/ui/forms/_form-imagecheck.scss +6 -5
- package/assets/styles/ui/forms/_form-selectgroup.scss +2 -2
- package/assets/styles/ui/typo/_hr.scss +4 -2
- package/assets/styles/utils/_colors.scss +72 -11
- package/assets/styles/utils/_opacity.scss +1 -1
- package/assets/styles/utils/_scroll.scss +0 -2
- package/assets/styles/utils/_sizing.scss +1 -1
- package/assets/styles/utils/_text.scss +1 -2
- package/assets/styles/vendor/_apexcharts.scss +52 -0
- package/assets/styles/vendor/_coloris.scss +72 -0
- package/assets/styles/vendor/_dropzone.scss +27 -0
- package/assets/styles/vendor/_fslightbox.scss +13 -0
- package/assets/styles/vendor/_jsvectormap.scss +47 -0
- package/assets/styles/vendor/_litepicker.scss +69 -0
- package/assets/styles/vendor/_nouislider.scss +49 -0
- package/assets/styles/vendor/_plyr.scss +3 -0
- package/assets/styles/vendor/_stars-rating.scss +22 -0
- package/assets/styles/vendor/_tom-select.scss +81 -0
- package/assets/styles/vendor/_turbo.scss +3 -0
- package/assets/styles/vendor/_typed.scss +4 -0
- package/assets/styles/vendor/_wysiwyg.scss +46 -0
- package/badge/badge-config.model.d.ts +14 -0
- package/badge/badge.component.d.ts +23 -0
- package/badge/badge.config.d.ts +12 -0
- package/badge/index.d.ts +1 -0
- package/badge/public-api.d.ts +3 -0
- package/badge/upd-badge.module.d.ts +8 -0
- package/button/button.component.d.ts +51 -33
- package/button/upd-button.module.d.ts +3 -1
- package/calendar/calendar.component.d.ts +63 -0
- package/calendar/index.d.ts +1 -0
- package/calendar/models/calendar-date.model.d.ts +10 -0
- package/calendar/models/calendar-month.model.d.ts +7 -0
- package/calendar/models/calendar-selected.model.d.ts +5 -0
- package/calendar/models/calendar-user-event.model.d.ts +4 -0
- package/calendar/models/calendar-year.model.d.ts +6 -0
- package/calendar/models/date-range.model.d.ts +22 -0
- package/calendar/models/enums/calendar-view.enum.d.ts +5 -0
- package/calendar/models/public-api.d.ts +7 -0
- package/calendar/public-api.d.ts +5 -0
- package/calendar/services/calendar-range-strategy.service.d.ts +35 -0
- package/calendar/services/calendar-signals.service.d.ts +24 -0
- package/calendar/services/public-api.d.ts +1 -0
- package/calendar/types/calendar-view.type.d.ts +1 -0
- package/calendar/types/public-api.d.ts +1 -0
- package/calendar/upd-calendar.module.d.ts +13 -0
- package/card/card.component.d.ts +2 -2
- package/card/directives/card-actions.directive.d.ts +1 -2
- package/card/directives/card-footer.directive.d.ts +1 -2
- package/card/directives/card-header.directive.d.ts +1 -2
- package/card/directives/card-image.directive.d.ts +1 -2
- package/card/public-api.d.ts +1 -0
- package/card/types/public-api.d.ts +5 -0
- package/drag-and-drop/drag-and-drop.component.d.ts +26 -0
- package/drag-and-drop/index.d.ts +1 -0
- package/drag-and-drop/models/drag-and-drop-column.config.d.ts +8 -0
- package/drag-and-drop/models/drag-and-drop-column.model.d.ts +10 -0
- package/drag-and-drop/models/drag-and-drop-item.d.ts +7 -0
- package/drag-and-drop/models/drag-and-drop-item.model.d.ts +13 -0
- package/drag-and-drop/models/drag-and-drop.config.d.ts +6 -0
- package/drag-and-drop/models/public-api.d.ts +4 -0
- package/drag-and-drop/public-api.d.ts +3 -0
- package/drag-and-drop/upd-drag-and-drop.module.d.ts +9 -0
- package/dropdown/dropdown.component.d.ts +23 -6
- package/dropdown/models/dropdown-action-clicked.model.d.ts +6 -0
- package/dropdown/models/dropdown-item.d.ts +7 -2
- package/dropdown/models/dropdown-item.type.d.ts +1 -1
- package/dropdown/models/public-api.d.ts +2 -0
- package/dropdown/models/toolbar.type.d.ts +1 -0
- package/esm2022/badge/badge-config.model.mjs +14 -0
- package/esm2022/badge/badge.component.mjs +48 -0
- package/esm2022/badge/badge.config.mjs +2 -0
- package/esm2022/badge/index.mjs +2 -0
- package/esm2022/badge/public-api.mjs +4 -0
- package/esm2022/badge/upd-badge.module.mjs +24 -0
- package/esm2022/badge/updevs-components-badge.mjs +5 -0
- package/esm2022/button/button.component.mjs +126 -132
- package/esm2022/button/index.mjs +1 -1
- package/esm2022/button/public-api.mjs +1 -1
- package/esm2022/button/upd-button.module.mjs +14 -6
- package/esm2022/button/updevs-components-button.mjs +1 -1
- package/esm2022/calendar/assets/i18n/en.json +16 -0
- package/esm2022/calendar/assets/i18n/pt.json +16 -0
- package/esm2022/calendar/calendar.component.mjs +318 -0
- package/esm2022/calendar/index.mjs +2 -0
- package/esm2022/calendar/models/calendar-date.model.mjs +2 -0
- package/esm2022/calendar/models/calendar-month.model.mjs +2 -0
- package/esm2022/calendar/models/calendar-selected.model.mjs +2 -0
- package/esm2022/calendar/models/calendar-user-event.model.mjs +2 -0
- package/esm2022/calendar/models/calendar-year.model.mjs +2 -0
- package/esm2022/calendar/models/date-range.model.mjs +18 -0
- package/esm2022/calendar/models/enums/calendar-view.enum.mjs +7 -0
- package/esm2022/calendar/models/public-api.mjs +8 -0
- package/esm2022/calendar/public-api.mjs +6 -0
- package/esm2022/calendar/services/calendar-range-strategy.service.mjs +99 -0
- package/esm2022/calendar/services/calendar-signals.service.mjs +47 -0
- package/esm2022/calendar/services/public-api.mjs +2 -0
- package/esm2022/calendar/types/calendar-view.type.mjs +2 -0
- package/esm2022/calendar/types/public-api.mjs +2 -0
- package/esm2022/calendar/upd-calendar.module.mjs +52 -0
- package/esm2022/calendar/updevs-components-calendar.mjs +5 -0
- package/esm2022/card/card.component.mjs +4 -4
- package/esm2022/card/directives/card-actions.directive.mjs +8 -8
- package/esm2022/card/directives/card-footer.directive.mjs +8 -8
- package/esm2022/card/directives/card-header.directive.mjs +8 -8
- package/esm2022/card/directives/card-image.directive.mjs +8 -8
- package/esm2022/card/directives/public-api.mjs +1 -1
- package/esm2022/card/index.mjs +1 -1
- package/esm2022/card/public-api.mjs +2 -1
- package/esm2022/card/types/card-state.type.mjs +1 -1
- package/esm2022/card/types/card-style.type.mjs +1 -1
- package/esm2022/card/types/hover-effect.type.mjs +1 -1
- package/esm2022/card/types/public-api.mjs +6 -0
- package/esm2022/card/types/ribbon-style.type.mjs +1 -1
- package/esm2022/card/types/status-position.type.mjs +1 -1
- package/esm2022/card/upd-card.module.mjs +5 -5
- package/esm2022/card/updevs-components-card.mjs +1 -1
- package/esm2022/drag-and-drop/drag-and-drop.component.mjs +134 -0
- package/esm2022/drag-and-drop/index.mjs +2 -0
- package/esm2022/drag-and-drop/models/drag-and-drop-column.config.mjs +2 -0
- package/esm2022/drag-and-drop/models/drag-and-drop-column.model.mjs +9 -0
- package/esm2022/drag-and-drop/models/drag-and-drop-item.mjs +2 -0
- package/esm2022/drag-and-drop/models/drag-and-drop-item.model.mjs +14 -0
- package/esm2022/drag-and-drop/models/drag-and-drop.config.mjs +2 -0
- package/esm2022/drag-and-drop/models/public-api.mjs +5 -0
- package/esm2022/drag-and-drop/public-api.mjs +4 -0
- package/esm2022/drag-and-drop/upd-drag-and-drop.module.mjs +28 -0
- package/esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs +5 -0
- package/esm2022/dropdown/dropdown.component.mjs +75 -18
- package/esm2022/dropdown/index.mjs +1 -1
- package/esm2022/dropdown/models/dropdown-action-clicked.model.mjs +2 -0
- package/esm2022/dropdown/models/dropdown-item.mjs +1 -1
- package/esm2022/dropdown/models/dropdown-item.type.mjs +1 -1
- package/esm2022/dropdown/models/public-api.mjs +3 -1
- package/esm2022/dropdown/models/toolbar.type.mjs +2 -0
- package/esm2022/dropdown/public-api.mjs +1 -1
- package/esm2022/dropdown/upd-dropdown.module.mjs +5 -5
- package/esm2022/dropdown/updevs-components-dropdown.mjs +1 -1
- package/esm2022/form/assets/i18n/en.json +17 -0
- package/esm2022/form/assets/i18n/pt.json +17 -0
- package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +174 -0
- package/esm2022/form/form.component.mjs +180 -0
- package/esm2022/form/index.mjs +1 -1
- package/esm2022/form/models/attachment-rule.model.mjs +2 -0
- package/esm2022/form/models/button-field.model.mjs +2 -0
- package/esm2022/form/models/button-group-field.model.mjs +2 -0
- package/esm2022/form/models/checkbox-field.model.mjs +2 -0
- package/esm2022/form/models/checkbox-group-field.model.mjs +2 -0
- package/esm2022/form/models/dynamic-field.model.mjs +2 -0
- package/esm2022/form/models/enums/attachment-type.enum.mjs +15 -0
- package/esm2022/form/models/enums/dynamic-field.type.mjs +17 -0
- package/esm2022/form/models/enums/public-api.mjs +3 -0
- package/esm2022/form/models/file-upload-field.model.mjs +2 -0
- package/esm2022/form/models/form-config.mjs +2 -0
- package/esm2022/form/models/form-row.model.mjs +2 -0
- package/esm2022/form/models/form-update-on.type.mjs +2 -0
- package/esm2022/form/models/input-field.model.mjs +2 -0
- package/esm2022/form/models/masked-input-field.model.mjs +2 -0
- package/esm2022/form/models/public-api.mjs +19 -0
- package/esm2022/form/models/radio-field.model.mjs +2 -0
- package/esm2022/form/models/radio-group-field.model.mjs +2 -0
- package/esm2022/form/models/select-field.model.mjs +2 -0
- package/esm2022/form/models/single-select-field.model.mjs +2 -0
- package/esm2022/form/models/textarea-field.model.mjs +2 -0
- package/esm2022/form/models/validator-config.mjs +2 -0
- package/esm2022/form/public-api.mjs +4 -2
- package/esm2022/form/tools/errors-helper.mjs +54 -0
- package/esm2022/form/upd-form.module.mjs +84 -0
- package/esm2022/form/updevs-components-form.mjs +1 -1
- package/esm2022/form-controls/abstractions/base-control.mjs +46 -0
- package/esm2022/form-controls/abstractions/index.mjs +2 -0
- package/esm2022/form-controls/abstractions/public-api.mjs +2 -0
- package/esm2022/form-controls/abstractions/updevs-components-form-controls-abstractions.mjs +5 -0
- package/esm2022/form-controls/checkbox/checkbox.component.mjs +37 -51
- package/esm2022/form-controls/checkbox/index.mjs +1 -1
- package/esm2022/form-controls/checkbox/public-api.mjs +1 -1
- package/esm2022/form-controls/checkbox/upd-checkbox.module.mjs +12 -8
- package/esm2022/form-controls/checkbox/updevs-components-form-controls-checkbox.mjs +1 -1
- package/esm2022/form-controls/date-picker/date-picker.component.mjs +132 -0
- package/esm2022/form-controls/date-picker/index.mjs +2 -0
- package/esm2022/form-controls/date-picker/public-api.mjs +3 -0
- package/esm2022/form-controls/date-picker/upd-date-picker.module.mjs +40 -0
- package/esm2022/form-controls/date-picker/updevs-components-form-controls-date-picker.mjs +5 -0
- package/esm2022/form-controls/file-upload/assets/i18n/en.json +15 -0
- package/esm2022/form-controls/file-upload/assets/i18n/pt.json +15 -0
- package/esm2022/form-controls/file-upload/file-upload-changed.event.mjs +2 -0
- package/esm2022/form-controls/file-upload/file-upload.component.mjs +169 -0
- package/esm2022/form-controls/file-upload/index.mjs +2 -0
- package/esm2022/form-controls/file-upload/public-api.mjs +4 -0
- package/esm2022/form-controls/file-upload/upd-file-upload.module.mjs +48 -0
- package/esm2022/form-controls/file-upload/updevs-components-form-controls-file-upload.mjs +5 -0
- package/esm2022/form-controls/input/directives/input-append.directive.mjs +8 -8
- package/esm2022/form-controls/input/directives/input-prepend.directive.mjs +8 -8
- package/esm2022/form-controls/input/directives/public-api.mjs +1 -1
- package/esm2022/form-controls/input/index.mjs +1 -1
- package/esm2022/form-controls/input/input.component.mjs +64 -34
- package/esm2022/form-controls/input/public-api.mjs +1 -1
- package/esm2022/form-controls/input/types/input.type.mjs +1 -1
- package/esm2022/form-controls/input/types/loader-position.type.mjs +1 -1
- package/esm2022/form-controls/input/types/public-api.mjs +1 -1
- package/esm2022/form-controls/input/upd-input.module.mjs +5 -5
- package/esm2022/form-controls/input/updevs-components-form-controls-input.mjs +1 -1
- package/esm2022/form-controls/radio/index.mjs +1 -1
- package/esm2022/form-controls/radio/public-api.mjs +1 -1
- package/esm2022/form-controls/radio/radio.component.mjs +12 -25
- package/esm2022/form-controls/radio/upd-radio.module.mjs +14 -6
- package/esm2022/form-controls/radio/updevs-components-form-controls-radio.mjs +1 -1
- package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +33 -10
- package/esm2022/form-controls/select/components/single/select.component.mjs +31 -8
- package/esm2022/form-controls/select/index.mjs +1 -1
- package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +109 -88
- package/esm2022/form-controls/select/models/defaults.mjs +8 -0
- package/esm2022/form-controls/select/models/public-api.mjs +2 -1
- package/esm2022/form-controls/select/models/select-item.mjs +1 -1
- package/esm2022/form-controls/select/public-api.mjs +1 -1
- package/esm2022/form-controls/select/upd-select.module.mjs +10 -6
- package/esm2022/form-controls/select/updevs-components-form-controls-select.mjs +1 -1
- package/esm2022/form-controls/textarea/index.mjs +1 -1
- package/esm2022/form-controls/textarea/public-api.mjs +1 -1
- package/esm2022/form-controls/textarea/textarea.component.mjs +18 -36
- package/esm2022/form-controls/textarea/upd-textarea.module.mjs +5 -5
- package/esm2022/form-controls/textarea/updevs-components-form-controls-textarea.mjs +1 -1
- package/esm2022/form-controls/time-picker/index.mjs +1 -1
- package/esm2022/form-controls/time-picker/public-api.mjs +1 -1
- package/esm2022/form-controls/time-picker/time-picker.component.mjs +4 -4
- package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +7 -8
- package/esm2022/form-controls/time-picker/upd-time-picker.module.mjs +9 -8
- package/esm2022/form-controls/time-picker/updevs-components-form-controls-time-picker.mjs +1 -1
- package/esm2022/index.mjs +2 -0
- package/esm2022/layout/abstractions/base-page.component.mjs +8 -9
- package/esm2022/layout/abstractions/base.layout.mjs +31 -0
- package/esm2022/layout/abstractions/public-api.mjs +1 -1
- package/esm2022/layout/assets/i18n/en.json +24 -2
- package/esm2022/layout/assets/i18n/pt.json +24 -2
- package/esm2022/layout/index.mjs +1 -1
- package/esm2022/layout/layouts/blank-layout/blank-layout.component.mjs +18 -7
- package/esm2022/layout/layouts/blank-layout/blank-layout.module.mjs +32 -6
- package/esm2022/layout/layouts/public-api.mjs +1 -1
- package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.mjs +13 -29
- package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.mjs +25 -28
- package/esm2022/layout/models/login-page-config.model.mjs +20 -0
- package/esm2022/layout/models/login-page.config.mjs +2 -0
- package/esm2022/layout/models/public-api.mjs +2 -1
- package/esm2022/layout/models/security-layout-config.model.mjs +10 -0
- package/esm2022/layout/models/security-layout.config.mjs +2 -0
- package/esm2022/layout/models/upd-layout-config.model.mjs +11 -17
- package/esm2022/layout/models/upd-layout.config.mjs +1 -1
- package/esm2022/layout/pages/auth-flow/auth-flow-routing.module.mjs +5 -5
- package/esm2022/layout/pages/auth-flow/auth-flow.module.mjs +36 -9
- package/esm2022/layout/pages/auth-flow/logged-out/logged-out.component.mjs +4 -4
- package/esm2022/layout/pages/auth-flow/login/login.component.mjs +95 -12
- package/esm2022/layout/pages/auth-flow/oauth-callback/oauth-callback.component.mjs +4 -4
- package/esm2022/layout/pages/auth-flow/public-api.mjs +1 -1
- package/esm2022/layout/pages/public-api.mjs +1 -1
- package/esm2022/layout/partials/footer/footer.component.mjs +13 -27
- package/esm2022/layout/partials/footer/footer.module.mjs +28 -0
- package/esm2022/layout/partials/footer/public-api.mjs +2 -2
- package/esm2022/layout/partials/header/header-style.type.mjs +1 -1
- package/esm2022/layout/partials/header/header.component.mjs +121 -60
- package/esm2022/layout/partials/header/header.module.mjs +40 -0
- package/esm2022/layout/partials/header/public-api.mjs +2 -1
- package/esm2022/layout/partials/page-header/page-header.component.mjs +11 -11
- package/esm2022/layout/partials/page-header/public-api.mjs +1 -1
- package/esm2022/layout/partials/public-api.mjs +1 -1
- package/esm2022/layout/partials/sidebar/public-api.mjs +1 -1
- package/esm2022/layout/partials/sidebar/sidebar.component.mjs +185 -95
- package/esm2022/layout/public-api.mjs +1 -1
- package/esm2022/layout/services/public-api.mjs +1 -1
- package/esm2022/layout/services/upd-layout-config.service.mjs +6 -6
- package/esm2022/layout/tools/layout.constants.mjs +1 -1
- package/esm2022/layout/upd-layout.module.mjs +12 -8
- package/esm2022/layout/updevs-components-layout.mjs +1 -1
- package/esm2022/lib/index.mjs +1 -1
- package/esm2022/lib/models/public-api.mjs +2 -0
- package/esm2022/lib/models/row-column-size.mjs +2 -0
- package/esm2022/lib/public-api.mjs +3 -1
- package/esm2022/lib/tools/column-size.helper.mjs +12 -0
- package/esm2022/lib/tools/public-api.mjs +2 -0
- package/esm2022/lib/types/component-size.type.mjs +1 -1
- package/esm2022/lib/types/horizontal-vertical.type.mjs +2 -0
- package/esm2022/lib/types/public-api.mjs +2 -1
- package/esm2022/lib/types/validation-status.type.mjs +1 -1
- package/esm2022/lib/upd-components.module.mjs +5 -5
- package/esm2022/link/index.mjs +1 -1
- package/esm2022/link/link.component.mjs +4 -4
- package/esm2022/link/public-api.mjs +1 -1
- package/esm2022/link/target.type.mjs +1 -1
- package/esm2022/link/upd-link.module.mjs +5 -5
- package/esm2022/link/updevs-components-link.mjs +1 -1
- package/esm2022/list/assets/i18n/en.json +7 -3
- package/esm2022/list/assets/i18n/pt.json +7 -3
- package/esm2022/list/index.mjs +1 -1
- package/esm2022/list/list.component.mjs +14 -34
- package/esm2022/list/models/badge-position.type.mjs +1 -1
- package/esm2022/list/models/list-item.mjs +1 -1
- package/esm2022/list/models/list-item.model.mjs +7 -2
- package/esm2022/list/models/public-api.mjs +1 -1
- package/esm2022/list/public-api.mjs +1 -1
- package/esm2022/list/upd-list.module.mjs +9 -8
- package/esm2022/list/updevs-components-list.mjs +1 -1
- package/esm2022/modal/assets/i18n/en.json +17 -0
- package/esm2022/modal/assets/i18n/pt.json +17 -0
- package/esm2022/modal/components/modal-container/modal-container.component.mjs +216 -0
- package/esm2022/modal/index.mjs +2 -0
- package/esm2022/modal/models/base.modal.mjs +14 -0
- package/esm2022/modal/models/modal-config.model.mjs +20 -0
- package/esm2022/modal/models/modal-ref.mjs +2 -0
- package/esm2022/modal/models/modal.config.mjs +2 -0
- package/esm2022/modal/models/public-api.mjs +4 -0
- package/esm2022/modal/public-api.mjs +4 -0
- package/esm2022/modal/services/modal-alert.service.mjs +99 -0
- package/esm2022/modal/services/modal.service.mjs +30 -0
- package/esm2022/modal/services/public-api.mjs +3 -0
- package/esm2022/modal/types/modal-footer-style.type.mjs +2 -0
- package/esm2022/modal/types/modal-size.type.mjs +2 -0
- package/esm2022/modal/upd-modal.module.mjs +90 -0
- package/esm2022/modal/updevs-components-modal.mjs +5 -0
- package/esm2022/paginator/assets/i18n/en.json +15 -0
- package/esm2022/paginator/assets/i18n/pt.json +15 -0
- package/esm2022/paginator/index.mjs +2 -0
- package/esm2022/paginator/paginator.component.mjs +66 -0
- package/esm2022/paginator/public-api.mjs +3 -0
- package/esm2022/paginator/upd-paginator.module.mjs +47 -0
- package/esm2022/paginator/updevs-components-paginator.mjs +5 -0
- package/esm2022/popover/index.mjs +1 -1
- package/esm2022/popover/popover.component.mjs +7 -7
- package/esm2022/popover/popover.directive.mjs +33 -42
- package/esm2022/popover/public-api.mjs +1 -1
- package/esm2022/popover/upd-popover.module.mjs +5 -5
- package/esm2022/popover/updevs-components-popover.mjs +1 -1
- package/esm2022/pricing-cards/index.mjs +2 -0
- package/esm2022/pricing-cards/models/price-item-feature.model.mjs +2 -0
- package/esm2022/pricing-cards/models/price-item-features-group.model.mjs +2 -0
- package/esm2022/pricing-cards/models/price-item-tag.model.mjs +2 -0
- package/esm2022/pricing-cards/models/price-item.model.mjs +2 -0
- package/esm2022/pricing-cards/models/public-api.mjs +5 -0
- package/esm2022/pricing-cards/pricing-cards.component.mjs +25 -0
- package/esm2022/pricing-cards/public-api.mjs +4 -0
- package/esm2022/pricing-cards/upd-pricing-cards.module.mjs +40 -0
- package/esm2022/pricing-cards/updevs-components-pricing-cards.mjs +5 -0
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/table/abstractions/base-column.model.mjs +52 -0
- package/esm2022/table/abstractions/base.column.mjs +84 -0
- package/esm2022/table/abstractions/filters-operands.service.mjs +3 -0
- package/esm2022/table/abstractions/public-api.mjs +3 -0
- package/esm2022/table/assets/i18n/en.json +74 -0
- package/esm2022/table/assets/i18n/pt.json +74 -0
- package/esm2022/table/components/columns/boolean-column/boolean-column.component.mjs +26 -0
- package/esm2022/table/components/columns/date-time-column/date-time-column.component.mjs +13 -0
- package/esm2022/table/components/columns/number-column/number-column.component.mjs +13 -0
- package/esm2022/table/components/columns/text-column/text-column.component.mjs +31 -0
- package/esm2022/table/components/columns-manager/columns-manager.component.mjs +36 -0
- package/esm2022/table/components/filter-row/filter-row.component.mjs +114 -0
- package/esm2022/table/components/save-search/save-search.component.mjs +72 -0
- package/esm2022/table/components/search-section/search-section.component.mjs +93 -0
- package/esm2022/table/directives/public-api.mjs +2 -0
- package/esm2022/table/directives/table-column.directive.mjs +52 -0
- package/esm2022/table/index.mjs +2 -0
- package/esm2022/table/models/columns/boolean-column.model.mjs +22 -0
- package/esm2022/table/models/columns/date-time-column.model.mjs +16 -0
- package/esm2022/table/models/columns/guid-column.model.mjs +13 -0
- package/esm2022/table/models/columns/image-column.model.mjs +11 -0
- package/esm2022/table/models/columns/number-column.model.mjs +17 -0
- package/esm2022/table/models/columns/public-api.mjs +7 -0
- package/esm2022/table/models/columns/text-column.model.mjs +11 -0
- package/esm2022/table/models/enums/column-type.enum.mjs +15 -0
- package/esm2022/table/models/enums/public-api.mjs +2 -0
- package/esm2022/table/models/filter-item.model.mjs +2 -0
- package/esm2022/table/models/filter-operand.config.mjs +2 -0
- package/esm2022/table/models/operands-lists/boolean-filter-operands-list.model.mjs +25 -0
- package/esm2022/table/models/operands-lists/date-filter-operands-list.model.mjs +25 -0
- package/esm2022/table/models/operands-lists/date-or-number-operands-list.config.mjs +31 -0
- package/esm2022/table/models/operands-lists/filter-operands-list.config.mjs +31 -0
- package/esm2022/table/models/operands-lists/guid-filter-operands-list.model.mjs +16 -0
- package/esm2022/table/models/operands-lists/number-filter-operands-list.model.mjs +25 -0
- package/esm2022/table/models/operands-lists/string-filter-operands-list.model.mjs +45 -0
- package/esm2022/table/models/public-api.mjs +5 -0
- package/esm2022/table/models/saved-view.model.mjs +2 -0
- package/esm2022/table/models/table-config.model.mjs +29 -0
- package/esm2022/table/models/table.config.mjs +2 -0
- package/esm2022/table/models/upd-table-config.model.mjs +9 -0
- package/esm2022/table/models/upd-table.config.mjs +2 -0
- package/esm2022/table/public-api.mjs +6 -0
- package/esm2022/table/services/default-filters-operands.service.mjs +60 -0
- package/esm2022/table/services/storages/saved-views.storage.mjs +56 -0
- package/esm2022/table/services/stores/filters-operands.store.mjs +19 -0
- package/esm2022/table/services/upd-table-config.service.mjs +18 -0
- package/esm2022/table/table.component.mjs +439 -0
- package/esm2022/table/tools/filters.tools.mjs +48 -0
- package/esm2022/table/tools/table.constants.mjs +15 -0
- package/esm2022/table/upd-table.module.mjs +150 -0
- package/esm2022/table/updevs-components-table.mjs +5 -0
- package/esm2022/updevs-components.mjs +2 -2
- package/fesm2022/updevs-components-badge.mjs +89 -0
- package/fesm2022/updevs-components-badge.mjs.map +1 -0
- package/fesm2022/updevs-components-button.mjs +138 -136
- package/fesm2022/updevs-components-button.mjs.map +1 -1
- package/fesm2022/updevs-components-calendar.mjs +582 -0
- package/fesm2022/updevs-components-calendar.mjs.map +1 -0
- package/fesm2022/updevs-components-card.mjs +32 -32
- package/fesm2022/updevs-components-card.mjs.map +1 -1
- package/fesm2022/updevs-components-drag-and-drop.mjs +185 -0
- package/fesm2022/updevs-components-drag-and-drop.mjs.map +1 -0
- package/fesm2022/updevs-components-dropdown.mjs +78 -21
- package/fesm2022/updevs-components-dropdown.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-abstractions.mjs +53 -0
- package/fesm2022/updevs-components-form-controls-abstractions.mjs.map +1 -0
- package/fesm2022/updevs-components-form-controls-checkbox.mjs +47 -57
- package/fesm2022/updevs-components-form-controls-checkbox.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-date-picker.mjs +175 -0
- package/fesm2022/updevs-components-form-controls-date-picker.mjs.map +1 -0
- package/fesm2022/updevs-components-form-controls-file-upload.mjs +264 -0
- package/fesm2022/updevs-components-form-controls-file-upload.mjs.map +1 -0
- package/fesm2022/updevs-components-form-controls-input.mjs +80 -50
- package/fesm2022/updevs-components-form-controls-input.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-radio.mjs +25 -30
- package/fesm2022/updevs-components-form-controls-radio.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-select.mjs +185 -108
- package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-textarea.mjs +21 -39
- package/fesm2022/updevs-components-form-controls-textarea.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-time-picker.mjs +18 -18
- package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +1 -1
- package/fesm2022/updevs-components-form.mjs +541 -10
- package/fesm2022/updevs-components-form.mjs.map +1 -1
- package/fesm2022/updevs-components-layout.mjs +774 -395
- package/fesm2022/updevs-components-layout.mjs.map +1 -1
- package/fesm2022/updevs-components-link.mjs +8 -8
- package/fesm2022/updevs-components-link.mjs.map +1 -1
- package/fesm2022/updevs-components-list.mjs +44 -58
- package/fesm2022/updevs-components-list.mjs.map +1 -1
- package/fesm2022/updevs-components-modal.mjs +504 -0
- package/fesm2022/updevs-components-modal.mjs.map +1 -0
- package/fesm2022/updevs-components-paginator.mjs +160 -0
- package/fesm2022/updevs-components-paginator.mjs.map +1 -0
- package/fesm2022/updevs-components-popover.mjs +41 -50
- package/fesm2022/updevs-components-popover.mjs.map +1 -1
- package/fesm2022/updevs-components-pricing-cards.mjs +69 -0
- package/fesm2022/updevs-components-pricing-cards.mjs.map +1 -0
- package/fesm2022/updevs-components-table.mjs +1754 -0
- package/fesm2022/updevs-components-table.mjs.map +1 -0
- package/fesm2022/updevs-components.mjs +17 -5
- package/fesm2022/updevs-components.mjs.map +1 -1
- package/form/components/dynamic-field/dynamic-field.component.d.ts +63 -0
- package/form/form.component.d.ts +64 -0
- package/form/models/attachment-rule.model.d.ts +35 -0
- package/form/models/button-field.model.d.ts +5 -0
- package/form/models/button-group-field.model.d.ts +5 -0
- package/form/models/checkbox-field.model.d.ts +4 -0
- package/form/models/checkbox-group-field.model.d.ts +6 -0
- package/form/models/dynamic-field.model.d.ts +50 -0
- package/form/models/enums/attachment-type.enum.d.ts +13 -0
- package/form/models/enums/dynamic-field.type.d.ts +15 -0
- package/form/models/enums/public-api.d.ts +2 -0
- package/form/models/file-upload-field.model.d.ts +16 -0
- package/form/models/form-config.d.ts +2 -0
- package/form/models/form-row.model.d.ts +10 -0
- package/form/models/form-update-on.type.d.ts +1 -0
- package/form/models/input-field.model.d.ts +9 -0
- package/form/models/masked-input-field.model.d.ts +6 -0
- package/form/models/public-api.d.ts +18 -0
- package/form/models/radio-field.model.d.ts +4 -0
- package/form/models/radio-group-field.model.d.ts +6 -0
- package/form/models/select-field.model.d.ts +29 -0
- package/form/models/single-select-field.model.d.ts +4 -0
- package/form/models/textarea-field.model.d.ts +10 -0
- package/form/models/validator-config.d.ts +5 -0
- package/form/public-api.d.ts +3 -1
- package/form/tools/errors-helper.d.ts +11 -0
- package/form/upd-form.module.d.ts +22 -0
- package/form-controls/abstractions/base-control.d.ts +29 -0
- package/form-controls/abstractions/index.d.ts +2 -0
- package/form-controls/abstractions/public-api.d.ts +2 -0
- package/form-controls/checkbox/checkbox.component.d.ts +14 -20
- package/form-controls/checkbox/upd-checkbox.module.d.ts +2 -1
- package/form-controls/date-picker/date-picker.component.d.ts +66 -0
- package/form-controls/date-picker/index.d.ts +1 -0
- package/form-controls/date-picker/public-api.d.ts +2 -0
- package/form-controls/date-picker/upd-date-picker.module.d.ts +12 -0
- package/form-controls/file-upload/file-upload-changed.event.d.ts +4 -0
- package/form-controls/file-upload/file-upload.component.d.ts +46 -0
- package/form-controls/file-upload/index.d.ts +1 -0
- package/form-controls/file-upload/public-api.d.ts +3 -0
- package/form-controls/file-upload/upd-file-upload.module.d.ts +14 -0
- package/form-controls/input/directives/input-append.directive.d.ts +1 -2
- package/form-controls/input/directives/input-prepend.directive.d.ts +1 -2
- package/form-controls/input/input.component.d.ts +24 -14
- package/form-controls/radio/radio.component.d.ts +5 -12
- package/form-controls/radio/upd-radio.module.d.ts +3 -1
- package/form-controls/select/components/multiple/select-multiple.component.d.ts +13 -2
- package/form-controls/select/components/single/select.component.d.ts +10 -2
- package/form-controls/select/models/abstractions/base-select.component.d.ts +35 -31
- package/form-controls/select/models/defaults.d.ts +8 -0
- package/form-controls/select/models/public-api.d.ts +1 -0
- package/form-controls/select/upd-select.module.d.ts +3 -2
- package/form-controls/textarea/textarea.component.d.ts +11 -15
- package/form-controls/time-picker/upd-time-picker.module.d.ts +2 -2
- package/index.d.ts +1 -4
- package/layout/abstractions/base-page.component.d.ts +1 -2
- package/layout/abstractions/base.layout.d.ts +15 -0
- package/layout/layouts/blank-layout/blank-layout.component.d.ts +5 -1
- package/layout/layouts/blank-layout/blank-layout.module.d.ts +8 -1
- package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.d.ts +2 -9
- package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.d.ts +14 -13
- package/layout/models/login-page-config.model.d.ts +46 -0
- package/layout/models/login-page.config.d.ts +44 -0
- package/layout/models/public-api.d.ts +1 -0
- package/layout/models/security-layout-config.model.d.ts +12 -0
- package/layout/models/security-layout.config.d.ts +10 -0
- package/layout/models/upd-layout-config.model.d.ts +9 -0
- package/layout/models/upd-layout.config.d.ts +9 -0
- package/layout/pages/auth-flow/auth-flow.module.d.ts +9 -2
- package/layout/pages/auth-flow/login/login.component.d.ts +20 -6
- package/layout/partials/footer/footer.component.d.ts +4 -15
- package/layout/partials/footer/footer.module.d.ts +9 -0
- package/layout/partials/footer/public-api.d.ts +1 -1
- package/layout/partials/header/header.component.d.ts +44 -26
- package/layout/partials/header/header.module.d.ts +12 -0
- package/layout/partials/header/public-api.d.ts +1 -0
- package/layout/partials/page-header/page-header.component.d.ts +2 -2
- package/layout/partials/sidebar/sidebar.component.d.ts +29 -4
- package/layout/upd-layout.module.d.ts +2 -1
- package/lib/index.d.ts +1 -0
- package/lib/models/public-api.d.ts +2 -0
- package/lib/models/row-column-size.d.ts +23 -0
- package/lib/public-api.d.ts +3 -0
- package/lib/tools/column-size.helper.d.ts +6 -0
- package/lib/tools/public-api.d.ts +2 -0
- package/lib/types/component-size.type.d.ts +1 -0
- package/lib/types/horizontal-vertical.type.d.ts +2 -0
- package/lib/types/public-api.d.ts +2 -0
- package/lib/types/validation-status.type.d.ts +1 -0
- package/lib/upd-components.module.d.ts +1 -0
- package/list/list.component.d.ts +4 -20
- package/list/models/list-item.d.ts +4 -2
- package/list/models/list-item.model.d.ts +4 -2
- package/list/upd-list.module.d.ts +2 -2
- package/modal/components/modal-container/modal-container.component.d.ts +74 -0
- package/modal/index.d.ts +1 -0
- package/modal/models/base.modal.d.ts +8 -0
- package/modal/models/modal-config.model.d.ts +32 -0
- package/modal/models/modal-ref.d.ts +6 -0
- package/modal/models/modal.config.d.ts +30 -0
- package/modal/models/public-api.d.ts +3 -0
- package/modal/public-api.d.ts +3 -0
- package/modal/services/modal-alert.service.d.ts +22 -0
- package/modal/services/modal.service.d.ts +12 -0
- package/modal/services/public-api.d.ts +2 -0
- package/modal/types/modal-footer-style.type.d.ts +1 -0
- package/modal/types/modal-size.type.d.ts +1 -0
- package/modal/upd-modal.module.d.ts +18 -0
- package/package.json +78 -17
- package/paginator/index.d.ts +1 -0
- package/paginator/paginator.component.d.ts +42 -0
- package/paginator/public-api.d.ts +2 -0
- package/paginator/upd-paginator.module.d.ts +14 -0
- package/popover/popover.component.d.ts +2 -2
- package/popover/popover.directive.d.ts +8 -10
- package/pricing-cards/index.d.ts +1 -0
- package/pricing-cards/models/price-item-feature.model.d.ts +5 -0
- package/pricing-cards/models/price-item-features-group.model.d.ts +5 -0
- package/pricing-cards/models/price-item-tag.model.d.ts +6 -0
- package/pricing-cards/models/price-item.model.d.ts +20 -0
- package/pricing-cards/models/public-api.d.ts +4 -0
- package/pricing-cards/pricing-cards.component.d.ts +11 -0
- package/pricing-cards/public-api.d.ts +3 -0
- package/pricing-cards/upd-pricing-cards.module.d.ts +12 -0
- package/public-api.d.ts +1 -0
- package/table/abstractions/base-column.model.d.ts +31 -0
- package/table/abstractions/base.column.d.ts +26 -0
- package/table/abstractions/filters-operands.service.d.ts +8 -0
- package/table/abstractions/public-api.d.ts +2 -0
- package/table/components/columns/boolean-column/boolean-column.component.d.ts +9 -0
- package/table/components/columns/date-time-column/date-time-column.component.d.ts +7 -0
- package/table/components/columns/number-column/number-column.component.d.ts +7 -0
- package/table/components/columns/text-column/text-column.component.d.ts +9 -0
- package/table/components/columns-manager/columns-manager.component.d.ts +15 -0
- package/table/components/filter-row/filter-row.component.d.ts +40 -0
- package/table/components/save-search/save-search.component.d.ts +17 -0
- package/table/components/search-section/search-section.component.d.ts +36 -0
- package/table/directives/public-api.d.ts +1 -0
- package/table/directives/table-column.directive.d.ts +14 -0
- package/table/index.d.ts +1 -0
- package/table/models/columns/boolean-column.model.d.ts +15 -0
- package/table/models/columns/date-time-column.model.d.ts +8 -0
- package/table/models/columns/guid-column.model.d.ts +4 -0
- package/table/models/columns/image-column.model.d.ts +6 -0
- package/table/models/columns/number-column.model.d.ts +8 -0
- package/table/models/columns/public-api.d.ts +6 -0
- package/table/models/columns/text-column.model.d.ts +6 -0
- package/table/models/enums/column-type.enum.d.ts +13 -0
- package/table/models/enums/public-api.d.ts +1 -0
- package/table/models/filter-item.model.d.ts +6 -0
- package/table/models/filter-operand.config.d.ts +9 -0
- package/table/models/operands-lists/boolean-filter-operands-list.model.d.ts +6 -0
- package/table/models/operands-lists/date-filter-operands-list.model.d.ts +6 -0
- package/table/models/operands-lists/date-or-number-operands-list.config.d.ts +5 -0
- package/table/models/operands-lists/filter-operands-list.config.d.ts +5 -0
- package/table/models/operands-lists/guid-filter-operands-list.model.d.ts +6 -0
- package/table/models/operands-lists/number-filter-operands-list.model.d.ts +6 -0
- package/table/models/operands-lists/string-filter-operands-list.model.d.ts +6 -0
- package/table/models/public-api.d.ts +4 -0
- package/table/models/saved-view.model.d.ts +11 -0
- package/table/models/table-config.model.d.ts +33 -0
- package/table/models/table.config.d.ts +31 -0
- package/table/models/upd-table-config.model.d.ts +6 -0
- package/table/models/upd-table.config.d.ts +6 -0
- package/table/public-api.d.ts +5 -0
- package/table/services/default-filters-operands.service.d.ts +17 -0
- package/table/services/storages/saved-views.storage.d.ts +19 -0
- package/table/services/stores/filters-operands.store.d.ts +11 -0
- package/table/services/upd-table-config.service.d.ts +12 -0
- package/table/table.component.d.ts +81 -0
- package/table/tools/filters.tools.d.ts +9 -0
- package/table/tools/table.constants.d.ts +15 -0
- package/table/upd-table.module.d.ts +40 -0
- package/esm2022/form/form.module.mjs +0 -18
- package/esm2022/layout/partials/footer/footer-copyright.directive.mjs +0 -15
- package/form/form.module.d.ts +0 -7
- package/layout/partials/footer/footer-copyright.directive.d.ts +0 -6
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { Component, HostBinding, inject, input, Output, EventEmitter, computed, effect, signal } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { TextService } from '@updevs/sdk';
|
|
4
|
+
import { BaseComponent } from '@updevs/sdk/layout';
|
|
5
|
+
import { ColumnSizeHelper } from '@updevs/components';
|
|
6
|
+
import { Defaults as SelectDefaults } from '@updevs/components/form-controls/select';
|
|
7
|
+
import { ErrorsHelper } from '../../tools/errors-helper';
|
|
8
|
+
import { DynamicFieldType } from '../../models/enums/dynamic-field.type';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@updevs/components/button";
|
|
11
|
+
import * as i2 from "@updevs/components/form-controls/input";
|
|
12
|
+
import * as i3 from "@updevs/components/form-controls/checkbox";
|
|
13
|
+
import * as i4 from "@updevs/components/form-controls/radio";
|
|
14
|
+
import * as i5 from "@updevs/components/form-controls/select";
|
|
15
|
+
import * as i6 from "@updevs/components/form-controls/textarea";
|
|
16
|
+
import * as i7 from "@updevs/components/form-controls/file-upload";
|
|
17
|
+
export class DynamicFieldComponent extends BaseComponent {
|
|
18
|
+
get hostClasses() {
|
|
19
|
+
return this.wrapperClasses();
|
|
20
|
+
}
|
|
21
|
+
get formControl() {
|
|
22
|
+
return this.formGroup().controls[this.field().name];
|
|
23
|
+
}
|
|
24
|
+
get inputField() {
|
|
25
|
+
return this.field();
|
|
26
|
+
}
|
|
27
|
+
get checkboxField() {
|
|
28
|
+
return this.field();
|
|
29
|
+
}
|
|
30
|
+
get checkboxGroupField() {
|
|
31
|
+
return this.field();
|
|
32
|
+
}
|
|
33
|
+
get radioField() {
|
|
34
|
+
return this.field();
|
|
35
|
+
}
|
|
36
|
+
get radioGroupField() {
|
|
37
|
+
return this.field();
|
|
38
|
+
}
|
|
39
|
+
get selectField() {
|
|
40
|
+
return this.field();
|
|
41
|
+
}
|
|
42
|
+
get singleSelectField() {
|
|
43
|
+
return this.field();
|
|
44
|
+
}
|
|
45
|
+
get textareaField() {
|
|
46
|
+
return this.field();
|
|
47
|
+
}
|
|
48
|
+
get fileUploadField() {
|
|
49
|
+
return this.field();
|
|
50
|
+
}
|
|
51
|
+
get maskedField() {
|
|
52
|
+
return this.field();
|
|
53
|
+
}
|
|
54
|
+
get buttonField() {
|
|
55
|
+
return this.field();
|
|
56
|
+
}
|
|
57
|
+
get buttonGroupField() {
|
|
58
|
+
return this.field();
|
|
59
|
+
}
|
|
60
|
+
get checkboxGroupOptionsKeys() {
|
|
61
|
+
return Object.keys(this.checkboxGroupField.options);
|
|
62
|
+
}
|
|
63
|
+
get radioGroupOptionsKeys() {
|
|
64
|
+
return Object.keys(this.radioGroupField.options);
|
|
65
|
+
}
|
|
66
|
+
get fileNameControl() {
|
|
67
|
+
return !!this.fileUploadField.fileNameFormProperty
|
|
68
|
+
? this.formGroup().controls[this.fileUploadField.fileNameFormProperty]
|
|
69
|
+
: undefined;
|
|
70
|
+
}
|
|
71
|
+
constructor() {
|
|
72
|
+
super();
|
|
73
|
+
this.submitForm = new EventEmitter();
|
|
74
|
+
this.DynamicFieldType = DynamicFieldType;
|
|
75
|
+
this.SelectDefaults = SelectDefaults;
|
|
76
|
+
this.formGroup = input.required();
|
|
77
|
+
this.field = input.required();
|
|
78
|
+
this.layout = input.required();
|
|
79
|
+
this.validationStatusDescriptions = [];
|
|
80
|
+
this.selectedItemByValue = signal(undefined);
|
|
81
|
+
this.textService = inject(TextService);
|
|
82
|
+
this.wrapperClasses = computed(() => {
|
|
83
|
+
const isVisible = this.field().isVisible?.() ?? true;
|
|
84
|
+
const columnClasses = ColumnSizeHelper.getSizeClasses(this.field().colSize);
|
|
85
|
+
return `${columnClasses} ${isVisible ? '' : 'd-none'}`;
|
|
86
|
+
});
|
|
87
|
+
this.errorsHelper = inject(ErrorsHelper);
|
|
88
|
+
effect(() => {
|
|
89
|
+
const control = this.formControl;
|
|
90
|
+
const isVisible = this.field().isVisible?.() ?? true;
|
|
91
|
+
// If a field is not visible, we should remove its validators and restore if it becomes visible again.
|
|
92
|
+
if (!!control) {
|
|
93
|
+
if (isVisible) {
|
|
94
|
+
const fieldConfig = this.field();
|
|
95
|
+
const originalValidators = fieldConfig.validators || [];
|
|
96
|
+
const finalValidators = [...originalValidators];
|
|
97
|
+
if (fieldConfig.isRequired && !originalValidators.includes(Validators.required)) {
|
|
98
|
+
finalValidators.push(Validators.required);
|
|
99
|
+
}
|
|
100
|
+
control.setValidators(finalValidators);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
control.clearValidators();
|
|
104
|
+
}
|
|
105
|
+
control.updateValueAndValidity();
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
ngOnInit() {
|
|
110
|
+
if (!!this.formControl) {
|
|
111
|
+
const statusSub = this.formControl.statusChanges.subscribe(status => {
|
|
112
|
+
if (status === 'INVALID') {
|
|
113
|
+
this.validationStatusDescriptions = this.errorsHelper.getMessages(this.formControl)
|
|
114
|
+
.map(t => ({ text: t, isTranslated: true }));
|
|
115
|
+
this.validationStatus = 'invalid';
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.validationStatusDescriptions = [];
|
|
119
|
+
this.validationStatus = this.field().showValidStatus ? 'valid' : undefined;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
// Listen for value changes to update the select component's display
|
|
123
|
+
const valueChangeSub = this.formControl.valueChanges.subscribe(value => {
|
|
124
|
+
const item = this.selectField.items?.find(i => i.value == value);
|
|
125
|
+
this.selectedItemByValue.set(item);
|
|
126
|
+
});
|
|
127
|
+
// Set the initial value on init
|
|
128
|
+
if (this.field().initValue) {
|
|
129
|
+
const initialItem = this.selectField.items?.find(i => i.value == this.field().initValue);
|
|
130
|
+
this.selectedItemByValue.set(initialItem);
|
|
131
|
+
}
|
|
132
|
+
this.addSubscriptions(statusSub, valueChangeSub);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
onBlur() {
|
|
136
|
+
if (this.field().shouldValidateOnBlur) {
|
|
137
|
+
this.formControl.updateValueAndValidity();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
setControlValue(value) {
|
|
141
|
+
this.formControl.setValue(value);
|
|
142
|
+
this.formControl.markAsDirty();
|
|
143
|
+
}
|
|
144
|
+
getText(textModel) {
|
|
145
|
+
return this.textService.getText(textModel);
|
|
146
|
+
}
|
|
147
|
+
getOptionDescription(key, type) {
|
|
148
|
+
return type === 'checkbox' ? this.checkboxGroupField.options[key] : this.radioGroupField.options[key];
|
|
149
|
+
}
|
|
150
|
+
handleFileSelected(event) {
|
|
151
|
+
this.formControl.setValue(!!this.fileUploadField.saveAsDataUrl ? event?.dataUrl : event?.file);
|
|
152
|
+
this.formControl.markAsDirty();
|
|
153
|
+
if (!!this.fileUploadField.fileNameFormProperty) {
|
|
154
|
+
this.fileNameControl.setValue(event?.file.name);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
onInputEnter() {
|
|
158
|
+
if (!!this.inputField.shouldSubmitOnEnter) {
|
|
159
|
+
this.submitForm.next();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: DynamicFieldComponent, selector: "upd-dynamic-field", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { submitForm: "submitForm" }, host: { properties: { "class": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: "@switch (field().type) {\n @case (DynamicFieldType.Input) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\" [isDisabled]=\"field().isDisabled || false\"\n [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\" [value]=\"formControl.value\"\n (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case (DynamicFieldType.Checkbox) {\n <upd-checkbox [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isDisabled]=\"field().isDisabled || false\" [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n [isSwitch]=\"checkboxField.isSwitch || false\" (changed)=\"setControlValue($event)\"></upd-checkbox>\n }\n @case (DynamicFieldType.CheckboxGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of checkboxGroupOptionsKeys; track option) {\n <upd-checkbox [name]=\"field().name\" [label]=\"getOptionDescription(option, 'checkbox')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\" [isSwitch]=\"checkboxField.isSwitch || false\"\n (changed)=\"setControlValue(option)\"></upd-checkbox>\n }\n }\n @case (DynamicFieldType.Radio) {\n <upd-radio [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isChecked]=\"formControl.value\" [isDisabled]=\"field().isDisabled || false\" [isInline]=\"radioField.isInline || false\"\n (selected)=\"setControlValue($event)\">\n </upd-radio>\n }\n @case (DynamicFieldType.RadioGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of radioGroupOptionsKeys; track option) {\n <upd-radio [name]=\"field().name\" [label]=\"getOptionDescription(option, 'radio')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n (selected)=\"setControlValue(option)\"></upd-radio>\n }\n }\n @case (DynamicFieldType.Select) {\n <upd-select [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\"\n [useSystemStyle]=\"singleSelectField.useSystemStyle || false\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n [shouldTruncateSelectedText]=\"selectField.shouldTruncateSelectedText\" [parentValue]=\"selectField.parentValue\"\n [selected]=\"selectedItemByValue()\" (selectedItem)=\"setControlValue($event?.value)\"></upd-select>\n }\n @case (DynamicFieldType.SelectMultiple) {\n <upd-select-multiple [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\" [parentValue]=\"selectField.parentValue\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n [selectedValues]=\"formControl.value\" (selectedIds)=\"setControlValue($event)\"></upd-select-multiple>\n }\n @case (DynamicFieldType.Label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n @case (DynamicFieldType.TextArea) {\n <upd-textarea [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [value]=\"formControl.value\" [customClasses]=\"textareaField.customClasses\" [wrapperClasses]=\"textareaField.wrapperClasses\"\n [maxLength]=\"textareaField.maxLength\" [rows]=\"textareaField.rows\"\n [displayCharactersCount]=\"textareaField.displayCharactersCount || false\" (valueChange)=\"setControlValue($event)\">\n </upd-textarea>\n }\n @case (DynamicFieldType.FileUpload) {\n <upd-file-upload [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [isDisabled]=\"field().isDisabled || false\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [fileName]=\"fileNameControl?.value\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [allowFilesDrop]=\"fileUploadField.allowFilesDrop || false\"\n [title]=\"fileUploadField.title\" [labelColSize]=\"field().labelColSize\" [minFileSize]=\"fileUploadField.minFileSize\"\n [isMultiple]=\"fileUploadField.isMultiple || false\" [allowedExtensions]=\"fileUploadField.allowedExtensions || '*'\"\n [maxFileSize]=\"fileUploadField.maxFileSize\" [layout]=\"layout()\" (fileChanged)=\"handleFileSelected($event)\"></upd-file-upload>\n }\n @case (DynamicFieldType.MaskedInput) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [mask]=\"maskedField.mask\"\n [maskConfig]=\"maskedField.maskConfig\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\"\n [isDisabled]=\"field().isDisabled || false\" [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\"\n [value]=\"formControl.value\" (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case(DynamicFieldType.Button) {\n <upd-button [text]=\"field().label\" [isDisabled]=\"field().isDisabled || false\" [model]=\"buttonField.model\" />\n }\n @case(DynamicFieldType.ButtonGroup) {\n @if(!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n <div class=\"btn-group\" role=\"group\">\n @for (btn of buttonGroupField.buttons; track btn) {\n <upd-button [model]=\"btn\" [isDisabled]=\"field().isDisabled || false\" />\n }\n </div>\n }\n}", styles: [""], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i2.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "directive", type: i2.InputAppendDirective, selector: "ng-template[updInputAppend]" }, { kind: "directive", type: i2.InputPrependDirective, selector: "ng-template[updInputPrepend]" }, { kind: "component", type: i3.CheckboxComponent, selector: "upd-checkbox", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline", "isSwitch", "isIndeterminate"], outputs: ["changed", "isCheckedChange", "isIndeterminateChange"] }, { kind: "component", type: i4.RadioComponent, selector: "upd-radio", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline"], outputs: ["selected"] }, { kind: "component", type: i5.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "shouldTruncateSelectedText", "isCompact", "selected"], outputs: ["selectedItem"] }, { kind: "component", type: i5.SelectMultipleComponent, selector: "upd-select-multiple", inputs: ["selectedValues"], outputs: ["selectedItems", "selectedIds"] }, { kind: "component", type: i6.TextareaComponent, selector: "upd-textarea", inputs: ["value", "customClasses", "wrapperClasses", "maxLength", "rows", "displayCharactersCount"], outputs: ["valueChange"] }, { kind: "component", type: i7.FileUploadComponent, selector: "upd-file-upload", inputs: ["fileName", "title", "allowFilesDrop", "isMultiple", "allowedExtensions", "minFileSize", "maxFileSize", "layout"], outputs: ["fileChanged"] }] }); }
|
|
164
|
+
}
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DynamicFieldComponent, decorators: [{
|
|
166
|
+
type: Component,
|
|
167
|
+
args: [{ selector: 'upd-dynamic-field', template: "@switch (field().type) {\n @case (DynamicFieldType.Input) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\" [isDisabled]=\"field().isDisabled || false\"\n [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\" [value]=\"formControl.value\"\n (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case (DynamicFieldType.Checkbox) {\n <upd-checkbox [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isDisabled]=\"field().isDisabled || false\" [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n [isSwitch]=\"checkboxField.isSwitch || false\" (changed)=\"setControlValue($event)\"></upd-checkbox>\n }\n @case (DynamicFieldType.CheckboxGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of checkboxGroupOptionsKeys; track option) {\n <upd-checkbox [name]=\"field().name\" [label]=\"getOptionDescription(option, 'checkbox')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\" [isSwitch]=\"checkboxField.isSwitch || false\"\n (changed)=\"setControlValue(option)\"></upd-checkbox>\n }\n }\n @case (DynamicFieldType.Radio) {\n <upd-radio [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"true\"\n [isChecked]=\"formControl.value\" [isDisabled]=\"field().isDisabled || false\" [isInline]=\"radioField.isInline || false\"\n (selected)=\"setControlValue($event)\">\n </upd-radio>\n }\n @case (DynamicFieldType.RadioGroup) {\n @if (!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n @for (option of radioGroupOptionsKeys; track option) {\n <upd-radio [name]=\"field().name\" [label]=\"getOptionDescription(option, 'radio')\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [value]=\"option\" [isDisabled]=\"field().isDisabled || false\"\n [isChecked]=\"formControl.value\" [isInline]=\"checkboxField.isInline || false\"\n (selected)=\"setControlValue(option)\"></upd-radio>\n }\n }\n @case (DynamicFieldType.Select) {\n <upd-select [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [hintAsTooltip]=\"field().hintAsTooltip || false\"\n [validationStatus]=\"validationStatus\" [validationStatusDescriptions]=\"validationStatusDescriptions\"\n [useSystemStyle]=\"singleSelectField.useSystemStyle || false\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n [shouldTruncateSelectedText]=\"selectField.shouldTruncateSelectedText\" [parentValue]=\"selectField.parentValue\"\n [selected]=\"selectedItemByValue()\" (selectedItem)=\"setControlValue($event?.value)\"></upd-select>\n }\n @case (DynamicFieldType.SelectMultiple) {\n <upd-select-multiple [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [items]=\"selectField.items\" [layout]=\"layout()\" [labelColSize]=\"field().labelColSize\" [store]=\"selectField.store!\"\n [observable]=\"selectField.observable\" [itemKey]=\"selectField.itemKey\" [itemValue]=\"selectField.itemValue\"\n [dropdownMaxHeight]=\"selectField.dropdownMaxHeight || SelectDefaults.dropdownMaxHeight\"\n [typeaheadDebounce]=\"selectField.typeaheadDebounce || SelectDefaults.typeaheadDebounce\"\n [shouldAutoSearch]=\"selectField.shouldAutoSearch || SelectDefaults.shouldAutoSearch\" [parentValue]=\"selectField.parentValue\"\n [shouldCloseOnOutsideClick]=\"selectField.shouldCloseOnOutsideClick || SelectDefaults.shouldCloseOnOutsideClick\"\n [selectedValues]=\"formControl.value\" (selectedIds)=\"setControlValue($event)\"></upd-select-multiple>\n }\n @case (DynamicFieldType.Label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n @case (DynamicFieldType.TextArea) {\n <upd-textarea [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [isDisabled]=\"field().isDisabled || false\"\n [value]=\"formControl.value\" [customClasses]=\"textareaField.customClasses\" [wrapperClasses]=\"textareaField.wrapperClasses\"\n [maxLength]=\"textareaField.maxLength\" [rows]=\"textareaField.rows\"\n [displayCharactersCount]=\"textareaField.displayCharactersCount || false\" (valueChange)=\"setControlValue($event)\">\n </upd-textarea>\n }\n @case (DynamicFieldType.FileUpload) {\n <upd-file-upload [name]=\"field().name\" [label]=\"field().label\" [hint]=\"field().hint\" [isDisabled]=\"field().isDisabled || false\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [fileName]=\"fileNameControl?.value\"\n [validationStatusDescriptions]=\"validationStatusDescriptions\" [allowFilesDrop]=\"fileUploadField.allowFilesDrop || false\"\n [title]=\"fileUploadField.title\" [labelColSize]=\"field().labelColSize\" [minFileSize]=\"fileUploadField.minFileSize\"\n [isMultiple]=\"fileUploadField.isMultiple || false\" [allowedExtensions]=\"fileUploadField.allowedExtensions || '*'\"\n [maxFileSize]=\"fileUploadField.maxFileSize\" [layout]=\"layout()\" (fileChanged)=\"handleFileSelected($event)\"></upd-file-upload>\n }\n @case (DynamicFieldType.MaskedInput) {\n <upd-input [name]=\"field().name\" [label]=\"field().label\" [placeholder]=\"field().placeholder\" [hint]=\"field().hint\"\n [hintAsTooltip]=\"field().hintAsTooltip || false\" [validationStatus]=\"validationStatus\" [mask]=\"maskedField.mask\"\n [maskConfig]=\"maskedField.maskConfig\" [validationStatusDescriptions]=\"validationStatusDescriptions\" [layout]=\"layout()\"\n [isDisabled]=\"field().isDisabled || false\" [type]=\"inputField.inputType || 'text'\" [labelColSize]=\"field().labelColSize\"\n [value]=\"formControl.value\" (valueChange)=\"setControlValue($event)\" (blurred)=\"onBlur()\" (keyUpEnter)=\"onInputEnter()\">\n @if (!!inputField.prefix) {\n <ng-template updInputPrepend>\n {{ textService.getText(inputField.prefix) }}\n </ng-template>\n }\n\n @if (!!inputField.suffix) {\n <ng-template updInputAppend>\n {{ textService.getText(inputField.suffix) }}\n </ng-template>\n }\n </upd-input>\n }\n @case(DynamicFieldType.Button) {\n <upd-button [text]=\"field().label\" [isDisabled]=\"field().isDisabled || false\" [model]=\"buttonField.model\" />\n }\n @case(DynamicFieldType.ButtonGroup) {\n @if(!!field().label) {\n <label class=\"form-label\">{{ getText(field().label) }}</label>\n }\n\n <div class=\"btn-group\" role=\"group\">\n @for (btn of buttonGroupField.buttons; track btn) {\n <upd-button [model]=\"btn\" [isDisabled]=\"field().isDisabled || false\" />\n }\n </div>\n }\n}" }]
|
|
168
|
+
}], ctorParameters: () => [], propDecorators: { hostClasses: [{
|
|
169
|
+
type: HostBinding,
|
|
170
|
+
args: ['class']
|
|
171
|
+
}], submitForm: [{
|
|
172
|
+
type: Output
|
|
173
|
+
}] } });
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvY29tcG9uZW50cy9keW5hbWljLWZpZWxkL2R5bmFtaWMtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL2NvbXBvbmVudHMvZHluYW1pYy1maWVsZC9keW5hbWljLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLE1BQU0sRUFBZSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQXVDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0QsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsUUFBUSxJQUFJLGNBQWMsRUFBYyxNQUFNLHlDQUF5QyxDQUFDO0FBTWpHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7O0FBaUJ6RSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsYUFBYTtJQUNwRCxJQUEwQixXQUFXO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFhRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENB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QUMsV0FBVyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxlQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDOzhHQXJLUSxxQkFBcUI7a0dBQXJCLHFCQUFxQiw4aUJDOUJsQywyeFRBeUlDOzsyRkQzR1kscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLG1CQUFtQjt3REFLSCxXQUFXO3NCQUFwQyxXQUFXO3VCQUFDLE9BQU87Z0JBSUQsVUFBVTtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0QmluZGluZywgaW5qZWN0LCBJbnB1dFNpZ25hbCwgaW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBjb21wdXRlZCwgZWZmZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGV4dE1vZGVsLCBUZXh0U2VydmljZSB9IGZyb20gJ0B1cGRldnMvc2RrJztcbmltcG9ydCB7IE9wdGlvbmFsVHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdAdXBkZXZzL3Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgQ29sdW1uU2l6ZUhlbHBlciwgSG9yaXpvbnRhbFZlcnRpY2FsVHlwZSwgVmFsaWRhdGlvblN0YXR1c1R5cGUgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGVmYXVsdHMgYXMgU2VsZWN0RGVmYXVsdHMsIFNlbGVjdEl0ZW0gfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvZm9ybS1jb250cm9scy9zZWxlY3QnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZENoYW5nZWRFdmVudCB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2xzL2ZpbGUtdXBsb2FkJztcblxuaW1wb3J0IHsgRmlsZVVwbG9hZEZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZS11cGxvYWQtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgSW5wdXRGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2lucHV0LWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IE1hc2tlZElucHV0RmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9tYXNrZWQtaW5wdXQtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRXJyb3JzSGVscGVyIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXJyb3JzLWhlbHBlcic7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudW1zL2R5bmFtaWMtZmllbGQudHlwZSc7XG5pbXBvcnQgeyBEeW5hbWljRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9keW5hbWljLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IENoZWNrYm94RmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jaGVja2JveC1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBSYWRpb0ZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmFkaW8tZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgU2VsZWN0RmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zZWxlY3QtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgU2luZ2xlU2VsZWN0RmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zaW5nbGUtc2VsZWN0LWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IENoZWNrYm94R3JvdXBGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoZWNrYm94LWdyb3VwLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFJhZGlvR3JvdXBGaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JhZGlvLWdyb3VwLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFRleHRhcmVhRmllbGRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy90ZXh0YXJlYS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBCdXR0b25GaWVsZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2J1dHRvbi1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cEZpZWxkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYnV0dG9uLWdyb3VwLWZpZWxkLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd1cGQtZHluYW1pYy1maWVsZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9keW5hbWljLWZpZWxkLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRmllbGRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGhvc3RDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLndyYXBwZXJDbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHN1Ym1pdEZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBEeW5hbWljRmllbGRUeXBlID0gRHluYW1pY0ZpZWxkVHlwZTtcbiAgICBTZWxlY3REZWZhdWx0cyA9IFNlbGVjdERlZmF1bHRzO1xuXG4gICAgZm9ybUdyb3VwOiBJbnB1dFNpZ25hbDxGb3JtR3JvdXA+ID0gaW5wdXQucmVxdWlyZWQoKTtcbiAgICBmaWVsZDogSW5wdXRTaWduYWw8RHluYW1pY0ZpZWxkTW9kZWw+ID0gaW5wdXQucmVxdWlyZWQoKTtcbiAgICBsYXlvdXQ6IElucHV0U2lnbmFsPEhvcml6b250YWxWZXJ0aWNhbFR5cGU+ID0gaW5wdXQucmVxdWlyZWQoKTtcbiAgICB2YWxpZGF0aW9uU3RhdHVzPzogVmFsaWRhdGlvblN0YXR1c1R5cGU7XG4gICAgdmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uczogVGV4dE1vZGVsW10gPSBbXTtcbiAgICBzZWxlY3RlZEl0ZW1CeVZhbHVlID0gc2lnbmFsPE9wdGlvbmFsVHlwZTxTZWxlY3RJdGVtPj4odW5kZWZpbmVkKTtcbiAgICBnZXQgZm9ybUNvbnRyb2woKTogRm9ybUNvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAoKS5jb250cm9sc1t0aGlzLmZpZWxkKCkubmFtZV0gYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuICAgIGdldCBpbnB1dEZpZWxkKCk6IElucHV0RmllbGRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKCkgYXMgSW5wdXRGaWVsZE1vZGVsO1xuICAgIH1cbiAgICBnZXQgY2hlY2tib3hGaWVsZCgpOiBDaGVja2JveEZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIENoZWNrYm94RmllbGRNb2RlbDtcbiAgICB9XG4gICAgZ2V0IGNoZWNrYm94R3JvdXBGaWVsZCgpOiBDaGVja2JveEdyb3VwRmllbGRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKCkgYXMgQ2hlY2tib3hHcm91cEZpZWxkTW9kZWw7XG4gICAgfVxuICAgIGdldCByYWRpb0ZpZWxkKCk6IENoZWNrYm94RmllbGRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKCkgYXMgUmFkaW9GaWVsZE1vZGVsO1xuICAgIH1cbiAgICBnZXQgcmFkaW9Hcm91cEZpZWxkKCk6IFJhZGlvR3JvdXBGaWVsZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoKSBhcyBSYWRpb0dyb3VwRmllbGRNb2RlbDtcbiAgICB9XG4gICAgZ2V0IHNlbGVjdEZpZWxkKCk6IFNlbGVjdEZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIFNlbGVjdEZpZWxkTW9kZWw7XG4gICAgfVxuICAgIGdldCBzaW5nbGVTZWxlY3RGaWVsZCgpOiBTaW5nbGVTZWxlY3RGaWVsZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoKSBhcyBTaW5nbGVTZWxlY3RGaWVsZE1vZGVsO1xuICAgIH1cbiAgICBnZXQgdGV4dGFyZWFGaWVsZCgpOiBUZXh0YXJlYUZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIFRleHRhcmVhRmllbGRNb2RlbDtcbiAgICB9XG4gICAgZ2V0IGZpbGVVcGxvYWRGaWVsZCgpOiBGaWxlVXBsb2FkRmllbGRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKCkgYXMgRmlsZVVwbG9hZEZpZWxkTW9kZWw7XG4gICAgfVxuICAgIGdldCBtYXNrZWRGaWVsZCgpOiBNYXNrZWRJbnB1dEZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIE1hc2tlZElucHV0RmllbGRNb2RlbDtcbiAgICB9XG4gICAgZ2V0IGJ1dHRvbkZpZWxkKCk6IEJ1dHRvbkZpZWxkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCgpIGFzIEJ1dHRvbkZpZWxkTW9kZWw7XG4gICAgfVxuICAgIGdldCBidXR0b25Hcm91cEZpZWxkKCk6IEJ1dHRvbkdyb3VwRmllbGRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKCkgYXMgQnV0dG9uR3JvdXBGaWVsZE1vZGVsO1xuICAgIH1cbiAgICBnZXQgY2hlY2tib3hHcm91cE9wdGlvbnNLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hlY2tib3hHcm91cEZpZWxkLm9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXQgcmFkaW9Hcm91cE9wdGlvbnNLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucmFkaW9Hcm91cEZpZWxkLm9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXQgZmlsZU5hbWVDb250cm9sKCk6IE9wdGlvbmFsVHlwZTxGb3JtQ29udHJvbD4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZpbGVVcGxvYWRGaWVsZC5maWxlTmFtZUZvcm1Qcm9wZXJ0eVxuICAgICAgICAgICAgPyB0aGlzLmZvcm1Hcm91cCgpLmNvbnRyb2xzW3RoaXMuZmlsZVVwbG9hZEZpZWxkLmZpbGVOYW1lRm9ybVByb3BlcnR5XSBhcyBGb3JtQ29udHJvbFxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgdGV4dFNlcnZpY2UgPSBpbmplY3QoVGV4dFNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB3cmFwcGVyQ2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gdGhpcy5maWVsZCgpLmlzVmlzaWJsZT8uKCkgPz8gdHJ1ZTtcbiAgICAgICAgY29uc3QgY29sdW1uQ2xhc3NlcyA9IENvbHVtblNpemVIZWxwZXIuZ2V0U2l6ZUNsYXNzZXModGhpcy5maWVsZCgpLmNvbFNpemUpO1xuXG4gICAgICAgIHJldHVybiBgJHtjb2x1bW5DbGFzc2VzfSAke2lzVmlzaWJsZSA/ICcnIDogJ2Qtbm9uZSd9YDtcbiAgICB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yc0hlbHBlciA9IGluamVjdChFcnJvcnNIZWxwZXIpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sO1xuICAgICAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gdGhpcy5maWVsZCgpLmlzVmlzaWJsZT8uKCkgPz8gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gSWYgYSBmaWVsZCBpcyBub3QgdmlzaWJsZSwgd2Ugc2hvdWxkIHJlbW92ZSBpdHMgdmFsaWRhdG9ycyBhbmQgcmVzdG9yZSBpZiBpdCBiZWNvbWVzIHZpc2libGUgYWdhaW4uXG4gICAgICAgICAgICBpZiAoISFjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZENvbmZpZyA9IHRoaXMuZmllbGQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWxpZGF0b3JzID0gZmllbGRDb25maWcudmFsaWRhdG9ycyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gWy4uLm9yaWdpbmFsVmFsaWRhdG9yc107XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkQ29uZmlnLmlzUmVxdWlyZWQgJiYgIW9yaWdpbmFsVmFsaWRhdG9ycy5pbmNsdWRlcyhWYWxpZGF0b3JzLnJlcXVpcmVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoZmluYWxWYWxpZGF0b3JzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzU3ViID0gdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShzdGF0dXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdJTlZBTElEJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnMgPSB0aGlzLmVycm9yc0hlbHBlci5nZXRNZXNzYWdlcyh0aGlzLmZvcm1Db250cm9sKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCh0ID0+ICh7IHRleHQ6IHQsIGlzVHJhbnNsYXRlZDogdHJ1ZSB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblN0YXR1cyA9ICdpbnZhbGlkJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU3RhdHVzID0gdGhpcy5maWVsZCgpLnNob3dWYWxpZFN0YXR1cyA/ICd2YWxpZCcgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBMaXN0ZW4gZm9yIHZhbHVlIGNoYW5nZXMgdG8gdXBkYXRlIHRoZSBzZWxlY3QgY29tcG9uZW50J3MgZGlzcGxheVxuICAgICAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2VTdWIgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdEZpZWxkLml0ZW1zPy5maW5kKGkgPT4gaS52YWx1ZSA9PSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1CeVZhbHVlLnNldChpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgdmFsdWUgb24gaW5pdFxuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQoKS5pbml0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbml0aWFsSXRlbSA9IHRoaXMuc2VsZWN0RmllbGQuaXRlbXM/LmZpbmQoaSA9PiBpLnZhbHVlID09IHRoaXMuZmllbGQoKS5pbml0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQnlWYWx1ZS5zZXQoaW5pdGlhbEl0ZW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFkZFN1YnNjcmlwdGlvbnMoc3RhdHVzU3ViLCB2YWx1ZUNoYW5nZVN1Yik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkKCkuc2hvdWxkVmFsaWRhdGVPbkJsdXIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0Q29udHJvbFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICB9XG5cbiAgICBnZXRUZXh0KHRleHRNb2RlbD86IFRleHRNb2RlbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRTZXJ2aWNlLmdldFRleHQodGV4dE1vZGVsKTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25EZXNjcmlwdGlvbihrZXk6IHN0cmluZywgdHlwZTogJ2NoZWNrYm94JyB8ICdyYWRpbycpOiBPcHRpb25hbFR5cGU8VGV4dE1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0eXBlID09PSAnY2hlY2tib3gnID8gdGhpcy5jaGVja2JveEdyb3VwRmllbGQub3B0aW9uc1trZXldIDogdGhpcy5yYWRpb0dyb3VwRmllbGQub3B0aW9uc1trZXldO1xuICAgIH1cblxuICAgIGhhbmRsZUZpbGVTZWxlY3RlZChldmVudD86IEZpbGVVcGxvYWRDaGFuZ2VkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSghIXRoaXMuZmlsZVVwbG9hZEZpZWxkLnNhdmVBc0RhdGFVcmwgPyBldmVudD8uZGF0YVVybCA6IGV2ZW50Py5maWxlKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuXG4gICAgICAgIGlmICghIXRoaXMuZmlsZVVwbG9hZEZpZWxkLmZpbGVOYW1lRm9ybVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVOYW1lQ29udHJvbCEuc2V0VmFsdWUoZXZlbnQ/LmZpbGUubmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0RW50ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuaW5wdXRGaWVsZC5zaG91bGRTdWJtaXRPbkVudGVyKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm0ubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQHN3aXRjaCAoZmllbGQoKS50eXBlKSB7XG4gICAgQGNhc2UgKER5bmFtaWNGaWVsZFR5cGUuSW5wdXQpIHtcbiAgICAgICAgPHVwZC1pbnB1dCBbbmFtZV09XCJmaWVsZCgpLm5hbWVcIiBbbGFiZWxdPVwiZmllbGQoKS5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJmaWVsZCgpLnBsYWNlaG9sZGVyXCIgW2hpbnRdPVwiZmllbGQoKS5oaW50XCJcbiAgICAgICAgICAgIFtoaW50QXNUb29sdGlwXT1cImZpZWxkKCkuaGludEFzVG9vbHRpcCB8fCBmYWxzZVwiIFt2YWxpZGF0aW9uU3RhdHVzXT1cInZhbGlkYXRpb25TdGF0dXNcIlxuICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNdPVwidmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc1wiIFtsYXlvdXRdPVwibGF5b3V0KClcIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW3R5cGVdPVwiaW5wdXRGaWVsZC5pbnB1dFR5cGUgfHwgJ3RleHQnXCIgW2xhYmVsQ29sU2l6ZV09XCJmaWVsZCgpLmxhYmVsQ29sU2l6ZVwiIFt2YWx1ZV09XCJmb3JtQ29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0Q29udHJvbFZhbHVlKCRldmVudClcIiAoYmx1cnJlZCk9XCJvbkJsdXIoKVwiIChrZXlVcEVudGVyKT1cIm9uSW5wdXRFbnRlcigpXCI+XG4gICAgICAgICAgICBAaWYgKCEhaW5wdXRGaWVsZC5wcmVmaXgpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdXBkSW5wdXRQcmVwZW5kPlxuICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0U2VydmljZS5nZXRUZXh0KGlucHV0RmllbGQucHJlZml4KSB9fVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoISFpbnB1dEZpZWxkLnN1ZmZpeCkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB1cGRJbnB1dEFwcGVuZD5cbiAgICAgICAgICAgICAgICAgICAge3sgdGV4dFNlcnZpY2UuZ2V0VGV4dChpbnB1dEZpZWxkLnN1ZmZpeCkgfX1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3VwZC1pbnB1dD5cbiAgICB9XG4gICAgQGNhc2UgKER5bmFtaWNGaWVsZFR5cGUuQ2hlY2tib3gpIHtcbiAgICAgICAgPHVwZC1jaGVja2JveCBbbmFtZV09XCJmaWVsZCgpLm5hbWVcIiBbbGFiZWxdPVwiZmllbGQoKS5sYWJlbFwiIFtoaW50XT1cImZpZWxkKCkuaGludFwiIFtoaW50QXNUb29sdGlwXT1cImZpZWxkKCkuaGludEFzVG9vbHRpcCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c109XCJ2YWxpZGF0aW9uU3RhdHVzXCIgW3ZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNdPVwidmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc1wiIFt2YWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImZpZWxkKCkuaXNEaXNhYmxlZCB8fCBmYWxzZVwiIFtpc0NoZWNrZWRdPVwiZm9ybUNvbnRyb2wudmFsdWVcIiBbaXNJbmxpbmVdPVwiY2hlY2tib3hGaWVsZC5pc0lubGluZSB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbaXNTd2l0Y2hdPVwiY2hlY2tib3hGaWVsZC5pc1N3aXRjaCB8fCBmYWxzZVwiIChjaGFuZ2VkKT1cInNldENvbnRyb2xWYWx1ZSgkZXZlbnQpXCI+PC91cGQtY2hlY2tib3g+XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLkNoZWNrYm94R3JvdXApIHtcbiAgICAgICAgQGlmICghIWZpZWxkKCkubGFiZWwpIHtcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyBnZXRUZXh0KGZpZWxkKCkubGFiZWwpIH19PC9sYWJlbD5cbiAgICAgICAgfVxuXG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBjaGVja2JveEdyb3VwT3B0aW9uc0tleXM7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgPHVwZC1jaGVja2JveCBbbmFtZV09XCJmaWVsZCgpLm5hbWVcIiBbbGFiZWxdPVwiZ2V0T3B0aW9uRGVzY3JpcHRpb24ob3B0aW9uLCAnY2hlY2tib3gnKVwiIFtoaW50XT1cImZpZWxkKCkuaGludFwiXG4gICAgICAgICAgICAgICAgW2hpbnRBc1Rvb2x0aXBdPVwiZmllbGQoKS5oaW50QXNUb29sdGlwIHx8IGZhbHNlXCIgW3ZhbGlkYXRpb25TdGF0dXNdPVwidmFsaWRhdGlvblN0YXR1c1wiXG4gICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNdPVwidmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtpc0NoZWNrZWRdPVwiZm9ybUNvbnRyb2wudmFsdWVcIiBbaXNJbmxpbmVdPVwiY2hlY2tib3hGaWVsZC5pc0lubGluZSB8fCBmYWxzZVwiIFtpc1N3aXRjaF09XCJjaGVja2JveEZpZWxkLmlzU3dpdGNoIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlZCk9XCJzZXRDb250cm9sVmFsdWUob3B0aW9uKVwiPjwvdXBkLWNoZWNrYm94PlxuICAgICAgICB9XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLlJhZGlvKSB7XG4gICAgICAgIDx1cGQtcmFkaW8gW25hbWVdPVwiZmllbGQoKS5uYW1lXCIgW2xhYmVsXT1cImZpZWxkKCkubGFiZWxcIiBbaGludF09XCJmaWVsZCgpLmhpbnRcIiBbaGludEFzVG9vbHRpcF09XCJmaWVsZCgpLmhpbnRBc1Rvb2x0aXAgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNdPVwidmFsaWRhdGlvblN0YXR1c1wiIFt2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXT1cInZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNcIiBbdmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaXNDaGVja2VkXT1cImZvcm1Db250cm9sLnZhbHVlXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCIgW2lzSW5saW5lXT1cInJhZGlvRmllbGQuaXNJbmxpbmUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgKHNlbGVjdGVkKT1cInNldENvbnRyb2xWYWx1ZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvdXBkLXJhZGlvPlxuICAgIH1cbiAgICBAY2FzZSAoRHluYW1pY0ZpZWxkVHlwZS5SYWRpb0dyb3VwKSB7XG4gICAgICAgIEBpZiAoISFmaWVsZCgpLmxhYmVsKSB7XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgZ2V0VGV4dChmaWVsZCgpLmxhYmVsKSB9fTwvbGFiZWw+XG4gICAgICAgIH1cblxuICAgICAgICBAZm9yIChvcHRpb24gb2YgcmFkaW9Hcm91cE9wdGlvbnNLZXlzOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgIDx1cGQtcmFkaW8gW25hbWVdPVwiZmllbGQoKS5uYW1lXCIgW2xhYmVsXT1cImdldE9wdGlvbkRlc2NyaXB0aW9uKG9wdGlvbiwgJ3JhZGlvJylcIiBbaGludF09XCJmaWVsZCgpLmhpbnRcIlxuICAgICAgICAgICAgICAgIFtoaW50QXNUb29sdGlwXT1cImZpZWxkKCkuaGludEFzVG9vbHRpcCB8fCBmYWxzZVwiIFt2YWxpZGF0aW9uU3RhdHVzXT1cInZhbGlkYXRpb25TdGF0dXNcIlxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXT1cInZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbaXNDaGVja2VkXT1cImZvcm1Db250cm9sLnZhbHVlXCIgW2lzSW5saW5lXT1cImNoZWNrYm94RmllbGQuaXNJbmxpbmUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJzZXRDb250cm9sVmFsdWUob3B0aW9uKVwiPjwvdXBkLXJhZGlvPlxuICAgICAgICB9XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLlNlbGVjdCkge1xuICAgICAgICA8dXBkLXNlbGVjdCBbbmFtZV09XCJmaWVsZCgpLm5hbWVcIiBbbGFiZWxdPVwiZmllbGQoKS5sYWJlbFwiIFtoaW50XT1cImZpZWxkKCkuaGludFwiIFtoaW50QXNUb29sdGlwXT1cImZpZWxkKCkuaGludEFzVG9vbHRpcCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c109XCJ2YWxpZGF0aW9uU3RhdHVzXCIgW3ZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNdPVwidmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc1wiXG4gICAgICAgICAgICBbdXNlU3lzdGVtU3R5bGVdPVwic2luZ2xlU2VsZWN0RmllbGQudXNlU3lzdGVtU3R5bGUgfHwgZmFsc2VcIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cInNlbGVjdEZpZWxkLml0ZW1zXCIgW2xheW91dF09XCJsYXlvdXQoKVwiIFtsYWJlbENvbFNpemVdPVwiZmllbGQoKS5sYWJlbENvbFNpemVcIiBbc3RvcmVdPVwic2VsZWN0RmllbGQuc3RvcmUhXCJcbiAgICAgICAgICAgIFtvYnNlcnZhYmxlXT1cInNlbGVjdEZpZWxkLm9ic2VydmFibGVcIiBbaXRlbUtleV09XCJzZWxlY3RGaWVsZC5pdGVtS2V5XCIgW2l0ZW1WYWx1ZV09XCJzZWxlY3RGaWVsZC5pdGVtVmFsdWVcIlxuICAgICAgICAgICAgW2Ryb3Bkb3duTWF4SGVpZ2h0XT1cInNlbGVjdEZpZWxkLmRyb3Bkb3duTWF4SGVpZ2h0IHx8IFNlbGVjdERlZmF1bHRzLmRyb3Bkb3duTWF4SGVpZ2h0XCJcbiAgICAgICAgICAgIFt0eXBlYWhlYWREZWJvdW5jZV09XCJzZWxlY3RGaWVsZC50eXBlYWhlYWREZWJvdW5jZSB8fCBTZWxlY3REZWZhdWx0cy50eXBlYWhlYWREZWJvdW5jZVwiXG4gICAgICAgICAgICBbc2hvdWxkQXV0b1NlYXJjaF09XCJzZWxlY3RGaWVsZC5zaG91bGRBdXRvU2VhcmNoIHx8IFNlbGVjdERlZmF1bHRzLnNob3VsZEF1dG9TZWFyY2hcIlxuICAgICAgICAgICAgW3Nob3VsZENsb3NlT25PdXRzaWRlQ2xpY2tdPVwic2VsZWN0RmllbGQuc2hvdWxkQ2xvc2VPbk91dHNpZGVDbGljayB8fCBTZWxlY3REZWZhdWx0cy5zaG91bGRDbG9zZU9uT3V0c2lkZUNsaWNrXCJcbiAgICAgICAgICAgIFtzaG91bGRUcnVuY2F0ZVNlbGVjdGVkVGV4dF09XCJzZWxlY3RGaWVsZC5zaG91bGRUcnVuY2F0ZVNlbGVjdGVkVGV4dFwiIFtwYXJlbnRWYWx1ZV09XCJzZWxlY3RGaWVsZC5wYXJlbnRWYWx1ZVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRJdGVtQnlWYWx1ZSgpXCIgKHNlbGVjdGVkSXRlbSk9XCJzZXRDb250cm9sVmFsdWUoJGV2ZW50Py52YWx1ZSlcIj48L3VwZC1zZWxlY3Q+XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLlNlbGVjdE11bHRpcGxlKSB7XG4gICAgICAgIDx1cGQtc2VsZWN0LW11bHRpcGxlIFtuYW1lXT1cImZpZWxkKCkubmFtZVwiIFtsYWJlbF09XCJmaWVsZCgpLmxhYmVsXCIgW2hpbnRdPVwiZmllbGQoKS5oaW50XCJcbiAgICAgICAgICAgIFtoaW50QXNUb29sdGlwXT1cImZpZWxkKCkuaGludEFzVG9vbHRpcCB8fCBmYWxzZVwiIFt2YWxpZGF0aW9uU3RhdHVzXT1cInZhbGlkYXRpb25TdGF0dXNcIlxuICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNdPVwidmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc1wiIFtpc0Rpc2FibGVkXT1cImZpZWxkKCkuaXNEaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwic2VsZWN0RmllbGQuaXRlbXNcIiBbbGF5b3V0XT1cImxheW91dCgpXCIgW2xhYmVsQ29sU2l6ZV09XCJmaWVsZCgpLmxhYmVsQ29sU2l6ZVwiIFtzdG9yZV09XCJzZWxlY3RGaWVsZC5zdG9yZSFcIlxuICAgICAgICAgICAgW29ic2VydmFibGVdPVwic2VsZWN0RmllbGQub2JzZXJ2YWJsZVwiIFtpdGVtS2V5XT1cInNlbGVjdEZpZWxkLml0ZW1LZXlcIiBbaXRlbVZhbHVlXT1cInNlbGVjdEZpZWxkLml0ZW1WYWx1ZVwiXG4gICAgICAgICAgICBbZHJvcGRvd25NYXhIZWlnaHRdPVwic2VsZWN0RmllbGQuZHJvcGRvd25NYXhIZWlnaHQgfHwgU2VsZWN0RGVmYXVsdHMuZHJvcGRvd25NYXhIZWlnaHRcIlxuICAgICAgICAgICAgW3R5cGVhaGVhZERlYm91bmNlXT1cInNlbGVjdEZpZWxkLnR5cGVhaGVhZERlYm91bmNlIHx8IFNlbGVjdERlZmF1bHRzLnR5cGVhaGVhZERlYm91bmNlXCJcbiAgICAgICAgICAgIFtzaG91bGRBdXRvU2VhcmNoXT1cInNlbGVjdEZpZWxkLnNob3VsZEF1dG9TZWFyY2ggfHwgU2VsZWN0RGVmYXVsdHMuc2hvdWxkQXV0b1NlYXJjaFwiIFtwYXJlbnRWYWx1ZV09XCJzZWxlY3RGaWVsZC5wYXJlbnRWYWx1ZVwiXG4gICAgICAgICAgICBbc2hvdWxkQ2xvc2VPbk91dHNpZGVDbGlja109XCJzZWxlY3RGaWVsZC5zaG91bGRDbG9zZU9uT3V0c2lkZUNsaWNrIHx8IFNlbGVjdERlZmF1bHRzLnNob3VsZENsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cImZvcm1Db250cm9sLnZhbHVlXCIgKHNlbGVjdGVkSWRzKT1cInNldENvbnRyb2xWYWx1ZSgkZXZlbnQpXCI+PC91cGQtc2VsZWN0LW11bHRpcGxlPlxuICAgIH1cbiAgICBAY2FzZSAoRHluYW1pY0ZpZWxkVHlwZS5MYWJlbCkge1xuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgZ2V0VGV4dChmaWVsZCgpLmxhYmVsKSB9fTwvbGFiZWw+XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLlRleHRBcmVhKSB7XG4gICAgICAgIDx1cGQtdGV4dGFyZWEgW25hbWVdPVwiZmllbGQoKS5uYW1lXCIgW2xhYmVsXT1cImZpZWxkKCkubGFiZWxcIiBbcGxhY2Vob2xkZXJdPVwiZmllbGQoKS5wbGFjZWhvbGRlclwiIFtoaW50XT1cImZpZWxkKCkuaGludFwiXG4gICAgICAgICAgICBbaGludEFzVG9vbHRpcF09XCJmaWVsZCgpLmhpbnRBc1Rvb2x0aXAgfHwgZmFsc2VcIiBbdmFsaWRhdGlvblN0YXR1c109XCJ2YWxpZGF0aW9uU3RhdHVzXCJcbiAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXT1cInZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNcIiBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1Db250cm9sLnZhbHVlXCIgW2N1c3RvbUNsYXNzZXNdPVwidGV4dGFyZWFGaWVsZC5jdXN0b21DbGFzc2VzXCIgW3dyYXBwZXJDbGFzc2VzXT1cInRleHRhcmVhRmllbGQud3JhcHBlckNsYXNzZXNcIlxuICAgICAgICAgICAgW21heExlbmd0aF09XCJ0ZXh0YXJlYUZpZWxkLm1heExlbmd0aFwiIFtyb3dzXT1cInRleHRhcmVhRmllbGQucm93c1wiXG4gICAgICAgICAgICBbZGlzcGxheUNoYXJhY3RlcnNDb3VudF09XCJ0ZXh0YXJlYUZpZWxkLmRpc3BsYXlDaGFyYWN0ZXJzQ291bnQgfHwgZmFsc2VcIiAodmFsdWVDaGFuZ2UpPVwic2V0Q29udHJvbFZhbHVlKCRldmVudClcIj5cbiAgICAgICAgPC91cGQtdGV4dGFyZWE+XG4gICAgfVxuICAgIEBjYXNlIChEeW5hbWljRmllbGRUeXBlLkZpbGVVcGxvYWQpIHtcbiAgICAgICAgPHVwZC1maWxlLXVwbG9hZCBbbmFtZV09XCJmaWVsZCgpLm5hbWVcIiBbbGFiZWxdPVwiZmllbGQoKS5sYWJlbFwiIFtoaW50XT1cImZpZWxkKCkuaGludFwiIFtpc0Rpc2FibGVkXT1cImZpZWxkKCkuaXNEaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgICBbaGludEFzVG9vbHRpcF09XCJmaWVsZCgpLmhpbnRBc1Rvb2x0aXAgfHwgZmFsc2VcIiBbdmFsaWRhdGlvblN0YXR1c109XCJ2YWxpZGF0aW9uU3RhdHVzXCIgW2ZpbGVOYW1lXT1cImZpbGVOYW1lQ29udHJvbD8udmFsdWVcIlxuICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNEZXNjcmlwdGlvbnNdPVwidmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc1wiIFthbGxvd0ZpbGVzRHJvcF09XCJmaWxlVXBsb2FkRmllbGQuYWxsb3dGaWxlc0Ryb3AgfHwgZmFsc2VcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImZpbGVVcGxvYWRGaWVsZC50aXRsZVwiIFtsYWJlbENvbFNpemVdPVwiZmllbGQoKS5sYWJlbENvbFNpemVcIiBbbWluRmlsZVNpemVdPVwiZmlsZVVwbG9hZEZpZWxkLm1pbkZpbGVTaXplXCJcbiAgICAgICAgICAgIFtpc011bHRpcGxlXT1cImZpbGVVcGxvYWRGaWVsZC5pc011bHRpcGxlIHx8IGZhbHNlXCIgW2FsbG93ZWRFeHRlbnNpb25zXT1cImZpbGVVcGxvYWRGaWVsZC5hbGxvd2VkRXh0ZW5zaW9ucyB8fCAnKidcIlxuICAgICAgICAgICAgW21heEZpbGVTaXplXT1cImZpbGVVcGxvYWRGaWVsZC5tYXhGaWxlU2l6ZVwiIFtsYXlvdXRdPVwibGF5b3V0KClcIiAoZmlsZUNoYW5nZWQpPVwiaGFuZGxlRmlsZVNlbGVjdGVkKCRldmVudClcIj48L3VwZC1maWxlLXVwbG9hZD5cbiAgICB9XG4gICAgQGNhc2UgKER5bmFtaWNGaWVsZFR5cGUuTWFza2VkSW5wdXQpIHtcbiAgICAgICAgPHVwZC1pbnB1dCBbbmFtZV09XCJmaWVsZCgpLm5hbWVcIiBbbGFiZWxdPVwiZmllbGQoKS5sYWJlbFwiIFtwbGFjZWhvbGRlcl09XCJmaWVsZCgpLnBsYWNlaG9sZGVyXCIgW2hpbnRdPVwiZmllbGQoKS5oaW50XCJcbiAgICAgICAgICAgIFtoaW50QXNUb29sdGlwXT1cImZpZWxkKCkuaGludEFzVG9vbHRpcCB8fCBmYWxzZVwiIFt2YWxpZGF0aW9uU3RhdHVzXT1cInZhbGlkYXRpb25TdGF0dXNcIiBbbWFza109XCJtYXNrZWRGaWVsZC5tYXNrXCJcbiAgICAgICAgICAgIFttYXNrQ29uZmlnXT1cIm1hc2tlZEZpZWxkLm1hc2tDb25maWdcIiBbdmFsaWRhdGlvblN0YXR1c0Rlc2NyaXB0aW9uc109XCJ2YWxpZGF0aW9uU3RhdHVzRGVzY3JpcHRpb25zXCIgW2xheW91dF09XCJsYXlvdXQoKVwiXG4gICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJmaWVsZCgpLmlzRGlzYWJsZWQgfHwgZmFsc2VcIiBbdHlwZV09XCJpbnB1dEZpZWxkLmlucHV0VHlwZSB8fCAndGV4dCdcIiBbbGFiZWxDb2xTaXplXT1cImZpZWxkKCkubGFiZWxDb2xTaXplXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtQ29udHJvbC52YWx1ZVwiICh2YWx1ZUNoYW5nZSk9XCJzZXRDb250cm9sVmFsdWUoJGV2ZW50KVwiIChibHVycmVkKT1cIm9uQmx1cigpXCIgKGtleVVwRW50ZXIpPVwib25JbnB1dEVudGVyKClcIj5cbiAgICAgICAgICAgIEBpZiAoISFpbnB1dEZpZWxkLnByZWZpeCkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB1cGRJbnB1dFByZXBlbmQ+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRleHRTZXJ2aWNlLmdldFRleHQoaW5wdXRGaWVsZC5wcmVmaXgpIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICghIWlucHV0RmllbGQuc3VmZml4KSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHVwZElucHV0QXBwZW5kPlxuICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0U2VydmljZS5nZXRUZXh0KGlucHV0RmllbGQuc3VmZml4KSB9fVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdXBkLWlucHV0PlxuICAgIH1cbiAgICBAY2FzZShEeW5hbWljRmllbGRUeXBlLkJ1dHRvbikge1xuICAgICAgICA8dXBkLWJ1dHRvbiBbdGV4dF09XCJmaWVsZCgpLmxhYmVsXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCIgW21vZGVsXT1cImJ1dHRvbkZpZWxkLm1vZGVsXCIgLz5cbiAgICB9XG4gICAgQGNhc2UoRHluYW1pY0ZpZWxkVHlwZS5CdXR0b25Hcm91cCkge1xuICAgICAgICBAaWYoISFmaWVsZCgpLmxhYmVsKSB7XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgZ2V0VGV4dChmaWVsZCgpLmxhYmVsKSB9fTwvbGFiZWw+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCI+XG4gICAgICAgICAgICBAZm9yIChidG4gb2YgYnV0dG9uR3JvdXBGaWVsZC5idXR0b25zOyB0cmFjayBidG4pIHtcbiAgICAgICAgICAgICAgICA8dXBkLWJ1dHRvbiBbbW9kZWxdPVwiYnRuXCIgW2lzRGlzYWJsZWRdPVwiZmllbGQoKS5pc0Rpc2FibGVkIHx8IGZhbHNlXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxufSJdfQ==
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { Component, effect, EventEmitter, inject, input, model, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
|
+
import { TextService } from '@updevs/sdk';
|
|
4
|
+
import { BaseComponent } from '@updevs/sdk/layout';
|
|
5
|
+
import { startWith } from 'rxjs';
|
|
6
|
+
import { DynamicFieldType } from './models/enums/dynamic-field.type';
|
|
7
|
+
import { AttachmentTypeEnum } from './models/enums/attachment-type.enum';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "@updevs/components/button";
|
|
11
|
+
import * as i3 from "@jsverse/transloco";
|
|
12
|
+
import * as i4 from "./components/dynamic-field/dynamic-field.component";
|
|
13
|
+
export class FormComponent extends BaseComponent {
|
|
14
|
+
get titleText() {
|
|
15
|
+
return this.textService.getText(this.title());
|
|
16
|
+
}
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this.initialized = new EventEmitter();
|
|
20
|
+
this.dataLoaded = new EventEmitter(); // TODO: implementar
|
|
21
|
+
this.submitted = new EventEmitter();
|
|
22
|
+
/**
|
|
23
|
+
* Rows to generate the form.
|
|
24
|
+
*/
|
|
25
|
+
this.rows = input.required();
|
|
26
|
+
/**
|
|
27
|
+
* Form's layout.
|
|
28
|
+
*/
|
|
29
|
+
this.layout = input('vertical');
|
|
30
|
+
/**
|
|
31
|
+
* Title of the form.
|
|
32
|
+
* Optional.
|
|
33
|
+
*/
|
|
34
|
+
this.title = input(undefined);
|
|
35
|
+
/**
|
|
36
|
+
* Whether the actions section will be displayed.
|
|
37
|
+
*/
|
|
38
|
+
this.hasActionsSection = input(true);
|
|
39
|
+
/**
|
|
40
|
+
* Whether the form is contained in a card.
|
|
41
|
+
* If true, it'll display a card as a form wrapper.
|
|
42
|
+
*/
|
|
43
|
+
this.isCard = input(false);
|
|
44
|
+
/**
|
|
45
|
+
* Whether the form is in read only mode, which means no fields can be edited.
|
|
46
|
+
*/
|
|
47
|
+
this.isDisabled = input(false, { transform: (val) => typeof val === 'string' ? val === '' : val });
|
|
48
|
+
/**
|
|
49
|
+
* Whether the form is loading.
|
|
50
|
+
*/
|
|
51
|
+
this.isLoading = input(false); // TODO: implementar
|
|
52
|
+
/**
|
|
53
|
+
* Whether the form is saving.
|
|
54
|
+
*/
|
|
55
|
+
this.isSaving = input(false); // TODO: implementar
|
|
56
|
+
/**
|
|
57
|
+
* Current form data.
|
|
58
|
+
*/
|
|
59
|
+
this.formData = model({});
|
|
60
|
+
this.formGroup = model(new FormGroup({}));
|
|
61
|
+
this.textService = inject(TextService);
|
|
62
|
+
effect(() => {
|
|
63
|
+
this.rows();
|
|
64
|
+
this.setupFormGroup();
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
ngOnInit() {
|
|
68
|
+
this.setupFormGroup();
|
|
69
|
+
this.initialized.emit();
|
|
70
|
+
const valueChangesSub = this.formGroup().valueChanges.subscribe(() => this.formData.set(this.formGroup().getRawValue()));
|
|
71
|
+
this.addSubscriptions(valueChangesSub);
|
|
72
|
+
}
|
|
73
|
+
submit() {
|
|
74
|
+
this.formGroup().markAllAsTouched();
|
|
75
|
+
this.formGroup().updateValueAndValidity();
|
|
76
|
+
Object.values(this.formGroup().controls).forEach(control => control.updateValueAndValidity());
|
|
77
|
+
if (this.formGroup().valid) {
|
|
78
|
+
this.submitted.emit(this.formGroup().value);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
setupFormGroup() {
|
|
82
|
+
const allFields = this.rows().map(r => r.fields).reduce((acc, fields) => acc.concat(fields), []);
|
|
83
|
+
allFields.forEach(field => {
|
|
84
|
+
const validators = field.validators || [];
|
|
85
|
+
if (field.isRequired && !validators.includes(Validators.required)) {
|
|
86
|
+
validators.push(Validators.required);
|
|
87
|
+
}
|
|
88
|
+
// TODO: handle extra cases, when ready. DateRange, DateTimeRange, TimeRange, etc.
|
|
89
|
+
switch (field.type) {
|
|
90
|
+
case DynamicFieldType.FileUpload:
|
|
91
|
+
this.formGroup().addControl(field.name, new FormControl({
|
|
92
|
+
value: field.initValue,
|
|
93
|
+
disabled: field.isDisabled || this.isDisabled()
|
|
94
|
+
}, { validators: validators }));
|
|
95
|
+
const fileNameFormProp = field.fileNameFormProperty;
|
|
96
|
+
if (!!fileNameFormProp) {
|
|
97
|
+
this.formGroup().addControl(fileNameFormProp, new FormControl({
|
|
98
|
+
value: field.initValue,
|
|
99
|
+
disabled: field.isDisabled || this.isDisabled()
|
|
100
|
+
}, { validators: validators }));
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
// Buttons don't generate values, so they don't need to have a control.
|
|
104
|
+
case DynamicFieldType.Button:
|
|
105
|
+
case DynamicFieldType.ButtonGroup:
|
|
106
|
+
break;
|
|
107
|
+
default:
|
|
108
|
+
this.formGroup().addControl(field.name, new FormControl({
|
|
109
|
+
value: field.initValue,
|
|
110
|
+
disabled: field.isDisabled || this.isDisabled()
|
|
111
|
+
}, { validators: validators, updateOn: field.updateOn || 'blur' }));
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
this.bindAttachments(allFields);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Glue the declarative AttachmentRule array to actual FormControls.
|
|
118
|
+
**/
|
|
119
|
+
bindAttachments(fields) {
|
|
120
|
+
fields.forEach(childField => {
|
|
121
|
+
if (!childField.attachments?.length) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const childCtrl = this.formGroup().get(childField.name);
|
|
125
|
+
childField.attachments.forEach((rule) => {
|
|
126
|
+
const parentCtrl = this.formGroup().get(rule.name);
|
|
127
|
+
if (!parentCtrl) {
|
|
128
|
+
console.warn(`[FormComponent] attachment parent '${rule.name}' not found`);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const sub = parentCtrl.valueChanges
|
|
132
|
+
.pipe(startWith(parentCtrl.value))
|
|
133
|
+
.subscribe(parentVal => {
|
|
134
|
+
const childVal = childCtrl.value;
|
|
135
|
+
let shouldDisable = false;
|
|
136
|
+
if (rule.type === AttachmentTypeEnum.ParentLoad || rule.disableIfEmpty) {
|
|
137
|
+
shouldDisable = parentVal === null || parentVal === undefined || parentVal === '';
|
|
138
|
+
}
|
|
139
|
+
if (!!rule.disableIf) {
|
|
140
|
+
shouldDisable = rule.disableIf(childVal, parentVal);
|
|
141
|
+
}
|
|
142
|
+
if (shouldDisable) {
|
|
143
|
+
if (rule.clearValueIfDisabled && childCtrl.enabled) {
|
|
144
|
+
childCtrl.setValue(null, { emitEvent: false });
|
|
145
|
+
}
|
|
146
|
+
childField.parentValue = undefined;
|
|
147
|
+
childCtrl.disable({ emitEvent: false });
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
childField.parentValue = parentVal;
|
|
151
|
+
if (childCtrl.disabled) {
|
|
152
|
+
childCtrl.enable({ emitEvent: false });
|
|
153
|
+
}
|
|
154
|
+
if (rule.clearValueIfEmpty && !parentVal) {
|
|
155
|
+
childCtrl.setValue(null, { emitEvent: false });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (rule.visibleIf) {
|
|
159
|
+
const visible = rule.visibleIf(childVal, parentVal);
|
|
160
|
+
childField.isHidden = !visible;
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
this.addSubscriptions(sub);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FormComponent, selector: "upd-form", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hasActionsSection: { classPropertyName: "hasActionsSection", publicName: "hasActionsSection", isSignal: true, isRequired: false, transformFunction: null }, isCard: { classPropertyName: "isCard", publicName: "isCard", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isSaving: { classPropertyName: "isSaving", publicName: "isSaving", isSignal: true, isRequired: false, transformFunction: null }, formData: { classPropertyName: "formData", publicName: "formData", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { initialized: "initialized", dataLoaded: "dataLoaded", submitted: "submitted", formData: "formDataChange", formGroup: "formGroupChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n @if (!field.isHidden) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i4.DynamicFieldComponent, selector: "upd-dynamic-field", inputs: ["formGroup", "field", "layout"], outputs: ["submitForm"] }] }); }
|
|
169
|
+
}
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FormComponent, decorators: [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{ selector: 'upd-form', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Form'\">\n <div [class.card]=\"isCard()\">\n @if (!!titleText) {\n <div [class.card-header]=\"isCard()\">\n <h3 [class.card-title]=\"isCard()\">{{ titleText }}</h3>\n </div>\n }\n <div [class.card-body]=\"isCard()\">\n @for (row of rows(); track row; let isFirst = $first) {\n <div class=\"row\" [class.mt-4]=\"!isFirst\">\n @if (!!row.title) {\n <div class=\"card-title col-12\">{{ textService.getText(row.title) }}</div>\n }\n\n @for (field of row.fields; track field.name) {\n @if (!field.isHidden) {\n <upd-dynamic-field [layout]=\"layout()\" [field]=\"field\" [formGroup]=\"formGroup()\" (submitForm)=\"submit()\">\n </upd-dynamic-field>\n }\n }\n </div>\n }\n </div>\n\n @if (hasActionsSection()) {\n <div [class.card-footer]=\"isCard()\" [class.mt-4]=\"!isCard()\">\n <upd-button colorStyle=\"primary\" (clicked)=\"submit()\">\n {{ t('Submit') }}\n </upd-button>\n </div>\n }\n </div>\n</ng-container>" }]
|
|
173
|
+
}], ctorParameters: () => [], propDecorators: { initialized: [{
|
|
174
|
+
type: Output
|
|
175
|
+
}], dataLoaded: [{
|
|
176
|
+
type: Output
|
|
177
|
+
}], submitted: [{
|
|
178
|
+
type: Output
|
|
179
|
+
}] } });
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7OztBQVN6RSxNQUFNLE9BQU8sYUFBaUIsU0FBUSxhQUFhO0lBNEMvQyxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFJRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBbERPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQyxDQUFDLG9CQUFvQjtRQUN4RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUVyRDs7V0FFRztRQUNILFNBQUksR0FBZ0Ms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LEVBQUUsQ0FBQyxDQUFDO3dCQUNuRCxDQUFDO29CQUNMLENBQUM7b0JBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUNwRCxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDO29CQUNuQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0EvTFEsYUFBYTtrR0FBYixhQUFhLHUvQ0NwQjFCLHUxQ0FnQ2U7OzJGRFpGLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0ksVUFBVTt3REFLRCxXQUFXO3NCQUE3QixNQUFNO2dCQUNZLFVBQVU7c0JBQTVCLE1BQU07Z0JBQ1ksU0FBUztzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBtb2RlbCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFZlcnRpY2FsVHlwZSB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUZXh0TW9kZWwsIFRleHRTZXJ2aWNlIH0gZnJvbSAnQHVwZGV2cy9zZGsnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0B1cGRldnMvc2RrL2xheW91dCc7XG5pbXBvcnQgeyBPcHRpb25hbFR5cGUgfSBmcm9tICdAdXBkZXZzL3Nkay90eXBlcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkVHlwZSB9IGZyb20gJy4vbW9kZWxzL2VudW1zL2R5bmFtaWMtZmllbGQudHlwZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkRmllbGRNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2ZpbGUtdXBsb2FkLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZvcm1Sb3dNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2Zvcm0tcm93Lm1vZGVsJztcbmltcG9ydCB7IEF0dGFjaG1lbnRUeXBlRW51bSB9IGZyb20gJy4vbW9kZWxzL2VudW1zL2F0dGFjaG1lbnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IEF0dGFjaG1lbnRSdWxlIH0gZnJvbSAnLi9tb2RlbHMvYXR0YWNobWVudC1ydWxlLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNGaWVsZE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvZHluYW1pYy1maWVsZC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXBkLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZm9ybS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUNvbXBvbmVudDxUPiBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBpbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgZGF0YUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTsgLy8gVE9ETzogaW1wbGVtZW50YXJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gICAgLyoqXG4gICAgICogUm93cyB0byBnZW5lcmF0ZSB0aGUgZm9ybS5cbiAgICAgKi9cbiAgICByb3dzOiBJbnB1dFNpZ25hbDxGb3JtUm93TW9kZWxbXT4gPSBpbnB1dC5yZXF1aXJlZCgpO1xuICAgIC8qKlxuICAgICAqIEZvcm0ncyBsYXlvdXQuXG4gICAgICovXG4gICAgbGF5b3V0OiBJbnB1dFNpZ25hbDxIb3Jpem9udGFsVmVydGljYWxUeXBlPiA9IGlucHV0PEhvcml6b250YWxWZXJ0aWNhbFR5cGU+KCd2ZXJ0aWNhbCcpO1xuICAgIC8qKlxuICAgICAqIFRpdGxlIG9mIHRoZSBmb3JtLlxuICAgICAqIE9wdGlvbmFsLlxuICAgICAqL1xuICAgIHRpdGxlOiBJbnB1dFNpZ25hbDxPcHRpb25hbFR5cGU8VGV4dE1vZGVsPj4gPSBpbnB1dDxPcHRpb25hbFR5cGU8VGV4dE1vZGVsPj4odW5kZWZpbmVkKTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBhY3Rpb25zIHNlY3Rpb24gd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgaGFzQWN0aW9uc1NlY3Rpb24gPSBpbnB1dCh0cnVlKTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmb3JtIGlzIGNvbnRhaW5lZCBpbiBhIGNhcmQuXG4gICAgICogSWYgdHJ1ZSwgaXQnbGwgZGlzcGxheSBhIGNhcmQgYXMgYSBmb3JtIHdyYXBwZXIuXG4gICAgICovXG4gICAgaXNDYXJkID0gaW5wdXQoZmFsc2UpO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGZvcm0gaXMgaW4gcmVhZCBvbmx5IG1vZGUsIHdoaWNoIG1lYW5zIG5vIGZpZWxkcyBjYW4gYmUgZWRpdGVkLlxuICAgICAqL1xuICAgIGlzRGlzYWJsZWQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06ICh2YWw6IGJvb2xlYW4gfCBzdHJpbmcpID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gdmFsID09PSAnJyA6IHZhbCB9KTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmb3JtIGlzIGxvYWRpbmcuXG4gICAgICovXG4gICAgaXNMb2FkaW5nID0gaW5wdXQoZmFsc2UpOyAvLyBUT0RPOiBpbXBsZW1lbnRhclxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGZvcm0gaXMgc2F2aW5nLlxuICAgICAqL1xuICAgIGlzU2F2aW5nID0gaW5wdXQoZmFsc2UpOyAvLyBUT0RPOiBpbXBsZW1lbnRhclxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgZm9ybSBkYXRhLlxuICAgICAqL1xuICAgIGZvcm1EYXRhID0gbW9kZWwoe30gYXMgVCk7XG4gICAgZm9ybUdyb3VwID0gbW9kZWwobmV3IEZvcm1Hcm91cCh7fSkpO1xuICAgIGdldCB0aXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dFNlcnZpY2UuZ2V0VGV4dCh0aGlzLnRpdGxlKCkpO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IHRleHRTZXJ2aWNlID0gaW5qZWN0KFRleHRTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvd3MoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0dXBGb3JtR3JvdXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0dXBGb3JtR3JvdXAoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZC5lbWl0KCk7XG5cbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2VzU3ViID0gdGhpcy5mb3JtR3JvdXAoKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuZm9ybURhdGEuc2V0KHRoaXMuZm9ybUdyb3VwKCkuZ2V0UmF3VmFsdWUoKSBhcyBUKSk7XG5cbiAgICAgICAgdGhpcy5hZGRTdWJzY3JpcHRpb25zKHZhbHVlQ2hhbmdlc1N1Yik7XG4gICAgfVxuXG4gICAgc3VibWl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cCgpLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXAoKS5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IChjb250cm9sIGFzIEZvcm1Db250cm9sKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCkpO1xuXG4gICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cCgpLnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHRoaXMuZm9ybUdyb3VwKCkudmFsdWUgYXMgVCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRm9ybUdyb3VwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxGaWVsZHMgPSB0aGlzLnJvd3MoKS5tYXAociA9PiByLmZpZWxkcykucmVkdWNlKChhY2MsIGZpZWxkcykgPT4gYWNjLmNvbmNhdChmaWVsZHMpLCBbXSk7XG5cbiAgICAgICAgYWxsRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IGZpZWxkLnZhbGlkYXRvcnMgfHwgW107XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5pc1JlcXVpcmVkICYmICF2YWxpZGF0b3JzLmluY2x1ZGVzKFZhbGlkYXRvcnMucmVxdWlyZWQpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUT0RPOiBoYW5kbGUgZXh0cmEgY2FzZXMsIHdoZW4gcmVhZHkuIERhdGVSYW5nZSwgRGF0ZVRpbWVSYW5nZSwgVGltZVJhbmdlLCBldGMuXG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIER5bmFtaWNGaWVsZFR5cGUuRmlsZVVwbG9hZDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS5hZGRDb250cm9sKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkLmluaXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmllbGQuaXNEaXNhYmxlZCB8fCB0aGlzLmlzRGlzYWJsZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWVGb3JtUHJvcCA9IChmaWVsZCBhcyBGaWxlVXBsb2FkRmllbGRNb2RlbCkuZmlsZU5hbWVGb3JtUHJvcGVydHk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEhZmlsZU5hbWVGb3JtUHJvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAoKS5hZGRDb250cm9sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lRm9ybVByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1Db250cm9sKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkLmluaXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmlzRGlzYWJsZWQgfHwgdGhpcy5pc0Rpc2FibGVkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7IHZhbGlkYXRvcnM6IHZhbGlkYXRvcnMgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBCdXR0b25zIGRvbid0IGdlbmVyYXRlIHZhbHVlcywgc28gdGhleSBkb24ndCBuZWVkIHRvIGhhdmUgYSBjb250cm9sLlxuICAgICAgICAgICAgICAgIGNhc2UgRHluYW1pY0ZpZWxkVHlwZS5CdXR0b246XG4gICAgICAgICAgICAgICAgY2FzZSBEeW5hbWljRmllbGRUeXBlLkJ1dHRvbkdyb3VwOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cCgpLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1Db250cm9sKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGQuaW5pdFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmaWVsZC5pc0Rpc2FibGVkIHx8IHRoaXMuaXNEaXNhYmxlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7IHZhbGlkYXRvcnM6IHZhbGlkYXRvcnMsIHVwZGF0ZU9uOiBmaWVsZC51cGRhdGVPbiB8fCAnYmx1cicgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5iaW5kQXR0YWNobWVudHMoYWxsRmllbGRzKTtcbiAgICB9XG5cbiAgICAvKiogXG4gICAgICogR2x1ZSB0aGUgZGVjbGFyYXRpdmUgQXR0YWNobWVudFJ1bGUgYXJyYXkgdG8gYWN0dWFsIEZvcm1Db250cm9scy5cbiAgICAgKiovXG4gICAgcHJpdmF0ZSBiaW5kQXR0YWNobWVudHMoZmllbGRzOiBEeW5hbWljRmllbGRNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKGNoaWxkRmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKCFjaGlsZEZpZWxkLmF0dGFjaG1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQ3RybCA9IHRoaXMuZm9ybUdyb3VwKCkuZ2V0KGNoaWxkRmllbGQubmFtZSkgYXMgRm9ybUNvbnRyb2w7XG5cbiAgICAgICAgICAgIGNoaWxkRmllbGQuYXR0YWNobWVudHMuZm9yRWFjaCgocnVsZTogQXR0YWNobWVudFJ1bGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRDdHJsID0gdGhpcy5mb3JtR3JvdXAoKS5nZXQocnVsZS5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmICghcGFyZW50Q3RybCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFtGb3JtQ29tcG9uZW50XSBhdHRhY2htZW50IHBhcmVudCAnJHtydWxlLm5hbWV9JyBub3QgZm91bmRgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN1YiA9IHBhcmVudEN0cmwudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aChwYXJlbnRDdHJsLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShwYXJlbnRWYWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRWYWwgPSBjaGlsZEN0cmwudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2hvdWxkRGlzYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS50eXBlID09PSBBdHRhY2htZW50VHlwZUVudW0uUGFyZW50TG9hZCB8fCBydWxlLmRpc2FibGVJZkVtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzYWJsZSA9IHBhcmVudFZhbCA9PT0gbnVsbCB8fCBwYXJlbnRWYWwgPT09IHVuZGVmaW5lZCB8fCBwYXJlbnRWYWwgPT09ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFydWxlLmRpc2FibGVJZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZERpc2FibGUgPSBydWxlLmRpc2FibGVJZihjaGlsZFZhbCwgcGFyZW50VmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZERpc2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5jbGVhclZhbHVlSWZEaXNhYmxlZCAmJiBjaGlsZEN0cmwuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEN0cmwuc2V0VmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkRmllbGQucGFyZW50VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDdHJsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEZpZWxkLnBhcmVudFZhbHVlID0gcGFyZW50VmFsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkQ3RybC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEN0cmwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5jbGVhclZhbHVlSWZFbXB0eSAmJiAhcGFyZW50VmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS52aXNpYmxlSWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aXNpYmxlID0gcnVsZS52aXNpYmxlSWYoY2hpbGRWYWwsIHBhcmVudFZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRGaWVsZC5pc0hpZGRlbiA9ICF2aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyhzdWIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyBwcmVmaXg6ICdVcERldnMuRm9ybSdcIj5cbiAgICA8ZGl2IFtjbGFzcy5jYXJkXT1cImlzQ2FyZCgpXCI+XG4gICAgICAgIEBpZiAoISF0aXRsZVRleHQpIHtcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLmNhcmQtaGVhZGVyXT1cImlzQ2FyZCgpXCI+XG4gICAgICAgICAgICAgICAgPGgzIFtjbGFzcy5jYXJkLXRpdGxlXT1cImlzQ2FyZCgpXCI+e3sgdGl0bGVUZXh0IH19PC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgW2NsYXNzLmNhcmQtYm9keV09XCJpc0NhcmQoKVwiPlxuICAgICAgICAgICAgQGZvciAocm93IG9mIHJvd3MoKTsgdHJhY2sgcm93OyBsZXQgaXNGaXJzdCA9ICRmaXJzdCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBbY2xhc3MubXQtNF09XCIhaXNGaXJzdFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCEhcm93LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBjb2wtMTJcIj57eyB0ZXh0U2VydmljZS5nZXRUZXh0KHJvdy50aXRsZSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIHJvdy5maWVsZHM7IHRyYWNrIGZpZWxkLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWZpZWxkLmlzSGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwZC1keW5hbWljLWZpZWxkIFtsYXlvdXRdPVwibGF5b3V0KClcIiBbZmllbGRdPVwiZmllbGRcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cCgpXCIgKHN1Ym1pdEZvcm0pPVwic3VibWl0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VwZC1keW5hbWljLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoaGFzQWN0aW9uc1NlY3Rpb24oKSkge1xuICAgICAgICAgICAgPGRpdiBbY2xhc3MuY2FyZC1mb290ZXJdPVwiaXNDYXJkKClcIiBbY2xhc3MubXQtNF09XCIhaXNDYXJkKClcIj5cbiAgICAgICAgICAgICAgICA8dXBkLWJ1dHRvbiBjb2xvclN0eWxlPVwicHJpbWFyeVwiIChjbGlja2VkKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ1N1Ym1pdCcpIH19XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
|
package/esm2022/form/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './public-api';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1ydWxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL21vZGVscy9hdHRhY2htZW50LXJ1bGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dGFjaG1lbnRUeXBlRW51bSB9IGZyb20gJy4vZW51bXMvYXR0YWNobWVudC10eXBlLmVudW0nO1xuXG4vKipcbiAqIERlY2xhcmF0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3byBkeW5hbWljIGZpZWxkcy5cbiAqIFAgPSBwYXJlbnQgdmFsdWUgdHlwZSwgQyA9IGNoaWxkIHZhbHVlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudFJ1bGU8UCA9IGFueSwgQyA9IGFueT4ge1xuICAgIC8qKiBcbiAgICAgKiBOYW1lIG9mIHRoZSAqcGFyZW50KiBjb250cm9sIGluc2lkZSB0aGUgc2FtZSBGb3JtR3JvdXAuXG4gICAgICoqL1xuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBcbiAgICAgKiBLaW5kIG9mIGludGVyYWN0aW9uIChkZWZhdWx0ID0gRGlzYWJsZWQpLlxuICAgICAqKi9cbiAgICB0eXBlPzogQXR0YWNobWVudFR5cGVFbnVtO1xuXG4gICAgLyoqIFxuICAgICAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSAqY2hpbGQqIG11c3QgYmUgZGlzYWJsZWQuXG4gICAgICoqL1xuICAgIGRpc2FibGVJZj86IChjaGlsZFZhbHVlOiBDLCBwYXJlbnRWYWx1ZTogUCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKiBcbiAgICAgKiBEaXNhYmxlIHdoZW4gdGhlIHBhcmVudCBpcyBlbXB0eS9udWxsLycnLlxuICAgICAqKi9cbiAgICBkaXNhYmxlSWZFbXB0eT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciB0aGUgY2hpbGTigJlzIHZhbHVlIHRoZSBtb21lbnQgaXQgYmVjb21lcyBkaXNhYmxlZC5cbiAgICAgKiovXG4gICAgY2xlYXJWYWx1ZUlmRGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgdGhlIGNoaWxkIHdoZW4gdGhlIHBhcmVudCB0dXJucyBlbXB0eS5cbiAgICAgKiovXG4gICAgY2xlYXJWYWx1ZUlmRW1wdHk/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGZhbHNlIHRvIEhJREUgdGhlIGNoaWxkOyB0cnVlIOKGkiBzaG93LlxuICAgICAqKi9cbiAgICB2aXNpYmxlSWY/OiAoY2hpbGRWYWx1ZTogQywgcGFyZW50VmFsdWU6IFApID0+IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL21vZGVscy9idXR0b24tZmllbGQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcblxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkTW9kZWwgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbkZpZWxkTW9kZWwgZXh0ZW5kcyBEeW5hbWljRmllbGRNb2RlbCB7XG4gICAgbW9kZWw6IEJ1dHRvbk1vZGVsO1xufSJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWdyb3VwLWZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL21vZGVscy9idXR0b24tZ3JvdXAtZmllbGQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcblxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkTW9kZWwgfSBmcm9tICcuL2R5bmFtaWMtZmllbGQubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbkdyb3VwRmllbGRNb2RlbCBleHRlbmRzIER5bmFtaWNGaWVsZE1vZGVsIHtcbiAgICBidXR0b25zOiBCdXR0b25Nb2RlbFtdO1xufSJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvbW9kZWxzL2NoZWNrYm94LWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYWRpb0ZpZWxkTW9kZWwgfSBmcm9tICcuL3JhZGlvLWZpZWxkLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGVja2JveEZpZWxkTW9kZWwgZXh0ZW5kcyBSYWRpb0ZpZWxkTW9kZWwge1xuICAgIGlzU3dpdGNoPzogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAtZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvbW9kZWxzL2NoZWNrYm94LWdyb3VwLWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5VHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IFRleHRNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrJztcblxuaW1wb3J0IHsgQ2hlY2tib3hGaWVsZE1vZGVsIH0gZnJvbSAnLi9jaGVja2JveC1maWVsZC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hHcm91cEZpZWxkTW9kZWwgZXh0ZW5kcyBDaGVja2JveEZpZWxkTW9kZWwge1xuICAgIG9wdGlvbnM6IERpY3Rpb25hcnlUeXBlPFRleHRNb2RlbD47XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3JtL3NyYy9tb2RlbHMvZHluYW1pYy1maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRleHRNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrJztcbmltcG9ydCB7IFJvd0NvbHVtblNpemUgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgUmVxdWlyZWRQZXJtaXNzaW9uc01vZGVsIH0gZnJvbSAnQHVwZGV2cy9zZGsvc2VjdXJpdHknO1xuXG5pbXBvcnQgeyBEeW5hbWljRmllbGRUeXBlIH0gZnJvbSAnLi9lbnVtcy9keW5hbWljLWZpZWxkLnR5cGUnO1xuaW1wb3J0IHsgQXR0YWNobWVudFJ1bGUgfSBmcm9tICcuL2F0dGFjaG1lbnQtcnVsZS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtVXBkYXRlT24gfSBmcm9tICcuL2Zvcm0tdXBkYXRlLW9uLnR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGaWVsZE1vZGVsIHtcbiAgICB0eXBlOiBEeW5hbWljRmllbGRUeXBlO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgICBzaG91bGRWYWxpZGF0ZU9uQmx1cj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSWYgdGhlIGZpZWxkIGlzIHZhbGlkIGl0IHdpbGwgYmUgbWFya2VkIGFzIHN1Y2gsIGluc3RlYWQgb2YganVzdCBtYWludGFpbmluZyB0aGUgZGVmYXVsdCBzdGF0ZS5cbiAgICAgKi9cbiAgICBzaG93VmFsaWRTdGF0dXM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEluaXRpYWwgdmFsdWUuXG4gICAgICovXG4gICAgaW5pdFZhbHVlPzogYW55O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hlbiB0aGUgY29udHJvbCB2YWxpZGF0aW9uIGlzIHRyaWdnZXJlZC5cbiAgICAgKiAnY2hhbmdlJyAoZGVmYXVsdCksICdibHVyJywgb3IgJ3N1Ym1pdCcuXG4gICAgICovXG4gICAgdXBkYXRlT24/OiBGb3JtVXBkYXRlT247XG4gICAgcGxhY2Vob2xkZXI/OiBUZXh0TW9kZWw7XG4gICAgbGFiZWw/OiBUZXh0TW9kZWw7XG4gICAgaGludD86IFRleHRNb2RlbDtcbiAgICBoaW50QXNUb29sdGlwPzogYm9vbGVhbjtcbiAgICBjb2xTaXplPzogUm93Q29sdW1uU2l6ZTtcbiAgICBsYWJlbENvbFNpemU/OiBSb3dDb2x1bW5TaXplO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdO1xuICAgIHJlcXVpcmVkUGVybWlzc2lvbnM/OiBSZXF1aXJlZFBlcm1pc3Npb25zTW9kZWw7XG4gICAgLyoqIFxuICAgICAqIENyb3NzLWZpZWxkIGRlcGVuZGVuY2llcyAob3B0aW9uYWwpLlxuICAgICAqKi9cbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRSdWxlW107XG4gICAgaXNIaWRkZW4/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFZhbHVlIGNvbWluZyBmcm9tIGEgcGFyZW50IGZpZWxkIHdoZW4gdGhlIHJ1bGUgYEF0dGFjaG1lbnRUeXBlRW51bS5QYXJlbnRMb2FkYCBpcyBhY3RpdmUuXG4gICAgICogYHVwZC1zZWxlY3RgIGNhbiB1c2UgaXQgdG8gZmV0Y2ggdGhlIGRlcGVuZGVudCBsaXN0LlxuICAgICAqL1xuICAgIHBhcmVudFZhbHVlPzogYW55O1xuICAgIC8qKlxuICAgICAqIEEgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZpZWxkLlxuICAgICAqL1xuICAgIGlzVmlzaWJsZT86IFNpZ25hbDxib29sZWFuPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a parent field influences its child.
|
|
3
|
+
**/
|
|
4
|
+
export var AttachmentTypeEnum;
|
|
5
|
+
(function (AttachmentTypeEnum) {
|
|
6
|
+
/**
|
|
7
|
+
* Enable / disable behaviour (default).
|
|
8
|
+
**/
|
|
9
|
+
AttachmentTypeEnum["Disabled"] = "disabled";
|
|
10
|
+
/**
|
|
11
|
+
* Child waits for the parent to have a value and (re)loads afterwards.
|
|
12
|
+
**/
|
|
13
|
+
AttachmentTypeEnum["ParentLoad"] = "parentLoad";
|
|
14
|
+
})(AttachmentTypeEnum || (AttachmentTypeEnum = {}));
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybS9zcmMvbW9kZWxzL2VudW1zL2F0dGFjaG1lbnQtdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztJQUVJO0FBQ0osTUFBTSxDQUFOLElBQVksa0JBVVg7QUFWRCxXQUFZLGtCQUFrQjtJQUMxQjs7UUFFSTtJQUNKLDJDQUFxQixDQUFBO0lBRXJCOztRQUVJO0lBQ0osK0NBQXlCLENBQUE7QUFDN0IsQ0FBQyxFQVZXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFVN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogXG4gKiBIb3cgYSBwYXJlbnQgZmllbGQgaW5mbHVlbmNlcyBpdHMgY2hpbGQuXG4gKiovXG5leHBvcnQgZW51bSBBdHRhY2htZW50VHlwZUVudW0ge1xuICAgIC8qKiBcbiAgICAgKiBFbmFibGUgLyBkaXNhYmxlIGJlaGF2aW91ciAoZGVmYXVsdCkuXG4gICAgICoqL1xuICAgIERpc2FibGVkID0gJ2Rpc2FibGVkJyxcblxuICAgIC8qKiBcbiAgICAgKiBDaGlsZCB3YWl0cyBmb3IgdGhlIHBhcmVudCB0byBoYXZlIGEgdmFsdWUgYW5kIChyZSlsb2FkcyBhZnRlcndhcmRzLlxuICAgICAqKi9cbiAgICBQYXJlbnRMb2FkID0gJ3BhcmVudExvYWQnXG59Il19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export var DynamicFieldType;
|
|
2
|
+
(function (DynamicFieldType) {
|
|
3
|
+
DynamicFieldType[DynamicFieldType["Input"] = 1] = "Input";
|
|
4
|
+
DynamicFieldType[DynamicFieldType["Select"] = 2] = "Select";
|
|
5
|
+
DynamicFieldType[DynamicFieldType["SelectMultiple"] = 3] = "SelectMultiple";
|
|
6
|
+
DynamicFieldType[DynamicFieldType["Label"] = 4] = "Label";
|
|
7
|
+
DynamicFieldType[DynamicFieldType["Checkbox"] = 5] = "Checkbox";
|
|
8
|
+
DynamicFieldType[DynamicFieldType["CheckboxGroup"] = 6] = "CheckboxGroup";
|
|
9
|
+
DynamicFieldType[DynamicFieldType["Radio"] = 7] = "Radio";
|
|
10
|
+
DynamicFieldType[DynamicFieldType["RadioGroup"] = 8] = "RadioGroup";
|
|
11
|
+
DynamicFieldType[DynamicFieldType["TextArea"] = 9] = "TextArea";
|
|
12
|
+
DynamicFieldType[DynamicFieldType["FileUpload"] = 10] = "FileUpload";
|
|
13
|
+
DynamicFieldType[DynamicFieldType["MaskedInput"] = 11] = "MaskedInput";
|
|
14
|
+
DynamicFieldType[DynamicFieldType["Button"] = 12] = "Button";
|
|
15
|
+
DynamicFieldType[DynamicFieldType["ButtonGroup"] = 13] = "ButtonGroup";
|
|
16
|
+
})(DynamicFieldType || (DynamicFieldType = {}));
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm0vc3JjL21vZGVscy9lbnVtcy9keW5hbWljLWZpZWxkLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksZ0JBY1g7QUFkRCxXQUFZLGdCQUFnQjtJQUN4Qix5REFBUyxDQUFBO0lBQ1QsMkRBQVUsQ0FBQTtJQUNWLDJFQUFrQixDQUFBO0lBQ2xCLHlEQUFTLENBQUE7SUFDVCwrREFBWSxDQUFBO0lBQ1oseUVBQWlCLENBQUE7SUFDakIseURBQVMsQ0FBQTtJQUNULG1FQUFjLENBQUE7SUFDZCwrREFBWSxDQUFBO0lBQ1osb0VBQWUsQ0FBQTtJQUNmLHNFQUFnQixDQUFBO0lBQ2hCLDREQUFXLENBQUE7SUFDWCxzRUFBZ0IsQ0FBQTtBQUNwQixDQUFDLEVBZFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQWMzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIER5bmFtaWNGaWVsZFR5cGUge1xuICAgIElucHV0ID0gMSxcbiAgICBTZWxlY3QgPSAyLFxuICAgIFNlbGVjdE11bHRpcGxlID0gMyxcbiAgICBMYWJlbCA9IDQsXG4gICAgQ2hlY2tib3ggPSA1LFxuICAgIENoZWNrYm94R3JvdXAgPSA2LFxuICAgIFJhZGlvID0gNyxcbiAgICBSYWRpb0dyb3VwID0gOCxcbiAgICBUZXh0QXJlYSA9IDksXG4gICAgRmlsZVVwbG9hZCA9IDEwLFxuICAgIE1hc2tlZElucHV0ID0gMTEsXG4gICAgQnV0dG9uID0gMTIsXG4gICAgQnV0dG9uR3JvdXAgPSAxM1xufVxuIl19
|