@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,497 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var ts = require('typescript');
|
|
6
|
+
var utils_ast = require('../../utils/ast.cjs');
|
|
7
|
+
var utils_messages = require('../../utils/messages.cjs');
|
|
8
|
+
var utils_packageConfig = require('../../utils/package-config.cjs');
|
|
9
|
+
var utils_projectFiles = require('../../utils/project-files.cjs');
|
|
10
|
+
var utils_typescript = require('../../utils/typescript.cjs');
|
|
11
|
+
var migrations_buttonToggleSignalsAndAria_data = require('./data.cjs');
|
|
12
|
+
require('@angular-devkit/schematics');
|
|
13
|
+
require('@schematics/angular/utility');
|
|
14
|
+
|
|
15
|
+
const TS_EXT = '.ts';
|
|
16
|
+
const HTML_EXT = '.html';
|
|
17
|
+
const STYLE_EXTS = ['.scss', '.css', '.less'];
|
|
18
|
+
const LABEL = '[button-toggle-signals-and-aria]';
|
|
19
|
+
const emptyFindings = () => ({ manual: new Set(), writes: new Set(), notes: new Set() });
|
|
20
|
+
function mergeFindings(target, source) {
|
|
21
|
+
source.manual.forEach((value) => target.manual.add(value));
|
|
22
|
+
source.writes.forEach((value) => target.writes.add(value));
|
|
23
|
+
source.notes.forEach((value) => target.notes.add(value));
|
|
24
|
+
}
|
|
25
|
+
function escapeRegExp(value) {
|
|
26
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
27
|
+
}
|
|
28
|
+
/** Applies text-span edits to `content`, right-to-left, so earlier edits don't shift later offsets. */
|
|
29
|
+
function applyEdits(content, edits) {
|
|
30
|
+
const sorted = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);
|
|
31
|
+
let result = content;
|
|
32
|
+
for (const { start, end, text } of sorted) {
|
|
33
|
+
result = result.slice(0, start) + text + result.slice(end);
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
const isFunctionLike = (node) => ts.isFunctionDeclaration(node) ||
|
|
38
|
+
ts.isMethodDeclaration(node) ||
|
|
39
|
+
ts.isConstructorDeclaration(node) ||
|
|
40
|
+
ts.isArrowFunction(node) ||
|
|
41
|
+
ts.isFunctionExpression(node) ||
|
|
42
|
+
ts.isGetAccessorDeclaration(node) ||
|
|
43
|
+
ts.isSetAccessorDeclaration(node);
|
|
44
|
+
/** Walks up from `node` to the nearest ancestor matching `predicate`. */
|
|
45
|
+
function findAncestor(node, predicate) {
|
|
46
|
+
let current = node.parent;
|
|
47
|
+
while (current) {
|
|
48
|
+
if (predicate(current))
|
|
49
|
+
return current;
|
|
50
|
+
current = current.parent;
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
/** Local names the button-toggle types are reachable by in this file, `import { X as Y }` included. */
|
|
55
|
+
function collectTypeAliases(sourceFile) {
|
|
56
|
+
const aliases = new Map([
|
|
57
|
+
[migrations_buttonToggleSignalsAndAria_data.GROUP_TYPE, migrations_buttonToggleSignalsAndAria_data.GROUP_TYPE],
|
|
58
|
+
[migrations_buttonToggleSignalsAndAria_data.TOGGLE_TYPE, migrations_buttonToggleSignalsAndAria_data.TOGGLE_TYPE]
|
|
59
|
+
]);
|
|
60
|
+
for (const statement of sourceFile.statements) {
|
|
61
|
+
if (!ts.isImportDeclaration(statement))
|
|
62
|
+
continue;
|
|
63
|
+
const bindings = statement.importClause?.namedBindings;
|
|
64
|
+
if (!bindings || !ts.isNamedImports(bindings))
|
|
65
|
+
continue;
|
|
66
|
+
for (const element of bindings.elements) {
|
|
67
|
+
const imported = (element.propertyName ?? element.name).text;
|
|
68
|
+
if (imported === migrations_buttonToggleSignalsAndAria_data.GROUP_TYPE || imported === migrations_buttonToggleSignalsAndAria_data.TOGGLE_TYPE)
|
|
69
|
+
aliases.set(element.name.text, imported);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return aliases;
|
|
73
|
+
}
|
|
74
|
+
/** The button-toggle type a type annotation refers to, if any. */
|
|
75
|
+
function toggleTypeOf(type, aliases) {
|
|
76
|
+
if (!type || !ts.isTypeReferenceNode(type) || !ts.isIdentifier(type.typeName))
|
|
77
|
+
return undefined;
|
|
78
|
+
return aliases.get(type.typeName.text);
|
|
79
|
+
}
|
|
80
|
+
const FIELD_MODIFIERS = new Set([
|
|
81
|
+
ts.SyntaxKind.PrivateKeyword,
|
|
82
|
+
ts.SyntaxKind.PublicKeyword,
|
|
83
|
+
ts.SyntaxKind.ProtectedKeyword,
|
|
84
|
+
ts.SyntaxKind.ReadonlyKeyword
|
|
85
|
+
]);
|
|
86
|
+
/** Factories that hand back a signal, so the declaration is read through a call: `this.group()`. */
|
|
87
|
+
const QUERY_FACTORIES = new Set(['viewChild', 'contentChild']);
|
|
88
|
+
/** Factories that hand back the instance itself. */
|
|
89
|
+
const INSTANCE_FACTORIES = new Set(['inject']);
|
|
90
|
+
/**
|
|
91
|
+
* The button-toggle an initialiser holds, for the shapes that carry no type annotation to read —
|
|
92
|
+
* `viewChild(X)`, `viewChild.required(X)`, `contentChild(X)` and `inject(X)`, which is how a modern
|
|
93
|
+
* Angular consumer reaches a group.
|
|
94
|
+
*/
|
|
95
|
+
function initializerTypeOf(initializer, aliases) {
|
|
96
|
+
if (!initializer || !ts.isCallExpression(initializer))
|
|
97
|
+
return undefined;
|
|
98
|
+
const callee = initializer.expression;
|
|
99
|
+
let factory;
|
|
100
|
+
if (ts.isIdentifier(callee)) {
|
|
101
|
+
factory = callee.text;
|
|
102
|
+
}
|
|
103
|
+
else if (ts.isPropertyAccessExpression(callee) && ts.isIdentifier(callee.expression)) {
|
|
104
|
+
// `viewChild.required(X)` — the `.required` variant of the same factory.
|
|
105
|
+
factory = callee.name.text === 'required' ? callee.expression.text : undefined;
|
|
106
|
+
}
|
|
107
|
+
const [argument] = initializer.arguments;
|
|
108
|
+
const typeName = factory && argument && ts.isIdentifier(argument) ? aliases.get(argument.text) : undefined;
|
|
109
|
+
if (!factory || !typeName)
|
|
110
|
+
return undefined;
|
|
111
|
+
if (QUERY_FACTORIES.has(factory))
|
|
112
|
+
return { typeName, isCall: true };
|
|
113
|
+
if (INSTANCE_FACTORIES.has(factory))
|
|
114
|
+
return { typeName, isCall: false };
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Collects every declaration a receiver can resolve to — not only the ones typed as a button-toggle.
|
|
119
|
+
* An unrelated declaration of the same name has to be collected as well: it is what makes a nested
|
|
120
|
+
* `const group = { vertical: 'north' }` shadow an outer group instead of being rewritten as one.
|
|
121
|
+
*
|
|
122
|
+
* Types are read from an explicit annotation or from a signal-query / `inject()` initialiser; there is
|
|
123
|
+
* no cross-file type resolution, so a receiver whose type lives elsewhere resolves to nothing.
|
|
124
|
+
*/
|
|
125
|
+
function collectDeclarations(sourceFile, aliases) {
|
|
126
|
+
const declarations = [];
|
|
127
|
+
const add = (text, typeName, scope) => declarations.push({ text, typeName, start: scope.getStart(sourceFile), end: scope.getEnd() });
|
|
128
|
+
/** A declaration reached by its own name, plus the call form when it holds a signal. */
|
|
129
|
+
const addWithInitializer = (name, node, scope) => {
|
|
130
|
+
const annotated = toggleTypeOf(node.type, aliases);
|
|
131
|
+
const initialized = annotated ? undefined : initializerTypeOf(node.initializer, aliases);
|
|
132
|
+
add(name, annotated ?? (initialized?.isCall ? undefined : initialized?.typeName), scope);
|
|
133
|
+
if (initialized?.isCall)
|
|
134
|
+
add(`${name}()`, initialized.typeName, scope);
|
|
135
|
+
};
|
|
136
|
+
const visit = (node) => {
|
|
137
|
+
if (ts.isParameter(node) && ts.isIdentifier(node.name)) {
|
|
138
|
+
const typeName = toggleTypeOf(node.type, aliases);
|
|
139
|
+
add(node.name.text, typeName, findAncestor(node, isFunctionLike) ?? sourceFile);
|
|
140
|
+
// A constructor parameter-property is also a class field, reachable as `this.<name>`.
|
|
141
|
+
if (node.modifiers?.some((modifier) => FIELD_MODIFIERS.has(modifier.kind))) {
|
|
142
|
+
const owner = findAncestor(node, ts.isClassDeclaration);
|
|
143
|
+
if (owner)
|
|
144
|
+
add(`this.${node.name.text}`, typeName, owner);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else if (ts.isPropertyDeclaration(node) && ts.isIdentifier(node.name)) {
|
|
148
|
+
const owner = findAncestor(node, ts.isClassDeclaration);
|
|
149
|
+
if (owner)
|
|
150
|
+
addWithInitializer(`this.${node.name.text}`, node, owner);
|
|
151
|
+
}
|
|
152
|
+
else if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {
|
|
153
|
+
addWithInitializer(node.name.text, node, findAncestor(node, isFunctionLike) ?? sourceFile);
|
|
154
|
+
}
|
|
155
|
+
node.forEachChild(visit);
|
|
156
|
+
};
|
|
157
|
+
visit(sourceFile);
|
|
158
|
+
return declarations;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The declaration a receiver resolves to: the innermost scope that still contains the access, which is
|
|
162
|
+
* the one with the latest start. Matching the name alone is not enough — an unrelated local of the same
|
|
163
|
+
* name has to win over an outer group, or the rewrite lands on code that is not a button-toggle at all.
|
|
164
|
+
*/
|
|
165
|
+
function resolveDeclaration(node, sourceFile, declarations) {
|
|
166
|
+
const text = node.expression.getText(sourceFile);
|
|
167
|
+
const start = node.getStart(sourceFile);
|
|
168
|
+
const end = node.getEnd();
|
|
169
|
+
let resolved;
|
|
170
|
+
for (const declaration of declarations) {
|
|
171
|
+
if (declaration.text !== text || start < declaration.start || end > declaration.end)
|
|
172
|
+
continue;
|
|
173
|
+
if (!resolved || declaration.start > resolved.start)
|
|
174
|
+
resolved = declaration;
|
|
175
|
+
}
|
|
176
|
+
return resolved;
|
|
177
|
+
}
|
|
178
|
+
/** The signal method a member access is immediately followed by, if any (`x.multiple.set`). */
|
|
179
|
+
function followedByMethod(node) {
|
|
180
|
+
const parent = node.parent;
|
|
181
|
+
return ts.isPropertyAccessExpression(parent) && parent.expression === node ? parent.name.text : undefined;
|
|
182
|
+
}
|
|
183
|
+
/** Whether a property access is the left-hand side of an assignment. */
|
|
184
|
+
const isAssignmentTarget = (node) => ts.isBinaryExpression(node.parent) &&
|
|
185
|
+
node.parent.left === node &&
|
|
186
|
+
node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken;
|
|
187
|
+
/** Whether a member access is already a call, i.e. reads a signal the way the new API expects. */
|
|
188
|
+
const isCalled = (node) => ts.isCallExpression(node.parent) && node.parent.expression === node;
|
|
189
|
+
/**
|
|
190
|
+
* Whether a member of a removed-or-narrowed receiver has to be reported. Most of them break on any
|
|
191
|
+
* access, having become `private`/`protected` or gone altogether; the ones that only turned into a
|
|
192
|
+
* read-only getter still read exactly as they did, so only an assignment is worth a line.
|
|
193
|
+
*/
|
|
194
|
+
const isBreakingManualAccess = (member, node) => migrations_buttonToggleSignalsAndAria_data.MANUAL_MEMBERS.has(member) && (!migrations_buttonToggleSignalsAndAria_data.WRITE_ONLY_MANUAL_MEMBERS.has(member) || isAssignmentTarget(node));
|
|
195
|
+
/**
|
|
196
|
+
* Classifies a matched property access of a group signal member: a read becomes a call, a write is left to
|
|
197
|
+
* the compiler and reported — an `input()` is read-only and has no `.set()` to rewrite to.
|
|
198
|
+
*/
|
|
199
|
+
function classifySignalAccess(node, edits, findings) {
|
|
200
|
+
// Already migrated: `x.multiple()` — leave alone.
|
|
201
|
+
if (ts.isCallExpression(node.parent) && node.parent.expression === node)
|
|
202
|
+
return;
|
|
203
|
+
const method = followedByMethod(node);
|
|
204
|
+
if (method && migrations_buttonToggleSignalsAndAria_data.SIGNAL_API_METHODS.has(method))
|
|
205
|
+
return;
|
|
206
|
+
if (isAssignmentTarget(node)) {
|
|
207
|
+
findings.writes.add(node.name.text);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
// Read (incl. optional chain `x?.multiple`): append `()`.
|
|
211
|
+
edits.push({ start: node.getEnd(), end: node.getEnd(), text: '()' });
|
|
212
|
+
}
|
|
213
|
+
/** Pass A — rewrite reads of the group's signal inputs and collect what cannot be rewritten. */
|
|
214
|
+
function migrateTs(content, fileName) {
|
|
215
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
216
|
+
const aliases = collectTypeAliases(sourceFile);
|
|
217
|
+
const declarations = collectDeclarations(sourceFile, aliases);
|
|
218
|
+
const findings = emptyFindings();
|
|
219
|
+
const edits = [];
|
|
220
|
+
// A receiver typed elsewhere resolves to nothing here, so a signal read on it is neither rewritten
|
|
221
|
+
// nor reported by name. Worth one line per file, but only where a group is actually in play.
|
|
222
|
+
const namesGroup = content.includes(migrations_buttonToggleSignalsAndAria_data.GROUP_TYPE);
|
|
223
|
+
const visit = (node) => {
|
|
224
|
+
if (ts.isPropertyAccessExpression(node) && ts.isIdentifier(node.name)) {
|
|
225
|
+
const declaration = resolveDeclaration(node, sourceFile, declarations);
|
|
226
|
+
const member = node.name.text;
|
|
227
|
+
if (declaration?.typeName) {
|
|
228
|
+
if (declaration.typeName === migrations_buttonToggleSignalsAndAria_data.GROUP_TYPE && migrations_buttonToggleSignalsAndAria_data.SIGNAL_MEMBERS.includes(member)) {
|
|
229
|
+
classifySignalAccess(node, edits, findings);
|
|
230
|
+
}
|
|
231
|
+
else if (isBreakingManualAccess(member, node)) {
|
|
232
|
+
findings.manual.add(member);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else if (!declaration && namesGroup && migrations_buttonToggleSignalsAndAria_data.SIGNAL_MEMBERS.includes(member) && !isCalled(node)) {
|
|
236
|
+
findings.notes.add(migrations_buttonToggleSignalsAndAria_data.UNRESOLVED_SIGNAL_READ_MESSAGE);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
node.forEachChild(visit);
|
|
240
|
+
};
|
|
241
|
+
visit(sourceFile);
|
|
242
|
+
return { content: edits.length > 0 ? applyEdits(content, edits) : content, findings };
|
|
243
|
+
}
|
|
244
|
+
/** An attribute name as written, with binding syntax stripped: `[attr.aria-label]` → `aria-label`. */
|
|
245
|
+
const attrName = (attr) => attr.name.replace(/[[\]()]/g, '').replace(/^attr\./, '');
|
|
246
|
+
const hasAttr = (node, names) => !!node.attrs?.some((attr) => names.includes(attrName(attr)));
|
|
247
|
+
const isElement = (node) => Array.isArray(node.attrs);
|
|
248
|
+
const isText = (node) => !isElement(node) && Array.isArray(node.tokens);
|
|
249
|
+
/** Whether the subtree holds any text — a bare text node, an interpolation, or text inside an element. */
|
|
250
|
+
function hasTextContent(node) {
|
|
251
|
+
for (const child of node.children ?? []) {
|
|
252
|
+
if (isText(child)) {
|
|
253
|
+
if ((child.value ?? '').trim() !== '')
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
else if (hasTextContent(child)) {
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
/** Whether the subtree holds an icon, which is the content that carries no accessible name. */
|
|
263
|
+
function hasIcon(node) {
|
|
264
|
+
for (const child of node.children ?? []) {
|
|
265
|
+
if (isElement(child) && hasAttr(child, migrations_buttonToggleSignalsAndAria_data.ICON_ATTRS))
|
|
266
|
+
return true;
|
|
267
|
+
if (hasIcon(child))
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
return false;
|
|
271
|
+
}
|
|
272
|
+
/** Collects group reference variables and icon-only toggles that carry no accessible name. */
|
|
273
|
+
class TemplateCollector {
|
|
274
|
+
constructor() {
|
|
275
|
+
this.refs = new Set();
|
|
276
|
+
this.unnamedToggleLines = [];
|
|
277
|
+
}
|
|
278
|
+
visitElement(element) {
|
|
279
|
+
for (const attr of element.attrs ?? []) {
|
|
280
|
+
if (typeof attr.name !== 'string' || attr.value !== migrations_buttonToggleSignalsAndAria_data.GROUP_EXPORT_AS)
|
|
281
|
+
continue;
|
|
282
|
+
if (attr.name.startsWith('#'))
|
|
283
|
+
this.refs.add(attr.name.slice(1));
|
|
284
|
+
else if (attr.name.startsWith('ref-'))
|
|
285
|
+
this.refs.add(attr.name.slice(4));
|
|
286
|
+
}
|
|
287
|
+
if (element.name === migrations_buttonToggleSignalsAndAria_data.TOGGLE_ELEMENT && hasIcon(element) && !hasTextContent(element)) {
|
|
288
|
+
// A `title` here does not count: it stays on the host, while the name is computed for the
|
|
289
|
+
// inner button. `KbqButtonToggle` does not accept it either.
|
|
290
|
+
if (!hasAttr(element, migrations_buttonToggleSignalsAndAria_data.NAME_ATTRS)) {
|
|
291
|
+
this.unnamedToggleLines.push((element.startSourceSpan?.start.line ?? 0) + 1);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
this.visitChildren(element);
|
|
295
|
+
}
|
|
296
|
+
visitBlock(block) {
|
|
297
|
+
this.visitChildren(block);
|
|
298
|
+
}
|
|
299
|
+
visitChildren(node) {
|
|
300
|
+
for (const child of node.children ?? []) {
|
|
301
|
+
child.visit(this);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
visitAttribute() { }
|
|
305
|
+
visitText() { }
|
|
306
|
+
visitComment() { }
|
|
307
|
+
visitExpansion() { }
|
|
308
|
+
visitExpansionCase() { }
|
|
309
|
+
visitBlockParameter() { }
|
|
310
|
+
visitLetDeclaration() { }
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Matches `<ref>.<member>` where the access is neither already a call nor a signal-API call. A template can
|
|
314
|
+
* only read these, so an assignment never needs excluding.
|
|
315
|
+
*
|
|
316
|
+
* The dot is matched with the whitespace around it — Angular's expression grammar allows `group . multiple`
|
|
317
|
+
* and a binding wrapped over two lines — and that whitespace is captured so the rewrite keeps the layout.
|
|
318
|
+
*/
|
|
319
|
+
function memberAccessPattern(ref) {
|
|
320
|
+
const methods = [...migrations_buttonToggleSignalsAndAria_data.SIGNAL_API_METHODS].join('|');
|
|
321
|
+
return new RegExp(`\\b(${escapeRegExp(ref)})(\\s*\\.\\s*)(${migrations_buttonToggleSignalsAndAria_data.SIGNAL_MEMBERS.join('|')})\\b(?!\\s*\\()(?!\\s*\\.\\s*(?:${methods})\\b)`, 'g');
|
|
322
|
+
}
|
|
323
|
+
/** Rewrites `ref.multiple` reads to `ref.multiple()` for the given refs. */
|
|
324
|
+
function rewriteRefReads(template, refs) {
|
|
325
|
+
let content = template;
|
|
326
|
+
let changed = false;
|
|
327
|
+
for (const ref of refs) {
|
|
328
|
+
const next = content.replace(memberAccessPattern(ref), '$1$2$3()');
|
|
329
|
+
if (next !== content) {
|
|
330
|
+
content = next;
|
|
331
|
+
changed = true;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return { content, changed };
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Manual members read through a group reference variable in a template. A template cannot assign, so the
|
|
338
|
+
* members that only broke for writers — the ones that became read-only getters — are left out.
|
|
339
|
+
*/
|
|
340
|
+
function collectRefManualMembers(template, refs) {
|
|
341
|
+
const members = [...migrations_buttonToggleSignalsAndAria_data.MANUAL_MEMBERS.keys()].filter((member) => !migrations_buttonToggleSignalsAndAria_data.WRITE_ONLY_MANUAL_MEMBERS.has(member));
|
|
342
|
+
const found = new Set();
|
|
343
|
+
for (const ref of refs) {
|
|
344
|
+
const pattern = new RegExp(`\\b${escapeRegExp(ref)}\\s*\\.\\s*(${members.join('|')})\\b`, 'g');
|
|
345
|
+
for (const match of template.matchAll(pattern)) {
|
|
346
|
+
found.add(match[1]);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return found;
|
|
350
|
+
}
|
|
351
|
+
const untouched = (template) => ({
|
|
352
|
+
content: template,
|
|
353
|
+
changed: false,
|
|
354
|
+
findings: emptyFindings(),
|
|
355
|
+
unparseable: false
|
|
356
|
+
});
|
|
357
|
+
/** Pass B — rewrite group ref reads and report icon-only toggles with no accessible name. */
|
|
358
|
+
async function migrateTemplate(template) {
|
|
359
|
+
if (!template.includes(migrations_buttonToggleSignalsAndAria_data.TOGGLE_ELEMENT))
|
|
360
|
+
return untouched(template);
|
|
361
|
+
const parsed = await utils_typescript.parseTemplate(template);
|
|
362
|
+
if (!parsed.tree)
|
|
363
|
+
return { ...untouched(template), unparseable: true };
|
|
364
|
+
const collector = new TemplateCollector();
|
|
365
|
+
utils_ast.visitAll(collector, parsed.tree.rootNodes);
|
|
366
|
+
const refs = [...collector.refs];
|
|
367
|
+
const findings = emptyFindings();
|
|
368
|
+
for (const line of collector.unnamedToggleLines) {
|
|
369
|
+
findings.notes.add(migrations_buttonToggleSignalsAndAria_data.UNNAMED_ICON_TOGGLE_MESSAGE.replace('%s', String(line)));
|
|
370
|
+
}
|
|
371
|
+
if (refs.length === 0)
|
|
372
|
+
return { ...untouched(template), findings };
|
|
373
|
+
collectRefManualMembers(template, refs).forEach((member) => findings.manual.add(member));
|
|
374
|
+
return { ...rewriteRefReads(template, refs), findings, unparseable: false };
|
|
375
|
+
}
|
|
376
|
+
/** Pass B (inline) — the same, inside inline component templates. */
|
|
377
|
+
async function migrateInlineTemplates(content, fileName) {
|
|
378
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
379
|
+
const findings = emptyFindings();
|
|
380
|
+
let result = content;
|
|
381
|
+
let unparseable = false;
|
|
382
|
+
// Splice right-to-left so earlier offsets stay valid.
|
|
383
|
+
for (const { start, end } of utils_typescript.collectInlineTemplateRanges(sourceFile).sort((a, b) => b.start - a.start)) {
|
|
384
|
+
const migrated = await migrateTemplate(result.slice(start, end));
|
|
385
|
+
mergeFindings(findings, migrated.findings);
|
|
386
|
+
unparseable ||= migrated.unparseable;
|
|
387
|
+
if (migrated.changed) {
|
|
388
|
+
result = result.slice(0, start) + migrated.content + result.slice(end);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return { content: result, findings, unparseable };
|
|
392
|
+
}
|
|
393
|
+
function logPatterns(context, filePath, content, patterns) {
|
|
394
|
+
for (const { pattern, message } of patterns) {
|
|
395
|
+
if (new RegExp(pattern).test(content)) {
|
|
396
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
function logFindings(context, filePath, findings) {
|
|
401
|
+
for (const member of findings.manual) {
|
|
402
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_buttonToggleSignalsAndAria_data.MANUAL_MEMBERS.get(member)}`]);
|
|
403
|
+
}
|
|
404
|
+
for (const member of findings.writes) {
|
|
405
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_buttonToggleSignalsAndAria_data.WRITE_MESSAGES.get(member)}`]);
|
|
406
|
+
}
|
|
407
|
+
for (const note of findings.notes) {
|
|
408
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${note}`]);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
/** A `.ts` file is a button-toggle consumer if it names one of its symbols or imports the package. */
|
|
412
|
+
function referencesButtonToggle(content) {
|
|
413
|
+
return (/\bKbqButtonToggle\w*\b/.test(content) ||
|
|
414
|
+
content.includes('@koobiq/components/button-toggle') ||
|
|
415
|
+
content.includes(migrations_buttonToggleSignalsAndAria_data.TOGGLE_ELEMENT));
|
|
416
|
+
}
|
|
417
|
+
function buttonToggleSignalsAndAria(options) {
|
|
418
|
+
return async (tree, context) => {
|
|
419
|
+
const { project } = options;
|
|
420
|
+
// `ng update` invokes migrations with no options at all, and migrations.json declares no schema, so the
|
|
421
|
+
// schema default never reaches us — applying the fix is the intended behaviour there.
|
|
422
|
+
const fix = options.fix ?? true;
|
|
423
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
424
|
+
const root = projectDefinition?.root ?? '';
|
|
425
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
426
|
+
const tsPaths = [];
|
|
427
|
+
const htmlPaths = [];
|
|
428
|
+
const stylePaths = [];
|
|
429
|
+
utils_projectFiles.visitProjectFiles(rootDir, (filePath) => {
|
|
430
|
+
if (filePath.endsWith(TS_EXT))
|
|
431
|
+
tsPaths.push(filePath);
|
|
432
|
+
else if (filePath.endsWith(HTML_EXT))
|
|
433
|
+
htmlPaths.push(filePath);
|
|
434
|
+
else if (STYLE_EXTS.some((ext) => filePath.endsWith(ext)))
|
|
435
|
+
stylePaths.push(filePath);
|
|
436
|
+
});
|
|
437
|
+
let touched = 0;
|
|
438
|
+
const commit = (filePath, original, updated) => {
|
|
439
|
+
if (updated === original)
|
|
440
|
+
return;
|
|
441
|
+
touched++;
|
|
442
|
+
if (fix) {
|
|
443
|
+
tree.overwrite(filePath, updated);
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]);
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
for (const filePath of tsPaths) {
|
|
450
|
+
const original = tree.read(filePath)?.toString();
|
|
451
|
+
if (!original || !referencesButtonToggle(original))
|
|
452
|
+
continue;
|
|
453
|
+
const expressions = migrateTs(original, filePath);
|
|
454
|
+
const inline = await migrateInlineTemplates(expressions.content, filePath);
|
|
455
|
+
const content = inline.content;
|
|
456
|
+
// The pattern warnings are checked against the post-fix content, so an auto-fixed read does not
|
|
457
|
+
// also produce a note. In dry-run mode the fix is not written, so report against the original.
|
|
458
|
+
const reported = fix ? content : original;
|
|
459
|
+
const findings = emptyFindings();
|
|
460
|
+
// Both passes only ever collect what they could not rewrite, so there is nothing to re-check.
|
|
461
|
+
mergeFindings(findings, expressions.findings);
|
|
462
|
+
mergeFindings(findings, inline.findings);
|
|
463
|
+
logPatterns(context, filePath, reported, migrations_buttonToggleSignalsAndAria_data.tsWarnPatterns);
|
|
464
|
+
logFindings(context, filePath, findings);
|
|
465
|
+
if (inline.unparseable) {
|
|
466
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_buttonToggleSignalsAndAria_data.UNPARSEABLE_TEMPLATE_MESSAGE}`]);
|
|
467
|
+
}
|
|
468
|
+
commit(filePath, original, content);
|
|
469
|
+
}
|
|
470
|
+
for (const filePath of htmlPaths) {
|
|
471
|
+
const original = tree.read(filePath)?.toString();
|
|
472
|
+
if (!original)
|
|
473
|
+
continue;
|
|
474
|
+
const migrated = await migrateTemplate(original);
|
|
475
|
+
logFindings(context, filePath, migrated.findings);
|
|
476
|
+
if (migrated.unparseable) {
|
|
477
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_buttonToggleSignalsAndAria_data.UNPARSEABLE_TEMPLATE_MESSAGE}`]);
|
|
478
|
+
}
|
|
479
|
+
if (migrated.changed)
|
|
480
|
+
commit(filePath, original, migrated.content);
|
|
481
|
+
}
|
|
482
|
+
for (const filePath of stylePaths) {
|
|
483
|
+
const original = tree.read(filePath)?.toString();
|
|
484
|
+
if (!original || !original.includes(migrations_buttonToggleSignalsAndAria_data.TOGGLE_ELEMENT))
|
|
485
|
+
continue;
|
|
486
|
+
logPatterns(context, filePath, original, migrations_buttonToggleSignalsAndAria_data.styleWarnPatterns);
|
|
487
|
+
}
|
|
488
|
+
utils_messages.logMessage(context.logger, [
|
|
489
|
+
`${LABEL} processed tree under "${root || '<workspace root>'}", ` +
|
|
490
|
+
`${fix ? 'updated' : 'would update'} ${touched} file(s).`,
|
|
491
|
+
'',
|
|
492
|
+
...migrations_buttonToggleSignalsAndAria_data.BEHAVIOUR_NOTE
|
|
493
|
+
]);
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
exports.default = buttonToggleSignalsAndAria;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-button-toggle-signals-and-aria",
|
|
4
|
+
"title": "Koobiq components button-toggle review 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,110 @@
|
|
|
1
|
+
### Button Truncation schematics
|
|
2
|
+
|
|
3
|
+
This schematic migrates `KbqButton` and `KbqButtonToggle` consumers to labels that truncate with an ellipsis
|
|
4
|
+
by default. It includes:
|
|
5
|
+
|
|
6
|
+
- Moving an icon that sits at either edge of the default slot into the `kbqButtonPrefix` / `kbqButtonSuffix`
|
|
7
|
+
slot
|
|
8
|
+
- Reporting stylesheets whose overrides the new layout affects
|
|
9
|
+
- A note about the one change that has no textual signature to search for
|
|
10
|
+
|
|
11
|
+
An icon left in the default slot shares one box with the label, and that box has to become a flex row to
|
|
12
|
+
centre the icon exactly — which is precisely what stops `text-overflow: ellipsis` from being painted. The
|
|
13
|
+
marker slots lay the icon out _beside_ the truncating box, so the label keeps its ellipsis and the icon keeps
|
|
14
|
+
its centring. Icon-only buttons are left alone: they have no label to truncate.
|
|
15
|
+
|
|
16
|
+
The change is silent — every template still compiles and still renders — so what is not migrated only lays
|
|
17
|
+
out differently.
|
|
18
|
+
|
|
19
|
+
#### What is reported, not fixed
|
|
20
|
+
|
|
21
|
+
| Selector | Why |
|
|
22
|
+
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
23
|
+
| `.kbq-button-text` | was `display: flex`, now `display: inline-block` (a flex box never paints `text-overflow`). Content projected as your own row needs `display: flex; align-items: center` re-declared |
|
|
24
|
+
| `.kbq-button-wrapper` | hand-rolled truncation overrides now stack on top of the built-in one |
|
|
25
|
+
| `.kbq-button-toggle-wrapper` | the projected label moved one level deeper, into `.kbq-button-toggle-text` |
|
|
26
|
+
|
|
27
|
+
`.kbq-button` and `.kbq-light-button` also gained `max-width: 100%`, so a button whose label is wider than its
|
|
28
|
+
container no longer overflows — it clamps and clips. Nothing in the code identifies those places, so review
|
|
29
|
+
screens with narrow buttons, dense toolbars and table cells visually. To upgrade first and adopt truncation
|
|
30
|
+
screen by screen, neutralise it in your global styles:
|
|
31
|
+
|
|
32
|
+
```css
|
|
33
|
+
.kbq-button,
|
|
34
|
+
.kbq-light-button {
|
|
35
|
+
max-width: none;
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
[Params](schema.ts)
|
|
40
|
+
|
|
41
|
+
Usage for Angular Cli:
|
|
42
|
+
|
|
43
|
+
```shell
|
|
44
|
+
ng g @koobiq/components:button-truncation --project "<your project>"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Usage for Nx:
|
|
48
|
+
|
|
49
|
+
```shell
|
|
50
|
+
nx g @koobiq/components:button-truncation --project "<your project>"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Run it without writing anything first — stylesheet findings are printed either way:
|
|
54
|
+
|
|
55
|
+
```shell
|
|
56
|
+
ng g @koobiq/components:button-truncation --project "<your project>" --fix=false
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Run locally
|
|
60
|
+
|
|
61
|
+
Build package
|
|
62
|
+
|
|
63
|
+
```shell
|
|
64
|
+
yarn run build:schematics
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Run command (for example, for `koobiq-docs` project)
|
|
68
|
+
|
|
69
|
+
```shell
|
|
70
|
+
ng g ./dist/components/schematics/collection.json:button-truncation --project koobiq-docs
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Result
|
|
74
|
+
|
|
75
|
+
#### Before
|
|
76
|
+
|
|
77
|
+
```html
|
|
78
|
+
<button kbq-button>
|
|
79
|
+
<i kbq-icon="kbq-plus_16"></i>
|
|
80
|
+
Очень длинный текст кнопки
|
|
81
|
+
<i kbq-icon="kbq-chevron-down-s_16"></i>
|
|
82
|
+
</button>
|
|
83
|
+
|
|
84
|
+
<kbq-button-toggle [value]="1">
|
|
85
|
+
@if (showIcon()) {
|
|
86
|
+
<i kbq-icon="kbq-briefcase_16"></i>
|
|
87
|
+
} Курьером
|
|
88
|
+
</kbq-button-toggle>
|
|
89
|
+
|
|
90
|
+
<!-- icon-only: nothing to truncate, left untouched -->
|
|
91
|
+
<button kbq-button aria-label="Add"><i kbq-icon="kbq-plus_16"></i></button>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### After
|
|
95
|
+
|
|
96
|
+
```html
|
|
97
|
+
<button kbq-button>
|
|
98
|
+
<i kbqButtonPrefix kbq-icon="kbq-plus_16"></i>
|
|
99
|
+
Очень длинный текст кнопки
|
|
100
|
+
<i kbqButtonSuffix kbq-icon="kbq-chevron-down-s_16"></i>
|
|
101
|
+
</button>
|
|
102
|
+
|
|
103
|
+
<kbq-button-toggle [value]="1">
|
|
104
|
+
@if (showIcon()) {
|
|
105
|
+
<i kbqButtonPrefix kbq-icon="kbq-briefcase_16"></i>
|
|
106
|
+
} Курьером
|
|
107
|
+
</kbq-button-toggle>
|
|
108
|
+
|
|
109
|
+
<button kbq-button aria-label="Add"><i kbq-icon="kbq-plus_16"></i></button>
|
|
110
|
+
```
|