@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,84 @@
|
|
|
1
|
+
# empty-state-error-color
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@20`
|
|
4
|
+
(registered for `21.0.0-0`). Reports the members the empty-state review removed or turned into
|
|
5
|
+
signals, and the four theme custom properties it renamed. It never writes to the tree.
|
|
6
|
+
|
|
7
|
+
## Background
|
|
8
|
+
|
|
9
|
+
`errorColor` used to reach the illustration imperatively. `KbqEmptyState.ngAfterContentInit()` read
|
|
10
|
+
the input once and called `KbqEmptyStateIcon.setErrorColor()`, which assigned `color = 'error'` on the
|
|
11
|
+
injected `kbq-icon-item`. Three things followed from that one call:
|
|
12
|
+
|
|
13
|
+
- it never came back — flipping `[errorColor]` to `false` left a red icon above black text;
|
|
14
|
+
- it never arrived late — flipping to `true` after init did nothing;
|
|
15
|
+
- it only happened for one of the two supported markup shapes, because the directive resolved the
|
|
16
|
+
icon through `inject(KbqIconItem)`, which sees an icon on its own host element and not one wrapped
|
|
17
|
+
by it.
|
|
18
|
+
|
|
19
|
+
The tint is driven by the input now, in both shapes, so `setErrorColor()` has no caller and is gone.
|
|
20
|
+
|
|
21
|
+
| Member | Before | After |
|
|
22
|
+
| ------------------------------------ | ------------------------ | ------------------------------------- |
|
|
23
|
+
| `KbqEmptyStateIcon.setErrorColor()` | public, called at init | removed |
|
|
24
|
+
| `KbqEmptyState.icon` | public `@ContentChild` | `protected` `contentChild()` |
|
|
25
|
+
| `KbqEmptyState.ngAfterContentInit()` | public lifecycle hook | removed |
|
|
26
|
+
| `KbqEmptyState.size` | `@Input()`, writable | `input()`, read as `size()` |
|
|
27
|
+
| `--kbq-empty-state-title` | theme token | `--kbq-empty-state-title-color` |
|
|
28
|
+
| `--kbq-empty-state-color` | theme token (text color) | `--kbq-empty-state-text-color` |
|
|
29
|
+
| `--kbq-empty-state-error-title` | theme token | `--kbq-empty-state-error-title-color` |
|
|
30
|
+
| `--kbq-empty-state-error-color` | theme token (text color) | `--kbq-empty-state-error-text-color` |
|
|
31
|
+
|
|
32
|
+
The old names are removed, not deprecated. Nothing chains to them, so an override of one is ignored
|
|
33
|
+
and a `var()` read of one resolves to nothing — in both cases without an error.
|
|
34
|
+
|
|
35
|
+
## `size` and the file-upload subclass
|
|
36
|
+
|
|
37
|
+
`size` was the last decorator left on the component. It stayed one because
|
|
38
|
+
`KbqFileUploadEmptyState` — a public class in `@koobiq/components/file-upload` — extends
|
|
39
|
+
`KbqEmptyState` and assigned `this.size = 'big'` straight after `super()`, which an `input()` cannot
|
|
40
|
+
take.
|
|
41
|
+
|
|
42
|
+
That subclass redeclares the input with its own default instead:
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
override readonly size = input<KbqDefaultSizes>('big');
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
So `<kbq-file-upload-empty-state>` still renders at `big` without a binding, and a `[size]` binding
|
|
49
|
+
still overrides it. Nothing changes for anyone rendering that component.
|
|
50
|
+
|
|
51
|
+
## What it does _not_ do
|
|
52
|
+
|
|
53
|
+
Nothing is rewritten. A call to a removed method has no replacement expression, renaming a token
|
|
54
|
+
override is a theming decision, and `size` is far too common a property name to rewrite blind —
|
|
55
|
+
`file.size`, `blob.size` and `map.size` all appear in files that also render an empty state.
|
|
56
|
+
|
|
57
|
+
The `size` report is therefore matched on the receiver, not the member: only a read like
|
|
58
|
+
`emptyState.size` or `myEmptyState?.size` is flagged. A read through a variable named something else
|
|
59
|
+
is not reported at all, and the summary says so rather than letting you assume it was covered.
|
|
60
|
+
|
|
61
|
+
| Pattern | Manual migration |
|
|
62
|
+
| ------------------------------------------------- | -------------------------------------------------------- |
|
|
63
|
+
| `.setErrorColor()` | Bind `[errorColor]` on `<kbq-empty-state>` and delete it |
|
|
64
|
+
| `--kbq-empty-state-title` / `-color` / `-error-*` | Rename to the `-color`-suffixed names |
|
|
65
|
+
| `emptyState.size` | `emptyState.size()` |
|
|
66
|
+
| `emptyState.size = 'big'` | Bind `[size]="'big'"` — an `input()` has no setter |
|
|
67
|
+
|
|
68
|
+
## Notes with no call site to point at
|
|
69
|
+
|
|
70
|
+
- The title is rendered with heading typography — `subheading` at `size="normal"`, `headline` at
|
|
71
|
+
`size="big"` — but every usage in the library wrote it as a `div`. Write a real heading of the level
|
|
72
|
+
the page calls for, `<h2 kbq-empty-state-title>`; the component zeroes the user-agent margin, so
|
|
73
|
+
nothing moves.
|
|
74
|
+
- An empty state inserted into a page that has already been read needs `role="status"` on
|
|
75
|
+
`<kbq-empty-state>`, or `role="alert"` for the error variant. The component adds no `role` of its own.
|
|
76
|
+
- `empty-state.scss` loads its own token layer instead of relying on a second `styleUrls` entry, so
|
|
77
|
+
anything reusing the stylesheet across a package boundary now gets the custom properties together
|
|
78
|
+
with the rules that read them.
|
|
79
|
+
|
|
80
|
+
## Running it manually
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
ng generate @koobiq/components:empty-state-error-color --project my-app
|
|
84
|
+
```
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `empty-state-error-color` migration.
|
|
5
|
+
*
|
|
6
|
+
* The empty-state review closed the one imperative hook the component had and renamed its four theme
|
|
7
|
+
* custom properties:
|
|
8
|
+
*
|
|
9
|
+
* - `KbqEmptyStateIcon.setErrorColor()` — removed. It existed so that `KbqEmptyState` could tint the
|
|
10
|
+
* icon once from `ngAfterContentInit`, which made the tint irreversible, late for anything toggled
|
|
11
|
+
* after init, and silently absent whenever the icon was wrapped rather than carrying the slot
|
|
12
|
+
* attribute. The illustration follows `[errorColor]` on its own now.
|
|
13
|
+
* - `--kbq-empty-state-title`, `--kbq-empty-state-color`, `--kbq-empty-state-error-title`,
|
|
14
|
+
* `--kbq-empty-state-error-color` — renamed to `-title-color`, `-text-color`, `-error-title-color`
|
|
15
|
+
* and `-error-text-color`. The old names are removed outright — nothing chains to them, so an
|
|
16
|
+
* override or a `var()` read of one stops having any effect.
|
|
17
|
+
* - `KbqEmptyState.size` — `@Input()` to `input()`. It was the last decorator on the component, held
|
|
18
|
+
* back because `KbqFileUploadEmptyState` assigned it from its constructor; that subclass redeclares
|
|
19
|
+
* the input with its own `big` default now, so nothing writes to it.
|
|
20
|
+
*
|
|
21
|
+
* Warn-only. A call to a removed method has no replacement expression, a token override is a theming
|
|
22
|
+
* decision the schematic cannot make, and `size` is too common a property name to rewrite blind.
|
|
23
|
+
*/
|
|
24
|
+
/** Import specifier that marks a file as an empty-state consumer. */
|
|
25
|
+
const EMPTY_STATE_PACKAGE = '@koobiq/components/empty-state';
|
|
26
|
+
/**
|
|
27
|
+
* Identifier, element and custom-property shapes that mark a consumer without an import.
|
|
28
|
+
*
|
|
29
|
+
* Every `warnPatterns` entry below only applies to a file that also matches this, so it is checked
|
|
30
|
+
* once, ahead of the per-pattern checks, rather than repeated as a per-pattern anchor.
|
|
31
|
+
*/
|
|
32
|
+
const EMPTY_STATE_TYPE = '\\bKbqEmptyState\\w*\\b|\\bkbq-empty-state\\b';
|
|
33
|
+
const warnPatterns = [
|
|
34
|
+
{
|
|
35
|
+
pattern: '\\bsetErrorColor\\b',
|
|
36
|
+
message: 'KbqEmptyStateIcon.setErrorColor() was removed. It tinted the icon once from ' +
|
|
37
|
+
'ngAfterContentInit, so the tint never went away, never arrived for an [errorColor] flipped ' +
|
|
38
|
+
'after init, and never happened at all when the icon was wrapped by the slot instead of ' +
|
|
39
|
+
'carrying it. The illustration follows [errorColor] on <kbq-empty-state> now, in both markup ' +
|
|
40
|
+
'shapes — bind the input and delete the call.'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
// Matches either shape the old name can appear in: a declaration (an override) or a
|
|
44
|
+
// `var(--kbq-empty-state-...)` read.
|
|
45
|
+
pattern: '--kbq-empty-state-(?:title|color|error-title|error-color)\\s*:' +
|
|
46
|
+
'|\\bvar\\(\\s*--kbq-empty-state-(?:title|color|error-title|error-color)\\s*[,)]',
|
|
47
|
+
message: 'The four empty-state theme tokens were renamed: --kbq-empty-state-title becomes ' +
|
|
48
|
+
'--kbq-empty-state-title-color, --kbq-empty-state-color becomes --kbq-empty-state-text-color ' +
|
|
49
|
+
'(it is the text color, not the component color), --kbq-empty-state-error-title becomes ' +
|
|
50
|
+
'--kbq-empty-state-error-title-color and --kbq-empty-state-error-color becomes ' +
|
|
51
|
+
'--kbq-empty-state-error-text-color. The old names are gone, not deprecated: an override of one ' +
|
|
52
|
+
'is ignored and a var() read of one resolves to nothing, in both cases silently. Rename it.'
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
// `size` is far too common a property name to match bare, or to rewrite: `file.size`,
|
|
56
|
+
// `blob.size`, `map.size` and `event.size` all live in files that also render an empty
|
|
57
|
+
// state. Matched only on a receiver that names one, which covers the @ViewChild, viewChild()
|
|
58
|
+
// and `#ref="kbqEmptyState"` shapes; `(?!\s*\()` keeps an already-migrated call quiet. Reads
|
|
59
|
+
// through a differently named variable are left to the summary.
|
|
60
|
+
pattern: '\\b\\w*[eE]mptyState\\w*\\s*(?:\\?\\.|\\.)\\s*size\\b(?!\\s*\\()',
|
|
61
|
+
message: 'KbqEmptyState.size is an input() now, so reading it is a call: emptyState.size(). Writing ' +
|
|
62
|
+
'to it is gone — bind [size] instead. KbqFileUploadEmptyState redeclares the same input to ' +
|
|
63
|
+
'keep defaulting to "big", so its rendered size is unchanged. A template binding [size]="..." ' +
|
|
64
|
+
'needs no edit.'
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
/** Printed once per project, after the per-file reports. */
|
|
68
|
+
const SUMMARY = [
|
|
69
|
+
' The title is rendered with heading typography but was written as a <div> in every usage in the ' +
|
|
70
|
+
'library. Write it as a real heading of the level the page calls for — <h2 kbq-empty-state-title> ' +
|
|
71
|
+
'— the component zeroes the browser margin, so nothing moves.',
|
|
72
|
+
' An empty state inserted into a page that has already been read needs role="status" (role="alert" ' +
|
|
73
|
+
'for the error variant) on <kbq-empty-state>; the component adds no role of its own.',
|
|
74
|
+
' empty-state.scss loads its own token layer now instead of relying on a second styleUrls entry, ' +
|
|
75
|
+
'so anything reusing the stylesheet gets the custom properties with the rules. A workaround that ' +
|
|
76
|
+
're-declared --kbq-empty-state-size-* tokens to compensate can be dropped.',
|
|
77
|
+
' KbqEmptyState.size is an input(). Reads through a variable this schematic cannot recognise as an ' +
|
|
78
|
+
'empty state are not reported, because "size" is too common a property to match on its own — ' +
|
|
79
|
+
'check any code that reads .size off a KbqEmptyState or a subclass of it.'
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
exports.EMPTY_STATE_PACKAGE = EMPTY_STATE_PACKAGE;
|
|
83
|
+
exports.EMPTY_STATE_TYPE = EMPTY_STATE_TYPE;
|
|
84
|
+
exports.SUMMARY = SUMMARY;
|
|
85
|
+
exports.warnPatterns = warnPatterns;
|
|
@@ -0,0 +1,71 @@
|
|
|
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_emptyStateErrorColor_data = require('./data.js');
|
|
8
|
+
require('@angular-devkit/schematics');
|
|
9
|
+
require('@schematics/angular/utility');
|
|
10
|
+
|
|
11
|
+
const LABEL = '[empty-state-error-color]';
|
|
12
|
+
const EXTENSIONS = ['.ts', '.html', '.scss', '.css'];
|
|
13
|
+
const anchorRegExp = new RegExp(migrations_emptyStateErrorColor_data.EMPTY_STATE_TYPE);
|
|
14
|
+
const compiledWarnPatterns = migrations_emptyStateErrorColor_data.warnPatterns.map(({ pattern, message }) => ({ regExp: new RegExp(pattern), message }));
|
|
15
|
+
/**
|
|
16
|
+
* Decodes a file's content, but only once it is known to be an empty-state consumer — importing the
|
|
17
|
+
* package, naming the component, or theming it. Every `warnPatterns` entry only applies to a file
|
|
18
|
+
* that passes this check, so it is the single gate for all of them.
|
|
19
|
+
*
|
|
20
|
+
* Checks the raw buffer for the import specifier first, since that is the common case for `.ts` and
|
|
21
|
+
* `.html` consumers and needs no decoding to test; only the fallback name/selector check requires the
|
|
22
|
+
* decoded string, and once decoded it is reused rather than decoded again for the patterns below.
|
|
23
|
+
*/
|
|
24
|
+
function readIfEmptyStateConsumer(buffer) {
|
|
25
|
+
if (buffer.includes(migrations_emptyStateErrorColor_data.EMPTY_STATE_PACKAGE))
|
|
26
|
+
return buffer.toString();
|
|
27
|
+
const content = buffer.toString();
|
|
28
|
+
return anchorRegExp.test(content) ? content : undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Reports the removed `KbqEmptyStateIcon.setErrorColor()` and the four renamed theme custom
|
|
32
|
+
* properties. Never writes: a removed method has no replacement expression, and the old token names
|
|
33
|
+
* are still read as fallbacks, so renaming them is a decision rather than a fix.
|
|
34
|
+
*
|
|
35
|
+
* Stylesheets are visited as well as `.ts` and `.html`, because the tokens are a theming contract
|
|
36
|
+
* consumers override from their own SCSS.
|
|
37
|
+
*/
|
|
38
|
+
function emptyStateErrorColor(options) {
|
|
39
|
+
return async (tree, context) => {
|
|
40
|
+
const { project } = options;
|
|
41
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
42
|
+
const root = projectDefinition?.root ?? '';
|
|
43
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
44
|
+
let consumers = 0;
|
|
45
|
+
let reported = 0;
|
|
46
|
+
utils_packageConfig.visitProjectFiles(rootDir, (filePath, entry) => {
|
|
47
|
+
if (!EXTENSIONS.some((extension) => filePath.endsWith(extension)))
|
|
48
|
+
return;
|
|
49
|
+
const content = entry?.content.length ? readIfEmptyStateConsumer(entry.content) : undefined;
|
|
50
|
+
if (!content)
|
|
51
|
+
return;
|
|
52
|
+
consumers++;
|
|
53
|
+
for (const { regExp, message } of compiledWarnPatterns) {
|
|
54
|
+
if (!regExp.test(content))
|
|
55
|
+
continue;
|
|
56
|
+
reported++;
|
|
57
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
// Nothing here renders an empty state, so the summary would only be noise.
|
|
61
|
+
if (consumers === 0)
|
|
62
|
+
return;
|
|
63
|
+
utils_messages.logMessage(context.logger, [
|
|
64
|
+
`${LABEL} processed kbq-empty-state under "${root || '<workspace root>'}", ` +
|
|
65
|
+
`${consumers} file(s) reference the component, ${reported} call site(s) reported.`,
|
|
66
|
+
...migrations_emptyStateErrorColor_data.SUMMARY
|
|
67
|
+
]);
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
exports.default = emptyStateErrorColor;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-empty-state-error-color",
|
|
4
|
+
"title": "Koobiq components empty-state review 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
|
+
}
|
|
@@ -10,13 +10,13 @@ This schematic provides migration for `KbqEmptyState` new `size` attribute. It i
|
|
|
10
10
|
Usage for Angular Cli:
|
|
11
11
|
|
|
12
12
|
```shell
|
|
13
|
-
ng g @koobiq/components:empty-state-size-attr --project <your project>
|
|
13
|
+
ng g @koobiq/components:empty-state-size-attr --project "<your project>"
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
Usage for Nx:
|
|
17
17
|
|
|
18
18
|
```shell
|
|
19
|
-
nx g @koobiq/components:empty-state-size-attr --project <your project>
|
|
19
|
+
nx g @koobiq/components:empty-state-size-attr --project "<your project>"
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
### Run locally
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var utils_angularParsing = require('../../utils/angular-parsing.js');
|
|
6
|
-
var utils_packageConfig = require('../../
|
|
6
|
+
var utils_packageConfig = require('../../package-config-BhU2TfC8.js');
|
|
7
7
|
var utils_typescript = require('../../utils/typescript.js');
|
|
8
8
|
require('typescript');
|
|
9
9
|
require('../../utils/ast.js');
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# file-upload-cva-and-primitives
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@20`
|
|
4
|
+
(registered for `21.0.0-0`). Reports the file-upload behavior the component review changed. It never
|
|
5
|
+
writes to the tree.
|
|
6
|
+
|
|
7
|
+
## Background
|
|
8
|
+
|
|
9
|
+
The review repaired the two contracts the component is judged on — the form contract and the file-list
|
|
10
|
+
primitive.
|
|
11
|
+
|
|
12
|
+
| Member | Before | After |
|
|
13
|
+
| ----------------------------------- | ------------------------------------------- | ------------------------------------------------ |
|
|
14
|
+
| `writeValue()` | wrote through the `file` / `files` setter | writes the list directly |
|
|
15
|
+
| `KbqFileList.remove(item)` | returned the kept items, removed every copy | returns the removed item, removes the first copy |
|
|
16
|
+
| `KbqFileList.removeAt(index)` | rewrote the list and emitted for any index | ignores an index outside the list |
|
|
17
|
+
| `hasFocus` | public, always `false` | removed |
|
|
18
|
+
| single uploader's hidden input | `multiple` | single-selection |
|
|
19
|
+
| `[multiple]` on the single uploader | forwarded to that input | not an input at all |
|
|
20
|
+
| `[file]` / `[files]` setter | wrote the list and notified the form | writes the list only |
|
|
21
|
+
| `KbqInputFileMultipleLabel` | exported interface | removed |
|
|
22
|
+
|
|
23
|
+
`writeValue()` deserves a note. It assigned through the `file`/`files` setters, and those setters call
|
|
24
|
+
`cvaOnChange` — the view→model half of the `ControlValueAccessor`. Angular's model→view callback
|
|
25
|
+
therefore re-entered the view→model pipeline: every `setValue`/`patchValue` marked the control
|
|
26
|
+
**dirty** and emitted `valueChanges` twice, and because `FormControl.reset()` calls `markAsPristine()`
|
|
27
|
+
_before_ `setValue()`, a reset uploader came back dirty. The same method also emitted the public
|
|
28
|
+
`(fileChange)`/`(filesChange)` output, so a background `patchValue` was indistinguishable from a user
|
|
29
|
+
picking a file.
|
|
30
|
+
|
|
31
|
+
## What it does _not_ do
|
|
32
|
+
|
|
33
|
+
Nothing is rewritten. `remove()` keeps its signature while returning the opposite array, and whether an
|
|
34
|
+
output handler was meant to run for a programmatic write is a decision, not a rename.
|
|
35
|
+
|
|
36
|
+
| Pattern | Manual migration |
|
|
37
|
+
| ----------------------------------- | ------------------------------------------------------------------------------ |
|
|
38
|
+
| `.remove(item)` | The return value is the removed item now; use `removeAt(index)` for a position |
|
|
39
|
+
| `.hasFocus` | Track focus with `cdkMonitorSubtreeFocus` or `(focusin)`/`(focusout)` |
|
|
40
|
+
| `(fileChange)` / `(filesChange)` | Subscribe to the control if the handler was meant to see programmatic writes |
|
|
41
|
+
| `KbqInputFileMultipleLabel` | Use `KbqMultipleFileUploadLocaleConfiguration` from `@koobiq/components/core` |
|
|
42
|
+
| `[file]` / `[files]` beside a form | Drop the binding — the form owns the value; without a form nothing changes |
|
|
43
|
+
| `<kbq-single-file-upload multiple>` | Drop the attribute, or switch to `<kbq-multiple-file-upload>` |
|
|
44
|
+
|
|
45
|
+
## Notes with no call site to point at
|
|
46
|
+
|
|
47
|
+
- A programmatic value no longer marks the control dirty, and `valueChanges` fires once instead of
|
|
48
|
+
twice. Error display keyed off `dirty` shows fewer errors than before, not more.
|
|
49
|
+
- The control is marked touched when focus leaves the uploader, so the default `ErrorStateMatcher`
|
|
50
|
+
shows a `required` error to a user who tabbed through without attaching anything.
|
|
51
|
+
- The single uploader renders a single-selection file input, so the system dialog no longer offers a
|
|
52
|
+
multi-selection the component would throw away. Files a drop hands over past the first are reported
|
|
53
|
+
through the new `(rejected)` output, as are duplicates the multiple uploader skips.
|
|
54
|
+
- `accept` is documented as what it is: the native attribute, which only filters the system dialog.
|
|
55
|
+
Rejection still needs a validator — `FileValidators.isCorrectExtension` takes the same array.
|
|
56
|
+
- The locale gains a `fileUpload.a11y` section holding the live-region announcements. A hand-written
|
|
57
|
+
`KbqLocaleData` registered through `KBQ_LOCALE_DATA` has to add those three keys.
|
|
58
|
+
- 22 `--kbq-file-upload-*` custom properties that no rule read were removed, including both
|
|
59
|
+
`*-states-focused-focus-outline-color` tokens. Setting one never had an effect.
|
|
60
|
+
- `removeAt()` ignores an index outside the list. It used to rewrite `list` with a fresh array for a
|
|
61
|
+
`splice` that removed nothing — waking every `list()` consumer for a no-op — and emit `itemRemoved`
|
|
62
|
+
carrying `undefined` in a tuple typed `[T, number]`.
|
|
63
|
+
- A drop that hands over no files no longer reaches the list. An empty directory unwraps to zero
|
|
64
|
+
files, and under `addStrategy="replace"` that used to clear a selection the user had already built.
|
|
65
|
+
|
|
66
|
+
## Running it manually
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
ng generate @koobiq/components:file-upload-cva-and-primitives --project my-app
|
|
70
|
+
```
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `file-upload-cva-and-primitives` migration.
|
|
5
|
+
*
|
|
6
|
+
* The file-upload review repaired the two contracts the component is judged on — the form contract
|
|
7
|
+
* and the file-list primitive — and both changes are behavioral, so nothing here is rewritten:
|
|
8
|
+
*
|
|
9
|
+
* - `writeValue()` no longer routes through the `file`/`files` setters, so a programmatic value stops
|
|
10
|
+
* marking the control dirty, stops emitting `valueChanges` twice, and no longer fires
|
|
11
|
+
* `(fileChange)`/`(filesChange)`.
|
|
12
|
+
* - `KbqFileList.remove()` now does what its JSDoc always said: removes the first occurrence, returns
|
|
13
|
+
* the removed item, and emits `itemRemoved`. It used to return the items it kept and remove every
|
|
14
|
+
* occurrence silently.
|
|
15
|
+
* - The single uploader's hidden input is no longer `multiple`, so the system dialog cannot select
|
|
16
|
+
* files the component would discard; whatever a drop hands over past the first file is reported
|
|
17
|
+
* through the new `(rejected)` output.
|
|
18
|
+
* - `KbqMultipleFileUploadComponent.hasFocus` is removed — it was public and read by nothing.
|
|
19
|
+
* - `KbqInputFileMultipleLabel` is removed. Its replacement lives in another entry point, so the
|
|
20
|
+
* rename cannot be applied without also moving the import.
|
|
21
|
+
*
|
|
22
|
+
* Warn-only: which value a call site wanted from `remove()` and whether a consumer relied on the
|
|
23
|
+
* output firing for a programmatic write are decisions, not renames.
|
|
24
|
+
*/
|
|
25
|
+
/** Import specifier that marks a file as a file-upload consumer. */
|
|
26
|
+
const FILE_UPLOAD_PACKAGE = '@koobiq/components/file-upload';
|
|
27
|
+
/** Identifier and element shapes that mark a consumer without an import. */
|
|
28
|
+
const FILE_UPLOAD_TYPE = '\\bKbq\\w*File(?:Upload|List|Loader|Multiple)\\w*\\b|\\bkbq-(?:single-|multiple-)?file-upload\\b';
|
|
29
|
+
const warnPatterns = [
|
|
30
|
+
{
|
|
31
|
+
pattern: '\\.\\s*remove\\s*\\(',
|
|
32
|
+
message: 'KbqFileList.remove() follows its documented contract now: it removes the first occurrence, ' +
|
|
33
|
+
'returns the removed item and emits itemRemoved. It used to return the items it kept, drop ' +
|
|
34
|
+
'every occurrence and emit nothing, so a call site reading the return value gets the ' +
|
|
35
|
+
'opposite array from before. Use removeAt(index) when you mean a position.'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
pattern: '\\.\\s*hasFocus\\b',
|
|
39
|
+
message: 'KbqMultipleFileUploadComponent.hasFocus was removed. It was public, always false and read ' +
|
|
40
|
+
'by nothing; track focus with cdkMonitorSubtreeFocus or a (focusin)/(focusout) pair.'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
pattern: '\\((?:fileChange|filesChange)\\)|\\.\\s*(?:fileChange|filesChange)\\s*\\.\\s*subscribe',
|
|
44
|
+
message: 'writeValue() no longer emits (fileChange)/(filesChange). The outputs report a user picking ' +
|
|
45
|
+
'or removing a file; a setValue/patchValue/reset from the host no longer looks like one. A ' +
|
|
46
|
+
'handler that started an upload from there also ran on every programmatic write — subscribe ' +
|
|
47
|
+
'to the control instead if that was the intent.'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
pattern: '\\bKbqInputFileMultipleLabel\\b',
|
|
51
|
+
message: 'KbqInputFileMultipleLabel was removed. Use KbqMultipleFileUploadLocaleConfiguration from ' +
|
|
52
|
+
'@koobiq/components/core — note the entry point, the import moves with the rename. The index ' +
|
|
53
|
+
'signature only widened the config so an unknown key could be passed along with the labels, ' +
|
|
54
|
+
'and nothing reads one.'
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
pattern: '\\[\\s*(?:file|files)\\s*\\]|\\[\\(\\s*(?:file|files)\\s*\\)\\]',
|
|
58
|
+
message: 'Writing [file]/[files] no longer notifies the form. The setter is the model→view half, like ' +
|
|
59
|
+
'writeValue(): it fills the list and stops there. This only matters when the same component ' +
|
|
60
|
+
'also carries formControl, formControlName or ngModel — two sources of truth for one value; ' +
|
|
61
|
+
'drop the binding and let the form own it. Without a form the binding is unchanged, and ' +
|
|
62
|
+
'[(file)]/[(files)] still report what the user does.'
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
pattern: '<\\s*kbq-single-file-upload\\b[^>]*\\bmultiple\\b',
|
|
66
|
+
message: 'kbq-single-file-upload no longer forwards `multiple` to its hidden input. It used to put the ' +
|
|
67
|
+
'system dialog back into multi-select on a component that keeps one file and discarded the ' +
|
|
68
|
+
'rest; remove the attribute, or use kbq-multiple-file-upload if several files were intended.'
|
|
69
|
+
}
|
|
70
|
+
];
|
|
71
|
+
/** Printed once per project, after the per-file reports. */
|
|
72
|
+
const SUMMARY = [
|
|
73
|
+
' A programmatic value no longer marks the control dirty. `control.setValue(...)` emits valueChanges ' +
|
|
74
|
+
'once instead of twice, and a control reset right after `markAsPristine()` stays pristine — error ' +
|
|
75
|
+
'display keyed off `dirty` shows fewer errors than before, not more.',
|
|
76
|
+
' The control is marked touched when focus leaves the uploader, so the default ErrorStateMatcher ' +
|
|
77
|
+
'shows a `required` error to a user who tabbed through without attaching anything.',
|
|
78
|
+
' The single uploader renders a single-selection file input. The system dialog no longer offers a ' +
|
|
79
|
+
'multi-selection the component would throw away; files a drop hands over past the first are ' +
|
|
80
|
+
'reported through the new (rejected) output, as are duplicates skipped by the multiple uploader.',
|
|
81
|
+
' `accept` is documented as what it is — the native attribute, which only filters the system dialog. ' +
|
|
82
|
+
'Rejection still needs a validator; FileValidators.isCorrectExtension takes the same array.',
|
|
83
|
+
' The locale gains a `fileUpload.a11y` section with the live-region announcements. A hand-written ' +
|
|
84
|
+
'KbqLocaleData registered through KBQ_LOCALE_DATA has to add those three keys.',
|
|
85
|
+
' 22 --kbq-file-upload-* custom properties that no rule read were removed, including both ' +
|
|
86
|
+
'*-states-focused-focus-outline-color tokens. Setting one never had an effect.',
|
|
87
|
+
' KbqFileList.removeAt(index) ignores an index outside the list. It used to rewrite the list with a ' +
|
|
88
|
+
'fresh array anyway — waking every list() consumer for a no-op — and emit itemRemoved carrying ' +
|
|
89
|
+
'undefined in a tuple typed [T, number].',
|
|
90
|
+
' A drop that hands over no files (an empty directory unwraps to zero) no longer reaches the list. ' +
|
|
91
|
+
'Under addStrategy="replace" it used to clear a selection the user had already built.'
|
|
92
|
+
];
|
|
93
|
+
|
|
94
|
+
exports.FILE_UPLOAD_PACKAGE = FILE_UPLOAD_PACKAGE;
|
|
95
|
+
exports.FILE_UPLOAD_TYPE = FILE_UPLOAD_TYPE;
|
|
96
|
+
exports.SUMMARY = SUMMARY;
|
|
97
|
+
exports.warnPatterns = warnPatterns;
|
|
@@ -0,0 +1,60 @@
|
|
|
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_fileUploadCvaAndPrimitives_data = require('./data.js');
|
|
8
|
+
require('@angular-devkit/schematics');
|
|
9
|
+
require('@schematics/angular/utility');
|
|
10
|
+
|
|
11
|
+
const LABEL = '[file-upload-cva-and-primitives]';
|
|
12
|
+
const EXTENSIONS = ['.ts', '.html'];
|
|
13
|
+
/** A file is a file-upload consumer if it imports the package, names a type, or renders an uploader. */
|
|
14
|
+
function referencesFileUpload(content) {
|
|
15
|
+
return content.includes(migrations_fileUploadCvaAndPrimitives_data.FILE_UPLOAD_PACKAGE) || new RegExp(migrations_fileUploadCvaAndPrimitives_data.FILE_UPLOAD_TYPE).test(content);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Reports the file-upload behavior the review changed. Never writes: `remove()` keeps its signature
|
|
19
|
+
* while returning the opposite array, and whether an output handler wanted to run for a programmatic
|
|
20
|
+
* write is a decision rather than a rename.
|
|
21
|
+
*
|
|
22
|
+
* `.html` is visited as well as `.ts`, because `(fileChange)`/`(filesChange)` are template bindings.
|
|
23
|
+
*/
|
|
24
|
+
function fileUploadCvaAndPrimitives(options) {
|
|
25
|
+
return async (tree, context) => {
|
|
26
|
+
const { project } = options;
|
|
27
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
28
|
+
const root = projectDefinition?.root ?? '';
|
|
29
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
30
|
+
let consumers = 0;
|
|
31
|
+
let reported = 0;
|
|
32
|
+
utils_packageConfig.visitProjectFiles(rootDir, (filePath, entry) => {
|
|
33
|
+
if (!EXTENSIONS.some((extension) => filePath.endsWith(extension)))
|
|
34
|
+
return;
|
|
35
|
+
const content = entry?.content.toString();
|
|
36
|
+
if (!content || !referencesFileUpload(content))
|
|
37
|
+
return;
|
|
38
|
+
consumers++;
|
|
39
|
+
// `referencesFileUpload` above is the only scoping rule. A per-pattern anchor used to
|
|
40
|
+
// re-test the type regex here, which silently skipped a file that reaches the component
|
|
41
|
+
// through the import path alone — `KbqDropzoneData` names no type the regex matches.
|
|
42
|
+
for (const { pattern, message } of migrations_fileUploadCvaAndPrimitives_data.warnPatterns) {
|
|
43
|
+
if (!new RegExp(pattern).test(content))
|
|
44
|
+
continue;
|
|
45
|
+
reported++;
|
|
46
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
// Nothing here renders a file-upload, so the summary would only be noise.
|
|
50
|
+
if (consumers === 0)
|
|
51
|
+
return;
|
|
52
|
+
utils_messages.logMessage(context.logger, [
|
|
53
|
+
`${LABEL} processed kbq-file-upload under "${root || '<workspace root>'}", ` +
|
|
54
|
+
`${consumers} file(s) reference the component, ${reported} call site(s) reported.`,
|
|
55
|
+
...migrations_fileUploadCvaAndPrimitives_data.SUMMARY
|
|
56
|
+
]);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
exports.default = fileUploadCvaAndPrimitives;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-file-upload-cva-and-primitives",
|
|
4
|
+
"title": "Koobiq components file-upload review 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,90 @@
|
|
|
1
|
+
# file-upload-deprecated-outputs
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@21`
|
|
4
|
+
(registered for `21.0.0-0`). Renames the deprecated file-upload outputs to
|
|
5
|
+
their replacements.
|
|
6
|
+
|
|
7
|
+
## Background
|
|
8
|
+
|
|
9
|
+
`KbqMultipleFileUploadComponent.fileQueueChanged` and
|
|
10
|
+
`KbqSingleFileUploadComponent.fileQueueChange` (#DS-5229) were deprecated in
|
|
11
|
+
favor of `filesChange` / `fileChange`. Removal was originally planned for the
|
|
12
|
+
next major release, but was moved up to 21.0.0. Both outputs fired at exactly
|
|
13
|
+
the same call sites, with the same payload, as their replacement — this is a
|
|
14
|
+
pure rename, not a behaviour change.
|
|
15
|
+
|
|
16
|
+
## What it does
|
|
17
|
+
|
|
18
|
+
The schematic walks every `.ts` and `.html` file in the project (skipping
|
|
19
|
+
`node_modules`, `dist`, `coverage`, `.angular` and `out-tsc`) and renames the
|
|
20
|
+
identifier wherever it appears:
|
|
21
|
+
|
|
22
|
+
| Before | After |
|
|
23
|
+
| ------------------ | ------------- |
|
|
24
|
+
| `fileQueueChanged` | `filesChange` |
|
|
25
|
+
| `fileQueueChange` | `fileChange` |
|
|
26
|
+
|
|
27
|
+
Both names are unambiguous — they don't collide with any other Angular or
|
|
28
|
+
TypeScript identifier — so the rename applies everywhere the text occurs:
|
|
29
|
+
|
|
30
|
+
- A template binding, in an external `.html` file or an inline
|
|
31
|
+
`@Component({ template })` string: `(fileQueueChanged)="…"` →
|
|
32
|
+
`(filesChange)="…"`.
|
|
33
|
+
- Programmatic TypeScript access: `comp.fileQueueChanged.subscribe(...)` →
|
|
34
|
+
`comp.filesChange.subscribe(...)`.
|
|
35
|
+
|
|
36
|
+
The rewrite is idempotent — running it twice does not change an
|
|
37
|
+
already-migrated file.
|
|
38
|
+
|
|
39
|
+
## Running it
|
|
40
|
+
|
|
41
|
+
```shell
|
|
42
|
+
ng g @koobiq/components:file-upload-deprecated-outputs --project "<your project>"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Pass `--fix=false` to see what would change without writing files. `fix`
|
|
46
|
+
defaults to `true`.
|
|
47
|
+
|
|
48
|
+
[Params](schema.ts)
|
|
49
|
+
|
|
50
|
+
### Run locally
|
|
51
|
+
|
|
52
|
+
Build package
|
|
53
|
+
|
|
54
|
+
```shell
|
|
55
|
+
yarn run build:schematics
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Run command (for example, for `koobiq-docs` project)
|
|
59
|
+
|
|
60
|
+
```shell
|
|
61
|
+
ng g ./dist/components/schematics/collection.json:file-upload-deprecated-outputs --project koobiq-docs
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Result
|
|
65
|
+
|
|
66
|
+
#### Before
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
@Component({
|
|
70
|
+
selector: 'my-uploads',
|
|
71
|
+
template: `
|
|
72
|
+
<kbq-file-upload (fileQueueChange)="onFileChange($event)"></kbq-file-upload>
|
|
73
|
+
<kbq-file-upload multiple (fileQueueChanged)="onFilesChange($event)"></kbq-file-upload>
|
|
74
|
+
`
|
|
75
|
+
})
|
|
76
|
+
export class MyUploads {}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### After
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
@Component({
|
|
83
|
+
selector: 'my-uploads',
|
|
84
|
+
template: `
|
|
85
|
+
<kbq-file-upload (fileChange)="onFileChange($event)"></kbq-file-upload>
|
|
86
|
+
<kbq-file-upload multiple (filesChange)="onFilesChange($event)"></kbq-file-upload>
|
|
87
|
+
`
|
|
88
|
+
})
|
|
89
|
+
export class MyUploads {}
|
|
90
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Replacement data for the removal of the deprecated file-upload outputs
|
|
5
|
+
*
|
|
6
|
+
* `KbqMultipleFileUploadComponent.fileQueueChanged` and
|
|
7
|
+
* `KbqSingleFileUploadComponent.fileQueueChange` were deprecated in favor of
|
|
8
|
+
* `filesChange` / `fileChange` and are removed in this release. Both names
|
|
9
|
+
* are unambiguous — they don't collide with any other Angular or TypeScript
|
|
10
|
+
* identifier — so a plain `\b…\b` word-boundary rename is safe everywhere
|
|
11
|
+
* the identifier can appear: an `(fileQueueChanged)="…"` template binding
|
|
12
|
+
* (external `.html` or inline `template:` string), or a programmatic
|
|
13
|
+
* `.fileQueueChanged` property access / `.subscribe(...)` call in `.ts`.
|
|
14
|
+
*/
|
|
15
|
+
const replacements = [
|
|
16
|
+
{ from: '\\bfileQueueChanged\\b', to: 'filesChange' },
|
|
17
|
+
{ from: '\\bfileQueueChange\\b', to: 'fileChange' }
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
exports.replacements = replacements;
|