@koobiq/components 18.35.0 → 18.37.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/autocomplete/autocomplete.scss +2 -17
- package/badge/badge.component.d.ts +1 -1
- package/badge/badge.component.scss +2 -0
- package/breadcrumbs/breadcrumbs.d.ts +2 -1
- package/breadcrumbs/breadcrumbs.scss +8 -4
- package/button/button.component.d.ts +3 -2
- package/button-toggle/button-toggle.scss +0 -2
- package/content-panel/content-panel.d.ts +1 -1
- package/content-panel/index.d.ts +0 -1
- 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/hover.d.ts +15 -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/formatters.d.ts +0 -72
- package/core/locales/index.d.ts +0 -2
- package/core/locales/locale-service.d.ts +292 -250
- 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/navbar/rectangle-item.d.ts +1 -1
- package/core/option/action.d.ts +1 -1
- package/core/option/option.d.ts +3 -2
- 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 +6 -1
- package/core/select/constants.d.ts +5 -0
- package/core/styles/common/_select.scss +25 -0
- package/core/styles/typography/_typography.scss +23 -82
- package/core/utils/dom.d.ts +1 -6
- package/datepicker/datepicker-module.d.ts +2 -1
- package/divider/divider.scss +1 -0
- package/dropdown/dropdown-item.scss +8 -7
- package/dropdown/dropdown.component.d.ts +5 -1
- package/dropdown/dropdown.module.d.ts +1 -1
- package/dropdown/dropdown.scss +5 -14
- 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 +7 -7
- 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 +58 -49
- package/esm2022/breadcrumbs/breadcrumbs.module.mjs +4 -4
- package/esm2022/button/button.component.mjs +12 -10
- 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 +8 -8
- 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 +12 -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 +26 -26
- package/esm2022/content-panel/index.mjs +1 -2
- package/esm2022/content-panel/module.mjs +4 -4
- package/esm2022/core/common-behaviors/clipboard.mjs +4 -4
- package/esm2022/core/common-behaviors/color.mjs +7 -7
- package/esm2022/core/common-behaviors/common-module.mjs +6 -5
- package/esm2022/core/common-behaviors/disabled.mjs +2 -1
- package/esm2022/core/common-behaviors/error-state.mjs +2 -1
- package/esm2022/core/common-behaviors/focus-monitor.mjs +37 -0
- package/esm2022/core/common-behaviors/hover.mjs +34 -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/common-behaviors/tabindex.mjs +2 -1
- package/esm2022/core/error/error-state-matcher.mjs +9 -9
- package/esm2022/core/form-field/field-sizing-content.mjs +8 -5
- 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 +14 -14
- 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 +114 -10
- package/esm2022/core/locales/formatters.mjs +1 -73
- package/esm2022/core/locales/index.mjs +1 -3
- package/esm2022/core/locales/locale-service.mjs +5 -11
- package/esm2022/core/locales/locale-service.module.mjs +4 -4
- package/esm2022/core/locales/pt-BR.mjs +123 -19
- package/esm2022/core/locales/ru-RU.mjs +119 -1
- package/esm2022/core/locales/tk-TM.mjs +128 -24
- package/esm2022/core/locales/types.mjs +1 -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 +13 -9
- package/esm2022/core/pop-up/constants.mjs +2 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +7 -6
- package/esm2022/core/pop-up/pop-up.mjs +4 -4
- package/esm2022/core/select/common.mjs +35 -19
- 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 +7 -6
- 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 +11 -8
- 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 +5 -5
- 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 +12 -9
- 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 +7 -5
- 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 +20 -13
- package/esm2022/file-upload/single-file-upload.component.mjs +19 -6
- package/esm2022/filter-bar/filter-bar-button.mjs +3 -3
- package/esm2022/filter-bar/filter-bar.mjs +8 -4
- 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 +6 -6
- package/esm2022/filter-bar/filters.mjs +12 -7
- package/esm2022/filter-bar/pipe-add.mjs +6 -5
- package/esm2022/filter-bar/pipe.directive.mjs +3 -3
- package/esm2022/filter-bar/pipes/base-pipe.mjs +17 -9
- 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 +15 -9
- 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 +26 -21
- 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 +44 -13
- 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 +382 -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 +10 -9
- package/esm2022/input/input-password.mjs +4 -4
- package/esm2022/input/input.mjs +7 -7
- package/esm2022/input/input.module.mjs +11 -8
- package/esm2022/link/link.component.mjs +6 -6
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/list-selection.component.mjs +40 -24
- 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 +10 -10
- 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-util.mjs +7 -3
- package/esm2022/modal/modal.component.mjs +5 -5
- package/esm2022/modal/modal.directive.mjs +12 -12
- package/esm2022/modal/modal.module.mjs +4 -4
- package/esm2022/modal/modal.service.mjs +5 -4
- package/esm2022/navbar/navbar-item.component.mjs +53 -44
- package/esm2022/navbar/navbar.component.mjs +17 -13
- package/esm2022/navbar/navbar.module.mjs +4 -4
- package/esm2022/navbar/vertical-navbar.component.mjs +6 -6
- package/esm2022/navbar-ic/navbar-ic-header.mjs +25 -9
- package/esm2022/navbar-ic/navbar-ic-item.mjs +35 -44
- package/esm2022/navbar-ic/navbar-ic.animation.mjs +10 -2
- package/esm2022/navbar-ic/navbar-ic.mjs +50 -21
- 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 +31 -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/resizer/index.mjs +3 -0
- package/esm2022/resizer/koobiq-components-resizer.mjs +5 -0
- package/esm2022/resizer/module.mjs +17 -0
- package/esm2022/resizer/resizer.mjs +135 -0
- 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 +7 -6
- 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 +38 -23
- package/esm2022/select/select.module.mjs +12 -8
- package/esm2022/sidebar/sidebar.component.mjs +9 -9
- package/esm2022/sidebar/sidebar.module.mjs +4 -4
- package/esm2022/sidepanel/sidepanel-container.component.mjs +5 -5
- 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 +133 -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 +38 -36
- package/esm2022/tags/tag-list.component.mjs +281 -250
- package/esm2022/tags/tag.component.mjs +206 -140
- package/esm2022/tags/tag.module.mjs +4 -4
- package/esm2022/textarea/textarea.component.mjs +5 -5
- package/esm2022/textarea/textarea.module.mjs +7 -6
- package/esm2022/time-range/constants.mjs +42 -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 +224 -0
- package/esm2022/time-range/time-range-title-as-form-field.mjs +60 -0
- package/esm2022/time-range/time-range-title.mjs +112 -0
- package/esm2022/time-range/time-range.mjs +234 -0
- package/esm2022/time-range/time-range.service.mjs +126 -0
- package/esm2022/time-range/types.mjs +2 -0
- package/esm2022/timepicker/timepicker.directive.mjs +4 -4
- package/esm2022/timepicker/timepicker.module.mjs +9 -8
- package/esm2022/timezone/cities-by-filter.pipe.mjs +3 -3
- package/esm2022/timezone/timezone-option.component.mjs +5 -5
- package/esm2022/timezone/timezone-option.directive.mjs +3 -3
- package/esm2022/timezone/timezone-select.component.mjs +9 -9
- package/esm2022/timezone/timezone.module.mjs +10 -8
- package/esm2022/timezone/utc-offset.pipe.mjs +3 -3
- package/esm2022/title/title.directive.mjs +9 -5
- 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 +6 -6
- 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 +11 -11
- 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 +11 -14
- package/esm2022/tree/tree-selection.component.mjs +26 -16
- package/esm2022/tree/tree.mjs +3 -3
- package/esm2022/tree/tree.module.mjs +4 -4
- package/esm2022/tree-select/tree-select.component.mjs +142 -84
- package/esm2022/tree-select/tree-select.module.mjs +11 -8
- 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 +16 -16
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +14 -14
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +61 -52
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +12 -12
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +18 -16
- 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 +18 -13
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +31 -165
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +962 -581
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +47 -44
- 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 +41 -27
- 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 +11 -8
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +45 -25
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +147 -114
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +100 -73
- 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 +411 -0
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -0
- package/fesm2022/koobiq-components-input.mjs +34 -31
- 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 +49 -33
- 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 +16 -16
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +36 -31
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +122 -81
- package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +77 -64
- 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 +43 -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-resizer.mjs +156 -0
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -0
- package/fesm2022/koobiq-components-risk-level.mjs +7 -7
- package/fesm2022/koobiq-components-scrollbar.mjs +13 -12
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- 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 +51 -33
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +13 -13
- package/fesm2022/koobiq-components-sidepanel.mjs +26 -26
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +155 -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 +522 -428
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +10 -10
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +809 -0
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -0
- package/fesm2022/koobiq-components-timepicker.mjs +11 -11
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +31 -29
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +12 -8
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +28 -21
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +9 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +22 -22
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +15 -15
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +151 -91
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +72 -61
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +27 -27
- package/file-upload/_file-upload-theme.scss +33 -35
- package/file-upload/file-upload-tokens.scss +1 -2
- package/file-upload/file-upload.d.ts +1 -1
- package/file-upload/file-upload.scss +4 -7
- package/file-upload/multiple-file-upload.component.d.ts +2 -1
- package/file-upload/multiple-file-upload.component.scss +12 -14
- package/file-upload/single-file-upload.component.d.ts +2 -0
- package/file-upload/single-file-upload.component.scss +5 -7
- package/filter-bar/filter-bar.d.ts +3 -1
- package/filter-bar/filter-search.scss +1 -3
- package/filter-bar/filters.d.ts +1 -0
- package/filter-bar/pipes/base-pipe.d.ts +6 -2
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +4 -1
- package/filter-bar/pipes/pipe-title.d.ts +2 -0
- package/form-field/fieldset-tokens.scss +1 -0
- package/form-field/form-field-tokens.scss +1 -1
- package/form-field/form-field.d.ts +1 -1
- package/form-field/form-field.scss +7 -7
- package/form-field/password-toggle.d.ts +1 -1
- package/form-field/stepper.d.ts +28 -6
- 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 +140 -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/input/input.module.d.ts +2 -1
- package/link/link.component.d.ts +3 -3
- package/list/list-selection.component.d.ts +13 -2
- package/loader-overlay/loader-overlay.component.d.ts +1 -1
- package/markdown/_markdown-theme.scss +1 -2
- package/markdown/markdown-tokens.scss +1 -0
- package/markdown/markdown.scss +10 -4
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal-util.d.ts +5 -2
- package/modal/modal.component.d.ts +1 -1
- package/modal/modal.scss +3 -4
- package/navbar/_navbar-item_vertical.scss +10 -0
- package/navbar/navbar-brand.scss +5 -2
- 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/vertical-navbar.scss +1 -0
- package/navbar-ic/navbar-ic-header.d.ts +4 -3
- package/navbar-ic/navbar-ic-header.scss +0 -4
- package/navbar-ic/navbar-ic-item.d.ts +3 -2
- package/navbar-ic/navbar-ic-item.scss +0 -4
- package/navbar-ic/navbar-ic.animation.d.ts +1 -0
- package/navbar-ic/navbar-ic.d.ts +11 -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 -4
- package/popover/popover-tokens.scss +1 -0
- package/popover/popover.component.d.ts +9 -1
- package/popover/popover.scss +18 -11
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/resizer/index.d.ts +2 -0
- package/resizer/module.d.ts +7 -0
- package/{content-panel/resizable.d.ts → resizer/resizer.d.ts} +18 -13
- package/schematics/collection.json +5 -0
- package/schematics/migrations/icons-replacement/README.md +93 -0
- package/schematics/migrations/icons-replacement/data.js +92 -0
- package/schematics/migrations/icons-replacement/index.js +84 -0
- package/schematics/migrations/icons-replacement/schema.json +32 -0
- package/schematics/ng-add/index.js +6 -6
- package/scrollbar/scrollbar.component.scss +2 -3
- 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/select/select.module.d.ts +2 -1
- package/select/select.scss +1 -17
- package/sidepanel/sidepanel-tokens.scss +2 -0
- package/sidepanel/sidepanel.scss +2 -0
- package/split-button/_split-button-theme.scss +114 -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 +37 -0
- package/split-button/split-button.module.d.ts +7 -0
- package/split-button/split-button.scss +72 -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 +18 -7
- package/tags/tag-list.component.d.ts +175 -64
- package/tags/tag-list.scss +24 -14
- package/tags/tag-tokens.scss +17 -1
- package/tags/tag.component.d.ts +91 -27
- package/tags/tag.scss +9 -0
- package/textarea/textarea-tokens.scss +6 -1
- package/textarea/textarea.component.d.ts +2 -2
- package/textarea/textarea.module.d.ts +2 -1
- package/textarea/textarea.scss +4 -0
- package/time-range/constants.d.ts +19 -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 +65 -0
- package/time-range/time-range-title-as-form-field.d.ts +41 -0
- package/time-range/time-range-title.d.ts +18 -0
- package/time-range/time-range.d.ts +78 -0
- package/time-range/time-range.scss +66 -0
- package/time-range/time-range.service.d.ts +25 -0
- package/time-range/types.d.ts +69 -0
- package/timepicker/timepicker.directive.d.ts +2 -2
- package/timepicker/timepicker.module.d.ts +2 -1
- package/timezone/timezone-option.component.scss +6 -0
- package/timezone/timezone.module.d.ts +1 -1
- 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/toggle/_toggle-theme.scss +8 -5
- package/toggle/toggle-tokens.scss +0 -1
- package/toggle/toggle.scss +11 -15
- package/top-bar/top-bar-tokens.scss +1 -1
- package/top-bar/top-bar.scss +3 -0
- package/tree/toggle.d.ts +1 -1
- package/tree/tree-base.d.ts +2 -2
- package/tree/tree-option.component.d.ts +2 -1
- package/tree/tree-selection.component.d.ts +12 -3
- package/tree-select/tree-select.component.d.ts +49 -8
- package/tree-select/tree-select.module.d.ts +2 -1
- package/tree-select/tree-select.scss +4 -0
- package/core/locales/fa-IR.d.ts +0 -100
- package/core/locales/zh-CN.d.ts +0 -100
- package/esm2022/content-panel/resizable.mjs +0 -138
- package/esm2022/core/locales/fa-IR.mjs +0 -99
- package/esm2022/core/locales/zh-CN.mjs +0 -99
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"koobiq-components-app-switcher.mjs","sources":["../../../packages/components/app-switcher/app-switcher-animations.ts","../../../packages/components/app-switcher/app-switcher-dropdown-app.ts","../../../packages/components/app-switcher/app-switcher-dropdown-site.ts","../../../packages/components/app-switcher/kbq-app-switcher-list-item.ts","../../../packages/components/app-switcher/app-switcher.ts","../../../packages/components/app-switcher/app-switcher.html","../../../packages/components/app-switcher/app-switcher.module.ts","../../../packages/components/app-switcher/koobiq-components-app-switcher.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationCurves, KbqAnimationDurations } from '@koobiq/components/core';\n\n/** @docs-private */\nexport const kbqAppSwitcherAnimations: {\n readonly state: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions a tooltip in and out. */\n state: trigger('state', [\n state(\n 'initial',\n style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })\n ),\n transition(\n '* => visible',\n animate(\n `120ms ${KbqAnimationCurves.DecelerationCurve}`,\n style({\n opacity: 1,\n transform: 'scale(1, 1)'\n })\n )\n ),\n transition('* => hidden', animate(`${KbqAnimationDurations.Rapid} linear`, style({ opacity: 0 })))\n ])\n};\n","import { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherApp } from './app-switcher';\n\n/** @docs-private */\n@Component({\n standalone: true,\n selector: '[kbq-app-switcher-dropdown-app]',\n exportAs: 'kbqAppSwitcherDropdownApp',\n template: `\n <i class=\"kbq kbq-icon\" [className]=\"\"></i>\n <span class=\"kbq-app-switcher-dropdown-app__icon\" [innerHtml]=\"getIcon(app.icon)\"></span>\n\n <div class=\"kbq-app-switcher-dropdown-app__container\">\n <div class=\"kbq-app-switcher-dropdown-app__name\">\n <span>{{ app.name }}</span>\n\n @if (isNested) {\n <i\n kbq-icon=\"kbq-chevron-right-s_16\"\n class=\"kbq-app-switcher-dropdown-item-trigger__icon\"\n [color]=\"componentColors.ContrastFade\"\n ></i>\n }\n </div>\n @if (app.caption) {\n <div class=\"kbq-app-switcher-dropdown-app__caption\">{{ app.caption }}</div>\n }\n </div>\n `,\n styleUrls: ['app-switcher-dropdown-app.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-dropdown-app',\n '[class.kbq-dropdown-item]': 'false'\n },\n imports: [KbqIcon],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherDropdownApp },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherDropdownApp }\n ]\n})\nexport class KbqAppSwitcherDropdownApp extends KbqDropdownItem {\n private sanitizer = inject(DomSanitizer);\n\n @Input('kbq-app-switcher-dropdown-app') app: KbqAppSwitcherApp;\n\n getIcon(icon: string | null) {\n return this.sanitizer.bypassSecurityTrustHtml(icon || '');\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherSite } from './app-switcher';\n\n/** @docs-private */\n@Component({\n standalone: true,\n selector: '[kbq-app-switcher-dropdown-site]',\n exportAs: 'kbqAppSwitcherDropdownSite',\n template: `\n <span class=\"kbq-app-switcher-dropdown-site__name\">{{ site.name }}</span>\n\n @if (site.status) {\n <kbq-badge class=\"kbq-app-switcher-dropdown-site__badge\" [compact]=\"true\">{{ site.status }}</kbq-badge>\n }\n\n @if (isNested) {\n <i\n kbq-icon=\"kbq-chevron-right-s_16\"\n class=\"kbq-app-switcher-dropdown-item-trigger__icon\"\n [color]=\"componentColors.ContrastFade\"\n ></i>\n }\n `,\n styleUrls: ['app-switcher-dropdown-site.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-dropdown-site',\n '[class.kbq-dropdown-item]': 'false'\n },\n imports: [\n KbqIcon,\n KbqBadgeModule\n ],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherDropdownSite },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherDropdownSite }\n ]\n})\nexport class KbqAppSwitcherDropdownSite extends KbqDropdownItem {\n @Input('kbq-app-switcher-dropdown-site') site: KbqAppSwitcherSite;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';\nimport { KbqDropdownItem } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqAppSwitcherApp } from './app-switcher';\n\n/** @docs-private */\n@Component({\n standalone: true,\n selector: '[kbq-app-switcher-list-item]',\n exportAs: 'kbqAppSwitcherApp',\n template: `\n <span class=\"kbq-app-switcher-list-item__icon\" [innerHtml]=\"getIcon(app.icon)\"></span>\n\n <div class=\"kbq-app-switcher-list-item__container\">\n <div class=\"kbq-app-switcher-list-item__name\">{{ app.name }}</div>\n @if (app.caption) {\n <div class=\"kbq-app-switcher-list-item__caption\">{{ app.caption }}</div>\n }\n </div>\n\n @if (toggle) {\n <div class=\"kbq-app-switcher-list-item__toggle\" [class.kbq-expanded]=\"!collapsed\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" [color]=\"'contrast-fade'\"></i>\n </div>\n }\n `,\n styleUrls: ['kbq-app-switcher-list-item.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-app-switcher-list-item',\n '[class.kbq-dropdown-item]': 'false',\n '(click)': 'clickHandler($event)'\n },\n imports: [\n KbqIcon,\n NgTemplateOutlet\n ],\n providers: [\n { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherListItem },\n { provide: KbqDropdownItem, useExisting: KbqAppSwitcherListItem }\n ]\n})\nexport class KbqAppSwitcherListItem extends KbqDropdownItem {\n private sanitizer = inject(DomSanitizer);\n\n @Input() app: KbqAppSwitcherApp;\n @Input({ transform: booleanAttribute }) toggle = false;\n @Input({ transform: booleanAttribute }) collapsed: boolean = false;\n\n clickHandler(event: MouseEvent) {\n if (this.toggle) {\n event.stopPropagation();\n event.preventDefault();\n\n this.collapsed = !this.collapsed;\n }\n }\n\n getIcon(icon: string | null) {\n return this.sanitizer.bypassSecurityTrustHtml(icon || '');\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { AsyncPipe, JsonPipe } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\n OnInit,\n Output,\n TemplateRef,\n Type,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport {\n KBQ_LOCALE_SERVICE,\n KbqOptionModule,\n KbqPopUp,\n KbqPopUpTrigger,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpSizes,\n PopUpTriggers,\n applyPopupMargins,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule, KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { defaultOffsetYWithArrow } from '@koobiq/components/popover';\nimport { KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { Subscription, merge } from 'rxjs';\nimport { kbqAppSwitcherAnimations } from './app-switcher-animations';\nimport { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app';\nimport { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site';\nimport { KbqAppSwitcherListItem } from './kbq-app-switcher-list-item';\n\nexport interface KbqAppSwitcherApp {\n name: string;\n id: string | number;\n type?: string | number;\n icon: string;\n caption?: string;\n aliases?: KbqAppSwitcherApp[];\n link?: string;\n}\n\nexport interface KbqAppSwitcherSite {\n name: string;\n id: string | number;\n status?: string;\n icon?: string;\n apps: KbqAppSwitcherApp[];\n}\n\n/** @docs-private */\nexport function defaultGroupBy(\n app: KbqAppSwitcherApp,\n groups: Record<string, KbqAppSwitcherApp>,\n untyped: KbqAppSwitcherApp[]\n) {\n if (!app.type) {\n untyped.push(app);\n } else {\n const appType = app.type.toString();\n\n if (groups[appType]) {\n groups[appType].aliases!.push(app);\n } else {\n groups[appType] = {\n name: appType,\n aliases: [app],\n icon: app.icon,\n id: ''\n };\n }\n }\n}\n\nexport const KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_SEARCH: number = 7;\nexport const KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING: number = 3;\n\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-app-switcher-scroll-strategy'\n);\n\n/** @docs-private */\nexport function kbqAppSwitcherScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });\n}\n\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_APP_SWITCHER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqAppSwitcherScrollStrategyFactory\n};\n\n/** default configuration of app-switcher */\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION = ruRULocaleData.appSwitcher;\n\n/** Injection Token for providing configuration of app-switcher */\n/** @docs-private */\nexport const KBQ_APP_SWITCHER_CONFIGURATION = new InjectionToken('KbqAppSwitcherConfiguration');\n\n/** @docs-private */\n@Component({\n standalone: true,\n selector: 'kbq-app-switcher',\n templateUrl: './app-switcher.html',\n preserveWhitespaces: false,\n styleUrls: ['./app-switcher.scss'],\n host: {\n class: 'kbq-app-switcher'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqInputModule,\n KbqIconModule,\n KbqDividerModule,\n KbqBadgeModule,\n KbqDropdownModule,\n KbqScrollbarModule,\n KbqOptionModule,\n KbqAppSwitcherDropdownApp,\n KbqAppSwitcherDropdownSite,\n KbqAppSwitcherListItem,\n JsonPipe\n ],\n animations: [kbqAppSwitcherAnimations.state]\n})\nexport class KbqAppSwitcherComponent extends KbqPopUp implements AfterViewInit {\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n readonly externalConfiguration = inject(KBQ_APP_SWITCHER_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n /** @docs-private */\n readonly searchControl = new FormControl('');\n\n /** @docs-private */\n filteredSites: KbqAppSwitcherSite[];\n\n /** @docs-private */\n prefix = 'kbq-app-switcher';\n\n /** @docs-private */\n trigger: KbqAppSwitcherTrigger;\n\n /** @docs-private */\n isTrapFocus: boolean = false;\n\n /** @docs-private */\n protected activeSite: KbqAppSwitcherSite;\n /** @docs-private */\n protected activeApp: KbqAppSwitcherApp;\n\n /** @docs-private */\n @ViewChild(KbqInput) input: KbqInput;\n /** @docs-private */\n @ViewChild('otherSites') otherSites: KbqDropdownTrigger;\n\n constructor() {\n super();\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n }\n\n ngAfterViewInit() {\n if (this.input) {\n this.input.focus();\n }\n\n this.visibleChange.subscribe((state) => {\n if (this.offset !== null && state) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n }\n });\n\n this.searchControl.valueChanges.subscribe((value) => (this.filteredSites = this.filterSites(value)));\n }\n\n /** @docs-private */\n updateClassMap(placement: string, customClass: string, size: PopUpSizes) {\n super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });\n }\n\n /** @docs-private */\n updateTrapFocus(isTrapFocus: boolean): void {\n this.isTrapFocus = isTrapFocus;\n }\n\n /** @docs-private */\n escapeHandler() {\n this.hide(0);\n }\n\n /** @docs-private */\n selectAppInSite(site: KbqAppSwitcherSite, app: KbqAppSwitcherApp) {\n this.trigger.selectedSite = site;\n this.trigger.selectedApp = app;\n\n this.trigger.selectedSiteChange.emit(site);\n this.trigger.selectedAppChange.emit(app);\n }\n\n private filterSites(query: string | null): KbqAppSwitcherSite[] {\n const filteredSites = structuredClone(this.trigger.originalSites);\n\n return query\n ? filteredSites.filter((site) => {\n const filteredApps = site.apps.filter((app) => app.name.toLowerCase().includes(query.toLowerCase()));\n\n if (filteredApps.length) {\n site.apps = filteredApps;\n\n return true;\n }\n\n return false;\n })\n : filteredSites;\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('appSwitcher');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION;\n }\n}\n\n@Directive({\n standalone: true,\n selector: '[kbqAppSwitcher]',\n exportAs: 'kbqAppSwitcher',\n host: {\n '[class.kbq-app-switcher_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen',\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n }\n})\nexport class KbqAppSwitcherTrigger\n extends KbqPopUpTrigger<KbqAppSwitcherComponent>\n implements AfterContentInit, OnInit\n{\n /** @docs-private */\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_APP_SWITCHER_SCROLL_STRATEGY);\n\n // not used\n /** @docs-private */\n arrow: boolean = false;\n /** @docs-private */\n customClass: string;\n /** @docs-private */\n private hasBackdrop: boolean = false;\n /** @docs-private */\n private size: PopUpSizes = PopUpSizes.Medium;\n /** @docs-private */\n content: string | TemplateRef<any>;\n /** @docs-private */\n header: string | TemplateRef<any>;\n /** @docs-private */\n footer: string | TemplateRef<any>;\n /** @docs-private */\n private closeOnScroll: null;\n\n /** Whether search is used or not */\n get withSearch(): boolean {\n return this.appsCount > KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_SEARCH;\n }\n\n /** Number of applications to choose from\n * @docs-private */\n get appsCount(): number {\n if (this.sitesMode) {\n return this.originalSites.reduce((acc, site) => acc + site.apps.length, 0);\n }\n\n return this.originalApps.length;\n }\n\n /** Whether the sites are used or not\n * @docs-private */\n get sitesMode(): boolean {\n return this.originalSites?.length > 0;\n }\n\n /** Whether the sites are used or not\n * @docs-private */\n get currentApps() {\n return this.sitesMode ? this.selectedSite.apps : this._parsedApps;\n }\n\n /** Selected application */\n @Input() selectedApp: KbqAppSwitcherApp;\n\n /** Placement of popUp */\n @Input('kbqAppSwitcherPlacement') placement: PopUpPlacements = PopUpPlacements.BottomLeft;\n\n /** Class that will be used in the background */\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Offset of popUp */\n @Input({ transform: numberAttribute }) offset: number | null = defaultOffsetYWithArrow;\n\n /** Array of sites */\n @Input()\n get sites(): KbqAppSwitcherSite[] {\n return this._parsedSites;\n }\n\n set sites(value: KbqAppSwitcherSite[]) {\n this.originalSites = value;\n\n this._parsedSites = [];\n\n value.forEach((site: KbqAppSwitcherSite) => {\n const newSite: KbqAppSwitcherSite = { ...site, apps: [] };\n\n newSite.apps = this.makeGroupsForApps(site.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n\n this._parsedSites.push(newSite);\n });\n }\n\n private _parsedSites: KbqAppSwitcherSite[];\n\n /** Array of applications */\n @Input()\n get apps(): KbqAppSwitcherApp[] {\n return this._parsedApps;\n }\n\n set apps(apps: KbqAppSwitcherApp[]) {\n this.originalApps = apps;\n\n this._parsedApps = this.makeGroupsForApps(this.originalApps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n }\n\n private makeGroupsForApps(apps: KbqAppSwitcherApp[], minAppsForGrouping: number): KbqAppSwitcherApp[] {\n const groups: Record<string, KbqAppSwitcherApp> = {};\n const untyped: KbqAppSwitcherApp[] = [];\n const groupedApps: KbqAppSwitcherApp[] = [];\n\n apps.forEach((app) => {\n this.groupBy(app, groups, untyped);\n });\n\n Object.values(groups).forEach((group) => {\n if (group.aliases && group.aliases.length > minAppsForGrouping) {\n groupedApps.push(group);\n } else {\n untyped.push(...group.aliases!);\n }\n });\n\n groupedApps.push(...untyped);\n\n return groupedApps;\n }\n\n private _parsedApps: KbqAppSwitcherApp[];\n\n /** Function to group the apps by type. The first argument is an app object with type.\n * The second is a groups object and third is an array for untyped apps */\n @Input()\n get groupBy() {\n return this._groupBy;\n }\n\n set groupBy(\n fn: (app: KbqAppSwitcherApp, groups: Record<string, KbqAppSwitcherApp>, untyped: KbqAppSwitcherApp[]) => void\n ) {\n if (typeof fn !== 'function') {\n throw new Error('The argument must be a function');\n }\n\n this._groupBy = fn;\n }\n\n private _groupBy = defaultGroupBy;\n\n /** Selected site */\n @Input()\n get selectedSite(): KbqAppSwitcherSite {\n return this._parsedSelectedSite;\n }\n\n set selectedSite(value: KbqAppSwitcherSite) {\n const originValue = this.originalSites.find((site) => value.id === site.id) as KbqAppSwitcherSite;\n const newSite: KbqAppSwitcherSite = { ...originValue, apps: [] };\n\n newSite.apps = this.makeGroupsForApps(originValue.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);\n\n this._parsedSelectedSite = newSite;\n }\n\n private _parsedSelectedSite: KbqAppSwitcherSite;\n\n /** Whether the trigger is disabled. */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n /** @docs-private */\n get hasClickTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n /** Emits a change event whenever the placement state changes. */\n @Output('kbqPlacementChange') readonly placementChange = new EventEmitter();\n\n /** Emits a change event whenever the visible state changes. */\n @Output('kbqVisibleChange') readonly visibleChange = new EventEmitter<boolean>();\n\n /** @docs-private */\n @Output() readonly selectedSiteChange = new EventEmitter<KbqAppSwitcherSite>();\n /** @docs-private */\n @Output() readonly selectedAppChange = new EventEmitter<KbqAppSwitcherApp>();\n\n /** @docs-private */\n trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** @docs-private */\n originalSites: KbqAppSwitcherSite[];\n /** @docs-private */\n originalApps: KbqAppSwitcherApp[];\n\n /** @docs-private */\n protected originSelector = '.kbq-app-switcher';\n\n /** @docs-private */\n protected get overlayConfig(): OverlayConfig {\n return {\n panelClass: 'kbq-app-switcher__panel',\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n protected preventClosingByInnerScrollSubscription: Subscription;\n\n ngOnInit(): void {\n super.ngOnInit();\n\n this.scrollable\n ?.elementScrolled()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.hideIfNotInViewPort);\n }\n\n ngAfterContentInit(): void {\n if (this.closeOnScroll === null) {\n this.scrollDispatcher.scrolled().subscribe((scrollable: CdkScrollable | void) => {\n if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup')) return;\n\n const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();\n const childRects = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {\n this.hide();\n }\n });\n }\n\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => {\n if (visible) {\n // eslint-disable-next-line rxjs/no-nested-subscribe\n this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => {\n if (event['scrollDispatcher']) {\n event['kbqPopoverPreventHide'] = true;\n event['type'] = 'click';\n }\n });\n } else {\n this.preventClosingByInnerScrollSubscription.unsubscribe();\n this.focus();\n }\n });\n }\n\n /** @docs-private */\n updateData() {\n if (!this.instance) return;\n\n this.instance.header = this.header;\n this.instance.content = this.content;\n this.instance.arrow = this.arrow;\n this.instance.offset = this.offset;\n this.instance.footer = this.footer;\n\n this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);\n\n if (this.isOpen) {\n this.updatePosition(true);\n }\n }\n\n /** Updates the current position.\n * @docs-private */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** @docs-private */\n getOverlayHandleComponentType(): Type<KbqAppSwitcherComponent> {\n return KbqAppSwitcherComponent;\n }\n\n /** @docs-private */\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) return;\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);\n this.instance.markForCheck();\n }\n\n /** @docs-private */\n closingActions() {\n return merge(\n this.overlayRef!.outsidePointerEvents(),\n this.overlayRef!.backdropClick(),\n this.scrollDispatcher.scrolled()\n );\n }\n\n private hideIfNotInViewPort = () => {\n if (!this.scrollable) return;\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const containerRect = this.scrollable.getElementRef().nativeElement.getBoundingClientRect();\n\n if (\n !(\n rect.bottom >= containerRect.top &&\n rect.right >= containerRect.left &&\n rect.top <= containerRect.bottom &&\n rect.left <= containerRect.right\n )\n ) {\n this.hide();\n }\n };\n}\n","@if (trigger.withSearch) {\n <div class=\"kbq-app-switcher__search-container\" (mouseenter)=\"otherSites?.close()\">\n <kbq-form-field noBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (keydown.escape)=\"escapeHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n </div>\n\n <kbq-divider />\n}\n\n<div kbq-scrollbar>\n @if (!searchControl.getRawValue()) {\n <div class=\"kbq-app-switcher__app-container\" (mouseenter)=\"otherSites?.close()\">\n @if (trigger.sitesMode) {\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ trigger.selectedSite?.name }}</div>\n @if (trigger.selectedSite?.status) {\n <kbq-badge class=\"kbq-app-switcher-group-header__badge\" [compact]=\"true\">\n {{ trigger.selectedSite.status }}\n </kbq-badge>\n }\n </div>\n }\n\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (app of trigger.currentApps; track app) {\n @if (!app.aliases) {\n <a\n kbq-app-switcher-list-item\n href=\"{{ app.link }}\"\n [class.kbq-selected]=\"app.id === trigger.selectedApp?.id\"\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></a>\n } @else {\n <div\n #appSwitcherApp=\"kbqAppSwitcherApp\"\n kbq-app-switcher-list-item\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></div>\n\n @if (!appSwitcherApp.collapsed) {\n @for (alias of app.aliases; track alias) {\n <a\n class=\"kbq-app-switcher-site_nested\"\n kbq-app-switcher-list-item\n href=\"{{ alias.link }}\"\n [class.kbq-selected]=\"alias.id === trigger.selectedApp?.id\"\n [app]=\"alias\"\n ></a>\n }\n }\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n @if (trigger.sitesMode) {\n <kbq-divider />\n\n <div class=\"kbq-app-switcher__sites-container\">\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ localeData.sitesHeader }}</div>\n </div>\n\n <kbq-dropdown #otherSites=\"kbqDropdown\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-sites\">\n @for (site of trigger.sites; track site) {\n @if (site.id !== trigger.selectedSite?.id) {\n <div\n [kbq-app-switcher-dropdown-site]=\"site\"\n [kbqDropdownTriggerFor]=\"dropdownWithSelectedSite\"\n [offsetX]=\"0\"\n (mouseenter)=\"activeSite = site\"\n ></div>\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n <kbq-dropdown #dropdownWithSelectedSite=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (app of activeSite?.apps; track app) {\n @if (app.aliases) {\n <div\n #dropdownWithGroupedAppsTrigger=\"kbqDropdownTrigger\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n [kbqDropdownTriggerFor]=\"dropdownWithGroupedApps\"\n [offsetX]=\"0\"\n [class.kbq-pressed]=\"dropdownWithGroupedAppsTrigger.opened\"\n (mouseenter)=\"activeApp = app\"\n ></div>\n } @else {\n <a\n href=\"{{ app.link }}\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n (click)=\"selectAppInSite(activeSite, app)\"\n ></a>\n }\n }\n </kbq-dropdown>\n\n <kbq-dropdown #dropdownWithGroupedApps=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (alias of activeApp?.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n [kbq-app-switcher-dropdown-app]=\"alias\"\n (click)=\"selectAppInSite(activeSite, alias)\"\n ></a>\n }\n </kbq-dropdown>\n }\n } @else {\n <div class=\"kbq-app-switcher__search-result\">\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (site of filteredSites; track site) {\n @if (site.apps) {\n <kbq-optgroup label=\"{{ site.name }}\" />\n }\n\n @for (app of site.apps; track app) {\n <a kbq-app-switcher-list-item href=\"{{ app.link }}\" [app]=\"app\"></a>\n }\n } @empty {\n <div class=\"kbq-app-switcher__empty-search-result\">{{ localeData.searchEmptyResult }}</div>\n }\n </div>\n </kbq-dropdown>\n </div>\n }\n</div>\n","import { ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { EmptyFocusTrapStrategy } from '@koobiq/components/core';\nimport {\n KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqAppSwitcherComponent,\n KbqAppSwitcherTrigger\n} from './app-switcher';\nimport { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app';\nimport { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site';\nimport { KbqAppSwitcherListItem } from './kbq-app-switcher-list-item';\n\n@NgModule({\n imports: [\n KbqAppSwitcherComponent,\n KbqAppSwitcherTrigger,\n KbqAppSwitcherListItem,\n KbqAppSwitcherDropdownApp,\n KbqAppSwitcherDropdownSite\n ],\n exports: [\n KbqAppSwitcherTrigger\n ],\n providers: [\n KBQ_APP_SWITCHER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }]\n})\nexport class KbqAppSwitcherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i6"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, InjectionToken, inject, DestroyRef, EventEmitter, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Host, Optional, ViewChild, ContentChildren, Input, Output, forwardRef, NgModule } from '@angular/core';
|
|
2
|
+
import { Directive, InjectionToken, inject, DestroyRef, EventEmitter, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Host, Optional, ViewChild, ContentChildren, Input, Output, forwardRef, afterNextRender, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2$1 from '@angular/cdk/bidi';
|
|
4
4
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
5
|
import * as i1$1 from '@angular/cdk/overlay';
|
|
@@ -26,10 +26,10 @@ class KbqAutocompleteOrigin {
|
|
|
26
26
|
constructor(elementRef) {
|
|
27
27
|
this.elementRef = elementRef;
|
|
28
28
|
}
|
|
29
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
30
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
29
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocompleteOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
30
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqAutocompleteOrigin, selector: "[kbqAutocompleteOrigin]", exportAs: ["kbqAutocompleteOrigin"], ngImport: i0 }); }
|
|
31
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocompleteOrigin, decorators: [{
|
|
33
33
|
type: Directive,
|
|
34
34
|
args: [{
|
|
35
35
|
selector: '[kbqAutocompleteOrigin]',
|
|
@@ -149,15 +149,15 @@ class KbqAutocomplete {
|
|
|
149
149
|
updateFocusClass() {
|
|
150
150
|
this._classList['cdk-keyboard-focused'] = this.parentFormField?.focusOrigin === 'keyboard';
|
|
151
151
|
}
|
|
152
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
153
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
152
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocomplete, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS }, { token: i1.KbqFormField, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: KbqAutocomplete, selector: "kbq-autocomplete", inputs: { displayWith: "displayWith", panelWidth: "panelWidth", classList: ["class", "classList"], autoActiveFirstOption: "autoActiveFirstOption", openOnFocus: "openOnFocus" }, outputs: { optionSelected: "optionSelected", opened: "opened", closed: "closed" }, host: { classAttribute: "kbq-autocomplete" }, providers: [
|
|
154
154
|
{
|
|
155
155
|
provide: KBQ_OPTION_PARENT_COMPONENT,
|
|
156
156
|
useExisting: KbqAutocomplete
|
|
157
157
|
}
|
|
158
158
|
], queries: [{ propertyName: "options", predicate: KbqOption, descendants: true }, { propertyName: "optionGroups", predicate: KbqOptgroup }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], exportAs: ["kbqAutocomplete"], ngImport: i0, template: "<ng-template>\n <div #panel role=\"listbox\" class=\"kbq-autocomplete-panel kbq-scrollbar\" [id]=\"id\" [ngClass]=\"classList\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [".kbq-autocomplete-panel{visibility:hidden;position:relative;overflow:hidden auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;min-width:100%;width:100%;max-width:none;border-radius:var(--kbq-autocomplete-size-panel-border-radius, var(--kbq-size-border-radius));max-height:var(--kbq-autocomplete-size-panel-max-height);padding:var(--kbq-size-xxs)}.kbq-autocomplete-panel.kbq-autocomplete_visible{visibility:visible}.kbq-autocomplete-panel.kbq-autocomplete_hidden{visibility:hidden}.kbq-autocomplete-panel .kbq-option{position:relative}.kbq-autocomplete-panel .kbq-option:before,.kbq-autocomplete-panel .kbq-option:after{position:absolute;content:\"\";width:var(--kbq-size-xxs);height:calc(100% + var(--kbq-size-3xs) * 2)}.kbq-autocomplete-panel .kbq-option:before{right:calc(100% + var(--kbq-size-3xs))}.kbq-autocomplete-panel .kbq-option:after{left:calc(100% + var(--kbq-size-3xs))}.kbq-autocomplete-panel .kbq-divider-horizontal{margin-top:-1px}.kbq-autocomplete-panel{box-shadow:var(--kbq-select-panel-dropdown-shadow);background:var(--kbq-select-panel-dropdown-background)}\n", ".kbq-autocomplete-panel{--kbq-autocomplete-size-panel-padding: var(--kbq-size-xxs) 0;--kbq-autocomplete-size-panel-max-height: 256px;--kbq-autocomplete-size-panel-border-radius: var(--kbq-size-border-radius);--kbq-select-panel-dropdown-background: var(--kbq-background-card);--kbq-select-panel-dropdown-shadow: var(--kbq-shadow-popup)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
159
159
|
}
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocomplete, decorators: [{
|
|
161
161
|
type: Component,
|
|
162
162
|
args: [{ selector: 'kbq-autocomplete', exportAs: 'kbqAutocomplete', host: {
|
|
163
163
|
class: 'kbq-autocomplete'
|
|
@@ -320,9 +320,9 @@ class KbqAutocompleteTrigger {
|
|
|
320
320
|
// pane was closed, in order to avoid reopening it unintentionally.
|
|
321
321
|
this.canOpenOnNextFocus = this.document.activeElement !== this.elementRef.nativeElement || this.panelOpen;
|
|
322
322
|
};
|
|
323
|
-
|
|
323
|
+
afterNextRender(() => {
|
|
324
324
|
zone.runOutsideAngular(() => this.window.addEventListener('blur', this.windowBlurHandler));
|
|
325
|
-
}
|
|
325
|
+
});
|
|
326
326
|
this.scrollStrategy = scrollStrategy;
|
|
327
327
|
}
|
|
328
328
|
ngAfterViewInit() {
|
|
@@ -677,10 +677,10 @@ class KbqAutocompleteTrigger {
|
|
|
677
677
|
const element = this.elementRef.nativeElement;
|
|
678
678
|
return !element.readOnly && !element.disabled && !this._autocompleteDisabled;
|
|
679
679
|
}
|
|
680
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
681
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
680
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocompleteTrigger, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.Overlay }, { token: i0.NgZone }, { token: KBQ_AUTOCOMPLETE_SCROLL_STRATEGY }, { token: i2$1.Directionality, optional: true }, { token: i1.KbqFormField, host: true, optional: true }, { token: i4.ViewportRuler }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
681
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqAutocompleteTrigger, selector: "input[kbqAutocomplete], textarea[kbqAutocomplete]", inputs: { autocomplete: ["kbqAutocomplete", "autocomplete"], connectedTo: ["kbqAutocompleteConnectedTo", "connectedTo"], autocompleteAttribute: ["autocomplete", "autocompleteAttribute"], autocompleteDisabled: ["kbqAutocompleteDisabled", "autocompleteDisabled"], onInputBlur: ["kbqAutocompleteOnBlur", "onInputBlur"] }, host: { listeners: { "focusin": "handleFocus()", "blur": "onTouched()", "input": "handleInput($event)", "keydown": "handleKeydown($event)", "click": "handleClick($event)" }, properties: { "attr.autocomplete": "autocompleteAttribute" }, classAttribute: "kbq-autocomplete-trigger" }, providers: [KBQ_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: ["kbqAutocompleteTrigger"], ngImport: i0 }); }
|
|
682
682
|
}
|
|
683
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
683
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocompleteTrigger, decorators: [{
|
|
684
684
|
type: Directive,
|
|
685
685
|
args: [{
|
|
686
686
|
selector: `input[kbqAutocomplete], textarea[kbqAutocomplete]`,
|
|
@@ -725,17 +725,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
725
725
|
}] } });
|
|
726
726
|
|
|
727
727
|
class KbqAutocompleteModule {
|
|
728
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
729
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
728
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
729
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocompleteModule, declarations: [KbqAutocomplete, KbqAutocompleteTrigger, KbqAutocompleteOrigin], imports: [KbqOptionModule,
|
|
730
730
|
OverlayModule,
|
|
731
731
|
NgClass], exports: [KbqAutocomplete,
|
|
732
732
|
KbqOptionModule,
|
|
733
733
|
KbqAutocompleteTrigger,
|
|
734
734
|
KbqAutocompleteOrigin] }); }
|
|
735
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
735
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocompleteModule, providers: [KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [KbqOptionModule,
|
|
736
736
|
OverlayModule, KbqOptionModule] }); }
|
|
737
737
|
}
|
|
738
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
738
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAutocompleteModule, decorators: [{
|
|
739
739
|
type: NgModule,
|
|
740
740
|
args: [{
|
|
741
741
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-autocomplete.mjs","sources":["../../../packages/components/autocomplete/autocomplete-origin.directive.ts","../../../packages/components/autocomplete/autocomplete.component.ts","../../../packages/components/autocomplete/autocomplete.html","../../../packages/components/autocomplete/autocomplete-trigger.directive.ts","../../../packages/components/autocomplete/autocomplete.module.ts","../../../packages/components/autocomplete/koobiq-components-autocomplete.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core';\n\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\n@Directive({\n selector: '[kbqAutocompleteOrigin]',\n exportAs: 'kbqAutocompleteOrigin'\n})\nexport class KbqAutocompleteOrigin {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Host,\n inject,\n Inject,\n InjectionToken,\n Input,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActiveDescendantKeyManager } from '@koobiq/cdk/a11y';\nimport { KBQ_OPTION_PARENT_COMPONENT, KbqOptgroup, KbqOption } from '@koobiq/components/core';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { delay, filter } from 'rxjs/operators';\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet uniqueAutocompleteIdCounter = 0;\n\nexport class KbqAutocompleteSelectedEvent {\n constructor(\n public source: KbqAutocomplete,\n public option: KbqOption\n ) {}\n}\n\n/** Default `kbq-autocomplete` options that can be overridden. */\nexport interface KbqAutocompleteDefaultOptions {\n /** Whether the first option should be highlighted when an autocomplete panel is opened. */\n autoActiveFirstOption?: boolean;\n}\n\n/** Injection token to be used to override the default options for `kbq-autocomplete`. */\nexport const KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken<KbqAutocompleteDefaultOptions>(\n 'kbq-autocomplete-default-options',\n {\n providedIn: 'root',\n factory: KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY\n }\n);\n\nexport function KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY(): KbqAutocompleteDefaultOptions {\n return { autoActiveFirstOption: true };\n}\n\n@Component({\n selector: 'kbq-autocomplete',\n exportAs: 'kbqAutocomplete',\n templateUrl: 'autocomplete.html',\n styleUrls: ['autocomplete.scss', 'autocomplete-tokens.scss'],\n host: {\n class: 'kbq-autocomplete'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KBQ_OPTION_PARENT_COMPONENT,\n useExisting: KbqAutocomplete\n }\n ]\n})\nexport class KbqAutocomplete implements AfterContentInit {\n private readonly destroyRef = inject(DestroyRef);\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n id: string = `kbq-autocomplete-${uniqueAutocompleteIdCounter++}`;\n\n /** Manages active item in option list based on key events. */\n keyManager: ActiveDescendantKeyManager<KbqOption>;\n\n /** Whether the autocomplete panel should be visible, depending on option length. */\n showPanel: boolean = false;\n\n @ViewChild(TemplateRef, { static: true }) template: TemplateRef<any>;\n\n @ViewChild('panel', { static: false }) panel: ElementRef;\n\n @ContentChildren(KbqOption, { descendants: true }) options: QueryList<KbqOption>;\n\n @ContentChildren(KbqOptgroup) optionGroups: QueryList<KbqOptgroup>;\n\n /** Function that maps an option's control value to its display value in the trigger. */\n @Input() displayWith: ((value: any) => string) | null = null;\n\n /**\n * Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will\n * match the width of its host.\n */\n @Input() panelWidth: string | number;\n\n /** Event that is emitted whenever an option from the list is selected. */\n @Output() readonly optionSelected: EventEmitter<KbqAutocompleteSelectedEvent> =\n new EventEmitter<KbqAutocompleteSelectedEvent>();\n\n /** Event that is emitted when the autocomplete panel is opened. */\n @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event that is emitted when the autocomplete panel is closed. */\n @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Takes classes set on the host kbq-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n @Input('class')\n get classList() {\n return this._classList;\n }\n\n set classList(value: string) {\n if (value && value.length) {\n value.split(' ').forEach((className) => (this._classList[className.trim()] = true));\n\n this.elementRef.nativeElement.className = '';\n }\n }\n\n private _classList: any = {};\n\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n @Input()\n get autoActiveFirstOption(): boolean {\n return this._autoActiveFirstOption;\n }\n\n set autoActiveFirstOption(value: boolean) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n\n private _autoActiveFirstOption: boolean;\n\n get isOpen(): boolean {\n return this._isOpen && this.showPanel;\n }\n\n set isOpen(value: boolean) {\n this._isOpen = value;\n }\n\n private _isOpen: boolean = false;\n\n @Input()\n get openOnFocus(): boolean {\n return this._openOnFocus;\n }\n\n set openOnFocus(value: boolean) {\n this._openOnFocus = value;\n }\n\n private _openOnFocus: boolean = true;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private elementRef: ElementRef<HTMLElement>,\n @Inject(KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS) defaults: KbqAutocompleteDefaultOptions,\n @Host() @Optional() private readonly parentFormField: KbqFormField\n ) {\n this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n }\n\n ngAfterContentInit() {\n this.keyManager = new ActiveDescendantKeyManager<KbqOption>(this.options);\n this.setVisibility();\n\n this.parentFormField?.control.ngControl?.valueChanges\n ?.pipe(\n delay(0),\n filter((value) => value === null || value === undefined || value === ''),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.options.filter(({ selected }) => selected).forEach((option) => option.deselect(false));\n });\n }\n\n setScrollTop(scrollTop: number): void {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n\n getScrollTop(): number {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n\n setVisibility() {\n this.showPanel = !!this.options.length;\n this._classList['kbq-autocomplete_visible'] = this.showPanel;\n this._classList['kbq-autocomplete_hidden'] = !this.showPanel;\n\n this.updateFocusClass();\n\n this.changeDetectorRef.markForCheck();\n }\n\n emitSelectEvent(option: KbqOption): void {\n const event = new KbqAutocompleteSelectedEvent(this, option);\n\n this.optionSelected.emit(event);\n }\n\n onKeydown(event: KeyboardEvent): any {\n this.keyManager.onKeydown(event);\n\n this.updateFocusClass();\n }\n\n private updateFocusClass() {\n this._classList['cdk-keyboard-focused'] = this.parentFormField?.focusOrigin === 'keyboard';\n }\n}\n","<ng-template>\n <div #panel role=\"listbox\" class=\"kbq-autocomplete-panel kbq-scrollbar\" [id]=\"id\" [ngClass]=\"classList\">\n <ng-content />\n </div>\n</ng-template>\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Host,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Provider,\n ViewContainerRef,\n forwardRef,\n inject\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from '@koobiq/cdk/keycodes';\nimport {\n KBQ_WINDOW,\n KbqOption,\n KbqOptionSelectionChange,\n KeyboardNavigationHandler,\n defaultOffsetY\n} from '@koobiq/components/core';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { Observable, Subject, Subscription, defer, fromEvent, merge, of as observableOf } from 'rxjs';\nimport { delay, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { KbqAutocompleteOrigin } from './autocomplete-origin.directive';\nimport { KbqAutocomplete } from './autocomplete.component';\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the scrollTop of the panel. Because we are not\n * actually focusing the active item, scroll must be handled manually.\n */\n\n/** The total height of the autocomplete panel. */\nexport const AUTOCOMPLETE_PANEL_HEIGHT = 256;\n\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nexport const KBQ_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-autocomplete-scroll-strategy'\n);\n\nexport function KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\nexport const KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY\n};\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nexport const KBQ_AUTOCOMPLETE_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqAutocompleteTrigger),\n multi: true\n};\n\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nexport function getKbqAutocompleteMissingPanelError(): Error {\n return Error(\n 'Attempting to open an undefined instance of `kbq-autocomplete`. ' +\n 'Make sure that the id passed to the `kbqAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\"\n );\n}\n\n@Directive({\n selector: `input[kbqAutocomplete], textarea[kbqAutocomplete]`,\n host: {\n class: 'kbq-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': 'handleFocus()',\n '(blur)': 'onTouched()',\n '(input)': 'handleInput($event)',\n '(keydown)': 'handleKeydown($event)',\n '(click)': 'handleClick($event)'\n },\n exportAs: 'kbqAutocompleteTrigger',\n providers: [KBQ_AUTOCOMPLETE_VALUE_ACCESSOR]\n})\nexport class KbqAutocompleteTrigger\n implements AfterViewInit, ControlValueAccessor, OnDestroy, KeyboardNavigationHandler\n{\n protected readonly document = inject<Document>(DOCUMENT);\n\n readonly optionSelections: Observable<KbqOptionSelectionChange> = defer(() => {\n if (this.autocomplete && this.autocomplete.options) {\n return merge(...this.autocomplete.options.map((option) => option.onSelectionChange));\n }\n\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this.zone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelections)\n );\n });\n\n /** The currently active option, coerced to MatOption type. */\n get activeOption(): KbqOption | null {\n return this.autocomplete?.keyManager?.activeItem;\n }\n\n get panelOpen(): boolean {\n return this.overlayAttached && this.autocomplete.showPanel;\n }\n\n /** The autocomplete panel to be attached to this trigger. */\n @Input('kbqAutocomplete') autocomplete: KbqAutocomplete;\n\n /**\n * Reference relative to which to position the autocomplete panel.\n * Defaults to the autocomplete trigger element.\n */\n @Input('kbqAutocompleteConnectedTo') connectedTo: KbqAutocompleteOrigin;\n\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n @Input('autocomplete') autocompleteAttribute: string = 'off';\n\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n @Input('kbqAutocompleteDisabled')\n get autocompleteDisabled(): boolean {\n return this._autocompleteDisabled;\n }\n\n set autocompleteDisabled(value: boolean) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n\n /**\n * Event handler for input blur events.\n * Determines whether the blur event is triggered outside the specific target\n * @returns A boolean indicating if the blur event happened outside the target element\n */\n @Input('kbqAutocompleteOnBlur') onInputBlur = (event: FocusEvent): boolean => {\n const target: HTMLElement = event.relatedTarget as HTMLElement;\n\n return !target || target.tagName !== 'KBQ-OPTION';\n };\n\n private _autocompleteDisabled = false;\n\n private overlayAttached: boolean = false;\n\n private overlayRef: OverlayRef | null;\n\n private portal: TemplatePortal;\n\n private componentDestroyed = false;\n\n private scrollStrategy: () => ScrollStrategy;\n\n /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n private previousValue: string | number | null;\n\n /** Strategy that is used to position the panel. */\n private positionStrategy: FlexibleConnectedPositionStrategy;\n\n /** The subscription for closing actions (some are bound to document). */\n private closingActionsSubscription: Subscription;\n\n /** Subscription to viewport size changes. */\n private viewportSubscription = Subscription.EMPTY;\n\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private canOpenOnNextFocus = true;\n\n /** Stream of keyboard events that can close the panel. */\n private readonly closeKeyEventStream = new Subject<void>();\n private readonly window = inject(KBQ_WINDOW);\n\n constructor(\n private elementRef: ElementRef<HTMLInputElement>,\n private viewContainerRef: ViewContainerRef,\n private changeDetectorRef: ChangeDetectorRef,\n private overlay: Overlay,\n private zone: NgZone,\n @Inject(KBQ_AUTOCOMPLETE_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private dir: Directionality,\n @Optional() @Host() private formField: KbqFormField,\n // @breaking-change 8.0.0 Make `_viewportRuler` required.\n private viewportRuler?: ViewportRuler\n ) {\n if (this.window) {\n zone.runOutsideAngular(() => this.window.addEventListener('blur', this.windowBlurHandler));\n }\n\n this.scrollStrategy = scrollStrategy;\n }\n\n ngAfterViewInit(): void {\n if (this.autocomplete) {\n this.autocomplete.keyManager?.change.subscribe(() => {\n if (this.panelOpen) {\n this.scrollActiveOptionIntoView();\n this.elementRef.nativeElement.focus();\n } else if (!this.panelOpen && this.autocomplete.keyManager.activeItem) {\n this.autocomplete.keyManager.activeItem?.selectViaInteraction();\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.window.removeEventListener('blur', this.windowBlurHandler);\n\n this.viewportSubscription.unsubscribe();\n this.componentDestroyed = true;\n this.destroyPanel();\n this.closeKeyEventStream.complete();\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when autocomplete has been touched` */\n onTouched: () => void = () => {};\n\n /** Opens the autocomplete suggestion panel. */\n openPanel(): void {\n this.attachOverlay();\n }\n\n closePanel(): void {\n if (!this.overlayAttached) {\n return;\n }\n\n if (this.panelOpen) {\n this.autocomplete.closed.emit();\n }\n\n this.autocomplete.isOpen = this.overlayAttached = false;\n\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n this.closingActionsSubscription.unsubscribe();\n }\n\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this.componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this.changeDetectorRef.detectChanges();\n }\n }\n\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition(): void {\n if (this.overlayAttached) {\n this.overlayRef!.updatePosition();\n }\n }\n\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions(): Observable<KbqOptionSelectionChange | null> {\n return merge(\n this.optionSelections,\n this.autocomplete.keyManager.tabOut.pipe(filter(() => this.overlayAttached)),\n this.closeKeyEventStream,\n this.getOutsideClickStream(),\n this.overlayRef ? this.overlayRef.detachments().pipe(filter(() => this.overlayAttached)) : observableOf()\n ).pipe(\n // Normalize the output so we return a consistent type.\n map((event) => (event instanceof KbqOptionSelectionChange ? event : null))\n );\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any): void {\n Promise.resolve(null).then(() => this.setTriggerValue(value));\n }\n\n // Implemented as part of ControlValueAccessor.\n // eslint-disable-next-line @typescript-eslint/ban-types\n registerOnChange(fn: (value: any) => {}): void {\n this.onChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n // eslint-disable-next-line @typescript-eslint/ban-types\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this.elementRef.nativeElement.disabled = isDisabled;\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE) {\n event.preventDefault();\n }\n\n if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption.selectViaInteraction();\n this.resetActiveItem();\n event.preventDefault();\n } else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete.keyManager.activeItem;\n\n if (this.panelOpen || keyCode === TAB) {\n this.autocomplete.onKeydown(event);\n } else if (!this.panelOpen && keyCode === DOWN_ARROW && this.canOpen()) {\n this.openPanel();\n }\n\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n\n if (isArrowKey && event.shiftKey && this.autocomplete.keyManager.activeItem !== prevActiveItem) {\n this.autocomplete.keyManager.activeItem?.selectViaInteraction();\n }\n }\n }\n\n handleInput(event: KeyboardEvent): void {\n const target = event.target as HTMLInputElement;\n let value: number | string | null = target.value;\n\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value === '' ? null : parseFloat(value);\n }\n\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this.previousValue !== value) {\n this.previousValue = value;\n this.onChange(value);\n\n if (this.canOpen() && this.document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n\n handleFocus(): void {\n if (!this.canOpenOnNextFocus) {\n this.canOpenOnNextFocus = true;\n } else if (!this.panelOpen && this.canOpen() && this.autocomplete.openOnFocus) {\n this.previousValue = this.elementRef.nativeElement.value;\n this.attachOverlay();\n }\n }\n\n handleClick($event: MouseEvent) {\n if (!this.panelOpen && this.canOpen() && this.document.activeElement === $event.target) {\n this.openPanel();\n }\n }\n\n scrollActiveOptionIntoView(): void {\n this.autocomplete.keyManager.activeItem?.focus();\n }\n\n /** Stream of clicks outside of the autocomplete panel. */\n private getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this.document, 'click') as Observable<MouseEvent>,\n fromEvent(this.document, 'auxclick') as Observable<MouseEvent>,\n fromEvent(this.document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter((event) => {\n const clickTarget = _getEventTarget<HTMLElement>(event);\n const formField = this.formField ? this.formField.elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n\n return (\n this.overlayAttached &&\n clickTarget !== this.elementRef.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n !!this.overlayRef &&\n !this.overlayRef.overlayElement.contains(clickTarget)\n );\n })\n );\n }\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this.canOpenOnNextFocus = this.document.activeElement !== this.elementRef.nativeElement || this.panelOpen;\n };\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private subscribeToClosingActions(): Subscription {\n const firstStable = this.zone.onStable.asObservable().pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(\n tap(() => this.positionStrategy.reapplyLastPosition()),\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0)\n );\n\n // When the zone is stable initially, and when the option list changes...\n return (\n merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n const wasOpen = this.panelOpen;\n\n this.resetActiveItem();\n this.autocomplete.setVisibility();\n\n if (this.panelOpen) {\n this.overlayRef!.updatePosition();\n\n // If the `panelOpen` state changed, we need to make sure to emit the `opened`\n // event, because we may not have emitted it when the panel was attached. This\n // can happen if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing.\n if (wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1)\n )\n // set the value, close the panel, and complete.\n .subscribe((event) => this.setValueAndClose(event))\n );\n }\n\n /** Destroys the autocomplete suggestion panel. */\n private destroyPanel(): void {\n if (this.overlayRef) {\n this.closePanel();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n private setTriggerValue(value: any): void {\n const toDisplay =\n this.autocomplete && this.autocomplete.displayWith ? this.autocomplete.displayWith(value) : value;\n\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n\n const inputValue = toDisplay != null ? toDisplay : '';\n\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this.formField) {\n this.formField.control.value = inputValue;\n } else {\n this.elementRef.nativeElement.value = inputValue;\n }\n\n this.previousValue = inputValue;\n }\n\n /** This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n private setValueAndClose(event: KbqOptionSelectionChange | null): void {\n if (event?.source) {\n this.clearPreviousSelectedOption(event.source);\n this.setTriggerValue(event.source.value);\n this.onChange(event.source.value);\n this.elementRef.nativeElement.focus();\n\n this.autocomplete.emitSelectEvent(event.source);\n }\n\n this.closePanel();\n }\n\n /** Clear any previous selected option and emit a selection change event for this option */\n private clearPreviousSelectedOption(skip: KbqOption) {\n this.autocomplete.options.forEach((option) => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n\n private attachOverlay(): void {\n if (!this.autocomplete) {\n throw getKbqAutocompleteMissingPanelError();\n }\n\n let overlayRef = this.overlayRef;\n\n if (!overlayRef) {\n this.portal = new TemplatePortal(this.autocomplete.template, this.viewContainerRef);\n overlayRef = this.overlay.create(this.getOverlayConfig());\n this.overlayRef = overlayRef;\n\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n overlayRef.keydownEvents().subscribe((event) => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE || (event.keyCode === UP_ARROW && event.altKey)) {\n this.resetActiveItem();\n this.closeKeyEventStream.next();\n }\n });\n\n if (this.viewportRuler) {\n this.viewportSubscription = this.viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this.getPanelWidth() });\n }\n });\n }\n } else {\n const position = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n // Update the trigger, panel width and direction, in case anything has changed.\n position.setOrigin(this.getConnectedElement());\n overlayRef.updateSize({ width: this.getPanelWidth() });\n }\n\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this.portal);\n this.closingActionsSubscription = this.subscribeToClosingActions();\n }\n\n const wasOpen = this.panelOpen;\n\n this.autocomplete.setVisibility();\n this.autocomplete.isOpen = this.overlayAttached = true;\n\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n\n this.zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => this.resetActiveItem());\n }\n\n private getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this.getOverlayPosition(),\n scrollStrategy: this.scrollStrategy(),\n width: this.getPanelWidth(),\n direction: this.dir\n });\n }\n\n private getOverlayPosition(): PositionStrategy {\n this.positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: defaultOffsetY\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -defaultOffsetY\n }\n ] as ConnectedPosition[]);\n\n return this.positionStrategy;\n }\n\n private getConnectedElement(): ElementRef<HTMLElement> {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n\n return this.formField ? this.formField.getConnectedOverlayOrigin() : this.elementRef;\n }\n\n private getPanelWidth(): number | string {\n return this.autocomplete.panelWidth || this.getHostWidth();\n }\n\n private getHostWidth(): number {\n return this.getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * Resets the active item to -1 so arrow events will activate the\n * correct options, or to 0 if the consumer opted into it.\n */\n private resetActiveItem(): void {\n if (this.autocomplete.autoActiveFirstOption) {\n this.autocomplete.keyManager.setFirstItemActive();\n } else {\n this.autocomplete.keyManager.setActiveItem(-1);\n }\n }\n\n private canOpen(): boolean {\n const element = this.elementRef.nativeElement;\n\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqOptionModule } from '@koobiq/components/core';\nimport { KbqAutocompleteOrigin } from './autocomplete-origin.directive';\nimport {\n KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqAutocompleteTrigger\n} from './autocomplete-trigger.directive';\nimport { KbqAutocomplete } from './autocomplete.component';\n\n@NgModule({\n imports: [\n KbqOptionModule,\n OverlayModule,\n NgClass\n ],\n exports: [\n KbqAutocomplete,\n KbqOptionModule,\n KbqAutocompleteTrigger,\n KbqAutocompleteOrigin\n ],\n declarations: [KbqAutocomplete, KbqAutocompleteTrigger, KbqAutocompleteOrigin],\n providers: [KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\nexport class KbqAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableOf","i2","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-autocomplete.mjs","sources":["../../../packages/components/autocomplete/autocomplete-origin.directive.ts","../../../packages/components/autocomplete/autocomplete.component.ts","../../../packages/components/autocomplete/autocomplete.html","../../../packages/components/autocomplete/autocomplete-trigger.directive.ts","../../../packages/components/autocomplete/autocomplete.module.ts","../../../packages/components/autocomplete/koobiq-components-autocomplete.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core';\n\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\n@Directive({\n selector: '[kbqAutocompleteOrigin]',\n exportAs: 'kbqAutocompleteOrigin'\n})\nexport class KbqAutocompleteOrigin {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Host,\n inject,\n Inject,\n InjectionToken,\n Input,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActiveDescendantKeyManager } from '@koobiq/cdk/a11y';\nimport { KBQ_OPTION_PARENT_COMPONENT, KbqOptgroup, KbqOption } from '@koobiq/components/core';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { delay, filter } from 'rxjs/operators';\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet uniqueAutocompleteIdCounter = 0;\n\nexport class KbqAutocompleteSelectedEvent {\n constructor(\n public source: KbqAutocomplete,\n public option: KbqOption\n ) {}\n}\n\n/** Default `kbq-autocomplete` options that can be overridden. */\nexport interface KbqAutocompleteDefaultOptions {\n /** Whether the first option should be highlighted when an autocomplete panel is opened. */\n autoActiveFirstOption?: boolean;\n}\n\n/** Injection token to be used to override the default options for `kbq-autocomplete`. */\nexport const KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken<KbqAutocompleteDefaultOptions>(\n 'kbq-autocomplete-default-options',\n {\n providedIn: 'root',\n factory: KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY\n }\n);\n\nexport function KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY(): KbqAutocompleteDefaultOptions {\n return { autoActiveFirstOption: true };\n}\n\n@Component({\n selector: 'kbq-autocomplete',\n exportAs: 'kbqAutocomplete',\n templateUrl: 'autocomplete.html',\n styleUrls: ['autocomplete.scss', 'autocomplete-tokens.scss'],\n host: {\n class: 'kbq-autocomplete'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KBQ_OPTION_PARENT_COMPONENT,\n useExisting: KbqAutocomplete\n }\n ]\n})\nexport class KbqAutocomplete implements AfterContentInit {\n private readonly destroyRef = inject(DestroyRef);\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n id: string = `kbq-autocomplete-${uniqueAutocompleteIdCounter++}`;\n\n /** Manages active item in option list based on key events. */\n keyManager: ActiveDescendantKeyManager<KbqOption>;\n\n /** Whether the autocomplete panel should be visible, depending on option length. */\n showPanel: boolean = false;\n\n @ViewChild(TemplateRef, { static: true }) template: TemplateRef<any>;\n\n @ViewChild('panel', { static: false }) panel: ElementRef;\n\n @ContentChildren(KbqOption, { descendants: true }) options: QueryList<KbqOption>;\n\n @ContentChildren(KbqOptgroup) optionGroups: QueryList<KbqOptgroup>;\n\n /** Function that maps an option's control value to its display value in the trigger. */\n @Input() displayWith: ((value: any) => string) | null = null;\n\n /**\n * Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will\n * match the width of its host.\n */\n @Input() panelWidth: string | number;\n\n /** Event that is emitted whenever an option from the list is selected. */\n @Output() readonly optionSelected: EventEmitter<KbqAutocompleteSelectedEvent> =\n new EventEmitter<KbqAutocompleteSelectedEvent>();\n\n /** Event that is emitted when the autocomplete panel is opened. */\n @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event that is emitted when the autocomplete panel is closed. */\n @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Takes classes set on the host kbq-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n @Input('class')\n get classList() {\n return this._classList;\n }\n\n set classList(value: string) {\n if (value && value.length) {\n value.split(' ').forEach((className) => (this._classList[className.trim()] = true));\n\n this.elementRef.nativeElement.className = '';\n }\n }\n\n private _classList: any = {};\n\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n @Input()\n get autoActiveFirstOption(): boolean {\n return this._autoActiveFirstOption;\n }\n\n set autoActiveFirstOption(value: boolean) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n\n private _autoActiveFirstOption: boolean;\n\n get isOpen(): boolean {\n return this._isOpen && this.showPanel;\n }\n\n set isOpen(value: boolean) {\n this._isOpen = value;\n }\n\n private _isOpen: boolean = false;\n\n @Input()\n get openOnFocus(): boolean {\n return this._openOnFocus;\n }\n\n set openOnFocus(value: boolean) {\n this._openOnFocus = value;\n }\n\n private _openOnFocus: boolean = true;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private elementRef: ElementRef<HTMLElement>,\n @Inject(KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS) defaults: KbqAutocompleteDefaultOptions,\n @Host() @Optional() private readonly parentFormField: KbqFormField\n ) {\n this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n }\n\n ngAfterContentInit() {\n this.keyManager = new ActiveDescendantKeyManager<KbqOption>(this.options);\n this.setVisibility();\n\n this.parentFormField?.control.ngControl?.valueChanges\n ?.pipe(\n delay(0),\n filter((value) => value === null || value === undefined || value === ''),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.options.filter(({ selected }) => selected).forEach((option) => option.deselect(false));\n });\n }\n\n setScrollTop(scrollTop: number): void {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n\n getScrollTop(): number {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n\n setVisibility() {\n this.showPanel = !!this.options.length;\n this._classList['kbq-autocomplete_visible'] = this.showPanel;\n this._classList['kbq-autocomplete_hidden'] = !this.showPanel;\n\n this.updateFocusClass();\n\n this.changeDetectorRef.markForCheck();\n }\n\n emitSelectEvent(option: KbqOption): void {\n const event = new KbqAutocompleteSelectedEvent(this, option);\n\n this.optionSelected.emit(event);\n }\n\n onKeydown(event: KeyboardEvent): any {\n this.keyManager.onKeydown(event);\n\n this.updateFocusClass();\n }\n\n private updateFocusClass() {\n this._classList['cdk-keyboard-focused'] = this.parentFormField?.focusOrigin === 'keyboard';\n }\n}\n","<ng-template>\n <div #panel role=\"listbox\" class=\"kbq-autocomplete-panel kbq-scrollbar\" [id]=\"id\" [ngClass]=\"classList\">\n <ng-content />\n </div>\n</ng-template>\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Host,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Provider,\n ViewContainerRef,\n afterNextRender,\n forwardRef,\n inject\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from '@koobiq/cdk/keycodes';\nimport {\n KBQ_WINDOW,\n KbqOption,\n KbqOptionSelectionChange,\n KeyboardNavigationHandler,\n defaultOffsetY\n} from '@koobiq/components/core';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { Observable, Subject, Subscription, defer, fromEvent, merge, of as observableOf } from 'rxjs';\nimport { delay, filter, map, switchMap, take, tap } from 'rxjs/operators';\nimport { KbqAutocompleteOrigin } from './autocomplete-origin.directive';\nimport { KbqAutocomplete } from './autocomplete.component';\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the scrollTop of the panel. Because we are not\n * actually focusing the active item, scroll must be handled manually.\n */\n\n/** The total height of the autocomplete panel. */\nexport const AUTOCOMPLETE_PANEL_HEIGHT = 256;\n\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nexport const KBQ_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-autocomplete-scroll-strategy'\n);\n\nexport function KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\nexport const KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY\n};\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nexport const KBQ_AUTOCOMPLETE_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqAutocompleteTrigger),\n multi: true\n};\n\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nexport function getKbqAutocompleteMissingPanelError(): Error {\n return Error(\n 'Attempting to open an undefined instance of `kbq-autocomplete`. ' +\n 'Make sure that the id passed to the `kbqAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\"\n );\n}\n\n@Directive({\n selector: `input[kbqAutocomplete], textarea[kbqAutocomplete]`,\n host: {\n class: 'kbq-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': 'handleFocus()',\n '(blur)': 'onTouched()',\n '(input)': 'handleInput($event)',\n '(keydown)': 'handleKeydown($event)',\n '(click)': 'handleClick($event)'\n },\n exportAs: 'kbqAutocompleteTrigger',\n providers: [KBQ_AUTOCOMPLETE_VALUE_ACCESSOR]\n})\nexport class KbqAutocompleteTrigger\n implements AfterViewInit, ControlValueAccessor, OnDestroy, KeyboardNavigationHandler\n{\n protected readonly document = inject<Document>(DOCUMENT);\n\n readonly optionSelections: Observable<KbqOptionSelectionChange> = defer(() => {\n if (this.autocomplete && this.autocomplete.options) {\n return merge(...this.autocomplete.options.map((option) => option.onSelectionChange));\n }\n\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this.zone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelections)\n );\n });\n\n /** The currently active option, coerced to MatOption type. */\n get activeOption(): KbqOption | null {\n return this.autocomplete?.keyManager?.activeItem;\n }\n\n get panelOpen(): boolean {\n return this.overlayAttached && this.autocomplete.showPanel;\n }\n\n /** The autocomplete panel to be attached to this trigger. */\n @Input('kbqAutocomplete') autocomplete: KbqAutocomplete;\n\n /**\n * Reference relative to which to position the autocomplete panel.\n * Defaults to the autocomplete trigger element.\n */\n @Input('kbqAutocompleteConnectedTo') connectedTo: KbqAutocompleteOrigin;\n\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n @Input('autocomplete') autocompleteAttribute: string = 'off';\n\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n @Input('kbqAutocompleteDisabled')\n get autocompleteDisabled(): boolean {\n return this._autocompleteDisabled;\n }\n\n set autocompleteDisabled(value: boolean) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n\n /**\n * Event handler for input blur events.\n * Determines whether the blur event is triggered outside the specific target\n * @returns A boolean indicating if the blur event happened outside the target element\n */\n @Input('kbqAutocompleteOnBlur') onInputBlur = (event: FocusEvent): boolean => {\n const target: HTMLElement = event.relatedTarget as HTMLElement;\n\n return !target || target.tagName !== 'KBQ-OPTION';\n };\n\n private _autocompleteDisabled = false;\n\n private overlayAttached: boolean = false;\n\n private overlayRef: OverlayRef | null;\n\n private portal: TemplatePortal;\n\n private componentDestroyed = false;\n\n private scrollStrategy: () => ScrollStrategy;\n\n /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n private previousValue: string | number | null;\n\n /** Strategy that is used to position the panel. */\n private positionStrategy: FlexibleConnectedPositionStrategy;\n\n /** The subscription for closing actions (some are bound to document). */\n private closingActionsSubscription: Subscription;\n\n /** Subscription to viewport size changes. */\n private viewportSubscription = Subscription.EMPTY;\n\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private canOpenOnNextFocus = true;\n\n /** Stream of keyboard events that can close the panel. */\n private readonly closeKeyEventStream = new Subject<void>();\n private readonly window = inject(KBQ_WINDOW);\n\n constructor(\n private elementRef: ElementRef<HTMLInputElement>,\n private viewContainerRef: ViewContainerRef,\n private changeDetectorRef: ChangeDetectorRef,\n private overlay: Overlay,\n private zone: NgZone,\n @Inject(KBQ_AUTOCOMPLETE_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private dir: Directionality,\n @Optional() @Host() private formField: KbqFormField,\n // @breaking-change 8.0.0 Make `_viewportRuler` required.\n private viewportRuler?: ViewportRuler\n ) {\n afterNextRender(() => {\n zone.runOutsideAngular(() => this.window.addEventListener('blur', this.windowBlurHandler));\n });\n\n this.scrollStrategy = scrollStrategy;\n }\n\n ngAfterViewInit(): void {\n if (this.autocomplete) {\n this.autocomplete.keyManager?.change.subscribe(() => {\n if (this.panelOpen) {\n this.scrollActiveOptionIntoView();\n this.elementRef.nativeElement.focus();\n } else if (!this.panelOpen && this.autocomplete.keyManager.activeItem) {\n this.autocomplete.keyManager.activeItem?.selectViaInteraction();\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.window.removeEventListener('blur', this.windowBlurHandler);\n\n this.viewportSubscription.unsubscribe();\n this.componentDestroyed = true;\n this.destroyPanel();\n this.closeKeyEventStream.complete();\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when autocomplete has been touched` */\n onTouched: () => void = () => {};\n\n /** Opens the autocomplete suggestion panel. */\n openPanel(): void {\n this.attachOverlay();\n }\n\n closePanel(): void {\n if (!this.overlayAttached) {\n return;\n }\n\n if (this.panelOpen) {\n this.autocomplete.closed.emit();\n }\n\n this.autocomplete.isOpen = this.overlayAttached = false;\n\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n this.closingActionsSubscription.unsubscribe();\n }\n\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this.componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this.changeDetectorRef.detectChanges();\n }\n }\n\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition(): void {\n if (this.overlayAttached) {\n this.overlayRef!.updatePosition();\n }\n }\n\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions(): Observable<KbqOptionSelectionChange | null> {\n return merge(\n this.optionSelections,\n this.autocomplete.keyManager.tabOut.pipe(filter(() => this.overlayAttached)),\n this.closeKeyEventStream,\n this.getOutsideClickStream(),\n this.overlayRef ? this.overlayRef.detachments().pipe(filter(() => this.overlayAttached)) : observableOf()\n ).pipe(\n // Normalize the output so we return a consistent type.\n map((event) => (event instanceof KbqOptionSelectionChange ? event : null))\n );\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any): void {\n Promise.resolve(null).then(() => this.setTriggerValue(value));\n }\n\n // Implemented as part of ControlValueAccessor.\n // eslint-disable-next-line @typescript-eslint/ban-types\n registerOnChange(fn: (value: any) => {}): void {\n this.onChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n // eslint-disable-next-line @typescript-eslint/ban-types\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this.elementRef.nativeElement.disabled = isDisabled;\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE) {\n event.preventDefault();\n }\n\n if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption.selectViaInteraction();\n this.resetActiveItem();\n event.preventDefault();\n } else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete.keyManager.activeItem;\n\n if (this.panelOpen || keyCode === TAB) {\n this.autocomplete.onKeydown(event);\n } else if (!this.panelOpen && keyCode === DOWN_ARROW && this.canOpen()) {\n this.openPanel();\n }\n\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n\n if (isArrowKey && event.shiftKey && this.autocomplete.keyManager.activeItem !== prevActiveItem) {\n this.autocomplete.keyManager.activeItem?.selectViaInteraction();\n }\n }\n }\n\n handleInput(event: KeyboardEvent): void {\n const target = event.target as HTMLInputElement;\n let value: number | string | null = target.value;\n\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value === '' ? null : parseFloat(value);\n }\n\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this.previousValue !== value) {\n this.previousValue = value;\n this.onChange(value);\n\n if (this.canOpen() && this.document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n\n handleFocus(): void {\n if (!this.canOpenOnNextFocus) {\n this.canOpenOnNextFocus = true;\n } else if (!this.panelOpen && this.canOpen() && this.autocomplete.openOnFocus) {\n this.previousValue = this.elementRef.nativeElement.value;\n this.attachOverlay();\n }\n }\n\n handleClick($event: MouseEvent) {\n if (!this.panelOpen && this.canOpen() && this.document.activeElement === $event.target) {\n this.openPanel();\n }\n }\n\n scrollActiveOptionIntoView(): void {\n this.autocomplete.keyManager.activeItem?.focus();\n }\n\n /** Stream of clicks outside of the autocomplete panel. */\n private getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this.document, 'click') as Observable<MouseEvent>,\n fromEvent(this.document, 'auxclick') as Observable<MouseEvent>,\n fromEvent(this.document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter((event) => {\n const clickTarget = _getEventTarget<HTMLElement>(event);\n const formField = this.formField ? this.formField.elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n\n return (\n this.overlayAttached &&\n clickTarget !== this.elementRef.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n !!this.overlayRef &&\n !this.overlayRef.overlayElement.contains(clickTarget)\n );\n })\n );\n }\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this.canOpenOnNextFocus = this.document.activeElement !== this.elementRef.nativeElement || this.panelOpen;\n };\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private subscribeToClosingActions(): Subscription {\n const firstStable = this.zone.onStable.asObservable().pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(\n tap(() => this.positionStrategy.reapplyLastPosition()),\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0)\n );\n\n // When the zone is stable initially, and when the option list changes...\n return (\n merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n const wasOpen = this.panelOpen;\n\n this.resetActiveItem();\n this.autocomplete.setVisibility();\n\n if (this.panelOpen) {\n this.overlayRef!.updatePosition();\n\n // If the `panelOpen` state changed, we need to make sure to emit the `opened`\n // event, because we may not have emitted it when the panel was attached. This\n // can happen if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing.\n if (wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1)\n )\n // set the value, close the panel, and complete.\n .subscribe((event) => this.setValueAndClose(event))\n );\n }\n\n /** Destroys the autocomplete suggestion panel. */\n private destroyPanel(): void {\n if (this.overlayRef) {\n this.closePanel();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n private setTriggerValue(value: any): void {\n const toDisplay =\n this.autocomplete && this.autocomplete.displayWith ? this.autocomplete.displayWith(value) : value;\n\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n\n const inputValue = toDisplay != null ? toDisplay : '';\n\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this.formField) {\n this.formField.control.value = inputValue;\n } else {\n this.elementRef.nativeElement.value = inputValue;\n }\n\n this.previousValue = inputValue;\n }\n\n /** This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n private setValueAndClose(event: KbqOptionSelectionChange | null): void {\n if (event?.source) {\n this.clearPreviousSelectedOption(event.source);\n this.setTriggerValue(event.source.value);\n this.onChange(event.source.value);\n this.elementRef.nativeElement.focus();\n\n this.autocomplete.emitSelectEvent(event.source);\n }\n\n this.closePanel();\n }\n\n /** Clear any previous selected option and emit a selection change event for this option */\n private clearPreviousSelectedOption(skip: KbqOption) {\n this.autocomplete.options.forEach((option) => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n\n private attachOverlay(): void {\n if (!this.autocomplete) {\n throw getKbqAutocompleteMissingPanelError();\n }\n\n let overlayRef = this.overlayRef;\n\n if (!overlayRef) {\n this.portal = new TemplatePortal(this.autocomplete.template, this.viewContainerRef);\n overlayRef = this.overlay.create(this.getOverlayConfig());\n this.overlayRef = overlayRef;\n\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n overlayRef.keydownEvents().subscribe((event) => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE || (event.keyCode === UP_ARROW && event.altKey)) {\n this.resetActiveItem();\n this.closeKeyEventStream.next();\n }\n });\n\n if (this.viewportRuler) {\n this.viewportSubscription = this.viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this.getPanelWidth() });\n }\n });\n }\n } else {\n const position = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n // Update the trigger, panel width and direction, in case anything has changed.\n position.setOrigin(this.getConnectedElement());\n overlayRef.updateSize({ width: this.getPanelWidth() });\n }\n\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this.portal);\n this.closingActionsSubscription = this.subscribeToClosingActions();\n }\n\n const wasOpen = this.panelOpen;\n\n this.autocomplete.setVisibility();\n this.autocomplete.isOpen = this.overlayAttached = true;\n\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n\n this.zone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => this.resetActiveItem());\n }\n\n private getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this.getOverlayPosition(),\n scrollStrategy: this.scrollStrategy(),\n width: this.getPanelWidth(),\n direction: this.dir\n });\n }\n\n private getOverlayPosition(): PositionStrategy {\n this.positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: defaultOffsetY\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -defaultOffsetY\n }\n ] as ConnectedPosition[]);\n\n return this.positionStrategy;\n }\n\n private getConnectedElement(): ElementRef<HTMLElement> {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n\n return this.formField ? this.formField.getConnectedOverlayOrigin() : this.elementRef;\n }\n\n private getPanelWidth(): number | string {\n return this.autocomplete.panelWidth || this.getHostWidth();\n }\n\n private getHostWidth(): number {\n return this.getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * Resets the active item to -1 so arrow events will activate the\n * correct options, or to 0 if the consumer opted into it.\n */\n private resetActiveItem(): void {\n if (this.autocomplete.autoActiveFirstOption) {\n this.autocomplete.keyManager.setFirstItemActive();\n } else {\n this.autocomplete.keyManager.setActiveItem(-1);\n }\n }\n\n private canOpen(): boolean {\n const element = this.elementRef.nativeElement;\n\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqOptionModule } from '@koobiq/components/core';\nimport { KbqAutocompleteOrigin } from './autocomplete-origin.directive';\nimport {\n KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqAutocompleteTrigger\n} from './autocomplete-trigger.directive';\nimport { KbqAutocomplete } from './autocomplete.component';\n\n@NgModule({\n imports: [\n KbqOptionModule,\n OverlayModule,\n NgClass\n ],\n exports: [\n KbqAutocomplete,\n KbqOptionModule,\n KbqAutocompleteTrigger,\n KbqAutocompleteOrigin\n ],\n declarations: [KbqAutocomplete, KbqAutocompleteTrigger, KbqAutocompleteOrigin],\n providers: [KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\nexport class KbqAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableOf","i2","i3"],"mappings":"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"}
|