@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,116 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `link-signals` migration.
|
|
5
|
+
*
|
|
6
|
+
* The three inputs the automated signal migration skipped were all accessors, and each of them did
|
|
7
|
+
* something beyond storing a value.
|
|
8
|
+
*
|
|
9
|
+
* - `link.disabled` → `link.disabled()` (auto-fixed, with a caveat about what it reports)
|
|
10
|
+
* - `link.tabIndex` → a signal whose value changed: the getter folded in the disabled state (warn)
|
|
11
|
+
* - `link.print` → was write-only (a setter with no getter), so it has no read to rewrite (warn on writes)
|
|
12
|
+
* - the icon and print bookkeeping → `protected`, `private` or gone (warn)
|
|
13
|
+
*
|
|
14
|
+
* `disabledSignal` stays a public `WritableSignal<boolean>`: `kbqTooltip` accepts a link through
|
|
15
|
+
* `forDisabledComponent` and reads it, and that contract is typed on the tooltip side.
|
|
16
|
+
*/
|
|
17
|
+
/** Members of `KbqLink` a read of which must become a call. Auto-fixed. */
|
|
18
|
+
const SIGNAL_MEMBERS = ['disabled'];
|
|
19
|
+
/** Signal-API methods reachable on a signal; a read followed by one is already migrated. */
|
|
20
|
+
const SIGNAL_API_METHODS = new Set(['set', 'update', 'asReadonly', 'subscribe']);
|
|
21
|
+
/** TypeScript type annotation that marks a receiver as a link. */
|
|
22
|
+
const LINK_TYPE = 'KbqLink';
|
|
23
|
+
/** Import specifier that marks a file as a link consumer. */
|
|
24
|
+
const LINK_PACKAGE = '@koobiq/components/link';
|
|
25
|
+
/**
|
|
26
|
+
* `tabIndex` became a read-only `InputSignal` AND changed its value: the getter returned `-1` for a
|
|
27
|
+
* disabled link, it now reports what was bound. The host attribute still goes to `-1` while the link is
|
|
28
|
+
* disabled, so nothing about focus behavior changed — only a programmatic read sees the difference, and a
|
|
29
|
+
* mechanical `()` append would silently change it.
|
|
30
|
+
*/
|
|
31
|
+
const VALUE_CHANGED_MEMBERS = ['tabIndex'];
|
|
32
|
+
/** The write-only input: a setter with no getter, so there is no read to rewrite. */
|
|
33
|
+
const WRITE_ONLY_MEMBERS = ['print'];
|
|
34
|
+
/** Icon and print bookkeeping that became `protected`: a subclass still sees it, nothing outside does. */
|
|
35
|
+
const PROTECTED_MEMBERS = ['hasIcon', 'printMode', 'printUrl'];
|
|
36
|
+
/** Members that became `private`, so not even a subclass can name them. */
|
|
37
|
+
const PRIVATE_MEMBERS = ['icons', 'nativeElement'];
|
|
38
|
+
/** Members that are gone from the class altogether, including the lifecycle hook a subclass could call. */
|
|
39
|
+
const REMOVED_MEMBERS = ['icon', 'destroyRef', 'ngAfterContentInit'];
|
|
40
|
+
/** Every member a consumer can no longer read, whichever visibility it landed on. */
|
|
41
|
+
const HIDDEN_MEMBERS = [...PROTECTED_MEMBERS, ...PRIVATE_MEMBERS, ...REMOVED_MEMBERS];
|
|
42
|
+
/** Every member the access pass looks at, whatever it ends up doing with it. */
|
|
43
|
+
const KNOWN_MEMBERS = [
|
|
44
|
+
...SIGNAL_MEMBERS,
|
|
45
|
+
...VALUE_CHANGED_MEMBERS,
|
|
46
|
+
...WRITE_ONLY_MEMBERS,
|
|
47
|
+
...HIDDEN_MEMBERS
|
|
48
|
+
];
|
|
49
|
+
const protectedMessage = (members) => `These KbqLink members are \`protected\` now: ${[...members].join(', ')}. They are the print and icon ` +
|
|
50
|
+
'bookkeeping: the classes and the `print` attribute the directive puts on the anchor are the contract, ' +
|
|
51
|
+
'not the state behind them.';
|
|
52
|
+
const privateMessage = (members) => `These KbqLink members are \`private\` now, so a subclass cannot name them either: ` +
|
|
53
|
+
`${[...members].join(', ')}. \`nativeElement\` has a public accessor - call \`getHostElement()\`; the ` +
|
|
54
|
+
'icon query is internal, and the icon spacing classes are what it produces.';
|
|
55
|
+
const removedMessage = (members) => `These KbqLink members are gone: ${[...members].join(', ')}. \`icon\` is dropped - \`icons\` already ` +
|
|
56
|
+
'answered the one question it was asked - `destroyRef` is not held any more, so inject `DestroyRef` ' +
|
|
57
|
+
'yourself if a subclass needs it, and `ngAfterContentInit` is not implemented, so an override calling ' +
|
|
58
|
+
'`super.ngAfterContentInit()` no longer compiles: the icon classes follow the content query on their own.';
|
|
59
|
+
/** Reported for a programmatic write: every member is an `input()`, so the write no longer compiles. */
|
|
60
|
+
const writeMessage = (members) => `These are \`input()\`s now, so a programmatic write no longer compiles: ${[...members].join(', ')}. ` +
|
|
61
|
+
'Bind them in the template instead. `print` was a write-only input - a setter with no getter - and ' +
|
|
62
|
+
'`tabIndex` had a setter too. The write is left untouched so the error points at your call site.';
|
|
63
|
+
const valueChangedMessage = (members) => `${[...members].join(', ')} is a read-only InputSignal - read it as \`link.tabIndex()\`. Its value also ` +
|
|
64
|
+
'changed: the getter used to fold in the disabled state and report -1 for a disabled link, it now ' +
|
|
65
|
+
'reports what was bound. The host attribute still goes to -1 while the link is disabled. Migrate by hand.';
|
|
66
|
+
/**
|
|
67
|
+
* Emitted next to the files the rewrite touched, because the call it writes is correct but does not report
|
|
68
|
+
* quite the same value. The old getter mirrored `disabledSignal`, which `kbqTooltip` writes directly through
|
|
69
|
+
* `forDisabledComponent`; the input reports only what was bound.
|
|
70
|
+
*/
|
|
71
|
+
const DISABLED_CAVEAT = ' `disabled` reads here were rewritten to `disabled()`. That reports the bound input, while the old ' +
|
|
72
|
+
'getter mirrored `disabledSignal` - the effective state the host bindings render. The two differ only ' +
|
|
73
|
+
'if something writes `disabledSignal` directly, which is what `kbqTooltip` does through ' +
|
|
74
|
+
'`forDisabledComponent`: read `disabledSignal()` at those call sites.';
|
|
75
|
+
/**
|
|
76
|
+
* Reported for a read through a signal query, which is a signal holding the directive: the read needs two
|
|
77
|
+
* calls rather than one. Emitted from the AST pass rather than a regex, so it follows the same receiver
|
|
78
|
+
* resolution as the rewrite - the decorator form is a plain annotated field that the rewrite handles.
|
|
79
|
+
*
|
|
80
|
+
* `viewChild()` without `.required` is typed `Signal<KbqLink | undefined>`, so the safe spelling differs
|
|
81
|
+
* between the two forms.
|
|
82
|
+
*/
|
|
83
|
+
const signalQueryMessage = (member, required) => `A signal query holds the directive behind a call of its own, so reading \`${member}\` through it needs ` +
|
|
84
|
+
`a double call: \`this.link()${required ? '' : '?'}.${member}()\`.` +
|
|
85
|
+
(required ? '' : ' The query is optional, so keep the `?.`.') +
|
|
86
|
+
' Those reads are left untouched - migrate them by hand.';
|
|
87
|
+
/** Printed once per project, after the per-file reports. */
|
|
88
|
+
const SUMMARY = [
|
|
89
|
+
' `print` accepts `string | null` instead of `any`, and `[print]="undefined"` no longer marks the link ' +
|
|
90
|
+
'as printable. The old setter tested `value !== null`, so an explicit `undefined` passed it and added ' +
|
|
91
|
+
'`kbq-link_print` while printing the href; the input tests `!= null`, which covers both. An unbound ' +
|
|
92
|
+
'link behaves exactly as before: no class, and the href still lands in the `print` attribute.',
|
|
93
|
+
' A disabled link carries `aria-disabled` instead of the `disabled` attribute, which is not valid HTML ' +
|
|
94
|
+
'on an anchor and told assistive tech nothing. If you styled `a[kbq-link][disabled]`, match ' +
|
|
95
|
+
'`.kbq-disabled` or `[aria-disabled]` instead.'
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
exports.DISABLED_CAVEAT = DISABLED_CAVEAT;
|
|
99
|
+
exports.HIDDEN_MEMBERS = HIDDEN_MEMBERS;
|
|
100
|
+
exports.KNOWN_MEMBERS = KNOWN_MEMBERS;
|
|
101
|
+
exports.LINK_PACKAGE = LINK_PACKAGE;
|
|
102
|
+
exports.LINK_TYPE = LINK_TYPE;
|
|
103
|
+
exports.PRIVATE_MEMBERS = PRIVATE_MEMBERS;
|
|
104
|
+
exports.PROTECTED_MEMBERS = PROTECTED_MEMBERS;
|
|
105
|
+
exports.REMOVED_MEMBERS = REMOVED_MEMBERS;
|
|
106
|
+
exports.SIGNAL_API_METHODS = SIGNAL_API_METHODS;
|
|
107
|
+
exports.SIGNAL_MEMBERS = SIGNAL_MEMBERS;
|
|
108
|
+
exports.SUMMARY = SUMMARY;
|
|
109
|
+
exports.VALUE_CHANGED_MEMBERS = VALUE_CHANGED_MEMBERS;
|
|
110
|
+
exports.WRITE_ONLY_MEMBERS = WRITE_ONLY_MEMBERS;
|
|
111
|
+
exports.privateMessage = privateMessage;
|
|
112
|
+
exports.protectedMessage = protectedMessage;
|
|
113
|
+
exports.removedMessage = removedMessage;
|
|
114
|
+
exports.signalQueryMessage = signalQueryMessage;
|
|
115
|
+
exports.valueChangedMessage = valueChangedMessage;
|
|
116
|
+
exports.writeMessage = writeMessage;
|
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var ts = require('typescript');
|
|
6
|
+
var utils_messages = require('../../utils/messages.cjs');
|
|
7
|
+
var utils_packageConfig = require('../../utils/package-config.cjs');
|
|
8
|
+
var utils_projectFiles = require('../../utils/project-files.cjs');
|
|
9
|
+
var migrations_linkSignals_data = require('./data.cjs');
|
|
10
|
+
require('@angular-devkit/schematics');
|
|
11
|
+
require('@schematics/angular/utility');
|
|
12
|
+
|
|
13
|
+
const LABEL = '[link-signals]';
|
|
14
|
+
const TS_EXT = '.ts';
|
|
15
|
+
/** Factories whose single argument gives the type of the declaration they set up. */
|
|
16
|
+
const TYPING_FACTORIES = new Set(['inject', 'viewChild', 'contentChild']);
|
|
17
|
+
/** Applies text-span edits to `content`, right-to-left, so earlier edits don't shift later offsets. */
|
|
18
|
+
function applyEdits(content, edits) {
|
|
19
|
+
const sorted = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);
|
|
20
|
+
let result = content;
|
|
21
|
+
for (const { start, end, text } of sorted) {
|
|
22
|
+
result = result.slice(0, start) + text + result.slice(end);
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
/** Walks up from `node` to the nearest ancestor matching `predicate`. */
|
|
27
|
+
function findAncestor(node, predicate) {
|
|
28
|
+
let current = node.parent;
|
|
29
|
+
while (current) {
|
|
30
|
+
if (predicate(current))
|
|
31
|
+
return current;
|
|
32
|
+
current = current.parent;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Nodes that open a new binding scope. `ts.isFunctionLike` rather than a hand-rolled list of declarations,
|
|
38
|
+
* so a parameter of a `FunctionTypeNode` or a `MethodSignature` is bounded by its type instead of falling
|
|
39
|
+
* back to the whole file. Blocks and loops are included because `let`/`const` are block-scoped.
|
|
40
|
+
*/
|
|
41
|
+
const opensScope = (node) => ts.isFunctionLike(node) ||
|
|
42
|
+
ts.isBlock(node) ||
|
|
43
|
+
ts.isCaseBlock(node) ||
|
|
44
|
+
ts.isModuleBlock(node) ||
|
|
45
|
+
ts.isForStatement(node) ||
|
|
46
|
+
ts.isForInStatement(node) ||
|
|
47
|
+
ts.isForOfStatement(node) ||
|
|
48
|
+
ts.isCatchClause(node) ||
|
|
49
|
+
ts.isClassLike(node) ||
|
|
50
|
+
ts.isSourceFile(node);
|
|
51
|
+
/** Nodes that rebind `this`, so `this.link` inside them is a different object. Arrows don't. */
|
|
52
|
+
const rebindsThis = (node) => ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node) || ts.isClassLike(node);
|
|
53
|
+
/** Whether `node` sits inside `scope` without crossing a `barrier` node on the way up. */
|
|
54
|
+
function reachesScope(node, scope, barrier) {
|
|
55
|
+
let current = node.parent;
|
|
56
|
+
while (current && current !== scope) {
|
|
57
|
+
if (barrier(current))
|
|
58
|
+
return false;
|
|
59
|
+
current = current.parent;
|
|
60
|
+
}
|
|
61
|
+
return current === scope;
|
|
62
|
+
}
|
|
63
|
+
/** Whether a type annotation names one of `typeNames` directly (not through a union or type argument). */
|
|
64
|
+
function isTypeReference(type, typeNames) {
|
|
65
|
+
return (!!type &&
|
|
66
|
+
ts.isTypeReferenceNode(type) &&
|
|
67
|
+
ts.isIdentifier(type.typeName) &&
|
|
68
|
+
typeNames.includes(type.typeName.text));
|
|
69
|
+
}
|
|
70
|
+
const FIELD_MODIFIERS = new Set([
|
|
71
|
+
ts.SyntaxKind.PrivateKeyword,
|
|
72
|
+
ts.SyntaxKind.PublicKeyword,
|
|
73
|
+
ts.SyntaxKind.ProtectedKeyword,
|
|
74
|
+
ts.SyntaxKind.ReadonlyKeyword
|
|
75
|
+
]);
|
|
76
|
+
/** Every value declaration that introduces a plain identifier, with the scope it is visible in. */
|
|
77
|
+
function collectBindings(sourceFile) {
|
|
78
|
+
const bindings = [];
|
|
79
|
+
const add = (name, declaration, scope) => bindings.push({ name, declaration, scope: scope ?? sourceFile });
|
|
80
|
+
const visit = (node) => {
|
|
81
|
+
if (ts.isParameter(node) && ts.isIdentifier(node.name)) {
|
|
82
|
+
add(node.name.text, node, findAncestor(node, ts.isFunctionLike));
|
|
83
|
+
}
|
|
84
|
+
else if ((ts.isVariableDeclaration(node) || ts.isBindingElement(node)) && ts.isIdentifier(node.name)) {
|
|
85
|
+
add(node.name.text, node, findAncestor(node, opensScope));
|
|
86
|
+
}
|
|
87
|
+
else if ((ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node)) && node.name) {
|
|
88
|
+
add(node.name.text, node, findAncestor(node, opensScope));
|
|
89
|
+
}
|
|
90
|
+
else if ((ts.isImportSpecifier(node) || ts.isImportClause(node)) && node.name) {
|
|
91
|
+
add(node.name.text, node, sourceFile);
|
|
92
|
+
}
|
|
93
|
+
node.forEachChild(visit);
|
|
94
|
+
};
|
|
95
|
+
visit(sourceFile);
|
|
96
|
+
return bindings;
|
|
97
|
+
}
|
|
98
|
+
/** The declaration `name` binds to at `pos`: the innermost enclosing scope that declares it. */
|
|
99
|
+
function resolveBinding(bindings, name, pos) {
|
|
100
|
+
let best;
|
|
101
|
+
let bestWidth = Number.POSITIVE_INFINITY;
|
|
102
|
+
for (const binding of bindings) {
|
|
103
|
+
if (binding.name !== name)
|
|
104
|
+
continue;
|
|
105
|
+
const start = binding.scope.getStart();
|
|
106
|
+
const end = binding.scope.getEnd();
|
|
107
|
+
if (pos < start || pos > end)
|
|
108
|
+
continue;
|
|
109
|
+
const width = end - start;
|
|
110
|
+
if (width < bestWidth) {
|
|
111
|
+
best = binding;
|
|
112
|
+
bestWidth = width;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return best?.declaration;
|
|
116
|
+
}
|
|
117
|
+
/** Local names `KbqLink` is bound to in this file, including aliased imports. */
|
|
118
|
+
function localTypeNames(sourceFile) {
|
|
119
|
+
const names = new Set([migrations_linkSignals_data.LINK_TYPE]);
|
|
120
|
+
const visit = (node) => {
|
|
121
|
+
if (ts.isImportSpecifier(node) && (node.propertyName?.text ?? node.name.text) === migrations_linkSignals_data.LINK_TYPE) {
|
|
122
|
+
names.add(node.name.text);
|
|
123
|
+
}
|
|
124
|
+
node.forEachChild(visit);
|
|
125
|
+
};
|
|
126
|
+
visit(sourceFile);
|
|
127
|
+
return [...names];
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The link-ness of an initializer, for the shapes a modern Angular consumer writes: `inject(KbqLink)`,
|
|
131
|
+
* `viewChild(KbqLink)`, `viewChild.required(…)`, `contentChild(…)`.
|
|
132
|
+
*/
|
|
133
|
+
function initializerTypeOf(initializer, typeNames) {
|
|
134
|
+
const none = { link: false, signalQuery: false, required: false };
|
|
135
|
+
if (!initializer || !ts.isCallExpression(initializer))
|
|
136
|
+
return none;
|
|
137
|
+
const callee = initializer.expression;
|
|
138
|
+
const qualified = ts.isPropertyAccessExpression(callee) && ts.isIdentifier(callee.expression);
|
|
139
|
+
const name = ts.isIdentifier(callee) ? callee.text : qualified ? callee.expression.text : undefined;
|
|
140
|
+
if (!name || !TYPING_FACTORIES.has(name))
|
|
141
|
+
return none;
|
|
142
|
+
const [arg] = initializer.arguments;
|
|
143
|
+
if (!arg || !ts.isIdentifier(arg) || !typeNames.includes(arg.text))
|
|
144
|
+
return none;
|
|
145
|
+
// `viewChild.required(...)` is `Signal<KbqLink>`; the bare form adds `| undefined`.
|
|
146
|
+
const required = qualified && callee.name.text === 'required';
|
|
147
|
+
return { link: true, signalQuery: name !== 'inject', required };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Collects the link receivers: method/function params, class fields (incl. `@ViewChild(KbqLink) x: KbqLink`,
|
|
151
|
+
* constructor parameter-properties and the `inject()` / `viewChild()` initializer forms) and typed locals.
|
|
152
|
+
*/
|
|
153
|
+
function collectReceivers(sourceFile, typeNames) {
|
|
154
|
+
const receivers = [];
|
|
155
|
+
const add = (text, declaration, scope, signalQuery = false, required = false) => receivers.push({ text, declaration, scope: scope ?? sourceFile, signalQuery, required });
|
|
156
|
+
const visit = (node) => {
|
|
157
|
+
if (ts.isParameter(node) && ts.isIdentifier(node.name) && isTypeReference(node.type, typeNames)) {
|
|
158
|
+
add(node.name.text, node, findAncestor(node, ts.isFunctionLike));
|
|
159
|
+
// A constructor parameter-property is also a class field, reachable as `this.<name>`.
|
|
160
|
+
if (node.modifiers?.some((modifier) => FIELD_MODIFIERS.has(modifier.kind))) {
|
|
161
|
+
const owner = findAncestor(node, ts.isClassDeclaration);
|
|
162
|
+
if (owner)
|
|
163
|
+
add(`this.${node.name.text}`, node, owner);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else if (ts.isPropertyDeclaration(node) && ts.isIdentifier(node.name)) {
|
|
167
|
+
const owner = findAncestor(node, ts.isClassDeclaration);
|
|
168
|
+
const { link, signalQuery, required } = initializerTypeOf(node.initializer, typeNames);
|
|
169
|
+
if (owner && (isTypeReference(node.type, typeNames) || link)) {
|
|
170
|
+
add(`this.${node.name.text}`, node, owner, signalQuery, required);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {
|
|
174
|
+
const { link, signalQuery, required } = initializerTypeOf(node.initializer, typeNames);
|
|
175
|
+
if (isTypeReference(node.type, typeNames) || link) {
|
|
176
|
+
add(node.name.text, node, findAncestor(node, opensScope), signalQuery, required);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
node.forEachChild(visit);
|
|
180
|
+
};
|
|
181
|
+
visit(sourceFile);
|
|
182
|
+
return receivers;
|
|
183
|
+
}
|
|
184
|
+
/** Strips the wrappers that do not change which object an access reads from. */
|
|
185
|
+
function unwrapReceiver(node) {
|
|
186
|
+
let current = node;
|
|
187
|
+
while (ts.isNonNullExpression(current) ||
|
|
188
|
+
ts.isParenthesizedExpression(current) ||
|
|
189
|
+
ts.isAsExpression(current) ||
|
|
190
|
+
ts.isTypeAssertionExpression(current)) {
|
|
191
|
+
current = current.expression;
|
|
192
|
+
}
|
|
193
|
+
return current;
|
|
194
|
+
}
|
|
195
|
+
/** The receiver a property access resolves to at this exact position, if any. */
|
|
196
|
+
function resolveReceiver(expression, at, sourceFile, receivers, bindings) {
|
|
197
|
+
const inner = unwrapReceiver(expression);
|
|
198
|
+
// A receiver is `this.<name>` or a bare identifier, so its own text is a single token: `this . link`
|
|
199
|
+
// and `this /* x */ . link` already spell `this.link`, because the trivia between the token and the
|
|
200
|
+
// member lies outside both of their spans.
|
|
201
|
+
const text = ts.isPropertyAccessExpression(inner)
|
|
202
|
+
? `${unwrapReceiver(inner.expression).getText(sourceFile)}.${inner.name.text}`
|
|
203
|
+
: inner.getText(sourceFile);
|
|
204
|
+
return receivers.find((receiver) => {
|
|
205
|
+
if (receiver.text !== text)
|
|
206
|
+
return false;
|
|
207
|
+
// For `this.link`, a nested `function` or class changes what `this` is; an arrow does not.
|
|
208
|
+
// For a bare `link`, a nested redeclaration of the same name shadows the receiver.
|
|
209
|
+
if (receiver.text.startsWith('this.'))
|
|
210
|
+
return reachesScope(at, receiver.scope, rebindsThis);
|
|
211
|
+
return (reachesScope(at, receiver.scope, () => false) &&
|
|
212
|
+
resolveBinding(bindings, receiver.text, at.getStart(sourceFile)) === receiver.declaration);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/** Binary operators that make their left operand a write target rather than a read. */
|
|
216
|
+
const ASSIGNMENT_OPERATORS = new Set([
|
|
217
|
+
ts.SyntaxKind.EqualsToken,
|
|
218
|
+
ts.SyntaxKind.PlusEqualsToken,
|
|
219
|
+
ts.SyntaxKind.MinusEqualsToken,
|
|
220
|
+
ts.SyntaxKind.AsteriskEqualsToken,
|
|
221
|
+
ts.SyntaxKind.AsteriskAsteriskEqualsToken,
|
|
222
|
+
ts.SyntaxKind.SlashEqualsToken,
|
|
223
|
+
ts.SyntaxKind.PercentEqualsToken,
|
|
224
|
+
ts.SyntaxKind.LessThanLessThanEqualsToken,
|
|
225
|
+
ts.SyntaxKind.GreaterThanGreaterThanEqualsToken,
|
|
226
|
+
ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken,
|
|
227
|
+
ts.SyntaxKind.AmpersandEqualsToken,
|
|
228
|
+
ts.SyntaxKind.BarEqualsToken,
|
|
229
|
+
ts.SyntaxKind.CaretEqualsToken,
|
|
230
|
+
ts.SyntaxKind.BarBarEqualsToken,
|
|
231
|
+
ts.SyntaxKind.AmpersandAmpersandEqualsToken,
|
|
232
|
+
ts.SyntaxKind.QuestionQuestionEqualsToken
|
|
233
|
+
]);
|
|
234
|
+
/** Unary operators that write their operand back. Every other prefix operator is a plain read. */
|
|
235
|
+
const INCREMENT_OPERATORS = new Set([ts.SyntaxKind.PlusPlusToken, ts.SyntaxKind.MinusMinusToken]);
|
|
236
|
+
/** Whether `node` sits on the left of a destructuring assignment, where it is written rather than read. */
|
|
237
|
+
function isDestructuringTarget(node) {
|
|
238
|
+
let current = node;
|
|
239
|
+
while (ts.isPropertyAssignment(current.parent) ||
|
|
240
|
+
ts.isShorthandPropertyAssignment(current.parent) ||
|
|
241
|
+
ts.isSpreadAssignment(current.parent) ||
|
|
242
|
+
ts.isSpreadElement(current.parent) ||
|
|
243
|
+
ts.isObjectLiteralExpression(current.parent) ||
|
|
244
|
+
ts.isArrayLiteralExpression(current.parent)) {
|
|
245
|
+
current = current.parent;
|
|
246
|
+
}
|
|
247
|
+
return (ts.isBinaryExpression(current.parent) &&
|
|
248
|
+
current.parent.left === current &&
|
|
249
|
+
ASSIGNMENT_OPERATORS.has(current.parent.operatorToken.kind));
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Classifies a matched property access and appends the resulting edit, if any. Only a plain read is
|
|
253
|
+
* rewritten: every `KbqLink` signal member is an `input()`, so a write has no mechanical translation, and
|
|
254
|
+
* appending `()` to it would produce unparseable TypeScript instead of the read-only error to fix by hand.
|
|
255
|
+
*/
|
|
256
|
+
function classifyAccess(node, edits, rewritable) {
|
|
257
|
+
const parent = node.parent;
|
|
258
|
+
// Already migrated: `x.disabled()` (call) or the signal API on it.
|
|
259
|
+
if (ts.isCallExpression(parent) && parent.expression === node)
|
|
260
|
+
return 'migrated';
|
|
261
|
+
if (ts.isPropertyAccessExpression(parent) && parent.expression === node && migrations_linkSignals_data.SIGNAL_API_METHODS.has(parent.name.text))
|
|
262
|
+
return 'migrated';
|
|
263
|
+
// Write target: `x.disabled = RHS` and every compound form (`+=`, `??=`, `||=`, …).
|
|
264
|
+
if (ts.isBinaryExpression(parent) && parent.left === node && ASSIGNMENT_OPERATORS.has(parent.operatorToken.kind))
|
|
265
|
+
return 'write';
|
|
266
|
+
// `x.disabled++` / `--x.disabled` and `delete x.disabled` are writes too. Only the increment operators
|
|
267
|
+
// count: a `PrefixUnaryExpression` is also how `!x.disabled` and `-x.tabIndex` are spelled, and those
|
|
268
|
+
// are reads.
|
|
269
|
+
if (ts.isPostfixUnaryExpression(parent) && parent.operand === node)
|
|
270
|
+
return 'write';
|
|
271
|
+
if (ts.isPrefixUnaryExpression(parent) && parent.operand === node && INCREMENT_OPERATORS.has(parent.operator))
|
|
272
|
+
return 'write';
|
|
273
|
+
if (ts.isDeleteExpression(parent))
|
|
274
|
+
return 'write';
|
|
275
|
+
if (isDestructuringTarget(node))
|
|
276
|
+
return 'write';
|
|
277
|
+
// Read (incl. optional chain `x?.disabled`): append `()`.
|
|
278
|
+
if (rewritable)
|
|
279
|
+
edits.push({ start: node.getEnd(), end: node.getEnd(), text: '()' });
|
|
280
|
+
return 'read';
|
|
281
|
+
}
|
|
282
|
+
/** Collects the edits and the findings for every access on a known link receiver. */
|
|
283
|
+
function collectAccesses(sourceFile, receivers, bindings) {
|
|
284
|
+
const edits = [];
|
|
285
|
+
const writes = new Set();
|
|
286
|
+
const hidden = new Set();
|
|
287
|
+
const valueChanged = new Set();
|
|
288
|
+
const signalQueryReads = [];
|
|
289
|
+
const visit = (node) => {
|
|
290
|
+
if (ts.isPropertyAccessExpression(node) && ts.isIdentifier(node.name)) {
|
|
291
|
+
const member = node.name.text;
|
|
292
|
+
const receiver = migrations_linkSignals_data.KNOWN_MEMBERS.includes(member)
|
|
293
|
+
? resolveReceiver(node.expression, node, sourceFile, receivers, bindings)
|
|
294
|
+
: undefined;
|
|
295
|
+
if (receiver) {
|
|
296
|
+
// A hidden member has no reachable spelling left, so classification would have nothing to
|
|
297
|
+
// offer: report it whether it is read or written.
|
|
298
|
+
if (migrations_linkSignals_data.HIDDEN_MEMBERS.includes(member)) {
|
|
299
|
+
hidden.add(member);
|
|
300
|
+
}
|
|
301
|
+
else if (receiver.signalQuery) {
|
|
302
|
+
// A signal query holds the directive behind a call of its own, so the read is
|
|
303
|
+
// `query().disabled()`. Appending one `()` would be wrong in both halves.
|
|
304
|
+
signalQueryReads.push({ member, required: receiver.required });
|
|
305
|
+
}
|
|
306
|
+
else if (classifyAccess(node, edits, migrations_linkSignals_data.SIGNAL_MEMBERS.includes(member)) === 'write') {
|
|
307
|
+
writes.add(member);
|
|
308
|
+
}
|
|
309
|
+
else if (migrations_linkSignals_data.VALUE_CHANGED_MEMBERS.includes(member)) {
|
|
310
|
+
valueChanged.add(member);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
node.forEachChild(visit);
|
|
315
|
+
};
|
|
316
|
+
visit(sourceFile);
|
|
317
|
+
return { edits, writes, hidden, valueChanged, signalQueryReads };
|
|
318
|
+
}
|
|
319
|
+
/** Rewrites the value-safe programmatic reads in one TypeScript file and reports the rest. */
|
|
320
|
+
function migrateTsExpressions(content, fileName) {
|
|
321
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
322
|
+
const typeNames = localTypeNames(sourceFile);
|
|
323
|
+
const receivers = collectReceivers(sourceFile, typeNames);
|
|
324
|
+
const empty = {
|
|
325
|
+
edits: [],
|
|
326
|
+
writes: new Set(),
|
|
327
|
+
hidden: new Set(),
|
|
328
|
+
valueChanged: new Set(),
|
|
329
|
+
signalQueryReads: []
|
|
330
|
+
};
|
|
331
|
+
if (receivers.length === 0)
|
|
332
|
+
return { ...empty, content };
|
|
333
|
+
const bindings = collectBindings(sourceFile);
|
|
334
|
+
const findings = collectAccesses(sourceFile, receivers, bindings);
|
|
335
|
+
return { ...findings, content: findings.edits.length > 0 ? applyEdits(content, findings.edits) : content };
|
|
336
|
+
}
|
|
337
|
+
/** Emits the per-file report for everything the rewrite could not do on its own. */
|
|
338
|
+
function report(context, filePath, findings) {
|
|
339
|
+
const lines = [];
|
|
340
|
+
const subset = (members) => members.filter((member) => findings.hidden.has(member));
|
|
341
|
+
const protectedMembers = subset(migrations_linkSignals_data.PROTECTED_MEMBERS);
|
|
342
|
+
const privateMembers = subset(migrations_linkSignals_data.PRIVATE_MEMBERS);
|
|
343
|
+
const removedMembers = subset(migrations_linkSignals_data.REMOVED_MEMBERS);
|
|
344
|
+
if (protectedMembers.length > 0)
|
|
345
|
+
lines.push(` ${migrations_linkSignals_data.protectedMessage(protectedMembers)}`);
|
|
346
|
+
if (privateMembers.length > 0)
|
|
347
|
+
lines.push(` ${migrations_linkSignals_data.privateMessage(privateMembers)}`);
|
|
348
|
+
if (removedMembers.length > 0)
|
|
349
|
+
lines.push(` ${migrations_linkSignals_data.removedMessage(removedMembers)}`);
|
|
350
|
+
if (findings.valueChanged.size > 0)
|
|
351
|
+
lines.push(` ${migrations_linkSignals_data.valueChangedMessage(findings.valueChanged)}`);
|
|
352
|
+
if (findings.writes.size > 0)
|
|
353
|
+
lines.push(` ${migrations_linkSignals_data.writeMessage(findings.writes)}`);
|
|
354
|
+
// The rewrite this file just got is correct but not value-identical, so the caveat belongs next to the
|
|
355
|
+
// file it was applied to rather than in a summary printed once, after every edit has landed.
|
|
356
|
+
if (findings.edits.length > 0)
|
|
357
|
+
lines.push(migrations_linkSignals_data.DISABLED_CAVEAT);
|
|
358
|
+
for (const { member, required } of findings.signalQueryReads) {
|
|
359
|
+
lines.push(` ${migrations_linkSignals_data.signalQueryMessage(member, required)}`);
|
|
360
|
+
}
|
|
361
|
+
if (lines.length === 0)
|
|
362
|
+
return;
|
|
363
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ...lines]);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* A `.ts` file is a link consumer if it names any of the exported symbols or imports the package. There is
|
|
367
|
+
* no element to look for: `kbq-link` is an attribute on an anchor.
|
|
368
|
+
*/
|
|
369
|
+
function referencesLink(content) {
|
|
370
|
+
return /\bKbqLink\w*\b/.test(content) || content.includes(migrations_linkSignals_data.LINK_PACKAGE);
|
|
371
|
+
}
|
|
372
|
+
function linkSignals(options) {
|
|
373
|
+
return async (tree, context) => {
|
|
374
|
+
const { project } = options;
|
|
375
|
+
// `ng update` runs a migration with no options at all, and `migrations.json` declares no schema, so
|
|
376
|
+
// the schema default never reaches the rule: without this the migration would only ever report.
|
|
377
|
+
const fix = options.fix ?? true;
|
|
378
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
379
|
+
const root = projectDefinition?.root ?? '';
|
|
380
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
381
|
+
const tsPaths = [];
|
|
382
|
+
utils_projectFiles.visitProjectFiles(rootDir, (filePath) => {
|
|
383
|
+
if (filePath.endsWith(TS_EXT))
|
|
384
|
+
tsPaths.push(filePath);
|
|
385
|
+
});
|
|
386
|
+
let touched = 0;
|
|
387
|
+
let consumers = 0;
|
|
388
|
+
for (const filePath of tsPaths) {
|
|
389
|
+
const original = tree.read(filePath)?.toString();
|
|
390
|
+
if (!original || !referencesLink(original))
|
|
391
|
+
continue;
|
|
392
|
+
consumers++;
|
|
393
|
+
const findings = migrateTsExpressions(original, filePath);
|
|
394
|
+
report(context, filePath, findings);
|
|
395
|
+
if (findings.content === original)
|
|
396
|
+
continue;
|
|
397
|
+
touched++;
|
|
398
|
+
if (fix) {
|
|
399
|
+
tree.overwrite(filePath, findings.content);
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath}`]);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
// Nothing here uses the link, so the summary would only be noise.
|
|
406
|
+
if (consumers === 0)
|
|
407
|
+
return;
|
|
408
|
+
utils_messages.logMessage(context.logger, [
|
|
409
|
+
`${LABEL} processed tree under "${root || '<workspace root>'}", ` +
|
|
410
|
+
`${fix ? 'updated' : 'would update'} ${touched} file(s).`,
|
|
411
|
+
...migrations_linkSignals_data.SUMMARY
|
|
412
|
+
]);
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
exports.default = linkSignals;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-link-signals",
|
|
4
|
+
"title": "Koobiq components link 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
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# list-signals
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@21` (registered for `21.0.0-0`).
|
|
4
|
+
Reports programmatic writes to the signal inputs of `KbqListSelection` and `KbqListOption`. It never writes to the
|
|
5
|
+
tree.
|
|
6
|
+
|
|
7
|
+
## Background
|
|
8
|
+
|
|
9
|
+
The inputs of the list are signal inputs read through a getter. A read is unchanged; a write no longer compiles.
|
|
10
|
+
|
|
11
|
+
| Member | Write |
|
|
12
|
+
| ---------------------------------------------------------------------------------------------- | -------------------------------- |
|
|
13
|
+
| `KbqListSelection`: `autoSelect`, `noUnselectLast`, `multiple`, `tabIndex`, `selectAllHandler` | Bind it |
|
|
14
|
+
| `KbqListSelection.disabled` | Bind it, or use the form control |
|
|
15
|
+
| `KbqListOption`: `value`, `disabled`, `draggable`, `showCheckbox` | Bind it |
|
|
16
|
+
| `KbqListOption.selected`, `KbqListSelection.multipleMode` | Still writable |
|
|
17
|
+
|
|
18
|
+
## Running it manually
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
ng g @koobiq/components:list-signals --project "<your project>"
|
|
22
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `list-signals` migration.
|
|
5
|
+
*
|
|
6
|
+
* The inputs of `KbqListSelection` and `KbqListOption` are signal inputs read through a getter now. Reads are
|
|
7
|
+
* unchanged; a programmatic write no longer compiles, except `KbqListOption.selected`, which stays writable.
|
|
8
|
+
* Warn-only: the write belongs in a binding or a form control.
|
|
9
|
+
*/
|
|
10
|
+
const LIST_ANCHOR = '\\bKbqList(?:Selection|Option)\\b';
|
|
11
|
+
const warnPatterns = [
|
|
12
|
+
{
|
|
13
|
+
anchor: LIST_ANCHOR,
|
|
14
|
+
pattern: '\\.\\s*(?:autoSelect|noUnselectLast|multiple|tabIndex|selectAllHandler)\\s*=[^=]',
|
|
15
|
+
message: 'KbqListSelection.autoSelect, .noUnselectLast, .multiple, .tabIndex and .selectAllHandler are signal ' +
|
|
16
|
+
'inputs read through a getter now, so a programmatic write no longer compiles. Bind them in the ' +
|
|
17
|
+
'template; multipleMode stays writable. This pattern also matches a write to an unrelated object in ' +
|
|
18
|
+
'the same file — check before changing it.'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
anchor: LIST_ANCHOR,
|
|
22
|
+
pattern: '\\.\\s*(?:value|disabled|draggable|showCheckbox)\\s*=[^=]',
|
|
23
|
+
message: 'The value, disabled, draggable and showCheckbox of KbqListOption, and the disabled and draggable of ' +
|
|
24
|
+
'KbqListSelection, are signal inputs read through a getter now, so a programmatic write no longer ' +
|
|
25
|
+
'compiles. Bind them in the template, or disable the list through its form control. ' +
|
|
26
|
+
'KbqListOption.selected stays writable. This pattern also matches a write to an unrelated object in ' +
|
|
27
|
+
'the same file — check before changing it.'
|
|
28
|
+
}
|
|
29
|
+
];
|
|
30
|
+
const SUMMARY = [
|
|
31
|
+
'KbqListSelection and KbqListOption are read as before; only programmatic writes to their inputs are gone.'
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
exports.SUMMARY = SUMMARY;
|
|
35
|
+
exports.warnPatterns = warnPatterns;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var utils_warnOnlyMigration = require('../../utils/warn-only-migration.cjs');
|
|
6
|
+
var migrations_listSignals_data = require('./data.cjs');
|
|
7
|
+
require('../../utils/messages.cjs');
|
|
8
|
+
require('../../utils/package-config.cjs');
|
|
9
|
+
require('@angular-devkit/schematics');
|
|
10
|
+
require('@schematics/angular/utility');
|
|
11
|
+
require('../../utils/project-files.cjs');
|
|
12
|
+
|
|
13
|
+
/** Reports programmatic writes to the signal inputs of `KbqListSelection` and `KbqListOption`. Never writes. */
|
|
14
|
+
function listSignals(options) {
|
|
15
|
+
return utils_warnOnlyMigration.warnOnlyRule({ label: '[list-signals]', warnPatterns: migrations_listSignals_data.warnPatterns, summary: migrations_listSignals_data.SUMMARY }, options);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.default = listSignals;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-list-signals",
|
|
4
|
+
"title": "Koobiq components list signals migration",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"project": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Name of the project to inspect. If omitted, the migration runs over the whole tree.",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "projectName"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|