@koobiq/components 20.4.2 → 21.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-trigger.scss +3 -10
- package/accordion/accordion.scss +4 -6
- package/actions-panel/actions-panel-container.scss +45 -1
- package/alert/alert.component.scss +3 -2
- package/app-switcher/_app-switcher-theme.scss +0 -4
- package/app-switcher/app-switcher-dropdown-app.scss +3 -2
- package/app-switcher/app-switcher-dropdown-site.scss +2 -1
- package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
- package/app-switcher/app-switcher-tokens.scss +15 -0
- package/app-switcher/app-switcher.scss +14 -4
- package/autocomplete/autocomplete.scss +7 -6
- package/badge/badge.component.scss +5 -8
- package/breadcrumbs/breadcrumbs.scss +25 -10
- package/button/_button-base.scss +30 -7
- package/button/_button-theme.scss +16 -0
- package/button/button-group.scss +7 -0
- package/button/button-tokens.scss +0 -2
- package/button/button.scss +34 -2
- package/button-toggle/_button-toggle-theme.scss +7 -2
- package/button-toggle/button-toggle.scss +65 -15
- package/checkbox/_checkbox-theme.scss +4 -3
- package/checkbox/checkbox.scss +3 -6
- package/clamped-text/clamped-text.scss +6 -2
- package/code-block/code-block-tokens.scss +0 -224
- package/code-block/code-block.scss +20 -9
- package/content-panel/content-panel-aside.scss +3 -2
- package/content-panel/content-panel-container.scss +37 -0
- package/content-panel/content-panel.scss +4 -3
- package/core/highlight/_highlight-theme.scss +3 -1
- package/core/option/action-container.scss +2 -2
- package/core/option/action.scss +2 -1
- package/core/option/option.scss +2 -1
- package/core/pop-up/_pop-up.scss +0 -37
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
- package/core/styles/_core.scss +3 -0
- package/core/styles/_koobiq-theme.scss +5 -6
- package/core/styles/common/_animation.scss +44 -16
- package/core/styles/common/_groups-mixins.scss +21 -19
- package/core/styles/common/_groups.scss +4 -32
- package/core/styles/common/_index.scss +0 -2
- package/core/styles/common/_link.scss +117 -0
- package/core/styles/common/_list.scss +0 -26
- package/core/styles/common/_overlay.scss +8 -10
- package/core/styles/common/_rtl.scss +0 -14
- package/core/styles/common/_select.scss +33 -15
- package/core/styles/common/_squircle.scss +63 -0
- package/core/styles/common/_tokens.scss +0 -11
- package/core/styles/common/_vendor-prefixes.scss +0 -20
- package/core/styles/functions/_timing.scss +0 -22
- package/core/styles/theming/_scrollbar-theme.scss +6 -1
- package/core/styles/theming/_theming.scss +13 -65
- package/core/styles/typography/_index.scss +0 -1
- package/core/styles/typography/_typography.scss +0 -143
- package/core/styles/visual/_body.scss +1 -6
- package/core/styles/visual/_layout.scss +0 -12
- package/datepicker/calendar-body.scss +3 -1
- package/datepicker/calendar-header.scss +0 -1
- package/datepicker/datepicker-content.scss +33 -1
- package/datepicker/datepicker-toggle.scss +0 -38
- package/dl/dl-tokens.scss +10 -0
- package/dl/dl.scss +113 -13
- package/dropdown/_dropdown-theme.scss +4 -16
- package/dropdown/dropdown-item.scss +4 -10
- package/dropdown/dropdown.scss +2 -1
- package/empty-state/_empty-state-theme.scss +10 -4
- package/empty-state/empty-state-tokens.scss +4 -4
- package/empty-state/empty-state.scss +4 -0
- package/fesm2022/koobiq-components-accordion.mjs +347 -229
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +39 -39
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +46 -48
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +332 -116
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +172 -132
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +791 -609
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +260 -143
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +4342 -1595
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +73 -36
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +447 -89
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +703 -599
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
- package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +116 -60
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +550 -290
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +2871 -2595
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +79 -24
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +389 -525
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +400 -149
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +601 -459
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
- package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-link.mjs +328 -125
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +583 -433
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +55 -78
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +853 -475
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +895 -556
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +680 -310
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +684 -285
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +450 -231
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +127 -21
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +883 -693
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +207 -88
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +815 -41
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +109 -88
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
- package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +890 -501
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +63 -49
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +1062 -603
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +886 -733
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +213 -185
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +299 -147
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +233 -245
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +344 -142
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +229 -145
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +463 -143
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +177 -130
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +657 -214
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +61 -32
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +734 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1700 -617
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +290 -135
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/dropzone.scss +31 -3
- package/file-upload/file-upload-tokens.scss +2 -22
- package/file-upload/file-upload.scss +6 -0
- package/file-upload/multiple-file-upload.component.scss +14 -12
- package/file-upload/single-file-upload.component.scss +3 -2
- package/filter-bar/filters.scss +7 -0
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +8 -1
- package/flag/flag-tokens.scss +22 -0
- package/flag/flag.scss +34 -21
- package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
- package/form-field/_form-field-theme.scss +4 -9
- package/form-field/cleaner.scss +3 -1
- package/form-field/fieldset.scss +3 -4
- package/form-field/form-field.scss +26 -21
- package/form-field/password-toggle.scss +3 -1
- package/icon/_icon-button-theme.scss +7 -0
- package/icon/_icon-theme.scss +10 -7
- package/icon/icon-button.scss +0 -2
- package/icon/icon-tokens.scss +12 -9
- package/inline-edit/inline-edit.scss +40 -54
- package/input/input.scss +4 -0
- package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
- package/link/deprecated/link-tokens.scss +27 -0
- package/link/link-tokens.scss +6 -25
- package/link/link.scss +137 -0
- package/list/list.scss +3 -2
- package/loader-overlay/_loader-overlay-theme.scss +19 -10
- package/loader-overlay/loader-overlay-tokens.scss +0 -2
- package/loader-overlay/loader-overlay.scss +7 -1
- package/markdown/_markdown-theme.scss +16 -0
- package/markdown/markdown-tokens.scss +5 -0
- package/markdown/markdown.scss +2 -1
- package/modal/_modal-animation.scss +23 -14
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal.scss +35 -31
- package/navbar/_navbar-item_horizontal.scss +8 -6
- package/navbar/_navbar-item_vertical.scss +18 -6
- package/navbar/_navbar-theme.scss +9 -1
- package/navbar/navbar-brand.scss +8 -6
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.scss +8 -9
- package/navbar/navbar-toggle.scss +3 -3
- package/navbar/navbar-tokens.scss +14 -0
- package/navbar/navbar.scss +1 -2
- package/navbar/vertical-navbar.scss +2 -2
- package/notification-center/_notification-center-theme.scss +11 -6
- package/notification-center/notification-center-tokens.scss +33 -0
- package/notification-center/notification-center.scss +58 -20
- package/notification-center/notification-item.scss +15 -6
- package/package.json +112 -81
- package/popover/popover-tokens.scss +0 -2
- package/popover/popover.scss +41 -19
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +20 -3
- package/progress-bar/progress-bar-tokens.scss +3 -0
- package/progress-bar/progress-bar.scss +36 -8
- package/progress-spinner/progress-spinner.scss +4 -3
- package/radio/_radio-theme.scss +21 -4
- package/radio/radio-tokens.scss +7 -3
- package/radio/radio.scss +55 -8
- package/schematics/collection.json +415 -18
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.cjs +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
- package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
- package/schematics/migrations/actions-panel-overlay-container/data.cjs +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.cjs +55 -0
- package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
- package/schematics/migrations/alert-signals/README.md +13 -7
- package/schematics/migrations/alert-signals/{data.js → data.cjs} +3 -0
- package/schematics/migrations/alert-signals/index.cjs +221 -0
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.cjs +150 -0
- package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
- package/schematics/migrations/angular-animations-removal/schema.json +15 -0
- package/schematics/migrations/app-switcher-signals/README.md +88 -0
- package/schematics/migrations/app-switcher-signals/data.cjs +136 -0
- package/schematics/migrations/app-switcher-signals/index.cjs +366 -0
- package/schematics/migrations/app-switcher-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
- package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.cjs +149 -0
- package/schematics/migrations/autocomplete-signals/index.cjs +707 -0
- package/schematics/migrations/autocomplete-signals/schema.json +20 -0
- package/schematics/migrations/badge-signals/README.md +77 -0
- package/schematics/migrations/badge-signals/data.cjs +109 -0
- package/schematics/migrations/badge-signals/index.cjs +694 -0
- package/schematics/migrations/badge-signals/schema.json +20 -0
- package/schematics/migrations/button-state-and-styles/README.md +129 -0
- package/schematics/migrations/button-state-and-styles/data.cjs +136 -0
- package/schematics/migrations/button-state-and-styles/index.cjs +221 -0
- package/schematics/migrations/button-state-and-styles/schema.json +20 -0
- package/schematics/migrations/button-supported-colors/README.md +73 -0
- package/schematics/migrations/button-supported-colors/data.cjs +106 -0
- package/schematics/migrations/button-supported-colors/index.cjs +261 -0
- package/schematics/migrations/button-supported-colors/schema.json +20 -0
- package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
- package/schematics/migrations/button-toggle-signals-and-aria/data.cjs +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.cjs +497 -0
- package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/button-truncation/README.md +110 -0
- package/schematics/migrations/button-truncation/data.cjs +88 -0
- package/schematics/migrations/button-truncation/index.cjs +270 -0
- package/schematics/migrations/button-truncation/schema.json +20 -0
- package/schematics/migrations/checkbox-signals/README.md +76 -0
- package/schematics/migrations/checkbox-signals/data.cjs +114 -0
- package/schematics/migrations/checkbox-signals/index.cjs +635 -0
- package/schematics/migrations/checkbox-signals/schema.json +20 -0
- package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
- package/schematics/migrations/clamped-text-disclosure/data.cjs +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.cjs +60 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
- package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
- package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
- package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.cjs +121 -0
- package/schematics/migrations/code-block-signals/index.cjs +701 -0
- package/schematics/migrations/code-block-signals/schema.json +20 -0
- package/schematics/migrations/color-signals/README.md +46 -0
- package/schematics/migrations/color-signals/data.cjs +131 -0
- package/schematics/migrations/color-signals/index.cjs +20 -0
- package/schematics/migrations/color-signals/schema.json +20 -0
- package/schematics/migrations/core-mixins-removal/README.md +20 -0
- package/schematics/migrations/core-mixins-removal/data.cjs +27 -0
- package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
- package/schematics/migrations/core-mixins-removal/schema.json +15 -0
- package/schematics/migrations/css-selectors/README.md +2 -2
- package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.cjs +49 -0
- package/schematics/migrations/datepicker-signals/index.cjs +18 -0
- package/schematics/migrations/datepicker-signals/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +2 -2
- package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +8 -7
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.cjs +60 -0
- package/schematics/migrations/design-tokens-v4/schema.json +15 -0
- package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
- package/schematics/migrations/divider-signals-and-aria/data.cjs +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.cjs +212 -0
- package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
- package/schematics/migrations/dl-attribute-coercion/data.cjs +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.cjs +162 -0
- package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
- package/schematics/migrations/dl-standalone-names/README.md +49 -0
- package/schematics/migrations/dl-standalone-names/data.cjs +44 -0
- package/schematics/migrations/dl-standalone-names/index.cjs +322 -0
- package/schematics/migrations/dl-standalone-names/schema.json +20 -0
- package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
- package/schematics/migrations/dropdown-demote-overlay/data.cjs +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.cjs +289 -0
- package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
- package/schematics/migrations/dropdown-signals/README.md +83 -0
- package/schematics/migrations/dropdown-signals/data.cjs +152 -0
- package/schematics/migrations/dropdown-signals/index.cjs +20 -0
- package/schematics/migrations/dropdown-signals/schema.json +20 -0
- package/schematics/migrations/empty-state-error-color/README.md +84 -0
- package/schematics/migrations/empty-state-error-color/data.cjs +85 -0
- package/schematics/migrations/empty-state-error-color/index.cjs +72 -0
- package/schematics/migrations/empty-state-error-color/schema.json +15 -0
- package/schematics/migrations/empty-state-size-attr/README.md +2 -2
- package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.cjs +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.cjs +61 -0
- package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
- package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
- package/schematics/migrations/file-upload-deprecated-outputs/data.cjs +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.cjs +71 -0
- package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
- package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
- package/schematics/migrations/filter-bar-rename-action/data.cjs +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.cjs +178 -0
- package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
- package/schematics/migrations/filter-bar-signals/README.md +27 -16
- package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +1 -2
- package/schematics/migrations/filter-bar-signals/index.cjs +225 -0
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.cjs +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.cjs +62 -0
- package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
- package/schematics/migrations/flag-inner-html/README.md +67 -0
- package/schematics/migrations/flag-inner-html/data.cjs +58 -0
- package/schematics/migrations/flag-inner-html/index.cjs +62 -0
- package/schematics/migrations/flag-inner-html/schema.json +15 -0
- package/schematics/migrations/form-field-signals/README.md +125 -0
- package/schematics/migrations/form-field-signals/data.cjs +288 -0
- package/schematics/migrations/form-field-signals/index.cjs +383 -0
- package/schematics/migrations/form-field-signals/schema.json +20 -0
- package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
- package/schematics/migrations/icon-semantics-and-api/data.cjs +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.cjs +65 -0
- package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
- package/schematics/migrations/icons-replacement/README.md +5 -5
- package/schematics/migrations/icons-replacement/{index.js → index.cjs} +4 -3
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.cjs +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.cjs +98 -0
- package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
- package/schematics/migrations/input-number-surface/README.md +140 -0
- package/schematics/migrations/input-number-surface/data.cjs +135 -0
- package/schematics/migrations/input-number-surface/index.cjs +293 -0
- package/schematics/migrations/input-number-surface/schema.json +20 -0
- package/schematics/migrations/input-signals/README.md +20 -0
- package/schematics/migrations/input-signals/data.cjs +30 -0
- package/schematics/migrations/input-signals/index.cjs +18 -0
- package/schematics/migrations/input-signals/schema.json +15 -0
- package/schematics/migrations/link-deprecated-path/README.md +144 -0
- package/schematics/migrations/link-deprecated-path/index.cjs +20 -0
- package/schematics/migrations/link-deprecated-path/schema.json +20 -0
- package/schematics/migrations/link-signals/README.md +71 -0
- package/schematics/migrations/link-signals/data.cjs +116 -0
- package/schematics/migrations/link-signals/index.cjs +416 -0
- package/schematics/migrations/link-signals/schema.json +20 -0
- package/schematics/migrations/list-signals/README.md +22 -0
- package/schematics/migrations/list-signals/data.cjs +35 -0
- package/schematics/migrations/list-signals/index.cjs +18 -0
- package/schematics/migrations/list-signals/schema.json +15 -0
- package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
- package/schematics/migrations/list-tree-multiple-input/data.cjs +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.cjs +222 -0
- package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
- package/schematics/migrations/loader-overlay-signals/README.md +62 -0
- package/schematics/migrations/loader-overlay-signals/data.cjs +101 -0
- package/schematics/migrations/loader-overlay-signals/index.cjs +698 -0
- package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
- package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
- package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.cjs +257 -0
- package/schematics/migrations/locale-configuration-providers/index.cjs +295 -0
- package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
- package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
- package/schematics/migrations/mandatory-peer-dependencies/index.cjs +43 -0
- package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
- package/schematics/migrations/markdown-signals/README.md +58 -0
- package/schematics/migrations/markdown-signals/data.cjs +79 -0
- package/schematics/migrations/markdown-signals/index.cjs +640 -0
- package/schematics/migrations/markdown-signals/schema.json +20 -0
- package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
- package/schematics/migrations/modal-dialog-semantics/data.cjs +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.cjs +59 -0
- package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
- package/schematics/migrations/modal-signals/README.md +88 -0
- package/schematics/migrations/modal-signals/data.cjs +132 -0
- package/schematics/migrations/modal-signals/index.cjs +20 -0
- package/schematics/migrations/modal-signals/schema.json +20 -0
- package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
- package/schematics/migrations/navbar-signals-and-aria/data.cjs +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.cjs +569 -0
- package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/new-icons-pack/README.md +10 -10
- package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +8 -7
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.cjs +66 -0
- package/schematics/migrations/notification-center-signals/index.cjs +62 -0
- package/schematics/migrations/notification-center-signals/schema.json +15 -0
- package/schematics/migrations/option-signals/README.md +37 -0
- package/schematics/migrations/option-signals/data.cjs +86 -0
- package/schematics/migrations/option-signals/index.cjs +20 -0
- package/schematics/migrations/option-signals/schema.json +20 -0
- package/schematics/migrations/popover-leave-delay/README.md +51 -0
- package/schematics/migrations/popover-leave-delay/data.cjs +61 -0
- package/schematics/migrations/popover-leave-delay/index.cjs +55 -0
- package/schematics/migrations/popover-leave-delay/schema.json +15 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/data.cjs +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.cjs +59 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
- package/schematics/migrations/progress-spinner-signals/README.md +72 -0
- package/schematics/migrations/progress-spinner-signals/data.cjs +83 -0
- package/schematics/migrations/progress-spinner-signals/index.cjs +695 -0
- package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
- package/schematics/migrations/query-list-signals/README.md +32 -0
- package/schematics/migrations/query-list-signals/data.cjs +70 -0
- package/schematics/migrations/query-list-signals/index.cjs +18 -0
- package/schematics/migrations/query-list-signals/schema.json +15 -0
- package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
- package/schematics/migrations/radio-signals-and-aria/data.cjs +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.cjs +40 -0
- package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
- package/schematics/migrations/read-state-dwell-handlers/data.cjs +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.cjs +216 -0
- package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
- package/schematics/migrations/scrollbar-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
- package/schematics/migrations/select-signal-inputs/README.md +61 -0
- package/schematics/migrations/select-signal-inputs/data.cjs +99 -0
- package/schematics/migrations/select-signal-inputs/index.cjs +58 -0
- package/schematics/migrations/select-signal-inputs/schema.json +15 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/data.cjs +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.cjs +58 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
- package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
- package/schematics/migrations/signal-inputs-subclasses/data.cjs +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
- package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
- package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
- package/schematics/migrations/split-button-optional-disabled/data.cjs +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.cjs +58 -0
- package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
- package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
- package/schematics/migrations/splitter-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
- package/schematics/migrations/state-saving-default/README.md +67 -0
- package/schematics/migrations/state-saving-default/data.cjs +88 -0
- package/schematics/migrations/state-saving-default/index.cjs +63 -0
- package/schematics/migrations/state-saving-default/schema.json +15 -0
- package/schematics/migrations/table-cell-content/README.md +55 -0
- package/schematics/migrations/table-cell-content/data.cjs +66 -0
- package/schematics/migrations/table-cell-content/index.cjs +67 -0
- package/schematics/migrations/table-cell-content/schema.json +15 -0
- package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
- package/schematics/migrations/tabs-signals-and-aria/data.cjs +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.cjs +66 -0
- package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/tag-list-cleaner/README.md +58 -0
- package/schematics/migrations/tag-list-cleaner/data.cjs +42 -0
- package/schematics/migrations/tag-list-cleaner/index.cjs +197 -0
- package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
- package/schematics/migrations/tag-slots/README.md +41 -0
- package/schematics/migrations/tag-slots/index.cjs +191 -0
- package/schematics/migrations/tag-slots/schema.json +20 -0
- package/schematics/migrations/tags-signals/README.md +85 -0
- package/schematics/migrations/tags-signals/data.cjs +103 -0
- package/schematics/migrations/tags-signals/index.cjs +674 -0
- package/schematics/migrations/tags-signals/schema.json +20 -0
- package/schematics/migrations/textarea-signals/README.md +72 -0
- package/schematics/migrations/textarea-signals/data.cjs +121 -0
- package/schematics/migrations/textarea-signals/index.cjs +380 -0
- package/schematics/migrations/textarea-signals/schema.json +20 -0
- package/schematics/migrations/time-range-title-for/README.md +164 -0
- package/schematics/migrations/time-range-title-for/data.cjs +139 -0
- package/schematics/migrations/time-range-title-for/index.cjs +164 -0
- package/schematics/migrations/time-range-title-for/schema.json +20 -0
- package/schematics/migrations/timepicker-signals/README.md +78 -0
- package/schematics/migrations/timepicker-signals/data.cjs +82 -0
- package/schematics/migrations/timepicker-signals/index.cjs +710 -0
- package/schematics/migrations/timepicker-signals/schema.json +20 -0
- package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
- package/schematics/migrations/timezone-grouping-utils/data.cjs +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.cjs +65 -0
- package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
- package/schematics/migrations/title-encapsulation/README.md +49 -0
- package/schematics/migrations/title-encapsulation/data.cjs +69 -0
- package/schematics/migrations/title-encapsulation/index.cjs +58 -0
- package/schematics/migrations/title-encapsulation/schema.json +15 -0
- package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
- package/schematics/migrations/toast-stack-and-defaults/data.cjs +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.cjs +54 -0
- package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/data.cjs +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.cjs +61 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
- package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
- package/schematics/migrations/top-bar-container-selectors/data.cjs +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.cjs +85 -0
- package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
- package/schematics/migrations/tree-select-signals/README.md +61 -0
- package/schematics/migrations/tree-select-signals/data.cjs +106 -0
- package/schematics/migrations/tree-select-signals/index.cjs +59 -0
- package/schematics/migrations/tree-select-signals/schema.json +15 -0
- package/schematics/migrations/tree-signals/README.md +82 -0
- package/schematics/migrations/tree-signals/data.cjs +123 -0
- package/schematics/migrations/tree-signals/index.cjs +55 -0
- package/schematics/migrations/tree-signals/schema.json +15 -0
- package/schematics/migrations/tree-state-saving-default/README.md +66 -0
- package/schematics/migrations/tree-state-saving-default/data.cjs +78 -0
- package/schematics/migrations/tree-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
- package/schematics/migrations/username-pipe-injection/README.md +59 -0
- package/schematics/migrations/username-pipe-injection/data.cjs +78 -0
- package/schematics/migrations/username-pipe-injection/index.cjs +59 -0
- package/schematics/migrations/username-pipe-injection/schema.json +15 -0
- package/schematics/migrations/v20-upgrade/README.md +36 -16
- package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +124 -77
- package/schematics/migrations/v20-upgrade/index.cjs +19 -0
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.cjs +1371 -0
- package/schematics/migrations/v21-upgrade/index.cjs +95 -0
- package/schematics/migrations/v21-upgrade/schema.json +20 -0
- package/schematics/migrations/zoneless-change-detection/README.md +30 -0
- package/schematics/migrations/zoneless-change-detection/data.cjs +29 -0
- package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +401 -6
- package/schematics/ng-add/index.cjs +266 -0
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
- package/schematics/utils/deprecated-path-migration.cjs +62 -0
- package/schematics/utils/html-config.cjs +148 -0
- package/schematics/utils/{icon-migration.js → icon-migration.cjs} +2 -2
- package/schematics/utils/list-item-pattern.cjs +16 -0
- package/schematics/utils/{package-config.js → package-config.cjs} +3 -32
- package/schematics/utils/project-files.cjs +25 -0
- package/schematics/utils/replacement-driver.cjs +337 -0
- package/schematics/utils/safe-rule.cjs +23 -0
- package/schematics/utils/signal-members-migration.cjs +779 -0
- package/schematics/utils/tag-patterns.cjs +21 -0
- package/schematics/utils/template-ref-access.cjs +155 -0
- package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
- package/schematics/utils/warn-only-migration.cjs +52 -0
- package/schematics/utils/workspace-styles.cjs +123 -0
- package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
- package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
- package/scrollbar/native-scrollbar.scss +68 -0
- package/scrollbar/scrollbar-tokens.scss +13 -22
- package/scrollbar/scrollbar-track.scss +94 -0
- package/scrollbar/scrollbar-viewport.scss +33 -0
- package/scrollbar/scrollbar.scss +24 -0
- package/search-expandable/search-expandable-tokens.scss +4 -0
- package/search-expandable/search-expandable.scss +4 -2
- package/select/_select-theme.scss +3 -16
- package/select/select.scss +0 -6
- package/sidebar/sidebar.scss +20 -0
- package/sidepanel/_sidepanel-theme.scss +1 -1
- package/sidepanel/sidepanel-tokens.scss +7 -1
- package/sidepanel/sidepanel.scss +41 -5
- package/skeleton/skeleton-presets.scss +350 -0
- package/skeleton/skeleton-tokens.scss +127 -0
- package/skeleton/skeleton.scss +53 -45
- package/split-button/_split-button-theme.scss +4 -4
- package/split-button/split-button.scss +2 -6
- package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
- package/splitter/deprecated/splitter.scss +51 -0
- package/splitter/splitter-tokens.scss +19 -0
- package/splitter/splitter.scss +148 -28
- package/table/_table-theme.scss +13 -12
- package/table/table-tokens.scss +8 -0
- package/table/table.scss +47 -22
- package/tabs/_tabs-common.scss +14 -14
- package/tabs/_tabs-theme.scss +4 -5
- package/tabs/tab-body.scss +49 -1
- package/tabs/tab-header.scss +2 -1
- package/tags/tag-list.scss +4 -0
- package/tags/tag.scss +19 -1
- package/time-range/time-range.scss +9 -0
- package/timezone/timezone-option.component.scss +4 -7
- package/timezone/timezone-select.component.scss +3 -0
- package/toast/_toast-theme.scss +1 -4
- package/toast/toast-container.component.scss +19 -13
- package/toast/toast-tokens.scss +12 -6
- package/toast/toast.component.scss +42 -19
- package/toggle/_toggle-theme.scss +4 -10
- package/toggle/toggle.scss +67 -26
- package/tooltip/_tooltip-theme.scss +7 -1
- package/tooltip/tooltip-tokens.scss +1 -2
- package/tooltip/tooltip.scss +55 -9
- package/top-bar/top-bar-tokens.scss +13 -2
- package/top-bar/top-bar.scss +24 -19
- package/tree/_tree-theme.scss +0 -1
- package/tree/toggle.scss +5 -9
- package/tree/tree-option.scss +2 -4
- package/tree/tree-tokens.scss +2 -1
- package/tree/tree.scss +3 -5
- package/tree-select/_tree-select-theme.scss +4 -15
- package/tree-select/tree-select-tokens.scss +16 -0
- package/tree-select/tree-select.scss +0 -6
- package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
- package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
- package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
- package/types/koobiq-components-app-switcher.d.ts +406 -0
- package/types/koobiq-components-autocomplete.d.ts +443 -0
- package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
- package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
- package/types/koobiq-components-button-toggle.d.ts +340 -0
- package/types/koobiq-components-button.d.ts +296 -0
- package/types/koobiq-components-checkbox.d.ts +172 -0
- package/types/koobiq-components-clamped-text.d.ts +184 -0
- package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +150 -88
- package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
- package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
- package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
- package/types/koobiq-components-divider.d.ts +43 -0
- package/types/koobiq-components-dl.d.ts +235 -0
- package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
- package/types/koobiq-components-ellipsis-center.d.ts +85 -0
- package/types/koobiq-components-empty-state.d.ts +106 -0
- package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
- package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
- package/types/koobiq-components-flag.d.ts +68 -0
- package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
- package/types/koobiq-components-icon.d.ts +333 -0
- package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
- package/types/koobiq-components-input.d.ts +477 -0
- package/types/koobiq-components-link-deprecated.d.ts +101 -0
- package/types/koobiq-components-link.d.ts +176 -0
- package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
- package/types/koobiq-components-loader-overlay.d.ts +101 -0
- package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
- package/types/koobiq-components-modal.d.ts +666 -0
- package/types/koobiq-components-navbar.d.ts +569 -0
- package/types/koobiq-components-notification-center.d.ts +500 -0
- package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
- package/types/koobiq-components-popover.d.ts +468 -0
- package/types/koobiq-components-progress-bar.d.ts +67 -0
- package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
- package/types/koobiq-components-radio.d.ts +294 -0
- package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
- package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
- package/types/koobiq-components-scrollbar.d.ts +154 -0
- package/types/koobiq-components-search-expandable.d.ts +164 -0
- package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
- package/types/koobiq-components-sidebar.d.ts +152 -0
- package/types/koobiq-components-sidepanel.d.ts +436 -0
- package/types/koobiq-components-skeleton.d.ts +234 -0
- package/types/koobiq-components-split-button.d.ts +65 -0
- package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
- package/types/koobiq-components-splitter.d.ts +406 -0
- package/types/koobiq-components-table.d.ts +44 -0
- package/types/koobiq-components-tabs.d.ts +888 -0
- package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
- package/types/koobiq-components-textarea.d.ts +178 -0
- package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
- package/types/koobiq-components-timepicker.d.ts +223 -0
- package/types/koobiq-components-timezone.d.ts +266 -0
- package/types/koobiq-components-title.d.ts +184 -0
- package/types/koobiq-components-toast.d.ts +289 -0
- package/types/koobiq-components-toggle.d.ts +121 -0
- package/types/koobiq-components-tooltip.d.ts +610 -0
- package/types/koobiq-components-top-bar.d.ts +61 -0
- package/types/koobiq-components-tree-select.d.ts +670 -0
- package/types/koobiq-components-tree.d.ts +1339 -0
- package/types/koobiq-components-username.d.ts +340 -0
- package/username/_username-theme.scss +35 -0
- package/username/username.scss +10 -34
- package/app-switcher/index.d.ts +0 -276
- package/autocomplete/index.d.ts +0 -286
- package/button/index.d.ts +0 -153
- package/button-toggle/index.d.ts +0 -162
- package/checkbox/index.d.ts +0 -163
- package/clamped-text/index.d.ts +0 -146
- package/core/styles/_tokens.scss +0 -7
- package/core/styles/common/_clearfix.scss +0 -13
- package/core/styles/common/_popup.scss +0 -6
- package/core/styles/functions/_index.scss +0 -3
- package/core/styles/functions/_number.scss +0 -60
- package/core/styles/functions/_string.scss +0 -18
- package/core/styles/theming/scrollbar-tokens.scss +0 -25
- package/core/styles/typography/_typography-utils.scss +0 -84
- package/divider/index.d.ts +0 -20
- package/dl/index.d.ts +0 -45
- package/ellipsis-center/index.d.ts +0 -71
- package/empty-state/index.d.ts +0 -45
- package/flag/index.d.ts +0 -44
- package/icon/index.d.ts +0 -200
- package/input/index.d.ts +0 -354
- package/link/index.d.ts +0 -56
- package/loader-overlay/index.d.ts +0 -57
- package/modal/index.d.ts +0 -339
- package/navbar/index.d.ts +0 -372
- package/notification-center/index.d.ts +0 -323
- package/popover/index.d.ts +0 -182
- package/prebuilt-themes/dark-theme.css +0 -1
- package/prebuilt-themes/light-theme.css +0 -1
- package/progress-bar/index.d.ts +0 -31
- package/radio/index.d.ts +0 -203
- package/schematics/migrations/alert-signals/index.js +0 -353
- package/schematics/migrations/filter-bar-signals/index.js +0 -319
- package/schematics/migrations/v20-upgrade/index.js +0 -225
- package/schematics/ng-add/index.js +0 -39
- package/search-expandable/index.d.ts +0 -101
- package/sidebar/index.d.ts +0 -94
- package/sidepanel/index.d.ts +0 -272
- package/skeleton/index.d.ts +0 -26
- package/split-button/index.d.ts +0 -46
- package/table/index.d.ts +0 -25
- package/tabs/index.d.ts +0 -677
- package/textarea/index.d.ts +0 -138
- package/timepicker/index.d.ts +0 -197
- package/timezone/index.d.ts +0 -125
- package/title/index.d.ts +0 -139
- package/toast/index.d.ts +0 -178
- package/toggle/index.d.ts +0 -104
- package/tooltip/index.d.ts +0 -335
- package/top-bar/index.d.ts +0 -33
- package/tree/index.d.ts +0 -802
- package/tree-select/index.d.ts +0 -475
- package/username/index.d.ts +0 -194
- /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
- /package/schematics/utils/{ast.js → ast.cjs} +0 -0
- /package/schematics/utils/{messages.js → messages.cjs} +0 -0
- /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
- /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
|
@@ -11,31 +11,31 @@ This schematic provides migration for new icons naming attribute. It includes:
|
|
|
11
11
|
Apply for project and log file path and icon name should be replaced
|
|
12
12
|
|
|
13
13
|
```shell
|
|
14
|
-
ng g @koobiq/components:icons-replacement --project <your project>
|
|
14
|
+
ng g @koobiq/components:icons-replacement --project "<your project>"
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
- with custom icon replacement mapping:
|
|
18
18
|
|
|
19
19
|
```shell
|
|
20
|
-
ng g @koobiq/components:icons-replacement --project <your project> --replacement-data-path <path-as-json>
|
|
20
|
+
ng g @koobiq/components:icons-replacement --project "<your project>" --replacement-data-path "<path-as-json>"
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Apply for project and replace icon name.
|
|
24
24
|
|
|
25
25
|
```shell
|
|
26
|
-
ng g @koobiq/components:icons-replacement --project <your project>
|
|
26
|
+
ng g @koobiq/components:icons-replacement --project "<your project>" --fix=true
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
#### Usage for Nx:
|
|
30
30
|
|
|
31
31
|
```shell
|
|
32
|
-
nx g @koobiq/components:icons-replacement --project <your project>
|
|
32
|
+
nx g @koobiq/components:icons-replacement --project "<your project>"
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
- with custom icon replacement mapping:
|
|
36
36
|
|
|
37
37
|
```shell
|
|
38
|
-
nx g @koobiq/components:icons-replacement --project <your project> --replacement-data-path <path-as-json>
|
|
38
|
+
nx g @koobiq/components:icons-replacement --project "<your project>" --replacement-data-path "<path-as-json>"
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
### Run locally
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var path = require('path');
|
|
6
|
-
var utils_messages = require('../../utils/messages.
|
|
7
|
-
var utils_packageConfig = require('../../utils/package-config.
|
|
8
|
-
var migrations_iconsReplacement_data = require('./data.
|
|
6
|
+
var utils_messages = require('../../utils/messages.cjs');
|
|
7
|
+
var utils_packageConfig = require('../../utils/package-config.cjs');
|
|
8
|
+
var migrations_iconsReplacement_data = require('./data.cjs');
|
|
9
9
|
require('@angular-devkit/schematics');
|
|
10
10
|
require('@schematics/angular/utility');
|
|
11
|
+
require('../../utils/project-files.cjs');
|
|
11
12
|
|
|
12
13
|
const replaceIcons = (contentToBeUpdated, replacementData) => {
|
|
13
14
|
let res = contentToBeUpdated;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# inline-edit-a11y-and-types
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@20`
|
|
4
|
+
(registered for `21.0.0-0`). Reports what the inline-edit review broke, and rewrites the one change
|
|
5
|
+
that has a single mechanical translation: `modeAsReadonly` → `mode`.
|
|
6
|
+
|
|
7
|
+
## Background
|
|
8
|
+
|
|
9
|
+
The edit overlay used to render two `<div class="cdk-visually-hidden" aria-hidden="true" tabindex="0">`
|
|
10
|
+
sentinels around its panel to detect a Tab out of the editor. That is an axe `aria-hidden-focus`
|
|
11
|
+
failure and two live tab stops that announce nothing, so the sentinels — and the
|
|
12
|
+
`KbqFocusRegionItem` directive behind them — are gone; the boundary is resolved against the panel's
|
|
13
|
+
own first and last tabbable control.
|
|
14
|
+
|
|
15
|
+
The widget semantics moved with them. The host carried a `tabindex` and no ARIA at all, so a
|
|
16
|
+
`<kbq-inline-edit>` was an unknown element that happened to be focusable. `role="button"`,
|
|
17
|
+
`aria-expanded`, `aria-disabled` and the accessible name now live on
|
|
18
|
+
`.kbq-inline-edit__view-content`, and on `.kbq-inline-edit__focus-anchor` while the view content is
|
|
19
|
+
interactive — putting them on the host would nest the `kbqInlineEditMenu` button inside a widget role.
|
|
20
|
+
|
|
21
|
+
`mode` moved in the same pass. It was a `protected signal()` fronted by a public `modeAsReadonly`
|
|
22
|
+
`computed()`, with an explicit `modeChange` output fed by a hand-written `toObservable` subscription.
|
|
23
|
+
All three are one `model()` now, which generates an output of the same name and the same type — so
|
|
24
|
+
`(modeChange)` bindings are untouched — and makes the mode writable: `[(mode)]` opens and closes the
|
|
25
|
+
editor programmatically. The alias had no purpose left and was removed.
|
|
26
|
+
|
|
27
|
+
| Member | Before | After |
|
|
28
|
+
| ---------------------------- | ---------------------------- | ----------------------------------- |
|
|
29
|
+
| `KbqFocusRegionItem` | exported directive | removed |
|
|
30
|
+
| `mode` | `protected WritableSignal` | public `ModelSignal` |
|
|
31
|
+
| `modeAsReadonly` | public `Signal` | removed — use `mode` |
|
|
32
|
+
| `modeChange` | explicit `output()` | generated by the `mode` model |
|
|
33
|
+
| `setValueHandler` | `(value: any) => void` | `(value: unknown) => void` |
|
|
34
|
+
| `validationTooltip` | `string \| TemplateRef<any>` | `string \| TemplateRef<unknown>` |
|
|
35
|
+
| `saved`, `canceled` | `protected` | public |
|
|
36
|
+
| `KbqA11yLocaleConfiguration` | 15 keys | plus the required `edit` |
|
|
37
|
+
| host `tabindex` / `role` | on `<kbq-inline-edit>` | on `.kbq-inline-edit__view-content` |
|
|
38
|
+
|
|
39
|
+
## What it rewrites
|
|
40
|
+
|
|
41
|
+
`.modeAsReadonly` → `.mode`, in `.ts` and `.html`, in files that name the inline edit. The alias was a
|
|
42
|
+
`computed()` wrapper over the mode signal, so the read translates unchanged. Matched as a property
|
|
43
|
+
access: a bare identifier of the same name belongs to the host. Pass `--fix=false` to see what would
|
|
44
|
+
change without writing.
|
|
45
|
+
|
|
46
|
+
An index read (`edit['modeAsReadonly']`) or a destructuring is reported instead of rewritten.
|
|
47
|
+
|
|
48
|
+
## What it does _not_ do
|
|
49
|
+
|
|
50
|
+
Nothing else is rewritten. A removed export has no replacement expression, a narrowed handler parameter
|
|
51
|
+
needs a cast only the host can choose, and a selector that matched the host by `tabindex` or `:focus`
|
|
52
|
+
is a decision about which element it actually meant.
|
|
53
|
+
|
|
54
|
+
| Pattern | Manual migration |
|
|
55
|
+
| ------------------------------------------- | -------------------------------------------------------------------------- |
|
|
56
|
+
| `kbqFocusRegionItem` / `KbqFocusRegionItem` | Drop it — the Tab boundary is detected on the panel |
|
|
57
|
+
| `[setValueHandler]` handler | Widen the parameter to `unknown` and narrow inside |
|
|
58
|
+
| `KbqA11yLocaleConfiguration` literal | Add the `edit` key, or switch to a partial override provider |
|
|
59
|
+
| `.kbq-inline-edit[tabindex]` / `:focus` | Target `.kbq-inline-edit__view-content` / `.kbq-inline-edit__focus-anchor` |
|
|
60
|
+
| `edit.modeChange.subscribe(...)` | `toObservable(edit.mode)` — the output is the model's, not a class member |
|
|
61
|
+
|
|
62
|
+
## Notes with no call site to point at
|
|
63
|
+
|
|
64
|
+
- The view mode is announced as a `button` with `aria-expanded`. Its name comes from the new `edit`
|
|
65
|
+
a11y locale key, or from an `aria-label` on the component — which is read as an input, so a
|
|
66
|
+
hand-rolled `aria-label` on the host is no longer just an attribute.
|
|
67
|
+
- `saved` and `canceled` are public, so a `viewChild(KbqInlineEdit)` can subscribe to them.
|
|
68
|
+
- `modeChange` now emits synchronously on the write, rather than one microtask later — the old
|
|
69
|
+
`toObservable(...).pipe(skip(1))` relay is gone. A test that awaited that gap can drop the wait.
|
|
70
|
+
- `save()` marks the projected controls touched itself and gates on the control's validity rather than
|
|
71
|
+
on the `ErrorStateMatcher` verdict. Typing no longer flips a pristine `required` field into its error
|
|
72
|
+
look, and `commit()` on a never-touched invalid control keeps the editor open instead of writing the
|
|
73
|
+
value through — a workaround directive that reset `touched` on the first input can be deleted.
|
|
74
|
+
- The panel shadow reads `--kbq-inline-edit-panel-shadow`, the token the panel used to declare and then
|
|
75
|
+
bypass, so setting it now changes the shadow. The private `.kbq-mask`, `.kbq-mask__fade` and
|
|
76
|
+
`.kbq-mask__container` classes were renamed to their `.kbq-inline-edit__menu-mask*` equivalents.
|
|
77
|
+
|
|
78
|
+
## Running it manually
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
ng generate @koobiq/components:inline-edit-a11y-and-types --project my-app
|
|
82
|
+
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `inline-edit-a11y-and-types` migration.
|
|
5
|
+
*
|
|
6
|
+
* The inline-edit review moved the widget semantics off the host and closed the surface that only
|
|
7
|
+
* existed to serve the overlay:
|
|
8
|
+
*
|
|
9
|
+
* - `KbqFocusRegionItem` — removed. It existed to give the edit overlay two `aria-hidden` tab stops,
|
|
10
|
+
* which is an `aria-hidden-focus` failure; the Tab boundary is detected on the panel now.
|
|
11
|
+
* - `setValueHandler` — `(value: any) => void` → `(value: unknown) => void`, and `validationTooltip`
|
|
12
|
+
* accepts `TemplateRef<unknown>` instead of `TemplateRef<any>`.
|
|
13
|
+
* - `KbqA11yLocaleConfiguration` — gained a required `edit` key, the accessible name of the control
|
|
14
|
+
* that opens the editor.
|
|
15
|
+
* - The host is no longer the tab stop: `role`, `tabindex` and the ARIA state live on
|
|
16
|
+
* `.kbq-inline-edit__view-content` (or on `.kbq-inline-edit__focus-anchor` when the view content is
|
|
17
|
+
* interactive).
|
|
18
|
+
* - `mode` — a `model()` now, so it is public, writable and two-way bindable. The `modeAsReadonly`
|
|
19
|
+
* alias that existed only to expose the hidden `protected mode` is gone, and the explicit
|
|
20
|
+
* `modeChange` output is generated by the model under the same name.
|
|
21
|
+
*
|
|
22
|
+
* Everything is warn-only except the `modeAsReadonly` → `mode` rename: a removed export has no
|
|
23
|
+
* replacement expression, a narrowed handler parameter needs a cast the component cannot choose, and a
|
|
24
|
+
* selector that targeted the host is a decision about which element the host actually meant. The rename
|
|
25
|
+
* is the one change with a single mechanical translation.
|
|
26
|
+
*/
|
|
27
|
+
/** Import specifier that marks a file as an inline-edit consumer. */
|
|
28
|
+
const INLINE_EDIT_PACKAGE = '@koobiq/components/inline-edit';
|
|
29
|
+
/** Identifier and attribute shapes that mark a consumer without an import. */
|
|
30
|
+
const INLINE_EDIT_TYPE = '\\bKbqInlineEdit\\w*\\b|\\bkbqInlineEdit\\w*\\b|\\bkbq-inline-edit\\b';
|
|
31
|
+
/** Anchor for the locale change, which reaches hosts that never name the inline edit. */
|
|
32
|
+
const A11Y_LOCALE_TYPE = '\\bKbqA11yLocaleConfiguration\\b|\\bkbqA11yLocaleConfigurationProvider\\s*\\(';
|
|
33
|
+
/**
|
|
34
|
+
* The one auto-fix: `modeAsReadonly` was a `computed()` wrapper whose only job was to expose the
|
|
35
|
+
* `protected mode` signal for reading, so a read of it translates to a read of `mode` unchanged.
|
|
36
|
+
* Matched as a property access — a bare identifier of the same name belongs to the host, not to us.
|
|
37
|
+
*/
|
|
38
|
+
const MODE_AS_READONLY_ACCESS = /\.modeAsReadonly\b/g;
|
|
39
|
+
/** What {@link MODE_AS_READONLY_ACCESS} is replaced with. */
|
|
40
|
+
const MODE_AS_READONLY_REPLACEMENT = '.mode';
|
|
41
|
+
/** Cheap pre-check so a file without the member is never scanned. */
|
|
42
|
+
const MODE_AS_READONLY_MEMBER = 'modeAsReadonly';
|
|
43
|
+
const warnPatterns = [
|
|
44
|
+
{
|
|
45
|
+
anchor: `${INLINE_EDIT_TYPE}|KbqFocusRegionItem`,
|
|
46
|
+
pattern: '\\bKbqFocusRegionItem\\b|\\bkbqFocusRegionItem\\b',
|
|
47
|
+
message: 'KbqFocusRegionItem was removed. It marked the two `aria-hidden="true" tabindex="0"` sentinels ' +
|
|
48
|
+
'the edit overlay rendered around its panel — an axe `aria-hidden-focus` failure and two dead-end ' +
|
|
49
|
+
'tab stops. The Tab boundary is resolved on the panel itself now, so the directive has no ' +
|
|
50
|
+
'replacement: drop the import and the attribute.'
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
anchor: INLINE_EDIT_TYPE,
|
|
54
|
+
pattern: '\\bsetValueHandler\\b',
|
|
55
|
+
message: 'KbqInlineEdit.setValueHandler takes `(value: unknown) => void` instead of `(value: any) => void`. ' +
|
|
56
|
+
'A handler typed against the concrete value no longer assigns — widen the parameter to `unknown` ' +
|
|
57
|
+
'and narrow inside, which is what the component always handed over.'
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
anchor: A11Y_LOCALE_TYPE,
|
|
61
|
+
pattern: A11Y_LOCALE_TYPE,
|
|
62
|
+
message: 'KbqA11yLocaleConfiguration gained a required `edit` key — the accessible name of the control ' +
|
|
63
|
+
'that opens an inline edit. A complete configuration object has to supply it; a partial override ' +
|
|
64
|
+
'through kbqA11yLocaleConfigurationProvider() does not.'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
anchor: INLINE_EDIT_TYPE,
|
|
68
|
+
pattern: '\\[\\s*[\'"`]modeAsReadonly[\'"`]\\s*\\]|\\{[^{}]*\\bmodeAsReadonly\\b[^{}]*\\}\\s*=',
|
|
69
|
+
message: 'KbqInlineEdit.modeAsReadonly is `mode` now, but this read is not a property access — an index ' +
|
|
70
|
+
'signature or a destructuring — so it was left untouched. Rewrite it as `mode` by hand.'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
anchor: INLINE_EDIT_TYPE,
|
|
74
|
+
pattern: '\\.modeChange\\s*\\.\\s*(?:subscribe|pipe|emit)\\s*\\(',
|
|
75
|
+
message: '`mode` is a model() now, so `modeChange` is the output it generates rather than a member of the ' +
|
|
76
|
+
'class. The `(modeChange)` template binding is unaffected; a programmatic subscription has to go ' +
|
|
77
|
+
'through the signal instead — `toObservable(inlineEdit.mode)` from @angular/core/rxjs-interop.'
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
anchor: INLINE_EDIT_TYPE,
|
|
81
|
+
pattern: '\\.kbq-inline-edit\\b[^\\n]*(?:\\[tabindex|:focus)|kbq-inline-edit[^\\n]*\\[tabindex',
|
|
82
|
+
message: 'The inline edit is no longer the tab stop: `role`, `tabindex` and the ARIA state moved to ' +
|
|
83
|
+
'.kbq-inline-edit__view-content, and to .kbq-inline-edit__focus-anchor while the view content is ' +
|
|
84
|
+
'interactive. A selector matching the host by tabindex or focus has to target those instead — the ' +
|
|
85
|
+
'focus ring itself still lands on the host through `cdk-keyboard-focused`.'
|
|
86
|
+
}
|
|
87
|
+
];
|
|
88
|
+
/** Printed once per project, after the per-file reports. */
|
|
89
|
+
const SUMMARY = [
|
|
90
|
+
' The view mode is announced as a `button` with `aria-expanded`, named by the new `edit` a11y locale ' +
|
|
91
|
+
'key or by an `aria-label` on the component. Hand-rolled role or aria-* attributes on ' +
|
|
92
|
+
'<kbq-inline-edit> are duplicates now, and `aria-label` is read as an input.',
|
|
93
|
+
' `mode` is a model() — public, writable and two-way bindable, so `[(mode)]` opens and closes the ' +
|
|
94
|
+
'editor programmatically. `modeAsReadonly` existed only to expose the hidden signal for reading and ' +
|
|
95
|
+
'was removed; its call sites are rewritten to `mode`.',
|
|
96
|
+
' The `modeChange` output is generated by the model under the same name and carries the same value, so ' +
|
|
97
|
+
'`(modeChange)` bindings keep working. It emits synchronously on the write now, rather than one ' +
|
|
98
|
+
'microtask later — a test that awaited the old gap can drop the wait.',
|
|
99
|
+
' `saved` and `canceled` are public, so a viewChild(KbqInlineEdit) can subscribe to them. Template ' +
|
|
100
|
+
'bindings are unaffected.',
|
|
101
|
+
' save() marks the projected controls touched itself and gates on the control validity rather than on ' +
|
|
102
|
+
'the ErrorStateMatcher verdict. Typing no longer flips a pristine required field into its error look, ' +
|
|
103
|
+
'and commit() on a never-touched invalid control now keeps the editor open instead of writing the ' +
|
|
104
|
+
'value through — a workaround directive that reset `touched` on first input can be deleted.',
|
|
105
|
+
' The panel shadow reads --kbq-inline-edit-panel-shadow, which the panel used to declare and then ' +
|
|
106
|
+
'bypass, and the private .kbq-mask / .kbq-mask__fade / .kbq-mask__container classes were renamed to ' +
|
|
107
|
+
'their .kbq-inline-edit__menu-mask* equivalents.'
|
|
108
|
+
];
|
|
109
|
+
|
|
110
|
+
exports.A11Y_LOCALE_TYPE = A11Y_LOCALE_TYPE;
|
|
111
|
+
exports.INLINE_EDIT_PACKAGE = INLINE_EDIT_PACKAGE;
|
|
112
|
+
exports.INLINE_EDIT_TYPE = INLINE_EDIT_TYPE;
|
|
113
|
+
exports.MODE_AS_READONLY_ACCESS = MODE_AS_READONLY_ACCESS;
|
|
114
|
+
exports.MODE_AS_READONLY_MEMBER = MODE_AS_READONLY_MEMBER;
|
|
115
|
+
exports.MODE_AS_READONLY_REPLACEMENT = MODE_AS_READONLY_REPLACEMENT;
|
|
116
|
+
exports.SUMMARY = SUMMARY;
|
|
117
|
+
exports.warnPatterns = warnPatterns;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var utils_messages = require('../../utils/messages.cjs');
|
|
6
|
+
var utils_packageConfig = require('../../utils/package-config.cjs');
|
|
7
|
+
var utils_projectFiles = require('../../utils/project-files.cjs');
|
|
8
|
+
var migrations_inlineEditA11yAndTypes_data = require('./data.cjs');
|
|
9
|
+
require('@angular-devkit/schematics');
|
|
10
|
+
require('@schematics/angular/utility');
|
|
11
|
+
|
|
12
|
+
const LABEL = '[inline-edit-a11y-and-types]';
|
|
13
|
+
const EXTENSIONS = ['.ts', '.html', '.scss', '.css'];
|
|
14
|
+
/** The rename lives in code and markup only; the `.scss`/`.css` pass stays report-only. */
|
|
15
|
+
const FIXABLE_EXTENSIONS = ['.ts', '.html'];
|
|
16
|
+
// Compiled once: the scope test runs against every file of the project, and the warn patterns against
|
|
17
|
+
// every file that passes it. None carries the `g` flag, so a shared instance holds no `lastIndex`.
|
|
18
|
+
const inlineEditType = new RegExp(migrations_inlineEditA11yAndTypes_data.INLINE_EDIT_TYPE);
|
|
19
|
+
const a11yLocaleType = new RegExp(migrations_inlineEditA11yAndTypes_data.A11Y_LOCALE_TYPE);
|
|
20
|
+
const compiledWarnPatterns = migrations_inlineEditA11yAndTypes_data.warnPatterns.map(({ anchor, pattern, message }) => ({
|
|
21
|
+
anchor: new RegExp(anchor),
|
|
22
|
+
pattern: new RegExp(pattern),
|
|
23
|
+
message
|
|
24
|
+
}));
|
|
25
|
+
/** A file is in scope if it names the inline edit, or if it configures the a11y locale section. */
|
|
26
|
+
function referencesSubject(content) {
|
|
27
|
+
return content.includes(migrations_inlineEditA11yAndTypes_data.INLINE_EDIT_PACKAGE) || inlineEditType.test(content) || a11yLocaleType.test(content);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Rewrites `modeAsReadonly` reads to `mode`, and reports the rest of what the inline-edit review broke:
|
|
31
|
+
* the removed `KbqFocusRegionItem`, the handler and tooltip types narrowed from `any` to `unknown`, the
|
|
32
|
+
* new required `edit` key of `KbqA11yLocaleConfiguration`, and the tab stop that moved off the host onto
|
|
33
|
+
* the view content.
|
|
34
|
+
*
|
|
35
|
+
* The rename is the only write. `modeAsReadonly` was a `computed()` wrapper over the mode signal, so a
|
|
36
|
+
* read of it translates to a read of `mode` unchanged — every other change is reported instead: a removed
|
|
37
|
+
* export has no replacement expression, a narrowed parameter needs a cast only the host can choose, and a
|
|
38
|
+
* selector that matched the host is a decision about which element it meant. `.scss`/`.css` are visited
|
|
39
|
+
* as well, because the tab stop moved in the DOM rather than in the API.
|
|
40
|
+
*/
|
|
41
|
+
function inlineEditA11yAndTypes(options) {
|
|
42
|
+
return async (tree, context) => {
|
|
43
|
+
const { project } = options;
|
|
44
|
+
// `ng update` invokes migrations with no options at all, so the schema default never reaches us —
|
|
45
|
+
// applying the fix is the intended behaviour there.
|
|
46
|
+
const fix = options.fix ?? true;
|
|
47
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
48
|
+
const root = projectDefinition?.root ?? '';
|
|
49
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
50
|
+
let consumers = 0;
|
|
51
|
+
let reported = 0;
|
|
52
|
+
/** Collected during the walk and applied after it, so the tree is not mutated while iterating. */
|
|
53
|
+
const renames = [];
|
|
54
|
+
utils_projectFiles.visitProjectFiles(rootDir, (filePath, entry) => {
|
|
55
|
+
if (!EXTENSIONS.some((extension) => filePath.endsWith(extension)))
|
|
56
|
+
return;
|
|
57
|
+
const originalContent = entry?.content.toString();
|
|
58
|
+
if (!originalContent || !referencesSubject(originalContent))
|
|
59
|
+
return;
|
|
60
|
+
consumers++;
|
|
61
|
+
let content = originalContent;
|
|
62
|
+
if (FIXABLE_EXTENSIONS.some((extension) => filePath.endsWith(extension)) &&
|
|
63
|
+
originalContent.includes(migrations_inlineEditA11yAndTypes_data.MODE_AS_READONLY_MEMBER)) {
|
|
64
|
+
content = originalContent.replace(migrations_inlineEditA11yAndTypes_data.MODE_AS_READONLY_ACCESS, migrations_inlineEditA11yAndTypes_data.MODE_AS_READONLY_REPLACEMENT);
|
|
65
|
+
if (content !== originalContent)
|
|
66
|
+
renames.push({ filePath, content });
|
|
67
|
+
}
|
|
68
|
+
// Warn against the fixed content, so a rewritten call site does not also produce a
|
|
69
|
+
// "migrate by hand" note. In dry-run nothing is written, so report against the original.
|
|
70
|
+
const reportedContent = fix ? content : originalContent;
|
|
71
|
+
for (const { anchor, pattern, message } of compiledWarnPatterns) {
|
|
72
|
+
if (!anchor.test(reportedContent) || !pattern.test(reportedContent))
|
|
73
|
+
continue;
|
|
74
|
+
reported++;
|
|
75
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
for (const { filePath, content } of renames) {
|
|
79
|
+
if (fix) {
|
|
80
|
+
tree.overwrite(filePath, content);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Nothing here renders an inline edit or touches the a11y locale, so the summary would only be noise.
|
|
87
|
+
if (consumers === 0)
|
|
88
|
+
return;
|
|
89
|
+
utils_messages.logMessage(context.logger, [
|
|
90
|
+
`${LABEL} processed kbq-inline-edit under "${root || '<workspace root>'}", ` +
|
|
91
|
+
`${consumers} file(s) reference the component, ${renames.length} file(s) ` +
|
|
92
|
+
`${fix ? 'updated' : 'would be updated'}, ${reported} call site(s) reported.`,
|
|
93
|
+
...migrations_inlineEditA11yAndTypes_data.SUMMARY
|
|
94
|
+
]);
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
exports.default = inlineEditA11yAndTypes;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-inline-edit-a11y-and-types",
|
|
4
|
+
"title": "Koobiq components inline-edit 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
|
+
"fix": {
|
|
15
|
+
"type": "boolean",
|
|
16
|
+
"default": true,
|
|
17
|
+
"description": "When true, applies the modeAsReadonly to mode rename. When false, prints what would change without writing."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# input-number-surface
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@20`
|
|
4
|
+
(registered for `21.0.0-0`). Rewrites reads of the four `KbqNumberInput` members that became signals,
|
|
5
|
+
and reports everything else: the members that disappeared with the `KbqFormFieldControl` surface the
|
|
6
|
+
directive declared and never populated, the validator directives that gained a `Kbq` prefix, and the
|
|
7
|
+
behaviors that changed without a call site to point at.
|
|
8
|
+
|
|
9
|
+
## `min`, `max`, `step` and `bigStep` are `input()` signals
|
|
10
|
+
|
|
11
|
+
A read becomes a call. The value is unchanged, so this part is auto-fixed:
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
// before
|
|
15
|
+
const span = numberInput.max - numberInput.min;
|
|
16
|
+
// after
|
|
17
|
+
const span = numberInput.max() - numberInput.min();
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The rewrite is scoped, not textual. `min`, `max` and `step` are among the most common property names
|
|
21
|
+
there are, so a bare `\.min\b` match would rewrite a plain object literal's bounds. Only two receivers
|
|
22
|
+
qualify:
|
|
23
|
+
|
|
24
|
+
- an identifier this file **annotates** as `KbqNumberInput` — a parameter, a field, a local, or a
|
|
25
|
+
`viewChild(KbqNumberInput)` initializer. There is no cross-package type resolution, so a receiver
|
|
26
|
+
whose type is only inferred is left alone.
|
|
27
|
+
- a template reference bound through the directive's `exportAs`: `#ref="kbqNumberInput"` or the
|
|
28
|
+
`kbqNumericalInput` alias. Both external and inline templates.
|
|
29
|
+
|
|
30
|
+
Template **bindings** are otherwise untouched — `[min]="lower"` and `min="3"` still work.
|
|
31
|
+
|
|
32
|
+
The one exception is `bigStep`, which had a second spelling: the legacy `big-step` attribute, read once
|
|
33
|
+
at construction and deaf to every later change. Keeping both would mean maintaining the same input
|
|
34
|
+
twice, so the kebab-case one is dropped and renamed here, scoped to the `<input>` tag that carries the
|
|
35
|
+
directive.
|
|
36
|
+
|
|
37
|
+
A programmatic **write** (`numberInput.min = 0`) is reported, not rewritten: an `input()` is read-only
|
|
38
|
+
and has no `.set()`, so the binding has to take over. The rewrite is idempotent — an already-migrated
|
|
39
|
+
`min()` is left alone, so running it twice is safe.
|
|
40
|
+
|
|
41
|
+
## `KbqInputPassword` mints its ids in its own namespace
|
|
42
|
+
|
|
43
|
+
It shared the `kbq-input-` counter with `KbqInput`, so any page holding both controls emitted two
|
|
44
|
+
elements with the same id, and the form field's `<label for>` resolved to whichever came first. A
|
|
45
|
+
password field now renders `id="kbq-input-password-7"` where it used to render `id="kbq-input-7"`.
|
|
46
|
+
|
|
47
|
+
Reported, not rewritten: a hand-written reference to a generated id is a symptom, and the fix is
|
|
48
|
+
usually to stop depending on the generated value rather than to renumber it.
|
|
49
|
+
|
|
50
|
+
## The unprefixed validator exports are gone
|
|
51
|
+
|
|
52
|
+
`MinValidator`, `MaxValidator`, `MIN_VALIDATOR` and `MAX_VALIDATOR` were deprecated aliases of the
|
|
53
|
+
`Kbq`-prefixed names. They are removed, and rewritten here — a pure rename has one mechanical
|
|
54
|
+
translation.
|
|
55
|
+
|
|
56
|
+
The rewrite is scoped to the names a file imports from `@koobiq/components/input`, because
|
|
57
|
+
`@angular/forms` exports `MinValidator` and `MaxValidator` under exactly those spellings — which is
|
|
58
|
+
why the koobiq ones were renamed in the first place. A file importing the framework's is left alone.
|
|
59
|
+
|
|
60
|
+
## `valueChange` and `disabledChange` are Subjects
|
|
61
|
+
|
|
62
|
+
Both were `EventEmitter`. Subscribing is unchanged; a call to `.emit()` becomes `.next()`. Reported
|
|
63
|
+
rather than rewritten: those two names are far too common to match blind.
|
|
64
|
+
|
|
65
|
+
## Background
|
|
66
|
+
|
|
67
|
+
`KbqNumberInput` declared `implements KbqFormFieldControl<any>` and then assigned none of it. The
|
|
68
|
+
private `control` field behind `ngControl` had no writer anywhere in the file, so `ngControl` was
|
|
69
|
+
permanently `undefined`, and `id`, `placeholder`, `empty`, `required` and `errorState` were declared
|
|
70
|
+
only to satisfy the interface. Nothing broke, because the `KbqFormFieldControl` provider lives on the
|
|
71
|
+
sibling `KbqInput` — which matches the same host and supplies the real implementation — but the
|
|
72
|
+
members were public, so a consumer reading `numberInputRef.errorState` got `undefined` with no type
|
|
73
|
+
error.
|
|
74
|
+
|
|
75
|
+
| Member | Before | After |
|
|
76
|
+
| ------------------------------------------------------------------- | -------------------------- | ------------------ |
|
|
77
|
+
| `ngControl`, `id`, `placeholder`, `empty`, `required`, `errorState` | public, always `undefined` | removed |
|
|
78
|
+
| `MinValidator`, `MaxValidator` | deprecated aliases | removed, rewritten |
|
|
79
|
+
| `MIN_VALIDATOR`, `MAX_VALIDATOR` | deprecated aliases | removed, rewritten |
|
|
80
|
+
|
|
81
|
+
The unprefixed validator names are the exact names `@angular/forms` exports, so importing both in one
|
|
82
|
+
file shadowed the framework's.
|
|
83
|
+
|
|
84
|
+
## Two behaviors that changed with no call site
|
|
85
|
+
|
|
86
|
+
`type="number"` on a `kbqNumberInput` is now reset to `type="text"` with a console warning. A native
|
|
87
|
+
number field runs the value sanitization algorithm on assignment and rejects everything the directive
|
|
88
|
+
renders once a group separator or a comma fraction separator is in it, so the field went blank while
|
|
89
|
+
the model still held the value; it also reports `selectionStart` as `null`, which disabled caret
|
|
90
|
+
preservation entirely.
|
|
91
|
+
|
|
92
|
+
`HTMLInputElement.prototype.valueAsNumber` is no longer redefined. The constructor used to call
|
|
93
|
+
`Object.defineProperty(Object.getPrototypeOf(this.nativeElement), 'valueAsNumber', …)` — that is the
|
|
94
|
+
prototype, not the element, so constructing one koobiq number input replaced the platform accessor for
|
|
95
|
+
every `<input>` in the application, permanently and with no teardown. A locale-aware numeric read is
|
|
96
|
+
now a member of the directive: `numberInput.valueAsNumber`.
|
|
97
|
+
|
|
98
|
+
## What it does _not_ rewrite
|
|
99
|
+
|
|
100
|
+
A member that was always `undefined` has no replacement expression, and the validator rename is safe to
|
|
101
|
+
leave in place until the deprecated aliases are dropped.
|
|
102
|
+
|
|
103
|
+
| Pattern | Manual migration |
|
|
104
|
+
| ---------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
105
|
+
| `numberInput.errorState` / `.ngControl` / `.empty` / `.required` | Read them off the sibling `KbqInput` or off the `<kbq-form-field>` |
|
|
106
|
+
| `numberInput.min = 0` | Bind `[min]="0"` — an `input()` has no `.set()` |
|
|
107
|
+
| `numberInput.valueChange.emit(v)` | `numberInput.valueChange.next(v)` |
|
|
108
|
+
| `<input kbqNumberInput type="number">` | Drop the attribute |
|
|
109
|
+
| `inputElement.valueAsNumber` | `numberInput.valueAsNumber`, or read the form control |
|
|
110
|
+
| `#kbq-input-7` on a password field | Stop keying on a generated id, or use `kbq-input-password-7` |
|
|
111
|
+
|
|
112
|
+
A receiver whose `KbqNumberInput` type is inferred rather than written down is also out of reach, as
|
|
113
|
+
are the forms no structural match can see — an index read (`refs['input'].min`) and destructuring
|
|
114
|
+
(`const { min } = numberInput`). Nothing about those is reported, so check them by hand.
|
|
115
|
+
|
|
116
|
+
## Also in the release, with nothing to migrate
|
|
117
|
+
|
|
118
|
+
- The numeric inputs coerce their value, so a static attribute (`min="3"`) holds the number `3` rather
|
|
119
|
+
than the string `"3"`. The `ngAcceptInputType_*` declarations that used to carry that are gone: a
|
|
120
|
+
signal input types what it accepts through its transform's parameter.
|
|
121
|
+
- The validators no longer `parseInt` their bound value, so `[min]="0.5"` validates against `0.5`
|
|
122
|
+
instead of `0`, and a bound `[min]="0"` reaches the DOM instead of being dropped by a falsy check.
|
|
123
|
+
- Stepping runs in integer space against a decimal scale, so one arrow press on `1.005` with
|
|
124
|
+
`step="0.001"` renders `1,006` rather than `1,0059999999999998`.
|
|
125
|
+
- `KbqNumberInput` carries spinbutton semantics: `role`, `aria-valuenow`, `aria-valuetext`,
|
|
126
|
+
`aria-valuemin`, `aria-valuemax` and `inputmode`.
|
|
127
|
+
- `startFormattingFrom` is read from the input as well as from the locale, instead of being declared
|
|
128
|
+
and ignored.
|
|
129
|
+
|
|
130
|
+
## Usage
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
ng update @koobiq/components
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Or standalone:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
ng generate @koobiq/components:input-number-surface --project=my-app
|
|
140
|
+
```
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `input-number-surface` migration.
|
|
5
|
+
*
|
|
6
|
+
* The input review stripped the `KbqFormFieldControl` surface `KbqNumberInput` declared and never
|
|
7
|
+
* populated, and prefixed the two validator directives whose unprefixed names shadow the identically
|
|
8
|
+
* named exports of `@angular/forms`:
|
|
9
|
+
*
|
|
10
|
+
* - `KbqNumberInput` no longer `implements KbqFormFieldControl`. `ngControl`, `errorState`, `id`,
|
|
11
|
+
* `placeholder`, `empty` and `required` are gone; every one of them was `undefined` for the whole
|
|
12
|
+
* lifetime of the directive, because the backing `control` field was never assigned. The real
|
|
13
|
+
* implementation always lived on the sibling `KbqInput`, which is what the form field resolves.
|
|
14
|
+
* - `MinValidator` / `MaxValidator` / `MIN_VALIDATOR` / `MAX_VALIDATOR` → `KbqMinValidator` /
|
|
15
|
+
* `KbqMaxValidator` / `KBQ_MIN_VALIDATOR` / `KBQ_MAX_VALIDATOR`. The old names stay as deprecated
|
|
16
|
+
* aliases for one minor, so nothing breaks today.
|
|
17
|
+
*
|
|
18
|
+
* It then finished the signal migration: `min`, `max`, `step` and `bigStep` became `input()`, so a read
|
|
19
|
+
* has to become a call. That part *is* rewritten — scoped to a receiver whose type is provably
|
|
20
|
+
* `KbqNumberInput`, because `min`/`max`/`step` are far too common to match on the member name alone.
|
|
21
|
+
*
|
|
22
|
+
* The rest is warn-only. A removed member that was always `undefined` has no replacement expression,
|
|
23
|
+
* and the validator rename is safe to leave until the aliases are dropped.
|
|
24
|
+
*/
|
|
25
|
+
/** Import specifier that marks a file as an input consumer. */
|
|
26
|
+
const INPUT_PACKAGE = '@koobiq/components/input';
|
|
27
|
+
/** Identifier and attribute shapes that mark a consumer without an import. */
|
|
28
|
+
const INPUT_TYPE = '\\bKbqNumberInput\\b|\\bkbqNumberInput\\b';
|
|
29
|
+
/** The password directive, which owns the id-namespace change. Anchors its own warning. */
|
|
30
|
+
const PASSWORD_TYPE = '\\bKbqInputPassword\\b|\\bkbqInputPassword\\b';
|
|
31
|
+
/** TypeScript type annotation that marks a receiver as a number input. */
|
|
32
|
+
const NUMBER_INPUT_TYPE = 'KbqNumberInput';
|
|
33
|
+
/** `exportAs` names a template reference variable can bind the directive under. */
|
|
34
|
+
const NUMBER_INPUT_EXPORT_AS = ['kbqNumberInput', 'kbqNumericalInput'];
|
|
35
|
+
/**
|
|
36
|
+
* `KbqNumberInput` members that became `input()` signals. The value is unchanged — only the call
|
|
37
|
+
* syntax — so a read is rewritten to a call. Every one of these is read-only: a programmatic write
|
|
38
|
+
* has no `.set()` and is warned about instead.
|
|
39
|
+
*/
|
|
40
|
+
const SIGNAL_MEMBERS = ['min', 'max', 'step', 'bigStep'];
|
|
41
|
+
/**
|
|
42
|
+
* The `KbqFormFieldControl` member-access pattern, handled separately from {@link warnPatterns}: `KbqInput`
|
|
43
|
+
* — the sibling directive that also matches `input[kbqNumberInput]` — still exposes every one of these
|
|
44
|
+
* members, so a bare text match would also flag a file that correctly reads them off a `KbqInput`-typed
|
|
45
|
+
* reference. `index.ts` resolves the receiver of each match against the file's AST before reporting it.
|
|
46
|
+
*/
|
|
47
|
+
const FORM_FIELD_CONTROL_MEMBER_PATTERN = {
|
|
48
|
+
anchor: INPUT_TYPE,
|
|
49
|
+
pattern: '\\b([A-Za-z_$][\\w$]*)\\s*\\.\\s*(?:ngControl|errorState|placeholder|empty|required)\\b',
|
|
50
|
+
message: 'KbqNumberInput no longer implements KbqFormFieldControl: ngControl, errorState, id, placeholder, ' +
|
|
51
|
+
'empty and required were removed. None of them was ever assigned — the private `control` field ' +
|
|
52
|
+
'behind ngControl had no writer — so every read returned undefined. Read them off the sibling ' +
|
|
53
|
+
'KbqInput, which owns the KbqFormFieldControl provider on the same element, or off the form ' +
|
|
54
|
+
'field itself.'
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Removed exports and the prefixed names that replace them. A pure rename with one mechanical
|
|
58
|
+
* translation each, so these are rewritten rather than reported.
|
|
59
|
+
*
|
|
60
|
+
* The unprefixed names were the exact names `@angular/forms` exports, so importing both in one file
|
|
61
|
+
* shadowed the framework validator. They were deprecated aliases; this release drops them.
|
|
62
|
+
*
|
|
63
|
+
* Only rewritten in a file that imports `@koobiq/components/input` — without that anchor, a project
|
|
64
|
+
* importing `MinValidator` from `@angular/forms` would be rewritten to a koobiq name it never imported.
|
|
65
|
+
*/
|
|
66
|
+
const RENAMED_EXPORTS = [
|
|
67
|
+
['MinValidator', 'KbqMinValidator'],
|
|
68
|
+
['MaxValidator', 'KbqMaxValidator'],
|
|
69
|
+
['MIN_VALIDATOR', 'KBQ_MIN_VALIDATOR'],
|
|
70
|
+
['MAX_VALIDATOR', 'KBQ_MAX_VALIDATOR']
|
|
71
|
+
];
|
|
72
|
+
const warnPatterns = [
|
|
73
|
+
{
|
|
74
|
+
anchor: INPUT_TYPE,
|
|
75
|
+
// Both attribute orders, and only within the same `<input>` tag as `kbqNumberInput` — a bare
|
|
76
|
+
// `type\s*=\s*"number"` anywhere in the file also matches an unrelated native input.
|
|
77
|
+
pattern: '<input\\b[^>]*\\bkbqNumberInput\\b[^>]*\\btype\\s*=\\s*[\'"]number[\'"]|' +
|
|
78
|
+
'<input\\b[^>]*\\btype\\s*=\\s*[\'"]number[\'"][^>]*\\bkbqNumberInput\\b',
|
|
79
|
+
message: 'type="number" on a kbqNumberInput is reset to type="text" with a console warning. A native ' +
|
|
80
|
+
'number field runs the value sanitization algorithm on assignment and drops every value the ' +
|
|
81
|
+
'directive formats — anything with a fraction, and anything over 999 while withThousandSeparator ' +
|
|
82
|
+
'is on — so the field went blank while the model still held the value. Drop the attribute.'
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
anchor: INPUT_TYPE,
|
|
86
|
+
pattern: '\\b(?:valueChange|disabledChange)\\s*\\.\\s*emit\\b',
|
|
87
|
+
message: 'KbqNumberInput.valueChange and .disabledChange are RxJS Subjects rather than EventEmitters. ' +
|
|
88
|
+
'Subscribing is unchanged; a call to .emit() becomes .next(). These names are too common to ' +
|
|
89
|
+
'rewrite blind — check whether the receiver is the number input before renaming.'
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
// Anchored on the password directive, not on INPUT_TYPE: the ids belong to KbqInputPassword.
|
|
93
|
+
anchor: PASSWORD_TYPE,
|
|
94
|
+
// A hand-written reference to a generated id, in a selector, a test id or an aria-* attribute.
|
|
95
|
+
pattern: '[\'"#\\[]\\s*kbq-input-\\d|kbq-input-\\d+["\'\\]]|\\bkbq-input-\\d',
|
|
96
|
+
message: 'KbqInputPassword mints its ids in its own kbq-input-password- namespace now, so a password ' +
|
|
97
|
+
'field that used to render id="kbq-input-7" renders id="kbq-input-password-7". It shared the ' +
|
|
98
|
+
'kbq-input- counter with KbqInput before, which produced two elements with the same id on any ' +
|
|
99
|
+
"page holding both controls, and the form field's <label for> then resolved to the wrong one. " +
|
|
100
|
+
'Anything keyed on the generated id — a CSS selector, a test locator, a hand-written ' +
|
|
101
|
+
'aria-labelledby — has to be updated, or better, stop depending on a generated value.'
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
anchor: INPUT_TYPE,
|
|
105
|
+
pattern: '\\bvalueAsNumber\\b',
|
|
106
|
+
message: 'KbqNumberInput no longer redefines HTMLInputElement.prototype.valueAsNumber. The patch replaced ' +
|
|
107
|
+
'the platform accessor for every <input> in the application, returned null where the DOM ' +
|
|
108
|
+
'specification requires NaN, and read a date field as parseFloat of its date string. A ' +
|
|
109
|
+
'locale-aware numeric read is now a member of the directive: numberInput.valueAsNumber.'
|
|
110
|
+
}
|
|
111
|
+
];
|
|
112
|
+
/** Printed once per project, after the per-file reports. */
|
|
113
|
+
const SUMMARY = [
|
|
114
|
+
' min, max, step and bigStep are input() signals that coerce their value, so a static attribute ' +
|
|
115
|
+
'(min="3") holds the number 3 rather than the string "3". Reads on a KbqNumberInput-typed ' +
|
|
116
|
+
'receiver were rewritten to calls; template bindings ([min], big-step="2") are unchanged.',
|
|
117
|
+
' MinValidator/MaxValidator no longer parseInt their bound value, so a fractional [min]="0.5" ' +
|
|
118
|
+
'validates against 0.5 instead of 0, and a bound [min]="0" reaches the DOM instead of being ' +
|
|
119
|
+
'dropped by a falsy check.',
|
|
120
|
+
' Stepping is done in integer space against a decimal scale, so one arrow press on 1.005 with ' +
|
|
121
|
+
'step="0.001" renders 1,006 rather than 1,0059999999999998.',
|
|
122
|
+
' KbqNumberInput carries spinbutton semantics — role, aria-valuenow, aria-valuetext, aria-valuemin, ' +
|
|
123
|
+
'aria-valuemax and inputmode.'
|
|
124
|
+
];
|
|
125
|
+
|
|
126
|
+
exports.FORM_FIELD_CONTROL_MEMBER_PATTERN = FORM_FIELD_CONTROL_MEMBER_PATTERN;
|
|
127
|
+
exports.INPUT_PACKAGE = INPUT_PACKAGE;
|
|
128
|
+
exports.INPUT_TYPE = INPUT_TYPE;
|
|
129
|
+
exports.NUMBER_INPUT_EXPORT_AS = NUMBER_INPUT_EXPORT_AS;
|
|
130
|
+
exports.NUMBER_INPUT_TYPE = NUMBER_INPUT_TYPE;
|
|
131
|
+
exports.PASSWORD_TYPE = PASSWORD_TYPE;
|
|
132
|
+
exports.RENAMED_EXPORTS = RENAMED_EXPORTS;
|
|
133
|
+
exports.SIGNAL_MEMBERS = SIGNAL_MEMBERS;
|
|
134
|
+
exports.SUMMARY = SUMMARY;
|
|
135
|
+
exports.warnPatterns = warnPatterns;
|