@koobiq/components 20.4.2 → 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 +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 +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 -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/{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,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `button-truncation` migration.
|
|
5
|
+
*
|
|
6
|
+
* `KbqButton` and `KbqButtonToggle` now truncate their label with an ellipsis by default. Three things
|
|
7
|
+
* changed that no compiler can catch:
|
|
8
|
+
*
|
|
9
|
+
* 1. `.kbq-button` / `.kbq-light-button` gained `max-width: 100%`, so a button that used to overflow its
|
|
10
|
+
* container now clamps to it and clips the label. Nothing in a template or a stylesheet identifies the
|
|
11
|
+
* affected places — this is reported once, as a note.
|
|
12
|
+
* 2. `.kbq-button-text` went from `display: flex` to `display: inline-block` (only a block container paints
|
|
13
|
+
* `text-overflow`). Content projected into the default slot that relied on being a flex row lays out
|
|
14
|
+
* differently, and hand-rolled truncation overrides now stack on top of the built-in one.
|
|
15
|
+
* 3. `kbq-button-toggle` gained a `.kbq-button-toggle-text` box between `.kbq-button-toggle-wrapper` and the
|
|
16
|
+
* projected content, so selectors aimed at the wrapper reach a different element.
|
|
17
|
+
*
|
|
18
|
+
* Only the markup is auto-fixed: an icon at either edge of a button's default slot is moved into the
|
|
19
|
+
* `kbqButtonPrefix`/`kbqButtonSuffix` slot, which is what keeps it laid out *beside* the truncating box
|
|
20
|
+
* instead of inside it. Stylesheets are reported, never rewritten — the right fix depends on why the
|
|
21
|
+
* override exists.
|
|
22
|
+
*/
|
|
23
|
+
/** Attribute that marks a Koobiq button host, e.g. `<button kbq-button>` or `<a kbq-button>`. */
|
|
24
|
+
const BUTTON_ATTR = 'kbq-button';
|
|
25
|
+
/** Element whose default slot has the same prefix/suffix contract as a button. */
|
|
26
|
+
const TOGGLE_ELEMENT = 'kbq-button-toggle';
|
|
27
|
+
/**
|
|
28
|
+
* Attributes that make an element a `KbqIcon`. `[kbq-icon-button]` and `[kbq-icon-item]` are subclasses,
|
|
29
|
+
* so they count towards the same content query the component uses to decide its icon layout.
|
|
30
|
+
*/
|
|
31
|
+
const ICON_ATTRS = ['kbq-icon', 'kbq-icon-button', 'kbq-icon-item'];
|
|
32
|
+
/** Marker directives that project content out of the truncating label box. */
|
|
33
|
+
const PREFIX_ATTR = 'kbqButtonPrefix';
|
|
34
|
+
const SUFFIX_ATTR = 'kbqButtonSuffix';
|
|
35
|
+
/**
|
|
36
|
+
* Stylesheet overrides that are affected by the layout change. Reported with file locations in both `fix`
|
|
37
|
+
* and dry-run mode: whether an override has to be dropped, retargeted or kept depends on why it was written,
|
|
38
|
+
* and guessing wrong silently changes a layout.
|
|
39
|
+
*/
|
|
40
|
+
const stylePatterns = [
|
|
41
|
+
{
|
|
42
|
+
selector: '.kbq-button-text',
|
|
43
|
+
pattern: '\\.kbq-button-text\\b',
|
|
44
|
+
message: '`.kbq-button-text` is no longer a flex container — it is `display: inline-block`, because ' +
|
|
45
|
+
'`text-overflow: ellipsis` is never painted on a flex box. If you project your own row of elements ' +
|
|
46
|
+
'into the default slot, re-declare `display: flex; align-items: center` on it (see how ' +
|
|
47
|
+
'`kbq-filter-bar` does it). If this rule was hand-rolled truncation, delete it: the label now ' +
|
|
48
|
+
'truncates on its own.'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
selector: '.kbq-button-wrapper',
|
|
52
|
+
pattern: '\\.kbq-button-wrapper\\b',
|
|
53
|
+
message: '`.kbq-button-wrapper` no longer needs a truncation override — `.kbq-button-text` inside it clips ' +
|
|
54
|
+
'and paints the ellipsis, and the button host carries `max-width: 100%`. An override that sets ' +
|
|
55
|
+
'`overflow`/`text-overflow`/`display` here now stacks on top of the built-in behaviour; delete it ' +
|
|
56
|
+
'unless it does something else.'
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
selector: '.kbq-button-toggle-wrapper',
|
|
60
|
+
pattern: '\\.kbq-button-toggle-wrapper\\b',
|
|
61
|
+
message: '`kbq-button-toggle` gained a `.kbq-button-toggle-text` box: the wrapper is now only the flex row ' +
|
|
62
|
+
'that lays out the slots, and the projected label sits one level deeper. Retarget selectors that ' +
|
|
63
|
+
'meant the label (including `display: block` overrides added to get an ellipsis — that now works ' +
|
|
64
|
+
'out of the box) at `.kbq-button-toggle-text`.'
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
/** Printed once per run: the one change that has no textual signature to search for. */
|
|
68
|
+
const MAX_WIDTH_NOTE = [
|
|
69
|
+
'`.kbq-button` and `.kbq-light-button` now carry `max-width: 100%`.',
|
|
70
|
+
'A button whose label is wider than its container no longer overflows — it clamps and truncates.',
|
|
71
|
+
'Nothing identifies those places in code, so review screens with narrow buttons, dense toolbars and',
|
|
72
|
+
'table cells visually (screenshot tests will show it immediately).',
|
|
73
|
+
'To upgrade first and adopt truncation screen by screen, neutralise it in your global styles:',
|
|
74
|
+
' .kbq-button, .kbq-light-button { max-width: none; }'
|
|
75
|
+
];
|
|
76
|
+
/** Printed once per run when a template could not be migrated automatically. */
|
|
77
|
+
const MANUAL_TEMPLATE_NOTE = 'Icons that are not a direct first/last child of the button (wrapped in your own element, or produced by ' +
|
|
78
|
+
'a block with more than one element) keep sharing the label box and give the ellipsis up. Mark them with ' +
|
|
79
|
+
`\`${PREFIX_ATTR}\`/\`${SUFFIX_ATTR}\` by hand if the label should truncate.`;
|
|
80
|
+
|
|
81
|
+
exports.BUTTON_ATTR = BUTTON_ATTR;
|
|
82
|
+
exports.ICON_ATTRS = ICON_ATTRS;
|
|
83
|
+
exports.MANUAL_TEMPLATE_NOTE = MANUAL_TEMPLATE_NOTE;
|
|
84
|
+
exports.MAX_WIDTH_NOTE = MAX_WIDTH_NOTE;
|
|
85
|
+
exports.PREFIX_ATTR = PREFIX_ATTR;
|
|
86
|
+
exports.SUFFIX_ATTR = SUFFIX_ATTR;
|
|
87
|
+
exports.TOGGLE_ELEMENT = TOGGLE_ELEMENT;
|
|
88
|
+
exports.stylePatterns = stylePatterns;
|
|
@@ -0,0 +1,269 @@
|
|
|
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_buttonTruncation_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 STYLE_EXTS = ['.scss', '.css', '.less'];
|
|
17
|
+
function applyEdits(content, edits) {
|
|
18
|
+
const sorted = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);
|
|
19
|
+
let result = content;
|
|
20
|
+
for (const { start, end, text } of sorted) {
|
|
21
|
+
result = result.slice(0, start) + text + result.slice(end);
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
/** An attribute name as written, with the binding brackets stripped: `[disabled]` → `disabled`. */
|
|
26
|
+
const attrName = (attr) => attr.name.replace(/[[\]()]/g, '');
|
|
27
|
+
const hasAttr = (node, name) => !!node.attrs?.some((attr) => attrName(attr) === name);
|
|
28
|
+
/**
|
|
29
|
+
* Node kinds are told apart by the field each one carries, not by the start span: a block (`@if`, `@for`)
|
|
30
|
+
* has a name and a start span just like an element does, and would otherwise be mistaken for one.
|
|
31
|
+
*/
|
|
32
|
+
const isElement = (node) => Array.isArray(node.attrs);
|
|
33
|
+
const isBlock = (node) => !isElement(node) && Array.isArray(node.children);
|
|
34
|
+
const isText = (node) => !isElement(node) && Array.isArray(node.tokens);
|
|
35
|
+
/** A node that projects nothing: a comment, or text that is only the template's own indentation. */
|
|
36
|
+
const isInsignificant = (node) => {
|
|
37
|
+
if (isElement(node) || isBlock(node))
|
|
38
|
+
return false;
|
|
39
|
+
// a comment has a `value` but no tokens, unlike a text node
|
|
40
|
+
return isText(node) ? (node.value ?? '').trim() === '' : typeof node.value === 'string';
|
|
41
|
+
};
|
|
42
|
+
const isIcon = (node) => isElement(node) && migrations_buttonTruncation_data.ICON_ATTRS.some((name) => hasAttr(node, name));
|
|
43
|
+
const isButtonHost = (node) => isElement(node) && (hasAttr(node, migrations_buttonTruncation_data.BUTTON_ATTR) || node.name === migrations_buttonTruncation_data.TOGGLE_ELEMENT);
|
|
44
|
+
/**
|
|
45
|
+
* The nodes a button actually projects, with a single-element block unwrapped to the element it renders.
|
|
46
|
+
*
|
|
47
|
+
* `@if (showIcon()) { <i kbq-icon></i> }` is the ordinary way to make an icon conditional, and the block's
|
|
48
|
+
* position among the children still tells which side of the label it is on — so it can be marked. A block
|
|
49
|
+
* holding more than one element cannot: which of them ends up at the edge is a runtime question.
|
|
50
|
+
*/
|
|
51
|
+
function projectedNodes(host) {
|
|
52
|
+
const nodes = [];
|
|
53
|
+
let ambiguous = false;
|
|
54
|
+
for (const child of host.children ?? []) {
|
|
55
|
+
if (isInsignificant(child))
|
|
56
|
+
continue;
|
|
57
|
+
if (isBlock(child)) {
|
|
58
|
+
const inner = (child.children ?? []).filter((node) => !isInsignificant(node));
|
|
59
|
+
if (inner.length === 1 && isElement(inner[0])) {
|
|
60
|
+
nodes.push(inner[0]);
|
|
61
|
+
}
|
|
62
|
+
else if (inner.length > 0) {
|
|
63
|
+
nodes.push(child);
|
|
64
|
+
ambiguous = true;
|
|
65
|
+
}
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
nodes.push(child);
|
|
69
|
+
}
|
|
70
|
+
return { nodes, ambiguous };
|
|
71
|
+
}
|
|
72
|
+
/** Offset just after the tag name, i.e. where a new attribute is inserted. */
|
|
73
|
+
function attributeInsertOffset(element) {
|
|
74
|
+
const firstAttr = element.attrs?.find((attr) => attr.keySpan?.start.offset !== undefined);
|
|
75
|
+
if (firstAttr)
|
|
76
|
+
return firstAttr.keySpan.start.offset;
|
|
77
|
+
const start = element.startSourceSpan?.start.offset;
|
|
78
|
+
return start === undefined ? undefined : start + 1 + (element.name?.length ?? 0);
|
|
79
|
+
}
|
|
80
|
+
/** Collects every button host in a template, blocks included. */
|
|
81
|
+
class ButtonHostCollector {
|
|
82
|
+
constructor() {
|
|
83
|
+
this.hosts = [];
|
|
84
|
+
}
|
|
85
|
+
visitElement(el) {
|
|
86
|
+
if (isButtonHost(el))
|
|
87
|
+
this.hosts.push(el);
|
|
88
|
+
this.visitChildren(el);
|
|
89
|
+
}
|
|
90
|
+
visitChildren(el) {
|
|
91
|
+
for (const child of el.children ?? []) {
|
|
92
|
+
child.visit(this);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
visitBlock(block) {
|
|
96
|
+
this.visitChildren(block);
|
|
97
|
+
}
|
|
98
|
+
visitAttribute() { }
|
|
99
|
+
visitText() { }
|
|
100
|
+
visitComment() { }
|
|
101
|
+
visitExpansion() { }
|
|
102
|
+
visitExpansionCase() { }
|
|
103
|
+
visitBlockParameter() { }
|
|
104
|
+
visitLetDeclaration() { }
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Marks the outermost icons of every button in a template with the slot they belong to.
|
|
108
|
+
*
|
|
109
|
+
* Only an icon that sits next to a label is marked: a button whose whole content is icons has nothing to
|
|
110
|
+
* truncate, and the markers would only add noise.
|
|
111
|
+
*/
|
|
112
|
+
async function migrateTemplate(template) {
|
|
113
|
+
if (!template.includes(migrations_buttonTruncation_data.BUTTON_ATTR) && !template.includes(migrations_buttonTruncation_data.TOGGLE_ELEMENT)) {
|
|
114
|
+
return { content: template, changed: false, manual: false };
|
|
115
|
+
}
|
|
116
|
+
const parsed = await utils_typescript.parseTemplate(template);
|
|
117
|
+
if (!parsed.tree)
|
|
118
|
+
return { content: template, changed: false, manual: false };
|
|
119
|
+
const collector = new ButtonHostCollector();
|
|
120
|
+
utils_ast.visitAll(collector, parsed.tree.rootNodes);
|
|
121
|
+
const edits = [];
|
|
122
|
+
let manual = false;
|
|
123
|
+
for (const host of collector.hosts) {
|
|
124
|
+
const { nodes, ambiguous } = projectedNodes(host);
|
|
125
|
+
manual ||= ambiguous;
|
|
126
|
+
// nothing beside the icons, so nothing to keep them out of
|
|
127
|
+
if (nodes.length < 2 || nodes.every(isIcon))
|
|
128
|
+
continue;
|
|
129
|
+
for (const [node, marker] of [
|
|
130
|
+
[nodes[0], migrations_buttonTruncation_data.PREFIX_ATTR],
|
|
131
|
+
[nodes[nodes.length - 1], migrations_buttonTruncation_data.SUFFIX_ATTR]
|
|
132
|
+
]) {
|
|
133
|
+
if (!isIcon(node) || hasAttr(node, migrations_buttonTruncation_data.PREFIX_ATTR) || hasAttr(node, migrations_buttonTruncation_data.SUFFIX_ATTR))
|
|
134
|
+
continue;
|
|
135
|
+
const offset = attributeInsertOffset(node);
|
|
136
|
+
if (offset === undefined)
|
|
137
|
+
continue;
|
|
138
|
+
edits.push({ start: offset, end: offset, text: `${marker} ` });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return { content: applyEdits(template, edits), changed: edits.length > 0, manual };
|
|
142
|
+
}
|
|
143
|
+
/** Interior `[start, end]` ranges of inline `@Component({ template: '…' })` string literals. */
|
|
144
|
+
function collectInlineTemplateRanges(sourceFile) {
|
|
145
|
+
const ranges = [];
|
|
146
|
+
utils_typescript.forEachClass(sourceFile, (node) => {
|
|
147
|
+
const decorator = ts
|
|
148
|
+
.getDecorators(node)
|
|
149
|
+
?.find((dec) => ts.isCallExpression(dec.expression) &&
|
|
150
|
+
ts.isIdentifier(dec.expression.expression) &&
|
|
151
|
+
dec.expression.expression.text === 'Component');
|
|
152
|
+
if (!decorator || !ts.isCallExpression(decorator.expression))
|
|
153
|
+
return;
|
|
154
|
+
const [arg] = decorator.expression.arguments;
|
|
155
|
+
if (!arg || !ts.isObjectLiteralExpression(arg))
|
|
156
|
+
return;
|
|
157
|
+
for (const prop of arg.properties) {
|
|
158
|
+
if (ts.isPropertyAssignment(prop) &&
|
|
159
|
+
(ts.isIdentifier(prop.name) || ts.isStringLiteralLike(prop.name)) &&
|
|
160
|
+
prop.name.text === 'template' &&
|
|
161
|
+
ts.isStringLiteralLike(prop.initializer) &&
|
|
162
|
+
prop.initializer.text) {
|
|
163
|
+
// +1 / -1 to exclude the opening/closing quote characters.
|
|
164
|
+
ranges.push({ start: prop.initializer.getStart(sourceFile) + 1, end: prop.initializer.getEnd() - 1 });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return ranges;
|
|
169
|
+
}
|
|
170
|
+
async function migrateInlineTemplates(content, fileName) {
|
|
171
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
172
|
+
const ranges = collectInlineTemplateRanges(sourceFile).sort((a, b) => b.start - a.start);
|
|
173
|
+
let result = content;
|
|
174
|
+
let manual = false;
|
|
175
|
+
for (const { start, end } of ranges) {
|
|
176
|
+
const migrated = await migrateTemplate(result.slice(start, end));
|
|
177
|
+
manual ||= migrated.manual;
|
|
178
|
+
if (migrated.changed) {
|
|
179
|
+
result = result.slice(0, start) + migrated.content + result.slice(end);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return { content: result, manual };
|
|
183
|
+
}
|
|
184
|
+
/** Reports stylesheet overrides that the layout change affects. Never rewrites them. */
|
|
185
|
+
function warnStyles(context, filePath, content) {
|
|
186
|
+
let found = false;
|
|
187
|
+
for (const { selector, pattern, message } of migrations_buttonTruncation_data.stylePatterns) {
|
|
188
|
+
if (new RegExp(pattern).test(content)) {
|
|
189
|
+
found = true;
|
|
190
|
+
utils_messages.logMessage(context.logger, [`[button-truncation] ${filePath} overrides ${selector}`, ` ${message}`]);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return found;
|
|
194
|
+
}
|
|
195
|
+
function buttonTruncation(options) {
|
|
196
|
+
return async (tree, context) => {
|
|
197
|
+
const { project } = options;
|
|
198
|
+
// `ng update` invokes migrations with no options at all, and migrations.json declares no schema, so the
|
|
199
|
+
// schema default never reaches us — applying the fix is the intended behaviour there.
|
|
200
|
+
const fix = options.fix ?? true;
|
|
201
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
202
|
+
const root = projectDefinition?.root ?? '';
|
|
203
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
204
|
+
const tsPaths = [];
|
|
205
|
+
const htmlPaths = [];
|
|
206
|
+
const stylePaths = [];
|
|
207
|
+
utils_packageConfig.visitProjectFiles(rootDir, (filePath) => {
|
|
208
|
+
if (filePath.endsWith(TS_EXT))
|
|
209
|
+
tsPaths.push(filePath);
|
|
210
|
+
else if (filePath.endsWith(HTML_EXT))
|
|
211
|
+
htmlPaths.push(filePath);
|
|
212
|
+
else if (STYLE_EXTS.some((ext) => filePath.endsWith(ext)))
|
|
213
|
+
stylePaths.push(filePath);
|
|
214
|
+
});
|
|
215
|
+
let touched = 0;
|
|
216
|
+
let manual = false;
|
|
217
|
+
let styleFindings = 0;
|
|
218
|
+
const commit = (filePath, original, updated) => {
|
|
219
|
+
if (updated === original)
|
|
220
|
+
return;
|
|
221
|
+
touched++;
|
|
222
|
+
if (fix) {
|
|
223
|
+
tree.overwrite(filePath, updated);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
utils_messages.logMessage(context.logger, [
|
|
227
|
+
`[button-truncation] would update ${filePath} (run with --fix to apply)`
|
|
228
|
+
]);
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
for (const filePath of tsPaths) {
|
|
232
|
+
const original = tree.read(filePath)?.toString();
|
|
233
|
+
if (!original)
|
|
234
|
+
continue;
|
|
235
|
+
const migrated = await migrateInlineTemplates(original, filePath);
|
|
236
|
+
manual ||= migrated.manual;
|
|
237
|
+
// a `styles: [...]` block lives in the same file, so stylesheets are looked for here too
|
|
238
|
+
if (warnStyles(context, filePath, original))
|
|
239
|
+
styleFindings++;
|
|
240
|
+
commit(filePath, original, migrated.content);
|
|
241
|
+
}
|
|
242
|
+
for (const filePath of htmlPaths) {
|
|
243
|
+
const original = tree.read(filePath)?.toString();
|
|
244
|
+
if (!original)
|
|
245
|
+
continue;
|
|
246
|
+
const migrated = await migrateTemplate(original);
|
|
247
|
+
manual ||= migrated.manual;
|
|
248
|
+
if (migrated.changed)
|
|
249
|
+
commit(filePath, original, migrated.content);
|
|
250
|
+
}
|
|
251
|
+
for (const filePath of stylePaths) {
|
|
252
|
+
const original = tree.read(filePath)?.toString();
|
|
253
|
+
if (!original)
|
|
254
|
+
continue;
|
|
255
|
+
if (warnStyles(context, filePath, original))
|
|
256
|
+
styleFindings++;
|
|
257
|
+
}
|
|
258
|
+
if (manual)
|
|
259
|
+
utils_messages.logMessage(context.logger, [`[button-truncation] ${migrations_buttonTruncation_data.MANUAL_TEMPLATE_NOTE}`]);
|
|
260
|
+
utils_messages.logMessage(context.logger, migrations_buttonTruncation_data.MAX_WIDTH_NOTE.map((line) => `[button-truncation] ${line}`));
|
|
261
|
+
utils_messages.logMessage(context.logger, [
|
|
262
|
+
`[button-truncation] processed tree under "${root || '<workspace root>'}", ` +
|
|
263
|
+
`${fix ? 'updated' : 'would update'} ${touched} file(s), ` +
|
|
264
|
+
`${styleFindings} stylesheet(s) need a manual review.`
|
|
265
|
+
]);
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
exports.default = buttonTruncation;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-button-truncation",
|
|
4
|
+
"title": "Koobiq components button truncation 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, moves edge icons into the kbqButtonPrefix/kbqButtonSuffix slots. When false, prints what would change without writing. Stylesheet findings are always reported, never rewritten."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# checkbox-signals
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@21` (registered for
|
|
4
|
+
`21.0.0-0`). Migrates `KbqCheckbox` consumers to its signal-based one-way inputs and reports the
|
|
5
|
+
members the review closed.
|
|
6
|
+
|
|
7
|
+
## Background
|
|
8
|
+
|
|
9
|
+
`id` and `clickAction` were the two inputs the automated signal migration skipped, because
|
|
10
|
+
application code writes to them. Both are `input()` now, and `id` is generated by the CDK
|
|
11
|
+
`_IdGenerator` instead of a module-level counter.
|
|
12
|
+
|
|
13
|
+
## What stays an accessor input
|
|
14
|
+
|
|
15
|
+
`checked`, `disabled`, `indeterminate` and `tabIndex` are two-way state: the component writes them on
|
|
16
|
+
click and the `ControlValueAccessor` writes them through the `KbqCheckable` host directive. A
|
|
17
|
+
`model()` cannot carry the `booleanAttribute` / `numberAttribute` transform they need, so they stay
|
|
18
|
+
accessor inputs over `KbqCheckable`'s signals — the shape the reviewed `KbqButtonToggle` settled on.
|
|
19
|
+
**Reads and writes of those four are unchanged in TypeScript**, and the schematic does not touch them.
|
|
20
|
+
A template binding is coerced now, though: `booleanAttribute` maps `0`, `''` and `NaN` to `true`, and
|
|
21
|
+
the accepted template type widens to `unknown`, so `[checked]="items.length"` on an empty list reads as
|
|
22
|
+
checked and a binding that used to fail `strictTemplates` is accepted.
|
|
23
|
+
|
|
24
|
+
## What it rewrites
|
|
25
|
+
|
|
26
|
+
| Before | After |
|
|
27
|
+
| ------------------------ | -------------------------- |
|
|
28
|
+
| `checkbox.id` | `checkbox.id()` |
|
|
29
|
+
| `checkbox.clickAction` | `checkbox.clickAction()` |
|
|
30
|
+
| `checkbox.big` | `checkbox.big()` |
|
|
31
|
+
| `checkbox.required` | `checkbox.required()` |
|
|
32
|
+
| `checkbox.value` | `checkbox.value()` |
|
|
33
|
+
| `checkbox.name` | `checkbox.name()` |
|
|
34
|
+
| `checkbox.labelPosition` | `checkbox.labelPosition()` |
|
|
35
|
+
|
|
36
|
+
Both on receivers explicitly typed `KbqCheckbox` and through template reference variables on
|
|
37
|
+
`<kbq-checkbox>`, in external and inline templates. Already-migrated reads are left alone, so the
|
|
38
|
+
schematic is idempotent.
|
|
39
|
+
|
|
40
|
+
## What it does _not_ do
|
|
41
|
+
|
|
42
|
+
| Pattern | Manual migration |
|
|
43
|
+
| -------------------------------------------------------------- | ---------------------------------------------------------- |
|
|
44
|
+
| `checkbox.id = …` / `checkbox.clickAction = …` | Bind `[id]` / `[clickAction]` — the inputs are read-only |
|
|
45
|
+
| `.inputId` / `.inputElement` / `.getAriaChecked` | Now `protected`; use `focus()` and `toggle()` |
|
|
46
|
+
| `.onInputClick` / `.onInteractionEvent` / `.onLabelTextChange` | Now `protected` template handlers |
|
|
47
|
+
| `viewChild(KbqCheckbox)` | The query returns the instance, so a read is a double call |
|
|
48
|
+
|
|
49
|
+
`[clickAction]="undefined"` explicitly **overrides** `KBQ_CHECKBOX_CLICK_ACTION` rather than falling
|
|
50
|
+
back to it — leave the input unbound to use the token. That was true of the decorator input too, but
|
|
51
|
+
it is easy to reach for when converting a field write into a binding.
|
|
52
|
+
|
|
53
|
+
## Notes with no call site to point at
|
|
54
|
+
|
|
55
|
+
- **Generated ids come from the CDK `_IdGenerator`.** The shape is unchanged for a default `APP_ID` -
|
|
56
|
+
the CDK omits the app id unless it was overridden - but the counter is 0-based and shared per prefix,
|
|
57
|
+
so the first checkbox is `kbq-checkbox-0` where it used to be `kbq-checkbox-1`. An assertion on an
|
|
58
|
+
exact id needs updating; one matching the shape does not.
|
|
59
|
+
- **`<kbq-checkbox [id]="null">` falls back to the generated id on the host too.** It used to leave
|
|
60
|
+
the host without an id while the hidden input still pointed its `for` at the generated one.
|
|
61
|
+
- **`checked`, `big` and `indeterminate` are `booleanAttribute` inputs.** `<kbq-checkbox checked>`
|
|
62
|
+
used to pass the empty string, which is falsy, so the valueless attribute did nothing.
|
|
63
|
+
- **`required` defaults to `false`** instead of `undefined` behind a `boolean` type, and **`value`
|
|
64
|
+
reports `string | undefined`** instead of `string` over an `undefined!` default.
|
|
65
|
+
|
|
66
|
+
- **An enabled `<kbq-checkbox>` no longer carries `disabled="false"` on its host.** The host binding
|
|
67
|
+
rendered the boolean verbatim, so every enabled checkbox shipped the attribute — enough for a
|
|
68
|
+
consumer stylesheet or test selector written as `kbq-checkbox[disabled]` to match all of them.
|
|
69
|
+
|
|
70
|
+
## Running it manually
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
ng generate @koobiq/components:checkbox-signals --project my-app
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Pass `--fix=false` to see what it would change without writing.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `checkbox-signals` migration.
|
|
5
|
+
*
|
|
6
|
+
* The one-way inputs became signals; `id` and `clickAction` are the two the automated migration skipped,
|
|
7
|
+
* because application code writes to them.
|
|
8
|
+
*
|
|
9
|
+
* - `checkbox.id` / `clickAction` / `big` / `required` / `value` / `name` / `labelPosition` → calls (auto-fixed)
|
|
10
|
+
* - the template plumbing (`inputId`, `inputElement`, `getAriaChecked`, the click handlers) → `protected` (warn)
|
|
11
|
+
*
|
|
12
|
+
* `checked`, `disabled`, `indeterminate` and `tabIndex` stay accessor inputs over the signals of the
|
|
13
|
+
* `KbqCheckable` host directive: they are two-way state that the component and the `ControlValueAccessor`
|
|
14
|
+
* both write, and a `model()` cannot carry the `booleanAttribute` / `numberAttribute` transform they need.
|
|
15
|
+
* That is the shape the reviewed `KbqButtonToggle` settled on. Reads and writes of those four are unchanged.
|
|
16
|
+
*/
|
|
17
|
+
/** Members of `KbqCheckbox` whose value is unchanged; a read must become a call. Auto-fixed. */
|
|
18
|
+
const SIGNAL_MEMBERS = [
|
|
19
|
+
'id',
|
|
20
|
+
'clickAction',
|
|
21
|
+
'big',
|
|
22
|
+
'required',
|
|
23
|
+
'value',
|
|
24
|
+
'name',
|
|
25
|
+
'labelPosition'
|
|
26
|
+
];
|
|
27
|
+
/** Signal-API methods reachable on a signal; a read followed by one is already migrated. */
|
|
28
|
+
const SIGNAL_API_METHODS = new Set(['set', 'update', 'asReadonly', 'subscribe']);
|
|
29
|
+
/** `exportAs` name a template reference has to carry to be the checkbox rather than some other directive. */
|
|
30
|
+
const CHECKBOX_EXPORT_AS = 'kbqCheckbox';
|
|
31
|
+
/** TypeScript type annotation that marks a receiver as a checkbox. */
|
|
32
|
+
const CHECKBOX_TYPE = 'KbqCheckbox';
|
|
33
|
+
/** Element selector whose template reference variables (`#ref`) point at a checkbox. */
|
|
34
|
+
const CHECKBOX_ELEMENT = 'kbq-checkbox';
|
|
35
|
+
/** Import specifier that marks a file as a checkbox consumer. */
|
|
36
|
+
const CHECKBOX_PACKAGE = '@koobiq/components/checkbox';
|
|
37
|
+
/** Members that moved out of the public surface and can no longer be reached from outside the component. */
|
|
38
|
+
const PROTECTED_MEMBERS = [
|
|
39
|
+
'inputId',
|
|
40
|
+
'inputElement',
|
|
41
|
+
'getAriaChecked',
|
|
42
|
+
'onInputClick',
|
|
43
|
+
'onInteractionEvent',
|
|
44
|
+
'onLabelTextChange'
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Reported for a programmatic write. Emitted from the AST pass rather than a regex: the old pattern was
|
|
48
|
+
* anchored only on `KbqCheckbox` appearing somewhere in the file, so `el.id = 'x'` on an `HTMLElement`
|
|
49
|
+
* warned, and a genuine write at the very end of a file did not.
|
|
50
|
+
*/
|
|
51
|
+
const writeMessage = (members) => `These are read-only signal inputs now, so a programmatic write no longer compiles: ` +
|
|
52
|
+
`${[...members].join(', ')}. Bind them in the template instead. Note that binding ` +
|
|
53
|
+
'`[clickAction]="undefined"` explicitly overrides the KBQ_CHECKBOX_CLICK_ACTION token rather than ' +
|
|
54
|
+
'falling back to it - leave the input unbound to use the token.';
|
|
55
|
+
/**
|
|
56
|
+
* Reported for a read through a signal query, which is a signal holding the component: the read needs two
|
|
57
|
+
* calls rather than one. Emitted from the AST pass, so the decorator form - which the rewrite handles
|
|
58
|
+
* correctly on its own - is never told it needs two calls.
|
|
59
|
+
*
|
|
60
|
+
* `viewChild()` without `.required` is typed `Signal<KbqCheckbox | undefined>`, so the safe spelling
|
|
61
|
+
* differs between the two forms.
|
|
62
|
+
*/
|
|
63
|
+
const signalQueryMessage = (member, required) => `A signal query holds the component behind a call of its own, so reading \`${member}\` through it needs ` +
|
|
64
|
+
`two calls: \`this.checkbox()${required ? '' : '?'}.${member}()\`.` +
|
|
65
|
+
(required ? '' : ' The query is optional, so keep the `?.`.') +
|
|
66
|
+
' Those reads are left untouched - migrate them by hand.';
|
|
67
|
+
/** Reported when a template renders the checkbox but cannot be parsed, so nothing in it was inspected. */
|
|
68
|
+
const UNPARSEABLE_TEMPLATE_MESSAGE = 'This template renders <kbq-checkbox> but could not be parsed, so it was left untouched. Migrate reads ' +
|
|
69
|
+
'through its template reference variables by hand.';
|
|
70
|
+
/**
|
|
71
|
+
* Reported when a file names `KbqCheckbox` in a type position the receiver pass cannot scope to a single
|
|
72
|
+
* identifier - a union, an array, a `QueryList<…>`, a cast, a return type - or reads a member in a shape
|
|
73
|
+
* the access pass cannot reach.
|
|
74
|
+
*/
|
|
75
|
+
const UNRESOLVED_RECEIVER_MESSAGE = 'KbqCheckbox is used here in a way this migration cannot resolve to a single receiver, so any signal ' +
|
|
76
|
+
'read through it was left untouched. Check these lines by hand:';
|
|
77
|
+
/** Reported for the members that left the public surface, in both the TypeScript and the template pass. */
|
|
78
|
+
const protectedMessage = (members) => `These KbqCheckbox members are \`protected\` now and can't be read from outside the component: ` +
|
|
79
|
+
`${[...members].join(', ')}. They are the wiring between the label, the visually hidden native input ` +
|
|
80
|
+
'and the click algorithm. Use `focus()` and `toggle()`, or drive the checkbox through its inputs.';
|
|
81
|
+
/** Printed once per project, after the per-file reports. */
|
|
82
|
+
const SUMMARY = [
|
|
83
|
+
' Generated ids come from the CDK `_IdGenerator`. The shape is unchanged for a default `APP_ID` - the ' +
|
|
84
|
+
'CDK omits the app id unless it was overridden - but the counter is 0-based and shared per prefix, ' +
|
|
85
|
+
'so the first checkbox is `kbq-checkbox-0` where it used to be `kbq-checkbox-1`. An assertion on an ' +
|
|
86
|
+
'exact id needs updating; one matching the shape does not.',
|
|
87
|
+
' `<kbq-checkbox [id]="null">` now falls back to the generated id on the host as well. It used to leave ' +
|
|
88
|
+
'the host without an id while the hidden input still pointed its `for` at the generated one.',
|
|
89
|
+
' `checked`, `big` and `indeterminate` are `booleanAttribute` inputs, and `required` defaults to `false` ' +
|
|
90
|
+
'instead of `undefined` behind a `boolean` type. `<kbq-checkbox checked>` used to pass the empty ' +
|
|
91
|
+
'string, which is falsy, so the valueless attribute did nothing; it checks the box now. The same ' +
|
|
92
|
+
'coercion runs on a bound value, so `[checked]="items.length"` with an empty list, `[checked]="0"` ' +
|
|
93
|
+
'and `NaN` now read as true - and the template type is `unknown`, so a binding that used to be a ' +
|
|
94
|
+
'compile error under strictTemplates is accepted and reads as true.',
|
|
95
|
+
' `value` reports `string | undefined` instead of `string`. It was declared non-nullable over an ' +
|
|
96
|
+
'`undefined!` default, so an unbound checkbox always handed back `undefined`.',
|
|
97
|
+
' An enabled <kbq-checkbox> no longer carries `disabled="false"` on its host. The host binding ' +
|
|
98
|
+
'rendered the boolean verbatim, so every enabled checkbox shipped the attribute — enough for a ' +
|
|
99
|
+
'consumer stylesheet or test selector written as `kbq-checkbox[disabled]` to match all of them.'
|
|
100
|
+
];
|
|
101
|
+
|
|
102
|
+
exports.CHECKBOX_ELEMENT = CHECKBOX_ELEMENT;
|
|
103
|
+
exports.CHECKBOX_EXPORT_AS = CHECKBOX_EXPORT_AS;
|
|
104
|
+
exports.CHECKBOX_PACKAGE = CHECKBOX_PACKAGE;
|
|
105
|
+
exports.CHECKBOX_TYPE = CHECKBOX_TYPE;
|
|
106
|
+
exports.PROTECTED_MEMBERS = PROTECTED_MEMBERS;
|
|
107
|
+
exports.SIGNAL_API_METHODS = SIGNAL_API_METHODS;
|
|
108
|
+
exports.SIGNAL_MEMBERS = SIGNAL_MEMBERS;
|
|
109
|
+
exports.SUMMARY = SUMMARY;
|
|
110
|
+
exports.UNPARSEABLE_TEMPLATE_MESSAGE = UNPARSEABLE_TEMPLATE_MESSAGE;
|
|
111
|
+
exports.UNRESOLVED_RECEIVER_MESSAGE = UNRESOLVED_RECEIVER_MESSAGE;
|
|
112
|
+
exports.protectedMessage = protectedMessage;
|
|
113
|
+
exports.signalQueryMessage = signalQueryMessage;
|
|
114
|
+
exports.writeMessage = writeMessage;
|