@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,93 @@
|
|
|
1
|
+
# tabs-signals-and-aria
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@21` (registered for `21.0.0-0`).
|
|
4
|
+
Reports the subclasses of the tabs classes and the direct calls of their `ngOnChanges`, the members the tabs review
|
|
5
|
+
removed or changed, and states the ARIA and theming changes that have no call site to point at. It never writes to the
|
|
6
|
+
tree.
|
|
7
|
+
|
|
8
|
+
## Signal inputs and queries
|
|
9
|
+
|
|
10
|
+
The decorator inputs of `KbqTabGroup`, `KbqTab`, `KbqTabHeader`, `KbqTabNavBar`, `KbqTabLink`, `KbqTabLabelWrapper`
|
|
11
|
+
and `KbqTabBody` are signal inputs named `<member>Input`, handed to the unchanged member from `ngOnChanges`. Their
|
|
12
|
+
decorator queries are signal queries behind getters: `KbqTabGroup.tabs` and the `items` of the header and the nav bar
|
|
13
|
+
stay `QueryList`s. Reading and writing the members works as before — `tab.disabled`, `tabLink.active` and the selection
|
|
14
|
+
of a group stay plain properties.
|
|
15
|
+
|
|
16
|
+
| Use | What to do |
|
|
17
|
+
| ------------------------------------------- | --------------------------------------------------------------------- |
|
|
18
|
+
| A subclass with its own `ngOnChanges` | Mark it `override` and call `super.ngOnChanges(changes)` |
|
|
19
|
+
| A subclass that redeclared an `@Input()` | Override the `<member>Input` signal input, e.g. `headerPositionInput` |
|
|
20
|
+
| A subclass that redeclared a query | Override the getter (`tabs`, `items`, `labelContent`, …) |
|
|
21
|
+
| `ngOnChanges` called with a `SimpleChanges` | Key it by `<member>Input` (`disabledInput`), or bind the input |
|
|
22
|
+
|
|
23
|
+
A boolean input accepts `boolean | string | null | undefined` in a template now, rather than anything.
|
|
24
|
+
|
|
25
|
+
## Review
|
|
26
|
+
|
|
27
|
+
The review closed the members that were wired to nothing and gave `KbqTabGroup` the ARIA tabs pattern that
|
|
28
|
+
`KbqTabNavBar`, in the same package, already had.
|
|
29
|
+
|
|
30
|
+
| Member | Before | After |
|
|
31
|
+
| ------------------------------- | ----------------------- | --------------------------------------- |
|
|
32
|
+
| `KbqTabGroup.resizeStream` | public `Subject` | removed |
|
|
33
|
+
| `(window:resize)` on the group | host listener | removed |
|
|
34
|
+
| `KbqTabGroup.disabled` | published input | removed |
|
|
35
|
+
| `KbqTabGroup.getTabIndex()` | `(tab, index)` | `(tab, tabHeader, index)`, never `null` |
|
|
36
|
+
| `KbqVerticalTabsCssStyler` | applies a host class | deprecated no-op |
|
|
37
|
+
| `KbqTabLabelWrapper` host | `[attr.disabled]` | `[attr.aria-disabled]` |
|
|
38
|
+
| `KbqTabLink` host | `[attr.disabled]` | `[attr.aria-disabled]` only |
|
|
39
|
+
| `KbqTabBody.afterLeavingCenter` | `EventEmitter<boolean>` | `EventEmitter<void>` |
|
|
40
|
+
|
|
41
|
+
The header is observed with the CDK `SharedResizeObserver` now, which also catches container resizes that no window
|
|
42
|
+
event reports, so a manual `resizeStream.next(event)` has no counterpart. `KbqTabGroup.disabled` was published,
|
|
43
|
+
documented and appeared in the API table, and no template bound it and no style targeted it: disable the individual
|
|
44
|
+
tabs instead.
|
|
45
|
+
|
|
46
|
+
| Pattern | Manual migration |
|
|
47
|
+
| -------------------------- | --------------------------------------------------------------- |
|
|
48
|
+
| `.resizeStream` | Nothing to call; the header observes itself |
|
|
49
|
+
| `<kbq-tab-group disabled>` | Disable the tabs: `<kbq-tab [disabled]="true">` |
|
|
50
|
+
| `.getTabIndex(tab, index)` | Pass the header: `getTabIndex(tab, tabHeader, index)` |
|
|
51
|
+
| `KbqVerticalTabsCssStyler` | Stop importing it; the class follows the `vertical` binding now |
|
|
52
|
+
| `.kbq-tab-label[disabled]` | Target `.kbq-disabled`, or `[aria-disabled="true"]` in a test |
|
|
53
|
+
|
|
54
|
+
## What it cannot reach
|
|
55
|
+
|
|
56
|
+
`KbqTabGroup.disabled` is matched only where the type name and the property access sit on one line —
|
|
57
|
+
`<kbq-tab-group disabled>`, or a single-statement access. The two-step form, where the reference is typed once and read
|
|
58
|
+
later,
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
@ViewChild(KbqTabGroup) group: KbqTabGroup;
|
|
62
|
+
// ...
|
|
63
|
+
if (this.group.disabled) { … }
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
is **not** reported: widening it to the whole file would fire on every `.disabled` of a tab in any file that mentions a
|
|
67
|
+
tab group. The removed input did nothing, so a missed call site is dead code rather than a behaviour change.
|
|
68
|
+
|
|
69
|
+
A stylesheet matching `a[disabled]` inside a nav bar has to move to `.kbq-disabled`; stylesheets are not visited.
|
|
70
|
+
|
|
71
|
+
## Notes with no call site to point at
|
|
72
|
+
|
|
73
|
+
- `KbqTabGroup` renders the ARIA tabs pattern: the label strip is a `role="tablist"` (carrying
|
|
74
|
+
`aria-orientation="vertical"` when `vertical` is set), each label a `role="tab"` with `aria-selected` and
|
|
75
|
+
`aria-controls`, and each body a `role="tabpanel"` with `aria-labelledby` and a tab stop while it is the active one.
|
|
76
|
+
Hand-rolled `role` or `aria-*` attributes on those elements are duplicates now.
|
|
77
|
+
- The roving `tabindex` follows the header's focus position rather than the selection, and a disabled tab gets `-1`
|
|
78
|
+
rather than no attribute at all. A group whose selected tab was disabled had no element with `tabindex="0"`.
|
|
79
|
+
- `KbqTabNavBar` emits `aria-orientation="vertical"` when it is both vertical and a real tablist — that is, when
|
|
80
|
+
`[tabNavPanel]` is supplied. Without `[tabNavPanel]` the nav bar stays plain navigation.
|
|
81
|
+
- `[vertical]` works as a binding, and `disablePagination` is derived rather than latched, so a header that stops being
|
|
82
|
+
vertical gets its paginator arrows back.
|
|
83
|
+
- `KbqTabHeader` is `OnPush` like every other component in the package.
|
|
84
|
+
- `KbqPaginatedTabHeader` is exported from the entry point, and the duplicate `ScrollDirection` in
|
|
85
|
+
`tab-header.component` was deleted in favour of the base one.
|
|
86
|
+
- The four `on-surface` theme branches read the `--kbq-tabs-tab-item-*-on-surface-*` tokens instead of the
|
|
87
|
+
`on-background` family.
|
|
88
|
+
|
|
89
|
+
## Running it manually
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
ng g @koobiq/components:tabs-signals-and-aria --project "<your project>"
|
|
93
|
+
```
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `tabs-signals-and-aria` migration.
|
|
5
|
+
*
|
|
6
|
+
* The decorator inputs of the tabs are signal inputs named `<member>Input`, handed to the unchanged member from
|
|
7
|
+
* `ngOnChanges`, and their decorator queries are signal queries behind getters. Reads and writes of the members are
|
|
8
|
+
* unchanged; a subclass and a hand-made `SimpleChanges` are not.
|
|
9
|
+
*
|
|
10
|
+
* The tabs review closed the members that were wired to nothing and gave `KbqTabGroup` the ARIA tabs pattern its
|
|
11
|
+
* sibling in the same package already had:
|
|
12
|
+
*
|
|
13
|
+
* - `KbqTabGroup.resizeStream` and the `(window:resize)` host listener — removed. The header is observed with the
|
|
14
|
+
* CDK `SharedResizeObserver` now, which also catches container resizes no window event reports.
|
|
15
|
+
* - `KbqTabGroup.disabled` — removed. It was published, documented and read by nothing at all.
|
|
16
|
+
* - `KbqTabGroup.getTabIndex()` — takes the header as its second argument, and returns `-1` instead of `null` for a
|
|
17
|
+
* disabled tab so the strip keeps exactly one tab stop.
|
|
18
|
+
* - `KbqVerticalTabsCssStyler` — deprecated no-op. The vertical layout class is bound from the components
|
|
19
|
+
* themselves, so `[vertical]="false"` now removes it.
|
|
20
|
+
* - `KbqTabLabelWrapper` and `KbqTabLink` emit `aria-disabled` instead of a bare `disabled` attribute.
|
|
21
|
+
*
|
|
22
|
+
* Warn-only. A removed member has no replacement expression, and an attribute selector has to be rewritten by hand.
|
|
23
|
+
*/
|
|
24
|
+
/** Import specifier that marks a file as a tabs consumer. */
|
|
25
|
+
const TABS_PACKAGE = '@koobiq/components/tabs';
|
|
26
|
+
/**
|
|
27
|
+
* Identifier and element shapes that mark a consumer without an import.
|
|
28
|
+
*
|
|
29
|
+
* `KbqTabs?(?![a-z])` rather than `KbqTab\w*`: the greedy form also swallows `KbqTable`, a different component in
|
|
30
|
+
* the same library. Requiring a non-lowercase character after the optional `s` keeps every real export (`KbqTab`,
|
|
31
|
+
* `KbqTabGroup`, `KbqTabNavBar`, `KbqTabsModule`) and drops `KbqTable*`.
|
|
32
|
+
*/
|
|
33
|
+
const TABS_TYPE = '\\bKbqTabs?(?![a-z])\\w*\\b|\\bkbq-tab(?:-group|-nav-bar)?\\b|\\bkbqTab(?:NavBar|Link|Label)\\b';
|
|
34
|
+
const CLASSES = [
|
|
35
|
+
'KbqTabGroup',
|
|
36
|
+
'KbqTab',
|
|
37
|
+
'KbqTabHeader',
|
|
38
|
+
'KbqTabNavBar',
|
|
39
|
+
'KbqTabLink',
|
|
40
|
+
'KbqTabLabelWrapper',
|
|
41
|
+
'KbqTabBody'
|
|
42
|
+
].join('|');
|
|
43
|
+
const SUBCLASS = `\\bextends\\s+(?:${CLASSES})\\b`;
|
|
44
|
+
/** Patterns evaluated for every `.ts` and `.html` file that references the tabs. */
|
|
45
|
+
const warnPatterns = [
|
|
46
|
+
{
|
|
47
|
+
anchor: SUBCLASS,
|
|
48
|
+
pattern: SUBCLASS,
|
|
49
|
+
message: 'A subclass of a Koobiq tabs class whose inputs became signal inputs. The bound value reaches the member ' +
|
|
50
|
+
'from ngOnChanges now, which every one of them but KbqTab declares for the first time: an ngOnChanges of ' +
|
|
51
|
+
'the subclass is marked override and calls super.ngOnChanges(changes). An input the subclass redeclared ' +
|
|
52
|
+
'with @Input() is overridden through the `<member>Input` signal input instead, e.g. ' +
|
|
53
|
+
'`override readonly headerPositionInput = input<KbqTabHeaderPosition | undefined>(undefined, ' +
|
|
54
|
+
"{ alias: 'headerPosition' })`."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
anchor: SUBCLASS,
|
|
58
|
+
pattern: '@(?:ViewChild|ViewChildren|ContentChild|ContentChildren)\\s*\\(',
|
|
59
|
+
message: 'A subclass of a Koobiq tabs class that declares a decorator query. KbqTabGroup.tabs, the items, ' +
|
|
60
|
+
'tabListContainer, tabList, nextPaginator and previousPaginator of KbqTabHeader and KbqTabNavBar, ' +
|
|
61
|
+
'KbqTabLabelWrapper.labelContent and KbqTab.templateLabel are getters over signal queries now, so a ' +
|
|
62
|
+
'subclass can no longer redeclare them as fields: override the getter instead. tabs and items stay ' +
|
|
63
|
+
'QueryLists whose changes emit as before.'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
anchor: `\\b(?:${CLASSES})\\b`,
|
|
67
|
+
pattern: '(?<!\\bsuper)\\.ngOnChanges\\s*\\(',
|
|
68
|
+
message: 'A direct call of ngOnChanges in a file that uses a Koobiq tabs class. Their SimpleChanges are keyed by ' +
|
|
69
|
+
'the `<member>Input` names now (disabledInput, not disabled), and a bound value reaches its member only ' +
|
|
70
|
+
'through them: set the input with a template binding or ComponentRef.setInput instead. This pattern also ' +
|
|
71
|
+
'matches ngOnChanges of an unrelated class in the same file — check before changing it.'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
anchor: TABS_TYPE,
|
|
75
|
+
pattern: '\\bresizeStream\\b',
|
|
76
|
+
message: 'KbqTabGroup.resizeStream and the (window:resize) host listener were removed. The header is observed with ' +
|
|
77
|
+
'the CDK SharedResizeObserver now, which also catches container resizes, so a manual ' +
|
|
78
|
+
'resizeStream.next(event) has no counterpart.'
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
anchor: '\\bKbqTabGroup\\b|\\bkbq-tab-group\\b',
|
|
82
|
+
pattern: '<kbq-tab-group[^>]*\\bdisabled\\b|\\bKbqTabGroup\\b[^\\n]*\\.\\s*disabled\\b',
|
|
83
|
+
message: 'KbqTabGroup.disabled was removed. It was published and documented but read by nothing — no template ' +
|
|
84
|
+
'bound it and no style targeted it, so <kbq-tab-group disabled> never did anything. Disable the ' +
|
|
85
|
+
'individual tabs instead: <kbq-tab [disabled]="true">.'
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
anchor: '\\bKbqTabGroup\\b',
|
|
89
|
+
pattern: '\\.\\s*getTabIndex\\s*\\(',
|
|
90
|
+
message: 'KbqTabGroup.getTabIndex(tab, index) is getTabIndex(tab, tabHeader, index) and returns -1 rather than ' +
|
|
91
|
+
'null for a disabled tab. The roving tabindex follows the header focus position now, so a disabled ' +
|
|
92
|
+
'selected tab can no longer take the whole strip out of the tab order.'
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
anchor: '\\bKbqVerticalTabsCssStyler\\b',
|
|
96
|
+
pattern: '\\bKbqVerticalTabsCssStyler\\b',
|
|
97
|
+
message: 'KbqVerticalTabsCssStyler is a deprecated no-op and will be removed. The kbq-tab-group_vertical class is ' +
|
|
98
|
+
'bound from KbqTabGroup and KbqTabNavBar themselves, so [vertical]="false" removes it instead of ' +
|
|
99
|
+
'leaving it latched on by the attribute selector. Stop importing the directive.'
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
anchor: '\\bkbq-tab-label\\b|\\bkbqTabLabelWrapper\\b',
|
|
103
|
+
pattern: '\\.kbq-tab-label\\[disabled\\]|kbq-tab-label[^\\n]*\\[disabled\\]',
|
|
104
|
+
message: 'A tab label no longer carries a bare `disabled` attribute — that attribute is defined for form controls ' +
|
|
105
|
+
'only and no assistive technology reads it off a div. Target .kbq-disabled for styling or ' +
|
|
106
|
+
'[aria-disabled="true"] in a test.'
|
|
107
|
+
}
|
|
108
|
+
];
|
|
109
|
+
/** Printed once per project that references the tabs, after the per-file reports. */
|
|
110
|
+
const SUMMARY = [
|
|
111
|
+
' Apart from the removals above, reads and writes of the tabs members are unchanged — tab.disabled, ' +
|
|
112
|
+
'tabLink.active and the selection of a group stay plain properties — and tabs and items are still ' +
|
|
113
|
+
'QueryLists. A boolean input (disabled, active, vertical, disablePagination) accepts ' +
|
|
114
|
+
'boolean | string | null | undefined in a template now.',
|
|
115
|
+
' KbqTabGroup renders the ARIA tabs pattern now: the label strip is a role="tablist" (with ' +
|
|
116
|
+
'aria-orientation="vertical" when vertical), each label a role="tab" with aria-selected and ' +
|
|
117
|
+
'aria-controls, and each body a role="tabpanel" with aria-labelledby and a tab stop while active. ' +
|
|
118
|
+
'Hand-rolled role or aria-* attributes on those elements are duplicates now.',
|
|
119
|
+
' KbqTabNavBar emits aria-orientation="vertical" when it is both vertical and a real tablist, i.e. ' +
|
|
120
|
+
'when [tabNavPanel] is supplied. Without [tabNavPanel] the nav bar stays plain navigation and ' +
|
|
121
|
+
'emits no tab semantics at all — supply it whenever the bar switches a region on the same page. ' +
|
|
122
|
+
'A tab link carries aria-disabled and no longer a bare disabled attribute: a selector such as ' +
|
|
123
|
+
'a[kbqTabLink][disabled] moves to .kbq-disabled.',
|
|
124
|
+
' KbqTabHeader is OnPush like every other component in the package. A host that mutated it outside ' +
|
|
125
|
+
'Angular and relied on the Default strategy to pick the change up has to mark it for check.',
|
|
126
|
+
' KbqTabBody.afterLeavingCenter is an EventEmitter<void>: it never carried a value, so a handler that ' +
|
|
127
|
+
'declared a boolean parameter drops it.',
|
|
128
|
+
' KbqPaginatedTabHeader is exported from the entry point, so `extends KbqPaginatedTabHeader` in the ' +
|
|
129
|
+
'public signatures is nameable, and the duplicate ScrollDirection in tab-header.component was ' +
|
|
130
|
+
'deleted in favour of the base one — both resolve through @koobiq/components/tabs.',
|
|
131
|
+
' The four on-surface theme branches read the --kbq-tabs-tab-item-*-on-surface-* tokens they always ' +
|
|
132
|
+
'declared instead of the on-background family. Values that were only overridden on the ' +
|
|
133
|
+
'on-background tokens no longer reach a group or nav bar with [onSurface].'
|
|
134
|
+
];
|
|
135
|
+
|
|
136
|
+
exports.SUMMARY = SUMMARY;
|
|
137
|
+
exports.TABS_PACKAGE = TABS_PACKAGE;
|
|
138
|
+
exports.TABS_TYPE = TABS_TYPE;
|
|
139
|
+
exports.warnPatterns = warnPatterns;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var utils_messages = require('../../utils/messages.js');
|
|
6
|
+
var utils_packageConfig = require('../../package-config-BhU2TfC8.js');
|
|
7
|
+
var migrations_tabsSignalsAndAria_data = require('./data.js');
|
|
8
|
+
require('@angular-devkit/schematics');
|
|
9
|
+
require('@schematics/angular/utility');
|
|
10
|
+
|
|
11
|
+
const LABEL = '[tabs-signals-and-aria]';
|
|
12
|
+
const EXTENSIONS = ['.ts', '.html'];
|
|
13
|
+
// Compiled once rather than for every file of the project. None carries the `g` flag, so a shared instance holds no
|
|
14
|
+
// `lastIndex`.
|
|
15
|
+
const TABS_TYPE_REGEX = new RegExp(migrations_tabsSignalsAndAria_data.TABS_TYPE);
|
|
16
|
+
const COMPILED_WARN_PATTERNS = migrations_tabsSignalsAndAria_data.warnPatterns.map(({ anchor, pattern, message }) => ({
|
|
17
|
+
anchor: anchor ? new RegExp(anchor) : null,
|
|
18
|
+
pattern: new RegExp(pattern),
|
|
19
|
+
message
|
|
20
|
+
}));
|
|
21
|
+
/** A file is a tabs consumer if it imports the package, names a component, or renders one. */
|
|
22
|
+
function referencesTabs(content) {
|
|
23
|
+
return content.includes(migrations_tabsSignalsAndAria_data.TABS_PACKAGE) || TABS_TYPE_REGEX.test(content);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Reports the subclasses of the tabs classes and the direct calls of their `ngOnChanges`, the members the review
|
|
27
|
+
* removed or changed, and the ARIA and theming changes that have no call site to point at. Never writes.
|
|
28
|
+
*
|
|
29
|
+
* `.html` is visited as well as `.ts`, because the removed `disabled` input of the group and the removed
|
|
30
|
+
* `[attr.disabled]` of a label are both template-side.
|
|
31
|
+
*/
|
|
32
|
+
function tabsSignalsAndAria(options) {
|
|
33
|
+
return async (tree, context) => {
|
|
34
|
+
const projectDefinition = await utils_packageConfig.setupOptions(options.project, tree);
|
|
35
|
+
const root = projectDefinition?.root ?? '';
|
|
36
|
+
let consumers = 0;
|
|
37
|
+
let reported = 0;
|
|
38
|
+
utils_packageConfig.visitProjectFiles(root ? tree.getDir(root) : tree.root, (filePath, entry) => {
|
|
39
|
+
if (!EXTENSIONS.some((extension) => filePath.endsWith(extension)))
|
|
40
|
+
return;
|
|
41
|
+
const content = entry.content.toString();
|
|
42
|
+
if (!content || !referencesTabs(content))
|
|
43
|
+
return;
|
|
44
|
+
consumers++;
|
|
45
|
+
for (const { anchor, pattern, message } of COMPILED_WARN_PATTERNS) {
|
|
46
|
+
if (anchor && !anchor.test(content))
|
|
47
|
+
continue;
|
|
48
|
+
if (!pattern.test(content))
|
|
49
|
+
continue;
|
|
50
|
+
reported++;
|
|
51
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// Nothing here renders tabs, so the summary would only be noise.
|
|
55
|
+
if (consumers === 0)
|
|
56
|
+
return;
|
|
57
|
+
utils_messages.logMessage(context.logger, [
|
|
58
|
+
`${LABEL} processed tabs under "${root || '<workspace root>'}", ` +
|
|
59
|
+
`${consumers} file(s) reference the component, ${reported} call site(s) reported.`,
|
|
60
|
+
...migrations_tabsSignalsAndAria_data.SUMMARY
|
|
61
|
+
]);
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
exports.default = tabsSignalsAndAria;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-tabs-signals-and-aria",
|
|
4
|
+
"title": "Koobiq components tabs signals and ARIA migration",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"project": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Name of the project to inspect. If omitted, the migration runs over the whole tree.",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "projectName"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
### Tag list cleaner schematic
|
|
2
|
+
|
|
3
|
+
This schematic removes the `(click)` handler from every `<kbq-cleaner>` projected into a `<kbq-tag-list>`.
|
|
4
|
+
|
|
5
|
+
The reset control of a tag list now removes the tags itself and leaves the disabled ones in place. It
|
|
6
|
+
removes them through the same `removed` output as the remove control inside a tag, so the wiring that
|
|
7
|
+
control already needs is all it takes — a handler that cleared the collection is no longer needed.
|
|
8
|
+
|
|
9
|
+
A handler left in place runs **in addition** to the built-in clearing and cannot suppress it: the host
|
|
10
|
+
listener of `KbqCleaner` runs first. That is why the binding is removed rather than left to the developer.
|
|
11
|
+
|
|
12
|
+
The expression that was removed is printed for every file, because a handler may have done more than clear
|
|
13
|
+
the tags. Put anything else it did back in another binding. Cleaners outside a tag list are untouched.
|
|
14
|
+
|
|
15
|
+
A handler is kept, and reported rather than removed, where the built-in clearing would not take its place:
|
|
16
|
+
when no tag in the list reports `removed`, so the clearing reaches nothing, and when the list is written
|
|
17
|
+
`removable="false"`, which now hides the reset control outright. Fix the list first, then drop the handler.
|
|
18
|
+
|
|
19
|
+
To keep clearing the disabled tags as well, set the predicate on the list instead:
|
|
20
|
+
|
|
21
|
+
```html
|
|
22
|
+
<!-- clearEverything = () => true; on the class -->
|
|
23
|
+
<kbq-tag-list [clearPredicate]="clearEverything"></kbq-tag-list>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Usage for Angular CLI:
|
|
27
|
+
|
|
28
|
+
```shell
|
|
29
|
+
ng g @koobiq/components:tag-list-cleaner --project "<your project>"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Run without writing first:
|
|
33
|
+
|
|
34
|
+
```shell
|
|
35
|
+
ng g @koobiq/components:tag-list-cleaner --project "<your project>" --fix=false
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
#### Before
|
|
39
|
+
|
|
40
|
+
<!-- prettier-ignore -->
|
|
41
|
+
```html
|
|
42
|
+
<kbq-tag-list>
|
|
43
|
+
<kbq-tag [value]="tag" (removed)="removed($event)">{{ tag }}</kbq-tag>
|
|
44
|
+
|
|
45
|
+
<kbq-cleaner (click)="clear()" />
|
|
46
|
+
</kbq-tag-list>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
#### After
|
|
50
|
+
|
|
51
|
+
<!-- prettier-ignore -->
|
|
52
|
+
```html
|
|
53
|
+
<kbq-tag-list>
|
|
54
|
+
<kbq-tag [value]="tag" (removed)="removed($event)">{{ tag }}</kbq-tag>
|
|
55
|
+
|
|
56
|
+
<kbq-cleaner />
|
|
57
|
+
</kbq-tag-list>
|
|
58
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/** The control whose handler this migration removes. */
|
|
4
|
+
const CLEANER_ELEMENT = 'kbq-cleaner';
|
|
5
|
+
/** Only a cleaner projected into a tag list is affected — elsewhere `(click)` still means what it did. */
|
|
6
|
+
const TAG_LIST_ELEMENT = 'kbq-tag-list';
|
|
7
|
+
/** Every spelling of the click binding the Angular parser keeps verbatim in the attribute name. */
|
|
8
|
+
const CLICK_ATTRIBUTES = ['(click)', 'on-click'];
|
|
9
|
+
/** The output the built-in clearing goes through; without it there is nothing to take the handler's place. */
|
|
10
|
+
const REMOVED_ATTRIBUTES = ['(removed)', 'on-removed'];
|
|
11
|
+
/** A list that refuses removal no longer shows a reset control at all. */
|
|
12
|
+
const REMOVABLE_ATTRIBUTES = ['removable', '[removable]', 'bind-removable'];
|
|
13
|
+
const removedHandlerMessage = (filePath, attribute, expression, fix) => [
|
|
14
|
+
` ${fix ? 'removed' : 'would remove'} ${attribute}="${expression}" from <${CLEANER_ELEMENT}> — the tag list clears itself now.`,
|
|
15
|
+
` If the handler did anything besides clearing the tags, put that part back. File: ${filePath}`
|
|
16
|
+
];
|
|
17
|
+
const keptHandlerMessage = (filePath, attribute, expression, reason) => [
|
|
18
|
+
` kept ${attribute}="${expression}" on <${CLEANER_ELEMENT}>: ${reason}`,
|
|
19
|
+
` Removing it would leave the control with nothing behind it. Fix the list, then drop the handler by hand. File: ${filePath}`
|
|
20
|
+
];
|
|
21
|
+
const NO_REMOVED_BINDING_REASON = 'no tag in the list reports `removed`, so the built-in clearing reaches nothing';
|
|
22
|
+
const REFUSES_REMOVAL_REASON = `the list is removable="false", so it no longer shows a reset control at all`;
|
|
23
|
+
const UNPARSEABLE_TEMPLATE_MESSAGE = `Template could not be parsed, so it was left untouched. Check its <${CLEANER_ELEMENT}> handlers by hand.`;
|
|
24
|
+
const BEHAVIOUR_NOTE = [
|
|
25
|
+
`Note: the reset control of a ${TAG_LIST_ELEMENT} now removes the tags itself and leaves the disabled`,
|
|
26
|
+
'ones in place. It removes them through the same `removed` output as the remove control inside a tag, so',
|
|
27
|
+
'the wiring that control already needs is all it takes. A handler left on the cleaner runs in addition to',
|
|
28
|
+
'that, and cannot suppress it. To clear the disabled tags too, bind a predicate that accepts them:',
|
|
29
|
+
'clearEverything = () => true; on the class, [clearPredicate]="clearEverything" on the list.'
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
exports.BEHAVIOUR_NOTE = BEHAVIOUR_NOTE;
|
|
33
|
+
exports.CLEANER_ELEMENT = CLEANER_ELEMENT;
|
|
34
|
+
exports.CLICK_ATTRIBUTES = CLICK_ATTRIBUTES;
|
|
35
|
+
exports.NO_REMOVED_BINDING_REASON = NO_REMOVED_BINDING_REASON;
|
|
36
|
+
exports.REFUSES_REMOVAL_REASON = REFUSES_REMOVAL_REASON;
|
|
37
|
+
exports.REMOVABLE_ATTRIBUTES = REMOVABLE_ATTRIBUTES;
|
|
38
|
+
exports.REMOVED_ATTRIBUTES = REMOVED_ATTRIBUTES;
|
|
39
|
+
exports.TAG_LIST_ELEMENT = TAG_LIST_ELEMENT;
|
|
40
|
+
exports.UNPARSEABLE_TEMPLATE_MESSAGE = UNPARSEABLE_TEMPLATE_MESSAGE;
|
|
41
|
+
exports.keptHandlerMessage = keptHandlerMessage;
|
|
42
|
+
exports.removedHandlerMessage = removedHandlerMessage;
|
|
@@ -0,0 +1,196 @@
|
|
|
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_tagListCleaner_data = require('./data.js');
|
|
11
|
+
require('@angular-devkit/schematics');
|
|
12
|
+
require('@schematics/angular/utility');
|
|
13
|
+
|
|
14
|
+
const TS_EXT = '.ts';
|
|
15
|
+
const HTML_EXT = '.html';
|
|
16
|
+
const LABEL = '[tag-list-cleaner]';
|
|
17
|
+
/** Whether any element in the subtree reports `removed`, the output the built-in clearing goes through. */
|
|
18
|
+
function hasRemovedBinding(node) {
|
|
19
|
+
for (const attr of node.attrs ?? []) {
|
|
20
|
+
if (typeof attr.name === 'string' && migrations_tagListCleaner_data.REMOVED_ATTRIBUTES.includes(attr.name))
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return (node.children ?? []).some((child) => hasRemovedBinding(child));
|
|
24
|
+
}
|
|
25
|
+
/** Whether the list is written as `removable="false"`, which now hides the cleaner outright. */
|
|
26
|
+
function refusesRemoval(element) {
|
|
27
|
+
return (element.attrs ?? []).some((attr) => typeof attr.name === 'string' &&
|
|
28
|
+
migrations_tagListCleaner_data.REMOVABLE_ATTRIBUTES.includes(attr.name) &&
|
|
29
|
+
String(attr.value).trim() === 'false');
|
|
30
|
+
}
|
|
31
|
+
/** Collects the click handler of every cleaner projected into a tag list. */
|
|
32
|
+
class CleanerHandlerCollector {
|
|
33
|
+
constructor() {
|
|
34
|
+
this.findings = [];
|
|
35
|
+
/** One entry per enclosing tag list, carrying why its cleaner's handler may or may not go. */
|
|
36
|
+
this.tagLists = [];
|
|
37
|
+
}
|
|
38
|
+
visitElement(element) {
|
|
39
|
+
const isTagList = element.name === migrations_tagListCleaner_data.TAG_LIST_ELEMENT;
|
|
40
|
+
if (isTagList) {
|
|
41
|
+
this.tagLists.push({
|
|
42
|
+
keptReason: refusesRemoval(element)
|
|
43
|
+
? migrations_tagListCleaner_data.REFUSES_REMOVAL_REASON
|
|
44
|
+
: hasRemovedBinding(element)
|
|
45
|
+
? undefined
|
|
46
|
+
: migrations_tagListCleaner_data.NO_REMOVED_BINDING_REASON
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const tagList = this.tagLists.at(-1);
|
|
50
|
+
if (tagList && element.name === migrations_tagListCleaner_data.CLEANER_ELEMENT) {
|
|
51
|
+
for (const attr of element.attrs ?? []) {
|
|
52
|
+
if (typeof attr.name !== 'string' || !migrations_tagListCleaner_data.CLICK_ATTRIBUTES.includes(attr.name))
|
|
53
|
+
continue;
|
|
54
|
+
this.findings.push({
|
|
55
|
+
edit: { start: attr.sourceSpan.start.offset, end: attr.sourceSpan.end.offset },
|
|
56
|
+
attribute: attr.name,
|
|
57
|
+
expression: String(attr.value).trim(),
|
|
58
|
+
keptReason: tagList.keptReason
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
this.visitChildren(element);
|
|
63
|
+
if (isTagList)
|
|
64
|
+
this.tagLists.pop();
|
|
65
|
+
}
|
|
66
|
+
visitBlock(block) {
|
|
67
|
+
this.visitChildren(block);
|
|
68
|
+
}
|
|
69
|
+
visitChildren(node) {
|
|
70
|
+
for (const child of node.children ?? []) {
|
|
71
|
+
child.visit(this);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
visitAttribute() { }
|
|
75
|
+
visitText() { }
|
|
76
|
+
visitComment() { }
|
|
77
|
+
visitExpansion() { }
|
|
78
|
+
visitExpansionCase() { }
|
|
79
|
+
visitBlockParameter() { }
|
|
80
|
+
visitLetDeclaration() { }
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Deletes the ranges. A deletion also takes the whitespace that separated the attribute from the previous
|
|
84
|
+
* one: an inline attribute takes its leading spaces, one written on its own line takes the line break and
|
|
85
|
+
* the indent as well, so the tag is not left with a blank line.
|
|
86
|
+
*/
|
|
87
|
+
function applyEdits(content, edits) {
|
|
88
|
+
let result = content;
|
|
89
|
+
// Right-to-left, so earlier offsets stay valid.
|
|
90
|
+
for (const { start, end } of [...edits].sort((a, b) => b.start - a.start)) {
|
|
91
|
+
let from = start;
|
|
92
|
+
while (from > 0 && (result[from - 1] === ' ' || result[from - 1] === '\t'))
|
|
93
|
+
from--;
|
|
94
|
+
if (result[from - 1] === '\n') {
|
|
95
|
+
from--;
|
|
96
|
+
if (result[from - 1] === '\r')
|
|
97
|
+
from--;
|
|
98
|
+
}
|
|
99
|
+
result = result.slice(0, from) + result.slice(end);
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Migrates one template. Returns `null` when it could not be parsed — editing it blind is how a
|
|
105
|
+
* regex-based migration corrupts binding expressions, so the caller warns instead.
|
|
106
|
+
*/
|
|
107
|
+
async function migrateTemplate(template, onFinding) {
|
|
108
|
+
if (!template.includes(migrations_tagListCleaner_data.CLEANER_ELEMENT))
|
|
109
|
+
return template;
|
|
110
|
+
const parsed = await utils_typescript.parseTemplate(template);
|
|
111
|
+
if (!parsed.tree)
|
|
112
|
+
return null;
|
|
113
|
+
const collector = new CleanerHandlerCollector();
|
|
114
|
+
utils_ast.visitAll(collector, parsed.tree.rootNodes);
|
|
115
|
+
collector.findings.forEach(onFinding);
|
|
116
|
+
return applyEdits(template, collector.findings.filter(({ keptReason }) => !keptReason).map(({ edit }) => edit));
|
|
117
|
+
}
|
|
118
|
+
/** Applies the template migration to every inline `@Component({ template })` literal of a `.ts` source. */
|
|
119
|
+
async function migrateInlineTemplates(content, sourceFile, onFinding, onParseError) {
|
|
120
|
+
let result = content;
|
|
121
|
+
// Splice right-to-left so earlier offsets stay valid.
|
|
122
|
+
for (const { start, end } of utils_typescript.collectInlineTemplateRanges(sourceFile).sort((a, b) => b.start - a.start)) {
|
|
123
|
+
const migrated = await migrateTemplate(result.slice(start, end), onFinding);
|
|
124
|
+
if (migrated === null) {
|
|
125
|
+
onParseError();
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
result = result.slice(0, start) + migrated + result.slice(end);
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
function tagListCleaner(options) {
|
|
133
|
+
return async (tree, context) => {
|
|
134
|
+
const { project } = options;
|
|
135
|
+
// `ng update` invokes migrations with no options at all, and migrations.json declares no schema,
|
|
136
|
+
// so the schema default never reaches us — applying the fix is the intended behaviour there.
|
|
137
|
+
const fix = options.fix ?? true;
|
|
138
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
139
|
+
const root = projectDefinition?.root ?? '';
|
|
140
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
141
|
+
const filePaths = [];
|
|
142
|
+
utils_packageConfig.visitProjectFiles(rootDir, (filePath) => {
|
|
143
|
+
if (!filePath.endsWith(TS_EXT) && !filePath.endsWith(HTML_EXT))
|
|
144
|
+
return;
|
|
145
|
+
filePaths.push(filePath);
|
|
146
|
+
});
|
|
147
|
+
let touched = 0;
|
|
148
|
+
for (const filePath of filePaths) {
|
|
149
|
+
const originalContent = tree.read(filePath)?.toString();
|
|
150
|
+
// Parsing every `.ts` of the project is not free, and nothing can change in a file that holds
|
|
151
|
+
// no cleaner at all.
|
|
152
|
+
if (!originalContent || !originalContent.includes(migrations_tagListCleaner_data.CLEANER_ELEMENT))
|
|
153
|
+
continue;
|
|
154
|
+
let content = originalContent;
|
|
155
|
+
let unparseable = false;
|
|
156
|
+
const reports = [];
|
|
157
|
+
const onFinding = ({ attribute, expression, keptReason }) => reports.push(keptReason
|
|
158
|
+
? migrations_tagListCleaner_data.keptHandlerMessage(filePath, attribute, expression, keptReason)
|
|
159
|
+
: migrations_tagListCleaner_data.removedHandlerMessage(filePath, attribute, expression, fix));
|
|
160
|
+
if (filePath.endsWith(TS_EXT)) {
|
|
161
|
+
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
162
|
+
content = await migrateInlineTemplates(content, sourceFile, onFinding, () => (unparseable = true));
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const migrated = await migrateTemplate(content, onFinding);
|
|
166
|
+
if (migrated === null)
|
|
167
|
+
unparseable = true;
|
|
168
|
+
else
|
|
169
|
+
content = migrated;
|
|
170
|
+
}
|
|
171
|
+
for (const report of reports) {
|
|
172
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ...report]);
|
|
173
|
+
}
|
|
174
|
+
if (unparseable) {
|
|
175
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${migrations_tagListCleaner_data.UNPARSEABLE_TEMPLATE_MESSAGE}`]);
|
|
176
|
+
}
|
|
177
|
+
if (content === originalContent)
|
|
178
|
+
continue;
|
|
179
|
+
touched++;
|
|
180
|
+
if (fix) {
|
|
181
|
+
tree.overwrite(filePath, content);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
utils_messages.logMessage(context.logger, [
|
|
188
|
+
`${LABEL} processed tree under "${root || '<workspace root>'}", ` +
|
|
189
|
+
`${fix ? 'updated' : 'would update'} ${touched} file(s).`,
|
|
190
|
+
'',
|
|
191
|
+
...migrations_tagListCleaner_data.BEHAVIOUR_NOTE
|
|
192
|
+
]);
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
exports.default = tagListCleaner;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-tag-list-cleaner",
|
|
4
|
+
"title": "Koobiq components tag list cleaner 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, removes the click handler from every kbq-cleaner inside a kbq-tag-list. When false, prints what would change without writing."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|