@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-modal.mjs","sources":["../../../packages/components/modal/modal-ref.class.ts","../../../packages/components/modal/css-unit.pipe.ts","../../../packages/components/modal/modal.type.ts","../../../packages/components/modal/modal-control.service.ts","../../../packages/components/modal/modal-util.ts","../../../packages/components/modal/modal.component.ts","../../../packages/components/modal/modal.component.html","../../../packages/components/modal/modal.directive.ts","../../../packages/components/modal/modal.service.ts","../../../packages/components/modal/modal.module.ts","../../../packages/components/modal/koobiq-components-modal.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { KbqModalComponent } from './modal.component';\n\n/**\n * API class that public to users to handle the modal instance.\n * KbqModalRef is aim to avoid accessing to the modal instance directly by users.\n */\nexport abstract class KbqModalRef<C = any, R = unknown> {\n abstract afterOpen: Observable<void>;\n abstract beforeClose: Observable<R | undefined>;\n abstract afterClose: Observable<R | undefined>;\n\n abstract open(): void;\n\n abstract close(result?: R): void;\n\n abstract destroy(result?: R): void;\n\n /**\n * Trigger the kbqOnOk/kbqOnCancel by manual\n */\n abstract triggerOk(): void;\n\n abstract triggerCancel(): void;\n\n // /**\n // * Return the ComponentRef of kbqContent when specify kbqContent as a Component\n // * Note: this method may return undefined if the Component has not ready yet.\n // (it only available after Modal's ngOnInit)\n // */\n // abstract getContentComponentRef(): ComponentRef<{}>;\n\n /**\n * Return the component instance of kbqContent when specify kbqContent as a Component\n * Note: this method may return undefined if the Component has not ready yet.\n * (it only available after Modal's ngOnInit)\n */\n abstract getContentComponent(): C;\n\n /**\n * Get the dom element of this Modal\n */\n abstract getElement(): HTMLElement;\n\n /**\n * Get the instance of the Modal itself\n */\n abstract getInstance(): KbqModalComponent;\n\n /**\n * Call markForCheck for change detector\n */\n abstract markForCheck();\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'toCssUnit'\n})\nexport class CssUnitPipe implements PipeTransform {\n transform(value: number | string, defaultUnit: string = 'px'): string {\n const formatted = +value;\n\n return isNaN(formatted) ? `${value}` : `${formatted}${defaultUnit}`;\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { EventEmitter, Injector, TemplateRef, Type } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type OnClickCallback<T> = (instance: T) => (false | void | {}) | Promise<false | void | {}>;\n\n// Different modal styles we have supported\nexport type ModalType = 'default' | 'confirm' | 'custom';\n\n// Subtypes of Confirm Modal\nexport type ConfirmType = 'confirm' | 'success' | 'warn';\n\nexport enum ModalSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\n/**\n * Duration when perform animations (ms)\n * @docs-private\n */\nexport const MODAL_ANIMATE_DURATION = 300;\n\n// Public options for using by service\nexport interface ModalOptions<C = any, R = any> {\n kbqModalType?: ModalType;\n kbqVisible?: boolean;\n kbqWidth?: number | string;\n kbqSize?: ModalSize;\n kbqWrapClassName?: string;\n kbqClassName?: string;\n kbqStyle?: object;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n kbqTitle?: string | TemplateRef<{}>;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n kbqCaption?: string | TemplateRef<{}>;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n kbqContent?: string | TemplateRef<{}> | Type<C>;\n kbqComponent?: Type<C>; // The instance of component opened into the dialog.\n kbqClosable?: boolean;\n kbqMask?: boolean;\n kbqMaskClosable?: boolean;\n kbqMaskStyle?: object;\n kbqBodyStyle?: object;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n kbqFooter?: string | TemplateRef<{}> | IModalButtonOptions<C>[]; // Default Modal ONLY\n kbqGetContainer?: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) | null; // STATIC\n kbqAfterOpen?: EventEmitter<void>;\n kbqAfterClose?: EventEmitter<R>;\n kbqCloseByESC?: boolean;\n kbqRestoreFocus?: boolean;\n\n // --- Predefined OK & Cancel buttons\n kbqOkText?: string;\n kbqOkType?: string;\n kbqOkLoading?: boolean;\n kbqOnOk?: EventEmitter<C> | OnClickCallback<C>;\n kbqCancelText?: string;\n kbqCancelLoading?: boolean;\n kbqOnCancel?: EventEmitter<C> | OnClickCallback<C>;\n\n /** Data being injected into the child component. */\n data?;\n}\n\nexport interface IModalOptionsForService<T = any> extends ModalOptions<T> {\n kbqOnOk?: OnClickCallback<T>;\n kbqOnCancel?: OnClickCallback<T>;\n /**\n * The injector used to create the component that will be attached.\n * If specified, it overrides the injector provided by `KbqModalService`.\n */\n injector?: Injector;\n}\n\nexport interface IModalButtonOptions<T = any> {\n label: string;\n type?: string;\n shape?: string;\n ghost?: boolean;\n size?: string;\n // Default: true, indicate whether show loading automatically while onClick returned a Promise\n autoLoading?: boolean;\n\n // [NOTE] \"componentInstance\" will refer to the component's instance when using Component\n show?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n loading?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n disabled?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n\n autoFocus?: boolean;\n kbqModalMainAction?: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n onClick?(this: IModalButtonOptions<T>, contentComponentInstance?: T): (void | {}) | Promise<void | {}>;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { MODAL_ANIMATE_DURATION } from './modal.type';\n\ninterface IRegisteredMeta {\n modalRef: KbqModalRef;\n afterOpenSubscription: Subscription;\n afterCloseSubscription: Subscription;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqModalControlService {\n private parentService = inject(KbqModalControlService, { optional: true, skipSelf: true });\n // Track singleton afterAllClose through over the injection tree\n get afterAllClose(): Subject<void> {\n return this.parentService ? this.parentService.afterAllClose : this.rootAfterAllClose;\n }\n\n // Track singleton openModals array through over the injection tree\n get openModals(): KbqModalRef[] {\n return this.parentService ? this.parentService.openModals : this.rootOpenModals;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootOpenModals: KbqModalRef[] = this.parentService ? null : [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootAfterAllClose: Subject<void> = this.parentService ? null : new Subject<void>();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootRegisteredMetaMap: Map<KbqModalRef, IRegisteredMeta> = this.parentService ? null : new Map();\n\n // Registered modal for later usage\n private get registeredMetaMap(): Map<KbqModalRef, IRegisteredMeta> {\n return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap;\n }\n\n // Register a modal to listen its open/close\n registerModal(modalRef: KbqModalRef): void {\n if (!this.hasRegistered(modalRef)) {\n const afterOpenSubscription = modalRef.afterOpen.subscribe(() => this.openModals.push(modalRef));\n const afterCloseSubscription = modalRef.afterClose.subscribe(() => this.removeOpenModal(modalRef));\n\n this.registeredMetaMap.set(modalRef, { modalRef, afterOpenSubscription, afterCloseSubscription });\n\n this.handleMultipleMasks(modalRef);\n }\n }\n\n hasRegistered(modalRef: KbqModalRef): boolean {\n return this.registeredMetaMap.has(modalRef);\n }\n\n // Close all registered opened modals\n closeAll(): void {\n let i = this.openModals.length;\n\n while (i--) {\n this.openModals[i].close();\n }\n }\n\n private removeOpenModal(modalRef: KbqModalRef): void {\n const index = this.openModals.indexOf(modalRef);\n\n if (index > -1) {\n this.openModals.splice(index, 1);\n\n if (this.hasRegistered(modalRef)) {\n const { afterOpenSubscription, afterCloseSubscription } = this.registeredMetaMap.get(modalRef)!;\n\n afterOpenSubscription.unsubscribe();\n afterCloseSubscription.unsubscribe();\n\n this.registeredMetaMap.delete(modalRef);\n }\n\n if (!this.openModals.length) {\n this.afterAllClose.next();\n }\n }\n }\n\n private handleMultipleMasks(modalRef: KbqModalRef) {\n const modals = Array.from(this.registeredMetaMap.values()).map((v) => v.modalRef) as KbqModalComponent[];\n\n if (modals.filter((modal) => modal.kbqVisible).length > 1) {\n const visibleModalsWithMask = modals\n .splice(0, modals.length - 1)\n .filter((modal) => modal.kbqVisible && modal.kbqMask);\n\n // Trigger leave animation on other masks, then disable them after animation completes\n visibleModalsWithMask.forEach((modal) => {\n setTimeout(() => {\n modal.getInstance().animateMaskTo(null);\n modal.getInstance().kbqMask = false;\n modal.markForCheck();\n }, MODAL_ANIMATE_DURATION);\n\n modal.getInstance().animateMaskTo('leave');\n modal.markForCheck();\n });\n\n // On close, restore other masks with enter animation, then reset animation state after it completes\n modalRef.beforeClose.subscribe(() => {\n visibleModalsWithMask.forEach((modal) => {\n setTimeout(() => {\n modalRef.getInstance().animateMaskTo(null);\n modalRef.getInstance().kbqMask = false;\n modal.getInstance().animateMaskTo(null);\n modal.markForCheck();\n }, MODAL_ANIMATE_DURATION);\n\n modalRef.getInstance().animateMaskTo('leave');\n modal.getInstance().kbqMask = true;\n modal.getInstance().animateMaskTo('enter');\n\n modal.markForCheck();\n });\n });\n }\n }\n}\n","/** @docs-private */\nexport interface IClickPosition {\n x: number;\n y: number;\n}\n\n/** @docs-private */\nexport class ModalUtil {\n private lastPosition: IClickPosition;\n\n constructor(private document?: Document) {\n this.lastPosition = { x: -1, y: -1 };\n this.listenDocumentClick();\n }\n\n getLastClickPosition(): IClickPosition {\n return this.lastPosition;\n }\n\n listenDocumentClick(): void {\n this.document?.addEventListener('click', (event: MouseEvent) => {\n this.lastPosition = { x: event.clientX, y: event.clientY };\n });\n }\n}\n\n/** @docs-private */\nexport const modalUtilObject = new ModalUtil(\n // For SSR compatibility\n // eslint-disable-next-line no-restricted-globals\n typeof document === 'undefined' ? undefined : document\n);\n","import { CdkTrapFocus, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n createComponent,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n inject,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n output,\n Renderer2,\n signal,\n SimpleChanges,\n TemplateRef,\n Type,\n viewChild,\n viewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n ENTER,\n ESCAPE,\n KbqComponentColors,\n KbqOverflowShadowBottom,\n KbqOverflowShadowContainer,\n KbqOverflowShadowState,\n KbqOverflowShadowTop\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { modalUtilObject as ModalUtil } from './modal-util';\nimport {\n IModalButtonOptions,\n MODAL_ANIMATE_DURATION,\n ModalOptions,\n ModalSize,\n ModalType,\n OnClickCallback\n} from './modal.type';\n\ntype AnimationState = 'enter' | 'leave' | null;\n\n@Component({\n selector: 'kbq-modal',\n imports: [\n CdkTrapFocus,\n KbqButtonModule,\n KbqIconModule,\n CssUnitPipe,\n NgTemplateOutlet,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqOverflowShadowBottom,\n KbqTitleModule\n ],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.scss', 'modal-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-modal',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class KbqModalComponent<T = any, R = any>\n extends KbqModalRef<T, R>\n implements OnInit, OnChanges, AfterViewInit, OnDestroy, ModalOptions\n{\n private overlay = inject(Overlay);\n private renderer = inject(Renderer2);\n private environmentInjector = inject(EnvironmentInjector);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private viewContainer = inject(ViewContainerRef);\n private modalControl = inject(KbqModalControlService);\n private changeDetector = inject(ChangeDetectorRef);\n private focusMonitor = inject(FocusMonitor);\n\n protected readonly document = inject<Document>(DOCUMENT);\n\n componentColors = KbqComponentColors;\n\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqModalType: ModalType = 'default';\n\n // The instance of component opened into the dialog.\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqComponent: Type<T>;\n // If not specified, will use <ng-content>\n\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n @Input() kbqContent: string | TemplateRef<{}> | Type<T>;\n // Default Modal ONLY\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n @Input() kbqFooter: string | TemplateRef<{}> | IModalButtonOptions<T>[];\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get kbqVisible() {\n return this._kbqVisible;\n }\n set kbqVisible(value) {\n this._kbqVisible = value;\n }\n\n private _kbqVisible = false;\n\n readonly kbqVisibleChange = output<boolean>();\n\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqWidth: number | string;\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqSize: ModalSize = ModalSize.Medium;\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqWrapClassName: string;\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqClassName: string;\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqStyle: object;\n\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n @Input() kbqTitle: string | TemplateRef<{}>;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n @Input() kbqCaption: string | TemplateRef<{}>;\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqCloseByESC: boolean = true;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get kbqClosable() {\n return this._kbqClosable;\n }\n set kbqClosable(value) {\n this._kbqClosable = value;\n }\n private _kbqClosable = true;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get kbqMask() {\n return this._kbqMask;\n }\n set kbqMask(value) {\n this._kbqMask = value;\n }\n private _kbqMask = true;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get kbqMaskClosable() {\n return this._kbqMaskClosable;\n }\n set kbqMaskClosable(value) {\n this._kbqMaskClosable = value;\n }\n private _kbqMaskClosable = false;\n\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqMaskStyle: object;\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqBodyStyle: object;\n\n // Trigger when modal open(visible) after animations\n @Output() readonly kbqAfterOpen = new EventEmitter<void>();\n // Trigger when modal leave-animation over\n @Output() readonly kbqAfterClose = new EventEmitter<R | undefined>();\n /** Emitted before the modal begins its closing animation. */\n @Output() readonly kbqBeforeClose = new EventEmitter<R | undefined>();\n\n // --- Predefined OK & Cancel buttons\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input() kbqOkText: string;\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqOkType = KbqComponentColors.Contrast;\n\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqRestoreFocus = true;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get kbqOkLoading() {\n return this._kbqOkLoading;\n }\n set kbqOkLoading(value) {\n this._kbqOkLoading = value;\n }\n private _kbqOkLoading = false;\n\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() @Output() readonly kbqOnOk: EventEmitter<T> | OnClickCallback<T> = new EventEmitter<T>();\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input() kbqCancelText: string;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get kbqCancelLoading() {\n return this._kbqCancelLoading;\n }\n set kbqCancelLoading(value) {\n this._kbqCancelLoading = value;\n }\n private _kbqCancelLoading = false;\n\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() @Output() readonly kbqOnCancel: EventEmitter<T> | OnClickCallback<T> = new EventEmitter<T>();\n\n readonly modalContainer = viewChild.required<ElementRef>('modalContainer');\n readonly bodyContainer = viewChild.required('bodyContainer', { read: ViewContainerRef });\n // Only aim to focus the ok button that needs to be auto focused\n readonly autoFocusedButtons = viewChildren('autoFocusedButton', { read: ElementRef });\n\n maskAnimationClassMap: object | null;\n modalAnimationClassMap: object | null;\n // The origin point that animation based on\n transformOrigin = '0px 0px 0px';\n\n /**\n * Scroll-shadow state published by `KbqModalBody` when the modal content is composed\n * manually (`kbq-modal-title`/`kbq-modal-body`/`kbq-modal-footer`), so the header/footer\n * can render matching shadows without a direct template reference between them.\n * @docs-private\n */\n readonly bodyOverflow = signal<KbqOverflowShadowState>({ top: false, bottom: false });\n\n // Observable alias for kbqAfterOpen\n get afterOpen(): Observable<void> {\n return this.kbqAfterOpen.asObservable();\n }\n\n /** Observable alias for `kbqBeforeClose` */\n get beforeClose(): Observable<R | undefined> {\n return this.kbqBeforeClose.asObservable();\n }\n\n // Observable alias for kbqAfterClose\n get afterClose(): Observable<R | undefined> {\n return this.kbqAfterClose.asObservable();\n }\n\n get okText(): string {\n return this.kbqOkText;\n }\n\n get cancelText(): string {\n return this.kbqCancelText;\n }\n\n // Indicate whether this dialog should hidden\n get hidden(): boolean {\n return !this.kbqVisible && !this.animationState;\n }\n\n private focusedElementBeforeOpen: HTMLElement | null;\n\n private previouslyFocusedElementOrigin: FocusOrigin;\n\n // Handle the reference when using kbqContent as Component\n private contentComponentRef: ComponentRef<T>;\n // Current animation state\n private animationState: AnimationState;\n private container: HTMLElement | OverlayRef;\n\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() kbqGetContainer: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) = () => this.overlay.create();\n\n // [NOTE] NOT available when using by service!\n // Because ngOnChanges never be called when using by service,\n // here we can't support \"kbqContent\"(Component) etc. as inputs that initialized dynamically.\n // BUT: User also can change \"kbqContent\" dynamically to trigger UI changes\n // (provided you don't use \bComponent that needs initializations)\n ngOnChanges(changes: SimpleChanges) {\n if (changes.kbqVisible) {\n // Do not trigger animation while initializing\n this.handleVisibleStateChange(this.kbqVisible, !changes.kbqVisible.firstChange);\n }\n }\n\n ngOnInit() {\n // Create component along without View\n if (this.isComponent(this.kbqContent)) {\n this.createDynamicComponent(this.kbqContent as Type<T>);\n }\n\n // Setup default button options\n if (this.isModalButtons(this.kbqFooter)) {\n this.kbqFooter = this.formatModalButtons(this.kbqFooter as IModalButtonOptions<T>[]);\n }\n\n if (this.isComponent(this.kbqComponent)) {\n this.createDynamicComponent(this.kbqComponent);\n }\n\n // Place the modal dom to elsewhere\n this.container = typeof this.kbqGetContainer === 'function' ? this.kbqGetContainer() : this.kbqGetContainer;\n\n if (this.container instanceof HTMLElement) {\n this.container.appendChild(this.elementRef.nativeElement);\n } else if (this.container instanceof OverlayRef) {\n // NOTE: only attach the dom to overlay, the view container is not changed actually\n this.container.overlayElement.appendChild(this.elementRef.nativeElement);\n }\n\n // Register modal when afterOpen/afterClose is stable\n this.modalControl.registerModal(this);\n }\n\n ngAfterViewInit() {\n // If using Component, it is the time to attach View while bodyContainer is ready\n if (this.contentComponentRef) {\n this.bodyContainer().insert(this.contentComponentRef.hostView);\n }\n\n this.getElement().getElementsByTagName('button')[0]?.focus();\n\n (this.getElement().querySelector('button[autofocus]') as HTMLButtonElement)?.focus();\n }\n\n ngOnDestroy() {\n // Created in `ngOnInit` but owned by `bodyContainer` only from `ngAfterViewInit`, so a modal\n // closed in between would leak it. Destroying an already-destroyed view is a no-op.\n this.contentComponentRef?.destroy();\n\n if (this.container instanceof OverlayRef) {\n this.container.dispose();\n }\n }\n\n open() {\n this.focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n this.previouslyFocusedElementOrigin = this.focusMonitor['_lastFocusOrigin'];\n\n this.focusMonitor\n .monitor(this.modalContainer(), true)\n .pipe(take(1))\n .subscribe(() => this.focusMonitor.stopMonitoring(this.modalContainer()));\n\n this.changeVisibleFromInside(true);\n }\n\n close(result?: R) {\n this.changeVisibleFromInside(false, result).then(() => {\n if (this.kbqRestoreFocus && this.focusedElementBeforeOpen) {\n this.focusMonitor.focusVia(\n this.focusedElementBeforeOpen as HTMLElement,\n this.previouslyFocusedElementOrigin\n );\n\n this.focusedElementBeforeOpen = null;\n }\n });\n }\n\n // Destroy equals Close\n destroy(result?: R) {\n this.close(result);\n }\n\n markForCheck() {\n this.changeDetector.markForCheck();\n }\n\n triggerOk() {\n this.onClickOkCancel('ok');\n }\n\n triggerCancel() {\n this.onClickOkCancel('cancel');\n }\n\n getInstance(): KbqModalComponent {\n return this;\n }\n\n getContentComponentRef(): ComponentRef<T> {\n return this.contentComponentRef;\n }\n\n getContentComponent(): T {\n return this.contentComponentRef && this.contentComponentRef.instance;\n }\n\n getElement(): HTMLElement {\n return this.elementRef && this.elementRef.nativeElement;\n }\n\n getKbqFooter(): HTMLElement {\n return this.getElement().getElementsByClassName('kbq-modal-footer').item(0) as HTMLElement;\n }\n\n onClickMask($event: MouseEvent) {\n // Only the primary button closes the modal: the sidepanel's backdrop is driven by `click`, which\n // never fires for the right or middle button, and `mousedown` here would otherwise diverge from it.\n if ($event.button !== 0) return;\n\n if (\n this.kbqMask &&\n this.kbqMaskClosable &&\n ($event.target as HTMLElement).classList.contains('kbq-modal-wrap') &&\n this.kbqVisible\n ) {\n this.onClickOkCancel('cancel');\n }\n }\n\n isModalType(type: ModalType): boolean {\n return this.kbqModalType === type;\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE && this.container && this.container instanceof OverlayRef) {\n this.close();\n event.preventDefault();\n }\n\n if (event.ctrlKey && event.keyCode === ENTER) {\n if (this.kbqModalType === 'confirm') {\n this.triggerOk();\n }\n\n (this.getElement().querySelector('[kbq-modal-main-action]') as HTMLElement)?.click();\n\n event.preventDefault();\n }\n }\n\n // AoT\n onClickCloseBtn() {\n if (this.kbqVisible) {\n this.onClickOkCancel('cancel');\n }\n }\n\n // AoT\n onClickOkCancel(type: 'ok' | 'cancel') {\n this.handleCloseResult(type, (doClose) => doClose !== false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n handleCloseResult(triggerType: 'ok' | 'cancel', canClose: (doClose: boolean | void | {}) => boolean) {\n const trigger = { ok: this.kbqOnOk, cancel: this.kbqOnCancel }[triggerType];\n const loadingKey = { ok: 'kbqOkLoading', cancel: 'kbqCancelLoading' }[triggerType];\n\n if (trigger instanceof EventEmitter) {\n trigger.emit(this.getContentComponent());\n } else if (typeof trigger === 'function') {\n const result = trigger(this.getContentComponent());\n // Users can return \"false\" to prevent closing by default\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n const caseClose = (doClose: boolean | void | {}) => canClose(doClose) && this.close(doClose as R);\n\n if (isPromise(result)) {\n this[loadingKey] = true;\n\n const handleThen = (doClose) => {\n this[loadingKey] = false;\n caseClose(doClose);\n };\n\n (result as Promise<void>).then(handleThen).catch(handleThen);\n } else {\n caseClose(result);\n }\n }\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n isNonEmptyString(value: {}): boolean {\n return typeof value === 'string' && value !== '';\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n isTemplateRef(value: {}): boolean {\n return value instanceof TemplateRef;\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n isComponent(value: {}): boolean {\n return value instanceof Type;\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n isModalButtons(value: {}): boolean {\n return Array.isArray(value) && value.length > 0;\n }\n\n // Lookup a button's property, if the prop is a function, call & then return the result, otherwise, return itself.\n // AoT\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n getButtonCallableProp(options: IModalButtonOptions<T>, prop: string): {} {\n const value = options[prop];\n const args: any[] = [];\n\n if (this.contentComponentRef) {\n args.push(this.contentComponentRef.instance);\n }\n\n return typeof value === 'function' ? value.apply(options, args) : value;\n }\n\n /** Returns the full set of classes for the modal container: base, custom class name, size and animation classes. */\n protected getContainerClasses(): string {\n const classes = ['kbq-modal-container', this.kbqClassName, `kbq-modal_${this.kbqSize}`];\n\n if (this.modalAnimationClassMap) {\n const animationClasses = this.modalAnimationClassMap as { [key: string]: boolean };\n\n classes.push(...Object.keys(animationClasses).filter((key) => animationClasses[key]));\n }\n\n return classes.filter(Boolean).join(' ');\n }\n\n // On kbqFooter's modal button click\n // AoT\n onButtonClick(button: IModalButtonOptions<T>) {\n // Call onClick directly\n const result = this.getButtonCallableProp(button, 'onClick');\n\n if (isPromise(result)) {\n button.loading = true;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n (result as Promise<{}>).then(() => (button.loading = false)).catch(() => (button.loading = false));\n }\n }\n\n /**\n * Sets mask animation classes for the given state, or clears them if state is null.\n * @docs-private\n */\n animateMaskTo(state: AnimationState) {\n this.maskAnimationClassMap = state\n ? {\n [`fade-${state}`]: true,\n [`fade-${state}-active`]: true\n }\n : null;\n }\n\n // Do rest things when visible state changed\n private handleVisibleStateChange(visible: boolean, animation: boolean = true, closeResult?: R): Promise<any> {\n // Hide scrollbar at the first time when shown up\n if (visible) {\n this.changeBodyOverflow(1);\n } else {\n this.kbqBeforeClose.emit(closeResult);\n }\n\n return (\n Promise.resolve(animation && this.animateTo(visible))\n // Emit open/close event after animations over\n .then(() => {\n if (visible) {\n this.kbqAfterOpen.emit();\n } else {\n this.kbqAfterClose.emit(closeResult);\n // Show/hide scrollbar when animation is over\n this.changeBodyOverflow();\n }\n })\n );\n }\n\n // Change kbqVisible from inside\n private changeVisibleFromInside(visible: boolean, closeResult?: R): Promise<void> {\n if (this.kbqVisible !== visible) {\n // Change kbqVisible value immediately\n this.kbqVisible = visible;\n this.kbqVisibleChange.emit(visible);\n\n return this.handleVisibleStateChange(visible, true, closeResult);\n }\n\n return Promise.resolve();\n }\n\n private changeAnimationState(state: AnimationState) {\n this.animationState = state;\n\n this.animateMaskTo(state);\n\n if (state) {\n this.modalAnimationClassMap = {\n [`zoom-${state}`]: true,\n [`zoom-${state}-active`]: true\n };\n } else {\n this.modalAnimationClassMap = null;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.changeDetectorRef.markForCheck();\n } else {\n this.changeDetector.markForCheck();\n }\n }\n\n private animateTo(isVisible: boolean): Promise<any> {\n // Figure out the latest click position when shows up\n if (isVisible) {\n // [NOTE] Using timeout due to the document.click event is fired later than visible change,\n // so if not postponed to next event-loop, we can't get the latest click position\n setTimeout(() => this.updateTransformOrigin());\n }\n\n this.changeAnimationState(isVisible ? 'enter' : 'leave');\n\n // Return when animation is over\n return new Promise((resolve) => {\n return setTimeout(() => {\n this.changeAnimationState(null);\n resolve(null);\n }, MODAL_ANIMATE_DURATION);\n });\n }\n\n private formatModalButtons(buttons: IModalButtonOptions<T>[]): IModalButtonOptions<T>[] {\n return buttons.map((button) => {\n return {\n ...{\n type: 'default',\n size: 'default',\n autoLoading: true,\n show: true,\n loading: false,\n disabled: false\n },\n ...button\n };\n });\n }\n\n /**\n * Create a component dynamically but not attach to any View\n * (this action will be executed when bodyContainer is ready)\n * @param component Component class\n */\n private createDynamicComponent(component: Type<T>) {\n const childInjector = Injector.create({\n providers: [{ provide: KbqModalRef, useValue: this }],\n parent: this.viewContainer.injector\n });\n\n // `ngOnInit` runs this for `kbqContent` and `kbqComponent` in turn, and only the last one is\n // ever inserted into `bodyContainer`, so an overwritten ref would have nothing to destroy it.\n this.contentComponentRef?.destroy();\n\n this.contentComponentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: childInjector\n });\n\n // Do the first change detection immediately\n // (or we do detection at ngAfterViewInit, multi-changes error will be thrown)\n this.contentComponentRef.changeDetectorRef.detectChanges();\n }\n\n // Update transform-origin to the last click position on document\n private updateTransformOrigin() {\n const modalElement = this.modalContainer().nativeElement as HTMLElement;\n const lastPosition = ModalUtil.getLastClickPosition();\n\n if (lastPosition) {\n this.transformOrigin = `${lastPosition.x - modalElement.offsetLeft}px ${lastPosition.y - modalElement.offsetTop}px 0px`;\n }\n }\n\n /**\n * Take care of the body's overflow to decide the existence of scrollbar\n * @param plusNum The number that the openModals.length will increase soon\n */\n private changeBodyOverflow(plusNum: number = 0) {\n const openModals = this.modalControl.openModals;\n\n if (openModals.length + plusNum > 0) {\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n } else {\n this.renderer.removeStyle(this.document.body, 'overflow');\n }\n }\n}\n\nfunction isPromise(obj: unknown | void): boolean {\n return (\n !!obj &&\n (typeof obj === 'object' || typeof obj === 'function') &&\n typeof (obj as Promise<unknown>).then === 'function' &&\n typeof (obj as Promise<unknown>).catch === 'function'\n );\n}\n","<!-- Compatible: the <ng-content> can appear only once -->\n<ng-template #tplOriginContent>\n <ng-content />\n</ng-template>\n\n<div>\n @if (kbqMask) {\n <div\n class=\"kbq-modal-mask\"\n [class.kbq-modal-mask-hidden]=\"hidden\"\n [class]=\"maskAnimationClassMap\"\n [style]=\"kbqMaskStyle\"\n ></div>\n }\n\n <div\n class=\"kbq-modal-wrap {{ kbqWrapClassName }}\"\n tabindex=\"-1\"\n [style.display]=\"hidden ? 'none' : ''\"\n (mousedown)=\"onClickMask($event)\"\n >\n <div\n #modalContainer\n [class]=\"getContainerClasses()\"\n [class.kbq-modal_no-footer]=\"!kbqFooter\"\n [style]=\"kbqStyle\"\n [style.transform-origin]=\"transformOrigin\"\n [style.width]=\"kbqWidth | toCssUnit\"\n >\n <div cdkTrapFocus class=\"kbq-modal-content\">\n @switch (true) {\n @case (isModalType('default')) {\n <ng-container [ngTemplateOutlet]=\"tplContentDefault\" />\n }\n @case (isModalType('confirm')) {\n <ng-container [ngTemplateOutlet]=\"tplContentConfirm\" />\n }\n @case (isModalType('custom')) {\n <ng-container [ngTemplateOutlet]=\"tplContentCustom\" />\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplContentCustom>\n <ng-container #bodyContainer />\n</ng-template>\n\n<!-- [Predefined] Default Modal Content -->\n<ng-template #tplContentDefault>\n @if (kbqTitle || kbqCaption) {\n <div class=\"kbq-modal-header\" [kbqOverflowShadowTop]=\"modalBodyOverflow\">\n <div class=\"kbq-modal-header-content\">\n @if (kbqTitle) {\n <div class=\"kbq-modal-title\" kbq-title>\n @switch (true) {\n @case (isTemplateRef(kbqTitle)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqTitle)\" />\n }\n @case (isNonEmptyString(kbqTitle)) {\n <div #kbqTitleText [innerHTML]=\"kbqTitle\"></div>\n }\n }\n </div>\n }\n @if (kbqCaption) {\n <div class=\"kbq-modal-caption\" kbq-title>\n @switch (true) {\n @case (isTemplateRef(kbqCaption)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqCaption)\" />\n }\n @case (isNonEmptyString(kbqCaption)) {\n <div #kbqTitleText [innerHTML]=\"kbqCaption\"></div>\n }\n }\n </div>\n }\n </div>\n @if (kbqClosable) {\n <button\n kbq-button\n type=\"button\"\n class=\"kbq-modal-close kbq-button_transparent\"\n [color]=\"'contrast'\"\n (click)=\"onClickCloseBtn()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n }\n </div>\n }\n <div\n #modalBodyOverflow=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n class=\"kbq-modal-body kbq-scrollbar\"\n [style]=\"kbqBodyStyle\"\n >\n <ng-container #bodyContainer>\n @if (!isComponent(kbqContent)) {\n @switch (true) {\n @case (isTemplateRef(kbqContent)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqContent)\" />\n }\n @case (isNonEmptyString(kbqContent)) {\n <div [innerHTML]=\"kbqContent\"></div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n }\n }\n }\n </ng-container>\n </div>\n @if (kbqFooter || kbqOkText || kbqCancelText) {\n <div class=\"kbq-modal-footer\" [kbqOverflowShadowBottom]=\"modalBodyOverflow\">\n @switch (true) {\n @case (isTemplateRef(kbqFooter)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqFooter)\" />\n }\n @case (isNonEmptyString(kbqFooter)) {\n <div [innerHTML]=\"kbqFooter\"></div>\n }\n @case (isModalButtons(kbqFooter)) {\n @for (button of $any(kbqFooter); track button) {\n @if (getButtonCallableProp(button, 'show')) {\n <button\n kbq-button\n [attr.autofocus]=\"button.autoFocus\"\n [attr.kbq-modal-main-action]=\"button.kbqModalMainAction\"\n [class.kbq-progress]=\"getButtonCallableProp(button, 'loading')\"\n [color]=\"button.type\"\n [disabled]=\"getButtonCallableProp(button, 'disabled')\"\n (click)=\"onButtonClick(button)\"\n >\n {{ button.label }}\n </button>\n }\n }\n }\n @default {\n @if (kbqOkText) {\n <button\n kbq-button\n [attr.autofocus]=\"true\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClickOkCancel('ok')\"\n >\n {{ okText }}\n </button>\n }\n @if (kbqCancelText) {\n <button kbq-button (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n }\n }\n }\n </div>\n }\n</ng-template>\n<!-- /[Predefined] Default Modal Content -->\n\n<!-- [Predefined] Confirm Modal Content -->\n<ng-template #tplContentConfirm>\n <div class=\"kbq-modal-body\" [style]=\"kbqBodyStyle\">\n <ng-container #bodyContainer>\n @if (!isComponent(kbqContent)) {\n @switch (true) {\n @case (isTemplateRef(kbqContent)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqContent)\" />\n }\n @case (isNonEmptyString(kbqContent)) {\n <div [innerHTML]=\"kbqContent\"></div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n }\n }\n }\n </ng-container>\n </div>\n @if (kbqOkText || kbqCancelText) {\n <div class=\"kbq-confirm-footer\">\n @if (kbqOkText) {\n <button kbq-button [attr.autofocus]=\"true\" [color]=\"kbqOkType\" (click)=\"onClickOkCancel('ok')\">\n {{ okText }}\n </button>\n }\n @if (kbqCancelText) {\n <button kbq-button (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n }\n </div>\n }\n</ng-template>\n<!-- /[Predefined] Confirm Modal Content -->\n","import { ChangeDetectionStrategy, Component, Directive, effect, inject } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOverflowShadowContainer } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KbqModalComponent } from './modal.component';\n\n@Component({\n selector: `[kbq-modal-title], kbq-modal-title, [kbqModalTitle]`,\n imports: [\n KbqIconModule,\n KbqButtonModule,\n KbqTitleDirective\n ],\n template: `\n <div class=\"kbq-modal-header-content\">\n <div class=\"kbq-modal-title\" kbq-title>\n <ng-content />\n </div>\n\n <ng-content select=\"kbq-modal-caption, [kbq-modal-caption], [kbqModalCaption]\" />\n </div>\n\n @if (modal.kbqClosable) {\n <button\n class=\"kbq-modal-close kbq-button_transparent\"\n type=\"button\"\n kbq-button\n [color]=\"'contrast'\"\n (click)=\"modal.onClickCloseBtn()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"modal.componentColors.Contrast\"></i>\n </button>\n }\n `,\n host: {\n class: 'kbq-modal-header',\n '[class.kbq-modal-header_closable]': 'modal.kbqClosable',\n '[style.box-shadow]': 'modal.bodyOverflow().top ? \"var(--kbq-shadow-overflow-normal-bottom)\" : null'\n }\n})\nexport class KbqModalTitle {\n protected modal = inject(KbqModalComponent);\n}\n\n/**\n * Caption of a manually composed modal (`kbqComponent`). Projected into the header rendered by\n * `KbqModalTitle`, below the title, and clamped to two lines. The resulting markup matches the\n * header of a modal created via `KbqModalService.create`.\n */\n@Component({\n selector: `[kbq-modal-caption], kbq-modal-caption, [kbqModalCaption]`,\n template: `\n <ng-content />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-modal-caption'\n },\n hostDirectives: [KbqTitleDirective]\n})\nexport class KbqModalCaption {}\n\n/**\n * Scrollable body of a manually composed modal (`kbqComponent`). Publishes its scroll-shadow\n * state onto the modal instance so a sibling `KbqModalTitle`/`KbqModalFooter` can render the\n * matching shadow, since they have no direct template reference to this element.\n */\n@Directive({\n selector: `[kbq-modal-body], kbq-modal-body, [kbqModalBody]`,\n host: {\n class: 'kbq-modal-body kbq-scrollbar'\n },\n hostDirectives: [KbqOverflowShadowContainer]\n})\nexport class KbqModalBody {\n private readonly modal = inject(KbqModalComponent);\n private readonly overflowContainer = inject(KbqOverflowShadowContainer);\n\n constructor() {\n effect(() => this.modal.bodyOverflow.set(this.overflowContainer.overflow()));\n }\n}\n\n@Directive({\n selector: `[kbq-modal-footer], kbq-modal-footer, [kbqModalFooter]`,\n host: {\n class: 'kbq-modal-footer',\n '[style.box-shadow]': 'modal.bodyOverflow().bottom ? \"var(--kbq-shadow-overflow-normal-top)\" : null'\n }\n})\nexport class KbqModalFooter {\n protected modal = inject(KbqModalComponent);\n}\n\n@Directive({\n selector: `[kbq-modal-main-action]`\n})\nexport class KbqModalMainAction {}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, inject, Injectable, InjectionToken, Injector, isDevMode } from '@angular/core';\nimport { ESCAPE } from '@koobiq/components/core';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { ConfirmType, IModalOptionsForService, ModalOptions } from './modal.type';\n\n/** Injection token that can be used to access the data that was passed in to a modal. */\nexport const KBQ_MODAL_DATA = new InjectionToken<unknown>('KbqModalData');\n\n/**\n * A builder used for managing service creating modals\n * @docs-private\n */\nexport class ModalBuilderForService {\n // Modal ComponentRef, \"null\" means it has been destroyed\n private modalRef: ComponentRef<KbqModalComponent> | null;\n private overlayRef: OverlayRef;\n\n constructor(\n private readonly overlay: Overlay,\n readonly options: IModalOptionsForService = {},\n private readonly injector: Injector\n ) {\n this.createModal();\n\n if (!('kbqGetContainer' in options)) {\n options.kbqGetContainer = undefined;\n }\n\n this.changeProps(options);\n\n // Defers ESC handling until the modal is fully open, avoiding premature close during the opening animation.\n this.modalRef!.instance.kbqAfterOpen.pipe(\n switchMap(() => this.overlayRef.keydownEvents()),\n filter((event: KeyboardEvent) => {\n return !!(event.keyCode === ESCAPE && options.kbqCloseByESC);\n })\n ).subscribe(() => this.getInstance()?.handleCloseResult('cancel', () => true));\n\n this.modalRef!.instance.open();\n this.modalRef!.instance.kbqAfterClose.subscribe(() => this.destroyModal());\n }\n\n getInstance(): KbqModalComponent | null {\n return this.modalRef && this.modalRef.instance;\n }\n\n destroyModal(): void {\n if (this.modalRef) {\n this.overlayRef.dispose();\n this.modalRef = null;\n }\n }\n\n private changeProps(options: ModalOptions): void {\n if (this.modalRef) {\n // here not limit user's inputs at runtime\n Object.assign(this.modalRef.instance, options);\n }\n }\n\n // Create component to ApplicationRef\n private createModal(): void {\n this.overlayRef = this.overlay.create();\n this.overlayRef.hostElement.classList.add('kbq-modal-overlay');\n\n this.modalRef = this.overlayRef.attach(new ComponentPortal(KbqModalComponent, undefined, this.injector));\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqModalService {\n private readonly overlay = inject(Overlay);\n private readonly modalControl = inject(KbqModalControlService);\n private injector = inject(Injector);\n\n // Track of the current close modals (we assume invisible is close this time)\n get openModals(): KbqModalRef[] {\n return this.modalControl.openModals;\n }\n\n get afterAllClose(): Observable<void> {\n return this.modalControl.afterAllClose.asObservable();\n }\n\n // Closes all of the currently-open dialogs\n closeAll(): void {\n this.modalControl.closeAll();\n }\n\n create<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n if (typeof options.kbqOnCancel !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnCancel = () => {};\n }\n\n if (typeof options.kbqOnOk !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnOk = () => {};\n }\n\n if (!('kbqCloseByESC' in options)) {\n options.kbqCloseByESC = true;\n }\n\n // Remove the Cancel button if the user not specify a Cancel button\n if (!('kbqCancelText' in options)) {\n options.kbqCancelText = undefined;\n }\n\n // Remove the Ok button if the user not specify an Ok button\n if (!('kbqOkText' in options)) {\n options.kbqOkText = undefined;\n }\n\n // Remove the footer if the user not specify a footer\n if (!('kbqFooter' in options)) {\n options.kbqFooter = undefined;\n }\n\n const injector = Injector.create({\n parent: options.injector || this.injector,\n providers: [{ provide: KBQ_MODAL_DATA, useValue: options.data }]\n });\n\n return new ModalBuilderForService(this.overlay, options, injector).getInstance()!;\n }\n\n confirm<C, R = unknown>(\n options: IModalOptionsForService<C> = {},\n confirmType: ConfirmType = 'confirm'\n ): KbqModalRef<C, R> {\n if ('kbqFooter' in options && isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(`The Confirm-Modal doesn't support \"kbqFooter\", this property will be ignored.`);\n }\n\n // NOTE: only support function currently by calling confirm()\n if (typeof options.kbqOnOk !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnOk = () => {};\n }\n\n options.kbqModalType = 'confirm';\n options.kbqClassName = `kbq-confirm kbq-confirm-${confirmType} ${options.kbqClassName || ''}`;\n\n return this.create<C, R>(options);\n }\n\n open<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n options.kbqModalType = 'custom';\n\n return this.create<C, R>(options);\n }\n\n success<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n return this.confirm<C, R>(options, 'success');\n }\n\n delete<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n return this.confirm<C, R>(options, 'warn');\n }\n}\n","import { A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalComponent } from './modal.component';\nimport { KbqModalBody, KbqModalCaption, KbqModalFooter, KbqModalMainAction, KbqModalTitle } from './modal.directive';\nimport { KbqModalService } from './modal.service';\n\n@NgModule({\n imports: [\n OverlayModule,\n A11yModule,\n KbqButtonModule,\n KbqIconModule,\n KbqTitleModule,\n NgTemplateOutlet,\n KbqModalComponent,\n KbqModalTitle,\n KbqModalCaption,\n KbqModalBody,\n KbqModalFooter,\n CssUnitPipe,\n KbqModalMainAction\n ],\n providers: [\n KbqModalControlService,\n KbqModalService,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }\n ],\n exports: [\n KbqModalComponent,\n KbqModalTitle,\n KbqModalCaption,\n KbqModalBody,\n KbqModalFooter,\n KbqModalMainAction\n ]\n})\nexport class KbqModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ModalUtil","i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-modal.mjs","sources":["../../../packages/components/modal/css-unit.pipe.ts","../../../packages/components/modal/modal-ref.class.ts","../../../packages/components/modal/modal.type.ts","../../../packages/components/modal/modal-control.service.ts","../../../packages/components/modal/modal.component.ts","../../../packages/components/modal/modal.component.html","../../../packages/components/modal/modal.directive.ts","../../../packages/components/modal/modal.service.ts","../../../packages/components/modal/modal.module.ts","../../../packages/components/modal/koobiq-components-modal.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'toCssUnit'\n})\nexport class CssUnitPipe implements PipeTransform {\n /** Returns `null` for a value that was never set, so the style binding it feeds is cleared. */\n transform(value: number | string | null | undefined, defaultUnit: string = 'px'): string | null {\n if (value === null || value === undefined) return null;\n\n const formatted = +value;\n\n return isNaN(formatted) ? `${value}` : `${formatted}${defaultUnit}`;\n }\n}\n","import { Observable } from 'rxjs';\nimport { KbqModalComponent } from './modal.component';\n\n/**\n * API class that public to users to handle the modal instance.\n * KbqModalRef is aim to avoid accessing to the modal instance directly by users.\n */\nexport abstract class KbqModalRef<C = any, R = unknown> {\n abstract afterOpen: Observable<void>;\n abstract beforeClose: Observable<R | undefined>;\n abstract afterClose: Observable<R | undefined>;\n\n abstract open(): void;\n\n abstract close(result?: R): void;\n\n abstract destroy(result?: R): void;\n\n /**\n * Runs the OK flow exactly as the predefined OK button does: the `kbqOkClick` handler when one\n * is bound, the `kbqOnOk` emitter otherwise.\n */\n abstract triggerOk(): void;\n\n /** Runs the cancel flow exactly as the predefined Cancel button does. */\n\n abstract triggerCancel(): void;\n\n /**\n * Return the component instance of kbqContent when specify kbqContent as a Component\n * Note: this method may return undefined if the Component has not ready yet.\n * (it only available after Modal's ngOnInit)\n */\n abstract getContentComponent(): C;\n\n /**\n * Get the dom element of this Modal\n */\n abstract getElement(): HTMLElement;\n\n /**\n * Get the instance of the Modal itself\n */\n abstract getInstance(): KbqModalComponent;\n\n /**\n * Call markForCheck for change detector\n */\n abstract markForCheck();\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { EventEmitter, InjectionToken, Injector, Signal, TemplateRef, Type } from '@angular/core';\nimport { KbqButtonColor } from '@koobiq/components/button';\nimport { KbqComponentColors, KbqOverflowShadowState } from '@koobiq/components/core';\nimport { Observable } from 'rxjs';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type OnClickCallback<T> = (instance: T) => (false | void | {}) | Promise<false | void | {}>;\n\n// Different modal styles we have supported\nexport type ModalType = 'default' | 'confirm' | 'custom';\n\n// Subtypes of Confirm Modal\nexport type ConfirmType = 'confirm' | 'success' | 'warn';\n\n/**\n * Where focus lands when the dialog is shown.\n *\n * `[cdkFocusInitial]` and `autofocus` inside the dialog win over every value but `false`.\n *\n * - `first-tabbable` — the first tabbable control, which for a titled dialog is the close button;\n * - `dialog` — the dialog element itself, so a long scrollable body is read from its start;\n * - `first-heading` — the dialog title, falling back to the dialog element;\n * - `false` — nothing is focused, and the caller is responsible for moving focus into the dialog.\n */\nexport type KbqModalAutoFocus = 'first-tabbable' | 'dialog' | 'first-heading' | false;\n\nexport enum ModalSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\n/**\n * Duration when perform animations (ms)\n *\n * @internal\n */\nexport const MODAL_ANIMATE_DURATION = 300;\n\n/**\n * The members of `KbqModalComponent` the composition directives (`kbq-modal-title`,\n * `kbq-modal-caption`, `kbq-modal-body`, `kbq-modal-footer`) depend on. They are projected into the\n * dialog, so they inject this token instead of the concrete host component.\n */\nexport interface KbqModal {\n /** Whether the dialog renders a close button in its header. */\n readonly kbqClosable: Signal<boolean>;\n /** Palette the composed header binds the close-icon color from. */\n readonly componentColors: typeof KbqComponentColors;\n /** Id the dialog element points `aria-labelledby` at. Belongs on the rendered title element. */\n readonly titleId: string;\n /** Id the dialog element points `aria-describedby` at. Belongs on the rendered caption element. */\n readonly captionId: string;\n /** Scroll-shadow state of the composed body, so the header and footer can render matching shadows. */\n readonly bodyOverflow: Signal<KbqOverflowShadowState>;\n /** Emits once the dialog is fully shown. */\n readonly afterOpen: Observable<void>;\n /** Runs the cancel flow, exactly as the templated close button does. */\n onClickCloseBtn(): void;\n /** Announces that a composed title is rendered, so the dialog can use it as its accessible name. */\n registerTitle(): void;\n /** Announces that a composed caption is rendered, so the dialog can use it as its description. */\n registerCaption(): void;\n /** Announces that a composed footer is rendered, so the body keeps its normal bottom padding. */\n registerFooter(): void;\n /** Publishes the composed body's scroll-shadow state. */\n setBodyOverflow(state: KbqOverflowShadowState): void;\n}\n\n/** Injection token exposing the dialog to the directives composed inside it. */\nexport const KBQ_MODAL = new InjectionToken<KbqModal>('KBQ_MODAL');\n\n/**\n * Options `KbqModalService` passes to the dialog it creates. The dialog reads them as the initial\n * values of its inputs, which is how the imperative path reaches signal inputs at all: a dialog\n * created by the service has no template bindings, so an input keeps its initial value for life.\n * Never provided on the declarative path, where the bindings carry the same values.\n *\n * @docs-private\n */\nexport const KBQ_MODAL_OPTIONS = new InjectionToken<ModalOptions>('KBQ_MODAL_OPTIONS');\n\n// Public options for using by service\nexport interface ModalOptions<C = any, R = any> {\n /** Layout the dialog renders. Default is `'default'`. */\n kbqModalType?: ModalType;\n /** Whether the dialog is shown. Managed by the service on the imperative path. */\n kbqVisible?: boolean;\n /** Explicit width, overriding the one `kbqSize` implies. A number is read as pixels. */\n kbqWidth?: number | string;\n /** Width preset. Default is `ModalSize.Medium` (640px). */\n kbqSize?: ModalSize;\n /** Extra class names for the full-screen wrapper around the dialog. */\n kbqWrapClassName?: string;\n /** Extra class names for the dialog element itself. */\n kbqClassName?: string;\n /** Inline styles for the dialog element. */\n kbqStyle?: object;\n /** Heading of the dialog. Also becomes its accessible name. */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n kbqTitle?: string | TemplateRef<{}>;\n /** Secondary line under the heading. Also becomes the dialog's accessible description. */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n kbqCaption?: string | TemplateRef<{}>;\n /** Body of the dialog: text, a template or a component class. */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n kbqContent?: string | TemplateRef<{}> | Type<C>;\n /** The instance of component opened into the dialog. */\n kbqComponent?: Type<C>;\n /** Whether the header renders a close button. Default is `true`. */\n kbqClosable?: boolean;\n /** Whether the page behind the dialog is dimmed. Default is `true`. */\n kbqMask?: boolean;\n /** Whether a click on the dim layer cancels the dialog. Default is `false`. */\n kbqMaskClosable?: boolean;\n /** Inline styles for the dim layer. */\n kbqMaskStyle?: object;\n /** Inline styles for the body element. */\n kbqBodyStyle?: object;\n /** Footer of the dialog: text, a template, or the buttons to render. Default modal ONLY. */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n kbqFooter?: string | TemplateRef<{}> | IModalButtonOptions<C>[];\n /** Element or overlay the dialog is rendered into. STATIC — read once, on init. */\n kbqGetContainer?: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) | null;\n\n /**\n * Emitter that mirrors the dialog's own open event. It is subscribed to the dialog, never\n * substituted for it, so `afterOpen` on the returned `KbqModalRef` keeps working alongside.\n */\n kbqAfterOpen?: EventEmitter<void>;\n\n /**\n * Emitter that mirrors the dialog's own close event. It is subscribed to the dialog, never\n * substituted for it, so `afterClose` on the returned `KbqModalRef` keeps working alongside.\n */\n kbqAfterClose?: EventEmitter<R>;\n /** Whether <kbd>Escape</kbd> cancels the dialog. Default is `true`. */\n kbqCloseByESC?: boolean;\n /** Whether focus returns to the trigger when the dialog closes. Default is `true`. */\n kbqRestoreFocus?: boolean;\n /** Where focus lands when the dialog is shown. Default is `'first-tabbable'`. */\n kbqAutoFocus?: KbqModalAutoFocus;\n /** Accessible name for a dialog rendered without `kbqTitle` — a confirm or a header-less dialog. */\n kbqAriaLabel?: string;\n\n /** Caption of the predefined OK button. The button is not rendered without it. */\n kbqOkText?: string;\n /** Color of the predefined OK button. Default is `KbqComponentColors.Contrast`. */\n kbqOkType?: KbqButtonColor;\n /** Whether the predefined OK button renders its progress state. */\n kbqOkLoading?: boolean;\n\n /**\n * Decision handler of the predefined OK button. Returning `false` (or a promise of `false`)\n * keeps the dialog open; anything else closes it. Pair of the `kbqOnOk` output — bind one.\n */\n kbqOkClick?: OnClickCallback<C>;\n /** Emitter notified when the predefined OK button is activated. Pair of `kbqOkClick` — bind one. */\n kbqOnOk?: EventEmitter<C>;\n /** Caption of the predefined Cancel button. The button is not rendered without it. */\n kbqCancelText?: string;\n /** Whether the predefined Cancel button renders its progress state. */\n kbqCancelLoading?: boolean;\n\n /**\n * Decision handler of the predefined Cancel button, the close button, <kbd>Escape</kbd> and the\n * dim layer. Returning `false` (or a promise of `false`) keeps the dialog open. Pair of the\n * `kbqOnCancel` output — bind one.\n */\n kbqCancelClick?: OnClickCallback<C>;\n /** Emitter notified when the dialog is cancelled. Pair of `kbqCancelClick` — bind one. */\n kbqOnCancel?: EventEmitter<C>;\n\n /** Data being injected into the child component. */\n data?: unknown;\n}\n\nexport interface IModalOptionsForService<T = any> extends ModalOptions<T> {\n /**\n * The injector used to create the component that will be attached.\n * If specified, it overrides the injector provided by `KbqModalService`.\n *\n * Its `DestroyRef` also owns the dialog: the modal is torn down when the injector is destroyed.\n */\n injector?: Injector;\n}\n\nexport interface IModalButtonOptions<T = any> {\n label: string;\n type?: string;\n shape?: string;\n ghost?: boolean;\n size?: string;\n // Default: true, indicate whether show loading automatically while onClick returned a Promise\n autoLoading?: boolean;\n\n /**\n * Whether the button is rendered.\n *\n * The callable form is re-evaluated on every change-detection pass over the dialog, which is\n * what lets it track state the dialog knows nothing about — so it must be cheap and free of\n * side effects. `contentComponentInstance` is passed only when the body is a component.\n */\n show?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n /** Whether the button renders its progress state. Re-evaluated per pass — see {@link IModalButtonOptions.show}. */\n loading?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n /** Whether the button is disabled. Re-evaluated per pass — see {@link IModalButtonOptions.show}. */\n disabled?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n\n autoFocus?: boolean;\n kbqModalMainAction?: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n onClick?(this: IModalButtonOptions<T>, contentComponentInstance?: T): (void | {}) | Promise<void | {}>;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { computed, inject, Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { MODAL_ANIMATE_DURATION } from './modal.type';\n\ninterface IRegisteredMeta {\n modalRef: KbqModalRef;\n afterOpenSubscription: Subscription;\n afterCloseSubscription: Subscription;\n beforeCloseSubscription?: Subscription;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqModalControlService {\n private parentService = inject(KbqModalControlService, { optional: true, skipSelf: true });\n private readonly document = inject(DOCUMENT);\n\n // Track singleton afterAllClose through over the injection tree\n get afterAllClose(): Subject<void> {\n return this.parentService ? this.parentService.afterAllClose : this.rootAfterAllClose;\n }\n\n // Track singleton openModals array through over the injection tree\n get openModals(): KbqModalRef[] {\n return this.parentService ? this.parentService.openModals : this.rootOpenModals;\n }\n\n /**\n * Dialogs currently shown, in the order they were shown. Unlike `openModals` this is updated\n * synchronously, before the opening animation, so the body scroll lock and the stacking rules\n * do not lag 300ms behind the dialog they describe.\n */\n get visibleModals(): Signal<readonly KbqModalRef[]> {\n return this.parentService ? this.parentService.visibleModals : this.rootVisibleModals;\n }\n\n /** The dialog on top of the stack, i.e. the only one assistive technology should reach. */\n get topVisibleModal(): Signal<KbqModalRef | null> {\n return this.parentService ? this.parentService.topVisibleModal : this.rootTopVisibleModal;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootOpenModals: KbqModalRef[] = this.parentService ? null : [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootAfterAllClose: Subject<void> = this.parentService ? null : new Subject<void>();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootRegisteredMetaMap: Map<KbqModalRef, IRegisteredMeta> = this.parentService ? null : new Map();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private readonly rootVisibleModals: WritableSignal<KbqModalRef[]> = this.parentService\n ? null\n : signal<KbqModalRef[]>([]);\n\n // Lazy, so the copy a child-level service never reads costs nothing.\n private readonly rootTopVisibleModal: Signal<KbqModalRef | null> = computed(() => {\n const modals = this.visibleModals();\n\n return modals.length ? modals[modals.length - 1] : null;\n });\n\n /** Elements this service took out of the accessibility tree while a dialog is shown. */\n private inertedElements: Element[] = [];\n\n // Registered modal for later usage\n private get registeredMetaMap(): Map<KbqModalRef, IRegisteredMeta> {\n return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap;\n }\n\n // Register a modal to listen its open/close\n registerModal(modalRef: KbqModalRef): void {\n if (!this.hasRegistered(modalRef)) {\n const afterOpenSubscription = modalRef.afterOpen.subscribe(() => this.openModals.push(modalRef));\n const afterCloseSubscription = modalRef.afterClose.subscribe(() => this.removeOpenModal(modalRef));\n\n this.registeredMetaMap.set(modalRef, { modalRef, afterOpenSubscription, afterCloseSubscription });\n\n this.handleMultipleMasks(modalRef);\n }\n }\n\n /**\n * Releases everything the registry holds for a dialog, whether or not it was ever shown.\n * `removeOpenModal` only ever runs for a dialog that reached `afterOpen`, so a dialog created\n * and destroyed without being shown — the normal life of a `<kbq-modal>` in a template nobody\n * triggers — would otherwise stay in the root-level map forever.\n */\n deregisterModal(modalRef: KbqModalRef): void {\n this.setVisible(modalRef, false);\n this.removeOpenModal(modalRef);\n }\n\n /** Records whether a dialog is shown, synchronously with the visibility change itself. */\n setVisible(modalRef: KbqModalRef, visible: boolean): void {\n if (this.parentService) {\n this.parentService.setVisible(modalRef, visible);\n\n return;\n }\n\n const modals = this.rootVisibleModals();\n const index = modals.indexOf(modalRef);\n\n if (visible) {\n if (index > -1) return;\n\n this.rootVisibleModals.set([...modals, modalRef]);\n } else {\n if (index === -1) return;\n\n this.rootVisibleModals.set(modals.filter((modal) => modal !== modalRef));\n }\n\n this.syncBackgroundInert();\n }\n\n hasRegistered(modalRef: KbqModalRef): boolean {\n return this.registeredMetaMap.has(modalRef);\n }\n\n // Close all registered opened modals\n closeAll(): void {\n let i = this.openModals.length;\n\n while (i--) {\n this.openModals[i].close();\n }\n }\n\n /**\n * Takes the page behind the dialog out of the accessibility tree and the tab order.\n *\n * `aria-modal=\"true\"` is enough for modern screen readers, but it is advisory: `inert` is what\n * actually stops the virtual cursor and the pointer from reaching the page underneath. Only\n * body children that do not contain a shown dialog are marked, so every overlay — the dialogs\n * themselves, dropdowns opened inside them, toasts — stays reachable, and so do live regions.\n */\n private syncBackgroundInert(): void {\n const visible = this.rootVisibleModals();\n\n if (visible.length) {\n const modalElements = visible.map((modal) => modal.getElement()).filter(Boolean);\n\n for (const child of Array.from(this.document.body.children)) {\n if (this.inertedElements.includes(child) || child.hasAttribute('inert')) continue;\n if (child.hasAttribute('aria-live') || child.querySelector('[aria-live]')) continue;\n if (modalElements.some((element) => child.contains(element))) continue;\n\n child.setAttribute('inert', '');\n this.inertedElements.push(child);\n }\n } else {\n this.inertedElements.forEach((element) => element.removeAttribute('inert'));\n this.inertedElements = [];\n }\n }\n\n private removeOpenModal(modalRef: KbqModalRef): void {\n const index = this.openModals.indexOf(modalRef);\n\n if (index > -1) {\n this.openModals.splice(index, 1);\n }\n\n this.unregister(modalRef);\n\n if (index > -1 && !this.openModals.length) {\n this.afterAllClose.next();\n }\n }\n\n private unregister(modalRef: KbqModalRef): void {\n const meta = this.registeredMetaMap.get(modalRef);\n\n if (!meta) return;\n\n meta.afterOpenSubscription.unsubscribe();\n meta.afterCloseSubscription.unsubscribe();\n meta.beforeCloseSubscription?.unsubscribe();\n\n this.registeredMetaMap.delete(modalRef);\n }\n\n private handleMultipleMasks(modalRef: KbqModalRef) {\n const modals = Array.from(this.registeredMetaMap.values()).map((v) => v.modalRef) as KbqModalComponent[];\n\n if (modals.filter((modal) => modal.kbqVisible()).length > 1) {\n const visibleModalsWithMask = modals\n .splice(0, modals.length - 1)\n .filter((modal) => modal.kbqVisible() && modal.kbqMask());\n\n // Trigger leave animation on other masks, then disable them after animation completes\n visibleModalsWithMask.forEach((modal) => {\n modal.getInstance().animateMaskTo('leave');\n modal.markForCheck();\n\n this.afterMaskAnimation(modal, () => {\n modal.getInstance().animateMaskTo(null);\n modal.getInstance().setMaskEnabled(false);\n modal.markForCheck();\n });\n });\n\n // On close, restore other masks with enter animation, then reset animation state after it completes\n const beforeCloseSubscription = modalRef.beforeClose.subscribe(() => {\n // Invariant with respect to the loop below — the dialog being closed is the same\n // one every time round.\n modalRef.getInstance().animateMaskTo('leave');\n\n this.afterMaskAnimation(modalRef, () => {\n modalRef.getInstance().animateMaskTo(null);\n modalRef.getInstance().setMaskEnabled(false);\n });\n\n visibleModalsWithMask.forEach((modal) => {\n modal.getInstance().setMaskEnabled(true);\n modal.getInstance().animateMaskTo('enter');\n\n modal.markForCheck();\n\n this.afterMaskAnimation(modal, () => {\n modal.getInstance().animateMaskTo(null);\n modal.markForCheck();\n });\n });\n });\n\n const meta = this.registeredMetaMap.get(modalRef);\n\n // The closure captures a set of sibling dialogs, so it has to die with the registration.\n if (meta) meta.beforeCloseSubscription = beforeCloseSubscription;\n }\n }\n\n /**\n * Runs `fn` once the mask animation of `modal` started just now is over, at once when that dialog has\n * animations disabled: the covered layer would otherwise stay painted under the new one for the whole\n * duration. Read per dialog, whose injector can be below the one of this service.\n */\n private afterMaskAnimation(modal: KbqModalRef, fn: () => void): void {\n if (modal.getInstance().animationsDisabled) {\n fn();\n\n return;\n }\n\n setTimeout(fn, MODAL_ANIMATE_DURATION);\n }\n}\n","import { CdkTrapFocus, FocusMonitor, FocusOrigin, InputModalityDetector } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n computed,\n createComponent,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n signal,\n SimpleChanges,\n TemplateRef,\n Type,\n untracked,\n viewChild,\n viewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { KbqButtonColor, KbqButtonModule } from '@koobiq/components/button';\nimport {\n ENTER,\n ESCAPE,\n KBQ_A11Y_LOCALE_CONFIGURATION,\n kbqAnimationsDisabled,\n KbqComponentColors,\n KbqLocaleOverridesDirective,\n KbqOverflowShadowBottom,\n KbqOverflowShadowContainer,\n KbqOverflowShadowState,\n KbqOverflowShadowTop\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqScrollbarViewport } from '@koobiq/components/scrollbar';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { Observable, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport {\n IModalButtonOptions,\n KBQ_MODAL,\n KBQ_MODAL_OPTIONS,\n KbqModal,\n KbqModalAutoFocus,\n MODAL_ANIMATE_DURATION,\n ModalOptions,\n ModalSize,\n ModalType,\n OnClickCallback\n} from './modal.type';\n\n/** Phase of the open/close animation the dialog is in, or `null` between phases. */\nexport type AnimationState = 'enter' | 'leave' | null;\n\n/** Form a `kbqTitle`/`kbqCaption`/`kbqContent`/`kbqFooter` value took. */\ntype KbqModalSlotKind = 'template' | 'component' | 'buttons' | 'string' | 'none';\n\n/**\n * Classifies a slot value once, so the template dispatches on a value instead of calling a type\n * guard per binding — and so the guards stay out of the component's published surface.\n */\nfunction slotKind(value: unknown): KbqModalSlotKind {\n if (value instanceof TemplateRef) return 'template';\n if (value instanceof Type) return 'component';\n if (Array.isArray(value)) return value.length > 0 ? 'buttons' : 'none';\n if (typeof value === 'string') return value === '' ? 'none' : 'string';\n\n return 'none';\n}\n\nlet uniqueIdCounter = 0;\n\n@Component({\n selector: 'kbq-modal',\n imports: [\n CdkTrapFocus,\n KbqButtonModule,\n KbqIconModule,\n CssUnitPipe,\n NgTemplateOutlet,\n KbqScrollbarViewport,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqOverflowShadowBottom,\n KbqTitleModule\n ],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.scss', 'modal-tokens.scss'],\n providers: [{ provide: KBQ_MODAL, useExisting: KbqModalComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-modal',\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ]\n})\n// `ModalOptions` is the service's contract, not the component's shape: every option is a signal\n// input here, so the two no longer match structurally and the dialog cannot declare it.\nexport class KbqModalComponent<T = any, R = any>\n extends KbqModalRef<T, R>\n implements KbqModal, OnInit, OnChanges, AfterViewInit, OnDestroy\n{\n private overlay = inject(Overlay);\n private renderer = inject(Renderer2);\n private environmentInjector = inject(EnvironmentInjector);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private viewContainer = inject(ViewContainerRef);\n private modalControl = inject(KbqModalControlService);\n private changeDetector = inject(ChangeDetectorRef);\n private focusMonitor = inject(FocusMonitor);\n private readonly inputModalityDetector = inject(InputModalityDetector);\n private readonly injector = inject(Injector);\n\n /**\n * Whether the dialog and its dim layer move without motion. Read from the dialog's own injector, under\n * `options.injector` when the service opened it.\n *\n * @internal\n */\n readonly animationsDisabled = kbqAnimationsDisabled();\n\n /** Accessible name for the icon-only close button. */\n protected readonly a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'a11y',\n KBQ_A11Y_LOCALE_CONFIGURATION\n );\n\n protected readonly document = inject<Document>(DOCUMENT);\n\n /**\n * Options `KbqModalService` passed in, or `null` on the declarative path. Every input below\n * takes its initial value from here: a service-created dialog carries no template bindings, so\n * an input it does not bind keeps that initial value for the dialog's whole life.\n */\n private readonly options = inject(KBQ_MODAL_OPTIONS, { optional: true }) as ModalOptions<T, R> | null;\n\n componentColors = KbqComponentColors;\n\n /** Layout the dialog renders. */\n readonly kbqModalType = input<ModalType>(this.options?.kbqModalType ?? 'default');\n\n /** The instance of component opened into the dialog. */\n readonly kbqComponent = input<Type<T> | undefined>(this.options?.kbqComponent);\n\n /** Body of the dialog: text, a template or a component class. Falls back to `<ng-content>`. */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n readonly kbqContent = input<string | TemplateRef<{}> | Type<T> | undefined>(this.options?.kbqContent);\n\n /** Footer of the dialog: text, a template, or the buttons to render. Default modal ONLY. */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n readonly kbqFooter = input<string | TemplateRef<{}> | IModalButtonOptions<T>[] | undefined>(\n this.options?.kbqFooter\n );\n\n /** Whether the dialog is shown. Two-way bindable as `[(kbqVisible)]`. */\n readonly kbqVisible = model<boolean>(this.options?.kbqVisible ?? false);\n\n /** Explicit width, overriding the one `kbqSize` implies. A number is read as pixels. */\n readonly kbqWidth = input<number | string | undefined>(this.options?.kbqWidth);\n /** Width preset. */\n readonly kbqSize = input<ModalSize>(this.options?.kbqSize ?? ModalSize.Medium);\n /** Extra class names for the full-screen wrapper around the dialog. */\n readonly kbqWrapClassName = input<string | undefined>(this.options?.kbqWrapClassName);\n /** Extra class names for the dialog element itself. */\n readonly kbqClassName = input<string | undefined>(this.options?.kbqClassName);\n /** Inline styles for the dialog element. */\n readonly kbqStyle = input<object | undefined>(this.options?.kbqStyle);\n\n /** Heading of the dialog. Also becomes its accessible name. */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n readonly kbqTitle = input<string | TemplateRef<{}> | undefined>(this.options?.kbqTitle);\n /** Secondary line under the heading. Also becomes the dialog's accessible description. */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n readonly kbqCaption = input<string | TemplateRef<{}> | undefined>(this.options?.kbqCaption);\n /** Whether <kbd>Escape</kbd> cancels the dialog. */\n readonly kbqCloseByESC = input(this.options?.kbqCloseByESC ?? true, { transform: booleanAttribute });\n\n /** Where focus lands when the dialog is shown. */\n readonly kbqAutoFocus = input<KbqModalAutoFocus>(this.options?.kbqAutoFocus ?? 'first-tabbable');\n\n /** Accessible name for a dialog rendered without `kbqTitle` — a confirm or a header-less dialog. */\n readonly kbqAriaLabel = input<string | undefined>(this.options?.kbqAriaLabel);\n\n /** Whether the header renders a close button. */\n readonly kbqClosable = input(this.options?.kbqClosable ?? true, { transform: booleanAttribute });\n\n /** Whether the page behind the dialog is dimmed. */\n readonly kbqMask = input(this.options?.kbqMask ?? true, { transform: booleanAttribute });\n\n /** Whether a click on the dim layer cancels the dialog. */\n readonly kbqMaskClosable = input(this.options?.kbqMaskClosable ?? false, { transform: booleanAttribute });\n\n /** Inline styles for the dim layer. */\n readonly kbqMaskStyle = input<object | undefined>(this.options?.kbqMaskStyle);\n /** Inline styles for the body element. */\n readonly kbqBodyStyle = input<object | undefined>(this.options?.kbqBodyStyle);\n\n // The emitters stay the source of truth: they back the public `afterOpen`/`beforeClose`/`afterClose`\n // observables and the subscriptions of `ModalBuilderForService`, which `OutputEmitterRef` cannot. The\n // outputs below mirror them for template bindings; `outputFromObservable` subscribes once per listener,\n // so `observed` still tells a bound output.\n // Trigger when modal open(visible) after animations\n readonly kbqAfterOpen = new EventEmitter<void>();\n /** @docs-private */\n readonly kbqAfterOpenOutput = outputFromObservable(this.kbqAfterOpen, { alias: 'kbqAfterOpen' });\n // Trigger when modal leave-animation over\n readonly kbqAfterClose = new EventEmitter<R | undefined>();\n /** @docs-private */\n readonly kbqAfterCloseOutput = outputFromObservable(this.kbqAfterClose, { alias: 'kbqAfterClose' });\n /** Emitted before the modal begins its closing animation. */\n readonly kbqBeforeClose = new EventEmitter<R | undefined>();\n /** @docs-private */\n readonly kbqBeforeCloseOutput = outputFromObservable(this.kbqBeforeClose, { alias: 'kbqBeforeClose' });\n\n /** Caption of the predefined OK button. The button is not rendered without it. */\n readonly kbqOkText = input<string | undefined>(this.options?.kbqOkText);\n /** Color of the predefined OK button. */\n readonly kbqOkType = input<KbqButtonColor>(this.options?.kbqOkType ?? KbqComponentColors.Contrast);\n\n /** Whether focus returns to the trigger when the dialog closes. */\n readonly kbqRestoreFocus = input(this.options?.kbqRestoreFocus ?? true, { transform: booleanAttribute });\n\n /** Whether the predefined OK button renders its progress state. */\n readonly kbqOkLoading = input(this.options?.kbqOkLoading ?? false, { transform: booleanAttribute });\n\n /**\n * Decision handler of the predefined OK button. Returning `false` — or a promise of `false` —\n * keeps the dialog open; anything else closes it. Receives the body component instance when the\n * body is a component.\n *\n * Bind this **or** `(kbqOnOk)`, never both: a handler decides the close itself, so the event has\n * nothing left to report and is not emitted. Binding both is reported in development mode.\n */\n readonly kbqOkClick = input<OnClickCallback<T> | undefined>(this.options?.kbqOkClick);\n\n /**\n * Emits when the predefined OK button is activated. A notification, not a decision — the dialog\n * closes either way. Bind `[kbqOkClick]` instead to decide whether it closes.\n */\n readonly kbqOnOk = new EventEmitter<T>();\n /** @docs-private */\n readonly kbqOnOkOutput = outputFromObservable(this.kbqOnOk, { alias: 'kbqOnOk' });\n\n /** Caption of the predefined Cancel button. The button is not rendered without it. */\n readonly kbqCancelText = input<string | undefined>(this.options?.kbqCancelText);\n\n /** Whether the predefined Cancel button renders its progress state. */\n readonly kbqCancelLoading = input(this.options?.kbqCancelLoading ?? false, { transform: booleanAttribute });\n\n /**\n * Decision handler of the predefined Cancel button, the close button, <kbd>Escape</kbd> and the\n * dim layer. Returning `false` — or a promise of `false` — keeps the dialog open.\n *\n * Bind this **or** `(kbqOnCancel)`, never both — see `kbqOkClick`.\n */\n readonly kbqCancelClick = input<OnClickCallback<T> | undefined>(this.options?.kbqCancelClick);\n\n /**\n * Emits when the dialog is cancelled, by any of the controls `kbqCancelClick` covers. A\n * notification, not a decision. Bind `[kbqCancelClick]` instead to decide whether it closes.\n */\n readonly kbqOnCancel = new EventEmitter<T>();\n /** @docs-private */\n readonly kbqOnCancelOutput = outputFromObservable(this.kbqOnCancel, { alias: 'kbqOnCancel' });\n\n readonly modalContainer = viewChild.required<ElementRef>('modalContainer');\n readonly bodyContainer = viewChild.required('bodyContainer', { read: ViewContainerRef });\n // Both the scrollable wrap and the body of a predefined layout, so a query for one would flash\n // whichever comes first in the template rather than the one that overflows.\n private readonly scrollbarViewports = viewChildren(KbqScrollbarViewport);\n private readonly trapFocus = viewChild.required(CdkTrapFocus);\n\n private readonly uniqueId = uniqueIdCounter++;\n\n /** Id of the element that names the dialog. Rendered on the title of a composed modal too. */\n readonly titleId = `kbq-modal-title-${this.uniqueId}`;\n /** Id of the element that describes the dialog. Rendered on the caption of a composed modal too. */\n readonly captionId = `kbq-modal-caption-${this.uniqueId}`;\n\n /**\n * Scroll-shadow state published by `KbqModalBody` when the modal content is composed\n * manually (`kbq-modal-title`/`kbq-modal-body`/`kbq-modal-footer`), so the header/footer\n * can render matching shadows without a direct template reference between them.\n *\n * @docs-private\n */\n readonly bodyOverflow = signal<KbqOverflowShadowState>({ top: false, bottom: false });\n\n // Observable alias for kbqAfterOpen\n get afterOpen(): Observable<void> {\n return this.kbqAfterOpen.asObservable();\n }\n\n /** Observable alias for `kbqBeforeClose` */\n get beforeClose(): Observable<R | undefined> {\n return this.kbqBeforeClose.asObservable();\n }\n\n // Observable alias for kbqAfterClose\n get afterClose(): Observable<R | undefined> {\n return this.kbqAfterClose.asObservable();\n }\n\n // Indicate whether this dialog should hidden\n get hidden(): boolean {\n return !this.kbqVisible() && !this.animationState;\n }\n\n /**\n * Footer buttons with their defaults filled in. `kbqFooter` reports what was bound; this is what\n * the template renders, so the input is never written back over.\n */\n protected readonly footer = computed(() => {\n const footer = this.kbqFooter();\n\n return Array.isArray(footer) ? this.formatModalButtons(footer) : footer;\n });\n\n /** @docs-private */\n protected readonly titleKind = computed(() => slotKind(this.kbqTitle()));\n /** @docs-private */\n protected readonly captionKind = computed(() => slotKind(this.kbqCaption()));\n /** @docs-private */\n protected readonly contentKind = computed(() => slotKind(this.kbqContent()));\n /** @docs-private */\n protected readonly footerKind = computed(() => slotKind(this.footer()));\n\n /** Whether the dialog renders a footer — a predefined button is enough, `kbqFooter` is not required. */\n protected get hasFooter(): boolean {\n return this.composedFooter || !!(this.kbqFooter() || this.kbqOkText() || this.kbqCancelText());\n }\n\n /** Id of the element naming the dialog, or `null` when there is no title to point at. */\n protected get ariaLabelledBy(): string | null {\n return this.hasTitle() ? this.titleId : null;\n }\n\n /** Accessible name for a dialog with no title. Never rendered next to `aria-labelledby`. */\n protected get ariaLabel(): string | null {\n return this.hasTitle() ? null : this.kbqAriaLabel() || null;\n }\n\n /** Id of the caption describing the dialog, or `null` when no caption is rendered. */\n protected get ariaDescribedBy(): string | null {\n return this.hasCaption() ? this.captionId : null;\n }\n\n /**\n * Whether this dialog is covered by another one. `aria-modal` only hides the page behind the\n * topmost dialog, so every dialog below it is taken out of the accessibility tree and the tab\n * order explicitly.\n */\n protected get inert(): boolean {\n const top = this.modalControl.topVisibleModal();\n\n return !!top && top !== this;\n }\n\n /** Phase of the open/close animation, which the class list and the hidden state follow. */\n private readonly animationPhase = signal<AnimationState>(null);\n\n /** Full set of classes for the dialog element. */\n protected readonly containerClasses = computed(() => {\n const phase = this.animationPhase();\n const classes = ['kbq-modal-container', this.kbqClassName(), `kbq-modal_${this.kbqSize()}`];\n\n if (phase) classes.push(`zoom-${phase}`, `zoom-${phase}-active`);\n\n return classes.filter(Boolean).join(' ');\n });\n\n /**\n * Phase of the dim layer's animation. Follows the dialog's own phase, except while\n * `KbqModalControlService` fades the layer of a covered dialog out on its own.\n */\n private readonly maskPhase = signal<AnimationState>(null);\n\n /**\n * Whether the dim layer is actually painted: the input, overridden while another dialog covers\n * this one. Seeded from the input so re-binding `[kbqMask]` still takes effect.\n *\n * The override exists because `KbqModalControlService` turns the layer of the dialogs underneath\n * a newly opened one off and back on. That orchestration belongs in the dialog, keyed on\n * `KbqModalControlService.topVisibleModal()` the way `inert` already is.\n */\n private readonly maskEnabled = linkedSignal(() => this.kbqMask());\n\n /** Classes for the dim layer. */\n protected readonly maskAnimationClasses = computed(() => {\n const phase = this.maskPhase();\n\n return phase ? `fade-${phase} fade-${phase}-active` : '';\n });\n\n /**\n * Progress state the predefined buttons actually render: the input, overridden while a handler's\n * returned promise is pending. Seeded from the input so re-binding it still takes effect.\n */\n private readonly okLoading = linkedSignal(() => this.kbqOkLoading());\n private readonly cancelLoading = linkedSignal(() => this.kbqCancelLoading());\n\n /** @docs-private */\n protected loading(triggerType: 'ok' | 'cancel'): boolean {\n return triggerType === 'ok' ? this.okLoading() : this.cancelLoading();\n }\n\n private focusedElementBeforeOpen: HTMLElement | null;\n\n private previouslyFocusedElementOrigin: FocusOrigin;\n\n private monitoredContainer: ElementRef | null = null;\n private focusMonitorSubscription: Subscription | null = null;\n\n /** Whether a `kbq-modal-title` is composed inside the dialog body. */\n private composedTitle = false;\n\n /** Whether a `kbq-modal-caption` is composed inside the dialog body. */\n private composedCaption = false;\n\n /** Whether a `kbq-modal-footer` is composed inside the dialog body. */\n private composedFooter = false;\n\n private viewInitialized = false;\n\n /** Visibility the open/close flow has already run for. See `syncVisibleState`. */\n private handledVisible = false;\n\n // Handle the reference when using kbqContent as Component\n private contentComponentRef: ComponentRef<T>;\n // Current animation state\n private animationState: AnimationState;\n private container: HTMLElement | OverlayRef;\n\n /** Element or overlay the dialog is rendered into. Read once, on init. */\n readonly kbqGetContainer = input<HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) | null>(\n // A service-created dialog is already inside an overlay the builder owns, so it must not\n // create one of its own; the declarative path has nowhere to render until it does.\n this.options ? (this.options.kbqGetContainer ?? null) : () => this.overlay.create()\n );\n\n // [NOTE] NOT available when using by service!\n // Because ngOnChanges never be called when using by service,\n // here we can't support \"kbqContent\"(Component) etc. as inputs that initialized dynamically.\n // BUT: User also can change \"kbqContent\" dynamically to trigger UI changes\n // (provided you don't use Component that needs initializations)\n ngOnChanges(changes: SimpleChanges) {\n // A `model()` reports a write from inside through `ngOnChanges` as well, and that write has\n // already run the flow, so the guard inside is what keeps it from running twice.\n if (changes.kbqVisible) this.syncVisibleState(changes.kbqVisible.firstChange);\n }\n\n ngOnInit() {\n const content = this.kbqContent();\n const component = this.kbqComponent();\n\n // Create component along without View\n if (slotKind(content) === 'component') {\n this.createDynamicComponent(content as Type<T>);\n }\n\n if (component) {\n this.createDynamicComponent(component);\n }\n\n // Place the modal dom to elsewhere\n const container = this.kbqGetContainer();\n\n this.container = (typeof container === 'function' ? container() : container) as HTMLElement | OverlayRef;\n\n if (this.container instanceof HTMLElement) {\n this.container.appendChild(this.elementRef.nativeElement);\n } else if (this.container instanceof OverlayRef) {\n // The marker the outside-click filters of other overlays (e.g. `kbq-select`) key off.\n this.container.hostElement.classList.add('kbq-modal-overlay');\n // NOTE: only attach the dom to overlay, the view container is not changed actually\n this.container.overlayElement.appendChild(this.elementRef.nativeElement);\n }\n\n // Register modal when afterOpen/afterClose is stable\n this.modalControl.registerModal(this);\n }\n\n ngAfterViewInit() {\n // If using Component, it is the time to attach View while bodyContainer is ready\n if (this.contentComponentRef) {\n // In the custom layout the component's host element is inserted straight into\n // `.kbq-modal-content`, so it sits between the dialog and the header, body and footer it\n // composes. The dialog's column layout has to carry through it or the body never\n // becomes the part that gives way.\n if (this.isModalType('custom')) {\n (this.contentComponentRef.location.nativeElement as HTMLElement).classList.add(\n 'kbq-modal-content-host'\n );\n }\n\n this.bodyContainer().insert(this.contentComponentRef.hostView);\n }\n\n this.viewInitialized = true;\n\n if (this.kbqVisible()) {\n this.monitorContainer();\n this.focusInitialElement();\n }\n }\n\n ngOnDestroy() {\n // Created in `ngOnInit` but owned by `bodyContainer` only from `ngAfterViewInit`, so a modal\n // closed in between would leak it. Destroying an already-destroyed view is a no-op.\n this.contentComponentRef?.destroy();\n\n this.focusMonitorSubscription?.unsubscribe();\n\n if (this.monitoredContainer) {\n this.focusMonitor.stopMonitoring(this.monitoredContainer);\n this.monitoredContainer = null;\n }\n\n // Release everything the dialog holds globally even when it is torn down while still open:\n // the registry entry, the place in the stack and the body scroll lock.\n this.modalControl.deregisterModal(this);\n this.changeBodyOverflow();\n\n if (this.container instanceof OverlayRef) {\n this.container.dispose();\n }\n }\n\n open() {\n // Untracked, as `close()`, `triggerOk()` and `triggerCancel()`: called from a consumer's `effect()`, the state\n // read and written on the way — `kbqVisible`, the dialogs shown, the inputs — would make the effect run again on\n // every open and close, and an effect that creates a dialog would create another one at once.\n untracked(() => this.changeVisibleFromInside(true));\n }\n\n /**\n * Starts the closing animation and resolves the `afterClose` contract with `result`.\n *\n * Closing an already closed dialog is a no-op: `afterClose` emits once per actual transition.\n */\n close(result?: R) {\n untracked(() => this.changeVisibleFromInside(false, result));\n }\n\n // Destroy equals Close\n destroy(result?: R) {\n this.close(result);\n }\n\n markForCheck() {\n this.changeDetector.markForCheck();\n }\n\n triggerOk() {\n untracked(() => this.onClickOkCancel('ok'));\n }\n\n triggerCancel() {\n untracked(() => this.onClickOkCancel('cancel'));\n }\n\n getInstance(): KbqModalComponent {\n return this;\n }\n\n getContentComponentRef(): ComponentRef<T> {\n return this.contentComponentRef;\n }\n\n getContentComponent(): T {\n return this.contentComponentRef && this.contentComponentRef.instance;\n }\n\n getElement(): HTMLElement {\n return this.elementRef && this.elementRef.nativeElement;\n }\n\n /** Announces that a `kbq-modal-title` is composed inside the dialog. @docs-private */\n registerTitle(): void {\n this.composedTitle = true;\n }\n\n /** Announces that a `kbq-modal-caption` is composed inside the dialog. @docs-private */\n registerCaption(): void {\n this.composedCaption = true;\n }\n\n /** Announces that a `kbq-modal-footer` is composed inside the dialog. @docs-private */\n registerFooter(): void {\n this.composedFooter = true;\n }\n\n /** Publishes the composed body's scroll-shadow state. @docs-private */\n setBodyOverflow(state: KbqOverflowShadowState): void {\n this.bodyOverflow.set(state);\n }\n\n /**\n * Drives the dim layer's animation on its own, which is what lets `KbqModalControlService` fade\n * out the layer of a dialog another one has covered.\n *\n * @docs-private\n */\n animateMaskTo(state: AnimationState): void {\n // The phase classes are the layer's whole motion, so leaving them off is what disables it.\n this.maskPhase.set(this.animationsDisabled ? null : state);\n }\n\n /**\n * Turns the dim layer off or back on without touching `kbqMask`, so a dialog covered by another\n * one stops painting its own layer. See `maskEnabled`.\n *\n * @docs-private\n */\n setMaskEnabled(enabled: boolean): void {\n this.maskEnabled.set(enabled);\n }\n\n /** @docs-private */\n protected isMaskEnabled(): boolean {\n return this.maskEnabled();\n }\n\n // AoT\n onClickCloseBtn() {\n if (this.kbqVisible()) {\n this.onClickOkCancel('cancel');\n }\n }\n\n /** @docs-private */\n protected onClickMask($event: MouseEvent) {\n // Only the primary button closes the modal: the sidepanel's backdrop is driven by `click`, which\n // never fires for the right or middle button, and `mousedown` here would otherwise diverge from it.\n if ($event.button !== 0) return;\n\n if (\n this.kbqMask() &&\n this.kbqMaskClosable() &&\n ($event.target as HTMLElement).classList.contains('kbq-modal-wrap') &&\n this.kbqVisible()\n ) {\n this.onClickOkCancel('cancel');\n }\n }\n\n /** @docs-private */\n protected isModalType(type: ModalType): boolean {\n return this.kbqModalType() === type;\n }\n\n /** @docs-private */\n protected onKeyDown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE) {\n // A control inside the dialog consumed the key to close a popup of its own, such as a calendar.\n if (event.defaultPrevented) return;\n\n // One implementation for both entry paths: the event only reaches the host from inside\n // the dialog, so it cannot be the keystroke that opened it. Escape is the Cancel\n // button, veto included.\n if (this.kbqCloseByESC() && this.kbqVisible()) {\n this.onClickOkCancel('cancel');\n event.preventDefault();\n }\n\n return;\n }\n\n if (event.ctrlKey && event.keyCode === ENTER) {\n if (this.kbqModalType() === 'confirm') {\n this.triggerOk();\n }\n\n (this.getElement().querySelector('[kbq-modal-main-action]') as HTMLElement)?.click();\n\n event.preventDefault();\n }\n }\n\n /** @docs-private */\n protected onClickOkCancel(type: 'ok' | 'cancel') {\n this.handleCloseResult(type, (doClose) => doClose !== false);\n }\n\n /** @docs-private */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n protected handleCloseResult(triggerType: 'ok' | 'cancel', canClose: (doClose: boolean | void | {}) => boolean) {\n const handler = triggerType === 'ok' ? this.kbqOkClick() : this.kbqCancelClick();\n const emitter = triggerType === 'ok' ? this.kbqOnOk : this.kbqOnCancel;\n const loading = triggerType === 'ok' ? this.okLoading : this.cancelLoading;\n // Users can return \"false\" to prevent closing by default\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n const caseClose = (doClose: boolean | void | {}) => canClose(doClose) && this.close(doClose as R);\n\n if (!handler) {\n emitter.emit(this.getContentComponent());\n caseClose(undefined);\n\n return;\n }\n\n if (isDevMode() && emitter.observed) {\n const input = triggerType === 'ok' ? 'kbqOkClick' : 'kbqCancelClick';\n const output = triggerType === 'ok' ? 'kbqOnOk' : 'kbqOnCancel';\n\n // eslint-disable-next-line no-console\n console.warn(\n `KbqModal: both [${input}] and (${output}) are bound. The handler decides the close, ` +\n `so (${output}) is never emitted. Bind one of them.`\n );\n }\n\n const result = handler(this.getContentComponent());\n\n if (isPromise(result)) {\n loading.set(true);\n\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n const handleThen = (doClose: boolean | void | {}) => {\n loading.set(false);\n caseClose(doClose);\n };\n\n (result as Promise<void>).then(handleThen).catch(handleThen);\n } else {\n caseClose(result);\n }\n }\n\n /**\n * Lookup a button's property, if the prop is a function, call & then return the result, otherwise, return itself.\n *\n * @docs-private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n protected getButtonCallableProp(options: IModalButtonOptions<T>, prop: string): {} {\n const value = options[prop];\n const args: any[] = [];\n\n if (this.contentComponentRef) {\n args.push(this.contentComponentRef.instance);\n }\n\n return typeof value === 'function' ? value.apply(options, args) : value;\n }\n\n /**\n * On kbqFooter's modal button click.\n *\n * @docs-private\n */\n protected onButtonClick(button: IModalButtonOptions<T>) {\n // Call onClick directly\n const result = this.getButtonCallableProp(button, 'onClick');\n\n if (isPromise(result)) {\n button.loading = true;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n (result as Promise<{}>).then(() => (button.loading = false)).catch(() => (button.loading = false));\n }\n }\n\n /** Whether anything is rendered that can name the dialog. */\n private hasTitle(): boolean {\n return this.composedTitle || (this.isModalType('default') && !!this.kbqTitle());\n }\n\n /** Whether anything is rendered that can describe the dialog. */\n private hasCaption(): boolean {\n return this.composedCaption || (this.isModalType('default') && !!this.kbqCaption());\n }\n\n // Do rest things when visible state changed\n private handleVisibleStateChange(visible: boolean, animation: boolean = true, closeResult?: R): Promise<any> {\n if (visible) {\n this.captureFocus();\n this.modalControl.setVisible(this, true);\n // Hide scrollbar at the first time when shown up\n this.changeBodyOverflow();\n this.focusOnShow();\n } else {\n this.kbqBeforeClose.emit(closeResult);\n this.modalControl.setVisible(this, false);\n }\n\n return (\n Promise.resolve(animation && this.animateTo(visible))\n // Emit open/close event after animations over\n .then(() => {\n if (visible) {\n this.scrollbarViewports().forEach((viewport) => viewport.flashScrollIndicators());\n this.kbqAfterOpen.emit();\n } else {\n this.kbqAfterClose.emit(closeResult);\n // Show/hide scrollbar when animation is over\n this.changeBodyOverflow();\n this.restoreFocus();\n }\n })\n );\n }\n\n /**\n * Remembers the element and the input modality to restore focus to. Both entry paths run\n * through here, so a declarative `<kbq-modal [(kbqVisible)]>` restores focus like a\n * service-created one.\n */\n private captureFocus(): void {\n this.focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n // `FocusMonitor` keeps the last origin private; the modality detector behind it is public\n // and reports the same thing. No modality means the focus was moved by code.\n this.previouslyFocusedElementOrigin = this.inputModalityDetector.mostRecentModality ?? 'program';\n\n this.monitorContainer();\n }\n\n /**\n * Registers the dialog element with `FocusMonitor` so focus inside it carries an origin. The\n * registration is torn down on the first focus event and, failing that, on destroy — a dialog\n * focus never reaches would otherwise stay in the root-provided monitor forever.\n */\n private monitorContainer(): void {\n if (!this.viewInitialized || this.monitoredContainer) return;\n\n this.monitoredContainer = this.modalContainer();\n this.focusMonitorSubscription = this.focusMonitor\n .monitor(this.monitoredContainer, true)\n .pipe(take(1))\n .subscribe(() => {\n if (this.monitoredContainer) {\n this.focusMonitor.stopMonitoring(this.monitoredContainer);\n this.monitoredContainer = null;\n }\n });\n }\n\n private restoreFocus(): void {\n if (this.kbqRestoreFocus() && this.focusedElementBeforeOpen) {\n this.focusMonitor.focusVia(this.focusedElementBeforeOpen, this.previouslyFocusedElementOrigin);\n\n this.focusedElementBeforeOpen = null;\n }\n }\n\n /** Moves focus into the dialog once the shown state has been rendered. */\n private focusOnShow(): void {\n if (!this.viewInitialized) return;\n\n afterNextRender(() => this.focusInitialElement(), { injector: this.injector });\n }\n\n /**\n * Initial focus policy. An explicit `[cdkFocusInitial]`/`autofocus` inside the dialog always\n * wins; otherwise `kbqAutoFocus` decides. The dialog element itself is the last resort, so a\n * modal without a single tabbable control still takes focus off the trigger behind it.\n */\n private focusInitialElement(): void {\n if (this.kbqAutoFocus() === false) return;\n\n const element = this.getElement();\n const { focusTrap } = this.trapFocus();\n\n // `cdkFocusInitial` is a bare attribute the CDK's own `focusInitialElement()` reads, not a\n // directive, and that helper cannot be used here: it falls back to the first tabbable control\n // whenever the marker is absent or its target fails the CDK's visibility check, which is\n // exactly what 'dialog' and 'first-heading' must not do. So the marker is read directly, and\n // it beats `autofocus` instead of losing to whichever comes first in document order.\n const marked =\n element.querySelector<HTMLElement>('[cdkFocusInitial], [cdk-focus-initial]') ??\n // Not part of the CDK's contract, but the predefined buttons carry it and the native\n // attribute does nothing for an element inserted after the page has loaded.\n element.querySelector<HTMLElement>('[autofocus]');\n\n if (marked) {\n marked.focus();\n\n return;\n }\n\n if (this.kbqAutoFocus() === 'first-tabbable' && focusTrap.focusFirstTabbableElement()) return;\n\n if (this.kbqAutoFocus() === 'first-heading') {\n const heading = element.querySelector<HTMLElement>('.kbq-modal-title');\n\n if (heading) {\n heading.tabIndex = -1;\n heading.focus();\n\n return;\n }\n }\n\n (this.modalContainer().nativeElement as HTMLElement).focus();\n }\n\n // Change kbqVisible from inside\n private changeVisibleFromInside(visible: boolean, closeResult?: R): Promise<void> {\n if (this.kbqVisible() === visible) return Promise.resolve();\n\n // Claimed before the write, because `model.set()` reports it through `ngOnChanges` too and\n // the flow is run here, synchronously, where the caller can still await it.\n this.handledVisible = visible;\n this.kbqVisible.set(visible);\n\n return this.handleVisibleStateChange(visible, true, closeResult);\n }\n\n /**\n * Runs the open/close flow for a visibility that arrived through a binding. A value this dialog\n * set itself has already been handled, so it is skipped.\n */\n private syncVisibleState(firstChange: boolean): void {\n const visible = this.kbqVisible();\n\n if (visible === this.handledVisible) return;\n\n this.handledVisible = visible;\n\n // A dialog that starts hidden has nothing to report: running the close path here used to\n // emit `kbqBeforeClose`/`kbqAfterClose` before the dialog had ever been shown.\n if (!firstChange || visible) {\n // Do not trigger animation while initializing\n this.handleVisibleStateChange(visible, !firstChange);\n }\n }\n\n private changeAnimationState(state: AnimationState) {\n this.animationState = state;\n this.animationPhase.set(state);\n this.animateMaskTo(state);\n\n if (this.contentComponentRef) {\n this.contentComponentRef.changeDetectorRef.markForCheck();\n } else {\n this.changeDetector.markForCheck();\n }\n }\n\n /**\n * Runs the enter/leave animation and settles when it is really over: on `animationend`, as soon\n * as the dialog is rendered when animations are disabled (`kbqAnimationsDisabled`), and on a\n * timer when neither arrives.\n */\n private animateTo(isVisible: boolean): Promise<any> {\n this.changeAnimationState(isVisible ? 'enter' : 'leave');\n\n if (this.animationsDisabled) {\n this.changeAnimationState(null);\n\n // There is no animation to wait for, but `open()` still runs before the first change\n // detection on the imperative path. Settling synchronously would report the dialog as\n // open before its view exists, and everything hanging off that — the scrollbar flash,\n // whatever a consumer does in `afterOpen` — would find nothing to act on.\n if (this.viewInitialized) return Promise.resolve(null);\n\n return new Promise((resolve) => afterNextRender(() => resolve(null), { injector: this.injector }));\n }\n\n return new Promise((resolve) => {\n // `open()` runs before the first change detection on the imperative path, so the view\n // may not exist yet; the timer alone drives the promise then.\n const container = this.viewInitialized ? (this.modalContainer().nativeElement as HTMLElement) : null;\n let settled = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n let unlisten: (() => void) | undefined;\n\n const finish = () => {\n if (settled) return;\n\n settled = true;\n\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n\n unlisten?.();\n unlisten = undefined;\n this.changeAnimationState(null);\n resolve(null);\n };\n\n if (container) {\n unlisten = this.renderer.listen(container, 'animationend', (event: AnimationEvent) => {\n // The dialog hosts animated content of its own, and `animationend` bubbles.\n if (event.target === container) finish();\n });\n }\n\n timer = setTimeout(finish, MODAL_ANIMATE_DURATION);\n });\n }\n\n private formatModalButtons(buttons: IModalButtonOptions<T>[]): IModalButtonOptions<T>[] {\n return buttons.map((button) => {\n return {\n ...{\n type: 'default',\n size: 'default',\n autoLoading: true,\n show: true,\n loading: false,\n disabled: false\n },\n ...button\n };\n });\n }\n\n /**\n * Create a component dynamically but not attach to any View\n * (this action will be executed when bodyContainer is ready)\n *\n * @param component Component class\n */\n private createDynamicComponent(component: Type<T>) {\n const childInjector = Injector.create({\n providers: [{ provide: KbqModalRef, useValue: this }],\n parent: this.viewContainer.injector\n });\n\n // `ngOnInit` runs this for `kbqContent` and `kbqComponent` in turn, and only the last one is\n // ever inserted into `bodyContainer`, so an overwritten ref would have nothing to destroy it.\n this.contentComponentRef?.destroy();\n\n this.contentComponentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: childInjector\n });\n\n // Do the first change detection immediately\n // (or we do detection at ngAfterViewInit, multi-changes error will be thrown)\n this.contentComponentRef.changeDetectorRef.detectChanges();\n }\n\n /** Locks the body scroll while any dialog is shown, and releases it once none is. */\n private changeBodyOverflow() {\n if (this.modalControl.visibleModals().length > 0) {\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n } else {\n this.renderer.removeStyle(this.document.body, 'overflow');\n }\n }\n}\n\nfunction isPromise(obj: unknown | void): boolean {\n return (\n !!obj &&\n (typeof obj === 'object' || typeof obj === 'function') &&\n typeof (obj as Promise<unknown>).then === 'function' &&\n typeof (obj as Promise<unknown>).catch === 'function'\n );\n}\n","<!-- Compatible: the <ng-content> can appear only once -->\n<ng-template #tplOriginContent>\n <ng-content />\n</ng-template>\n\n<!-- `aria-modal` only hides the page behind the topmost dialog, so a dialog covered by another one\n is taken out of the accessibility tree and the tab order explicitly. -->\n<div [attr.inert]=\"inert ? '' : null\">\n @if (isMaskEnabled()) {\n <div\n class=\"kbq-modal-mask {{ maskAnimationClasses() }}\"\n [class.kbq-modal-mask-hidden]=\"hidden\"\n [style]=\"kbqMaskStyle()\"\n ></div>\n }\n\n <div\n class=\"kbq-modal-wrap {{ kbqWrapClassName() }}\"\n kbqScrollbarViewport\n tabindex=\"-1\"\n [style.display]=\"hidden ? 'none' : ''\"\n (mousedown)=\"onClickMask($event)\"\n >\n <div\n #modalContainer\n cdkTrapFocus\n role=\"dialog\"\n tabindex=\"-1\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-modal]=\"true\"\n [class]=\"containerClasses()\"\n [class.kbq-modal_no-footer]=\"!hasFooter\"\n [style]=\"kbqStyle()\"\n [style.width]=\"kbqWidth() | toCssUnit\"\n >\n <div class=\"kbq-modal-content\">\n @switch (kbqModalType()) {\n @case ('default') {\n <ng-container [ngTemplateOutlet]=\"tplContentDefault\" />\n }\n @case ('confirm') {\n <ng-container [ngTemplateOutlet]=\"tplContentConfirm\" />\n }\n @case ('custom') {\n <ng-container [ngTemplateOutlet]=\"tplContentCustom\" />\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplContentCustom>\n <ng-container #bodyContainer />\n</ng-template>\n\n<!-- The body of a predefined layout: the same three forms `kbqContent` can take, and `<ng-content>`\n when it takes none. A component body is inserted into `#bodyContainer` from `ngAfterViewInit`. -->\n<ng-template #tplContentBody>\n <ng-container #bodyContainer>\n @if (contentKind() !== 'component') {\n @switch (contentKind()) {\n @case ('template') {\n <ng-container [ngTemplateOutlet]=\"$any(kbqContent())\" />\n }\n @case ('string') {\n <div [innerHTML]=\"kbqContent()\"></div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n }\n }\n }\n </ng-container>\n</ng-template>\n\n<!-- [Predefined] Default Modal Content -->\n<ng-template #tplContentDefault>\n @if (kbqTitle() || kbqCaption()) {\n <div class=\"kbq-modal-header\" [kbqOverflowShadowTop]=\"modalBodyOverflow\">\n <div class=\"kbq-modal-header-content\">\n @if (kbqTitle()) {\n <div class=\"kbq-modal-title\" kbq-title [attr.id]=\"titleId\">\n @switch (titleKind()) {\n @case ('template') {\n <ng-container [ngTemplateOutlet]=\"$any(kbqTitle())\" />\n }\n @case ('string') {\n <div [innerHTML]=\"kbqTitle()\"></div>\n }\n }\n </div>\n }\n @if (kbqCaption()) {\n <div class=\"kbq-modal-caption\" kbq-title [attr.id]=\"captionId\">\n @switch (captionKind()) {\n @case ('template') {\n <ng-container [ngTemplateOutlet]=\"$any(kbqCaption())\" />\n }\n @case ('string') {\n <div [innerHTML]=\"kbqCaption()\"></div>\n }\n }\n </div>\n }\n </div>\n @if (kbqClosable()) {\n <button\n kbq-button\n type=\"button\"\n class=\"kbq-modal-close kbq-button_transparent\"\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"'contrast'\"\n (click)=\"onClickCloseBtn()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n }\n </div>\n }\n <div\n #modalBodyOverflow=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n kbqScrollbarViewport\n class=\"kbq-modal-body\"\n [style]=\"kbqBodyStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"tplContentBody\" />\n </div>\n @if (hasFooter) {\n <div class=\"kbq-modal-footer\" [kbqOverflowShadowBottom]=\"modalBodyOverflow\">\n @switch (footerKind()) {\n @case ('template') {\n <ng-container [ngTemplateOutlet]=\"$any(footer())\" />\n }\n @case ('string') {\n <div [innerHTML]=\"footer()\"></div>\n }\n @case ('buttons') {\n @for (button of $any(footer()); track button) {\n @if (getButtonCallableProp(button, 'show')) {\n <button\n kbq-button\n [attr.autofocus]=\"button.autoFocus ? '' : null\"\n [attr.kbq-modal-main-action]=\"button.kbqModalMainAction ? '' : null\"\n [class.kbq-progress]=\"getButtonCallableProp(button, 'loading')\"\n [color]=\"button.type\"\n [disabled]=\"!!getButtonCallableProp(button, 'disabled')\"\n (click)=\"onButtonClick(button)\"\n >\n {{ button.label }}\n </button>\n }\n }\n }\n @default {\n @if (kbqOkText()) {\n <button\n kbq-button\n [attr.autofocus]=\"true\"\n [class.kbq-progress]=\"loading('ok')\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClickOkCancel('ok')\"\n >\n {{ kbqOkText() }}\n </button>\n }\n @if (kbqCancelText()) {\n <button kbq-button [class.kbq-progress]=\"loading('cancel')\" (click)=\"onClickOkCancel('cancel')\">\n {{ kbqCancelText() }}\n </button>\n }\n }\n }\n </div>\n }\n</ng-template>\n<!-- /[Predefined] Default Modal Content -->\n\n<!-- [Predefined] Confirm Modal Content -->\n<ng-template #tplContentConfirm>\n <div\n #confirmBodyOverflow=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n kbqScrollbarViewport\n class=\"kbq-modal-body\"\n [style]=\"kbqBodyStyle()\"\n >\n <ng-container [ngTemplateOutlet]=\"tplContentBody\" />\n </div>\n @if (kbqOkText() || kbqCancelText()) {\n <div class=\"kbq-confirm-footer\" [kbqOverflowShadowBottom]=\"confirmBodyOverflow\">\n @if (kbqOkText()) {\n <button\n kbq-button\n [attr.autofocus]=\"true\"\n [class.kbq-progress]=\"loading('ok')\"\n [color]=\"kbqOkType()\"\n (click)=\"onClickOkCancel('ok')\"\n >\n {{ kbqOkText() }}\n </button>\n }\n @if (kbqCancelText()) {\n <button kbq-button [class.kbq-progress]=\"loading('cancel')\" (click)=\"onClickOkCancel('cancel')\">\n {{ kbqCancelText() }}\n </button>\n }\n </div>\n }\n</ng-template>\n<!-- /[Predefined] Confirm Modal Content -->\n","import { ChangeDetectionStrategy, Component, Directive, effect, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n KBQ_A11Y_LOCALE_CONFIGURATION,\n KbqLocaleOverridesDirective,\n KbqOverflowShadowContainer\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqScrollbarViewport } from '@koobiq/components/scrollbar';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KBQ_MODAL } from './modal.type';\n\n@Component({\n selector: `[kbq-modal-title], kbq-modal-title, [kbqModalTitle]`,\n imports: [\n KbqIconModule,\n KbqButtonModule,\n KbqTitleDirective\n ],\n template: `\n <div class=\"kbq-modal-header-content\">\n <div class=\"kbq-modal-title\" kbq-title [attr.id]=\"modal.titleId\">\n <ng-content />\n </div>\n\n <ng-content select=\"kbq-modal-caption, [kbq-modal-caption], [kbqModalCaption]\" />\n </div>\n\n <!-- Outside the two-line clamp of the title, so actions next to the heading do not need\n to pierce encapsulation to escape it. -->\n <ng-content select=\"[kbqModalTitleActions]\" />\n\n @if (modal.kbqClosable()) {\n <button\n class=\"kbq-modal-close kbq-button_transparent\"\n type=\"button\"\n kbq-button\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"'contrast'\"\n (click)=\"modal.onClickCloseBtn()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"modal.componentColors.Contrast\"></i>\n </button>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-modal-header',\n '[style.box-shadow]': 'modal.bodyOverflow().top ? \"var(--kbq-shadow-overflow-normal-bottom)\" : null'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ]\n})\nexport class KbqModalTitle {\n protected modal = inject(KBQ_MODAL);\n\n /** Accessible name for the icon-only close button. */\n protected readonly a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'a11y',\n KBQ_A11Y_LOCALE_CONFIGURATION\n );\n\n constructor() {\n // Lets the dialog point `aria-labelledby` at this heading instead of going unnamed.\n this.modal.registerTitle();\n }\n}\n\n/**\n * Caption of a manually composed modal (`kbqComponent`). Projected into the header rendered by\n * `KbqModalTitle`, below the title, and clamped to two lines. The resulting markup matches the\n * header of a modal created via `KbqModalService.create`.\n */\n@Component({\n selector: `[kbq-modal-caption], kbq-modal-caption, [kbqModalCaption]`,\n template: `\n <ng-content />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-modal-caption',\n '[attr.id]': 'modal.captionId'\n },\n hostDirectives: [KbqTitleDirective]\n})\nexport class KbqModalCaption {\n protected readonly modal = inject(KBQ_MODAL);\n\n constructor() {\n // Lets the dialog point `aria-describedby` at this caption; without it the composed path\n // renders a description no screen reader is told about.\n this.modal.registerCaption();\n }\n}\n\n/**\n * Scrollable body of a manually composed modal (`kbqComponent`). Publishes its scroll-shadow\n * state onto the modal instance so a sibling `KbqModalTitle`/`KbqModalFooter` can render the\n * matching shadow, since they have no direct template reference to this element.\n */\n@Directive({\n selector: `[kbq-modal-body], kbq-modal-body, [kbqModalBody]`,\n host: {\n class: 'kbq-modal-body'\n },\n hostDirectives: [KbqOverflowShadowContainer, KbqScrollbarViewport]\n})\nexport class KbqModalBody {\n private readonly modal = inject(KBQ_MODAL);\n private readonly overflowContainer = inject(KbqOverflowShadowContainer);\n private readonly scrollbarViewport = inject(KbqScrollbarViewport);\n\n constructor() {\n effect(() => this.modal.setBodyOverflow(this.overflowContainer.overflow()));\n\n this.modal.afterOpen.pipe(takeUntilDestroyed()).subscribe(() => this.scrollbarViewport.flashScrollIndicators());\n }\n}\n\n@Directive({\n selector: `[kbq-modal-footer], kbq-modal-footer, [kbqModalFooter]`,\n host: {\n class: 'kbq-modal-footer',\n '[style.box-shadow]': 'modal.bodyOverflow().bottom ? \"var(--kbq-shadow-overflow-normal-top)\" : null'\n }\n})\nexport class KbqModalFooter {\n protected modal = inject(KBQ_MODAL);\n\n constructor() {\n // Without this the dialog cannot tell a composed footer from no footer at all, and would\n // add the no-footer bottom padding underneath one.\n this.modal.registerFooter();\n }\n}\n\n@Directive({\n selector: `[kbq-modal-main-action]`\n})\nexport class KbqModalMainAction {}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, inject, Injectable, InjectionToken, Injector, isDevMode } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { ConfirmType, IModalOptionsForService, KBQ_MODAL_OPTIONS, ModalOptions } from './modal.type';\n\n/** Injection token that can be used to access the data that was passed in to a modal. */\nexport const KBQ_MODAL_DATA = new InjectionToken<unknown>('KbqModalData');\n\n/**\n * A builder used for managing service creating modals\n *\n * @docs-private\n */\nexport class ModalBuilderForService {\n // Modal ComponentRef, \"null\" means it has been destroyed\n private modalRef: ComponentRef<KbqModalComponent> | null;\n private overlayRef: OverlayRef;\n private detachFromOpener?: () => void;\n\n constructor(\n private readonly overlay: Overlay,\n readonly options: IModalOptionsForService = {},\n private readonly injector: Injector,\n /** Lifetime of the caller. The dialog is destroyed with it. */\n openerDestroyRef: DestroyRef | null = null\n ) {\n this.createModal();\n this.mirrorEmitters(options);\n\n // Nobody owns the builder, so without this the dialog outlives whatever opened it: it stays\n // painted over the next view, `afterClose` never emits, and the body scroll lock is kept.\n this.detachFromOpener = openerDestroyRef?.onDestroy(() => this.destroyModal());\n\n this.modalRef!.instance.open();\n this.modalRef!.instance.kbqAfterClose.subscribe(() => this.destroyModal());\n }\n\n getInstance(): KbqModalComponent | null {\n return this.modalRef && this.modalRef.instance;\n }\n\n destroyModal(): void {\n if (this.modalRef) {\n this.detachFromOpener?.();\n this.detachFromOpener = undefined;\n this.overlayRef.dispose();\n this.modalRef = null;\n }\n }\n\n /**\n * Mirrors the caller's emitters onto the dialog's own outputs. The option values themselves\n * reach the dialog through `KBQ_MODAL_OPTIONS`, as the initial values of its inputs — a dialog\n * created by the service has no template bindings to carry them.\n */\n private mirrorEmitters(options: ModalOptions): void {\n if (!this.modalRef) return;\n\n const { kbqAfterOpen, kbqAfterClose, kbqOnOk, kbqOnCancel } = options;\n\n // Mirrored, never substituted, so `afterOpen`/`afterClose` on the returned ref keep working\n // and the overlay teardown does not hang off an emitter the caller owns and can complete.\n if (kbqAfterOpen) {\n this.modalRef.instance.kbqAfterOpen.subscribe(() => kbqAfterOpen.emit());\n }\n\n if (kbqAfterClose) {\n this.modalRef.instance.kbqAfterClose.subscribe((result) => kbqAfterClose.emit(result));\n }\n\n if (kbqOnOk) {\n this.modalRef.instance.kbqOnOk.subscribe((instance) => kbqOnOk.emit(instance));\n }\n\n if (kbqOnCancel) {\n this.modalRef.instance.kbqOnCancel.subscribe((instance) => kbqOnCancel.emit(instance));\n }\n }\n\n // Create component to ApplicationRef\n private createModal(): void {\n // Second line of defence behind the `DestroyRef` above: a router navigation disposes the\n // overlay even when the dialog was opened from a longer-lived injector.\n this.overlayRef = this.overlay.create(new OverlayConfig({ disposeOnNavigation: true }));\n this.overlayRef.hostElement.classList.add('kbq-modal-overlay');\n\n this.modalRef = this.overlayRef.attach(new ComponentPortal(KbqModalComponent, undefined, this.injector));\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqModalService {\n private readonly overlay = inject(Overlay);\n private readonly modalControl = inject(KbqModalControlService);\n private injector = inject(Injector);\n\n // Track of the current close modals (we assume invisible is close this time)\n get openModals(): KbqModalRef[] {\n return this.modalControl.openModals;\n }\n\n get afterAllClose(): Observable<void> {\n return this.modalControl.afterAllClose.asObservable();\n }\n\n // Closes all of the currently-open dialogs\n closeAll(): void {\n this.modalControl.closeAll();\n }\n\n /**\n * Opens a dialog. Its lifetime is bound to `options.injector` — the caller's injector when one\n * is passed, the root environment injector otherwise — so destroying the opener closes it.\n */\n create<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n const parentInjector = options.injector || this.injector;\n const injector = Injector.create({\n parent: parentInjector,\n providers: [\n { provide: KBQ_MODAL_DATA, useValue: options.data },\n // The dialog reads these as the initial values of its inputs. A service-created\n // dialog has no template bindings, so that is the only way in.\n { provide: KBQ_MODAL_OPTIONS, useValue: options }\n ]\n });\n\n // Read from the caller's injector, not the derived one: `Injector.create` provides a\n // `DestroyRef` of its own, and nothing ever destroys that.\n const openerDestroyRef = parentInjector.get(DestroyRef, null);\n\n return new ModalBuilderForService(this.overlay, options, injector, openerDestroyRef).getInstance()!;\n }\n\n confirm<C, R = unknown>(\n options: IModalOptionsForService<C> = {},\n confirmType: ConfirmType = 'confirm'\n ): KbqModalRef<C, R> {\n if ('kbqFooter' in options && isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn(`The Confirm-Modal doesn't support \"kbqFooter\", this property will be ignored.`);\n }\n\n options.kbqModalType = 'confirm';\n options.kbqClassName = `kbq-confirm kbq-confirm-${confirmType} ${options.kbqClassName || ''}`;\n\n return this.create<C, R>(options);\n }\n\n open<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n options.kbqModalType = 'custom';\n\n return this.create<C, R>(options);\n }\n\n success<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n return this.confirm<C, R>(options, 'success');\n }\n\n /** Opens a confirm dialog styled for a destructive action — the `warn` confirm type. */\n delete<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n return this.confirm<C, R>(options, 'warn');\n }\n}\n","import { A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalComponent } from './modal.component';\nimport { KbqModalBody, KbqModalCaption, KbqModalFooter, KbqModalMainAction, KbqModalTitle } from './modal.directive';\nimport { KbqModalService } from './modal.service';\n\n@NgModule({\n imports: [\n OverlayModule,\n A11yModule,\n KbqButtonModule,\n KbqIconModule,\n KbqTitleModule,\n NgTemplateOutlet,\n KbqModalComponent,\n KbqModalTitle,\n KbqModalCaption,\n KbqModalBody,\n KbqModalFooter,\n CssUnitPipe,\n KbqModalMainAction\n ],\n providers: [\n KbqModalControlService,\n KbqModalService,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }\n ],\n exports: [\n KbqModalComponent,\n KbqModalTitle,\n KbqModalCaption,\n KbqModalBody,\n KbqModalFooter,\n KbqModalMainAction\n ]\n})\nexport class KbqModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3"],"mappings":"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"}
|