@koobiq/components 18.35.0 → 18.36.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/accordion/accordion.component.d.ts +1 -1
- package/app-switcher/_app-switcher-theme.scss +34 -0
- package/app-switcher/app-switcher-animations.d.ts +5 -0
- package/app-switcher/app-switcher-dropdown-app.d.ts +11 -0
- package/app-switcher/app-switcher-dropdown-app.scss +85 -0
- package/app-switcher/app-switcher-dropdown-site.d.ts +9 -0
- package/app-switcher/app-switcher-dropdown-site.scss +53 -0
- package/app-switcher/app-switcher.d.ts +191 -0
- package/app-switcher/app-switcher.module.d.ts +10 -0
- package/app-switcher/app-switcher.scss +64 -0
- package/app-switcher/index.d.ts +1 -0
- package/app-switcher/kbq-app-switcher-list-item.d.ts +16 -0
- package/app-switcher/kbq-app-switcher-list-item.scss +180 -0
- package/app-switcher/public-api.d.ts +6 -0
- package/badge/badge.component.d.ts +1 -1
- package/badge/badge.component.scss +2 -0
- package/breadcrumbs/breadcrumbs.scss +4 -0
- package/button/button.component.d.ts +2 -2
- package/core/common-behaviors/clipboard.d.ts +1 -1
- package/core/common-behaviors/color.d.ts +5 -5
- package/core/common-behaviors/focus-monitor.d.ts +19 -0
- package/core/common-behaviors/hovered.d.ts +13 -0
- package/core/common-behaviors/index.d.ts +4 -0
- package/core/common-behaviors/orientation.d.ts +4 -0
- package/core/common-behaviors/read-state.d.ts +12 -0
- package/core/locales/en-US.d.ts +62 -0
- package/core/locales/es-LA.d.ts +62 -0
- package/core/locales/fa-IR.d.ts +62 -0
- package/core/locales/locale-service.d.ts +434 -0
- package/core/locales/pt-BR.d.ts +62 -0
- package/core/locales/ru-RU.d.ts +62 -0
- package/core/locales/tk-TM.d.ts +62 -0
- package/core/locales/types.d.ts +22 -0
- package/core/locales/zh-CN.d.ts +62 -0
- package/core/navbar/rectangle-item.d.ts +1 -1
- package/core/option/action.d.ts +1 -1
- package/core/option/option.d.ts +1 -1
- package/core/pop-up/constants.d.ts +2 -1
- package/core/pop-up/pop-up-trigger.d.ts +3 -3
- package/core/pop-up/pop-up.d.ts +2 -1
- package/core/select/common.d.ts +3 -0
- package/core/select/constants.d.ts +5 -0
- package/core/styles/common/_select.scss +5 -0
- package/core/utils/dom.d.ts +1 -6
- package/divider/divider.scss +1 -0
- package/dropdown/dropdown.component.d.ts +5 -1
- package/dropdown/dropdown.module.d.ts +1 -1
- package/esm2022/accordion/accordion-content.mjs +3 -3
- package/esm2022/accordion/accordion-header.mjs +3 -3
- package/esm2022/accordion/accordion-item.mjs +3 -3
- package/esm2022/accordion/accordion-trigger.component.mjs +3 -3
- package/esm2022/accordion/accordion.component.mjs +5 -5
- package/esm2022/accordion/accordion.module.mjs +4 -4
- package/esm2022/actions-panel/actions-panel-container.mjs +3 -3
- package/esm2022/actions-panel/actions-panel.mjs +3 -3
- package/esm2022/actions-panel/module.mjs +4 -4
- package/esm2022/alert/alert.component.mjs +12 -12
- package/esm2022/alert/alert.module.mjs +4 -4
- package/esm2022/app-switcher/app-switcher-animations.mjs +18 -0
- package/esm2022/app-switcher/app-switcher-dropdown-app.mjs +75 -0
- package/esm2022/app-switcher/app-switcher-dropdown-site.mjs +60 -0
- package/esm2022/app-switcher/app-switcher.mjs +446 -0
- package/esm2022/app-switcher/app-switcher.module.mjs +45 -0
- package/esm2022/app-switcher/index.mjs +2 -0
- package/esm2022/app-switcher/kbq-app-switcher-list-item.mjs +84 -0
- package/esm2022/app-switcher/koobiq-components-app-switcher.mjs +5 -0
- package/esm2022/app-switcher/public-api.mjs +7 -0
- package/esm2022/autocomplete/autocomplete-origin.directive.mjs +3 -3
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +3 -3
- package/esm2022/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/autocomplete/autocomplete.module.mjs +4 -4
- package/esm2022/badge/badge.component.mjs +11 -11
- package/esm2022/badge/badge.module.mjs +4 -4
- package/esm2022/breadcrumbs/breadcrumbs.mjs +17 -17
- package/esm2022/breadcrumbs/breadcrumbs.module.mjs +4 -4
- package/esm2022/button/button.component.mjs +7 -7
- package/esm2022/button/button.dropdown-trigger.directive.mjs +3 -3
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/button-toggle/button-toggle.component.mjs +6 -6
- package/esm2022/button-toggle/button-toggle.module.mjs +4 -4
- package/esm2022/checkbox/checkbox-module.mjs +4 -4
- package/esm2022/checkbox/checkbox-required-validator.mjs +3 -3
- package/esm2022/checkbox/checkbox.mjs +3 -3
- package/esm2022/clamped-text/clamped-text.mjs +3 -3
- package/esm2022/clamped-text/module.mjs +4 -4
- package/esm2022/code-block/code-block-highlight.mjs +7 -7
- package/esm2022/code-block/code-block.mjs +4 -4
- package/esm2022/code-block/code-block.module.mjs +4 -4
- package/esm2022/content-panel/content-panel.mjs +24 -24
- package/esm2022/content-panel/module.mjs +4 -4
- package/esm2022/content-panel/resizable.mjs +6 -6
- package/esm2022/core/common-behaviors/clipboard.mjs +4 -4
- package/esm2022/core/common-behaviors/color.mjs +6 -7
- package/esm2022/core/common-behaviors/common-module.mjs +4 -4
- package/esm2022/core/common-behaviors/focus-monitor.mjs +37 -0
- package/esm2022/core/common-behaviors/hovered.mjs +31 -0
- package/esm2022/core/common-behaviors/index.mjs +5 -1
- package/esm2022/core/common-behaviors/orientation.mjs +2 -0
- package/esm2022/core/common-behaviors/read-state.mjs +33 -0
- package/esm2022/core/error/error-state-matcher.mjs +9 -9
- package/esm2022/core/form-field/field-sizing-content.mjs +3 -3
- package/esm2022/core/formatters/date/formatter.mjs +3 -3
- package/esm2022/core/formatters/date/formatter.pipe.mjs +78 -78
- package/esm2022/core/formatters/filesize/formatter.mjs +3 -3
- package/esm2022/core/formatters/index.mjs +4 -4
- package/esm2022/core/formatters/number/formatter.mjs +12 -12
- package/esm2022/core/forms/forms-module.mjs +4 -4
- package/esm2022/core/forms/forms.directive.mjs +6 -6
- package/esm2022/core/highlight/highlight.pipe.mjs +3 -3
- package/esm2022/core/highlight/index.mjs +4 -4
- package/esm2022/core/line/line.mjs +7 -7
- package/esm2022/core/locales/en-US.mjs +105 -1
- package/esm2022/core/locales/es-LA.mjs +105 -1
- package/esm2022/core/locales/fa-IR.mjs +75 -1
- package/esm2022/core/locales/locale-service.mjs +3 -3
- package/esm2022/core/locales/locale-service.module.mjs +4 -4
- package/esm2022/core/locales/pt-BR.mjs +105 -1
- package/esm2022/core/locales/ru-RU.mjs +119 -1
- package/esm2022/core/locales/tk-TM.mjs +105 -1
- package/esm2022/core/locales/types.mjs +1 -1
- package/esm2022/core/locales/zh-CN.mjs +63 -1
- package/esm2022/core/navbar/rectangle-item.mjs +7 -6
- package/esm2022/core/option/action-container.mjs +3 -3
- package/esm2022/core/option/action.mjs +4 -4
- package/esm2022/core/option/optgroup.mjs +3 -3
- package/esm2022/core/option/option-module.mjs +4 -4
- package/esm2022/core/option/option.mjs +4 -4
- package/esm2022/core/pop-up/constants.mjs +2 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +6 -6
- package/esm2022/core/pop-up/pop-up.mjs +4 -4
- package/esm2022/core/select/common.mjs +27 -17
- package/esm2022/core/select/constants.mjs +6 -1
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +4 -4
- package/esm2022/core/services/measure-scrollbar.service.mjs +3 -3
- package/esm2022/core/services/theme.service.mjs +3 -3
- package/esm2022/core/utils/dom.mjs +2 -8
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-body.component.mjs +3 -3
- package/esm2022/datepicker/calendar-header.component.mjs +3 -3
- package/esm2022/datepicker/calendar.component.mjs +3 -3
- package/esm2022/datepicker/datepicker-input.directive.mjs +6 -6
- package/esm2022/datepicker/datepicker-intl.mjs +3 -3
- package/esm2022/datepicker/datepicker-module.mjs +4 -4
- package/esm2022/datepicker/datepicker-toggle.component.mjs +9 -9
- package/esm2022/datepicker/datepicker.component.mjs +6 -6
- package/esm2022/datepicker/month-view.component.mjs +3 -3
- package/esm2022/divider/divider.component.mjs +4 -4
- package/esm2022/divider/divider.module.mjs +4 -4
- package/esm2022/dl/dl.component.mjs +9 -9
- package/esm2022/dl/dl.module.mjs +4 -4
- package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
- package/esm2022/dropdown/dropdown-item.component.mjs +3 -3
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +5 -5
- package/esm2022/dropdown/dropdown.component.mjs +18 -8
- package/esm2022/dropdown/dropdown.module.mjs +14 -10
- package/esm2022/dynamic-translation/dynamic-translation.mjs +9 -9
- package/esm2022/dynamic-translation/module.mjs +4 -4
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +7 -7
- package/esm2022/empty-state/empty-state.component.mjs +15 -15
- package/esm2022/empty-state/empty-state.module.mjs +4 -4
- package/esm2022/file-upload/file-drop.mjs +3 -3
- package/esm2022/file-upload/file-upload.mjs +1 -1
- package/esm2022/file-upload/file-upload.module.mjs +4 -4
- package/esm2022/file-upload/multiple-file-upload.component.mjs +19 -8
- package/esm2022/file-upload/single-file-upload.component.mjs +13 -5
- package/esm2022/filter-bar/filter-bar-button.mjs +3 -3
- package/esm2022/filter-bar/filter-bar.mjs +3 -3
- package/esm2022/filter-bar/filter-bar.module.mjs +4 -4
- package/esm2022/filter-bar/filter-refresher.mjs +3 -3
- package/esm2022/filter-bar/filter-reset.mjs +3 -3
- package/esm2022/filter-bar/filter-search.mjs +3 -3
- package/esm2022/filter-bar/filters.mjs +4 -4
- package/esm2022/filter-bar/pipe-add.mjs +5 -5
- package/esm2022/filter-bar/pipe.directive.mjs +3 -3
- package/esm2022/filter-bar/pipes/base-pipe.mjs +7 -7
- package/esm2022/filter-bar/pipes/pipe-button.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-date.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +12 -7
- package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +12 -7
- package/esm2022/filter-bar/pipes/pipe-readonly.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-state.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-title.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +6 -6
- package/esm2022/form-field/cleaner.mjs +3 -3
- package/esm2022/form-field/error.mjs +3 -3
- package/esm2022/form-field/fieldset.mjs +11 -11
- package/esm2022/form-field/form-field.mjs +11 -11
- package/esm2022/form-field/form-field.module.mjs +4 -4
- package/esm2022/form-field/hint.mjs +3 -3
- package/esm2022/form-field/label.mjs +3 -3
- package/esm2022/form-field/password-hint.mjs +3 -3
- package/esm2022/form-field/password-toggle.mjs +7 -7
- package/esm2022/form-field/prefix.mjs +3 -3
- package/esm2022/form-field/reactive-password-hint.mjs +3 -3
- package/esm2022/form-field/stepper.mjs +3 -3
- package/esm2022/form-field/suffix.mjs +3 -3
- package/esm2022/form-field/validate.directive.mjs +3 -3
- package/esm2022/icon/icon-button.component.mjs +3 -3
- package/esm2022/icon/icon-item.component.mjs +3 -3
- package/esm2022/icon/icon.component.mjs +4 -4
- package/esm2022/icon/icon.module.mjs +4 -4
- package/esm2022/inline-edit/index.mjs +3 -0
- package/esm2022/inline-edit/inline-edit.mjs +378 -0
- package/esm2022/inline-edit/koobiq-components-inline-edit.mjs +5 -0
- package/esm2022/inline-edit/module.mjs +25 -0
- package/esm2022/input/input-number-validators.mjs +6 -6
- package/esm2022/input/input-number.mjs +4 -4
- package/esm2022/input/input-password.mjs +4 -4
- package/esm2022/input/input.mjs +7 -7
- package/esm2022/input/input.module.mjs +4 -4
- package/esm2022/link/link.component.mjs +6 -6
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/list-selection.component.mjs +10 -10
- package/esm2022/list/list.component.mjs +6 -6
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
- package/esm2022/loader-overlay/loader-overlay.module.mjs +4 -4
- package/esm2022/markdown/markdown.component.mjs +5 -5
- package/esm2022/markdown/markdown.module.mjs +4 -4
- package/esm2022/markdown/markdown.service.mjs +3 -3
- package/esm2022/modal/css-unit.pipe.mjs +3 -3
- package/esm2022/modal/modal-control.service.mjs +3 -3
- package/esm2022/modal/modal.component.mjs +4 -4
- package/esm2022/modal/modal.directive.mjs +12 -12
- package/esm2022/modal/modal.module.mjs +4 -4
- package/esm2022/modal/modal.service.mjs +3 -3
- package/esm2022/navbar/navbar-item.component.mjs +49 -38
- package/esm2022/navbar/navbar.component.mjs +10 -10
- package/esm2022/navbar/navbar.module.mjs +4 -4
- package/esm2022/navbar/vertical-navbar.component.mjs +4 -4
- package/esm2022/navbar-ic/navbar-ic-header.mjs +7 -7
- package/esm2022/navbar-ic/navbar-ic-item.mjs +30 -38
- package/esm2022/navbar-ic/navbar-ic.mjs +18 -13
- package/esm2022/navbar-ic/navbar-ic.module.mjs +4 -4
- package/esm2022/notification-center/index.mjs +2 -0
- package/esm2022/notification-center/koobiq-components-notification-center.mjs +5 -0
- package/esm2022/notification-center/notification-center-animations.mjs +18 -0
- package/esm2022/notification-center/notification-center.mjs +353 -0
- package/esm2022/notification-center/notification-center.module.mjs +38 -0
- package/esm2022/notification-center/notification-center.service.mjs +127 -0
- package/esm2022/notification-center/notification-item.mjs +70 -0
- package/esm2022/notification-center/public-api.mjs +5 -0
- package/esm2022/overflow-items/module.mjs +4 -4
- package/esm2022/overflow-items/overflow-items.mjs +95 -41
- package/esm2022/popover/popover-confirm.component.mjs +10 -10
- package/esm2022/popover/popover.component.mjs +18 -13
- package/esm2022/popover/popover.module.mjs +4 -4
- package/esm2022/progress-bar/progress-bar.component.mjs +9 -9
- package/esm2022/progress-bar/progress-bar.module.mjs +4 -4
- package/esm2022/progress-spinner/progress-spinner.component.mjs +9 -9
- package/esm2022/progress-spinner/progress-spinner.module.mjs +4 -4
- package/esm2022/radio/radio.component.mjs +6 -6
- package/esm2022/radio/radio.module.mjs +4 -4
- package/esm2022/risk-level/risk-level.component.mjs +3 -3
- package/esm2022/risk-level/risk-level.module.mjs +4 -4
- package/esm2022/scrollbar/scrollbar.component.mjs +3 -3
- package/esm2022/scrollbar/scrollbar.directive.mjs +3 -3
- package/esm2022/scrollbar/scrollbar.module.mjs +4 -4
- package/esm2022/search-expandable/index.mjs +2 -0
- package/esm2022/search-expandable/koobiq-components-search-expandable.mjs +5 -0
- package/esm2022/search-expandable/public-api.mjs +3 -0
- package/esm2022/search-expandable/search-expandable.mjs +177 -0
- package/esm2022/search-expandable/search-expandable.module.mjs +18 -0
- package/esm2022/select/select-option.directive.mjs +3 -3
- package/esm2022/select/select.component.mjs +37 -10
- package/esm2022/select/select.module.mjs +4 -4
- package/esm2022/sidebar/sidebar.component.mjs +9 -9
- package/esm2022/sidebar/sidebar.module.mjs +4 -4
- package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
- package/esm2022/sidepanel/sidepanel-directives.mjs +15 -15
- package/esm2022/sidepanel/sidepanel.module.mjs +4 -4
- package/esm2022/sidepanel/sidepanel.service.mjs +3 -3
- package/esm2022/split-button/index.mjs +2 -0
- package/esm2022/split-button/koobiq-components-split-button.mjs +5 -0
- package/esm2022/split-button/public-api.mjs +3 -0
- package/esm2022/split-button/split-button.mjs +92 -0
- package/esm2022/split-button/split-button.module.mjs +18 -0
- package/esm2022/splitter/splitter.component.mjs +13 -13
- package/esm2022/splitter/splitter.module.mjs +4 -4
- package/esm2022/table/table.component.mjs +6 -6
- package/esm2022/table/table.module.mjs +4 -4
- package/esm2022/tabs/paginated-tab-header.mjs +4 -4
- package/esm2022/tabs/tab-body.component.mjs +6 -6
- package/esm2022/tabs/tab-content.directive.mjs +3 -3
- package/esm2022/tabs/tab-group.component.mjs +15 -15
- package/esm2022/tabs/tab-header.component.mjs +4 -4
- package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -4
- package/esm2022/tabs/tab-label.directive.mjs +3 -3
- package/esm2022/tabs/tab-nav-bar.mjs +10 -10
- package/esm2022/tabs/tab.component.mjs +3 -3
- package/esm2022/tabs/tabs.module.mjs +4 -4
- package/esm2022/tags/tag-input.mjs +17 -11
- package/esm2022/tags/tag-list.component.mjs +236 -194
- package/esm2022/tags/tag.component.mjs +209 -138
- package/esm2022/tags/tag.module.mjs +4 -4
- package/esm2022/textarea/textarea.component.mjs +5 -5
- package/esm2022/textarea/textarea.module.mjs +4 -4
- package/esm2022/time-range/constants.mjs +21 -0
- package/esm2022/time-range/index.mjs +8 -0
- package/esm2022/time-range/koobiq-components-time-range.mjs +5 -0
- package/esm2022/time-range/module.mjs +36 -0
- package/esm2022/time-range/time-range-editor.mjs +219 -0
- package/esm2022/time-range/time-range-title-as-form-field.mjs +59 -0
- package/esm2022/time-range/time-range-title.mjs +112 -0
- package/esm2022/time-range/time-range.mjs +229 -0
- package/esm2022/time-range/time-range.service.mjs +189 -0
- package/esm2022/time-range/types.mjs +2 -0
- package/esm2022/timepicker/timepicker.directive.mjs +4 -4
- package/esm2022/timepicker/timepicker.module.mjs +4 -4
- package/esm2022/timezone/cities-by-filter.pipe.mjs +3 -3
- package/esm2022/timezone/timezone-option.component.mjs +3 -3
- package/esm2022/timezone/timezone-option.directive.mjs +3 -3
- package/esm2022/timezone/timezone-select.component.mjs +9 -9
- package/esm2022/timezone/timezone.module.mjs +4 -4
- package/esm2022/timezone/utc-offset.pipe.mjs +3 -3
- package/esm2022/title/title.directive.mjs +3 -3
- package/esm2022/title/title.module.mjs +4 -4
- package/esm2022/toast/toast-container.component.mjs +3 -3
- package/esm2022/toast/toast.component.mjs +20 -14
- package/esm2022/toast/toast.module.mjs +4 -4
- package/esm2022/toast/toast.service.mjs +5 -4
- package/esm2022/toast/toast.type.mjs +1 -1
- package/esm2022/toggle/toggle.component.mjs +3 -3
- package/esm2022/toggle/toggle.module.mjs +4 -4
- package/esm2022/tooltip/tooltip.component.mjs +19 -19
- package/esm2022/tooltip/tooltip.module.mjs +4 -4
- package/esm2022/top-bar/module.mjs +4 -4
- package/esm2022/top-bar/top-bar.mjs +9 -9
- package/esm2022/tree/node.mjs +3 -3
- package/esm2022/tree/outlet.mjs +3 -3
- package/esm2022/tree/padding.directive.mjs +3 -3
- package/esm2022/tree/toggle.mjs +16 -12
- package/esm2022/tree/tree-base.mjs +7 -7
- package/esm2022/tree/tree-option.component.mjs +5 -9
- package/esm2022/tree/tree-selection.component.mjs +4 -4
- package/esm2022/tree/tree.mjs +3 -3
- package/esm2022/tree/tree.module.mjs +4 -4
- package/esm2022/tree-select/tree-select.component.mjs +54 -14
- package/esm2022/tree-select/tree-select.module.mjs +4 -4
- package/esm2022/username/module.mjs +4 -4
- package/esm2022/username/username.mjs +15 -15
- package/esm2022/username/username.pipe.mjs +8 -8
- package/fesm2022/koobiq-components-accordion.mjs +20 -20
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -10
- package/fesm2022/koobiq-components-alert.mjs +16 -16
- package/fesm2022/koobiq-components-app-switcher.mjs +704 -0
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -0
- package/fesm2022/koobiq-components-autocomplete.mjs +13 -13
- package/fesm2022/koobiq-components-badge.mjs +14 -14
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +20 -20
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
- package/fesm2022/koobiq-components-button.mjs +13 -13
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +10 -10
- package/fesm2022/koobiq-components-clamped-text.mjs +7 -7
- package/fesm2022/koobiq-components-code-block.mjs +13 -13
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +34 -34
- package/fesm2022/koobiq-components-core.mjs +1032 -263
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +40 -40
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +8 -8
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +13 -13
- package/fesm2022/koobiq-components-dropdown.mjs +39 -25
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
- package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +36 -18
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +96 -86
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +60 -60
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +13 -13
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +407 -0
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -0
- package/fesm2022/koobiq-components-input.mjs +22 -22
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +10 -10
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -19
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +12 -12
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +28 -28
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +53 -56
- package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +65 -54
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +586 -0
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -0
- package/fesm2022/koobiq-components-overflow-items.mjs +98 -44
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +30 -25
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-risk-level.mjs +7 -7
- package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
- package/fesm2022/koobiq-components-search-expandable.mjs +199 -0
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -0
- package/fesm2022/koobiq-components-select.mjs +43 -16
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +13 -13
- package/fesm2022/koobiq-components-sidepanel.mjs +25 -25
- package/fesm2022/koobiq-components-split-button.mjs +114 -0
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +16 -16
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +10 -10
- package/fesm2022/koobiq-components-tabs.mjs +52 -52
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +461 -346
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +8 -8
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +840 -0
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -0
- package/fesm2022/koobiq-components-timepicker.mjs +7 -7
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +24 -24
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-toast.mjs +28 -21
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +7 -7
- package/fesm2022/koobiq-components-tooltip.mjs +22 -22
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +13 -13
- package/fesm2022/koobiq-components-tree-select.mjs +57 -17
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +44 -44
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +27 -27
- package/file-upload/_file-upload-theme.scss +1 -1
- package/file-upload/file-upload.d.ts +1 -1
- package/file-upload/multiple-file-upload.component.d.ts +1 -0
- package/file-upload/single-file-upload.component.d.ts +1 -0
- package/filter-bar/pipes/base-pipe.d.ts +1 -1
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +1 -0
- package/form-field/fieldset-tokens.scss +1 -1
- package/form-field/form-field-tokens.scss +1 -1
- package/form-field/form-field.d.ts +1 -1
- package/form-field/form-field.scss +1 -9
- package/form-field/password-toggle.d.ts +1 -1
- package/icon/icon.component.d.ts +2 -2
- package/inline-edit/index.d.ts +2 -0
- package/inline-edit/inline-edit-tokens.scss +8 -0
- package/inline-edit/inline-edit.d.ts +136 -0
- package/inline-edit/inline-edit.scss +208 -0
- package/inline-edit/module.d.ts +7 -0
- package/input/input-number.d.ts +1 -1
- package/input/input-password.d.ts +2 -2
- package/input/input.d.ts +2 -2
- package/link/link.component.d.ts +3 -3
- package/list/list-selection.component.d.ts +1 -1
- package/loader-overlay/loader-overlay.component.d.ts +1 -1
- package/markdown/_markdown-theme.scss +1 -1
- package/markdown/markdown-tokens.scss +1 -0
- package/markdown/markdown.scss +8 -0
- package/modal/modal.component.d.ts +1 -1
- package/navbar/navbar-item.component.d.ts +3 -2
- package/navbar/navbar.component.d.ts +4 -4
- package/navbar/vertical-navbar.component.d.ts +2 -2
- package/navbar-ic/navbar-ic-header.d.ts +1 -1
- package/navbar-ic/navbar-ic-item.d.ts +2 -2
- package/navbar-ic/navbar-ic.d.ts +4 -2
- package/notification-center/_notification-center-theme.scss +27 -0
- package/notification-center/index.d.ts +1 -0
- package/notification-center/notification-center-animations.d.ts +5 -0
- package/notification-center/notification-center.d.ts +153 -0
- package/notification-center/notification-center.module.d.ts +7 -0
- package/notification-center/notification-center.scss +126 -0
- package/notification-center/notification-center.service.d.ts +72 -0
- package/notification-center/notification-item.d.ts +27 -0
- package/notification-center/notification-item.scss +157 -0
- package/notification-center/public-api.d.ts +4 -0
- package/overflow-items/overflow-items.d.ts +23 -9
- package/package.json +46 -10
- package/popover/popover.component.d.ts +5 -1
- package/popover/popover.scss +15 -7
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/ng-add/index.js +5 -5
- package/search-expandable/index.d.ts +1 -0
- package/search-expandable/public-api.d.ts +2 -0
- package/search-expandable/search-expandable.d.ts +70 -0
- package/search-expandable/search-expandable.module.d.ts +7 -0
- package/search-expandable/search-expandable.scss +21 -0
- package/select/select.component.d.ts +38 -3
- package/split-button/_split-button-theme.scss +59 -0
- package/split-button/index.d.ts +1 -0
- package/split-button/public-api.d.ts +2 -0
- package/split-button/split-button.d.ts +31 -0
- package/split-button/split-button.module.d.ts +7 -0
- package/split-button/split-button.scss +83 -0
- package/splitter/splitter.component.d.ts +5 -5
- package/tabs/paginated-tab-header.d.ts +1 -1
- package/tabs/tab-header.component.d.ts +2 -2
- package/tabs/tab-label-wrapper.directive.d.ts +2 -2
- package/tabs/tab-nav-bar.d.ts +3 -3
- package/tags/_tag-theme.scss +21 -15
- package/tags/tag-input.d.ts +2 -0
- package/tags/tag-list.component.d.ts +133 -45
- package/tags/tag-list.scss +11 -0
- package/tags/tag-tokens.scss +17 -1
- package/tags/tag.component.d.ts +79 -20
- package/tags/tag.scss +9 -0
- package/textarea/textarea.component.d.ts +2 -2
- package/time-range/constants.d.ts +8 -0
- package/time-range/index.d.ts +7 -0
- package/time-range/module.d.ts +10 -0
- package/time-range/time-range-editor.d.ts +67 -0
- package/time-range/time-range-title-as-form-field.d.ts +40 -0
- package/time-range/time-range-title.d.ts +18 -0
- package/time-range/time-range.d.ts +75 -0
- package/time-range/time-range.scss +66 -0
- package/time-range/time-range.service.d.ts +29 -0
- package/time-range/types.d.ts +43 -0
- package/timepicker/timepicker.directive.d.ts +2 -2
- package/toast/toast.component.d.ts +6 -4
- package/toast/toast.component.scss +11 -1
- package/toast/toast.service.d.ts +1 -0
- package/toast/toast.type.d.ts +1 -0
- package/tree/toggle.d.ts +1 -1
- package/tree/tree-base.d.ts +2 -2
- package/tree/tree-option.component.d.ts +1 -1
- package/tree/tree-selection.component.d.ts +1 -1
- package/tree-select/tree-select.component.d.ts +44 -3
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
import { CdkMonitorFocus, CdkTrapFocus } from '@angular/cdk/a11y';
|
|
3
|
+
import { hasModifierKey } from '@angular/cdk/keycodes';
|
|
4
|
+
import { CdkConnectedOverlay, CdkOverlayOrigin, Overlay } from '@angular/cdk/overlay';
|
|
5
|
+
import { DOCUMENT } from '@angular/common';
|
|
6
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, Directive, ElementRef, inject, input, numberAttribute, output, signal, viewChild, viewChildren, ViewEncapsulation } from '@angular/core';
|
|
7
|
+
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
8
|
+
import { AbstractControl, NgControl } from '@angular/forms';
|
|
9
|
+
import { KbqAutocompleteTrigger } from '@koobiq/components/autocomplete';
|
|
10
|
+
import { KbqButtonModule } from '@koobiq/components/button';
|
|
11
|
+
import { KbqAnimationCurves, KbqAnimationDurations, KbqComponentColors, KbqFocusMonitor, PopUpPlacements } from '@koobiq/components/core';
|
|
12
|
+
import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
|
|
13
|
+
import { KbqFormField, KbqLabel } from '@koobiq/components/form-field';
|
|
14
|
+
import { KbqIcon } from '@koobiq/components/icon';
|
|
15
|
+
import { KbqSelect } from '@koobiq/components/select';
|
|
16
|
+
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
|
|
17
|
+
import { KbqTreeSelect } from '@koobiq/components/tree-select';
|
|
18
|
+
import { skip } from 'rxjs';
|
|
19
|
+
import { takeUntil } from 'rxjs/operators';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@koobiq/components/core";
|
|
22
|
+
import * as i2 from "@koobiq/components/button";
|
|
23
|
+
const KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION = trigger('panelAnimation', [
|
|
24
|
+
transition(':enter', [
|
|
25
|
+
style({ transform: 'translateY(100%)', opacity: 0 }),
|
|
26
|
+
animate(`${KbqAnimationDurations.Instant} ${KbqAnimationCurves.DecelerationCurve}`, style({ transform: 'translateY(0%)', opacity: 1 }))
|
|
27
|
+
])
|
|
28
|
+
]);
|
|
29
|
+
const baseClass = 'kbq-inline-edit';
|
|
30
|
+
/** @docs-private */
|
|
31
|
+
export class KbqFocusRegionItem {
|
|
32
|
+
constructor() {
|
|
33
|
+
this.tabOut = output();
|
|
34
|
+
this.isFocused = false;
|
|
35
|
+
}
|
|
36
|
+
onTabOut(event) {
|
|
37
|
+
if (this.isFocused) {
|
|
38
|
+
this.tabOut.emit(event);
|
|
39
|
+
}
|
|
40
|
+
this.isFocused = !this.isFocused;
|
|
41
|
+
}
|
|
42
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFocusRegionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
43
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqFocusRegionItem, isStandalone: true, selector: "[kbqFocusRegionItem]", outputs: { tabOut: "tabOut" }, host: { listeners: { "focusin": "isFocused = true", "keydown.tab": "onTabOut($event)", "keydown.shift.tab": "onTabOut($event)" } }, exportAs: ["kbqFocusRegionItem"], ngImport: i0 }); }
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFocusRegionItem, decorators: [{
|
|
46
|
+
type: Directive,
|
|
47
|
+
args: [{
|
|
48
|
+
standalone: true,
|
|
49
|
+
selector: '[kbqFocusRegionItem]',
|
|
50
|
+
exportAs: 'kbqFocusRegionItem',
|
|
51
|
+
host: {
|
|
52
|
+
'(focusin)': 'isFocused = true',
|
|
53
|
+
'(keydown.tab)': 'onTabOut($event)',
|
|
54
|
+
'(keydown.shift.tab)': 'onTabOut($event)'
|
|
55
|
+
}
|
|
56
|
+
}]
|
|
57
|
+
}] });
|
|
58
|
+
/** Directive for easy using styles of inline edit placeholder publicly. */
|
|
59
|
+
export class KbqInlineEditPlaceholder {
|
|
60
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditPlaceholder, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
61
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqInlineEditPlaceholder, isStandalone: true, selector: "[kbqInlineEditPlaceholder]", host: { classAttribute: "kbq-inline-edit__placeholder" }, exportAs: ["kbqInlineEditPlaceholder"], ngImport: i0 }); }
|
|
62
|
+
}
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditPlaceholder, decorators: [{
|
|
64
|
+
type: Directive,
|
|
65
|
+
args: [{
|
|
66
|
+
standalone: true,
|
|
67
|
+
selector: '[kbqInlineEditPlaceholder]',
|
|
68
|
+
exportAs: 'kbqInlineEditPlaceholder',
|
|
69
|
+
host: {
|
|
70
|
+
class: 'kbq-inline-edit__placeholder'
|
|
71
|
+
}
|
|
72
|
+
}]
|
|
73
|
+
}] });
|
|
74
|
+
/**
|
|
75
|
+
* This directive enhances element acting as dropdown trigger,
|
|
76
|
+
* visually indicating the active state with the `kbq-active` class.
|
|
77
|
+
* Also, it prevents click/keydown events from being propagated to disable mode toggling of parent component.
|
|
78
|
+
*/
|
|
79
|
+
export class KbqInlineEditMenu {
|
|
80
|
+
constructor() {
|
|
81
|
+
/** @docs-private */
|
|
82
|
+
this.dropdownTrigger = inject(KbqDropdownTrigger, { optional: true });
|
|
83
|
+
}
|
|
84
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
85
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqInlineEditMenu, isStandalone: true, selector: "[kbqInlineEditMenu]", host: { attributes: { "role": "button" }, listeners: { "click": "$event.stopPropagation()", "keydown.enter": "$event.stopPropagation()", "keydown.space": "$event.stopPropagation()" }, properties: { "class.kbq-active": "dropdownTrigger?.opened" }, classAttribute: "kbq-inline-edit__menu" }, exportAs: ["kbqInlineEditMenu"], ngImport: i0 }); }
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditMenu, decorators: [{
|
|
88
|
+
type: Directive,
|
|
89
|
+
args: [{
|
|
90
|
+
standalone: true,
|
|
91
|
+
selector: '[kbqInlineEditMenu]',
|
|
92
|
+
exportAs: 'kbqInlineEditMenu',
|
|
93
|
+
host: {
|
|
94
|
+
role: 'button',
|
|
95
|
+
class: 'kbq-inline-edit__menu',
|
|
96
|
+
'[class.kbq-active]': 'dropdownTrigger?.opened',
|
|
97
|
+
'(click)': '$event.stopPropagation()',
|
|
98
|
+
'(keydown.enter)': '$event.stopPropagation()',
|
|
99
|
+
'(keydown.space)': '$event.stopPropagation()'
|
|
100
|
+
}
|
|
101
|
+
}]
|
|
102
|
+
}] });
|
|
103
|
+
/**
|
|
104
|
+
* Customizable component that enables edit-in-place logic for specified control and it's view.
|
|
105
|
+
* This component is projecting edit/view mode templates and adds keyboard/pointer handlers.
|
|
106
|
+
* Edit mode opens in a positioned overlay that matches the view mode width or can be customized.
|
|
107
|
+
*/
|
|
108
|
+
export class KbqInlineEdit {
|
|
109
|
+
constructor() {
|
|
110
|
+
this.elementRef = inject(ElementRef);
|
|
111
|
+
this.kbqFocusMonitor = inject(KbqFocusMonitor, { host: true });
|
|
112
|
+
this.overlay = inject(Overlay);
|
|
113
|
+
this.document = inject(DOCUMENT);
|
|
114
|
+
/**
|
|
115
|
+
* Whether to show save/cancel action buttons in edit mode.
|
|
116
|
+
* @default false
|
|
117
|
+
*/
|
|
118
|
+
this.showActions = input(false, { transform: booleanAttribute });
|
|
119
|
+
/**
|
|
120
|
+
* Whether to automatically show validation error tooltips on save attempts.
|
|
121
|
+
* @default true
|
|
122
|
+
*/
|
|
123
|
+
this.showTooltipOnError = input(true, { transform: booleanAttribute });
|
|
124
|
+
/** Custom validation tooltip message. */
|
|
125
|
+
this.validationTooltip = input();
|
|
126
|
+
/**
|
|
127
|
+
* Disables the component, preventing interaction and mode switching. Only allows menu dropdown.
|
|
128
|
+
* @default false
|
|
129
|
+
*/
|
|
130
|
+
this.disabled = input(false, { transform: booleanAttribute });
|
|
131
|
+
/** Custom width in pixels for the edit mode overlay. Auto-calculated if not set. */
|
|
132
|
+
this.editModeWidth = input(undefined, { transform: numberAttribute });
|
|
133
|
+
/** User-defined tooltip placement */
|
|
134
|
+
this.tooltipPlacement = input();
|
|
135
|
+
/** Handler function to retrieve the current value */
|
|
136
|
+
this.getValueHandler = input();
|
|
137
|
+
/** Handler function to update the value */
|
|
138
|
+
this.setValueHandler = input();
|
|
139
|
+
/** Emitted when the inline edit is saved successfully. */
|
|
140
|
+
this.saved = output();
|
|
141
|
+
/** Emitted when the inline edit is canceled and changes are discarded. */
|
|
142
|
+
this.canceled = output();
|
|
143
|
+
/** Emitted when mode switched to edit/view */
|
|
144
|
+
this.modeChange = output();
|
|
145
|
+
/** @docs-private */
|
|
146
|
+
this.menu = contentChild(KbqInlineEditMenu);
|
|
147
|
+
/** @docs-private */
|
|
148
|
+
this.label = contentChild(KbqLabel);
|
|
149
|
+
/** @docs-private */
|
|
150
|
+
this.formFieldRef = contentChild(KbqFormField);
|
|
151
|
+
/** @docs-private */
|
|
152
|
+
this.overlayOrigin = viewChild.required(CdkOverlayOrigin);
|
|
153
|
+
/** @docs-private */
|
|
154
|
+
this.tooltipTrigger = viewChild(KbqTooltipTrigger);
|
|
155
|
+
/** @docs-private */
|
|
156
|
+
this.overlayDir = viewChild(CdkConnectedOverlay);
|
|
157
|
+
/** @docs-private */
|
|
158
|
+
this.regionItems = viewChildren(KbqFocusRegionItem);
|
|
159
|
+
/** @docs-private */
|
|
160
|
+
this.mode = signal('view');
|
|
161
|
+
/** @docs-private */
|
|
162
|
+
this.overlayWidth = signal('');
|
|
163
|
+
/** @docs-private */
|
|
164
|
+
this.scrollStrategy = signal(this.overlay.scrollStrategies.reposition());
|
|
165
|
+
/** @docs-private */
|
|
166
|
+
this.modeAsReadonly = computed(() => this.mode());
|
|
167
|
+
/** @docs-private */
|
|
168
|
+
this.className = computed(() => `${baseClass}_${this.mode()}`);
|
|
169
|
+
/** @docs-private */
|
|
170
|
+
this.isEditMode = computed(() => this.mode() === 'edit');
|
|
171
|
+
/** @docs-private */
|
|
172
|
+
this.tabIndex = computed(() => (this.isEditMode() || this.disabled() ? -1 : 0));
|
|
173
|
+
/** @docs-private */
|
|
174
|
+
this.placements = PopUpPlacements;
|
|
175
|
+
/** @docs-private */
|
|
176
|
+
this.colors = KbqComponentColors;
|
|
177
|
+
toObservable(this.mode)
|
|
178
|
+
.pipe(skip(1), takeUntilDestroyed())
|
|
179
|
+
.subscribe((currentMode) => this.modeChange.emit(currentMode));
|
|
180
|
+
}
|
|
181
|
+
/** @docs-private */
|
|
182
|
+
toggleMode() {
|
|
183
|
+
this.mode.update((mode) => (mode === 'view' ? 'edit' : 'view'));
|
|
184
|
+
}
|
|
185
|
+
/** @docs-private */
|
|
186
|
+
onClick(event) {
|
|
187
|
+
if (this.disabled() || this.isEditMode())
|
|
188
|
+
return;
|
|
189
|
+
event.preventDefault();
|
|
190
|
+
event.stopPropagation();
|
|
191
|
+
this.kbqFocusMonitor.focusVia(this.overlayOrigin().elementRef, 'program');
|
|
192
|
+
this.toggleMode();
|
|
193
|
+
}
|
|
194
|
+
/** @docs-private */
|
|
195
|
+
onAttach() {
|
|
196
|
+
this.setOverlayWidth();
|
|
197
|
+
this.setOverlayKeydownListener();
|
|
198
|
+
const formFieldRef = this.formFieldRef();
|
|
199
|
+
formFieldRef?.control.stateChanges
|
|
200
|
+
.pipe(takeUntil(this.overlayDir().overlayRef.detachments()))
|
|
201
|
+
.subscribe(() => {
|
|
202
|
+
if (!this.isInvalid()) {
|
|
203
|
+
const tooltipTrigger = this.tooltipTrigger();
|
|
204
|
+
tooltipTrigger?.isOpen && tooltipTrigger?.hide();
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
setTimeout(() => {
|
|
208
|
+
formFieldRef?.focus();
|
|
209
|
+
this.initialValue = this.getValue();
|
|
210
|
+
const input = this.getInputNativeElement();
|
|
211
|
+
if (this.initialValue)
|
|
212
|
+
input?.select();
|
|
213
|
+
if (formFieldRef) {
|
|
214
|
+
this.openPanel(formFieldRef);
|
|
215
|
+
}
|
|
216
|
+
}, 0);
|
|
217
|
+
}
|
|
218
|
+
/** @docs-private */
|
|
219
|
+
save($event) {
|
|
220
|
+
if (this.isInvalid()) {
|
|
221
|
+
$event?.stopPropagation();
|
|
222
|
+
this.showTooltipOnError() && this.tooltipTrigger()?.show();
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
this.toggleMode();
|
|
226
|
+
this.saved.emit();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/** @docs-private */
|
|
230
|
+
cancel() {
|
|
231
|
+
this.setValue(this.initialValue);
|
|
232
|
+
const input = this.getInputNativeElement();
|
|
233
|
+
if (input) {
|
|
234
|
+
input.selectionStart = input.selectionEnd = null;
|
|
235
|
+
}
|
|
236
|
+
this.toggleMode();
|
|
237
|
+
this.canceled.emit();
|
|
238
|
+
}
|
|
239
|
+
/** @docs-private */
|
|
240
|
+
onOverlayKeydown(event) {
|
|
241
|
+
const { target, key } = event;
|
|
242
|
+
this.formFieldRef()?.control.ngControl?.control?.markAsTouched();
|
|
243
|
+
switch (key) {
|
|
244
|
+
case 'Escape': {
|
|
245
|
+
this.cancel();
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
case 'Enter': {
|
|
249
|
+
if (hasModifierKey(event, 'ctrlKey', 'metaKey') || !(target instanceof HTMLTextAreaElement)) {
|
|
250
|
+
event.preventDefault();
|
|
251
|
+
this.formFieldRef()?.control.ngControl?.control?.markAsTouched();
|
|
252
|
+
setTimeout(() => this.save(event));
|
|
253
|
+
}
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
default: {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Sets up Tab key listeners on region items.
|
|
263
|
+
* Single item: Tab moves to next edit.
|
|
264
|
+
* Multiple items: Shift+Tab on first or Tab on last moves to next edit.
|
|
265
|
+
*/
|
|
266
|
+
setOverlayKeydownListener() {
|
|
267
|
+
const regionItems = this.regionItems();
|
|
268
|
+
if (regionItems.length === 0)
|
|
269
|
+
return;
|
|
270
|
+
const firstItem = regionItems.at(0);
|
|
271
|
+
const lastItem = regionItems.at(regionItems.length - 1);
|
|
272
|
+
if (regionItems.length === 1) {
|
|
273
|
+
firstItem?.tabOut.subscribe((event) => this.saveAndFocusNextInlineEdit(event));
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
firstItem?.tabOut.subscribe((event) => hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event));
|
|
277
|
+
lastItem?.tabOut.subscribe((event) => !hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event));
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
saveAndFocusNextInlineEdit(event) {
|
|
281
|
+
this.save(event);
|
|
282
|
+
if (this.isInvalid())
|
|
283
|
+
return;
|
|
284
|
+
setTimeout(() => {
|
|
285
|
+
const activeElement = this.document.activeElement;
|
|
286
|
+
if (activeElement?.classList?.contains('kbq-inline-edit__focus_container')) {
|
|
287
|
+
activeElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }));
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
isInvalid() {
|
|
292
|
+
const formFieldRef = this.formFieldRef();
|
|
293
|
+
if (!formFieldRef)
|
|
294
|
+
return false;
|
|
295
|
+
return formFieldRef.invalid;
|
|
296
|
+
}
|
|
297
|
+
getValue() {
|
|
298
|
+
const getValueHandler = this.getValueHandler();
|
|
299
|
+
if (getValueHandler)
|
|
300
|
+
return getValueHandler();
|
|
301
|
+
const control = this.coerceControl();
|
|
302
|
+
return control?.value;
|
|
303
|
+
}
|
|
304
|
+
setValue(value) {
|
|
305
|
+
const setValue = this.setValueHandler();
|
|
306
|
+
if (setValue) {
|
|
307
|
+
setValue(this.initialValue);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const control = this.coerceControl();
|
|
311
|
+
if (!control)
|
|
312
|
+
return;
|
|
313
|
+
if (control instanceof AbstractControl) {
|
|
314
|
+
control.setValue(value);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
control.value = value;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
coerceControl() {
|
|
321
|
+
const formFieldRef = this.formFieldRef();
|
|
322
|
+
if (!formFieldRef)
|
|
323
|
+
return null;
|
|
324
|
+
if (formFieldRef.control.ngControl instanceof NgControl) {
|
|
325
|
+
return formFieldRef.control.ngControl.control;
|
|
326
|
+
}
|
|
327
|
+
return formFieldRef.control;
|
|
328
|
+
}
|
|
329
|
+
setOverlayWidth() {
|
|
330
|
+
const editModeWidth = this.editModeWidth();
|
|
331
|
+
if (editModeWidth) {
|
|
332
|
+
this.overlayWidth.set(editModeWidth);
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
const elementRef = this.label()
|
|
336
|
+
? this.overlayOrigin().elementRef
|
|
337
|
+
: this.elementRef;
|
|
338
|
+
this.overlayWidth.set(elementRef?.nativeElement.offsetWidth ?? '');
|
|
339
|
+
}
|
|
340
|
+
// @TODO refactor this (#DS-4181)
|
|
341
|
+
openPanel(formFieldRef) {
|
|
342
|
+
const control = formFieldRef.control;
|
|
343
|
+
if (control instanceof KbqSelect || control instanceof KbqTreeSelect) {
|
|
344
|
+
control.open();
|
|
345
|
+
}
|
|
346
|
+
else if (control instanceof KbqAutocompleteTrigger) {
|
|
347
|
+
control.openPanel();
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
getInputNativeElement() {
|
|
351
|
+
return this.overlayDir()?.overlayRef.overlayElement.querySelector('input:not([type="file"]),textarea') ?? null;
|
|
352
|
+
}
|
|
353
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEdit, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
354
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqInlineEdit, isStandalone: true, selector: "kbq-inline-edit", inputs: { showActions: { classPropertyName: "showActions", publicName: "showActions", isSignal: true, isRequired: false, transformFunction: null }, showTooltipOnError: { classPropertyName: "showTooltipOnError", publicName: "showTooltipOnError", isSignal: true, isRequired: false, transformFunction: null }, validationTooltip: { classPropertyName: "validationTooltip", publicName: "validationTooltip", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, editModeWidth: { classPropertyName: "editModeWidth", publicName: "editModeWidth", isSignal: true, isRequired: false, transformFunction: null }, tooltipPlacement: { classPropertyName: "tooltipPlacement", publicName: "tooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, getValueHandler: { classPropertyName: "getValueHandler", publicName: "getValueHandler", isSignal: true, isRequired: false, transformFunction: null }, setValueHandler: { classPropertyName: "setValueHandler", publicName: "setValueHandler", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { saved: "saved", canceled: "canceled", modeChange: "modeChange" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onClick($event)", "keydown.space": "onClick($event)" }, properties: { "class": "className()", "class.kbq-inline-edit_with-label": "!!label()", "class.kbq-inline-edit_with-menu": "!!menu()", "class.kbq-inline-edit_disabled": "disabled()" }, classAttribute: "kbq-inline-edit" }, queries: [{ propertyName: "menu", first: true, predicate: KbqInlineEditMenu, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: KbqLabel, descendants: true, isSignal: true }, { propertyName: "formFieldRef", first: true, predicate: KbqFormField, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true, isSignal: true }, { propertyName: "tooltipTrigger", first: true, predicate: KbqTooltipTrigger, descendants: true, isSignal: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "regionItems", predicate: KbqFocusRegionItem, descendants: true, isSignal: true }], exportAs: ["kbqInlineEdit"], hostDirectives: [{ directive: i1.KbqFocusMonitor }], ngImport: i0, template: "@if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n}\n\n<div class=\"kbq-inline-edit__view-container\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n\n <div\n #overlayOrigin\n class=\"kbq-inline-edit__focus_container kbq-inline-edit__overlay-origin\"\n cdkMonitorElementFocus\n cdkOverlayOrigin\n [tabIndex]=\"tabIndex()\"\n (keydown.enter)=\"onClick($event)\"\n ></div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"save($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div\n class=\"kbq-inline-edit__control-container\"\n kbqFocusRegionItem\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button\n kbqFocusRegionItem\n kbq-button\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n (keydown.enter)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n </ng-template>\n</div>\n", styles: [".kbq-inline-edit{display:flex;flex-direction:column;justify-content:center;border-radius:var(--kbq-size-border-radius);padding:var(--kbq-inline-edit-padding-vertical) var(--kbq-inline-edit-padding-horizontal);min-height:var(--kbq-inline-edit-height);box-sizing:border-box;font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):hover{--kbq-inline-edit-background: var(--kbq-states-background-transparent-hover);--kbq-mask-background: var(--kbq-states-background-contrast-less-hover);cursor:pointer}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):active,.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):has(.kbq-inline-edit__menu.kbq-active){--kbq-inline-edit-background: var(--kbq-states-background-transparent-active);--kbq-mask-background: var(--kbq-states-background-contrast-less-active)}.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:hover,.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:has(.kbq-inline-edit__menu.kbq-active){--kbq-mask-background: var(--kbq-background-bg)}.kbq-inline-edit .kbq-label{color:var(--kbq-inline-edit-label-color)}.kbq-inline-edit .kbq-inline-edit__focus_container{background:var(--kbq-inline-edit-background);border-color:var(--kbq-inline-edit-background)}.kbq-inline-edit .kbq-inline-edit__focus_container:focus-visible{outline:none}.kbq-inline-edit .kbq-inline-edit__focus_container.cdk-keyboard-focused{outline:1px solid var(--kbq-states-line-focus-theme);border-color:var(--kbq-states-line-focus-theme)}.kbq-inline-edit:not(.kbq-inline-edit_with-label){--kbq-inline-edit-padding-horizontal: calc(var(--kbq-size-m) - var(--kbq-size-border-width))}.kbq-inline-edit.kbq-inline-edit_with-label{padding-top:var(--kbq-inline-edit-padding-vertical);padding-bottom:var(--kbq-inline-edit-padding-vertical)}.kbq-inline-edit.kbq-inline-edit_with-label.kbq-inline-edit_edit .kbq-inline-edit__view-container{position:relative}.kbq-inline-edit.kbq-inline-edit_with-label .kbq-inline-edit__label{margin-bottom:var(--kbq-size-3xs)}.kbq-inline-edit.kbq-inline-edit_view .kbq-inline-edit__view-container{text-overflow:ellipsis}.kbq-inline-edit:hover .kbq-inline-edit__menu-mask,.kbq-inline-edit.cdk-keyboard-focused .kbq-inline-edit__menu-mask{opacity:1}.kbq-inline-edit .kbq-inline-edit__placeholder{color:var(--kbq-foreground-contrast-secondary)}.kbq-inline-edit{position:relative}.kbq-inline-edit .kbq-mask{display:flex;position:absolute;top:0;right:0}.kbq-inline-edit .kbq-mask .kbq-mask__fade{background:var(--kbq-mask-background, transparent);mask-image:linear-gradient(90deg,transparent,var(--kbq-black-default))}.kbq-inline-edit .kbq-mask .kbq-mask__container{background:var(--kbq-mask-background, transparent)}.kbq-inline-edit .kbq-inline-edit__menu-mask{opacity:0;height:100%;justify-content:flex-end;border-top-right-radius:var(--kbq-size-border-radius);border-bottom-right-radius:var(--kbq-size-border-radius)}.kbq-inline-edit .kbq-inline-edit__menu-mask:has(.kbq-inline-edit__menu.kbq-pressed,.kbq-inline-edit__menu.cdk-keyboard-focused){opacity:1}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-fade{width:32px}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-container{display:flex;justify-content:flex-end;min-width:40px;border-radius:inherit}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu{display:inline-flex;align-self:flex-start;padding:var(--kbq-size-s);z-index:2}.kbq-inline-edit .kbq-inline-edit__focus_container{position:absolute;top:0;left:0;width:calc(100% - 2 * var(--kbq-size-border-width));height:calc(100% - 2 * var(--kbq-size-border-width));border:var(--kbq-size-border-width) solid transparent;border-radius:var(--kbq-size-border-radius);z-index:1}.kbq-inline-edit__panel{width:100%}.kbq-inline-edit__panel .kbq-inline-edit__control-container{border-radius:var(--kbq-size-border-radius)}.kbq-inline-edit__panel .kbq-inline-edit__action-buttons{position:absolute;left:calc(-1 * var(--kbq-inline-edit-padding-horizontal));display:inline-flex;flex-direction:row;gap:var(--kbq-size-xxs);padding:var(--kbq-size-xxs) var(--kbq-size-s) var(--kbq-size-s)}.kbq-inline-edit__panel .kbq-inline-edit__control-container,.kbq-inline-edit__panel .kbq-inline-edit__action-buttons>.kbq-button-icon{box-shadow:var(--kbq-shadow-popup)}\n", ":where(.kbq-inline-edit,.kbq-inline-edit__panel){--kbq-inline-edit-background: transparent;--kbq-inline-edit-height: var(--kbq-size-3xl);--kbq-inline-edit-padding-horizontal: var(--kbq-size-s);--kbq-inline-edit-padding-vertical: 5px;--kbq-inline-edit-panel-shadow: var(--kbq-shadow-popup);--kbq-inline-edit-label-color: var(--kbq-foreground-contrast-secondary)}\n"], dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "directive", type: KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "directive", type: KbqFocusRegionItem, selector: "[kbqFocusRegionItem]", outputs: ["tabOut"], exportAs: ["kbqFocusRegionItem"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
355
|
+
}
|
|
356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEdit, decorators: [{
|
|
357
|
+
type: Component,
|
|
358
|
+
args: [{ standalone: true, selector: 'kbq-inline-edit', exportAs: 'kbqInlineEdit', host: {
|
|
359
|
+
class: baseClass,
|
|
360
|
+
'[class]': 'className()',
|
|
361
|
+
'[class.kbq-inline-edit_with-label]': '!!label()',
|
|
362
|
+
'[class.kbq-inline-edit_with-menu]': '!!menu()',
|
|
363
|
+
'[class.kbq-inline-edit_disabled]': 'disabled()',
|
|
364
|
+
'(click)': 'onClick($event)',
|
|
365
|
+
'(keydown.enter)': 'onClick($event)',
|
|
366
|
+
'(keydown.space)': 'onClick($event)'
|
|
367
|
+
}, hostDirectives: [KbqFocusMonitor], imports: [
|
|
368
|
+
CdkConnectedOverlay,
|
|
369
|
+
CdkOverlayOrigin,
|
|
370
|
+
KbqButtonModule,
|
|
371
|
+
KbqIcon,
|
|
372
|
+
KbqTooltipTrigger,
|
|
373
|
+
KbqFocusRegionItem,
|
|
374
|
+
CdkTrapFocus,
|
|
375
|
+
CdkMonitorFocus
|
|
376
|
+
], animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n}\n\n<div class=\"kbq-inline-edit__view-container\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n\n <div\n #overlayOrigin\n class=\"kbq-inline-edit__focus_container kbq-inline-edit__overlay-origin\"\n cdkMonitorElementFocus\n cdkOverlayOrigin\n [tabIndex]=\"tabIndex()\"\n (keydown.enter)=\"onClick($event)\"\n ></div>\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"save($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"kbq-inline-edit__panel\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div\n class=\"kbq-inline-edit__control-container\"\n kbqFocusRegionItem\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n <button\n kbqFocusRegionItem\n kbq-button\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n (keydown.enter)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n }\n </div>\n </ng-template>\n</div>\n", styles: [".kbq-inline-edit{display:flex;flex-direction:column;justify-content:center;border-radius:var(--kbq-size-border-radius);padding:var(--kbq-inline-edit-padding-vertical) var(--kbq-inline-edit-padding-horizontal);min-height:var(--kbq-inline-edit-height);box-sizing:border-box;font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):hover{--kbq-inline-edit-background: var(--kbq-states-background-transparent-hover);--kbq-mask-background: var(--kbq-states-background-contrast-less-hover);cursor:pointer}.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):active,.kbq-inline-edit.kbq-inline-edit_view:not(.kbq-inline-edit_disabled):has(.kbq-inline-edit__menu.kbq-active){--kbq-inline-edit-background: var(--kbq-states-background-transparent-active);--kbq-mask-background: var(--kbq-states-background-contrast-less-active)}.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:hover,.kbq-inline-edit.kbq-inline-edit_view.kbq-inline-edit_disabled:has(.kbq-inline-edit__menu.kbq-active){--kbq-mask-background: var(--kbq-background-bg)}.kbq-inline-edit .kbq-label{color:var(--kbq-inline-edit-label-color)}.kbq-inline-edit .kbq-inline-edit__focus_container{background:var(--kbq-inline-edit-background);border-color:var(--kbq-inline-edit-background)}.kbq-inline-edit .kbq-inline-edit__focus_container:focus-visible{outline:none}.kbq-inline-edit .kbq-inline-edit__focus_container.cdk-keyboard-focused{outline:1px solid var(--kbq-states-line-focus-theme);border-color:var(--kbq-states-line-focus-theme)}.kbq-inline-edit:not(.kbq-inline-edit_with-label){--kbq-inline-edit-padding-horizontal: calc(var(--kbq-size-m) - var(--kbq-size-border-width))}.kbq-inline-edit.kbq-inline-edit_with-label{padding-top:var(--kbq-inline-edit-padding-vertical);padding-bottom:var(--kbq-inline-edit-padding-vertical)}.kbq-inline-edit.kbq-inline-edit_with-label.kbq-inline-edit_edit .kbq-inline-edit__view-container{position:relative}.kbq-inline-edit.kbq-inline-edit_with-label .kbq-inline-edit__label{margin-bottom:var(--kbq-size-3xs)}.kbq-inline-edit.kbq-inline-edit_view .kbq-inline-edit__view-container{text-overflow:ellipsis}.kbq-inline-edit:hover .kbq-inline-edit__menu-mask,.kbq-inline-edit.cdk-keyboard-focused .kbq-inline-edit__menu-mask{opacity:1}.kbq-inline-edit .kbq-inline-edit__placeholder{color:var(--kbq-foreground-contrast-secondary)}.kbq-inline-edit{position:relative}.kbq-inline-edit .kbq-mask{display:flex;position:absolute;top:0;right:0}.kbq-inline-edit .kbq-mask .kbq-mask__fade{background:var(--kbq-mask-background, transparent);mask-image:linear-gradient(90deg,transparent,var(--kbq-black-default))}.kbq-inline-edit .kbq-mask .kbq-mask__container{background:var(--kbq-mask-background, transparent)}.kbq-inline-edit .kbq-inline-edit__menu-mask{opacity:0;height:100%;justify-content:flex-end;border-top-right-radius:var(--kbq-size-border-radius);border-bottom-right-radius:var(--kbq-size-border-radius)}.kbq-inline-edit .kbq-inline-edit__menu-mask:has(.kbq-inline-edit__menu.kbq-pressed,.kbq-inline-edit__menu.cdk-keyboard-focused){opacity:1}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-fade{width:32px}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu-mask-container{display:flex;justify-content:flex-end;min-width:40px;border-radius:inherit}.kbq-inline-edit .kbq-inline-edit__menu-mask .kbq-inline-edit__menu{display:inline-flex;align-self:flex-start;padding:var(--kbq-size-s);z-index:2}.kbq-inline-edit .kbq-inline-edit__focus_container{position:absolute;top:0;left:0;width:calc(100% - 2 * var(--kbq-size-border-width));height:calc(100% - 2 * var(--kbq-size-border-width));border:var(--kbq-size-border-width) solid transparent;border-radius:var(--kbq-size-border-radius);z-index:1}.kbq-inline-edit__panel{width:100%}.kbq-inline-edit__panel .kbq-inline-edit__control-container{border-radius:var(--kbq-size-border-radius)}.kbq-inline-edit__panel .kbq-inline-edit__action-buttons{position:absolute;left:calc(-1 * var(--kbq-inline-edit-padding-horizontal));display:inline-flex;flex-direction:row;gap:var(--kbq-size-xxs);padding:var(--kbq-size-xxs) var(--kbq-size-s) var(--kbq-size-s)}.kbq-inline-edit__panel .kbq-inline-edit__control-container,.kbq-inline-edit__panel .kbq-inline-edit__action-buttons>.kbq-button-icon{box-shadow:var(--kbq-shadow-popup)}\n", ":where(.kbq-inline-edit,.kbq-inline-edit__panel){--kbq-inline-edit-background: transparent;--kbq-inline-edit-height: var(--kbq-size-3xl);--kbq-inline-edit-padding-horizontal: var(--kbq-size-s);--kbq-inline-edit-padding-vertical: 5px;--kbq-inline-edit-panel-shadow: var(--kbq-shadow-popup);--kbq-inline-edit-label-color: var(--kbq-foreground-contrast-secondary)}\n"] }]
|
|
377
|
+
}], ctorParameters: () => [] });
|
|
378
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lubGluZS1lZGl0L2lubGluZS1lZGl0LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbmxpbmUtZWRpdC9pbmxpbmUtZWRpdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDSCxrQkFBa0Is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U0FBUyxFQUFFLGlCQUFpQjt3QkFDNUIsaUJBQWlCLEVBQUUsaUJBQWlCO3dCQUNwQyxpQkFBaUIsRUFBRSxpQkFBaUI7cUJBQ3ZDLGtCQUNlLENBQUMsZUFBZSxDQUFDLFdBQ3hCO3dCQUNMLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1osZUFBZTtxQkFDbEIsY0FDVyxDQUFDLHdDQUF3QyxDQUFDLG1CQUNyQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENka01vbml0b3JGb2N1cywgQ2RrVHJhcEZvY3VzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiwgT3ZlcmxheSwgU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgdmlld0NoaWxkLFxuICAgIHZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBLYnFBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBLYnFCdXR0b25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgS2JxQW5pbWF0aW9uQ3VydmVzLFxuICAgIEticUFuaW1hdGlvbkR1cmF0aW9ucyxcbiAgICBLYnFDb21wb25lbnRDb2xvcnMsXG4gICAgS2JxRm9jdXNNb25pdG9yLFxuICAgIFBvcFVwUGxhY2VtZW50c1xufSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFEcm9wZG93blRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgS2JxRm9ybUZpZWxkLCBLYnFMYWJlbCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEticUljb24gfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFTZWxlY3QgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvc2VsZWN0JztcbmltcG9ydCB7IEticVRvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgS2JxVHJlZVNlbGVjdCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90cmVlLXNlbGVjdCc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IEtCUV9JTkxJTkVfRURJVF9BQ1RJT05fQlVUVE9OU19BTklNQVRJT04gPSB0cmlnZ2VyKCdwYW5lbEFuaW1hdGlvbicsIFtcbiAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDAlKScsIG9wYWNpdHk6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICBgJHtLYnFBbmltYXRpb25EdXJhdGlvbnMuSW5zdGFudH0gJHtLYnFBbmltYXRpb25DdXJ2ZXMuRGVjZWxlcmF0aW9uQ3VydmV9YCxcbiAgICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwJSknLCBvcGFjaXR5OiAxIH0pXG4gICAgICAgICldKVxuXG5dKTtcblxuY29uc3QgYmFzZUNsYXNzID0gJ2ticS1pbmxpbmUtZWRpdCc7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUZvY3VzUmVnaW9uSXRlbV0nLFxuICAgIGV4cG9ydEFzOiAna2JxRm9jdXNSZWdpb25JdGVtJyxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZm9jdXNpbiknOiAnaXNGb2N1c2VkID0gdHJ1ZScsXG4gICAgICAgICcoa2V5ZG93bi50YWIpJzogJ29uVGFiT3V0KCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uc2hpZnQudGFiKSc6ICdvblRhYk91dCgkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRm9jdXNSZWdpb25JdGVtIHtcbiAgICByZWFkb25seSB0YWJPdXQgPSBvdXRwdXQ8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIHByb3RlY3RlZCBpc0ZvY3VzZWQgPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBvblRhYk91dChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFiT3V0LmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSAhdGhpcy5pc0ZvY3VzZWQ7XG4gICAgfVxufVxuXG4vKiogRGlyZWN0aXZlIGZvciBlYXN5IHVzaW5nIHN0eWxlcyBvZiBpbmxpbmUgZWRpdCBwbGFjZWhvbGRlciBwdWJsaWNseS4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxSW5saW5lRWRpdFBsYWNlaG9sZGVyXScsXG4gICAgZXhwb3J0QXM6ICdrYnFJbmxpbmVFZGl0UGxhY2Vob2xkZXInLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtaW5saW5lLWVkaXRfX3BsYWNlaG9sZGVyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxSW5saW5lRWRpdFBsYWNlaG9sZGVyIHt9XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgZW5oYW5jZXMgZWxlbWVudCBhY3RpbmcgYXMgZHJvcGRvd24gdHJpZ2dlcixcbiAqIHZpc3VhbGx5IGluZGljYXRpbmcgdGhlIGFjdGl2ZSBzdGF0ZSB3aXRoIHRoZSBga2JxLWFjdGl2ZWAgY2xhc3MuXG4gKiBBbHNvLCBpdCBwcmV2ZW50cyBjbGljay9rZXlkb3duIGV2ZW50cyBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQgdG8gZGlzYWJsZSBtb2RlIHRvZ2dsaW5nIG9mIHBhcmVudCBjb21wb25lbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxSW5saW5lRWRpdE1lbnVdJyxcbiAgICBleHBvcnRBczogJ2ticUlubGluZUVkaXRNZW51JyxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdidXR0b24nLFxuICAgICAgICBjbGFzczogJ2ticS1pbmxpbmUtZWRpdF9fbWVudScsXG4gICAgICAgICdbY2xhc3Mua2JxLWFjdGl2ZV0nOiAnZHJvcGRvd25UcmlnZ2VyPy5vcGVuZWQnLFxuICAgICAgICAnKGNsaWNrKSc6ICckZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCknLFxuICAgICAgICAnKGtleWRvd24uZW50ZXIpJzogJyRldmVudC5zdG9wUHJvcGFnYXRpb24oKScsXG4gICAgICAgICcoa2V5ZG93bi5zcGFjZSknOiAnJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxSW5saW5lRWRpdE1lbnUge1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duVHJpZ2dlciA9IGluamVjdChLYnFEcm9wZG93blRyaWdnZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG59XG5cbi8qKlxuICogQ3VzdG9taXphYmxlIGNvbXBvbmVudCB0aGF0IGVuYWJsZXMgZWRpdC1pbi1wbGFjZSBsb2dpYyBmb3Igc3BlY2lmaWVkIGNvbnRyb2wgYW5kIGl0J3Mgdmlldy5cbiAqIFRoaXMgY29tcG9uZW50IGlzIHByb2plY3RpbmcgZWRpdC92aWV3IG1vZGUgdGVtcGxhdGVzIGFuZCBhZGRzIGtleWJvYXJkL3BvaW50ZXIgaGFuZGxlcnMuXG4gKiBFZGl0IG1vZGUgb3BlbnMgaW4gYSBwb3NpdGlvbmVkIG92ZXJsYXkgdGhhdCBtYXRjaGVzIHRoZSB2aWV3IG1vZGUgd2lkdGggb3IgY2FuIGJlIGN1c3RvbWl6ZWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdrYnEtaW5saW5lLWVkaXQnLFxuICAgIGV4cG9ydEFzOiAna2JxSW5saW5lRWRpdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lubGluZS1lZGl0Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lubGluZS1lZGl0LnNjc3MnLCAnLi9pbmxpbmUtZWRpdC10b2tlbnMuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6IGJhc2VDbGFzcyxcbiAgICAgICAgJ1tjbGFzc10nOiAnY2xhc3NOYW1lKCknLFxuICAgICAgICAnW2NsYXNzLmticS1pbmxpbmUtZWRpdF93aXRoLWxhYmVsXSc6ICchIWxhYmVsKCknLFxuICAgICAgICAnW2NsYXNzLmticS1pbmxpbmUtZWRpdF93aXRoLW1lbnVdJzogJyEhbWVudSgpJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5saW5lLWVkaXRfZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uZW50ZXIpJzogJ29uQ2xpY2soJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93bi5zcGFjZSknOiAnb25DbGljaygkZXZlbnQpJ1xuICAgIH0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtLYnFGb2N1c01vbml0b3JdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgS2JxQnV0dG9uTW9kdWxlLFxuICAgICAgICBLYnFJY29uLFxuICAgICAgICBLYnFUb29sdGlwVHJpZ2dlcixcbiAgICAgICAgS2JxRm9jdXNSZWdpb25JdGVtLFxuICAgICAgICBDZGtUcmFwRm9jdXMsXG4gICAgICAgIENka01vbml0b3JGb2N1c1xuICAgIF0sXG4gICAgYW5pbWF0aW9uczogW0tCUV9JTkxJTkVfRURJVF9BQ1RJT05fQlVUVE9OU19BTklNQVRJT05dLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgS2JxSW5saW5lRWRpdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGticUZvY3VzTW9uaXRvciA9IGluamVjdChLYnFGb2N1c01vbml0b3IsIHsgaG9zdDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgc2F2ZS9jYW5jZWwgYWN0aW9uIGJ1dHRvbnMgaW4gZWRpdCBtb2RlLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2hvd0FjdGlvbnMgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHNob3cgdmFsaWRhdGlvbiBlcnJvciB0b29sdGlwcyBvbiBzYXZlIGF0dGVtcHRzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICByZWFkb25seSBzaG93VG9vbHRpcE9uRXJyb3IgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgICAvKiogQ3VzdG9tIHZhbGlkYXRpb24gdG9vbHRpcCBtZXNzYWdlLiAqL1xuICAgIHJlYWRvbmx5IHZhbGlkYXRpb25Ub29sdGlwID0gaW5wdXQ8c3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgICAvKipcbiAgICAgKiBEaXNhYmxlcyB0aGUgY29tcG9uZW50LCBwcmV2ZW50aW5nIGludGVyYWN0aW9uIGFuZCBtb2RlIHN3aXRjaGluZy4gT25seSBhbGxvd3MgbWVudSBkcm9wZG93bi5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICAgIC8qKiBDdXN0b20gd2lkdGggaW4gcGl4ZWxzIGZvciB0aGUgZWRpdCBtb2RlIG92ZXJsYXkuIEF1dG8tY2FsY3VsYXRlZCBpZiBub3Qgc2V0LiAqL1xuICAgIHJlYWRvbmx5IGVkaXRNb2RlV2lkdGggPSBpbnB1dCh1bmRlZmluZWQsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG4gICAgLyoqIFVzZXItZGVmaW5lZCB0b29sdGlwIHBsYWNlbWVudCAqL1xuICAgIHJlYWRvbmx5IHRvb2x0aXBQbGFjZW1lbnQgPSBpbnB1dDxQb3BVcFBsYWNlbWVudHM+KCk7XG4gICAgLyoqIEhhbmRsZXIgZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgKi9cbiAgICByZWFkb25seSBnZXRWYWx1ZUhhbmRsZXIgPSBpbnB1dDwoKSA9PiB1bmtub3duPigpO1xuICAgIC8qKiBIYW5kbGVyIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmFsdWUgKi9cbiAgICByZWFkb25seSBzZXRWYWx1ZUhhbmRsZXIgPSBpbnB1dDwodmFsdWU6IGFueSkgPT4gdm9pZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGlubGluZSBlZGl0IGlzIHNhdmVkIHN1Y2Nlc3NmdWxseS4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2F2ZWQgPSBvdXRwdXQoKTtcbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbmxpbmUgZWRpdCBpcyBjYW5jZWxlZCBhbmQgY2hhbmdlcyBhcmUgZGlzY2FyZGVkLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5jZWxlZCA9IG91dHB1dCgpO1xuICAgIC8qKiBFbWl0dGVkIHdoZW4gbW9kZSBzd2l0Y2hlZCB0byBlZGl0L3ZpZXcgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZUNoYW5nZSA9IG91dHB1dDwndmlldycgfCAnZWRpdCc+KCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtZW51ID0gY29udGVudENoaWxkKEticUlubGluZUVkaXRNZW51KTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsYWJlbCA9IGNvbnRlbnRDaGlsZChLYnFMYWJlbCk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUZpZWxkUmVmID0gY29udGVudENoaWxkKEticUZvcm1GaWVsZCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5T3JpZ2luID0gdmlld0NoaWxkLnJlcXVpcmVkKENka092ZXJsYXlPcmlnaW4pO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvb2x0aXBUcmlnZ2VyID0gdmlld0NoaWxkKEticVRvb2x0aXBUcmlnZ2VyKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5RGlyID0gdmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXkpO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlZ2lvbkl0ZW1zID0gdmlld0NoaWxkcmVuKEticUZvY3VzUmVnaW9uSXRlbSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtb2RlID0gc2lnbmFsPCd2aWV3JyB8ICdlZGl0Jz4oJ3ZpZXcnKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5V2lkdGggPSBzaWduYWw8bnVtYmVyIHwgc3RyaW5nPignJyk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3kgPSBzaWduYWw8U2Nyb2xsU3RyYXRlZ3k+KHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBtb2RlQXNSZWFkb25seSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubW9kZSgpKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsYXNzTmFtZSA9IGNvbXB1dGVkKCgpID0+IGAke2Jhc2VDbGFzc31fJHt0aGlzLm1vZGUoKX1gKTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0VkaXRNb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlKCkgPT09ICdlZGl0Jyk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFiSW5kZXggPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pc0VkaXRNb2RlKCkgfHwgdGhpcy5kaXNhYmxlZCgpID8gLTEgOiAwKSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwbGFjZW1lbnRzID0gUG9wVXBQbGFjZW1lbnRzO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sb3JzID0gS2JxQ29tcG9uZW50Q29sb3JzO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsVmFsdWU6IHVua25vd247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdG9PYnNlcnZhYmxlKHRoaXMubW9kZSlcbiAgICAgICAgICAgIC5waXBlKHNraXAoMSksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY3VycmVudE1vZGUpID0+IHRoaXMubW9kZUNoYW5nZS5lbWl0KGN1cnJlbnRNb2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgdG9nZ2xlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlLnVwZGF0ZSgobW9kZSkgPT4gKG1vZGUgPT09ICd2aWV3JyA/ICdlZGl0JyA6ICd2aWV3JykpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5pc0VkaXRNb2RlKCkpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5rYnFGb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5vdmVybGF5T3JpZ2luKCkuZWxlbWVudFJlZiwgJ3Byb2dyYW0nKTtcblxuICAgICAgICB0aGlzLnRvZ2dsZU1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvbkF0dGFjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRPdmVybGF5V2lkdGgoKTtcbiAgICAgICAgdGhpcy5zZXRPdmVybGF5S2V5ZG93bkxpc3RlbmVyKCk7XG5cbiAgICAgICAgY29uc3QgZm9ybUZpZWxkUmVmID0gdGhpcy5mb3JtRmllbGRSZWYoKTtcblxuICAgICAgICBmb3JtRmllbGRSZWY/LmNvbnRyb2wuc3RhdGVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vdmVybGF5RGlyKCkhLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNJbnZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9vbHRpcFRyaWdnZXIgPSB0aGlzLnRvb2x0aXBUcmlnZ2VyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFRyaWdnZXI/LmlzT3BlbiAmJiB0b29sdGlwVHJpZ2dlcj8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZm9ybUZpZWxkUmVmPy5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlKSBpbnB1dD8uc2VsZWN0KCk7XG5cbiAgICAgICAgICAgIGlmIChmb3JtRmllbGRSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5QYW5lbChmb3JtRmllbGRSZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBzYXZlKCRldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSW52YWxpZCgpKSB7XG4gICAgICAgICAgICAkZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5zaG93VG9vbHRpcE9uRXJyb3IoKSAmJiB0aGlzLnRvb2x0aXBUcmlnZ2VyKCk/LnNob3coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5zYXZlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5pbml0aWFsVmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTtcblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gaW5wdXQuc2VsZWN0aW9uRW5kID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlTW9kZSgpO1xuICAgICAgICB0aGlzLmNhbmNlbGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvbk92ZXJsYXlLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0LCBrZXkgfSA9IGV2ZW50O1xuXG4gICAgICAgIHRoaXMuZm9ybUZpZWxkUmVmKCk/LmNvbnRyb2wubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOiB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnY3RybEtleScsICdtZXRhS2V5JykgfHwgISh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1GaWVsZFJlZigpPy5jb250cm9sLm5nQ29udHJvbD8uY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2F2ZShldmVudCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdXAgVGFiIGtleSBsaXN0ZW5lcnMgb24gcmVnaW9uIGl0ZW1zLlxuICAgICAqIFNpbmdsZSBpdGVtOiBUYWIgbW92ZXMgdG8gbmV4dCBlZGl0LlxuICAgICAqIE11bHRpcGxlIGl0ZW1zOiBTaGlmdCtUYWIgb24gZmlyc3Qgb3IgVGFiIG9uIGxhc3QgbW92ZXMgdG8gbmV4dCBlZGl0LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0T3ZlcmxheUtleWRvd25MaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVnaW9uSXRlbXMgPSB0aGlzLnJlZ2lvbkl0ZW1zKCk7XG5cbiAgICAgICAgaWYgKHJlZ2lvbkl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0SXRlbSA9IHJlZ2lvbkl0ZW1zLmF0KDApO1xuICAgICAgICBjb25zdCBsYXN0SXRlbSA9IHJlZ2lvbkl0ZW1zLmF0KHJlZ2lvbkl0ZW1zLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgIGlmIChyZWdpb25JdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGZpcnN0SXRlbT8udGFiT3V0LnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuc2F2ZUFuZEZvY3VzTmV4dElubGluZUVkaXQoZXZlbnQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpcnN0SXRlbT8udGFiT3V0LnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnc2hpZnRLZXknKSAmJiB0aGlzLnNhdmVBbmRGb2N1c05leHRJbmxpbmVFZGl0KGV2ZW50KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGFzdEl0ZW0/LnRhYk91dC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGV2ZW50KSA9PiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdzaGlmdEtleScpICYmIHRoaXMuc2F2ZUFuZEZvY3VzTmV4dElubGluZUVkaXQoZXZlbnQpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlQW5kRm9jdXNOZXh0SW5saW5lRWRpdChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhdmUoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5pc0ludmFsaWQoKSkgcmV0dXJuO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdD8uY29udGFpbnMoJ2ticS1pbmxpbmUtZWRpdF9fZm9jdXNfY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB7IGtleTogJ0VudGVyJyB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtRmllbGRSZWYgPSB0aGlzLmZvcm1GaWVsZFJlZigpO1xuXG4gICAgICAgIGlmICghZm9ybUZpZWxkUmVmKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1GaWVsZFJlZi5pbnZhbGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IGdldFZhbHVlSGFuZGxlciA9IHRoaXMuZ2V0VmFsdWVIYW5kbGVyKCk7XG5cbiAgICAgICAgaWYgKGdldFZhbHVlSGFuZGxlcikgcmV0dXJuIGdldFZhbHVlSGFuZGxlcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvZXJjZUNvbnRyb2woKTtcblxuICAgICAgICByZXR1cm4gY29udHJvbD8udmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZTxUPih2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZXRWYWx1ZSA9IHRoaXMuc2V0VmFsdWVIYW5kbGVyKCk7XG5cbiAgICAgICAgaWYgKHNldFZhbHVlKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZSh0aGlzLmluaXRpYWxWYWx1ZSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvZXJjZUNvbnRyb2woKTtcblxuICAgICAgICBpZiAoIWNvbnRyb2wpIHJldHVybjtcblxuICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEFic3RyYWN0Q29udHJvbCkge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvZXJjZUNvbnRyb2woKSB7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZFJlZiA9IHRoaXMuZm9ybUZpZWxkUmVmKCk7XG5cbiAgICAgICAgaWYgKCFmb3JtRmllbGRSZWYpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGlmIChmb3JtRmllbGRSZWYuY29udHJvbC5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBOZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtRmllbGRSZWYuY29udHJvbC5uZ0NvbnRyb2wuY29udHJvbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtRmllbGRSZWYuY29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE92ZXJsYXlXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWRpdE1vZGVXaWR0aCA9IHRoaXMuZWRpdE1vZGVXaWR0aCgpO1xuXG4gICAgICAgIGlmIChlZGl0TW9kZVdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlXaWR0aC5zZXQoZWRpdE1vZGVXaWR0aCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkID0gdGhpcy5sYWJlbCgpXG4gICAgICAgICAgICA/IHRoaXMub3ZlcmxheU9yaWdpbigpLmVsZW1lbnRSZWZcbiAgICAgICAgICAgIDogdGhpcy5lbGVtZW50UmVmO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVdpZHRoLnNldChlbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoID8/ICcnKTtcbiAgICB9XG5cbiAgICAvLyBAVE9ETyByZWZhY3RvciB0aGlzICgjRFMtNDE4MSlcbiAgICBwcml2YXRlIG9wZW5QYW5lbChmb3JtRmllbGRSZWY6IEticUZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUZpZWxkUmVmLmNvbnRyb2w7XG5cbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBLYnFTZWxlY3QgfHwgY29udHJvbCBpbnN0YW5jZW9mIEticVRyZWVTZWxlY3QpIHtcbiAgICAgICAgICAgIGNvbnRyb2wub3BlbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBLYnFBdXRvY29tcGxldGVUcmlnZ2VyKSB7XG4gICAgICAgICAgICBjb250cm9sLm9wZW5QYW5lbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJbnB1dE5hdGl2ZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheURpcigpPy5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Om5vdChbdHlwZT1cImZpbGVcIl0pLHRleHRhcmVhJykgPz8gbnVsbDtcbiAgICB9XG59XG4iLCJAaWYgKGxhYmVsKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19sYWJlbFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtbGFiZWxcIiAvPlxuICAgIDwvZGl2PlxufVxuXG48ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X192aWV3LWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnFJbmxpbmVFZGl0Vmlld01vZGVdXCIgLz5cblxuICAgIDxkaXZcbiAgICAgICAgI292ZXJsYXlPcmlnaW5cbiAgICAgICAgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX2ZvY3VzX2NvbnRhaW5lciBrYnEtaW5saW5lLWVkaXRfX292ZXJsYXktb3JpZ2luXCJcbiAgICAgICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1c1xuICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICBAaWYgKG1lbnUoKSAmJiBtb2RlKCkgPT09ICd2aWV3Jykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19tZW51LW1hc2sga2JxLW1hc2tcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX21lbnUtbWFzay1mYWRlIGticS1tYXNrX19mYWRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWlubGluZS1lZGl0X19tZW51LW1hc2stY29udGFpbmVyIGticS1tYXNrX19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxSW5saW5lRWRpdE1lbnVdXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgICBjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0VkaXRNb2RlKClcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvdmVybGF5T3JpZ2luXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZXT1cIi1vdmVybGF5T3JpZ2luLm9mZnNldEhlaWdodFwiXG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwib3ZlcmxheVdpZHRoKClcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheURpc2FibGVDbG9zZV09XCJ0cnVlXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneV09XCJzY3JvbGxTdHJhdGVneSgpXCJcbiAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJmYWxzZVwiXG4gICAgICAgIChhdHRhY2gpPVwib25BdHRhY2goKVwiXG4gICAgICAgIChvdmVybGF5T3V0c2lkZUNsaWNrKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAgIChvdmVybGF5S2V5ZG93bik9XCJvbk92ZXJsYXlLZXlkb3duKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1pbmxpbmUtZWRpdF9fcGFuZWxcIiBjZGtUcmFwRm9jdXMgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX2NvbnRyb2wtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICBrYnFGb2N1c1JlZ2lvbkl0ZW1cbiAgICAgICAgICAgICAgICBba2JxVG9vbHRpcENvbG9yXT1cImNvbG9ycy5FcnJvclwiXG4gICAgICAgICAgICAgICAgW2ticVRvb2x0aXBdPVwidmFsaWRhdGlvblRvb2x0aXAoKSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgW2ticVRvb2x0aXBBcnJvd109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2ticVRyaWdnZXJdPVwiJ21hbnVhbCdcIlxuICAgICAgICAgICAgICAgIFtrYnFQbGFjZW1lbnRdPVwidG9vbHRpcFBsYWNlbWVudCgpID8/IHBsYWNlbWVudHMuVG9wTGVmdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticUlubGluZUVkaXRFZGl0TW9kZV1cIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAoc2hvd0FjdGlvbnMoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtaW5saW5lLWVkaXRfX2FjdGlvbi1idXR0b25zXCIgcm9sZT1cImdyb3VwXCIgW0BwYW5lbEFuaW1hdGlvbl0+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24ga2JxLWJ1dHRvbiBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiIChjbGljayk9XCJzYXZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLWNoZWNrXzE2XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAga2JxRm9jdXNSZWdpb25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBrYnEtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0LWZhZGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLXhtYXJrXzE2XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29vYmlxLWNvbXBvbmVudHMtaW5saW5lLWVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2lubGluZS1lZGl0L2tvb2JpcS1jb21wb25lbnRzLWlubGluZS1lZGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { KbqInlineEdit, KbqInlineEditMenu, KbqInlineEditPlaceholder } from './inline-edit';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const COMPONENTS = [
|
|
5
|
+
KbqInlineEdit,
|
|
6
|
+
KbqInlineEditPlaceholder,
|
|
7
|
+
KbqInlineEditMenu
|
|
8
|
+
];
|
|
9
|
+
export class KbqInlineEditModule {
|
|
10
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditModule, imports: [KbqInlineEdit,
|
|
12
|
+
KbqInlineEditPlaceholder,
|
|
13
|
+
KbqInlineEditMenu], exports: [KbqInlineEdit,
|
|
14
|
+
KbqInlineEditPlaceholder,
|
|
15
|
+
KbqInlineEditMenu] }); }
|
|
16
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditModule, imports: [KbqInlineEdit] }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqInlineEditModule, decorators: [{
|
|
19
|
+
type: NgModule,
|
|
20
|
+
args: [{
|
|
21
|
+
imports: COMPONENTS,
|
|
22
|
+
exports: COMPONENTS
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9pbmxpbmUtZWRpdC9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzRixNQUFNLFVBQVUsR0FBRztJQUNmLGFBQWE7SUFDYix3QkFBd0I7SUFDeEIsaUJBQWlCO0NBQ3BCLENBQUM7QUFNRixNQUFNLE9BQU8sbUJBQW1CO2tJQUFuQixtQkFBbUI7bUlBQW5CLG1CQUFtQixZQVQ1QixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGlCQUFpQixhQUZqQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGlCQUFpQjttSUFPUixtQkFBbUIsWUFUNUIsYUFBYTs7NEZBU0osbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxVQUFVO29CQUNuQixPQUFPLEVBQUUsVUFBVTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2JxSW5saW5lRWRpdCwgS2JxSW5saW5lRWRpdE1lbnUsIEticUlubGluZUVkaXRQbGFjZWhvbGRlciB9IGZyb20gJy4vaW5saW5lLWVkaXQnO1xuXG5jb25zdCBDT01QT05FTlRTID0gW1xuICAgIEticUlubGluZUVkaXQsXG4gICAgS2JxSW5saW5lRWRpdFBsYWNlaG9sZGVyLFxuICAgIEticUlubGluZUVkaXRNZW51XG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IENPTVBPTkVOVFMsXG4gICAgZXhwb3J0czogQ09NUE9ORU5UU1xufSlcbmV4cG9ydCBjbGFzcyBLYnFJbmxpbmVFZGl0TW9kdWxlIHt9XG4iXX0=
|
|
@@ -28,10 +28,10 @@ export class MinValidator {
|
|
|
28
28
|
createValidator() {
|
|
29
29
|
this.validator = Validators.min(parseInt(this.min, 10));
|
|
30
30
|
}
|
|
31
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
32
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
31
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
32
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: MinValidator, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
|
|
33
33
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MinValidator, decorators: [{
|
|
35
35
|
type: Directive,
|
|
36
36
|
args: [{
|
|
37
37
|
selector: '[min][formControlName],[min][formControl],[min][ngModel]',
|
|
@@ -70,10 +70,10 @@ export class MaxValidator {
|
|
|
70
70
|
createValidator() {
|
|
71
71
|
this.validator = Validators.max(parseInt(this.max, 10));
|
|
72
72
|
}
|
|
73
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
74
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
73
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
74
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: MaxValidator, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }
|
|
75
75
|
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaxValidator, decorators: [{
|
|
77
77
|
type: Directive,
|
|
78
78
|
args: [{
|
|
79
79
|
selector: '[max][formControlName],[max][formControl],[max][ngModel]',
|