@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
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `app-switcher-signals` migration.
|
|
5
|
+
*
|
|
6
|
+
* `KbqAppSwitcherTrigger` moved `selectedApp` / `selectedSite` from a plain `@Input()` (plus a matching
|
|
7
|
+
* `output()`) to `model()`, and the review that came with it removed several members that never did anything.
|
|
8
|
+
*
|
|
9
|
+
* Only `selectedApp` is a value-preserving property → signal change, so only it is auto-fixed. `selectedSite`
|
|
10
|
+
* also changed *what it returns* — the old getter handed back the site with its applications already grouped,
|
|
11
|
+
* the model returns the value that was passed in — so a mechanical `()` would silently change the value and it
|
|
12
|
+
* is surfaced as a warning instead.
|
|
13
|
+
*
|
|
14
|
+
* Template *bindings* (`[selectedApp]`, `[(selectedSite)]`, `(selectedAppChange)`) keep working; only
|
|
15
|
+
* programmatic access and reads through a `#ref="kbqAppSwitcher"` break.
|
|
16
|
+
*/
|
|
17
|
+
/** TypeScript type annotation that marks a receiver as the app-switcher trigger. */
|
|
18
|
+
const TRIGGER_TYPE = 'KbqAppSwitcherTrigger';
|
|
19
|
+
/** `exportAs` of the trigger: a `#ref="kbqAppSwitcher"` in a template points at one. */
|
|
20
|
+
const TRIGGER_EXPORT_AS = 'kbqAppSwitcher';
|
|
21
|
+
/** Members whose value is unchanged: a read becomes a call, a write becomes `.set(…)`. Auto-fixed. */
|
|
22
|
+
const SIGNAL_MEMBERS = ['selectedApp'];
|
|
23
|
+
/** Of those, the ones backed by `model()`, so a write can be rewritten rather than left to the compiler. */
|
|
24
|
+
const WRITABLE_MEMBERS = new Set(['selectedApp']);
|
|
25
|
+
/**
|
|
26
|
+
* Methods of the signal/model API. A member access followed by one of these is already migrated — or is the
|
|
27
|
+
* result of the rename below — so no `()` is appended. This is what makes the migration idempotent.
|
|
28
|
+
*/
|
|
29
|
+
const SIGNAL_API_METHODS = new Set(['set', 'update', 'asReadonly', 'subscribe']);
|
|
30
|
+
/**
|
|
31
|
+
* Outputs folded into their model. `ModelSignal` implements `OutputRef`, so `.subscribe(fn)` keeps the exact
|
|
32
|
+
* same signature and the access can simply be renamed; `.emit(v)` has no equivalent and is warned about.
|
|
33
|
+
*/
|
|
34
|
+
const OUTPUT_TO_MODEL = new Map([['selectedAppChange', 'selectedApp']]);
|
|
35
|
+
/**
|
|
36
|
+
* Members accessed on a trigger that changed their value semantics or disappeared. Reported with the file they
|
|
37
|
+
* were found in; never rewritten.
|
|
38
|
+
*/
|
|
39
|
+
const MANUAL_MEMBERS = new Map([
|
|
40
|
+
[
|
|
41
|
+
'selectedSite',
|
|
42
|
+
'`selectedSite` is now a `model()`, and its value changed: the old getter returned the site with its ' +
|
|
43
|
+
'applications already grouped, the model returns the value that was passed in. Read ' +
|
|
44
|
+
'`trigger.selectedSite()` for the raw site or `trigger.parsedSelectedSite()` for the grouped one, ' +
|
|
45
|
+
'and write with `trigger.selectedSite.set(…)`.'
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
'selectedSiteChange',
|
|
49
|
+
'`selectedSiteChange` is now the implicit output of the `selectedSite` model: subscribe with ' +
|
|
50
|
+
'`trigger.selectedSite.subscribe(…)`. It emits the raw site, not the grouped one the old output ' +
|
|
51
|
+
'carried. Replace `.emit(v)` with `trigger.selectedSite.set(v)`.'
|
|
52
|
+
],
|
|
53
|
+
[
|
|
54
|
+
'selectedAppChange',
|
|
55
|
+
'`selectedAppChange` is now the implicit output of the `selectedApp` model: subscribe with ' +
|
|
56
|
+
'`trigger.selectedApp.subscribe(…)` and replace `.emit(v)` with `trigger.selectedApp.set(v)`.'
|
|
57
|
+
],
|
|
58
|
+
[
|
|
59
|
+
'header',
|
|
60
|
+
'`KbqAppSwitcherTrigger.header` was removed — the popup never rendered a header, so the value was ' +
|
|
61
|
+
'pushed into the overlay and dropped. Delete the usage.'
|
|
62
|
+
],
|
|
63
|
+
[
|
|
64
|
+
'footer',
|
|
65
|
+
'`KbqAppSwitcherTrigger.footer` was removed — the popup never rendered a footer, so the value was ' +
|
|
66
|
+
'pushed into the overlay and dropped. Delete the usage.'
|
|
67
|
+
]
|
|
68
|
+
]);
|
|
69
|
+
/**
|
|
70
|
+
* Warnings for `.ts` files. Checked against the post-fix content, so an auto-fixed usage does not also produce
|
|
71
|
+
* a "manual migration required" note. Only evaluated for files that reference the app-switcher, which is what
|
|
72
|
+
* keeps the looser patterns (`getIcon(`, `icon:`) scoped.
|
|
73
|
+
*/
|
|
74
|
+
const tsWarnPatterns = [
|
|
75
|
+
{
|
|
76
|
+
pattern: '\\b(?:isTrapFocus|updateTrapFocus)\\b',
|
|
77
|
+
message: '`KbqAppSwitcherComponent.isTrapFocus` / `updateTrapFocus()` were removed: the template never ' +
|
|
78
|
+
'bound `[cdkTrapFocus]`, so neither did anything. Delete the usage.'
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
// Protected, so only a subclass reaches them.
|
|
82
|
+
pattern: '\\b(?:this|super)\\.active(?:Site|App)\\b',
|
|
83
|
+
message: '`KbqAppSwitcherComponent.activeSite` / `activeApp` were removed: each flyout reads its site and app ' +
|
|
84
|
+
'from the context of its `kbqDropdownContent` template, which `kbqDropdownTriggerData` fills. Read ' +
|
|
85
|
+
'them there.'
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
pattern: '\\bgetIcon\\s*\\(',
|
|
89
|
+
message: '`KbqAppSwitcherDropdownApp.getIcon()` was removed. Inline `icon` markup is now sanitized by ' +
|
|
90
|
+
'`KbqAppSwitcherIconSanitizer` and rendered by the component itself — drop the call.'
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
pattern: '\\bKbqAppSwitcherListItem\\b',
|
|
94
|
+
message: '`KbqAppSwitcherListItem.collapsed` is now a `model()`: read it as `collapsed()` and write it as ' +
|
|
95
|
+
'`collapsed.set(v)`. Its `app` input became `input.required`, so it must be bound.'
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
pattern: '\\bKbqAppSwitcherDropdown(?:App|Site)\\b',
|
|
99
|
+
message: 'The `app` / `site` inputs of `KbqAppSwitcherDropdownApp` / `KbqAppSwitcherDropdownSite` are now ' +
|
|
100
|
+
'`input.required` signals and must be bound.'
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
pattern: '\\bicon\\s*:',
|
|
104
|
+
message: 'Inline `icon` SVG markup is now sanitized against a strict SVG allow-list before it is rendered: ' +
|
|
105
|
+
'`<script>`, `<style>`, `<foreignObject>`, HTML elements, every `on*` handler and any external ' +
|
|
106
|
+
'reference are removed, and markup that changes shape when re-parsed is dropped entirely (the row ' +
|
|
107
|
+
'then falls back to `iconSrc`). Check icons that rely on any of those.'
|
|
108
|
+
}
|
|
109
|
+
];
|
|
110
|
+
/**
|
|
111
|
+
* Behaviour changes that no usage pattern can point at, printed once per run.
|
|
112
|
+
*/
|
|
113
|
+
const BEHAVIOUR_NOTE = [
|
|
114
|
+
'Behaviour changes with no call site to migrate:',
|
|
115
|
+
'- KbqAppSwitcherModule no longer provides FocusTrapFactory / FOCUS_TRAP_INERT_STRATEGY. The app-switcher',
|
|
116
|
+
' never rendered a focus trap, and those providers are injector-wide: they disabled the CDK inert',
|
|
117
|
+
' strategy for every other focus trap in the same scope. If your app relied on that, provide them',
|
|
118
|
+
' explicitly where they are actually needed.',
|
|
119
|
+
'- defaultGroupBy now identifies a synthetic group by its type name instead of an empty `id`.',
|
|
120
|
+
'- The popup hides itself when it scrolls out of an ancestor marked `kbq-hide-nested-popup`. The guard',
|
|
121
|
+
' that used to suppress this never passed, so the behaviour is effectively new.'
|
|
122
|
+
];
|
|
123
|
+
/** Reported when a template names the trigger but cannot be parsed, so nothing was rewritten in it. */
|
|
124
|
+
const UNPARSEABLE_TEMPLATE_MESSAGE = 'This template references the app-switcher but could not be parsed, so it was left untouched. ' +
|
|
125
|
+
'Migrate reads through its template reference variable by hand.';
|
|
126
|
+
|
|
127
|
+
exports.BEHAVIOUR_NOTE = BEHAVIOUR_NOTE;
|
|
128
|
+
exports.MANUAL_MEMBERS = MANUAL_MEMBERS;
|
|
129
|
+
exports.OUTPUT_TO_MODEL = OUTPUT_TO_MODEL;
|
|
130
|
+
exports.SIGNAL_API_METHODS = SIGNAL_API_METHODS;
|
|
131
|
+
exports.SIGNAL_MEMBERS = SIGNAL_MEMBERS;
|
|
132
|
+
exports.TRIGGER_EXPORT_AS = TRIGGER_EXPORT_AS;
|
|
133
|
+
exports.TRIGGER_TYPE = TRIGGER_TYPE;
|
|
134
|
+
exports.UNPARSEABLE_TEMPLATE_MESSAGE = UNPARSEABLE_TEMPLATE_MESSAGE;
|
|
135
|
+
exports.WRITABLE_MEMBERS = WRITABLE_MEMBERS;
|
|
136
|
+
exports.tsWarnPatterns = tsWarnPatterns;
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var ts = require('typescript');
|
|
6
|
+
var utils_ast = require('../../utils/ast.cjs');
|
|
7
|
+
var utils_messages = require('../../utils/messages.cjs');
|
|
8
|
+
var utils_packageConfig = require('../../utils/package-config.cjs');
|
|
9
|
+
var utils_projectFiles = require('../../utils/project-files.cjs');
|
|
10
|
+
var utils_typescript = require('../../utils/typescript.cjs');
|
|
11
|
+
var migrations_appSwitcherSignals_data = require('./data.cjs');
|
|
12
|
+
require('@angular-devkit/schematics');
|
|
13
|
+
require('@schematics/angular/utility');
|
|
14
|
+
|
|
15
|
+
const TS_EXT = '.ts';
|
|
16
|
+
const HTML_EXT = '.html';
|
|
17
|
+
const LABEL = '[app-switcher-signals]';
|
|
18
|
+
function escapeRegExp(value) {
|
|
19
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
20
|
+
}
|
|
21
|
+
/** Applies text-span edits to `content`, right-to-left, so earlier edits don't shift later offsets. */
|
|
22
|
+
function applyEdits(content, edits) {
|
|
23
|
+
const sorted = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);
|
|
24
|
+
let result = content;
|
|
25
|
+
for (const { start, end, text } of sorted) {
|
|
26
|
+
result = result.slice(0, start) + text + result.slice(end);
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
const isFunctionLike = (node) => ts.isFunctionDeclaration(node) ||
|
|
31
|
+
ts.isMethodDeclaration(node) ||
|
|
32
|
+
ts.isConstructorDeclaration(node) ||
|
|
33
|
+
ts.isArrowFunction(node) ||
|
|
34
|
+
ts.isFunctionExpression(node) ||
|
|
35
|
+
ts.isGetAccessorDeclaration(node) ||
|
|
36
|
+
ts.isSetAccessorDeclaration(node);
|
|
37
|
+
/** Walks up from `node` to the nearest ancestor matching `predicate`. */
|
|
38
|
+
function findAncestor(node, predicate) {
|
|
39
|
+
let current = node.parent;
|
|
40
|
+
while (current) {
|
|
41
|
+
if (predicate(current))
|
|
42
|
+
return current;
|
|
43
|
+
current = current.parent;
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
/** Whether a type annotation refers to the trigger (`KbqAppSwitcherTrigger`). */
|
|
48
|
+
function isTriggerType(type) {
|
|
49
|
+
return (!!type && ts.isTypeReferenceNode(type) && ts.isIdentifier(type.typeName) && type.typeName.text === migrations_appSwitcherSignals_data.TRIGGER_TYPE);
|
|
50
|
+
}
|
|
51
|
+
const FIELD_MODIFIERS = new Set([
|
|
52
|
+
ts.SyntaxKind.PrivateKeyword,
|
|
53
|
+
ts.SyntaxKind.PublicKeyword,
|
|
54
|
+
ts.SyntaxKind.ProtectedKeyword,
|
|
55
|
+
ts.SyntaxKind.ReadonlyKeyword
|
|
56
|
+
]);
|
|
57
|
+
/**
|
|
58
|
+
* Collects the receivers whose static type is the trigger, by explicit annotation only (no cross-package type
|
|
59
|
+
* resolution): method/function params, class fields (incl. `@ViewChild(KbqAppSwitcherTrigger) x:
|
|
60
|
+
* KbqAppSwitcherTrigger` and constructor parameter-properties) and typed locals.
|
|
61
|
+
*/
|
|
62
|
+
function collectReceivers(sourceFile) {
|
|
63
|
+
const receivers = [];
|
|
64
|
+
const add = (text, scope) => receivers.push({ text, start: scope.getStart(sourceFile), end: scope.getEnd() });
|
|
65
|
+
const visit = (node) => {
|
|
66
|
+
if (ts.isParameter(node) && ts.isIdentifier(node.name) && isTriggerType(node.type)) {
|
|
67
|
+
add(node.name.text, findAncestor(node, isFunctionLike) ?? sourceFile);
|
|
68
|
+
// A constructor parameter-property is also a class field, reachable as `this.<name>`.
|
|
69
|
+
if (node.modifiers?.some((modifier) => FIELD_MODIFIERS.has(modifier.kind))) {
|
|
70
|
+
const owner = findAncestor(node, ts.isClassDeclaration);
|
|
71
|
+
if (owner)
|
|
72
|
+
add(`this.${node.name.text}`, owner);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (ts.isPropertyDeclaration(node) && ts.isIdentifier(node.name) && isTriggerType(node.type)) {
|
|
76
|
+
const owner = findAncestor(node, ts.isClassDeclaration);
|
|
77
|
+
if (owner)
|
|
78
|
+
add(`this.${node.name.text}`, owner);
|
|
79
|
+
}
|
|
80
|
+
else if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && isTriggerType(node.type)) {
|
|
81
|
+
add(node.name.text, findAncestor(node, isFunctionLike) ?? sourceFile);
|
|
82
|
+
}
|
|
83
|
+
node.forEachChild(visit);
|
|
84
|
+
};
|
|
85
|
+
visit(sourceFile);
|
|
86
|
+
return receivers;
|
|
87
|
+
}
|
|
88
|
+
/** Whether a property access on a receiver is within one of the receiver's scopes. */
|
|
89
|
+
function inReceiverScope(node, sourceFile, receivers) {
|
|
90
|
+
const receiverText = node.expression.getText(sourceFile);
|
|
91
|
+
const start = node.getStart(sourceFile);
|
|
92
|
+
const end = node.getEnd();
|
|
93
|
+
return receivers.some((r) => r.text === receiverText && start >= r.start && end <= r.end);
|
|
94
|
+
}
|
|
95
|
+
/** The signal/model method a member access is immediately followed by, if any (`x.selectedApp.set`). */
|
|
96
|
+
function followedByMethod(node) {
|
|
97
|
+
const parent = node.parent;
|
|
98
|
+
return ts.isPropertyAccessExpression(parent) && parent.expression === node ? parent.name.text : undefined;
|
|
99
|
+
}
|
|
100
|
+
/** Classifies a matched property access of a value-safe signal member and appends the resulting edit(s). */
|
|
101
|
+
function classifySignalAccess(node, sourceFile, edits) {
|
|
102
|
+
const parent = node.parent;
|
|
103
|
+
// Already migrated: `x.selectedApp()` (call) or `x.selectedApp.set(…)` / `.subscribe(…)` — leave alone.
|
|
104
|
+
if (ts.isCallExpression(parent) && parent.expression === node)
|
|
105
|
+
return;
|
|
106
|
+
const method = followedByMethod(node);
|
|
107
|
+
if (method && migrations_appSwitcherSignals_data.SIGNAL_API_METHODS.has(method))
|
|
108
|
+
return;
|
|
109
|
+
// Write target: `x.selectedApp = RHS` → `x.selectedApp.set(RHS)`.
|
|
110
|
+
if (ts.isBinaryExpression(parent) &&
|
|
111
|
+
parent.left === node &&
|
|
112
|
+
parent.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
113
|
+
if (migrations_appSwitcherSignals_data.WRITABLE_MEMBERS.has(node.name.text)) {
|
|
114
|
+
const rhs = parent.right;
|
|
115
|
+
edits.push({ start: node.getEnd(), end: rhs.getStart(sourceFile), text: '.set(' });
|
|
116
|
+
edits.push({ start: rhs.getEnd(), end: rhs.getEnd(), text: ')' });
|
|
117
|
+
}
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
// Read (incl. optional chain `x?.selectedApp`): append `()`.
|
|
121
|
+
edits.push({ start: node.getEnd(), end: node.getEnd(), text: '()' });
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Renames an output that became the implicit output of a model, but only where the two are interchangeable:
|
|
125
|
+
* `x.selectedAppChange.subscribe(fn)` → `x.selectedApp.subscribe(fn)`, because `ModelSignal` implements
|
|
126
|
+
* `OutputRef`. Anything else (notably `.emit(v)`) is left for the warning.
|
|
127
|
+
*/
|
|
128
|
+
function classifyOutputAccess(node, edits) {
|
|
129
|
+
const model = migrations_appSwitcherSignals_data.OUTPUT_TO_MODEL.get(node.name.text);
|
|
130
|
+
if (!model || followedByMethod(node) !== 'subscribe')
|
|
131
|
+
return;
|
|
132
|
+
edits.push({ start: node.name.getStart(node.getSourceFile()), end: node.name.getEnd(), text: model });
|
|
133
|
+
}
|
|
134
|
+
/** Collects edits for every access of a migratable member on a known trigger receiver. */
|
|
135
|
+
function collectAccessEdits(sourceFile, receivers) {
|
|
136
|
+
const edits = [];
|
|
137
|
+
const visit = (node) => {
|
|
138
|
+
if (ts.isPropertyAccessExpression(node) &&
|
|
139
|
+
ts.isIdentifier(node.name) &&
|
|
140
|
+
inReceiverScope(node, sourceFile, receivers)) {
|
|
141
|
+
if (migrations_appSwitcherSignals_data.SIGNAL_MEMBERS.includes(node.name.text))
|
|
142
|
+
classifySignalAccess(node, sourceFile, edits);
|
|
143
|
+
else
|
|
144
|
+
classifyOutputAccess(node, edits);
|
|
145
|
+
}
|
|
146
|
+
node.forEachChild(visit);
|
|
147
|
+
};
|
|
148
|
+
visit(sourceFile);
|
|
149
|
+
return edits;
|
|
150
|
+
}
|
|
151
|
+
/** Pass A — rewrite value-safe programmatic accesses of trigger signal members in TypeScript code. */
|
|
152
|
+
function migrateTsExpressions(content, fileName) {
|
|
153
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
154
|
+
const receivers = collectReceivers(sourceFile);
|
|
155
|
+
if (receivers.length === 0)
|
|
156
|
+
return content;
|
|
157
|
+
const edits = collectAccessEdits(sourceFile, receivers);
|
|
158
|
+
return edits.length > 0 ? applyEdits(content, edits) : content;
|
|
159
|
+
}
|
|
160
|
+
/** Members needing manual migration, found on a trigger receiver in TypeScript code. */
|
|
161
|
+
function collectManualMembers(content, fileName) {
|
|
162
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
163
|
+
const receivers = collectReceivers(sourceFile);
|
|
164
|
+
const found = new Set();
|
|
165
|
+
if (receivers.length === 0)
|
|
166
|
+
return found;
|
|
167
|
+
const visit = (node) => {
|
|
168
|
+
if (ts.isPropertyAccessExpression(node) &&
|
|
169
|
+
ts.isIdentifier(node.name) &&
|
|
170
|
+
migrations_appSwitcherSignals_data.MANUAL_MEMBERS.has(node.name.text) &&
|
|
171
|
+
inReceiverScope(node, sourceFile, receivers)) {
|
|
172
|
+
found.add(node.name.text);
|
|
173
|
+
}
|
|
174
|
+
node.forEachChild(visit);
|
|
175
|
+
};
|
|
176
|
+
visit(sourceFile);
|
|
177
|
+
return found;
|
|
178
|
+
}
|
|
179
|
+
/** Collects template reference variable names exported as the trigger (`#ref="kbqAppSwitcher"`). */
|
|
180
|
+
class TriggerRefCollector {
|
|
181
|
+
constructor() {
|
|
182
|
+
this.refs = new Set();
|
|
183
|
+
}
|
|
184
|
+
visitElement(element) {
|
|
185
|
+
for (const attr of element.attrs ?? []) {
|
|
186
|
+
if (typeof attr.name !== 'string' || attr.value !== migrations_appSwitcherSignals_data.TRIGGER_EXPORT_AS)
|
|
187
|
+
continue;
|
|
188
|
+
if (attr.name.startsWith('#'))
|
|
189
|
+
this.refs.add(attr.name.slice(1));
|
|
190
|
+
else if (attr.name.startsWith('ref-'))
|
|
191
|
+
this.refs.add(attr.name.slice(4));
|
|
192
|
+
}
|
|
193
|
+
this.visitChildren(element);
|
|
194
|
+
}
|
|
195
|
+
visitBlock(block) {
|
|
196
|
+
this.visitChildren(block);
|
|
197
|
+
}
|
|
198
|
+
visitChildren(node) {
|
|
199
|
+
for (const child of node.children ?? []) {
|
|
200
|
+
child.visit(this);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
visitAttribute() { }
|
|
204
|
+
visitText() { }
|
|
205
|
+
visitComment() { }
|
|
206
|
+
visitExpansion() { }
|
|
207
|
+
visitExpansionCase() { }
|
|
208
|
+
visitBlockParameter() { }
|
|
209
|
+
visitLetDeclaration() { }
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Matches `<ref>.<member>` where the access is neither already a call nor a signal-API call. `\b` after the
|
|
213
|
+
* member keeps `selectedApp` from matching inside `selectedAppChange`.
|
|
214
|
+
*/
|
|
215
|
+
function memberAccessPattern(ref, members) {
|
|
216
|
+
const methods = [...migrations_appSwitcherSignals_data.SIGNAL_API_METHODS].join('|');
|
|
217
|
+
return new RegExp(`\\b(${escapeRegExp(ref)})\\.(${members.join('|')})\\b(?!\\s*\\()(?!\\s*\\.\\s*(?:${methods})\\b)`, 'g');
|
|
218
|
+
}
|
|
219
|
+
/** Rewrites `ref.selectedApp` reads to `ref.selectedApp()` for the given refs. */
|
|
220
|
+
function rewriteRefReads(template, refs) {
|
|
221
|
+
let content = template;
|
|
222
|
+
let changed = false;
|
|
223
|
+
for (const ref of refs) {
|
|
224
|
+
const next = content.replace(memberAccessPattern(ref, migrations_appSwitcherSignals_data.SIGNAL_MEMBERS), '$1.$2()');
|
|
225
|
+
if (next !== content) {
|
|
226
|
+
content = next;
|
|
227
|
+
changed = true;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return { content, changed };
|
|
231
|
+
}
|
|
232
|
+
/** Members needing manual migration, read through a trigger reference variable in a template. */
|
|
233
|
+
function collectRefManualMembers(template, refs) {
|
|
234
|
+
const members = [...migrations_appSwitcherSignals_data.MANUAL_MEMBERS.keys()];
|
|
235
|
+
const found = new Set();
|
|
236
|
+
for (const ref of refs) {
|
|
237
|
+
// `\bref\.(member)\b` — a template can only read these, so no call/method exclusions are needed.
|
|
238
|
+
const pattern = new RegExp(`\\b${escapeRegExp(ref)}\\.(${members.join('|')})\\b`, 'g');
|
|
239
|
+
for (const match of template.matchAll(pattern)) {
|
|
240
|
+
found.add(match[1]);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return found;
|
|
244
|
+
}
|
|
245
|
+
const untouched = (template) => ({
|
|
246
|
+
content: template,
|
|
247
|
+
changed: false,
|
|
248
|
+
manual: new Set(),
|
|
249
|
+
unparseable: false
|
|
250
|
+
});
|
|
251
|
+
/** Pass B (core) — parse a template, discover trigger refs, rewrite their value-safe reads. */
|
|
252
|
+
async function migrateTemplate(template) {
|
|
253
|
+
if (!template.includes(migrations_appSwitcherSignals_data.TRIGGER_EXPORT_AS))
|
|
254
|
+
return untouched(template);
|
|
255
|
+
const parsed = await utils_typescript.parseTemplate(template);
|
|
256
|
+
if (!parsed.tree)
|
|
257
|
+
return { ...untouched(template), unparseable: true };
|
|
258
|
+
const collector = new TriggerRefCollector();
|
|
259
|
+
utils_ast.visitAll(collector, parsed.tree.rootNodes);
|
|
260
|
+
if (collector.refs.size === 0)
|
|
261
|
+
return untouched(template);
|
|
262
|
+
const refs = [...collector.refs];
|
|
263
|
+
return { ...rewriteRefReads(template, refs), manual: collectRefManualMembers(template, refs), unparseable: false };
|
|
264
|
+
}
|
|
265
|
+
/** Pass B (inline) — rewrite trigger ref reads inside inline component templates. */
|
|
266
|
+
async function migrateInlineTemplates(content, fileName) {
|
|
267
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
268
|
+
const manual = new Set();
|
|
269
|
+
let result = content;
|
|
270
|
+
let unparseable = false;
|
|
271
|
+
// Splice right-to-left so earlier offsets stay valid.
|
|
272
|
+
for (const { start, end } of utils_typescript.collectInlineTemplateRanges(sourceFile).sort((a, b) => b.start - a.start)) {
|
|
273
|
+
const migrated = await migrateTemplate(result.slice(start, end));
|
|
274
|
+
migrated.manual.forEach((member) => manual.add(member));
|
|
275
|
+
unparseable ||= migrated.unparseable;
|
|
276
|
+
if (migrated.changed) {
|
|
277
|
+
result = result.slice(0, start) + migrated.content + result.slice(end);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return { content: result, manual, unparseable };
|
|
281
|
+
}
|
|
282
|
+
function logPatternWarnings(context, filePath, content) {
|
|
283
|
+
for (const { pattern, message } of migrations_appSwitcherSignals_data.tsWarnPatterns) {
|
|
284
|
+
if (new RegExp(pattern).test(content)) {
|
|
285
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
function logManualMembers(context, filePath, members) {
|
|
290
|
+
for (const member of members) {
|
|
291
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_appSwitcherSignals_data.MANUAL_MEMBERS.get(member)}`]);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/** A `.ts` file is an app-switcher consumer if it names one of its symbols or imports the package. */
|
|
295
|
+
function referencesAppSwitcher(content) {
|
|
296
|
+
return /\bKbqAppSwitcher\w*\b/.test(content) || content.includes('@koobiq/components/app-switcher');
|
|
297
|
+
}
|
|
298
|
+
function appSwitcherSignals(options) {
|
|
299
|
+
return async (tree, context) => {
|
|
300
|
+
const { project } = options;
|
|
301
|
+
// `ng update` invokes migrations with no options at all, and migrations.json declares no schema, so the
|
|
302
|
+
// schema default never reaches us — applying the fix is the intended behaviour there.
|
|
303
|
+
const fix = options.fix ?? true;
|
|
304
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
305
|
+
const root = projectDefinition?.root ?? '';
|
|
306
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
307
|
+
const tsPaths = [];
|
|
308
|
+
const htmlPaths = [];
|
|
309
|
+
utils_projectFiles.visitProjectFiles(rootDir, (filePath) => {
|
|
310
|
+
if (filePath.endsWith(TS_EXT))
|
|
311
|
+
tsPaths.push(filePath);
|
|
312
|
+
else if (filePath.endsWith(HTML_EXT))
|
|
313
|
+
htmlPaths.push(filePath);
|
|
314
|
+
});
|
|
315
|
+
let touched = 0;
|
|
316
|
+
const commit = (filePath, original, updated) => {
|
|
317
|
+
if (updated === original)
|
|
318
|
+
return;
|
|
319
|
+
touched++;
|
|
320
|
+
if (fix) {
|
|
321
|
+
tree.overwrite(filePath, updated);
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]);
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
for (const filePath of tsPaths) {
|
|
328
|
+
const original = tree.read(filePath)?.toString();
|
|
329
|
+
if (!original || !referencesAppSwitcher(original))
|
|
330
|
+
continue;
|
|
331
|
+
const withExpressions = migrateTsExpressions(original, filePath);
|
|
332
|
+
const inline = await migrateInlineTemplates(withExpressions, filePath);
|
|
333
|
+
const content = inline.content;
|
|
334
|
+
// Warn on what is left over, so an auto-fixed usage does not also produce a "manual migration
|
|
335
|
+
// required" note. In dry-run mode the fix is not written, so report against the original.
|
|
336
|
+
const reported = fix ? content : original;
|
|
337
|
+
logPatternWarnings(context, filePath, reported);
|
|
338
|
+
logManualMembers(context, filePath, collectManualMembers(reported, filePath));
|
|
339
|
+
logManualMembers(context, filePath, inline.manual);
|
|
340
|
+
if (inline.unparseable) {
|
|
341
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_appSwitcherSignals_data.UNPARSEABLE_TEMPLATE_MESSAGE}`]);
|
|
342
|
+
}
|
|
343
|
+
commit(filePath, original, content);
|
|
344
|
+
}
|
|
345
|
+
for (const filePath of htmlPaths) {
|
|
346
|
+
const original = tree.read(filePath)?.toString();
|
|
347
|
+
if (!original)
|
|
348
|
+
continue;
|
|
349
|
+
const migrated = await migrateTemplate(original);
|
|
350
|
+
logManualMembers(context, filePath, migrated.manual);
|
|
351
|
+
if (migrated.unparseable) {
|
|
352
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_appSwitcherSignals_data.UNPARSEABLE_TEMPLATE_MESSAGE}`]);
|
|
353
|
+
}
|
|
354
|
+
if (migrated.changed)
|
|
355
|
+
commit(filePath, original, migrated.content);
|
|
356
|
+
}
|
|
357
|
+
utils_messages.logMessage(context.logger, [
|
|
358
|
+
`${LABEL} processed tree under "${root || '<workspace root>'}", ` +
|
|
359
|
+
`${fix ? 'updated' : 'would update'} ${touched} file(s).`,
|
|
360
|
+
'',
|
|
361
|
+
...migrations_appSwitcherSignals_data.BEHAVIOUR_NOTE
|
|
362
|
+
]);
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
exports.default = appSwitcherSignals;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-app-switcher-signals",
|
|
4
|
+
"title": "Koobiq components app-switcher signals migration",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"project": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Name of the project to migrate. If omitted, the migration runs over the whole tree.",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "projectName"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"fix": {
|
|
15
|
+
"type": "boolean",
|
|
16
|
+
"default": true,
|
|
17
|
+
"description": "When true, applies all auto-fix replacements. When false, prints what would change without writing."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -16,13 +16,13 @@ lay out differently without any error.
|
|
|
16
16
|
Usage for Angular Cli:
|
|
17
17
|
|
|
18
18
|
```shell
|
|
19
|
-
ng g @koobiq/components:autocomplete-panel-width-auto --project <your project>
|
|
19
|
+
ng g @koobiq/components:autocomplete-panel-width-auto --project "<your project>"
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Usage for Nx:
|
|
23
23
|
|
|
24
24
|
```shell
|
|
25
|
-
nx g @koobiq/components:autocomplete-panel-width-auto --project <your project>
|
|
25
|
+
nx g @koobiq/components:autocomplete-panel-width-auto --project "<your project>"
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
### Run locally
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var utils_angularParsing = require('../../utils/angular-parsing.
|
|
6
|
-
var utils_packageConfig = require('../../utils/package-config.
|
|
7
|
-
var utils_typescript = require('../../utils/typescript.
|
|
5
|
+
var utils_angularParsing = require('../../utils/angular-parsing.cjs');
|
|
6
|
+
var utils_packageConfig = require('../../utils/package-config.cjs');
|
|
7
|
+
var utils_typescript = require('../../utils/typescript.cjs');
|
|
8
8
|
require('typescript');
|
|
9
|
-
require('../../utils/ast.
|
|
9
|
+
require('../../utils/ast.cjs');
|
|
10
10
|
require('@angular-devkit/schematics');
|
|
11
11
|
require('@schematics/angular/utility');
|
|
12
|
-
require('../../utils/messages.
|
|
12
|
+
require('../../utils/messages.cjs');
|
|
13
|
+
require('../../utils/project-files.cjs');
|
|
13
14
|
|
|
14
15
|
const migrationData = {
|
|
15
16
|
elementName: 'kbq-autocomplete',
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# autocomplete-signals
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@21` (registered for
|
|
4
|
+
`21.0.0-0`). Migrates `KbqAutocomplete` and `KbqAutocompleteTrigger` consumers to the finished
|
|
5
|
+
signal-based API.
|
|
6
|
+
|
|
7
|
+
## Background
|
|
8
|
+
|
|
9
|
+
Four accessor inputs and one write-target input survived the automated signal migration. `classList`
|
|
10
|
+
was the odd one: declared `@Input('class')`, its setter accumulated class names into an object that
|
|
11
|
+
the panel template binds, and cleared the host's `className` as a side effect. It is an internal
|
|
12
|
+
`computed` now, fed by a `class` signal input — `class="..."` on `<kbq-autocomplete>` keeps working
|
|
13
|
+
exactly as before.
|
|
14
|
+
|
|
15
|
+
`isOpen` was asymmetric: `set isOpen(v)` stored a flag, `get isOpen()` returned that flag **and**
|
|
16
|
+
`showPanel`. Writing `true` and reading it back returned `false` whenever the panel had no options.
|
|
17
|
+
It is a `computed` now — `attached() && showPanel()` — with `attached` as the writable half the
|
|
18
|
+
trigger owns.
|
|
19
|
+
|
|
20
|
+
## What it rewrites
|
|
21
|
+
|
|
22
|
+
| Before | After |
|
|
23
|
+
| ------------------------------------ | ---------------------------------------- |
|
|
24
|
+
| `autocomplete.autoActiveFirstOption` | `autocomplete.autoActiveFirstOption()` |
|
|
25
|
+
| `autocomplete.openOnFocus` | `autocomplete.openOnFocus()` |
|
|
26
|
+
| `autocomplete.showPanel` / `.isOpen` | `autocomplete.showPanel()` / `.isOpen()` |
|
|
27
|
+
| `autocomplete.showPanel = v` | `autocomplete.showPanel.set(v)` |
|
|
28
|
+
| `autocomplete.displayWith(value)` | `autocomplete.displayWith()(value)` |
|
|
29
|
+
| `trigger.autocompleteDisabled` | `trigger.autocompleteDisabled()` |
|
|
30
|
+
|
|
31
|
+
On receivers explicitly typed `KbqAutocomplete` or `KbqAutocompleteTrigger`, and through template
|
|
32
|
+
reference variables — `#auto` on `<kbq-autocomplete>`, `#auto="kbqAutocomplete"` and
|
|
33
|
+
`#t="kbqAutocompleteTrigger"` — in external and inline templates. Each reference only gets the members
|
|
34
|
+
its own type owns, so `autocompleteDisabled` is rewritten on a trigger reference and nowhere else.
|
|
35
|
+
Already-migrated reads are left alone, so the schematic is idempotent.
|
|
36
|
+
|
|
37
|
+
`displayWith` is the one member whose value is a function, so the read and the invocation are separate
|
|
38
|
+
calls: an existing `displayWith(value)` is a pre-migration invocation, not a migrated read.
|
|
39
|
+
|
|
40
|
+
## What it does _not_ do
|
|
41
|
+
|
|
42
|
+
| Pattern | Manual migration |
|
|
43
|
+
| --------------------------------------- | ------------------------------------------------------------------------ |
|
|
44
|
+
| `.classList` | Set `class` on `<kbq-autocomplete>`; the classes still land on the panel |
|
|
45
|
+
| `.isOpen = …` | `attached.set(…)` — but this is the trigger's own state |
|
|
46
|
+
| `.displayWith = …` / `.openOnFocus = …` | These are `input()`s now; bind them in the template |
|
|
47
|
+
| `viewChild(KbqAutocomplete)` | The query is a signal too, so a read through it is a double call |
|
|
48
|
+
|
|
49
|
+
`@ViewChild(KbqAutocomplete) a: KbqAutocomplete` is a plain annotated field, so it is rewritten like
|
|
50
|
+
any other receiver — `this.a.isOpen()`, a single call. Only the signal-query form needs the double
|
|
51
|
+
call.
|
|
52
|
+
|
|
53
|
+
## What it cannot see
|
|
54
|
+
|
|
55
|
+
Receivers are found by explicit type annotation, with no cross-package type resolution. A non-null
|
|
56
|
+
assertion, parentheses and an aliased import are seen through; a type named in a position that does
|
|
57
|
+
not resolve to a single identifier — a union, an array, a `QueryList<…>`, a cast, a return type — is
|
|
58
|
+
reported with its line number rather than rewritten, and so is `a['isOpen']` or
|
|
59
|
+
`const { isOpen } = a`.
|
|
60
|
+
|
|
61
|
+
Templates report rather than rewrite when they cannot be parsed, and skip a reference whose name a
|
|
62
|
+
`@for` variable, an `@let` or another `#ref` also introduces. A reference is rewritten only inside the
|
|
63
|
+
embedded view that declares it.
|
|
64
|
+
|
|
65
|
+
## Notes with no call site to point at
|
|
66
|
+
|
|
67
|
+
- **`autoActiveFirstOption`, `openOnFocus` and `kbqAutocompleteDisabled` are `booleanAttribute`
|
|
68
|
+
inputs.** For `autoActiveFirstOption` and `kbqAutocompleteDisabled` that matches the
|
|
69
|
+
`coerceBooleanProperty` they already used, so nothing changes. `openOnFocus` had no coercion at all:
|
|
70
|
+
a valueless attribute or `0` used to read as false and now means `true`, and `'false'` used to read
|
|
71
|
+
as true and now means `false`.
|
|
72
|
+
- **Binding `[autoActiveFirstOption]` overrides `KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS`,** even when the
|
|
73
|
+
bound value is `undefined` — as it did before, because the old setter coerced every binding write.
|
|
74
|
+
The token default only applies to an input nobody bound, so leave it unbound to let the token decide.
|
|
75
|
+
- **Generated panel ids come from the CDK `_IdGenerator`.** With the default `APP_ID` the shape is
|
|
76
|
+
unchanged (`kbq-autocomplete-0`, `kbq-autocomplete-1`, …); an app or test that sets a custom `APP_ID`
|
|
77
|
+
now gets it embedded, e.g. `kbq-autocomplete-a1` under TestBed. The id is the panel element's `id`.
|
|
78
|
+
|
|
79
|
+
- **Classes from the `class` attribute replace each other on the panel instead of accumulating.** The
|
|
80
|
+
old setter merged every value it was given into an object it never cleared, so a `[class]` binding
|
|
81
|
+
that changed from `"a"` to `"b"` left the panel with both.
|
|
82
|
+
|
|
83
|
+
`options` stays a `QueryList` content query: `ActiveDescendantKeyManager` and the panel-closing
|
|
84
|
+
stream both rely on its `changes` semantics.
|
|
85
|
+
|
|
86
|
+
## Running it manually
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
ng generate @koobiq/components:autocomplete-signals --project my-app
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Pass `--fix=false` to see what it would change without writing.
|