@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-inline-edit.mjs","sources":["../../../packages/components/inline-edit/inline-edit.ts","../../../packages/components/inline-edit/inline-edit.html","../../../packages/components/inline-edit/module.ts","../../../packages/components/inline-edit/koobiq-components-inline-edit.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport { CdkMonitorFocus, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { CdkConnectedOverlay, Overlay, ScrollDispatcher, ScrollStrategy } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n InjectionToken,\n input,\n NgZone,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n viewChild,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n isElement,\n KBQ_CONNECTED_OVERLAY_ORIGIN,\n KBQ_WINDOW,\n KbqAnimationCurves,\n KbqAnimationDurations,\n KbqComponentColors,\n KbqConnectedOverlayOriginProvider,\n kbqInjectA11yLocaleConfiguration,\n PopUpPlacements,\n runCompareWith\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField, KbqLabel } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqSelect } from '@koobiq/components/select';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { concat, merge, Observable, of, skip, timer } from 'rxjs';\nimport { catchError, concatMap, defaultIfEmpty, ignoreElements, map, take, takeUntil, takeWhile } from 'rxjs/operators';\n\nconst KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION = trigger('panelAnimation', [\n transition(':enter', [\n style({ transform: 'translateY(100%)', opacity: 0 }),\n animate(\n `${KbqAnimationDurations.Instant} ${KbqAnimationCurves.DecelerationCurve}`,\n style({ transform: 'translateY(0%)', opacity: 1 })\n )\n ])\n]);\n\nconst baseClass = 'kbq-inline-edit';\n\n/**\n * Fallback delay before showing the validation tooltip if `scrollend` never fires — e.g. the browser doesn't\n * support it, or nothing needed to scroll.\n */\nconst VALIDATION_TOOLTIP_SCROLL_TIMEOUT = 800;\n\n/** Controls in edit mode that Enter activates on their own, so the default `canSaveOnEnter` leaves them alone. */\nconst ENTER_ACTIVATED_SELECTORS =\n 'button,input[type=\"button\"],input[type=\"submit\"],input[type=\"reset\"],[role=\"button\"]';\n\n/** Delay before the save progress state appears, so a fast response causes no flicker. */\nexport const kbqInlineEditSaveProgressDelay = 100;\n\n/** Minimum time the save progress state stays once it has appeared. */\nexport const kbqInlineEditSaveProgressMinimumDuration = 300;\n\nexport type KbqInlineEditMode = 'view' | 'edit';\n\n/**\n * Saves the edited value, e.g. sends it to a server. Only the first emission counts, and the observable must emit\n * or complete: destroying the row does not cancel it, so one that never settles keeps the row in memory.\n *\n * Called without a receiver, so bind an arrow function rather than a method that relies on `this`.\n */\nexport type KbqInlineEditSaveHandler = () => Observable<unknown>;\n\n/** State of the save request started by `saveHandler`. `progress` is `pending` past the indicator delay. */\nexport type KbqInlineEditSaveStatus = 'idle' | 'pending' | 'progress' | 'error';\n\n/** Recovery a failed-save notification can offer: retry, edit again, discard the unsaved value. */\nexport interface KbqInlineEditSaveRecovery {\n retrySave(): void;\n toggleMode(): void;\n rollback(): void;\n}\n\n/** Failed save, reported through `saveError` and `KBQ_INLINE_EDIT_SAVE_ERROR_HANDLER`. */\nexport interface KbqInlineEditSaveErrorContext<E = any> {\n /** Parameterise the interface to type this. */\n readonly error: E;\n /** Inline edit whose save failed. */\n readonly inlineEdit: KbqInlineEditSaveRecovery;\n}\n\n/** Reaction to a failed save, e.g. opening a toast. */\nexport type KbqInlineEditSaveErrorHandler = (context: KbqInlineEditSaveErrorContext) => void;\n\n/** Reports every failed save the same way across the application. Declare it in the root injector. */\nexport const KBQ_INLINE_EDIT_SAVE_ERROR_HANDLER = new InjectionToken<KbqInlineEditSaveErrorHandler>(\n 'KbqInlineEditSaveErrorHandler'\n);\n\n/** @docs-private */\n@Directive({\n selector: '[kbqFocusRegionItem]',\n host: {\n '(focusin)': 'isFocused = true',\n '(keydown.tab)': 'onTabOut($event)',\n '(keydown.shift.tab)': 'onTabOut($event)'\n },\n exportAs: 'kbqFocusRegionItem'\n})\nexport class KbqFocusRegionItem {\n readonly tabOut = output<KeyboardEvent>();\n\n protected isFocused = false;\n\n protected onTabOut(event: KeyboardEvent) {\n if (this.isFocused) {\n this.tabOut.emit(event);\n }\n\n this.isFocused = !this.isFocused;\n }\n}\n\n/** Directive for easy using styles of inline edit placeholder publicly. */\n@Directive({\n selector: '[kbqInlineEditPlaceholder]',\n host: {\n class: 'kbq-inline-edit__placeholder'\n },\n exportAs: 'kbqInlineEditPlaceholder'\n})\nexport class KbqInlineEditPlaceholder {}\n\n/**\n * This directive enhances element acting as dropdown trigger,\n * visually indicating the active state with the `kbq-active` class.\n * Also, it prevents click/keydown events from being propagated to disable mode toggling of parent component.\n */\n@Directive({\n selector: '[kbqInlineEditMenu]',\n host: {\n role: 'button',\n class: 'kbq-inline-edit__menu',\n '[class.kbq-active]': 'dropdownTrigger?.opened',\n '(click)': '$event.stopPropagation()',\n '(keydown.enter)': '$event.stopPropagation()',\n '(keydown.space)': '$event.stopPropagation()'\n },\n exportAs: 'kbqInlineEditMenu'\n})\nexport class KbqInlineEditMenu {\n /** @docs-private */\n protected readonly dropdownTrigger = inject(KbqDropdownTrigger, { optional: true });\n}\n\n/**\n * Customizable component that enables edit-in-place logic for specified control and it's view.\n * This component is projecting edit/view mode templates and adds keyboard/pointer handlers.\n * Edit mode opens in a positioned overlay that matches the view mode width or can be customized.\n */\n@Component({\n selector: 'kbq-inline-edit',\n imports: [\n CdkConnectedOverlay,\n KbqButtonModule,\n KbqIcon,\n KbqTooltipTrigger,\n KbqFocusRegionItem,\n CdkTrapFocus\n ],\n templateUrl: './inline-edit.html',\n styleUrls: ['./inline-edit.scss', './inline-edit-tokens.scss'],\n providers: [{ provide: KBQ_CONNECTED_OVERLAY_ORIGIN, useExisting: forwardRef(() => KbqInlineEdit) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: baseClass,\n '[attr.tabindex]': 'tabIndex()',\n '[class]': 'className()',\n '[class.kbq-inline-edit_with-label]': '!!label()',\n '[class.kbq-inline-edit_with-menu]': '!!menu()',\n '[class.kbq-inline-edit_disabled]': 'disabled()',\n '[class.kbq-inline-edit_anchor-focused]': 'anchorFocused()',\n '[class.kbq-inline-edit_select]': 'isSingleSelect()',\n '[class.kbq-inline-edit_save-error]': 'saveStatus() === \"error\"',\n // The background save is reported on the row itself, which by then is back in view mode.\n '[class.kbq-progress]': 'saveStatus() === \"progress\"',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onClick($event)',\n '(keydown.space)': 'onClick($event)'\n },\n hostDirectives: [CdkMonitorFocus],\n animations: [KBQ_INLINE_EDIT_ACTION_BUTTONS_ANIMATION],\n exportAs: 'kbqInlineEdit'\n})\nexport class KbqInlineEdit implements KbqConnectedOverlayOriginProvider, KbqInlineEditSaveRecovery {\n /** Texts of the save status announcements. */\n protected readonly a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();\n\n private readonly overlay = inject(Overlay);\n private readonly document = inject(DOCUMENT);\n private readonly window = inject(KBQ_WINDOW);\n private readonly resizeObserver = inject(SharedResizeObserver);\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n private readonly scrollDispatcher = inject(ScrollDispatcher);\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The validation tooltip is anchored inside the edit-mode overlay — an overlay inside another\n * overlay. Its default `close()` scroll strategy would close it the moment either overlay's\n * origin scrolls (including the programmatic scroll `showValidationTooltip()` uses to bring an\n * invalid control into view), so it's overridden to `reposition()` here — passed directly as a\n * per-instance override to this tooltip's `[kbqTooltipScrollStrategy]` input, rather than a DI\n * override, so it doesn't leak into any `kbqTooltip` in projected content.\n * @docs-private\n */\n protected readonly validationTooltipScrollStrategy = (): ScrollStrategy =>\n this.overlay.scrollStrategies.reposition();\n\n /**\n * Whether to show save/cancel action buttons in edit mode.\n * @default false\n */\n readonly showActions = input(false, { transform: booleanAttribute });\n /**\n * Whether to automatically show validation error tooltips on save attempts.\n * @default true\n */\n readonly showTooltipOnError = input(true, { transform: booleanAttribute });\n /** Custom validation tooltip message. */\n readonly validationTooltip = input<string | TemplateRef<any>>();\n /**\n * Disables the component, preventing interaction and mode switching. Only allows menu dropdown.\n * @default false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Custom width in pixels for the edit mode overlay. Auto-calculated if not set. */\n readonly editModeWidth = input(undefined, { transform: numberAttribute });\n /** User-defined tooltip placement */\n readonly tooltipPlacement = input<PopUpPlacements>();\n /** Classes to be passed to the inline edit panel. */\n readonly overlayPanelClass = input<string | string[]>('');\n /** Handler function to retrieve the current value */\n readonly getValueHandler = input<() => unknown>();\n /** Handler function to update the value */\n readonly setValueHandler = input<(value: any) => void>();\n /**\n * Whether the value still equals the one the editor opened with, in which case `saveHandler` is not called.\n * The default suits text and numbers; bind your own for arrays and objects, or `null` to send every time.\n * A failed save is always retried, however the values compare.\n */\n readonly compareWith = input<((a: any, b: any) => boolean) | null>((a, b) => a === b);\n /**\n * Saves a valid value in the background: edit mode closes right away and view mode reports how the request\n * went. Without it, a valid value is saved immediately.\n */\n readonly saveHandler = input<KbqInlineEditSaveHandler>();\n /**\n * Reaction to a failed save for this inline edit alone. Defaults to `KBQ_INLINE_EDIT_SAVE_ERROR_HANDLER`;\n * bind `null` to leave it without one.\n */\n readonly saveErrorHandler = input<KbqInlineEditSaveErrorHandler | null>(\n inject(KBQ_INLINE_EDIT_SAVE_ERROR_HANDLER, { optional: true })\n );\n /** Customizable function that checks if saving on enter available. */\n readonly canSaveOnEnter = input((event: KeyboardEvent): boolean => {\n // A control that runs its own action on Enter would otherwise fire it and save at the same time.\n if (isElement(event.target) && event.target.closest(ENTER_ACTIVATED_SELECTORS)) return false;\n\n return hasModifierKey(event, 'ctrlKey', 'metaKey') || !(event.target instanceof HTMLTextAreaElement);\n });\n\n /**\n * CSS selectors for elements in view mode that should handle clicks instead of opening edit mode.\n * Override to replace or extend the default list.\n *\n * @example\n * `<kbq-inline-edit [interactiveSelectors]=\"['a', 'kbq-tag', 'button']\">`\n */\n readonly interactiveSelectors = input<string[]>(['a', 'kbq-tag']);\n\n /** Emitted when the inline edit is saved successfully. */\n protected readonly saved = output();\n /** Emitted when the inline edit is canceled and changes are discarded. */\n protected readonly canceled = output();\n /** Emitted when a `saveHandler` request fails. Silent once the row is destroyed; `saveErrorHandler` is not. */\n protected readonly saveError = output<KbqInlineEditSaveErrorContext>();\n /** Emitted when mode switched to edit/view */\n protected readonly modeChange = output<KbqInlineEditMode>();\n\n /** @docs-private */\n protected readonly menu = contentChild(KbqInlineEditMenu);\n /** @docs-private */\n protected readonly label = contentChild(KbqLabel);\n\n /** @docs-private */\n protected readonly formFieldRef = computed<KbqFormField | undefined>(() => this.formFieldRefList()[0]);\n /** @docs-private */\n protected readonly formFieldRefList = contentChildren(KbqFormField, { descendants: true });\n\n /** @docs-private */\n protected readonly selectRef = contentChild(KbqSelect, { descendants: true });\n /**\n * Whether edit mode contains a single-value select. When true, edit mode shows only the\n * dropdown panel instead of a bordered field - see the \"Select-style editor\" example.\n * @docs-private\n */\n protected readonly isSingleSelect = computed(() => {\n const select = this.selectRef();\n\n return !!select && !select.multiple && !select.multiline();\n });\n\n /** @docs-private */\n protected overlayOrigin: HTMLElement = this.elementRef.nativeElement;\n /** @docs-private */\n protected readonly tooltipTrigger = viewChild.required(KbqTooltipTrigger);\n /** @docs-private */\n protected readonly viewContainer = viewChild.required<ElementRef<HTMLElement>>('viewContainer');\n /** @docs-private */\n protected readonly overlayDir = viewChild.required(CdkConnectedOverlay);\n /** @docs-private */\n protected readonly regionItems = viewChildren(KbqFocusRegionItem);\n\n /** @docs-private */\n protected readonly mode = signal<KbqInlineEditMode>('view');\n /** @docs-private */\n protected readonly overlayWidth = signal<number | string>('');\n /** @docs-private */\n protected readonly scrollStrategy = signal<ScrollStrategy>(this.overlay.scrollStrategies.reposition());\n /** @docs-private */\n readonly modeAsReadonly = computed(() => this.mode());\n\n private readonly saveStatusSource = signal<KbqInlineEditSaveStatus>('idle');\n /** State of the background save started by `saveHandler`. */\n readonly saveStatus = this.saveStatusSource.asReadonly();\n /** @docs-private */\n protected readonly isSaving = computed(() => this.saveStatus() === 'pending' || this.saveStatus() === 'progress');\n /**\n * Both save states are otherwise conveyed by colour alone. `aria-busy` cannot carry the first one: it is set\n * on the row, which contains this region, and that tells assistive tech to hold the announcement back.\n * @docs-private\n */\n protected readonly saveStatusMessage = computed(() => {\n const a11y = this.a11yLocaleConfiguration();\n\n if (this.saveStatus() === 'progress') return a11y.saving;\n\n return this.saveStatus() === 'error' ? a11y.saveFailed : '';\n });\n\n /** @docs-private */\n protected readonly className = computed(() => `${baseClass}_${this.mode()}`);\n /** @docs-private */\n protected readonly isEditMode = computed(() => this.mode() === 'edit');\n /** @docs-private */\n protected readonly hasInteractiveContent = signal(false);\n /** @docs-private */\n protected readonly anchorFocused = signal(false);\n /** @docs-private */\n protected readonly tabIndex = computed(() => {\n // Saving is deliberately absent: like `kbq-dropdown-item`, a row in progress keeps its place in the tab\n // order and only has its action blocked — leaving the tab order is what `disabled` means.\n if (this.isEditMode() || this.disabled() || this.hasInteractiveContent()) return -1;\n\n return 0;\n });\n\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n private initialValue: unknown;\n\n /** Value sent by the in-flight `saveHandler` request, which becomes `lastSavedValue` once it succeeds. */\n private submittedValue: unknown;\n\n /** Last value the server accepted — what `rollback()` restores after a failed save. */\n private lastSavedValue: unknown;\n\n private destroyed = false;\n\n /** Handle for an in-flight `showValidationTooltip()` scroll/settle request, if any. */\n private validationTooltipScrollHandle: { cancel: () => void } | null = null;\n\n constructor() {\n // The save outlives the row, so its outputs have to fall silent with the view they belong to.\n this.destroyRef.onDestroy(() => (this.destroyed = true));\n\n toObservable(this.mode)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe((currentMode) => this.modeChange.emit(currentMode));\n\n effect(() => {\n this.overlayOrigin = this.label() ? this.viewContainer().nativeElement : this.elementRef.nativeElement;\n });\n\n effect((onCleanup) => {\n const selectors = this.interactiveSelectors();\n\n const timeoutId = setTimeout(() => this.detectInteractiveContent(selectors));\n\n onCleanup(() => clearTimeout(timeoutId));\n });\n }\n\n /** Manually switch mode. Does nothing while a `saveHandler` request is in flight. */\n toggleMode(): void {\n if (this.isSaving()) return;\n\n this.mode.update((mode) => (mode === 'view' ? 'edit' : 'view'));\n }\n\n /**\n * Implements `KbqConnectedOverlayOriginProvider`, letting a nested `KbqFormField`'s control\n * anchor its overlay to this element instead of the form-field's own container.\n * When no override is needed, the form-field falls back to its default.\n * @docs-private\n */\n getConnectedOverlayOrigin(): ElementRef | undefined {\n return this.isSingleSelect() ? this.elementRef : undefined;\n }\n\n /** Saves the current value, running the same validation as a normal save. */\n commit(): void {\n this.save();\n }\n\n /** Repeats the request for a value the server rejected. Does nothing unless the last save failed. */\n retrySave(): void {\n const saveHandler = this.saveHandler();\n\n if (this.saveStatus() !== 'error' || !saveHandler) return;\n\n this.startSave(saveHandler());\n }\n\n /** Discards the value the server rejected, restoring the last saved one and closing the editor. */\n rollback(): void {\n if (this.saveStatus() !== 'error') return;\n\n this.setValue(this.lastSavedValue);\n this.initialValue = this.lastSavedValue;\n this.saveStatusSource.set('idle');\n\n if (this.isEditMode()) {\n this.toggleMode();\n }\n }\n\n /** @docs-private */\n protected onClick(event: Event): void {\n // Editing is closed while the request is in flight: reopening it would let the user edit a value that is\n // already on its way to the server.\n if (this.disabled() || this.isEditMode() || this.isSaving() || this.isInteractiveElement(event.target)) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.toggleMode();\n }\n\n /** @docs-private */\n protected onAttach(): void {\n this.setOverlayWidth();\n this.setOverlayKeydownListener();\n\n this.overlayDir()!\n .overlayRef.detachments()\n .pipe(take(1))\n .subscribe(() => this.validationTooltipScrollHandle?.cancel());\n\n const formFieldRefList = this.formFieldRefList();\n\n merge(...formFieldRefList.map((ref) => ref.control().stateChanges))\n .pipe(takeUntil(this.overlayDir()!.overlayRef.detachments()))\n .subscribe(() => {\n if (!this.isInvalid()) {\n const tooltipTrigger = this.tooltipTrigger();\n\n if (tooltipTrigger?.isOpen) {\n tooltipTrigger.hide();\n }\n }\n });\n\n setTimeout(() => {\n // Captured before the form-field checks below: an editor built on `setValueHandler` alone has no\n // `KbqFormField`, and `cancel()` and `rollback()` still have to restore something other than undefined.\n this.initialValue = this.getValue();\n\n // Opening the editor over a value the server rejected must not turn that value into the one\n // `rollback()` restores.\n if (this.saveStatus() !== 'error') {\n this.lastSavedValue = this.initialValue;\n }\n\n const formFieldRef = this.formFieldRef();\n\n if (!formFieldRef) return;\n\n formFieldRef.focus();\n\n const input = this.getInputNativeElement();\n\n if (this.initialValue) input?.select();\n\n this.openPanel(formFieldRef);\n }, 0);\n }\n\n /** @docs-private */\n protected save($event?: Event): void {\n // Guards against a control triggering both its own commit() and the overlay's outside-click handler for the\n // same interaction — without this, the second call would toggle back into edit mode.\n if (!this.isEditMode()) return;\n\n if (this.isInvalid()) {\n $event?.stopPropagation();\n\n if (this.showTooltipOnError() && this.validationTooltip()) {\n this.showValidationTooltip();\n }\n\n return;\n }\n\n const saveHandler = this.saveHandler();\n\n // Nothing to send: the value is still the one the editor opened with. Only the request is skipped —\n // without a handler `saved` keeps meaning \"the user committed\".\n if (saveHandler && this.isUnchanged()) {\n this.toggleMode();\n\n return;\n }\n\n // Started before the mode switch: a handler that throws is a bug in the application, and folding that into\n // the save result would report it as the server's refusal.\n const request$ = saveHandler?.();\n\n // Client-side validation has passed, so editing is over either way: with a handler the request runs in the\n // background, and view mode reports how it went.\n this.toggleMode();\n\n if (request$) {\n this.startSave(request$);\n\n return;\n }\n\n this.saved.emit();\n }\n\n /** Runs `saveHandler` once and maps its lifecycle onto `saveStatus`, holding the progress state steady. */\n private startSave(request$: Observable<unknown>): void {\n this.submittedValue = this.getValue();\n this.saveStatusSource.set('pending');\n\n const success = { status: 'success' } as const;\n const result$ = request$.pipe(\n take(1),\n map(() => success),\n defaultIfEmpty(success),\n catchError((error: unknown) => of({ status: 'error', error } as const))\n );\n const progress$ = timer(kbqInlineEditSaveProgressDelay).pipe(map(() => ({ status: 'progress' }) as const));\n\n // Nothing cancels the request, destroying the row included: the value is already on its way to the\n // server. A new one can only be started from the failed state.\n merge(result$, progress$)\n .pipe(\n // Completes on the result, dropping the progress timer when the request settles first.\n takeWhile((result) => result.status === 'progress', true),\n // A result arriving while the progress state is shown is queued behind the minimum display time.\n concatMap((result) =>\n result.status === 'progress'\n ? concat(of(result), timer(kbqInlineEditSaveProgressMinimumDuration).pipe(ignoreElements()))\n : of(result)\n )\n )\n .subscribe((result) => {\n if (result.status === 'progress') {\n this.saveStatusSource.set('progress');\n\n return;\n }\n\n if (result.status === 'success') {\n this.onSaveSucceeded();\n } else {\n this.onSaveFailed(result.error);\n }\n });\n }\n\n private onSaveSucceeded(): void {\n this.lastSavedValue = this.submittedValue;\n this.saveStatusSource.set('idle');\n\n if (!this.destroyed) {\n this.saved.emit();\n }\n }\n\n private onSaveFailed(error: unknown): void {\n this.saveStatusSource.set('error');\n\n const context: KbqInlineEditSaveErrorContext = { error, inlineEdit: this };\n\n if (!this.destroyed) {\n this.saveError.emit(context);\n }\n\n this.saveErrorHandler()?.(context);\n }\n\n /**\n * Whether `overlayOrigin` is fully within the viewport and every registered `CdkScrollable`\n * ancestor between it and the viewport. Ancestors without the `CdkScrollable` directive aren't\n * visible to `ScrollDispatcher` and aren't checked — same limitation as the rest of overlay\n * positioning.\n */\n private isOverlayOriginFullyVisible(): boolean {\n const rect = this.overlayOrigin.getBoundingClientRect();\n\n const isWithin = (container: { top: number; left: number; bottom: number; right: number }): boolean =>\n rect.top >= container.top &&\n rect.left >= container.left &&\n rect.bottom <= container.bottom &&\n rect.right <= container.right;\n\n if (!isWithin({ top: 0, left: 0, bottom: this.window.innerHeight, right: this.window.innerWidth })) {\n return false;\n }\n\n return this.scrollDispatcher\n .getAncestorScrollContainers(this.overlayOrigin)\n .every((scrollable) => isWithin(scrollable.getElementRef().nativeElement.getBoundingClientRect()));\n }\n\n /**\n * Shows the validation tooltip, scrolling the invalid control into view first if it isn't fully visible.\n *\n * `scrollIntoView({ behavior: 'smooth' })` finishes asynchronously — for a long scroll distance it can take\n * a while — so showing the tooltip right away would anchor its overlay to a stale, pre-scroll position.\n * `scrollend` reports when the scroll actually completes; the timeout is a fallback for browsers without\n * `scrollend` support and cases where nothing ends up scrolling.\n *\n * TODO(DS-5420): \"scroll an element into view, then act once settled\" isn't inline-edit-specific — worth\n * extracting into `packages/components/core` in a follow-up. Kept local to this fix for now.\n */\n private showValidationTooltip(): void {\n // save() can fire repeatedly while the control stays invalid (Save button + onOverlayOutsideClick on\n // every outside click) — let an in-flight request finish rather than stacking a second scroll/listener/timer.\n if (this.validationTooltipScrollHandle) return;\n\n if (this.isOverlayOriginFullyVisible()) {\n this.ngZone.run(() => this.tooltipTrigger()?.show());\n\n return;\n }\n\n let shown = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const removeScrollEndListener = (): void =>\n this.window.removeEventListener('scrollend', onScrollEnd, { capture: true });\n\n const clearFallbackTimer = (): void => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n const onScrollEnd = (): void => {\n clearFallbackTimer();\n\n if (!shown) {\n shown = true;\n removeScrollEndListener();\n this.validationTooltipScrollHandle = null;\n this.ngZone.run(() => this.showValidationTooltipIfStillInvalid());\n\n return;\n }\n\n // Already shown via the fallback timeout at a stale position — this late scrollend corrects it\n // instead of re-showing (which would re-trigger the enter animation).\n removeScrollEndListener();\n this.validationTooltipScrollHandle = null;\n this.ngZone.run(() => {\n if (this.isInvalid() && this.tooltipTrigger()?.isOpen) {\n this.tooltipTrigger()?.updatePosition(true);\n }\n });\n };\n\n const onTimeout = (): void => {\n timeoutId = null;\n shown = true;\n this.validationTooltipScrollHandle = null;\n this.ngZone.run(() => this.showValidationTooltipIfStillInvalid());\n // Deliberately keep the scrollend listener alive: a late scrollend still corrects the stale\n // position via the branch above. Removed by cancel() or the next onScrollEnd call.\n };\n\n this.ngZone.runOutsideAngular(() => {\n this.window.addEventListener('scrollend', onScrollEnd, { capture: true });\n });\n\n timeoutId = setTimeout(onTimeout, VALIDATION_TOOLTIP_SCROLL_TIMEOUT);\n\n this.validationTooltipScrollHandle = {\n cancel: (): void => {\n removeScrollEndListener();\n clearFallbackTimer();\n this.validationTooltipScrollHandle = null;\n }\n };\n\n this.overlayOrigin.scrollIntoView({ block: 'center', inline: 'nearest', behavior: 'smooth' });\n }\n\n private showValidationTooltipIfStillInvalid(): void {\n if (!(this.isInvalid() && this.showTooltipOnError() && this.validationTooltip())) return;\n\n this.tooltipTrigger()?.show();\n }\n\n /** @docs-private */\n protected cancel(): void {\n this.setValue(this.initialValue);\n\n const input = this.getInputNativeElement();\n\n if (input) {\n input.selectionStart = input.selectionEnd = null;\n }\n\n this.toggleMode();\n this.canceled.emit();\n }\n\n /** @docs-private */\n protected onOverlayKeydown(event: KeyboardEvent): void {\n this.markAllAsTouched();\n const canSaveOnEnter = this.canSaveOnEnter();\n\n switch (event.key) {\n case 'Escape': {\n this.cancel();\n break;\n }\n case 'Enter': {\n if (canSaveOnEnter(event)) {\n event.preventDefault();\n this.markAllAsTouched();\n setTimeout(() => this.save(event));\n }\n\n break;\n }\n default: {\n return;\n }\n }\n }\n\n /**\n * Block propagation of overlay outside click.\n * Used to prevent reopening when target is inline edit itself.\n * @docs-private\n */\n protected onOverlayOutsideClick($event: Event) {\n if (isElement($event.target) && this.elementRef.nativeElement.contains($event.target)) {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n this.save($event);\n }\n\n private detectInteractiveContent(selectors: string[]): void {\n if (!selectors.length) {\n this.hasInteractiveContent.set(false);\n\n return;\n }\n\n const viewContent = this.viewContainer().nativeElement.querySelector('.kbq-inline-edit__view-content');\n\n this.hasInteractiveContent.set(!!viewContent?.querySelector(selectors.join(',')));\n }\n\n private isInteractiveElement(target: EventTarget | null): boolean {\n const selectors = this.interactiveSelectors();\n\n if (!selectors.length) return false;\n\n return isElement(target) && !!target.closest(selectors.join(','));\n }\n\n /**\n * Sets up Tab key listeners on region items.\n * Single item: Tab moves to next edit.\n * Multiple items: Shift+Tab on first or Tab on last moves to next edit.\n */\n private setOverlayKeydownListener(): void {\n const regionItems = this.regionItems();\n\n if (regionItems.length === 0) return;\n\n const firstItem = regionItems.at(0);\n const lastItem = regionItems.at(regionItems.length - 1);\n\n if (regionItems.length === 1) {\n firstItem?.tabOut.subscribe((event) => this.saveAndFocusNextInlineEdit(event));\n } else {\n firstItem?.tabOut.subscribe(\n (event) => hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event)\n );\n\n lastItem?.tabOut.subscribe(\n (event) => !hasModifierKey(event, 'shiftKey') && this.saveAndFocusNextInlineEdit(event)\n );\n }\n }\n\n private saveAndFocusNextInlineEdit(event: Event): void {\n this.save(event);\n if (this.isInvalid()) return;\n\n setTimeout(() => {\n const activeElement = this.document.activeElement;\n\n if (activeElement?.classList?.contains('kbq-inline-edit')) {\n activeElement.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }));\n }\n });\n }\n\n /** Whether saving would send back the value the editor opened with. */\n private isUnchanged(): boolean {\n const compareWith = this.compareWith();\n\n // A failed save left the server on a different value, so the same one is still worth sending.\n if (!compareWith || this.saveStatus() === 'error') return false;\n\n const current = this.getValue();\n const initial = this.initialValue;\n\n // The default `getValue()` returns one entry per form field, so the comparator sees the control values\n // themselves rather than the array holding them.\n if (Array.isArray(current) && Array.isArray(initial)) {\n return (\n current.length === initial.length &&\n current.every((value, index) => runCompareWith(compareWith, value, initial[index]))\n );\n }\n\n return runCompareWith(compareWith, current, initial);\n }\n\n private isInvalid(): boolean {\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length) return false;\n\n return formFieldRefList.some((ref) => ref.invalid);\n }\n\n private getValue() {\n const getValueHandler = this.getValueHandler();\n\n if (getValueHandler) return getValueHandler();\n\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length) return;\n\n return this.formFieldRefList().map((ref) => this.coerceControl(ref)?.value);\n }\n\n private setValue<T>(value: T): void {\n const setValue = this.setValueHandler();\n\n if (setValue) {\n setValue(value);\n\n return;\n }\n\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length || !Array.isArray(value)) return;\n\n value.forEach((controlValue, index) => {\n const control = this.coerceControl(formFieldRefList[index]);\n\n if (!control) return;\n\n if (control instanceof AbstractControl) {\n control.setValue(controlValue);\n } else {\n control.value = controlValue;\n }\n });\n }\n\n private coerceControl(formFieldRef: KbqFormField) {\n const control = formFieldRef.control();\n\n if (control.ngControl instanceof NgControl) {\n return control.ngControl.control;\n }\n\n return control;\n }\n\n private setOverlayWidth(): void {\n const editModeWidth = this.editModeWidth();\n\n if (editModeWidth) {\n this.overlayWidth.set(editModeWidth);\n\n return;\n }\n\n const element: HTMLElement | null = this.label()\n ? this.elementRef.nativeElement.querySelector('.kbq-inline-edit__focus_container')\n : this.elementRef.nativeElement;\n\n if (element) {\n const overlayRef = this.overlayDir().overlayRef;\n\n this.resizeObserver\n .observe(element)\n .pipe(takeUntil(overlayRef.detachments()))\n .subscribe(() => {\n this.overlayWidth.set(element.offsetWidth);\n overlayRef.updatePosition();\n });\n }\n\n this.overlayWidth.set(element?.offsetWidth ?? '');\n }\n\n private openPanel(formFieldRef: KbqFormField) {\n const control = formFieldRef.control();\n\n control?.open?.();\n }\n\n private getInputNativeElement(): HTMLInputElement | HTMLTextAreaElement | null {\n return this.overlayDir()?.overlayRef.overlayElement.querySelector('input:not([type=\"file\"]),textarea') ?? null;\n }\n\n private markAllAsTouched(): void {\n this.formFieldRefList().forEach((formField) => formField.control().ngControl?.control?.markAsTouched());\n }\n}\n","<div class=\"kbq-inline-edit__focus_container\">\n <div class=\"cdk-visually-hidden\" role=\"status\" aria-live=\"polite\">{{ saveStatusMessage() }}</div>\n\n @if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n }\n\n <div #viewContainer class=\"kbq-inline-edit__view-container\">\n <div class=\"kbq-inline-edit__view-content\">\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n </div>\n\n @if (hasInteractiveContent() && mode() === 'view' && !disabled()) {\n <div\n class=\"kbq-inline-edit__focus-anchor cdk-visually-hidden\"\n tabindex=\"0\"\n (focus)=\"anchorFocused.set(true)\"\n (blur)=\"anchorFocused.set(false)\"\n ></div>\n }\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask kbq-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade kbq-mask__fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container kbq-mask__container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOffsetY]=\"-overlayOrigin.offsetHeight\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"onOverlayOutsideClick($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div class=\"cdk-visually-hidden\" aria-hidden=\"true\" kbqFocusRegionItem tabindex=\"0\"></div>\n <div\n class=\"kbq-inline-edit__panel\"\n cdkTrapFocusAutoCapture\n [class.kbq-inline-edit__panel_select]=\"isSingleSelect()\"\n [cdkTrapFocus]=\"false\"\n >\n <div\n class=\"kbq-inline-edit__control-container\"\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipDisabled]=\"!validationTooltip()\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n [kbqTooltipScrollStrategy]=\"validationTooltipScrollStrategy\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div class=\"kbq-inline-edit__action-buttons\" role=\"group\" [@panelAnimation]>\n <div class=\"kbq-inline-edit__action-button\">\n <button kbq-button [color]=\"'contrast'\" (click)=\"save($event)\">\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n </div>\n\n <div class=\"kbq-inline-edit__action-button\">\n <button kbq-button [color]=\"'contrast-fade'\" (click)=\"cancel()\">\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n <div class=\"cdk-visually-hidden\" aria-hidden=\"true\" kbqFocusRegionItem tabindex=\"0\"></div>\n </ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqInlineEdit, KbqInlineEditMenu, KbqInlineEditPlaceholder } from './inline-edit';\n\nconst COMPONENTS = [\n KbqInlineEdit,\n KbqInlineEditPlaceholder,\n KbqInlineEditMenu\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqInlineEditModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-inline-edit.mjs","sources":["../../../packages/components/inline-edit/inline-edit.ts","../../../packages/components/inline-edit/inline-edit.html","../../../packages/components/inline-edit/module.ts","../../../packages/components/inline-edit/koobiq-components-inline-edit.ts"],"sourcesContent":["import { CdkMonitorFocus, CdkTrapFocus, FocusMonitor, FocusOrigin, InteractivityChecker } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { ContentObserver } from '@angular/cdk/observers';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { CdkConnectedOverlay, Overlay, ScrollDispatcher, ScrollStrategy } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n InjectionToken,\n Injector,\n input,\n isWritableSignal,\n model,\n NgZone,\n numberAttribute,\n output,\n PendingTasks,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n isElement,\n KBQ_A11Y_LOCALE_CONFIGURATION,\n KBQ_CONNECTED_OVERLAY_ORIGIN,\n KBQ_OVERLAY_LAYERS,\n KBQ_WINDOW,\n kbqAnimationsDisabled,\n KbqComponentColors,\n KbqConnectedOverlayOriginProvider,\n KbqLocaleOverridesDirective,\n PopUpPlacements,\n runCompareWith\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField, KbqLabel } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqSelect } from '@koobiq/components/select';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { concat, debounceTime, merge, Observable, of, startWith, timer } from 'rxjs';\nimport { catchError, concatMap, defaultIfEmpty, ignoreElements, map, take, takeUntil, takeWhile } from 'rxjs/operators';\n\nconst baseClass = 'kbq-inline-edit';\n\n/**\n * Fallback delay before showing the validation tooltip if `scrollend` never fires — e.g. the browser doesn't\n * support it, or nothing needed to scroll.\n */\nconst VALIDATION_TOOLTIP_SCROLL_TIMEOUT = 800;\n\n/** Controls in edit mode that Enter activates on their own, so the default `canSaveOnEnter` leaves them alone. */\nconst ENTER_ACTIVATED_SELECTORS =\n 'button,input[type=\"button\"],input[type=\"submit\"],input[type=\"reset\"],[role=\"button\"]';\n\n/** Delay before the save progress state appears, so a fast response causes no flicker. */\nexport const kbqInlineEditSaveProgressDelay = 100;\n\n/** Minimum time the save progress state stays once it has appeared. */\nexport const kbqInlineEditSaveProgressMinimumDuration = 300;\n\n/**\n * Every live inline edit, keyed by its host element, so Tab-chaining can call the neighbour's public API\n * instead of driving it through the DOM with a fabricated `KeyboardEvent`.\n */\nconst inlineEditRegistry = new WeakMap<HTMLElement, KbqInlineEdit>();\n\nconst isValueAccessor = (control: object): control is ControlValueAccessor =>\n typeof (control as Partial<ControlValueAccessor>).writeValue === 'function';\n\nexport type KbqInlineEditMode = 'view' | 'edit';\n\n/**\n * Saves the edited value, e.g. sends it to a server. Only the first emission counts, and the observable must emit\n * or complete: destroying the row does not cancel it, so one that never settles keeps the row in memory.\n *\n * Called without a receiver, so bind an arrow function rather than a method that relies on `this`.\n */\nexport type KbqInlineEditSaveHandler = () => Observable<unknown>;\n\n/** State of the save request started by `saveHandler`. `progress` is `pending` past the indicator delay. */\nexport type KbqInlineEditSaveStatus = 'idle' | 'pending' | 'progress' | 'error';\n\n/** Recovery a failed-save notification can offer: retry, edit again, discard the unsaved value. */\nexport interface KbqInlineEditSaveRecovery {\n retrySave(): void;\n toggleMode(): void;\n rollback(): void;\n}\n\n/** Failed save, reported through `saveError` and `KBQ_INLINE_EDIT_SAVE_ERROR_HANDLER`. */\nexport interface KbqInlineEditSaveErrorContext<E = any> {\n /** Parameterise the interface to type this. */\n readonly error: E;\n /** Inline edit whose save failed. */\n readonly inlineEdit: KbqInlineEditSaveRecovery;\n}\n\n/** Reaction to a failed save, e.g. opening a toast. */\nexport type KbqInlineEditSaveErrorHandler = (context: KbqInlineEditSaveErrorContext) => void;\n\n/** Reports every failed save the same way across the application. Declare it in the root injector. */\nexport const KBQ_INLINE_EDIT_SAVE_ERROR_HANDLER = new InjectionToken<KbqInlineEditSaveErrorHandler>(\n 'KbqInlineEditSaveErrorHandler'\n);\n\n/** Directive for easy using styles of inline edit placeholder publicly. */\n@Directive({\n selector: '[kbqInlineEditPlaceholder]',\n host: {\n class: 'kbq-inline-edit__placeholder'\n },\n exportAs: 'kbqInlineEditPlaceholder'\n})\nexport class KbqInlineEditPlaceholder {}\n\n/**\n * This directive enhances element acting as dropdown trigger,\n * visually indicating the active state with the `kbq-active` class.\n * Also, it prevents click/keydown events from being propagated to disable mode toggling of parent component.\n */\n@Directive({\n selector: '[kbqInlineEditMenu]',\n host: {\n role: 'button',\n class: 'kbq-inline-edit__menu',\n '[class.kbq-active]': 'dropdownTrigger?.opened',\n '(click)': '$event.stopPropagation()',\n '(keydown.enter)': '$event.stopPropagation()',\n '(keydown.space)': '$event.stopPropagation()'\n },\n exportAs: 'kbqInlineEditMenu'\n})\nexport class KbqInlineEditMenu {\n /** @docs-private */\n protected readonly dropdownTrigger = inject(KbqDropdownTrigger, { optional: true });\n}\n\n/**\n * Customizable component that enables edit-in-place logic for specified control and it's view.\n * This component is projecting edit/view mode templates and adds keyboard/pointer handlers.\n * Edit mode opens in a positioned overlay that matches the view mode width or can be customized.\n */\n@Component({\n selector: 'kbq-inline-edit',\n imports: [\n CdkConnectedOverlay,\n KbqButtonModule,\n KbqIcon,\n KbqTooltipTrigger,\n CdkTrapFocus\n ],\n templateUrl: './inline-edit.html',\n styleUrls: ['./inline-edit.scss', './inline-edit-tokens.scss'],\n providers: [{ provide: KBQ_CONNECTED_OVERLAY_ORIGIN, useExisting: forwardRef(() => KbqInlineEdit) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: baseClass,\n // The widget semantics live on the view content, so the focus ring has to follow the subtree.\n cdkMonitorSubtreeFocus: '',\n '[class]': 'className()',\n '[class.kbq-inline-edit_with-label]': '!!label()',\n '[class.kbq-inline-edit_with-menu]': '!!menu()',\n '[class.kbq-inline-edit_disabled]': 'disabled()',\n '[class.kbq-inline-edit_anchor-focused]': 'anchorFocused()',\n '[class.kbq-inline-edit_select]': 'isSingleSelect()',\n '[class.kbq-inline-edit_save-error]': 'saveStatus() === \"error\"',\n // The background save is reported on the row itself, which by then is back in view mode.\n '[class.kbq-progress]': 'saveStatus() === \"progress\"',\n // `aria-label` is an input, and the host itself carries no role, where naming is prohibited.\n '[attr.aria-label]': 'null',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onClick($event)',\n '(keydown.space)': 'onClick($event)'\n },\n hostDirectives: [\n CdkMonitorFocus,\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ],\n exportAs: 'kbqInlineEdit'\n})\nexport class KbqInlineEdit implements KbqConnectedOverlayOriginProvider, KbqInlineEditSaveRecovery {\n /** Accessible names for the icon-only save/cancel buttons and for the view mode itself. */\n protected readonly a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'a11y',\n KBQ_A11Y_LOCALE_CONFIGURATION\n );\n\n private readonly overlay = inject(Overlay);\n private readonly overlayLayers = inject(KBQ_OVERLAY_LAYERS);\n private readonly document = inject(DOCUMENT);\n private readonly window = inject(KBQ_WINDOW);\n private readonly resizeObserver = inject(SharedResizeObserver);\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n private readonly pendingTasks = inject(PendingTasks);\n private readonly scrollDispatcher = inject(ScrollDispatcher);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n private readonly contentObserver = inject(ContentObserver);\n private readonly interactivityChecker = inject(InteractivityChecker);\n private readonly focusMonitor = inject(FocusMonitor);\n\n /**\n * The validation tooltip is anchored inside the edit-mode overlay — an overlay inside another\n * overlay. Its default `close()` scroll strategy would close it the moment either overlay's\n * origin scrolls (including the programmatic scroll `showValidationTooltip()` uses to bring an\n * invalid control into view), so it's overridden to `reposition()` here — passed directly as a\n * per-instance override to this tooltip's `[kbqTooltipScrollStrategy]` input, rather than a DI\n * override, so it doesn't leak into any `kbqTooltip` in projected content.\n *\n * @docs-private\n */\n protected readonly validationTooltipScrollStrategy = (): ScrollStrategy =>\n this.overlay.scrollStrategies.reposition();\n\n /**\n * Whether to show save/cancel action buttons in edit mode. Defaults to `false`.\n */\n readonly showActions = input(false, { transform: booleanAttribute });\n\n /**\n * Whether to automatically show validation error tooltips on save attempts.\n * Has no effect unless `validationTooltip` is set. Defaults to `true`.\n */\n readonly showTooltipOnError = input(true, { transform: booleanAttribute });\n /** Custom validation tooltip message. */\n readonly validationTooltip = input<string | TemplateRef<unknown>>();\n\n /**\n * Disables the component, preventing interaction and mode switching. Only allows menu dropdown.\n * Defaults to `false`.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Custom width in pixels for the edit mode overlay. Auto-calculated if not set. */\n readonly editModeWidth = input(undefined, { transform: numberAttribute });\n /** User-defined tooltip placement */\n readonly tooltipPlacement = input<PopUpPlacements>();\n /** Classes to be passed to the inline edit panel. */\n readonly overlayPanelClass = input<string | string[]>('');\n /** Handler function to retrieve the current value */\n readonly getValueHandler = input<() => unknown>();\n /** Handler function to update the value */\n readonly setValueHandler = input<(value: unknown) => void>();\n\n /**\n * Accessible name of the control that opens the editor. Defaults to the localized \"Edit\"; set a\n * field-specific name where the projected value alone doesn't say what is being edited.\n */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /**\n * Whether the value still equals the one the editor opened with, in which case `saveHandler` is not called.\n * The default suits text and numbers; bind your own for arrays and objects, or `null` to send every time.\n * A failed save is always retried, however the values compare.\n */\n readonly compareWith = input<((a: any, b: any) => boolean) | null>((a, b) => a === b);\n\n /**\n * Saves a valid value in the background: edit mode closes right away and view mode reports how the request\n * went. Without it, a valid value is saved immediately.\n */\n readonly saveHandler = input<KbqInlineEditSaveHandler>();\n\n /**\n * Reaction to a failed save for this inline edit alone. Defaults to `KBQ_INLINE_EDIT_SAVE_ERROR_HANDLER`;\n * bind `null` to leave it without one.\n */\n readonly saveErrorHandler = input<KbqInlineEditSaveErrorHandler | null>(\n inject(KBQ_INLINE_EDIT_SAVE_ERROR_HANDLER, { optional: true })\n );\n /** Customizable function that checks if saving on enter available. */\n readonly canSaveOnEnter = input((event: KeyboardEvent): boolean => {\n // A control that runs its own action on Enter would otherwise fire it and save at the same time.\n if (isElement(event.target) && event.target.closest(ENTER_ACTIVATED_SELECTORS)) return false;\n\n return hasModifierKey(event, 'ctrlKey', 'metaKey') || !(event.target instanceof HTMLTextAreaElement);\n });\n\n /**\n * CSS selectors for elements in view mode that should handle clicks instead of opening edit mode.\n * Override to replace or extend the default list.\n *\n * @example\n * ```html\n * <kbq-inline-edit [interactiveSelectors]=\"['a', 'kbq-tag', 'button']\">\n * ```\n */\n readonly interactiveSelectors = input<string[]>(['a', 'kbq-tag']);\n\n /** Emitted when the inline edit is saved successfully. */\n readonly saved = output();\n /** Emitted when the inline edit is canceled and changes are discarded. */\n readonly canceled = output();\n /** Emitted when a `saveHandler` request fails. Silent once the row is destroyed; `saveErrorHandler` is not. */\n readonly saveError = output<KbqInlineEditSaveErrorContext>();\n\n /**\n * Current mode. Two-way bindable: `[(mode)]` opens and closes the editor programmatically, and\n * `(modeChange)` alone reports every transition.\n */\n readonly mode = model<KbqInlineEditMode>('view');\n\n /** @docs-private */\n protected readonly menu = contentChild(KbqInlineEditMenu);\n /** @docs-private */\n protected readonly label = contentChild(KbqLabel);\n\n /** @docs-private */\n protected readonly formFieldRef = computed<KbqFormField | undefined>(() => this.formFieldRefList()[0]);\n /** @docs-private */\n protected readonly formFieldRefList = contentChildren(KbqFormField, { descendants: true });\n\n /** @docs-private */\n protected readonly selectRef = contentChild(KbqSelect, { descendants: true });\n\n /**\n * Whether edit mode contains a single-value select. When true, edit mode shows only the\n * dropdown panel instead of a bordered field - see the \"Select-style editor\" example.\n *\n * @docs-private\n */\n protected readonly isSingleSelect = computed(() => {\n const select = this.selectRef();\n\n return !!select && !select.multiple && !select.multiline();\n });\n\n /** @docs-private */\n protected readonly tooltipTrigger = viewChild.required(KbqTooltipTrigger);\n /** @docs-private */\n protected readonly viewContainer = viewChild.required<ElementRef<HTMLElement>>('viewContainer');\n /** @docs-private */\n protected readonly viewContent = viewChild.required<ElementRef<HTMLElement>>('viewContent');\n /** Present only while the view content is interactive, where it stands in as the field's tab stop. */\n protected readonly focusAnchor = viewChild<ElementRef<HTMLElement>>('focusAnchor');\n /** @docs-private */\n protected readonly overlayDir = viewChild.required(CdkConnectedOverlay);\n\n /** @docs-private */\n protected readonly overlayWidth = signal<number | string>('');\n /** Distance the panel is pulled up by so that it covers the view it replaces. */\n protected readonly overlayOffsetY = signal(0);\n\n /**\n * Built on first read rather than in the field initializer: a list of inline edits would otherwise\n * allocate one strategy per row, including the rows nobody ever opens.\n *\n * @docs-private\n */\n protected readonly scrollStrategy = computed(() => this.overlay.scrollStrategies.reposition());\n\n private readonly saveStatusSource = signal<KbqInlineEditSaveStatus>('idle');\n /** State of the background save started by `saveHandler`. */\n readonly saveStatus = this.saveStatusSource.asReadonly();\n /** @docs-private */\n protected readonly isSaving = computed(() => this.saveStatus() === 'pending' || this.saveStatus() === 'progress');\n\n /**\n * Both save states are otherwise conveyed by colour alone. `aria-busy` cannot carry the first one: it is set\n * on the row, which contains this region, and that tells assistive tech to hold the announcement back.\n *\n * @docs-private\n */\n protected readonly saveStatusMessage = computed(() => {\n const a11y = this.a11yLocaleConfiguration();\n\n if (this.saveStatus() === 'progress') return a11y.saving;\n\n return this.saveStatus() === 'error' ? a11y.saveFailed : '';\n });\n\n /** @docs-private */\n protected readonly overlayOrigin = computed<HTMLElement>(() =>\n this.label() ? this.viewContainer().nativeElement : this.elementRef.nativeElement\n );\n\n /** @docs-private */\n protected readonly className = computed(() => `${baseClass}_${this.mode()}`);\n /** @docs-private */\n protected readonly isEditMode = computed(() => this.mode() === 'edit');\n /** @docs-private */\n protected readonly hasInteractiveContent = signal(false);\n /** @docs-private */\n protected readonly anchorFocused = signal(false);\n /** @docs-private */\n protected readonly tabIndex = computed(() => {\n // Saving is deliberately absent: like `kbq-dropdown-item`, a row in progress keeps its place in the tab\n // order and only has its action blocked — leaving the tab order is what `disabled` means.\n if (this.isEditMode() || this.disabled() || this.hasInteractiveContent()) return -1;\n\n return 0;\n });\n\n /**\n * Widget role of the view content. Dropped once the projected content is interactive, because a\n * `button` wrapping a link or a tag is a `nested-interactive` violation — the focus anchor carries\n * the semantics in that case instead.\n *\n * @docs-private\n */\n protected readonly viewContentRole = computed(() => (this.hasInteractiveContent() ? null : 'button'));\n\n /** Falls back on an empty `aria-label` too, which would otherwise leave the control with no name. */\n protected readonly accessibleName = computed(() => this.ariaLabel() || this.a11yLocaleConfiguration().edit);\n\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n\n /** @docs-private */\n protected readonly animationsDisabled = kbqAnimationsDisabled();\n\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n private initialValue: unknown;\n\n /** Value sent by the in-flight `saveHandler` request, which becomes `lastSavedValue` once it succeeds. */\n private submittedValue: unknown;\n\n /** Last value the server accepted — what `rollback()` restores after a failed save. */\n private lastSavedValue: unknown;\n\n private destroyed = false;\n\n /** Handle for an in-flight `showValidationTooltip()` scroll/settle request, if any. */\n private validationTooltipScrollHandle: { cancel: () => void } | null = null;\n\n /** How edit mode was entered, so leaving it restores the same focus style. */\n private editModeOrigin: FocusOrigin = null;\n\n /** Set while Tab-chaining, where the next inline edit — not this one — has to end up focused. */\n private chainingToNextInlineEdit = false;\n\n constructor() {\n inlineEditRegistry.set(this.elementRef.nativeElement, this);\n\n this.destroyRef.onDestroy(() => {\n // The save outlives the row, so its outputs have to fall silent with the view they belong to.\n this.destroyed = true;\n inlineEditRegistry.delete(this.elementRef.nativeElement);\n this.validationTooltipScrollHandle?.cancel();\n });\n\n // The panel is pulled up by exactly the height of the view it replaces. Measured on every entry\n // into edit mode, including an external `[(mode)]` write that never passes through `toggleMode()`,\n // and before the overlay is attached — reading it from a template binding would force a layout\n // flush on every tick.\n effect(() => {\n if (this.mode() !== 'edit') return;\n\n untracked(() => this.overlayOffsetY.set(-this.overlayOrigin().offsetHeight));\n });\n\n effect((onCleanup) => {\n const selectors = this.interactiveSelectors();\n const viewContent = this.viewContent().nativeElement;\n\n // Projected content can arrive long after the first pass — a value fetched from a server, or\n // the `@if (value) { … } @else { placeholder }` shape every example uses — so detection has to\n // follow the content rather than run once. `debounceTime` also defers the first pass out of the\n // current change detection, which is what the one-shot timeout used to do.\n const subscription = this.contentObserver\n .observe(viewContent)\n .pipe(startWith(null), debounceTime(0))\n .subscribe(() => this.detectInteractiveContent(viewContent, selectors));\n\n onCleanup(() => subscription.unsubscribe());\n });\n }\n\n /** Manually switch mode. Does nothing while a `saveHandler` request is in flight. */\n toggleMode(): void {\n // Untracked, as `commit()`, `retrySave()` and `rollback()`: called from a consumer's `effect()`, the state read\n // on the way — the mode, the save status, the inputs — would make the effect run again whenever it changes.\n untracked(() => {\n if (this.isSaving()) return;\n\n this.mode.update((currentMode) => (currentMode === 'edit' ? 'view' : 'edit'));\n });\n }\n\n /**\n * Implements `KbqConnectedOverlayOriginProvider`, letting a nested `KbqFormField`'s control\n * anchor its overlay to this element instead of the form-field's own container.\n * When no override is needed, the form-field falls back to its default.\n *\n * @docs-private\n */\n getConnectedOverlayOrigin(): ElementRef | undefined {\n return this.isSingleSelect() ? this.elementRef : undefined;\n }\n\n /** Saves the current value, running the same validation as a normal save. */\n commit(): void {\n untracked(() => this.save());\n }\n\n /** Repeats the request for a value the server rejected. Does nothing unless the last save failed. */\n retrySave(): void {\n untracked(() => {\n const saveHandler = this.saveHandler();\n\n if (this.saveStatus() !== 'error' || !saveHandler) return;\n\n this.startSave(saveHandler());\n });\n }\n\n /** Discards the value the server rejected, restoring the last saved one and closing the editor. */\n rollback(): void {\n untracked(() => {\n if (this.saveStatus() !== 'error') return;\n\n this.setValue(this.lastSavedValue);\n this.initialValue = this.lastSavedValue;\n this.saveStatusSource.set('idle');\n\n if (this.isEditMode()) {\n this.toggleMode();\n }\n });\n }\n\n /** @docs-private */\n protected onClick(event: Event): void {\n // Editing is closed while the request is in flight: reopening it would let the user edit a value that is\n // already on its way to the server.\n if (this.disabled() || this.isEditMode() || this.isSaving() || this.isInteractiveElement(event.target)) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.editModeOrigin = event instanceof KeyboardEvent ? 'keyboard' : 'mouse';\n\n this.toggleMode();\n }\n\n /** @docs-private */\n protected onAttach(): void {\n // `cdkConnectedOverlay` creates and attaches the overlay in one go, so this is the first point it exists.\n this.overlayLayers.adopt(this.overlayDir().overlayRef, this.elementRef.nativeElement);\n\n this.setOverlayWidth();\n\n // Hides the validation tooltip once the controls accept their values. Ended with the session by hand: an\n // effect otherwise lives as long as its injector, and the tooltip only as long as the panel.\n const validationTooltipWatcher = effect(\n () => {\n this.formFieldRefList().forEach((ref) => {\n ref.control().errorState();\n ref.control().value();\n });\n\n untracked(() => {\n const tooltipTrigger = this.tooltipTrigger();\n\n if (tooltipTrigger.isOpen && !this.isInvalid()) {\n tooltipTrigger.hide();\n }\n });\n },\n { injector: this.injector }\n );\n\n this.overlayDir()!\n .overlayRef.detachments()\n .pipe(take(1))\n .subscribe(() => {\n validationTooltipWatcher.destroy();\n this.validationTooltipScrollHandle?.cancel();\n });\n\n this.watchTabOutsideThePanel();\n\n this.defer(() => {\n // Captured before the form-field checks below: an editor built on `setValueHandler` alone has no\n // `KbqFormField`, and `cancel()` and `rollback()` still have to restore something other than undefined.\n this.initialValue = this.getValue();\n\n // Opening the editor over a value the server rejected must not turn that value into the one\n // `rollback()` restores.\n if (this.saveStatus() !== 'error') {\n this.lastSavedValue = this.initialValue;\n }\n\n const formFieldRef = this.formFieldRef();\n\n if (!formFieldRef) return;\n\n formFieldRef.focus();\n\n const input = this.getInputNativeElement();\n\n if (this.initialValue) input?.select();\n\n this.openPanel(formFieldRef);\n });\n }\n\n /** @docs-private */\n protected save($event?: Event): void {\n // Guards against a control triggering both its own commit() and the overlay's outside-click handler for the\n // same interaction — without this, the second call would toggle back into edit mode.\n if (!this.isEditMode()) return;\n\n // Saving is what makes the controls touched, not typing into them: the display state has to be\n // caught up before the error styling is allowed to appear.\n this.markAllAsTouched();\n\n if (this.isInvalid()) {\n $event?.stopPropagation();\n\n if (this.showTooltipOnError() && this.validationTooltip()) {\n this.showValidationTooltip();\n }\n\n return;\n }\n\n const saveHandler = this.saveHandler();\n\n // Nothing to send: the value is still the one the editor opened with. Only the request is skipped —\n // without a handler `saved` keeps meaning \"the user committed\".\n if (saveHandler && this.isUnchanged()) {\n this.toggleMode();\n this.restoreFocus();\n\n return;\n }\n\n // Started before the mode switch: a handler that throws is a bug in the application, and folding that into\n // the save result would report it as the server's refusal.\n const request$ = saveHandler?.();\n\n // Client-side validation has passed, so editing is over either way: with a handler the request runs in the\n // background, and view mode reports how it went. Focus goes back with the mode, not with the response,\n // which lands long after the user has moved on.\n this.toggleMode();\n this.restoreFocus();\n\n if (request$) {\n this.startSave(request$);\n\n return;\n }\n\n this.saved.emit();\n }\n\n /** Runs `saveHandler` once and maps its lifecycle onto `saveStatus`, holding the progress state steady. */\n private startSave(request$: Observable<unknown>): void {\n this.submittedValue = this.getValue();\n this.saveStatusSource.set('pending');\n\n const success = { status: 'success' } as const;\n const result$ = request$.pipe(\n take(1),\n map(() => success),\n defaultIfEmpty(success),\n catchError((error: unknown) => of({ status: 'error', error } as const))\n );\n const progress$ = timer(kbqInlineEditSaveProgressDelay).pipe(map(() => ({ status: 'progress' }) as const));\n\n // Nothing cancels the request, destroying the row included: the value is already on its way to the\n // server. A new one can only be started from the failed state.\n merge(result$, progress$)\n .pipe(\n // Completes on the result, dropping the progress timer when the request settles first.\n takeWhile((result) => result.status === 'progress', true),\n // A result arriving while the progress state is shown is queued behind the minimum display time.\n concatMap((result) =>\n result.status === 'progress'\n ? concat(of(result), timer(kbqInlineEditSaveProgressMinimumDuration).pipe(ignoreElements()))\n : of(result)\n )\n )\n .subscribe((result) => {\n if (result.status === 'progress') {\n this.saveStatusSource.set('progress');\n\n return;\n }\n\n if (result.status === 'success') {\n this.onSaveSucceeded();\n } else {\n this.onSaveFailed(result.error);\n }\n });\n }\n\n private onSaveSucceeded(): void {\n this.lastSavedValue = this.submittedValue;\n this.saveStatusSource.set('idle');\n\n if (!this.destroyed) {\n this.saved.emit();\n }\n }\n\n private onSaveFailed(error: unknown): void {\n this.saveStatusSource.set('error');\n\n const context: KbqInlineEditSaveErrorContext = { error, inlineEdit: this };\n\n if (!this.destroyed) {\n this.saveError.emit(context);\n }\n\n this.saveErrorHandler()?.(context);\n }\n\n /**\n * Whether `overlayOrigin` is fully within the viewport and every registered `CdkScrollable`\n * ancestor between it and the viewport. Ancestors without the `CdkScrollable` directive aren't\n * visible to `ScrollDispatcher` and aren't checked — same limitation as the rest of overlay\n * positioning.\n */\n private isOverlayOriginFullyVisible(): boolean {\n const overlayOrigin = this.overlayOrigin();\n const rect = overlayOrigin.getBoundingClientRect();\n\n const isWithin = (container: { top: number; left: number; bottom: number; right: number }): boolean =>\n rect.top >= container.top &&\n rect.left >= container.left &&\n rect.bottom <= container.bottom &&\n rect.right <= container.right;\n\n if (!isWithin({ top: 0, left: 0, bottom: this.window.innerHeight, right: this.window.innerWidth })) {\n return false;\n }\n\n return this.scrollDispatcher\n .getAncestorScrollContainers(overlayOrigin)\n .every((scrollable) => isWithin(scrollable.getElementRef().nativeElement.getBoundingClientRect()));\n }\n\n /**\n * Shows the validation tooltip, scrolling the invalid control into view first if it isn't fully visible.\n *\n * `scrollIntoView({ behavior: 'smooth' })` finishes asynchronously — for a long scroll distance it can take\n * a while — so showing the tooltip right away would anchor its overlay to a stale, pre-scroll position.\n * `scrollend` reports when the scroll actually completes; the timeout is a fallback for browsers without\n * `scrollend` support and cases where nothing ends up scrolling.\n */\n private showValidationTooltip(): void {\n // TODO(DS-5420): \"scroll an element into view, then act once settled\" isn't inline-edit-specific — worth\n // extracting into `packages/components/core` in a follow-up. Kept local to this fix for now.\n\n // save() can fire repeatedly while the control stays invalid (Save button + onOverlayOutsideClick on\n // every outside click) — let an in-flight request finish rather than stacking a second scroll/listener/timer.\n if (this.validationTooltipScrollHandle) return;\n\n if (this.isOverlayOriginFullyVisible()) {\n this.ngZone.run(() => this.tooltipTrigger()?.show());\n\n return;\n }\n\n let shown = false;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const removeScrollEndListener = (): void =>\n this.window.removeEventListener('scrollend', onScrollEnd, { capture: true });\n\n const clearFallbackTimer = (): void => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n const onScrollEnd = (): void => {\n const wasShown = shown;\n\n shown = true;\n clearFallbackTimer();\n this.validationTooltipScrollHandle?.cancel();\n\n this.ngZone.run(() => {\n if (!wasShown) {\n this.showValidationTooltipIfStillInvalid();\n\n return;\n }\n\n // Already shown via the fallback timeout at a stale position — this late scrollend corrects\n // it instead of re-showing (which would re-trigger the enter animation).\n if (this.isInvalid() && this.tooltipTrigger()?.isOpen) {\n this.tooltipTrigger()?.updatePosition(true);\n }\n });\n };\n\n const onTimeout = (): void => {\n timeoutId = null;\n shown = true;\n // The handle deliberately stays installed: the scrollend listener is still armed so a late\n // scrollend can correct the stale position, and `cancel()` is the only thing that removes it.\n this.ngZone.run(() => this.showValidationTooltipIfStillInvalid());\n };\n\n this.ngZone.runOutsideAngular(() => {\n this.window.addEventListener('scrollend', onScrollEnd, { capture: true });\n });\n\n timeoutId = setTimeout(onTimeout, VALIDATION_TOOLTIP_SCROLL_TIMEOUT);\n\n this.validationTooltipScrollHandle = {\n cancel: (): void => {\n removeScrollEndListener();\n clearFallbackTimer();\n this.validationTooltipScrollHandle = null;\n }\n };\n\n this.overlayOrigin().scrollIntoView({ block: 'center', inline: 'nearest', behavior: 'smooth' });\n }\n\n private showValidationTooltipIfStillInvalid(): void {\n if (!(this.isInvalid() && this.showTooltipOnError() && this.validationTooltip())) return;\n\n this.tooltipTrigger()?.show();\n }\n\n /** @docs-private */\n protected cancel(): void {\n this.setValue(this.initialValue);\n\n const input = this.getInputNativeElement();\n\n if (input) {\n input.selectionStart = input.selectionEnd = null;\n }\n\n this.toggleMode();\n this.canceled.emit();\n this.restoreFocus();\n }\n\n /** @docs-private */\n protected onPanelEscape(event: Event): void {\n // Also bound on the panel: the overlay dispatches its keys from `<body>`, after a container around an\n // overlay layer, such as a modal, has handled them. A key spent in the panel cancels nothing more.\n if (event.defaultPrevented) return;\n\n event.preventDefault();\n this.cancel();\n }\n\n /** @docs-private */\n protected onOverlayKeydown(event: KeyboardEvent): void {\n const canSaveOnEnter = this.canSaveOnEnter();\n\n switch (event.key) {\n case 'Escape': {\n this.onPanelEscape(event);\n break;\n }\n case 'Enter': {\n if (canSaveOnEnter(event)) {\n event.preventDefault();\n this.defer(() => this.save(event));\n }\n\n break;\n }\n default: {\n return;\n }\n }\n }\n\n /**\n * Tab off the panel's first or last tabbable control saves and moves to the tab stop next to the field.\n *\n * @docs-private\n */\n protected onPanelTab(event: Event, panel: HTMLElement, backwards: boolean): void {\n if (!isElement(event.target)) return;\n\n const tabbable = this.getTabbableElements(panel);\n const boundary = backwards ? tabbable.at(0) : tabbable.at(-1);\n\n if (!boundary || boundary !== event.target) return;\n\n // A control that moved the focus itself has spent the key; one that only prevented the default has not.\n if (event.defaultPrevented && this.document.activeElement !== boundary) return;\n\n // The panel detaches before the browser resolves the key, and Tab from a detached element restarts at the top.\n event.preventDefault();\n\n this.saveAndFocusAdjacentTabStop(event, backwards);\n }\n\n /**\n * Block propagation of overlay outside click.\n * Used to prevent reopening when target is inline edit itself.\n *\n * @docs-private\n */\n protected onOverlayOutsideClick($event: Event) {\n if (isElement($event.target) && this.elementRef.nativeElement.contains($event.target)) {\n $event.preventDefault();\n $event.stopPropagation();\n }\n\n this.save($event);\n }\n\n /** A select's options sit in an overlay of their own, so the panel's `(keydown.tab)` never fires. */\n private watchTabOutsideThePanel(): void {\n const select = this.selectRef();\n\n if (!select) return;\n\n const onKeydown = (event: KeyboardEvent): void => {\n if (event.key !== 'Tab' || hasModifierKey(event, 'ctrlKey', 'metaKey', 'altKey')) return;\n\n const overlayElement = this.overlayDir()?.overlayRef?.overlayElement;\n\n // A Tab inside the panel is the normal case, already handled by `onPanelTab`.\n if (isElement(event.target) && overlayElement?.contains(event.target)) return;\n\n const backwards = event.shiftKey;\n\n // Deferred by one task: the select also uses Tab to walk its own footer, and stays open when\n // it does. That is its business, and only the next task can tell the two apart.\n this.defer(() => {\n if (select.panelOpen || !this.isEditMode()) return;\n\n this.ngZone.run(() => this.saveAndFocusAdjacentTabStop(event, backwards));\n });\n };\n\n this.ngZone.runOutsideAngular(() => {\n this.document.addEventListener('keydown', onKeydown, { capture: true });\n });\n\n this.overlayDir()\n .overlayRef.detachments()\n .pipe(take(1))\n .subscribe(() => this.document.removeEventListener('keydown', onKeydown, { capture: true }));\n }\n\n private getTabbableElements(panel: Element): HTMLElement[] {\n return Array.from(panel.querySelectorAll<HTMLElement>('*')).filter((element) => this.isTabStop(element));\n }\n\n private isTabStop(element: HTMLElement): boolean {\n return this.interactivityChecker.isTabbable(element) && !this.interactivityChecker.isDisabled(element);\n }\n\n /** Offers focus to each next tab stop in turn: `isTabbable` passes hidden controls that then refuse it. */\n private focusAdjacentTabStop(backwards: boolean): HTMLElement | null {\n let candidate = this.findAdjacentTabStop(backwards, this.elementRef.nativeElement);\n\n while (candidate) {\n this.focusMonitor.focusVia(candidate, 'keyboard');\n\n // `contains` rather than equality: a candidate may hand the focus to a control of its own.\n if (candidate.contains(this.document.activeElement)) return candidate;\n\n candidate = this.findAdjacentTabStop(backwards, candidate);\n }\n\n return null;\n }\n\n /** The tab stop next to `from` in document order, walked out of the host rather than collected page-wide. */\n private findAdjacentTabStop(backwards: boolean, from: Node): HTMLElement | null {\n const host = this.elementRef.nativeElement;\n const overlayElement = this.overlayDir()?.overlayRef?.overlayElement;\n const walker = this.document.createTreeWalker(this.document.body, NodeFilter.SHOW_ELEMENT);\n\n walker.currentNode = from;\n\n const step = (): Node | null => (backwards ? walker.previousNode() : walker.nextNode());\n\n for (let node = step(); node; node = step()) {\n // CDK's checker and `focusVia` are typed for `HTMLElement`; an SVG tab stop answers both the same.\n const element = node as HTMLElement;\n\n // Only the subtree: backwards the walk climbs the ancestors, where a tab stop is where Shift+Tab belongs.\n if (host.contains(element) || overlayElement?.contains(element) || !this.isTabStop(element)) continue;\n\n // Another overlay — a neighbour's panel, a dialog — is not part of the sequence this field is leaving.\n const overlayContainer = element.closest('.cdk-overlay-container');\n\n if (overlayContainer && !overlayContainer.contains(host)) continue;\n\n return element;\n }\n\n return null;\n }\n\n /**\n * Takes focus back when leaving edit mode would otherwise drop it on `<body>`: the element that was\n * focused when the overlay opened may have been destroyed meanwhile, which is exactly the case CDK's\n * `cdkTrapFocusAutoCapture` restore cannot handle, so the target is resolved after the view is back.\n */\n private restoreFocus(): void {\n if (this.chainingToNextInlineEdit) return;\n\n const activeElement = this.document.activeElement;\n const overlayElement = this.overlayDir()?.overlayRef?.overlayElement;\n\n if (!(activeElement === this.document.body || !!overlayElement?.contains(activeElement))) return;\n\n const origin = this.editModeOrigin;\n\n this.editModeOrigin = null;\n\n this.defer(() => {\n if (!this.elementRef.nativeElement.isConnected) return;\n\n this.focusViewTabStop(origin ?? 'program');\n });\n }\n\n /**\n * Runs `fn` in the next task, unless the inline edit is gone by then, and keeps the application unstable until\n * then: without zone.js nothing else would make `whenStable` wait for a timer.\n */\n private defer(fn: () => void): void {\n const removeTask = this.pendingTasks.add();\n\n setTimeout(() => {\n try {\n if (!this.destroyRef.destroyed) fn();\n } finally {\n removeTask();\n }\n });\n }\n\n /** Focuses the tab stop of view mode, resolved at call time: the focus anchor is a new node on every return. */\n private focusViewTabStop(origin: FocusOrigin): void {\n this.focusMonitor.focusVia(this.focusAnchor()?.nativeElement ?? this.viewContent().nativeElement, origin);\n }\n\n /** Brings focus back into the editor a rejected value keeps open; only the select path can lose it. */\n private focusRejectedEditor(): void {\n const panel = this.overlayDir()?.overlayRef?.overlayElement;\n\n if (!panel || panel.contains(this.document.activeElement)) return;\n\n this.getTabbableElements(panel).at(0)?.focus();\n }\n\n private detectInteractiveContent(viewContent: HTMLElement, selectors: string[]): void {\n this.hasInteractiveContent.set(!!selectors.length && !!viewContent.querySelector(selectors.join(',')));\n }\n\n private isInteractiveElement(target: EventTarget | null): boolean {\n const selectors = this.interactiveSelectors();\n\n if (!selectors.length || !isElement(target)) return false;\n\n const match = target.closest(selectors.join(','));\n\n // The walk has to stop at the component: an inline edit rendered inside an `<a>` — a clickable table\n // row, say — would otherwise read every click as interactive and could never be opened by pointer.\n return !!match && this.elementRef.nativeElement.contains(match);\n }\n\n /** Saves and hands focus to the tab stop next to the field, opening it when it belongs to another inline edit. */\n private saveAndFocusAdjacentTabStop(event: Event, backwards: boolean): void {\n this.chainingToNextInlineEdit = true;\n\n // A throwing handler of the application's must not leave the flag set: `restoreFocus()` reads it.\n try {\n this.save(event);\n } finally {\n this.chainingToNextInlineEdit = false;\n }\n\n if (this.isInvalid()) {\n this.focusRejectedEditor();\n\n return;\n }\n\n // The chain goes around `restoreFocus()`, which normally consumes it, and into the next session.\n this.editModeOrigin = null;\n\n // Deferred until view mode is rendered: until then the field's own tab stop — the fallback — is missing.\n this.defer(() => {\n if (!this.elementRef.nativeElement.isConnected) return;\n\n const target = this.focusAdjacentTabStop(backwards);\n\n // Nothing took the focus: taking it back beats leaving it on `<body>`, where the next Tab starts over.\n if (!target) {\n this.focusViewTabStop('keyboard');\n\n return;\n }\n\n // An interactive view's tab stop is the anchor beside it, so the neighbour comes from the host element.\n const host = target.closest<HTMLElement>(`.${baseClass}`);\n const next = host ? inlineEditRegistry.get(host) : undefined;\n\n if (!next || next === this || next.disabled() || next.mode() !== 'view') return;\n\n // Tab got us here, so the neighbour has to restore a keyboard focus on the way out — without\n // this it would fall back to `program` and leave a keyboard user without a focus ring.\n next.editModeOrigin = 'keyboard';\n next.toggleMode();\n });\n }\n\n /** Whether saving would send back the value the editor opened with. */\n private isUnchanged(): boolean {\n const compareWith = this.compareWith();\n\n // A failed save left the server on a different value, so the same one is still worth sending.\n if (!compareWith || this.saveStatus() === 'error') return false;\n\n const current = this.getValue();\n const initial = this.initialValue;\n\n // The default `getValue()` returns one entry per form field, so the comparator sees the control values\n // themselves rather than the array holding them.\n if (Array.isArray(current) && Array.isArray(initial)) {\n return (\n current.length === initial.length &&\n current.every((value, index) => runCompareWith(compareWith, value, initial[index]))\n );\n }\n\n return runCompareWith(compareWith, current, initial);\n }\n\n /**\n * Whether any projected control rejects its current value. Read from the control rather than from\n * `KbqFormField.invalid`, which is the cached `ErrorStateMatcher` verdict — `touched || submitted` —\n * and so reports a pristine invalid control as valid. Error *styling* still follows the matcher.\n */\n private isInvalid(): boolean {\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length) return false;\n\n return formFieldRefList.some((ref) => this.getFormControl(ref)?.invalid ?? ref.invalid);\n }\n\n private getValue() {\n const getValueHandler = this.getValueHandler();\n\n if (getValueHandler) return getValueHandler();\n\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length) return;\n\n return this.formFieldRefList().map((ref) => {\n const control = this.coerceControl(ref);\n\n return control instanceof AbstractControl ? control.value : control.value();\n });\n }\n\n private setValue<T>(value: T): void {\n const setValue = this.setValueHandler();\n\n if (setValue) {\n setValue(value);\n\n return;\n }\n\n const formFieldRefList = this.formFieldRefList();\n\n if (!formFieldRefList.length || !Array.isArray(value)) return;\n\n value.forEach((controlValue, index) => {\n const control = this.coerceControl(formFieldRefList[index]);\n\n if (control instanceof AbstractControl) {\n control.setValue(controlValue);\n } else if (isWritableSignal(control.value)) {\n // A control without a form control can still hold a value code writes, as `kbqInput` does.\n control.value.set(controlValue);\n } else if (isValueAccessor(control)) {\n // One holding its value read-only, as the pickers and the tree select do, takes it as from a form.\n control.writeValue(controlValue);\n }\n });\n }\n\n private coerceControl(formFieldRef: KbqFormField) {\n return this.getFormControl(formFieldRef) ?? formFieldRef.control();\n }\n\n private getFormControl(formFieldRef: KbqFormField): AbstractControl | null {\n const { ngControl } = formFieldRef.control();\n\n // The pickers hand over the form control itself: they are value accessors, which cannot inject `NgControl`.\n if (ngControl instanceof AbstractControl) return ngControl;\n\n return ngControl instanceof NgControl ? ngControl.control : null;\n }\n\n private setOverlayWidth(): void {\n const editModeWidth = this.editModeWidth();\n\n if (editModeWidth) {\n this.overlayWidth.set(editModeWidth);\n\n return;\n }\n\n const element: HTMLElement | null = this.label()\n ? this.elementRef.nativeElement.querySelector('.kbq-inline-edit__focus_container')\n : this.elementRef.nativeElement;\n\n if (element) {\n const overlayRef = this.overlayDir().overlayRef;\n\n this.resizeObserver\n .observe(element)\n .pipe(takeUntil(overlayRef.detachments()))\n .subscribe(() => {\n this.overlayWidth.set(element.offsetWidth);\n this.overlayOffsetY.set(-this.overlayOrigin().offsetHeight);\n overlayRef.updatePosition();\n });\n }\n\n this.overlayWidth.set(element?.offsetWidth ?? '');\n }\n\n private openPanel(formFieldRef: KbqFormField) {\n const control = formFieldRef.control();\n\n control?.open?.();\n }\n\n private getInputNativeElement(): HTMLInputElement | HTMLTextAreaElement | null {\n return this.overlayDir()?.overlayRef.overlayElement.querySelector('input:not([type=\"file\"]),textarea') ?? null;\n }\n\n private markAllAsTouched(): void {\n this.formFieldRefList().forEach((formField) => this.getFormControl(formField)?.markAsTouched());\n }\n}\n","<div class=\"kbq-inline-edit__focus_container\">\n <div class=\"cdk-visually-hidden\" role=\"status\" aria-live=\"polite\">{{ saveStatusMessage() }}</div>\n\n @if (label()) {\n <div class=\"kbq-inline-edit__label\">\n <ng-content select=\"kbq-label\" />\n </div>\n }\n\n <div #viewContainer class=\"kbq-inline-edit__view-container\">\n <div\n #viewContent\n class=\"kbq-inline-edit__view-content\"\n [attr.role]=\"viewContentRole()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.aria-label]=\"viewContentRole() ? accessibleName() : null\"\n [attr.aria-expanded]=\"viewContentRole() ? isEditMode() : null\"\n [attr.aria-disabled]=\"viewContentRole() && disabled() ? true : null\"\n >\n <ng-content select=\"[kbqInlineEditViewMode]\" />\n </div>\n\n @if (hasInteractiveContent() && mode() === 'view' && !disabled()) {\n <!-- `aria-expanded` is static: the anchor only exists in view mode, so it is never expanded. -->\n <div\n #focusAnchor\n class=\"kbq-inline-edit__focus-anchor cdk-visually-hidden\"\n aria-expanded=\"false\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"accessibleName()\"\n (focus)=\"anchorFocused.set(true)\"\n (blur)=\"anchorFocused.set(false)\"\n ></div>\n }\n\n @if (menu() && mode() === 'view') {\n <div class=\"kbq-inline-edit__menu-mask\">\n <div class=\"kbq-inline-edit__menu-mask-fade\"></div>\n <div class=\"kbq-inline-edit__menu-mask-container\">\n <ng-content select=\"[kbqInlineEditMenu]\" />\n </div>\n </div>\n }\n\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOpen]=\"isEditMode()\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin()\"\n [cdkConnectedOverlayOffsetY]=\"overlayOffsetY()\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy()\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass()\"\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n (attach)=\"onAttach()\"\n (overlayOutsideClick)=\"onOverlayOutsideClick($event)\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n >\n <div\n #panel\n class=\"kbq-inline-edit__panel\"\n cdkTrapFocusAutoCapture\n [class.kbq-inline-edit__panel_select]=\"isSingleSelect()\"\n [cdkTrapFocus]=\"false\"\n (keydown.escape)=\"onPanelEscape($event)\"\n (keydown.tab)=\"onPanelTab($event, panel, false)\"\n (keydown.shift.tab)=\"onPanelTab($event, panel, true)\"\n >\n <div\n class=\"kbq-inline-edit__control-container\"\n [kbqTooltipColor]=\"colors.Error\"\n [kbqTooltip]=\"validationTooltip() ?? ''\"\n [kbqTooltipDisabled]=\"!validationTooltip()\"\n [kbqTooltipArrow]=\"false\"\n [kbqTrigger]=\"'manual'\"\n [kbqPlacement]=\"tooltipPlacement() ?? placements.TopLeft\"\n [kbqTooltipScrollStrategy]=\"validationTooltipScrollStrategy\"\n >\n <ng-content select=\"[kbqInlineEditEditMode]\" />\n </div>\n\n @if (showActions()) {\n <div\n animate.enter=\"kbq-inline-edit__action-buttons_enter\"\n class=\"kbq-inline-edit__action-buttons\"\n role=\"group\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n >\n <div class=\"kbq-inline-edit__action-button\">\n <button\n kbq-button\n [attr.aria-label]=\"a11yLocaleConfiguration().save\"\n [color]=\"'contrast'\"\n (click)=\"save($event)\"\n >\n <i kbq-icon=\"kbq-check_16\"></i>\n </button>\n </div>\n\n <div class=\"kbq-inline-edit__action-button\">\n <button\n kbq-button\n [attr.aria-label]=\"a11yLocaleConfiguration().cancel\"\n [color]=\"'contrast-fade'\"\n (click)=\"cancel()\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqInlineEdit, KbqInlineEditMenu, KbqInlineEditPlaceholder } from './inline-edit';\n\nconst COMPONENTS = [\n KbqInlineEdit,\n KbqInlineEditPlaceholder,\n KbqInlineEditMenu\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqInlineEditModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|