@koobiq/components 19.8.3 → 20.1.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-trigger.component.scss +0 -18
- package/accordion/accordion.component.scss +9 -2
- package/accordion/index.d.ts +238 -1
- package/actions-panel/index.d.ts +304 -5
- package/alert/_alert-theme.scss +0 -4
- package/alert/alert-tokens.scss +4 -4
- package/alert/index.d.ts +54 -1
- package/app-switcher/app-switcher-dropdown-app.scss +2 -0
- package/app-switcher/index.d.ts +239 -1
- package/autocomplete/index.d.ts +265 -1
- package/badge/index.d.ts +57 -1
- package/breadcrumbs/breadcrumbs.scss +4 -0
- package/breadcrumbs/index.d.ts +244 -1
- package/button/button-group.scss +42 -2
- package/button/index.d.ts +153 -1
- package/button-toggle/button-toggle.scss +23 -0
- package/button-toggle/index.d.ts +157 -1
- package/checkbox/checkbox.scss +5 -4
- package/checkbox/index.d.ts +159 -1
- package/clamped-text/index.d.ts +145 -4
- package/code-block/_code-block-theme.scss +0 -6
- package/code-block/code-block-tokens.scss +0 -2
- package/code-block/index.d.ts +383 -1
- package/content-panel/content-panel.scss +0 -8
- package/content-panel/index.d.ts +158 -2
- package/core/highlight/_highlight-theme.scss +9 -0
- package/core/index.d.ts +4794 -1
- package/core/styles/_koobiq-theme.scss +1 -0
- package/core/styles/common/_animation.scss +4 -0
- package/core/styles/common/_overlay.scss +3 -4
- package/core/styles/theming/_components-theming.scss +1 -63
- package/core/styles/theming/_scrollbar-theme.scss +4 -0
- package/datepicker/_datepicker-theme.scss +1 -1
- package/datepicker/datepicker-toggle.scss +3 -3
- package/datepicker/index.d.ts +699 -1
- package/divider/index.d.ts +20 -1
- package/dl/index.d.ts +38 -1
- package/dropdown/dropdown.scss +2 -2
- package/dropdown/index.d.ts +473 -1
- package/dynamic-translation/index.d.ts +81 -2
- package/ellipsis-center/index.d.ts +38 -1
- package/empty-state/index.d.ts +45 -1
- package/fesm2022/koobiq-components-accordion.mjs +104 -115
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +16 -16
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +35 -49
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +82 -87
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +294 -304
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +35 -42
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +79 -101
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +92 -88
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +56 -51
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +50 -52
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +46 -49
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +115 -136
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +90 -107
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +2048 -703
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +285 -349
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +14 -25
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +30 -31
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +159 -160
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +23 -23
- package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +16 -21
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +35 -39
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +160 -248
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +1160 -1184
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +66 -0
- package/fesm2022/koobiq-components-flag.mjs.map +1 -0
- package/fesm2022/koobiq-components-form-field.mjs +211 -430
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +42 -43
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +85 -61
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +116 -155
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +38 -53
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +138 -128
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +38 -45
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +31 -35
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +174 -164
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +164 -169
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +80 -59
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +40 -36
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +94 -85
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +24 -30
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +25 -32
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +95 -85
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +17 -17
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs +69 -60
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +44 -35
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +279 -244
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +63 -55
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +88 -128
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +13 -13
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +29 -22
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +114 -96
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +23 -23
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +260 -275
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +179 -267
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +42 -68
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +65 -66
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +46 -38
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +58 -58
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +150 -39
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +54 -69
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +51 -63
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +141 -121
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +22 -25
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +264 -231
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +273 -239
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +62 -49
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/file-upload-tokens.scss +1 -0
- package/file-upload/index.d.ts +577 -1
- package/filter-bar/_filter-bar-theme.scss +86 -0
- package/filter-bar/filter-bar-tokens.scss +6 -0
- package/filter-bar/filter-bar.scss +10 -4
- package/filter-bar/filter-refresher.scss +1 -1
- package/filter-bar/filters.scss +23 -19
- package/filter-bar/index.d.ts +1165 -1
- package/filter-bar/pipes/base-pipe.scss +14 -35
- package/filter-bar/pipes/pipe-date.scss +20 -14
- package/filter-bar/pipes/pipe-multi-tree-select.scss +5 -3
- package/filter-bar/pipes/pipe-multiselect.scss +5 -3
- package/filter-bar/pipes/pipe-readonly.scss +4 -13
- package/filter-bar/pipes/pipe-select.scss +3 -1
- package/filter-bar/pipes/pipe-tree-select.scss +3 -1
- package/flag/flag.scss +53 -0
- package/flag/index.d.ts +44 -0
- package/form-field/index.d.ts +569 -1
- package/icon/index.d.ts +162 -1
- package/index.d.ts +2 -1
- package/inline-edit/index.d.ts +176 -2
- package/inline-edit/inline-edit.scss +7 -7
- package/input/index.d.ts +339 -1
- package/link/index.d.ts +56 -1
- package/link/link-tokens.scss +2 -2
- package/list/index.d.ts +229 -1
- package/loader-overlay/index.d.ts +57 -1
- package/loader-overlay/loader-overlay-tokens.scss +1 -1
- package/markdown/index.d.ts +68 -1
- package/modal/_modal-animation.scss +6 -6
- package/modal/_modal-theme.scss +3 -6
- package/modal/index.d.ts +313 -1
- package/modal/modal.scss +15 -0
- package/navbar/index.d.ts +305 -1
- package/navbar/navbar.scss +1 -2
- package/notification-center/index.d.ts +322 -1
- package/notification-center/notification-center.scss +14 -9
- package/notification-center/notification-item.scss +2 -1
- package/overflow-items/index.d.ts +162 -2
- package/package.json +13 -17
- package/popover/index.d.ts +182 -1
- package/popover/popover.scss +8 -12
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/index.d.ts +31 -1
- package/progress-bar/progress-bar.scss +4 -0
- package/progress-spinner/index.d.ts +37 -1
- package/progress-spinner/progress-spinner.scss +5 -1
- package/radio/index.d.ts +203 -1
- package/radio/radio.scss +18 -4
- package/resizer/index.d.ts +85 -2
- package/schematics/collection.json +10 -0
- package/schematics/migrations/css-selectors/index.js +1 -1
- package/schematics/migrations/deprecated-icons/index.js +1 -1
- package/schematics/migrations/filter-bar-signals/README.md +66 -0
- package/schematics/migrations/filter-bar-signals/data.js +72 -0
- package/schematics/migrations/filter-bar-signals/index.js +316 -0
- package/schematics/migrations/filter-bar-signals/schema.json +20 -0
- package/schematics/migrations/new-icons-pack/index.js +1 -1
- package/schematics/migrations/v20-upgrade/README.md +72 -0
- package/schematics/migrations/v20-upgrade/data.js +274 -0
- package/schematics/migrations/v20-upgrade/index.js +222 -0
- package/schematics/migrations/v20-upgrade/schema.json +20 -0
- package/schematics/migrations.json +15 -0
- package/schematics/ng-add/index.js +3 -4
- package/scrollbar/index.d.ts +136 -1
- package/search-expandable/index.d.ts +98 -1
- package/select/index.d.ts +701 -1
- package/sidebar/index.d.ts +93 -1
- package/sidepanel/index.d.ts +263 -1
- package/sidepanel/sidepanel.scss +0 -8
- package/skeleton/index.d.ts +26 -2
- package/skeleton/skeleton.scss +4 -0
- package/split-button/_split-button-theme.scss +2 -2
- package/split-button/index.d.ts +46 -1
- package/splitter/_splitter-theme.scss +2 -2
- package/splitter/index.d.ts +142 -1
- package/table/_table-theme.scss +4 -0
- package/table/index.d.ts +24 -1
- package/tabs/index.d.ts +647 -1
- package/tabs/tab-header.scss +1 -0
- package/tabs/tabs-tokens.scss +1 -1
- package/tags/index.d.ts +706 -1
- package/textarea/index.d.ts +133 -1
- package/time-range/index.d.ts +310 -7
- package/time-range/time-range.scss +0 -8
- package/timepicker/index.d.ts +193 -1
- package/timepicker/timepicker.scss +2 -2
- package/timezone/index.d.ts +123 -1
- package/title/index.d.ts +131 -1
- package/toast/index.d.ts +164 -1
- package/toggle/index.d.ts +84 -1
- package/tooltip/index.d.ts +211 -1
- package/top-bar/index.d.ts +33 -1
- package/top-bar/top-bar.scss +1 -2
- package/tree/_tree-theme.scss +2 -7
- package/tree/index.d.ts +733 -1
- package/tree/toggle.scss +5 -0
- package/tree/tree-option.scss +20 -11
- package/tree-select/_tree-select-theme.scss +1 -1
- package/tree-select/index.d.ts +384 -1
- package/username/index.d.ts +194 -5
- package/accordion/accordion-content.d.ts +0 -6
- package/accordion/accordion-content.directive.d.ts +0 -27
- package/accordion/accordion-header.d.ts +0 -6
- package/accordion/accordion-header.directive.d.ts +0 -7
- package/accordion/accordion-item.d.ts +0 -77
- package/accordion/accordion-trigger.component.d.ts +0 -24
- package/accordion/accordion-trigger.directive.d.ts +0 -21
- package/accordion/accordion.component.d.ts +0 -79
- package/accordion/accordion.module.d.ts +0 -12
- package/accordion/public-api.d.ts +0 -9
- package/actions-panel/actions-panel-config.d.ts +0 -82
- package/actions-panel/actions-panel-container.d.ts +0 -90
- package/actions-panel/actions-panel-ref.d.ts +0 -44
- package/actions-panel/actions-panel.d.ts +0 -85
- package/actions-panel/module.d.ts +0 -7
- package/alert/alert.component.d.ts +0 -43
- package/alert/alert.module.d.ts +0 -9
- package/alert/public-api.d.ts +0 -2
- package/app-switcher/app-switcher-animations.d.ts +0 -5
- package/app-switcher/app-switcher-dropdown-app.d.ts +0 -11
- package/app-switcher/app-switcher-dropdown-site.d.ts +0 -9
- package/app-switcher/app-switcher.d.ts +0 -198
- package/app-switcher/app-switcher.module.d.ts +0 -10
- package/app-switcher/kbq-app-switcher-list-item.d.ts +0 -16
- package/app-switcher/public-api.d.ts +0 -6
- package/autocomplete/autocomplete-origin.directive.d.ts +0 -12
- package/autocomplete/autocomplete-trigger.directive.d.ts +0 -169
- package/autocomplete/autocomplete.component.d.ts +0 -88
- package/autocomplete/autocomplete.module.d.ts +0 -12
- package/autocomplete/public-api.d.ts +0 -4
- package/badge/badge.component.d.ts +0 -46
- package/badge/badge.module.d.ts +0 -9
- package/badge/public-api.d.ts +0 -2
- package/breadcrumbs/breadcrumbs.d.ts +0 -121
- package/breadcrumbs/breadcrumbs.module.d.ts +0 -7
- package/breadcrumbs/breadcrumbs.types.d.ts +0 -22
- package/breadcrumbs/public-api.d.ts +0 -5
- package/breadcrumbs/roving-focus-group.directive.d.ts +0 -50
- package/breadcrumbs/roving-focus-item.directive.d.ts +0 -50
- package/breadcrumbs/utils.d.ts +0 -19
- package/button/button-group.d.ts +0 -45
- package/button/button-slots.d.ts +0 -11
- package/button/button.component.d.ts +0 -74
- package/button/button.dropdown-trigger.directive.d.ts +0 -14
- package/button/button.module.d.ts +0 -13
- package/button/public-api.d.ts +0 -5
- package/button-toggle/button-toggle.component.d.ts +0 -146
- package/button-toggle/button-toggle.module.d.ts +0 -9
- package/button-toggle/public-api.d.ts +0 -2
- package/checkbox/checkbox-config.d.ts +0 -13
- package/checkbox/checkbox-module.d.ts +0 -9
- package/checkbox/checkbox-required-validator.d.ts +0 -13
- package/checkbox/checkbox.d.ts +0 -128
- package/checkbox/public-api.d.ts +0 -4
- package/clamped-text/clamped-list.d.ts +0 -41
- package/clamped-text/clamped-text.d.ts +0 -65
- package/clamped-text/constants.d.ts +0 -34
- package/clamped-text/module.d.ts +0 -8
- package/code-block/code-block-highlight.d.ts +0 -98
- package/code-block/code-block.d.ts +0 -259
- package/code-block/code-block.module.d.ts +0 -7
- package/code-block/public-api.d.ts +0 -4
- package/code-block/types.d.ts +0 -36
- package/content-panel/content-panel.d.ts +0 -149
- package/content-panel/module.d.ts +0 -7
- package/core/animation/animation.d.ts +0 -37
- package/core/animation/fade-animations.d.ts +0 -2
- package/core/animation/index.d.ts +0 -3
- package/core/animation/select-animations.d.ts +0 -12
- package/core/common-behaviors/checkbox.d.ts +0 -5
- package/core/common-behaviors/clipboard.d.ts +0 -12
- package/core/common-behaviors/color.d.ts +0 -50
- package/core/common-behaviors/common-module.d.ts +0 -38
- package/core/common-behaviors/constructor.d.ts +0 -9
- package/core/common-behaviors/disabled.d.ts +0 -8
- package/core/common-behaviors/error-state.d.ts +0 -46
- package/core/common-behaviors/flex.d.ts +0 -4
- package/core/common-behaviors/hover.d.ts +0 -15
- package/core/common-behaviors/index.d.ts +0 -14
- package/core/common-behaviors/orientation.d.ts +0 -4
- package/core/common-behaviors/read-state.d.ts +0 -12
- package/core/common-behaviors/size.d.ts +0 -4
- package/core/common-behaviors/tabindex.d.ts +0 -8
- package/core/datetime/date-adapter.d.ts +0 -12
- package/core/datetime/date-formats.d.ts +0 -4
- package/core/datetime/index.d.ts +0 -2
- package/core/error/error-state-matcher.d.ts +0 -39
- package/core/form-field/field-sizing-content.d.ts +0 -21
- package/core/form-field/form-field-ref.d.ts +0 -28
- package/core/form-field/index.d.ts +0 -2
- package/core/formatters/date/formatter.d.ts +0 -11
- package/core/formatters/date/formatter.pipe.d.ts +0 -139
- package/core/formatters/filesize/config.d.ts +0 -66
- package/core/formatters/filesize/formatter.d.ts +0 -17
- package/core/formatters/filesize/index.d.ts +0 -3
- package/core/formatters/filesize/size.d.ts +0 -52
- package/core/formatters/index.d.ts +0 -13
- package/core/formatters/number/formatter.d.ts +0 -101
- package/core/forms/forms-module.d.ts +0 -7
- package/core/forms/forms.directive.d.ts +0 -22
- package/core/forms/index.d.ts +0 -3
- package/core/forms/validators.d.ts +0 -120
- package/core/highlight/highlight.pipe.d.ts +0 -10
- package/core/highlight/index.d.ts +0 -9
- package/core/line/line.d.ts +0 -23
- package/core/locales/en-US.d.ts +0 -176
- package/core/locales/es-LA.d.ts +0 -175
- package/core/locales/formatters.d.ts +0 -190
- package/core/locales/index.d.ts +0 -9
- package/core/locales/locale-service.d.ts +0 -1117
- package/core/locales/locale-service.module.d.ts +0 -6
- package/core/locales/pt-BR.d.ts +0 -175
- package/core/locales/ru-RU.d.ts +0 -176
- package/core/locales/tk-TM.d.ts +0 -176
- package/core/locales/types.d.ts +0 -77
- package/core/navbar/index.d.ts +0 -1
- package/core/navbar/rectangle-item.d.ts +0 -14
- package/core/option/action-container.d.ts +0 -5
- package/core/option/action.d.ts +0 -38
- package/core/option/index.d.ts +0 -5
- package/core/option/optgroup.d.ts +0 -16
- package/core/option/option-module.d.ts +0 -10
- package/core/option/option.d.ts +0 -170
- package/core/overlay/overlay-position-map.d.ts +0 -40
- package/core/pop-up/constants.d.ts +0 -56
- package/core/pop-up/focus-trap-strategy.d.ts +0 -5
- package/core/pop-up/index.d.ts +0 -5
- package/core/pop-up/pop-up-styles.d.ts +0 -2
- package/core/pop-up/pop-up-trigger.d.ts +0 -104
- package/core/pop-up/pop-up.d.ts +0 -57
- package/core/public-api.d.ts +0 -23
- package/core/select/common.d.ts +0 -59
- package/core/select/constants.d.ts +0 -22
- package/core/select/errors.d.ts +0 -19
- package/core/select/events.d.ts +0 -1
- package/core/select/index.d.ts +0 -4
- package/core/selection/constants.d.ts +0 -4
- package/core/selection/index.d.ts +0 -3
- package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +0 -23
- package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +0 -8
- package/core/services/measure-scrollbar.service.d.ts +0 -11
- package/core/services/theme.service.d.ts +0 -41
- package/core/title/index.d.ts +0 -1
- package/core/title/title-text-ref.d.ts +0 -6
- package/core/tokens/index.d.ts +0 -1
- package/core/tokens/window.d.ts +0 -5
- package/core/utils/dom.d.ts +0 -4
- package/core/utils/index.d.ts +0 -2
- package/core/utils/public-api.d.ts +0 -1
- package/core/utils/utils.d.ts +0 -25
- package/core/validation/index.d.ts +0 -1
- package/core/validation/validation.d.ts +0 -29
- package/core/version.d.ts +0 -2
- package/datepicker/calendar-body.component.d.ts +0 -55
- package/datepicker/calendar-header.component.d.ts +0 -51
- package/datepicker/calendar.component.d.ts +0 -89
- package/datepicker/datepicker-animations.d.ts +0 -9
- package/datepicker/datepicker-errors.d.ts +0 -2
- package/datepicker/datepicker-input.directive.d.ts +0 -221
- package/datepicker/datepicker-intl.d.ts +0 -32
- package/datepicker/datepicker-module.d.ts +0 -21
- package/datepicker/datepicker-toggle.component.d.ts +0 -57
- package/datepicker/datepicker.component.d.ts +0 -148
- package/datepicker/month-view.component.d.ts +0 -73
- package/datepicker/public-api.d.ts +0 -10
- package/divider/divider.component.d.ts +0 -18
- package/divider/divider.module.d.ts +0 -8
- package/divider/public-api.d.ts +0 -2
- package/dl/dl.component.d.ts +0 -26
- package/dl/dl.module.d.ts +0 -9
- package/dl/public-api.d.ts +0 -2
- package/dropdown/dropdown-animations.d.ts +0 -11
- package/dropdown/dropdown-content.directive.d.ts +0 -32
- package/dropdown/dropdown-errors.d.ts +0 -17
- package/dropdown/dropdown-item.component.d.ts +0 -52
- package/dropdown/dropdown-trigger.directive.d.ts +0 -167
- package/dropdown/dropdown.component.d.ts +0 -134
- package/dropdown/dropdown.module.d.ts +0 -13
- package/dropdown/dropdown.types.d.ts +0 -67
- package/dropdown/public-api.d.ts +0 -8
- package/dynamic-translation/dynamic-translation.d.ts +0 -72
- package/dynamic-translation/module.d.ts +0 -7
- package/ellipsis-center/ellipsis-center.directive.d.ts +0 -36
- package/ellipsis-center/public-api.d.ts +0 -1
- package/empty-state/empty-state.component.d.ts +0 -36
- package/empty-state/empty-state.module.d.ts +0 -9
- package/empty-state/public-api.d.ts +0 -2
- package/fesm2022/koobiq-components-navbar-ic.mjs +0 -863
- package/fesm2022/koobiq-components-navbar-ic.mjs.map +0 -1
- package/fesm2022/koobiq-components-risk-level.mjs +0 -75
- package/fesm2022/koobiq-components-risk-level.mjs.map +0 -1
- package/file-upload/dropzone.d.ts +0 -147
- package/file-upload/file-upload.d.ts +0 -102
- package/file-upload/file-upload.module.d.ts +0 -20
- package/file-upload/multiple-file-upload.component.d.ts +0 -138
- package/file-upload/primitives/file-drop.d.ts +0 -35
- package/file-upload/primitives/file-picker.d.ts +0 -82
- package/file-upload/primitives/index.d.ts +0 -2
- package/file-upload/public-api.d.ts +0 -7
- package/file-upload/single-file-upload.component.d.ts +0 -118
- package/filter-bar/filter-bar-button.d.ts +0 -14
- package/filter-bar/filter-bar.d.ts +0 -81
- package/filter-bar/filter-bar.module.d.ts +0 -17
- package/filter-bar/filter-bar.types.d.ts +0 -143
- package/filter-bar/filter-refresher.d.ts +0 -5
- package/filter-bar/filter-reset.d.ts +0 -15
- package/filter-bar/filter-search.d.ts +0 -54
- package/filter-bar/filter-search.scss +0 -12
- package/filter-bar/filters.d.ts +0 -122
- package/filter-bar/pipe-add.d.ts +0 -28
- package/filter-bar/pipe.directive.d.ts +0 -13
- package/filter-bar/pipes/base-pipe.d.ts +0 -74
- package/filter-bar/pipes/pipe-button.d.ts +0 -21
- package/filter-bar/pipes/pipe-date.d.ts +0 -65
- package/filter-bar/pipes/pipe-datetime.d.ts +0 -66
- package/filter-bar/pipes/pipe-multi-select.d.ts +0 -56
- package/filter-bar/pipes/pipe-multi-tree-select.d.ts +0 -67
- package/filter-bar/pipes/pipe-readonly.d.ts +0 -7
- package/filter-bar/pipes/pipe-select.d.ts +0 -30
- package/filter-bar/pipes/pipe-state.d.ts +0 -21
- package/filter-bar/pipes/pipe-text.d.ts +0 -26
- package/filter-bar/pipes/pipe-title.d.ts +0 -27
- package/filter-bar/pipes/pipe-tree-select.d.ts +0 -42
- package/filter-bar/public-api.d.ts +0 -21
- package/form-field/cleaner.d.ts +0 -11
- package/form-field/error.d.ts +0 -8
- package/form-field/fieldset.d.ts +0 -27
- package/form-field/form-field-control.d.ts +0 -40
- package/form-field/form-field.d.ts +0 -298
- package/form-field/form-field.module.d.ts +0 -19
- package/form-field/hint.d.ts +0 -15
- package/form-field/label.d.ts +0 -6
- package/form-field/password-hint.d.ts +0 -53
- package/form-field/password-toggle.d.ts +0 -56
- package/form-field/prefix.d.ts +0 -6
- package/form-field/public-api.d.ts +0 -15
- package/form-field/reactive-password-hint.d.ts +0 -20
- package/form-field/stepper.d.ts +0 -59
- package/form-field/suffix.d.ts +0 -6
- package/form-field/validate.directive.d.ts +0 -53
- package/icon/icon-button.component.d.ts +0 -28
- package/icon/icon-item.component.d.ts +0 -11
- package/icon/icon-registry-providers.d.ts +0 -34
- package/icon/icon-registry.d.ts +0 -50
- package/icon/icon.component.d.ts +0 -33
- package/icon/icon.module.d.ts +0 -9
- package/icon/public-api.d.ts +0 -6
- package/inline-edit/inline-edit.d.ts +0 -161
- package/inline-edit/module.d.ts +0 -7
- package/input/input-errors.d.ts +0 -1
- package/input/input-number-validators.d.ts +0 -35
- package/input/input-number.d.ts +0 -96
- package/input/input-password.d.ts +0 -99
- package/input/input-value-accessor.d.ts +0 -4
- package/input/input.d.ts +0 -109
- package/input/input.module.d.ts +0 -14
- package/input/public-api.d.ts +0 -6
- package/link/link.component.d.ts +0 -53
- package/link/link.module.d.ts +0 -8
- package/link/public-api.d.ts +0 -2
- package/list/list-selection.component.d.ts +0 -196
- package/list/list.component.d.ts +0 -18
- package/list/list.module.d.ts +0 -11
- package/list/public-api.d.ts +0 -3
- package/loader-overlay/loader-overlay.component.d.ts +0 -47
- package/loader-overlay/loader-overlay.module.d.ts +0 -10
- package/loader-overlay/public-api.d.ts +0 -2
- package/markdown/markdown.component.d.ts +0 -31
- package/markdown/markdown.module.d.ts +0 -7
- package/markdown/markdown.service.d.ts +0 -19
- package/markdown/markdown.values.d.ts +0 -10
- package/markdown/public-api.d.ts +0 -4
- package/modal/css-unit.pipe.d.ts +0 -7
- package/modal/modal-control.service.d.ts +0 -20
- package/modal/modal-ref.class.d.ts +0 -37
- package/modal/modal-util.d.ts +0 -15
- package/modal/modal.component.d.ts +0 -141
- package/modal/modal.directive.d.ts +0 -20
- package/modal/modal.module.d.ts +0 -15
- package/modal/modal.service.d.ts +0 -42
- package/modal/modal.type.d.ts +0 -72
- package/modal/public-api.d.ts +0 -6
- package/navbar/navbar-brand.component.d.ts +0 -41
- package/navbar/navbar-item.component.d.ts +0 -131
- package/navbar/navbar-toggle.component.d.ts +0 -23
- package/navbar/navbar.component.d.ts +0 -68
- package/navbar/navbar.module.d.ts +0 -15
- package/navbar/public-api.d.ts +0 -6
- package/navbar/vertical-navbar.component.d.ts +0 -47
- package/navbar-ic/_navbar-ic-theme.scss +0 -81
- package/navbar-ic/index.d.ts +0 -1
- package/navbar-ic/navbar-ic-divider.scss +0 -7
- package/navbar-ic/navbar-ic-header.d.ts +0 -22
- package/navbar-ic/navbar-ic-header.scss +0 -49
- package/navbar-ic/navbar-ic-item.d.ts +0 -144
- package/navbar-ic/navbar-ic-item.scss +0 -92
- package/navbar-ic/navbar-ic-tokens.scss +0 -22
- package/navbar-ic/navbar-ic.animation.d.ts +0 -3
- package/navbar-ic/navbar-ic.d.ts +0 -118
- package/navbar-ic/navbar-ic.module.d.ts +0 -14
- package/navbar-ic/navbar-ic.scss +0 -32
- package/navbar-ic/public-api.d.ts +0 -4
- package/notification-center/notification-center-animations.d.ts +0 -5
- package/notification-center/notification-center.d.ts +0 -184
- package/notification-center/notification-center.module.d.ts +0 -7
- package/notification-center/notification-center.service.d.ts +0 -115
- package/notification-center/notification-item.d.ts +0 -27
- package/notification-center/public-api.d.ts +0 -4
- package/overflow-items/module.d.ts +0 -7
- package/overflow-items/overflow-items.d.ts +0 -152
- package/popover/popover-animations.d.ts +0 -4
- package/popover/popover-confirm.component.d.ts +0 -28
- package/popover/popover.component.d.ts +0 -139
- package/popover/popover.module.d.ts +0 -14
- package/popover/public-api.d.ts +0 -4
- package/progress-bar/progress-bar.component.d.ts +0 -20
- package/progress-bar/progress-bar.module.d.ts +0 -8
- package/progress-bar/public-api.d.ts +0 -2
- package/progress-spinner/progress-spinner.component.d.ts +0 -26
- package/progress-spinner/progress-spinner.module.d.ts +0 -9
- package/progress-spinner/public-api.d.ts +0 -2
- package/public-api.d.ts +0 -1
- package/radio/public-api.d.ts +0 -2
- package/radio/radio.component.d.ts +0 -200
- package/radio/radio.module.d.ts +0 -8
- package/resizer/module.d.ts +0 -7
- package/resizer/resizer.d.ts +0 -75
- package/risk-level/_risk-level-theme.scss +0 -74
- package/risk-level/index.d.ts +0 -1
- package/risk-level/public-api.d.ts +0 -2
- package/risk-level/risk-level-tokens.scss +0 -33
- package/risk-level/risk-level.component.d.ts +0 -21
- package/risk-level/risk-level.component.scss +0 -22
- package/risk-level/risk-level.module.d.ts +0 -12
- package/scrollbar/public-api.d.ts +0 -4
- package/scrollbar/scrollbar.component.d.ts +0 -37
- package/scrollbar/scrollbar.directive.d.ts +0 -29
- package/scrollbar/scrollbar.module.d.ts +0 -8
- package/scrollbar/scrollbar.types.d.ts +0 -33
- package/search-expandable/public-api.d.ts +0 -2
- package/search-expandable/search-expandable.d.ts +0 -89
- package/search-expandable/search-expandable.module.d.ts +0 -7
- package/select/public-api.d.ts +0 -4
- package/select/select-common.d.ts +0 -30
- package/select/select-option.directive.d.ts +0 -21
- package/select/select.component.d.ts +0 -627
- package/select/select.module.d.ts +0 -17
- package/sidebar/public-api.d.ts +0 -2
- package/sidebar/sidebar-animations.d.ts +0 -8
- package/sidebar/sidebar.component.d.ts +0 -80
- package/sidebar/sidebar.module.d.ts +0 -8
- package/sidepanel/public-api.d.ts +0 -6
- package/sidepanel/sidepanel-animations.d.ts +0 -20
- package/sidepanel/sidepanel-config.d.ts +0 -43
- package/sidepanel/sidepanel-container.component.d.ts +0 -67
- package/sidepanel/sidepanel-directives.d.ts +0 -61
- package/sidepanel/sidepanel-ref.d.ts +0 -36
- package/sidepanel/sidepanel.module.d.ts +0 -14
- package/sidepanel/sidepanel.service.d.ts +0 -58
- package/skeleton/module.d.ts +0 -7
- package/skeleton/skeleton.d.ts +0 -17
- package/split-button/public-api.d.ts +0 -2
- package/split-button/split-button.d.ts +0 -37
- package/split-button/split-button.module.d.ts +0 -7
- package/splitter/public-api.d.ts +0 -2
- package/splitter/splitter.component.d.ts +0 -136
- package/splitter/splitter.module.d.ts +0 -8
- package/table/public-api.d.ts +0 -2
- package/table/table.component.d.ts +0 -12
- package/table/table.module.d.ts +0 -9
- package/tabs/paginated-tab-header.d.ts +0 -182
- package/tabs/public-api.d.ts +0 -10
- package/tabs/tab-body.component.d.ts +0 -95
- package/tabs/tab-content.directive.d.ts +0 -9
- package/tabs/tab-group.component.d.ts +0 -137
- package/tabs/tab-header.component.d.ts +0 -34
- package/tabs/tab-label-wrapper.directive.d.ts +0 -29
- package/tabs/tab-label.directive.d.ts +0 -11
- package/tabs/tab-nav-bar.d.ts +0 -91
- package/tabs/tab.component.d.ts +0 -70
- package/tabs/tabs-animations.d.ts +0 -4
- package/tabs/tabs.module.d.ts +0 -20
- package/tags/public-api.d.ts +0 -5
- package/tags/tag-default-options.d.ts +0 -13
- package/tags/tag-input.d.ts +0 -110
- package/tags/tag-list.component.d.ts +0 -373
- package/tags/tag-text-control.d.ts +0 -10
- package/tags/tag.component.d.ts +0 -272
- package/tags/tag.module.d.ts +0 -10
- package/textarea/public-api.d.ts +0 -2
- package/textarea/textarea.component.d.ts +0 -123
- package/textarea/textarea.module.d.ts +0 -10
- package/time-range/constants.d.ts +0 -19
- package/time-range/module.d.ts +0 -10
- package/time-range/time-range-editor.d.ts +0 -65
- package/time-range/time-range-title-as-form-field.d.ts +0 -41
- package/time-range/time-range-title.d.ts +0 -18
- package/time-range/time-range.d.ts +0 -78
- package/time-range/time-range.service.d.ts +0 -25
- package/time-range/types.d.ts +0 -69
- package/timepicker/public-api.d.ts +0 -3
- package/timepicker/timepicker.constants.d.ts +0 -22
- package/timepicker/timepicker.directive.d.ts +0 -159
- package/timepicker/timepicker.module.d.ts +0 -11
- package/timezone/cities-by-filter.pipe.d.ts +0 -7
- package/timezone/public-api.d.ts +0 -6
- package/timezone/timezone-option.component.d.ts +0 -15
- package/timezone/timezone-option.directive.d.ts +0 -22
- package/timezone/timezone-select.component.d.ts +0 -16
- package/timezone/timezone.models.d.ts +0 -16
- package/timezone/timezone.module.d.ts +0 -20
- package/timezone/timezone.utils.d.ts +0 -22
- package/timezone/utc-offset.pipe.d.ts +0 -9
- package/title/public-api.d.ts +0 -2
- package/title/title.directive.d.ts +0 -33
- package/title/title.module.d.ts +0 -8
- package/toast/public-api.d.ts +0 -5
- package/toast/toast-animations.d.ts +0 -5
- package/toast/toast-container.component.d.ts +0 -19
- package/toast/toast.component.d.ts +0 -41
- package/toast/toast.module.d.ts +0 -8
- package/toast/toast.service.d.ts +0 -61
- package/toast/toast.type.d.ts +0 -44
- package/toggle/public-api.d.ts +0 -2
- package/toggle/toggle.component.d.ts +0 -77
- package/toggle/toggle.module.d.ts +0 -8
- package/tooltip/public-api.d.ts +0 -2
- package/tooltip/tooltip.animations.d.ts +0 -8
- package/tooltip/tooltip.component.d.ts +0 -156
- package/tooltip/tooltip.module.d.ts +0 -7
- package/top-bar/module.d.ts +0 -7
- package/top-bar/public-api.d.ts +0 -2
- package/top-bar/top-bar.d.ts +0 -25
- package/tree/control/base-tree-control.d.ts +0 -40
- package/tree/control/flat-tree-control.d.ts +0 -55
- package/tree/control/flat-tree-control.filters.d.ts +0 -27
- package/tree/control/nested-tree-control.d.ts +0 -19
- package/tree/control/tree-control.d.ts +0 -44
- package/tree/data-source/flat-data-source.d.ts +0 -80
- package/tree/data-source/nested-data-source.d.ts +0 -15
- package/tree/node.d.ts +0 -34
- package/tree/outlet.d.ts +0 -9
- package/tree/padding.directive.d.ts +0 -45
- package/tree/public-api.d.ts +0 -16
- package/tree/toggle.d.ts +0 -28
- package/tree/tree-base.d.ts +0 -96
- package/tree/tree-errors.d.ts +0 -25
- package/tree/tree-option.component.d.ts +0 -89
- package/tree/tree-selection.component.d.ts +0 -156
- package/tree/tree.d.ts +0 -6
- package/tree/tree.module.d.ts +0 -16
- package/tree-select/public-api.d.ts +0 -2
- package/tree-select/tree-select.component.d.ts +0 -360
- package/tree-select/tree-select.module.d.ts +0 -15
- package/username/constants.d.ts +0 -15
- package/username/module.d.ts +0 -8
- package/username/types.d.ts +0 -62
- package/username/username.d.ts +0 -68
- package/username/username.pipe.d.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-notification-center.mjs","sources":["../../../packages/components/notification-center/notification-center-animations.ts","../../../packages/components/notification-center/notification-center.service.ts","../../../packages/components/notification-center/notification-item.ts","../../../packages/components/notification-center/notification-item.html","../../../packages/components/notification-center/notification-center.ts","../../../packages/components/notification-center/notification-center.html","../../../packages/components/notification-center/notification-center.module.ts","../../../packages/components/notification-center/koobiq-components-notification-center.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationDurations } from '@koobiq/components/core';\n\n/** @docs-private */\nexport const KbqNotificationCenterAnimations: {\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 cubic-bezier(0, 0, 0.2, 1)',\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 { EventEmitter, inject, Injectable, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DateAdapter, DateFormatter } from '@koobiq/components/core';\nimport { KbqToastData, KbqToastService, KbqToastStyle } from '@koobiq/components/toast';\nimport { BehaviorSubject, combineLatestWith, merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface KbqNotificationItem extends Omit<KbqToastData, 'closeButton'> {\n id?: string;\n\n /** Numeric id of the shown toast, set by `push()` and consumed by `hideToast()`. */\n toastId?: number;\n\n title?: string | TemplateRef<unknown>;\n style?: string | KbqToastStyle;\n\n icon?: boolean | TemplateRef<unknown>;\n iconClass?: string;\n caption?: string | TemplateRef<unknown>;\n\n content?: string | TemplateRef<unknown>;\n actions?: TemplateRef<unknown>;\n\n date: string;\n read?: boolean;\n}\n\nexport const maxUnreadItemsLength = 99;\n\ntype KbqNotificationsGroup = { title: string; items: KbqNotificationItem[] };\n\ntype KbqNotificationsGroups = Record<string, KbqNotificationsGroup>;\n\n/** Payload emitted by `KbqNotificationCenterService.onDelete`. */\nexport type KbqNotificationDeleteEvent = {\n /** What was removed: a single item, a whole date group, or all notifications. */\n type: 'item' | 'group' | 'all';\n /** The notification items that were removed. */\n items: KbqNotificationItem[];\n};\n\n@Injectable({ providedIn: 'root' })\nexport class KbqNotificationCenterService {\n /** @docs-private */\n private readonly adapter = inject(DateAdapter);\n /** @docs-private */\n private readonly formatter = inject(DateFormatter);\n /** @docs-private */\n private readonly toastService = inject(KbqToastService);\n\n /** @docs-private */\n readonly silentMode = new BehaviorSubject(false);\n /** @docs-private */\n readonly loadingMode = new BehaviorSubject(false);\n /** @docs-private */\n readonly errorMode = new BehaviorSubject(false);\n /**\n * Whether the bottom \"load more\" spinner is shown while the next page is being loaded.\n * Note: this is the infinite-scroll indicator and is distinct from `loadingMode`,\n * which renders the full-screen loader instead of the list.\n */\n readonly loadingMore = new BehaviorSubject(false);\n /**\n * Whether the bottom \"load more\" error row (with a retry button) is shown.\n * Distinct from `errorMode`, which replaces the whole list with the full-screen error state.\n */\n readonly loadMoreErrorMode = new BehaviorSubject(false);\n /**\n * Whether there are more notifications to load. While `true`, scrolling to the bottom\n * emits `onNextPage`; set it to `false` to stop further infinite-scroll requests.\n */\n readonly hasMore = new BehaviorSubject(true);\n /** @docs-private */\n readonly onRead = new BehaviorSubject<KbqNotificationItem | null>(null);\n\n /** Triggers an event when the user presses the reload button. */\n readonly onReload = new EventEmitter<void>();\n\n /** Triggers an event when the list is scrolled to the bottom and the next page should be loaded. */\n readonly onNextPage = new EventEmitter<void>();\n\n /** Triggers an event when an item, a group, or all notifications are removed. */\n readonly onDelete = new EventEmitter<KbqNotificationDeleteEvent>();\n\n private originalItems = new BehaviorSubject([] as KbqNotificationItem[]);\n\n /**\n * Grouped notifications, always ordered from newest to oldest: day groups are sorted by date\n * descending, and notifications within each day are sorted by date descending.\n * @docs-private\n */\n readonly groupedItems = this.originalItems.pipe(\n map((items) => {\n const result: KbqNotificationsGroups = {};\n\n items.forEach((item) => this.makeGroup(item, result));\n\n const groups = Object.values(result);\n\n // Newest notifications first within each day.\n groups.forEach((group) => group.items.sort(this.compareByDateDesc));\n\n // Newest day first.\n return groups.sort((a, b) => this.compareByDateDesc(a.items[0], b.items[0]));\n })\n );\n\n /** Emits an event whenever the changes. */\n readonly changes = merge(\n this.silentMode,\n this.loadingMode,\n this.errorMode,\n this.loadingMore,\n this.loadMoreErrorMode,\n this.hasMore,\n this.originalItems,\n this.onRead\n );\n\n /** Notification items */\n get items() {\n return this.originalItems.value;\n }\n\n set items(values: KbqNotificationItem[]) {\n this.originalItems.next(this.setReadState(this.setIds(values)));\n }\n\n /** Number of unread notifications */\n get unreadItemsCounter(): Observable<string> {\n return this.originalItems.pipe(map((items) => items.filter((item) => item.read === false).length)).pipe(\n combineLatestWith(this.onRead),\n map(([value]) => {\n if (value < maxUnreadItemsLength) {\n return value ? value.toString() : '';\n } else {\n return `${maxUnreadItemsLength}+`;\n }\n })\n );\n }\n\n /** true if there are no notifications. */\n get isEmpty() {\n return this.originalItems.value.length === 0;\n }\n\n constructor() {\n this.toastService?.read.pipe(takeUntilDestroyed()).subscribe((toastData) => {\n const item = this.items.find((item) => item.id === toastData?.id);\n\n if (item && !item.read) {\n item.read = true;\n\n this.onRead.next(toastData as KbqNotificationItem);\n }\n });\n }\n\n /** Set silent mode */\n setSilentMode(value: boolean) {\n this.silentMode.next(value);\n }\n\n /** Set loading mode */\n setLoadingMode(value: boolean) {\n this.loadingMode.next(value);\n }\n\n /** Set error mode */\n setErrorMode(value: boolean) {\n this.errorMode.next(value);\n }\n\n /** Set the bottom \"load more\" spinner visibility. */\n setLoadingMore(value: boolean) {\n this.loadingMore.next(value);\n }\n\n /** Set the bottom \"load more\" error state visibility. */\n setLoadMoreErrorMode(value: boolean) {\n this.loadMoreErrorMode.next(value);\n }\n\n /** Set whether there are more notifications to load via infinite scroll. */\n setHasMore(value: boolean) {\n this.hasMore.next(value);\n }\n\n /** Push new notification item in center */\n push(item: KbqNotificationItem) {\n this.setReadState(this.setIds([item]));\n\n if (!this.silentMode.value) {\n item.toastId = this.toastService.show(item).id;\n }\n\n return this.originalItems.next([...this.originalItems.value, item]);\n }\n\n /** Hides the toast that corresponds to the given notification item. */\n hideToast(item: KbqNotificationItem): void {\n if (item.toastId === undefined) {\n return;\n }\n\n this.toastService.hide(item.toastId);\n item.toastId = undefined;\n }\n\n /** Remove notification item */\n remove(removedItem: KbqNotificationItem) {\n this.hideToast(removedItem);\n\n this.originalItems.next(this.originalItems.value.filter((item) => removedItem !== item));\n\n this.onDelete.emit({ type: 'item', items: [removedItem] });\n }\n\n /** Remove group of notification items */\n removeGroup(group: KbqNotificationsGroup) {\n group.items.forEach((item) => this.hideToast(item));\n\n this.originalItems.next(this.originalItems.value.filter((item) => !group.items.includes(item)));\n\n this.onDelete.emit({ type: 'group', items: [...group.items] });\n }\n\n /** Remove all notification items */\n removeAll() {\n const items = this.originalItems.value;\n\n items.forEach((item) => this.hideToast(item));\n\n this.originalItems.next([]);\n\n this.onDelete.emit({ type: 'all', items });\n }\n\n private makeGroup = (item: KbqNotificationItem, groups: KbqNotificationsGroups) => {\n const parsedDate = this.adapter.parse(item.date, '');\n const groupId = this.adapter.format(parsedDate, 'yyyyMMdd');\n const groupTitle = this.formatter.absoluteLongDate(parsedDate);\n\n if (groups[groupId]) {\n groups[groupId].items.push(item);\n } else {\n groups[groupId] = {\n title: groupTitle,\n items: [item]\n };\n }\n };\n\n /** Compares two notifications by date so the newest comes first. */\n private compareByDateDesc = (a: KbqNotificationItem, b: KbqNotificationItem): number => {\n const parsedA = this.adapter.parse(a.date, '');\n const parsedB = this.adapter.parse(b.date, '');\n\n if (!parsedA || !parsedB) {\n return 0;\n }\n\n return this.adapter.compareDateTime(parsedB, parsedA);\n };\n\n private setIds(items: KbqNotificationItem[]) {\n items.forEach((item) => (item.id = item.id ?? new Date().getTime().toString()));\n\n return items;\n }\n\n private setReadState(items: KbqNotificationItem[]) {\n items.forEach((item) => (item.read = item.read ?? false));\n\n return items;\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { DateAdapter, KbqReadStateDirective, PopUpPlacements, ThemePalette } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { filter } from 'rxjs/operators';\nimport { KbqNotificationCenterComponent } from './notification-center';\nimport { KbqNotificationCenterService, KbqNotificationItem } from './notification-center.service';\n\nlet id = 0;\n\n/** @docs-private */\n@Component({\n selector: 'kbq-notification-item',\n imports: [\n NgTemplateOutlet,\n KbqIconModule,\n NgClass,\n KbqTitleModule,\n KbqButtonModule,\n KbqTooltipTrigger\n ],\n templateUrl: './notification-item.html',\n styleUrls: ['./notification-item.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-notification-item',\n '[class]': 'style',\n 'data-testid': 'kbq-notification-item'\n },\n hostDirectives: [KbqReadStateDirective]\n})\nexport class KbqNotificationItemComponent {\n private readonly adapter = inject(DateAdapter);\n protected readonly service = inject(KbqNotificationCenterService);\n protected readonly readStateDirective = inject<KbqReadStateDirective>(KbqReadStateDirective, { host: true });\n protected readonly center = inject(KbqNotificationCenterComponent, { host: true });\n\n protected popUpPlacements = PopUpPlacements;\n\n themePalette = ThemePalette;\n id = id++;\n\n time: string;\n\n $implicit;\n\n get style() {\n return {\n [`kbq-notification-item_${this.data.style}`]: !!this.data.style\n };\n }\n\n @Input()\n get data(): KbqNotificationItem {\n return this._data;\n }\n\n set data(value: KbqNotificationItem) {\n this._data = value;\n\n this.time = this.adapter.format(this.adapter.parse(value.date, ''), 'HH:mm');\n }\n\n private _data: KbqNotificationItem;\n\n constructor() {\n this.$implicit = this;\n\n this.readStateDirective.read\n .pipe(\n filter((value: boolean) => value),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.data.read) {\n return;\n }\n\n this.data.read = true;\n\n this.service.onRead.next(this.data);\n });\n }\n\n isTemplateRef(value): boolean {\n return value instanceof TemplateRef;\n }\n}\n","@if (data.icon) {\n <div class=\"kbq-notification-item__icon-container layout-row layout-align-start-start\">\n @if (data.icon === true) {\n @switch (data.style) {\n @case ('contrast') {\n <i\n kbq-icon=\"kbq-circle-info_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('success') {\n <i\n kbq-icon=\"kbq-circle-check_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('warning') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('error') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n }\n } @else if (isTemplateRef(data.icon)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.icon)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n\n<div class=\"kbq-notification-item__container\">\n @if (data.title) {\n <div\n kbq-title\n class=\"kbq-notification-item__title\"\n [class.kbq-notification-item__title_with-content]=\"data.caption || data.content\"\n >\n @if (isTemplateRef(data.title)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.title)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.title)) {\n <p>{{ data.title }}</p>\n }\n\n <div class=\"kbq-notification-item-time\" [class.kbq-notification-item-time_read]=\"data.read\">\n <div class=\"kbq-notification-item-time__value\">{{ time }}</div>\n <i class=\"kbq-notification-item-time__state\" kbq-icon=\"kbq-circle-xs_16\" [color]=\"'theme'\"></i>\n </div>\n </div>\n }\n\n @if (data.caption) {\n <div\n kbq-title\n [class.kbq-notification-item__text]=\"data.title\"\n [class.kbq-notification-item__title]=\"!data.title\"\n >\n @if (isTemplateRef(data.caption)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.caption)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.caption)) {\n {{ data.caption }}\n }\n </div>\n }\n\n @if (data.content) {\n <div class=\"kbq-notification-item__content\">\n @if (isTemplateRef(data.content)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.content)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.content)) {\n {{ data.content }}\n }\n </div>\n }\n\n @if (data.actions) {\n <div class=\"kbq-notification-item__actions\">\n @if (isTemplateRef(data.actions)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.actions)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.actions)) {\n {{ data.actions }}\n }\n </div>\n }\n</div>\n\n<button\n kbq-button\n class=\"kbq-notification-item__remove-button\"\n data-testid=\"kbq-notification-item-remove-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltipArrow]=\"false\"\n [kbqTooltip]=\"center.localeData.remove\"\n [kbqPlacement]=\"popUpPlacements.Right\"\n (click)=\"service.remove(data)\"\n>\n <i kbq-icon=\"kbq-trash_16\"></i>\n</button>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\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 { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport {\n DateAdapter,\n KBQ_LOCALE_SERVICE,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpSizeValues,\n KbqPopUpTrigger,\n KbqStickToWindowPlacementValues,\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 } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLoaderOverlayModule } from '@koobiq/components/loader-overlay';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqScrollbar, KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { auditTime, distinctUntilChanged, filter, map, pairwise } from 'rxjs/operators';\nimport { KbqNotificationCenterAnimations } from './notification-center-animations';\nimport { KbqNotificationCenterService } from './notification-center.service';\nimport { KbqNotificationItemComponent } from './notification-item';\n\nconst defaultOffsetX = 8;\n\n/** Rate-limit window (ms) for the scroll-to-bottom check that drives infinite scroll. */\nconst SCROLLED_TO_BOTTOM_AUDIT_TIME = 100;\n\n/**default configuration of notification-center */\nexport const KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION = ruRULocaleData.notificationCenter;\n\n/** Injection Token for providing configuration of notification-center */\nexport const KBQ_NOTIFICATION_CENTER_CONFIGURATION = new InjectionToken('KbqNotificationCenterConfiguration');\n\n/** @docs-private */\nexport const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-notification-center-scroll-strategy'\n);\n\n/** @docs-private */\nexport function kbqNotificationCenterScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });\n}\n\n/** @docs-private */\nexport const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqNotificationCenterScrollStrategyFactory\n};\n\n/** @docs-private */\n@Component({\n selector: 'kbq-notification-center',\n imports: [\n KbqIconModule,\n KbqBadgeModule,\n KbqScrollbarModule,\n KbqButtonModule,\n KbqDividerModule,\n KbqDropdownModule,\n KbqToolTipModule,\n AsyncPipe,\n KbqNotificationItemComponent,\n KbqLoaderOverlayModule,\n KbqProgressSpinnerModule\n ],\n templateUrl: './notification-center.html',\n styleUrls: ['./notification-center.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n host: {\n class: 'kbq-notification-center',\n '[class.kbq-notification-center_popover]': 'popoverMode',\n '(keydown.escape)': 'escapeHandler()'\n },\n animations: [KbqNotificationCenterAnimations.state]\n})\nexport class KbqNotificationCenterComponent extends KbqPopUp implements AfterViewInit {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly dateAdapter = inject(DateAdapter);\n /** @docs-private */\n protected readonly service = inject(KbqNotificationCenterService);\n\n @ViewChild(KbqScrollbar) private scrollContainer: KbqScrollbar;\n\n readonly externalConfiguration = inject(KBQ_NOTIFICATION_CENTER_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** @docs-private */\n protected popoverMode: boolean;\n\n /** @docs-private */\n protected isTopOverflow: boolean = false;\n /** @docs-private */\n protected isBottomOverflow: boolean = false;\n\n /** Distance in pixels from the bottom of the list at which the next page is requested.\n * @docs-private */\n protected scrolledToBottomOffset: number = 0;\n\n /** Emits on every scroll of the list container; drives the scroll-to-bottom check. */\n private readonly scroll$ = new Subject<void>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n /** @docs-private */\n prefix = 'kbq-notification-center';\n /** @docs-private */\n trigger: KbqNotificationCenterTrigger;\n /** @docs-private */\n isTrapFocus: boolean = false;\n\n @ViewChild('notificationSwitcher') switcher: KbqButton;\n\n get popoverHeight(): string {\n return this._popoverHeight;\n }\n\n set popoverHeight(value: string) {\n this._popoverHeight = value;\n\n this.elementRef.nativeElement.style.height = value;\n }\n\n private _popoverHeight: string;\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 this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).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 this.setStickPosition();\n });\n\n this.service.changes\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n\n this.switcher.focus();\n\n setTimeout(this.checkOverflow);\n\n this.subscribeToScrolledToBottom();\n }\n\n /** Handles the list container scroll: updates overflow shadows and feeds the scroll-to-bottom check.\n * @docs-private */\n protected onContainerScroll(): void {\n this.checkOverflow();\n this.scroll$.next();\n }\n\n /** Retries loading the next page from the bottom error row.\n * @docs-private */\n protected retryLoadMore(): void {\n // The retry button is about to unmount; keep keyboard focus inside the panel instead of\n // letting it fall back to <body>.\n this.focusScrollContainer();\n\n // Clear the bottom error state here so the spinner and the error row can never be shown at\n // the same time, regardless of what the consumer's `onNextPage` handler does.\n this.service.setLoadMoreErrorMode(false);\n\n this.service.onNextPage.emit();\n }\n\n /**\n * Requests the next page (via `service.onNextPage`) once the list is scrolled to within\n * `scrolledToBottomOffset` pixels of the bottom. Two triggers feed it: the user scrolling, and a\n * page finishing loading. The latter keeps paging when a freshly loaded page is too short to\n * overflow the viewport — otherwise no further scroll event would fire and pagination would\n * stall. Suppressed while a load is in flight, errored, or when there is nothing more to load.\n */\n private subscribeToScrolledToBottom(): void {\n const scrolledToBottom$ = this.scroll$.pipe(\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME),\n map(() => this.isScrolledToBottom()),\n distinctUntilChanged(),\n filter(Boolean)\n );\n\n // Re-measure once a load completes (and the appended items have rendered): if the list still\n // sits at the bottom, continue paging instead of waiting for a scroll event that never comes.\n const loadCompleted$ = this.service.loadingMore.pipe(\n distinctUntilChanged(),\n pairwise(),\n filter(([wasLoading, isLoading]) => wasLoading && !isLoading),\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME),\n filter(() => this.isScrolledToBottom())\n );\n\n merge(scrolledToBottom$, loadCompleted$)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.requestNextPage());\n }\n\n /** Whether the list is scrolled to within `scrolledToBottomOffset` pixels of the bottom. */\n private isScrolledToBottom(): boolean {\n const { scrollTop, clientHeight, scrollHeight } = this.scrollContainer.contentElement.nativeElement;\n\n return scrollHeight - scrollTop - clientHeight <= this.scrolledToBottomOffset;\n }\n\n /** Emits `onNextPage` unless a load is already in flight, errored, or there is nothing more to load. */\n private requestNextPage(): void {\n if (this.service.hasMore.value && !this.service.loadingMore.value && !this.service.loadMoreErrorMode.value) {\n this.service.onNextPage.emit();\n }\n }\n\n private focusScrollContainer(): void {\n const element = this.scrollContainer.contentElement.nativeElement;\n\n // tabindex -1 keeps the container out of the Tab order while allowing programmatic focus.\n element.setAttribute('tabindex', '-1');\n element.focus({ preventScroll: true });\n }\n\n /** @docs-private */\n updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\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 protected checkOverflow = () => {\n const nativeElement = this.scrollContainer.contentElement.nativeElement;\n\n const { scrollTop, offsetHeight, scrollHeight } = nativeElement;\n\n this.isTopOverflow = scrollTop > 0;\n\n this.isBottomOverflow = scrollTop + offsetHeight < scrollHeight;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('notificationCenter');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION;\n }\n}\n\n@Directive({\n selector: '[kbqNotificationCenterTrigger]',\n exportAs: 'kbqNotificationCenterTrigger',\n host: {\n '[class.kbq-notification-center_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen'\n }\n})\nexport class KbqNotificationCenterTrigger\n extends KbqPopUpTrigger<KbqNotificationCenterComponent>\n implements AfterContentInit\n{\n /** @docs-private */\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY);\n /** @docs-private */\n protected readonly service = inject(KbqNotificationCenterService);\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: KbqPopUpSizeValues = 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\n /** Number of unread notifications */\n get unreadItemsCounter() {\n return this.service.unreadItemsCounter;\n }\n\n /** Placement of popUp */\n @Input('kbqNotificationCenterPlacement') placement: KbqPopUpPlacementValues = PopUpPlacements.Right;\n\n /** Class that will be used in the background */\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Class that will be used in the panel */\n @Input('kbqNotificationCenterPanelClass') panelClass: string;\n\n /** Offset of popUp */\n @Input({ transform: numberAttribute }) offset: number | null = defaultOffsetX;\n\n /** Distance in pixels from the bottom of the list at which the next page is requested via `onNextPage`. */\n @Input({ transform: numberAttribute }) scrolledToBottomOffset: number = 0;\n\n /** Use popover or not */\n @Input({ transform: booleanAttribute })\n get popoverMode(): boolean {\n return this._popoverMode;\n }\n\n set popoverMode(value: boolean) {\n this._popoverMode = value;\n\n this.placement = PopUpPlacements.Bottom;\n this.updatePlacementPriority(['bottomCenter', 'bottomLeft', 'bottomRight']);\n }\n\n private _popoverMode: boolean = false;\n\n /** Set height of popover. Default is calc(100vh - 48px). 48px - height of navbar */\n @Input()\n get popoverHeight(): string {\n return this._popoverHeight;\n }\n\n set popoverHeight(value: string) {\n this._popoverHeight = value;\n\n if (this.instance?.popoverHeight) {\n this.instance.popoverHeight = value;\n }\n }\n\n private _popoverHeight: string;\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 /**\n * Additionally positions the element relative to the window side (Top, Right, Bottom and Left).\n * If container is specified, the positioning will be relative to it.\n * */\n @Input() stickToWindow: KbqStickToWindowPlacementValues;\n\n /** Container for additional positioning, used with stickToWindow */\n @Input() container: HTMLElement;\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 trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** @docs-private */\n protected originSelector = '.kbq-notification-center';\n\n /** @docs-private */\n protected get overlayConfig(): OverlayConfig {\n const defaultPanelClass = 'kbq-notification-center__panel';\n\n return {\n panelClass: this.panelClass ? [defaultPanelClass, this.panelClass] : defaultPanelClass,\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n protected preventClosingByInnerScrollSubscription: Subscription;\n\n constructor() {\n super();\n\n this.updatePlacementPriority(['right', 'rightBottom', 'rightTop']);\n }\n\n ngAfterContentInit(): void {\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 && event['scrollDispatcher']) {\n this.instance.setStickPosition();\n\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 this.instance.popoverMode = this.popoverMode;\n this.instance.popoverHeight = this.popoverHeight;\n this.instance.scrolledToBottomOffset = this.scrolledToBottomOffset;\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 *\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<KbqNotificationCenterComponent> {\n return KbqNotificationCenterComponent;\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","<div class=\"kbq-notification-center-header\">\n <div class=\"kbq-notification-center-title\">\n <div class=\"kbq-notification-center-title__text\">{{ localeData.notifications }}</div>\n <button\n #notificationSwitcher\n #dropdownTrigger=\"kbqDropdownTrigger\"\n kbq-button\n class=\"kbq-notification-center-title__button\"\n data-testid=\"kbq-notification-center-silent-mode-toggle\"\n [kbqDropdownTriggerFor]=\"notificationSwitcherDropdown\"\n [kbqTooltip]=\"service.silentMode.value ? localeData.doNotDisturb : localeData.showPopUpNotifications\"\n [kbqTooltipArrow]=\"false\"\n [kbqPlacement]=\"'right'\"\n [kbqTooltipOffset]=\"4\"\n [kbqTooltipDisabled]=\"dropdownTrigger.opened\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n >\n <i kbq-icon=\"{{ service.silentMode.value ? 'kbq-bell-slash_16' : 'kbq-bell_16' }}\"></i>\n </button>\n </div>\n <div class=\"kbq-notification-center-toolbar\">\n @if (!service.isEmpty) {\n <button\n kbq-button\n class=\"kbq-notification-center-toolbar__button\"\n data-testid=\"kbq-notification-center-remove-all-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n (click)=\"service.removeAll()\"\n >\n <i kbq-icon=\"kbq-trash_16\"></i>\n </button>\n\n <kbq-divider [vertical]=\"true\" />\n }\n\n <button\n kbq-button\n class=\"kbq-notification-center-toolbar__button\"\n data-testid=\"kbq-notification-center-close-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n (click)=\"hide(0)\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n</div>\n\n<div\n kbq-scrollbar\n class=\"kbq-notification-center-container\"\n data-testid=\"kbq-notification-center-container\"\n [class.kbq-notification-center_bottom-overflow]=\"isBottomOverflow\"\n (onScroll)=\"onContainerScroll()\"\n>\n @if (!service.errorMode.value) {\n @if (!service.loadingMode.value) {\n @for (group of service.groupedItems | async; track group) {\n <div\n class=\"kbq-notification-center-sub-header\"\n data-testid=\"kbq-notification-center-group\"\n [class.kbq-notification-center_top-overflow]=\"isTopOverflow\"\n >\n <div class=\"kbq-notification-center-sub-header__date\">{{ group.title }}</div>\n\n <button\n kbq-button\n class=\"kbq-notification-center-sub-header__button\"\n data-testid=\"kbq-notification-center-remove-group-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltip]=\"localeData.remove\"\n [kbqPlacement]=\"'right'\"\n [kbqTooltipArrow]=\"false\"\n (click)=\"service.removeGroup(group)\"\n >\n <i kbq-icon=\"kbq-trash_16\"></i>\n </button>\n </div>\n\n @for (item of group.items; track item) {\n <kbq-notification-item [data]=\"item\" />\n }\n } @empty {\n @if (!service.loadingMore.value) {\n <div class=\"kbq-notification-center-empty-container\" data-testid=\"kbq-notification-center-empty\">\n <i kbq-icon-item=\"kbq-bell_16\" [big]=\"true\" [color]=\"'contrast-fade'\"></i>\n {{ localeData.noNotifications }}\n </div>\n }\n }\n\n @if (service.loadingMore.value) {\n <div\n class=\"kbq-notification-center-load-more\"\n data-testid=\"kbq-notification-center-load-more\"\n role=\"status\"\n [attr.aria-label]=\"localeData.loadingMore\"\n >\n <kbq-progress-spinner [mode]=\"'indeterminate'\" [size]=\"'compact'\" />\n </div>\n }\n\n @if (service.loadMoreErrorMode.value) {\n <div\n class=\"kbq-notification-center-load-more-error\"\n data-testid=\"kbq-notification-center-load-more-error\"\n role=\"alert\"\n >\n {{ localeData.failedToLoadNotifications }}\n <button\n kbq-button\n data-testid=\"kbq-notification-center-load-more-retry-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'theme'\"\n (click)=\"retryLoadMore()\"\n >\n {{ localeData.repeat }}\n </button>\n </div>\n }\n } @else {\n <kbq-loader-overlay data-testid=\"kbq-notification-center-loader\" [transparent]=\"true\" />\n }\n } @else {\n <div class=\"kbq-notification-center-error-container\" data-testid=\"kbq-notification-center-error\">\n <i kbq-icon-item=\"kbq-bell_16\" [big]=\"true\" [color]=\"'error'\" [fade]=\"true\"></i>\n {{ localeData.failedToLoadNotifications }}\n <button\n kbq-button\n data-testid=\"kbq-notification-center-reload-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'theme'\"\n (click)=\"service.onReload.emit()\"\n >\n {{ localeData.repeat }}\n </button>\n </div>\n }\n</div>\n\n<kbq-dropdown #notificationSwitcherDropdown=\"kbqDropdown\">\n <button\n kbq-dropdown-item\n data-testid=\"kbq-notification-center-show-notifications-button\"\n (click)=\"service.setSilentMode(false)\"\n >\n <i kbq-icon=\"{{ !service.silentMode.value ? 'kbq-circle-xs_16' : '' }}\" [style.min-width.px]=\"16\"></i>\n {{ localeData.showPopUpNotifications }}\n </button>\n <button\n kbq-dropdown-item\n data-testid=\"kbq-notification-center-do-not-disturb-button\"\n (click)=\"service.setSilentMode(true)\"\n >\n <i kbq-icon=\"{{ service.silentMode.value ? 'kbq-circle-xs_16' : '' }}\" [style.min-width.px]=\"16\"></i>\n {{ localeData.doNotDisturb }}\n </button>\n</kbq-dropdown>\n","import { ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { DateAdapter, DateFormatter, EmptyFocusTrapStrategy } from '@koobiq/components/core';\nimport {\n KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n} from './notification-center';\nimport { KbqNotificationCenterService } from './notification-center.service';\n\n@NgModule({\n imports: [\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n ],\n exports: [\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n ],\n providers: [\n KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy },\n { provide: KbqNotificationCenterService, deps: [DateAdapter, DateFormatter] }\n ]\n})\nexport class KbqNotificationCenterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-notification-center.mjs","sources":["../../../packages/components/notification-center/notification-center-animations.ts","../../../packages/components/notification-center/notification-center.service.ts","../../../packages/components/notification-center/notification-item.ts","../../../packages/components/notification-center/notification-item.html","../../../packages/components/notification-center/notification-center.ts","../../../packages/components/notification-center/notification-center.html","../../../packages/components/notification-center/notification-center.module.ts","../../../packages/components/notification-center/koobiq-components-notification-center.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationDurations } from '@koobiq/components/core';\n\n/** @docs-private */\nexport const KbqNotificationCenterAnimations: {\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 cubic-bezier(0, 0, 0.2, 1)',\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 { EventEmitter, inject, Injectable, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DateAdapter, DateFormatter } from '@koobiq/components/core';\nimport { KbqToastData, KbqToastService, KbqToastStyle } from '@koobiq/components/toast';\nimport { BehaviorSubject, combineLatestWith, merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface KbqNotificationItem extends Omit<KbqToastData, 'closeButton'> {\n id?: string;\n\n /** Numeric id of the shown toast, set by `push()` and consumed by `hideToast()`. */\n toastId?: number;\n\n title?: string | TemplateRef<unknown>;\n style?: string | KbqToastStyle;\n\n icon?: boolean | TemplateRef<unknown>;\n iconClass?: string;\n caption?: string | TemplateRef<unknown>;\n\n content?: string | TemplateRef<unknown>;\n actions?: TemplateRef<unknown>;\n\n date: string;\n read?: boolean;\n}\n\nexport const maxUnreadItemsLength = 99;\n\ntype KbqNotificationsGroup = { title: string; items: KbqNotificationItem[] };\n\ntype KbqNotificationsGroups = Record<string, KbqNotificationsGroup>;\n\n/** Payload emitted by `KbqNotificationCenterService.onDelete`. */\nexport type KbqNotificationDeleteEvent = {\n /** What was removed: a single item, a whole date group, or all notifications. */\n type: 'item' | 'group' | 'all';\n /** The notification items that were removed. */\n items: KbqNotificationItem[];\n};\n\n@Injectable({ providedIn: 'root' })\nexport class KbqNotificationCenterService {\n /** @docs-private */\n private readonly adapter = inject(DateAdapter);\n /** @docs-private */\n private readonly formatter = inject(DateFormatter);\n /** @docs-private */\n private readonly toastService = inject(KbqToastService);\n\n /** @docs-private */\n readonly silentMode = new BehaviorSubject(false);\n /** @docs-private */\n readonly loadingMode = new BehaviorSubject(false);\n /** @docs-private */\n readonly errorMode = new BehaviorSubject(false);\n /**\n * Whether the bottom \"load more\" spinner is shown while the next page is being loaded.\n * Note: this is the infinite-scroll indicator and is distinct from `loadingMode`,\n * which renders the full-screen loader instead of the list.\n */\n readonly loadingMore = new BehaviorSubject(false);\n /**\n * Whether the bottom \"load more\" error row (with a retry button) is shown.\n * Distinct from `errorMode`, which replaces the whole list with the full-screen error state.\n */\n readonly loadMoreErrorMode = new BehaviorSubject(false);\n /**\n * Whether there are more notifications to load. While `true`, scrolling to the bottom\n * emits `onNextPage`; set it to `false` to stop further infinite-scroll requests.\n */\n readonly hasMore = new BehaviorSubject(true);\n /** @docs-private */\n readonly onRead = new BehaviorSubject<KbqNotificationItem | null>(null);\n\n /** Triggers an event when the user presses the reload button. */\n readonly onReload = new EventEmitter<void>();\n\n /** Triggers an event when the list is scrolled to the bottom and the next page should be loaded. */\n readonly onNextPage = new EventEmitter<void>();\n\n /** Triggers an event when an item, a group, or all notifications are removed. */\n readonly onDelete = new EventEmitter<KbqNotificationDeleteEvent>();\n\n private originalItems = new BehaviorSubject([] as KbqNotificationItem[]);\n\n /**\n * Grouped notifications, always ordered from newest to oldest: day groups are sorted by date\n * descending, and notifications within each day are sorted by date descending.\n * @docs-private\n */\n readonly groupedItems = this.originalItems.pipe(\n map((items) => {\n const result: KbqNotificationsGroups = {};\n\n items.forEach((item) => this.makeGroup(item, result));\n\n const groups = Object.values(result);\n\n // Newest notifications first within each day.\n groups.forEach((group) => group.items.sort(this.compareByDateDesc));\n\n // Newest day first.\n return groups.sort((a, b) => this.compareByDateDesc(a.items[0], b.items[0]));\n })\n );\n\n /** Emits an event whenever the changes. */\n readonly changes = merge(\n this.silentMode,\n this.loadingMode,\n this.errorMode,\n this.loadingMore,\n this.loadMoreErrorMode,\n this.hasMore,\n this.originalItems,\n this.onRead\n );\n\n /** Notification items */\n get items() {\n return this.originalItems.value;\n }\n\n set items(values: KbqNotificationItem[]) {\n this.originalItems.next(this.setReadState(this.setIds(values)));\n }\n\n /** Number of unread notifications */\n get unreadItemsCounter(): Observable<string> {\n return this.originalItems.pipe(map((items) => items.filter((item) => item.read === false).length)).pipe(\n combineLatestWith(this.onRead),\n map(([value]) => {\n if (value < maxUnreadItemsLength) {\n return value ? value.toString() : '';\n } else {\n return `${maxUnreadItemsLength}+`;\n }\n })\n );\n }\n\n /** true if there are no notifications. */\n get isEmpty() {\n return this.originalItems.value.length === 0;\n }\n\n constructor() {\n this.toastService?.read.pipe(takeUntilDestroyed()).subscribe((toastData) => {\n const item = this.items.find((item) => item.id === toastData?.id);\n\n if (item && !item.read) {\n item.read = true;\n\n this.onRead.next(toastData as KbqNotificationItem);\n }\n });\n }\n\n /** Set silent mode */\n setSilentMode(value: boolean) {\n this.silentMode.next(value);\n }\n\n /** Set loading mode */\n setLoadingMode(value: boolean) {\n this.loadingMode.next(value);\n }\n\n /** Set error mode */\n setErrorMode(value: boolean) {\n this.errorMode.next(value);\n }\n\n /** Set the bottom \"load more\" spinner visibility. */\n setLoadingMore(value: boolean) {\n this.loadingMore.next(value);\n }\n\n /** Set the bottom \"load more\" error state visibility. */\n setLoadMoreErrorMode(value: boolean) {\n this.loadMoreErrorMode.next(value);\n }\n\n /** Set whether there are more notifications to load via infinite scroll. */\n setHasMore(value: boolean) {\n this.hasMore.next(value);\n }\n\n /** Push new notification item in center */\n push(item: KbqNotificationItem) {\n this.setReadState(this.setIds([item]));\n\n if (!this.silentMode.value) {\n item.toastId = this.toastService.show(item).id;\n }\n\n return this.originalItems.next([...this.originalItems.value, item]);\n }\n\n /** Hides the toast that corresponds to the given notification item. */\n hideToast(item: KbqNotificationItem): void {\n if (item.toastId === undefined) {\n return;\n }\n\n this.toastService.hide(item.toastId);\n item.toastId = undefined;\n }\n\n /** Remove notification item */\n remove(removedItem: KbqNotificationItem) {\n this.hideToast(removedItem);\n\n this.originalItems.next(this.originalItems.value.filter((item) => removedItem !== item));\n\n this.onDelete.emit({ type: 'item', items: [removedItem] });\n }\n\n /** Remove group of notification items */\n removeGroup(group: KbqNotificationsGroup) {\n group.items.forEach((item) => this.hideToast(item));\n\n this.originalItems.next(this.originalItems.value.filter((item) => !group.items.includes(item)));\n\n this.onDelete.emit({ type: 'group', items: [...group.items] });\n }\n\n /** Remove all notification items */\n removeAll() {\n const items = this.originalItems.value;\n\n items.forEach((item) => this.hideToast(item));\n\n this.originalItems.next([]);\n\n this.onDelete.emit({ type: 'all', items });\n }\n\n private makeGroup = (item: KbqNotificationItem, groups: KbqNotificationsGroups) => {\n const parsedDate = this.adapter.parse(item.date, '');\n const groupId = this.adapter.format(parsedDate, 'yyyyMMdd');\n const groupTitle = this.formatter.absoluteLongDate(parsedDate);\n\n if (groups[groupId]) {\n groups[groupId].items.push(item);\n } else {\n groups[groupId] = {\n title: groupTitle,\n items: [item]\n };\n }\n };\n\n /** Compares two notifications by date so the newest comes first. */\n private compareByDateDesc = (a: KbqNotificationItem, b: KbqNotificationItem): number => {\n const parsedA = this.adapter.parse(a.date, '');\n const parsedB = this.adapter.parse(b.date, '');\n\n if (!parsedA || !parsedB) {\n return 0;\n }\n\n return this.adapter.compareDateTime(parsedB, parsedA);\n };\n\n private setIds(items: KbqNotificationItem[]) {\n items.forEach((item) => (item.id = item.id ?? new Date().getTime().toString()));\n\n return items;\n }\n\n private setReadState(items: KbqNotificationItem[]) {\n items.forEach((item) => (item.read = item.read ?? false));\n\n return items;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { DateAdapter, KbqReadStateDirective, PopUpPlacements, ThemePalette } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { filter } from 'rxjs/operators';\nimport { KbqNotificationCenterComponent } from './notification-center';\nimport { KbqNotificationCenterService, KbqNotificationItem } from './notification-center.service';\n\nlet id = 0;\n\n/** @docs-private */\n@Component({\n selector: 'kbq-notification-item',\n imports: [\n NgTemplateOutlet,\n KbqIconModule,\n KbqTitleModule,\n KbqButtonModule,\n KbqTooltipTrigger\n ],\n templateUrl: './notification-item.html',\n styleUrls: ['./notification-item.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-notification-item',\n '[class]': 'style',\n 'data-testid': 'kbq-notification-item'\n },\n hostDirectives: [KbqReadStateDirective]\n})\nexport class KbqNotificationItemComponent {\n private readonly adapter = inject(DateAdapter);\n protected readonly service = inject(KbqNotificationCenterService);\n protected readonly readStateDirective = inject<KbqReadStateDirective>(KbqReadStateDirective, { host: true });\n protected readonly center = inject(KbqNotificationCenterComponent, { host: true });\n\n protected popUpPlacements = PopUpPlacements;\n\n themePalette = ThemePalette;\n id = id++;\n\n time: string;\n\n $implicit;\n\n get style() {\n return {\n [`kbq-notification-item_${this.data.style}`]: !!this.data.style\n };\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get data(): KbqNotificationItem {\n return this._data;\n }\n\n set data(value: KbqNotificationItem) {\n this._data = value;\n\n this.time = this.adapter.format(this.adapter.parse(value.date, ''), 'HH:mm');\n }\n\n private _data: KbqNotificationItem;\n\n constructor() {\n this.$implicit = this;\n\n this.readStateDirective.read\n .pipe(\n filter((value: boolean) => value),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.data.read) {\n return;\n }\n\n this.data.read = true;\n\n this.service.onRead.next(this.data);\n });\n }\n\n isTemplateRef(value): boolean {\n return value instanceof TemplateRef;\n }\n}\n","@if (data.icon) {\n <div class=\"kbq-notification-item__icon-container layout-row layout-align-start-start\">\n @if (data.icon === true) {\n @switch (data.style) {\n @case ('contrast') {\n <i\n kbq-icon=\"kbq-circle-info_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('success') {\n <i\n kbq-icon=\"kbq-circle-check_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('warning') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('error') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n }\n } @else if (isTemplateRef(data.icon)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.icon)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n\n<div class=\"kbq-notification-item__container\">\n @if (data.title) {\n <div\n kbq-title\n class=\"kbq-notification-item__title\"\n [class.kbq-notification-item__title_with-content]=\"data.caption || data.content\"\n >\n @if (isTemplateRef(data.title)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.title)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n <p>{{ data.title }}</p>\n }\n\n <div class=\"kbq-notification-item-time\" [class.kbq-notification-item-time_read]=\"data.read\">\n <div class=\"kbq-notification-item-time__value\">{{ time }}</div>\n <i class=\"kbq-notification-item-time__state\" kbq-icon=\"kbq-circle-xs_16\" [color]=\"'theme'\"></i>\n </div>\n </div>\n }\n\n @if (data.caption) {\n <div\n kbq-title\n [class.kbq-notification-item__text]=\"data.title\"\n [class.kbq-notification-item__title]=\"!data.title\"\n >\n @if (isTemplateRef(data.caption)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.caption)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n {{ data.caption }}\n }\n </div>\n }\n\n @if (data.content) {\n <div class=\"kbq-notification-item__content\">\n @if (isTemplateRef(data.content)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.content)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n {{ data.content }}\n }\n </div>\n }\n\n @if (data.actions) {\n <div class=\"kbq-notification-item__actions\">\n @if (isTemplateRef(data.actions)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.actions)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n {{ data.actions }}\n }\n </div>\n }\n</div>\n\n<button\n kbq-button\n class=\"kbq-notification-item__remove-button\"\n data-testid=\"kbq-notification-item-remove-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltipArrow]=\"false\"\n [kbqTooltip]=\"center.localeData.remove\"\n [kbqPlacement]=\"popUpPlacements.Right\"\n (click)=\"service.remove(data)\"\n>\n <i kbq-icon=\"kbq-trash_16\"></i>\n</button>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\n Output,\n TemplateRef,\n Type,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport {\n DateAdapter,\n KBQ_LOCALE_SERVICE,\n KbqOverflowShadowBottom,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpSizeValues,\n KbqPopUpTrigger,\n KbqStickToWindowPlacementValues,\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 } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLoaderOverlayModule } from '@koobiq/components/loader-overlay';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqScrollbar, KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { BehaviorSubject, Subject, Subscription, merge } from 'rxjs';\nimport { auditTime, distinctUntilChanged, filter, map, pairwise } from 'rxjs/operators';\nimport { KbqNotificationCenterAnimations } from './notification-center-animations';\nimport { KbqNotificationCenterService } from './notification-center.service';\nimport { KbqNotificationItemComponent } from './notification-item';\n\nconst defaultOffsetX = 8;\n\n/** Rate-limit window (ms) for the scroll-to-bottom check that drives infinite scroll. */\nconst SCROLLED_TO_BOTTOM_AUDIT_TIME = 100;\n\n/**default configuration of notification-center */\nexport const KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION = ruRULocaleData.notificationCenter;\n\n/** Injection Token for providing configuration of notification-center */\nexport const KBQ_NOTIFICATION_CENTER_CONFIGURATION = new InjectionToken('KbqNotificationCenterConfiguration');\n\n/** @docs-private */\nexport const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-notification-center-scroll-strategy'\n);\n\n/** @docs-private */\nexport function kbqNotificationCenterScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });\n}\n\n/** @docs-private */\nexport const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqNotificationCenterScrollStrategyFactory\n};\n\n/** @docs-private */\n@Component({\n selector: 'kbq-notification-center',\n imports: [\n KbqIconModule,\n KbqBadgeModule,\n KbqScrollbarModule,\n KbqButtonModule,\n KbqDividerModule,\n KbqDropdownModule,\n KbqToolTipModule,\n AsyncPipe,\n KbqNotificationItemComponent,\n KbqLoaderOverlayModule,\n KbqProgressSpinnerModule,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqOverflowShadowBottom\n ],\n templateUrl: './notification-center.html',\n styleUrls: ['./notification-center.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-notification-center',\n '[class.kbq-notification-center_popover]': 'popoverMode',\n '(keydown.escape)': 'escapeHandler()'\n },\n animations: [KbqNotificationCenterAnimations.state],\n preserveWhitespaces: false\n})\nexport class KbqNotificationCenterComponent extends KbqPopUp implements AfterViewInit {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly dateAdapter = inject(DateAdapter);\n /** @docs-private */\n protected readonly service = inject(KbqNotificationCenterService);\n\n readonly externalConfiguration = inject(KBQ_NOTIFICATION_CENTER_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** @docs-private */\n protected popoverMode: boolean;\n\n /** Distance in pixels from the bottom of the list at which the next page is requested.\n * @docs-private */\n protected scrolledToBottomOffset: number = 0;\n\n /** Emits on every scroll of the list container; drives the scroll-to-bottom check. */\n private readonly scroll$ = new Subject<void>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n /** @docs-private */\n prefix = 'kbq-notification-center';\n /** @docs-private */\n trigger: KbqNotificationCenterTrigger;\n /** @docs-private */\n isTrapFocus: boolean = false;\n\n readonly switcher = viewChild.required<KbqButton>('notificationSwitcher');\n\n /** Scrollable list container; used to measure scroll position for infinite scroll. */\n private readonly scrollContainer = viewChild.required(KbqScrollbar);\n\n get popoverHeight(): string {\n return this._popoverHeight;\n }\n\n set popoverHeight(value: string) {\n this._popoverHeight = value;\n\n this.elementRef.nativeElement.style.height = value;\n }\n\n private _popoverHeight: string;\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 this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).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 this.setStickPosition();\n });\n\n this.service.changes\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n\n this.switcher().focus();\n\n this.subscribeToScrolledToBottom();\n this.subscribeToRevealLoadMoreRow();\n }\n\n /** Handles the list container scroll: feeds the scroll-to-bottom check that drives infinite scroll.\n * Overflow shadows are handled declaratively by the `kbqOverflowShadow*` directives.\n * @docs-private */\n protected onContainerScroll(): void {\n this.scroll$.next();\n }\n\n /** Retries loading the next page from the bottom error row.\n * @docs-private */\n protected retryLoadMore(): void {\n // The retry button is about to unmount; keep keyboard focus inside the panel instead of\n // letting it fall back to <body>.\n this.focusScrollContainer();\n\n // Clear the bottom error state here so the spinner and the error row can never be shown at\n // the same time, regardless of what the consumer's `onNextPage` handler does.\n this.service.setLoadMoreErrorMode(false);\n\n this.service.onNextPage.emit();\n }\n\n /**\n * Requests the next page (via `service.onNextPage`) once the list is scrolled to within\n * `scrolledToBottomOffset` pixels of the bottom. Two triggers feed it: the user scrolling, and a\n * page finishing loading. The latter keeps paging when a freshly loaded page is too short to\n * overflow the viewport — otherwise no further scroll event would fire and pagination would\n * stall. Suppressed while a load is in flight, errored, or when there is nothing more to load.\n */\n private subscribeToScrolledToBottom(): void {\n const scrolledToBottom$ = this.scroll$.pipe(\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME),\n map(() => this.isScrolledToBottom()),\n distinctUntilChanged(),\n filter(Boolean)\n );\n\n // Re-measure once a load completes (and the appended items have rendered): if the list still\n // sits at the bottom, continue paging instead of waiting for a scroll event that never comes.\n const loadCompleted$ = this.service.loadingMore.pipe(\n distinctUntilChanged(),\n pairwise(),\n filter(([wasLoading, isLoading]) => wasLoading && !isLoading),\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME),\n filter(() => this.isScrolledToBottom())\n );\n\n merge(scrolledToBottom$, loadCompleted$)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.requestNextPage());\n }\n\n /** Whether the list is scrolled to within `scrolledToBottomOffset` pixels of the bottom. */\n private isScrolledToBottom(): boolean {\n const { scrollTop, clientHeight, scrollHeight } = this.scrollContainer().contentElement().nativeElement;\n\n return scrollHeight - scrollTop - clientHeight <= this.scrolledToBottomOffset;\n }\n\n /** Emits `onNextPage` unless a load is already in flight, errored, or there is nothing more to load. */\n private requestNextPage(): void {\n if (this.service.hasMore.value && !this.service.loadingMore.value && !this.service.loadMoreErrorMode.value) {\n this.service.onNextPage.emit();\n }\n }\n\n /**\n * Reveals the bottom \"load more\" spinner / error row when it first appears. Both rows are appended\n * below the last item and can land outside the viewport (the next page is requested while the user\n * is up to `scrolledToBottomOffset` px above the true bottom). Only a genuine false->true transition\n * reveals the row: the BehaviorSubject's replayed current value is ignored (`pairwise` needs two\n * emissions), so the panel always opens scrolled to the top — reopening it while a load-more error\n * is still set never jumps to the bottom.\n */\n private subscribeToRevealLoadMoreRow(): void {\n const reveal = (source: BehaviorSubject<boolean>) =>\n source.pipe(\n distinctUntilChanged(),\n pairwise(),\n filter(([wasShown, isShown]) => !wasShown && isShown),\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME)\n );\n\n merge(reveal(this.service.loadingMore), reveal(this.service.loadMoreErrorMode))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.scrollToBottom());\n }\n\n /** Scrolls the list container to its bottom so a freshly-appended bottom row becomes visible. */\n private scrollToBottom(): void {\n const { scrollHeight } = this.scrollContainer().contentElement().nativeElement;\n\n this.scrollContainer().scrollTo({ top: scrollHeight });\n }\n\n private focusScrollContainer(): void {\n const element = this.scrollContainer().contentElement().nativeElement;\n\n // tabindex -1 keeps the container out of the Tab order while allowing programmatic focus.\n element.setAttribute('tabindex', '-1');\n element.focus({ preventScroll: true });\n }\n\n /** @docs-private */\n updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\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 private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('notificationCenter');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION;\n }\n}\n\n@Directive({\n selector: '[kbqNotificationCenterTrigger]',\n host: {\n '[class.kbq-notification-center_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen'\n },\n exportAs: 'kbqNotificationCenterTrigger'\n})\nexport class KbqNotificationCenterTrigger\n extends KbqPopUpTrigger<KbqNotificationCenterComponent>\n implements AfterContentInit\n{\n /** @docs-private */\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY);\n /** @docs-private */\n protected readonly service = inject(KbqNotificationCenterService);\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: KbqPopUpSizeValues = 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\n /** Number of unread notifications */\n get unreadItemsCounter() {\n return this.service.unreadItemsCounter;\n }\n\n /** Placement of popUp */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input('kbqNotificationCenterPlacement') placement: KbqPopUpPlacementValues = PopUpPlacements.Right;\n\n /** Class that will be used in the background */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Class that will be used in the panel */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input('kbqNotificationCenterPanelClass') panelClass: string;\n\n /** Offset of popUp */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input({ transform: numberAttribute }) offset: number | null = defaultOffsetX;\n\n /** Distance in pixels from the bottom of the list at which the next page is requested via `onNextPage`. */\n @Input({ transform: numberAttribute }) scrolledToBottomOffset: number = 0;\n\n /** Use popover or not */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get popoverMode(): boolean {\n return this._popoverMode;\n }\n\n set popoverMode(value: boolean) {\n this._popoverMode = value;\n\n this.placement = PopUpPlacements.Bottom;\n this.updatePlacementPriority(['bottomCenter', 'bottomLeft', 'bottomRight']);\n }\n\n private _popoverMode: boolean = false;\n\n /** Set height of popover. Default is calc(100vh - 48px). 48px - height of navbar */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get popoverHeight(): string {\n return this._popoverHeight;\n }\n\n set popoverHeight(value: string) {\n this._popoverHeight = value;\n\n if (this.instance?.popoverHeight) {\n this.instance.popoverHeight = value;\n }\n }\n\n private _popoverHeight: string;\n\n /** Whether the trigger is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\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 /**\n * Additionally positions the element relative to the window side (Top, Right, Bottom and Left).\n * If container is specified, the positioning will be relative to it.\n * */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() stickToWindow: KbqStickToWindowPlacementValues;\n\n /** Container for additional positioning, used with stickToWindow */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() container: HTMLElement;\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 trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** @docs-private */\n protected originSelector = '.kbq-notification-center';\n\n /** @docs-private */\n protected get overlayConfig(): OverlayConfig {\n const defaultPanelClass = 'kbq-notification-center__panel';\n\n return {\n panelClass: this.panelClass ? [defaultPanelClass, this.panelClass] : defaultPanelClass,\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n protected preventClosingByInnerScrollSubscription: Subscription;\n\n constructor() {\n super();\n\n this.updatePlacementPriority(['right', 'rightBottom', 'rightTop']);\n }\n\n ngAfterContentInit(): void {\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => {\n if (visible) {\n // eslint-disable-next-line rxjs-x/no-nested-subscribe\n this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => {\n if (event && event['scrollDispatcher']) {\n this.instance.setStickPosition();\n\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 this.instance.popoverMode = this.popoverMode;\n this.instance.popoverHeight = this.popoverHeight;\n this.instance.scrolledToBottomOffset = this.scrolledToBottomOffset;\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 *\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<KbqNotificationCenterComponent> {\n return KbqNotificationCenterComponent;\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","<div class=\"kbq-notification-center-header\">\n <div class=\"kbq-notification-center-title\">\n <div class=\"kbq-notification-center-title__text\">{{ localeData.notifications }}</div>\n <button\n #notificationSwitcher\n #dropdownTrigger=\"kbqDropdownTrigger\"\n kbq-button\n class=\"kbq-notification-center-title__button\"\n data-testid=\"kbq-notification-center-silent-mode-toggle\"\n [kbqDropdownTriggerFor]=\"notificationSwitcherDropdown\"\n [kbqTooltip]=\"service.silentMode.value ? localeData.doNotDisturb : localeData.showPopUpNotifications\"\n [kbqTooltipArrow]=\"false\"\n [kbqPlacement]=\"'right'\"\n [kbqTooltipOffset]=\"4\"\n [kbqTooltipDisabled]=\"dropdownTrigger.opened\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n >\n <i kbq-icon=\"{{ service.silentMode.value ? 'kbq-bell-slash_16' : 'kbq-bell_16' }}\"></i>\n </button>\n </div>\n <div class=\"kbq-notification-center-toolbar\">\n @if (!service.isEmpty) {\n <button\n kbq-button\n class=\"kbq-notification-center-toolbar__button\"\n data-testid=\"kbq-notification-center-remove-all-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n (click)=\"service.removeAll()\"\n >\n <i kbq-icon=\"kbq-trash_16\"></i>\n </button>\n\n <kbq-divider [vertical]=\"true\" />\n }\n\n <button\n kbq-button\n class=\"kbq-notification-center-toolbar__button\"\n data-testid=\"kbq-notification-center-close-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n (click)=\"hide(0)\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n</div>\n\n<div\n #notificationCenterContainer=\"kbqOverflowShadowContainer\"\n kbq-scrollbar\n kbqOverflowShadowContainer\n class=\"kbq-notification-center-container\"\n data-testid=\"kbq-notification-center-container\"\n [kbqOverflowShadowBottom]=\"notificationCenterContainer\"\n [shadow]=\"'var(--kbq-shadow-overflow-normal-bottom)'\"\n (onScroll)=\"onContainerScroll()\"\n>\n @if (!service.errorMode.value) {\n @if (!service.loadingMode.value) {\n @for (group of service.groupedItems | async; track group) {\n <div\n class=\"kbq-notification-center-sub-header\"\n data-testid=\"kbq-notification-center-group\"\n [kbqOverflowShadowTop]=\"$first ? notificationCenterContainer : undefined\"\n >\n <div class=\"kbq-notification-center-sub-header__date\">{{ group.title }}</div>\n\n <button\n kbq-button\n class=\"kbq-notification-center-sub-header__button\"\n data-testid=\"kbq-notification-center-remove-group-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltip]=\"localeData.remove\"\n [kbqPlacement]=\"'right'\"\n [kbqTooltipArrow]=\"false\"\n (click)=\"service.removeGroup(group)\"\n >\n <i kbq-icon=\"kbq-trash_16\"></i>\n </button>\n </div>\n\n @for (item of group.items; track item) {\n <kbq-notification-item [data]=\"item\" />\n }\n } @empty {\n @if (!service.loadingMore.value) {\n <div class=\"kbq-notification-center-empty-container\" data-testid=\"kbq-notification-center-empty\">\n <i kbq-icon-item=\"kbq-bell_16\" [big]=\"true\" [color]=\"'contrast-fade'\"></i>\n {{ localeData.noNotifications }}\n </div>\n }\n }\n\n @if (service.loadingMore.value) {\n <div\n class=\"kbq-notification-center-load-more\"\n data-testid=\"kbq-notification-center-load-more\"\n role=\"status\"\n [attr.aria-label]=\"localeData.loadingMore\"\n >\n <kbq-progress-spinner [mode]=\"'indeterminate'\" [size]=\"'compact'\" />\n </div>\n }\n\n @if (service.loadMoreErrorMode.value) {\n <div\n class=\"kbq-notification-center-load-more-error\"\n data-testid=\"kbq-notification-center-load-more-error\"\n role=\"alert\"\n >\n {{ localeData.failedToLoadNotifications }}\n <button\n kbq-button\n data-testid=\"kbq-notification-center-load-more-retry-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'theme'\"\n (click)=\"retryLoadMore()\"\n >\n {{ localeData.repeat }}\n </button>\n </div>\n }\n } @else {\n <kbq-loader-overlay data-testid=\"kbq-notification-center-loader\" [transparent]=\"true\" />\n }\n } @else {\n <div class=\"kbq-notification-center-error-container\" data-testid=\"kbq-notification-center-error\">\n <i kbq-icon-item=\"kbq-bell_16\" [big]=\"true\" [color]=\"'error'\" [fade]=\"true\"></i>\n {{ localeData.failedToLoadNotifications }}\n <button\n kbq-button\n data-testid=\"kbq-notification-center-reload-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'theme'\"\n (click)=\"service.onReload.emit()\"\n >\n {{ localeData.repeat }}\n </button>\n </div>\n }\n</div>\n\n<kbq-dropdown #notificationSwitcherDropdown=\"kbqDropdown\">\n <button\n kbq-dropdown-item\n data-testid=\"kbq-notification-center-show-notifications-button\"\n (click)=\"service.setSilentMode(false)\"\n >\n <i kbq-icon=\"{{ !service.silentMode.value ? 'kbq-circle-xs_16' : '' }}\" [style.min-width.px]=\"16\"></i>\n {{ localeData.showPopUpNotifications }}\n </button>\n <button\n kbq-dropdown-item\n data-testid=\"kbq-notification-center-do-not-disturb-button\"\n (click)=\"service.setSilentMode(true)\"\n >\n <i kbq-icon=\"{{ service.silentMode.value ? 'kbq-circle-xs_16' : '' }}\" [style.min-width.px]=\"16\"></i>\n {{ localeData.doNotDisturb }}\n </button>\n</kbq-dropdown>\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_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n} from './notification-center';\nimport { KbqNotificationCenterService } from './notification-center.service';\n\n@NgModule({\n imports: [\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n ],\n providers: [\n KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy },\n KbqNotificationCenterService\n ],\n exports: [\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n ]\n})\nexport class KbqNotificationCenterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4","i3"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Renderer2, signal, computed, Directive, input, numberAttribute, booleanAttribute, contentChildren, contentChild, output, NgModule } from '@angular/core';
|
|
3
3
|
import { SharedResizeObserver } from '@angular/cdk/observers/private';
|
|
4
|
+
import { Platform } from '@angular/cdk/platform';
|
|
4
5
|
import { DOCUMENT } from '@angular/common';
|
|
5
6
|
import { toSignal, outputToObservable, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
7
|
import { kbqInjectNativeElement, KBQ_WINDOW } from '@koobiq/components/core';
|
|
@@ -14,7 +15,7 @@ import { merge, switchMap, skip, debounceTime } from 'rxjs';
|
|
|
14
15
|
class ElementVisibilityManager {
|
|
15
16
|
constructor() {
|
|
16
17
|
this.renderer = inject(Renderer2);
|
|
17
|
-
this.hiddenState = signal(false);
|
|
18
|
+
this.hiddenState = signal(false, ...(ngDevMode ? [{ debugName: "hiddenState" }] : []));
|
|
18
19
|
/**
|
|
19
20
|
* @docs-private
|
|
20
21
|
*/
|
|
@@ -24,7 +25,7 @@ class ElementVisibilityManager {
|
|
|
24
25
|
*
|
|
25
26
|
* @docs-private
|
|
26
27
|
*/
|
|
27
|
-
this.hidden = computed(() => this.hiddenState());
|
|
28
|
+
this.hidden = computed(() => this.hiddenState(), ...(ngDevMode ? [{ debugName: "hidden" }] : []));
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
31
|
* Hides the element.
|
|
@@ -46,10 +47,10 @@ class ElementVisibilityManager {
|
|
|
46
47
|
this.renderer.removeStyle(this.element, 'position');
|
|
47
48
|
this.hiddenState.set(false);
|
|
48
49
|
}
|
|
49
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
50
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
50
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ElementVisibilityManager, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
51
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: ElementVisibilityManager, isStandalone: true, host: { properties: { "attr.aria-hidden": "hidden()", "class.kbq-overflow-item-hidden": "hidden()" } }, ngImport: i0 }); }
|
|
51
52
|
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ElementVisibilityManager, decorators: [{
|
|
53
54
|
type: Directive,
|
|
54
55
|
args: [{
|
|
55
56
|
host: {
|
|
@@ -63,15 +64,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
|
|
|
63
64
|
* Directive for displaying the result of hidden items by the `KbqOverflowItems` directive.
|
|
64
65
|
*/
|
|
65
66
|
class KbqOverflowItemsResult extends ElementVisibilityManager {
|
|
66
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
67
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
67
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsResult, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
68
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: KbqOverflowItemsResult, isStandalone: true, selector: "[kbqOverflowItemsResult]", host: { classAttribute: "kbq-overflow-items-result" }, exportAs: ["kbqOverflowItemsResult"], usesInheritance: true, ngImport: i0 }); }
|
|
68
69
|
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsResult, decorators: [{
|
|
70
71
|
type: Directive,
|
|
71
72
|
args: [{
|
|
72
73
|
selector: '[kbqOverflowItemsResult]',
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
host: { class: 'kbq-overflow-items-result' },
|
|
75
|
+
exportAs: 'kbqOverflowItemsResult'
|
|
75
76
|
}]
|
|
76
77
|
}] });
|
|
77
78
|
/**
|
|
@@ -83,17 +84,17 @@ class KbqOverflowItem extends ElementVisibilityManager {
|
|
|
83
84
|
/**
|
|
84
85
|
* Unique identifier for the item.
|
|
85
86
|
*/
|
|
86
|
-
this.id = input.required({ alias: 'kbqOverflowItem' });
|
|
87
|
+
this.id = input.required(...(ngDevMode ? [{ debugName: "id", alias: 'kbqOverflowItem' }] : [{ alias: 'kbqOverflowItem' }]));
|
|
87
88
|
/**
|
|
88
89
|
* Defines the order in which the item is processed in the overflow container,
|
|
89
90
|
* without changing its original position in the `QueryList`.
|
|
90
91
|
*/
|
|
91
|
-
this.order = input(null, { transform: numberAttribute });
|
|
92
|
+
this.order = input(null, ...(ngDevMode ? [{ debugName: "order", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
92
93
|
/**
|
|
93
94
|
* Element with this attribute will be ignored when hiding and will always remain visible.
|
|
94
95
|
* @default false
|
|
95
96
|
*/
|
|
96
|
-
this.alwaysVisible = input(false, { transform: booleanAttribute });
|
|
97
|
+
this.alwaysVisible = input(false, ...(ngDevMode ? [{ debugName: "alwaysVisible", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
97
98
|
}
|
|
98
99
|
/**
|
|
99
100
|
* @docs-private
|
|
@@ -103,20 +104,20 @@ class KbqOverflowItem extends ElementVisibilityManager {
|
|
|
103
104
|
return;
|
|
104
105
|
super.hide();
|
|
105
106
|
}
|
|
106
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
107
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
107
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItem, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
108
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: KbqOverflowItem, isStandalone: true, selector: "[kbqOverflowItem]", inputs: { id: { classPropertyName: "id", publicName: "kbqOverflowItem", isSignal: true, isRequired: true, transformFunction: null }, order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null }, alwaysVisible: { classPropertyName: "alwaysVisible", publicName: "alwaysVisible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-overflow-item_always-visible": "alwaysVisible()" }, classAttribute: "kbq-overflow-item" }, exportAs: ["kbqOverflowItem"], usesInheritance: true, ngImport: i0 }); }
|
|
108
109
|
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItem, decorators: [{
|
|
110
111
|
type: Directive,
|
|
111
112
|
args: [{
|
|
112
113
|
selector: '[kbqOverflowItem]',
|
|
113
|
-
exportAs: 'kbqOverflowItem',
|
|
114
114
|
host: {
|
|
115
115
|
class: 'kbq-overflow-item',
|
|
116
116
|
'[class.kbq-overflow-item_always-visible]': 'alwaysVisible()'
|
|
117
|
-
}
|
|
117
|
+
},
|
|
118
|
+
exportAs: 'kbqOverflowItem'
|
|
118
119
|
}]
|
|
119
|
-
}] });
|
|
120
|
+
}], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqOverflowItem", required: true }] }], order: [{ type: i0.Input, args: [{ isSignal: true, alias: "order", required: false }] }], alwaysVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "alwaysVisible", required: false }] }] } });
|
|
120
121
|
/**
|
|
121
122
|
* Directive for managing the visibility of items that overflow the container.
|
|
122
123
|
*/
|
|
@@ -127,14 +128,15 @@ class KbqOverflowItems {
|
|
|
127
128
|
this.renderer = inject(Renderer2);
|
|
128
129
|
this.document = inject(DOCUMENT);
|
|
129
130
|
this.window = inject(KBQ_WINDOW);
|
|
131
|
+
this.platform = inject(Platform);
|
|
130
132
|
/**
|
|
131
133
|
* `KbqOverflowItem` directive references.
|
|
132
134
|
*/
|
|
133
|
-
this.items = contentChildren(KbqOverflowItem);
|
|
135
|
+
this.items = contentChildren(KbqOverflowItem, ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
134
136
|
/**
|
|
135
137
|
* `KbqOverflowItemsResult` directive reference.
|
|
136
138
|
*/
|
|
137
|
-
this.result = contentChild(KbqOverflowItemsResult);
|
|
139
|
+
this.result = contentChild(KbqOverflowItemsResult, ...(ngDevMode ? [{ debugName: "result" }] : []));
|
|
138
140
|
/**
|
|
139
141
|
* Whether the overflow order should be reversed.
|
|
140
142
|
*
|
|
@@ -145,19 +147,19 @@ class KbqOverflowItems {
|
|
|
145
147
|
*
|
|
146
148
|
* @default false
|
|
147
149
|
*/
|
|
148
|
-
this.reverseOverflowOrder = input(false, { transform: booleanAttribute });
|
|
150
|
+
this.reverseOverflowOrder = input(false, ...(ngDevMode ? [{ debugName: "reverseOverflowOrder", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
149
151
|
/**
|
|
150
152
|
* Debounce time for recalculating items visibility.
|
|
151
153
|
*
|
|
152
154
|
* @default 0
|
|
153
155
|
*/
|
|
154
|
-
this.debounceTime = input(0, { transform: numberAttribute });
|
|
156
|
+
this.debounceTime = input(0, ...(ngDevMode ? [{ debugName: "debounceTime", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
155
157
|
/**
|
|
156
158
|
* List of additional elements to observe for resize changes.
|
|
157
159
|
*
|
|
158
160
|
* @default document.body
|
|
159
161
|
*/
|
|
160
|
-
this.additionalResizeObserverTargets = input(this.document.body);
|
|
162
|
+
this.additionalResizeObserverTargets = input(this.document.body, ...(ngDevMode ? [{ debugName: "additionalResizeObserverTargets" }] : []));
|
|
161
163
|
/**
|
|
162
164
|
* Emits when the set of hidden items changes.
|
|
163
165
|
*/
|
|
@@ -173,13 +175,13 @@ class KbqOverflowItems {
|
|
|
173
175
|
*
|
|
174
176
|
* @default 'horizontal'
|
|
175
177
|
*/
|
|
176
|
-
this.orientation = input('horizontal');
|
|
178
|
+
this.orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : []));
|
|
177
179
|
/**
|
|
178
180
|
* Defines the wrap of the overflow items.
|
|
179
181
|
*
|
|
180
182
|
* @default 'nowrap'
|
|
181
183
|
*/
|
|
182
|
-
this.wrap = input('nowrap');
|
|
184
|
+
this.wrap = input('nowrap', ...(ngDevMode ? [{ debugName: "wrap" }] : []));
|
|
183
185
|
this.orientationConfig = {
|
|
184
186
|
horizontal: {
|
|
185
187
|
containerSize: (element) => element.getBoundingClientRect().width,
|
|
@@ -212,6 +214,8 @@ class KbqOverflowItems {
|
|
|
212
214
|
this.setupObservers();
|
|
213
215
|
}
|
|
214
216
|
setupObservers() {
|
|
217
|
+
if (!this.platform.isBrowser)
|
|
218
|
+
return;
|
|
215
219
|
const resizeObservers = merge(this.resizeObserver.observe(this.element), toObservable(this.additionalResizeObserverTargets).pipe(switchMap((targets) => {
|
|
216
220
|
return Array.isArray(targets)
|
|
217
221
|
? merge(...targets.map((target) => this.resizeObserver.observe(target)))
|
|
@@ -290,17 +294,17 @@ class KbqOverflowItems {
|
|
|
290
294
|
}
|
|
291
295
|
return undefined;
|
|
292
296
|
}
|
|
293
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
294
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
297
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItems, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
298
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.25", type: KbqOverflowItems, isStandalone: true, selector: "[kbqOverflowItems]", inputs: { reverseOverflowOrder: { classPropertyName: "reverseOverflowOrder", publicName: "reverseOverflowOrder", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, additionalResizeObserverTargets: { classPropertyName: "additionalResizeObserverTargets", publicName: "additionalResizeObserverTargets", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changes: "changes" }, host: { classAttribute: "kbq-overflow-items" }, queries: [{ propertyName: "items", predicate: KbqOverflowItem, isSignal: true }, { propertyName: "result", first: true, predicate: KbqOverflowItemsResult, descendants: true, isSignal: true }], exportAs: ["kbqOverflowItems"], ngImport: i0 }); }
|
|
295
299
|
}
|
|
296
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
300
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItems, decorators: [{
|
|
297
301
|
type: Directive,
|
|
298
302
|
args: [{
|
|
299
303
|
selector: '[kbqOverflowItems]',
|
|
300
|
-
|
|
301
|
-
|
|
304
|
+
host: { class: 'kbq-overflow-items' },
|
|
305
|
+
exportAs: 'kbqOverflowItems'
|
|
302
306
|
}]
|
|
303
|
-
}], ctorParameters: () => [] });
|
|
307
|
+
}], ctorParameters: () => [], propDecorators: { items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => KbqOverflowItem), { isSignal: true }] }], result: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KbqOverflowItemsResult), { isSignal: true }] }], reverseOverflowOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: "reverseOverflowOrder", required: false }] }], debounceTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceTime", required: false }] }], additionalResizeObserverTargets: [{ type: i0.Input, args: [{ isSignal: true, alias: "additionalResizeObserverTargets", required: false }] }], changes: [{ type: i0.Output, args: ["changes"] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }] } });
|
|
304
308
|
|
|
305
309
|
const COMPONENTS = [
|
|
306
310
|
KbqOverflowItems,
|
|
@@ -308,15 +312,15 @@ const COMPONENTS = [
|
|
|
308
312
|
KbqOverflowItemsResult
|
|
309
313
|
];
|
|
310
314
|
class KbqOverflowItemsModule {
|
|
311
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
312
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
315
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
316
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsModule, imports: [KbqOverflowItems,
|
|
313
317
|
KbqOverflowItem,
|
|
314
318
|
KbqOverflowItemsResult], exports: [KbqOverflowItems,
|
|
315
319
|
KbqOverflowItem,
|
|
316
320
|
KbqOverflowItemsResult] }); }
|
|
317
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
321
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsModule }); }
|
|
318
322
|
}
|
|
319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsModule, decorators: [{
|
|
320
324
|
type: NgModule,
|
|
321
325
|
args: [{
|
|
322
326
|
imports: COMPONENTS,
|