@impartner/design-components 1.1.3 → 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/esm2022/lib/pagination/pagination.module.mjs +41 -0
- 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/esm2022/lib/table/components/bulk-actions/bulk-actions.component.mjs +11 -0
- package/esm2022/lib/table/components/column-heading/column-heading.component.mjs +38 -0
- package/esm2022/lib/table/components/index.mjs +4 -0
- package/esm2022/lib/table/components/row-actions/row-actions.component.mjs +61 -0
- package/esm2022/lib/table/constants/index.mjs +3 -0
- package/esm2022/lib/table/constants/public-table.constants.mjs +2 -0
- package/esm2022/lib/table/constants/table.constants.mjs +24 -0
- package/esm2022/lib/table/containers/index.mjs +2 -0
- package/esm2022/lib/table/containers/table.component.mjs +403 -0
- package/esm2022/lib/table/directives/index.mjs +3 -0
- package/esm2022/lib/table/directives/table-inject-component.directive.mjs +46 -0
- package/esm2022/lib/table/directives/table.directive.mjs +35 -0
- package/esm2022/lib/table/enumerations/index.mjs +2 -0
- package/esm2022/lib/table/enumerations/table-column-type.mjs +21 -0
- package/esm2022/lib/table/helpers/index.mjs +2 -0
- package/esm2022/lib/table/helpers/table-theme.helper.mjs +31 -0
- package/esm2022/lib/table/index.mjs +8 -0
- package/esm2022/lib/table/interfaces/cell-renderer.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/custom-cell-renderer-components.type.mjs +2 -0
- package/esm2022/lib/table/interfaces/index.mjs +11 -0
- package/esm2022/lib/table/interfaces/sort-by-payload.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-cell-option.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-column-defs.type.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-event-payload.interface.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/interfaces/table-row-item.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 +3768 -2988
- 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 +18 -3
- package/lib/pagination/pagination.module.d.ts +2 -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 +5 -0
- package/lib/table/components/column-heading/column-heading.component.d.ts +14 -0
- package/lib/table/components/index.d.ts +3 -0
- package/lib/table/components/row-actions/row-actions.component.d.ts +21 -0
- package/lib/table/constants/index.d.ts +2 -0
- package/lib/table/constants/public-table.constants.d.ts +1 -0
- package/lib/table/constants/table.constants.d.ts +10 -0
- package/lib/table/containers/index.d.ts +1 -0
- package/lib/table/containers/table.component.d.ts +133 -0
- package/lib/table/directives/index.d.ts +2 -0
- package/lib/table/directives/table-inject-component.directive.d.ts +16 -0
- package/lib/table/directives/table.directive.d.ts +15 -0
- package/lib/table/enumerations/index.d.ts +1 -0
- package/lib/table/enumerations/table-column-type.d.ts +19 -0
- package/lib/table/helpers/index.d.ts +1 -0
- package/lib/table/helpers/table-theme.helper.d.ts +7 -0
- package/lib/table/index.d.ts +7 -2
- package/lib/table/interfaces/cell-renderer.interface.d.ts +6 -0
- package/lib/table/interfaces/custom-cell-renderer-components.type.d.ts +3 -0
- package/lib/table/interfaces/index.d.ts +10 -0
- package/lib/table/interfaces/sort-by-payload.interface.d.ts +5 -0
- package/lib/table/interfaces/table-cell-option.interface.d.ts +4 -0
- package/lib/table/interfaces/table-column-defs.type.d.ts +29 -0
- package/lib/table/interfaces/table-event-payload.interface.d.ts +6 -0
- 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 +9 -0
- package/lib/table/table.module.d.ts +17 -3
- package/lib/text-highlight/text-highlight.component.d.ts +1 -1
- package/package.json +15 -20
- 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 -145
- package/esm2020/lib/pagination/pagination.module.mjs +0 -37
- package/esm2020/lib/scrollable/scrollable.component.mjs +0 -186
- package/esm2020/lib/select-icon/select-icon.component.mjs +0 -308
- package/esm2020/lib/table/index.mjs +0 -3
- package/esm2020/lib/table/table.component.mjs +0 -33
- package/esm2020/lib/table/table.module.mjs +0 -19
- package/esm2020/services/interaction.service.mjs +0 -81
- package/fesm2015/impartner-design-components.mjs +0 -8595
- package/fesm2015/impartner-design-components.mjs.map +0 -1
- package/fesm2020/impartner-design-components.mjs.map +0 -1
- package/lib/table/table.component.d.ts +0 -15
- /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/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
|
@@ -1,145 +0,0 @@
|
|
|
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 "../button/button.component";
|
|
5
|
-
import * as i2 from "../icon/icon.component";
|
|
6
|
-
import * as i3 from "@angular/forms";
|
|
7
|
-
import * as i4 from "../form-field/controls/input/input.directive";
|
|
8
|
-
/**
|
|
9
|
-
* The `PaginationComponent` (`<impdc-pagination` or `<div impdc-pagination`) is a control for paged content such as tables or lists.
|
|
10
|
-
* To use, import `PaginationModule` or another module that imports and exports that module from `@impartner/design-components`.
|
|
11
|
-
* `ModalModule` imports and exports ImpdcFormsModule and [ButtonModule](./?path=/docs/design-components-button).
|
|
12
|
-
*/
|
|
13
|
-
export class PaginationComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this._summary = 'Showing {firstPageResult} to {lastPageResult} of {total} results';
|
|
16
|
-
/**
|
|
17
|
-
* The current page.
|
|
18
|
-
*/
|
|
19
|
-
this.page = 0;
|
|
20
|
-
/**
|
|
21
|
-
* The number of items shown per page. Items are commonly displayed as rows in a table.
|
|
22
|
-
*/
|
|
23
|
-
this.perPage = 10;
|
|
24
|
-
/**
|
|
25
|
-
* The total number of items.
|
|
26
|
-
*/
|
|
27
|
-
this.total = 0;
|
|
28
|
-
/**
|
|
29
|
-
* Emitted when the page number is changed, specifying the target page number.
|
|
30
|
-
*/
|
|
31
|
-
this.goToPage = new EventEmitter();
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* A formattable text summary of pagination data. `{firstPageResult}` The first item within the current page.
|
|
35
|
-
* `{lastPageResult}` The last item within the current page. `{total}` The total number of items.
|
|
36
|
-
*/
|
|
37
|
-
set summary(summary) {
|
|
38
|
-
this._summary = summary;
|
|
39
|
-
}
|
|
40
|
-
get summary() {
|
|
41
|
-
return sanitize(this._summary)
|
|
42
|
-
.replace('{firstPageResult}', `<b>${this.firstPageResult}</b>`)
|
|
43
|
-
.replace('{lastPageResult}', `<b>${this.lastPageResult}</b>`)
|
|
44
|
-
.replace('{total}', `<b>${this.total}</b>`);
|
|
45
|
-
}
|
|
46
|
-
get totalPages() {
|
|
47
|
-
if (this.total < 1 || this.perPage < 1) {
|
|
48
|
-
return 0;
|
|
49
|
-
}
|
|
50
|
-
if (this.total < this.perPage) {
|
|
51
|
-
return 1;
|
|
52
|
-
}
|
|
53
|
-
return Math.ceil(this.total / this.perPage);
|
|
54
|
-
}
|
|
55
|
-
get firstPageResult() {
|
|
56
|
-
const page = this._getPageClamped();
|
|
57
|
-
if (this.total < 1 || page < 1 || this.perPage < 1) {
|
|
58
|
-
return 0;
|
|
59
|
-
}
|
|
60
|
-
if (page === 1) {
|
|
61
|
-
return 1;
|
|
62
|
-
}
|
|
63
|
-
if (page > Math.ceil(this.total / this.perPage)) {
|
|
64
|
-
return this.total;
|
|
65
|
-
}
|
|
66
|
-
return (page - 1) * this.perPage + 1;
|
|
67
|
-
}
|
|
68
|
-
get lastPageResult() {
|
|
69
|
-
const page = this._getPageClamped();
|
|
70
|
-
if (this.total <= 0 || page < 1 || this.perPage < 1) {
|
|
71
|
-
return 0;
|
|
72
|
-
}
|
|
73
|
-
if (page === 1) {
|
|
74
|
-
if (this.total < this.perPage) {
|
|
75
|
-
return this.total;
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
return this.perPage;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (this.total < this.perPage * page) {
|
|
82
|
-
return this.total;
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
return this.perPage * page;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
_getPageClamped(page) {
|
|
89
|
-
page = Number(page || this.page || 0);
|
|
90
|
-
if (isNaN(page) || page < 1) {
|
|
91
|
-
return 1;
|
|
92
|
-
}
|
|
93
|
-
if (page > this.totalPages) {
|
|
94
|
-
return this.totalPages;
|
|
95
|
-
}
|
|
96
|
-
return page;
|
|
97
|
-
}
|
|
98
|
-
goToPreviousPage() {
|
|
99
|
-
const page = this._getPageClamped();
|
|
100
|
-
if (page <= 1) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
const previousPage = page - 1;
|
|
104
|
-
this.page = previousPage;
|
|
105
|
-
this.goToPage.emit(previousPage);
|
|
106
|
-
}
|
|
107
|
-
goToNextPage() {
|
|
108
|
-
const page = this._getPageClamped();
|
|
109
|
-
if (page >= this.totalPages) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
const nextPage = page + 1;
|
|
113
|
-
this.page = nextPage;
|
|
114
|
-
this.goToPage.emit(nextPage);
|
|
115
|
-
}
|
|
116
|
-
goToExactPageFromEvent({ target }) {
|
|
117
|
-
this.goToExactPage(target?.value);
|
|
118
|
-
}
|
|
119
|
-
goToExactPage(page) {
|
|
120
|
-
this.page = this._getPageClamped(page);
|
|
121
|
-
this.goToPage.emit(this.page);
|
|
122
|
-
}
|
|
123
|
-
preventDefaultAndBlur(event) {
|
|
124
|
-
// prevents PRM form submit
|
|
125
|
-
event.preventDefault();
|
|
126
|
-
event.target.blur();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
130
|
-
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: PaginationComponent, selector: "impdc-pagination, div[impdc-pagination]", inputs: { page: "page", perPage: "perPage", total: "total", summary: "summary" }, outputs: { goToPage: "goToPage" }, ngImport: i0, template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\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\">\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 class=\"total-pages\"> / {{ 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", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions ::ng-deep .first{margin-right:-1.2rem}.pagination-actions ::ng-deep .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "button[impdcButton]", inputs: ["type", "theme", "text", "disabled", "titleText", "ariaLabel"] }, { kind: "component", type: i2.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }] });
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
132
|
-
type: Component,
|
|
133
|
-
args: [{ selector: 'impdc-pagination, div[impdc-pagination]', template: "<div class=\"pagination-container\">\n <div class=\"mobile-pagination\">\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\">\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 class=\"total-pages\"> / {{ 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", styles: [".pagination-container{background-color:var(--impd-color-white);padding:var(--impd-size-3) var(--impd-size-6);gap:1rem;color:var(--impd-color-gray-700, #374151)}@media (min-width: 640px){.pagination-container{padding-left:var(--impd-size-6);padding-right:var(--impd-size-6)}}.mobile-pagination{display:flex;gap:2rem;justify-content:space-between;align-items:center}@media (min-width: 640px){.mobile-pagination{display:none}}.desktop-pagination{display:none}@media (min-width: 640px){.desktop-pagination{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between;gap:2rem;flex-flow:wrap}}.summary{font-size:var(--impd-font-size-sm);line-height:var(--impd-size-5);font-weight:400;color:var(--impd-color-gray-700)}.pagination-actions{display:flex;flex-direction:row;gap:.4rem;flex-flow:wrap}.pagination-actions ::ng-deep .first{margin-right:-1.2rem}.pagination-actions ::ng-deep .last{margin-left:-1.2rem}.page-change{display:flex;flex-direction:row;align-items:center;gap:.4rem;font-size:var(--impd-size-3_5, 1.4rem)}.page-change .form-control{min-width:4.275rem;max-width:6.3rem;text-align:center}.page-change .total-pages{padding:0 1.2rem}.pagination-first-last-btns{padding-left:1.325rem;padding-right:1.325rem}\n"] }]
|
|
134
|
-
}], propDecorators: { page: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], perPage: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], total: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], summary: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], goToPage: [{
|
|
143
|
-
type: Output
|
|
144
|
-
}] } });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBRTNDOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBTVUsYUFBUSxHQUNkLGtFQUFrRSxDQUFDO1FBRXJFOztXQUVHO1FBRUksU0FBSSxHQUFHLENBQUMsQ0FBQztRQUVoQjs7V0FFRztRQUVJLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFcEI7O1dBRUc7UUFFSSxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBa0JqQjs7V0FFRztRQUN1QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQXdHakU7SUEzSEM7OztPQUdHO0lBQ0gsSUFDVyxPQUFPLENBQUMsT0FBZTtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDM0IsT0FBTyxDQUFDLG1CQUFtQixFQUFFLE1BQU0sSUFBSSxDQUFDLGVBQWUsTUFBTSxDQUFDO2FBQzlELE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLElBQUksQ0FBQyxjQUFjLE1BQU0sQ0FBQzthQUM1RCxPQUFP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TSxZQUFZO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzNCLE9BQU87U0FDUjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFFckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxFQUFjO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUUsTUFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQXFCO1FBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQVk7UUFDdkMsMkJBQTJCO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixLQUFLLENBQUMsTUFBMkIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QyxDQUFDOztpSEFoSlUsbUJBQW1CO3FHQUFuQixtQkFBbUIsb01DYmhDLGd1RUEwRUE7NEZEN0RhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSx5Q0FBeUM7OEJBWTVDLElBQUk7c0JBRFYsS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQVFLLE9BQU87c0JBRGpCLEtBQUs7Z0JBZW9CLFFBQVE7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2FuaXRpemUgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMnO1xuXG4vKipcbiAqIFRoZSBgUGFnaW5hdGlvbkNvbXBvbmVudGAgKGA8aW1wZGMtcGFnaW5hdGlvbmAgb3IgYDxkaXYgaW1wZGMtcGFnaW5hdGlvbmApIGlzIGEgY29udHJvbCBmb3IgcGFnZWQgY29udGVudCBzdWNoIGFzIHRhYmxlcyBvciBsaXN0cy5cbiAqIFRvIHVzZSwgaW1wb3J0IGBQYWdpbmF0aW9uTW9kdWxlYCBvciBhbm90aGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgYW5kIGV4cG9ydHMgdGhhdCBtb2R1bGUgZnJvbSBgQGltcGFydG5lci9kZXNpZ24tY29tcG9uZW50c2AuXG4gKiBgTW9kYWxNb2R1bGVgIGltcG9ydHMgYW5kIGV4cG9ydHMgSW1wZGNGb3Jtc01vZHVsZSBhbmQgW0J1dHRvbk1vZHVsZV0oLi8/cGF0aD0vZG9jcy9kZXNpZ24tY29tcG9uZW50cy1idXR0b24pLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbXBkYy1wYWdpbmF0aW9uLCBkaXZbaW1wZGMtcGFnaW5hdGlvbl0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2luYXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfc3VtbWFyeSA9XG4gICAgJ1Nob3dpbmcge2ZpcnN0UGFnZVJlc3VsdH0gdG8ge2xhc3RQYWdlUmVzdWx0fSBvZiB7dG90YWx9IHJlc3VsdHMnO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBwYWdlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2UgPSAwO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHNob3duIHBlciBwYWdlLiBJdGVtcyBhcmUgY29tbW9ubHkgZGlzcGxheWVkIGFzIHJvd3MgaW4gYSB0YWJsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwZXJQYWdlID0gMTA7XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdG90YWwgPSAwO1xuXG4gIC8qKlxuICAgKiBBIGZvcm1hdHRhYmxlIHRleHQgc3VtbWFyeSBvZiBwYWdpbmF0aW9uIGRhdGEuIGB7Zmlyc3RQYWdlUmVzdWx0fWAgVGhlIGZpcnN0IGl0ZW0gd2l0aGluIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAqIGB7bGFzdFBhZ2VSZXN1bHR9YCBUaGUgbGFzdCBpdGVtIHdpdGhpbiB0aGUgY3VycmVudCBwYWdlLiBge3RvdGFsfWAgVGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3VtbWFyeShzdW1tYXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zdW1tYXJ5ID0gc3VtbWFyeTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VtbWFyeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBzYW5pdGl6ZSh0aGlzLl9zdW1tYXJ5KVxuICAgICAgLnJlcGxhY2UoJ3tmaXJzdFBhZ2VSZXN1bHR9JywgYDxiPiR7dGhpcy5maXJzdFBhZ2VSZXN1bHR9PC9iPmApXG4gICAgICAucmVwbGFjZSgne2xhc3RQYWdlUmVzdWx0fScsIGA8Yj4ke3RoaXMubGFzdFBhZ2VSZXN1bHR9PC9iPmApXG4gICAgICAucmVwbGFjZSgne3RvdGFsfScsIGA8Yj4ke3RoaXMudG90YWx9PC9iPmApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcGFnZSBudW1iZXIgaXMgY2hhbmdlZCwgc3BlY2lmeWluZyB0aGUgdGFyZ2V0IHBhZ2UgbnVtYmVyLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBnb1RvUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHB1YmxpYyBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnRvdGFsIDwgMSB8fCB0aGlzLnBlclBhZ2UgPCAxKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b3RhbCA8IHRoaXMucGVyUGFnZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLnRvdGFsIC8gdGhpcy5wZXJQYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlyc3RQYWdlUmVzdWx0KCk6IG51bWJlciB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuX2dldFBhZ2VDbGFtcGVkKCk7XG4gICAgaWYgKHRoaXMudG90YWwgPCAxIHx8IHBhZ2UgPCAxIHx8IHRoaXMucGVyUGFnZSA8IDEpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmIChwYWdlID09PSAxKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBpZiAocGFnZSA+IE1hdGguY2VpbCh0aGlzLnRvdGFsIC8gdGhpcy5wZXJQYWdlKSkge1xuICAgICAgcmV0dXJuIHRoaXMudG90YWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChwYWdlIC0gMSkgKiB0aGlzLnBlclBhZ2UgKyAxO1xuICB9XG5cbiAgcHVibGljIGdldCBsYXN0UGFnZVJlc3VsdCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLl9nZXRQYWdlQ2xhbXBlZCgpO1xuICAgIGlmICh0aGlzLnRvdGFsIDw9IDAgfHwgcGFnZSA8IDEgfHwgdGhpcy5wZXJQYWdlIDwgMSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHBhZ2UgPT09IDEpIHtcbiAgICAgIGlmICh0aGlzLnRvdGFsIDwgdGhpcy5wZXJQYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvdGFsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVyUGFnZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50b3RhbCA8IHRoaXMucGVyUGFnZSAqIHBhZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvdGFsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wZXJQYWdlICogcGFnZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRQYWdlQ2xhbXBlZChwYWdlPzogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICBwYWdlID0gTnVtYmVyKHBhZ2UgfHwgdGhpcy5wYWdlIHx8IDApO1xuICAgIGlmIChpc05hTihwYWdlKSB8fCBwYWdlIDwgMSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKHBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvdGFsUGFnZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cblxuICBwdWJsaWMgZ29Ub1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlID0gdGhpcy5fZ2V0UGFnZUNsYW1wZWQoKTtcbiAgICBpZiAocGFnZSA8PSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNQYWdlID0gcGFnZSAtIDE7XG4gICAgdGhpcy5wYWdlID0gcHJldmlvdXNQYWdlO1xuXG4gICAgdGhpcy5nb1RvUGFnZS5lbWl0KHByZXZpb3VzUGFnZSk7XG4gIH1cblxuICBwdWJsaWMgZ29Ub05leHRQYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLl9nZXRQYWdlQ2xhbXBlZCgpO1xuICAgIGlmIChwYWdlID49IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRQYWdlID0gcGFnZSArIDE7XG4gICAgdGhpcy5wYWdlID0gbmV4dFBhZ2U7XG5cbiAgICB0aGlzLmdvVG9QYWdlLmVtaXQobmV4dFBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGdvVG9FeGFjdFBhZ2VGcm9tRXZlbnQoeyB0YXJnZXQgfTogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZ29Ub0V4YWN0UGFnZSgodGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ29Ub0V4YWN0UGFnZShwYWdlOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2UgPSB0aGlzLl9nZXRQYWdlQ2xhbXBlZChwYWdlKTtcblxuICAgIHRoaXMuZ29Ub1BhZ2UuZW1pdCh0aGlzLnBhZ2UpO1xuICB9XG5cbiAgcHVibGljIHByZXZlbnREZWZhdWx0QW5kQmx1cihldmVudDogRXZlbnQpIHtcbiAgICAvLyBwcmV2ZW50cyBQUk0gZm9ybSBzdWJtaXRcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuYmx1cigpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm1vYmlsZS1wYWdpbmF0aW9uXCI+XG4gICAgPGJ1dHRvblxuICAgICAgaW1wZGNCdXR0b25cbiAgICAgIHRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJwYWdlIDw9IDFcIlxuICAgICAgKGNsaWNrKT1cImdvVG9QcmV2aW91c1BhZ2UoKVwiPlxuICAgICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGltcGRjQnV0dG9uXG4gICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGFnZSA9PT0gdG90YWxQYWdlc1wiXG4gICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIj5cbiAgICAgIDxpIGltcGRjLWljb24gbmFtZT1cImNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXBhZ2luYXRpb25cIj5cbiAgICA8ZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdW1tYXJ5XCIgW2lubmVySFRNTF09XCJzdW1tYXJ5XCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWFjdGlvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgaW1wZGNCdXR0b25cbiAgICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiRmlyc3QgUGFnZVwiXG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1maXJzdC1sYXN0LWJ0bnNcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub0V4YWN0UGFnZSgxKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJwYWdlIDw9IDFcIj5cbiAgICAgICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1sZWZ0IGZpcnN0XCI+PC9pPlxuICAgICAgICA8aSBpbXBkYy1pY29uIG5hbWU9XCJjaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgIDwhLS0gMSAtLT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBpbXBkY0J1dHRvblxuICAgICAgICB0aGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgIGNsYXNzPVwicHJldmlvdXNcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiUHJldmlvdXNcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPD0gMVwiPlxuICAgICAgICA8aSBpbXBkYy1pY29uIG5hbWU9XCJjaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWNoYW5nZVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpbXBkY0lucHV0XG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWdlXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCI0XCJcbiAgICAgICAgICAoYmx1cik9XCJnb1RvRXhhY3RQYWdlRnJvbUV2ZW50KCRldmVudClcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInByZXZlbnREZWZhdWx0QW5kQmx1cigkZXZlbnQpXCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1wYWdlc1wiPiAvIHt7IHRvdGFsUGFnZXMgfX0gPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGltcGRjQnV0dG9uXG4gICAgICAgIHRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIk5leHRcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA+PSB0b3RhbFBhZ2VzXCI+XG4gICAgICAgIDxpIGltcGRjLWljb24gbmFtZT1cImNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgaW1wZGNCdXR0b25cbiAgICAgICAgdGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICBjbGFzcz1cInBhZ2luYXRpb24tZmlyc3QtbGFzdC1idG5zXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkxhc3QgUGFnZVwiXG4gICAgICAgIChjbGljayk9XCJnb1RvRXhhY3RQYWdlKHRvdGFsUGFnZXMpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPT09IHRvdGFsUGFnZXNcIj5cbiAgICAgICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICAgICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1yaWdodCBsYXN0XCI+PC9pPlxuICAgICAgICA8IS0tIHt7IHRvdGFsUGFnZXMgfX0gLS0+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { ButtonModule } from '../button';
|
|
5
|
-
import { ImpdcFormsModule } from '../form-field';
|
|
6
|
-
import { IconModule } from '../icon';
|
|
7
|
-
import { PaginationComponent } from './pagination.component';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export class PaginationModule {
|
|
10
|
-
constructor() { }
|
|
11
|
-
}
|
|
12
|
-
PaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
-
PaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, declarations: [PaginationComponent], imports: [CommonModule,
|
|
14
|
-
ButtonModule,
|
|
15
|
-
FormsModule,
|
|
16
|
-
ImpdcFormsModule,
|
|
17
|
-
IconModule], exports: [ButtonModule, ImpdcFormsModule, IconModule, PaginationComponent] });
|
|
18
|
-
PaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, imports: [CommonModule,
|
|
19
|
-
ButtonModule,
|
|
20
|
-
FormsModule,
|
|
21
|
-
ImpdcFormsModule,
|
|
22
|
-
IconModule, ButtonModule, ImpdcFormsModule, IconModule] });
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PaginationModule, decorators: [{
|
|
24
|
-
type: NgModule,
|
|
25
|
-
args: [{
|
|
26
|
-
imports: [
|
|
27
|
-
CommonModule,
|
|
28
|
-
ButtonModule,
|
|
29
|
-
FormsModule,
|
|
30
|
-
ImpdcFormsModule,
|
|
31
|
-
IconModule
|
|
32
|
-
],
|
|
33
|
-
declarations: [PaginationComponent],
|
|
34
|
-
exports: [ButtonModule, ImpdcFormsModule, IconModule, PaginationComponent]
|
|
35
|
-
}]
|
|
36
|
-
}], ctorParameters: function () { return []; } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBYTdELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsZ0JBQWUsQ0FBQzs7OEdBREwsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBSFosbUJBQW1CLGFBTmhDLFlBQVk7UUFDWixZQUFZO1FBQ1osV0FBVztRQUNYLGdCQUFnQjtRQUNoQixVQUFVLGFBR0YsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxtQkFBbUI7K0dBRTlELGdCQUFnQixZQVR6QixZQUFZO1FBQ1osWUFBWTtRQUNaLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIsVUFBVSxFQUdGLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxVQUFVOzRGQUV6QyxnQkFBZ0I7a0JBWDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsVUFBVTtxQkFDWDtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztpQkFDM0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IEltcGRjRm9ybXNNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3BhZ2luYXRpb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW1wZGNGb3Jtc01vZHVsZSxcbiAgICBJY29uTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1BhZ2luYXRpb25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbQnV0dG9uTW9kdWxlLCBJbXBkY0Zvcm1zTW9kdWxlLCBJY29uTW9kdWxlLCBQYWdpbmF0aW9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "../size-detection/directive/size-detector.directive";
|
|
5
|
-
/**
|
|
6
|
-
* The `ScrollableComponent` (`<impdc-scrollable` or `<div impdc-scrollable`) is a container that hides items that wouldn't fit
|
|
7
|
-
* with arrows on the left and right to slide between them.
|
|
8
|
-
* To use, import `ScrollableModule` or another module that imports and exports that module from `@impartner/design-components`.
|
|
9
|
-
* `ScrollableModule` also imports and exports [BrandingModule](./?path=/docs/design-components-directives-impdcbranded).
|
|
10
|
-
*/
|
|
11
|
-
export class ScrollableComponent {
|
|
12
|
-
constructor(_cd, _hostElementRef) {
|
|
13
|
-
this._cd = _cd;
|
|
14
|
-
this._hostElementRef = _hostElementRef;
|
|
15
|
-
this.GET_ANCESTOR_BG_SEARCH_DEPTH = 64;
|
|
16
|
-
/**
|
|
17
|
-
* The base amount to scroll.
|
|
18
|
-
*/
|
|
19
|
-
this.scrollUnit = 20;
|
|
20
|
-
/**
|
|
21
|
-
* Used in combination with `scrollUnit` to determine how far the Scrollable scrolls when directional arrows are clicked.
|
|
22
|
-
*/
|
|
23
|
-
this.clickScrollMultiplier = 5;
|
|
24
|
-
this._scrollableBgColor = null;
|
|
25
|
-
this._width = 0;
|
|
26
|
-
}
|
|
27
|
-
get canScrollLeft() {
|
|
28
|
-
if (!this._contentElement) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
return Math.floor(this._contentElement.scrollLeft) > 0;
|
|
32
|
-
}
|
|
33
|
-
get canScrollRight() {
|
|
34
|
-
if (!this._contentElement) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
return (Math.ceil(this._contentElement.scrollLeft + this._width) <
|
|
38
|
-
this._contentElement.scrollWidth);
|
|
39
|
-
}
|
|
40
|
-
get _containerElement() {
|
|
41
|
-
if (!this.containerRef) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
return this.containerRef.nativeElement;
|
|
45
|
-
}
|
|
46
|
-
get _contentElement() {
|
|
47
|
-
if (!this.contentRef) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
return this.contentRef.nativeElement;
|
|
51
|
-
}
|
|
52
|
-
ngOnChanges(changes) {
|
|
53
|
-
if (changes['scrollUnit'] || changes['clickScrollMultiplier']) {
|
|
54
|
-
if (this._containerElement) {
|
|
55
|
-
this._width = this._containerElement?.clientWidth;
|
|
56
|
-
this._cd.detectChanges();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
ngAfterViewInit() {
|
|
61
|
-
this._width = this.contentRef?.nativeElement.width;
|
|
62
|
-
this._cd.detectChanges();
|
|
63
|
-
Promise.resolve().then(() => this._getBackgroundColorForButtons());
|
|
64
|
-
}
|
|
65
|
-
async scroll(direction) {
|
|
66
|
-
if (!this._contentElement) {
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
let pixels = direction * this.scrollUnit * this.clickScrollMultiplier;
|
|
70
|
-
let position = 0;
|
|
71
|
-
if (!pixels) {
|
|
72
|
-
if (direction === 1) {
|
|
73
|
-
position = this._contentElement.scrollWidth;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
position = this._contentElement.scrollLeft + pixels;
|
|
78
|
-
}
|
|
79
|
-
await this._scrollToPosition(this._contentElement, position);
|
|
80
|
-
this._cd.detectChanges();
|
|
81
|
-
}
|
|
82
|
-
widthChanged(elementSize) {
|
|
83
|
-
if (!elementSize || !elementSize.width) {
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
this._width = elementSize.width;
|
|
87
|
-
this._cd.detectChanges();
|
|
88
|
-
}
|
|
89
|
-
async _scrollToPosition(container, position) {
|
|
90
|
-
position = Math.round(position);
|
|
91
|
-
if (container.scrollLeft === position) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
let resolveFn;
|
|
95
|
-
let scrollListener;
|
|
96
|
-
let timeoutId;
|
|
97
|
-
const promise = new Promise(resolve => {
|
|
98
|
-
resolveFn = resolve;
|
|
99
|
-
});
|
|
100
|
-
const finished = () => {
|
|
101
|
-
container.removeEventListener('scroll', scrollListener);
|
|
102
|
-
resolveFn(null);
|
|
103
|
-
};
|
|
104
|
-
scrollListener = () => {
|
|
105
|
-
clearTimeout(timeoutId);
|
|
106
|
-
// scroll is finished when either the position has been reached, or 100ms have elapsed since the last scroll event
|
|
107
|
-
if (container.scrollLeft === position) {
|
|
108
|
-
finished();
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
timeoutId = setTimeout(finished, 100);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
container.addEventListener('scroll', scrollListener);
|
|
115
|
-
container.scrollTo({
|
|
116
|
-
left: position,
|
|
117
|
-
behavior: 'smooth'
|
|
118
|
-
});
|
|
119
|
-
return promise;
|
|
120
|
-
}
|
|
121
|
-
_getBackgroundColorForButtons() {
|
|
122
|
-
let backgroundColor = this._getBackGroundColor(this._hostElementRef.nativeElement);
|
|
123
|
-
if (!backgroundColor) {
|
|
124
|
-
backgroundColor = this._getAncestorBackgroundColor();
|
|
125
|
-
}
|
|
126
|
-
if (this._scrollableBgColor !== backgroundColor) {
|
|
127
|
-
this._scrollableBgColor = backgroundColor;
|
|
128
|
-
this._cd.detectChanges();
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
_getAncestorBackgroundColor() {
|
|
132
|
-
let result = {
|
|
133
|
-
parent: this._hostElementRef.nativeElement.parentElement,
|
|
134
|
-
backgroundColor: null
|
|
135
|
-
};
|
|
136
|
-
let count = this.GET_ANCESTOR_BG_SEARCH_DEPTH;
|
|
137
|
-
function getParentBackgroundColor(currentContext, getBackgroundColor) {
|
|
138
|
-
const result = { parent: null, backgroundColor: null };
|
|
139
|
-
if (currentContext && currentContext.parent) {
|
|
140
|
-
result.backgroundColor = getBackgroundColor(currentContext.parent);
|
|
141
|
-
if (!result.backgroundColor) {
|
|
142
|
-
result.parent = currentContext.parent.parentElement;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return result;
|
|
146
|
-
}
|
|
147
|
-
while (count > 0) {
|
|
148
|
-
if (result.backgroundColor) {
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
result = getParentBackgroundColor(result, this._getBackGroundColor);
|
|
152
|
-
if (!result.parent) {
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
count = count - 1;
|
|
156
|
-
}
|
|
157
|
-
return result.backgroundColor;
|
|
158
|
-
}
|
|
159
|
-
_getBackGroundColor(element) {
|
|
160
|
-
const computedBackgroundColor = getComputedStyle(element)['backgroundColor'];
|
|
161
|
-
if (computedBackgroundColor !== 'rgba(0, 0, 0, 0)') {
|
|
162
|
-
return computedBackgroundColor;
|
|
163
|
-
}
|
|
164
|
-
return element.style.backgroundColor;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
ScrollableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScrollableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
168
|
-
ScrollableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ScrollableComponent, selector: "impdc-scrollable, div[impdc-scrollable]", inputs: { scrollUnit: "scrollUnit", clickScrollMultiplier: "clickScrollMultiplier" }, host: { properties: { "style.--impdc-scrollable-bg": "this._scrollableBgColor" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }, { propertyName: "contentRef", first: true, predicate: ["content"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"impdc-scrollable\"\n #container\n impdcSizeDetector\n (resized)=\"widthChanged($event)\">\n <a class=\"impdc-scrollable-left\" (click)=\"scroll(-1)\" *ngIf=\"canScrollLeft\">\n <i impdc-icon name=\"chevron-left\" class=\"default\"></i>\n </a>\n <div #content class=\"content-container\">\n <ng-content></ng-content>\n </div>\n <a class=\"impdc-scrollable-right\" (click)=\"scroll(1)\" *ngIf=\"canScrollRight\">\n <i impdc-icon name=\"chevron-right\" class=\"default\"></i>\n </a>\n</div>\n", styles: [".impdc-scrollable{position:relative;overflow-y:hidden}.impdc-scrollable .impdc-scrollable-base,.impdc-scrollable .impdc-scrollable-right,.impdc-scrollable .impdc-scrollable-left{position:absolute;top:0px;bottom:0px;display:flex;align-items:center;text-align:center;width:6.9rem;z-index:1;color:var(--impd-color-motion-blue-600, #01606d)}.impdc-scrollable .impdc-scrollable-left{justify-content:left;padding-left:1.5rem;background-image:linear-gradient(to right,var(--impdc-scrollable-bg, #fff) 50%,rgba(255,255,255,.0001) 86.46%)}.impdc-scrollable .impdc-scrollable-right{right:0;padding-right:1.5rem;justify-content:right;background-image:linear-gradient(to left,var(--impdc-scrollable-bg, #fff) 50%,rgba(255,255,255,.0001) 86.46%)}.impdc-scrollable .content-container{overflow-x:hidden;-webkit-overflow-scrolling:touch;white-space:nowrap}:host(.branded) .impdc-scrollable .impdc-scrollable-left,:host(.branded) .impdc-scrollable .impdc-scrollable-right{color:var(--px-primary-color, var(--impd-color-motion-blue-600, #01606d))}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.SizeDetectorDirective, selector: "[impdcSizeDetector]", outputs: ["resized"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
169
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ScrollableComponent, decorators: [{
|
|
170
|
-
type: Component,
|
|
171
|
-
args: [{ selector: 'impdc-scrollable, div[impdc-scrollable]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"impdc-scrollable\"\n #container\n impdcSizeDetector\n (resized)=\"widthChanged($event)\">\n <a class=\"impdc-scrollable-left\" (click)=\"scroll(-1)\" *ngIf=\"canScrollLeft\">\n <i impdc-icon name=\"chevron-left\" class=\"default\"></i>\n </a>\n <div #content class=\"content-container\">\n <ng-content></ng-content>\n </div>\n <a class=\"impdc-scrollable-right\" (click)=\"scroll(1)\" *ngIf=\"canScrollRight\">\n <i impdc-icon name=\"chevron-right\" class=\"default\"></i>\n </a>\n</div>\n", styles: [".impdc-scrollable{position:relative;overflow-y:hidden}.impdc-scrollable .impdc-scrollable-base,.impdc-scrollable .impdc-scrollable-right,.impdc-scrollable .impdc-scrollable-left{position:absolute;top:0px;bottom:0px;display:flex;align-items:center;text-align:center;width:6.9rem;z-index:1;color:var(--impd-color-motion-blue-600, #01606d)}.impdc-scrollable .impdc-scrollable-left{justify-content:left;padding-left:1.5rem;background-image:linear-gradient(to right,var(--impdc-scrollable-bg, #fff) 50%,rgba(255,255,255,.0001) 86.46%)}.impdc-scrollable .impdc-scrollable-right{right:0;padding-right:1.5rem;justify-content:right;background-image:linear-gradient(to left,var(--impdc-scrollable-bg, #fff) 50%,rgba(255,255,255,.0001) 86.46%)}.impdc-scrollable .content-container{overflow-x:hidden;-webkit-overflow-scrolling:touch;white-space:nowrap}:host(.branded) .impdc-scrollable .impdc-scrollable-left,:host(.branded) .impdc-scrollable .impdc-scrollable-right{color:var(--px-primary-color, var(--impd-color-motion-blue-600, #01606d))}\n"] }]
|
|
172
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { scrollUnit: [{
|
|
173
|
-
type: Input
|
|
174
|
-
}], clickScrollMultiplier: [{
|
|
175
|
-
type: Input
|
|
176
|
-
}], _scrollableBgColor: [{
|
|
177
|
-
type: HostBinding,
|
|
178
|
-
args: ['style.--impdc-scrollable-bg']
|
|
179
|
-
}], containerRef: [{
|
|
180
|
-
type: ViewChild,
|
|
181
|
-
args: ['container', { static: false }]
|
|
182
|
-
}], contentRef: [{
|
|
183
|
-
type: ViewChild,
|
|
184
|
-
args: ['content', { static: false }]
|
|
185
|
-
}] } });
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3Njcm9sbGFibGUvc2Nyb2xsYWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsS0FBSyxFQUdMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQzs7OztBQUd2Qjs7Ozs7R0FLRztBQU9ILE1BQU0sT0FBTyxtQkFBbUI7SUE0RDlCLFlBQ1UsR0FBc0IsRUFDYixlQUEyQjtRQURwQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNiLG9CQUFlLEdBQWYsZUFBZSxDQUFZO1FBN0Q3QixpQ0FBNEIsR0FBRyxFQUFFLENBQUM7UUFDbkQ7O1dBRUc7UUFFSSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXZCOztXQUVHO1FBRUksMEJBQXFCLEdBQUcsQ0FBQyxDQUFDO1FBR3pCLHVCQUFrQixHQUFrQixJQUFJLENBQUM7UUFxQnpDLFdBQU0sR0FBRyxDQUFDLENBQUM7SUEyQmhCLENBQUM7SUE5Q0osSUFBVyxhQUFhO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNkO1FB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QUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ3ZDLENBQUM7O2lIQTNOVSxtQkFBbUI7cUdBQW5CLG1CQUFtQixpZEMxQmhDLDZnQkFlQTs0RkRXYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UseUNBQXlDLG1CQUdsQyx1QkFBdUIsQ0FBQyxNQUFNO2lJQVF4QyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFJRSxrQkFBa0I7c0JBRHpCLFdBQVc7dUJBQUMsNkJBQTZCO2dCQXlCbkMsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVlsQyxVQUFVO3NCQURoQixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElFbGVtZW50U2l6ZSB9IGZyb20gJy4uL3NpemUtZGV0ZWN0aW9uJztcblxuLyoqXG4gKiBUaGUgYFNjcm9sbGFibGVDb21wb25lbnRgIChgPGltcGRjLXNjcm9sbGFibGVgIG9yIGA8ZGl2IGltcGRjLXNjcm9sbGFibGVgKSBpcyBhIGNvbnRhaW5lciB0aGF0IGhpZGVzIGl0ZW1zIHRoYXQgd291bGRuJ3QgZml0XG4gKiB3aXRoIGFycm93cyBvbiB0aGUgbGVmdCBhbmQgcmlnaHQgdG8gc2xpZGUgYmV0d2VlbiB0aGVtLlxuICogVG8gdXNlLCBpbXBvcnQgYFNjcm9sbGFibGVNb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqIGBTY3JvbGxhYmxlTW9kdWxlYCBhbHNvIGltcG9ydHMgYW5kIGV4cG9ydHMgW0JyYW5kaW5nTW9kdWxlXSguLz9wYXRoPS9kb2NzL2Rlc2lnbi1jb21wb25lbnRzLWRpcmVjdGl2ZXMtaW1wZGNicmFuZGVkKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtc2Nyb2xsYWJsZSwgZGl2W2ltcGRjLXNjcm9sbGFibGVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Njcm9sbGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY3JvbGxhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IEdFVF9BTkNFU1RPUl9CR19TRUFSQ0hfREVQVEggPSA2NDtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGFtb3VudCB0byBzY3JvbGwuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2Nyb2xsVW5pdCA9IDIwO1xuXG4gIC8qKlxuICAgKiBVc2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHNjcm9sbFVuaXRgIHRvIGRldGVybWluZSBob3cgZmFyIHRoZSBTY3JvbGxhYmxlIHNjcm9sbHMgd2hlbiBkaXJlY3Rpb25hbCBhcnJvd3MgYXJlIGNsaWNrZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2xpY2tTY3JvbGxNdWx0aXBsaWVyID0gNTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0taW1wZGMtc2Nyb2xsYWJsZS1iZycpXG4gIHByaXZhdGUgX3Njcm9sbGFibGVCZ0NvbG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZ2V0IGNhblNjcm9sbExlZnQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLl9jb250ZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMuX2NvbnRlbnRFbGVtZW50LnNjcm9sbExlZnQpID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2FuU2Nyb2xsUmlnaHQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLl9jb250ZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICBNYXRoLmNlaWwodGhpcy5fY29udGVudEVsZW1lbnQuc2Nyb2xsTGVmdCArIHRoaXMuX3dpZHRoKSA8XG4gICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5zY3JvbGxXaWR0aFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF93aWR0aCA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBjb250YWluZXJSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBnZXQgX2NvbnRhaW5lckVsZW1lbnQoKTogSFRNTERpdkVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyUmVmKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGNvbnRlbnRSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBnZXQgX2NvbnRlbnRFbGVtZW50KCk6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRSZWYpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbnRlbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0RWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snc2Nyb2xsVW5pdCddIHx8IGNoYW5nZXNbJ2NsaWNrU2Nyb2xsTXVsdGlwbGllciddKSB7XG4gICAgICBpZiAodGhpcy5fY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgICB0aGlzLl93aWR0aCA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQ/LmNsaWVudFdpZHRoO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl93aWR0aCA9IHRoaXMuY29udGVudFJlZj8ubmF0aXZlRWxlbWVudC53aWR0aDtcbiAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuX2dldEJhY2tncm91bmRDb2xvckZvckJ1dHRvbnMoKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2Nyb2xsKGRpcmVjdGlvbjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9jb250ZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwaXhlbHMgPSBkaXJlY3Rpb24gKiB0aGlzLnNjcm9sbFVuaXQgKiB0aGlzLmNsaWNrU2Nyb2xsTXVsdGlwbGllcjtcbiAgICBsZXQgcG9zaXRpb24gPSAwO1xuXG4gICAgaWYgKCFwaXhlbHMpIHtcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpIHtcbiAgICAgICAgcG9zaXRpb24gPSB0aGlzLl9jb250ZW50RWxlbWVudC5zY3JvbGxXaWR0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLl9jb250ZW50RWxlbWVudC5zY3JvbGxMZWZ0ICsgcGl4ZWxzO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuX3Njcm9sbFRvUG9zaXRpb24odGhpcy5fY29udGVudEVsZW1lbnQsIHBvc2l0aW9uKTtcblxuICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyB3aWR0aENoYW5nZWQoZWxlbWVudFNpemU6IElFbGVtZW50U2l6ZSk6IHZvaWQge1xuICAgIGlmICghZWxlbWVudFNpemUgfHwgIWVsZW1lbnRTaXplLndpZHRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3dpZHRoID0gZWxlbWVudFNpemUud2lkdGg7XG4gICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2Nyb2xsVG9Qb3NpdGlvbihjb250YWluZXI6IEhUTUxEaXZFbGVtZW50LCBwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgcG9zaXRpb24gPSBNYXRoLnJvdW5kKHBvc2l0aW9uKTtcblxuICAgIGlmIChjb250YWluZXIuc2Nyb2xsTGVmdCA9PT0gcG9zaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVzb2x2ZUZuOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gICAgbGV0IHNjcm9sbExpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICAgIGxldCB0aW1lb3V0SWQ6IGFueTtcblxuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIHJlc29sdmVGbiA9IHJlc29sdmU7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9ICgpID0+IHtcbiAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxMaXN0ZW5lcik7XG4gICAgICByZXNvbHZlRm4obnVsbCk7XG4gICAgfTtcblxuICAgIHNjcm9sbExpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICAgIC8vIHNjcm9sbCBpcyBmaW5pc2hlZCB3aGVuIGVpdGhlciB0aGUgcG9zaXRpb24gaGFzIGJlZW4gcmVhY2hlZCwgb3IgMTAwbXMgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHNjcm9sbCBldmVudFxuICAgICAgaWYgKGNvbnRhaW5lci5zY3JvbGxMZWZ0ID09PSBwb3NpdGlvbikge1xuICAgICAgICBmaW5pc2hlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dChmaW5pc2hlZCwgMTAwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHNjcm9sbExpc3RlbmVyKTtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUbyh7XG4gICAgICBsZWZ0OiBwb3NpdGlvbixcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICBwcml2YXRlIF9nZXRCYWNrZ3JvdW5kQ29sb3JGb3JCdXR0b25zKCk6IHZvaWQge1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLl9nZXRCYWNrR3JvdW5kQ29sb3IoXG4gICAgICB0aGlzLl9ob3N0RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgKTtcblxuICAgIGlmICghYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLl9nZXRBbmNlc3RvckJhY2tncm91bmRDb2xvcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zY3JvbGxhYmxlQmdDb2xvciAhPT0gYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICB0aGlzLl9zY3JvbGxhYmxlQmdDb2xvciA9IGJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRBbmNlc3RvckJhY2tncm91bmRDb2xvcigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICB0eXBlIHBhcmVudEJnUmVzdWx0ID0ge1xuICAgICAgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IG51bGw7XG4gICAgfTtcblxuICAgIGxldCByZXN1bHQ6IHBhcmVudEJnUmVzdWx0ID0ge1xuICAgICAgcGFyZW50OiB0aGlzLl9ob3N0RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IG51bGxcbiAgICB9O1xuXG4gICAgbGV0IGNvdW50ID0gdGhpcy5HRVRfQU5DRVNUT1JfQkdfU0VBUkNIX0RFUFRIO1xuXG4gICAgZnVuY3Rpb24gZ2V0UGFyZW50QmFja2dyb3VuZENvbG9yKFxuICAgICAgY3VycmVudENvbnRleHQ6IHBhcmVudEJnUmVzdWx0LFxuICAgICAgZ2V0QmFja2dyb3VuZENvbG9yOiAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHN0cmluZyB8IG51bGxcbiAgICApOiBwYXJlbnRCZ1Jlc3VsdCB7XG4gICAgICBjb25zdCByZXN1bHQ6IHBhcmVudEJnUmVzdWx0ID0geyBwYXJlbnQ6IG51bGwsIGJhY2tncm91bmRDb2xvcjogbnVsbCB9O1xuICAgICAgaWYgKGN1cnJlbnRDb250ZXh0ICYmIGN1cnJlbnRDb250ZXh0LnBhcmVudCkge1xuICAgICAgICByZXN1bHQuYmFja2dyb3VuZENvbG9yID0gZ2V0QmFja2dyb3VuZENvbG9yKGN1cnJlbnRDb250ZXh0LnBhcmVudCk7XG5cbiAgICAgICAgaWYgKCFyZXN1bHQuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgICAgcmVzdWx0LnBhcmVudCA9IGN1cnJlbnRDb250ZXh0LnBhcmVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgd2hpbGUgKGNvdW50ID4gMCkge1xuICAgICAgaWYgKHJlc3VsdC5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBnZXRQYXJlbnRCYWNrZ3JvdW5kQ29sb3IocmVzdWx0LCB0aGlzLl9nZXRCYWNrR3JvdW5kQ29sb3IpO1xuXG4gICAgICBpZiAoIXJlc3VsdC5wYXJlbnQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb3VudCA9IGNvdW50IC0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LmJhY2tncm91bmRDb2xvcjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEJhY2tHcm91bmRDb2xvcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGNvbXB1dGVkQmFja2dyb3VuZENvbG9yID1cbiAgICAgIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudClbJ2JhY2tncm91bmRDb2xvciddO1xuXG4gICAgaWYgKGNvbXB1dGVkQmFja2dyb3VuZENvbG9yICE9PSAncmdiYSgwLCAwLCAwLCAwKScpIHtcbiAgICAgIHJldHVybiBjb21wdXRlZEJhY2tncm91bmRDb2xvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJpbXBkYy1zY3JvbGxhYmxlXCJcbiAgI2NvbnRhaW5lclxuICBpbXBkY1NpemVEZXRlY3RvclxuICAocmVzaXplZCk9XCJ3aWR0aENoYW5nZWQoJGV2ZW50KVwiPlxuICA8YSBjbGFzcz1cImltcGRjLXNjcm9sbGFibGUtbGVmdFwiIChjbGljayk9XCJzY3JvbGwoLTEpXCIgKm5nSWY9XCJjYW5TY3JvbGxMZWZ0XCI+XG4gICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1sZWZ0XCIgY2xhc3M9XCJkZWZhdWx0XCI+PC9pPlxuICA8L2E+XG4gIDxkaXYgI2NvbnRlbnQgY2xhc3M9XCJjb250ZW50LWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxhIGNsYXNzPVwiaW1wZGMtc2Nyb2xsYWJsZS1yaWdodFwiIChjbGljayk9XCJzY3JvbGwoMSlcIiAqbmdJZj1cImNhblNjcm9sbFJpZ2h0XCI+XG4gICAgPGkgaW1wZGMtaWNvbiBuYW1lPVwiY2hldnJvbi1yaWdodFwiIGNsYXNzPVwiZGVmYXVsdFwiPjwvaT5cbiAgPC9hPlxuPC9kaXY+XG4iXX0=
|