@koobiq/components 20.4.1 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +755 -601
- 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 +2810 -2538
- 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 +366 -136
- 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 +486 -165
- 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 +719 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1506 -558
- 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 +399 -7
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.js +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.js +60 -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.js +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.js +54 -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 +3 -0
- package/schematics/migrations/alert-signals/index.js +70 -203
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.js +150 -0
- package/schematics/migrations/angular-animations-removal/index.js +20 -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.js +136 -0
- package/schematics/migrations/app-switcher-signals/index.js +365 -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 +1 -1
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.js +149 -0
- package/schematics/migrations/autocomplete-signals/index.js +706 -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.js +109 -0
- package/schematics/migrations/badge-signals/index.js +693 -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.js +136 -0
- package/schematics/migrations/button-state-and-styles/index.js +220 -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.js +106 -0
- package/schematics/migrations/button-supported-colors/index.js +260 -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.js +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.js +496 -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.js +88 -0
- package/schematics/migrations/button-truncation/index.js +269 -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.js +114 -0
- package/schematics/migrations/checkbox-signals/index.js +634 -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.js +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.js +59 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.js +121 -0
- package/schematics/migrations/code-block-signals/index.js +700 -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.js +131 -0
- package/schematics/migrations/color-signals/index.js +19 -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.js +27 -0
- package/schematics/migrations/core-mixins-removal/index.js +17 -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 +1 -1
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.js +49 -0
- package/schematics/migrations/datepicker-signals/index.js +17 -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 +1 -1
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.js +59 -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.js +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.js +211 -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.js +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.js +161 -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.js +44 -0
- package/schematics/migrations/dl-standalone-names/index.js +321 -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.js +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.js +288 -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.js +152 -0
- package/schematics/migrations/dropdown-signals/index.js +19 -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.js +85 -0
- package/schematics/migrations/empty-state-error-color/index.js +71 -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 +1 -1
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.js +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.js +60 -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.js +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.js +70 -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.js +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.js +177 -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 +1 -2
- package/schematics/migrations/filter-bar-signals/index.js +100 -195
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.js +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.js +61 -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.js +58 -0
- package/schematics/migrations/flag-inner-html/index.js +61 -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.js +288 -0
- package/schematics/migrations/form-field-signals/index.js +382 -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.js +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.js +64 -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 +1 -1
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.js +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.js +97 -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.js +135 -0
- package/schematics/migrations/input-number-surface/index.js +292 -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.js +30 -0
- package/schematics/migrations/input-signals/index.js +17 -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.js +19 -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.js +116 -0
- package/schematics/migrations/link-signals/index.js +415 -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.js +35 -0
- package/schematics/migrations/list-signals/index.js +17 -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.js +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.js +221 -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.js +101 -0
- package/schematics/migrations/loader-overlay-signals/index.js +697 -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 +1 -1
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.js +257 -0
- package/schematics/migrations/locale-configuration-providers/index.js +294 -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.js +42 -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.js +79 -0
- package/schematics/migrations/markdown-signals/index.js +639 -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.js +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.js +58 -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.js +132 -0
- package/schematics/migrations/modal-signals/index.js +19 -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.js +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.js +568 -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 +1 -1
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.js +66 -0
- package/schematics/migrations/notification-center-signals/index.js +61 -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.js +86 -0
- package/schematics/migrations/option-signals/index.js +19 -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.js +61 -0
- package/schematics/migrations/popover-leave-delay/index.js +54 -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.js +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.js +58 -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.js +83 -0
- package/schematics/migrations/progress-spinner-signals/index.js +694 -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.js +70 -0
- package/schematics/migrations/query-list-signals/index.js +17 -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.js +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.js +39 -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.js +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.js +215 -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.js +20 -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.js +99 -0
- package/schematics/migrations/select-signal-inputs/index.js +57 -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.js +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.js +57 -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.js +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.js +17 -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.js +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.js +57 -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.js +20 -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.js +88 -0
- package/schematics/migrations/state-saving-default/index.js +62 -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.js +66 -0
- package/schematics/migrations/table-cell-content/index.js +66 -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.js +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.js +65 -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.js +42 -0
- package/schematics/migrations/tag-list-cleaner/index.js +196 -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.js +190 -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.js +103 -0
- package/schematics/migrations/tags-signals/index.js +673 -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.js +121 -0
- package/schematics/migrations/textarea-signals/index.js +379 -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.js +139 -0
- package/schematics/migrations/time-range-title-for/index.js +163 -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.js +82 -0
- package/schematics/migrations/timepicker-signals/index.js +709 -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.js +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.js +64 -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.js +69 -0
- package/schematics/migrations/title-encapsulation/index.js +57 -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.js +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.js +53 -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.js +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.js +60 -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.js +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.js +84 -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.js +106 -0
- package/schematics/migrations/tree-select-signals/index.js +58 -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.js +123 -0
- package/schematics/migrations/tree-signals/index.js +54 -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.js +78 -0
- package/schematics/migrations/tree-state-saving-default/index.js +60 -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.js +78 -0
- package/schematics/migrations/username-pipe-injection/index.js +58 -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 +124 -77
- package/schematics/migrations/v20-upgrade/index.js +6 -213
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.js +1371 -0
- package/schematics/migrations/v21-upgrade/index.js +94 -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.js +29 -0
- package/schematics/migrations/zoneless-change-detection/index.js +20 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +392 -2
- package/schematics/ng-add/index.js +515 -14
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/deprecated-path-migration.js +61 -0
- package/schematics/utils/package-config.js +9 -105
- 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} +114 -79
- 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 +667 -0
- package/types/koobiq-components-tree.d.ts +1290 -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/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 -187
- 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/{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,54 +1,96 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CdkTrapFocus, A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY } from '@angular/cdk/a11y';
|
|
1
|
+
import { ConfigurableFocusTrapFactory, FocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, CdkTrapFocus, FocusMonitor } from '@angular/cdk/a11y';
|
|
3
2
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { viewChild,
|
|
5
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { viewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, InjectionToken, inject, input, booleanAttribute, EventEmitter, untracked, Directive, signal, output, effect, NgModule } from '@angular/core';
|
|
4
|
+
import { takeUntilDestroyed, outputFromObservable } from '@angular/core/rxjs-interop';
|
|
6
5
|
import * as i1 from '@koobiq/components/button';
|
|
7
6
|
import { KbqButtonModule } from '@koobiq/components/button';
|
|
8
|
-
import { KbqPopUp, KbqOverflowShadowContainer, KbqComponentColors, applyPopupMargins, KbqOverflowShadowTop, KbqOverflowShadowBottom, KbqPopUpTrigger, PopUpTriggers, PopUpSizes, POSITION_TO_CSS_MAP, kbqSiblingPopupProvider,
|
|
7
|
+
import { EmptyFocusTrapStrategy, KbqPopUp, kbqInjectA11yLocaleConfiguration, KbqOverflowShadowContainer, KbqComponentColors, applyPopupMargins, KbqOverflowShadowTop, KbqOverflowShadowBottom, kbqRepositionScrollStrategyFactory, KbqPopUpTrigger, KBQ_OVERLAY_LAYERS, PopUpTriggers, PopUpSizes, kbqOptionalNumberAttribute, PopUpPlacements, POSITION_TO_CSS_MAP, kbqSiblingPopupProvider, kbqInjectPopoverConfirmLocaleConfiguration } from '@koobiq/components/core';
|
|
9
8
|
import { NEVER, merge, Subject } from 'rxjs';
|
|
10
9
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
11
10
|
import { CdkObserveContent } from '@angular/cdk/observers';
|
|
12
|
-
import {
|
|
13
|
-
import { NgTemplateOutlet } from '@angular/common';
|
|
11
|
+
import { ScrollDispatcher } from '@angular/cdk/overlay';
|
|
12
|
+
import { NgTemplateOutlet, DOCUMENT } from '@angular/common';
|
|
14
13
|
import * as i2 from '@koobiq/components/icon';
|
|
15
14
|
import { KbqIconModule } from '@koobiq/components/icon';
|
|
16
|
-
|
|
17
|
-
const kbqPopoverAnimations = {
|
|
18
|
-
/** Animation that transitions a tooltip in and out. */
|
|
19
|
-
popoverState: trigger('state', [
|
|
20
|
-
state('initial', style({
|
|
21
|
-
opacity: 0,
|
|
22
|
-
transform: 'scale(1, 0.8)'
|
|
23
|
-
})),
|
|
24
|
-
transition('* => visible', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({
|
|
25
|
-
opacity: 1,
|
|
26
|
-
transform: 'scale(1, 1)'
|
|
27
|
-
}))),
|
|
28
|
-
transition('* => hidden', animate('100ms linear', style({ opacity: 0 })))
|
|
29
|
-
])
|
|
30
|
-
};
|
|
15
|
+
import { KbqScrollbarViewport } from '@koobiq/components/scrollbar';
|
|
31
16
|
|
|
32
17
|
const defaultOffsetYWithArrow = 8;
|
|
18
|
+
/** Leave delay applied to a hover-triggered popover when `kbqLeaveDelay` is not bound. */
|
|
19
|
+
const defaultHoverLeaveDelay = 500;
|
|
20
|
+
/** Default `kbqPopoverBackdropClass`. */
|
|
21
|
+
const defaultBackdropClass = 'cdk-overlay-transparent-backdrop';
|
|
22
|
+
/** Debounce of the content-mutation observer that drives the scroll shadows, in milliseconds. */
|
|
23
|
+
const contentObserverDebounce = 15;
|
|
24
|
+
/** DOM event names the shared pop-up base records right before opening on a pointer or focus event. */
|
|
25
|
+
const passiveOpenEvents = ['mouseenter', 'focus'];
|
|
26
|
+
let nextUniqueId = 0;
|
|
27
|
+
/**
|
|
28
|
+
* Focus-trap wiring of a popover panel.
|
|
29
|
+
*
|
|
30
|
+
* Provided on the panel components rather than on `KbqPopoverModule`: both entries are injector-wide, so at
|
|
31
|
+
* module level they replaced the CDK inert strategy for every other focus trap in the importing injector.
|
|
32
|
+
*
|
|
33
|
+
* @docs-private
|
|
34
|
+
*/
|
|
35
|
+
const KBQ_POPOVER_FOCUS_TRAP_PROVIDERS = [
|
|
36
|
+
{ provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },
|
|
37
|
+
{ provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }
|
|
38
|
+
];
|
|
33
39
|
class KbqPopoverComponent extends KbqPopUp {
|
|
34
40
|
constructor() {
|
|
35
41
|
super(...arguments);
|
|
42
|
+
/** Accessible name for the icon-only close button. */
|
|
43
|
+
this.a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();
|
|
44
|
+
/** Debounce shared by the mutation observer and the scroll-shadow container (both expose `debounce`). */
|
|
45
|
+
this.contentObserverDebounce = contentObserverDebounce;
|
|
36
46
|
this.prefix = 'kbq-popover';
|
|
37
47
|
this.isTrapFocus = false;
|
|
38
48
|
this.hasCloseButton = false;
|
|
49
|
+
this.popoverElement = viewChild('popover', ...(ngDevMode ? [{ debugName: "popoverElement" }] : /* istanbul ignore next */ []));
|
|
39
50
|
this.cdkTrapFocus = viewChild.required(CdkTrapFocus);
|
|
40
51
|
/** @docs-private */
|
|
41
|
-
this.overflowContainer = viewChild(KbqOverflowShadowContainer, ...(ngDevMode ? [{ debugName: "overflowContainer" }] : []));
|
|
52
|
+
this.overflowContainer = viewChild(KbqOverflowShadowContainer, ...(ngDevMode ? [{ debugName: "overflowContainer" }] : /* istanbul ignore next */ []));
|
|
53
|
+
this.scrollbarViewport = viewChild(KbqScrollbarViewport, ...(ngDevMode ? [{ debugName: "scrollbarViewport" }] : /* istanbul ignore next */ []));
|
|
42
54
|
this.componentColors = KbqComponentColors;
|
|
43
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Panel element (`.kbq-popover`), not the component host.
|
|
58
|
+
*
|
|
59
|
+
* Deliberately shadows the injected `KbqPopUp.elementRef`: the base measures and decorates the visible
|
|
60
|
+
* panel, so both `applyPopupMargins` here and `setStickPosition`/`addEventListenerForHide` in the base
|
|
61
|
+
* must resolve to the same element. The confirm template carries the matching `#popover` reference.
|
|
62
|
+
*/
|
|
63
|
+
get elementRef() {
|
|
64
|
+
return this.popoverElement();
|
|
65
|
+
}
|
|
66
|
+
/** Id of the header text node, referenced by the panel's `aria-labelledby`. */
|
|
67
|
+
get headerId() {
|
|
68
|
+
return `${this.panelId}-header`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Whether the header can name the dialog. Only a string header renders a text node with an id to point
|
|
72
|
+
* `aria-labelledby` at; a template header is arbitrary markup, so those panels fall back to `ariaLabel`.
|
|
73
|
+
*/
|
|
74
|
+
get labelledByHeader() {
|
|
75
|
+
return !!this.header && !this.isTemplateRef(this.header);
|
|
76
|
+
}
|
|
44
77
|
ngAfterViewInit() {
|
|
45
78
|
this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {
|
|
46
79
|
if (this.offset !== null && state && this.elementRef) {
|
|
47
80
|
applyPopupMargins(this.renderer, this.elementRef.nativeElement, this.prefix, `${this.offset.toString()}px`);
|
|
48
81
|
this.setStickPosition();
|
|
49
82
|
}
|
|
83
|
+
// Every closing path ends here, and the panel is still in the DOM at this point, so this is the
|
|
84
|
+
// one place where focus can be handed back to the trigger instead of falling to `<body>`.
|
|
85
|
+
if (!state) {
|
|
86
|
+
this.trigger?.restoreFocus();
|
|
87
|
+
}
|
|
50
88
|
});
|
|
51
|
-
|
|
89
|
+
// A hover- or focus-triggered popover is dismissed by the pointer leaving it, so capturing the
|
|
90
|
+
// keyboard would strand focus on `<body>` when it auto-hides.
|
|
91
|
+
if (this.trigger?.capturesFocusOnOpen ?? true) {
|
|
92
|
+
this.cdkTrapFocus().focusTrap.focusFirstTabbableElement();
|
|
93
|
+
}
|
|
52
94
|
}
|
|
53
95
|
updateClassMap(placement, customClass, size) {
|
|
54
96
|
super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });
|
|
@@ -56,64 +98,100 @@ class KbqPopoverComponent extends KbqPopUp {
|
|
|
56
98
|
updateTrapFocus(isTrapFocus) {
|
|
57
99
|
this.isTrapFocus = isTrapFocus;
|
|
58
100
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
this.trigger
|
|
101
|
+
/** Closes the panel on `Escape` inside it, unless a control there spent the key closing a popup of its own. */
|
|
102
|
+
onEscape(event) {
|
|
103
|
+
if (event?.defaultPrevented || this.trigger?.preventClose)
|
|
104
|
+
return;
|
|
105
|
+
// Spent, so that a container closing on Escape, such as a modal around an overlay layer, stays open.
|
|
106
|
+
event?.preventDefault();
|
|
107
|
+
this.requestClose();
|
|
108
|
+
}
|
|
109
|
+
/** Handles a click on the close button. */
|
|
110
|
+
onClose() {
|
|
111
|
+
this.requestClose();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Closes the panel through its trigger, so that `kbqPopoverPreventClose` is honored and focus is restored
|
|
115
|
+
* the same way as on every other closing path.
|
|
116
|
+
*
|
|
117
|
+
* The component is exported and can be rendered without a trigger — `ngAfterViewInit` already allows for
|
|
118
|
+
* that — and such a panel has no `preventClose` to honor and no trigger to hand focus back to, so it hides
|
|
119
|
+
* itself rather than throwing on a keypress.
|
|
120
|
+
*/
|
|
121
|
+
requestClose() {
|
|
122
|
+
if (this.trigger) {
|
|
123
|
+
this.trigger.close();
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.hide(0);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Whether the scrollable content region needs its own tab stop and landmark (AXE
|
|
131
|
+
* `scrollable-region-focusable`). An unconditional `tabindex` would add a stop to every popover.
|
|
132
|
+
*/
|
|
133
|
+
isScrollableRegion(container) {
|
|
134
|
+
const { top, bottom } = container.overflow();
|
|
135
|
+
return top || bottom;
|
|
62
136
|
}
|
|
63
|
-
|
|
64
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.30", type: KbqPopoverComponent, isStandalone: true, selector: "kbq-popover-component", host: { listeners: { "keydown.esc": "onEscape()" } }, viewQueries: [{ propertyName: "cdkTrapFocus", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }, { propertyName: "overflowContainer", first: true, predicate: KbqOverflowShadowContainer, descendants: true, isSignal: true }, { propertyName: "elementRef", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n #popover\n class=\"kbq-popover\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n class=\"kbq-popover__content kbq-scrollbar\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"15\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (hasCloseButton && !header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container [ngTemplateOutlet]=\"closeButton\" />\n </div>\n }\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton && header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container [ngTemplateOutlet]=\"closeButton\" />\n </div>\n }\n\n <ng-template #closeButton>\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button kbq-button class=\"kbq-button_transparent\" [color]=\"componentColors.Contrast\" (click)=\"hide(0)\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </ng-template>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}@media(prefers-reduced-motion:reduce){.kbq-progress:after{animation:none}}.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top);--kbq-popover-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: KbqOverflowShadowContainer, selector: "[kbqOverflowShadowContainer]", inputs: ["debounce"], exportAs: ["kbqOverflowShadowContainer"] }, { kind: "directive", type: KbqOverflowShadowTop, selector: "[kbqOverflowShadowTop]", inputs: ["kbqOverflowShadowTop", "shadow"], exportAs: ["kbqOverflowShadowTop"] }, { kind: "directive", type: KbqOverflowShadowBottom, selector: "[kbqOverflowShadowBottom]", inputs: ["kbqOverflowShadowBottom", "shadow"], exportAs: ["kbqOverflowShadowBottom"] }], animations: [kbqPopoverAnimations.popoverState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
137
|
+
afterShowAnimation() {
|
|
138
|
+
this.scrollbarViewport()?.flashScrollIndicators();
|
|
139
|
+
}
|
|
140
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
141
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqPopoverComponent, isStandalone: true, selector: "kbq-popover-component", host: { listeners: { "keydown.esc": "onEscape($event)" } }, providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, viewQueries: [{ propertyName: "popoverElement", first: true, predicate: ["popover"], descendants: true, isSignal: true }, { propertyName: "cdkTrapFocus", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }, { propertyName: "overflowContainer", first: true, predicate: KbqOverflowShadowContainer, descendants: true, isSignal: true }, { propertyName: "scrollbarViewport", first: true, predicate: KbqScrollbarViewport, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!--\n The dialog role is dropped when nothing names the panel: a screen reader announces an unnamed dialog as\n just \"dialog\", and the `aria-dialog-name` audit fails it. A named panel keeps the role.\n-->\n<div\n #popover\n class=\"kbq-popover\"\n [attr.role]=\"labelledByHeader || ariaLabel ? 'dialog' : null\"\n [attr.aria-label]=\"labelledByHeader ? null : ariaLabel\"\n [attr.aria-labelledby]=\"labelledByHeader ? headerId : null\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\" [id]=\"headerId\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n kbqScrollbarViewport\n class=\"kbq-popover__content\"\n [attr.tabindex]=\"isScrollableRegion(popoverContent) ? 0 : null\"\n [attr.role]=\"isScrollableRegion(popoverContent) && labelledByHeader ? 'region' : null\"\n [attr.aria-labelledby]=\"isScrollableRegion(popoverContent) && labelledByHeader ? headerId : null\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"contentObserverDebounce\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton) {\n <div class=\"kbq-popover__close-container\" [class.kbq-popover__close-container_without-header]=\"!header\">\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button\n kbq-button\n class=\"kbq-button_transparent\"\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClose()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </div>\n }\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-inline-start:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-end-start-radius:0;border-end-end-radius:0;border-start-end-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){corner-shape:squircle;border-start-end-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){corner-shape:squircle;border-end-start-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-end-start-radius:0;border-end-end-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-start-end-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover{box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1;opacity:0;transform:scaleY(.8)}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover.kbq-popover_visible{opacity:1;transform:none;transition:opacity .12s cubic-bezier(0,0,.2,1),transform .12s cubic-bezier(0,0,.2,1)}.kbq-popover.kbq-popover_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-popover.kbq-popover_visible{animation:none;transition:none}}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover__container{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__close-container_without-header .kbq-popover__close{top:0;inset-inline-end:0;transform:translateY(-50%) translate(50%)}[dir=rtl] .kbq-popover__close-container_without-header .kbq-popover__close{transform:translateY(-50%) translate(-50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-inline-end:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);inset-inline-end:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-popover__close{corner-shape:squircle;border-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["aria-hidden", "iconSize", "autoColor", "kbq-icon"] }, { kind: "directive", type: KbqScrollbarViewport, selector: "[kbqScrollbarViewport]", inputs: ["kbqScrollbarMode", "kbqScrollbarHideDelay"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: KbqOverflowShadowContainer, selector: "[kbqOverflowShadowContainer]", inputs: ["debounce"], exportAs: ["kbqOverflowShadowContainer"] }, { kind: "directive", type: KbqOverflowShadowTop, selector: "[kbqOverflowShadowTop]", inputs: ["kbqOverflowShadowTop", "shadow"], exportAs: ["kbqOverflowShadowTop"] }, { kind: "directive", type: KbqOverflowShadowBottom, selector: "[kbqOverflowShadowBottom]", inputs: ["kbqOverflowShadowBottom", "shadow"], exportAs: ["kbqOverflowShadowBottom"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
65
142
|
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverComponent, decorators: [{
|
|
67
144
|
type: Component,
|
|
68
145
|
args: [{ selector: 'kbq-popover-component', imports: [
|
|
69
146
|
NgTemplateOutlet,
|
|
70
147
|
CdkObserveContent,
|
|
71
148
|
KbqButtonModule,
|
|
72
149
|
KbqIconModule,
|
|
150
|
+
KbqScrollbarViewport,
|
|
73
151
|
CdkTrapFocus,
|
|
74
152
|
KbqOverflowShadowContainer,
|
|
75
153
|
KbqOverflowShadowTop,
|
|
76
154
|
KbqOverflowShadowBottom
|
|
77
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
78
|
-
'(keydown.esc)': 'onEscape()'
|
|
79
|
-
}, animations: [kbqPopoverAnimations.popoverState], preserveWhitespaces: false, template: "<div\n #popover\n class=\"kbq-popover\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n class=\"kbq-popover__content kbq-scrollbar\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"15\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (hasCloseButton && !header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container [ngTemplateOutlet]=\"closeButton\" />\n </div>\n }\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton && header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container [ngTemplateOutlet]=\"closeButton\" />\n </div>\n }\n\n <ng-template #closeButton>\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button kbq-button class=\"kbq-button_transparent\" [color]=\"componentColors.Contrast\" (click)=\"hide(0)\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </ng-template>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}@media(prefers-reduced-motion:reduce){.kbq-progress:after{animation:none}}.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top);--kbq-popover-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"] }]
|
|
80
|
-
}], propDecorators: {
|
|
81
|
-
type: ViewChild,
|
|
82
|
-
args: ['popover']
|
|
83
|
-
}], cdkTrapFocus: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }], overflowContainer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => KbqOverflowShadowContainer), { isSignal: true }] }] } });
|
|
155
|
+
], providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
156
|
+
'(keydown.esc)': 'onEscape($event)'
|
|
157
|
+
}, preserveWhitespaces: false, template: "<!--\n The dialog role is dropped when nothing names the panel: a screen reader announces an unnamed dialog as\n just \"dialog\", and the `aria-dialog-name` audit fails it. A named panel keeps the role.\n-->\n<div\n #popover\n class=\"kbq-popover\"\n [attr.role]=\"labelledByHeader || ariaLabel ? 'dialog' : null\"\n [attr.aria-label]=\"labelledByHeader ? null : ariaLabel\"\n [attr.aria-labelledby]=\"labelledByHeader ? headerId : null\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\" [id]=\"headerId\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n kbqScrollbarViewport\n class=\"kbq-popover__content\"\n [attr.tabindex]=\"isScrollableRegion(popoverContent) ? 0 : null\"\n [attr.role]=\"isScrollableRegion(popoverContent) && labelledByHeader ? 'region' : null\"\n [attr.aria-labelledby]=\"isScrollableRegion(popoverContent) && labelledByHeader ? headerId : null\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"contentObserverDebounce\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton) {\n <div class=\"kbq-popover__close-container\" [class.kbq-popover__close-container_without-header]=\"!header\">\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button\n kbq-button\n class=\"kbq-button_transparent\"\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClose()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </div>\n }\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-inline-start:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-end-start-radius:0;border-end-end-radius:0;border-start-end-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){corner-shape:squircle;border-start-end-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){corner-shape:squircle;border-end-start-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-end-start-radius:0;border-end-end-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-start-end-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover{box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1;opacity:0;transform:scaleY(.8)}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover.kbq-popover_visible{opacity:1;transform:none;transition:opacity .12s cubic-bezier(0,0,.2,1),transform .12s cubic-bezier(0,0,.2,1)}.kbq-popover.kbq-popover_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-popover.kbq-popover_visible{animation:none;transition:none}}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover__container{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__close-container_without-header .kbq-popover__close{top:0;inset-inline-end:0;transform:translateY(-50%) translate(50%)}[dir=rtl] .kbq-popover__close-container_without-header .kbq-popover__close{transform:translateY(-50%) translate(-50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-inline-end:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);inset-inline-end:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-popover__close{corner-shape:squircle;border-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"] }]
|
|
158
|
+
}], propDecorators: { popoverElement: [{ type: i0.ViewChild, args: ['popover', { isSignal: true }] }], cdkTrapFocus: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }], overflowContainer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => KbqOverflowShadowContainer), { isSignal: true }] }], scrollbarViewport: [{ type: i0.ViewChild, args: [i0.forwardRef(() => KbqScrollbarViewport), { isSignal: true }] }] } });
|
|
84
159
|
const KBQ_POPOVER_SCROLL_STRATEGY = new InjectionToken('kbq-popover-scroll-strategy', {
|
|
85
160
|
providedIn: 'root',
|
|
86
|
-
factory: () => kbqPopoverScrollStrategyFactory(inject(
|
|
161
|
+
factory: () => kbqPopoverScrollStrategyFactory(inject(ScrollDispatcher))
|
|
87
162
|
});
|
|
88
163
|
/** @docs-private */
|
|
89
|
-
function kbqPopoverScrollStrategyFactory(
|
|
90
|
-
return (
|
|
164
|
+
function kbqPopoverScrollStrategyFactory(scrollDispatcher) {
|
|
165
|
+
return kbqRepositionScrollStrategyFactory(scrollDispatcher, { scrollThrottle: 20 });
|
|
91
166
|
}
|
|
92
|
-
/**
|
|
167
|
+
/**
|
|
168
|
+
* Redundant to the root factory of the token; kept so an app can restore the default under its own override (#DS-2196).
|
|
169
|
+
*
|
|
170
|
+
* @docs-private
|
|
171
|
+
*/
|
|
93
172
|
const KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER = {
|
|
94
173
|
provide: KBQ_POPOVER_SCROLL_STRATEGY,
|
|
95
|
-
deps: [
|
|
174
|
+
deps: [ScrollDispatcher],
|
|
96
175
|
useFactory: kbqPopoverScrollStrategyFactory
|
|
97
176
|
};
|
|
98
|
-
/** Creates an error to be thrown if the user supplied an invalid popover position. */
|
|
99
|
-
function getKbqPopoverInvalidPositionError(position) {
|
|
100
|
-
return Error(`KbqPopover position "${position}" is invalid.`);
|
|
101
|
-
}
|
|
102
177
|
class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
103
178
|
constructor() {
|
|
104
179
|
super(...arguments);
|
|
105
|
-
this.overlayContainer = inject(OverlayContainer);
|
|
106
|
-
this.renderer = inject(Renderer2);
|
|
107
180
|
this.scrollStrategy = inject(KBQ_POPOVER_SCROLL_STRATEGY);
|
|
108
|
-
|
|
109
|
-
this.
|
|
181
|
+
this.focusMonitor = inject(FocusMonitor);
|
|
182
|
+
this.document = inject(DOCUMENT);
|
|
183
|
+
this.overlayLayers = inject(KBQ_OVERLAY_LAYERS);
|
|
184
|
+
/** Id of the panel this trigger controls, shared with `aria-controls`. */
|
|
185
|
+
this.panelId = `kbq-popover-${nextUniqueId++}`;
|
|
186
|
+
/**
|
|
187
|
+
* Input (`kbqPopoverHideIfNotInViewPort`) — whether the popover closes once its trigger scrolls out of the
|
|
188
|
+
* nearest scrollable ancestor. A bound `null` or `undefined` restores the default, `true`.
|
|
189
|
+
*/
|
|
190
|
+
this.popoverHideIfNotInViewPort = input(true, { ...(ngDevMode ? { debugName: "popoverHideIfNotInViewPort" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverHideIfNotInViewPort',
|
|
191
|
+
transform: (value) => (value == null ? true : booleanAttribute(value)) });
|
|
110
192
|
/** prevents closure by any event */
|
|
111
|
-
// TODO: Skipped for migration because:
|
|
112
|
-
// Your application code writes to the input. This prevents migration.
|
|
113
193
|
this.preventClose = false;
|
|
114
|
-
/**
|
|
115
|
-
// TODO: Skipped for migration because:
|
|
116
|
-
// Class of this input is referenced in the signature of another class.
|
|
194
|
+
/** Whether the header, content and footer keep their default paddings. Bound with `kbqPopoverDefaultPaddings`. */
|
|
117
195
|
this.defaultPaddings = true;
|
|
118
196
|
this._hasBackdrop = false;
|
|
119
197
|
this._trigger = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;
|
|
@@ -121,68 +199,181 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
121
199
|
this._context = null;
|
|
122
200
|
this._hasCloseButton = false;
|
|
123
201
|
this._closeOnScroll = null;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
this.backdropClass = 'cdk-overlay-transparent-backdrop';
|
|
127
|
-
// @TODO add realization for arrow (#DS-2514)
|
|
128
|
-
// TODO: Skipped for migration because:
|
|
129
|
-
// This input overrides a field from a superclass, while the superclass field
|
|
130
|
-
// is not migrated.
|
|
202
|
+
this._backdropClass = defaultBackdropClass;
|
|
203
|
+
/** Input (`kbqPopoverArrow`) — renders the arrow pointing at the trigger. */
|
|
131
204
|
this.arrow = true;
|
|
132
|
-
|
|
133
|
-
// Class of this input is referenced in the signature of another class.
|
|
205
|
+
/** Input (`kbqPopoverOffset`) — distance between the trigger and the panel, in pixels. */
|
|
134
206
|
this.offset = defaultOffsetYWithArrow;
|
|
207
|
+
/**
|
|
208
|
+
* Input (`kbqPopoverAutoFocus`) — whether opening the popover moves the keyboard focus into the panel. Turn it
|
|
209
|
+
* off for a panel that must not disturb what the reader is doing: taking focus away from a text selection
|
|
210
|
+
* collapses it. Focus then never enters the panel, so its content has to be reachable some other way.
|
|
211
|
+
*/
|
|
212
|
+
this.autoFocus = true;
|
|
213
|
+
/** Input (`kbqEnterDelay`) — delay before opening, in milliseconds. Defaults to `0`. */
|
|
214
|
+
this.enterDelay = 0;
|
|
215
|
+
this.leaveDelayBound = false;
|
|
216
|
+
/**
|
|
217
|
+
* Emits the resolved placement whenever the panel is repositioned.
|
|
218
|
+
*
|
|
219
|
+
* Declared as `string` to match the abstract member on `KbqPopUpTrigger`: `EventEmitter` is invariant,
|
|
220
|
+
* so a narrower emitter cannot override a wider one. Narrowing both is a change to the shared pop-up
|
|
221
|
+
* base and belongs to the branch that owns it.
|
|
222
|
+
*/
|
|
135
223
|
this.placementChange = new EventEmitter();
|
|
224
|
+
/** @docs-private */
|
|
225
|
+
this.placementChangeOutput = outputFromObservable(this.placementChange, { alias: 'kbqPopoverPlacementChange' });
|
|
226
|
+
/** Emits `true` when the panel opens and `false` when it closes. */
|
|
136
227
|
this.visibleChange = new EventEmitter();
|
|
228
|
+
/** @docs-private */
|
|
229
|
+
this.visibleChangeOutput = outputFromObservable(this.visibleChange, { alias: 'kbqPopoverVisibleChange' });
|
|
137
230
|
this.originSelector = '.kbq-popover';
|
|
138
|
-
this.
|
|
231
|
+
/** Whether a position re-apply is already queued for this turn. */
|
|
232
|
+
this.repositionScheduled = false;
|
|
233
|
+
/**
|
|
234
|
+
* Whether the open currently on screen was a deliberate one rather than a pointer or focus one.
|
|
235
|
+
*
|
|
236
|
+
* The shared base records the event that opened the pop-up in `triggerName`, but its keyboard opener is
|
|
237
|
+
* the one listener registered without that bookkeeping, and it defers the open to a task of its own —
|
|
238
|
+
* by then `triggerName` still holds whatever the pointer last did. Frozen on every `show()`, which the
|
|
239
|
+
* pointer and focus listeners reach with the name they have just written.
|
|
240
|
+
*/
|
|
241
|
+
this.deliberateOpen = true;
|
|
242
|
+
/** @docs-private */
|
|
243
|
+
this.triggerInput = input(undefined, { ...(ngDevMode ? { debugName: "triggerInput" } : /* istanbul ignore next */ {}), alias: 'kbqTrigger' });
|
|
244
|
+
/** @docs-private */
|
|
245
|
+
this.kbqLeaveDelayInput = input(undefined, { ...(ngDevMode ? { debugName: "kbqLeaveDelayInput" } : /* istanbul ignore next */ {}), alias: 'kbqLeaveDelay',
|
|
246
|
+
transform: kbqOptionalNumberAttribute });
|
|
247
|
+
/** @docs-private */
|
|
248
|
+
this.enterDelayInput = input(undefined, { ...(ngDevMode ? { debugName: "enterDelayInput" } : /* istanbul ignore next */ {}), alias: 'kbqEnterDelay',
|
|
249
|
+
transform: kbqOptionalNumberAttribute });
|
|
250
|
+
/** @docs-private */
|
|
251
|
+
this.preventCloseInput = input(undefined, { ...(ngDevMode ? { debugName: "preventCloseInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverPreventClose',
|
|
252
|
+
transform: booleanAttribute });
|
|
253
|
+
/** @docs-private */
|
|
254
|
+
this.stickToWindowInput = input(undefined, { ...(ngDevMode ? { debugName: "stickToWindowInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverStickToWindow' });
|
|
255
|
+
/** @docs-private */
|
|
256
|
+
this.popoverContainerInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverContainerInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverContainer' });
|
|
257
|
+
/** @docs-private */
|
|
258
|
+
this.popoverHasBackdropInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverHasBackdropInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverHasBackdrop',
|
|
259
|
+
transform: booleanAttribute });
|
|
260
|
+
/** @docs-private */
|
|
261
|
+
this.popoverBackdropClassInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverBackdropClassInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverBackdropClass' });
|
|
262
|
+
/** @docs-private */
|
|
263
|
+
this.popoverDefaultPaddingsInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverDefaultPaddingsInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverDefaultPaddings',
|
|
264
|
+
transform: booleanAttribute });
|
|
265
|
+
/** @docs-private */
|
|
266
|
+
this.sizeInput = input(undefined, { ...(ngDevMode ? { debugName: "sizeInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverSize' });
|
|
267
|
+
/** @docs-private */
|
|
268
|
+
this.customClassInput = input(undefined, { ...(ngDevMode ? { debugName: "customClassInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverClass' });
|
|
269
|
+
/** @docs-private */
|
|
270
|
+
this.headerInput = input(undefined, { ...(ngDevMode ? { debugName: "headerInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverHeader' });
|
|
271
|
+
/** @docs-private */
|
|
272
|
+
this.contentInput = input(undefined, { ...(ngDevMode ? { debugName: "contentInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverContent' });
|
|
273
|
+
/** @docs-private */
|
|
274
|
+
this.footerInput = input(undefined, { ...(ngDevMode ? { debugName: "footerInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverFooter' });
|
|
275
|
+
/** @docs-private */
|
|
276
|
+
this.contextInput = input(undefined, { ...(ngDevMode ? { debugName: "contextInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverContext' });
|
|
277
|
+
/** @docs-private */
|
|
278
|
+
this.ariaLabelInput = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabelInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverAriaLabel' });
|
|
279
|
+
/** @docs-private */
|
|
280
|
+
this.popoverHasCloseButtonInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverHasCloseButtonInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverHasCloseButton',
|
|
281
|
+
transform: booleanAttribute });
|
|
282
|
+
/** @docs-private */
|
|
283
|
+
this.popoverCloseOnScrollInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverCloseOnScrollInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverCloseOnScroll',
|
|
284
|
+
transform: booleanAttribute });
|
|
285
|
+
/** @docs-private */
|
|
286
|
+
this.arrowInput = input(undefined, { ...(ngDevMode ? { debugName: "arrowInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverArrow',
|
|
287
|
+
transform: booleanAttribute });
|
|
288
|
+
/** @docs-private */
|
|
289
|
+
this.offsetInput = input(undefined, { ...(ngDevMode ? { debugName: "offsetInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverOffset',
|
|
290
|
+
transform: kbqOptionalNumberAttribute });
|
|
291
|
+
/** @docs-private */
|
|
292
|
+
this.autoFocusInput = input(undefined, { ...(ngDevMode ? { debugName: "autoFocusInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverAutoFocus',
|
|
293
|
+
transform: booleanAttribute });
|
|
294
|
+
/** @docs-private */
|
|
295
|
+
this.popoverOriginInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverOriginInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverOrigin' });
|
|
296
|
+
/** @docs-private */
|
|
297
|
+
this.disabledInput = input(undefined, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverDisabled',
|
|
298
|
+
transform: booleanAttribute });
|
|
299
|
+
/** @docs-private */
|
|
300
|
+
this.popoverPlacementPriorityInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverPlacementPriorityInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverPlacementPriority' });
|
|
301
|
+
/** @docs-private */
|
|
302
|
+
this.popoverPlacementInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverPlacementInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverPlacement' });
|
|
303
|
+
/** @docs-private */
|
|
304
|
+
this.popoverVisibleInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverVisibleInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverVisible' });
|
|
305
|
+
/** Closes the popover once it has scrolled out of its nearest scrollable ancestor. */
|
|
139
306
|
this.hideIfScrolledOutOfView = () => {
|
|
140
|
-
if (!this.scrollable || !this.
|
|
307
|
+
if (!this.instance || !this.scrollable || !this.popoverHideIfNotInViewPort())
|
|
141
308
|
return;
|
|
142
309
|
const rect = this.elementRef.nativeElement.getBoundingClientRect();
|
|
143
310
|
const containerRect = this.scrollable.getElementRef().nativeElement.getBoundingClientRect();
|
|
144
|
-
|
|
311
|
+
const intersectsContainer = rect.bottom >= containerRect.top &&
|
|
145
312
|
rect.right >= containerRect.left &&
|
|
146
313
|
rect.top <= containerRect.bottom &&
|
|
147
|
-
rect.left <= containerRect.right
|
|
314
|
+
rect.left <= containerRect.right;
|
|
315
|
+
if (!intersectsContainer) {
|
|
316
|
+
this.hide();
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
/** Closes the popover once its trigger has scrolled out of a `.kbq-hide-nested-popup` container. */
|
|
320
|
+
this.hideIfNestedPopupScrolledAway = (scrollable) => {
|
|
321
|
+
if (!this.instance)
|
|
322
|
+
return;
|
|
323
|
+
if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup'))
|
|
324
|
+
return;
|
|
325
|
+
const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();
|
|
326
|
+
const childRects = this.elementRef.nativeElement.getBoundingClientRect();
|
|
327
|
+
if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {
|
|
148
328
|
this.hide();
|
|
149
329
|
}
|
|
150
330
|
};
|
|
151
331
|
}
|
|
152
|
-
|
|
153
|
-
|
|
332
|
+
/** Input (`kbqPopoverDefaultPaddings`) — sets {@link defaultPaddings}. */
|
|
333
|
+
set popoverDefaultPaddings(value) {
|
|
334
|
+
this.defaultPaddings = value;
|
|
335
|
+
}
|
|
336
|
+
/** Input (`kbqPopoverVisible`) — opens the popover when set to `true` and closes it when set to `false`. */
|
|
154
337
|
get popoverVisible() {
|
|
155
338
|
return this.visible;
|
|
156
339
|
}
|
|
157
340
|
set popoverVisible(value) {
|
|
158
341
|
super.updateVisible(value);
|
|
159
342
|
}
|
|
160
|
-
|
|
161
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
343
|
+
/** Input (`kbqPopoverPlacement`) — preferred placement of the panel relative to the trigger. */
|
|
162
344
|
get popoverPlacement() {
|
|
163
345
|
return this.placement;
|
|
164
346
|
}
|
|
165
347
|
set popoverPlacement(value) {
|
|
166
348
|
super.updatePlacement(value);
|
|
167
349
|
}
|
|
168
|
-
|
|
169
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
350
|
+
/** Input (`kbqPopoverPlacementPriority`) — ordered placements tried before the default strategy. */
|
|
170
351
|
get popoverPlacementPriority() {
|
|
171
352
|
return this.placementPriority;
|
|
172
353
|
}
|
|
173
354
|
set popoverPlacementPriority(value) {
|
|
174
355
|
super.updatePlacementPriority(value);
|
|
175
356
|
}
|
|
176
|
-
|
|
177
|
-
|
|
357
|
+
/** Input (`kbqPopoverContainer`) — sets {@link container}. */
|
|
358
|
+
set popoverContainer(value) {
|
|
359
|
+
this.container = value;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Whether a backdrop is rendered behind the panel. With a backdrop the popover closes on a backdrop click
|
|
363
|
+
* instead of on any outside pointer event. Bound with `kbqPopoverHasBackdrop`.
|
|
364
|
+
*/
|
|
178
365
|
get hasBackdrop() {
|
|
179
366
|
return this._hasBackdrop;
|
|
180
367
|
}
|
|
181
368
|
set hasBackdrop(value) {
|
|
182
369
|
this._hasBackdrop = coerceBooleanProperty(value);
|
|
370
|
+
this.invalidateOverlay();
|
|
371
|
+
}
|
|
372
|
+
/** Input (`kbqPopoverHasBackdrop`) — sets {@link hasBackdrop}. */
|
|
373
|
+
set popoverHasBackdrop(value) {
|
|
374
|
+
this.hasBackdrop = value;
|
|
183
375
|
}
|
|
184
|
-
|
|
185
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
376
|
+
/** Input (`kbqPopoverHeader`) — header of the panel, as a string or a template. */
|
|
186
377
|
get header() {
|
|
187
378
|
return this._header;
|
|
188
379
|
}
|
|
@@ -190,8 +381,7 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
190
381
|
this._header = value;
|
|
191
382
|
this.updateData();
|
|
192
383
|
}
|
|
193
|
-
|
|
194
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
384
|
+
/** Input (`kbqPopoverContent`) — content of the panel, as a string or a template. */
|
|
195
385
|
get content() {
|
|
196
386
|
return this._content;
|
|
197
387
|
}
|
|
@@ -199,8 +389,7 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
199
389
|
this._content = value;
|
|
200
390
|
this.updateData();
|
|
201
391
|
}
|
|
202
|
-
|
|
203
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
392
|
+
/** Input (`kbqPopoverFooter`) — footer of the panel, as a string or a template. */
|
|
204
393
|
get footer() {
|
|
205
394
|
return this._footer;
|
|
206
395
|
}
|
|
@@ -208,8 +397,7 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
208
397
|
this._footer = value;
|
|
209
398
|
this.updateData();
|
|
210
399
|
}
|
|
211
|
-
|
|
212
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
400
|
+
/** Input (`kbqPopoverDisabled`) — disables the trigger and closes an open popover. */
|
|
213
401
|
get disabled() {
|
|
214
402
|
return this._disabled;
|
|
215
403
|
}
|
|
@@ -219,8 +407,11 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
219
407
|
this.hide();
|
|
220
408
|
}
|
|
221
409
|
}
|
|
222
|
-
|
|
223
|
-
|
|
410
|
+
/**
|
|
411
|
+
* Input (`kbqTrigger`) with the comma-separated trigger events. An empty value resets to click + keydown
|
|
412
|
+
* and rebinds listeners. The alias is shared with `kbqTooltip`, so binding it on an element that carries
|
|
413
|
+
* both reconfigures both.
|
|
414
|
+
*/
|
|
224
415
|
get trigger() {
|
|
225
416
|
return this._trigger;
|
|
226
417
|
}
|
|
@@ -229,16 +420,24 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
229
420
|
this._trigger = value;
|
|
230
421
|
if (this.trigger.includes(PopUpTriggers.Hover)) {
|
|
231
422
|
this.hideWithTimeout = true;
|
|
232
|
-
this.leaveDelay = this.leaveDelay ?? 500;
|
|
233
423
|
}
|
|
234
424
|
}
|
|
235
425
|
else {
|
|
236
426
|
this._trigger = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;
|
|
237
427
|
}
|
|
428
|
+
// Re-derived from the trigger on every change rather than applied once to an unset delay: a popover
|
|
429
|
+
// switched to `hover` later closes on the 0 it was born with otherwise, leaving no time to cross the
|
|
430
|
+
// gap between the trigger and the panel.
|
|
431
|
+
if (!this.leaveDelayBound) {
|
|
432
|
+
this.leaveDelay = this.defaultLeaveDelay;
|
|
433
|
+
}
|
|
238
434
|
this.initListeners();
|
|
239
435
|
}
|
|
240
|
-
|
|
241
|
-
|
|
436
|
+
/** Leave delay while `kbqLeaveDelay` is not bound. */
|
|
437
|
+
get defaultLeaveDelay() {
|
|
438
|
+
return this._trigger.includes(PopUpTriggers.Hover) ? defaultHoverLeaveDelay : 0;
|
|
439
|
+
}
|
|
440
|
+
/** Input (`kbqPopoverSize`) — preset width of the panel. An unknown value falls back to `medium`. */
|
|
242
441
|
get size() {
|
|
243
442
|
return this._size;
|
|
244
443
|
}
|
|
@@ -249,10 +448,11 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
249
448
|
}
|
|
250
449
|
else {
|
|
251
450
|
this._size = PopUpSizes.Medium;
|
|
451
|
+
// eslint-disable-next-line no-console
|
|
452
|
+
console.warn(`Unknown size: ${value}. Will use the default size: ${this._size}`);
|
|
252
453
|
}
|
|
253
454
|
}
|
|
254
|
-
|
|
255
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
455
|
+
/** Input (`kbqPopoverClass`) with extra CSS classes applied to the panel. */
|
|
256
456
|
get customClass() {
|
|
257
457
|
return this._customClass;
|
|
258
458
|
}
|
|
@@ -261,8 +461,6 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
261
461
|
this.updateClassMap();
|
|
262
462
|
}
|
|
263
463
|
/** Context for popover templates (kbqPopoverHeader, kbqPopoverContent and kbqPopoverFooter). */
|
|
264
|
-
// TODO: Skipped for migration because:
|
|
265
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
266
464
|
get context() {
|
|
267
465
|
return this._context;
|
|
268
466
|
}
|
|
@@ -270,8 +468,18 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
270
468
|
this._context = ctx;
|
|
271
469
|
this.updateData();
|
|
272
470
|
}
|
|
273
|
-
|
|
274
|
-
|
|
471
|
+
/**
|
|
472
|
+
* Accessible name of the panel. Ignored while a string `kbqPopoverHeader` is set — the header labels the
|
|
473
|
+
* dialog then — and recommended for every header-less popover.
|
|
474
|
+
*/
|
|
475
|
+
get ariaLabel() {
|
|
476
|
+
return this._ariaLabel;
|
|
477
|
+
}
|
|
478
|
+
set ariaLabel(value) {
|
|
479
|
+
this._ariaLabel = value;
|
|
480
|
+
this.updateData();
|
|
481
|
+
}
|
|
482
|
+
/** Renders the icon-only close button in the top corner of the panel. Bound with `kbqPopoverHasCloseButton`. */
|
|
275
483
|
get hasCloseButton() {
|
|
276
484
|
return this._hasCloseButton;
|
|
277
485
|
}
|
|
@@ -279,26 +487,81 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
279
487
|
this._hasCloseButton = value;
|
|
280
488
|
this.updateData();
|
|
281
489
|
}
|
|
490
|
+
/** Input (`kbqPopoverHasCloseButton`) — sets {@link hasCloseButton}. */
|
|
491
|
+
set popoverHasCloseButton(value) {
|
|
492
|
+
this.hasCloseButton = value;
|
|
493
|
+
}
|
|
282
494
|
/**
|
|
283
|
-
* Controls the behavior of closing the component on scroll.
|
|
284
|
-
*
|
|
495
|
+
* Controls the behavior of closing the component on scroll. Bound with `kbqPopoverCloseOnScroll`. Three
|
|
496
|
+
* states:
|
|
497
|
+
* - `null` (default) — the popover survives a scroll, except when it scrolls out of a
|
|
498
|
+
* `.kbq-hide-nested-popup` container, which closes it;
|
|
499
|
+
* - `true` — any scroll closes the popover;
|
|
500
|
+
* - `false` — no scroll closes the popover, not even a `.kbq-hide-nested-popup` one.
|
|
501
|
+
*
|
|
285
502
|
* Use CloseScrollStrategy as alternative
|
|
286
503
|
*/
|
|
287
|
-
// TODO: Skipped for migration because:
|
|
288
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
289
504
|
get closeOnScroll() {
|
|
290
505
|
return this._closeOnScroll;
|
|
291
506
|
}
|
|
292
507
|
set closeOnScroll(value) {
|
|
293
508
|
this._closeOnScroll = coerceBooleanProperty(value);
|
|
294
509
|
}
|
|
510
|
+
/** Input (`kbqPopoverCloseOnScroll`) — sets {@link closeOnScroll}. */
|
|
511
|
+
set popoverCloseOnScroll(value) {
|
|
512
|
+
this.closeOnScroll = value;
|
|
513
|
+
}
|
|
514
|
+
/** Whether the trigger opens the popover on click, which is also what makes it a labelled dialog opener. */
|
|
295
515
|
get hasClickTrigger() {
|
|
296
516
|
return this.trigger.includes(PopUpTriggers.Click);
|
|
297
517
|
}
|
|
518
|
+
/**
|
|
519
|
+
* Whether opening the popover should move the keyboard focus into the panel. Only deliberate opens
|
|
520
|
+
* (click, keyboard, programmatic) do — a hover- or focus-triggered popover must not steal focus.
|
|
521
|
+
*/
|
|
522
|
+
get capturesFocusOnOpen() {
|
|
523
|
+
return this.autoFocus && (this.hasClickTrigger || this.deliberateOpen);
|
|
524
|
+
}
|
|
298
525
|
/** @docs-private */
|
|
299
526
|
get instanceDestroyRef() {
|
|
300
527
|
return this.instance.destroyRef;
|
|
301
528
|
}
|
|
529
|
+
/** CSS class applied to the backdrop, when there is one. Bound with `kbqPopoverBackdropClass`. */
|
|
530
|
+
get backdropClass() {
|
|
531
|
+
return this._backdropClass;
|
|
532
|
+
}
|
|
533
|
+
set backdropClass(value) {
|
|
534
|
+
this._backdropClass = value;
|
|
535
|
+
this.invalidateOverlay();
|
|
536
|
+
}
|
|
537
|
+
/** Input (`kbqPopoverBackdropClass`) — sets {@link backdropClass}. */
|
|
538
|
+
set popoverBackdropClass(value) {
|
|
539
|
+
this.backdropClass = value;
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Input (`kbqPopoverOrigin`) — what the panel is positioned against: an element, or a rectangle in viewport
|
|
543
|
+
* coordinates such as the one `kbqCreateCaretOrigin` keeps on the caret. `null` anchors it to the trigger.
|
|
544
|
+
*
|
|
545
|
+
* Bind it before `kbqPopoverVisible`, which opens the panel as it is written.
|
|
546
|
+
*/
|
|
547
|
+
get popoverOrigin() {
|
|
548
|
+
return this.origin;
|
|
549
|
+
}
|
|
550
|
+
set popoverOrigin(value) {
|
|
551
|
+
this.updateOrigin(value);
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Input (`kbqLeaveDelay`) — delay before closing, in milliseconds. Defaults to `0`, and to
|
|
555
|
+
* {@link defaultHoverLeaveDelay} when `kbqTrigger` includes `hover`.
|
|
556
|
+
*/
|
|
557
|
+
// A write-only input rather than an accessor over `leaveDelay`: the base declares that member as a
|
|
558
|
+
// plain field, and TypeScript refuses to override a property with an accessor (TS2611).
|
|
559
|
+
set kbqLeaveDelay(value) {
|
|
560
|
+
this.leaveDelay = value;
|
|
561
|
+
// Tracked instead of comparing the delay against a sentinel: an explicit `kbqLeaveDelay="0"` and an
|
|
562
|
+
// unbound one are indistinguishable by value, and only the latter takes the hover default.
|
|
563
|
+
this.leaveDelayBound = true;
|
|
564
|
+
}
|
|
302
565
|
// NB: the trigger↔popover gap is a CSS `margin` on `.kbq-popover` (see `applyPopupMargins`), which sits inside
|
|
303
566
|
// this `pointer-events: auto` pane, so the gap band is already covered and not click/hover-through. This is why
|
|
304
567
|
// the connected-overlay `offsetY`→in-pane-padding fix (KBQ_CONNECTED_OVERLAY_* / --kbq-connected-overlay-gap,
|
|
@@ -311,6 +574,113 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
311
574
|
backdropClass: this.backdropClass
|
|
312
575
|
};
|
|
313
576
|
}
|
|
577
|
+
ngOnChanges(changes) {
|
|
578
|
+
// A bound input is handed to its member, a bound `undefined` restoring the
|
|
579
|
+
// member's default; unbound, it leaves what code wrote. The `booleanAttribute` inputs are the exception:
|
|
580
|
+
// the transform reads a bound `undefined` as `false`.
|
|
581
|
+
if (changes['triggerInput']) {
|
|
582
|
+
this.trigger = this.triggerInput() ?? '';
|
|
583
|
+
}
|
|
584
|
+
if (changes['kbqLeaveDelayInput']) {
|
|
585
|
+
const kbqLeaveDelay = this.kbqLeaveDelayInput();
|
|
586
|
+
if (kbqLeaveDelay === undefined) {
|
|
587
|
+
// Counts as unbound, so that a hover popover gets its default delay back.
|
|
588
|
+
this.leaveDelayBound = false;
|
|
589
|
+
this.leaveDelay = this.defaultLeaveDelay;
|
|
590
|
+
}
|
|
591
|
+
else {
|
|
592
|
+
this.kbqLeaveDelay = kbqLeaveDelay;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
if (changes['enterDelayInput']) {
|
|
596
|
+
this.enterDelay = this.enterDelayInput() ?? 0;
|
|
597
|
+
}
|
|
598
|
+
if (changes['preventCloseInput']) {
|
|
599
|
+
const preventClose = this.preventCloseInput();
|
|
600
|
+
if (preventClose !== undefined)
|
|
601
|
+
this.preventClose = preventClose;
|
|
602
|
+
}
|
|
603
|
+
if (changes['stickToWindowInput']) {
|
|
604
|
+
this.stickToWindow = this.stickToWindowInput();
|
|
605
|
+
}
|
|
606
|
+
if (changes['popoverContainerInput']) {
|
|
607
|
+
this.popoverContainer = this.popoverContainerInput();
|
|
608
|
+
}
|
|
609
|
+
if (changes['popoverHasBackdropInput']) {
|
|
610
|
+
const popoverHasBackdrop = this.popoverHasBackdropInput();
|
|
611
|
+
if (popoverHasBackdrop !== undefined)
|
|
612
|
+
this.popoverHasBackdrop = popoverHasBackdrop;
|
|
613
|
+
}
|
|
614
|
+
if (changes['popoverBackdropClassInput']) {
|
|
615
|
+
this.popoverBackdropClass = this.popoverBackdropClassInput() ?? defaultBackdropClass;
|
|
616
|
+
}
|
|
617
|
+
if (changes['popoverDefaultPaddingsInput']) {
|
|
618
|
+
const popoverDefaultPaddings = this.popoverDefaultPaddingsInput();
|
|
619
|
+
if (popoverDefaultPaddings !== undefined)
|
|
620
|
+
this.popoverDefaultPaddings = popoverDefaultPaddings;
|
|
621
|
+
}
|
|
622
|
+
if (changes['sizeInput']) {
|
|
623
|
+
this.size = this.sizeInput() ?? PopUpSizes.Medium;
|
|
624
|
+
}
|
|
625
|
+
if (changes['customClassInput']) {
|
|
626
|
+
this.customClass = this.customClassInput() ?? '';
|
|
627
|
+
}
|
|
628
|
+
if (changes['headerInput']) {
|
|
629
|
+
this.header = this.headerInput() ?? '';
|
|
630
|
+
}
|
|
631
|
+
if (changes['contentInput']) {
|
|
632
|
+
this.content = this.contentInput() ?? '';
|
|
633
|
+
}
|
|
634
|
+
if (changes['footerInput']) {
|
|
635
|
+
this.footer = this.footerInput() ?? '';
|
|
636
|
+
}
|
|
637
|
+
if (changes['contextInput']) {
|
|
638
|
+
this.context = this.contextInput();
|
|
639
|
+
}
|
|
640
|
+
if (changes['ariaLabelInput']) {
|
|
641
|
+
this.ariaLabel = this.ariaLabelInput();
|
|
642
|
+
}
|
|
643
|
+
if (changes['popoverHasCloseButtonInput']) {
|
|
644
|
+
const popoverHasCloseButton = this.popoverHasCloseButtonInput();
|
|
645
|
+
if (popoverHasCloseButton !== undefined)
|
|
646
|
+
this.popoverHasCloseButton = popoverHasCloseButton;
|
|
647
|
+
}
|
|
648
|
+
if (changes['popoverCloseOnScrollInput']) {
|
|
649
|
+
const popoverCloseOnScroll = this.popoverCloseOnScrollInput();
|
|
650
|
+
if (popoverCloseOnScroll !== undefined)
|
|
651
|
+
this.popoverCloseOnScroll = popoverCloseOnScroll;
|
|
652
|
+
}
|
|
653
|
+
if (changes['arrowInput']) {
|
|
654
|
+
const arrow = this.arrowInput();
|
|
655
|
+
if (arrow !== undefined)
|
|
656
|
+
this.arrow = arrow;
|
|
657
|
+
}
|
|
658
|
+
if (changes['offsetInput']) {
|
|
659
|
+
this.offset = this.offsetInput() ?? defaultOffsetYWithArrow;
|
|
660
|
+
}
|
|
661
|
+
if (changes['autoFocusInput']) {
|
|
662
|
+
const autoFocus = this.autoFocusInput();
|
|
663
|
+
if (autoFocus !== undefined)
|
|
664
|
+
this.autoFocus = autoFocus;
|
|
665
|
+
}
|
|
666
|
+
if (changes['popoverOriginInput']) {
|
|
667
|
+
this.popoverOrigin = this.popoverOriginInput() ?? null;
|
|
668
|
+
}
|
|
669
|
+
if (changes['disabledInput']) {
|
|
670
|
+
const disabled = this.disabledInput();
|
|
671
|
+
if (disabled !== undefined)
|
|
672
|
+
this.disabled = disabled;
|
|
673
|
+
}
|
|
674
|
+
if (changes['popoverPlacementPriorityInput']) {
|
|
675
|
+
this.popoverPlacementPriority = this.popoverPlacementPriorityInput() ?? null;
|
|
676
|
+
}
|
|
677
|
+
if (changes['popoverPlacementInput']) {
|
|
678
|
+
this.popoverPlacement = this.popoverPlacementInput() ?? PopUpPlacements.Top;
|
|
679
|
+
}
|
|
680
|
+
if (changes['popoverVisibleInput']) {
|
|
681
|
+
this.popoverVisible = this.popoverVisibleInput() ?? false;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
314
684
|
ngOnInit() {
|
|
315
685
|
super.ngOnInit();
|
|
316
686
|
this.scrollable
|
|
@@ -323,46 +693,61 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
323
693
|
this.scrollDispatcher
|
|
324
694
|
.scrolled()
|
|
325
695
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
326
|
-
.subscribe(
|
|
327
|
-
if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup'))
|
|
328
|
-
return;
|
|
329
|
-
const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();
|
|
330
|
-
const childRects = this.elementRef.nativeElement.getBoundingClientRect();
|
|
331
|
-
if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {
|
|
332
|
-
this.hide();
|
|
333
|
-
}
|
|
334
|
-
});
|
|
696
|
+
.subscribe(this.hideIfNestedPopupScrolledAway);
|
|
335
697
|
}
|
|
336
698
|
}
|
|
337
|
-
/**
|
|
338
|
-
* Overrides the base `show` method to display the overlay component with the
|
|
339
|
-
* specified entry delay and apply default positioning offsets.
|
|
340
|
-
*/
|
|
699
|
+
/** @docs-private */
|
|
341
700
|
show(delay = this.enterDelay) {
|
|
701
|
+
this.deliberateOpen = !passiveOpenEvents.includes(this.triggerName);
|
|
342
702
|
super.show(delay);
|
|
343
|
-
this.addClassToOverlayContainer();
|
|
344
|
-
}
|
|
345
|
-
hide(delay = this.leaveDelay) {
|
|
346
|
-
super.hide(delay);
|
|
347
|
-
this.removeClassFromOverlayContainer();
|
|
348
703
|
}
|
|
704
|
+
/** @docs-private */
|
|
349
705
|
updateData() {
|
|
706
|
+
// Untracked: an input written from a consumer's `effect()` lands here, and `isOpen` read on the way would make
|
|
707
|
+
// the effect run again on every open and close.
|
|
708
|
+
untracked(() => this.pushData());
|
|
709
|
+
}
|
|
710
|
+
/** Body of `updateData()`. */
|
|
711
|
+
pushData() {
|
|
350
712
|
if (!this.instance)
|
|
351
713
|
return;
|
|
352
714
|
this.instance.header = this.header;
|
|
353
715
|
this.instance.content = this.content;
|
|
354
|
-
|
|
355
|
-
|
|
716
|
+
// `!= null` rather than a truthy check: `0`, `''` and `false` are legitimate template contexts, and
|
|
717
|
+
// dropping them left the template rendering the previous context instead.
|
|
718
|
+
this.instance.context = this.context != null ? { $implicit: this.context } : null;
|
|
719
|
+
// `setStickPosition` drops the arrow because a stuck panel no longer points at its trigger; copying
|
|
720
|
+
// the input back would resurrect a detached rotated square on the next update.
|
|
721
|
+
this.instance.arrow = this.stickToWindow ? false : this.arrow;
|
|
356
722
|
this.instance.offset = this.offset;
|
|
357
723
|
this.instance.footer = this.footer;
|
|
358
724
|
this.instance.hasCloseButton = this.hasCloseButton;
|
|
359
725
|
this.instance.defaultPaddings = this.defaultPaddings;
|
|
726
|
+
this.instance.panelId = this.panelId;
|
|
727
|
+
this.instance.ariaLabel = this.ariaLabel;
|
|
360
728
|
this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);
|
|
729
|
+
// As the tooltip does: this mostly runs from an input setter, while the trigger's view is being checked,
|
|
730
|
+
// and the panel renders in an overlay of its own that nothing else would check.
|
|
731
|
+
this.instance.detectChanges();
|
|
361
732
|
if (this.isOpen) {
|
|
362
|
-
this.
|
|
733
|
+
this.scheduleReposition();
|
|
363
734
|
}
|
|
364
735
|
}
|
|
365
|
-
/**
|
|
736
|
+
/** @docs-private */
|
|
737
|
+
createOverlay() {
|
|
738
|
+
const overlayRef = super.createOverlay();
|
|
739
|
+
// Read on every attach: a popover stuck to a window edge stays above the bars.
|
|
740
|
+
this.overlayLayers.adopt(overlayRef, () => (this.stickToWindow ? null : this.getNativeElement()));
|
|
741
|
+
return overlayRef;
|
|
742
|
+
}
|
|
743
|
+
/**
|
|
744
|
+
* Re-applies the overlay position.
|
|
745
|
+
*
|
|
746
|
+
* Deliberately narrower than the inherited one, which also rebuilds the closing-action subscription:
|
|
747
|
+
* that stream carries a `delay(0)`, so a reposition coalesced into the same task as an outside click —
|
|
748
|
+
* which is the task in which that click's change detection writes a popover input — would drop the
|
|
749
|
+
* close the click had already scheduled.
|
|
750
|
+
*/
|
|
366
751
|
updatePosition(reapplyPosition = false) {
|
|
367
752
|
this.overlayRef = this.createOverlay();
|
|
368
753
|
const position = this.overlayRef.getConfig().positionStrategy
|
|
@@ -372,47 +757,90 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
|
|
|
372
757
|
setTimeout(() => position.reapplyLastPosition());
|
|
373
758
|
}
|
|
374
759
|
}
|
|
760
|
+
/** @docs-private */
|
|
375
761
|
getOverlayHandleComponentType() {
|
|
376
762
|
return KbqPopoverComponent;
|
|
377
763
|
}
|
|
764
|
+
/** @docs-private */
|
|
378
765
|
updateClassMap(newPlacement = this.placement) {
|
|
379
766
|
if (!this.instance) {
|
|
380
767
|
return;
|
|
381
768
|
}
|
|
382
769
|
this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);
|
|
383
|
-
this.instance.markForCheck();
|
|
384
770
|
}
|
|
771
|
+
/** @docs-private */
|
|
385
772
|
closingActionsForClick() {
|
|
386
773
|
if (this.hasClickTrigger) {
|
|
387
774
|
return this.defaultClosingActions();
|
|
388
775
|
}
|
|
389
776
|
return [];
|
|
390
777
|
}
|
|
778
|
+
/** @docs-private */
|
|
391
779
|
defaultClosingActions() {
|
|
392
780
|
return [
|
|
393
781
|
this.overlayRef.backdropClick(),
|
|
394
782
|
this.hasBackdrop ? NEVER : this.overlayRef.outsidePointerEvents()
|
|
395
783
|
];
|
|
396
784
|
}
|
|
785
|
+
/** @docs-private */
|
|
397
786
|
closingActions() {
|
|
398
|
-
|
|
787
|
+
// Inner panel scrolling must not trigger closeOnScroll.
|
|
788
|
+
const scrolled = this.closeOnScroll ? this.scrollDispatcher.ancestorScrolled(this.getNativeElement()) : NEVER;
|
|
789
|
+
return merge(...this.closingActionsForClick(), scrolled);
|
|
399
790
|
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
791
|
+
/**
|
|
792
|
+
* Returns focus to the trigger when the popover is closed while focus is still inside its panel.
|
|
793
|
+
*
|
|
794
|
+
* Goes through `FocusMonitor` rather than a native `focus()` call: the kbq focus ring is only rendered
|
|
795
|
+
* for a monitored origin, and a `program` origin keeps a tooltip on the same element from re-opening.
|
|
796
|
+
*/
|
|
797
|
+
restoreFocus() {
|
|
798
|
+
if (!this.overlayRef?.overlayElement?.contains(this.document.activeElement))
|
|
799
|
+
return;
|
|
800
|
+
this.focusMonitor.focusVia(this.getNativeElement(), 'program');
|
|
406
801
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
802
|
+
/**
|
|
803
|
+
* Closes the popover on a deliberate action — the panel's close button, or `Escape` inside the panel.
|
|
804
|
+
*
|
|
805
|
+
* `hide()` keeps a hover popover open while the pointer rests on the panel, so that the pointer can
|
|
806
|
+
* travel from the trigger to the content; that is exactly where the pointer is when the close button is
|
|
807
|
+
* clicked, so a deliberate close answers to `kbqPopoverPreventClose` and to nothing else.
|
|
808
|
+
*/
|
|
809
|
+
close() {
|
|
810
|
+
if (this.preventClose)
|
|
811
|
+
return;
|
|
812
|
+
this.instance?.hide(0);
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Coalesces the position re-apply: a burst of input writes — or a parent change-detection pass that
|
|
816
|
+
* recreates the object bound to `kbqPopoverContext` — schedules one reposition per turn instead of one
|
|
817
|
+
* per write, each of which costs a forced layout read per candidate position.
|
|
818
|
+
*/
|
|
819
|
+
scheduleReposition() {
|
|
820
|
+
if (this.repositionScheduled)
|
|
821
|
+
return;
|
|
822
|
+
this.repositionScheduled = true;
|
|
823
|
+
queueMicrotask(() => {
|
|
824
|
+
this.repositionScheduled = false;
|
|
825
|
+
if (this.isOpen && this.overlayRef?.hasAttached()) {
|
|
826
|
+
this.updatePosition(true);
|
|
827
|
+
}
|
|
828
|
+
});
|
|
411
829
|
}
|
|
412
|
-
/**
|
|
413
|
-
|
|
830
|
+
/**
|
|
831
|
+
* Drops a closed overlay so the next `show()` rebuilds it. The backdrop and its class are baked into the
|
|
832
|
+
* overlay when it is created, and CDK does not re-render them from the config afterwards.
|
|
833
|
+
*/
|
|
834
|
+
invalidateOverlay() {
|
|
835
|
+
if (!this.overlayRef || this.overlayRef.hasAttached())
|
|
836
|
+
return;
|
|
837
|
+
this.overlayRef.dispose();
|
|
838
|
+
this.overlayRef = null;
|
|
839
|
+
}
|
|
840
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
841
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqPopoverTrigger, isStandalone: true, selector: "[kbqPopover]", inputs: { popoverHideIfNotInViewPort: { classPropertyName: "popoverHideIfNotInViewPort", publicName: "kbqPopoverHideIfNotInViewPort", isSignal: true, isRequired: false, transformFunction: null }, triggerInput: { classPropertyName: "triggerInput", publicName: "kbqTrigger", isSignal: true, isRequired: false, transformFunction: null }, kbqLeaveDelayInput: { classPropertyName: "kbqLeaveDelayInput", publicName: "kbqLeaveDelay", isSignal: true, isRequired: false, transformFunction: null }, enterDelayInput: { classPropertyName: "enterDelayInput", publicName: "kbqEnterDelay", isSignal: true, isRequired: false, transformFunction: null }, preventCloseInput: { classPropertyName: "preventCloseInput", publicName: "kbqPopoverPreventClose", isSignal: true, isRequired: false, transformFunction: null }, stickToWindowInput: { classPropertyName: "stickToWindowInput", publicName: "kbqPopoverStickToWindow", isSignal: true, isRequired: false, transformFunction: null }, popoverContainerInput: { classPropertyName: "popoverContainerInput", publicName: "kbqPopoverContainer", isSignal: true, isRequired: false, transformFunction: null }, popoverHasBackdropInput: { classPropertyName: "popoverHasBackdropInput", publicName: "kbqPopoverHasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, popoverBackdropClassInput: { classPropertyName: "popoverBackdropClassInput", publicName: "kbqPopoverBackdropClass", isSignal: true, isRequired: false, transformFunction: null }, popoverDefaultPaddingsInput: { classPropertyName: "popoverDefaultPaddingsInput", publicName: "kbqPopoverDefaultPaddings", isSignal: true, isRequired: false, transformFunction: null }, sizeInput: { classPropertyName: "sizeInput", publicName: "kbqPopoverSize", isSignal: true, isRequired: false, transformFunction: null }, customClassInput: { classPropertyName: "customClassInput", publicName: "kbqPopoverClass", isSignal: true, isRequired: false, transformFunction: null }, headerInput: { classPropertyName: "headerInput", publicName: "kbqPopoverHeader", isSignal: true, isRequired: false, transformFunction: null }, contentInput: { classPropertyName: "contentInput", publicName: "kbqPopoverContent", isSignal: true, isRequired: false, transformFunction: null }, footerInput: { classPropertyName: "footerInput", publicName: "kbqPopoverFooter", isSignal: true, isRequired: false, transformFunction: null }, contextInput: { classPropertyName: "contextInput", publicName: "kbqPopoverContext", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelInput: { classPropertyName: "ariaLabelInput", publicName: "kbqPopoverAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, popoverHasCloseButtonInput: { classPropertyName: "popoverHasCloseButtonInput", publicName: "kbqPopoverHasCloseButton", isSignal: true, isRequired: false, transformFunction: null }, popoverCloseOnScrollInput: { classPropertyName: "popoverCloseOnScrollInput", publicName: "kbqPopoverCloseOnScroll", isSignal: true, isRequired: false, transformFunction: null }, arrowInput: { classPropertyName: "arrowInput", publicName: "kbqPopoverArrow", isSignal: true, isRequired: false, transformFunction: null }, offsetInput: { classPropertyName: "offsetInput", publicName: "kbqPopoverOffset", isSignal: true, isRequired: false, transformFunction: null }, autoFocusInput: { classPropertyName: "autoFocusInput", publicName: "kbqPopoverAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, popoverOriginInput: { classPropertyName: "popoverOriginInput", publicName: "kbqPopoverOrigin", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "kbqPopoverDisabled", isSignal: true, isRequired: false, transformFunction: null }, popoverPlacementPriorityInput: { classPropertyName: "popoverPlacementPriorityInput", publicName: "kbqPopoverPlacementPriority", isSignal: true, isRequired: false, transformFunction: null }, popoverPlacementInput: { classPropertyName: "popoverPlacementInput", publicName: "kbqPopoverPlacement", isSignal: true, isRequired: false, transformFunction: null }, popoverVisibleInput: { classPropertyName: "popoverVisibleInput", publicName: "kbqPopoverVisible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placementChangeOutput: "kbqPopoverPlacementChange", visibleChangeOutput: "kbqPopoverVisibleChange" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()" }, properties: { "class.kbq-popover_open": "isOpen", "class.kbq-active": "hasClickTrigger && isOpen", "attr.aria-expanded": "hasClickTrigger ? isOpen : null", "attr.aria-haspopup": "hasClickTrigger ? \"dialog\" : null", "attr.aria-controls": "hasClickTrigger && isOpen ? panelId : null" } }, providers: [kbqSiblingPopupProvider(KbqPopoverTrigger)], exportAs: ["kbqPopover"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
414
842
|
}
|
|
415
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
843
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverTrigger, decorators: [{
|
|
416
844
|
type: Directive,
|
|
417
845
|
args: [{
|
|
418
846
|
selector: '[kbqPopover]',
|
|
@@ -420,148 +848,162 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
420
848
|
host: {
|
|
421
849
|
'[class.kbq-popover_open]': 'isOpen',
|
|
422
850
|
'[class.kbq-active]': 'hasClickTrigger && isOpen',
|
|
851
|
+
'[attr.aria-expanded]': 'hasClickTrigger ? isOpen : null',
|
|
852
|
+
'[attr.aria-haspopup]': 'hasClickTrigger ? "dialog" : null',
|
|
853
|
+
'[attr.aria-controls]': 'hasClickTrigger && isOpen ? panelId : null',
|
|
423
854
|
'(keydown)': 'keydownHandler($event)',
|
|
424
855
|
'(touchend)': 'touchendHandler()'
|
|
425
856
|
},
|
|
426
857
|
exportAs: 'kbqPopover'
|
|
427
858
|
}]
|
|
428
|
-
}], propDecorators: {
|
|
429
|
-
type: Input,
|
|
430
|
-
args: [{ alias: 'kbqPopoverPreventClose', transform: booleanAttribute }]
|
|
431
|
-
}], defaultPaddings: [{
|
|
432
|
-
type: Input,
|
|
433
|
-
args: [{ transform: booleanAttribute }]
|
|
434
|
-
}], popoverVisible: [{
|
|
435
|
-
type: Input,
|
|
436
|
-
args: ['kbqPopoverVisible']
|
|
437
|
-
}], popoverPlacement: [{
|
|
438
|
-
type: Input,
|
|
439
|
-
args: ['kbqPopoverPlacement']
|
|
440
|
-
}], popoverPlacementPriority: [{
|
|
441
|
-
type: Input,
|
|
442
|
-
args: ['kbqPopoverPlacementPriority']
|
|
443
|
-
}], stickToWindow: [{
|
|
444
|
-
type: Input,
|
|
445
|
-
args: ['kbqPopoverStickToWindow']
|
|
446
|
-
}], container: [{
|
|
447
|
-
type: Input
|
|
448
|
-
}], hasBackdrop: [{
|
|
449
|
-
type: Input
|
|
450
|
-
}], header: [{
|
|
451
|
-
type: Input,
|
|
452
|
-
args: ['kbqPopoverHeader']
|
|
453
|
-
}], content: [{
|
|
454
|
-
type: Input,
|
|
455
|
-
args: ['kbqPopoverContent']
|
|
456
|
-
}], footer: [{
|
|
457
|
-
type: Input,
|
|
458
|
-
args: ['kbqPopoverFooter']
|
|
459
|
-
}], disabled: [{
|
|
460
|
-
type: Input,
|
|
461
|
-
args: ['kbqPopoverDisabled']
|
|
462
|
-
}], trigger: [{
|
|
463
|
-
type: Input,
|
|
464
|
-
args: ['kbqTrigger']
|
|
465
|
-
}], size: [{
|
|
466
|
-
type: Input,
|
|
467
|
-
args: ['kbqPopoverSize']
|
|
468
|
-
}], customClass: [{
|
|
469
|
-
type: Input,
|
|
470
|
-
args: ['kbqPopoverClass']
|
|
471
|
-
}], context: [{
|
|
472
|
-
type: Input,
|
|
473
|
-
args: ['kbqPopoverContext']
|
|
474
|
-
}], hasCloseButton: [{
|
|
475
|
-
type: Input
|
|
476
|
-
}], closeOnScroll: [{
|
|
477
|
-
type: Input
|
|
478
|
-
}], backdropClass: [{
|
|
479
|
-
type: Input
|
|
480
|
-
}], arrow: [{
|
|
481
|
-
type: Input,
|
|
482
|
-
args: [{ alias: 'kbqPopoverArrow', transform: booleanAttribute }]
|
|
483
|
-
}], offset: [{
|
|
484
|
-
type: Input,
|
|
485
|
-
args: [{ alias: 'kbqPopoverOffset', transform: numberAttribute }]
|
|
486
|
-
}], leaveDelay: [{
|
|
487
|
-
type: Input,
|
|
488
|
-
args: [{ alias: 'kbqLeaveDelay', transform: numberAttribute }]
|
|
489
|
-
}], placementChange: [{
|
|
490
|
-
type: Output,
|
|
491
|
-
args: ['kbqPopoverPlacementChange']
|
|
492
|
-
}], visibleChange: [{
|
|
493
|
-
type: Output,
|
|
494
|
-
args: ['kbqPopoverVisibleChange']
|
|
495
|
-
}] } });
|
|
859
|
+
}], propDecorators: { popoverHideIfNotInViewPort: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverHideIfNotInViewPort", required: false }] }], placementChangeOutput: [{ type: i0.Output, args: ["kbqPopoverPlacementChange"] }], visibleChangeOutput: [{ type: i0.Output, args: ["kbqPopoverVisibleChange"] }], triggerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTrigger", required: false }] }], kbqLeaveDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqLeaveDelay", required: false }] }], enterDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqEnterDelay", required: false }] }], preventCloseInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverPreventClose", required: false }] }], stickToWindowInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverStickToWindow", required: false }] }], popoverContainerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverContainer", required: false }] }], popoverHasBackdropInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverHasBackdrop", required: false }] }], popoverBackdropClassInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverBackdropClass", required: false }] }], popoverDefaultPaddingsInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverDefaultPaddings", required: false }] }], sizeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverSize", required: false }] }], customClassInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverClass", required: false }] }], headerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverHeader", required: false }] }], contentInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverContent", required: false }] }], footerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverFooter", required: false }] }], contextInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverContext", required: false }] }], ariaLabelInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverAriaLabel", required: false }] }], popoverHasCloseButtonInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverHasCloseButton", required: false }] }], popoverCloseOnScrollInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverCloseOnScroll", required: false }] }], arrowInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverArrow", required: false }] }], offsetInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverOffset", required: false }] }], autoFocusInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverAutoFocus", required: false }] }], popoverOriginInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverOrigin", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverDisabled", required: false }] }], popoverPlacementPriorityInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverPlacementPriority", required: false }] }], popoverPlacementInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverPlacement", required: false }] }], popoverVisibleInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverVisible", required: false }] }] } });
|
|
496
860
|
|
|
497
|
-
|
|
498
|
-
|
|
861
|
+
/**
|
|
862
|
+
* Overrides the question of every confirmation popover in the injector scope. Takes precedence over the
|
|
863
|
+
* locale, but not over the `kbqPopoverConfirmText` input.
|
|
864
|
+
*/
|
|
865
|
+
const KBQ_POPOVER_CONFIRM_TEXT = new InjectionToken('KbqPopoverConfirmText');
|
|
866
|
+
/**
|
|
867
|
+
* Overrides the confirm-button caption of every confirmation popover in the injector scope. Takes precedence
|
|
868
|
+
* over the locale, but not over the `kbqPopoverConfirmButtonText` input.
|
|
869
|
+
*/
|
|
870
|
+
const KBQ_POPOVER_CONFIRM_BUTTON_TEXT = new InjectionToken('KbqPopoverConfirmButtonText');
|
|
499
871
|
class KbqPopoverConfirmComponent extends KbqPopoverComponent {
|
|
500
872
|
constructor() {
|
|
501
873
|
super(...arguments);
|
|
874
|
+
/**
|
|
875
|
+
* Emits when the confirm button is pressed. Internal channel between the panel and its trigger — consume
|
|
876
|
+
* the trigger's `confirm` output instead.
|
|
877
|
+
*
|
|
878
|
+
* @docs-private
|
|
879
|
+
*/
|
|
502
880
|
this.onConfirm = new Subject();
|
|
881
|
+
this.confirmButtonTextState = signal(undefined, ...(ngDevMode ? [{ debugName: "confirmButtonTextState" }] : /* istanbul ignore next */ []));
|
|
882
|
+
this.confirmTextState = signal(undefined, ...(ngDevMode ? [{ debugName: "confirmTextState" }] : /* istanbul ignore next */ []));
|
|
883
|
+
}
|
|
884
|
+
/** Caption of the confirm button. Written by the trigger. */
|
|
885
|
+
get confirmButtonText() {
|
|
886
|
+
return this.confirmButtonTextState();
|
|
887
|
+
}
|
|
888
|
+
set confirmButtonText(value) {
|
|
889
|
+
this.confirmButtonTextState.set(value);
|
|
890
|
+
}
|
|
891
|
+
/** Question rendered in the panel. Written by the trigger. */
|
|
892
|
+
get confirmText() {
|
|
893
|
+
return this.confirmTextState();
|
|
503
894
|
}
|
|
504
|
-
|
|
505
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.30", type: KbqPopoverConfirmComponent, isStandalone: true, selector: "kbq-popover-confirm-component", usesInheritance: true, ngImport: i0, template: "<div\n cdkTrapFocus=\"true\"\n cdkTrapFocusAutoCapture=\"true\"\n class=\"kbq-popover-confirm kbq-popover\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"'contrast'\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n <div class=\"kbq-popover__arrow\"></div>\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}@media(prefers-reduced-motion:reduce){.kbq-progress:after{animation:none}}.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top);--kbq-popover-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }], animations: [kbqPopoverAnimations.popoverState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
895
|
+
set confirmText(value) {
|
|
896
|
+
this.confirmTextState.set(value);
|
|
897
|
+
}
|
|
898
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverConfirmComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
899
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqPopoverConfirmComponent, isStandalone: true, selector: "kbq-popover-confirm-component", providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, usesInheritance: true, ngImport: i0, template: "<div\n #popover\n role=\"dialog\"\n class=\"kbq-popover-confirm kbq-popover\"\n [attr.aria-label]=\"confirmText\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\" [class.kbq-popover__content_default-paddings]=\"defaultPaddings\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"componentColors.Contrast\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-inline-start:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-end-start-radius:0;border-end-end-radius:0;border-start-end-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){corner-shape:squircle;border-start-end-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){corner-shape:squircle;border-end-start-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-end-start-radius:0;border-end-end-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-start-end-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover{box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1;opacity:0;transform:scaleY(.8)}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover.kbq-popover_visible{opacity:1;transform:none;transition:opacity .12s cubic-bezier(0,0,.2,1),transform .12s cubic-bezier(0,0,.2,1)}.kbq-popover.kbq-popover_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-popover.kbq-popover_visible{animation:none;transition:none}}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover__container{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__close-container_without-header .kbq-popover__close{top:0;inset-inline-end:0;transform:translateY(-50%) translate(50%)}[dir=rtl] .kbq-popover__close-container_without-header .kbq-popover__close{transform:translateY(-50%) translate(-50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-inline-end:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);inset-inline-end:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-popover__close{corner-shape:squircle;border-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
506
900
|
}
|
|
507
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
901
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverConfirmComponent, decorators: [{
|
|
508
902
|
type: Component,
|
|
509
903
|
args: [{ selector: 'kbq-popover-confirm-component', imports: [
|
|
510
904
|
CdkTrapFocus,
|
|
511
905
|
KbqButtonModule
|
|
512
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [kbqPopoverAnimations.popoverState], preserveWhitespaces: false, template: "<div\n cdkTrapFocus=\"true\"\n cdkTrapFocusAutoCapture=\"true\"\n class=\"kbq-popover-confirm kbq-popover\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"'contrast'\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n <div class=\"kbq-popover__arrow\"></div>\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}@media(prefers-reduced-motion:reduce){.kbq-progress:after{animation:none}}.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top);--kbq-popover-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"] }]
|
|
906
|
+
], providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, template: "<div\n #popover\n role=\"dialog\"\n class=\"kbq-popover-confirm kbq-popover\"\n [attr.aria-label]=\"confirmText\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\" [class.kbq-popover__content_default-paddings]=\"defaultPaddings\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"componentColors.Contrast\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-inline-start:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-end-start-radius:0;border-end-end-radius:0;border-start-end-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){corner-shape:squircle;border-start-end-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){corner-shape:squircle;border-end-start-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-end-start-radius:0;border-end-end-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-start-end-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover{box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1;opacity:0;transform:scaleY(.8)}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover.kbq-popover_visible{opacity:1;transform:none;transition:opacity .12s cubic-bezier(0,0,.2,1),transform .12s cubic-bezier(0,0,.2,1)}.kbq-popover.kbq-popover_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-popover.kbq-popover_visible{animation:none;transition:none}}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover__container{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__close-container_without-header .kbq-popover__close{top:0;inset-inline-end:0;transform:translateY(-50%) translate(50%)}[dir=rtl] .kbq-popover__close-container_without-header .kbq-popover__close{transform:translateY(-50%) translate(-50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-inline-end:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);inset-inline-end:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-popover__close{corner-shape:squircle;border-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"] }]
|
|
513
907
|
}] });
|
|
514
908
|
class KbqPopoverConfirmTrigger extends KbqPopoverTrigger {
|
|
515
|
-
|
|
516
|
-
|
|
909
|
+
/**
|
|
910
|
+
* Input (`kbqPopoverConfirmText`) — question rendered in the panel. Falls back to
|
|
911
|
+
* {@link KBQ_POPOVER_CONFIRM_TEXT} and then to the `popoverConfirm` section of the active locale while
|
|
912
|
+
* unset or `undefined`.
|
|
913
|
+
*/
|
|
517
914
|
get confirmText() {
|
|
518
|
-
return this._confirmText;
|
|
915
|
+
return this._confirmText() ?? this.externalConfirmText ?? this.localeConfiguration().confirmText;
|
|
519
916
|
}
|
|
520
917
|
set confirmText(value) {
|
|
521
|
-
this._confirmText
|
|
918
|
+
this._confirmText.set(value);
|
|
522
919
|
this.updateData();
|
|
523
920
|
}
|
|
524
|
-
|
|
525
|
-
|
|
921
|
+
/**
|
|
922
|
+
* Input (`kbqPopoverConfirmButtonText`) — caption of the confirm button. Falls back to
|
|
923
|
+
* {@link KBQ_POPOVER_CONFIRM_BUTTON_TEXT} and then to the `popoverConfirm` section of the active locale
|
|
924
|
+
* while unset or `undefined`.
|
|
925
|
+
*/
|
|
526
926
|
get confirmButtonText() {
|
|
527
|
-
return this._confirmButtonText;
|
|
927
|
+
return (this._confirmButtonText() ?? this.externalConfirmButtonText ?? this.localeConfiguration().confirmButtonText);
|
|
528
928
|
}
|
|
529
929
|
set confirmButtonText(value) {
|
|
530
|
-
this._confirmButtonText
|
|
930
|
+
this._confirmButtonText.set(value);
|
|
531
931
|
this.updateData();
|
|
532
932
|
}
|
|
933
|
+
ngOnChanges(changes) {
|
|
934
|
+
super.ngOnChanges(changes);
|
|
935
|
+
// A bound input is handed to its member, a bound `undefined` restoring the
|
|
936
|
+
// fallback; unbound, it leaves what code wrote.
|
|
937
|
+
if (changes['confirmTextInput']) {
|
|
938
|
+
this.confirmText = this.confirmTextInput();
|
|
939
|
+
}
|
|
940
|
+
if (changes['confirmButtonTextInput']) {
|
|
941
|
+
this.confirmButtonText = this.confirmButtonTextInput();
|
|
942
|
+
}
|
|
943
|
+
}
|
|
533
944
|
constructor() {
|
|
534
|
-
const confirmText = inject(KBQ_POPOVER_CONFIRM_TEXT, { optional: true });
|
|
535
|
-
const confirmButtonText = inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT, { optional: true });
|
|
536
945
|
super();
|
|
946
|
+
/** Emits when the user confirms the action. */
|
|
537
947
|
this.confirm = output();
|
|
538
|
-
this.
|
|
539
|
-
this.
|
|
540
|
-
this.
|
|
948
|
+
this.localeConfiguration = kbqInjectPopoverConfirmLocaleConfiguration();
|
|
949
|
+
this.externalConfirmText = inject(KBQ_POPOVER_CONFIRM_TEXT, { optional: true });
|
|
950
|
+
this.externalConfirmButtonText = inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT, { optional: true });
|
|
951
|
+
this._confirmText = signal(undefined, ...(ngDevMode ? [{ debugName: "_confirmText" }] : /* istanbul ignore next */ []));
|
|
952
|
+
this._confirmButtonText = signal(undefined, ...(ngDevMode ? [{ debugName: "_confirmButtonText" }] : /* istanbul ignore next */ []));
|
|
953
|
+
/** Panel the confirm handler is currently wired to, so it is wired once per attach. */
|
|
954
|
+
this.wiredInstance = null;
|
|
955
|
+
/** @docs-private */
|
|
956
|
+
this.confirmTextInput = input(undefined, { ...(ngDevMode ? { debugName: "confirmTextInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverConfirmText' });
|
|
957
|
+
/** @docs-private */
|
|
958
|
+
this.confirmButtonTextInput = input(undefined, { ...(ngDevMode ? { debugName: "confirmButtonTextInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverConfirmButtonText' });
|
|
959
|
+
// The strings are resolved from signals (input, token, locale), so switching the locale while the
|
|
960
|
+
// popover is open has to reach the live panel — `updateData` alone only runs on input writes.
|
|
961
|
+
effect(() => {
|
|
962
|
+
const confirmText = this.confirmText;
|
|
963
|
+
const confirmButtonText = this.confirmButtonText;
|
|
964
|
+
if (!this.instance)
|
|
965
|
+
return;
|
|
966
|
+
this.instance.confirmText = confirmText;
|
|
967
|
+
this.instance.confirmButtonText = confirmButtonText;
|
|
968
|
+
});
|
|
541
969
|
}
|
|
970
|
+
/** @docs-private */
|
|
542
971
|
updateData() {
|
|
543
972
|
if (!this.instance) {
|
|
544
973
|
return;
|
|
545
974
|
}
|
|
975
|
+
// Before `super.updateData()`, which renders the panel. Untracked as there: the texts follow the inputs and the
|
|
976
|
+
// locale.
|
|
977
|
+
untracked(() => {
|
|
978
|
+
this.instance.confirmButtonText = this.confirmButtonText;
|
|
979
|
+
this.instance.confirmText = this.confirmText;
|
|
980
|
+
});
|
|
546
981
|
super.updateData();
|
|
547
|
-
this.
|
|
548
|
-
|
|
549
|
-
|
|
982
|
+
if (this.wiredInstance !== this.instance) {
|
|
983
|
+
this.wiredInstance = this.instance;
|
|
984
|
+
this.setupButtonEvents();
|
|
985
|
+
}
|
|
550
986
|
}
|
|
987
|
+
/**
|
|
988
|
+
* Subscribes to the panel's confirm button. Called once per attach: the subscription is scoped to the
|
|
989
|
+
* panel, so it dies with it.
|
|
990
|
+
*
|
|
991
|
+
* @docs-private
|
|
992
|
+
*/
|
|
551
993
|
setupButtonEvents() {
|
|
552
|
-
this.instance.onConfirm.pipe(takeUntilDestroyed(this.
|
|
553
|
-
// TODO: The 'emit' function requires a mandatory void argument
|
|
994
|
+
this.instance.onConfirm.pipe(takeUntilDestroyed(this.instanceDestroyRef)).subscribe(() => {
|
|
554
995
|
this.confirm.emit();
|
|
555
996
|
this.hide();
|
|
556
997
|
});
|
|
557
998
|
}
|
|
999
|
+
/** @docs-private */
|
|
558
1000
|
getOverlayHandleComponentType() {
|
|
559
1001
|
return KbqPopoverConfirmComponent;
|
|
560
1002
|
}
|
|
561
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
562
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
1003
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverConfirmTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1004
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqPopoverConfirmTrigger, isStandalone: true, selector: "[kbqPopoverConfirm]", inputs: { confirmTextInput: { classPropertyName: "confirmTextInput", publicName: "kbqPopoverConfirmText", isSignal: true, isRequired: false, transformFunction: null }, confirmButtonTextInput: { classPropertyName: "confirmButtonTextInput", publicName: "kbqPopoverConfirmButtonText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { confirm: "confirm" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()" }, properties: { "class.kbq-popover_open": "isOpen", "attr.aria-expanded": "hasClickTrigger ? isOpen : null", "attr.aria-haspopup": "hasClickTrigger ? \"dialog\" : null", "attr.aria-controls": "hasClickTrigger && isOpen ? panelId : null" } }, providers: [kbqSiblingPopupProvider(KbqPopoverConfirmTrigger)], exportAs: ["kbqPopoverConfirm"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
563
1005
|
}
|
|
564
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1006
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverConfirmTrigger, decorators: [{
|
|
565
1007
|
type: Directive,
|
|
566
1008
|
args: [{
|
|
567
1009
|
selector: '[kbqPopoverConfirm]',
|
|
@@ -570,69 +1012,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
570
1012
|
providers: [kbqSiblingPopupProvider(KbqPopoverConfirmTrigger)],
|
|
571
1013
|
host: {
|
|
572
1014
|
'[class.kbq-popover_open]': 'isOpen',
|
|
1015
|
+
'[attr.aria-expanded]': 'hasClickTrigger ? isOpen : null',
|
|
1016
|
+
'[attr.aria-haspopup]': 'hasClickTrigger ? "dialog" : null',
|
|
1017
|
+
'[attr.aria-controls]': 'hasClickTrigger && isOpen ? panelId : null',
|
|
573
1018
|
'(keydown)': 'keydownHandler($event)',
|
|
574
1019
|
'(touchend)': 'touchendHandler()'
|
|
575
1020
|
},
|
|
576
1021
|
exportAs: 'kbqPopoverConfirm'
|
|
577
1022
|
}]
|
|
578
|
-
}], ctorParameters: () => [], propDecorators: { confirm: [{ type: i0.Output, args: ["confirm"] }],
|
|
579
|
-
type: Input,
|
|
580
|
-
args: ['kbqPopoverConfirmText']
|
|
581
|
-
}], confirmButtonText: [{
|
|
582
|
-
type: Input,
|
|
583
|
-
args: ['kbqPopoverConfirmButtonText']
|
|
584
|
-
}] } });
|
|
1023
|
+
}], ctorParameters: () => [], propDecorators: { confirm: [{ type: i0.Output, args: ["confirm"] }], confirmTextInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverConfirmText", required: false }] }], confirmButtonTextInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverConfirmButtonText", required: false }] }] } });
|
|
585
1024
|
|
|
586
1025
|
class KbqPopoverModule {
|
|
587
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
588
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
589
|
-
|
|
590
|
-
A11yModule,
|
|
591
|
-
KbqIconModule,
|
|
592
|
-
CdkObserveContent,
|
|
593
|
-
NgTemplateOutlet,
|
|
594
|
-
KbqPopoverComponent,
|
|
595
|
-
KbqPopoverTrigger,
|
|
596
|
-
KbqPopoverConfirmComponent,
|
|
597
|
-
KbqPopoverConfirmTrigger], exports: [KbqPopoverComponent,
|
|
598
|
-
KbqPopoverTrigger,
|
|
599
|
-
KbqPopoverConfirmComponent,
|
|
600
|
-
KbqPopoverConfirmTrigger] }); }
|
|
601
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverModule, providers: [
|
|
602
|
-
{ provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },
|
|
603
|
-
{ provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }
|
|
604
|
-
], imports: [OverlayModule,
|
|
605
|
-
KbqButtonModule,
|
|
606
|
-
A11yModule,
|
|
607
|
-
KbqIconModule,
|
|
608
|
-
KbqPopoverComponent,
|
|
609
|
-
KbqPopoverConfirmComponent] }); }
|
|
1026
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1027
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverModule, imports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger], exports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger] }); }
|
|
1028
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverModule, imports: [KbqPopoverComponent, KbqPopoverConfirmComponent] }); }
|
|
610
1029
|
}
|
|
611
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1030
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverModule, decorators: [{
|
|
612
1031
|
type: NgModule,
|
|
613
1032
|
args: [{
|
|
614
|
-
imports: [
|
|
615
|
-
|
|
616
|
-
KbqButtonModule,
|
|
617
|
-
A11yModule,
|
|
618
|
-
KbqIconModule,
|
|
619
|
-
CdkObserveContent,
|
|
620
|
-
NgTemplateOutlet,
|
|
621
|
-
KbqPopoverComponent,
|
|
622
|
-
KbqPopoverTrigger,
|
|
623
|
-
KbqPopoverConfirmComponent,
|
|
624
|
-
KbqPopoverConfirmTrigger
|
|
625
|
-
],
|
|
626
|
-
providers: [
|
|
627
|
-
{ provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },
|
|
628
|
-
{ provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }
|
|
629
|
-
],
|
|
630
|
-
exports: [
|
|
631
|
-
KbqPopoverComponent,
|
|
632
|
-
KbqPopoverTrigger,
|
|
633
|
-
KbqPopoverConfirmComponent,
|
|
634
|
-
KbqPopoverConfirmTrigger
|
|
635
|
-
]
|
|
1033
|
+
imports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger],
|
|
1034
|
+
exports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger]
|
|
636
1035
|
}]
|
|
637
1036
|
}] });
|
|
638
1037
|
|
|
@@ -640,5 +1039,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
640
1039
|
* Generated bundle index. Do not edit.
|
|
641
1040
|
*/
|
|
642
1041
|
|
|
643
|
-
export { KBQ_POPOVER_CONFIRM_BUTTON_TEXT, KBQ_POPOVER_CONFIRM_TEXT, KBQ_POPOVER_SCROLL_STRATEGY, KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER, KbqPopoverComponent, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger, KbqPopoverModule, KbqPopoverTrigger,
|
|
1042
|
+
export { KBQ_POPOVER_CONFIRM_BUTTON_TEXT, KBQ_POPOVER_CONFIRM_TEXT, KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, KBQ_POPOVER_SCROLL_STRATEGY, KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER, KbqPopoverComponent, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger, KbqPopoverModule, KbqPopoverTrigger, defaultHoverLeaveDelay, defaultOffsetYWithArrow, kbqPopoverScrollStrategyFactory };
|
|
644
1043
|
//# sourceMappingURL=koobiq-components-popover.mjs.map
|