@impartner/design-components 1.2.0 → 2.0.0
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 +5 -4
- package/constants/fontawesome-icons.d.ts +2 -2
- package/{esm2020 → esm2022}/constants/fontawesome-icons.mjs +1 -1
- package/{esm2020 → esm2022}/lib/alert/alert.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/alert/alert.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/avatar/avatar.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/avatar-group/avatar-group.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/avatar-group/avatar-group.module.mjs +5 -5
- package/esm2022/lib/backdrop/backdrop.component.mjs +52 -0
- package/{esm2020 → esm2022}/lib/backdrop/backdrop.module.mjs +6 -6
- package/esm2022/lib/badge/badge.component.mjs +105 -0
- package/{esm2020 → esm2022}/lib/badge/badge.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/badge/types/badge-size.mjs +1 -1
- package/{esm2020 → esm2022}/lib/branding/branded.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/branding/branding.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb-item.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/button/button.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button/button.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/button-group/button-group.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button-group/button-group.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/card-heading/card-heading.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/card-heading/card-heading.module.mjs +6 -6
- package/esm2022/lib/data-card/data-card.component.mjs +123 -0
- package/esm2022/lib/data-card/data-card.module.mjs +21 -0
- package/{esm2020 → esm2022}/lib/design-components.module.mjs +61 -61
- package/{esm2020 → esm2022}/lib/dropdown/components/dropdown-item/dropdown-item.component.mjs +4 -4
- package/esm2022/lib/dropdown/dropdown.component.mjs +143 -0
- package/{esm2020 → esm2022}/lib/dropdown/dropdown.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/file-upload/directives/file-drop.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/file-upload/file-upload.component.mjs +30 -30
- package/{esm2020 → esm2022}/lib/file-upload/file-upload.module.mjs +8 -8
- package/{esm2020 → esm2022}/lib/file-upload/pipes/human-readable-byte-size.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/checkbox.component.mjs +49 -49
- package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/lib/form-field/controls/input/input.directive.mjs +233 -0
- package/esm2022/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +260 -0
- package/esm2022/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +289 -0
- package/{esm2020 → esm2022}/lib/form-field/controls/radio/radio.module.mjs +5 -5
- package/esm2022/lib/form-field/controls/select/option/select-option.component.mjs +139 -0
- package/esm2022/lib/form-field/controls/select/select-model.mjs +150 -0
- package/esm2022/lib/form-field/controls/select/select.component.mjs +522 -0
- package/{esm2020 → esm2022}/lib/form-field/controls/select/select.module.mjs +9 -9
- package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +4 -4
- package/esm2022/lib/form-field/controls/shared/toggle/toggle.component.mjs +96 -0
- package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/toggle.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/form-field/directives/corner-hint.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/directives/error.directive.mjs +4 -4
- package/esm2022/lib/form-field/directives/form-root.directive.mjs +91 -0
- package/{esm2020 → esm2022}/lib/form-field/directives/hint.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/directives/label.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/directives/prefix.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/directives/suffix.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/form-field.component.mjs +11 -11
- package/{esm2020 → esm2022}/lib/form-field/impdc-forms.module.mjs +28 -28
- package/{esm2020 → esm2022}/lib/form-field/services/error-state-matcher.service.mjs +7 -7
- package/{esm2020 → esm2022}/lib/form-field/services/unique-selection-dispatcher.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/shared/disabled.mixin.mjs +5 -5
- package/esm2022/lib/form-field/shared/error-state.mixin.mjs +24 -0
- package/{esm2020 → esm2022}/lib/form-field/shared/form-field-control.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/shared/tab-index.mixin.mjs +6 -6
- package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icon/icon.module.mjs +6 -6
- package/esm2022/lib/modal/modal.component.mjs +260 -0
- package/{esm2020 → esm2022}/lib/modal/modal.module.mjs +14 -14
- package/{esm2020 → esm2022}/lib/modal/types/modal-component-sizes.mjs +1 -1
- package/{esm2020 → esm2022}/lib/modal/types/modal-theme.mjs +1 -1
- package/esm2022/lib/pagination/pagination.component.mjs +176 -0
- package/{esm2020 → esm2022}/lib/pagination/pagination.module.mjs +16 -16
- package/{esm2020 → esm2022}/lib/progress-bar/progress-bar.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/progress-bar/progress-bar.module.mjs +5 -5
- package/esm2022/lib/scrollable/scrollable.component.mjs +186 -0
- package/{esm2020 → esm2022}/lib/scrollable/scrollable.module.mjs +6 -6
- package/esm2022/lib/select-icon/select-icon.component.mjs +308 -0
- package/{esm2020 → esm2022}/lib/select-icon/select-icon.module.mjs +13 -13
- package/{esm2020 → esm2022}/lib/size-detection/directive/size-detector.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/size-detection/size-detection.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/spinner/spinner.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/spinner/spinner.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/table/components/bulk-actions/bulk-actions.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/components/column-heading/column-heading.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/components/index.mjs +2 -1
- package/esm2022/lib/table/components/row-actions/row-actions.component.mjs +61 -0
- package/esm2022/lib/table/containers/table.component.mjs +403 -0
- package/esm2022/lib/table/directives/table-inject-component.directive.mjs +46 -0
- package/{esm2020 → esm2022}/lib/table/directives/table.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/enumerations/table-column-type.mjs +2 -1
- package/{esm2020 → esm2022}/lib/table/helpers/table-theme.helper.mjs +3 -3
- package/esm2022/lib/table/interfaces/index.mjs +11 -0
- package/esm2022/lib/table/interfaces/table-column-defs.type.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-row-action-payload.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +2 -0
- package/esm2022/lib/table/table.module.mjs +96 -0
- package/{esm2020 → esm2022}/lib/text-highlight/text-highlight.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/text-highlight/text-highlight.module.mjs +6 -6
- package/{esm2020 → esm2022}/services/index.mjs +1 -1
- package/esm2022/services/interaction.service.mjs +88 -0
- package/{esm2020 → esm2022}/types/component-theme.mjs +1 -1
- package/{fesm2020 → fesm2022}/impartner-design-components.mjs +1197 -1032
- package/fesm2022/impartner-design-components.mjs.map +1 -0
- package/lib/alert/alert.component.d.ts +1 -1
- package/lib/alert/theme/alert-theme.d.ts +1 -1
- package/lib/avatar/avatar.component.d.ts +1 -1
- package/lib/avatar-group/avatar-group.component.d.ts +1 -1
- package/lib/backdrop/backdrop.component.d.ts +9 -6
- package/lib/badge/badge.component.d.ts +3 -2
- package/lib/badge/types/badge-icon.d.ts +1 -1
- package/lib/badge/types/badge-size.d.ts +1 -1
- package/lib/branding/branded.directive.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb-item.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/lib/button/button.component.d.ts +1 -1
- package/lib/button/themes/button-theme.d.ts +1 -1
- package/lib/button-group/button-group.component.d.ts +1 -1
- package/lib/card-heading/card-heading.component.d.ts +1 -1
- package/lib/data-card/data-card.component.d.ts +14 -18
- package/lib/data-card/data-card.module.d.ts +2 -1
- package/lib/dropdown/components/dropdown-item/dropdown-item.component.d.ts +1 -1
- package/lib/dropdown/dropdown.component.d.ts +6 -5
- package/lib/dropdown/types/dropdown-position.d.ts +1 -1
- package/lib/file-upload/directives/file-drop.directive.d.ts +1 -1
- package/lib/file-upload/file-upload.component.d.ts +1 -1
- package/lib/form-field/controls/checkbox/checkbox.component.d.ts +1 -1
- package/lib/form-field/controls/input/input.directive.d.ts +1 -1
- package/lib/form-field/controls/radio/radio-button/radio-button.component.d.ts +1 -1
- package/lib/form-field/controls/radio/radio-group/radio-group.directive.d.ts +1 -1
- package/lib/form-field/controls/select/option/select-option.component.d.ts +4 -4
- package/lib/form-field/controls/select/select.component.d.ts +1 -1
- package/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.d.ts +1 -1
- package/lib/form-field/controls/shared/toggle/toggle.component.d.ts +1 -1
- package/lib/form-field/directives/corner-hint.directive.d.ts +1 -1
- package/lib/form-field/directives/error.directive.d.ts +1 -1
- package/lib/form-field/directives/form-root.directive.d.ts +2 -2
- package/lib/form-field/directives/hint.directive.d.ts +1 -1
- package/lib/form-field/directives/label.directive.d.ts +1 -1
- package/lib/form-field/directives/prefix.directive.d.ts +1 -1
- package/lib/form-field/directives/suffix.directive.d.ts +1 -1
- package/lib/form-field/form-field.component.d.ts +1 -1
- package/lib/form-field/services/unique-selection-dispatcher.service.d.ts +1 -1
- package/lib/form-field/shared/constructors.type.d.ts +2 -2
- package/lib/form-field/shared/disabled.mixin.d.ts +1 -1
- package/lib/form-field/shared/error-state.mixin.d.ts +1 -1
- package/lib/form-field/shared/form-field-control.d.ts +1 -1
- package/lib/form-field/shared/tab-index.mixin.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/modal/modal.component.d.ts +17 -10
- package/lib/modal/types/modal-component-sizes.d.ts +1 -1
- package/lib/modal/types/modal-theme.d.ts +1 -1
- package/lib/pagination/pagination.component.d.ts +1 -1
- package/lib/progress-bar/progress-bar.component.d.ts +1 -1
- package/lib/scrollable/scrollable.component.d.ts +1 -1
- package/lib/select-icon/select-icon.component.d.ts +1 -1
- package/lib/size-detection/directive/size-detector.directive.d.ts +1 -1
- package/lib/spinner/spinner.component.d.ts +1 -1
- package/lib/table/components/bulk-actions/bulk-actions.component.d.ts +1 -1
- package/lib/table/components/column-heading/column-heading.component.d.ts +1 -1
- package/lib/table/components/index.d.ts +1 -0
- package/lib/table/components/row-actions/row-actions.component.d.ts +21 -0
- package/lib/table/containers/table.component.d.ts +12 -6
- package/lib/table/directives/table-inject-component.directive.d.ts +3 -3
- package/lib/table/directives/table.directive.d.ts +1 -1
- package/lib/table/enumerations/table-column-type.d.ts +2 -1
- package/lib/table/helpers/table-theme.helper.d.ts +4 -4
- package/lib/table/interfaces/custom-cell-renderer-components.type.d.ts +1 -1
- package/lib/table/interfaces/index.d.ts +3 -1
- package/lib/table/interfaces/{table-column-def.interface.d.ts → table-column-defs.type.d.ts} +8 -1
- package/lib/table/interfaces/table-row-action-payload.interface.d.ts +6 -0
- package/lib/table/interfaces/table-row-action.interface.d.ts +9 -0
- package/lib/table/interfaces/table-row-item.interface.d.ts +3 -3
- package/lib/table/table.module.d.ts +12 -10
- package/lib/text-highlight/text-highlight.component.d.ts +1 -1
- package/package.json +16 -22
- package/services/index.d.ts +1 -1
- package/services/interaction.service.d.ts +20 -10
- package/types/component-size.d.ts +2 -2
- package/types/component-theme.d.ts +1 -1
- package/utilities/boolean-props.d.ts +1 -1
- package/utilities/number-props.d.ts +1 -1
- package/esm2020/lib/backdrop/backdrop.component.mjs +0 -40
- package/esm2020/lib/badge/badge.component.mjs +0 -99
- package/esm2020/lib/data-card/data-card.component.mjs +0 -128
- package/esm2020/lib/data-card/data-card.module.mjs +0 -20
- package/esm2020/lib/dropdown/dropdown.component.mjs +0 -142
- package/esm2020/lib/form-field/controls/input/input.directive.mjs +0 -233
- package/esm2020/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +0 -260
- package/esm2020/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +0 -289
- package/esm2020/lib/form-field/controls/select/option/select-option.component.mjs +0 -139
- package/esm2020/lib/form-field/controls/select/select-model.mjs +0 -150
- package/esm2020/lib/form-field/controls/select/select.component.mjs +0 -522
- package/esm2020/lib/form-field/controls/shared/toggle/toggle.component.mjs +0 -96
- package/esm2020/lib/form-field/directives/form-root.directive.mjs +0 -91
- package/esm2020/lib/form-field/shared/error-state.mixin.mjs +0 -24
- package/esm2020/lib/modal/modal.component.mjs +0 -187
- package/esm2020/lib/pagination/pagination.component.mjs +0 -176
- package/esm2020/lib/scrollable/scrollable.component.mjs +0 -186
- package/esm2020/lib/select-icon/select-icon.component.mjs +0 -308
- package/esm2020/lib/table/containers/table.component.mjs +0 -386
- package/esm2020/lib/table/directives/table-inject-component.directive.mjs +0 -46
- package/esm2020/lib/table/interfaces/index.mjs +0 -9
- package/esm2020/lib/table/interfaces/table-column-def.interface.mjs +0 -2
- package/esm2020/lib/table/table.module.mjs +0 -88
- package/esm2020/services/interaction.service.mjs +0 -81
- package/fesm2015/impartner-design-components.mjs +0 -9214
- package/fesm2015/impartner-design-components.mjs.map +0 -1
- package/fesm2020/impartner-design-components.mjs.map +0 -1
- /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/impartner-design-components.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/alert/theme/alert-theme.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/alert/theme/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/avatar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/avatar-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/backdrop/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/types/badge-icon.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/branding/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/breadcrumb/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/themes/button-theme.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/themes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/card-heading/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-card/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/types/dropdown-position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file-upload/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file-upload/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file-upload/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/input/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/injection-tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-button.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-change-event.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-group.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/select/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/select/option/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/select/option-parent.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/shared/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/form-field-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/impdc-forms.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/shared/constructors.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/shared/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/icon/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pagination/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/progress-bar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/scrollable/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/select-icon/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/size-detection/directive/element-size.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/size-detection/directive/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/size-detection/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/spinner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/constants/public-table.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/constants/table.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/containers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/enumerations/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/cell-renderer.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/custom-cell-renderer-components.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/sort-by-payload.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/table-cell-option.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/table-event-payload.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/table-row-item.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/text-highlight/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/types/component-size.mjs +0 -0
- /package/{esm2020 → esm2022}/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/boolean-props.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/dc.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/lc.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/number-props.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/sanitize.mjs +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
3
|
+
import { Subject, filter, fromEvent, switchMap, take, takeUntil, tap } from 'rxjs';
|
|
4
|
+
import { ComponentSize } from '../../types';
|
|
5
|
+
import { ModalTheme } from './types';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../services";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "../button/button.component";
|
|
10
|
+
import * as i4 from "../icon/icon.component";
|
|
11
|
+
/**
|
|
12
|
+
* The `ModalComponent` (`<impdc-modal`) displays over the content of the page when a user action is required.
|
|
13
|
+
* To use, import `ModalModule` or another module that imports and exports that module from `@impartner/design-components`.
|
|
14
|
+
* `ModalModule` imports and exports BackdropModule, [ButtonModule](./?path=/docs/design-components-button),
|
|
15
|
+
* and [IconModule](./?path=/docs/design-components-icon).
|
|
16
|
+
*/
|
|
17
|
+
export class ModalComponent {
|
|
18
|
+
/**
|
|
19
|
+
* Determines if the Modal should be shown immediately.
|
|
20
|
+
*/
|
|
21
|
+
set show(show) {
|
|
22
|
+
if (show) {
|
|
23
|
+
this.open();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.close();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
get show() {
|
|
30
|
+
return this._show;
|
|
31
|
+
}
|
|
32
|
+
constructor(_interactionService, _elementRef) {
|
|
33
|
+
this._interactionService = _interactionService;
|
|
34
|
+
this._elementRef = _elementRef;
|
|
35
|
+
this._interactableId = `impdc-modal-${nanoid()}`;
|
|
36
|
+
this._closed$ = new Subject();
|
|
37
|
+
this._initialized = false;
|
|
38
|
+
this._show = false;
|
|
39
|
+
/**
|
|
40
|
+
* The theme of the Modal. Affects the layout of the Modal as well as some colors.
|
|
41
|
+
*/
|
|
42
|
+
this.theme = ModalTheme.Simple;
|
|
43
|
+
/**
|
|
44
|
+
* The size of the Modal.
|
|
45
|
+
*/
|
|
46
|
+
this.size = ComponentSize.Medium;
|
|
47
|
+
/**
|
|
48
|
+
* The Font Awesome 5 icon style. Fewer icons support the Regular theme and will fallback to Solid
|
|
49
|
+
* if not supported.
|
|
50
|
+
*/
|
|
51
|
+
this.iconTheme = 'light';
|
|
52
|
+
/**
|
|
53
|
+
* The subject text of the Modal.
|
|
54
|
+
*/
|
|
55
|
+
this.titleText = '';
|
|
56
|
+
/**
|
|
57
|
+
* The fallback button text to accept the Modal. This is bypassed if you content-project the accept button.
|
|
58
|
+
*/
|
|
59
|
+
this.acceptText = 'OK';
|
|
60
|
+
/**
|
|
61
|
+
* Determines if the Modal should fade in/out.
|
|
62
|
+
*/
|
|
63
|
+
this.fade = true;
|
|
64
|
+
/**
|
|
65
|
+
* Shows a backdrop behind the Modal.
|
|
66
|
+
*/
|
|
67
|
+
this.backdrop = true;
|
|
68
|
+
/**
|
|
69
|
+
* Event emitted when the Modal content is dismissed.
|
|
70
|
+
*/
|
|
71
|
+
this.dismiss = new EventEmitter();
|
|
72
|
+
/**
|
|
73
|
+
* Event emitted when the Modal content is denied.
|
|
74
|
+
*/
|
|
75
|
+
this.deny = new EventEmitter();
|
|
76
|
+
/**
|
|
77
|
+
* Event emitted when the Modal content is accepted.
|
|
78
|
+
*/
|
|
79
|
+
this.accept = new EventEmitter();
|
|
80
|
+
}
|
|
81
|
+
get interactableId() {
|
|
82
|
+
return this._interactableId;
|
|
83
|
+
}
|
|
84
|
+
get valid() {
|
|
85
|
+
return this._initialized;
|
|
86
|
+
}
|
|
87
|
+
get shown() {
|
|
88
|
+
return this.valid && this._show;
|
|
89
|
+
}
|
|
90
|
+
get showWorkingIcon() {
|
|
91
|
+
return !!this.iconName && this.theme === ModalTheme.Working;
|
|
92
|
+
}
|
|
93
|
+
get showDestructiveIcon() {
|
|
94
|
+
return !!this.iconName && this.theme === ModalTheme.Destructive;
|
|
95
|
+
}
|
|
96
|
+
get acceptFallbackTheme() {
|
|
97
|
+
return this.theme === ModalTheme.Destructive ? 'danger' : 'primary';
|
|
98
|
+
}
|
|
99
|
+
get hideHeader() {
|
|
100
|
+
return !this.titleText && !this.dismissable;
|
|
101
|
+
}
|
|
102
|
+
ngOnInit() {
|
|
103
|
+
this._interactionService.add(this);
|
|
104
|
+
if (this.dismissable === undefined && this.theme === ModalTheme.Working) {
|
|
105
|
+
this.dismissable = true;
|
|
106
|
+
}
|
|
107
|
+
if (this.iconName === undefined && this.theme === ModalTheme.Destructive) {
|
|
108
|
+
this.iconName = 'exclamation-triangle';
|
|
109
|
+
}
|
|
110
|
+
this._initialized = true;
|
|
111
|
+
}
|
|
112
|
+
ngOnDestroy() {
|
|
113
|
+
this._interactionService.remove(this.interactableId);
|
|
114
|
+
this._disableEventHandling();
|
|
115
|
+
}
|
|
116
|
+
handleDismiss(event) {
|
|
117
|
+
if (!this.dismissable ||
|
|
118
|
+
!!this.dismissEl?.nativeElement?.firstChild?.disabled) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.close();
|
|
122
|
+
this.dismiss.emit(event);
|
|
123
|
+
}
|
|
124
|
+
handleDeny(event) {
|
|
125
|
+
if (!!this.denyEl?.nativeElement?.firstChild?.disabled) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
this.close();
|
|
129
|
+
this.deny.emit(event);
|
|
130
|
+
}
|
|
131
|
+
handleAccept(event) {
|
|
132
|
+
if (!!this.acceptEl?.nativeElement?.firstChild?.disabled) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.close();
|
|
136
|
+
this.accept.emit(event);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Opens/shows the modal. Can be used programmatically.
|
|
140
|
+
*/
|
|
141
|
+
open() {
|
|
142
|
+
if (this.backdrop) {
|
|
143
|
+
this._interactionService.queueBackdrop(this.interactableId);
|
|
144
|
+
}
|
|
145
|
+
this._show = true;
|
|
146
|
+
this._setupEventHandling();
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Closes/hides the modal. Can be used programmatically.
|
|
150
|
+
*/
|
|
151
|
+
close() {
|
|
152
|
+
this._show = false;
|
|
153
|
+
this._interactionService.dequeueBackdrop(this.interactableId);
|
|
154
|
+
this._disableEventHandling();
|
|
155
|
+
}
|
|
156
|
+
_setupEventHandling() {
|
|
157
|
+
const { nativeElement } = this._elementRef;
|
|
158
|
+
fromEvent(nativeElement, 'keydown')
|
|
159
|
+
.pipe(takeUntil(this._closed$), filter(evt => evt.key === 'Escape'))
|
|
160
|
+
.subscribe(evt => {
|
|
161
|
+
if (this.dismissable && !evt.defaultPrevented) {
|
|
162
|
+
Promise.resolve().then(() => {
|
|
163
|
+
this.handleDismiss(evt);
|
|
164
|
+
evt.stopPropagation();
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
fromEvent(nativeElement, 'keydown')
|
|
169
|
+
.pipe(takeUntil(this._closed$), filter(evt => evt.key === 'Enter'))
|
|
170
|
+
.subscribe(evt => {
|
|
171
|
+
if (!evt.defaultPrevented) {
|
|
172
|
+
Promise.resolve().then(() => {
|
|
173
|
+
this.handleAccept(evt);
|
|
174
|
+
evt.stopPropagation();
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
let preventClose = false;
|
|
179
|
+
if (this._dialogElementRef) {
|
|
180
|
+
// listen to 'mousedown' and 'mouseup' to prevent dismissal when mouse is pressed inside
|
|
181
|
+
// of the dialog window and then released outside
|
|
182
|
+
fromEvent(this._dialogElementRef.nativeElement, 'mousedown')
|
|
183
|
+
.pipe(takeUntil(this._closed$), tap(() => {
|
|
184
|
+
preventClose = false;
|
|
185
|
+
}), switchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))), filter(({ target }) => nativeElement === target))
|
|
186
|
+
.subscribe(() => {
|
|
187
|
+
preventClose = true;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
// listen to 'click' events to dismiss on component/container click, except when
|
|
191
|
+
// clicking inside the dialog window or when prevented by the above 'mousedown'
|
|
192
|
+
// and 'mouseup' handlers
|
|
193
|
+
fromEvent(nativeElement, 'click')
|
|
194
|
+
.pipe(takeUntil(this._closed$))
|
|
195
|
+
.subscribe(evt => {
|
|
196
|
+
if (nativeElement === evt.target && !preventClose) {
|
|
197
|
+
Promise.resolve().then(() => {
|
|
198
|
+
this.handleDismiss(evt);
|
|
199
|
+
evt.stopPropagation();
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
preventClose = false;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
_disableEventHandling() {
|
|
206
|
+
this._closed$.next();
|
|
207
|
+
}
|
|
208
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ModalComponent, deps: [{ token: i1.InteractionService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
209
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: ModalComponent, selector: "impdc-modal", inputs: { show: "show", theme: "theme", size: "size", iconName: "iconName", iconTheme: "iconTheme", titleText: "titleText", acceptText: "acceptText", dismissable: "dismissable", fade: "fade", backdrop: "backdrop" }, outputs: { dismiss: "dismiss", deny: "deny", accept: "accept" }, host: { attributes: { "tabindex": "-1" }, properties: { "class.fade": "fade", "class.in": "fade && shown", "class.show": "shown", "class.dismissable": "dismissable" }, classAttribute: "impdc modal" }, viewQueries: [{ propertyName: "_dialogElementRef", first: true, predicate: ["dialogElement"], descendants: true }, { propertyName: "dismissEl", first: true, predicate: ["dismissEl"], descendants: true }, { propertyName: "denyEl", first: true, predicate: ["denyEl"], descendants: true }, { propertyName: "acceptEl", first: true, predicate: ["acceptEl"], descendants: true }], ngImport: i0, template: "<div\n #dialogElement\n *ngIf=\"valid\"\n class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable modal-theme-{{\n theme\n }}\"\n [class.modal-sm]=\"size === 'sm'\"\n [class.modal-lg]=\"size === 'lg'\"\n [class.modal-xl]=\"size === 'xl'\"\n [class.modal-fullscreen]=\"size === 'fs'\"\n [class.modal-fullscreen-lg-down]=\"size !== 'fs'\">\n <div class=\"modal-content\">\n <div *ngIf=\"showDestructiveIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </div>\n <div #header class=\"modal-header\" [class.hide]=\"hideHeader\">\n <h3 class=\"modal-title\">\n <span *ngIf=\"showWorkingIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </span>\n <span>{{ titleText }}</span>\n </h3>\n <button\n impdcButton\n *ngIf=\"dismissable\"\n theme=\"close\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\"></button>\n </div>\n <div #bodyEl class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div #footer class=\"modal-footer\">\n <span\n #dismissEl\n *ngIf=\"dismissable\"\n [class.hide]=\"!dismissEl.children.length\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\">\n <ng-content select=\"[dismiss]\"></ng-content>\n </span>\n <span\n #denyEl\n [class.hide]=\"!denyEl.children.length\"\n (click)=\"handleDeny($event); $event.stopPropagation()\">\n <ng-content select=\"[deny]\"></ng-content>\n </span>\n <span\n #acceptEl\n [class.hide]=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <ng-content select=\"[accept]\"></ng-content>\n </span>\n <span\n #acceptFallbackEl\n *ngIf=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <button\n impdcButton\n [text]=\"acceptText\"\n [theme]=\"acceptFallbackTheme\"></button>\n </span>\n </div>\n </div>\n</div>\n", styles: [":host{-webkit-user-select:none;user-select:none}:host .modal-icon{display:inline-flex;justify-content:center;align-items:center;height:40px;width:40px;color:var(--impd-color-gray-500);background:var(--impd-color-gray-100);border-radius:50%;flex-shrink:0}:host .modal-icon .fa,:host .modal-icon .fa-brands,:host .modal-icon .fa-duotone,:host .modal-icon .fa-light,:host .modal-icon .fa-regular,:host .modal-icon .fa-solid,:host .modal-icon .fa-thin,:host .modal-icon .fab,:host .modal-icon .fad,:host .modal-icon .fal,:host .modal-icon .far,:host .modal-icon .fas,:host .modal-icon .fat{line-height:var(--impartner-hex-modal-title-line-height)}:host.fade.in{background-color:transparent}:host.show{display:block;opacity:1}:host:not(.show),:host.hide,:host .hide{display:none}:host.dismissable{cursor:pointer}:host.dismissable .modal-dialog{cursor:default}:host .modal-dialog{cursor:default;-webkit-user-select:auto;user-select:auto}:host .modal-theme-simple .modal-header,:host .modal-theme-destructive .modal-header{border:0;padding-bottom:0}:host .modal-theme-simple .modal-body,:host .modal-theme-destructive .modal-body{padding:calc(var(--impartner-hex-modal-padding) * .5) var(--impartner-hex-modal-padding) var(--impartner-hex-modal-padding)}:host .modal-theme-simple .modal-footer,:host .modal-theme-destructive .modal-footer{border:0;padding-top:0}:host .modal-theme-working .modal-footer{padding:calc(var(--impartner-hex-modal-padding) * .5 - var(--impartner-hex-modal-footer-gap) * .5) calc(var(--impartner-hex-modal-padding) - var(--impartner-hex-modal-footer-gap) * .5)}:host .modal-theme-destructive .modal-content{display:grid;grid-template-areas:\"modal-icon modal-header\" \"modal-icon modal-body\" \"modal-footer modal-footer\";grid-template-columns:auto 1fr;grid-template-rows:auto 1fr auto}:host .modal-theme-destructive .modal-content>.modal-icon{grid-area:modal-icon;margin:var(--impartner-hex-modal-header-padding);margin-right:0;margin-bottom:0}:host .modal-theme-destructive .modal-content>.modal-header{grid-area:modal-header;padding-left:16px;margin-top:8px;justify-content:unset}:host .modal-theme-destructive .modal-content>.modal-body{grid-area:modal-body;padding-left:16px}:host .modal-theme-destructive .modal-content>.modal-footer{grid-area:modal-footer}:host .modal-theme-destructive .modal-icon{color:var(--impd-color-red-600);background:var(--impd-color-red-100)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "component", type: i4.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
|
|
210
|
+
}
|
|
211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ModalComponent, decorators: [{
|
|
212
|
+
type: Component,
|
|
213
|
+
args: [{ selector: 'impdc-modal', host: {
|
|
214
|
+
class: 'impdc modal',
|
|
215
|
+
'[class.fade]': 'fade',
|
|
216
|
+
'[class.in]': 'fade && shown',
|
|
217
|
+
'[class.show]': 'shown',
|
|
218
|
+
'[class.dismissable]': 'dismissable',
|
|
219
|
+
tabindex: '-1'
|
|
220
|
+
}, template: "<div\n #dialogElement\n *ngIf=\"valid\"\n class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable modal-theme-{{\n theme\n }}\"\n [class.modal-sm]=\"size === 'sm'\"\n [class.modal-lg]=\"size === 'lg'\"\n [class.modal-xl]=\"size === 'xl'\"\n [class.modal-fullscreen]=\"size === 'fs'\"\n [class.modal-fullscreen-lg-down]=\"size !== 'fs'\">\n <div class=\"modal-content\">\n <div *ngIf=\"showDestructiveIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </div>\n <div #header class=\"modal-header\" [class.hide]=\"hideHeader\">\n <h3 class=\"modal-title\">\n <span *ngIf=\"showWorkingIcon\" class=\"modal-icon\">\n <span impdc-icon [name]=\"iconName\" [theme]=\"iconTheme\"></span>\n </span>\n <span>{{ titleText }}</span>\n </h3>\n <button\n impdcButton\n *ngIf=\"dismissable\"\n theme=\"close\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\"></button>\n </div>\n <div #bodyEl class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div #footer class=\"modal-footer\">\n <span\n #dismissEl\n *ngIf=\"dismissable\"\n [class.hide]=\"!dismissEl.children.length\"\n (click)=\"handleDismiss($event); $event.stopPropagation()\">\n <ng-content select=\"[dismiss]\"></ng-content>\n </span>\n <span\n #denyEl\n [class.hide]=\"!denyEl.children.length\"\n (click)=\"handleDeny($event); $event.stopPropagation()\">\n <ng-content select=\"[deny]\"></ng-content>\n </span>\n <span\n #acceptEl\n [class.hide]=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <ng-content select=\"[accept]\"></ng-content>\n </span>\n <span\n #acceptFallbackEl\n *ngIf=\"!acceptEl.children.length\"\n (click)=\"handleAccept($event); $event.stopPropagation()\">\n <button\n impdcButton\n [text]=\"acceptText\"\n [theme]=\"acceptFallbackTheme\"></button>\n </span>\n </div>\n </div>\n</div>\n", styles: [":host{-webkit-user-select:none;user-select:none}:host .modal-icon{display:inline-flex;justify-content:center;align-items:center;height:40px;width:40px;color:var(--impd-color-gray-500);background:var(--impd-color-gray-100);border-radius:50%;flex-shrink:0}:host .modal-icon .fa,:host .modal-icon .fa-brands,:host .modal-icon .fa-duotone,:host .modal-icon .fa-light,:host .modal-icon .fa-regular,:host .modal-icon .fa-solid,:host .modal-icon .fa-thin,:host .modal-icon .fab,:host .modal-icon .fad,:host .modal-icon .fal,:host .modal-icon .far,:host .modal-icon .fas,:host .modal-icon .fat{line-height:var(--impartner-hex-modal-title-line-height)}:host.fade.in{background-color:transparent}:host.show{display:block;opacity:1}:host:not(.show),:host.hide,:host .hide{display:none}:host.dismissable{cursor:pointer}:host.dismissable .modal-dialog{cursor:default}:host .modal-dialog{cursor:default;-webkit-user-select:auto;user-select:auto}:host .modal-theme-simple .modal-header,:host .modal-theme-destructive .modal-header{border:0;padding-bottom:0}:host .modal-theme-simple .modal-body,:host .modal-theme-destructive .modal-body{padding:calc(var(--impartner-hex-modal-padding) * .5) var(--impartner-hex-modal-padding) var(--impartner-hex-modal-padding)}:host .modal-theme-simple .modal-footer,:host .modal-theme-destructive .modal-footer{border:0;padding-top:0}:host .modal-theme-working .modal-footer{padding:calc(var(--impartner-hex-modal-padding) * .5 - var(--impartner-hex-modal-footer-gap) * .5) calc(var(--impartner-hex-modal-padding) - var(--impartner-hex-modal-footer-gap) * .5)}:host .modal-theme-destructive .modal-content{display:grid;grid-template-areas:\"modal-icon modal-header\" \"modal-icon modal-body\" \"modal-footer modal-footer\";grid-template-columns:auto 1fr;grid-template-rows:auto 1fr auto}:host .modal-theme-destructive .modal-content>.modal-icon{grid-area:modal-icon;margin:var(--impartner-hex-modal-header-padding);margin-right:0;margin-bottom:0}:host .modal-theme-destructive .modal-content>.modal-header{grid-area:modal-header;padding-left:16px;margin-top:8px;justify-content:unset}:host .modal-theme-destructive .modal-content>.modal-body{grid-area:modal-body;padding-left:16px}:host .modal-theme-destructive .modal-content>.modal-footer{grid-area:modal-footer}:host .modal-theme-destructive .modal-icon{color:var(--impd-color-red-600);background:var(--impd-color-red-100)}\n"] }]
|
|
221
|
+
}], ctorParameters: () => [{ type: i1.InteractionService }, { type: i0.ElementRef }], propDecorators: { _dialogElementRef: [{
|
|
222
|
+
type: ViewChild,
|
|
223
|
+
args: ['dialogElement']
|
|
224
|
+
}], show: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], theme: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], size: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], iconName: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], iconTheme: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], titleText: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}], acceptText: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], dismissable: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}], fade: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}], backdrop: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}], dismissEl: [{
|
|
245
|
+
type: ViewChild,
|
|
246
|
+
args: ['dismissEl', { static: false }]
|
|
247
|
+
}], denyEl: [{
|
|
248
|
+
type: ViewChild,
|
|
249
|
+
args: ['denyEl', { static: false }]
|
|
250
|
+
}], acceptEl: [{
|
|
251
|
+
type: ViewChild,
|
|
252
|
+
args: ['acceptEl', { static: false }]
|
|
253
|
+
}], dismiss: [{
|
|
254
|
+
type: Output
|
|
255
|
+
}], deny: [{
|
|
256
|
+
type: Output
|
|
257
|
+
}], accept: [{
|
|
258
|
+
type: Output
|
|
259
|
+
}] } });
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSixNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUF1QixVQUFVLEVBQWUsTUFBTSxTQUFTLENBQUM7Ozs7OztBQUV2RTs7Ozs7R0FLRztBQWNILE1BQU0sT0FBTyxjQUFjO0lBV3pCOztPQUVHO0lBQ0gsSUFDSSxJQUFJLENBQUMsSUFBYTtRQUNwQixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQTZGRCxZQUNtQixtQkFBdUMsRUFDdkMsV0FBb0M7UUFEcEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2QyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFySHRDLG9CQUFl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QyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs4R0FsU1UsY0FBYztrR0FBZCxjQUFjLDQ0QkM3QzNCLDZvRUErREE7OzJGRGxCYSxjQUFjO2tCQWIxQixTQUFTOytCQUNFLGFBQWEsUUFHakI7d0JBQ0osS0FBSyxFQUFFLGFBQWE7d0JBQ3BCLGNBQWMsRUFBRSxNQUFNO3dCQUN0QixZQUFZLEVBQUUsZUFBZTt3QkFDN0IsY0FBYyxFQUFFLE9BQU87d0JBQ3ZCLHFCQUFxQixFQUFFLGFBQWE7d0JBQ3BDLFFBQVEsRUFBRSxJQUFJO3FCQUNmO2dIQVdPLGlCQUFpQjtzQkFEeEIsU0FBUzt1QkFBQyxlQUFlO2dCQU90QixJQUFJO3NCQURQLEtBQUs7Z0JBaUJOLEtBQUs7c0JBREosS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxLQUFLO2dCQVFOLFNBQVM7c0JBRFIsS0FBSztnQkFPTixTQUFTO3NCQURSLEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQU9OLFdBQVc7c0JBRFYsS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxLQUFLO2dCQU9OLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU96QyxNQUFNO3NCQURMLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPdEMsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT3hDLE9BQU87c0JBRE4sTUFBTTtnQkFPUCxJQUFJO3NCQURILE1BQU07Z0JBT1AsTUFBTTtzQkFETCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHtcbiAgU3ViamVjdCxcbiAgZmlsdGVyLFxuICBmcm9tRXZlbnQsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YXBcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb250QXdlc29tZUljb24sIEZvbnRBd2Vzb21lSWNvblRoZW1lIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IElJbnRlcmFjdGFibGVDb21wb25lbnQsIEludGVyYWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENvbXBvbmVudFNpemUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25UaGVtZSB9IGZyb20gJy4uL2J1dHRvbic7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudFNpemVzLCBNb2RhbFRoZW1lLCBNb2RhbFRoZW1lcyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBgTW9kYWxDb21wb25lbnRgIChgPGltcGRjLW1vZGFsYCkgZGlzcGxheXMgb3ZlciB0aGUgY29udGVudCBvZiB0aGUgcGFnZSB3aGVuIGEgdXNlciBhY3Rpb24gaXMgcmVxdWlyZWQuXG4gKiBUbyB1c2UsIGltcG9ydCBgTW9kYWxNb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqIGBNb2RhbE1vZHVsZWAgaW1wb3J0cyBhbmQgZXhwb3J0cyBCYWNrZHJvcE1vZHVsZSwgW0J1dHRvbk1vZHVsZV0oLi8/cGF0aD0vZG9jcy9kZXNpZ24tY29tcG9uZW50cy1idXR0b24pLFxuICogYW5kIFtJY29uTW9kdWxlXSguLz9wYXRoPS9kb2NzL2Rlc2lnbi1jb21wb25lbnRzLWljb24pLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbXBkYy1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2ltcGRjIG1vZGFsJyxcbiAgICAnW2NsYXNzLmZhZGVdJzogJ2ZhZGUnLFxuICAgICdbY2xhc3MuaW5dJzogJ2ZhZGUgJiYgc2hvd24nLFxuICAgICdbY2xhc3Muc2hvd10nOiAnc2hvd24nLFxuICAgICdbY2xhc3MuZGlzbWlzc2FibGVdJzogJ2Rpc21pc3NhYmxlJyxcbiAgICB0YWJpbmRleDogJy0xJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIElJbnRlcmFjdGFibGVDb21wb25lbnRcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfaW50ZXJhY3RhYmxlSWQgPSBgaW1wZGMtbW9kYWwtJHtuYW5vaWQoKX1gO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbG9zZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2hvdyA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0VsZW1lbnQnKVxuICBwcml2YXRlIF9kaWFsb2dFbGVtZW50UmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIE1vZGFsIHNob3VsZCBiZSBzaG93biBpbW1lZGlhdGVseS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzaG93KHNob3c6IGJvb2xlYW4pIHtcbiAgICBpZiAoc2hvdykge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGhlbWUgb2YgdGhlIE1vZGFsLiBBZmZlY3RzIHRoZSBsYXlvdXQgb2YgdGhlIE1vZGFsIGFzIHdlbGwgYXMgc29tZSBjb2xvcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICB0aGVtZTogTW9kYWxUaGVtZXMgPSBNb2RhbFRoZW1lLlNpbXBsZTtcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIE1vZGFsLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2l6ZTogTW9kYWxDb21wb25lbnRTaXplcyA9IENvbXBvbmVudFNpemUuTWVkaXVtO1xuXG4gIC8qKlxuICAgKiBUaGUgRm9udCBBd2Vzb21lIDUgaWNvbiBuYW1lLiBPbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSB0aGVtZSBpcyBXb3JraW5nIG9yIERlc3RydWN0aXZlLlxuICAgKi9cbiAgQElucHV0KClcbiAgaWNvbk5hbWU/OiBGb250QXdlc29tZUljb247XG5cbiAgLyoqXG4gICAqIFRoZSBGb250IEF3ZXNvbWUgNSBpY29uIHN0eWxlLiBGZXdlciBpY29ucyBzdXBwb3J0IHRoZSBSZWd1bGFyIHRoZW1lIGFuZCB3aWxsIGZhbGxiYWNrIHRvIFNvbGlkXG4gICAqIGlmIG5vdCBzdXBwb3J0ZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBpY29uVGhlbWU6IEZvbnRBd2Vzb21lSWNvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogVGhlIHN1YmplY3QgdGV4dCBvZiB0aGUgTW9kYWwuXG4gICAqL1xuICBASW5wdXQoKVxuICB0aXRsZVRleHQgPSAnJztcblxuICAvKipcbiAgICogVGhlIGZhbGxiYWNrIGJ1dHRvbiB0ZXh0IHRvIGFjY2VwdCB0aGUgTW9kYWwuIFRoaXMgaXMgYnlwYXNzZWQgaWYgeW91IGNvbnRlbnQtcHJvamVjdCB0aGUgYWNjZXB0IGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGFjY2VwdFRleHQgPSAnT0snO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIE1vZGFsIHRvIGJlIGRpc21pc3NlZC4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBgYWNjZXB0YCBhbmQgYGRlbnlgLiBJZiBhIE1vZGFsIGlzIG1lYW50IHRvIGJlIHJlLW9wZW5lZCBmcmVxdWVudGx5IGl0IHNob3VsZCBiZSBkaXNtaXNzYWJsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRpc21pc3NhYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgTW9kYWwgc2hvdWxkIGZhZGUgaW4vb3V0LlxuICAgKi9cbiAgQElucHV0KClcbiAgZmFkZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNob3dzIGEgYmFja2Ryb3AgYmVoaW5kIHRoZSBNb2RhbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGJhY2tkcm9wID0gdHJ1ZTtcblxuICAvKipcbiAgICogQ29udGFpbnMgdGhlIGRpc21pc3MgYnV0dG9uIGNvbnRlbnQgcHJvamVjdGlvbi5cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Rpc21pc3NFbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBkaXNtaXNzRWwhOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBDb250YWlucyB0aGUgZGVueSBidXR0b24gY29udGVudCBwcm9qZWN0aW9uLlxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZGVueUVsJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGRlbnlFbCE6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5zIHRoZSBhY2NlcHQgYnV0dG9uIGNvbnRlbnQgcHJvamVjdGlvbi5cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2FjY2VwdEVsJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGFjY2VwdEVsITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBNb2RhbCBjb250ZW50IGlzIGRpc21pc3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50IHwgRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgTW9kYWwgY29udGVudCBpcyBkZW5pZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZGVueSA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudCB8IEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIE1vZGFsIGNvbnRlbnQgaXMgYWNjZXB0ZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgYWNjZXB0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50IHwgRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW50ZXJhY3Rpb25TZXJ2aWNlOiBJbnRlcmFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7fVxuXG4gIGdldCBpbnRlcmFjdGFibGVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGFibGVJZDtcbiAgfVxuXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBnZXQgc2hvd24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWQgJiYgdGhpcy5fc2hvdztcbiAgfVxuXG4gIGdldCBzaG93V29ya2luZ0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5pY29uTmFtZSAmJiB0aGlzLnRoZW1lID09PSBNb2RhbFRoZW1lLldvcmtpbmc7XG4gIH1cblxuICBnZXQgc2hvd0Rlc3RydWN0aXZlSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmljb25OYW1lICYmIHRoaXMudGhlbWUgPT09IE1vZGFsVGhlbWUuRGVzdHJ1Y3RpdmU7XG4gIH1cblxuICBnZXQgYWNjZXB0RmFsbGJhY2tUaGVtZSgpOiBCdXR0b25UaGVtZSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWUgPT09IE1vZGFsVGhlbWUuRGVzdHJ1Y3RpdmUgPyAnZGFuZ2VyJyA6ICdwcmltYXJ5JztcbiAgfVxuXG4gIGdldCBoaWRlSGVhZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50aXRsZVRleHQgJiYgIXRoaXMuZGlzbWlzc2FibGU7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnRlcmFjdGlvblNlcnZpY2UuYWRkKHRoaXMpO1xuXG4gICAgaWYgKHRoaXMuZGlzbWlzc2FibGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnRoZW1lID09PSBNb2RhbFRoZW1lLldvcmtpbmcpIHtcbiAgICAgIHRoaXMuZGlzbWlzc2FibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmljb25OYW1lID09PSB1bmRlZmluZWQgJiYgdGhpcy50aGVtZSA9PT0gTW9kYWxUaGVtZS5EZXN0cnVjdGl2ZSkge1xuICAgICAgdGhpcy5pY29uTmFtZSA9ICdleGNsYW1hdGlvbi10cmlhbmdsZSc7XG4gICAgfVxuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5faW50ZXJhY3Rpb25TZXJ2aWNlLnJlbW92ZSh0aGlzLmludGVyYWN0YWJsZUlkKTtcbiAgICB0aGlzLl9kaXNhYmxlRXZlbnRIYW5kbGluZygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURpc21pc3MoZXZlbnQ6IE1vdXNlRXZlbnQgfCBFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICF0aGlzLmRpc21pc3NhYmxlIHx8XG4gICAgICAhIXRoaXMuZGlzbWlzc0VsPy5uYXRpdmVFbGVtZW50Py5maXJzdENoaWxkPy5kaXNhYmxlZFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5kaXNtaXNzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURlbnkoZXZlbnQ6IE1vdXNlRXZlbnQgfCBFdmVudCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuZGVueUVsPy5uYXRpdmVFbGVtZW50Py5maXJzdENoaWxkPy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5kZW55LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFjY2VwdChldmVudDogTW91c2VFdmVudCB8IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5hY2NlcHRFbD8ubmF0aXZlRWxlbWVudD8uZmlyc3RDaGlsZD8uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuYWNjZXB0LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zL3Nob3dzIHRoZSBtb2RhbC4gQ2FuIGJlIHVzZWQgcHJvZ3JhbW1hdGljYWxseS5cbiAgICovXG4gIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3ApIHtcbiAgICAgIHRoaXMuX2ludGVyYWN0aW9uU2VydmljZS5xdWV1ZUJhY2tkcm9wKHRoaXMuaW50ZXJhY3RhYmxlSWQpO1xuICAgIH1cbiAgICB0aGlzLl9zaG93ID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXR1cEV2ZW50SGFuZGxpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMvaGlkZXMgdGhlIG1vZGFsLiBDYW4gYmUgdXNlZCBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc2hvdyA9IGZhbHNlO1xuICAgIHRoaXMuX2ludGVyYWN0aW9uU2VydmljZS5kZXF1ZXVlQmFja2Ryb3AodGhpcy5pbnRlcmFjdGFibGVJZCk7XG4gICAgdGhpcy5fZGlzYWJsZUV2ZW50SGFuZGxpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwRXZlbnRIYW5kbGluZygpOiB2b2lkIHtcbiAgICBjb25zdCB7IG5hdGl2ZUVsZW1lbnQgfSA9IHRoaXMuX2VsZW1lbnRSZWY7XG5cbiAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4obmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9jbG9zZWQkKSxcbiAgICAgICAgZmlsdGVyKGV2dCA9PiBldnQua2V5ID09PSAnRXNjYXBlJylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZ0ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZGlzbWlzc2FibGUgJiYgIWV2dC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZURpc21pc3MoZXZ0KTtcbiAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4obmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9jbG9zZWQkKSxcbiAgICAgICAgZmlsdGVyKGV2dCA9PiBldnQua2V5ID09PSAnRW50ZXInKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShldnQgPT4ge1xuICAgICAgICBpZiAoIWV2dC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUFjY2VwdChldnQpO1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGxldCBwcmV2ZW50Q2xvc2UgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5fZGlhbG9nRWxlbWVudFJlZikge1xuICAgICAgLy8gbGlzdGVuIHRvICdtb3VzZWRvd24nIGFuZCAnbW91c2V1cCcgdG8gcHJldmVudCBkaXNtaXNzYWwgd2hlbiBtb3VzZSBpcyBwcmVzc2VkIGluc2lkZVxuICAgICAgLy8gb2YgdGhlIGRpYWxvZyB3aW5kb3cgYW5kIHRoZW4gcmVsZWFzZWQgb3V0c2lkZVxuICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuX2RpYWxvZ0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9jbG9zZWQkKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgcHJldmVudENsb3NlID0gZmFsc2U7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4obmF0aXZlRWxlbWVudCwgJ21vdXNldXAnKS5waXBlKFxuICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fY2xvc2VkJCksXG4gICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpbHRlcigoeyB0YXJnZXQgfSkgPT4gbmF0aXZlRWxlbWVudCA9PT0gdGFyZ2V0KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHByZXZlbnRDbG9zZSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGxpc3RlbiB0byAnY2xpY2snIGV2ZW50cyB0byBkaXNtaXNzIG9uIGNvbXBvbmVudC9jb250YWluZXIgY2xpY2ssIGV4Y2VwdCB3aGVuXG4gICAgLy8gY2xpY2tpbmcgaW5zaWRlIHRoZSBkaWFsb2cgd2luZG93IG9yIHdoZW4gcHJldmVudGVkIGJ5IHRoZSBhYm92ZSAnbW91c2Vkb3duJ1xuICAgIC8vIGFuZCAnbW91c2V1cCcgaGFuZGxlcnNcbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4obmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9jbG9zZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZ0ID0+IHtcbiAgICAgICAgaWYgKG5hdGl2ZUVsZW1lbnQgPT09IGV2dC50YXJnZXQgJiYgIXByZXZlbnRDbG9zZSkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVEaXNtaXNzKGV2dCk7XG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2ZW50Q2xvc2UgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZUV2ZW50SGFuZGxpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VkJC5uZXh0KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI2RpYWxvZ0VsZW1lbnRcbiAgKm5nSWY9XCJ2YWxpZFwiXG4gIGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSBtb2RhbC10aGVtZS17e1xuICAgIHRoZW1lXG4gIH19XCJcbiAgW2NsYXNzLm1vZGFsLXNtXT1cInNpemUgPT09ICdzbSdcIlxuICBbY2xhc3MubW9kYWwtbGddPVwic2l6ZSA9PT0gJ2xnJ1wiXG4gIFtjbGFzcy5tb2RhbC14bF09XCJzaXplID09PSAneGwnXCJcbiAgW2NsYXNzLm1vZGFsLWZ1bGxzY3JlZW5dPVwic2l6ZSA9PT0gJ2ZzJ1wiXG4gIFtjbGFzcy5tb2RhbC1mdWxsc2NyZWVuLWxnLWRvd25dPVwic2l6ZSAhPT0gJ2ZzJ1wiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVzdHJ1Y3RpdmVJY29uXCIgY2xhc3M9XCJtb2RhbC1pY29uXCI+XG4gICAgICA8c3BhbiBpbXBkYy1pY29uIFtuYW1lXT1cImljb25OYW1lXCIgW3RoZW1lXT1cImljb25UaGVtZVwiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICNoZWFkZXIgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIiBbY2xhc3MuaGlkZV09XCJoaWRlSGVhZGVyXCI+XG4gICAgICA8aDMgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dXb3JraW5nSWNvblwiIGNsYXNzPVwibW9kYWwtaWNvblwiPlxuICAgICAgICAgIDxzcGFuIGltcGRjLWljb24gW25hbWVdPVwiaWNvbk5hbWVcIiBbdGhlbWVdPVwiaWNvblRoZW1lXCI+PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IHRpdGxlVGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwvaDM+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGltcGRjQnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGlzbWlzc2FibGVcIlxuICAgICAgICB0aGVtZT1cImNsb3NlXCJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZURpc21pc3MoJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAjYm9keUVsIGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgI2Zvb3RlciBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgI2Rpc21pc3NFbFxuICAgICAgICAqbmdJZj1cImRpc21pc3NhYmxlXCJcbiAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWRpc21pc3NFbC5jaGlsZHJlbi5sZW5ndGhcIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlRGlzbWlzcygkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Rpc21pc3NdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgI2RlbnlFbFxuICAgICAgICBbY2xhc3MuaGlkZV09XCIhZGVueUVsLmNoaWxkcmVuLmxlbmd0aFwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVEZW55KCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZGVueV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICAjYWNjZXB0RWxcbiAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWFjY2VwdEVsLmNoaWxkcmVuLmxlbmd0aFwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVBY2NlcHQoJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthY2NlcHRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgI2FjY2VwdEZhbGxiYWNrRWxcbiAgICAgICAgKm5nSWY9XCIhYWNjZXB0RWwuY2hpbGRyZW4ubGVuZ3RoXCJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFjY2VwdCgkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGltcGRjQnV0dG9uXG4gICAgICAgICAgW3RleHRdPVwiYWNjZXB0VGV4dFwiXG4gICAgICAgICAgW3RoZW1lXT1cImFjY2VwdEZhbGxiYWNrVGhlbWVcIj48L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -8,19 +8,19 @@ import { ModalComponent } from './modal.component';
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class ModalModule {
|
|
10
10
|
constructor() { }
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: ModalModule, declarations: [ModalComponent], imports: [CommonModule,
|
|
13
|
+
FormsModule,
|
|
14
|
+
BackdropModule,
|
|
15
|
+
ButtonModule,
|
|
16
|
+
IconModule], exports: [BackdropModule, ButtonModule, IconModule, ModalComponent] }); }
|
|
17
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ModalModule, imports: [CommonModule,
|
|
18
|
+
FormsModule,
|
|
19
|
+
BackdropModule,
|
|
20
|
+
ButtonModule,
|
|
21
|
+
IconModule, BackdropModule, ButtonModule, IconModule] }); }
|
|
11
22
|
}
|
|
12
|
-
|
|
13
|
-
ModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: ModalModule, declarations: [ModalComponent], imports: [CommonModule,
|
|
14
|
-
FormsModule,
|
|
15
|
-
BackdropModule,
|
|
16
|
-
ButtonModule,
|
|
17
|
-
IconModule], exports: [BackdropModule, ButtonModule, IconModule, ModalComponent] });
|
|
18
|
-
ModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ModalModule, imports: [CommonModule,
|
|
19
|
-
FormsModule,
|
|
20
|
-
BackdropModule,
|
|
21
|
-
ButtonModule,
|
|
22
|
-
IconModule, BackdropModule, ButtonModule, IconModule] });
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ModalModule, decorators: [{
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ModalModule, decorators: [{
|
|
24
24
|
type: NgModule,
|
|
25
25
|
args: [{
|
|
26
26
|
imports: [
|
|
@@ -33,5 +33,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
33
33
|
declarations: [ModalComponent],
|
|
34
34
|
exports: [BackdropModule, ButtonModule, IconModule, ModalComponent]
|
|
35
35
|
}]
|
|
36
|
-
}], ctorParameters:
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
}], ctorParameters: () => [] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RhbC9tb2RhbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFhbkQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsZ0JBQWUsQ0FBQzs4R0FETCxXQUFXOytHQUFYLFdBQVcsaUJBSFAsY0FBYyxhQU4zQixZQUFZO1lBQ1osV0FBVztZQUNYLGNBQWM7WUFDZCxZQUFZO1lBQ1osVUFBVSxhQUdGLGNBQWMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWM7K0dBRXZELFdBQVcsWUFUcEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxjQUFjO1lBQ2QsWUFBWTtZQUNaLFVBQVUsRUFHRixjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVU7OzJGQUV2QyxXQUFXO2tCQVh2QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLFVBQVU7cUJBQ1g7b0JBQ0QsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUM7aUJBQ3BFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhY2tkcm9wTW9kdWxlIH0gZnJvbSAnLi4vYmFja2Ryb3AnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEJhY2tkcm9wTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW01vZGFsQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0JhY2tkcm9wTW9kdWxlLCBCdXR0b25Nb2R1bGUsIEljb25Nb2R1bGUsIE1vZGFsQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbE1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==
|
|
@@ -6,4 +6,4 @@ export const ModalComponentSizesArr = [
|
|
|
6
6
|
ComponentSize.XLarge,
|
|
7
7
|
ComponentSize.Fullscreen
|
|
8
8
|
];
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29tcG9uZW50LXNpemVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RhbC90eXBlcy9tb2RhbC1jb21wb25lbnQtc2l6ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLGFBQWEsQ0FBQyxLQUFLO0lBQ25CLGFBQWEsQ0FBQyxNQUFNO0lBQ3BCLGFBQWEsQ0FBQyxLQUFLO0lBQ25CLGFBQWEsQ0FBQyxNQUFNO0lBQ3BCLGFBQWEsQ0FBQyxVQUFVO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRTaXplIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgTW9kYWxDb21wb25lbnRTaXplc0FyciA9IFtcbiAgQ29tcG9uZW50U2l6ZS5TbWFsbCxcbiAgQ29tcG9uZW50U2l6ZS5NZWRpdW0sXG4gIENvbXBvbmVudFNpemUuTGFyZ2UsXG4gIENvbXBvbmVudFNpemUuWExhcmdlLFxuICBDb21wb25lbnRTaXplLkZ1bGxzY3JlZW5cbl07XG5cbmV4cG9ydCB0eXBlIE1vZGFsQ29tcG9uZW50U2l6ZXMgPSAodHlwZW9mIE1vZGFsQ29tcG9uZW50U2l6ZXNBcnIpW251bWJlcl07XG4iXX0=
|
|
@@ -9,4 +9,4 @@ export const ModalThemesArr = [
|
|
|
9
9
|
ModalTheme.Working,
|
|
10
10
|
ModalTheme.Destructive
|
|
11
11
|
];
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdGhlbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL21vZGFsL3R5cGVzL21vZGFsLXRoZW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsK0JBQWlCLENBQUE7SUFDakIsaUNBQW1CLENBQUE7SUFDbkIseUNBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLFVBQVUsQ0FBQyxNQUFNO0lBQ2pCLFVBQVUsQ0FBQyxPQUFPO0lBQ2xCLFVBQVUsQ0FBQyxXQUFXO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBNb2RhbFRoZW1lIHtcbiAgU2ltcGxlID0gJ3NpbXBsZScsXG4gIFdvcmtpbmcgPSAnd29ya2luZycsXG4gIERlc3RydWN0aXZlID0gJ2Rlc3RydWN0aXZlJ1xufVxuXG5leHBvcnQgY29uc3QgTW9kYWxUaGVtZXNBcnIgPSBbXG4gIE1vZGFsVGhlbWUuU2ltcGxlLFxuICBNb2RhbFRoZW1lLldvcmtpbmcsXG4gIE1vZGFsVGhlbWUuRGVzdHJ1Y3RpdmVcbl07XG5cbmV4cG9ydCB0eXBlIE1vZGFsVGhlbWVzID0gKHR5cGVvZiBNb2RhbFRoZW1lc0FycilbbnVtYmVyXTtcbiJdfQ==
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { sanitize } from '../../utilities';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../button/button.component";
|
|
6
|
+
import * as i3 from "../icon/icon.component";
|
|
7
|
+
import * as i4 from "@angular/forms";
|
|
8
|
+
import * as i5 from "../form-field/controls/select/option/select-option.component";
|
|
9
|
+
import * as i6 from "../form-field/controls/select/select.component";
|
|
10
|
+
import * as i7 from "../form-field/form-field.component";
|
|
11
|
+
import * as i8 from "../form-field/controls/input/input.directive";
|
|
12
|
+
import * as i9 from "../size-detection/directive/size-detector.directive";
|
|
13
|
+
/**
|
|
14
|
+
* The `PaginationComponent` (`<impdc-pagination` or `<div impdc-pagination`) is a control for paged content such as tables or lists.
|
|
15
|
+
* To use, import `PaginationModule` or another module that imports and exports that module from `@impartner/design-components`.
|
|
16
|
+
* `ModalModule` imports and exports ImpdcFormsModule and [ButtonModule](./?path=/docs/design-components-button).
|
|
17
|
+
*/
|
|
18
|
+
export class PaginationComponent {
|
|
19
|
+
/**
|
|
20
|
+
* A formattable text summary of pagination data. `{firstPageResult}` The first item within the current page.
|
|
21
|
+
* `{lastPageResult}` The last item within the current page. `{total}` The total number of items.
|
|
22
|
+
*/
|
|
23
|
+
set summary(summary) {
|
|
24
|
+
this._summary = summary;
|
|
25
|
+
}
|
|
26
|
+
get summary() {
|
|
27
|
+
return sanitize(this._summary)
|
|
28
|
+
.replace('{firstPageResult}', `<b>${this.firstPageResult}</b>`)
|
|
29
|
+
.replace('{lastPageResult}', `<b>${this.lastPageResult}</b>`)
|
|
30
|
+
.replace('{total}', `<b>${this.total}</b>`);
|
|
31
|
+
}
|
|
32
|
+
get totalPages() {
|
|
33
|
+
if (this.total < 1 || this.perPage < 1) {
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
if (this.total < this.perPage) {
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
return Math.ceil(this.total / this.perPage);
|
|
40
|
+
}
|
|
41
|
+
get firstPageResult() {
|
|
42
|
+
const page = this._getPageClamped();
|
|
43
|
+
if (this.total < 1 || page < 1 || this.perPage < 1) {
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
if (page === 1) {
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
if (page > Math.ceil(this.total / this.perPage)) {
|
|
50
|
+
return this.total;
|
|
51
|
+
}
|
|
52
|
+
return (page - 1) * this.perPage + 1;
|
|
53
|
+
}
|
|
54
|
+
get lastPageResult() {
|
|
55
|
+
const page = this._getPageClamped();
|
|
56
|
+
if (this.total <= 0 || page < 1 || this.perPage < 1) {
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
if (page === 1) {
|
|
60
|
+
if (this.total < this.perPage) {
|
|
61
|
+
return this.total;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return this.perPage;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (this.total < this.perPage * page) {
|
|
68
|
+
return this.total;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return this.perPage * page;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
constructor(_changeDetectorRef) {
|
|
75
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
76
|
+
this._summary = 'Showing {firstPageResult} to {lastPageResult} of {total} results';
|
|
77
|
+
/**
|
|
78
|
+
* The current page.
|
|
79
|
+
*/
|
|
80
|
+
this.page = 0;
|
|
81
|
+
/**
|
|
82
|
+
* The number of items shown per page. Items are commonly displayed as rows in a table.
|
|
83
|
+
*/
|
|
84
|
+
this.perPage = 10;
|
|
85
|
+
/**
|
|
86
|
+
* The total number of items.
|
|
87
|
+
*/
|
|
88
|
+
this.total = 0;
|
|
89
|
+
/**
|
|
90
|
+
* The label text for the per page select input.
|
|
91
|
+
*/
|
|
92
|
+
this.perPageLabel = '';
|
|
93
|
+
/**
|
|
94
|
+
* Emitted when the page number is changed, specifying the target page number.
|
|
95
|
+
*/
|
|
96
|
+
this.goToPage = new EventEmitter();
|
|
97
|
+
/**
|
|
98
|
+
* Emitted when the per page is changed, specifying the new value.
|
|
99
|
+
*/
|
|
100
|
+
this.perPageChange = new EventEmitter();
|
|
101
|
+
/** @ignore */
|
|
102
|
+
this.mobile = false;
|
|
103
|
+
}
|
|
104
|
+
handleResize(size) {
|
|
105
|
+
this.mobile = size.width < 640;
|
|
106
|
+
this._changeDetectorRef.detectChanges();
|
|
107
|
+
}
|
|
108
|
+
goToPreviousPage() {
|
|
109
|
+
const page = this._getPageClamped();
|
|
110
|
+
if (page <= 1) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const previousPage = page - 1;
|
|
114
|
+
this.page = previousPage;
|
|
115
|
+
this.goToPage.emit(previousPage);
|
|
116
|
+
}
|
|
117
|
+
goToNextPage() {
|
|
118
|
+
const page = this._getPageClamped();
|
|
119
|
+
if (page >= this.totalPages) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const nextPage = page + 1;
|
|
123
|
+
this.page = nextPage;
|
|
124
|
+
this.goToPage.emit(nextPage);
|
|
125
|
+
}
|
|
126
|
+
goToExactPageFromEvent({ target }) {
|
|
127
|
+
this.goToExactPage(target?.value);
|
|
128
|
+
}
|
|
129
|
+
goToExactPage(page) {
|
|
130
|
+
const targetPage = this._getPageClamped(page);
|
|
131
|
+
if (targetPage === this.page) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
this.page = targetPage;
|
|
135
|
+
this.goToPage.emit(this.page);
|
|
136
|
+
}
|
|
137
|
+
handlePerPageChange() {
|
|
138
|
+
this.perPageChange.emit(this.perPage);
|
|
139
|
+
}
|
|
140
|
+
preventDefaultAndBlur(event) {
|
|
141
|
+
// prevents PRM form submit
|
|
142
|
+
event.preventDefault();
|
|
143
|
+
event.target.blur();
|
|
144
|
+
}
|
|
145
|
+
_getPageClamped(page) {
|
|
146
|
+
page = Number(page || this.page || 0);
|
|
147
|
+
if (isNaN(page) || page < 1) {
|
|
148
|
+
return 1;
|
|
149
|
+
}
|
|
150
|
+
if (page > this.totalPages) {
|
|
151
|
+
return this.totalPages;
|
|
152
|
+
}
|
|
153
|
+
return page;
|
|
154
|
+
}
|
|
155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: PaginationComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
156
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: PaginationComponent, selector: "impdc-pagination, div[impdc-pagination]", inputs: { page: "page", perPage: "perPage", total: "total", summary: "summary", perPageLabel: "perPageLabel" }, outputs: { goToPage: "goToPage", perPageChange: "perPageChange" }, ngImport: i0, template: "<div\n class=\"pagination-container\"\n impdcSizeDetector\n (resized)=\"handleResize($event)\">\n <div class=\"mobile-pagination\" [ngClass]=\"{ 'd-none': !mobile }\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i impdc-icon name=\"chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i impdc-icon name=\"chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\" [ngClass]=\"{ 'd-none': mobile }\">\n <div class=\"rows-per-page\">\n <div>{{ perPageLabel }}</div>\n <div>\n <impdc-form-field>\n <impdc-select\n [(ngModel)]=\"perPage\"\n (selectionChange)=\"handlePerPageChange()\">\n <impdc-select-option [value]=\"10\" label=\"10\"></impdc-select-option>\n <impdc-select-option [value]=\"25\" label=\"25\"></impdc-select-option>\n <impdc-select-option [value]=\"50\" label=\"50\"></impdc-select-option>\n <impdc-select-option\n [value]=\"100\"\n label=\"100\"></impdc-select-option>\n <impdc-select-option\n [value]=\"200\"\n label=\"200\"></impdc-select-option>\n </impdc-select>\n </impdc-form-field>\n </div>\n </div>\n <div class=\"pagination-rhs\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i impdc-icon name=\"chevron-left first\"></i>\n <i impdc-icon name=\"chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i impdc-icon name=\"chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n [(ngModel)]=\"page\"\n maxlength=\"4\"\n (blur)=\"goToExactPageFromEvent($event)\"\n (keydown.enter)=\"preventDefaultAndBlur($event)\" />\n <span> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page >= totalPages\">\n <i impdc-icon name=\"chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i impdc-icon name=\"chevron-right\"></i>\n <i impdc-icon name=\"chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-5);gap:1rem;color:var(--impd-color-gray-700, #374151)}.pagination-container .mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}.pagination-container .mobile-pagination button[impdcButton]{width:50%;justify-content:left}.pagination-container .desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}.pagination-container .desktop-pagination .rows-per-page{display:flex;flex-direction:row;align-items:center;gap:1rem;flex-grow:1;font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-container .desktop-pagination .pagination-rhs{display:flex;flex-direction:row;gap:2.4rem;flex-wrap:wrap;align-items:center}.pagination-container .desktop-pagination .pagination-rhs .summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-container .desktop-pagination .pagination-rhs .pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-container .desktop-pagination .pagination-rhs .pagination-actions ::ng-deep .first{margin-right:-1.2rem}.pagination-container .desktop-pagination .pagination-rhs .pagination-actions ::ng-deep .last{margin-left:-1.2rem}.pagination-container .desktop-pagination .pagination-rhs .page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.pagination-container .desktop-pagination .pagination-rhs .page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.pagination-container .desktop-pagination .pagination-rhs .pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "component", type: i3.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.SelectOptionComponent, selector: "impdc-select-option", inputs: ["value", "label", "id", "disabled"], outputs: ["onSelectionChange"] }, { kind: "component", type: i6.SelectComponent, selector: "impdc-select", inputs: ["disabled", "tabIndex", "placeholder", "required", "multiple", "compareWith", "errorStateMatcher", "value", "id"], outputs: ["selectionChange", "valueChange"], exportAs: ["impdcSelect"] }, { kind: "component", type: i7.FormFieldComponent, selector: "impdc-form-field", exportAs: ["impdcFormField"] }, { kind: "directive", type: i8.InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }, { kind: "directive", type: i9.SizeDetectorDirective, selector: "[impdcSizeDetector]", outputs: ["resized"] }] }); }
|
|
157
|
+
}
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
159
|
+
type: Component,
|
|
160
|
+
args: [{ selector: 'impdc-pagination, div[impdc-pagination]', template: "<div\n class=\"pagination-container\"\n impdcSizeDetector\n (resized)=\"handleResize($event)\">\n <div class=\"mobile-pagination\" [ngClass]=\"{ 'd-none': !mobile }\">\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page <= 1\"\n (click)=\"goToPreviousPage()\">\n <i impdc-icon name=\"chevron-left\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n [disabled]=\"page === totalPages\"\n (click)=\"goToNextPage()\">\n <i impdc-icon name=\"chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"desktop-pagination\" [ngClass]=\"{ 'd-none': mobile }\">\n <div class=\"rows-per-page\">\n <div>{{ perPageLabel }}</div>\n <div>\n <impdc-form-field>\n <impdc-select\n [(ngModel)]=\"perPage\"\n (selectionChange)=\"handlePerPageChange()\">\n <impdc-select-option [value]=\"10\" label=\"10\"></impdc-select-option>\n <impdc-select-option [value]=\"25\" label=\"25\"></impdc-select-option>\n <impdc-select-option [value]=\"50\" label=\"50\"></impdc-select-option>\n <impdc-select-option\n [value]=\"100\"\n label=\"100\"></impdc-select-option>\n <impdc-select-option\n [value]=\"200\"\n label=\"200\"></impdc-select-option>\n </impdc-select>\n </impdc-form-field>\n </div>\n </div>\n <div class=\"pagination-rhs\">\n <div>\n <span class=\"summary\" [innerHTML]=\"summary\"></span>\n </div>\n <div class=\"pagination-actions\">\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"First Page\"\n class=\"pagination-first-last-btns\"\n (click)=\"goToExactPage(1)\"\n [disabled]=\"page <= 1\">\n <i impdc-icon name=\"chevron-left first\"></i>\n <i impdc-icon name=\"chevron-left\"></i>\n <!-- 1 -->\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"previous\"\n aria-label=\"Previous\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"page <= 1\">\n <i impdc-icon name=\"chevron-left\"></i>\n </button>\n <div class=\"page-change\">\n <input\n impdcInput\n [(ngModel)]=\"page\"\n maxlength=\"4\"\n (blur)=\"goToExactPageFromEvent($event)\"\n (keydown.enter)=\"preventDefaultAndBlur($event)\" />\n <span> / {{ totalPages }} </span>\n </div>\n <button\n impdcButton\n theme=\"secondary\"\n aria-label=\"Next\"\n (click)=\"goToNextPage()\"\n [disabled]=\"page >= totalPages\">\n <i impdc-icon name=\"chevron-right\"></i>\n </button>\n <button\n impdcButton\n theme=\"secondary\"\n class=\"pagination-first-last-btns\"\n aria-label=\"Last Page\"\n (click)=\"goToExactPage(totalPages)\"\n [disabled]=\"page === totalPages\">\n <i impdc-icon name=\"chevron-right\"></i>\n <i impdc-icon name=\"chevron-right last\"></i>\n <!-- {{ totalPages }} -->\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-5);gap:1rem;color:var(--impd-color-gray-700, #374151)}.pagination-container .mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}.pagination-container .mobile-pagination button[impdcButton]{width:50%;justify-content:left}.pagination-container .desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}.pagination-container .desktop-pagination .rows-per-page{display:flex;flex-direction:row;align-items:center;gap:1rem;flex-grow:1;font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-container .desktop-pagination .pagination-rhs{display:flex;flex-direction:row;gap:2.4rem;flex-wrap:wrap;align-items:center}.pagination-container .desktop-pagination .pagination-rhs .summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-container .desktop-pagination .pagination-rhs .pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-container .desktop-pagination .pagination-rhs .pagination-actions ::ng-deep .first{margin-right:-1.2rem}.pagination-container .desktop-pagination .pagination-rhs .pagination-actions ::ng-deep .last{margin-left:-1.2rem}.pagination-container .desktop-pagination .pagination-rhs .page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.pagination-container .desktop-pagination .pagination-rhs .page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.pagination-container .desktop-pagination .pagination-rhs .pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"] }]
|
|
161
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { page: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], perPage: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], total: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], summary: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], perPageLabel: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], goToPage: [{
|
|
172
|
+
type: Output
|
|
173
|
+
}], perPageChange: [{
|
|
174
|
+
type: Output
|
|
175
|
+
}] } });
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFHM0M7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFzQjlCOzs7T0FHRztJQUNILElBQ1csT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzNCLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLElBQUksQ0FBQyxlQUFlLE1BQU0sQ0FBQzthQUM5RCxPQUFPLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxJQUFJLENBQUMsY0FBYyxNQUFNLENBQUM7YUFDNUQsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFrQkQsSUFBVyxVQUFVO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELElBQUksSUFBSSxDQUFD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LENBQUMsQ0FBQztRQUN0QyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN4QjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0EvS1UsbUJBQW1CO2tHQUFuQixtQkFBbUIsa1FDcEJoQyw2d0dBbUdBOzsyRkQvRWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLHlDQUF5QztzRkFZNUMsSUFBSTtzQkFEVixLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFPQyxLQUFLO3NCQURYLEtBQUs7Z0JBUUssT0FBTztzQkFEakIsS0FBSztnQkFnQkMsWUFBWTtzQkFEbEIsS0FBSztnQkFNb0IsUUFBUTtzQkFBakMsTUFBTTtnQkFLbUIsYUFBYTtzQkFBdEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNhbml0aXplIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7IElFbGVtZW50U2l6ZSB9IGZyb20gJy4uL3NpemUtZGV0ZWN0aW9uJztcblxuLyoqXG4gKiBUaGUgYFBhZ2luYXRpb25Db21wb25lbnRgIChgPGltcGRjLXBhZ2luYXRpb25gIG9yIGA8ZGl2IGltcGRjLXBhZ2luYXRpb25gKSBpcyBhIGNvbnRyb2wgZm9yIHBhZ2VkIGNvbnRlbnQgc3VjaCBhcyB0YWJsZXMgb3IgbGlzdHMuXG4gKiBUbyB1c2UsIGltcG9ydCBgUGFnaW5hdGlvbk1vZHVsZWAgb3IgYW5vdGhlciBtb2R1bGUgdGhhdCBpbXBvcnRzIGFuZCBleHBvcnRzIHRoYXQgbW9kdWxlIGZyb20gYEBpbXBhcnRuZXIvZGVzaWduLWNvbXBvbmVudHNgLlxuICogYE1vZGFsTW9kdWxlYCBpbXBvcnRzIGFuZCBleHBvcnRzIEltcGRjRm9ybXNNb2R1bGUgYW5kIFtCdXR0b25Nb2R1bGVdKC4vP3BhdGg9L2RvY3MvZGVzaWduLWNvbXBvbmVudHMtYnV0dG9uKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtcGFnaW5hdGlvbiwgZGl2W2ltcGRjLXBhZ2luYXRpb25dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCB7XG4gIHByaXZhdGUgX3N1bW1hcnkgPVxuICAgICdTaG93aW5nIHtmaXJzdFBhZ2VSZXN1bHR9IHRvIHtsYXN0UGFnZVJlc3VsdH0gb2Yge3RvdGFsfSByZXN1bHRzJztcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlID0gMDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBpdGVtcyBzaG93biBwZXIgcGFnZS4gSXRlbXMgYXJlIGNvbW1vbmx5IGRpc3BsYXllZCBhcyByb3dzIGluIGEgdGFibGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGVyUGFnZSA9IDEwO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRvdGFsID0gMDtcblxuICAvKipcbiAgICogQSBmb3JtYXR0YWJsZSB0ZXh0IHN1bW1hcnkgb2YgcGFnaW5hdGlvbiBkYXRhLiBge2ZpcnN0UGFnZVJlc3VsdH1gIFRoZSBmaXJzdCBpdGVtIHdpdGhpbiB0aGUgY3VycmVudCBwYWdlLlxuICAgKiBge2xhc3RQYWdlUmVzdWx0fWAgVGhlIGxhc3QgaXRlbSB3aXRoaW4gdGhlIGN1cnJlbnQgcGFnZS4gYHt0b3RhbH1gIFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN1bW1hcnkoc3VtbWFyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3VtbWFyeSA9IHN1bW1hcnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1bW1hcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2FuaXRpemUodGhpcy5fc3VtbWFyeSlcbiAgICAgIC5yZXBsYWNlKCd7Zmlyc3RQYWdlUmVzdWx0fScsIGA8Yj4ke3RoaXMuZmlyc3RQYWdlUmVzdWx0fTwvYj5gKVxuICAgICAgLnJlcGxhY2UoJ3tsYXN0UGFnZVJlc3VsdH0nLCBgPGI+JHt0aGlzLmxhc3RQYWdlUmVzdWx0fTwvYj5gKVxuICAgICAgLnJlcGxhY2UoJ3t0b3RhbH0nLCBgPGI+JHt0aGlzLnRvdGFsfTwvYj5gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgdGV4dCBmb3IgdGhlIHBlciBwYWdlIHNlbGVjdCBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwZXJQYWdlTGFiZWwgPSAnJztcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwYWdlIG51bWJlciBpcyBjaGFuZ2VkLCBzcGVjaWZ5aW5nIHRoZSB0YXJnZXQgcGFnZSBudW1iZXIuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGdvVG9QYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcGVyIHBhZ2UgaXMgY2hhbmdlZCwgc3BlY2lmeWluZyB0aGUgbmV3IHZhbHVlLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBwZXJQYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHVibGljIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMudG90YWwgPCAxIHx8IHRoaXMucGVyUGFnZSA8IDEpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRvdGFsIDwgdGhpcy5wZXJQYWdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBlclBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGdldCBmaXJzdFBhZ2VSZXN1bHQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBwYWdlID0gdGhpcy5fZ2V0UGFnZUNsYW1wZWQoKTtcbiAgICBpZiAodGhpcy50b3RhbCA8IDEgfHwgcGFnZSA8IDEgfHwgdGhpcy5wZXJQYWdlIDwgMSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHBhZ2UgPT09IDEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmIChwYWdlID4gTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBlclBhZ2UpKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3RhbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHBhZ2UgLSAxKSAqIHRoaXMucGVyUGFnZSArIDE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3RQYWdlUmVzdWx0KCk6IG51bWJlciB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuX2dldFBhZ2VDbGFtcGVkKCk7XG4gICAgaWYgKHRoaXMudG90YWwgPD0gMCB8fCBwYWdlIDwgMSB8fCB0aGlzLnBlclBhZ2UgPCAxKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAocGFnZSA9PT0gMSkge1xuICAgICAgaWYgKHRoaXMudG90YWwgPCB0aGlzLnBlclBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJQYWdlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRvdGFsIDwgdGhpcy5wZXJQYWdlICogcGFnZSkge1xuICAgICAgcmV0dXJuIHRoaXMudG90YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnBlclBhZ2UgKiBwYWdlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBtb2JpbGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgcHVibGljIGhhbmRsZVJlc2l6ZShzaXplOiBJRWxlbWVudFNpemUpOiB2b2lkIHtcbiAgICB0aGlzLm1vYmlsZSA9IHNpemUud2lkdGggPCA2NDA7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGdvVG9QcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuX2dldFBhZ2VDbGFtcGVkKCk7XG4gICAgaWYgKHBhZ2UgPD0gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzUGFnZSA9IHBhZ2UgLSAxO1xuICAgIHRoaXMucGFnZSA9IHByZXZpb3VzUGFnZTtcblxuICAgIHRoaXMuZ29Ub1BhZ2UuZW1pdChwcmV2aW91c1BhZ2UpO1xuICB9XG5cbiAgcHVibGljIGdvVG9OZXh0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlID0gdGhpcy5fZ2V0UGFnZUNsYW1wZWQoKTtcbiAgICBpZiAocGFnZSA+PSB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0UGFnZSA9IHBhZ2UgKyAxO1xuICAgIHRoaXMucGFnZSA9IG5leHRQYWdlO1xuXG4gICAgdGhpcy5nb1RvUGFnZS5lbWl0KG5leHRQYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvRXhhY3RQYWdlRnJvbUV2ZW50KHsgdGFyZ2V0IH06IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmdvVG9FeGFjdFBhZ2UoKHRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdvVG9FeGFjdFBhZ2UocGFnZTogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0UGFnZSA9IHRoaXMuX2dldFBhZ2VDbGFtcGVkKHBhZ2UpO1xuXG4gICAgaWYgKHRhcmdldFBhZ2UgPT09IHRoaXMucGFnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGFnZSA9IHRhcmdldFBhZ2U7XG5cbiAgICB0aGlzLmdvVG9QYWdlLmVtaXQodGhpcy5wYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVQZXJQYWdlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMucGVyUGFnZUNoYW5nZS5lbWl0KHRoaXMucGVyUGFnZSk7XG4gIH1cblxuICBwdWJsaWMgcHJldmVudERlZmF1bHRBbmRCbHVyKGV2ZW50OiBFdmVudCkge1xuICAgIC8vIHByZXZlbnRzIFBSTSBmb3JtIHN1Ym1pdFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5ibHVyKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQYWdlQ2xhbXBlZChwYWdlPzogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICBwYWdlID0gTnVtYmVyKHBhZ2UgfHwgdGhpcy5wYWdlIHx8IDApO1xuICAgIGlmIChpc05hTihwYWdlKSB8fCBwYWdlIDwgMSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKHBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvdGFsUGFnZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiXG4gIGltcGRjU2l6ZURldGVjdG9yXG4gIChyZXNpemVkKT1cImhhbmRsZVJlc2l6ZSgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2JpbGUtcGFnaW5hdGlvblwiIFtuZ0NsYXNzXT1cInsgJ2Qtbm9uZSc6ICFtb2JpbGUgfVwiPlxuICAgIDxidXR0b25cbiAgICAgIGltcGRjQnV0dG9uXG4gICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGFnZSA8PSAxXCJcbiAgICAgIChjbGljayk9XCJnb1RvUHJldmlvdXNQYWdlKClcIj5cbiAgICAgIDxpIGltcGRjLWljb24gbmFtZT1cImNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBpbXBkY0J1dHRvblxuICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPT09IHRvdGFsUGFnZXNcIlxuICAgICAgKGNsaWNrKT1cImdvVG9OZXh0UGFnZSgpXCI+XG4gICAgICA8aSBpbXBkYy1pY29uIG5hbWU9XCJjaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZGVza3RvcC1wYWdpbmF0aW9uXCIgW25nQ2xhc3NdPVwieyAnZC1ub25lJzogbW9iaWxlIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93cy1wZXItcGFnZVwiPlxuICAgICAgPGRpdj57eyBwZXJQYWdlTGFiZWwgfX08L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxpbXBkYy1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxpbXBkYy1zZWxlY3RcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGVyUGFnZVwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImhhbmRsZVBlclBhZ2VDaGFuZ2UoKVwiPlxuICAgICAgICAgICAgPGltcGRjLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cIjEwXCIgbGFiZWw9XCIxMFwiPjwvaW1wZGMtc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgIDxpbXBkYy1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCIyNVwiIGxhYmVsPVwiMjVcIj48L2ltcGRjLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICA8aW1wZGMtc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiNTBcIiBsYWJlbD1cIjUwXCI+PC9pbXBkYy1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgPGltcGRjLXNlbGVjdC1vcHRpb25cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIjEwMFwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiMTAwXCI+PC9pbXBkYy1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgPGltcGRjLXNlbGVjdC1vcHRpb25cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIjIwMFwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiMjAwXCI+PC9pbXBkYy1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgIDwvaW1wZGMtc2VsZWN0PlxuICAgICAgICA8L2ltcGRjLWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1yaHNcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3VtbWFyeVwiIFtpbm5lckhUTUxdPVwic3VtbWFyeVwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tYWN0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgaW1wZGNCdXR0b25cbiAgICAgICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkZpcnN0IFBhZ2VcIlxuICAgICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1maXJzdC1sYXN0LWJ0bnNcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvRXhhY3RQYWdlKDEpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA8PSAxXCI+XG4gICAgICAgICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1sZWZ0IGZpcnN0XCI+PC9pPlxuICAgICAgICAgIDxpIGltcGRjLWljb24gbmFtZT1cImNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICA8IS0tIDEgLS0+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgaW1wZGNCdXR0b25cbiAgICAgICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgY2xhc3M9XCJwcmV2aW91c1wiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA8PSAxXCI+XG4gICAgICAgICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtY2hhbmdlXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpbXBkY0lucHV0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhZ2VcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNFwiXG4gICAgICAgICAgICAoYmx1cik9XCJnb1RvRXhhY3RQYWdlRnJvbUV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicHJldmVudERlZmF1bHRBbmRCbHVyKCRldmVudClcIiAvPlxuICAgICAgICAgIDxzcGFuPiAvIHt7IHRvdGFsUGFnZXMgfX0gPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGltcGRjQnV0dG9uXG4gICAgICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJOZXh0XCJcbiAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdlID49IHRvdGFsUGFnZXNcIj5cbiAgICAgICAgICA8aSBpbXBkYy1pY29uIG5hbWU9XCJjaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGltcGRjQnV0dG9uXG4gICAgICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1maXJzdC1sYXN0LWJ0bnNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJMYXN0IFBhZ2VcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvRXhhY3RQYWdlKHRvdGFsUGFnZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA9PT0gdG90YWxQYWdlc1wiPlxuICAgICAgICAgIDxpIGltcGRjLWljb24gbmFtZT1cImNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1yaWdodCBsYXN0XCI+PC9pPlxuICAgICAgICAgIDwhLS0ge3sgdG90YWxQYWdlcyB9fSAtLT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|