@koobiq/components 20.4.1 → 21.0.0
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 +755 -601
- 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 +2810 -2538
- 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 +366 -136
- 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 +486 -165
- 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 +719 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1506 -558
- 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 +399 -7
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.js +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.js +60 -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.js +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.js +54 -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 +3 -0
- package/schematics/migrations/alert-signals/index.js +70 -203
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.js +150 -0
- package/schematics/migrations/angular-animations-removal/index.js +20 -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.js +136 -0
- package/schematics/migrations/app-switcher-signals/index.js +365 -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 +1 -1
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.js +149 -0
- package/schematics/migrations/autocomplete-signals/index.js +706 -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.js +109 -0
- package/schematics/migrations/badge-signals/index.js +693 -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.js +136 -0
- package/schematics/migrations/button-state-and-styles/index.js +220 -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.js +106 -0
- package/schematics/migrations/button-supported-colors/index.js +260 -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.js +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.js +496 -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.js +88 -0
- package/schematics/migrations/button-truncation/index.js +269 -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.js +114 -0
- package/schematics/migrations/checkbox-signals/index.js +634 -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.js +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.js +59 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.js +121 -0
- package/schematics/migrations/code-block-signals/index.js +700 -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.js +131 -0
- package/schematics/migrations/color-signals/index.js +19 -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.js +27 -0
- package/schematics/migrations/core-mixins-removal/index.js +17 -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 +1 -1
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.js +49 -0
- package/schematics/migrations/datepicker-signals/index.js +17 -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 +1 -1
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.js +59 -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.js +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.js +211 -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.js +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.js +161 -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.js +44 -0
- package/schematics/migrations/dl-standalone-names/index.js +321 -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.js +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.js +288 -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.js +152 -0
- package/schematics/migrations/dropdown-signals/index.js +19 -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.js +85 -0
- package/schematics/migrations/empty-state-error-color/index.js +71 -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 +1 -1
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.js +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.js +60 -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.js +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.js +70 -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.js +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.js +177 -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 +1 -2
- package/schematics/migrations/filter-bar-signals/index.js +100 -195
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.js +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.js +61 -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.js +58 -0
- package/schematics/migrations/flag-inner-html/index.js +61 -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.js +288 -0
- package/schematics/migrations/form-field-signals/index.js +382 -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.js +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.js +64 -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 +1 -1
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.js +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.js +97 -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.js +135 -0
- package/schematics/migrations/input-number-surface/index.js +292 -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.js +30 -0
- package/schematics/migrations/input-signals/index.js +17 -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.js +19 -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.js +116 -0
- package/schematics/migrations/link-signals/index.js +415 -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.js +35 -0
- package/schematics/migrations/list-signals/index.js +17 -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.js +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.js +221 -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.js +101 -0
- package/schematics/migrations/loader-overlay-signals/index.js +697 -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 +1 -1
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.js +257 -0
- package/schematics/migrations/locale-configuration-providers/index.js +294 -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.js +42 -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.js +79 -0
- package/schematics/migrations/markdown-signals/index.js +639 -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.js +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.js +58 -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.js +132 -0
- package/schematics/migrations/modal-signals/index.js +19 -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.js +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.js +568 -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 +1 -1
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.js +66 -0
- package/schematics/migrations/notification-center-signals/index.js +61 -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.js +86 -0
- package/schematics/migrations/option-signals/index.js +19 -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.js +61 -0
- package/schematics/migrations/popover-leave-delay/index.js +54 -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.js +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.js +58 -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.js +83 -0
- package/schematics/migrations/progress-spinner-signals/index.js +694 -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.js +70 -0
- package/schematics/migrations/query-list-signals/index.js +17 -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.js +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.js +39 -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.js +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.js +215 -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.js +20 -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.js +99 -0
- package/schematics/migrations/select-signal-inputs/index.js +57 -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.js +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.js +57 -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.js +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.js +17 -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.js +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.js +57 -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.js +20 -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.js +88 -0
- package/schematics/migrations/state-saving-default/index.js +62 -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.js +66 -0
- package/schematics/migrations/table-cell-content/index.js +66 -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.js +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.js +65 -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.js +42 -0
- package/schematics/migrations/tag-list-cleaner/index.js +196 -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.js +190 -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.js +103 -0
- package/schematics/migrations/tags-signals/index.js +673 -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.js +121 -0
- package/schematics/migrations/textarea-signals/index.js +379 -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.js +139 -0
- package/schematics/migrations/time-range-title-for/index.js +163 -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.js +82 -0
- package/schematics/migrations/timepicker-signals/index.js +709 -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.js +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.js +64 -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.js +69 -0
- package/schematics/migrations/title-encapsulation/index.js +57 -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.js +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.js +53 -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.js +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.js +60 -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.js +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.js +84 -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.js +106 -0
- package/schematics/migrations/tree-select-signals/index.js +58 -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.js +123 -0
- package/schematics/migrations/tree-signals/index.js +54 -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.js +78 -0
- package/schematics/migrations/tree-state-saving-default/index.js +60 -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.js +78 -0
- package/schematics/migrations/username-pipe-injection/index.js +58 -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 +124 -77
- package/schematics/migrations/v20-upgrade/index.js +6 -213
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.js +1371 -0
- package/schematics/migrations/v21-upgrade/index.js +94 -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.js +29 -0
- package/schematics/migrations/zoneless-change-detection/index.js +20 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +392 -2
- package/schematics/ng-add/index.js +515 -14
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/deprecated-path-migration.js +61 -0
- package/schematics/utils/package-config.js +9 -105
- 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} +114 -79
- 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 +667 -0
- package/types/koobiq-components-tree.d.ts +1290 -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/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 -187
- 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/{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,693 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var ts = require('typescript');
|
|
6
|
+
var utils_ast = require('../../utils/ast.js');
|
|
7
|
+
var utils_messages = require('../../utils/messages.js');
|
|
8
|
+
var utils_packageConfig = require('../../package-config-BhU2TfC8.js');
|
|
9
|
+
var utils_typescript = require('../../utils/typescript.js');
|
|
10
|
+
var migrations_badgeSignals_data = require('./data.js');
|
|
11
|
+
require('@angular-devkit/schematics');
|
|
12
|
+
require('@schematics/angular/utility');
|
|
13
|
+
|
|
14
|
+
const LABEL = '[badge-signals]';
|
|
15
|
+
const TS_EXT = '.ts';
|
|
16
|
+
const HTML_EXT = '.html';
|
|
17
|
+
function escapeRegExp(value) {
|
|
18
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
19
|
+
}
|
|
20
|
+
/** Applies text-span edits to `content`, right-to-left, so earlier edits don't shift later offsets. */
|
|
21
|
+
function applyEdits(content, edits) {
|
|
22
|
+
const sorted = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);
|
|
23
|
+
let result = content;
|
|
24
|
+
for (const { start, end, text } of sorted) {
|
|
25
|
+
result = result.slice(0, start) + text + result.slice(end);
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
/** Walks up from `node` to the nearest ancestor matching `predicate`. */
|
|
30
|
+
function findAncestor(node, predicate) {
|
|
31
|
+
let current = node.parent;
|
|
32
|
+
while (current) {
|
|
33
|
+
if (predicate(current))
|
|
34
|
+
return current;
|
|
35
|
+
current = current.parent;
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Nodes that open a new binding scope. `ts.isFunctionLike` rather than a hand-rolled list, so a
|
|
41
|
+
* `MethodSignature` or a `FunctionTypeNode` bounds a parameter's scope too instead of leaking it to the
|
|
42
|
+
* whole file. Blocks and loops are included because `let`/`const` are block-scoped.
|
|
43
|
+
*/
|
|
44
|
+
const opensScope = (node) => ts.isFunctionLike(node) ||
|
|
45
|
+
ts.isBlock(node) ||
|
|
46
|
+
ts.isCaseBlock(node) ||
|
|
47
|
+
ts.isModuleBlock(node) ||
|
|
48
|
+
ts.isForStatement(node) ||
|
|
49
|
+
ts.isForInStatement(node) ||
|
|
50
|
+
ts.isForOfStatement(node) ||
|
|
51
|
+
ts.isCatchClause(node) ||
|
|
52
|
+
ts.isClassLike(node) ||
|
|
53
|
+
ts.isSourceFile(node);
|
|
54
|
+
/** Nodes that rebind `this`, so `this.badge` inside them is a different object. Arrows and methods don't. */
|
|
55
|
+
const rebindsThis = (node) => ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node) || ts.isClassLike(node);
|
|
56
|
+
/** Whether `node` sits inside `scope` without crossing a `barrier` node on the way up. */
|
|
57
|
+
function reachesScope(node, scope, barrier) {
|
|
58
|
+
let current = node.parent;
|
|
59
|
+
while (current && current !== scope) {
|
|
60
|
+
if (barrier(current))
|
|
61
|
+
return false;
|
|
62
|
+
current = current.parent;
|
|
63
|
+
}
|
|
64
|
+
return current === scope;
|
|
65
|
+
}
|
|
66
|
+
/** Whether a type annotation refers to `typeName` directly (not through a union, array or type argument). */
|
|
67
|
+
function isTypeReference(type, typeName) {
|
|
68
|
+
return !!type && ts.isTypeReferenceNode(type) && ts.isIdentifier(type.typeName) && type.typeName.text === typeName;
|
|
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 that `exported` is bound to in this file, including aliased imports. */
|
|
118
|
+
function localTypeNames(sourceFile, exported) {
|
|
119
|
+
const names = new Set([exported]);
|
|
120
|
+
const visit = (node) => {
|
|
121
|
+
if (ts.isImportSpecifier(node) && (node.propertyName?.text ?? node.name.text) === exported) {
|
|
122
|
+
names.add(node.name.text);
|
|
123
|
+
}
|
|
124
|
+
node.forEachChild(visit);
|
|
125
|
+
};
|
|
126
|
+
visit(sourceFile);
|
|
127
|
+
return [...names];
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Collects the receivers annotated with `typeName`, by explicit annotation only (no cross-package type
|
|
131
|
+
* resolution): method/function params, class fields (incl. `@ViewChild(KbqBadge) x: KbqBadge` and constructor
|
|
132
|
+
* parameter-properties) and typed locals. Annotations that resolve are recorded in `resolved`, so the caller
|
|
133
|
+
* can report the `KbqBadge` mentions this pass could not turn into a receiver.
|
|
134
|
+
*/
|
|
135
|
+
function collectReceivers(sourceFile, typeName, resolved) {
|
|
136
|
+
const receivers = [];
|
|
137
|
+
const add = (text, declaration, scope) => receivers.push({ text, declaration, scope: scope ?? sourceFile });
|
|
138
|
+
const visit = (node) => {
|
|
139
|
+
if (ts.isParameter(node) && ts.isIdentifier(node.name) && isTypeReference(node.type, typeName)) {
|
|
140
|
+
resolved?.add(node.type);
|
|
141
|
+
add(node.name.text, node, findAncestor(node, ts.isFunctionLike));
|
|
142
|
+
// A constructor parameter-property is also a class field, reachable as `this.<name>`.
|
|
143
|
+
if (node.modifiers?.some((modifier) => FIELD_MODIFIERS.has(modifier.kind))) {
|
|
144
|
+
const owner = findAncestor(node, ts.isClassDeclaration);
|
|
145
|
+
if (owner)
|
|
146
|
+
add(`this.${node.name.text}`, node, owner);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else if (ts.isPropertyDeclaration(node) &&
|
|
150
|
+
ts.isIdentifier(node.name) &&
|
|
151
|
+
isTypeReference(node.type, typeName)) {
|
|
152
|
+
const owner = findAncestor(node, ts.isClassDeclaration);
|
|
153
|
+
if (owner) {
|
|
154
|
+
resolved?.add(node.type);
|
|
155
|
+
add(`this.${node.name.text}`, node, owner);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if (ts.isVariableDeclaration(node) &&
|
|
159
|
+
ts.isIdentifier(node.name) &&
|
|
160
|
+
isTypeReference(node.type, typeName)) {
|
|
161
|
+
resolved?.add(node.type);
|
|
162
|
+
add(node.name.text, node, findAncestor(node, opensScope));
|
|
163
|
+
}
|
|
164
|
+
node.forEachChild(visit);
|
|
165
|
+
};
|
|
166
|
+
visit(sourceFile);
|
|
167
|
+
return receivers;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* 1-based lines where `KbqBadge` is named in a type position `collectReceivers` could not resolve: a union,
|
|
171
|
+
* an array, a type argument (`QueryList<KbqBadge>`), a cast or a return type.
|
|
172
|
+
*/
|
|
173
|
+
function collectUnresolvedMentions(sourceFile, resolved, typeNames, receivers, bindings) {
|
|
174
|
+
const lines = new Set();
|
|
175
|
+
const members = [...migrations_badgeSignals_data.SIGNAL_MEMBERS, ...migrations_badgeSignals_data.VALUE_CHANGED_MEMBERS, ...migrations_badgeSignals_data.PROTECTED_MEMBERS];
|
|
176
|
+
const report = (node) => lines.add(sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1);
|
|
177
|
+
/** Whether `expression` names a receiver that is in scope right here. */
|
|
178
|
+
const isReceiver = (expression, at) => {
|
|
179
|
+
const text = unwrapReceiver(expression).getText(sourceFile);
|
|
180
|
+
return receivers.some((receiver) => receiver.text === text &&
|
|
181
|
+
(receiver.text.startsWith('this.')
|
|
182
|
+
? reachesScope(at, receiver.scope, rebindsThis)
|
|
183
|
+
: reachesScope(at, receiver.scope, () => false) &&
|
|
184
|
+
resolveBinding(bindings, receiver.text, at.getStart(sourceFile)) === receiver.declaration));
|
|
185
|
+
};
|
|
186
|
+
const visit = (node) => {
|
|
187
|
+
// A type position that does not resolve to one identifier: a union, an array, a type argument,
|
|
188
|
+
// a cast, a return type.
|
|
189
|
+
if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName) && typeNames.includes(node.typeName.text)) {
|
|
190
|
+
if (!resolved.has(node))
|
|
191
|
+
report(node);
|
|
192
|
+
}
|
|
193
|
+
// `badge['compact']` — the member name is a string, so the access pass never sees it.
|
|
194
|
+
else if (ts.isElementAccessExpression(node) &&
|
|
195
|
+
ts.isStringLiteralLike(node.argumentExpression) &&
|
|
196
|
+
members.includes(node.argumentExpression.text) &&
|
|
197
|
+
isReceiver(node.expression, node)) {
|
|
198
|
+
report(node);
|
|
199
|
+
}
|
|
200
|
+
// `const { compact } = badge` — the read happens in the binding pattern, not in an access.
|
|
201
|
+
else if (ts.isVariableDeclaration(node) &&
|
|
202
|
+
ts.isObjectBindingPattern(node.name) &&
|
|
203
|
+
node.initializer &&
|
|
204
|
+
isReceiver(node.initializer, node) &&
|
|
205
|
+
node.name.elements.some((element) => ts.isIdentifier(element.propertyName ?? element.name) &&
|
|
206
|
+
members.includes((element.propertyName ?? element.name).getText(sourceFile)))) {
|
|
207
|
+
report(node);
|
|
208
|
+
}
|
|
209
|
+
node.forEachChild(visit);
|
|
210
|
+
};
|
|
211
|
+
visit(sourceFile);
|
|
212
|
+
return [...lines].sort((a, b) => a - b);
|
|
213
|
+
}
|
|
214
|
+
/** Strips the wrappers that do not change which object an access reads from. */
|
|
215
|
+
function unwrapReceiver(node) {
|
|
216
|
+
let current = node;
|
|
217
|
+
while (ts.isNonNullExpression(current) || ts.isParenthesizedExpression(current)) {
|
|
218
|
+
current = current.expression;
|
|
219
|
+
}
|
|
220
|
+
return current;
|
|
221
|
+
}
|
|
222
|
+
/** Whether a property access on a receiver resolves to that receiver at this exact position. */
|
|
223
|
+
function inReceiverScope(node, sourceFile, receivers, bindings) {
|
|
224
|
+
// `this.badge!.compact` and `(badge).compact` name the same receiver as `this.badge` / `badge`.
|
|
225
|
+
const receiverText = unwrapReceiver(node.expression).getText(sourceFile);
|
|
226
|
+
const start = node.getStart(sourceFile);
|
|
227
|
+
return receivers.some((receiver) => {
|
|
228
|
+
if (receiver.text !== receiverText)
|
|
229
|
+
return false;
|
|
230
|
+
// For `this.badge`, a nested `function` or class changes what `this` is; a method or arrow does not.
|
|
231
|
+
// For a bare `badge`, a nested redeclaration of the same name shadows the receiver.
|
|
232
|
+
if (receiver.text.startsWith('this.'))
|
|
233
|
+
return reachesScope(node, receiver.scope, rebindsThis);
|
|
234
|
+
return (reachesScope(node, receiver.scope, () => false) &&
|
|
235
|
+
resolveBinding(bindings, receiver.text, start) === receiver.declaration);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/** Binary operators that make their left operand a write target rather than a read. */
|
|
239
|
+
const ASSIGNMENT_OPERATORS = new Set([
|
|
240
|
+
ts.SyntaxKind.EqualsToken,
|
|
241
|
+
ts.SyntaxKind.PlusEqualsToken,
|
|
242
|
+
ts.SyntaxKind.MinusEqualsToken,
|
|
243
|
+
ts.SyntaxKind.AsteriskEqualsToken,
|
|
244
|
+
ts.SyntaxKind.AsteriskAsteriskEqualsToken,
|
|
245
|
+
ts.SyntaxKind.SlashEqualsToken,
|
|
246
|
+
ts.SyntaxKind.PercentEqualsToken,
|
|
247
|
+
ts.SyntaxKind.LessThanLessThanEqualsToken,
|
|
248
|
+
ts.SyntaxKind.GreaterThanGreaterThanEqualsToken,
|
|
249
|
+
ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken,
|
|
250
|
+
ts.SyntaxKind.AmpersandEqualsToken,
|
|
251
|
+
ts.SyntaxKind.BarEqualsToken,
|
|
252
|
+
ts.SyntaxKind.CaretEqualsToken,
|
|
253
|
+
ts.SyntaxKind.BarBarEqualsToken,
|
|
254
|
+
ts.SyntaxKind.AmpersandAmpersandEqualsToken,
|
|
255
|
+
ts.SyntaxKind.QuestionQuestionEqualsToken
|
|
256
|
+
]);
|
|
257
|
+
/** Unary operators that write their operand back. Every other prefix operator is a plain read. */
|
|
258
|
+
const INCREMENT_OPERATORS = new Set([ts.SyntaxKind.PlusPlusToken, ts.SyntaxKind.MinusMinusToken]);
|
|
259
|
+
/** Whether `node` sits on the left of a destructuring assignment, where it is written rather than read. */
|
|
260
|
+
function isDestructuringTarget(node) {
|
|
261
|
+
let current = node;
|
|
262
|
+
while (ts.isPropertyAssignment(current.parent) ||
|
|
263
|
+
ts.isShorthandPropertyAssignment(current.parent) ||
|
|
264
|
+
ts.isSpreadAssignment(current.parent) ||
|
|
265
|
+
ts.isSpreadElement(current.parent) ||
|
|
266
|
+
ts.isObjectLiteralExpression(current.parent) ||
|
|
267
|
+
ts.isArrayLiteralExpression(current.parent)) {
|
|
268
|
+
current = current.parent;
|
|
269
|
+
}
|
|
270
|
+
return (ts.isBinaryExpression(current.parent) &&
|
|
271
|
+
current.parent.left === current &&
|
|
272
|
+
ASSIGNMENT_OPERATORS.has(current.parent.operatorToken.kind));
|
|
273
|
+
}
|
|
274
|
+
/** Classifies a matched property access and appends the resulting edit(s). */
|
|
275
|
+
function classifyAccess(node, sourceFile, edits) {
|
|
276
|
+
const parent = node.parent;
|
|
277
|
+
// Already migrated: `x.compact()` (call) or `x.compact.set(...)` — leave alone (idempotent).
|
|
278
|
+
if (ts.isCallExpression(parent) && parent.expression === node)
|
|
279
|
+
return;
|
|
280
|
+
if (ts.isPropertyAccessExpression(parent) && parent.expression === node && parent.name.text === 'set')
|
|
281
|
+
return;
|
|
282
|
+
// Write target: `x.compact = RHS` and every compound form (`+=`, `||=`, …). Every KbqBadge signal member
|
|
283
|
+
// is `input()` (read-only), so there is no writable member — the write is left untouched and becomes a
|
|
284
|
+
// compile error the consumer fixes by hand. Appending `()` here would produce unparseable TypeScript.
|
|
285
|
+
if (ts.isBinaryExpression(parent) && parent.left === node && ASSIGNMENT_OPERATORS.has(parent.operatorToken.kind)) {
|
|
286
|
+
if (parent.operatorToken.kind === ts.SyntaxKind.EqualsToken && migrations_badgeSignals_data.WRITABLE_MEMBERS.has(node.name.text)) {
|
|
287
|
+
const rhs = parent.right;
|
|
288
|
+
edits.push({ start: node.getEnd(), end: rhs.getStart(sourceFile), text: '.set(' });
|
|
289
|
+
edits.push({ start: rhs.getEnd(), end: rhs.getEnd(), text: ')' });
|
|
290
|
+
}
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
// `x.compact++` / `--x.compact` and `delete x.compact` are writes too. Only the increment operators
|
|
294
|
+
// count: a `PrefixUnaryExpression` is also how `!x.compact` is spelled, and that is a read.
|
|
295
|
+
if (ts.isPostfixUnaryExpression(parent) && parent.operand === node)
|
|
296
|
+
return;
|
|
297
|
+
if (ts.isPrefixUnaryExpression(parent) && parent.operand === node && INCREMENT_OPERATORS.has(parent.operator))
|
|
298
|
+
return;
|
|
299
|
+
if (ts.isDeleteExpression(parent))
|
|
300
|
+
return;
|
|
301
|
+
// A destructuring assignment target: `({ a: x.compact } = source)`, `[x.compact] = source`.
|
|
302
|
+
if (isDestructuringTarget(node))
|
|
303
|
+
return;
|
|
304
|
+
// Read (incl. optional chain `x?.compact`): append `()`.
|
|
305
|
+
edits.push({ start: node.getEnd(), end: node.getEnd(), text: '()' });
|
|
306
|
+
}
|
|
307
|
+
/** Collects edits for every read/write of a value-safe signal member on a known badge receiver. */
|
|
308
|
+
function collectAccessEdits(sourceFile, receivers, bindings) {
|
|
309
|
+
const edits = [];
|
|
310
|
+
const visit = (node) => {
|
|
311
|
+
if (ts.isPropertyAccessExpression(node) &&
|
|
312
|
+
ts.isIdentifier(node.name) &&
|
|
313
|
+
migrations_badgeSignals_data.SIGNAL_MEMBERS.includes(node.name.text) &&
|
|
314
|
+
inReceiverScope(node, sourceFile, receivers, bindings)) {
|
|
315
|
+
classifyAccess(node, sourceFile, edits);
|
|
316
|
+
}
|
|
317
|
+
node.forEachChild(visit);
|
|
318
|
+
};
|
|
319
|
+
visit(sourceFile);
|
|
320
|
+
return edits;
|
|
321
|
+
}
|
|
322
|
+
/** Collects the members read on a badge or styler receiver that no consumer can keep reading as-is. */
|
|
323
|
+
function collectReceiverWarnings(sourceFile) {
|
|
324
|
+
const valueChanged = new Set();
|
|
325
|
+
const protectedAccess = new Set();
|
|
326
|
+
const stylerAccess = new Set();
|
|
327
|
+
const resolved = new Set();
|
|
328
|
+
const bindings = collectBindings(sourceFile);
|
|
329
|
+
const badgeTypeNames = localTypeNames(sourceFile, migrations_badgeSignals_data.BADGE_TYPE);
|
|
330
|
+
const badgeReceivers = badgeTypeNames.flatMap((name) => collectReceivers(sourceFile, name, resolved));
|
|
331
|
+
const stylerReceivers = localTypeNames(sourceFile, migrations_badgeSignals_data.STYLER_TYPE).flatMap((name) => collectReceivers(sourceFile, name));
|
|
332
|
+
const visit = (node) => {
|
|
333
|
+
if (ts.isPropertyAccessExpression(node) && ts.isIdentifier(node.name)) {
|
|
334
|
+
const name = node.name.text;
|
|
335
|
+
if (inReceiverScope(node, sourceFile, badgeReceivers, bindings)) {
|
|
336
|
+
if (migrations_badgeSignals_data.VALUE_CHANGED_MEMBERS.includes(name))
|
|
337
|
+
valueChanged.add(name);
|
|
338
|
+
else if (migrations_badgeSignals_data.PROTECTED_MEMBERS.includes(name))
|
|
339
|
+
protectedAccess.add(name);
|
|
340
|
+
}
|
|
341
|
+
if (migrations_badgeSignals_data.STYLER_PRIVATE_MEMBERS.includes(name) && inReceiverScope(node, sourceFile, stylerReceivers, bindings)) {
|
|
342
|
+
stylerAccess.add(name);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
node.forEachChild(visit);
|
|
346
|
+
};
|
|
347
|
+
visit(sourceFile);
|
|
348
|
+
return {
|
|
349
|
+
valueChanged,
|
|
350
|
+
protectedAccess,
|
|
351
|
+
stylerAccess,
|
|
352
|
+
unresolved: collectUnresolvedMentions(sourceFile, resolved, badgeTypeNames, badgeReceivers, bindings)
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
/** Pass A — rewrite value-safe programmatic reads of badge signal members in TypeScript code. */
|
|
356
|
+
function migrateTsExpressions(content, fileName) {
|
|
357
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
358
|
+
const receivers = localTypeNames(sourceFile, migrations_badgeSignals_data.BADGE_TYPE).flatMap((name) => collectReceivers(sourceFile, name));
|
|
359
|
+
if (receivers.length === 0)
|
|
360
|
+
return content;
|
|
361
|
+
const edits = collectAccessEdits(sourceFile, receivers, collectBindings(sourceFile));
|
|
362
|
+
return edits.length > 0 ? applyEdits(content, edits) : content;
|
|
363
|
+
}
|
|
364
|
+
const VALUE_CHANGED_MESSAGE = [
|
|
365
|
+
'`badgeColor` is now a read-only InputSignal — read it as `badge.badgeColor()`. Its value also',
|
|
366
|
+
'changed: the getter used to return the CSS class `kbq-badge_<color>`, it now reports the raw color',
|
|
367
|
+
'(e.g. `error`). Programmatic writes (`badge.badgeColor = …`) are no longer possible — bind',
|
|
368
|
+
'`[badgeColor]` in the template instead. Migrate this by hand.'
|
|
369
|
+
];
|
|
370
|
+
const protectedMessage = (members) => `These KbqBadge members are gone: ${[...members].join(', ')}. \`iconItem\` was a content query the badge ` +
|
|
371
|
+
`itself never read, so there is nothing behind it to reach for.`;
|
|
372
|
+
/** Emits precise, receiver-scoped warnings for the members that can't be auto-fixed. */
|
|
373
|
+
function warnReceiverMembers(context, filePath, content) {
|
|
374
|
+
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
375
|
+
const { valueChanged, protectedAccess, stylerAccess, unresolved } = collectReceiverWarnings(sourceFile);
|
|
376
|
+
if (valueChanged.size > 0) {
|
|
377
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ...VALUE_CHANGED_MESSAGE.map((line) => ` ${line}`)]);
|
|
378
|
+
}
|
|
379
|
+
if (protectedAccess.size > 0) {
|
|
380
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${protectedMessage(protectedAccess)}`]);
|
|
381
|
+
}
|
|
382
|
+
if (stylerAccess.size > 0) {
|
|
383
|
+
utils_messages.logMessage(context.logger, [
|
|
384
|
+
`${LABEL} ${filePath}`,
|
|
385
|
+
` These KbqBadgeCssStyler members are now \`private\`: ${[...stylerAccess].join(', ')}. The directive ` +
|
|
386
|
+
`applies the icon spacing classes on its own — there is nothing left to drive from outside.`
|
|
387
|
+
]);
|
|
388
|
+
}
|
|
389
|
+
if (unresolved.length > 0) {
|
|
390
|
+
utils_messages.logMessage(context.logger, [
|
|
391
|
+
`${LABEL} ${filePath}`,
|
|
392
|
+
` ${migrations_badgeSignals_data.UNRESOLVED_RECEIVER_MESSAGE} ${unresolved.join(', ')}.`
|
|
393
|
+
]);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
/** Attribute-name prefixes that mark the value as an Angular expression rather than a literal. */
|
|
397
|
+
const BINDING_PREFIX = /^(?:\[|\(|\*|bind-|bind(?:on)?-|on-)/;
|
|
398
|
+
/**
|
|
399
|
+
* Walks a template's HTML AST, collecting what the rewrite needs: the reference variables bound to a
|
|
400
|
+
* `<kbq-badge>`, the source ranges that actually hold Angular expressions, and every other name the
|
|
401
|
+
* template introduces (so a `@for` variable or a foreign `#ref` sharing a badge ref's name is not rewritten).
|
|
402
|
+
*/
|
|
403
|
+
class TemplateScanner {
|
|
404
|
+
constructor(template) {
|
|
405
|
+
this.template = template;
|
|
406
|
+
/** Badge reference variables, each with the range it is visible in. */
|
|
407
|
+
this.badgeRefs = [];
|
|
408
|
+
this.otherNames = new Set();
|
|
409
|
+
this.expressions = [];
|
|
410
|
+
this.view = { start: 0, end: template.length };
|
|
411
|
+
}
|
|
412
|
+
visitElement(element) {
|
|
413
|
+
const isBadge = element.name === migrations_badgeSignals_data.BADGE_ELEMENT;
|
|
414
|
+
for (const attr of element.attrs ?? []) {
|
|
415
|
+
if (typeof attr.name !== 'string')
|
|
416
|
+
continue;
|
|
417
|
+
const reference = this.referenceName(attr.name);
|
|
418
|
+
if (reference !== undefined) {
|
|
419
|
+
if (isBadge)
|
|
420
|
+
this.badgeRefs.push({ name: reference, ...this.view });
|
|
421
|
+
else
|
|
422
|
+
this.otherNames.add(reference);
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
// `let-item` on an <ng-template> introduces a name the badge refs must not collide with.
|
|
426
|
+
if (attr.name.startsWith('let-')) {
|
|
427
|
+
this.otherNames.add(attr.name.slice(4));
|
|
428
|
+
continue;
|
|
429
|
+
}
|
|
430
|
+
this.collectAttributeExpression(attr);
|
|
431
|
+
}
|
|
432
|
+
// An <ng-template> is an embedded view of its own, like a block.
|
|
433
|
+
this.inView(element.name === 'ng-template' ? element.sourceSpan : undefined, () => this.visitChildren(element));
|
|
434
|
+
}
|
|
435
|
+
visitBlock(block) {
|
|
436
|
+
for (const parameter of block.parameters ?? []) {
|
|
437
|
+
const span = parameter.sourceSpan;
|
|
438
|
+
if (!span)
|
|
439
|
+
continue;
|
|
440
|
+
this.expressions.push({ start: span.start.offset, end: span.end.offset });
|
|
441
|
+
// `@for (badge of badges; track badge)` and `@if (x; as y)` introduce names of their own.
|
|
442
|
+
for (const match of String(parameter.expression ?? '').matchAll(/(?:^\s*|\b(?:as|let)\s+)([A-Za-z_$][\w$]*)\s*(?:\bof\b|\bin\b|=|$)/g)) {
|
|
443
|
+
this.otherNames.add(match[1]);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
this.inView(block.sourceSpan, () => this.visitChildren(block));
|
|
447
|
+
}
|
|
448
|
+
/** Runs `walk` with the embedded view narrowed to `span`, if the node opens one. */
|
|
449
|
+
inView(span, walk) {
|
|
450
|
+
if (!span) {
|
|
451
|
+
walk();
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
const outer = this.view;
|
|
455
|
+
this.view = { start: span.start.offset, end: span.end.offset };
|
|
456
|
+
walk();
|
|
457
|
+
this.view = outer;
|
|
458
|
+
}
|
|
459
|
+
visitText(text) {
|
|
460
|
+
const span = text.sourceSpan;
|
|
461
|
+
if (span)
|
|
462
|
+
this.collectInterpolations(span.start.offset, span.end.offset);
|
|
463
|
+
}
|
|
464
|
+
visitLetDeclaration(decl) {
|
|
465
|
+
if (decl.name)
|
|
466
|
+
this.otherNames.add(decl.name);
|
|
467
|
+
const span = decl.valueSpan ?? decl.sourceSpan;
|
|
468
|
+
if (span)
|
|
469
|
+
this.expressions.push({ start: span.start.offset, end: span.end.offset });
|
|
470
|
+
}
|
|
471
|
+
/** `#ref` / `ref-ref`, or `undefined` when the attribute is not a reference variable. */
|
|
472
|
+
referenceName(name) {
|
|
473
|
+
if (name.startsWith('#'))
|
|
474
|
+
return name.slice(1);
|
|
475
|
+
if (name.startsWith('ref-'))
|
|
476
|
+
return name.slice(4);
|
|
477
|
+
return undefined;
|
|
478
|
+
}
|
|
479
|
+
collectAttributeExpression(attr) {
|
|
480
|
+
const span = attr.valueSpan;
|
|
481
|
+
if (!span)
|
|
482
|
+
return;
|
|
483
|
+
const start = span.start.offset;
|
|
484
|
+
const end = span.end.offset;
|
|
485
|
+
// A binding's whole value is an expression; a plain attribute only holds interpolations.
|
|
486
|
+
if (BINDING_PREFIX.test(attr.name))
|
|
487
|
+
this.expressions.push({ start, end });
|
|
488
|
+
else
|
|
489
|
+
this.collectInterpolations(start, end);
|
|
490
|
+
}
|
|
491
|
+
collectInterpolations(start, end) {
|
|
492
|
+
for (const match of this.template.slice(start, end).matchAll(/\{\{([\s\S]*?)\}\}/g)) {
|
|
493
|
+
const from = start + match.index + 2;
|
|
494
|
+
this.expressions.push({ start: from, end: from + match[1].length });
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
visitChildren(node) {
|
|
498
|
+
for (const child of node.children ?? []) {
|
|
499
|
+
child.visit(this);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
visitAttribute() { }
|
|
503
|
+
visitComment() { }
|
|
504
|
+
visitExpansion() { }
|
|
505
|
+
visitExpansionCase() { }
|
|
506
|
+
visitBlockParameter() { }
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Matches `<ref>.<member>` inside an expression. The lookbehind rejects `item.badge.compact`, where `\b`
|
|
510
|
+
* alone would happily match `badge` after the dot; the two lookahead groups skip an already-migrated call
|
|
511
|
+
* and an assignment target, whose left side must not gain a `()`.
|
|
512
|
+
*/
|
|
513
|
+
function memberAccessPattern(ref) {
|
|
514
|
+
return new RegExp(`(?<![\\w$.])(${escapeRegExp(ref)})(\\??\\.)(${migrations_badgeSignals_data.SIGNAL_MEMBERS.join('|')})\\b(?!\\s*\\()(?!\\s*=(?!=))`, 'g');
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Rewrites `ref.member` reads to `ref.member()`, only inside the given expression ranges. Restricting the
|
|
518
|
+
* rewrite to expressions is what keeps prose, comments and attribute names out of it.
|
|
519
|
+
*/
|
|
520
|
+
function rewriteRefReads(template, refs, expressions) {
|
|
521
|
+
const edits = [];
|
|
522
|
+
for (const { start, end } of expressions) {
|
|
523
|
+
const source = template.slice(start, end);
|
|
524
|
+
for (const ref of refs) {
|
|
525
|
+
if (start < ref.start || end > ref.end)
|
|
526
|
+
continue;
|
|
527
|
+
for (const match of source.matchAll(memberAccessPattern(ref.name))) {
|
|
528
|
+
const at = start + match.index + match[0].length;
|
|
529
|
+
edits.push({ start: at, end: at, text: '()' });
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
return edits.length > 0
|
|
534
|
+
? { content: applyEdits(template, edits), changed: true }
|
|
535
|
+
: { content: template, changed: false };
|
|
536
|
+
}
|
|
537
|
+
/** Members read through a badge reference variable that no template can keep reading as-is. */
|
|
538
|
+
function collectRefManualMembers(template, refs, expressions) {
|
|
539
|
+
const members = [...migrations_badgeSignals_data.VALUE_CHANGED_MEMBERS, ...migrations_badgeSignals_data.PROTECTED_MEMBERS];
|
|
540
|
+
const found = new Set();
|
|
541
|
+
for (const { start, end } of expressions) {
|
|
542
|
+
const source = template.slice(start, end);
|
|
543
|
+
for (const ref of refs) {
|
|
544
|
+
if (start < ref.start || end > ref.end)
|
|
545
|
+
continue;
|
|
546
|
+
const pattern = new RegExp(`(?<![\\w$.])${escapeRegExp(ref.name)}\\??\\.(${members.join('|')})\\b`, 'g');
|
|
547
|
+
for (const match of source.matchAll(pattern)) {
|
|
548
|
+
found.add(match[1]);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
return found;
|
|
553
|
+
}
|
|
554
|
+
const untouched = (template) => ({
|
|
555
|
+
content: template,
|
|
556
|
+
changed: false,
|
|
557
|
+
manual: new Set(),
|
|
558
|
+
unparseable: false
|
|
559
|
+
});
|
|
560
|
+
/** Pass B (core) — parse a template, discover badge refs, rewrite their value-safe signal reads. */
|
|
561
|
+
async function migrateTemplate(template) {
|
|
562
|
+
if (!template.includes(migrations_badgeSignals_data.BADGE_ELEMENT))
|
|
563
|
+
return untouched(template);
|
|
564
|
+
const parsed = await utils_typescript.parseTemplate(template);
|
|
565
|
+
if (!parsed.tree)
|
|
566
|
+
return { ...untouched(template), unparseable: true };
|
|
567
|
+
const scanner = new TemplateScanner(template);
|
|
568
|
+
utils_ast.visitAll(scanner, parsed.tree.rootNodes);
|
|
569
|
+
// A ref whose name is also introduced by a `@for`, an `@let` or a foreign `#ref` is ambiguous: the
|
|
570
|
+
// reads could belong to either, so neither is rewritten.
|
|
571
|
+
const refs = scanner.badgeRefs.filter((ref) => !scanner.otherNames.has(ref.name));
|
|
572
|
+
if (refs.length === 0)
|
|
573
|
+
return untouched(template);
|
|
574
|
+
return {
|
|
575
|
+
...rewriteRefReads(template, refs, scanner.expressions),
|
|
576
|
+
manual: collectRefManualMembers(template, refs, scanner.expressions),
|
|
577
|
+
unparseable: false
|
|
578
|
+
};
|
|
579
|
+
}
|
|
580
|
+
/** Pass B (inline) — rewrite badge ref reads inside inline component templates. */
|
|
581
|
+
async function migrateInlineTemplates(content, fileName) {
|
|
582
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
583
|
+
const ranges = utils_typescript.collectInlineTemplateRanges(sourceFile).sort((a, b) => b.start - a.start);
|
|
584
|
+
const manual = new Set();
|
|
585
|
+
let result = content;
|
|
586
|
+
let unparseable = false;
|
|
587
|
+
for (const { start, end } of ranges) {
|
|
588
|
+
const outcome = await migrateTemplate(result.slice(start, end));
|
|
589
|
+
for (const member of outcome.manual)
|
|
590
|
+
manual.add(member);
|
|
591
|
+
unparseable ||= outcome.unparseable;
|
|
592
|
+
if (outcome.changed) {
|
|
593
|
+
result = result.slice(0, start) + outcome.content + result.slice(end);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
return { content: result, manual, unparseable };
|
|
597
|
+
}
|
|
598
|
+
function logWarnings(context, filePath, content) {
|
|
599
|
+
for (const { anchor, pattern, message } of migrations_badgeSignals_data.warnPatterns) {
|
|
600
|
+
if (!new RegExp(anchor).test(content) || !new RegExp(pattern).test(content))
|
|
601
|
+
continue;
|
|
602
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
/** Reports the members a template reads through a badge ref that the rewrite deliberately left alone. */
|
|
606
|
+
function warnTemplateMembers(context, filePath, manual) {
|
|
607
|
+
if (manual.size === 0)
|
|
608
|
+
return;
|
|
609
|
+
const messages = [`${LABEL} ${filePath}`];
|
|
610
|
+
if (migrations_badgeSignals_data.VALUE_CHANGED_MEMBERS.some((member) => manual.has(member))) {
|
|
611
|
+
messages.push(...VALUE_CHANGED_MESSAGE.map((line) => ` ${line}`));
|
|
612
|
+
}
|
|
613
|
+
const gone = migrations_badgeSignals_data.PROTECTED_MEMBERS.filter((member) => manual.has(member));
|
|
614
|
+
if (gone.length > 0)
|
|
615
|
+
messages.push(` ${protectedMessage(gone)}`);
|
|
616
|
+
utils_messages.logMessage(context.logger, messages);
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* A `.ts` file is a badge consumer if it names any of the exported symbols, imports the package, or renders
|
|
620
|
+
* the element in an inline template — a component that only imports `KbqBadgeModule` names none of the types.
|
|
621
|
+
*/
|
|
622
|
+
function referencesBadge(content) {
|
|
623
|
+
return /\bKbqBadge\w*\b/.test(content) || content.includes(migrations_badgeSignals_data.BADGE_PACKAGE) || content.includes(`<${migrations_badgeSignals_data.BADGE_ELEMENT}`);
|
|
624
|
+
}
|
|
625
|
+
function badgeSignals(options) {
|
|
626
|
+
return async (tree, context) => {
|
|
627
|
+
const { project } = options;
|
|
628
|
+
// `ng update` runs the migration without a schema, so `fix` arrives undefined: default it to on,
|
|
629
|
+
// otherwise the update would report what it would change and write nothing.
|
|
630
|
+
const fix = options.fix ?? true;
|
|
631
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
632
|
+
const root = projectDefinition?.root ?? '';
|
|
633
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
634
|
+
const tsPaths = [];
|
|
635
|
+
const htmlPaths = [];
|
|
636
|
+
utils_packageConfig.visitProjectFiles(rootDir, (filePath) => {
|
|
637
|
+
if (filePath.endsWith(TS_EXT))
|
|
638
|
+
tsPaths.push(filePath);
|
|
639
|
+
else if (filePath.endsWith(HTML_EXT))
|
|
640
|
+
htmlPaths.push(filePath);
|
|
641
|
+
});
|
|
642
|
+
let touched = 0;
|
|
643
|
+
let consumers = 0;
|
|
644
|
+
const commit = (filePath, original, updated) => {
|
|
645
|
+
if (updated === original)
|
|
646
|
+
return;
|
|
647
|
+
touched++;
|
|
648
|
+
if (fix) {
|
|
649
|
+
tree.overwrite(filePath, updated);
|
|
650
|
+
}
|
|
651
|
+
else {
|
|
652
|
+
utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]);
|
|
653
|
+
}
|
|
654
|
+
};
|
|
655
|
+
for (const filePath of tsPaths) {
|
|
656
|
+
const original = tree.read(filePath)?.toString();
|
|
657
|
+
if (!original || !referencesBadge(original))
|
|
658
|
+
continue;
|
|
659
|
+
consumers++;
|
|
660
|
+
logWarnings(context, filePath, original);
|
|
661
|
+
warnReceiverMembers(context, filePath, original);
|
|
662
|
+
const content = migrateTsExpressions(original, filePath);
|
|
663
|
+
const inline = await migrateInlineTemplates(content, filePath);
|
|
664
|
+
warnTemplateMembers(context, filePath, inline.manual);
|
|
665
|
+
if (inline.unparseable) {
|
|
666
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_badgeSignals_data.UNPARSEABLE_TEMPLATE_MESSAGE}`]);
|
|
667
|
+
}
|
|
668
|
+
commit(filePath, original, inline.content);
|
|
669
|
+
}
|
|
670
|
+
for (const filePath of htmlPaths) {
|
|
671
|
+
const original = tree.read(filePath)?.toString();
|
|
672
|
+
if (!original || !original.includes(`<${migrations_badgeSignals_data.BADGE_ELEMENT}`))
|
|
673
|
+
continue;
|
|
674
|
+
consumers++;
|
|
675
|
+
const outcome = await migrateTemplate(original);
|
|
676
|
+
warnTemplateMembers(context, filePath, outcome.manual);
|
|
677
|
+
if (outcome.unparseable) {
|
|
678
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_badgeSignals_data.UNPARSEABLE_TEMPLATE_MESSAGE}`]);
|
|
679
|
+
}
|
|
680
|
+
commit(filePath, original, outcome.content);
|
|
681
|
+
}
|
|
682
|
+
// Nothing here uses the badge, so the summary would only be noise.
|
|
683
|
+
if (consumers === 0)
|
|
684
|
+
return;
|
|
685
|
+
utils_messages.logMessage(context.logger, [
|
|
686
|
+
`${LABEL} processed tree under "${root || '<workspace root>'}", ` +
|
|
687
|
+
`${fix ? 'updated' : 'would update'} ${touched} file(s).`,
|
|
688
|
+
...migrations_badgeSignals_data.SUMMARY
|
|
689
|
+
]);
|
|
690
|
+
};
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
exports.default = badgeSignals;
|