@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
|
@@ -23,18 +23,26 @@ The schematic walks every `.ts` and `.html` file in the project (skipping
|
|
|
23
23
|
|
|
24
24
|
- **TypeScript reads/writes.** For a receiver whose static type is annotated
|
|
25
25
|
`KbqFilterBar` / `KbqFilterBarHost` (method/function params, class fields —
|
|
26
|
-
including `@ViewChild(KbqFilterBar) x: KbqFilterBar
|
|
27
|
-
parameter-properties — and typed locals), a read of
|
|
28
|
-
call and a `filter
|
|
26
|
+
including `@ViewChild(KbqFilterBar) x: KbqFilterBar`, constructor
|
|
27
|
+
parameter-properties and `inject(KbqFilterBar)` — and typed locals), a read of
|
|
28
|
+
a signal member becomes a call and a plain `filter = …` write becomes
|
|
29
|
+
`.set(...)`:
|
|
29
30
|
- `filterBar.filter` → `filterBar.filter()` (incl. optional chain `filterBar.filter?.name` → `filterBar.filter()?.name`)
|
|
30
31
|
- `filterBar.filter = next` → `filterBar.filter.set(next)`
|
|
31
32
|
- `this.filterBar.isChanged` → `this.filterBar.isChanged()`
|
|
32
|
-
- **Template
|
|
33
|
+
- **Template references.** For a bare `#ref` on `<kbq-filter-bar>`, reads
|
|
33
34
|
of signal members through that ref are rewritten in the same template
|
|
34
35
|
(external `.html` and inline `template:` strings): `ref.isChanged` →
|
|
35
|
-
`ref.isChanged()
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
`ref.isChanged()`, and in an event binding `ref.filter = saved` →
|
|
37
|
+
`ref.filter.set(saved)`. `KbqFilterBar` has no `exportAs`, so a ref with a
|
|
38
|
+
value (`#ref="ngModel"`) names another directive and is left alone, and so
|
|
39
|
+
is a property chain that only ends in the ref's name
|
|
40
|
+
(`page.filterBar.filter`). Only the expressions of the view that declares
|
|
41
|
+
the ref are looked at — prose, comments and plain attributes are not — and a
|
|
42
|
+
ref whose name a `@for`, `let-`, `*ngFor` or `@let` variable or another
|
|
43
|
+
`#ref` shares is left alone.
|
|
44
|
+
- **Rename.** `KbqFilterBarRefresher` → `KbqFilterRefresher` (the old name
|
|
45
|
+
stayed an alias until 21.0.0).
|
|
38
46
|
|
|
39
47
|
All rewrites are idempotent — running twice does not double the call.
|
|
40
48
|
|
|
@@ -43,12 +51,14 @@ All rewrites are idempotent — running twice does not double the call.
|
|
|
43
51
|
Some changes require code restructuring and are surfaced as warnings without
|
|
44
52
|
auto-fixing:
|
|
45
53
|
|
|
46
|
-
| Pattern | Manual migration
|
|
47
|
-
| -------------------------------- |
|
|
48
|
-
| `.changes` (KbqFilterBar) | Deprecated no-op; read `filterBar.filter()` inside an `effect(...)`, or listen to `(filterChange)`
|
|
49
|
-
| `.preparePopover()` (KbqFilters) | Removed; use `openSaveAsNewFilterPopover()` / `openChangeFilterNamePopover()`
|
|
50
|
-
| `viewChild(KbqFilterBar)` query | Returns the instance, so reads are a double call: `this.filterBar().filter()` — verify manually
|
|
51
|
-
| `KBQ_FILTER_BAR_PIPES` | Now typed `Map<KbqPipeType, Type<KbqBasePipe>>`; wrap direct providers in `new Map([...])`
|
|
54
|
+
| Pattern | Manual migration |
|
|
55
|
+
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
56
|
+
| `.changes` (KbqFilterBar) | Deprecated no-op; read `filterBar.filter()` inside an `effect(...)`, or listen to `(filterChange)` |
|
|
57
|
+
| `.preparePopover()` (KbqFilters) | Removed; use `openSaveAsNewFilterPopover()` / `openChangeFilterNamePopover()` |
|
|
58
|
+
| `viewChild(KbqFilterBar)` query | Returns the instance, so reads are a double call: `this.filterBar().filter()` — verify manually |
|
|
59
|
+
| `KBQ_FILTER_BAR_PIPES` | Now typed `Map<KbqPipeType, Type<KbqBasePipe>>`; wrap direct providers in `new Map([...])` |
|
|
60
|
+
| `filterBar.pipeTemplates = …` | Read-only input, also when written through a template ref; bind `[pipeTemplates]` instead |
|
|
61
|
+
| `filterBar.filter ??= …` | Only a plain `=` becomes `.set()`, in code or through a template ref; write the rest with `.set()` / `.update()` |
|
|
52
62
|
|
|
53
63
|
## Running it manually
|
|
54
64
|
|
|
@@ -60,7 +70,8 @@ Pass `--fix=false` to see what would change without writing files.
|
|
|
60
70
|
|
|
61
71
|
## Limitations
|
|
62
72
|
|
|
63
|
-
Receivers are matched by explicit `KbqFilterBar` type annotation
|
|
64
|
-
|
|
73
|
+
Receivers are matched by an explicit `KbqFilterBar` type annotation or an
|
|
74
|
+
`inject()` initializer (no type inference), so inferred receivers
|
|
65
75
|
(`const fb = this.filterBar; fb.filter`) are left untouched and covered by the
|
|
66
|
-
warnings above.
|
|
76
|
+
warnings above. A nested declaration that reuses the receiver's name, and
|
|
77
|
+
`this.<field>` inside a `function` that rebinds `this`, are left alone too. After running, **always inspect the diff** before committing.
|
|
@@ -31,8 +31,7 @@ const FILTER_BAR_HOST_TYPE = 'KbqFilterBarHost';
|
|
|
31
31
|
const FILTER_BAR_ELEMENT = 'kbq-filter-bar';
|
|
32
32
|
/**
|
|
33
33
|
* Safe, idempotent identifier renames applied to `.ts` files. The `\b…\b` boundaries make each rule
|
|
34
|
-
* idempotent. `KbqFilterBarRefresher`
|
|
35
|
-
* is optional cleanup that can never break a consumer build.
|
|
34
|
+
* idempotent. The `KbqFilterBarRefresher` alias was removed in 21.0.0.
|
|
36
35
|
*/
|
|
37
36
|
const tsRenameReplacements = [{ from: '\\bKbqFilterBarRefresher\\b', to: 'KbqFilterRefresher' }];
|
|
38
37
|
/**
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var ts = require('typescript');
|
|
6
|
+
var utils_messages = require('../../utils/messages.cjs');
|
|
7
|
+
var utils_packageConfig = require('../../utils/package-config.cjs');
|
|
8
|
+
var utils_projectFiles = require('../../utils/project-files.cjs');
|
|
9
|
+
var utils_signalMembersMigration = require('../../utils/signal-members-migration.cjs');
|
|
10
|
+
var utils_templateRefAccess = require('../../utils/template-ref-access.cjs');
|
|
11
|
+
var utils_typescript = require('../../utils/typescript.cjs');
|
|
12
|
+
var migrations_filterBarSignals_data = require('./data.cjs');
|
|
13
|
+
require('@angular-devkit/schematics');
|
|
14
|
+
require('@schematics/angular/utility');
|
|
15
|
+
require('../../utils/ast.cjs');
|
|
16
|
+
|
|
17
|
+
const TS_EXT = '.ts';
|
|
18
|
+
const HTML_EXT = '.html';
|
|
19
|
+
/** Applies text-span edits to `content`, right-to-left, so earlier edits don't shift later offsets. */
|
|
20
|
+
function applyEdits(content, edits) {
|
|
21
|
+
const sorted = [...edits].sort((a, b) => b.start - a.start || b.end - a.end);
|
|
22
|
+
let result = content;
|
|
23
|
+
for (const { start, end, text } of sorted) {
|
|
24
|
+
result = result.slice(0, start) + text + result.slice(end);
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
/** The `KbqFilterBar` / `KbqFilterBarHost` receivers of a file, typed by annotation or `inject()`. */
|
|
29
|
+
function collectFileReceivers(sourceFile) {
|
|
30
|
+
return {
|
|
31
|
+
receivers: utils_signalMembersMigration.collectAllReceivers(sourceFile, [migrations_filterBarSignals_data.FILTER_BAR_TYPE, migrations_filterBarSignals_data.FILTER_BAR_HOST_TYPE]),
|
|
32
|
+
bindings: utils_signalMembersMigration.collectBindings(sourceFile)
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Whether `node` accesses a signal member on a filter-bar receiver. The shared engine resolves the receiver at
|
|
37
|
+
* this exact position, so a nested declaration that shadows its name or a `function` that rebinds `this` is
|
|
38
|
+
* not followed. A signal query holds the instance behind a call of its own, which this pass does not reach.
|
|
39
|
+
*/
|
|
40
|
+
function isSignalMemberAccess(node, sourceFile, scope) {
|
|
41
|
+
if (!ts.isPropertyAccessExpression(node) ||
|
|
42
|
+
!ts.isIdentifier(node.name) ||
|
|
43
|
+
!migrations_filterBarSignals_data.SIGNAL_MEMBERS.includes(node.name.text)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
const receiver = utils_signalMembersMigration.resolveReceiver(node.expression, node, sourceFile, scope.receivers, scope.bindings);
|
|
47
|
+
return !!receiver && !receiver.signalQuery;
|
|
48
|
+
}
|
|
49
|
+
/** Collects edits for every read/write of a signal member on a known filter-bar receiver. */
|
|
50
|
+
function collectAccessEdits(sourceFile, scope) {
|
|
51
|
+
const edits = [];
|
|
52
|
+
const visit = (node) => {
|
|
53
|
+
if (isSignalMemberAccess(node, sourceFile, scope))
|
|
54
|
+
utils_signalMembersMigration.classifyAccess(node, sourceFile, migrations_filterBarSignals_data.WRITABLE_MEMBERS, edits);
|
|
55
|
+
node.forEachChild(visit);
|
|
56
|
+
};
|
|
57
|
+
visit(sourceFile);
|
|
58
|
+
return edits;
|
|
59
|
+
}
|
|
60
|
+
/** Signal members written on a filter-bar receiver in a form the rewrite leaves for the consumer. */
|
|
61
|
+
function collectWrites(sourceFile, scope) {
|
|
62
|
+
const writes = { readOnlyWrites: new Set(), compoundWrites: new Set() };
|
|
63
|
+
const visit = (node) => {
|
|
64
|
+
if (isSignalMemberAccess(node, sourceFile, scope) && utils_signalMembersMigration.isWriteTarget(node)) {
|
|
65
|
+
const name = node.name.text;
|
|
66
|
+
if (!migrations_filterBarSignals_data.WRITABLE_MEMBERS.has(name))
|
|
67
|
+
writes.readOnlyWrites.add(name);
|
|
68
|
+
else if (!utils_signalMembersMigration.isPlainAssignment(node))
|
|
69
|
+
writes.compoundWrites.add(name);
|
|
70
|
+
}
|
|
71
|
+
node.forEachChild(visit);
|
|
72
|
+
};
|
|
73
|
+
visit(sourceFile);
|
|
74
|
+
return writes;
|
|
75
|
+
}
|
|
76
|
+
/** Pass A — rewrite programmatic reads/writes of filter-bar signal members in TypeScript code. */
|
|
77
|
+
function migrateTsExpressions(content, fileName) {
|
|
78
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
79
|
+
const scope = collectFileReceivers(sourceFile);
|
|
80
|
+
if (scope.receivers.length === 0)
|
|
81
|
+
return content;
|
|
82
|
+
const edits = collectAccessEdits(sourceFile, scope);
|
|
83
|
+
return edits.length > 0 ? applyEdits(content, edits) : content;
|
|
84
|
+
}
|
|
85
|
+
/** Merges the writes in `from` into `into`. */
|
|
86
|
+
function mergeWrites(into, from) {
|
|
87
|
+
from.readOnlyWrites.forEach((member) => into.readOnlyWrites.add(member));
|
|
88
|
+
from.compoundWrites.forEach((member) => into.compoundWrites.add(member));
|
|
89
|
+
}
|
|
90
|
+
/** What a reference variable on `<kbq-filter-bar>` reaches. */
|
|
91
|
+
const REF_POLICY = { members: migrations_filterBarSignals_data.SIGNAL_MEMBERS, writable: migrations_filterBarSignals_data.WRITABLE_MEMBERS };
|
|
92
|
+
/** Pass B (core) — parse a template, discover filter-bar refs, rewrite their signal reads and `filter` writes. */
|
|
93
|
+
async function migrateTemplate(template) {
|
|
94
|
+
const untouched = {
|
|
95
|
+
content: template,
|
|
96
|
+
changed: false,
|
|
97
|
+
readOnlyWrites: new Set(),
|
|
98
|
+
compoundWrites: new Set()
|
|
99
|
+
};
|
|
100
|
+
if (!template.includes(migrations_filterBarSignals_data.FILTER_BAR_ELEMENT))
|
|
101
|
+
return untouched;
|
|
102
|
+
const parsed = await utils_typescript.parseTemplate(template);
|
|
103
|
+
if (!parsed.tree)
|
|
104
|
+
return untouched;
|
|
105
|
+
const { rootNodes } = parsed.tree;
|
|
106
|
+
// `KbqFilterBar` has no `exportAs`, so only a bare `#ref` is the filter bar; `#ref="ngModel"` names another
|
|
107
|
+
// directive.
|
|
108
|
+
const { content, readOnlyWrites, compoundWrites } = utils_templateRefAccess.rewriteRefAccesses(template, rootNodes, (element, value) => element.name === migrations_filterBarSignals_data.FILTER_BAR_ELEMENT && !value ? REF_POLICY : undefined);
|
|
109
|
+
return { content, changed: content !== template, readOnlyWrites, compoundWrites };
|
|
110
|
+
}
|
|
111
|
+
/** Pass B (inline) — rewrite filter-bar ref reads inside inline component templates. */
|
|
112
|
+
async function migrateInlineTemplates(content, fileName) {
|
|
113
|
+
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
114
|
+
const ranges = utils_typescript.collectInlineTemplateRanges(sourceFile).sort((a, b) => b.start - a.start);
|
|
115
|
+
const writes = { readOnlyWrites: new Set(), compoundWrites: new Set() };
|
|
116
|
+
let result = content;
|
|
117
|
+
for (const { start, end } of ranges) {
|
|
118
|
+
const outcome = await migrateTemplate(result.slice(start, end));
|
|
119
|
+
mergeWrites(writes, outcome);
|
|
120
|
+
if (outcome.changed) {
|
|
121
|
+
result = result.slice(0, start) + outcome.content + result.slice(end);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { content: result, ...writes };
|
|
125
|
+
}
|
|
126
|
+
/** Pass C — safe identifier renames. */
|
|
127
|
+
function applyRenames(content) {
|
|
128
|
+
let result = content;
|
|
129
|
+
for (const { from, to } of migrations_filterBarSignals_data.tsRenameReplacements) {
|
|
130
|
+
result = result.replace(new RegExp(from, 'g'), to);
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
function logWarnings(context, filePath, content) {
|
|
135
|
+
for (const { pattern, message } of migrations_filterBarSignals_data.warnPatterns) {
|
|
136
|
+
if (new RegExp(pattern).test(content)) {
|
|
137
|
+
utils_messages.logMessage(context.logger, [`[filter-bar-signals] ${filePath}`, ` ${message}`]);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** Reports writes to signal members that are read-only now, made in code or through a template reference. */
|
|
142
|
+
function warnReadOnlyWrites(context, filePath, members) {
|
|
143
|
+
if (members.size === 0)
|
|
144
|
+
return;
|
|
145
|
+
utils_messages.logMessage(context.logger, [
|
|
146
|
+
`[filter-bar-signals] ${filePath}`,
|
|
147
|
+
` \`${[...members].join('`, `')}\` can no longer be assigned: they are read-only signals now. Bind`,
|
|
148
|
+
` \`[pipeTemplates]\` in the template instead; the \`is*\` state follows \`filter\`.`
|
|
149
|
+
]);
|
|
150
|
+
}
|
|
151
|
+
/** Reports writes to `filter` that have no `.set()` form, made in code or through a template reference. */
|
|
152
|
+
function warnCompoundWrites(context, filePath, members) {
|
|
153
|
+
if (members.size === 0)
|
|
154
|
+
return;
|
|
155
|
+
utils_messages.logMessage(context.logger, [
|
|
156
|
+
`[filter-bar-signals] ${filePath}`,
|
|
157
|
+
` \`${[...members].join('`, `')}\` is a writable signal now, but only a plain \`=\` is rewritten to`,
|
|
158
|
+
` \`.set()\`: a compound assignment, an increment, \`delete\` or a destructuring target was left as it`,
|
|
159
|
+
` is. Write it with \`.set()\` or \`.update()\`.`
|
|
160
|
+
]);
|
|
161
|
+
}
|
|
162
|
+
/** A `.ts` file is a filter-bar consumer if it names the type or imports the package. */
|
|
163
|
+
function referencesFilterBar(content) {
|
|
164
|
+
return /\bKbqFilterBar\b/.test(content) || content.includes('@koobiq/components/filter-bar');
|
|
165
|
+
}
|
|
166
|
+
function filterBarSignals(options) {
|
|
167
|
+
return async (tree, context) => {
|
|
168
|
+
const { project } = options;
|
|
169
|
+
// `ng update` invokes migrations with no options at all, and migrations.json declares no schema, so the
|
|
170
|
+
// schema default never reaches us — applying the fix is the intended behaviour there.
|
|
171
|
+
const fix = options.fix ?? true;
|
|
172
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
173
|
+
const root = projectDefinition?.root ?? '';
|
|
174
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
175
|
+
const tsPaths = [];
|
|
176
|
+
const htmlPaths = [];
|
|
177
|
+
utils_projectFiles.visitProjectFiles(rootDir, (filePath) => {
|
|
178
|
+
if (filePath.endsWith(TS_EXT))
|
|
179
|
+
tsPaths.push(filePath);
|
|
180
|
+
else if (filePath.endsWith(HTML_EXT))
|
|
181
|
+
htmlPaths.push(filePath);
|
|
182
|
+
});
|
|
183
|
+
let touched = 0;
|
|
184
|
+
const commit = (filePath, original, updated) => {
|
|
185
|
+
if (updated === original)
|
|
186
|
+
return;
|
|
187
|
+
touched++;
|
|
188
|
+
if (fix) {
|
|
189
|
+
tree.overwrite(filePath, updated);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
utils_messages.logMessage(context.logger, [`[filter-bar-signals] would update ${filePath} (run with --fix to apply)`]);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
for (const filePath of tsPaths) {
|
|
196
|
+
const original = tree.read(filePath)?.toString();
|
|
197
|
+
if (!original || !referencesFilterBar(original))
|
|
198
|
+
continue;
|
|
199
|
+
logWarnings(context, filePath, original);
|
|
200
|
+
const sourceFile = ts.createSourceFile(filePath, original, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
201
|
+
const writes = collectWrites(sourceFile, collectFileReceivers(sourceFile));
|
|
202
|
+
const inline = await migrateInlineTemplates(migrateTsExpressions(original, filePath), filePath);
|
|
203
|
+
mergeWrites(writes, inline);
|
|
204
|
+
warnReadOnlyWrites(context, filePath, writes.readOnlyWrites);
|
|
205
|
+
warnCompoundWrites(context, filePath, writes.compoundWrites);
|
|
206
|
+
commit(filePath, original, applyRenames(inline.content));
|
|
207
|
+
}
|
|
208
|
+
for (const filePath of htmlPaths) {
|
|
209
|
+
const original = tree.read(filePath)?.toString();
|
|
210
|
+
if (!original)
|
|
211
|
+
continue;
|
|
212
|
+
const { content, changed, readOnlyWrites, compoundWrites } = await migrateTemplate(original);
|
|
213
|
+
warnReadOnlyWrites(context, filePath, readOnlyWrites);
|
|
214
|
+
warnCompoundWrites(context, filePath, compoundWrites);
|
|
215
|
+
if (changed)
|
|
216
|
+
commit(filePath, original, content);
|
|
217
|
+
}
|
|
218
|
+
utils_messages.logMessage(context.logger, [
|
|
219
|
+
`[filter-bar-signals] processed tree under "${root || '<workspace root>'}", ` +
|
|
220
|
+
`${fix ? 'updated' : 'would update'} ${touched} file(s).`
|
|
221
|
+
]);
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
exports.default = filterBarSignals;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# filter-bar-state-saving-default
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@20`
|
|
4
|
+
(registered for `21.0.0-0`). Reports the consequences of `kbq-filter-bar` remembering which filter is
|
|
5
|
+
selected and the edits made to it, with `useStateSaving` defaulting to `true`. It never writes to the
|
|
6
|
+
tree.
|
|
7
|
+
|
|
8
|
+
## Background
|
|
9
|
+
|
|
10
|
+
The filter bar gained the same state saving the accordion, the tree, the tab group, the sidebar and the
|
|
11
|
+
content panel already have, applied through the `KbqStateSaving` host directive, and it is on by default.
|
|
12
|
+
With no `stateSavingKey` the key is derived from where the bar sits in the document — the chain of tag
|
|
13
|
+
names up to `<body>`, cut short by the first author-written `id`, which becomes the anchor.
|
|
14
|
+
|
|
15
|
+
One thing is different here. The components that shipped before it leave a controlled input alone: a
|
|
16
|
+
sidebar with a bound `opened` persists nothing at all. The filter bar restores over the value a
|
|
17
|
+
`[filter]` binding supplied at initialization, because `filter` is a `model()` — the restore writes
|
|
18
|
+
through it, `filterChange` fires, and the application loads data for the restored filter exactly as it
|
|
19
|
+
would for one the user had just picked. Only a change made after that wins.
|
|
20
|
+
|
|
21
|
+
## What is stored
|
|
22
|
+
|
|
23
|
+
The filter's `name`, whether it carried unsaved changes, and one entry per pipe: its `id` (or its `name`
|
|
24
|
+
when it has none) and its value. Nothing else. A pipe built from a template keeps that template's
|
|
25
|
+
`compareWith` and date bounds, and those do not survive being written to storage — so the rest of each
|
|
26
|
+
pipe is rebuilt from `filters` and `pipeTemplates` while restoring, and a pipe whose template is gone is
|
|
27
|
+
left out.
|
|
28
|
+
|
|
29
|
+
`KbqFilter` has no id, so a filter is identified by its `name`: renaming a saved filter loses what was
|
|
30
|
+
stored for it, and a name no longer in the list restores nothing. A list that arrives from a server is
|
|
31
|
+
waited for — the restore applies as soon as the named filter appears, and is abandoned as soon as
|
|
32
|
+
anything else changes the filter.
|
|
33
|
+
|
|
34
|
+
## What it reports
|
|
35
|
+
|
|
36
|
+
| Pattern | Reported unless |
|
|
37
|
+
| -------------------------------------------- | ----------------------------- |
|
|
38
|
+
| `<kbq-filter-bar>` / `[kbq-filter-bar]` | `useStateSaving` is mentioned |
|
|
39
|
+
| `[filter]` / `[(filter)]` on the bar | `useStateSaving` is mentioned |
|
|
40
|
+
| `<kbq-filters>` inside the bar | `useStateSaving` is mentioned |
|
|
41
|
+
| `compareWith` in a consumer file | always |
|
|
42
|
+
| `saveFilterState()` / `restoreFilterState()` | always |
|
|
43
|
+
|
|
44
|
+
The last one is a reassurance rather than a warning: those two are unchanged, and are unrelated to
|
|
45
|
+
`clearSavedState()` / `hasSavedState`.
|
|
46
|
+
|
|
47
|
+
## Running it manually
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
ng generate @koobiq/components:filter-bar-state-saving-default --project my-app
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Omit `--project` to inspect the whole workspace.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `filter-bar-state-saving-default` migration.
|
|
5
|
+
*
|
|
6
|
+
* `KbqFilterBar` remembers which filter is selected and the edits made to it now, and `useStateSaving`
|
|
7
|
+
* defaults to `true`. Unlike the components that shipped before it, the bar restores over the value a
|
|
8
|
+
* `[filter]` binding supplied at initialization — it writes through the `filter` model, so `filterChange`
|
|
9
|
+
* fires and the application loads data for the restored filter. That is the part a consumer has to act
|
|
10
|
+
* on, and it is exactly the markup that says nothing about the input.
|
|
11
|
+
*
|
|
12
|
+
* Warn-only. Rewriting the markup to `[useStateSaving]="false"` would withhold the feature this release
|
|
13
|
+
* is shipping.
|
|
14
|
+
*/
|
|
15
|
+
/** Import specifiers that mark a file as a consumer of the filter bar. */
|
|
16
|
+
const PACKAGES = ['@koobiq/components/filter-bar'];
|
|
17
|
+
/** Identifier and element shapes that mark a consumer without an import. */
|
|
18
|
+
const CONSUMER_TYPE = '\\bKbqFilterBar\\b|\\bkbq-filter-bar\\b';
|
|
19
|
+
const FILTER_BAR = '<kbq-filter-bar\\b|\\[kbq-filter-bar\\]';
|
|
20
|
+
/**
|
|
21
|
+
* Anything that makes a file a consumer, for the reports that key off a call site rather than off the
|
|
22
|
+
* rendered element — pipe templates are routinely declared in a `.ts` whose markup lives elsewhere.
|
|
23
|
+
*/
|
|
24
|
+
const CONSUMER = `${CONSUMER_TYPE}|\\bKbqPipeTemplate\\b|@koobiq/components/filter-bar`;
|
|
25
|
+
const warnPatterns = [
|
|
26
|
+
{
|
|
27
|
+
anchor: FILTER_BAR,
|
|
28
|
+
pattern: FILTER_BAR,
|
|
29
|
+
unless: '\\buseStateSaving\\b',
|
|
30
|
+
message: 'Filter bars remember the selected filter and the edits made to it by default now: ' +
|
|
31
|
+
'useStateSaving defaults to true. Pass [useStateSaving]="false" to keep the previous ' +
|
|
32
|
+
'behaviour. What is stored is the filter name, whether it carried unsaved changes, and one ' +
|
|
33
|
+
'entry per pipe — its id (or name) and its value.'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
anchor: FILTER_BAR,
|
|
37
|
+
pattern: '\\[\\(?filter\\)?\\]',
|
|
38
|
+
unless: '\\buseStateSaving\\b',
|
|
39
|
+
message: 'A restored filter overrides the value this [filter] binding supplies at initialization, and ' +
|
|
40
|
+
'writes through the model, so filterChange fires and the application fetches for it as it ' +
|
|
41
|
+
'would for one the user had picked. Only a later change wins — this is the one place the bar ' +
|
|
42
|
+
'differs from the components that persist a controlled input by leaving it alone.'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
anchor: FILTER_BAR,
|
|
46
|
+
pattern: '<kbq-filters\\b',
|
|
47
|
+
unless: '\\buseStateSaving\\b',
|
|
48
|
+
message: 'A filter is identified by its name, the only identity KbqFilter has. Renaming a saved filter ' +
|
|
49
|
+
'therefore loses what was stored for it, and a name that is no longer in the filters list ' +
|
|
50
|
+
'restores nothing. Applications that load their filters from a server are waited for: the ' +
|
|
51
|
+
'restore applies as soon as the named filter appears.'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
anchor: CONSUMER,
|
|
55
|
+
pattern: '\\bcompareWith\\b',
|
|
56
|
+
message: 'Restored pipe values come back as new objects, never the option instances in the templates. ' +
|
|
57
|
+
'This compareWith is what matches them again — keep it in step with what is stored, which is ' +
|
|
58
|
+
'the value alone.'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
// Programmatic access names the class, which the markup-only anchor does not cover.
|
|
62
|
+
anchor: CONSUMER,
|
|
63
|
+
pattern: '\\.\\s*(saveFilterState|restoreFilterState)\\s*\\(',
|
|
64
|
+
message: 'saveFilterState()/restoreFilterState() are unchanged: they snapshot the filter in memory ' +
|
|
65
|
+
'within one session. Persistence is separate — clearSavedState() and hasSavedState are the ' +
|
|
66
|
+
'members that reach it, and the bar writes on every change by itself.'
|
|
67
|
+
}
|
|
68
|
+
];
|
|
69
|
+
/** Printed once, after the per-file reports. */
|
|
70
|
+
const SUMMARY = [
|
|
71
|
+
' A filter bar rendered inside an overlay does not persist: it is not in the document when it',
|
|
72
|
+
' initializes and so has no stable key. The key otherwise comes from stateSavingKey, or is derived',
|
|
73
|
+
' from the position in the document when none is given.',
|
|
74
|
+
' Pipes are stored as a projection — id and value — and everything else is rebuilt from filters and',
|
|
75
|
+
' pipeTemplates, because a pipe built from a template keeps that template compareWith and date',
|
|
76
|
+
' bounds, which do not survive being written to storage. A pipe whose template is gone is left out.',
|
|
77
|
+
' Storage format: entries are written under a "kbq.state." prefix and carry a timestamp, so an',
|
|
78
|
+
' entry stranded by a markup change is collected once it outlives KBQ_STATE_SAVING_TTL (90 days by',
|
|
79
|
+
' default).',
|
|
80
|
+
' Provide KBQ_STATE_STORE to persist somewhere else (KbqSessionStorageStateStore is bundled), and',
|
|
81
|
+
' KBQ_STATE_SAVING_KEY_RESOLVER to derive the key from something other than the document position.'
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
exports.CONSUMER_TYPE = CONSUMER_TYPE;
|
|
85
|
+
exports.PACKAGES = PACKAGES;
|
|
86
|
+
exports.SUMMARY = SUMMARY;
|
|
87
|
+
exports.warnPatterns = warnPatterns;
|
|
@@ -0,0 +1,62 @@
|
|
|
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_filterBarStateSavingDefault_data = require('./data.cjs');
|
|
9
|
+
require('@angular-devkit/schematics');
|
|
10
|
+
require('@schematics/angular/utility');
|
|
11
|
+
|
|
12
|
+
const LABEL = '[filter-bar-state-saving-default]';
|
|
13
|
+
const EXTENSIONS = ['.ts', '.html'];
|
|
14
|
+
/** A file is a consumer if it imports the package, names the component, or renders one. */
|
|
15
|
+
function referencesConsumer(content) {
|
|
16
|
+
return migrations_filterBarStateSavingDefault_data.PACKAGES.some((name) => content.includes(name)) || new RegExp(migrations_filterBarStateSavingDefault_data.CONSUMER_TYPE).test(content);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Reports the consequences of the filter bar persisting the selected filter and the edits made to it,
|
|
20
|
+
* with `useStateSaving` defaulting to `true`. Never writes: the markup whose behaviour changed is exactly
|
|
21
|
+
* the markup that does not mention the input, and rewriting it to opt out would withhold the feature the
|
|
22
|
+
* release is shipping.
|
|
23
|
+
*
|
|
24
|
+
* `.html` is visited as well as `.ts`, because most reports key off the rendered element rather than off
|
|
25
|
+
* an import.
|
|
26
|
+
*/
|
|
27
|
+
function filterBarStateSavingDefault(options) {
|
|
28
|
+
return async (tree, context) => {
|
|
29
|
+
const { project } = options;
|
|
30
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
31
|
+
const root = projectDefinition?.root ?? '';
|
|
32
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
33
|
+
let consumers = 0;
|
|
34
|
+
let reported = 0;
|
|
35
|
+
utils_projectFiles.visitProjectFiles(rootDir, (filePath, entry) => {
|
|
36
|
+
if (!EXTENSIONS.some((extension) => filePath.endsWith(extension)))
|
|
37
|
+
return;
|
|
38
|
+
const content = entry?.content.toString();
|
|
39
|
+
if (!content || !referencesConsumer(content))
|
|
40
|
+
return;
|
|
41
|
+
consumers++;
|
|
42
|
+
for (const { anchor, pattern, unless, message } of migrations_filterBarStateSavingDefault_data.warnPatterns) {
|
|
43
|
+
if (!new RegExp(anchor).test(content) || !new RegExp(pattern).test(content))
|
|
44
|
+
continue;
|
|
45
|
+
if (unless && new RegExp(unless).test(content))
|
|
46
|
+
continue;
|
|
47
|
+
reported++;
|
|
48
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// Nothing here renders a filter bar, so the summary would only be noise.
|
|
52
|
+
if (consumers === 0)
|
|
53
|
+
return;
|
|
54
|
+
utils_messages.logMessage(context.logger, [
|
|
55
|
+
`${LABEL} processed kbq-filter-bar under "${root || '<workspace root>'}", ` +
|
|
56
|
+
`${consumers} file(s) reference it, ${reported} report(s) raised.`,
|
|
57
|
+
...migrations_filterBarStateSavingDefault_data.SUMMARY
|
|
58
|
+
]);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
exports.default = filterBarStateSavingDefault;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-filter-bar-state-saving-default",
|
|
4
|
+
"title": "Koobiq filter-bar state saving default migration",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"project": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Name of the project to inspect. If omitted, the migration runs over the whole tree.",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "projectName"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# flag-inner-html
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@20`
|
|
4
|
+
(registered for `21.0.0-0`). Moves `[innerHTML]` bindings off the `<kbq-flag>` host element onto the
|
|
5
|
+
`svg` input the flag review added, and reports the behavior changes that have no call site to point
|
|
6
|
+
at.
|
|
7
|
+
|
|
8
|
+
## Background
|
|
9
|
+
|
|
10
|
+
`KbqFlag` renders `<ng-content />`, so the host element is where projected nodes land. A parent
|
|
11
|
+
binding `[innerHTML]` on `<kbq-flag>` compiles to a write of `hostElement.innerHTML` during the
|
|
12
|
+
parent's update pass — the same element. The two only coexisted because the component's own view
|
|
13
|
+
contributed no DOM: with nothing projected there was nothing for the write to destroy, which is why
|
|
14
|
+
every published example got away with it.
|
|
15
|
+
|
|
16
|
+
The review gave the string form a slot of its own:
|
|
17
|
+
|
|
18
|
+
```html
|
|
19
|
+
<!-- before -->
|
|
20
|
+
<kbq-flag decorative [innerHTML]="flag" />
|
|
21
|
+
|
|
22
|
+
<!-- after -->
|
|
23
|
+
<kbq-flag decorative [svg]="flag" />
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The `svg` input renders into a `<span>` inside the component's view, so projected content and string
|
|
27
|
+
content no longer compete for the host element. The value is unchanged — Angular's sanitizer still
|
|
28
|
+
strips an `<svg>` that has not been bypassed, so a flag coming from a package as a string still has to go through
|
|
29
|
+
`DomSanitizer.bypassSecurityTrustHtml`, and only ever for markup known at build time.
|
|
30
|
+
|
|
31
|
+
## What it rewrites
|
|
32
|
+
|
|
33
|
+
`[innerHTML]` → `[svg]`, inside `<kbq-flag …>` opening tags only, in `.ts` and `.html` files that
|
|
34
|
+
reference the flag. A binding on any other element — including one on a wrapper projected _into_ a
|
|
35
|
+
flag — is left alone, because there the write targets an element the component does not own.
|
|
36
|
+
|
|
37
|
+
## What it does not reach
|
|
38
|
+
|
|
39
|
+
The rewrite is textual, so it only sees a literal `[innerHTML]=` inside a literal `<kbq-flag …>`
|
|
40
|
+
opening tag. Two forms are invisible to it and have to be moved by hand:
|
|
41
|
+
|
|
42
|
+
- an `innerHTML` write made from TypeScript against a flag element, through `Renderer2.setProperty`
|
|
43
|
+
or an assignment to a queried element's `innerHTML`;
|
|
44
|
+
- a wrapper component of your own that publishes an `innerHTML`-named input and forwards it. The
|
|
45
|
+
`<kbq-flag [innerHTML]="…">` inside its template is rewritten, but the input it exposes to its own
|
|
46
|
+
callers keeps the old name.
|
|
47
|
+
|
|
48
|
+
## Notes with no call site to point at
|
|
49
|
+
|
|
50
|
+
- **A flag with no `label` is now `aria-hidden`.** The unlabelled, non-decorative flag reached the
|
|
51
|
+
accessibility tree as a nameless graphic, which the guide already called out as the one case that
|
|
52
|
+
must not happen. Give a meaningful flag a `label` — including one whose only name came from the
|
|
53
|
+
projected image (`alt`, an SVG `<title>`), which the default now hides.
|
|
54
|
+
- **An inline `<svg>` is cropped instead of letterboxed.** `object-fit: cover` is inert on an inline
|
|
55
|
+
`<svg>` — it is not a replaced element — so a source whose ratio differed from the shape rendered
|
|
56
|
+
with transparent bands; `square` and `circle` were the visible cases. The same flag passed as an
|
|
57
|
+
`<img>` always cropped, and the two now match.
|
|
58
|
+
- **`--kbq-flag-empty-background` resolves to an opaque neutral** instead of the translucent disabled
|
|
59
|
+
state, so the `empty` placeholder no longer takes on the hue of the surface behind it.
|
|
60
|
+
- **The flag tokens are declared at zero specificity.** An override that used to lose to `.kbq-flag`
|
|
61
|
+
on source order now wins, so a redundant `!important` or an extra selector can be dropped.
|
|
62
|
+
|
|
63
|
+
## Running it on its own
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
ng g @koobiq/components:flag-inner-html --project <your project>
|
|
67
|
+
```
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `flag-inner-html` migration.
|
|
5
|
+
*
|
|
6
|
+
* `KbqFlag` renders `<ng-content />`, so the host element is where projected nodes land. A parent
|
|
7
|
+
* binding `[innerHTML]` on `<kbq-flag>` writes that same element, and the two only coexisted because
|
|
8
|
+
* the component's own view contributed no DOM. The review gave the string form a slot of its own —
|
|
9
|
+
* the `svg` input — and the template now creates a node inside the host, so a host-level
|
|
10
|
+
* `[innerHTML]` write removes it along with anything projected.
|
|
11
|
+
*
|
|
12
|
+
* The rename is mechanical, so this migration rewrites it. Everything else in the review is a
|
|
13
|
+
* behavior change with no call site to point at, and is reported once per project.
|
|
14
|
+
*/
|
|
15
|
+
/** Import specifier that marks a file as a flag consumer. */
|
|
16
|
+
const FLAG_PACKAGE = '@koobiq/components/flag';
|
|
17
|
+
/** Identifier and element shapes that mark a consumer without an import. */
|
|
18
|
+
const FLAG_TYPE = '\\bKbqFlag\\w*\\b|\\bkbq-flag\\b';
|
|
19
|
+
/**
|
|
20
|
+
* Opening `<kbq-flag …>` tag, including the self-closing form. Closing tags do not match.
|
|
21
|
+
*
|
|
22
|
+
* Attribute values are matched as opaque quoted strings, so a `>` inside an attribute expression
|
|
23
|
+
* (e.g. `[class.a]="x > y"`) does not end the match early and strand a later `[innerHTML]` binding
|
|
24
|
+
* on the same tag outside it. The third alternative excludes both quote characters so that only one
|
|
25
|
+
* branch can consume a quote: an unterminated tag would otherwise backtrack exponentially.
|
|
26
|
+
*/
|
|
27
|
+
const FLAG_OPEN_TAG = /<kbq-flag\b(?:"[^"]*"|'[^']*'|[^>"'])*>/g;
|
|
28
|
+
/** The binding this migration moves off the host element. */
|
|
29
|
+
const INNER_HTML_BINDING = /\[innerHTML\]\s*=/g;
|
|
30
|
+
const REWRITE_MESSAGE = '[innerHTML] on <kbq-flag> was rewritten to [svg]. The host element is where projected content ' +
|
|
31
|
+
'lands, so an innerHTML write replaces it; the svg input renders into a slot of its own. Pass it ' +
|
|
32
|
+
'the same SafeHtml — Angular still strips an <svg> that has not been bypassed.';
|
|
33
|
+
/** Printed once per project, after the per-file reports. */
|
|
34
|
+
const SUMMARY = [
|
|
35
|
+
' The rewrite is textual and only sees a literal [innerHTML]= inside a literal <kbq-flag …> ' +
|
|
36
|
+
'opening tag. An innerHTML write made from TypeScript against a flag element, and an ' +
|
|
37
|
+
'innerHTML-named input that a wrapper component of yours forwards to a flag, are both ' +
|
|
38
|
+
'invisible to it and have to be moved by hand.',
|
|
39
|
+
' A flag with no `label` is now aria-hidden. The unlabelled, non-decorative flag reached the ' +
|
|
40
|
+
'accessibility tree as a nameless graphic, which the guide already called out as the one case ' +
|
|
41
|
+
'that must not happen. Give a meaningful flag a `label` — including one whose only name came ' +
|
|
42
|
+
'from the projected image (`alt`, an SVG `<title>`), which the default now hides.',
|
|
43
|
+
' An inline <svg> is cropped instead of letterboxed. `object-fit: cover` is inert on an inline ' +
|
|
44
|
+
'<svg> — it is not a replaced element — so a source whose ratio differed from the shape used to ' +
|
|
45
|
+
'render with transparent bands; `square` and `circle` are the visible cases. The same flag ' +
|
|
46
|
+
'passed as an <img> always cropped, and the two now match.',
|
|
47
|
+
' --kbq-flag-empty-background resolves to an opaque neutral instead of the translucent disabled ' +
|
|
48
|
+
'state, so the `empty` placeholder no longer takes on the hue of the surface behind it.',
|
|
49
|
+
' The flag tokens are declared at zero specificity. An override that used to lose to .kbq-flag ' +
|
|
50
|
+
'on source order now wins, so a redundant `!important` or an extra selector can be dropped.'
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
exports.FLAG_OPEN_TAG = FLAG_OPEN_TAG;
|
|
54
|
+
exports.FLAG_PACKAGE = FLAG_PACKAGE;
|
|
55
|
+
exports.FLAG_TYPE = FLAG_TYPE;
|
|
56
|
+
exports.INNER_HTML_BINDING = INNER_HTML_BINDING;
|
|
57
|
+
exports.REWRITE_MESSAGE = REWRITE_MESSAGE;
|
|
58
|
+
exports.SUMMARY = SUMMARY;
|