@koobiq/components 20.4.2 → 21.0.1
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.scss +3 -10
- package/accordion/accordion.scss +4 -6
- package/actions-panel/actions-panel-container.scss +45 -1
- package/alert/alert.component.scss +3 -2
- package/app-switcher/_app-switcher-theme.scss +0 -4
- package/app-switcher/app-switcher-dropdown-app.scss +3 -2
- package/app-switcher/app-switcher-dropdown-site.scss +2 -1
- package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
- package/app-switcher/app-switcher-tokens.scss +15 -0
- package/app-switcher/app-switcher.scss +14 -4
- package/autocomplete/autocomplete.scss +7 -6
- package/badge/badge.component.scss +5 -8
- package/breadcrumbs/breadcrumbs.scss +25 -10
- package/button/_button-base.scss +30 -7
- package/button/_button-theme.scss +16 -0
- package/button/button-group.scss +7 -0
- package/button/button-tokens.scss +0 -2
- package/button/button.scss +34 -2
- package/button-toggle/_button-toggle-theme.scss +7 -2
- package/button-toggle/button-toggle.scss +65 -15
- package/checkbox/_checkbox-theme.scss +4 -3
- package/checkbox/checkbox.scss +3 -6
- package/clamped-text/clamped-text.scss +6 -2
- package/code-block/code-block-tokens.scss +0 -224
- package/code-block/code-block.scss +20 -9
- package/content-panel/content-panel-aside.scss +3 -2
- package/content-panel/content-panel-container.scss +37 -0
- package/content-panel/content-panel.scss +4 -3
- package/core/highlight/_highlight-theme.scss +3 -1
- package/core/option/action-container.scss +2 -2
- package/core/option/action.scss +2 -1
- package/core/option/option.scss +2 -1
- package/core/pop-up/_pop-up.scss +0 -37
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
- package/core/styles/_core.scss +3 -0
- package/core/styles/_koobiq-theme.scss +5 -6
- package/core/styles/common/_animation.scss +44 -16
- package/core/styles/common/_groups-mixins.scss +21 -19
- package/core/styles/common/_groups.scss +4 -32
- package/core/styles/common/_index.scss +0 -2
- package/core/styles/common/_link.scss +117 -0
- package/core/styles/common/_list.scss +0 -26
- package/core/styles/common/_overlay.scss +8 -10
- package/core/styles/common/_rtl.scss +0 -14
- package/core/styles/common/_select.scss +33 -15
- package/core/styles/common/_squircle.scss +63 -0
- package/core/styles/common/_tokens.scss +0 -11
- package/core/styles/common/_vendor-prefixes.scss +0 -20
- package/core/styles/functions/_timing.scss +0 -22
- package/core/styles/theming/_scrollbar-theme.scss +6 -1
- package/core/styles/theming/_theming.scss +13 -65
- package/core/styles/typography/_index.scss +0 -1
- package/core/styles/typography/_typography.scss +0 -143
- package/core/styles/visual/_body.scss +1 -6
- package/core/styles/visual/_layout.scss +0 -12
- package/datepicker/calendar-body.scss +3 -1
- package/datepicker/calendar-header.scss +0 -1
- package/datepicker/datepicker-content.scss +33 -1
- package/datepicker/datepicker-toggle.scss +0 -38
- package/dl/dl-tokens.scss +10 -0
- package/dl/dl.scss +113 -13
- package/dropdown/_dropdown-theme.scss +4 -16
- package/dropdown/dropdown-item.scss +4 -10
- package/dropdown/dropdown.scss +2 -1
- package/empty-state/_empty-state-theme.scss +10 -4
- package/empty-state/empty-state-tokens.scss +4 -4
- package/empty-state/empty-state.scss +4 -0
- package/fesm2022/koobiq-components-accordion.mjs +347 -229
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +39 -39
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +46 -48
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +332 -116
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +172 -132
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +791 -609
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +260 -143
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +4342 -1595
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +73 -36
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +447 -89
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +703 -599
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
- package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +116 -60
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +550 -290
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +2871 -2595
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +79 -24
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +389 -525
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +400 -149
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +601 -459
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
- package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-link.mjs +328 -125
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +583 -433
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +55 -78
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +853 -475
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +895 -556
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +680 -310
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +684 -285
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +450 -231
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +127 -21
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +883 -693
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +207 -88
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +815 -41
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +109 -88
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
- package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +890 -501
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +63 -49
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +1062 -603
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +886 -733
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +213 -185
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +299 -147
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +233 -245
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +344 -142
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +229 -145
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +463 -143
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +177 -130
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +657 -214
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +61 -32
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +734 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1700 -617
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +290 -135
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/dropzone.scss +31 -3
- package/file-upload/file-upload-tokens.scss +2 -22
- package/file-upload/file-upload.scss +6 -0
- package/file-upload/multiple-file-upload.component.scss +14 -12
- package/file-upload/single-file-upload.component.scss +3 -2
- package/filter-bar/filters.scss +7 -0
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +8 -1
- package/flag/flag-tokens.scss +22 -0
- package/flag/flag.scss +34 -21
- package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
- package/form-field/_form-field-theme.scss +4 -9
- package/form-field/cleaner.scss +3 -1
- package/form-field/fieldset.scss +3 -4
- package/form-field/form-field.scss +26 -21
- package/form-field/password-toggle.scss +3 -1
- package/icon/_icon-button-theme.scss +7 -0
- package/icon/_icon-theme.scss +10 -7
- package/icon/icon-button.scss +0 -2
- package/icon/icon-tokens.scss +12 -9
- package/inline-edit/inline-edit.scss +40 -54
- package/input/input.scss +4 -0
- package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
- package/link/deprecated/link-tokens.scss +27 -0
- package/link/link-tokens.scss +6 -25
- package/link/link.scss +137 -0
- package/list/list.scss +3 -2
- package/loader-overlay/_loader-overlay-theme.scss +19 -10
- package/loader-overlay/loader-overlay-tokens.scss +0 -2
- package/loader-overlay/loader-overlay.scss +7 -1
- package/markdown/_markdown-theme.scss +16 -0
- package/markdown/markdown-tokens.scss +5 -0
- package/markdown/markdown.scss +2 -1
- package/modal/_modal-animation.scss +23 -14
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal.scss +35 -31
- package/navbar/_navbar-item_horizontal.scss +8 -6
- package/navbar/_navbar-item_vertical.scss +18 -6
- package/navbar/_navbar-theme.scss +9 -1
- package/navbar/navbar-brand.scss +8 -6
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.scss +8 -9
- package/navbar/navbar-toggle.scss +3 -3
- package/navbar/navbar-tokens.scss +14 -0
- package/navbar/navbar.scss +1 -2
- package/navbar/vertical-navbar.scss +2 -2
- package/notification-center/_notification-center-theme.scss +11 -6
- package/notification-center/notification-center-tokens.scss +33 -0
- package/notification-center/notification-center.scss +58 -20
- package/notification-center/notification-item.scss +15 -6
- package/package.json +112 -81
- package/popover/popover-tokens.scss +0 -2
- package/popover/popover.scss +41 -19
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +20 -3
- package/progress-bar/progress-bar-tokens.scss +3 -0
- package/progress-bar/progress-bar.scss +36 -8
- package/progress-spinner/progress-spinner.scss +4 -3
- package/radio/_radio-theme.scss +21 -4
- package/radio/radio-tokens.scss +7 -3
- package/radio/radio.scss +55 -8
- package/schematics/collection.json +415 -18
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.cjs +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
- package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
- package/schematics/migrations/actions-panel-overlay-container/data.cjs +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.cjs +55 -0
- package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
- package/schematics/migrations/alert-signals/README.md +13 -7
- package/schematics/migrations/alert-signals/{data.js → data.cjs} +3 -0
- package/schematics/migrations/alert-signals/index.cjs +221 -0
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.cjs +150 -0
- package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
- package/schematics/migrations/angular-animations-removal/schema.json +15 -0
- package/schematics/migrations/app-switcher-signals/README.md +88 -0
- package/schematics/migrations/app-switcher-signals/data.cjs +136 -0
- package/schematics/migrations/app-switcher-signals/index.cjs +366 -0
- package/schematics/migrations/app-switcher-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
- package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.cjs +149 -0
- package/schematics/migrations/autocomplete-signals/index.cjs +707 -0
- package/schematics/migrations/autocomplete-signals/schema.json +20 -0
- package/schematics/migrations/badge-signals/README.md +77 -0
- package/schematics/migrations/badge-signals/data.cjs +109 -0
- package/schematics/migrations/badge-signals/index.cjs +694 -0
- package/schematics/migrations/badge-signals/schema.json +20 -0
- package/schematics/migrations/button-state-and-styles/README.md +129 -0
- package/schematics/migrations/button-state-and-styles/data.cjs +136 -0
- package/schematics/migrations/button-state-and-styles/index.cjs +221 -0
- package/schematics/migrations/button-state-and-styles/schema.json +20 -0
- package/schematics/migrations/button-supported-colors/README.md +73 -0
- package/schematics/migrations/button-supported-colors/data.cjs +106 -0
- package/schematics/migrations/button-supported-colors/index.cjs +261 -0
- package/schematics/migrations/button-supported-colors/schema.json +20 -0
- package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
- package/schematics/migrations/button-toggle-signals-and-aria/data.cjs +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.cjs +497 -0
- package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/button-truncation/README.md +110 -0
- package/schematics/migrations/button-truncation/data.cjs +88 -0
- package/schematics/migrations/button-truncation/index.cjs +270 -0
- package/schematics/migrations/button-truncation/schema.json +20 -0
- package/schematics/migrations/checkbox-signals/README.md +76 -0
- package/schematics/migrations/checkbox-signals/data.cjs +114 -0
- package/schematics/migrations/checkbox-signals/index.cjs +635 -0
- package/schematics/migrations/checkbox-signals/schema.json +20 -0
- package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
- package/schematics/migrations/clamped-text-disclosure/data.cjs +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.cjs +60 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
- package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
- package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
- package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.cjs +121 -0
- package/schematics/migrations/code-block-signals/index.cjs +701 -0
- package/schematics/migrations/code-block-signals/schema.json +20 -0
- package/schematics/migrations/color-signals/README.md +46 -0
- package/schematics/migrations/color-signals/data.cjs +131 -0
- package/schematics/migrations/color-signals/index.cjs +20 -0
- package/schematics/migrations/color-signals/schema.json +20 -0
- package/schematics/migrations/core-mixins-removal/README.md +20 -0
- package/schematics/migrations/core-mixins-removal/data.cjs +27 -0
- package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
- package/schematics/migrations/core-mixins-removal/schema.json +15 -0
- package/schematics/migrations/css-selectors/README.md +2 -2
- package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.cjs +49 -0
- package/schematics/migrations/datepicker-signals/index.cjs +18 -0
- package/schematics/migrations/datepicker-signals/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +2 -2
- package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +8 -7
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.cjs +60 -0
- package/schematics/migrations/design-tokens-v4/schema.json +15 -0
- package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
- package/schematics/migrations/divider-signals-and-aria/data.cjs +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.cjs +212 -0
- package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
- package/schematics/migrations/dl-attribute-coercion/data.cjs +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.cjs +162 -0
- package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
- package/schematics/migrations/dl-standalone-names/README.md +49 -0
- package/schematics/migrations/dl-standalone-names/data.cjs +44 -0
- package/schematics/migrations/dl-standalone-names/index.cjs +322 -0
- package/schematics/migrations/dl-standalone-names/schema.json +20 -0
- package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
- package/schematics/migrations/dropdown-demote-overlay/data.cjs +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.cjs +289 -0
- package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
- package/schematics/migrations/dropdown-signals/README.md +83 -0
- package/schematics/migrations/dropdown-signals/data.cjs +152 -0
- package/schematics/migrations/dropdown-signals/index.cjs +20 -0
- package/schematics/migrations/dropdown-signals/schema.json +20 -0
- package/schematics/migrations/empty-state-error-color/README.md +84 -0
- package/schematics/migrations/empty-state-error-color/data.cjs +85 -0
- package/schematics/migrations/empty-state-error-color/index.cjs +72 -0
- package/schematics/migrations/empty-state-error-color/schema.json +15 -0
- package/schematics/migrations/empty-state-size-attr/README.md +2 -2
- package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.cjs +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.cjs +61 -0
- package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
- package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
- package/schematics/migrations/file-upload-deprecated-outputs/data.cjs +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.cjs +71 -0
- package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
- package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
- package/schematics/migrations/filter-bar-rename-action/data.cjs +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.cjs +178 -0
- package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
- package/schematics/migrations/filter-bar-signals/README.md +27 -16
- package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +1 -2
- package/schematics/migrations/filter-bar-signals/index.cjs +225 -0
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.cjs +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.cjs +62 -0
- package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
- package/schematics/migrations/flag-inner-html/README.md +67 -0
- package/schematics/migrations/flag-inner-html/data.cjs +58 -0
- package/schematics/migrations/flag-inner-html/index.cjs +62 -0
- package/schematics/migrations/flag-inner-html/schema.json +15 -0
- package/schematics/migrations/form-field-signals/README.md +125 -0
- package/schematics/migrations/form-field-signals/data.cjs +288 -0
- package/schematics/migrations/form-field-signals/index.cjs +383 -0
- package/schematics/migrations/form-field-signals/schema.json +20 -0
- package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
- package/schematics/migrations/icon-semantics-and-api/data.cjs +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.cjs +65 -0
- package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
- package/schematics/migrations/icons-replacement/README.md +5 -5
- package/schematics/migrations/icons-replacement/{index.js → index.cjs} +4 -3
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.cjs +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.cjs +98 -0
- package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
- package/schematics/migrations/input-number-surface/README.md +140 -0
- package/schematics/migrations/input-number-surface/data.cjs +135 -0
- package/schematics/migrations/input-number-surface/index.cjs +293 -0
- package/schematics/migrations/input-number-surface/schema.json +20 -0
- package/schematics/migrations/input-signals/README.md +20 -0
- package/schematics/migrations/input-signals/data.cjs +30 -0
- package/schematics/migrations/input-signals/index.cjs +18 -0
- package/schematics/migrations/input-signals/schema.json +15 -0
- package/schematics/migrations/link-deprecated-path/README.md +144 -0
- package/schematics/migrations/link-deprecated-path/index.cjs +20 -0
- package/schematics/migrations/link-deprecated-path/schema.json +20 -0
- package/schematics/migrations/link-signals/README.md +71 -0
- package/schematics/migrations/link-signals/data.cjs +116 -0
- package/schematics/migrations/link-signals/index.cjs +416 -0
- package/schematics/migrations/link-signals/schema.json +20 -0
- package/schematics/migrations/list-signals/README.md +22 -0
- package/schematics/migrations/list-signals/data.cjs +35 -0
- package/schematics/migrations/list-signals/index.cjs +18 -0
- package/schematics/migrations/list-signals/schema.json +15 -0
- package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
- package/schematics/migrations/list-tree-multiple-input/data.cjs +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.cjs +222 -0
- package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
- package/schematics/migrations/loader-overlay-signals/README.md +62 -0
- package/schematics/migrations/loader-overlay-signals/data.cjs +101 -0
- package/schematics/migrations/loader-overlay-signals/index.cjs +698 -0
- package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
- package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
- package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.cjs +257 -0
- package/schematics/migrations/locale-configuration-providers/index.cjs +295 -0
- package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
- package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
- package/schematics/migrations/mandatory-peer-dependencies/index.cjs +43 -0
- package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
- package/schematics/migrations/markdown-signals/README.md +58 -0
- package/schematics/migrations/markdown-signals/data.cjs +79 -0
- package/schematics/migrations/markdown-signals/index.cjs +640 -0
- package/schematics/migrations/markdown-signals/schema.json +20 -0
- package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
- package/schematics/migrations/modal-dialog-semantics/data.cjs +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.cjs +59 -0
- package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
- package/schematics/migrations/modal-signals/README.md +88 -0
- package/schematics/migrations/modal-signals/data.cjs +132 -0
- package/schematics/migrations/modal-signals/index.cjs +20 -0
- package/schematics/migrations/modal-signals/schema.json +20 -0
- package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
- package/schematics/migrations/navbar-signals-and-aria/data.cjs +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.cjs +569 -0
- package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/new-icons-pack/README.md +10 -10
- package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +8 -7
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.cjs +66 -0
- package/schematics/migrations/notification-center-signals/index.cjs +62 -0
- package/schematics/migrations/notification-center-signals/schema.json +15 -0
- package/schematics/migrations/option-signals/README.md +37 -0
- package/schematics/migrations/option-signals/data.cjs +86 -0
- package/schematics/migrations/option-signals/index.cjs +20 -0
- package/schematics/migrations/option-signals/schema.json +20 -0
- package/schematics/migrations/popover-leave-delay/README.md +51 -0
- package/schematics/migrations/popover-leave-delay/data.cjs +61 -0
- package/schematics/migrations/popover-leave-delay/index.cjs +55 -0
- package/schematics/migrations/popover-leave-delay/schema.json +15 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/data.cjs +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.cjs +59 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
- package/schematics/migrations/progress-spinner-signals/README.md +72 -0
- package/schematics/migrations/progress-spinner-signals/data.cjs +83 -0
- package/schematics/migrations/progress-spinner-signals/index.cjs +695 -0
- package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
- package/schematics/migrations/query-list-signals/README.md +32 -0
- package/schematics/migrations/query-list-signals/data.cjs +70 -0
- package/schematics/migrations/query-list-signals/index.cjs +18 -0
- package/schematics/migrations/query-list-signals/schema.json +15 -0
- package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
- package/schematics/migrations/radio-signals-and-aria/data.cjs +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.cjs +40 -0
- package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
- package/schematics/migrations/read-state-dwell-handlers/data.cjs +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.cjs +216 -0
- package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
- package/schematics/migrations/scrollbar-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
- package/schematics/migrations/select-signal-inputs/README.md +61 -0
- package/schematics/migrations/select-signal-inputs/data.cjs +99 -0
- package/schematics/migrations/select-signal-inputs/index.cjs +58 -0
- package/schematics/migrations/select-signal-inputs/schema.json +15 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/data.cjs +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.cjs +58 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
- package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
- package/schematics/migrations/signal-inputs-subclasses/data.cjs +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
- package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
- package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
- package/schematics/migrations/split-button-optional-disabled/data.cjs +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.cjs +58 -0
- package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
- package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
- package/schematics/migrations/splitter-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
- package/schematics/migrations/state-saving-default/README.md +67 -0
- package/schematics/migrations/state-saving-default/data.cjs +88 -0
- package/schematics/migrations/state-saving-default/index.cjs +63 -0
- package/schematics/migrations/state-saving-default/schema.json +15 -0
- package/schematics/migrations/table-cell-content/README.md +55 -0
- package/schematics/migrations/table-cell-content/data.cjs +66 -0
- package/schematics/migrations/table-cell-content/index.cjs +67 -0
- package/schematics/migrations/table-cell-content/schema.json +15 -0
- package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
- package/schematics/migrations/tabs-signals-and-aria/data.cjs +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.cjs +66 -0
- package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/tag-list-cleaner/README.md +58 -0
- package/schematics/migrations/tag-list-cleaner/data.cjs +42 -0
- package/schematics/migrations/tag-list-cleaner/index.cjs +197 -0
- package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
- package/schematics/migrations/tag-slots/README.md +41 -0
- package/schematics/migrations/tag-slots/index.cjs +191 -0
- package/schematics/migrations/tag-slots/schema.json +20 -0
- package/schematics/migrations/tags-signals/README.md +85 -0
- package/schematics/migrations/tags-signals/data.cjs +103 -0
- package/schematics/migrations/tags-signals/index.cjs +674 -0
- package/schematics/migrations/tags-signals/schema.json +20 -0
- package/schematics/migrations/textarea-signals/README.md +72 -0
- package/schematics/migrations/textarea-signals/data.cjs +121 -0
- package/schematics/migrations/textarea-signals/index.cjs +380 -0
- package/schematics/migrations/textarea-signals/schema.json +20 -0
- package/schematics/migrations/time-range-title-for/README.md +164 -0
- package/schematics/migrations/time-range-title-for/data.cjs +139 -0
- package/schematics/migrations/time-range-title-for/index.cjs +164 -0
- package/schematics/migrations/time-range-title-for/schema.json +20 -0
- package/schematics/migrations/timepicker-signals/README.md +78 -0
- package/schematics/migrations/timepicker-signals/data.cjs +82 -0
- package/schematics/migrations/timepicker-signals/index.cjs +710 -0
- package/schematics/migrations/timepicker-signals/schema.json +20 -0
- package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
- package/schematics/migrations/timezone-grouping-utils/data.cjs +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.cjs +65 -0
- package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
- package/schematics/migrations/title-encapsulation/README.md +49 -0
- package/schematics/migrations/title-encapsulation/data.cjs +69 -0
- package/schematics/migrations/title-encapsulation/index.cjs +58 -0
- package/schematics/migrations/title-encapsulation/schema.json +15 -0
- package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
- package/schematics/migrations/toast-stack-and-defaults/data.cjs +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.cjs +54 -0
- package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/data.cjs +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.cjs +61 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
- package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
- package/schematics/migrations/top-bar-container-selectors/data.cjs +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.cjs +85 -0
- package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
- package/schematics/migrations/tree-select-signals/README.md +61 -0
- package/schematics/migrations/tree-select-signals/data.cjs +106 -0
- package/schematics/migrations/tree-select-signals/index.cjs +59 -0
- package/schematics/migrations/tree-select-signals/schema.json +15 -0
- package/schematics/migrations/tree-signals/README.md +82 -0
- package/schematics/migrations/tree-signals/data.cjs +123 -0
- package/schematics/migrations/tree-signals/index.cjs +55 -0
- package/schematics/migrations/tree-signals/schema.json +15 -0
- package/schematics/migrations/tree-state-saving-default/README.md +66 -0
- package/schematics/migrations/tree-state-saving-default/data.cjs +78 -0
- package/schematics/migrations/tree-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
- package/schematics/migrations/username-pipe-injection/README.md +59 -0
- package/schematics/migrations/username-pipe-injection/data.cjs +78 -0
- package/schematics/migrations/username-pipe-injection/index.cjs +59 -0
- package/schematics/migrations/username-pipe-injection/schema.json +15 -0
- package/schematics/migrations/v20-upgrade/README.md +36 -16
- package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +124 -77
- package/schematics/migrations/v20-upgrade/index.cjs +19 -0
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.cjs +1371 -0
- package/schematics/migrations/v21-upgrade/index.cjs +95 -0
- package/schematics/migrations/v21-upgrade/schema.json +20 -0
- package/schematics/migrations/zoneless-change-detection/README.md +30 -0
- package/schematics/migrations/zoneless-change-detection/data.cjs +29 -0
- package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +401 -6
- package/schematics/ng-add/index.cjs +266 -0
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
- package/schematics/utils/deprecated-path-migration.cjs +62 -0
- package/schematics/utils/html-config.cjs +148 -0
- package/schematics/utils/{icon-migration.js → icon-migration.cjs} +2 -2
- package/schematics/utils/list-item-pattern.cjs +16 -0
- package/schematics/utils/{package-config.js → package-config.cjs} +3 -32
- package/schematics/utils/project-files.cjs +25 -0
- package/schematics/utils/replacement-driver.cjs +337 -0
- package/schematics/utils/safe-rule.cjs +23 -0
- package/schematics/utils/signal-members-migration.cjs +779 -0
- package/schematics/utils/tag-patterns.cjs +21 -0
- package/schematics/utils/template-ref-access.cjs +155 -0
- package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
- package/schematics/utils/warn-only-migration.cjs +52 -0
- package/schematics/utils/workspace-styles.cjs +123 -0
- package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
- package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
- package/scrollbar/native-scrollbar.scss +68 -0
- package/scrollbar/scrollbar-tokens.scss +13 -22
- package/scrollbar/scrollbar-track.scss +94 -0
- package/scrollbar/scrollbar-viewport.scss +33 -0
- package/scrollbar/scrollbar.scss +24 -0
- package/search-expandable/search-expandable-tokens.scss +4 -0
- package/search-expandable/search-expandable.scss +4 -2
- package/select/_select-theme.scss +3 -16
- package/select/select.scss +0 -6
- package/sidebar/sidebar.scss +20 -0
- package/sidepanel/_sidepanel-theme.scss +1 -1
- package/sidepanel/sidepanel-tokens.scss +7 -1
- package/sidepanel/sidepanel.scss +41 -5
- package/skeleton/skeleton-presets.scss +350 -0
- package/skeleton/skeleton-tokens.scss +127 -0
- package/skeleton/skeleton.scss +53 -45
- package/split-button/_split-button-theme.scss +4 -4
- package/split-button/split-button.scss +2 -6
- package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
- package/splitter/deprecated/splitter.scss +51 -0
- package/splitter/splitter-tokens.scss +19 -0
- package/splitter/splitter.scss +148 -28
- package/table/_table-theme.scss +13 -12
- package/table/table-tokens.scss +8 -0
- package/table/table.scss +47 -22
- package/tabs/_tabs-common.scss +14 -14
- package/tabs/_tabs-theme.scss +4 -5
- package/tabs/tab-body.scss +49 -1
- package/tabs/tab-header.scss +2 -1
- package/tags/tag-list.scss +4 -0
- package/tags/tag.scss +19 -1
- package/time-range/time-range.scss +9 -0
- package/timezone/timezone-option.component.scss +4 -7
- package/timezone/timezone-select.component.scss +3 -0
- package/toast/_toast-theme.scss +1 -4
- package/toast/toast-container.component.scss +19 -13
- package/toast/toast-tokens.scss +12 -6
- package/toast/toast.component.scss +42 -19
- package/toggle/_toggle-theme.scss +4 -10
- package/toggle/toggle.scss +67 -26
- package/tooltip/_tooltip-theme.scss +7 -1
- package/tooltip/tooltip-tokens.scss +1 -2
- package/tooltip/tooltip.scss +55 -9
- package/top-bar/top-bar-tokens.scss +13 -2
- package/top-bar/top-bar.scss +24 -19
- package/tree/_tree-theme.scss +0 -1
- package/tree/toggle.scss +5 -9
- package/tree/tree-option.scss +2 -4
- package/tree/tree-tokens.scss +2 -1
- package/tree/tree.scss +3 -5
- package/tree-select/_tree-select-theme.scss +4 -15
- package/tree-select/tree-select-tokens.scss +16 -0
- package/tree-select/tree-select.scss +0 -6
- package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
- package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
- package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
- package/types/koobiq-components-app-switcher.d.ts +406 -0
- package/types/koobiq-components-autocomplete.d.ts +443 -0
- package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
- package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
- package/types/koobiq-components-button-toggle.d.ts +340 -0
- package/types/koobiq-components-button.d.ts +296 -0
- package/types/koobiq-components-checkbox.d.ts +172 -0
- package/types/koobiq-components-clamped-text.d.ts +184 -0
- package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +150 -88
- package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
- package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
- package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
- package/types/koobiq-components-divider.d.ts +43 -0
- package/types/koobiq-components-dl.d.ts +235 -0
- package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
- package/types/koobiq-components-ellipsis-center.d.ts +85 -0
- package/types/koobiq-components-empty-state.d.ts +106 -0
- package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
- package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
- package/types/koobiq-components-flag.d.ts +68 -0
- package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
- package/types/koobiq-components-icon.d.ts +333 -0
- package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
- package/types/koobiq-components-input.d.ts +477 -0
- package/types/koobiq-components-link-deprecated.d.ts +101 -0
- package/types/koobiq-components-link.d.ts +176 -0
- package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
- package/types/koobiq-components-loader-overlay.d.ts +101 -0
- package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
- package/types/koobiq-components-modal.d.ts +666 -0
- package/types/koobiq-components-navbar.d.ts +569 -0
- package/types/koobiq-components-notification-center.d.ts +500 -0
- package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
- package/types/koobiq-components-popover.d.ts +468 -0
- package/types/koobiq-components-progress-bar.d.ts +67 -0
- package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
- package/types/koobiq-components-radio.d.ts +294 -0
- package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
- package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
- package/types/koobiq-components-scrollbar.d.ts +154 -0
- package/types/koobiq-components-search-expandable.d.ts +164 -0
- package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
- package/types/koobiq-components-sidebar.d.ts +152 -0
- package/types/koobiq-components-sidepanel.d.ts +436 -0
- package/types/koobiq-components-skeleton.d.ts +234 -0
- package/types/koobiq-components-split-button.d.ts +65 -0
- package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
- package/types/koobiq-components-splitter.d.ts +406 -0
- package/types/koobiq-components-table.d.ts +44 -0
- package/types/koobiq-components-tabs.d.ts +888 -0
- package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
- package/types/koobiq-components-textarea.d.ts +178 -0
- package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
- package/types/koobiq-components-timepicker.d.ts +223 -0
- package/types/koobiq-components-timezone.d.ts +266 -0
- package/types/koobiq-components-title.d.ts +184 -0
- package/types/koobiq-components-toast.d.ts +289 -0
- package/types/koobiq-components-toggle.d.ts +121 -0
- package/types/koobiq-components-tooltip.d.ts +610 -0
- package/types/koobiq-components-top-bar.d.ts +61 -0
- package/types/koobiq-components-tree-select.d.ts +670 -0
- package/types/koobiq-components-tree.d.ts +1339 -0
- package/types/koobiq-components-username.d.ts +340 -0
- package/username/_username-theme.scss +35 -0
- package/username/username.scss +10 -34
- package/app-switcher/index.d.ts +0 -276
- package/autocomplete/index.d.ts +0 -286
- package/button/index.d.ts +0 -153
- package/button-toggle/index.d.ts +0 -162
- package/checkbox/index.d.ts +0 -163
- package/clamped-text/index.d.ts +0 -146
- package/core/styles/_tokens.scss +0 -7
- package/core/styles/common/_clearfix.scss +0 -13
- package/core/styles/common/_popup.scss +0 -6
- package/core/styles/functions/_index.scss +0 -3
- package/core/styles/functions/_number.scss +0 -60
- package/core/styles/functions/_string.scss +0 -18
- package/core/styles/theming/scrollbar-tokens.scss +0 -25
- package/core/styles/typography/_typography-utils.scss +0 -84
- package/divider/index.d.ts +0 -20
- package/dl/index.d.ts +0 -45
- package/ellipsis-center/index.d.ts +0 -71
- package/empty-state/index.d.ts +0 -45
- package/flag/index.d.ts +0 -44
- package/icon/index.d.ts +0 -200
- package/input/index.d.ts +0 -354
- package/link/index.d.ts +0 -56
- package/loader-overlay/index.d.ts +0 -57
- package/modal/index.d.ts +0 -339
- package/navbar/index.d.ts +0 -372
- package/notification-center/index.d.ts +0 -323
- package/popover/index.d.ts +0 -182
- package/prebuilt-themes/dark-theme.css +0 -1
- package/prebuilt-themes/light-theme.css +0 -1
- package/progress-bar/index.d.ts +0 -31
- package/radio/index.d.ts +0 -203
- package/schematics/migrations/alert-signals/index.js +0 -353
- package/schematics/migrations/filter-bar-signals/index.js +0 -319
- package/schematics/migrations/v20-upgrade/index.js +0 -225
- package/schematics/ng-add/index.js +0 -39
- package/search-expandable/index.d.ts +0 -101
- package/sidebar/index.d.ts +0 -94
- package/sidepanel/index.d.ts +0 -272
- package/skeleton/index.d.ts +0 -26
- package/split-button/index.d.ts +0 -46
- package/table/index.d.ts +0 -25
- package/tabs/index.d.ts +0 -677
- package/textarea/index.d.ts +0 -138
- package/timepicker/index.d.ts +0 -197
- package/timezone/index.d.ts +0 -125
- package/title/index.d.ts +0 -139
- package/toast/index.d.ts +0 -178
- package/toggle/index.d.ts +0 -104
- package/tooltip/index.d.ts +0 -335
- package/top-bar/index.d.ts +0 -33
- package/tree/index.d.ts +0 -802
- package/tree-select/index.d.ts +0 -475
- package/username/index.d.ts +0 -194
- /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
- /package/schematics/utils/{ast.js → ast.cjs} +0 -0
- /package/schematics/utils/{messages.js → messages.cjs} +0 -0
- /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
- /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
|
@@ -1,275 +1,798 @@
|
|
|
1
|
+
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
2
|
+
import { Directionality } from '@angular/cdk/bidi';
|
|
3
|
+
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
4
|
+
import { MutationObserverFactory } from '@angular/cdk/observers';
|
|
5
|
+
import { SharedResizeObserver } from '@angular/cdk/observers/private';
|
|
6
|
+
import { _CdkPrivateStyleLoader } from '@angular/cdk/private';
|
|
7
|
+
import * as i1 from '@angular/cdk/scrolling';
|
|
8
|
+
import { CdkScrollable, ScrollDispatcher, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
9
|
+
import { DOCUMENT } from '@angular/common';
|
|
1
10
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import { OverlayScrollbars } from 'overlayscrollbars';
|
|
11
|
+
import { inject, NgZone, InjectionToken, ViewEncapsulation, ChangeDetectionStrategy, Component, input, booleanAttribute, Directive, ApplicationRef, EnvironmentInjector, Injector, DestroyRef, numberAttribute, effect, afterNextRender, createComponent, Injectable, Renderer2, NgModule } from '@angular/core';
|
|
12
|
+
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
13
|
+
import { KBQ_WINDOW, kbqInjectNativeElement, kbqAnimationsDisabled } from '@koobiq/components/core';
|
|
14
|
+
import { NEVER, Observable, asyncScheduler, Subject, merge, fromEvent, EMPTY, filter, map, startWith, audit, share, switchMap, takeUntil, distinctUntilChanged, concat, of, timer, observeOn, asapScheduler, take } from 'rxjs';
|
|
7
15
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
16
|
+
/**
|
|
17
|
+
* The next animation frame, requested on subscription and only then, so an idle page schedules none.
|
|
18
|
+
*
|
|
19
|
+
* One frame per subscriber rather than a shared one: a frame that is already being delivered cannot be
|
|
20
|
+
* joined, so whatever asks for a frame from inside one gets the next.
|
|
21
|
+
*/
|
|
22
|
+
function nextAnimationFrame() {
|
|
23
|
+
const window = inject(KBQ_WINDOW);
|
|
24
|
+
const ngZone = inject(NgZone);
|
|
25
|
+
if (typeof window.requestAnimationFrame === 'undefined') {
|
|
26
|
+
return NEVER;
|
|
12
27
|
}
|
|
28
|
+
return new Observable((subscriber) =>
|
|
29
|
+
// Outside Angular, so waiting for a frame does not keep NgZone unstable.
|
|
30
|
+
ngZone.runOutsideAngular(() => {
|
|
31
|
+
const frameId = window.requestAnimationFrame(() => {
|
|
32
|
+
subscriber.next();
|
|
33
|
+
subscriber.complete();
|
|
34
|
+
});
|
|
35
|
+
return () => window.cancelAnimationFrame(frameId);
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
function zoneFree() {
|
|
39
|
+
const ngZone = inject(NgZone);
|
|
40
|
+
return (source) => new Observable((subscriber) => ngZone.runOutsideAngular(() => source.subscribe(subscriber)));
|
|
41
|
+
}
|
|
42
|
+
function zoneFreeScheduler(scheduler = asyncScheduler) {
|
|
43
|
+
const ngZone = inject(NgZone);
|
|
44
|
+
return {
|
|
45
|
+
now: () => scheduler.now(),
|
|
46
|
+
schedule(work, delay, state) {
|
|
47
|
+
let subscription;
|
|
48
|
+
ngZone.runOutsideAngular(() => {
|
|
49
|
+
subscription = scheduler.schedule(work, delay, state);
|
|
50
|
+
});
|
|
51
|
+
return subscription;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function zoneOptimized() {
|
|
56
|
+
const ngZone = inject(NgZone);
|
|
57
|
+
return (source) => new Observable((subscriber) => source.subscribe({
|
|
58
|
+
next: (value) => ngZone.run(() => subscriber.next(value)),
|
|
59
|
+
error: (error) => subscriber.error(error),
|
|
60
|
+
complete: () => subscriber.complete()
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
function getElementOffset(ancestor, element) {
|
|
64
|
+
let offsetTop = 0;
|
|
65
|
+
let offsetLeft = 0;
|
|
66
|
+
let current = element;
|
|
67
|
+
while (current && current !== ancestor) {
|
|
68
|
+
offsetTop += current.offsetTop;
|
|
69
|
+
offsetLeft += current.offsetLeft;
|
|
70
|
+
current = current.offsetParent;
|
|
71
|
+
}
|
|
72
|
+
return { offsetTop, offsetLeft };
|
|
73
|
+
}
|
|
74
|
+
const KBQ_SCROLLBAR_DEFAULT_OPTIONS = {
|
|
75
|
+
mode: 'hover',
|
|
76
|
+
hideDelay: 1000
|
|
13
77
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// eslint-disable-next-line no-restricted-globals
|
|
24
|
-
if (typeof window === 'undefined') {
|
|
25
|
-
const noop = () => { };
|
|
26
|
-
return [noop, noop];
|
|
27
|
-
}
|
|
28
|
-
let idleId;
|
|
29
|
-
let rafId;
|
|
30
|
-
// eslint-disable-next-line no-restricted-globals
|
|
31
|
-
const { requestIdleCallback, requestAnimationFrame, cancelAnimationFrame, cancelIdleCallback } = window;
|
|
32
|
-
const idleSupported = typeof requestIdleCallback === 'function';
|
|
33
|
-
const rIdle = idleSupported ? requestIdleCallback : requestAnimationFrame;
|
|
34
|
-
const cIdle = idleSupported ? cancelIdleCallback : cancelAnimationFrame;
|
|
35
|
-
const clear = () => {
|
|
36
|
-
cIdle(idleId);
|
|
37
|
-
cancelAnimationFrame(rafId);
|
|
78
|
+
/** Injection token holding the current {@link KbqScrollbarOptions}. */
|
|
79
|
+
const KBQ_SCROLLBAR_OPTIONS = new InjectionToken('KBQ_SCROLLBAR_OPTIONS', {
|
|
80
|
+
factory: () => KBQ_SCROLLBAR_DEFAULT_OPTIONS
|
|
81
|
+
});
|
|
82
|
+
/** Overrides the default scrollbar options within the given injector scope. */
|
|
83
|
+
function kbqScrollbarOptionsProvider(options) {
|
|
84
|
+
return {
|
|
85
|
+
provide: KBQ_SCROLLBAR_OPTIONS,
|
|
86
|
+
useValue: { ...KBQ_SCROLLBAR_DEFAULT_OPTIONS, ...options }
|
|
38
87
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
idleId = rIdle(idleSupported
|
|
43
|
-
? () => {
|
|
44
|
-
clear();
|
|
45
|
-
// inside idle its best practice to use rAF to change DOM for best performance
|
|
46
|
-
rafId = requestAnimationFrame(callback);
|
|
47
|
-
}
|
|
48
|
-
: callback, typeof options === 'object' ? options : { timeout: 2233 });
|
|
49
|
-
},
|
|
50
|
-
clear
|
|
51
|
-
];
|
|
88
|
+
}
|
|
89
|
+
const KBQ_NATIVE_SCROLLBAR_DEFAULT_OPTIONS = {
|
|
90
|
+
descendants: false
|
|
52
91
|
};
|
|
92
|
+
/** Injection token holding the current {@link KbqNativeScrollbarOptions}. */
|
|
93
|
+
const KBQ_NATIVE_SCROLLBAR_OPTIONS = new InjectionToken('KBQ_NATIVE_SCROLLBAR_OPTIONS', { factory: () => KBQ_NATIVE_SCROLLBAR_DEFAULT_OPTIONS });
|
|
94
|
+
/** Overrides the default native scrollbar options within the given injector scope. */
|
|
95
|
+
function kbqNativeScrollbarOptionsProvider(options) {
|
|
96
|
+
return {
|
|
97
|
+
provide: KBQ_NATIVE_SCROLLBAR_OPTIONS,
|
|
98
|
+
useValue: { ...KBQ_NATIVE_SCROLLBAR_DEFAULT_OPTIONS, ...options }
|
|
99
|
+
};
|
|
100
|
+
}
|
|
53
101
|
/**
|
|
54
|
-
*
|
|
102
|
+
* Computed `overflow` values that rule out user scrolling. `visible` belongs here as much as the other
|
|
103
|
+
* two: it only computes to `auto` when the other axis scrolls, so a box left at the initial value on
|
|
104
|
+
* both axes is not a scroll container at all. Listed as the exclusions rather than as the scrollable
|
|
105
|
+
* values so an unreadable computed style leaves the scrollbar alone instead of erasing it.
|
|
55
106
|
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
107
|
+
const NON_SCROLLABLE_OVERFLOW = ['clip', 'hidden', 'visible'];
|
|
108
|
+
const TRACK_TAG = 'kbq-scrollbar-track';
|
|
109
|
+
/** Based on --kbq-scrollbar-thumb-min-size */
|
|
110
|
+
const MIN_THUMB_SIZE = 32;
|
|
111
|
+
/** Based on --kbq-scrollbar-thumb-gap */
|
|
112
|
+
const THUMB_GAP = 3;
|
|
113
|
+
// Include the transparent border because CSS applies the minimum to the thumb's border box.
|
|
114
|
+
const MIN_THUMB_BOX_SIZE = MIN_THUMB_SIZE + THUMB_GAP * 2;
|
|
115
|
+
class ScrollbarStyleLoader {
|
|
116
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ScrollbarStyleLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
117
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.25", type: ScrollbarStyleLoader, isStandalone: true, selector: "scrollbar-style-loader", ngImport: i0, template: '', isInline: true, styles: [":where(.kbq-scrollbar-viewport,.kbq-native-scrollbar){--kbq-scrollbar-thumb-min-size: var(--kbq-size-3xl);--kbq-scrollbar-thumb-gap: 3px;--kbq-scrollbar-track-size: 14px;--kbq-scrollbar-track-z-index: 1000;--kbq-scrollbar-transition-duration: .15s;--kbq-scrollbar-track-background: transparent}@media(prefers-reduced-motion:reduce){:where(.kbq-scrollbar-viewport,.kbq-native-scrollbar){--kbq-scrollbar-transition-duration: 0s}}\n", "@supports not selector(::-webkit-scrollbar){:where(.kbq-native-scrollbar:not(.kbq-native-scrollbar_descendants) *){scrollbar-color:auto}.kbq-native-scrollbar,.kbq-native-scrollbar_descendants *{scrollbar-color:var(--kbq-scrollbar-thumb-default-background) var(--kbq-scrollbar-track-background);scrollbar-width:auto}}.kbq-native-scrollbar::-webkit-scrollbar,.kbq-native-scrollbar_descendants ::-webkit-scrollbar{width:var(--kbq-scrollbar-track-size);height:var(--kbq-scrollbar-track-size);background-color:var(--kbq-scrollbar-track-background);cursor:default}.kbq-native-scrollbar::-webkit-scrollbar-track,.kbq-native-scrollbar::-webkit-scrollbar-corner,.kbq-native-scrollbar::-webkit-resizer,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-track,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-corner,.kbq-native-scrollbar_descendants ::-webkit-resizer{background-color:var(--kbq-scrollbar-track-background)}.kbq-native-scrollbar::-webkit-scrollbar-thumb,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb{box-sizing:border-box;border:var(--kbq-scrollbar-thumb-gap) solid transparent;border-radius:var(--kbq-size-border-radius);background-color:var(--kbq-scrollbar-thumb-default-background);background-clip:content-box}.kbq-native-scrollbar::-webkit-scrollbar-thumb:vertical,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb:vertical{min-height:calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2)}.kbq-native-scrollbar::-webkit-scrollbar-thumb:horizontal,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb:horizontal{min-width:calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2)}.kbq-native-scrollbar::-webkit-scrollbar-thumb:hover,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb:hover{background-color:var(--kbq-scrollbar-thumb-hover-background)}.kbq-native-scrollbar::-webkit-scrollbar-thumb:active,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb:active{background-color:var(--kbq-scrollbar-thumb-active-background)}.kbq-native-scrollbar::-webkit-scrollbar-button,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-button{display:none}\n", "@charset \"UTF-8\";.kbq-scrollbar-viewport{isolation:isolate}.kbq-scrollbar-viewport_native-scrollbar-hidden{scrollbar-width:none;-ms-overflow-style:none}.kbq-scrollbar-viewport_native-scrollbar-hidden::-webkit-scrollbar,.kbq-scrollbar-viewport_native-scrollbar-hidden::-webkit-scrollbar-thumb{display:none}.kbq-scrollbar-track_hover:not(:active){transition:opacity var(--kbq-scrollbar-transition-duration) ease;opacity:0}.kbq-scrollbar-track_hover:not(:active).kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-scrollbar-track_hover:not(:active){animation:none;transition:none}}.kbq-scrollbar-viewport:hover>.kbq-scrollbar-track_hover,.kbq-scrollbar-track_hover.kbq-scrollbar-track_revealed{transition:opacity var(--kbq-scrollbar-transition-duration) ease;opacity:1}.kbq-scrollbar-viewport:hover>.kbq-scrollbar-track_hover.kbq-animations-disabled,.kbq-scrollbar-track_hover.kbq-scrollbar-track_revealed.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-scrollbar-viewport:hover>.kbq-scrollbar-track_hover,.kbq-scrollbar-track_hover.kbq-scrollbar-track_revealed{animation:none;transition:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ScrollbarStyleLoader, decorators: [{
|
|
120
|
+
type: Component,
|
|
121
|
+
args: [{ selector: 'scrollbar-style-loader', template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [":where(.kbq-scrollbar-viewport,.kbq-native-scrollbar){--kbq-scrollbar-thumb-min-size: var(--kbq-size-3xl);--kbq-scrollbar-thumb-gap: 3px;--kbq-scrollbar-track-size: 14px;--kbq-scrollbar-track-z-index: 1000;--kbq-scrollbar-transition-duration: .15s;--kbq-scrollbar-track-background: transparent}@media(prefers-reduced-motion:reduce){:where(.kbq-scrollbar-viewport,.kbq-native-scrollbar){--kbq-scrollbar-transition-duration: 0s}}\n", "@supports not selector(::-webkit-scrollbar){:where(.kbq-native-scrollbar:not(.kbq-native-scrollbar_descendants) *){scrollbar-color:auto}.kbq-native-scrollbar,.kbq-native-scrollbar_descendants *{scrollbar-color:var(--kbq-scrollbar-thumb-default-background) var(--kbq-scrollbar-track-background);scrollbar-width:auto}}.kbq-native-scrollbar::-webkit-scrollbar,.kbq-native-scrollbar_descendants ::-webkit-scrollbar{width:var(--kbq-scrollbar-track-size);height:var(--kbq-scrollbar-track-size);background-color:var(--kbq-scrollbar-track-background);cursor:default}.kbq-native-scrollbar::-webkit-scrollbar-track,.kbq-native-scrollbar::-webkit-scrollbar-corner,.kbq-native-scrollbar::-webkit-resizer,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-track,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-corner,.kbq-native-scrollbar_descendants ::-webkit-resizer{background-color:var(--kbq-scrollbar-track-background)}.kbq-native-scrollbar::-webkit-scrollbar-thumb,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb{box-sizing:border-box;border:var(--kbq-scrollbar-thumb-gap) solid transparent;border-radius:var(--kbq-size-border-radius);background-color:var(--kbq-scrollbar-thumb-default-background);background-clip:content-box}.kbq-native-scrollbar::-webkit-scrollbar-thumb:vertical,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb:vertical{min-height:calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2)}.kbq-native-scrollbar::-webkit-scrollbar-thumb:horizontal,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb:horizontal{min-width:calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2)}.kbq-native-scrollbar::-webkit-scrollbar-thumb:hover,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb:hover{background-color:var(--kbq-scrollbar-thumb-hover-background)}.kbq-native-scrollbar::-webkit-scrollbar-thumb:active,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-thumb:active{background-color:var(--kbq-scrollbar-thumb-active-background)}.kbq-native-scrollbar::-webkit-scrollbar-button,.kbq-native-scrollbar_descendants ::-webkit-scrollbar-button{display:none}\n", "@charset \"UTF-8\";.kbq-scrollbar-viewport{isolation:isolate}.kbq-scrollbar-viewport_native-scrollbar-hidden{scrollbar-width:none;-ms-overflow-style:none}.kbq-scrollbar-viewport_native-scrollbar-hidden::-webkit-scrollbar,.kbq-scrollbar-viewport_native-scrollbar-hidden::-webkit-scrollbar-thumb{display:none}.kbq-scrollbar-track_hover:not(:active){transition:opacity var(--kbq-scrollbar-transition-duration) ease;opacity:0}.kbq-scrollbar-track_hover:not(:active).kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-scrollbar-track_hover:not(:active){animation:none;transition:none}}.kbq-scrollbar-viewport:hover>.kbq-scrollbar-track_hover,.kbq-scrollbar-track_hover.kbq-scrollbar-track_revealed{transition:opacity var(--kbq-scrollbar-transition-duration) ease;opacity:1}.kbq-scrollbar-viewport:hover>.kbq-scrollbar-track_hover.kbq-animations-disabled,.kbq-scrollbar-track_hover.kbq-scrollbar-track_revealed.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-scrollbar-viewport:hover>.kbq-scrollbar-track_hover,.kbq-scrollbar-track_hover.kbq-scrollbar-track_revealed{animation:none;transition:none}}\n"] }]
|
|
122
|
+
}] });
|
|
123
|
+
/** Customizes the browser-rendered scrollbar of its host without replacing native scrolling. */
|
|
124
|
+
class KbqNativeScrollbar {
|
|
125
|
+
constructor() {
|
|
126
|
+
this.styleLoader = inject(_CdkPrivateStyleLoader);
|
|
127
|
+
this.options = inject(KBQ_NATIVE_SCROLLBAR_OPTIONS);
|
|
128
|
+
/**
|
|
129
|
+
* Whether browser-rendered scrollbars of descendant elements should also be customized.
|
|
130
|
+
* Defaults to {@link KBQ_NATIVE_SCROLLBAR_OPTIONS}.
|
|
131
|
+
*/
|
|
132
|
+
this.descendants = input(this.options.descendants, { ...(ngDevMode ? { debugName: "descendants" } : /* istanbul ignore next */ {}), alias: 'kbqNativeScrollbarDescendants',
|
|
133
|
+
transform: booleanAttribute });
|
|
134
|
+
this.styleLoader.load(ScrollbarStyleLoader);
|
|
76
135
|
}
|
|
77
|
-
|
|
78
|
-
|
|
136
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqNativeScrollbar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
137
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqNativeScrollbar, isStandalone: true, selector: "[kbqNativeScrollbar]", inputs: { descendants: { classPropertyName: "descendants", publicName: "kbqNativeScrollbarDescendants", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-native-scrollbar_descendants": "descendants()" }, classAttribute: "kbq-native-scrollbar" }, exportAs: ["kbqNativeScrollbar"], ngImport: i0 }); }
|
|
138
|
+
}
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqNativeScrollbar, decorators: [{
|
|
140
|
+
type: Directive,
|
|
141
|
+
args: [{
|
|
142
|
+
selector: '[kbqNativeScrollbar]',
|
|
143
|
+
host: {
|
|
144
|
+
class: 'kbq-native-scrollbar',
|
|
145
|
+
'[class.kbq-native-scrollbar_descendants]': 'descendants()'
|
|
146
|
+
},
|
|
147
|
+
exportAs: 'kbqNativeScrollbar'
|
|
148
|
+
}]
|
|
149
|
+
}], ctorParameters: () => [], propDecorators: { descendants: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqNativeScrollbarDescendants", required: false }] }] } });
|
|
150
|
+
/** Marks its host element as the custom scrollbar's scroll target, hiding its native scrollbar whenever a custom scrollbar track replaces it. */
|
|
151
|
+
class KbqScrollbarViewport {
|
|
152
|
+
// Read live because a bound consumer id is unavailable during construction.
|
|
153
|
+
get id() {
|
|
154
|
+
return this.getNativeElement().id || this.generatedId;
|
|
79
155
|
}
|
|
80
156
|
constructor() {
|
|
81
|
-
this.
|
|
82
|
-
this.
|
|
83
|
-
|
|
84
|
-
this.
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
this.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
this.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
157
|
+
this.styleLoader = inject(_CdkPrivateStyleLoader);
|
|
158
|
+
this.scrollable = inject(CdkScrollable);
|
|
159
|
+
this.appRef = inject(ApplicationRef);
|
|
160
|
+
this.environmentInjector = inject(EnvironmentInjector);
|
|
161
|
+
this.injector = inject(Injector);
|
|
162
|
+
this.idGenerator = inject(_IdGenerator);
|
|
163
|
+
this.options = inject(KBQ_SCROLLBAR_OPTIONS);
|
|
164
|
+
this.destroyRef = inject(DestroyRef);
|
|
165
|
+
this.scrollDispatcher = inject(ScrollDispatcher);
|
|
166
|
+
this.generatedId = this.idGenerator.getId('kbq-scrollbar-viewport-');
|
|
167
|
+
/** Visibility mode for this viewport's scrollbar. Defaults to the app-wide {@link KBQ_SCROLLBAR_OPTIONS}. */
|
|
168
|
+
this.mode = input(this.options.mode, { ...(ngDevMode ? { debugName: "mode" } : /* istanbul ignore next */ {}), alias: 'kbqScrollbarMode' });
|
|
169
|
+
/**
|
|
170
|
+
* How long the scroll-revealed `hover`-mode track stays visible after scrolling stops, in milliseconds.
|
|
171
|
+
* Defaults to the app-wide {@link KBQ_SCROLLBAR_OPTIONS}.
|
|
172
|
+
*/
|
|
173
|
+
this.hideDelay = input(this.options.hideDelay, { ...(ngDevMode ? { debugName: "hideDelay" } : /* istanbul ignore next */ {}), alias: 'kbqScrollbarHideDelay',
|
|
174
|
+
transform: numberAttribute });
|
|
175
|
+
this.trackRef = null;
|
|
176
|
+
this.flashSubject = new Subject();
|
|
177
|
+
/** Emits when {@link flashScrollIndicators} is called. */
|
|
178
|
+
this.flashes = this.flashSubject.asObservable();
|
|
179
|
+
/** Emits on every native `scroll` event of the viewport. Emits outside Angular's zone — see `CdkScrollable.elementScrolled`. */
|
|
180
|
+
this.scrollChanges = this.scrollable.elementScrolled();
|
|
181
|
+
this.styleLoader.load(ScrollbarStyleLoader);
|
|
182
|
+
effect(() => {
|
|
183
|
+
const mode = this.mode();
|
|
184
|
+
const hideDelay = this.hideDelay();
|
|
185
|
+
const showTrack = mode !== 'native' && mode !== 'hidden';
|
|
186
|
+
if (!showTrack) {
|
|
187
|
+
this.destroyTrack();
|
|
188
|
+
return;
|
|
97
189
|
}
|
|
98
|
-
|
|
99
|
-
|
|
190
|
+
if (!this.trackRef) {
|
|
191
|
+
this.trackRef = this.createTrack();
|
|
192
|
+
}
|
|
193
|
+
this.trackRef.setInput('mode', mode);
|
|
194
|
+
this.trackRef.setInput('hideDelay', hideDelay);
|
|
195
|
+
});
|
|
196
|
+
// ApplicationRef owns the track view, so the viewport must destroy it explicitly.
|
|
197
|
+
this.destroyRef.onDestroy(() => this.destroyTrack());
|
|
198
|
+
if (this.scrollable instanceof CdkVirtualScrollViewport) {
|
|
199
|
+
afterNextRender(() => this.dropDuplicateScrollableRegistration(), { injector: this.injector });
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Virtual scroll provides its own CdkScrollable while the host directive still registers another
|
|
203
|
+
// instance for the same element. Keep only the instance used by this directive.
|
|
204
|
+
dropDuplicateScrollableRegistration() {
|
|
205
|
+
const element = this.getNativeElement();
|
|
206
|
+
for (const scrollable of this.scrollDispatcher.getAncestorScrollContainers(element)) {
|
|
207
|
+
if (scrollable !== this.scrollable && scrollable.getElementRef().nativeElement === element) {
|
|
208
|
+
this.scrollDispatcher.deregister(scrollable);
|
|
100
209
|
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** Briefly reveals an overflowing `hover`-mode scrollbar. */
|
|
213
|
+
flashScrollIndicators() {
|
|
214
|
+
this.flashSubject.next();
|
|
215
|
+
}
|
|
216
|
+
/** Scrolls to the specified offsets. RTL-normalized — see `CdkScrollable.scrollTo`. */
|
|
217
|
+
scrollTo(options) {
|
|
218
|
+
this.scrollable.scrollTo(options);
|
|
219
|
+
}
|
|
220
|
+
/** Scrolls to the start of the vertical axis. */
|
|
221
|
+
scrollToTop(behavior) {
|
|
222
|
+
this.scrollTo({ top: 0, behavior });
|
|
223
|
+
}
|
|
224
|
+
/** Scrolls to the end of the vertical axis. */
|
|
225
|
+
scrollToBottom(behavior) {
|
|
226
|
+
this.scrollTo({ top: this.getNativeElement().scrollHeight, behavior });
|
|
227
|
+
}
|
|
228
|
+
/** Scrolls to the logical start of the horizontal axis — the right edge in RTL, left in LTR. */
|
|
229
|
+
scrollStart(behavior) {
|
|
230
|
+
this.scrollTo({ start: 0, behavior });
|
|
231
|
+
}
|
|
232
|
+
/** Scrolls to the logical end of the horizontal axis — the left edge in RTL, right in LTR. */
|
|
233
|
+
scrollEnd(behavior) {
|
|
234
|
+
this.scrollTo({ end: 0, behavior });
|
|
235
|
+
}
|
|
236
|
+
/** Scrolls `target` (an element, or a selector resolved against this viewport) into view. */
|
|
237
|
+
scrollToElement(target, options) {
|
|
238
|
+
const _target = typeof target === 'string' ? this.getNativeElement().querySelector(target) : target;
|
|
239
|
+
if (!_target)
|
|
240
|
+
return;
|
|
241
|
+
const { offsetTop, offsetLeft } = getElementOffset(this.getNativeElement(), _target);
|
|
242
|
+
this.scrollTo({
|
|
243
|
+
top: offsetTop - (options?.top ?? 0),
|
|
244
|
+
left: offsetLeft - (options?.left ?? 0),
|
|
245
|
+
behavior: options?.behavior
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/** Scrolls `target` to the center of the viewport. */
|
|
249
|
+
scrollIntoView(target, behavior) {
|
|
250
|
+
const { offsetHeight, offsetWidth } = target;
|
|
251
|
+
const { offsetTop, offsetLeft } = getElementOffset(this.getNativeElement(), target);
|
|
252
|
+
this.scrollTo({
|
|
253
|
+
top: offsetTop + offsetHeight / 2 - this.getNativeElement().clientHeight / 2,
|
|
254
|
+
left: offsetLeft + offsetWidth / 2 - this.getNativeElement().clientWidth / 2,
|
|
255
|
+
behavior
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
createTrack() {
|
|
259
|
+
// A ViewContainerRef-owned view is moved back to its anchor when virtual scroll rebuilds its DOM.
|
|
260
|
+
// ApplicationRef lets the track remain a direct child of the scrollable element.
|
|
261
|
+
const track = createComponent(KbqScrollbarTrack, {
|
|
262
|
+
environmentInjector: this.environmentInjector,
|
|
263
|
+
elementInjector: this.injector
|
|
101
264
|
});
|
|
265
|
+
this.appRef.attachView(track.hostView);
|
|
266
|
+
// The field may point to a replacement by the time the render callback runs.
|
|
267
|
+
afterNextRender(() => {
|
|
268
|
+
this.getNativeElement().insertBefore(track.location.nativeElement, this.getNativeElement().firstChild);
|
|
269
|
+
}, { injector: this.injector });
|
|
270
|
+
return track;
|
|
271
|
+
}
|
|
272
|
+
destroyTrack() {
|
|
273
|
+
if (!this.trackRef) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
this.appRef.detachView(this.trackRef.hostView);
|
|
277
|
+
this.trackRef.destroy();
|
|
278
|
+
this.trackRef = null;
|
|
102
279
|
}
|
|
103
|
-
|
|
104
|
-
|
|
280
|
+
/** The viewport's native scrollable element — the host this directive is applied to. */
|
|
281
|
+
getNativeElement() {
|
|
282
|
+
return this.scrollable.getElementRef().nativeElement;
|
|
105
283
|
}
|
|
106
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
107
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
284
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarViewport, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
285
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqScrollbarViewport, isStandalone: true, selector: "[kbqScrollbarViewport]", inputs: { mode: { classPropertyName: "mode", publicName: "kbqScrollbarMode", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "kbqScrollbarHideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-scrollbar-viewport_native-scrollbar-hidden": "mode() !== \"native\"", "attr.id": "id" }, classAttribute: "kbq-scrollbar-viewport" }, hostDirectives: [{ directive: i1.CdkScrollable }], ngImport: i0 }); }
|
|
108
286
|
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarViewport, decorators: [{
|
|
110
288
|
type: Directive,
|
|
111
289
|
args: [{
|
|
112
|
-
selector: '[
|
|
290
|
+
selector: '[kbqScrollbarViewport]',
|
|
291
|
+
host: {
|
|
292
|
+
class: 'kbq-scrollbar-viewport',
|
|
293
|
+
'[class.kbq-scrollbar-viewport_native-scrollbar-hidden]': 'mode() !== "native"',
|
|
294
|
+
'[attr.id]': 'id'
|
|
295
|
+
},
|
|
113
296
|
hostDirectives: [CdkScrollable]
|
|
114
297
|
}]
|
|
115
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
116
|
-
type: Input
|
|
117
|
-
}], events: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], defer: [{ type: i0.Input, args: [{ isSignal: true, alias: "defer", required: false }] }] } });
|
|
120
|
-
|
|
121
|
-
const filterEvents = (emits, events) => Object.keys(emits).reduce((obj, name) => {
|
|
122
|
-
const emitListener = emits[name];
|
|
123
|
-
const eventListener = events[name];
|
|
124
|
-
// merge & check listeners
|
|
125
|
-
obj[name] = [
|
|
126
|
-
emitListener,
|
|
127
|
-
...(Array.isArray(eventListener) ? eventListener : [eventListener]).filter(Boolean)
|
|
128
|
-
];
|
|
129
|
-
return obj;
|
|
130
|
-
}, {});
|
|
298
|
+
}], ctorParameters: () => [], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqScrollbarMode", required: false }] }], hideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqScrollbarHideDelay", required: false }] }] } });
|
|
131
299
|
/**
|
|
132
|
-
*
|
|
300
|
+
* Emits, at most once a frame, whenever the viewport's scrollable size may have changed.
|
|
301
|
+
*
|
|
302
|
+
* Nothing fires when `scrollHeight` itself changes, and polling it would keep an otherwise idle page
|
|
303
|
+
* rendering for as long as the viewport exists. What changes that size does fire something: the viewport
|
|
304
|
+
* or a box directly inside its content resizes; the DOM inside changes — nodes, text or attributes; an
|
|
305
|
+
* image or a font loads; a transition or an animation ends.
|
|
306
|
+
*
|
|
307
|
+
* What still escapes — a style applied from outside the viewport that grows only the content of an
|
|
308
|
+
* inline element, a transform reaching past the content — is caught once the viewport is hovered or
|
|
309
|
+
* focused, and the track also re-measures whenever the viewport scrolls, which it only does once there
|
|
310
|
+
* is something to scroll.
|
|
133
311
|
*/
|
|
134
|
-
class
|
|
312
|
+
class KbqScrollbarContentObserver {
|
|
135
313
|
constructor() {
|
|
136
|
-
this.
|
|
137
|
-
this.
|
|
138
|
-
|
|
139
|
-
this.
|
|
140
|
-
this.
|
|
141
|
-
|
|
142
|
-
this.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
this.
|
|
149
|
-
/** Event triggered when options or event listeners updated */
|
|
150
|
-
this.onUpdate = new EventEmitter();
|
|
151
|
-
/** Event triggered when scrollbar instance destroyed */
|
|
152
|
-
this.onDestroy = new EventEmitter();
|
|
153
|
-
this.onScroll = new EventEmitter();
|
|
154
|
-
this.injector = inject(Injector);
|
|
155
|
-
}
|
|
156
|
-
get element() {
|
|
157
|
-
return this.targetElement.nativeElement;
|
|
314
|
+
this.viewport = inject(KbqScrollbarViewport);
|
|
315
|
+
this.viewportElement = this.viewport.getNativeElement();
|
|
316
|
+
this.document = inject(DOCUMENT);
|
|
317
|
+
this.resizeObserver = inject(SharedResizeObserver);
|
|
318
|
+
this.mutationObserverFactory = inject(MutationObserverFactory);
|
|
319
|
+
this.nextFrame = nextAnimationFrame();
|
|
320
|
+
this.changes = merge(this.resizeObserver.observe(this.viewportElement), this.domChanges(), this.document.fonts ? fromEvent(this.document.fonts, 'loadingdone') : EMPTY,
|
|
321
|
+
// `load` does not bubble, so it is caught on its way down. The other two end a change that a
|
|
322
|
+
// mutation only started: content transitioning open, an element animating in.
|
|
323
|
+
merge(...['load', 'transitionend', 'animationend'].map((type) => fromEvent(this.viewportElement, type, { capture: true }))).pipe(filter(({ target }) => !this.isInsideTrack(target))), fromEvent(this.viewportElement, 'pointerenter'), fromEvent(this.viewportElement, 'focusin'), this.viewport.flashes).pipe(
|
|
324
|
+
// Ahead of the audit, which holds the last value until the frame — and no frame comes while the tab
|
|
325
|
+
// is hidden, so a batch of removed nodes would stay reachable all that time.
|
|
326
|
+
map(() => undefined), startWith(undefined), audit(() => this.nextFrame), zoneFree(), share());
|
|
158
327
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
328
|
+
// Mutations inside the viewport and resizes of the boxes directly inside its content, as one stream.
|
|
329
|
+
domChanges() {
|
|
330
|
+
return new Observable((subscriber) => {
|
|
331
|
+
const notify = () => subscriber.next();
|
|
332
|
+
const boxes = new Set();
|
|
333
|
+
// An observer of its own rather than CDK's SharedResizeObserver, which filters every batch once per
|
|
334
|
+
// observed element — quadratic for a list whose rows sit directly in the viewport.
|
|
335
|
+
const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(notify);
|
|
336
|
+
const syncBoxes = () => {
|
|
337
|
+
const current = new Set(this.getContentBoxes());
|
|
338
|
+
boxes.forEach((box) => {
|
|
339
|
+
if (!current.has(box)) {
|
|
340
|
+
resizeObserver?.unobserve(box);
|
|
341
|
+
boxes.delete(box);
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
current.forEach((box) => {
|
|
345
|
+
if (!boxes.has(box)) {
|
|
346
|
+
// The border box, so that a padding or border change counts as the resize it is.
|
|
347
|
+
resizeObserver?.observe(box, { box: 'border-box' });
|
|
348
|
+
boxes.add(box);
|
|
168
349
|
}
|
|
169
350
|
});
|
|
351
|
+
};
|
|
352
|
+
// Not CDK's ContentObserver: it emits inside NgZone, and every emission would then cost the whole
|
|
353
|
+
// application a change detection pass — usually a second one, right after the render that mutated.
|
|
354
|
+
const mutationObserver = this.mutationObserverFactory.create((records) => {
|
|
355
|
+
const relevant = records.filter((record) => this.affectsContent(record));
|
|
356
|
+
if (!relevant.length) {
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
const root = this.getContentRoot();
|
|
360
|
+
if (relevant.some(({ type, target }) => type === 'childList' && (target === root || target === this.viewportElement))) {
|
|
361
|
+
syncBoxes();
|
|
362
|
+
}
|
|
363
|
+
notify();
|
|
364
|
+
});
|
|
365
|
+
// Attributes too: a class, style or `hidden` toggle inside an inline element grows the content
|
|
366
|
+
// without resizing any box watched here, and it is how the viewport's own `overflow` changes.
|
|
367
|
+
mutationObserver?.observe(this.viewportElement, {
|
|
368
|
+
attributes: true,
|
|
369
|
+
childList: true,
|
|
370
|
+
characterData: true,
|
|
371
|
+
subtree: true
|
|
372
|
+
});
|
|
373
|
+
syncBoxes();
|
|
374
|
+
return () => {
|
|
375
|
+
mutationObserver?.disconnect();
|
|
376
|
+
resizeObserver?.disconnect();
|
|
377
|
+
};
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
// `kbq-scrollbar` keeps its content in a wrapper held at the viewport's full height, which never grows
|
|
381
|
+
// with what it holds, so the boxes that do are its children.
|
|
382
|
+
getContentRoot() {
|
|
383
|
+
return this.viewportElement.querySelector(':scope > .kbq-scrollbar__content') ?? this.viewportElement;
|
|
384
|
+
}
|
|
385
|
+
getContentBoxes() {
|
|
386
|
+
return Array.from(this.getContentRoot().children).filter((child) => child.localName !== TRACK_TAG);
|
|
387
|
+
}
|
|
388
|
+
// Skips what cannot change the scrollable size: tracks redrawing their bars, and Angular moving the
|
|
389
|
+
// comment anchors of `@if` and `@for` — the same comment-only records CDK's ContentObserver skips.
|
|
390
|
+
affectsContent({ type, target, addedNodes, removedNodes }) {
|
|
391
|
+
if (target.nodeType === Node.COMMENT_NODE || this.isInsideTrack(target)) {
|
|
392
|
+
return false;
|
|
393
|
+
}
|
|
394
|
+
if (type !== 'childList') {
|
|
395
|
+
return true;
|
|
396
|
+
}
|
|
397
|
+
return [...Array.from(addedNodes), ...Array.from(removedNodes)].some((node) => node.nodeType !== Node.COMMENT_NODE && !this.isInsideTrack(node));
|
|
398
|
+
}
|
|
399
|
+
// This viewport's track or a nested viewport's: tracks move their thumbs on every scroll and never
|
|
400
|
+
// change the size of the content around them. Recognised by structure, not by the element this
|
|
401
|
+
// observer happens to be provided on.
|
|
402
|
+
isInsideTrack(node) {
|
|
403
|
+
for (let current = node; current && current !== this.viewportElement; current = current.parentNode) {
|
|
404
|
+
if (current.localName === TRACK_TAG) {
|
|
405
|
+
return true;
|
|
170
406
|
}
|
|
171
|
-
}
|
|
407
|
+
}
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarContentObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
411
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarContentObserver }); }
|
|
412
|
+
}
|
|
413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarContentObserver, decorators: [{
|
|
414
|
+
type: Injectable
|
|
415
|
+
}] });
|
|
416
|
+
class KbqScrollbarThumb {
|
|
417
|
+
constructor() {
|
|
418
|
+
this.viewport = inject(KbqScrollbarViewport);
|
|
419
|
+
this.directionality = inject(Directionality);
|
|
420
|
+
this.viewportElement = this.viewport.getNativeElement();
|
|
421
|
+
this.nativeElement = kbqInjectNativeElement();
|
|
422
|
+
this.style = this.nativeElement.style;
|
|
423
|
+
this.contentChanges = inject(KbqScrollbarContentObserver).changes;
|
|
424
|
+
this.orientation = input.required(...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
425
|
+
merge(fromEvent(this.nativeElement.parentElement, 'mousedown').pipe(filter(({ target }) => target !== this.nativeElement), map((event) => this.getScrolled(event, 0.5, 0.5, this.isRtl()))), fromEvent(this.nativeElement, 'mousedown').pipe(zoneFree(), switchMap((event) => {
|
|
426
|
+
const { ownerDocument } = this.nativeElement;
|
|
427
|
+
const { top, left, height, width } = this.nativeElement.getBoundingClientRect();
|
|
428
|
+
const vertical = (event.clientY - top) / height;
|
|
429
|
+
const horizontal = (event.clientX - left) / width;
|
|
430
|
+
const rtl = this.isRtl();
|
|
431
|
+
return fromEvent(ownerDocument, 'mousemove').pipe(map((event) => this.getScrolled(event, vertical, horizontal, rtl)), takeUntil(fromEvent(ownerDocument, 'mouseup')));
|
|
432
|
+
})))
|
|
433
|
+
.pipe(takeUntilDestroyed())
|
|
434
|
+
.subscribe(([top, left]) => {
|
|
435
|
+
this.viewportElement.style.scrollBehavior = 'auto';
|
|
436
|
+
if (this.orientation() === 'horizontal') {
|
|
437
|
+
this.viewportElement.scrollLeft = left;
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
this.viewportElement.scrollTop = top;
|
|
441
|
+
}
|
|
442
|
+
this.viewportElement.style.scrollBehavior = '';
|
|
443
|
+
});
|
|
444
|
+
merge(this.contentChanges, this.viewport.scrollChanges)
|
|
445
|
+
.pipe(zoneFree(), map(() => this.getDimension()), takeUntilDestroyed())
|
|
446
|
+
.subscribe((dimension) => {
|
|
447
|
+
this.applyPosition(this.getPosition(dimension));
|
|
448
|
+
this.applyValueNow(this.getValueNow(dimension));
|
|
449
|
+
});
|
|
450
|
+
// Wait until Angular has applied `orientation` before calculating the initial ARIA value. Read and written in
|
|
451
|
+
// phases of their own, so that the thumbs rendered together read in one layout rather than each after another's
|
|
452
|
+
// write.
|
|
453
|
+
afterNextRender({
|
|
454
|
+
earlyRead: () => this.getDimension(),
|
|
455
|
+
write: (dimension) => {
|
|
456
|
+
this.applyPosition(this.getPosition(dimension));
|
|
457
|
+
this.applyValueNow(this.getValueNow(dimension));
|
|
458
|
+
}
|
|
459
|
+
});
|
|
172
460
|
}
|
|
173
|
-
|
|
174
|
-
|
|
461
|
+
// The DOM fallback covers bare or dynamically updated `dir` attributes that do not update Directionality.
|
|
462
|
+
isRtl() {
|
|
463
|
+
return this.directionality.value === 'rtl' || !!this.viewportElement.closest('[dir="rtl"]');
|
|
175
464
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
this.
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
465
|
+
getScrolled({ clientY, clientX }, offsetY, offsetX, rtl) {
|
|
466
|
+
const { offsetHeight, offsetWidth } = this.nativeElement;
|
|
467
|
+
const { top, left, right, width, height } = this.nativeElement.parentElement.getBoundingClientRect();
|
|
468
|
+
const inline = rtl ? right : left;
|
|
469
|
+
const multiplier = rtl ? -1 : 1;
|
|
470
|
+
const maxTop = this.viewportElement.scrollHeight - height;
|
|
471
|
+
const maxLeft = this.viewportElement.scrollWidth - width;
|
|
472
|
+
const scrolledTop = (clientY - top - offsetHeight * offsetY) / (height - offsetHeight);
|
|
473
|
+
const scrolledLeft = (clientX - inline - offsetWidth * offsetX * multiplier) / (width - offsetWidth);
|
|
474
|
+
return [maxTop * scrolledTop, maxLeft * scrolledLeft];
|
|
475
|
+
}
|
|
476
|
+
applyPosition(style) {
|
|
477
|
+
Object.assign(this.style, style);
|
|
478
|
+
}
|
|
479
|
+
applyValueNow(valueNow) {
|
|
480
|
+
this.nativeElement.setAttribute('aria-valuenow', `${valueNow}`);
|
|
481
|
+
}
|
|
482
|
+
getDimension() {
|
|
483
|
+
const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = this.viewportElement;
|
|
484
|
+
return { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth };
|
|
485
|
+
}
|
|
486
|
+
getPosition(dimension) {
|
|
487
|
+
const thumb = `${this.getThumbFraction(dimension) * 100}%`;
|
|
488
|
+
const view = `${this.getViewFraction(dimension) * 100}%`;
|
|
489
|
+
return this.orientation() === 'vertical'
|
|
490
|
+
? { top: thumb, height: view }
|
|
491
|
+
: { insetInlineStart: thumb, width: view };
|
|
492
|
+
}
|
|
493
|
+
getValueNow(dimension) {
|
|
494
|
+
const scrolledFraction = this.getScrolledFraction(dimension);
|
|
495
|
+
return Number.isNaN(scrolledFraction) ? 0 : Math.round(Math.abs(scrolledFraction) * 100);
|
|
496
|
+
}
|
|
497
|
+
getThumbFraction(dimension) {
|
|
498
|
+
const compensation = this.getCompensation(dimension) || this.getViewFraction(dimension);
|
|
499
|
+
return Math.abs(this.getScrolledFraction(dimension) * (1 - compensation));
|
|
500
|
+
}
|
|
501
|
+
getViewFraction(dimension) {
|
|
502
|
+
return this.orientation() === 'vertical'
|
|
503
|
+
? Math.ceil((dimension.clientHeight / dimension.scrollHeight) * 100) / 100
|
|
504
|
+
: Math.ceil((dimension.clientWidth / dimension.scrollWidth) * 100) / 100;
|
|
505
|
+
}
|
|
506
|
+
getScrolledFraction({ scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth }) {
|
|
507
|
+
return this.orientation() === 'vertical'
|
|
508
|
+
? scrollTop / (scrollHeight - clientHeight)
|
|
509
|
+
: scrollLeft / (scrollWidth - clientWidth);
|
|
510
|
+
}
|
|
511
|
+
getCompensation({ clientHeight, clientWidth, scrollWidth, scrollHeight }) {
|
|
512
|
+
if (((clientHeight * clientHeight) / scrollHeight > MIN_THUMB_BOX_SIZE && this.orientation() === 'vertical') ||
|
|
513
|
+
((clientWidth * clientWidth) / scrollWidth > MIN_THUMB_BOX_SIZE && this.orientation() === 'horizontal')) {
|
|
514
|
+
return 0;
|
|
194
515
|
}
|
|
195
|
-
|
|
516
|
+
return this.orientation() === 'vertical' ? MIN_THUMB_BOX_SIZE / clientHeight : MIN_THUMB_BOX_SIZE / clientWidth;
|
|
517
|
+
}
|
|
518
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarThumb, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
519
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqScrollbarThumb, isStandalone: true, selector: "[kbqScrollbarThumb]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "scrollbar" }, properties: { "attr.aria-orientation": "orientation()", "attr.aria-controls": "viewportElement.id", "attr.aria-valuemin": "0", "attr.aria-valuemax": "100" } }, exportAs: ["kbqScrollbarThumb"], ngImport: i0 }); }
|
|
520
|
+
}
|
|
521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarThumb, decorators: [{
|
|
522
|
+
type: Directive,
|
|
523
|
+
args: [{
|
|
524
|
+
selector: '[kbqScrollbarThumb]',
|
|
525
|
+
host: {
|
|
526
|
+
role: 'scrollbar',
|
|
527
|
+
'[attr.aria-orientation]': 'orientation()',
|
|
528
|
+
'[attr.aria-controls]': 'viewportElement.id',
|
|
529
|
+
'[attr.aria-valuemin]': '0',
|
|
530
|
+
'[attr.aria-valuemax]': '100'
|
|
531
|
+
},
|
|
532
|
+
exportAs: 'kbqScrollbarThumb'
|
|
533
|
+
}]
|
|
534
|
+
}], ctorParameters: () => [], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: true }] }] } });
|
|
535
|
+
class KbqScrollbarTrack {
|
|
536
|
+
constructor() {
|
|
537
|
+
this.viewport = inject(KbqScrollbarViewport);
|
|
538
|
+
this.viewportElement = this.viewport.getNativeElement();
|
|
539
|
+
this.window = inject(KBQ_WINDOW);
|
|
540
|
+
this.renderer = inject(Renderer2);
|
|
541
|
+
this.ngZone = inject(NgZone);
|
|
542
|
+
this.destroyRef = inject(DestroyRef);
|
|
543
|
+
this.resizeObserver = inject(SharedResizeObserver);
|
|
544
|
+
this.nativeElement = kbqInjectNativeElement();
|
|
545
|
+
this.scheduler = zoneFreeScheduler();
|
|
546
|
+
// Scrolling re-measures too: a viewport that scrolls has something to scroll, whatever the observers
|
|
547
|
+
// missed on the way there.
|
|
548
|
+
this.visibility = toSignal(merge(inject(KbqScrollbarContentObserver).changes, this.viewport.scrollChanges).pipe(map(() => this.scrollbars), startWith([false, false]), distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]), zoneOptimized()), { requireSync: true });
|
|
549
|
+
this.revealed = toSignal(merge(this.viewport.scrollChanges, this.viewport.flashes).pipe(
|
|
550
|
+
// Hoisted rather than injected inside switchMap, which runs outside an injection context.
|
|
551
|
+
// The scheduler is what keeps the hide timer out of Angular: `scrollChanges` already emits
|
|
552
|
+
// outside the zone, but `flashes` carries whatever zone its caller was in, and a caller
|
|
553
|
+
// inside Angular would otherwise leave NgZone unstable for the whole hideDelay.
|
|
554
|
+
switchMap(() => concat(of(true), timer(this.hideDelay(), this.scheduler).pipe(map(() => false)))), startWith(false), distinctUntilChanged(), zoneOptimized()), { requireSync: true });
|
|
555
|
+
/** Whether the bars, the thumbs and the hover-mode track appear and change color without motion. */
|
|
556
|
+
this.animationsDisabled = kbqAnimationsDisabled();
|
|
557
|
+
this.mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
558
|
+
this.hideDelay = input.required(...(ngDevMode ? [{ debugName: "hideDelay" }] : /* istanbul ignore next */ []));
|
|
559
|
+
this.resizeObserver
|
|
560
|
+
.observe(this.viewportElement)
|
|
561
|
+
.pipe(map(() => this.getViewportMetrics()), distinctUntilChanged((a, b) => a.blockSize === b.blockSize &&
|
|
562
|
+
a.inlineSize === b.inlineSize &&
|
|
563
|
+
a.paddingBlockStart === b.paddingBlockStart &&
|
|
564
|
+
a.paddingInlineStart === b.paddingInlineStart),
|
|
565
|
+
// Written once the observer's callback returns, still ahead of the frame: the callback hands one batch
|
|
566
|
+
// to the tracks of every viewport in it, and a write between them makes the next track's read force a
|
|
567
|
+
// layout. Outside Angular, as the write needs no change detection.
|
|
568
|
+
observeOn(zoneFreeScheduler(asapScheduler)), takeUntilDestroyed())
|
|
569
|
+
.subscribe((metrics) => this.applyGeometry(metrics));
|
|
570
|
+
}
|
|
571
|
+
// A drag released over sibling content produces a click on their common ancestor. Capture that
|
|
572
|
+
// single click after mouseup so scrollbar gestures cannot activate the host panel.
|
|
573
|
+
onBarPointerDown(event) {
|
|
574
|
+
event.preventDefault();
|
|
575
|
+
this.ngZone.runOutsideAngular(() => {
|
|
576
|
+
fromEvent(this.window, 'mouseup')
|
|
577
|
+
.pipe(take(1), switchMap(() => fromEvent(this.window, 'click', { capture: true }).pipe(take(1),
|
|
578
|
+
// Drop the listener on the next task when the gesture produces no click.
|
|
579
|
+
takeUntil(timer(0)))), takeUntilDestroyed(this.destroyRef))
|
|
580
|
+
.subscribe((click) => click.stopPropagation());
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
get scrollbars() {
|
|
584
|
+
const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.viewportElement;
|
|
585
|
+
// An overflowing axis is not necessarily a scrollable one: `overflow: hidden` still scrolls
|
|
586
|
+
// programmatically, so the size ratio alone would paint a bar — and hand over a draggable
|
|
587
|
+
// thumb — for an axis the browser itself refuses to give a scrollbar to.
|
|
588
|
+
const { overflowX, overflowY } = this.window.getComputedStyle(this.viewportElement);
|
|
589
|
+
return [
|
|
590
|
+
!NON_SCROLLABLE_OVERFLOW.includes(overflowY) && Math.ceil((clientHeight / scrollHeight) * 100) < 100,
|
|
591
|
+
!NON_SCROLLABLE_OVERFLOW.includes(overflowX) && Math.ceil((clientWidth / scrollWidth) * 100) < 100
|
|
592
|
+
];
|
|
593
|
+
}
|
|
594
|
+
getViewportMetrics() {
|
|
595
|
+
const element = this.viewportElement;
|
|
596
|
+
const style = this.window.getComputedStyle(element);
|
|
196
597
|
return {
|
|
197
|
-
|
|
198
|
-
|
|
598
|
+
blockSize: element.clientHeight,
|
|
599
|
+
inlineSize: element.clientWidth,
|
|
600
|
+
paddingBlockStart: parseFloat(style.paddingBlockStart) || 0,
|
|
601
|
+
paddingInlineStart: parseFloat(style.paddingInlineStart) || 0
|
|
199
602
|
};
|
|
200
603
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
604
|
+
// Start margins and insets move the sticky track from the content box to the padded scrollport;
|
|
605
|
+
// end margins cancel its layout contribution.
|
|
606
|
+
applyGeometry({ blockSize, inlineSize, paddingBlockStart, paddingInlineStart }) {
|
|
607
|
+
const setStyle = (property, value) => this.renderer.setStyle(this.nativeElement, property, coerceCssPixelValue(value));
|
|
608
|
+
// Clamped once and reused, so the size and the end margin cancel out by construction. Passing
|
|
609
|
+
// the unclamped value would break that on a zero-sized viewport: CSSOM silently drops the
|
|
610
|
+
// negative size while it accepts the positive margin paired with it, leaving the track a pixel
|
|
611
|
+
// tall inside a scrollport that has no room for it. That pixel changes `clientHeight`, which
|
|
612
|
+
// re-runs this method through the resize observer, which takes the pixel back — forever.
|
|
613
|
+
const trackBlockSize = Math.max(0, blockSize - 1);
|
|
614
|
+
const trackInlineSize = Math.max(0, inlineSize - 1);
|
|
615
|
+
setStyle('blockSize', trackBlockSize);
|
|
616
|
+
setStyle('marginBlockStart', -paddingBlockStart);
|
|
617
|
+
setStyle('marginBlockEnd', paddingBlockStart - trackBlockSize);
|
|
618
|
+
setStyle('insetBlockStart', -paddingBlockStart);
|
|
619
|
+
setStyle('minInlineSize', trackInlineSize);
|
|
620
|
+
setStyle('maxInlineSize', trackInlineSize);
|
|
621
|
+
setStyle('marginInlineStart', -paddingInlineStart);
|
|
622
|
+
setStyle('marginInlineEnd', paddingInlineStart - trackInlineSize);
|
|
623
|
+
setStyle('insetInlineStart', -paddingInlineStart);
|
|
624
|
+
}
|
|
625
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarTrack, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
626
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqScrollbarTrack, isStandalone: true, selector: "kbq-scrollbar-track", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "hideDelay", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.kbq-scrollbar-track_hover": "mode() === 'hover'", "class.kbq-scrollbar-track_revealed": "revealed()", "class.kbq-animations-disabled": "animationsDisabled" }, classAttribute: "kbq-scrollbar-track" }, providers: [KbqScrollbarContentObserver], ngImport: i0, template: `
|
|
627
|
+
@if (visibility()[0]) {
|
|
628
|
+
<div
|
|
629
|
+
animate.enter="kbq-scrollbar-track__bar_enter"
|
|
630
|
+
animate.leave="kbq-scrollbar-track__bar_leave"
|
|
631
|
+
class="kbq-scrollbar-track__bar kbq-scrollbar-track__bar_vertical"
|
|
632
|
+
[class.kbq-scrollbar-track__bar_has-horizontal]="visibility()[1]"
|
|
633
|
+
[class.kbq-animations-disabled]="animationsDisabled"
|
|
634
|
+
(mousedown)="onBarPointerDown($event)"
|
|
635
|
+
>
|
|
636
|
+
<div
|
|
637
|
+
kbqScrollbarThumb
|
|
638
|
+
orientation="vertical"
|
|
639
|
+
class="kbq-scrollbar-track__thumb"
|
|
640
|
+
[class.kbq-animations-disabled]="animationsDisabled"
|
|
641
|
+
></div>
|
|
642
|
+
</div>
|
|
643
|
+
}
|
|
644
|
+
@if (visibility()[1]) {
|
|
645
|
+
<div
|
|
646
|
+
animate.enter="kbq-scrollbar-track__bar_enter"
|
|
647
|
+
animate.leave="kbq-scrollbar-track__bar_leave"
|
|
648
|
+
class="kbq-scrollbar-track__bar kbq-scrollbar-track__bar_horizontal"
|
|
649
|
+
[class.kbq-scrollbar-track__bar_has-vertical]="visibility()[0]"
|
|
650
|
+
[class.kbq-animations-disabled]="animationsDisabled"
|
|
651
|
+
(mousedown)="onBarPointerDown($event)"
|
|
652
|
+
>
|
|
653
|
+
<div
|
|
654
|
+
kbqScrollbarThumb
|
|
655
|
+
orientation="horizontal"
|
|
656
|
+
class="kbq-scrollbar-track__thumb"
|
|
657
|
+
[class.kbq-animations-disabled]="animationsDisabled"
|
|
658
|
+
></div>
|
|
659
|
+
</div>
|
|
210
660
|
}
|
|
661
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";:host{position:sticky;z-index:var(--kbq-scrollbar-track-z-index, 1000);display:block;flex-shrink:0;pointer-events:none;overflow:hidden;color:var(--kbq-scrollbar-color, currentColor)}@keyframes kbq-scrollbar-fade{0%{opacity:0}to{opacity:1}}.kbq-scrollbar-track__bar{position:absolute;inset-inline-end:0;background:var(--kbq-scrollbar-track-background, transparent);pointer-events:auto}.kbq-scrollbar-track__bar_enter,.kbq-scrollbar-track__bar_leave{animation:kbq-scrollbar-fade var(--kbq-scrollbar-transition-duration) ease-in-out}.kbq-scrollbar-track__bar_enter.kbq-animations-disabled,.kbq-scrollbar-track__bar_leave.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-scrollbar-track__bar_enter,.kbq-scrollbar-track__bar_leave{animation:none;transition:none}}.kbq-scrollbar-track__bar_leave{animation-direction:reverse}.kbq-scrollbar-track__bar_vertical{inset-block:0;inline-size:var(--kbq-scrollbar-track-size)}.kbq-scrollbar-track__bar_horizontal{inset-block-end:0;inset-inline-start:0;block-size:var(--kbq-scrollbar-track-size)}.kbq-scrollbar-track__bar_has-horizontal{inset-block-end:var(--kbq-scrollbar-track-size)}.kbq-scrollbar-track__bar_has-vertical{inset-inline-end:var(--kbq-scrollbar-track-size)}.kbq-scrollbar-track__thumb{transition:background-color var(--kbq-scrollbar-transition-duration) ease;position:absolute;border:var(--kbq-scrollbar-thumb-gap) solid transparent;border-radius:var(--kbq-size-border-radius);box-sizing:border-box;background-color:var(--kbq-scrollbar-thumb-default-background);background-clip:content-box;cursor:default;-webkit-user-select:none;user-select:none;pointer-events:auto}.kbq-scrollbar-track__thumb.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-scrollbar-track__thumb{animation:none;transition:none}}.kbq-scrollbar-track__thumb:hover{background-color:var(--kbq-scrollbar-thumb-hover-background)}.kbq-scrollbar-track__thumb:active{background-color:var(--kbq-scrollbar-thumb-active-background)}.kbq-scrollbar-track__bar_vertical .kbq-scrollbar-track__thumb{inset-inline:0;min-block-size:calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2)}.kbq-scrollbar-track__bar_horizontal .kbq-scrollbar-track__thumb{inset-block:0;min-inline-size:calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2)}\n"], dependencies: [{ kind: "directive", type: KbqScrollbarThumb, selector: "[kbqScrollbarThumb]", inputs: ["orientation"], exportAs: ["kbqScrollbarThumb"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
662
|
+
}
|
|
663
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarTrack, decorators: [{
|
|
664
|
+
type: Component,
|
|
665
|
+
args: [{ selector: TRACK_TAG, imports: [KbqScrollbarThumb], template: `
|
|
666
|
+
@if (visibility()[0]) {
|
|
667
|
+
<div
|
|
668
|
+
animate.enter="kbq-scrollbar-track__bar_enter"
|
|
669
|
+
animate.leave="kbq-scrollbar-track__bar_leave"
|
|
670
|
+
class="kbq-scrollbar-track__bar kbq-scrollbar-track__bar_vertical"
|
|
671
|
+
[class.kbq-scrollbar-track__bar_has-horizontal]="visibility()[1]"
|
|
672
|
+
[class.kbq-animations-disabled]="animationsDisabled"
|
|
673
|
+
(mousedown)="onBarPointerDown($event)"
|
|
674
|
+
>
|
|
675
|
+
<div
|
|
676
|
+
kbqScrollbarThumb
|
|
677
|
+
orientation="vertical"
|
|
678
|
+
class="kbq-scrollbar-track__thumb"
|
|
679
|
+
[class.kbq-animations-disabled]="animationsDisabled"
|
|
680
|
+
></div>
|
|
681
|
+
</div>
|
|
682
|
+
}
|
|
683
|
+
@if (visibility()[1]) {
|
|
684
|
+
<div
|
|
685
|
+
animate.enter="kbq-scrollbar-track__bar_enter"
|
|
686
|
+
animate.leave="kbq-scrollbar-track__bar_leave"
|
|
687
|
+
class="kbq-scrollbar-track__bar kbq-scrollbar-track__bar_horizontal"
|
|
688
|
+
[class.kbq-scrollbar-track__bar_has-vertical]="visibility()[0]"
|
|
689
|
+
[class.kbq-animations-disabled]="animationsDisabled"
|
|
690
|
+
(mousedown)="onBarPointerDown($event)"
|
|
691
|
+
>
|
|
692
|
+
<div
|
|
693
|
+
kbqScrollbarThumb
|
|
694
|
+
orientation="horizontal"
|
|
695
|
+
class="kbq-scrollbar-track__thumb"
|
|
696
|
+
[class.kbq-animations-disabled]="animationsDisabled"
|
|
697
|
+
></div>
|
|
698
|
+
</div>
|
|
699
|
+
}
|
|
700
|
+
`, providers: [KbqScrollbarContentObserver], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
701
|
+
class: 'kbq-scrollbar-track',
|
|
702
|
+
'[class.kbq-scrollbar-track_hover]': "mode() === 'hover'",
|
|
703
|
+
'[class.kbq-scrollbar-track_revealed]': 'revealed()',
|
|
704
|
+
'[class.kbq-animations-disabled]': 'animationsDisabled'
|
|
705
|
+
}, styles: ["@charset \"UTF-8\";:host{position:sticky;z-index:var(--kbq-scrollbar-track-z-index, 1000);display:block;flex-shrink:0;pointer-events:none;overflow:hidden;color:var(--kbq-scrollbar-color, currentColor)}@keyframes kbq-scrollbar-fade{0%{opacity:0}to{opacity:1}}.kbq-scrollbar-track__bar{position:absolute;inset-inline-end:0;background:var(--kbq-scrollbar-track-background, transparent);pointer-events:auto}.kbq-scrollbar-track__bar_enter,.kbq-scrollbar-track__bar_leave{animation:kbq-scrollbar-fade var(--kbq-scrollbar-transition-duration) ease-in-out}.kbq-scrollbar-track__bar_enter.kbq-animations-disabled,.kbq-scrollbar-track__bar_leave.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-scrollbar-track__bar_enter,.kbq-scrollbar-track__bar_leave{animation:none;transition:none}}.kbq-scrollbar-track__bar_leave{animation-direction:reverse}.kbq-scrollbar-track__bar_vertical{inset-block:0;inline-size:var(--kbq-scrollbar-track-size)}.kbq-scrollbar-track__bar_horizontal{inset-block-end:0;inset-inline-start:0;block-size:var(--kbq-scrollbar-track-size)}.kbq-scrollbar-track__bar_has-horizontal{inset-block-end:var(--kbq-scrollbar-track-size)}.kbq-scrollbar-track__bar_has-vertical{inset-inline-end:var(--kbq-scrollbar-track-size)}.kbq-scrollbar-track__thumb{transition:background-color var(--kbq-scrollbar-transition-duration) ease;position:absolute;border:var(--kbq-scrollbar-thumb-gap) solid transparent;border-radius:var(--kbq-size-border-radius);box-sizing:border-box;background-color:var(--kbq-scrollbar-thumb-default-background);background-clip:content-box;cursor:default;-webkit-user-select:none;user-select:none;pointer-events:auto}.kbq-scrollbar-track__thumb.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-scrollbar-track__thumb{animation:none;transition:none}}.kbq-scrollbar-track__thumb:hover{background-color:var(--kbq-scrollbar-thumb-hover-background)}.kbq-scrollbar-track__thumb:active{background-color:var(--kbq-scrollbar-thumb-active-background)}.kbq-scrollbar-track__bar_vertical .kbq-scrollbar-track__thumb{inset-inline:0;min-block-size:calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2)}.kbq-scrollbar-track__bar_horizontal .kbq-scrollbar-track__thumb{inset-block:0;min-inline-size:calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2)}\n"] }]
|
|
706
|
+
}], ctorParameters: () => [], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: true }] }], hideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideDelay", required: true }] }] } });
|
|
707
|
+
/** Custom scrollbar wrapper: projects content and overlays a scrollbar track over it (created by its {@link KbqScrollbarViewport} host directive). */
|
|
708
|
+
class KbqScrollbar {
|
|
709
|
+
constructor() {
|
|
710
|
+
this.options = inject(KBQ_SCROLLBAR_OPTIONS);
|
|
711
|
+
this.viewport = inject(KbqScrollbarViewport);
|
|
712
|
+
/** Visibility mode for the scrollbar. Defaults to the app-wide {@link KBQ_SCROLLBAR_OPTIONS}. */
|
|
713
|
+
this.mode = input(this.options.mode, { ...(ngDevMode ? { debugName: "mode" } : /* istanbul ignore next */ {}), alias: 'kbqScrollbarMode' });
|
|
714
|
+
/**
|
|
715
|
+
* How long the scroll-revealed `hover`-mode track stays visible after scrolling stops, in milliseconds.
|
|
716
|
+
* Defaults to the app-wide {@link KBQ_SCROLLBAR_OPTIONS}.
|
|
717
|
+
*/
|
|
718
|
+
this.hideDelay = input(this.options.hideDelay, { ...(ngDevMode ? { debugName: "hideDelay" } : /* istanbul ignore next */ {}), alias: 'kbqScrollbarHideDelay',
|
|
719
|
+
transform: numberAttribute });
|
|
720
|
+
/** Emits on every native `scroll` event of the viewport. Emits outside Angular's zone — see `CdkScrollable.elementScrolled`. */
|
|
721
|
+
this.scrollChanges = this.viewport.scrollChanges;
|
|
722
|
+
}
|
|
723
|
+
/** The scrollbar's native scrollable element. */
|
|
724
|
+
getNativeElement() {
|
|
725
|
+
return this.viewport.getNativeElement();
|
|
726
|
+
}
|
|
727
|
+
/** Scrolls to the specified offsets. RTL-normalized — see `CdkScrollable.scrollTo`. */
|
|
728
|
+
scrollTo(options) {
|
|
729
|
+
this.viewport.scrollTo(options);
|
|
730
|
+
}
|
|
731
|
+
/** Scrolls to the start of the vertical axis. */
|
|
732
|
+
scrollToTop(behavior) {
|
|
733
|
+
this.viewport.scrollToTop(behavior);
|
|
734
|
+
}
|
|
735
|
+
/** Scrolls to the end of the vertical axis. */
|
|
736
|
+
scrollToBottom(behavior) {
|
|
737
|
+
this.viewport.scrollToBottom(behavior);
|
|
738
|
+
}
|
|
739
|
+
/** Scrolls to the logical start of the horizontal axis — the right edge in RTL, left in LTR. */
|
|
740
|
+
scrollStart(behavior) {
|
|
741
|
+
this.viewport.scrollStart(behavior);
|
|
742
|
+
}
|
|
743
|
+
/** Scrolls to the logical end of the horizontal axis — the left edge in RTL, right in LTR. */
|
|
744
|
+
scrollEnd(behavior) {
|
|
745
|
+
this.viewport.scrollEnd(behavior);
|
|
746
|
+
}
|
|
747
|
+
/** Scrolls `target` (an element, or a selector resolved against this scrollbar) into view. */
|
|
748
|
+
scrollToElement(target, options) {
|
|
749
|
+
this.viewport.scrollToElement(target, options);
|
|
750
|
+
}
|
|
751
|
+
/** Scrolls `target` to the center of the viewport. */
|
|
752
|
+
scrollIntoView(target, behavior) {
|
|
753
|
+
this.viewport.scrollIntoView(target, behavior);
|
|
754
|
+
}
|
|
755
|
+
/** Briefly reveals the scrollbar track — see {@link KbqScrollbarViewport.flashScrollIndicators}. */
|
|
756
|
+
flashScrollIndicators() {
|
|
757
|
+
this.viewport.flashScrollIndicators();
|
|
211
758
|
}
|
|
212
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
213
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
214
|
-
|
|
215
|
-
], viewQueries: [{ propertyName: "contentElement", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "kbqScrollbarDirective", first: true, predicate: ["content"], descendants: true, read: KbqScrollbarDirective, isSignal: true }], exportAs: ["kbqScrollbar"], ngImport: i0, template: `
|
|
216
|
-
<div
|
|
217
|
-
#content
|
|
218
|
-
data-overlayscrollbars-contents=""
|
|
219
|
-
kbqScrollbar
|
|
220
|
-
[options]="options()"
|
|
221
|
-
[events]="mergeEvents()"
|
|
222
|
-
[defer]="defer()"
|
|
223
|
-
>
|
|
759
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
760
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.25", type: KbqScrollbar, isStandalone: true, selector: "kbq-scrollbar", inputs: { mode: { classPropertyName: "mode", publicName: "kbqScrollbarMode", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "kbqScrollbarHideDelay", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["kbqScrollbar"], hostDirectives: [{ directive: KbqScrollbarViewport, inputs: ["kbqScrollbarMode", "kbqScrollbarMode", "kbqScrollbarHideDelay", "kbqScrollbarHideDelay"] }], ngImport: i0, template: `
|
|
761
|
+
<div class="kbq-scrollbar__content">
|
|
224
762
|
<ng-content />
|
|
225
763
|
</div>
|
|
226
|
-
`, isInline: true, styles: [".kbq-scrollbar-component .os-scrollbar-vertical{padding:var(--kbq-scrollbar-size-track-padding-vertical) var(--kbq-scrollbar-size-track-padding-horizontal);bottom:var(--kbq-scrollbar-size-track-dimension);width:var(--kbq-scrollbar-size-track-dimension)}.kbq-scrollbar-component .os-scrollbar-vertical .os-scrollbar-handle{transition:opacity .15s,background-color .15s,border-color .15s,width .15s;border:var(--kbq-scrollbar-size-track-padding-horizontal) solid;width:100%;min-height:var(--kbq-scrollbar-size-thumb-min-size)}.kbq-scrollbar-component .os-scrollbar-vertical:hover .os-scrollbar-handle,.kbq-scrollbar-component .os-scrollbar-vertical:active .os-scrollbar-handle{width:100%}.kbq-scrollbar-component .os-scrollbar-horizontal{padding:var(--kbq-scrollbar-size-track-padding-horizontal) var(--kbq-scrollbar-size-track-padding-vertical);right:var(--kbq-scrollbar-size-track-dimension);height:var(--kbq-scrollbar-size-track-dimension)}.kbq-scrollbar-component .os-scrollbar-horizontal .os-scrollbar-handle{transition:opacity .15s,background-color .15s,border-color .15s,height .15s;border:var(--kbq-scrollbar-size-track-padding-horizontal) solid;height:100%;min-width:var(--kbq-scrollbar-size-thumb-min-size)}.kbq-scrollbar-component .os-scrollbar-horizontal:hover .os-scrollbar-handle,.kbq-scrollbar-component .os-scrollbar-horizontal:active .os-scrollbar-handle{height:100%}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:before,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track{box-sizing:border-box;border-radius:var(--kbq-scrollbar-size-thumb-border-radius)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track{border-width:calc((var(--kbq-scrollbar-size-track-dimension) - var(--kbq-scrollbar-size-thumb-width)) / 4)!important;transition:opacity .15s,background-color .15s,border-color .15s}[data-overlayscrollbars-contents]:focus-visible{outline:none}.kbq-scrollbar-component.kbq-hover .os-scrollbar .os-scrollbar-handle:before,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:hover:before{border-color:var(--kbq-scrollbar-thumb-hover-background);background-color:var(--kbq-scrollbar-thumb-hover-background)}.kbq-scrollbar-component.kbq-active .os-scrollbar .os-scrollbar-handle:before,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:active:before{border-color:var(--kbq-scrollbar-thumb-active-background);background-color:var(--kbq-scrollbar-thumb-active-background)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:before{border-color:var(--kbq-scrollbar-thumb-default-background);background-color:var(--kbq-scrollbar-thumb-default-background)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle{border-style:solid;border-color:var(--kbq-scrollbar-track-default-border)!important;background-color:var(--kbq-scrollbar-track-default-background)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track:hover,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:hover{border-color:var(--kbq-scrollbar-track-hover-border);background:var(--kbq-scrollbar-track-hover-background)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track:active,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:active{border-color:var(--kbq-scrollbar-track-active-border);background:var(--kbq-scrollbar-track-active-background)}.os-size-observer,.os-size-observer-listener{scroll-behavior:auto!important;direction:inherit;pointer-events:none;overflow:hidden;visibility:hidden;box-sizing:border-box}.os-size-observer,.os-size-observer-listener,.os-size-observer-listener-item,.os-size-observer-listener-item-final{writing-mode:horizontal-tb;position:absolute;left:0;top:0}.os-size-observer{z-index:-1;contain:strict;display:flex;flex-direction:row;flex-wrap:nowrap;padding:inherit;border:inherit;box-sizing:inherit;margin:-133px;inset:0;transform:scale(.1)}.os-size-observer:before{content:\"\";flex:none;box-sizing:inherit;padding:10px;width:10px;height:10px}.os-size-observer-appear{animation:os-size-observer-appear-animation 1ms forwards}.os-size-observer-listener{box-sizing:border-box;position:relative;flex:auto;padding:inherit;border:inherit;margin:-133px;transform:scale(10)}.os-size-observer-listener.ltr{margin-right:-266px;margin-left:0}.os-size-observer-listener.rtl{margin-left:-266px;margin-right:0}.os-size-observer-listener:empty:before{content:\"\";width:100%;height:100%}.os-size-observer-listener:empty:before,.os-size-observer-listener>.os-size-observer-listener-item{display:block;position:relative;padding:inherit;border:inherit;box-sizing:content-box;flex:auto}.os-size-observer-listener-scroll{box-sizing:border-box;display:flex}.os-size-observer-listener-item{right:0;bottom:0;overflow:hidden;direction:ltr;flex:none}.os-size-observer-listener-item-final{transition:none}@keyframes os-size-observer-appear-animation{0%{cursor:auto}to{cursor:none}}.os-trinsic-observer{flex:none;box-sizing:border-box;position:relative;max-width:0;max-height:1px;padding:0;margin:0;border:none;overflow:hidden;z-index:-1;height:0;top:calc(100% + 1px);contain:strict}.os-trinsic-observer:not(:empty){height:calc(100% + 1px);top:-1px}.os-trinsic-observer:not(:empty)>.os-size-observer{width:1000%;height:1000%;min-height:1px;min-width:1px}.os-environment{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.os-environment div{width:200%;height:200%;margin:10px 0}.os-environment.os-environment-flexbox-glue{display:flex;flex-direction:row;flex-wrap:nowrap;height:auto;width:auto;min-height:200px;min-width:200px}.os-environment.os-environment-flexbox-glue div{flex:auto;width:auto;height:auto;max-height:100%;max-width:100%;margin:0}.os-environment.os-environment-flexbox-glue-max{max-height:200px}.os-environment.os-environment-flexbox-glue-max div{overflow:visible}.os-environment.os-environment-flexbox-glue-max div:before{content:\"\";display:block;height:999px;width:999px}.os-environment,[data-overlayscrollbars-viewport]{-ms-overflow-style:scrollbar!important}[data-overlayscrollbars-initialize],[data-overlayscrollbars~=scrollbarHidden],[data-overlayscrollbars-viewport~=scrollbarHidden],.os-environment-scrollbar-hidden{scrollbar-width:none!important}[data-overlayscrollbars-initialize]::-webkit-scrollbar,[data-overlayscrollbars-initialize]::-webkit-scrollbar-corner,[data-overlayscrollbars~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars~=scrollbarHidden]::-webkit-scrollbar-corner,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar-corner,.os-environment-scrollbar-hidden::-webkit-scrollbar,.os-environment-scrollbar-hidden::-webkit-scrollbar-corner{-webkit-appearance:none!important;appearance:none!important;display:none!important;width:0!important;height:0!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars]):not(html):not(body){overflow:auto}html[data-overlayscrollbars]{box-sizing:border-box;margin:0}html[data-overlayscrollbars~=body],html[data-overlayscrollbars~=body]>body{width:100%;height:100%}html[data-overlayscrollbars~=viewport]>body{overflow:visible}[data-overlayscrollbars~=host],[data-overlayscrollbars-padding]{display:flex;align-items:stretch!important;flex-direction:row!important;flex-wrap:nowrap!important}[data-overlayscrollbars-viewport][data-overlayscrollbars-viewport~=arrange]:before{content:\"\";position:absolute;pointer-events:none;z-index:-1;min-width:1px;min-height:1px;width:0;height:0}[data-overlayscrollbars-padding],[data-overlayscrollbars-viewport]{box-sizing:inherit;position:relative;flex:auto!important;height:auto;width:100%;min-width:0;padding:0;margin:0;border:none;z-index:0;overflow:hidden}[data-overlayscrollbars~=host],[data-overlayscrollbars~=viewport]{position:relative;overflow:hidden}[data-overlayscrollbars~=overflowVisible],[data-overlayscrollbars-padding~=overflowVisible],[data-overlayscrollbars-viewport~=overflowVisible]{overflow:visible}[data-overlayscrollbars-overflow-x=hidden]{overflow-x:hidden;overflow-y:hidden}[data-overlayscrollbars-overflow-x=scroll]{overflow-x:scroll}[data-overlayscrollbars-overflow-y=scroll]{overflow-y:scroll}[data-overlayscrollbars~=scrollbarPressed],[data-overlayscrollbars~=scrollbarPressed] [data-overlayscrollbars-viewport]{scroll-behavior:auto!important}[data-overlayscrollbars-content]{box-sizing:inherit}[data-overlayscrollbars-contents]:not([data-overlayscrollbars-padding]):not([data-overlayscrollbars-viewport]):not([data-overlayscrollbars-content]){display:contents}[data-overlayscrollbars-grid],[data-overlayscrollbars-grid] [data-overlayscrollbars-padding]{display:grid;grid-template:1fr/1fr}[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding],[data-overlayscrollbars-grid]>[data-overlayscrollbars-viewport],[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding]>[data-overlayscrollbars-viewport]{height:auto!important;width:auto!important}.os-scrollbar{box-sizing:border-box;contain:size layout;contain:size layout style;transition:opacity .15s,visibility .15s,top .15s,right .15s,bottom .15s,left .15s;pointer-events:none;position:absolute;opacity:0;visibility:hidden}body>.os-scrollbar{position:fixed;z-index:99999}.os-scrollbar-transitionless{transition:none}.os-scrollbar-track{position:relative;direction:ltr!important;padding:0!important;border:none!important}.os-scrollbar-handle{position:absolute}.os-scrollbar-track,.os-scrollbar-handle{pointer-events:none;width:100%;height:100%}.os-scrollbar.os-scrollbar-track-interactive .os-scrollbar-track,.os-scrollbar.os-scrollbar-handle-interactive .os-scrollbar-handle{pointer-events:auto;touch-action:none}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-scrollbar-rtl.os-scrollbar-horizontal{right:0}.os-scrollbar-rtl.os-scrollbar-vertical{right:auto;left:0}.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-auto-hide.os-scrollbar-auto-hide-hidden{opacity:0;visibility:hidden}.os-scrollbar-interaction.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-unusable,.os-scrollbar-unusable *,.os-scrollbar-wheel,.os-scrollbar-wheel *{pointer-events:none!important}.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important;transition:none!important}.os-scrollbar-horizontal .os-scrollbar-handle{bottom:0}.os-scrollbar-vertical .os-scrollbar-handle{right:0}.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle{right:auto;left:0}.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless.os-scrollbar-rtl{left:0;right:0}.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless.os-scrollbar-rtl{top:0;bottom:0}.os-scrollbar .os-scrollbar-handle:before{content:\"\";position:absolute;inset:0;display:block}[data-overlayscrollbars~=updating]>.os-scrollbar,.os-theme-none.os-scrollbar{display:none!important}\n", ":where(.kbq-scrollbar-component){--kbq-scrollbar-size-track-dimension: var(--kbq-size-l);--kbq-scrollbar-size-track-padding-vertical: var(--kbq-size-3xs);--kbq-scrollbar-size-track-padding-horizontal: var(--kbq-size-3xs);--kbq-scrollbar-size-thumb-width: var(--kbq-size-s);--kbq-scrollbar-size-thumb-min-size: var(--kbq-size-xl);--kbq-scrollbar-size-thumb-border-radius: var(--kbq-size-s);--kbq-scrollbar-thumb-default-background: var(--kbq-semantic-contrast-a3, var(--kbq-palette-grey-50-a32));--kbq-scrollbar-thumb-hover-background: var(--kbq-semantic-contrast-a4, var(--kbq-palette-grey-50-a48));--kbq-scrollbar-thumb-active-background: var(--kbq-semantic-contrast-a5, var(--kbq-palette-grey-20-a55));--kbq-scrollbar-thumb-disabled-background: var(--kbq-states-icon-disabled);--kbq-scrollbar-track-default-border: transparent;--kbq-scrollbar-track-default-background: transparent;--kbq-scrollbar-track-hover-border: transparent;--kbq-scrollbar-track-hover-background: transparent;--kbq-scrollbar-track-active-border: transparent;--kbq-scrollbar-track-active-background: transparent}:where(.kbq-dark .kbq-scrollbar-component){--kbq-scrollbar-thumb-default-background: var(--kbq-semantic-dark-contrast-a9, var(--kbq-palette-grey-50-a48));--kbq-scrollbar-thumb-hover-background: var(--kbq-semantic-dark-contrast-a10, var(--kbq-palette-grey-50-a60));--kbq-scrollbar-thumb-active-background: var(--kbq-semantic-dark-contrast-a11, var(--kbq-palette-grey-50-a80))}\n"], dependencies: [{ kind: "directive", type: KbqScrollbarDirective, selector: "[kbqScrollbar]", inputs: ["options", "events", "defer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
764
|
+
`, isInline: true, styles: [":host{position:relative;display:flex;flex:1;min-inline-size:0;min-block-size:0;max-block-size:100%;isolation:isolate;overflow:auto}.kbq-scrollbar__content{isolation:isolate;flex:1;flex-basis:auto;inline-size:100%;block-size:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
227
765
|
}
|
|
228
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
766
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbar, decorators: [{
|
|
229
767
|
type: Component,
|
|
230
|
-
args: [{ selector: 'kbq-scrollbar
|
|
231
|
-
<div
|
|
232
|
-
#content
|
|
233
|
-
data-overlayscrollbars-contents=""
|
|
234
|
-
kbqScrollbar
|
|
235
|
-
[options]="options()"
|
|
236
|
-
[events]="mergeEvents()"
|
|
237
|
-
[defer]="defer()"
|
|
238
|
-
>
|
|
768
|
+
args: [{ selector: 'kbq-scrollbar', template: `
|
|
769
|
+
<div class="kbq-scrollbar__content">
|
|
239
770
|
<ng-content />
|
|
240
771
|
</div>
|
|
241
|
-
`,
|
|
242
|
-
{
|
|
243
|
-
],
|
|
244
|
-
|
|
245
|
-
class: 'kbq-scrollbar-component'
|
|
246
|
-
}, exportAs: 'kbqScrollbar', styles: [".kbq-scrollbar-component .os-scrollbar-vertical{padding:var(--kbq-scrollbar-size-track-padding-vertical) var(--kbq-scrollbar-size-track-padding-horizontal);bottom:var(--kbq-scrollbar-size-track-dimension);width:var(--kbq-scrollbar-size-track-dimension)}.kbq-scrollbar-component .os-scrollbar-vertical .os-scrollbar-handle{transition:opacity .15s,background-color .15s,border-color .15s,width .15s;border:var(--kbq-scrollbar-size-track-padding-horizontal) solid;width:100%;min-height:var(--kbq-scrollbar-size-thumb-min-size)}.kbq-scrollbar-component .os-scrollbar-vertical:hover .os-scrollbar-handle,.kbq-scrollbar-component .os-scrollbar-vertical:active .os-scrollbar-handle{width:100%}.kbq-scrollbar-component .os-scrollbar-horizontal{padding:var(--kbq-scrollbar-size-track-padding-horizontal) var(--kbq-scrollbar-size-track-padding-vertical);right:var(--kbq-scrollbar-size-track-dimension);height:var(--kbq-scrollbar-size-track-dimension)}.kbq-scrollbar-component .os-scrollbar-horizontal .os-scrollbar-handle{transition:opacity .15s,background-color .15s,border-color .15s,height .15s;border:var(--kbq-scrollbar-size-track-padding-horizontal) solid;height:100%;min-width:var(--kbq-scrollbar-size-thumb-min-size)}.kbq-scrollbar-component .os-scrollbar-horizontal:hover .os-scrollbar-handle,.kbq-scrollbar-component .os-scrollbar-horizontal:active .os-scrollbar-handle{height:100%}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:before,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track{box-sizing:border-box;border-radius:var(--kbq-scrollbar-size-thumb-border-radius)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track{border-width:calc((var(--kbq-scrollbar-size-track-dimension) - var(--kbq-scrollbar-size-thumb-width)) / 4)!important;transition:opacity .15s,background-color .15s,border-color .15s}[data-overlayscrollbars-contents]:focus-visible{outline:none}.kbq-scrollbar-component.kbq-hover .os-scrollbar .os-scrollbar-handle:before,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:hover:before{border-color:var(--kbq-scrollbar-thumb-hover-background);background-color:var(--kbq-scrollbar-thumb-hover-background)}.kbq-scrollbar-component.kbq-active .os-scrollbar .os-scrollbar-handle:before,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:active:before{border-color:var(--kbq-scrollbar-thumb-active-background);background-color:var(--kbq-scrollbar-thumb-active-background)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:before{border-color:var(--kbq-scrollbar-thumb-default-background);background-color:var(--kbq-scrollbar-thumb-default-background)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle{border-style:solid;border-color:var(--kbq-scrollbar-track-default-border)!important;background-color:var(--kbq-scrollbar-track-default-background)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track:hover,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:hover{border-color:var(--kbq-scrollbar-track-hover-border);background:var(--kbq-scrollbar-track-hover-background)}.kbq-scrollbar-component .os-scrollbar .os-scrollbar-track:active,.kbq-scrollbar-component .os-scrollbar .os-scrollbar-handle:active{border-color:var(--kbq-scrollbar-track-active-border);background:var(--kbq-scrollbar-track-active-background)}.os-size-observer,.os-size-observer-listener{scroll-behavior:auto!important;direction:inherit;pointer-events:none;overflow:hidden;visibility:hidden;box-sizing:border-box}.os-size-observer,.os-size-observer-listener,.os-size-observer-listener-item,.os-size-observer-listener-item-final{writing-mode:horizontal-tb;position:absolute;left:0;top:0}.os-size-observer{z-index:-1;contain:strict;display:flex;flex-direction:row;flex-wrap:nowrap;padding:inherit;border:inherit;box-sizing:inherit;margin:-133px;inset:0;transform:scale(.1)}.os-size-observer:before{content:\"\";flex:none;box-sizing:inherit;padding:10px;width:10px;height:10px}.os-size-observer-appear{animation:os-size-observer-appear-animation 1ms forwards}.os-size-observer-listener{box-sizing:border-box;position:relative;flex:auto;padding:inherit;border:inherit;margin:-133px;transform:scale(10)}.os-size-observer-listener.ltr{margin-right:-266px;margin-left:0}.os-size-observer-listener.rtl{margin-left:-266px;margin-right:0}.os-size-observer-listener:empty:before{content:\"\";width:100%;height:100%}.os-size-observer-listener:empty:before,.os-size-observer-listener>.os-size-observer-listener-item{display:block;position:relative;padding:inherit;border:inherit;box-sizing:content-box;flex:auto}.os-size-observer-listener-scroll{box-sizing:border-box;display:flex}.os-size-observer-listener-item{right:0;bottom:0;overflow:hidden;direction:ltr;flex:none}.os-size-observer-listener-item-final{transition:none}@keyframes os-size-observer-appear-animation{0%{cursor:auto}to{cursor:none}}.os-trinsic-observer{flex:none;box-sizing:border-box;position:relative;max-width:0;max-height:1px;padding:0;margin:0;border:none;overflow:hidden;z-index:-1;height:0;top:calc(100% + 1px);contain:strict}.os-trinsic-observer:not(:empty){height:calc(100% + 1px);top:-1px}.os-trinsic-observer:not(:empty)>.os-size-observer{width:1000%;height:1000%;min-height:1px;min-width:1px}.os-environment{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.os-environment div{width:200%;height:200%;margin:10px 0}.os-environment.os-environment-flexbox-glue{display:flex;flex-direction:row;flex-wrap:nowrap;height:auto;width:auto;min-height:200px;min-width:200px}.os-environment.os-environment-flexbox-glue div{flex:auto;width:auto;height:auto;max-height:100%;max-width:100%;margin:0}.os-environment.os-environment-flexbox-glue-max{max-height:200px}.os-environment.os-environment-flexbox-glue-max div{overflow:visible}.os-environment.os-environment-flexbox-glue-max div:before{content:\"\";display:block;height:999px;width:999px}.os-environment,[data-overlayscrollbars-viewport]{-ms-overflow-style:scrollbar!important}[data-overlayscrollbars-initialize],[data-overlayscrollbars~=scrollbarHidden],[data-overlayscrollbars-viewport~=scrollbarHidden],.os-environment-scrollbar-hidden{scrollbar-width:none!important}[data-overlayscrollbars-initialize]::-webkit-scrollbar,[data-overlayscrollbars-initialize]::-webkit-scrollbar-corner,[data-overlayscrollbars~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars~=scrollbarHidden]::-webkit-scrollbar-corner,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar-corner,.os-environment-scrollbar-hidden::-webkit-scrollbar,.os-environment-scrollbar-hidden::-webkit-scrollbar-corner{-webkit-appearance:none!important;appearance:none!important;display:none!important;width:0!important;height:0!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars]):not(html):not(body){overflow:auto}html[data-overlayscrollbars]{box-sizing:border-box;margin:0}html[data-overlayscrollbars~=body],html[data-overlayscrollbars~=body]>body{width:100%;height:100%}html[data-overlayscrollbars~=viewport]>body{overflow:visible}[data-overlayscrollbars~=host],[data-overlayscrollbars-padding]{display:flex;align-items:stretch!important;flex-direction:row!important;flex-wrap:nowrap!important}[data-overlayscrollbars-viewport][data-overlayscrollbars-viewport~=arrange]:before{content:\"\";position:absolute;pointer-events:none;z-index:-1;min-width:1px;min-height:1px;width:0;height:0}[data-overlayscrollbars-padding],[data-overlayscrollbars-viewport]{box-sizing:inherit;position:relative;flex:auto!important;height:auto;width:100%;min-width:0;padding:0;margin:0;border:none;z-index:0;overflow:hidden}[data-overlayscrollbars~=host],[data-overlayscrollbars~=viewport]{position:relative;overflow:hidden}[data-overlayscrollbars~=overflowVisible],[data-overlayscrollbars-padding~=overflowVisible],[data-overlayscrollbars-viewport~=overflowVisible]{overflow:visible}[data-overlayscrollbars-overflow-x=hidden]{overflow-x:hidden;overflow-y:hidden}[data-overlayscrollbars-overflow-x=scroll]{overflow-x:scroll}[data-overlayscrollbars-overflow-y=scroll]{overflow-y:scroll}[data-overlayscrollbars~=scrollbarPressed],[data-overlayscrollbars~=scrollbarPressed] [data-overlayscrollbars-viewport]{scroll-behavior:auto!important}[data-overlayscrollbars-content]{box-sizing:inherit}[data-overlayscrollbars-contents]:not([data-overlayscrollbars-padding]):not([data-overlayscrollbars-viewport]):not([data-overlayscrollbars-content]){display:contents}[data-overlayscrollbars-grid],[data-overlayscrollbars-grid] [data-overlayscrollbars-padding]{display:grid;grid-template:1fr/1fr}[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding],[data-overlayscrollbars-grid]>[data-overlayscrollbars-viewport],[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding]>[data-overlayscrollbars-viewport]{height:auto!important;width:auto!important}.os-scrollbar{box-sizing:border-box;contain:size layout;contain:size layout style;transition:opacity .15s,visibility .15s,top .15s,right .15s,bottom .15s,left .15s;pointer-events:none;position:absolute;opacity:0;visibility:hidden}body>.os-scrollbar{position:fixed;z-index:99999}.os-scrollbar-transitionless{transition:none}.os-scrollbar-track{position:relative;direction:ltr!important;padding:0!important;border:none!important}.os-scrollbar-handle{position:absolute}.os-scrollbar-track,.os-scrollbar-handle{pointer-events:none;width:100%;height:100%}.os-scrollbar.os-scrollbar-track-interactive .os-scrollbar-track,.os-scrollbar.os-scrollbar-handle-interactive .os-scrollbar-handle{pointer-events:auto;touch-action:none}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-scrollbar-rtl.os-scrollbar-horizontal{right:0}.os-scrollbar-rtl.os-scrollbar-vertical{right:auto;left:0}.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-auto-hide.os-scrollbar-auto-hide-hidden{opacity:0;visibility:hidden}.os-scrollbar-interaction.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-unusable,.os-scrollbar-unusable *,.os-scrollbar-wheel,.os-scrollbar-wheel *{pointer-events:none!important}.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important;transition:none!important}.os-scrollbar-horizontal .os-scrollbar-handle{bottom:0}.os-scrollbar-vertical .os-scrollbar-handle{right:0}.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle{right:auto;left:0}.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless.os-scrollbar-rtl{left:0;right:0}.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless.os-scrollbar-rtl{top:0;bottom:0}.os-scrollbar .os-scrollbar-handle:before{content:\"\";position:absolute;inset:0;display:block}[data-overlayscrollbars~=updating]>.os-scrollbar,.os-theme-none.os-scrollbar{display:none!important}\n", ":where(.kbq-scrollbar-component){--kbq-scrollbar-size-track-dimension: var(--kbq-size-l);--kbq-scrollbar-size-track-padding-vertical: var(--kbq-size-3xs);--kbq-scrollbar-size-track-padding-horizontal: var(--kbq-size-3xs);--kbq-scrollbar-size-thumb-width: var(--kbq-size-s);--kbq-scrollbar-size-thumb-min-size: var(--kbq-size-xl);--kbq-scrollbar-size-thumb-border-radius: var(--kbq-size-s);--kbq-scrollbar-thumb-default-background: var(--kbq-semantic-contrast-a3, var(--kbq-palette-grey-50-a32));--kbq-scrollbar-thumb-hover-background: var(--kbq-semantic-contrast-a4, var(--kbq-palette-grey-50-a48));--kbq-scrollbar-thumb-active-background: var(--kbq-semantic-contrast-a5, var(--kbq-palette-grey-20-a55));--kbq-scrollbar-thumb-disabled-background: var(--kbq-states-icon-disabled);--kbq-scrollbar-track-default-border: transparent;--kbq-scrollbar-track-default-background: transparent;--kbq-scrollbar-track-hover-border: transparent;--kbq-scrollbar-track-hover-background: transparent;--kbq-scrollbar-track-active-border: transparent;--kbq-scrollbar-track-active-background: transparent}:where(.kbq-dark .kbq-scrollbar-component){--kbq-scrollbar-thumb-default-background: var(--kbq-semantic-dark-contrast-a9, var(--kbq-palette-grey-50-a48));--kbq-scrollbar-thumb-hover-background: var(--kbq-semantic-dark-contrast-a10, var(--kbq-palette-grey-50-a60));--kbq-scrollbar-thumb-active-background: var(--kbq-semantic-dark-contrast-a11, var(--kbq-palette-grey-50-a80))}\n"] }]
|
|
247
|
-
}], propDecorators: { contentElement: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], kbqScrollbarDirective: [{ type: i0.ViewChild, args: ['content', { ...{ read: KbqScrollbarDirective }, isSignal: true }] }], initializationTarget: [{ type: i0.Input, args: [{ isSignal: true, alias: "initializationTarget", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], events: [{ type: i0.Input, args: [{ isSignal: true, alias: "events", required: false }] }], defer: [{ type: i0.Input, args: [{ isSignal: true, alias: "defer", required: false }] }], onInitialize: [{
|
|
248
|
-
type: Output
|
|
249
|
-
}], onUpdate: [{
|
|
250
|
-
type: Output
|
|
251
|
-
}], onDestroy: [{
|
|
252
|
-
type: Output
|
|
253
|
-
}], onScroll: [{
|
|
254
|
-
type: Output
|
|
255
|
-
}] } });
|
|
772
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [
|
|
773
|
+
{ directive: KbqScrollbarViewport, inputs: ['kbqScrollbarMode', 'kbqScrollbarHideDelay'] }
|
|
774
|
+
], exportAs: 'kbqScrollbar', styles: [":host{position:relative;display:flex;flex:1;min-inline-size:0;min-block-size:0;max-block-size:100%;isolation:isolate;overflow:auto}.kbq-scrollbar__content{isolation:isolate;flex:1;flex-basis:auto;inline-size:100%;block-size:100%}\n"] }]
|
|
775
|
+
}], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqScrollbarMode", required: false }] }], hideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqScrollbarHideDelay", required: false }] }] } });
|
|
256
776
|
|
|
257
777
|
const COMPONENTS = [
|
|
778
|
+
KbqNativeScrollbar,
|
|
258
779
|
KbqScrollbar,
|
|
259
|
-
|
|
780
|
+
KbqScrollbarViewport
|
|
260
781
|
];
|
|
782
|
+
/** @docs-private */
|
|
261
783
|
class KbqScrollbarModule {
|
|
262
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
263
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
784
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
785
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarModule, imports: [KbqNativeScrollbar,
|
|
786
|
+
KbqScrollbar,
|
|
787
|
+
KbqScrollbarViewport], exports: [KbqNativeScrollbar,
|
|
788
|
+
KbqScrollbar,
|
|
789
|
+
KbqScrollbarViewport] }); }
|
|
790
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarModule }); }
|
|
267
791
|
}
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
792
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqScrollbarModule, decorators: [{
|
|
269
793
|
type: NgModule,
|
|
270
794
|
args: [{
|
|
271
795
|
imports: COMPONENTS,
|
|
272
|
-
providers: [KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER],
|
|
273
796
|
exports: COMPONENTS
|
|
274
797
|
}]
|
|
275
798
|
}] });
|
|
@@ -278,5 +801,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
278
801
|
* Generated bundle index. Do not edit.
|
|
279
802
|
*/
|
|
280
803
|
|
|
281
|
-
export {
|
|
804
|
+
export { KBQ_NATIVE_SCROLLBAR_OPTIONS, KBQ_SCROLLBAR_OPTIONS, KbqNativeScrollbar, KbqScrollbar, KbqScrollbarModule, KbqScrollbarViewport, kbqNativeScrollbarOptionsProvider, kbqScrollbarOptionsProvider };
|
|
282
805
|
//# sourceMappingURL=koobiq-components-scrollbar.mjs.map
|