@koobiq/components 20.4.2 → 21.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-trigger.scss +3 -10
- package/accordion/accordion.scss +4 -6
- package/actions-panel/actions-panel-container.scss +45 -1
- package/alert/alert.component.scss +3 -2
- package/app-switcher/_app-switcher-theme.scss +0 -4
- package/app-switcher/app-switcher-dropdown-app.scss +3 -2
- package/app-switcher/app-switcher-dropdown-site.scss +2 -1
- package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
- package/app-switcher/app-switcher-tokens.scss +15 -0
- package/app-switcher/app-switcher.scss +14 -4
- package/autocomplete/autocomplete.scss +7 -6
- package/badge/badge.component.scss +5 -8
- package/breadcrumbs/breadcrumbs.scss +25 -10
- package/button/_button-base.scss +30 -7
- package/button/_button-theme.scss +16 -0
- package/button/button-group.scss +7 -0
- package/button/button-tokens.scss +0 -2
- package/button/button.scss +34 -2
- package/button-toggle/_button-toggle-theme.scss +7 -2
- package/button-toggle/button-toggle.scss +65 -15
- package/checkbox/_checkbox-theme.scss +4 -3
- package/checkbox/checkbox.scss +3 -6
- package/clamped-text/clamped-text.scss +6 -2
- package/code-block/code-block-tokens.scss +0 -224
- package/code-block/code-block.scss +20 -9
- package/content-panel/content-panel-aside.scss +3 -2
- package/content-panel/content-panel-container.scss +37 -0
- package/content-panel/content-panel.scss +4 -3
- package/core/highlight/_highlight-theme.scss +3 -1
- package/core/option/action-container.scss +2 -2
- package/core/option/action.scss +2 -1
- package/core/option/option.scss +2 -1
- package/core/pop-up/_pop-up.scss +0 -37
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
- package/core/styles/_core.scss +3 -0
- package/core/styles/_koobiq-theme.scss +5 -6
- package/core/styles/common/_animation.scss +44 -16
- package/core/styles/common/_groups-mixins.scss +21 -19
- package/core/styles/common/_groups.scss +4 -32
- package/core/styles/common/_index.scss +0 -2
- package/core/styles/common/_link.scss +117 -0
- package/core/styles/common/_list.scss +0 -26
- package/core/styles/common/_overlay.scss +8 -10
- package/core/styles/common/_rtl.scss +0 -14
- package/core/styles/common/_select.scss +33 -15
- package/core/styles/common/_squircle.scss +63 -0
- package/core/styles/common/_tokens.scss +0 -11
- package/core/styles/common/_vendor-prefixes.scss +0 -20
- package/core/styles/functions/_timing.scss +0 -22
- package/core/styles/theming/_scrollbar-theme.scss +6 -1
- package/core/styles/theming/_theming.scss +13 -65
- package/core/styles/typography/_index.scss +0 -1
- package/core/styles/typography/_typography.scss +0 -143
- package/core/styles/visual/_body.scss +1 -6
- package/core/styles/visual/_layout.scss +0 -12
- package/datepicker/calendar-body.scss +3 -1
- package/datepicker/calendar-header.scss +0 -1
- package/datepicker/datepicker-content.scss +33 -1
- package/datepicker/datepicker-toggle.scss +0 -38
- package/dl/dl-tokens.scss +10 -0
- package/dl/dl.scss +113 -13
- package/dropdown/_dropdown-theme.scss +4 -16
- package/dropdown/dropdown-item.scss +4 -10
- package/dropdown/dropdown.scss +2 -1
- package/empty-state/_empty-state-theme.scss +10 -4
- package/empty-state/empty-state-tokens.scss +4 -4
- package/empty-state/empty-state.scss +4 -0
- package/fesm2022/koobiq-components-accordion.mjs +347 -229
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +39 -39
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +46 -48
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +332 -116
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +172 -132
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +791 -609
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +260 -143
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +4342 -1595
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +73 -36
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +447 -89
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +703 -599
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
- package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +116 -60
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +550 -290
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +2871 -2595
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +79 -24
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +389 -525
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +400 -149
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +601 -459
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
- package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-link.mjs +328 -125
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +583 -433
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +55 -78
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +853 -475
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +895 -556
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +680 -310
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +684 -285
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +450 -231
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +127 -21
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +883 -693
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +207 -88
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +815 -41
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +109 -88
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
- package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +890 -501
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +63 -49
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +1062 -603
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +886 -733
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +213 -185
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +299 -147
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +233 -245
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +344 -142
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +229 -145
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +463 -143
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +177 -130
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +657 -214
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +61 -32
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +734 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1700 -617
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +290 -135
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/dropzone.scss +31 -3
- package/file-upload/file-upload-tokens.scss +2 -22
- package/file-upload/file-upload.scss +6 -0
- package/file-upload/multiple-file-upload.component.scss +14 -12
- package/file-upload/single-file-upload.component.scss +3 -2
- package/filter-bar/filters.scss +7 -0
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +8 -1
- package/flag/flag-tokens.scss +22 -0
- package/flag/flag.scss +34 -21
- package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
- package/form-field/_form-field-theme.scss +4 -9
- package/form-field/cleaner.scss +3 -1
- package/form-field/fieldset.scss +3 -4
- package/form-field/form-field.scss +26 -21
- package/form-field/password-toggle.scss +3 -1
- package/icon/_icon-button-theme.scss +7 -0
- package/icon/_icon-theme.scss +10 -7
- package/icon/icon-button.scss +0 -2
- package/icon/icon-tokens.scss +12 -9
- package/inline-edit/inline-edit.scss +40 -54
- package/input/input.scss +4 -0
- package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
- package/link/deprecated/link-tokens.scss +27 -0
- package/link/link-tokens.scss +6 -25
- package/link/link.scss +137 -0
- package/list/list.scss +3 -2
- package/loader-overlay/_loader-overlay-theme.scss +19 -10
- package/loader-overlay/loader-overlay-tokens.scss +0 -2
- package/loader-overlay/loader-overlay.scss +7 -1
- package/markdown/_markdown-theme.scss +16 -0
- package/markdown/markdown-tokens.scss +5 -0
- package/markdown/markdown.scss +2 -1
- package/modal/_modal-animation.scss +23 -14
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal.scss +35 -31
- package/navbar/_navbar-item_horizontal.scss +8 -6
- package/navbar/_navbar-item_vertical.scss +18 -6
- package/navbar/_navbar-theme.scss +9 -1
- package/navbar/navbar-brand.scss +8 -6
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.scss +8 -9
- package/navbar/navbar-toggle.scss +3 -3
- package/navbar/navbar-tokens.scss +14 -0
- package/navbar/navbar.scss +1 -2
- package/navbar/vertical-navbar.scss +2 -2
- package/notification-center/_notification-center-theme.scss +11 -6
- package/notification-center/notification-center-tokens.scss +33 -0
- package/notification-center/notification-center.scss +58 -20
- package/notification-center/notification-item.scss +15 -6
- package/package.json +112 -81
- package/popover/popover-tokens.scss +0 -2
- package/popover/popover.scss +41 -19
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +20 -3
- package/progress-bar/progress-bar-tokens.scss +3 -0
- package/progress-bar/progress-bar.scss +36 -8
- package/progress-spinner/progress-spinner.scss +4 -3
- package/radio/_radio-theme.scss +21 -4
- package/radio/radio-tokens.scss +7 -3
- package/radio/radio.scss +55 -8
- package/schematics/collection.json +415 -18
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.cjs +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
- package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
- package/schematics/migrations/actions-panel-overlay-container/data.cjs +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.cjs +55 -0
- package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
- package/schematics/migrations/alert-signals/README.md +13 -7
- package/schematics/migrations/alert-signals/{data.js → data.cjs} +3 -0
- package/schematics/migrations/alert-signals/index.cjs +221 -0
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.cjs +150 -0
- package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
- package/schematics/migrations/angular-animations-removal/schema.json +15 -0
- package/schematics/migrations/app-switcher-signals/README.md +88 -0
- package/schematics/migrations/app-switcher-signals/data.cjs +136 -0
- package/schematics/migrations/app-switcher-signals/index.cjs +366 -0
- package/schematics/migrations/app-switcher-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
- package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.cjs +149 -0
- package/schematics/migrations/autocomplete-signals/index.cjs +707 -0
- package/schematics/migrations/autocomplete-signals/schema.json +20 -0
- package/schematics/migrations/badge-signals/README.md +77 -0
- package/schematics/migrations/badge-signals/data.cjs +109 -0
- package/schematics/migrations/badge-signals/index.cjs +694 -0
- package/schematics/migrations/badge-signals/schema.json +20 -0
- package/schematics/migrations/button-state-and-styles/README.md +129 -0
- package/schematics/migrations/button-state-and-styles/data.cjs +136 -0
- package/schematics/migrations/button-state-and-styles/index.cjs +221 -0
- package/schematics/migrations/button-state-and-styles/schema.json +20 -0
- package/schematics/migrations/button-supported-colors/README.md +73 -0
- package/schematics/migrations/button-supported-colors/data.cjs +106 -0
- package/schematics/migrations/button-supported-colors/index.cjs +261 -0
- package/schematics/migrations/button-supported-colors/schema.json +20 -0
- package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
- package/schematics/migrations/button-toggle-signals-and-aria/data.cjs +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.cjs +497 -0
- package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/button-truncation/README.md +110 -0
- package/schematics/migrations/button-truncation/data.cjs +88 -0
- package/schematics/migrations/button-truncation/index.cjs +270 -0
- package/schematics/migrations/button-truncation/schema.json +20 -0
- package/schematics/migrations/checkbox-signals/README.md +76 -0
- package/schematics/migrations/checkbox-signals/data.cjs +114 -0
- package/schematics/migrations/checkbox-signals/index.cjs +635 -0
- package/schematics/migrations/checkbox-signals/schema.json +20 -0
- package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
- package/schematics/migrations/clamped-text-disclosure/data.cjs +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.cjs +60 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
- package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
- package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
- package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.cjs +121 -0
- package/schematics/migrations/code-block-signals/index.cjs +701 -0
- package/schematics/migrations/code-block-signals/schema.json +20 -0
- package/schematics/migrations/color-signals/README.md +46 -0
- package/schematics/migrations/color-signals/data.cjs +131 -0
- package/schematics/migrations/color-signals/index.cjs +20 -0
- package/schematics/migrations/color-signals/schema.json +20 -0
- package/schematics/migrations/core-mixins-removal/README.md +20 -0
- package/schematics/migrations/core-mixins-removal/data.cjs +27 -0
- package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
- package/schematics/migrations/core-mixins-removal/schema.json +15 -0
- package/schematics/migrations/css-selectors/README.md +2 -2
- package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.cjs +49 -0
- package/schematics/migrations/datepicker-signals/index.cjs +18 -0
- package/schematics/migrations/datepicker-signals/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +2 -2
- package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +8 -7
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.cjs +60 -0
- package/schematics/migrations/design-tokens-v4/schema.json +15 -0
- package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
- package/schematics/migrations/divider-signals-and-aria/data.cjs +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.cjs +212 -0
- package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
- package/schematics/migrations/dl-attribute-coercion/data.cjs +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.cjs +162 -0
- package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
- package/schematics/migrations/dl-standalone-names/README.md +49 -0
- package/schematics/migrations/dl-standalone-names/data.cjs +44 -0
- package/schematics/migrations/dl-standalone-names/index.cjs +322 -0
- package/schematics/migrations/dl-standalone-names/schema.json +20 -0
- package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
- package/schematics/migrations/dropdown-demote-overlay/data.cjs +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.cjs +289 -0
- package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
- package/schematics/migrations/dropdown-signals/README.md +83 -0
- package/schematics/migrations/dropdown-signals/data.cjs +152 -0
- package/schematics/migrations/dropdown-signals/index.cjs +20 -0
- package/schematics/migrations/dropdown-signals/schema.json +20 -0
- package/schematics/migrations/empty-state-error-color/README.md +84 -0
- package/schematics/migrations/empty-state-error-color/data.cjs +85 -0
- package/schematics/migrations/empty-state-error-color/index.cjs +72 -0
- package/schematics/migrations/empty-state-error-color/schema.json +15 -0
- package/schematics/migrations/empty-state-size-attr/README.md +2 -2
- package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.cjs +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.cjs +61 -0
- package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
- package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
- package/schematics/migrations/file-upload-deprecated-outputs/data.cjs +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.cjs +71 -0
- package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
- package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
- package/schematics/migrations/filter-bar-rename-action/data.cjs +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.cjs +178 -0
- package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
- package/schematics/migrations/filter-bar-signals/README.md +27 -16
- package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +1 -2
- package/schematics/migrations/filter-bar-signals/index.cjs +225 -0
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.cjs +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.cjs +62 -0
- package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
- package/schematics/migrations/flag-inner-html/README.md +67 -0
- package/schematics/migrations/flag-inner-html/data.cjs +58 -0
- package/schematics/migrations/flag-inner-html/index.cjs +62 -0
- package/schematics/migrations/flag-inner-html/schema.json +15 -0
- package/schematics/migrations/form-field-signals/README.md +125 -0
- package/schematics/migrations/form-field-signals/data.cjs +288 -0
- package/schematics/migrations/form-field-signals/index.cjs +383 -0
- package/schematics/migrations/form-field-signals/schema.json +20 -0
- package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
- package/schematics/migrations/icon-semantics-and-api/data.cjs +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.cjs +65 -0
- package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
- package/schematics/migrations/icons-replacement/README.md +5 -5
- package/schematics/migrations/icons-replacement/{index.js → index.cjs} +4 -3
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.cjs +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.cjs +98 -0
- package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
- package/schematics/migrations/input-number-surface/README.md +140 -0
- package/schematics/migrations/input-number-surface/data.cjs +135 -0
- package/schematics/migrations/input-number-surface/index.cjs +293 -0
- package/schematics/migrations/input-number-surface/schema.json +20 -0
- package/schematics/migrations/input-signals/README.md +20 -0
- package/schematics/migrations/input-signals/data.cjs +30 -0
- package/schematics/migrations/input-signals/index.cjs +18 -0
- package/schematics/migrations/input-signals/schema.json +15 -0
- package/schematics/migrations/link-deprecated-path/README.md +144 -0
- package/schematics/migrations/link-deprecated-path/index.cjs +20 -0
- package/schematics/migrations/link-deprecated-path/schema.json +20 -0
- package/schematics/migrations/link-signals/README.md +71 -0
- package/schematics/migrations/link-signals/data.cjs +116 -0
- package/schematics/migrations/link-signals/index.cjs +416 -0
- package/schematics/migrations/link-signals/schema.json +20 -0
- package/schematics/migrations/list-signals/README.md +22 -0
- package/schematics/migrations/list-signals/data.cjs +35 -0
- package/schematics/migrations/list-signals/index.cjs +18 -0
- package/schematics/migrations/list-signals/schema.json +15 -0
- package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
- package/schematics/migrations/list-tree-multiple-input/data.cjs +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.cjs +222 -0
- package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
- package/schematics/migrations/loader-overlay-signals/README.md +62 -0
- package/schematics/migrations/loader-overlay-signals/data.cjs +101 -0
- package/schematics/migrations/loader-overlay-signals/index.cjs +698 -0
- package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
- package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
- package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.cjs +257 -0
- package/schematics/migrations/locale-configuration-providers/index.cjs +295 -0
- package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
- package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
- package/schematics/migrations/mandatory-peer-dependencies/index.cjs +43 -0
- package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
- package/schematics/migrations/markdown-signals/README.md +58 -0
- package/schematics/migrations/markdown-signals/data.cjs +79 -0
- package/schematics/migrations/markdown-signals/index.cjs +640 -0
- package/schematics/migrations/markdown-signals/schema.json +20 -0
- package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
- package/schematics/migrations/modal-dialog-semantics/data.cjs +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.cjs +59 -0
- package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
- package/schematics/migrations/modal-signals/README.md +88 -0
- package/schematics/migrations/modal-signals/data.cjs +132 -0
- package/schematics/migrations/modal-signals/index.cjs +20 -0
- package/schematics/migrations/modal-signals/schema.json +20 -0
- package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
- package/schematics/migrations/navbar-signals-and-aria/data.cjs +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.cjs +569 -0
- package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/new-icons-pack/README.md +10 -10
- package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +8 -7
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.cjs +66 -0
- package/schematics/migrations/notification-center-signals/index.cjs +62 -0
- package/schematics/migrations/notification-center-signals/schema.json +15 -0
- package/schematics/migrations/option-signals/README.md +37 -0
- package/schematics/migrations/option-signals/data.cjs +86 -0
- package/schematics/migrations/option-signals/index.cjs +20 -0
- package/schematics/migrations/option-signals/schema.json +20 -0
- package/schematics/migrations/popover-leave-delay/README.md +51 -0
- package/schematics/migrations/popover-leave-delay/data.cjs +61 -0
- package/schematics/migrations/popover-leave-delay/index.cjs +55 -0
- package/schematics/migrations/popover-leave-delay/schema.json +15 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/data.cjs +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.cjs +59 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
- package/schematics/migrations/progress-spinner-signals/README.md +72 -0
- package/schematics/migrations/progress-spinner-signals/data.cjs +83 -0
- package/schematics/migrations/progress-spinner-signals/index.cjs +695 -0
- package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
- package/schematics/migrations/query-list-signals/README.md +32 -0
- package/schematics/migrations/query-list-signals/data.cjs +70 -0
- package/schematics/migrations/query-list-signals/index.cjs +18 -0
- package/schematics/migrations/query-list-signals/schema.json +15 -0
- package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
- package/schematics/migrations/radio-signals-and-aria/data.cjs +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.cjs +40 -0
- package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
- package/schematics/migrations/read-state-dwell-handlers/data.cjs +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.cjs +216 -0
- package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
- package/schematics/migrations/scrollbar-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
- package/schematics/migrations/select-signal-inputs/README.md +61 -0
- package/schematics/migrations/select-signal-inputs/data.cjs +99 -0
- package/schematics/migrations/select-signal-inputs/index.cjs +58 -0
- package/schematics/migrations/select-signal-inputs/schema.json +15 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/data.cjs +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.cjs +58 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
- package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
- package/schematics/migrations/signal-inputs-subclasses/data.cjs +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
- package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
- package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
- package/schematics/migrations/split-button-optional-disabled/data.cjs +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.cjs +58 -0
- package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
- package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
- package/schematics/migrations/splitter-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
- package/schematics/migrations/state-saving-default/README.md +67 -0
- package/schematics/migrations/state-saving-default/data.cjs +88 -0
- package/schematics/migrations/state-saving-default/index.cjs +63 -0
- package/schematics/migrations/state-saving-default/schema.json +15 -0
- package/schematics/migrations/table-cell-content/README.md +55 -0
- package/schematics/migrations/table-cell-content/data.cjs +66 -0
- package/schematics/migrations/table-cell-content/index.cjs +67 -0
- package/schematics/migrations/table-cell-content/schema.json +15 -0
- package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
- package/schematics/migrations/tabs-signals-and-aria/data.cjs +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.cjs +66 -0
- package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/tag-list-cleaner/README.md +58 -0
- package/schematics/migrations/tag-list-cleaner/data.cjs +42 -0
- package/schematics/migrations/tag-list-cleaner/index.cjs +197 -0
- package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
- package/schematics/migrations/tag-slots/README.md +41 -0
- package/schematics/migrations/tag-slots/index.cjs +191 -0
- package/schematics/migrations/tag-slots/schema.json +20 -0
- package/schematics/migrations/tags-signals/README.md +85 -0
- package/schematics/migrations/tags-signals/data.cjs +103 -0
- package/schematics/migrations/tags-signals/index.cjs +674 -0
- package/schematics/migrations/tags-signals/schema.json +20 -0
- package/schematics/migrations/textarea-signals/README.md +72 -0
- package/schematics/migrations/textarea-signals/data.cjs +121 -0
- package/schematics/migrations/textarea-signals/index.cjs +380 -0
- package/schematics/migrations/textarea-signals/schema.json +20 -0
- package/schematics/migrations/time-range-title-for/README.md +164 -0
- package/schematics/migrations/time-range-title-for/data.cjs +139 -0
- package/schematics/migrations/time-range-title-for/index.cjs +164 -0
- package/schematics/migrations/time-range-title-for/schema.json +20 -0
- package/schematics/migrations/timepicker-signals/README.md +78 -0
- package/schematics/migrations/timepicker-signals/data.cjs +82 -0
- package/schematics/migrations/timepicker-signals/index.cjs +710 -0
- package/schematics/migrations/timepicker-signals/schema.json +20 -0
- package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
- package/schematics/migrations/timezone-grouping-utils/data.cjs +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.cjs +65 -0
- package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
- package/schematics/migrations/title-encapsulation/README.md +49 -0
- package/schematics/migrations/title-encapsulation/data.cjs +69 -0
- package/schematics/migrations/title-encapsulation/index.cjs +58 -0
- package/schematics/migrations/title-encapsulation/schema.json +15 -0
- package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
- package/schematics/migrations/toast-stack-and-defaults/data.cjs +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.cjs +54 -0
- package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/data.cjs +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.cjs +61 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
- package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
- package/schematics/migrations/top-bar-container-selectors/data.cjs +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.cjs +85 -0
- package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
- package/schematics/migrations/tree-select-signals/README.md +61 -0
- package/schematics/migrations/tree-select-signals/data.cjs +106 -0
- package/schematics/migrations/tree-select-signals/index.cjs +59 -0
- package/schematics/migrations/tree-select-signals/schema.json +15 -0
- package/schematics/migrations/tree-signals/README.md +82 -0
- package/schematics/migrations/tree-signals/data.cjs +123 -0
- package/schematics/migrations/tree-signals/index.cjs +55 -0
- package/schematics/migrations/tree-signals/schema.json +15 -0
- package/schematics/migrations/tree-state-saving-default/README.md +66 -0
- package/schematics/migrations/tree-state-saving-default/data.cjs +78 -0
- package/schematics/migrations/tree-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
- package/schematics/migrations/username-pipe-injection/README.md +59 -0
- package/schematics/migrations/username-pipe-injection/data.cjs +78 -0
- package/schematics/migrations/username-pipe-injection/index.cjs +59 -0
- package/schematics/migrations/username-pipe-injection/schema.json +15 -0
- package/schematics/migrations/v20-upgrade/README.md +36 -16
- package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +124 -77
- package/schematics/migrations/v20-upgrade/index.cjs +19 -0
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.cjs +1371 -0
- package/schematics/migrations/v21-upgrade/index.cjs +95 -0
- package/schematics/migrations/v21-upgrade/schema.json +20 -0
- package/schematics/migrations/zoneless-change-detection/README.md +30 -0
- package/schematics/migrations/zoneless-change-detection/data.cjs +29 -0
- package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +401 -6
- package/schematics/ng-add/index.cjs +266 -0
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
- package/schematics/utils/deprecated-path-migration.cjs +62 -0
- package/schematics/utils/html-config.cjs +148 -0
- package/schematics/utils/{icon-migration.js → icon-migration.cjs} +2 -2
- package/schematics/utils/list-item-pattern.cjs +16 -0
- package/schematics/utils/{package-config.js → package-config.cjs} +3 -32
- package/schematics/utils/project-files.cjs +25 -0
- package/schematics/utils/replacement-driver.cjs +337 -0
- package/schematics/utils/safe-rule.cjs +23 -0
- package/schematics/utils/signal-members-migration.cjs +779 -0
- package/schematics/utils/tag-patterns.cjs +21 -0
- package/schematics/utils/template-ref-access.cjs +155 -0
- package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
- package/schematics/utils/warn-only-migration.cjs +52 -0
- package/schematics/utils/workspace-styles.cjs +123 -0
- package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
- package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
- package/scrollbar/native-scrollbar.scss +68 -0
- package/scrollbar/scrollbar-tokens.scss +13 -22
- package/scrollbar/scrollbar-track.scss +94 -0
- package/scrollbar/scrollbar-viewport.scss +33 -0
- package/scrollbar/scrollbar.scss +24 -0
- package/search-expandable/search-expandable-tokens.scss +4 -0
- package/search-expandable/search-expandable.scss +4 -2
- package/select/_select-theme.scss +3 -16
- package/select/select.scss +0 -6
- package/sidebar/sidebar.scss +20 -0
- package/sidepanel/_sidepanel-theme.scss +1 -1
- package/sidepanel/sidepanel-tokens.scss +7 -1
- package/sidepanel/sidepanel.scss +41 -5
- package/skeleton/skeleton-presets.scss +350 -0
- package/skeleton/skeleton-tokens.scss +127 -0
- package/skeleton/skeleton.scss +53 -45
- package/split-button/_split-button-theme.scss +4 -4
- package/split-button/split-button.scss +2 -6
- package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
- package/splitter/deprecated/splitter.scss +51 -0
- package/splitter/splitter-tokens.scss +19 -0
- package/splitter/splitter.scss +148 -28
- package/table/_table-theme.scss +13 -12
- package/table/table-tokens.scss +8 -0
- package/table/table.scss +47 -22
- package/tabs/_tabs-common.scss +14 -14
- package/tabs/_tabs-theme.scss +4 -5
- package/tabs/tab-body.scss +49 -1
- package/tabs/tab-header.scss +2 -1
- package/tags/tag-list.scss +4 -0
- package/tags/tag.scss +19 -1
- package/time-range/time-range.scss +9 -0
- package/timezone/timezone-option.component.scss +4 -7
- package/timezone/timezone-select.component.scss +3 -0
- package/toast/_toast-theme.scss +1 -4
- package/toast/toast-container.component.scss +19 -13
- package/toast/toast-tokens.scss +12 -6
- package/toast/toast.component.scss +42 -19
- package/toggle/_toggle-theme.scss +4 -10
- package/toggle/toggle.scss +67 -26
- package/tooltip/_tooltip-theme.scss +7 -1
- package/tooltip/tooltip-tokens.scss +1 -2
- package/tooltip/tooltip.scss +55 -9
- package/top-bar/top-bar-tokens.scss +13 -2
- package/top-bar/top-bar.scss +24 -19
- package/tree/_tree-theme.scss +0 -1
- package/tree/toggle.scss +5 -9
- package/tree/tree-option.scss +2 -4
- package/tree/tree-tokens.scss +2 -1
- package/tree/tree.scss +3 -5
- package/tree-select/_tree-select-theme.scss +4 -15
- package/tree-select/tree-select-tokens.scss +16 -0
- package/tree-select/tree-select.scss +0 -6
- package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
- package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
- package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
- package/types/koobiq-components-app-switcher.d.ts +406 -0
- package/types/koobiq-components-autocomplete.d.ts +443 -0
- package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
- package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
- package/types/koobiq-components-button-toggle.d.ts +340 -0
- package/types/koobiq-components-button.d.ts +296 -0
- package/types/koobiq-components-checkbox.d.ts +172 -0
- package/types/koobiq-components-clamped-text.d.ts +184 -0
- package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +150 -88
- package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
- package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
- package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
- package/types/koobiq-components-divider.d.ts +43 -0
- package/types/koobiq-components-dl.d.ts +235 -0
- package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
- package/types/koobiq-components-ellipsis-center.d.ts +85 -0
- package/types/koobiq-components-empty-state.d.ts +106 -0
- package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
- package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
- package/types/koobiq-components-flag.d.ts +68 -0
- package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
- package/types/koobiq-components-icon.d.ts +333 -0
- package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
- package/types/koobiq-components-input.d.ts +477 -0
- package/types/koobiq-components-link-deprecated.d.ts +101 -0
- package/types/koobiq-components-link.d.ts +176 -0
- package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
- package/types/koobiq-components-loader-overlay.d.ts +101 -0
- package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
- package/types/koobiq-components-modal.d.ts +666 -0
- package/types/koobiq-components-navbar.d.ts +569 -0
- package/types/koobiq-components-notification-center.d.ts +500 -0
- package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
- package/types/koobiq-components-popover.d.ts +468 -0
- package/types/koobiq-components-progress-bar.d.ts +67 -0
- package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
- package/types/koobiq-components-radio.d.ts +294 -0
- package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
- package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
- package/types/koobiq-components-scrollbar.d.ts +154 -0
- package/types/koobiq-components-search-expandable.d.ts +164 -0
- package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
- package/types/koobiq-components-sidebar.d.ts +152 -0
- package/types/koobiq-components-sidepanel.d.ts +436 -0
- package/types/koobiq-components-skeleton.d.ts +234 -0
- package/types/koobiq-components-split-button.d.ts +65 -0
- package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
- package/types/koobiq-components-splitter.d.ts +406 -0
- package/types/koobiq-components-table.d.ts +44 -0
- package/types/koobiq-components-tabs.d.ts +888 -0
- package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
- package/types/koobiq-components-textarea.d.ts +178 -0
- package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
- package/types/koobiq-components-timepicker.d.ts +223 -0
- package/types/koobiq-components-timezone.d.ts +266 -0
- package/types/koobiq-components-title.d.ts +184 -0
- package/types/koobiq-components-toast.d.ts +289 -0
- package/types/koobiq-components-toggle.d.ts +121 -0
- package/types/koobiq-components-tooltip.d.ts +610 -0
- package/types/koobiq-components-top-bar.d.ts +61 -0
- package/types/koobiq-components-tree-select.d.ts +670 -0
- package/types/koobiq-components-tree.d.ts +1339 -0
- package/types/koobiq-components-username.d.ts +340 -0
- package/username/_username-theme.scss +35 -0
- package/username/username.scss +10 -34
- package/app-switcher/index.d.ts +0 -276
- package/autocomplete/index.d.ts +0 -286
- package/button/index.d.ts +0 -153
- package/button-toggle/index.d.ts +0 -162
- package/checkbox/index.d.ts +0 -163
- package/clamped-text/index.d.ts +0 -146
- package/core/styles/_tokens.scss +0 -7
- package/core/styles/common/_clearfix.scss +0 -13
- package/core/styles/common/_popup.scss +0 -6
- package/core/styles/functions/_index.scss +0 -3
- package/core/styles/functions/_number.scss +0 -60
- package/core/styles/functions/_string.scss +0 -18
- package/core/styles/theming/scrollbar-tokens.scss +0 -25
- package/core/styles/typography/_typography-utils.scss +0 -84
- package/divider/index.d.ts +0 -20
- package/dl/index.d.ts +0 -45
- package/ellipsis-center/index.d.ts +0 -71
- package/empty-state/index.d.ts +0 -45
- package/flag/index.d.ts +0 -44
- package/icon/index.d.ts +0 -200
- package/input/index.d.ts +0 -354
- package/link/index.d.ts +0 -56
- package/loader-overlay/index.d.ts +0 -57
- package/modal/index.d.ts +0 -339
- package/navbar/index.d.ts +0 -372
- package/notification-center/index.d.ts +0 -323
- package/popover/index.d.ts +0 -182
- package/prebuilt-themes/dark-theme.css +0 -1
- package/prebuilt-themes/light-theme.css +0 -1
- package/progress-bar/index.d.ts +0 -31
- package/radio/index.d.ts +0 -203
- package/schematics/migrations/alert-signals/index.js +0 -353
- package/schematics/migrations/filter-bar-signals/index.js +0 -319
- package/schematics/migrations/v20-upgrade/index.js +0 -225
- package/schematics/ng-add/index.js +0 -39
- package/search-expandable/index.d.ts +0 -101
- package/sidebar/index.d.ts +0 -94
- package/sidepanel/index.d.ts +0 -272
- package/skeleton/index.d.ts +0 -26
- package/split-button/index.d.ts +0 -46
- package/table/index.d.ts +0 -25
- package/tabs/index.d.ts +0 -677
- package/textarea/index.d.ts +0 -138
- package/timepicker/index.d.ts +0 -197
- package/timezone/index.d.ts +0 -125
- package/title/index.d.ts +0 -139
- package/toast/index.d.ts +0 -178
- package/toggle/index.d.ts +0 -104
- package/tooltip/index.d.ts +0 -335
- package/top-bar/index.d.ts +0 -33
- package/tree/index.d.ts +0 -802
- package/tree-select/index.d.ts +0 -475
- package/username/index.d.ts +0 -194
- /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
- /package/schematics/utils/{ast.js → ast.cjs} +0 -0
- /package/schematics/utils/{messages.js → messages.cjs} +0 -0
- /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
- /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Injectable, inject,
|
|
2
|
+
import { InjectionToken, Injectable, inject, viewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, input, Renderer2, booleanAttribute, EventEmitter, effect, untracked, Directive, NgModule } from '@angular/core';
|
|
3
3
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
4
4
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
5
|
import { Overlay } from '@angular/cdk/overlay';
|
|
6
6
|
import { NgTemplateOutlet } from '@angular/common';
|
|
7
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
|
-
import { KbqPopUp, applyPopupMargins, PopUpTriggers, KbqPopUpTrigger, KbqComponentColors, KBQ_PARENT_POPUP, KBQ_SIBLING_POPUP, POSITION_TO_CSS_MAP,
|
|
7
|
+
import { outputFromObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
|
+
import { KbqPopUp, applyPopupMargins, PopUpTriggers, KbqPopUpTrigger, KbqComponentColors, PopUpPlacements, KBQ_PARENT_POPUP, KBQ_SIBLING_POPUP, kbqOptionalNumberAttribute, kbqCreateCaretOrigin, POSITION_TO_CSS_MAP, ESCAPE, kbqGetSelectionRect, kbqListenForCaretMoves } from '@koobiq/components/core';
|
|
9
9
|
import { merge, EMPTY } from 'rxjs';
|
|
10
10
|
import { filter } from 'rxjs/operators';
|
|
11
|
-
import { trigger, state, style, transition, animate, keyframes } from '@angular/animations';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Default value of the `kbqTooltipSingleInstance` input. Provide `false` at the application level to
|
|
@@ -44,60 +43,119 @@ class KbqTooltipRegistry {
|
|
|
44
43
|
this.visibleTooltip = null;
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
48
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
46
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipRegistry, providedIn: 'root' }); }
|
|
49
48
|
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipRegistry, decorators: [{
|
|
51
50
|
type: Injectable,
|
|
52
51
|
args: [{ providedIn: 'root' }]
|
|
53
52
|
}] });
|
|
54
53
|
|
|
55
|
-
/**
|
|
56
|
-
* Animations used by KbqTooltip.
|
|
57
|
-
* @docs-private
|
|
58
|
-
*/
|
|
59
|
-
const kbqTooltipAnimations = {
|
|
60
|
-
/** Animation that transitions a tooltip in and out. */
|
|
61
|
-
tooltipState: trigger('state', [
|
|
62
|
-
state('initial, void, hidden', style({ opacity: 0, transform: 'scale(0)' })),
|
|
63
|
-
state('visible', style({ transform: 'scale(0.99)' })),
|
|
64
|
-
transition('* => visible', animate('200ms cubic-bezier(0, 0, 0.2, 1)', keyframes([
|
|
65
|
-
style({ opacity: 0, transform: 'scale(0)', offset: 0 }),
|
|
66
|
-
style({ opacity: 0.5, transform: 'scale(0.9)', offset: 0.5 }),
|
|
67
|
-
style({ opacity: 1, transform: 'scale(0.99)', offset: 1 })
|
|
68
|
-
]))),
|
|
69
|
-
transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 })))
|
|
70
|
-
])
|
|
71
|
-
};
|
|
72
|
-
|
|
73
54
|
var TooltipModifier;
|
|
74
55
|
(function (TooltipModifier) {
|
|
75
56
|
TooltipModifier["Default"] = "default";
|
|
76
57
|
TooltipModifier["Warning"] = "warning";
|
|
77
58
|
TooltipModifier["Extended"] = "extended";
|
|
78
59
|
})(TooltipModifier || (TooltipModifier = {}));
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated Replaced by {@link KbqTooltipDelayTracker}, which owns the shared timestamp behind a service
|
|
62
|
+
* instead of a mutable `useValue` object. The tooltip no longer reads this token; providing it has no effect. Will be
|
|
63
|
+
* removed in 22.0.0.
|
|
64
|
+
*/
|
|
79
65
|
const KBQ_TOOLTIP_OPEN_TIME = new InjectionToken('kbq-tooltip-open-time');
|
|
80
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Replaced by {@link KbqTooltipDelayTracker}. Providing it has no effect. Will be removed in 22.0.0.
|
|
68
|
+
*
|
|
69
|
+
* @docs-private
|
|
70
|
+
*/
|
|
81
71
|
const KBQ_TOOLTIP_OPEN_TIME_PROVIDER = {
|
|
82
72
|
provide: KBQ_TOOLTIP_OPEN_TIME,
|
|
83
73
|
useValue: { value: 0 }
|
|
84
74
|
};
|
|
75
|
+
/** Default length of the window during which a following tooltip is shown without its enter delay. */
|
|
85
76
|
const MIN_TIME_FOR_DELAY = 2000;
|
|
77
|
+
/**
|
|
78
|
+
* Length in milliseconds of the window during which a tooltip shown right after another one appears
|
|
79
|
+
* instantly. Defaults to {@link MIN_TIME_FOR_DELAY}.
|
|
80
|
+
*/
|
|
81
|
+
const KBQ_TOOLTIP_INSTANT_SHOW_WINDOW = new InjectionToken('kbq-tooltip-instant-show-window', {
|
|
82
|
+
providedIn: 'root',
|
|
83
|
+
factory: () => MIN_TIME_FOR_DELAY
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Remembers when a tooltip was last shown, so that moving between neighbouring triggers does not replay the
|
|
87
|
+
* enter delay for every one of them: the first tooltip waits `kbqEnterDelay`, the ones following it within
|
|
88
|
+
* {@link KBQ_TOOLTIP_INSTANT_SHOW_WINDOW} appear instantly.
|
|
89
|
+
*
|
|
90
|
+
* Application-wide by design — the behavior is part of the component's documented delay rules.
|
|
91
|
+
*/
|
|
92
|
+
class KbqTooltipDelayTracker {
|
|
93
|
+
constructor() {
|
|
94
|
+
this.instantShowWindow = inject(KBQ_TOOLTIP_INSTANT_SHOW_WINDOW);
|
|
95
|
+
/** Timestamp of the last shown tooltip, or `null` while no tooltip has been shown recently. */
|
|
96
|
+
this.lastShownAt = null;
|
|
97
|
+
}
|
|
98
|
+
/** Whether the tooltip that is about to be shown should skip its enter delay. */
|
|
99
|
+
shouldSkipEnterDelay() {
|
|
100
|
+
return this.lastShownAt !== null && Date.now() - this.lastShownAt < this.instantShowWindow;
|
|
101
|
+
}
|
|
102
|
+
/** Records that a tooltip has just been shown. */
|
|
103
|
+
markShown() {
|
|
104
|
+
this.lastShownAt = Date.now();
|
|
105
|
+
}
|
|
106
|
+
/** Forgets the last shown tooltip, so the next one appears with its full enter delay. */
|
|
107
|
+
reset() {
|
|
108
|
+
this.lastShownAt = null;
|
|
109
|
+
}
|
|
110
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipDelayTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
111
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipDelayTracker, providedIn: 'root' }); }
|
|
112
|
+
}
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipDelayTracker, decorators: [{
|
|
114
|
+
type: Injectable,
|
|
115
|
+
args: [{ providedIn: 'root' }]
|
|
116
|
+
}] });
|
|
117
|
+
/** Source of the unique ids that link a tooltip to the `aria-describedby` of its trigger. */
|
|
118
|
+
let nextTooltipUniqueId = 0;
|
|
86
119
|
class KbqTooltipComponent extends KbqPopUp {
|
|
87
120
|
constructor() {
|
|
88
121
|
super(...arguments);
|
|
89
|
-
this.
|
|
122
|
+
this.delayTracker = inject(KbqTooltipDelayTracker);
|
|
90
123
|
this.prefix = 'kbq-tooltip';
|
|
124
|
+
/**
|
|
125
|
+
* Id rendered on the tooltip element; the trigger points its `aria-describedby` at it.
|
|
126
|
+
*
|
|
127
|
+
* Public only because the trigger is a separate class and overwrites it with its own id — nothing outside
|
|
128
|
+
* the pair should read or write it, or the accessibility link between them breaks.
|
|
129
|
+
*
|
|
130
|
+
* @docs-private
|
|
131
|
+
*/
|
|
132
|
+
this.id = `kbq-tooltip-${nextTooltipUniqueId++}`;
|
|
133
|
+
this.tooltipElement = viewChild('tooltip', ...(ngDevMode ? [{ debugName: "tooltipElement" }] : /* istanbul ignore next */ []));
|
|
134
|
+
}
|
|
135
|
+
/** The tooltip panel, which the base pop-up measures and decorates instead of the host. */
|
|
136
|
+
get elementRef() {
|
|
137
|
+
return this.tooltipElement();
|
|
91
138
|
}
|
|
92
139
|
show(delay) {
|
|
93
140
|
if (!this.content) {
|
|
94
141
|
return;
|
|
95
142
|
}
|
|
96
|
-
super.show(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
143
|
+
super.show(this.delayTracker.shouldSkipEnterDelay() ? 0 : delay);
|
|
144
|
+
this.applyOffset();
|
|
145
|
+
this.delayTracker.markShown();
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Applies `offset` as the gap between the tooltip and its trigger. Called both on show and whenever the
|
|
149
|
+
* trigger pushes new data, so that changing `kbqTooltipOffset` on an open tooltip actually moves it.
|
|
150
|
+
*
|
|
151
|
+
* Public only because the trigger calls it from the outside; it is not part of the supported surface.
|
|
152
|
+
*
|
|
153
|
+
* @docs-private
|
|
154
|
+
*/
|
|
155
|
+
applyOffset() {
|
|
156
|
+
// An empty value removes a gap applied earlier, handing it back to the stylesheet.
|
|
157
|
+
const margin = this.offset == null ? '' : `${this.offset}px`;
|
|
158
|
+
applyPopupMargins(this.renderer, this.elementRef.nativeElement, this.prefix, margin);
|
|
101
159
|
}
|
|
102
160
|
updateClassMap(placement, customClass, { modifier }) {
|
|
103
161
|
const classMap = {
|
|
@@ -105,18 +163,15 @@ class KbqTooltipComponent extends KbqPopUp {
|
|
|
105
163
|
};
|
|
106
164
|
super.updateClassMap(placement, customClass, classMap);
|
|
107
165
|
}
|
|
108
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
109
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.30", type: KbqTooltipComponent, isStandalone: true, selector: "kbq-tooltip-component", providers: [KBQ_TOOLTIP_OPEN_TIME_PROVIDER], viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["tooltip"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n #tooltip\n class=\"kbq-tooltip\"\n [class.kbq-tooltip_arrowless]=\"!arrow\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div class=\"kbq-tooltip__inner\">\n @if (arrow) {\n <div class=\"kbq-tooltip__arrow\"></div>\n }\n\n @if (header) {\n <div class=\"kbq-tooltip__header\">\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ header }}</div>\n }\n </div>\n }\n <div class=\"kbq-tooltip__content\">\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n </div>\n</div>\n", styles: [".kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top-right){margin-bottom:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right-bottom){margin-left:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom-right){margin-top:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left-bottom){margin-right:9px}.kbq-tooltip__inner{border-radius:var(--kbq-tooltip-size-border-radius);word-break:break-word}.kbq-tooltip{box-sizing:border-box;border-radius:var(--kbq-tooltip-size-border-radius);white-space:pre-line}.kbq-tooltip.kbq-tooltip_placement-top,.kbq-tooltip.kbq-tooltip_placement-top-left,.kbq-tooltip.kbq-tooltip_placement-top-right{margin-bottom:8px}.kbq-tooltip.kbq-tooltip_placement-right,.kbq-tooltip.kbq-tooltip_placement-right-top,.kbq-tooltip.kbq-tooltip_placement-right-bottom{margin-left:8px}.kbq-tooltip.kbq-tooltip_placement-bottom,.kbq-tooltip.kbq-tooltip_placement-bottom-left,.kbq-tooltip.kbq-tooltip_placement-bottom-right{margin-top:8px}.kbq-tooltip.kbq-tooltip_placement-left,.kbq-tooltip.kbq-tooltip_placement-left-top,.kbq-tooltip.kbq-tooltip_placement-left-bottom{margin-right:8px}.kbq-tooltip{max-width:var(--kbq-tooltip-size-max-width)}.kbq-tooltip .kbq-tooltip__inner{padding:var(--kbq-tooltip-size-padding-vertical) var(--kbq-tooltip-size-padding-horizontal)}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top-right{margin-bottom:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right-bottom{margin-left:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom-right{margin-top:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left-bottom{margin-right:4px}.kbq-tooltip.kbq-theme .kbq-tooltip__inner{color:var(--kbq-tooltip-theme-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-theme-fade-off-background),var(--kbq-tooltip-theme-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-theme .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-theme-fade-off-background)}.kbq-tooltip.kbq-theme.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-theme-fade-off-shadow)}.kbq-tooltip.kbq-contrast .kbq-tooltip__inner{color:var(--kbq-tooltip-contrast-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-off-background),var(--kbq-tooltip-contrast-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-contrast-fade-off-background)}.kbq-tooltip.kbq-contrast.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-contrast-fade-off-shadow)}.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__inner{color:var(--kbq-tooltip-contrast-fade-on-text);background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-on-background),var(--kbq-tooltip-contrast-fade-on-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-contrast-fade-on-background)}.kbq-tooltip.kbq-contrast-fade.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-contrast-fade-on-shadow)}.kbq-tooltip.kbq-contrast-fade.kbq-tooltip,.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__arrow{box-shadow:var(--kbq-shadow-popup)}.kbq-tooltip.kbq-warning .kbq-tooltip__inner{color:var(--kbq-tooltip-warning-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-warning-fade-off-background),var(--kbq-tooltip-warning-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-warning .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-warning-fade-off-background)}.kbq-tooltip.kbq-warning.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-warning-fade-off-shadow)}.kbq-tooltip.kbq-error .kbq-tooltip__inner{color:var(--kbq-tooltip-error-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-error-fade-off-background),var(--kbq-tooltip-error-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-error .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-error-fade-off-background)}.kbq-tooltip.kbq-error.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-error-fade-off-shadow)}.kbq-tooltip,.kbq-tooltip .kbq-tooltip__header{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-tooltip__arrow{position:absolute;width:var(--kbq-tooltip-size-arrow-size);height:var(--kbq-tooltip-size-arrow-size);transform:rotate(45deg);z-index:-1}.kbq-tooltip_placement-top .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:50%;margin-left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-top-left .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:13px}.kbq-tooltip_placement-top-right .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);right:13px}.kbq-tooltip_placement-right .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:50%;margin-top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-right-top .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:13px}.kbq-tooltip_placement-right-bottom .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);bottom:13px}.kbq-tooltip_placement-left .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:50%;margin-top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-left-top .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:13px}.kbq-tooltip_placement-left-bottom .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);bottom:13px}.kbq-tooltip_placement-bottom .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:50%;margin-left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-bottom-left .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:13px}.kbq-tooltip_placement-bottom-right .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);right:13px}\n", ".kbq-tooltip{--kbq-tooltip-size-max-width: 300px;--kbq-tooltip-size-border-radius: var(--kbq-size-s);--kbq-tooltip-size-padding-horizontal: var(--kbq-size-m);--kbq-tooltip-size-padding-vertical: var(--kbq-size-s);--kbq-tooltip-size-arrow-size: var(--kbq-size-m);--kbq-tooltip-contrast-fade-on-background: var(--kbq-background-card);--kbq-tooltip-contrast-fade-on-text: var(--kbq-foreground-contrast);--kbq-tooltip-contrast-fade-on-shadow: var(--kbq-shadow-popup);--kbq-tooltip-contrast-fade-off-background: var(--kbq-background-night);--kbq-tooltip-contrast-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-contrast-fade-off-shadow: var(--kbq-shadow-popup);--kbq-tooltip-theme-fade-off-background: var(--kbq-background-theme);--kbq-tooltip-theme-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-theme-fade-off-shadow: none;--kbq-tooltip-warning-fade-off-background: var(--kbq-background-warning);--kbq-tooltip-warning-fade-off-text: var(--kbq-foreground-contrast);--kbq-tooltip-warning-fade-off-shadow: none;--kbq-tooltip-error-fade-off-background: var(--kbq-background-error);--kbq-tooltip-error-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-error-fade-off-shadow: none;--kbq-tooltip-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"] }], animations: [kbqTooltipAnimations.tooltipState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
166
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqTooltipComponent, isStandalone: true, selector: "kbq-tooltip-component", viewQueries: [{ propertyName: "tooltipElement", first: true, predicate: ["tooltip"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #tooltip\n class=\"kbq-tooltip\"\n role=\"tooltip\"\n [attr.id]=\"id\"\n [class.kbq-tooltip_arrowless]=\"!arrow\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-tooltip_visible]=\"isVisible()\"\n>\n <div class=\"kbq-tooltip__inner\">\n @if (arrow) {\n <div class=\"kbq-tooltip__arrow\" aria-hidden=\"true\"></div>\n }\n\n @if (header) {\n <div class=\"kbq-tooltip__header\">\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ header }}</div>\n }\n </div>\n }\n <div class=\"kbq-tooltip__content\">\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top-right){margin-bottom:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right-bottom){margin-left:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom-right){margin-top:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left-bottom){margin-right:9px}.kbq-tooltip-trigger_for-disabled{outline-color:var(--kbq-states-line-focus-theme)}.kbq-tooltip__inner{border-radius:var(--kbq-tooltip-size-border-radius)}@supports (corner-shape: squircle){.kbq-tooltip__inner{corner-shape:squircle;border-radius:clamp(var(--kbq-tooltip-size-border-radius) * 1.85,var(--kbq-tooltip-size-border-radius) * 2.3 - 3.6px,var(--kbq-tooltip-size-border-radius) * 2)}}.kbq-tooltip__inner{overflow-wrap:break-word}.kbq-tooltip{box-sizing:border-box;border-radius:var(--kbq-tooltip-size-border-radius)}@supports (corner-shape: squircle){.kbq-tooltip{corner-shape:squircle;border-radius:clamp(var(--kbq-tooltip-size-border-radius) * 1.85,var(--kbq-tooltip-size-border-radius) * 2.3 - 3.6px,var(--kbq-tooltip-size-border-radius) * 2)}}.kbq-tooltip{white-space:pre-line}.kbq-tooltip.kbq-tooltip_placement-top,.kbq-tooltip.kbq-tooltip_placement-top-left,.kbq-tooltip.kbq-tooltip_placement-top-right{margin-bottom:8px}.kbq-tooltip.kbq-tooltip_placement-right,.kbq-tooltip.kbq-tooltip_placement-right-top,.kbq-tooltip.kbq-tooltip_placement-right-bottom{margin-left:8px}.kbq-tooltip.kbq-tooltip_placement-bottom,.kbq-tooltip.kbq-tooltip_placement-bottom-left,.kbq-tooltip.kbq-tooltip_placement-bottom-right{margin-top:8px}.kbq-tooltip.kbq-tooltip_placement-left,.kbq-tooltip.kbq-tooltip_placement-left-top,.kbq-tooltip.kbq-tooltip_placement-left-bottom{margin-right:8px}.kbq-tooltip{max-width:var(--kbq-tooltip-size-max-width);opacity:0;transform:scale(0)}.kbq-tooltip .kbq-tooltip__inner{padding:var(--kbq-tooltip-size-padding-vertical) var(--kbq-tooltip-size-padding-horizontal)}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top-right{margin-bottom:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right-bottom{margin-left:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom-right{margin-top:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left-bottom{margin-right:4px}.kbq-tooltip.kbq-tooltip_visible{opacity:1;transform:scale(1);animation:kbq-tooltip-enter .2s cubic-bezier(0,0,.2,1)}.kbq-tooltip.kbq-tooltip_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-tooltip.kbq-tooltip_visible{animation:none;transition:none}}@keyframes kbq-tooltip-enter{0%{opacity:0;transform:scale(0)}50%{opacity:.5;transform:scale(.9)}}.kbq-tooltip.kbq-theme .kbq-tooltip__inner{color:var(--kbq-tooltip-theme-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-theme-fade-off-background),var(--kbq-tooltip-theme-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-theme .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-theme-fade-off-background),var(--kbq-tooltip-theme-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-theme.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-theme-fade-off-shadow)}.kbq-tooltip.kbq-contrast .kbq-tooltip__inner{color:var(--kbq-tooltip-contrast-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-off-background),var(--kbq-tooltip-contrast-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-off-background),var(--kbq-tooltip-contrast-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-contrast-fade-off-shadow)}.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__inner{color:var(--kbq-tooltip-contrast-fade-on-text);background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-on-background),var(--kbq-tooltip-contrast-fade-on-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-on-background),var(--kbq-tooltip-contrast-fade-on-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast-fade.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-contrast-fade-on-shadow)}.kbq-tooltip.kbq-contrast-fade.kbq-tooltip,.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__arrow{box-shadow:var(--kbq-shadow-popup)}.kbq-tooltip.kbq-warning .kbq-tooltip__inner{color:var(--kbq-tooltip-warning-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-warning-fade-off-background),var(--kbq-tooltip-warning-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-warning .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-warning-fade-off-background),var(--kbq-tooltip-warning-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-warning.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-warning-fade-off-shadow)}.kbq-tooltip.kbq-error .kbq-tooltip__inner{color:var(--kbq-tooltip-error-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-error-fade-off-background),var(--kbq-tooltip-error-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-error .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-error-fade-off-background),var(--kbq-tooltip-error-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-error.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-error-fade-off-shadow)}.kbq-tooltip,.kbq-tooltip .kbq-tooltip__header{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-tooltip__arrow{position:absolute;width:var(--kbq-tooltip-size-arrow-size);height:var(--kbq-tooltip-size-arrow-size);transform:rotate(45deg);z-index:-1}.kbq-tooltip_placement-top .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:50%;margin-left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-top-left .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:13px}.kbq-tooltip_placement-top-right .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);right:13px}.kbq-tooltip_placement-right .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:50%;margin-top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-right-top .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:13px}.kbq-tooltip_placement-right-bottom .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);bottom:13px}.kbq-tooltip_placement-left .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:50%;margin-top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-left-top .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:13px}.kbq-tooltip_placement-left-bottom .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);bottom:13px}.kbq-tooltip_placement-bottom .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:50%;margin-left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-bottom-left .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:13px}.kbq-tooltip_placement-bottom-right .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);right:13px}\n", ".kbq-tooltip{--kbq-tooltip-size-max-width: 300px;--kbq-tooltip-size-border-radius: var(--kbq-size-s);--kbq-tooltip-size-padding-horizontal: var(--kbq-size-m);--kbq-tooltip-size-padding-vertical: var(--kbq-size-s);--kbq-tooltip-size-arrow-size: var(--kbq-size-m);--kbq-tooltip-contrast-fade-on-background: var(--kbq-background-card);--kbq-tooltip-contrast-fade-on-text: var(--kbq-foreground-contrast);--kbq-tooltip-contrast-fade-on-shadow: var(--kbq-shadow-popup);--kbq-tooltip-contrast-fade-off-background: var(--kbq-background-night);--kbq-tooltip-contrast-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-contrast-fade-off-shadow: var(--kbq-shadow-popup);--kbq-tooltip-theme-fade-off-background: var(--kbq-background-theme);--kbq-tooltip-theme-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-theme-fade-off-shadow: none;--kbq-tooltip-warning-fade-off-background: var(--kbq-background-warning);--kbq-tooltip-warning-fade-off-text: var(--kbq-foreground-contrast);--kbq-tooltip-warning-fade-off-shadow: none;--kbq-tooltip-error-fade-off-background: var(--kbq-background-error);--kbq-tooltip-error-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-error-fade-off-shadow: none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
110
168
|
}
|
|
111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipComponent, decorators: [{
|
|
112
170
|
type: Component,
|
|
113
171
|
args: [{ selector: 'kbq-tooltip-component', imports: [
|
|
114
172
|
NgTemplateOutlet
|
|
115
|
-
], providers: [KBQ_TOOLTIP_OPEN_TIME_PROVIDER], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [kbqTooltipAnimations.tooltipState], template: "<div\n #tooltip\n class=\"kbq-tooltip\"\n [class.kbq-tooltip_arrowless]=\"!arrow\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div class=\"kbq-tooltip__inner\">\n @if (arrow) {\n <div class=\"kbq-tooltip__arrow\"></div>\n }\n\n @if (header) {\n <div class=\"kbq-tooltip__header\">\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ header }}</div>\n }\n </div>\n }\n <div class=\"kbq-tooltip__content\">\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n </div>\n</div>\n", styles: [".kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top-right){margin-bottom:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right-bottom){margin-left:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom-right){margin-top:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left-bottom){margin-right:9px}.kbq-tooltip__inner{border-radius:var(--kbq-tooltip-size-border-radius);word-break:break-word}.kbq-tooltip{box-sizing:border-box;border-radius:var(--kbq-tooltip-size-border-radius);white-space:pre-line}.kbq-tooltip.kbq-tooltip_placement-top,.kbq-tooltip.kbq-tooltip_placement-top-left,.kbq-tooltip.kbq-tooltip_placement-top-right{margin-bottom:8px}.kbq-tooltip.kbq-tooltip_placement-right,.kbq-tooltip.kbq-tooltip_placement-right-top,.kbq-tooltip.kbq-tooltip_placement-right-bottom{margin-left:8px}.kbq-tooltip.kbq-tooltip_placement-bottom,.kbq-tooltip.kbq-tooltip_placement-bottom-left,.kbq-tooltip.kbq-tooltip_placement-bottom-right{margin-top:8px}.kbq-tooltip.kbq-tooltip_placement-left,.kbq-tooltip.kbq-tooltip_placement-left-top,.kbq-tooltip.kbq-tooltip_placement-left-bottom{margin-right:8px}.kbq-tooltip{max-width:var(--kbq-tooltip-size-max-width)}.kbq-tooltip .kbq-tooltip__inner{padding:var(--kbq-tooltip-size-padding-vertical) var(--kbq-tooltip-size-padding-horizontal)}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top-right{margin-bottom:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right-bottom{margin-left:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom-right{margin-top:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left-bottom{margin-right:4px}.kbq-tooltip.kbq-theme .kbq-tooltip__inner{color:var(--kbq-tooltip-theme-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-theme-fade-off-background),var(--kbq-tooltip-theme-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-theme .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-theme-fade-off-background)}.kbq-tooltip.kbq-theme.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-theme-fade-off-shadow)}.kbq-tooltip.kbq-contrast .kbq-tooltip__inner{color:var(--kbq-tooltip-contrast-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-off-background),var(--kbq-tooltip-contrast-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-contrast-fade-off-background)}.kbq-tooltip.kbq-contrast.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-contrast-fade-off-shadow)}.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__inner{color:var(--kbq-tooltip-contrast-fade-on-text);background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-on-background),var(--kbq-tooltip-contrast-fade-on-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-contrast-fade-on-background)}.kbq-tooltip.kbq-contrast-fade.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-contrast-fade-on-shadow)}.kbq-tooltip.kbq-contrast-fade.kbq-tooltip,.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__arrow{box-shadow:var(--kbq-shadow-popup)}.kbq-tooltip.kbq-warning .kbq-tooltip__inner{color:var(--kbq-tooltip-warning-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-warning-fade-off-background),var(--kbq-tooltip-warning-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-warning .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-warning-fade-off-background)}.kbq-tooltip.kbq-warning.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-warning-fade-off-shadow)}.kbq-tooltip.kbq-error .kbq-tooltip__inner{color:var(--kbq-tooltip-error-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-error-fade-off-background),var(--kbq-tooltip-error-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-error .kbq-tooltip__arrow{background-color:var(--kbq-tooltip-error-fade-off-background)}.kbq-tooltip.kbq-error.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-error-fade-off-shadow)}.kbq-tooltip,.kbq-tooltip .kbq-tooltip__header{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-tooltip__arrow{position:absolute;width:var(--kbq-tooltip-size-arrow-size);height:var(--kbq-tooltip-size-arrow-size);transform:rotate(45deg);z-index:-1}.kbq-tooltip_placement-top .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:50%;margin-left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-top-left .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:13px}.kbq-tooltip_placement-top-right .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);right:13px}.kbq-tooltip_placement-right .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:50%;margin-top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-right-top .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:13px}.kbq-tooltip_placement-right-bottom .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);bottom:13px}.kbq-tooltip_placement-left .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:50%;margin-top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-left-top .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:13px}.kbq-tooltip_placement-left-bottom .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);bottom:13px}.kbq-tooltip_placement-bottom .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:50%;margin-left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-bottom-left .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:13px}.kbq-tooltip_placement-bottom-right .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);right:13px}\n", ".kbq-tooltip{--kbq-tooltip-size-max-width: 300px;--kbq-tooltip-size-border-radius: var(--kbq-size-s);--kbq-tooltip-size-padding-horizontal: var(--kbq-size-m);--kbq-tooltip-size-padding-vertical: var(--kbq-size-s);--kbq-tooltip-size-arrow-size: var(--kbq-size-m);--kbq-tooltip-contrast-fade-on-background: var(--kbq-background-card);--kbq-tooltip-contrast-fade-on-text: var(--kbq-foreground-contrast);--kbq-tooltip-contrast-fade-on-shadow: var(--kbq-shadow-popup);--kbq-tooltip-contrast-fade-off-background: var(--kbq-background-night);--kbq-tooltip-contrast-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-contrast-fade-off-shadow: var(--kbq-shadow-popup);--kbq-tooltip-theme-fade-off-background: var(--kbq-background-theme);--kbq-tooltip-theme-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-theme-fade-off-shadow: none;--kbq-tooltip-warning-fade-off-background: var(--kbq-background-warning);--kbq-tooltip-warning-fade-off-text: var(--kbq-foreground-contrast);--kbq-tooltip-warning-fade-off-shadow: none;--kbq-tooltip-error-fade-off-background: var(--kbq-background-error);--kbq-tooltip-error-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-error-fade-off-shadow: none;--kbq-tooltip-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"] }]
|
|
116
|
-
}], propDecorators: {
|
|
117
|
-
type: ViewChild,
|
|
118
|
-
args: ['tooltip']
|
|
119
|
-
}] } });
|
|
173
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n #tooltip\n class=\"kbq-tooltip\"\n role=\"tooltip\"\n [attr.id]=\"id\"\n [class.kbq-tooltip_arrowless]=\"!arrow\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-tooltip_visible]=\"isVisible()\"\n>\n <div class=\"kbq-tooltip__inner\">\n @if (arrow) {\n <div class=\"kbq-tooltip__arrow\" aria-hidden=\"true\"></div>\n }\n\n @if (header) {\n <div class=\"kbq-tooltip__header\">\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ header }}</div>\n }\n </div>\n }\n <div class=\"kbq-tooltip__content\">\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-top-right){margin-bottom:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-right-bottom){margin-left:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-bottom-right){margin-top:9px}.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left-top),.kbq-tooltip-panel_horizontal-navbar:has(.kbq-tooltip_placement-left-bottom){margin-right:9px}.kbq-tooltip-trigger_for-disabled{outline-color:var(--kbq-states-line-focus-theme)}.kbq-tooltip__inner{border-radius:var(--kbq-tooltip-size-border-radius)}@supports (corner-shape: squircle){.kbq-tooltip__inner{corner-shape:squircle;border-radius:clamp(var(--kbq-tooltip-size-border-radius) * 1.85,var(--kbq-tooltip-size-border-radius) * 2.3 - 3.6px,var(--kbq-tooltip-size-border-radius) * 2)}}.kbq-tooltip__inner{overflow-wrap:break-word}.kbq-tooltip{box-sizing:border-box;border-radius:var(--kbq-tooltip-size-border-radius)}@supports (corner-shape: squircle){.kbq-tooltip{corner-shape:squircle;border-radius:clamp(var(--kbq-tooltip-size-border-radius) * 1.85,var(--kbq-tooltip-size-border-radius) * 2.3 - 3.6px,var(--kbq-tooltip-size-border-radius) * 2)}}.kbq-tooltip{white-space:pre-line}.kbq-tooltip.kbq-tooltip_placement-top,.kbq-tooltip.kbq-tooltip_placement-top-left,.kbq-tooltip.kbq-tooltip_placement-top-right{margin-bottom:8px}.kbq-tooltip.kbq-tooltip_placement-right,.kbq-tooltip.kbq-tooltip_placement-right-top,.kbq-tooltip.kbq-tooltip_placement-right-bottom{margin-left:8px}.kbq-tooltip.kbq-tooltip_placement-bottom,.kbq-tooltip.kbq-tooltip_placement-bottom-left,.kbq-tooltip.kbq-tooltip_placement-bottom-right{margin-top:8px}.kbq-tooltip.kbq-tooltip_placement-left,.kbq-tooltip.kbq-tooltip_placement-left-top,.kbq-tooltip.kbq-tooltip_placement-left-bottom{margin-right:8px}.kbq-tooltip{max-width:var(--kbq-tooltip-size-max-width);opacity:0;transform:scale(0)}.kbq-tooltip .kbq-tooltip__inner{padding:var(--kbq-tooltip-size-padding-vertical) var(--kbq-tooltip-size-padding-horizontal)}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-top-right{margin-bottom:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-right-bottom{margin-left:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-bottom-right{margin-top:4px}.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left-top,.kbq-tooltip.kbq-tooltip_arrowless.kbq-tooltip_placement-left-bottom{margin-right:4px}.kbq-tooltip.kbq-tooltip_visible{opacity:1;transform:scale(1);animation:kbq-tooltip-enter .2s cubic-bezier(0,0,.2,1)}.kbq-tooltip.kbq-tooltip_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-tooltip.kbq-tooltip_visible{animation:none;transition:none}}@keyframes kbq-tooltip-enter{0%{opacity:0;transform:scale(0)}50%{opacity:.5;transform:scale(.9)}}.kbq-tooltip.kbq-theme .kbq-tooltip__inner{color:var(--kbq-tooltip-theme-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-theme-fade-off-background),var(--kbq-tooltip-theme-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-theme .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-theme-fade-off-background),var(--kbq-tooltip-theme-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-theme.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-theme-fade-off-shadow)}.kbq-tooltip.kbq-contrast .kbq-tooltip__inner{color:var(--kbq-tooltip-contrast-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-off-background),var(--kbq-tooltip-contrast-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-off-background),var(--kbq-tooltip-contrast-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-contrast-fade-off-shadow)}.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__inner{color:var(--kbq-tooltip-contrast-fade-on-text);background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-on-background),var(--kbq-tooltip-contrast-fade-on-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-contrast-fade-on-background),var(--kbq-tooltip-contrast-fade-on-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-contrast-fade.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-contrast-fade-on-shadow)}.kbq-tooltip.kbq-contrast-fade.kbq-tooltip,.kbq-tooltip.kbq-contrast-fade .kbq-tooltip__arrow{box-shadow:var(--kbq-shadow-popup)}.kbq-tooltip.kbq-warning .kbq-tooltip__inner{color:var(--kbq-tooltip-warning-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-warning-fade-off-background),var(--kbq-tooltip-warning-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-warning .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-warning-fade-off-background),var(--kbq-tooltip-warning-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-warning.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-warning-fade-off-shadow)}.kbq-tooltip.kbq-error .kbq-tooltip__inner{color:var(--kbq-tooltip-error-fade-off-text);background-image:linear-gradient(var(--kbq-tooltip-error-fade-off-background),var(--kbq-tooltip-error-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-error .kbq-tooltip__arrow{background-image:linear-gradient(var(--kbq-tooltip-error-fade-off-background),var(--kbq-tooltip-error-fade-off-background));background-color:var(--kbq-background-bg)}.kbq-tooltip.kbq-error.kbq-tooltip_arrowless{box-shadow:var(--kbq-tooltip-error-fade-off-shadow)}.kbq-tooltip,.kbq-tooltip .kbq-tooltip__header{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-tooltip__arrow{position:absolute;width:var(--kbq-tooltip-size-arrow-size);height:var(--kbq-tooltip-size-arrow-size);transform:rotate(45deg);z-index:-1}.kbq-tooltip_placement-top .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:50%;margin-left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-top-left .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:13px}.kbq-tooltip_placement-top-right .kbq-tooltip__arrow{bottom:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);right:13px}.kbq-tooltip_placement-right .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:50%;margin-top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-right-top .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:13px}.kbq-tooltip_placement-right-bottom .kbq-tooltip__arrow{left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);bottom:13px}.kbq-tooltip_placement-left .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:50%;margin-top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-left-top .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);top:13px}.kbq-tooltip_placement-left-bottom .kbq-tooltip__arrow{right:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);bottom:13px}.kbq-tooltip_placement-bottom .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:50%;margin-left:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2)}.kbq-tooltip_placement-bottom-left .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);left:13px}.kbq-tooltip_placement-bottom-right .kbq-tooltip__arrow{top:calc((var(--kbq-tooltip-size-arrow-size) - 1px) / -2);right:13px}\n", ".kbq-tooltip{--kbq-tooltip-size-max-width: 300px;--kbq-tooltip-size-border-radius: var(--kbq-size-s);--kbq-tooltip-size-padding-horizontal: var(--kbq-size-m);--kbq-tooltip-size-padding-vertical: var(--kbq-size-s);--kbq-tooltip-size-arrow-size: var(--kbq-size-m);--kbq-tooltip-contrast-fade-on-background: var(--kbq-background-card);--kbq-tooltip-contrast-fade-on-text: var(--kbq-foreground-contrast);--kbq-tooltip-contrast-fade-on-shadow: var(--kbq-shadow-popup);--kbq-tooltip-contrast-fade-off-background: var(--kbq-background-night);--kbq-tooltip-contrast-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-contrast-fade-off-shadow: var(--kbq-shadow-popup);--kbq-tooltip-theme-fade-off-background: var(--kbq-background-theme);--kbq-tooltip-theme-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-theme-fade-off-shadow: none;--kbq-tooltip-warning-fade-off-background: var(--kbq-background-warning);--kbq-tooltip-warning-fade-off-text: var(--kbq-foreground-contrast);--kbq-tooltip-warning-fade-off-shadow: none;--kbq-tooltip-error-fade-off-background: var(--kbq-background-error);--kbq-tooltip-error-fade-off-text: var(--kbq-foreground-white);--kbq-tooltip-error-fade-off-shadow: none}\n"] }]
|
|
174
|
+
}], propDecorators: { tooltipElement: [{ type: i0.ViewChild, args: ['tooltip', { isSignal: true }] }] } });
|
|
120
175
|
/**
|
|
121
176
|
* Triggers that make a tooltip part of the "only one tooltip is visible at a time" group.
|
|
122
177
|
*
|
|
@@ -135,6 +190,24 @@ const INTERACTIVE_TRIGGERS = [
|
|
|
135
190
|
* element. Both are bound by `KbqPopUpTrigger.initListeners` whenever the matching show trigger is bound.
|
|
136
191
|
*/
|
|
137
192
|
const RELEASE_TRIGGERS = ['mouseleave', 'blur'];
|
|
193
|
+
/**
|
|
194
|
+
* Focus origins a focus-triggered tooltip opens for. Everything but `keyboard` is excluded on purpose: a
|
|
195
|
+
* pointer user gets the tooltip from the hover trigger, and showing it again on the focus a click leaves
|
|
196
|
+
* behind makes it linger after the pointer has moved on. `program` cannot be admitted either, because CDK
|
|
197
|
+
* reports it whenever it fails to attribute a focus — including the focus that follows a click outside its
|
|
198
|
+
* detection window — so admitting it would re-open exactly the case above. Focus the application moves on
|
|
199
|
+
* purpose still opens the tooltip: the repo convention is `focusVia(element, 'keyboard')`, which reports
|
|
200
|
+
* `keyboard`.
|
|
201
|
+
*/
|
|
202
|
+
const FOCUS_ORIGINS_THAT_SHOW = ['keyboard'];
|
|
203
|
+
/** Base panel class of the tooltip overlay. */
|
|
204
|
+
const TOOLTIP_PANEL_CLASS = 'kbq-tooltip-panel';
|
|
205
|
+
/** Default `kbqEnterDelay`, in milliseconds. */
|
|
206
|
+
const defaultEnterDelay = 400;
|
|
207
|
+
/** Panel class that makes the tooltip pane transparent to pointer events. */
|
|
208
|
+
const IGNORE_POINTER_EVENTS_PANEL_CLASS = 'cdk-overlay-pane_ignore-pointer-events';
|
|
209
|
+
/** Elements a caret can be located in, and therefore anchored to. */
|
|
210
|
+
const EDITABLE_SELECTOR = 'input, textarea, [contenteditable=""], [contenteditable="true"]';
|
|
138
211
|
const KBQ_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('kbq-tooltip-scroll-strategy', {
|
|
139
212
|
providedIn: 'root',
|
|
140
213
|
factory: () => kbqTooltipScrollStrategyFactory(inject(Overlay))
|
|
@@ -143,7 +216,11 @@ const KBQ_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('kbq-tooltip-scroll-strat
|
|
|
143
216
|
function kbqTooltipScrollStrategyFactory(overlay) {
|
|
144
217
|
return () => overlay.scrollStrategies.close();
|
|
145
218
|
}
|
|
146
|
-
/**
|
|
219
|
+
/**
|
|
220
|
+
* Redundant to the root factory of the token; kept so an app can restore the default under its own override (#DS-2196).
|
|
221
|
+
*
|
|
222
|
+
* @docs-private
|
|
223
|
+
*/
|
|
147
224
|
const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {
|
|
148
225
|
provide: KBQ_TOOLTIP_SCROLL_STRATEGY,
|
|
149
226
|
deps: [Overlay],
|
|
@@ -160,8 +237,6 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
160
237
|
return this.scrollStrategyOverride() ?? this.injectedScrollStrategy;
|
|
161
238
|
}
|
|
162
239
|
/** Input (`kbqVisible`) that programmatically shows or hides the tooltip; reflects the current `visible` state. */
|
|
163
|
-
// TODO: Skipped for migration because:
|
|
164
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
165
240
|
get tooltipVisible() {
|
|
166
241
|
return this.visible;
|
|
167
242
|
}
|
|
@@ -169,8 +244,6 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
169
244
|
super.updateVisible(value);
|
|
170
245
|
}
|
|
171
246
|
/** Input (`kbqPlacement`) that sets the tooltip placement relative to its trigger; reflects the current `placement`. */
|
|
172
|
-
// TODO: Skipped for migration because:
|
|
173
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
174
247
|
get tooltipPlacement() {
|
|
175
248
|
return this.placement;
|
|
176
249
|
}
|
|
@@ -178,8 +251,6 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
178
251
|
super.updatePlacement(value);
|
|
179
252
|
}
|
|
180
253
|
/** Input (`kbqPlacementPriority`) that sets the ordered fallback placements; reflects the current `placementPriority`. */
|
|
181
|
-
// TODO: Skipped for migration because:
|
|
182
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
183
254
|
get tooltipPlacementPriority() {
|
|
184
255
|
return this.placementPriority;
|
|
185
256
|
}
|
|
@@ -187,8 +258,6 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
187
258
|
super.updatePlacementPriority(value);
|
|
188
259
|
}
|
|
189
260
|
/** Input (`kbqTooltip`) with the tooltip content — a string or a template. Updating it refreshes an open tooltip. */
|
|
190
|
-
// TODO: Skipped for migration because:
|
|
191
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
192
261
|
get content() {
|
|
193
262
|
return this._content;
|
|
194
263
|
}
|
|
@@ -196,21 +265,21 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
196
265
|
this._content = content;
|
|
197
266
|
this.updateData();
|
|
198
267
|
}
|
|
199
|
-
/**
|
|
200
|
-
|
|
201
|
-
|
|
268
|
+
/**
|
|
269
|
+
* Input (`kbqTooltipDisabled`) controlling whether the tooltip is disabled; setting it to `true` hides it.
|
|
270
|
+
* `undefined` leaves the decision to the trigger, like an unset input.
|
|
271
|
+
*
|
|
272
|
+
* Reads back the *effective* state, which for triggers that derive one of their own (see
|
|
273
|
+
* `derivedDisabledWins`) is not necessarily the value that was written.
|
|
274
|
+
*/
|
|
202
275
|
get disabled() {
|
|
203
276
|
return this._disabled;
|
|
204
277
|
}
|
|
205
278
|
set disabled(value) {
|
|
206
|
-
this.
|
|
207
|
-
|
|
208
|
-
this.hide();
|
|
209
|
-
}
|
|
279
|
+
this.explicitlyDisabled = value === undefined ? undefined : coerceBooleanProperty(value);
|
|
280
|
+
this.applyDisabled();
|
|
210
281
|
}
|
|
211
282
|
/** Input (`kbqTrigger`) with the comma-separated trigger events. An empty value resets to hover + focus and rebinds listeners. */
|
|
212
|
-
// TODO: Skipped for migration because:
|
|
213
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
214
283
|
get trigger() {
|
|
215
284
|
return this._trigger;
|
|
216
285
|
}
|
|
@@ -224,8 +293,6 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
224
293
|
this.initListeners();
|
|
225
294
|
}
|
|
226
295
|
/** Input (`kbqTooltipClass`) with an extra CSS class applied to the tooltip; updating it refreshes the class map. */
|
|
227
|
-
// TODO: Skipped for migration because:
|
|
228
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
229
296
|
get customClass() {
|
|
230
297
|
return this._customClass || '';
|
|
231
298
|
}
|
|
@@ -239,8 +306,6 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
239
306
|
}
|
|
240
307
|
}
|
|
241
308
|
/** Input (`kbqTooltipContext`) with the context object passed to a template tooltip; updating it refreshes the open tooltip. */
|
|
242
|
-
// TODO: Skipped for migration because:
|
|
243
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
244
309
|
get context() {
|
|
245
310
|
return this._context;
|
|
246
311
|
}
|
|
@@ -248,34 +313,103 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
248
313
|
this._context = ctx;
|
|
249
314
|
this.updateData();
|
|
250
315
|
}
|
|
251
|
-
/** Input (`kbqTooltipColor`) with the tooltip color theme
|
|
252
|
-
// TODO: Skipped for migration because:
|
|
253
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
316
|
+
/** Input (`kbqTooltipColor`) with the tooltip color theme. Defaults to `KbqComponentColors.Contrast`. */
|
|
254
317
|
get color() {
|
|
255
|
-
return
|
|
318
|
+
return this._color;
|
|
256
319
|
}
|
|
257
320
|
set color(value) {
|
|
258
321
|
this._color = value || KbqComponentColors.Contrast;
|
|
259
322
|
}
|
|
323
|
+
/** CSS class the current `color` maps to. */
|
|
324
|
+
get colorClass() {
|
|
325
|
+
return `kbq-${this._color}`;
|
|
326
|
+
}
|
|
260
327
|
/** Whether the configured trigger list includes the `click` trigger. */
|
|
261
328
|
get hasClickInTrigger() {
|
|
262
329
|
return this.trigger.includes(PopUpTriggers.Click);
|
|
263
330
|
}
|
|
264
331
|
/**
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
* we need to mirror that reactivity manually — without it, changing the inputs
|
|
269
|
-
* while a tooltip is open silently leaves the overlay showing stale data until
|
|
270
|
-
* the next show/hide cycle.
|
|
332
|
+
* Hands each bound input to its member, and pushes a later change of `modifier`, `header`, `arrow` or
|
|
333
|
+
* `offset` — plain fields — into an open tooltip, which would otherwise show stale data until the next
|
|
334
|
+
* show/hide cycle.
|
|
271
335
|
*/
|
|
272
336
|
ngOnChanges(changes) {
|
|
337
|
+
// A bound input is handed to its member, a bound `undefined` restoring the
|
|
338
|
+
// member's default; unbound, it leaves what code wrote.
|
|
339
|
+
if (changes['triggerInput']) {
|
|
340
|
+
this.trigger = this.triggerInput() ?? '';
|
|
341
|
+
}
|
|
342
|
+
if (changes['hideWithTimeoutInput']) {
|
|
343
|
+
const hideWithTimeout = this.hideWithTimeoutInput();
|
|
344
|
+
if (hideWithTimeout !== undefined)
|
|
345
|
+
this.hideWithTimeout = hideWithTimeout;
|
|
346
|
+
}
|
|
347
|
+
if (changes['enterDelayInput']) {
|
|
348
|
+
this.enterDelay = this.enterDelayInput() ?? defaultEnterDelay;
|
|
349
|
+
}
|
|
350
|
+
if (changes['leaveDelayInput']) {
|
|
351
|
+
this.leaveDelay = this.leaveDelayInput() ?? 0;
|
|
352
|
+
}
|
|
353
|
+
if (changes['relativeToPointerInput']) {
|
|
354
|
+
const relativeToPointer = this.relativeToPointerInput();
|
|
355
|
+
if (relativeToPointer !== undefined)
|
|
356
|
+
this.relativeToPointer = relativeToPointer;
|
|
357
|
+
}
|
|
358
|
+
if (changes['relativeToCaretInput']) {
|
|
359
|
+
const relativeToCaret = this.relativeToCaretInput();
|
|
360
|
+
if (relativeToCaret !== undefined)
|
|
361
|
+
this.relativeToCaret = relativeToCaret;
|
|
362
|
+
}
|
|
363
|
+
if (changes['relativeToCaretVerticalInput']) {
|
|
364
|
+
this.relativeToCaretVertical = this.relativeToCaretVerticalInput() ?? 'auto';
|
|
365
|
+
}
|
|
366
|
+
if (changes['contentInput']) {
|
|
367
|
+
this.content = this.contentInput() ?? '';
|
|
368
|
+
}
|
|
369
|
+
if (changes['headerInput']) {
|
|
370
|
+
this.header = this.headerInput() ?? '';
|
|
371
|
+
}
|
|
372
|
+
if (changes['modifierInput']) {
|
|
373
|
+
this.modifier = this.modifierInput() ?? TooltipModifier.Default;
|
|
374
|
+
}
|
|
375
|
+
if (changes['contextInput']) {
|
|
376
|
+
this.context = this.contextInput();
|
|
377
|
+
}
|
|
378
|
+
if (changes['customClassInput']) {
|
|
379
|
+
this.customClass = this.customClassInput() ?? '';
|
|
380
|
+
}
|
|
381
|
+
if (changes['colorInput']) {
|
|
382
|
+
this.color = this.colorInput() ?? KbqComponentColors.Contrast;
|
|
383
|
+
}
|
|
384
|
+
if (changes['arrowInput']) {
|
|
385
|
+
const arrow = this.arrowInput();
|
|
386
|
+
if (arrow !== undefined)
|
|
387
|
+
this.arrow = arrow;
|
|
388
|
+
}
|
|
389
|
+
if (changes['offsetInput']) {
|
|
390
|
+
this.offset = this.offsetInput() ?? null;
|
|
391
|
+
}
|
|
392
|
+
if (changes['disabledInput']) {
|
|
393
|
+
// A bound `undefined` hands the decision back to the state the trigger derives.
|
|
394
|
+
this.disabled = this.disabledInput();
|
|
395
|
+
}
|
|
396
|
+
if (changes['tooltipPlacementPriorityInput']) {
|
|
397
|
+
this.tooltipPlacementPriority = this.tooltipPlacementPriorityInput() ?? null;
|
|
398
|
+
}
|
|
399
|
+
if (changes['tooltipPlacementInput']) {
|
|
400
|
+
this.tooltipPlacement = this.tooltipPlacementInput() ?? PopUpPlacements.Top;
|
|
401
|
+
}
|
|
402
|
+
if (changes['tooltipVisibleInput']) {
|
|
403
|
+
this.tooltipVisible = this.tooltipVisibleInput() ?? false;
|
|
404
|
+
}
|
|
273
405
|
if (!this.instance)
|
|
274
406
|
return;
|
|
275
|
-
if (changes
|
|
407
|
+
if (changes['modifierInput'] && !changes['modifierInput'].firstChange) {
|
|
276
408
|
this.updateClassMap();
|
|
277
409
|
}
|
|
278
|
-
if (changes
|
|
410
|
+
if ((changes['headerInput'] && !changes['headerInput'].firstChange) ||
|
|
411
|
+
(changes['arrowInput'] && !changes['arrowInput'].firstChange) ||
|
|
412
|
+
(changes['offsetInput'] && !changes['offsetInput'].firstChange)) {
|
|
279
413
|
this.updateData();
|
|
280
414
|
}
|
|
281
415
|
}
|
|
@@ -301,8 +435,9 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
301
435
|
* Sets up an effect that mirrors a `forDisabledComponent`'s disabled signal: when that component is disabled it
|
|
302
436
|
* makes the host focusable (so the tooltip can still be triggered) and enables the tooltip, otherwise disables it.
|
|
303
437
|
*
|
|
304
|
-
* Also joins the "only one tooltip is visible at a time" group
|
|
305
|
-
* same element is open
|
|
438
|
+
* Also joins the "only one tooltip is visible at a time" group, mutes the tooltip while a pop-up on the
|
|
439
|
+
* same element is open, tracks the focus origin and keeps the trigger's `aria-describedby` in sync with the
|
|
440
|
+
* open tooltip. All of this wiring lives here rather than in `ngAfterViewInit`/`ngOnDestroy` because
|
|
306
441
|
* several subclasses override those hooks: `KbqTitleDirective` and `KbqEllipsisCenterDirective` skip
|
|
307
442
|
* `super.ngAfterViewInit()`, and `KbqPasswordToggle` skips `super` in both hooks entirely. `destroyRef`
|
|
308
443
|
* additionally covers a trigger destroyed while its tooltip is still visible — that path disposes the
|
|
@@ -315,14 +450,15 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
315
450
|
this.injectedScrollStrategy = inject(KBQ_TOOLTIP_SCROLL_STRATEGY);
|
|
316
451
|
/**
|
|
317
452
|
* Per-instance override for the scroll strategy, taking precedence over `KBQ_TOOLTIP_SCROLL_STRATEGY`
|
|
318
|
-
* when set. An
|
|
453
|
+
* when set. An input rather than a DI override so it applies to this tooltip instance only, without
|
|
319
454
|
* leaking into other `kbqTooltip`s nested inside the same host (DI overrides are visible to every
|
|
320
455
|
* descendant in the element-injector tree, not just the element they're declared on).
|
|
456
|
+
*
|
|
321
457
|
* @docs-private
|
|
322
458
|
*/
|
|
323
|
-
this.scrollStrategyOverride = input(undefined, ...(ngDevMode ?
|
|
324
|
-
|
|
325
|
-
|
|
459
|
+
this.scrollStrategyOverride = input(undefined, { ...(ngDevMode ? { debugName: "scrollStrategyOverride" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipScrollStrategy' });
|
|
460
|
+
/** Id of the tooltip element this trigger points its `aria-describedby` at while the tooltip is open. */
|
|
461
|
+
this.tooltipId = `kbq-tooltip-${nextTooltipUniqueId++}`;
|
|
326
462
|
/** @docs-private */
|
|
327
463
|
this.parentPopup = inject(KBQ_PARENT_POPUP, { optional: true });
|
|
328
464
|
/**
|
|
@@ -341,15 +477,19 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
341
477
|
* The input expects a component containing `disabledSignal` property, which is
|
|
342
478
|
* a writable signal emitting boolean values.
|
|
343
479
|
*/
|
|
344
|
-
this.forDisabledComponent = input(...(ngDevMode ? [undefined, { debugName: "forDisabledComponent" }] : []));
|
|
480
|
+
this.forDisabledComponent = input(...(ngDevMode ? [undefined, { debugName: "forDisabledComponent" }] : /* istanbul ignore next */ []));
|
|
345
481
|
/**
|
|
346
482
|
* Determines whether pointer events should be ignored on tooltips.
|
|
347
483
|
*
|
|
348
|
-
* When set to `true`, tooltip
|
|
349
|
-
*
|
|
350
|
-
*
|
|
484
|
+
* When set to `true`, the tooltip pane does not receive pointer events, so clicks and hovers pass through
|
|
485
|
+
* to whatever is underneath it. Defaults to `false`, which keeps the tooltip hoverable: a user who needs
|
|
486
|
+
* more time to read it — or who reads at high magnification, where the pointer often ends up over the
|
|
487
|
+
* tooltip itself — can move the pointer onto it without it disappearing (WCAG 1.4.13 "Content on Hover").
|
|
488
|
+
*
|
|
489
|
+
* Set it to `true` for tooltips that float over other click targets, such as the overflow hints of a
|
|
490
|
+
* scrolling option list.
|
|
351
491
|
*/
|
|
352
|
-
this.ignoreTooltipPointerEvents = input(
|
|
492
|
+
this.ignoreTooltipPointerEvents = input(false, ...(ngDevMode ? [{ debugName: "ignoreTooltipPointerEvents" }] : /* istanbul ignore next */ []));
|
|
353
493
|
/**
|
|
354
494
|
* Whether the tooltip takes part in the "only one tooltip is visible at a time" group: showing it
|
|
355
495
|
* hides the previously visible tooltip, and it is hidden when another tooltip is shown.
|
|
@@ -360,36 +500,43 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
360
500
|
* Tooltips without an interactive `kbqTrigger` (`manual`, `none`, …) never take part in the group,
|
|
361
501
|
* regardless of this input — they are shown imperatively and are expected to stay pinned.
|
|
362
502
|
*/
|
|
363
|
-
this.singleInstance = input(inject(KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT), ...(ngDevMode ?
|
|
364
|
-
|
|
365
|
-
alias: 'kbqTooltipSingleInstance',
|
|
366
|
-
transform: booleanAttribute
|
|
367
|
-
}]));
|
|
503
|
+
this.singleInstance = input(inject(KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT), { ...(ngDevMode ? { debugName: "singleInstance" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipSingleInstance',
|
|
504
|
+
transform: booleanAttribute });
|
|
368
505
|
/**
|
|
369
506
|
* Changes hiding behavior. By default, tooltip is hidden on mouseleave from trigger.
|
|
370
507
|
* Setting hideWithTimeout to true will delay tooltip hiding and will not hide when the mouse moves from trigger
|
|
371
508
|
* to tooltip.
|
|
372
509
|
*/
|
|
373
|
-
// TODO: Skipped for migration because:
|
|
374
|
-
// This input overrides a field from a superclass, while the superclass field
|
|
375
|
-
// is not migrated.
|
|
376
510
|
this.hideWithTimeout = false;
|
|
377
511
|
/**
|
|
378
512
|
* Positions the tooltip relative to the mouse cursor. Only available for top and bottom kbqPlacement.
|
|
379
513
|
* Does not work with kbqPlacementPriority.
|
|
380
514
|
*/
|
|
381
|
-
// TODO: Skipped for migration because:
|
|
382
|
-
// Class of this input is manually instantiated. This is discouraged and prevents
|
|
383
|
-
// migration.
|
|
384
515
|
this.relativeToPointer = false;
|
|
516
|
+
/**
|
|
517
|
+
* Positions the tooltip relative to the text caret of the field it is attached to, following it while the
|
|
518
|
+
* user types, moves the caret and scrolls the field. Anchors to the selection whenever there is one.
|
|
519
|
+
*
|
|
520
|
+
* Every placement is available, unlike with `kbqRelativeToPointer`: the caret is anchored as a rectangle,
|
|
521
|
+
* so the usual fallback placements keep the tooltip on screen. Wins when both inputs are enabled.
|
|
522
|
+
*
|
|
523
|
+
* The field is the host element itself when it is editable, otherwise the first editable it wraps.
|
|
524
|
+
*/
|
|
525
|
+
this.relativeToCaret = false;
|
|
526
|
+
/** What the tooltip is vertically anchored to while `kbqRelativeToCaret` is enabled. */
|
|
527
|
+
this.relativeToCaretVertical = 'auto';
|
|
528
|
+
/**
|
|
529
|
+
* Whether the state this trigger derives means *there is nothing to show*, so an explicit
|
|
530
|
+
* `kbqTooltipDisabled="false"` cannot override it, as for a hint that repeats text the host never clipped.
|
|
531
|
+
* Otherwise the explicit value wins in both directions, so `false` on a wrapped control that is not disabled
|
|
532
|
+
* still asks for a tooltip.
|
|
533
|
+
*
|
|
534
|
+
* @docs-private
|
|
535
|
+
*/
|
|
536
|
+
this.derivedDisabledWins = false;
|
|
385
537
|
/** Input (`kbqEnterDelay`) — delay in milliseconds before the tooltip is shown. Defaults to `400`. */
|
|
386
|
-
|
|
387
|
-
// Your application code writes to the input. This prevents migration.
|
|
388
|
-
this.enterDelay = 400;
|
|
538
|
+
this.enterDelay = defaultEnterDelay;
|
|
389
539
|
/** Input (`kbqLeaveDelay`) — delay in milliseconds before the tooltip is hidden. Defaults to `0`. */
|
|
390
|
-
// TODO: Skipped for migration because:
|
|
391
|
-
// This input overrides a field from a superclass, while the superclass field
|
|
392
|
-
// is not migrated.
|
|
393
540
|
this.leaveDelay = 0;
|
|
394
541
|
/** Backing field for `trigger`; defaults to hover + focus. */
|
|
395
542
|
this._trigger = `${PopUpTriggers.Hover}, ${PopUpTriggers.Focus}`;
|
|
@@ -398,22 +545,25 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
398
545
|
/** Backing field for `color`; defaults to `KbqComponentColors.Contrast`. */
|
|
399
546
|
this._color = KbqComponentColors.Contrast;
|
|
400
547
|
/** Input (`kbqTooltipArrow`) — whether to render the tooltip's arrow/pointer. Defaults to `false`. */
|
|
401
|
-
// TODO: Skipped for migration because:
|
|
402
|
-
// Your application code writes to the input. This prevents migration.
|
|
403
548
|
this.arrow = false;
|
|
404
|
-
/**
|
|
405
|
-
|
|
406
|
-
|
|
549
|
+
/**
|
|
550
|
+
* Input (`kbqTooltipOffset`) — distance in pixels between the tooltip and its trigger. `null`, the default, keeps
|
|
551
|
+
* the gap of the stylesheet.
|
|
552
|
+
*/
|
|
407
553
|
this.offset = null;
|
|
408
554
|
/** Output (`kbqPlacementChange`) that emits the new placement whenever the tooltip repositions. */
|
|
409
555
|
this.placementChange = new EventEmitter();
|
|
556
|
+
/** @docs-private */
|
|
557
|
+
this.placementChangeOutput = outputFromObservable(this.placementChange, { alias: 'kbqPlacementChange' });
|
|
410
558
|
/** Output (`kbqVisibleChange`) that emits when the tooltip's visibility changes. */
|
|
411
559
|
this.visibleChange = new EventEmitter();
|
|
412
560
|
/** @docs-private */
|
|
561
|
+
this.visibleChangeOutput = outputFromObservable(this.visibleChange, { alias: 'kbqVisibleChange' });
|
|
562
|
+
/** @docs-private */
|
|
413
563
|
this.originSelector = '.kbq-tooltip';
|
|
414
564
|
/** @docs-private */
|
|
415
565
|
this.overlayConfig = {
|
|
416
|
-
panelClass: [
|
|
566
|
+
panelClass: [TOOLTIP_PANEL_CLASS]
|
|
417
567
|
};
|
|
418
568
|
/**
|
|
419
569
|
* Visual variant of the tooltip. Accepts `'default'` | `'warning'` | `'extended'`.
|
|
@@ -421,9 +571,6 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
421
571
|
* subclasses — to render a warning tooltip use `kbqTooltipModifier="warning"`,
|
|
422
572
|
* and `kbqTooltipModifier="extended"` for the extended variant (combine with `kbqTooltipHeader`).
|
|
423
573
|
*/
|
|
424
|
-
// TODO: Skipped for migration because:
|
|
425
|
-
// Class of this input is manually instantiated. This is discouraged and prevents
|
|
426
|
-
// migration.
|
|
427
574
|
this.modifier = TooltipModifier.Default;
|
|
428
575
|
/**
|
|
429
576
|
* Whether the tooltip is muted because a pop-up on the same element has taken over the anchor.
|
|
@@ -441,6 +588,67 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
441
588
|
* `mouseleave` as well, but with the pointer still within the host — that one does not count.
|
|
442
589
|
*/
|
|
443
590
|
this.pointerLeftWhileMuted = false;
|
|
591
|
+
/**
|
|
592
|
+
* Origin of the last focus event on the host, cached from the `FocusMonitor` stream so the focus trigger
|
|
593
|
+
* can tell a keyboard focus from the one a click leaves behind.
|
|
594
|
+
*/
|
|
595
|
+
this.lastFocusOrigin = null;
|
|
596
|
+
/** @docs-private */
|
|
597
|
+
this.triggerInput = input(undefined, { ...(ngDevMode ? { debugName: "triggerInput" } : /* istanbul ignore next */ {}), alias: 'kbqTrigger' });
|
|
598
|
+
/** @docs-private */
|
|
599
|
+
this.hideWithTimeoutInput = input(undefined, { ...(ngDevMode ? { debugName: "hideWithTimeoutInput" } : /* istanbul ignore next */ {}), alias: 'hideWithTimeout',
|
|
600
|
+
transform: booleanAttribute });
|
|
601
|
+
/** @docs-private */
|
|
602
|
+
this.enterDelayInput = input(undefined, { ...(ngDevMode ? { debugName: "enterDelayInput" } : /* istanbul ignore next */ {}), alias: 'kbqEnterDelay' });
|
|
603
|
+
/** @docs-private */
|
|
604
|
+
this.leaveDelayInput = input(undefined, { ...(ngDevMode ? { debugName: "leaveDelayInput" } : /* istanbul ignore next */ {}), alias: 'kbqLeaveDelay' });
|
|
605
|
+
/** @docs-private */
|
|
606
|
+
this.relativeToPointerInput = input(undefined, { ...(ngDevMode ? { debugName: "relativeToPointerInput" } : /* istanbul ignore next */ {}), alias: 'kbqRelativeToPointer',
|
|
607
|
+
transform: booleanAttribute });
|
|
608
|
+
/** @docs-private */
|
|
609
|
+
this.relativeToCaretInput = input(undefined, { ...(ngDevMode ? { debugName: "relativeToCaretInput" } : /* istanbul ignore next */ {}), alias: 'kbqRelativeToCaret',
|
|
610
|
+
transform: booleanAttribute });
|
|
611
|
+
/** @docs-private */
|
|
612
|
+
this.relativeToCaretVerticalInput = input(undefined, { ...(ngDevMode ? { debugName: "relativeToCaretVerticalInput" } : /* istanbul ignore next */ {}), alias: 'kbqRelativeToCaretVertical' });
|
|
613
|
+
/** @docs-private */
|
|
614
|
+
this.contentInput = input(undefined, { ...(ngDevMode ? { debugName: "contentInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltip' });
|
|
615
|
+
/** @docs-private */
|
|
616
|
+
this.headerInput = input(undefined, { ...(ngDevMode ? { debugName: "headerInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipHeader' });
|
|
617
|
+
/** @docs-private */
|
|
618
|
+
this.modifierInput = input(undefined, { ...(ngDevMode ? { debugName: "modifierInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipModifier' });
|
|
619
|
+
/** @docs-private */
|
|
620
|
+
this.contextInput = input(undefined, { ...(ngDevMode ? { debugName: "contextInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipContext' });
|
|
621
|
+
/** @docs-private */
|
|
622
|
+
this.customClassInput = input(undefined, { ...(ngDevMode ? { debugName: "customClassInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipClass' });
|
|
623
|
+
/** @docs-private */
|
|
624
|
+
this.colorInput = input(undefined, { ...(ngDevMode ? { debugName: "colorInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipColor' });
|
|
625
|
+
/** @docs-private */
|
|
626
|
+
this.arrowInput = input(undefined, { ...(ngDevMode ? { debugName: "arrowInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipArrow',
|
|
627
|
+
transform: booleanAttribute });
|
|
628
|
+
/** @docs-private */
|
|
629
|
+
this.offsetInput = input(undefined, { ...(ngDevMode ? { debugName: "offsetInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipOffset',
|
|
630
|
+
transform: kbqOptionalNumberAttribute });
|
|
631
|
+
/** @docs-private */
|
|
632
|
+
this.disabledInput = input(undefined, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'kbqTooltipDisabled',
|
|
633
|
+
// `booleanAttribute` would read a bound `undefined` as `false`, an explicit request for the tooltip.
|
|
634
|
+
transform: (value) => value === undefined ? undefined : booleanAttribute(value) });
|
|
635
|
+
/** @docs-private */
|
|
636
|
+
this.tooltipPlacementPriorityInput = input(undefined, { ...(ngDevMode ? { debugName: "tooltipPlacementPriorityInput" } : /* istanbul ignore next */ {}), alias: 'kbqPlacementPriority' });
|
|
637
|
+
/** @docs-private */
|
|
638
|
+
this.tooltipPlacementInput = input(undefined, { ...(ngDevMode ? { debugName: "tooltipPlacementInput" } : /* istanbul ignore next */ {}), alias: 'kbqPlacement' });
|
|
639
|
+
/** @docs-private */
|
|
640
|
+
this.tooltipVisibleInput = input(undefined, { ...(ngDevMode ? { debugName: "tooltipVisibleInput" } : /* istanbul ignore next */ {}), alias: 'kbqVisible' });
|
|
641
|
+
/** Teardown of the document-level `Escape` listener, or `null` while the overlay is detached. */
|
|
642
|
+
this.unbindEscapeListener = null;
|
|
643
|
+
/** Element whose `aria-describedby` points at this tooltip, or `null` while nothing is described. */
|
|
644
|
+
this.describedElement = null;
|
|
645
|
+
/** Teardown of the listeners following the caret, or `null` while the tooltip is not tracking one. */
|
|
646
|
+
this.stopCaretListeners = null;
|
|
647
|
+
/**
|
|
648
|
+
* Origin that stays on the caret of the field while `kbqRelativeToCaret` is enabled, and on the host element
|
|
649
|
+
* otherwise — so switching the input off while the tooltip is open does not leave it on the caret.
|
|
650
|
+
*/
|
|
651
|
+
this.caretOrigin = kbqCreateCaretOrigin(() => this.measureCaretAnchor());
|
|
444
652
|
merge(...this.siblingPopups.map(({ openedChange }) => openedChange))
|
|
445
653
|
.pipe(filter(Boolean),
|
|
446
654
|
// A tooltip shown imperatively (`manual`/`none`) is not competing for the anchor with the
|
|
@@ -451,47 +659,93 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
451
659
|
this.pointerLeftWhileMuted = false;
|
|
452
660
|
this.hideAsInactive();
|
|
453
661
|
});
|
|
662
|
+
// CDK dispatches the focus origin from a capture-phase listener on the document, so it is already
|
|
663
|
+
// recorded by the time the trigger's own `focus` listener runs.
|
|
664
|
+
this.focusMonitor
|
|
665
|
+
.monitor(this.elementRef.nativeElement)
|
|
666
|
+
.pipe(takeUntilDestroyed())
|
|
667
|
+
.subscribe((origin) => (this.lastFocusOrigin = origin));
|
|
454
668
|
this.visibleChange.pipe(takeUntilDestroyed()).subscribe((visible) => {
|
|
455
669
|
if (visible) {
|
|
670
|
+
this.describeTrigger();
|
|
456
671
|
if (this.participatesInSingleInstance) {
|
|
457
672
|
this.tooltipRegistry.setVisible(this);
|
|
458
673
|
}
|
|
459
674
|
}
|
|
460
675
|
else {
|
|
676
|
+
this.undescribeTrigger();
|
|
461
677
|
this.tooltipRegistry.clearVisible(this);
|
|
462
678
|
}
|
|
463
679
|
});
|
|
464
|
-
this.destroyRef.onDestroy(() =>
|
|
680
|
+
this.destroyRef.onDestroy(() => {
|
|
681
|
+
this.undescribeTrigger();
|
|
682
|
+
this.stopListeningForEscape();
|
|
683
|
+
this.tooltipRegistry.clearVisible(this);
|
|
684
|
+
});
|
|
465
685
|
effect(() => {
|
|
466
|
-
|
|
686
|
+
const forDisabledComponent = this.forDisabledComponent();
|
|
687
|
+
if (!forDisabledComponent)
|
|
467
688
|
return;
|
|
468
|
-
const disabled =
|
|
689
|
+
const disabled = forDisabledComponent.disabledSignal();
|
|
690
|
+
const nativeElement = this.getNativeElement();
|
|
469
691
|
if (disabled) {
|
|
470
|
-
|
|
471
|
-
|
|
692
|
+
// The wrapped control drops out of the tab order once it is disabled, so the wrapper takes its
|
|
693
|
+
// place — otherwise the explanation for why the control is unavailable is keyboard-unreachable.
|
|
694
|
+
this.renderer.setAttribute(nativeElement, 'tabindex', '0');
|
|
695
|
+
this.renderer.setAttribute(nativeElement, 'role', 'group');
|
|
696
|
+
this.renderer.addClass(nativeElement, 'kbq-tooltip-trigger_for-disabled');
|
|
472
697
|
}
|
|
473
698
|
else {
|
|
474
|
-
this.renderer.setAttribute(
|
|
699
|
+
this.renderer.setAttribute(nativeElement, 'tabindex', '-1');
|
|
700
|
+
this.renderer.removeAttribute(nativeElement, 'role');
|
|
701
|
+
this.renderer.removeClass(nativeElement, 'kbq-tooltip-trigger_for-disabled');
|
|
475
702
|
}
|
|
476
|
-
|
|
703
|
+
// Derived, not assigned: an explicit `kbqTooltipDisabled` binding still wins, whichever of the
|
|
704
|
+
// two runs first.
|
|
705
|
+
this.setDerivedDisabled(!disabled);
|
|
477
706
|
});
|
|
478
707
|
}
|
|
479
|
-
/**
|
|
480
|
-
* Hides the tooltip when a parent pop-up closes, starts focus monitoring on the host, and—when
|
|
481
|
-
* `ignoreTooltipPointerEvents` is set—adds the panel class that makes the tooltip ignore pointer events.
|
|
482
|
-
*/
|
|
708
|
+
/** Hides the tooltip when a parent pop-up closes. */
|
|
483
709
|
ngAfterViewInit() {
|
|
484
710
|
this.parentPopup?.closedStream.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.hide());
|
|
485
|
-
this.focusMonitor.monitor(this.elementRef.nativeElement);
|
|
486
|
-
if (this.ignoreTooltipPointerEvents() && Array.isArray(this.overlayConfig.panelClass)) {
|
|
487
|
-
this.overlayConfig.panelClass.push('cdk-overlay-pane_ignore-pointer-events');
|
|
488
|
-
}
|
|
489
711
|
}
|
|
490
712
|
/** Stops focus monitoring on the host element and runs the base-class teardown. */
|
|
491
713
|
ngOnDestroy() {
|
|
492
714
|
this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);
|
|
493
715
|
super.ngOnDestroy();
|
|
494
716
|
}
|
|
717
|
+
/**
|
|
718
|
+
* Records the state the subclass derived from its own content and re-folds it with the consumer's
|
|
719
|
+
* `kbqTooltipDisabled`. Subclasses call this instead of writing `disabled`, which would be read back as
|
|
720
|
+
* the consumer's own value and lose whichever of the two was written first.
|
|
721
|
+
*
|
|
722
|
+
* @docs-private
|
|
723
|
+
*/
|
|
724
|
+
setDerivedDisabled(value) {
|
|
725
|
+
this.derivedDisabled = value;
|
|
726
|
+
this.applyDisabled();
|
|
727
|
+
}
|
|
728
|
+
foldDisabled() {
|
|
729
|
+
if (this.derivedDisabledWins) {
|
|
730
|
+
return this.explicitlyDisabled === true || (this.derivedDisabled ?? false);
|
|
731
|
+
}
|
|
732
|
+
return this.explicitlyDisabled ?? this.derivedDisabled ?? false;
|
|
733
|
+
}
|
|
734
|
+
/** Recomputes the effective `disabled` and closes an open tooltip that just lost its reason to be open. */
|
|
735
|
+
applyDisabled() {
|
|
736
|
+
const next = this.foldDisabled();
|
|
737
|
+
// Both producers re-state their verdict on every resize, content mutation and pointer sweep, and
|
|
738
|
+
// most of those repeat the previous answer. Without this the repeats still reach `hide()`, which
|
|
739
|
+
// re-enters the Angular zone from a `ResizeObserver` callback CDK deliberately runs outside it and
|
|
740
|
+
// schedules a tick — once per visible host, on a directive that sits on every dropdown item, list
|
|
741
|
+
// option and tree option.
|
|
742
|
+
if (next === this._disabled)
|
|
743
|
+
return;
|
|
744
|
+
this._disabled = next;
|
|
745
|
+
if (this._disabled) {
|
|
746
|
+
this.hide();
|
|
747
|
+
}
|
|
748
|
+
}
|
|
495
749
|
/**
|
|
496
750
|
* Shows the tooltip after `delay` ms. Suppresses showing while a pop-up on the same element holds the
|
|
497
751
|
* anchor or on a focus trigger that did not originate from the keyboard, and applies cursor-relative
|
|
@@ -499,28 +753,35 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
499
753
|
*/
|
|
500
754
|
show(delay = this.enterDelay) {
|
|
501
755
|
if (this.mutedBySiblingPopup) {
|
|
502
|
-
const pointerReturned = this.triggerName === 'mouseenter' &&
|
|
503
|
-
this.pointerLeftWhileMuted &&
|
|
504
|
-
!this.siblingPopups.some(({ isAttached }) => isAttached);
|
|
756
|
+
const pointerReturned = this.triggerName === 'mouseenter' && this.pointerLeftWhileMuted && !this.siblingPopupAttached;
|
|
505
757
|
if (!pointerReturned)
|
|
506
758
|
return;
|
|
507
759
|
this.mutedBySiblingPopup = false;
|
|
508
760
|
}
|
|
761
|
+
// Checked before the overlay exists: `KbqTooltipComponent.show` bails on empty content, but by then
|
|
762
|
+
// the trigger has already attached the pane, leaving an empty, invisible overlay latched open — and
|
|
763
|
+
// `KbqPopUpTrigger.show` returns early for as long as it is there, so the tooltip never recovers.
|
|
764
|
+
if (!this.content) {
|
|
765
|
+
return;
|
|
766
|
+
}
|
|
509
767
|
// `isAttached` is checked directly, not just the `mutedBySiblingPopup` latch: `openedChange` can lag
|
|
510
|
-
// it by a real delay — e.g. select/tree-select only emit it
|
|
768
|
+
// it by a real delay — e.g. select/tree-select only emit it after the render that shows their panel,
|
|
511
769
|
// and a sibling's own `hide()` can cancel a still-pending `show()` outright so it never emits at all
|
|
512
770
|
// (KbqPopUp.show/hide, pop-up.ts). `isAttached` itself is guaranteed synchronous by the
|
|
513
771
|
// `KbqSiblingPopup` contract, so checking it here closes that gap regardless of the cause. Gated by
|
|
514
772
|
// `hasInteractiveTrigger` for the same reason as the constructor subscription: a `manual`/`none`
|
|
515
773
|
// tooltip is driven imperatively and must not be muted by a sibling at all.
|
|
516
|
-
if (this.hasInteractiveTrigger && this.
|
|
774
|
+
if (this.hasInteractiveTrigger && this.siblingPopupAttached) {
|
|
517
775
|
return;
|
|
518
776
|
}
|
|
519
|
-
if (this.triggerName === 'focus' && this.
|
|
777
|
+
if (this.triggerName === 'focus' && !FOCUS_ORIGINS_THAT_SHOW.includes(this.lastFocusOrigin)) {
|
|
520
778
|
return;
|
|
521
779
|
}
|
|
522
780
|
super.show(delay);
|
|
523
|
-
if (this.
|
|
781
|
+
if (this.relativeToCaret) {
|
|
782
|
+
this.applyRelativeToCaret();
|
|
783
|
+
}
|
|
784
|
+
else if (this.relativeToPointer) {
|
|
524
785
|
this.applyRelativeToPointer();
|
|
525
786
|
}
|
|
526
787
|
}
|
|
@@ -534,13 +795,21 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
534
795
|
* not be mistaken for the user leaving.
|
|
535
796
|
*/
|
|
536
797
|
hide(delay = this.leaveDelay) {
|
|
537
|
-
if (RELEASE_TRIGGERS.includes(this.triggerName) && !this.
|
|
798
|
+
if (RELEASE_TRIGGERS.includes(this.triggerName) && !this.siblingPopupAttached) {
|
|
538
799
|
this.mutedBySiblingPopup = false;
|
|
539
800
|
}
|
|
540
801
|
super.hide(delay);
|
|
541
802
|
}
|
|
803
|
+
/**
|
|
804
|
+
* Whether a pop-up on the same element is attached. Untracked: the siblings keep it in signals, and a consumer
|
|
805
|
+
* `effect()` that shows or hides the tooltip must not run again whenever one of them opens or closes.
|
|
806
|
+
*/
|
|
807
|
+
get siblingPopupAttached() {
|
|
808
|
+
return untracked(() => this.siblingPopups.some(({ isAttached }) => isAttached));
|
|
809
|
+
}
|
|
542
810
|
/**
|
|
543
811
|
* Records whether the pointer left the host while muted, see `pointerLeftWhileMuted`.
|
|
812
|
+
*
|
|
544
813
|
* @docs-private
|
|
545
814
|
*/
|
|
546
815
|
trackPointerLeave(event) {
|
|
@@ -548,7 +817,8 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
548
817
|
return;
|
|
549
818
|
const { left, right, top, bottom } = this.elementRef.nativeElement.getBoundingClientRect();
|
|
550
819
|
this.pointerLeftWhileMuted =
|
|
551
|
-
|
|
820
|
+
// A box covers [left, right) and [top, bottom): a point on its right or bottom edge is outside it.
|
|
821
|
+
event.clientX < left || event.clientX >= right || event.clientY < top || event.clientY >= bottom;
|
|
552
822
|
}
|
|
553
823
|
/**
|
|
554
824
|
* Hides the tooltip because something else took its place — another tooltip became visible, or a pop-up
|
|
@@ -558,46 +828,89 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
558
828
|
* `triggerName` is `mouseleave` and the pop-up itself is hovered. Hiding through the instance keeps
|
|
559
829
|
* `visibleChange(false)` firing, so `isOpen`, `kbqVisibleChange` and the `kbqVisible` input stay in sync.
|
|
560
830
|
* Does nothing when the tooltip is already detached or when closing is prevented.
|
|
561
|
-
*
|
|
831
|
+
*
|
|
832
|
+
* @docs-private
|
|
833
|
+
*/
|
|
562
834
|
hideAsInactive() {
|
|
563
835
|
if (this.preventClose)
|
|
564
836
|
return;
|
|
565
837
|
this.ngZone.run(() => this.instance?.hide(0));
|
|
566
838
|
}
|
|
567
|
-
/**
|
|
568
|
-
*
|
|
839
|
+
/**
|
|
840
|
+
* Shows the tooltip next to the cursor position of the given mouse event, anchoring it to the event's
|
|
841
|
+
* `currentTarget` instead of the directive's own host element.
|
|
842
|
+
*
|
|
843
|
+
* Use it when the trigger cannot be declared in the template — for instance for a tooltip shared by the
|
|
844
|
+
* cells of a virtualized table. The directive still has to be created in an injection context.
|
|
845
|
+
*/
|
|
569
846
|
showForMouseEvent(event) {
|
|
570
847
|
if (!(event.currentTarget instanceof HTMLElement))
|
|
571
848
|
return;
|
|
849
|
+
// The same guard `show()` carries, repeated because this path reaches `super.show()` directly and
|
|
850
|
+
// would otherwise latch an empty pane open — with it attached, `KbqPopUpTrigger.show` returns early
|
|
851
|
+
// and the tooltip never recovers, while the pane keeps swallowing the document keydown listener.
|
|
852
|
+
if (!this.content)
|
|
853
|
+
return;
|
|
572
854
|
this.triggerName = 'mouseenter';
|
|
573
855
|
this.mouseEvent = event;
|
|
856
|
+
this.undescribeTrigger();
|
|
574
857
|
this.setExternalNativeElement(event.currentTarget);
|
|
575
858
|
super.show();
|
|
859
|
+
// Re-anchoring an open tooltip has to move the description itself: the `visibleChange(true)` edge that
|
|
860
|
+
// normally drives it is swallowed by `distinctUntilChanged` while the pop-up stays attached. A tooltip
|
|
861
|
+
// that is not open yet is left to that edge, which describes the element anchored by then.
|
|
862
|
+
if (untracked(() => this.isOpen)) {
|
|
863
|
+
this.describeTrigger();
|
|
864
|
+
}
|
|
576
865
|
this.applyRelativeToPointer();
|
|
577
866
|
}
|
|
578
867
|
/**
|
|
579
|
-
*
|
|
580
|
-
*
|
|
868
|
+
* Shows the tooltip anchored to the given element instead of the directive's own host element.
|
|
869
|
+
*
|
|
870
|
+
* Use it when the trigger cannot be declared in the template. The directive still has to be created in an
|
|
871
|
+
* injection context:
|
|
581
872
|
*
|
|
582
|
-
*
|
|
583
|
-
* const tooltip = new KbqTooltipTrigger();
|
|
873
|
+
* ```ts
|
|
874
|
+
* const tooltip = runInInjectionContext(injector, () => new KbqTooltipTrigger());
|
|
584
875
|
* tooltip.showForElement(element);
|
|
585
|
-
*
|
|
876
|
+
* ```
|
|
877
|
+
*
|
|
878
|
+
* Does nothing while the tooltip is disabled or has no content — there is no overlay to anchor then.
|
|
879
|
+
*/
|
|
586
880
|
showForElement(element) {
|
|
587
881
|
this.show();
|
|
882
|
+
if (!this.strategy)
|
|
883
|
+
return;
|
|
588
884
|
this.strategy.setOrigin(element);
|
|
589
885
|
}
|
|
886
|
+
/**
|
|
887
|
+
* Replaces the CSS classes put on the tooltip's overlay pane.
|
|
888
|
+
*
|
|
889
|
+
* Exists for components that own a tooltip through `hostDirectives` instead of extending this class and
|
|
890
|
+
* therefore cannot reach the protected overlay configuration (e.g. `KbqNavbarItem`).
|
|
891
|
+
*
|
|
892
|
+
* @docs-private
|
|
893
|
+
*/
|
|
894
|
+
setOverlayPanelClass(panelClass) {
|
|
895
|
+
this.overlayConfig.panelClass = panelClass;
|
|
896
|
+
}
|
|
590
897
|
/** @docs-private */
|
|
591
898
|
updateData() {
|
|
592
899
|
if (!this.instance) {
|
|
593
900
|
return;
|
|
594
901
|
}
|
|
902
|
+
this.instance.id = this.tooltipId;
|
|
595
903
|
this.instance.content = this.content;
|
|
596
904
|
this.instance.header = this.header;
|
|
597
|
-
|
|
905
|
+
// `!= null` rather than a truthy check: `0`, `''` and `false` are legitimate template contexts, and
|
|
906
|
+
// dropping them left the template rendering the previous context instead.
|
|
907
|
+
this.instance.context = this.context != null ? { $implicit: this.context } : null;
|
|
598
908
|
this.instance.arrow = this.arrow;
|
|
599
909
|
this.instance.offset = this.offset;
|
|
600
910
|
this.instance.detectChanges();
|
|
911
|
+
// The margins live on the rendered tooltip element, so re-applying them is the only way a changed
|
|
912
|
+
// `kbqTooltipOffset` reaches an already open tooltip.
|
|
913
|
+
this.instance.applyOffset();
|
|
601
914
|
this.updatePosition(true);
|
|
602
915
|
}
|
|
603
916
|
/** @docs-private */
|
|
@@ -613,10 +926,199 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
613
926
|
if (!this.instance) {
|
|
614
927
|
return;
|
|
615
928
|
}
|
|
616
|
-
this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], `${this.customClass} ${this.
|
|
929
|
+
this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], `${this.customClass} ${this.colorClass}`, {
|
|
617
930
|
modifier: this.modifier
|
|
618
931
|
});
|
|
619
|
-
|
|
932
|
+
}
|
|
933
|
+
/**
|
|
934
|
+
* Arms the `Escape` listener for as long as the tooltip overlay is attached, so that `Escape` dismisses
|
|
935
|
+
* the tooltip.
|
|
936
|
+
*
|
|
937
|
+
* The inherited `keydownHandler` is a host binding on the trigger and therefore only fires while the
|
|
938
|
+
* trigger itself has focus, which a hover-opened tooltip never has.
|
|
939
|
+
*
|
|
940
|
+
* @docs-private
|
|
941
|
+
*/
|
|
942
|
+
createOverlay() {
|
|
943
|
+
if (this.overlayRef) {
|
|
944
|
+
return this.overlayRef;
|
|
945
|
+
}
|
|
946
|
+
// Rebuilt here rather than pushed into `overlayConfig` from a lifecycle hook: five subclasses skip
|
|
947
|
+
// `super.ngAfterViewInit()`, and appending to the array made the class impossible to take back off.
|
|
948
|
+
this.overlayConfig = { ...this.overlayConfig, panelClass: this.getPanelClasses() };
|
|
949
|
+
const overlayRef = super.createOverlay();
|
|
950
|
+
overlayRef
|
|
951
|
+
.attachments()
|
|
952
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
953
|
+
.subscribe(() => {
|
|
954
|
+
this.listenForEscape();
|
|
955
|
+
this.startTrackingCaret();
|
|
956
|
+
});
|
|
957
|
+
overlayRef
|
|
958
|
+
.detachments()
|
|
959
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
960
|
+
.subscribe(() => {
|
|
961
|
+
this.stopListeningForEscape();
|
|
962
|
+
this.stopTrackingCaret();
|
|
963
|
+
});
|
|
964
|
+
return overlayRef;
|
|
965
|
+
}
|
|
966
|
+
/**
|
|
967
|
+
* Binds a document-level `Escape` listener, outside the zone and at most once per attach.
|
|
968
|
+
*
|
|
969
|
+
* An open tooltip is the topmost layer, so `Escape` dismisses it first (WAI-ARIA tooltip pattern, WCAG 1.4.13):
|
|
970
|
+
* the listener captures the key and marks it spent, and a modal or a panel that closes on `Escape` lets it
|
|
971
|
+
* pass. The key is not stopped, so a control that closes a popup of its own on it still does.
|
|
972
|
+
*
|
|
973
|
+
* Deliberately not `overlayRef.keydownEvents()`: CDK hands each key to the last attached overlay that has
|
|
974
|
+
* subscribers and stops there, without re-dispatching. A tooltip is by construction the last overlay
|
|
975
|
+
* attached, so subscribing would make it swallow `Escape` for the modal, sidepanel, dropdown or inline
|
|
976
|
+
* edit underneath it — including for the imperative tooltips that drop the key instead of acting on it.
|
|
977
|
+
*/
|
|
978
|
+
listenForEscape() {
|
|
979
|
+
if (this.unbindEscapeListener)
|
|
980
|
+
return;
|
|
981
|
+
this.ngZone.runOutsideAngular(() => {
|
|
982
|
+
this.unbindEscapeListener = this.renderer.listen('document', 'keydown', (event) => {
|
|
983
|
+
// An imperatively driven tooltip (`manual`/`none`) is pinned on purpose — the validation hints
|
|
984
|
+
// of datepicker, timepicker and inline-edit must survive an unrelated Escape.
|
|
985
|
+
if (event.keyCode !== ESCAPE || !this.isOpen || !this.hasInteractiveTrigger || this.preventClose) {
|
|
986
|
+
return;
|
|
987
|
+
}
|
|
988
|
+
event.preventDefault();
|
|
989
|
+
this.hideAsInactive();
|
|
990
|
+
}, { capture: true });
|
|
991
|
+
});
|
|
992
|
+
}
|
|
993
|
+
/** Removes the document-level `Escape` listener. */
|
|
994
|
+
stopListeningForEscape() {
|
|
995
|
+
this.unbindEscapeListener?.();
|
|
996
|
+
this.unbindEscapeListener = null;
|
|
997
|
+
}
|
|
998
|
+
/** Panel classes of the tooltip overlay, including the pointer-events opt-out while it is enabled. */
|
|
999
|
+
getPanelClasses() {
|
|
1000
|
+
const configured = this.overlayConfig.panelClass;
|
|
1001
|
+
const classes = (Array.isArray(configured) ? configured : configured ? [configured] : []).filter((name) => name !== IGNORE_POINTER_EVENTS_PANEL_CLASS);
|
|
1002
|
+
// A tooltip without an interactive trigger opts out regardless of the input: hovering its pane
|
|
1003
|
+
// neither keeps it open nor closes it, so the hoverability the default protects does not exist here,
|
|
1004
|
+
// and a pointer-capturing pane only blocks what it floats over. The validation hints of datepicker,
|
|
1005
|
+
// timepicker and inline-edit sit above their own field for `validationTooltipHideDelay` (3s).
|
|
1006
|
+
const ignorePointerEvents = this.ignoreTooltipPointerEvents() || !this.hasInteractiveTrigger;
|
|
1007
|
+
return ignorePointerEvents ? [...classes, IGNORE_POINTER_EVENTS_PANEL_CLASS] : classes;
|
|
1008
|
+
}
|
|
1009
|
+
/**
|
|
1010
|
+
* Points the trigger's `aria-describedby` at the open tooltip, so assistive technology announces the hint
|
|
1011
|
+
* together with the control it explains.
|
|
1012
|
+
*
|
|
1013
|
+
* Written through the renderer rather than a host binding because `showForMouseEvent` re-anchors the
|
|
1014
|
+
* trigger to a foreign element, which a host binding would never reach. Existing ids are preserved.
|
|
1015
|
+
*/
|
|
1016
|
+
describeTrigger() {
|
|
1017
|
+
if (this.describesHostText)
|
|
1018
|
+
return;
|
|
1019
|
+
const nativeElement = this.getNativeElement();
|
|
1020
|
+
const ids = this.getDescribedByIds(nativeElement);
|
|
1021
|
+
// Recorded rather than resolved again on the way out: `showForMouseEvent` re-anchors the trigger to
|
|
1022
|
+
// another element, and un-describing the current one would leave the id dangling on the previous.
|
|
1023
|
+
this.describedElement = nativeElement;
|
|
1024
|
+
if (ids.includes(this.tooltipId))
|
|
1025
|
+
return;
|
|
1026
|
+
this.renderer.setAttribute(nativeElement, 'aria-describedby', [...ids, this.tooltipId].join(' '));
|
|
1027
|
+
}
|
|
1028
|
+
/** Removes this tooltip's id from the described element's `aria-describedby`, keeping any other ids. */
|
|
1029
|
+
undescribeTrigger() {
|
|
1030
|
+
const nativeElement = this.describedElement;
|
|
1031
|
+
if (!nativeElement)
|
|
1032
|
+
return;
|
|
1033
|
+
this.describedElement = null;
|
|
1034
|
+
const ids = this.getDescribedByIds(nativeElement).filter((id) => id !== this.tooltipId);
|
|
1035
|
+
if (ids.length) {
|
|
1036
|
+
this.renderer.setAttribute(nativeElement, 'aria-describedby', ids.join(' '));
|
|
1037
|
+
}
|
|
1038
|
+
else {
|
|
1039
|
+
this.renderer.removeAttribute(nativeElement, 'aria-describedby');
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
/** Ids currently listed in the element's `aria-describedby`. */
|
|
1043
|
+
getDescribedByIds(element) {
|
|
1044
|
+
return (element.getAttribute('aria-describedby') || '').split(/\s+/).filter(Boolean);
|
|
1045
|
+
}
|
|
1046
|
+
/**
|
|
1047
|
+
* Whether the tooltip only repeats the text the host already shows — which is what `kbq-title` does.
|
|
1048
|
+
* Describing those would make assistive technology read the same label twice.
|
|
1049
|
+
*/
|
|
1050
|
+
get describesHostText() {
|
|
1051
|
+
return typeof this.content === 'string' && this.content.trim() === this.getNativeElement().textContent?.trim();
|
|
1052
|
+
}
|
|
1053
|
+
/**
|
|
1054
|
+
* Field whose caret the tooltip is anchored to: the host element when it is editable itself — which is
|
|
1055
|
+
* how the validation hints are written — otherwise the first editable element it wraps.
|
|
1056
|
+
*/
|
|
1057
|
+
getCaretAnchor() {
|
|
1058
|
+
const host = this.getNativeElement();
|
|
1059
|
+
return host.matches(EDITABLE_SELECTOR) ? host : host.querySelector(EDITABLE_SELECTOR);
|
|
1060
|
+
}
|
|
1061
|
+
/**
|
|
1062
|
+
* Anchors the overlay to the caret of the field.
|
|
1063
|
+
*
|
|
1064
|
+
* @docs-private
|
|
1065
|
+
*/
|
|
1066
|
+
applyRelativeToCaret() {
|
|
1067
|
+
this.strategy?.setOrigin(this.caretOrigin);
|
|
1068
|
+
}
|
|
1069
|
+
/** @docs-private */
|
|
1070
|
+
getAnchorSize() {
|
|
1071
|
+
return this.relativeToCaret ? this.caretOrigin : super.getAnchorSize();
|
|
1072
|
+
}
|
|
1073
|
+
/**
|
|
1074
|
+
* Rectangle the tooltip is anchored to: the caret or selection of the field — spanning the whole field
|
|
1075
|
+
* vertically when it anchors to the field — or the host element's box when the caret cannot be located or
|
|
1076
|
+
* `kbqRelativeToCaret` is off.
|
|
1077
|
+
*/
|
|
1078
|
+
measureCaretAnchor() {
|
|
1079
|
+
const anchor = this.relativeToCaret ? this.getCaretAnchor() : null;
|
|
1080
|
+
const rect = anchor && kbqGetSelectionRect(anchor);
|
|
1081
|
+
if (!anchor || !rect) {
|
|
1082
|
+
const { left, top, width, height } = this.getNativeElement().getBoundingClientRect();
|
|
1083
|
+
return { x: left, y: top, width, height };
|
|
1084
|
+
}
|
|
1085
|
+
if (!this.anchorsToField(anchor))
|
|
1086
|
+
return rect;
|
|
1087
|
+
const { top, height } = anchor.getBoundingClientRect();
|
|
1088
|
+
return { x: rect.x, width: rect.width, y: top, height };
|
|
1089
|
+
}
|
|
1090
|
+
/** Whether the tooltip takes its vertical position from the whole field rather than the caret's line. */
|
|
1091
|
+
anchorsToField(anchor) {
|
|
1092
|
+
const vertical = this.relativeToCaretVertical;
|
|
1093
|
+
return vertical === 'field' || (vertical !== 'line' && anchor.tagName === 'INPUT');
|
|
1094
|
+
}
|
|
1095
|
+
/** Follows the caret for as long as the overlay is attached, outside the zone and at most once per attach. */
|
|
1096
|
+
startTrackingCaret() {
|
|
1097
|
+
if (this.stopCaretListeners || !this.relativeToCaret)
|
|
1098
|
+
return;
|
|
1099
|
+
const anchor = this.getCaretAnchor();
|
|
1100
|
+
if (!anchor)
|
|
1101
|
+
return;
|
|
1102
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1103
|
+
this.stopCaretListeners = kbqListenForCaretMoves(this.renderer, anchor, () => this.repositionAtCaret());
|
|
1104
|
+
});
|
|
1105
|
+
}
|
|
1106
|
+
stopTrackingCaret() {
|
|
1107
|
+
this.stopCaretListeners?.();
|
|
1108
|
+
this.stopCaretListeners = null;
|
|
1109
|
+
}
|
|
1110
|
+
/**
|
|
1111
|
+
* Picks the placement again for where the caret is now. The position strategy is locked so that an element-anchored
|
|
1112
|
+
* pop-up does not jump when its content changes, and a locked strategy only re-applies the placement chosen on
|
|
1113
|
+
* opening; a caret walking to the edge of the screen has to be free to flip the tooltip, so the lock is lifted for
|
|
1114
|
+
* this pass.
|
|
1115
|
+
*/
|
|
1116
|
+
repositionAtCaret() {
|
|
1117
|
+
if (!this.overlayRef)
|
|
1118
|
+
return;
|
|
1119
|
+
this.strategy.withLockedPosition(false);
|
|
1120
|
+
this.overlayRef.updatePosition();
|
|
1121
|
+
this.strategy.withLockedPosition(true);
|
|
620
1122
|
}
|
|
621
1123
|
/** @docs-private */
|
|
622
1124
|
applyRelativeToPointer() {
|
|
@@ -628,7 +1130,6 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
628
1130
|
}
|
|
629
1131
|
const triggerRects = this.getNativeElement().getBoundingClientRect();
|
|
630
1132
|
const point = { x: 0, y: 0 };
|
|
631
|
-
this.placementPriority = null;
|
|
632
1133
|
if (this.placement === PopUpPlacements.Top) {
|
|
633
1134
|
point.x = this.mouseEvent.x;
|
|
634
1135
|
point.y = triggerRects.y;
|
|
@@ -639,10 +1140,10 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
639
1140
|
}
|
|
640
1141
|
this.strategy.setOrigin(point);
|
|
641
1142
|
}
|
|
642
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
643
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
1143
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1144
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqTooltipTrigger, isStandalone: true, selector: "[kbqTooltip]", inputs: { scrollStrategyOverride: { classPropertyName: "scrollStrategyOverride", publicName: "kbqTooltipScrollStrategy", isSignal: true, isRequired: false, transformFunction: null }, forDisabledComponent: { classPropertyName: "forDisabledComponent", publicName: "forDisabledComponent", isSignal: true, isRequired: false, transformFunction: null }, ignoreTooltipPointerEvents: { classPropertyName: "ignoreTooltipPointerEvents", publicName: "ignoreTooltipPointerEvents", isSignal: true, isRequired: false, transformFunction: null }, singleInstance: { classPropertyName: "singleInstance", publicName: "kbqTooltipSingleInstance", isSignal: true, isRequired: false, transformFunction: null }, triggerInput: { classPropertyName: "triggerInput", publicName: "kbqTrigger", isSignal: true, isRequired: false, transformFunction: null }, hideWithTimeoutInput: { classPropertyName: "hideWithTimeoutInput", publicName: "hideWithTimeout", isSignal: true, isRequired: false, transformFunction: null }, enterDelayInput: { classPropertyName: "enterDelayInput", publicName: "kbqEnterDelay", isSignal: true, isRequired: false, transformFunction: null }, leaveDelayInput: { classPropertyName: "leaveDelayInput", publicName: "kbqLeaveDelay", isSignal: true, isRequired: false, transformFunction: null }, relativeToPointerInput: { classPropertyName: "relativeToPointerInput", publicName: "kbqRelativeToPointer", isSignal: true, isRequired: false, transformFunction: null }, relativeToCaretInput: { classPropertyName: "relativeToCaretInput", publicName: "kbqRelativeToCaret", isSignal: true, isRequired: false, transformFunction: null }, relativeToCaretVerticalInput: { classPropertyName: "relativeToCaretVerticalInput", publicName: "kbqRelativeToCaretVertical", isSignal: true, isRequired: false, transformFunction: null }, contentInput: { classPropertyName: "contentInput", publicName: "kbqTooltip", isSignal: true, isRequired: false, transformFunction: null }, headerInput: { classPropertyName: "headerInput", publicName: "kbqTooltipHeader", isSignal: true, isRequired: false, transformFunction: null }, modifierInput: { classPropertyName: "modifierInput", publicName: "kbqTooltipModifier", isSignal: true, isRequired: false, transformFunction: null }, contextInput: { classPropertyName: "contextInput", publicName: "kbqTooltipContext", isSignal: true, isRequired: false, transformFunction: null }, customClassInput: { classPropertyName: "customClassInput", publicName: "kbqTooltipClass", isSignal: true, isRequired: false, transformFunction: null }, colorInput: { classPropertyName: "colorInput", publicName: "kbqTooltipColor", isSignal: true, isRequired: false, transformFunction: null }, arrowInput: { classPropertyName: "arrowInput", publicName: "kbqTooltipArrow", isSignal: true, isRequired: false, transformFunction: null }, offsetInput: { classPropertyName: "offsetInput", publicName: "kbqTooltipOffset", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "kbqTooltipDisabled", isSignal: true, isRequired: false, transformFunction: null }, tooltipPlacementPriorityInput: { classPropertyName: "tooltipPlacementPriorityInput", publicName: "kbqPlacementPriority", isSignal: true, isRequired: false, transformFunction: null }, tooltipPlacementInput: { classPropertyName: "tooltipPlacementInput", publicName: "kbqPlacement", isSignal: true, isRequired: false, transformFunction: null }, tooltipVisibleInput: { classPropertyName: "tooltipVisibleInput", publicName: "kbqVisible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placementChangeOutput: "kbqPlacementChange", visibleChangeOutput: "kbqVisibleChange" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()", "mouseleave": "trackPointerLeave($event)" }, properties: { "class.kbq-tooltip_open": "isOpen" } }, exportAs: ["kbqTooltip"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
644
1145
|
}
|
|
645
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTooltipTrigger, decorators: [{
|
|
646
1147
|
type: Directive,
|
|
647
1148
|
args: [{
|
|
648
1149
|
selector: '[kbqTooltip]',
|
|
@@ -654,81 +1155,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
654
1155
|
},
|
|
655
1156
|
exportAs: 'kbqTooltip'
|
|
656
1157
|
}]
|
|
657
|
-
}], ctorParameters: () => [], propDecorators: { scrollStrategyOverride: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipScrollStrategy", required: false }] }], forDisabledComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "forDisabledComponent", required: false }] }], ignoreTooltipPointerEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "ignoreTooltipPointerEvents", required: false }] }], singleInstance: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipSingleInstance", required: false }] }], hideWithTimeout: [{
|
|
658
|
-
type: Input,
|
|
659
|
-
args: [{ transform: booleanAttribute }]
|
|
660
|
-
}], tooltipVisible: [{
|
|
661
|
-
type: Input,
|
|
662
|
-
args: ['kbqVisible']
|
|
663
|
-
}], tooltipPlacement: [{
|
|
664
|
-
type: Input,
|
|
665
|
-
args: ['kbqPlacement']
|
|
666
|
-
}], relativeToPointer: [{
|
|
667
|
-
type: Input,
|
|
668
|
-
args: [{ alias: 'kbqRelativeToPointer', transform: booleanAttribute }]
|
|
669
|
-
}], tooltipPlacementPriority: [{
|
|
670
|
-
type: Input,
|
|
671
|
-
args: ['kbqPlacementPriority']
|
|
672
|
-
}], content: [{
|
|
673
|
-
type: Input,
|
|
674
|
-
args: ['kbqTooltip']
|
|
675
|
-
}], disabled: [{
|
|
676
|
-
type: Input,
|
|
677
|
-
args: ['kbqTooltipDisabled']
|
|
678
|
-
}], enterDelay: [{
|
|
679
|
-
type: Input,
|
|
680
|
-
args: ['kbqEnterDelay']
|
|
681
|
-
}], leaveDelay: [{
|
|
682
|
-
type: Input,
|
|
683
|
-
args: ['kbqLeaveDelay']
|
|
684
|
-
}], trigger: [{
|
|
685
|
-
type: Input,
|
|
686
|
-
args: ['kbqTrigger']
|
|
687
|
-
}], customClass: [{
|
|
688
|
-
type: Input,
|
|
689
|
-
args: ['kbqTooltipClass']
|
|
690
|
-
}], context: [{
|
|
691
|
-
type: Input,
|
|
692
|
-
args: ['kbqTooltipContext']
|
|
693
|
-
}], color: [{
|
|
694
|
-
type: Input,
|
|
695
|
-
args: ['kbqTooltipColor']
|
|
696
|
-
}], arrow: [{
|
|
697
|
-
type: Input,
|
|
698
|
-
args: [{ alias: 'kbqTooltipArrow', transform: booleanAttribute }]
|
|
699
|
-
}], offset: [{
|
|
700
|
-
type: Input,
|
|
701
|
-
args: [{ alias: 'kbqTooltipOffset', transform: numberAttribute }]
|
|
702
|
-
}], placementChange: [{
|
|
703
|
-
type: Output,
|
|
704
|
-
args: ['kbqPlacementChange']
|
|
705
|
-
}], visibleChange: [{
|
|
706
|
-
type: Output,
|
|
707
|
-
args: ['kbqVisibleChange']
|
|
708
|
-
}], modifier: [{
|
|
709
|
-
type: Input,
|
|
710
|
-
args: ['kbqTooltipModifier']
|
|
711
|
-
}], header: [{
|
|
712
|
-
type: Input,
|
|
713
|
-
args: ['kbqTooltipHeader']
|
|
714
|
-
}] } });
|
|
1158
|
+
}], ctorParameters: () => [], propDecorators: { scrollStrategyOverride: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipScrollStrategy", required: false }] }], forDisabledComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "forDisabledComponent", required: false }] }], ignoreTooltipPointerEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "ignoreTooltipPointerEvents", required: false }] }], singleInstance: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipSingleInstance", required: false }] }], placementChangeOutput: [{ type: i0.Output, args: ["kbqPlacementChange"] }], visibleChangeOutput: [{ type: i0.Output, args: ["kbqVisibleChange"] }], triggerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTrigger", required: false }] }], hideWithTimeoutInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideWithTimeout", required: false }] }], enterDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqEnterDelay", required: false }] }], leaveDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqLeaveDelay", required: false }] }], relativeToPointerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqRelativeToPointer", required: false }] }], relativeToCaretInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqRelativeToCaret", required: false }] }], relativeToCaretVerticalInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqRelativeToCaretVertical", required: false }] }], contentInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltip", required: false }] }], headerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipHeader", required: false }] }], modifierInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipModifier", required: false }] }], contextInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipContext", required: false }] }], customClassInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipClass", required: false }] }], colorInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipColor", required: false }] }], arrowInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipArrow", required: false }] }], offsetInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipOffset", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipDisabled", required: false }] }], tooltipPlacementPriorityInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPlacementPriority", required: false }] }], tooltipPlacementInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPlacement", required: false }] }], tooltipVisibleInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqVisible", required: false }] }] } });
|
|
715
1159
|
|
|
716
1160
|
const COMPONENTS = [
|
|
717
1161
|
KbqTooltipComponent,
|
|
718
1162
|
KbqTooltipTrigger
|
|
719
1163
|
];
|
|
720
1164
|
class KbqToolTipModule {
|
|
721
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
722
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1165
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqToolTipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1166
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqToolTipModule, imports: [KbqTooltipComponent,
|
|
723
1167
|
KbqTooltipTrigger], exports: [KbqTooltipComponent,
|
|
724
1168
|
KbqTooltipTrigger] }); }
|
|
725
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1169
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqToolTipModule }); }
|
|
726
1170
|
}
|
|
727
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqToolTipModule, decorators: [{
|
|
728
1172
|
type: NgModule,
|
|
729
1173
|
args: [{
|
|
730
1174
|
imports: COMPONENTS,
|
|
731
|
-
providers: [KBQ_TOOLTIP_OPEN_TIME_PROVIDER],
|
|
732
1175
|
exports: COMPONENTS
|
|
733
1176
|
}]
|
|
734
1177
|
}] });
|
|
@@ -737,5 +1180,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
737
1180
|
* Generated bundle index. Do not edit.
|
|
738
1181
|
*/
|
|
739
1182
|
|
|
740
|
-
export { KBQ_TOOLTIP_OPEN_TIME, KBQ_TOOLTIP_OPEN_TIME_PROVIDER, KBQ_TOOLTIP_SCROLL_STRATEGY, KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT, KbqToolTipModule, KbqTooltipComponent, KbqTooltipRegistry, KbqTooltipTrigger, MIN_TIME_FOR_DELAY, TooltipModifier, kbqTooltipScrollStrategyFactory };
|
|
1183
|
+
export { KBQ_TOOLTIP_INSTANT_SHOW_WINDOW, KBQ_TOOLTIP_OPEN_TIME, KBQ_TOOLTIP_OPEN_TIME_PROVIDER, KBQ_TOOLTIP_SCROLL_STRATEGY, KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT, KbqToolTipModule, KbqTooltipComponent, KbqTooltipDelayTracker, KbqTooltipRegistry, KbqTooltipTrigger, MIN_TIME_FOR_DELAY, TooltipModifier, kbqTooltipScrollStrategyFactory };
|
|
741
1184
|
//# sourceMappingURL=koobiq-components-tooltip.mjs.map
|