@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,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-form-field-signals",
|
|
4
|
+
"title": "Koobiq components form field signals migration",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"project": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Name of the project to migrate. If omitted, the migration runs over the whole tree.",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "projectName"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"fix": {
|
|
15
|
+
"type": "boolean",
|
|
16
|
+
"default": true,
|
|
17
|
+
"description": "When true, applies all auto-fix replacements. When false, prints what would change without writing."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# icon-semantics-and-api
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@21`
|
|
4
|
+
(registered for `21.0.0-0`). Reports the icon call sites the review reaches. It never writes to the
|
|
5
|
+
tree.
|
|
6
|
+
|
|
7
|
+
## Background
|
|
8
|
+
|
|
9
|
+
The review gave the three components the semantics they never had, and closed the members that only
|
|
10
|
+
recorded an internal decision.
|
|
11
|
+
|
|
12
|
+
| Change | Before | After |
|
|
13
|
+
| ------------------------------------- | ------------------------- | -------------------------------------------------------- |
|
|
14
|
+
| `<i kbq-icon>`, `<i kbq-icon-item>` | in the accessibility tree | `aria-hidden="true"` by default |
|
|
15
|
+
| `kbq-icon-button` on a non-`<button>` | focusable, no semantics | `role="button"`, `aria-disabled`; no keyboard activation |
|
|
16
|
+
| `KbqIcon.small` | published input | removed |
|
|
17
|
+
| `KbqIcon.name` | `'KbqIcon'` string | `appliesMaxHeight` boolean |
|
|
18
|
+
| `KbqIconButton.tabindex` | `any` | `number \| null` |
|
|
19
|
+
| `iconName` | `string` | `string \| undefined` |
|
|
20
|
+
|
|
21
|
+
`aria-hidden` deserves a note. An icon carries no text, and in nearly every place the library and its
|
|
22
|
+
consumers use one it repeats a label that is already in the button, the link or the row beside it —
|
|
23
|
+
so hidden is the right default and the hand-written `aria-hidden="true"` attributes on icons became
|
|
24
|
+
redundant. An icon that is the only carrier of its meaning has to say so:
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<i kbq-icon="kbq-triangle-exclamation_16" role="img" aria-hidden="false" aria-label="Error"></i>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## What it does _not_ do
|
|
31
|
+
|
|
32
|
+
Nothing is rewritten. Whether an icon is decorative and what an icon button should be called are both
|
|
33
|
+
decisions the schematic cannot make. `small` on an icon button is rewritten to `size` by `v21-upgrade`,
|
|
34
|
+
which also reports the uses it leaves, so this migration does not report it.
|
|
35
|
+
|
|
36
|
+
| Pattern | Manual migration |
|
|
37
|
+
| -------------------------------------------------- | ------------------------------------------------------------------- |
|
|
38
|
+
| `small` on a `[kbq-icon]` or a `[kbq-icon-item]` | Drop it — nothing ever read it |
|
|
39
|
+
| `(click)` and no `(keydown…)` on a non-button host | Bind `(keydown.enter)` and `(keydown.space)`, or use a `<button>` |
|
|
40
|
+
| `tabindex` on an icon button, or written in code | Pass a number (a numeric string is still transformed in a template) |
|
|
41
|
+
| `override name` in a `KbqIcon` subclass | Override the protected `appliesMaxHeight` instead |
|
|
42
|
+
|
|
43
|
+
## Notes with no call site to point at
|
|
44
|
+
|
|
45
|
+
- The SVG resolution no longer stops on the first name that does not resolve — which the documented
|
|
46
|
+
font-icon default guarantees on the very first frame. A stale `<svg>` is removed on the fallback
|
|
47
|
+
path and the inline `max-height` is cleared as well as set, so an element whose `[kbq-icon]` changes
|
|
48
|
+
renders the icon it was asked for at the size it was asked for.
|
|
49
|
+
- `autoColor` takes effect when it is turned on after init and lets go of the error color when it is
|
|
50
|
+
turned off.
|
|
51
|
+
- The `--kbq-icon-*-color` tokens are no longer declared on `.kbq-icon`; they are consumed with their
|
|
52
|
+
design token as the `var()` fallback, so a container can re-theme the icons inside it. A declaration
|
|
53
|
+
on `.kbq-icon` sat on the element the value is used on and beat everything inherited. Reading one
|
|
54
|
+
back with `getComputedStyle` now returns an empty string.
|
|
55
|
+
- `KbqIconRegistry` looks sprite symbols up by id rather than through a `'#' + name` selector that a
|
|
56
|
+
name starting with a digit made invalid.
|
|
57
|
+
- `kbqIconsDictProvider` maps names to URLs. Its `<`-prefixed inline branch is passed through
|
|
58
|
+
Angular's HTML sanitizer, which drops `<svg>` wholesale; register inline icons through
|
|
59
|
+
`KbqIconRegistry.addSvgIconLiteral()` with `bypassSecurityTrustHtml` instead.
|
|
60
|
+
|
|
61
|
+
## Running it manually
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
ng g @koobiq/components:icon-semantics-and-api --project "<your project>"
|
|
65
|
+
```
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tagPatterns = require('../../tag-patterns-CNbEB0iT.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Data for the `icon-semantics-and-api` migration.
|
|
7
|
+
*
|
|
8
|
+
* The icon review gave the three components the semantics they never had and closed the members that
|
|
9
|
+
* only documented an internal decision:
|
|
10
|
+
*
|
|
11
|
+
* - `<i kbq-icon>` renders `aria-hidden="true"` by default. A meaningful icon opts out with
|
|
12
|
+
* `aria-hidden="false"` and then supplies its own `role="img"` and `aria-label`.
|
|
13
|
+
* - `kbq-icon-button` on anything but a native `<button>` gets `role="button"` and `aria-disabled`, and
|
|
14
|
+
* warns in dev mode when it has no accessible name. It does not activate itself from the keyboard.
|
|
15
|
+
* - `KbqIcon.small` is removed — it was published but read by nothing.
|
|
16
|
+
* - `KbqIcon.name`, the string that stood in for an `instanceof`, is replaced by the protected
|
|
17
|
+
* `appliesMaxHeight` flag.
|
|
18
|
+
* - `KbqIconButton.tabindex` is `number | null` instead of `any`, and `iconName` is `string | undefined`.
|
|
19
|
+
*
|
|
20
|
+
* Warn-only. Whether an icon is decorative and what an icon button should be called are both decisions
|
|
21
|
+
* the schematic cannot make. `small` on an icon button is `v21-upgrade`'s: it rewrites it to `size`.
|
|
22
|
+
*/
|
|
23
|
+
/** Import specifier that marks a file as an icon consumer. */
|
|
24
|
+
const ICON_PACKAGE = '@koobiq/components/icon';
|
|
25
|
+
/** Identifier and attribute shapes that mark a consumer without an import. */
|
|
26
|
+
const ICON_TYPE = String.raw `\bKbqIcon\w*\b|\bkbq-icon(?:-button|-item)?\b`;
|
|
27
|
+
const ICON_OR_ITEM_ATTRIBUTE = String.raw `[\s\[]kbq-icon(?:-item)?(?![\w-])`;
|
|
28
|
+
const ICON_BUTTON_ATTRIBUTE = String.raw `[\s\[]kbq-icon-button(?![\w-])`;
|
|
29
|
+
/** An opening tag that carries `attribute`, read up to the point the rest of the pattern continues from. */
|
|
30
|
+
const tagWith = (attribute) => String.raw `<[a-zA-Z][\w-]*(?=${tagPatterns.TAG_BODY}*${attribute})${tagPatterns.TAG_BODY}*`;
|
|
31
|
+
const warnPatterns = [
|
|
32
|
+
{
|
|
33
|
+
// A plain icon or an icon item only: `small` on an icon button is rewritten by `v21-upgrade`.
|
|
34
|
+
anchor: ICON_OR_ITEM_ATTRIBUTE,
|
|
35
|
+
pattern: String.raw `${tagWith(ICON_OR_ITEM_ATTRIBUTE)}[\s\[]small[\]\s=/>]`,
|
|
36
|
+
message: 'KbqIcon.small was removed, and with it the input KbqIconItem inherited. It was published but read ' +
|
|
37
|
+
'by nothing — not by the host block, not by icon.scss, not by _icon-theme.scss — so dropping the ' +
|
|
38
|
+
'binding from a [kbq-icon] or a [kbq-icon-item] changes nothing.'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
// A host the browser does not activate from the keyboard on its own: not a <button>, an <input> or an <a>.
|
|
42
|
+
anchor: ICON_BUTTON_ATTRIBUTE,
|
|
43
|
+
pattern: String.raw `<(?!(?:button|input|a)(?![\w-]))[a-zA-Z][\w-]*(?=${tagPatterns.TAG_BODY}*${ICON_BUTTON_ATTRIBUTE})` +
|
|
44
|
+
String.raw `(?=${tagPatterns.TAG_BODY}*\s\(click\))(?!${tagPatterns.TAG_BODY}*\s\(keydown)`,
|
|
45
|
+
message: 'kbq-icon-button on a host that is not a native <button> is announced as a button now — ' +
|
|
46
|
+
'role="button" and aria-disabled — but it does not activate itself from Enter or Space, and this ' +
|
|
47
|
+
'one handles (click) only. Bind (keydown.enter) and (keydown.space) to the same handler, calling ' +
|
|
48
|
+
'preventDefault() on Space so the page does not scroll, or put the icon button on a <button>.'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
anchor: ICON_BUTTON_ATTRIBUTE,
|
|
52
|
+
pattern: String.raw `${tagWith(ICON_BUTTON_ATTRIBUTE)}[\s\[]tabindex[\]\s=/>]`,
|
|
53
|
+
message: 'KbqIconButton.tabindex is number | null instead of any. A template binding still takes a number ' +
|
|
54
|
+
'or a numeric string, but a value that does not parse as a number renders no tabindex instead of ' +
|
|
55
|
+
'tabindex="NaN".'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
anchor: String.raw `\bKbqIconButton\b`,
|
|
59
|
+
pattern: String.raw `\.tabindex\s*=(?!=)`,
|
|
60
|
+
message: 'KbqIconButton.tabindex is number | null instead of any: code that writes anything else to it no ' +
|
|
61
|
+
'longer type-checks.'
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
anchor: String.raw `\bKbqIcon\w*\b`,
|
|
65
|
+
// Only the `override` form. `.name` is far too common a property — `file.name`, `error.name`,
|
|
66
|
+
// `control.name` — and the anchor is any KbqIcon identifier in the file, so matching a bare
|
|
67
|
+
// member access reported the marker for code that never had anything to do with it.
|
|
68
|
+
pattern: String.raw `\boverride\s+name\s*(?:=(?!=)|[:;])`,
|
|
69
|
+
message: 'KbqIcon.name — the protected string that stood in for an instanceof and decided whether the ' +
|
|
70
|
+
'inline max-height is written — is replaced by the protected `appliesMaxHeight` boolean, which ' +
|
|
71
|
+
'a subclass overrides. Nothing outside the hierarchy could read it.'
|
|
72
|
+
}
|
|
73
|
+
];
|
|
74
|
+
/** Printed once per project, after the per-file reports. */
|
|
75
|
+
const SUMMARY = [
|
|
76
|
+
' <i kbq-icon> and <i kbq-icon-item> are aria-hidden="true" by default. That is right where the icon ' +
|
|
77
|
+
'repeats a label that is already there; an icon that carries meaning on its own needs ' +
|
|
78
|
+
'aria-hidden="false" plus role="img" and an aria-label. kbq-icon-button is not hidden by default.',
|
|
79
|
+
' kbq-icon-button warns in dev mode when it has neither aria-label nor aria-labelledby: it renders ' +
|
|
80
|
+
'a glyph and has no accessible name at all without one (AXE button-name). On a host that is not a ' +
|
|
81
|
+
'native <button> it adds role="button" and aria-disabled, and leaves Enter and Space to the consumer.',
|
|
82
|
+
' The --kbq-icon-*-color tokens are no longer declared on .kbq-icon. They are consumed with their ' +
|
|
83
|
+
'design token as the var() fallback instead, so a container can finally re-theme the icons inside ' +
|
|
84
|
+
'it — a declaration on .kbq-icon sat on the element the value is used on and beat everything ' +
|
|
85
|
+
'inherited. Reading one back with getComputedStyle now returns an empty string.',
|
|
86
|
+
' The SVG resolution no longer dies on the first name that does not resolve, which the default ' +
|
|
87
|
+
'font-icon setup guarantees. A stale <svg> is removed on the fallback path and the inline ' +
|
|
88
|
+
'max-height is cleared as well as set, so an element whose [kbq-icon] changes renders the icon it ' +
|
|
89
|
+
'was asked for.',
|
|
90
|
+
' KbqIconRegistry looks sprite symbols up by id rather than through a "#" + name selector that a ' +
|
|
91
|
+
'name starting with a digit made invalid.'
|
|
92
|
+
];
|
|
93
|
+
|
|
94
|
+
exports.ICON_PACKAGE = ICON_PACKAGE;
|
|
95
|
+
exports.ICON_TYPE = ICON_TYPE;
|
|
96
|
+
exports.SUMMARY = SUMMARY;
|
|
97
|
+
exports.warnPatterns = warnPatterns;
|
|
@@ -0,0 +1,64 @@
|
|
|
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_iconSemanticsAndApi_data = require('./data.js');
|
|
8
|
+
require('@angular-devkit/schematics');
|
|
9
|
+
require('@schematics/angular/utility');
|
|
10
|
+
require('../../tag-patterns-CNbEB0iT.js');
|
|
11
|
+
|
|
12
|
+
const LABEL = '[icon-semantics-and-api]';
|
|
13
|
+
const EXTENSIONS = ['.ts', '.html'];
|
|
14
|
+
// Compiled once rather than per file. None carries the `g` flag, so a shared instance holds no `lastIndex`.
|
|
15
|
+
const ICON_TYPE_REGEX = new RegExp(migrations_iconSemanticsAndApi_data.ICON_TYPE);
|
|
16
|
+
const COMPILED_WARN_PATTERNS = migrations_iconSemanticsAndApi_data.warnPatterns.map(({ anchor, pattern, message }) => ({
|
|
17
|
+
anchor: new RegExp(anchor),
|
|
18
|
+
pattern: new RegExp(pattern),
|
|
19
|
+
message
|
|
20
|
+
}));
|
|
21
|
+
/** A file is an icon consumer if it imports the package, names a component, or renders one. */
|
|
22
|
+
function referencesIcon(content) {
|
|
23
|
+
return content.includes(migrations_iconSemanticsAndApi_data.ICON_PACKAGE) || ICON_TYPE_REGEX.test(content);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Reports the icon call sites the review reaches: the removed `KbqIcon.small`, the icon buttons on a host
|
|
27
|
+
* that is not a native `<button>` that handle a click but no key, the retyped `tabindex` and the replaced
|
|
28
|
+
* `name` marker. Never writes: whether an icon is decorative and what an icon button is called are both
|
|
29
|
+
* decisions.
|
|
30
|
+
*/
|
|
31
|
+
function iconSemanticsAndApi(options) {
|
|
32
|
+
return async (tree, context) => {
|
|
33
|
+
const { project } = options;
|
|
34
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
35
|
+
const root = projectDefinition?.root ?? '';
|
|
36
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
37
|
+
let consumers = 0;
|
|
38
|
+
let reported = 0;
|
|
39
|
+
utils_packageConfig.visitProjectFiles(rootDir, (filePath, entry) => {
|
|
40
|
+
if (!EXTENSIONS.some((extension) => filePath.endsWith(extension)))
|
|
41
|
+
return;
|
|
42
|
+
const content = entry.content.toString();
|
|
43
|
+
if (!content || !referencesIcon(content))
|
|
44
|
+
return;
|
|
45
|
+
consumers++;
|
|
46
|
+
for (const { anchor, pattern, message } of COMPILED_WARN_PATTERNS) {
|
|
47
|
+
if (!anchor.test(content) || !pattern.test(content))
|
|
48
|
+
continue;
|
|
49
|
+
reported++;
|
|
50
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
// Nothing here renders an icon, so the summary would only be noise.
|
|
54
|
+
if (consumers === 0)
|
|
55
|
+
return;
|
|
56
|
+
utils_messages.logMessage(context.logger, [
|
|
57
|
+
`${LABEL} processed icons under "${root || '<workspace root>'}", ` +
|
|
58
|
+
`${consumers} file(s) reference the component, ${reported} call site(s) reported.`,
|
|
59
|
+
...migrations_iconSemanticsAndApi_data.SUMMARY
|
|
60
|
+
]);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
exports.default = iconSemanticsAndApi;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-icon-semantics-and-api",
|
|
4
|
+
"title": "Koobiq components icon 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
|
+
}
|
|
@@ -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
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var path = require('path');
|
|
6
6
|
var utils_messages = require('../../utils/messages.js');
|
|
7
|
-
var utils_packageConfig = require('../../
|
|
7
|
+
var utils_packageConfig = require('../../package-config-BhU2TfC8.js');
|
|
8
8
|
var migrations_iconsReplacement_data = require('./data.js');
|
|
9
9
|
require('@angular-devkit/schematics');
|
|
10
10
|
require('@schematics/angular/utility');
|
|
@@ -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,97 @@
|
|
|
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_inlineEditA11yAndTypes_data = require('./data.js');
|
|
8
|
+
require('@angular-devkit/schematics');
|
|
9
|
+
require('@schematics/angular/utility');
|
|
10
|
+
|
|
11
|
+
const LABEL = '[inline-edit-a11y-and-types]';
|
|
12
|
+
const EXTENSIONS = ['.ts', '.html', '.scss', '.css'];
|
|
13
|
+
/** The rename lives in code and markup only; the `.scss`/`.css` pass stays report-only. */
|
|
14
|
+
const FIXABLE_EXTENSIONS = ['.ts', '.html'];
|
|
15
|
+
// Compiled once: the scope test runs against every file of the project, and the warn patterns against
|
|
16
|
+
// every file that passes it. None carries the `g` flag, so a shared instance holds no `lastIndex`.
|
|
17
|
+
const inlineEditType = new RegExp(migrations_inlineEditA11yAndTypes_data.INLINE_EDIT_TYPE);
|
|
18
|
+
const a11yLocaleType = new RegExp(migrations_inlineEditA11yAndTypes_data.A11Y_LOCALE_TYPE);
|
|
19
|
+
const compiledWarnPatterns = migrations_inlineEditA11yAndTypes_data.warnPatterns.map(({ anchor, pattern, message }) => ({
|
|
20
|
+
anchor: new RegExp(anchor),
|
|
21
|
+
pattern: new RegExp(pattern),
|
|
22
|
+
message
|
|
23
|
+
}));
|
|
24
|
+
/** A file is in scope if it names the inline edit, or if it configures the a11y locale section. */
|
|
25
|
+
function referencesSubject(content) {
|
|
26
|
+
return content.includes(migrations_inlineEditA11yAndTypes_data.INLINE_EDIT_PACKAGE) || inlineEditType.test(content) || a11yLocaleType.test(content);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Rewrites `modeAsReadonly` reads to `mode`, and reports the rest of what the inline-edit review broke:
|
|
30
|
+
* the removed `KbqFocusRegionItem`, the handler and tooltip types narrowed from `any` to `unknown`, the
|
|
31
|
+
* new required `edit` key of `KbqA11yLocaleConfiguration`, and the tab stop that moved off the host onto
|
|
32
|
+
* the view content.
|
|
33
|
+
*
|
|
34
|
+
* The rename is the only write. `modeAsReadonly` was a `computed()` wrapper over the mode signal, so a
|
|
35
|
+
* read of it translates to a read of `mode` unchanged — every other change is reported instead: a removed
|
|
36
|
+
* export has no replacement expression, a narrowed parameter needs a cast only the host can choose, and a
|
|
37
|
+
* selector that matched the host is a decision about which element it meant. `.scss`/`.css` are visited
|
|
38
|
+
* as well, because the tab stop moved in the DOM rather than in the API.
|
|
39
|
+
*/
|
|
40
|
+
function inlineEditA11yAndTypes(options) {
|
|
41
|
+
return async (tree, context) => {
|
|
42
|
+
const { project } = options;
|
|
43
|
+
// `ng update` invokes migrations with no options at all, so the schema default never reaches us —
|
|
44
|
+
// applying the fix is the intended behaviour there.
|
|
45
|
+
const fix = options.fix ?? true;
|
|
46
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
47
|
+
const root = projectDefinition?.root ?? '';
|
|
48
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
49
|
+
let consumers = 0;
|
|
50
|
+
let reported = 0;
|
|
51
|
+
/** Collected during the walk and applied after it, so the tree is not mutated while iterating. */
|
|
52
|
+
const renames = [];
|
|
53
|
+
utils_packageConfig.visitProjectFiles(rootDir, (filePath, entry) => {
|
|
54
|
+
if (!EXTENSIONS.some((extension) => filePath.endsWith(extension)))
|
|
55
|
+
return;
|
|
56
|
+
const originalContent = entry?.content.toString();
|
|
57
|
+
if (!originalContent || !referencesSubject(originalContent))
|
|
58
|
+
return;
|
|
59
|
+
consumers++;
|
|
60
|
+
let content = originalContent;
|
|
61
|
+
if (FIXABLE_EXTENSIONS.some((extension) => filePath.endsWith(extension)) &&
|
|
62
|
+
originalContent.includes(migrations_inlineEditA11yAndTypes_data.MODE_AS_READONLY_MEMBER)) {
|
|
63
|
+
content = originalContent.replace(migrations_inlineEditA11yAndTypes_data.MODE_AS_READONLY_ACCESS, migrations_inlineEditA11yAndTypes_data.MODE_AS_READONLY_REPLACEMENT);
|
|
64
|
+
if (content !== originalContent)
|
|
65
|
+
renames.push({ filePath, content });
|
|
66
|
+
}
|
|
67
|
+
// Warn against the fixed content, so a rewritten call site does not also produce a
|
|
68
|
+
// "migrate by hand" note. In dry-run nothing is written, so report against the original.
|
|
69
|
+
const reportedContent = fix ? content : originalContent;
|
|
70
|
+
for (const { anchor, pattern, message } of compiledWarnPatterns) {
|
|
71
|
+
if (!anchor.test(reportedContent) || !pattern.test(reportedContent))
|
|
72
|
+
continue;
|
|
73
|
+
reported++;
|
|
74
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
for (const { filePath, content } of renames) {
|
|
78
|
+
if (fix) {
|
|
79
|
+
tree.overwrite(filePath, content);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Nothing here renders an inline edit or touches the a11y locale, so the summary would only be noise.
|
|
86
|
+
if (consumers === 0)
|
|
87
|
+
return;
|
|
88
|
+
utils_messages.logMessage(context.logger, [
|
|
89
|
+
`${LABEL} processed kbq-inline-edit under "${root || '<workspace root>'}", ` +
|
|
90
|
+
`${consumers} file(s) reference the component, ${renames.length} file(s) ` +
|
|
91
|
+
`${fix ? 'updated' : 'would be updated'}, ${reported} call site(s) reported.`,
|
|
92
|
+
...migrations_inlineEditA11yAndTypes_data.SUMMARY
|
|
93
|
+
]);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
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
|
+
}
|