@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
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# time-range-title-for
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@21`
|
|
4
|
+
(registered for `21.0.0-0`). Carries a time-range consumer across the two
|
|
5
|
+
changes of this release: the removal of `title.for` from the locale
|
|
6
|
+
configuration, and the component review that made `kbq-time-range` tell
|
|
7
|
+
Angular's forms layer the truth about itself. They ship in the same version, so
|
|
8
|
+
they ship as one schematic.
|
|
9
|
+
|
|
10
|
+
## Background
|
|
11
|
+
|
|
12
|
+
The title of `kbq-time-range` used to prepend `title.for` ("за" / "for") to the
|
|
13
|
+
selected period: "за последний час". The period now stands alone ("последний
|
|
14
|
+
час" / "Last hour"), and the duration templates of each locale carry whatever
|
|
15
|
+
word the period needs, so the key was removed.
|
|
16
|
+
|
|
17
|
+
The same release closed the gap between what the component claimed to the forms
|
|
18
|
+
layer and what it did. The published form-field adapter turned from a set of
|
|
19
|
+
declarations into a real implementation, and the manual `errorState` plumbing
|
|
20
|
+
went away with it.
|
|
21
|
+
|
|
22
|
+
| Member | Before | After |
|
|
23
|
+
| ------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------- |
|
|
24
|
+
| `KbqTimeRangeEditor.timepickerList` | view query | removed |
|
|
25
|
+
| `KbqTimeRangeTitleAsControl.value` / `empty` / `required` / `disabled` / `errorState` | writable, never set | read-only signals over the host and control |
|
|
26
|
+
| `KbqTimeRangeTitleAsControl.id` / `placeholder` / `focused` | writable, `undefined` | read-only signals, `id` generated |
|
|
27
|
+
| `KbqTimeRangeTitleAsControl.controlType` | writable | readonly |
|
|
28
|
+
| `KbqTimeRangeTitleAsControl.stateChanges` | never emitted | removed |
|
|
29
|
+
| `KbqTimeRange.value` / `KbqTimeRange.disabled` | absent | read-only signals |
|
|
30
|
+
| `KbqTimeRange.setDisabledState` / `KbqTimeRangeEditor.setDisabledState` | absent | implemented |
|
|
31
|
+
| `KbqTimeRangeTitle.disabled` | absent | signal input |
|
|
32
|
+
|
|
33
|
+
The one-line defect behind the review is worth naming. `mapTimeRange` assembled
|
|
34
|
+
its argument as `toDate: this.form.controls.toTime.value` — the _time_ control
|
|
35
|
+
feeding the _date_ slot — and `combineDateAndTime` takes the calendar date from
|
|
36
|
+
its first argument. A user who picked "to: 20 September" got a range ending on
|
|
37
|
+
whatever day the timepicker held. The form's own validator read `toDate`
|
|
38
|
+
correctly, so validation and emission disagreed about what the range was.
|
|
39
|
+
|
|
40
|
+
## Breaking change
|
|
41
|
+
|
|
42
|
+
**`title.for` was removed from `KbqTimeRangeLocaleConfiguration`.** A literal
|
|
43
|
+
typed against the configuration — a `kbqTimeRangeLocaleConfigurationProvider()`
|
|
44
|
+
argument, for one — fails to compile on the key with an excess-property error;
|
|
45
|
+
an untyped one silently loses the override.
|
|
46
|
+
|
|
47
|
+
## Behaviour change
|
|
48
|
+
|
|
49
|
+
**The title shows the period alone.** A custom title template receives the
|
|
50
|
+
period without a prefix in `formattedDate`. A word you prefixed through
|
|
51
|
+
`title.for` belongs in your `durationTemplate.title` overrides now.
|
|
52
|
+
|
|
53
|
+
## What it does
|
|
54
|
+
|
|
55
|
+
The schematic walks every `.ts`, `.html`, `.scss` and `.css` file in the project
|
|
56
|
+
(skipping `node_modules` and `dist`). Stylesheets are visited because the markup
|
|
57
|
+
change is what a descendant selector keyed on the radiogroup notices.
|
|
58
|
+
|
|
59
|
+
| Auto-fix | Where |
|
|
60
|
+
| --------------------------------------------------------------------- | ----- |
|
|
61
|
+
| Removes `for` from the `title` section of a time-range locale literal | `.ts` |
|
|
62
|
+
|
|
63
|
+
A `title` literal is treated as the time-range one when it belongs to a
|
|
64
|
+
`timeRange` section, to a `kbqTimeRangeLocaleConfigurationProvider()` argument,
|
|
65
|
+
or to a literal that also carries `editor` or `durationTemplate`. No type
|
|
66
|
+
resolution is involved — the schematic's virtual tree has no `@koobiq` types to
|
|
67
|
+
resolve against — so an unrelated `title: { for: … }` is never touched. The
|
|
68
|
+
property is deleted together with exactly one adjacent separator, so the literal
|
|
69
|
+
keeps its shape and nothing else in the file is reformatted.
|
|
70
|
+
|
|
71
|
+
## What it does _not_ do (warn-only)
|
|
72
|
+
|
|
73
|
+
| Pattern | Manual migration |
|
|
74
|
+
| --------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
75
|
+
| A read of `title.for` | Drop it — the title shows the period alone |
|
|
76
|
+
| A `for` key left in a `title` literal or template binding | Remove it, or ignore the report for an unrelated object |
|
|
77
|
+
| `.timepickerList` | Provide an `ErrorStateMatcher`; the editor no longer writes `errorState` by hand |
|
|
78
|
+
| `.errorState = …` and friends on the adapter | Drive the state through the bound form control; read it with a call |
|
|
79
|
+
| `.stateChanges` on the adapter | Read its signals in a `computed()` or an `effect()` |
|
|
80
|
+
| `(valueCorrected)` | Still emits, but only for values it actually corrected |
|
|
81
|
+
| `.kbq-radio-group .kbq-time-range-editor__range` | The from/to block is a sibling of the radiogroup now, not a descendant |
|
|
82
|
+
|
|
83
|
+
Warnings are checked against the **post-fix** content, so an auto-fixed literal
|
|
84
|
+
does not also report as needing manual work. In dry-run mode (`--fix false`)
|
|
85
|
+
they are reported against the original content instead.
|
|
86
|
+
|
|
87
|
+
A pattern that names a component member is only evaluated for a file that also
|
|
88
|
+
mentions `kbq-time-range`, so an unrelated `.timepickerList` of your own is not
|
|
89
|
+
reported. The gate is per file rather than per receiver: where a member name is
|
|
90
|
+
common (`.value`, `.disabled`), a report can point at an assignment to an
|
|
91
|
+
unrelated object in a file that happens to use the control. Read the report
|
|
92
|
+
before changing anything — it is a pointer, not a diagnosis. A
|
|
93
|
+
`control().stateChanges` read off a form field is left to `form-field-signals`.
|
|
94
|
+
|
|
95
|
+
### Notes with no call site to point at
|
|
96
|
+
|
|
97
|
+
- Ranges emitted before this release ended on the wrong calendar day. Persisted
|
|
98
|
+
values may need correcting.
|
|
99
|
+
- A disabled control is inert: the trigger leaves the tab order, the popover
|
|
100
|
+
refuses to open, and the host takes a `kbq-disabled` class.
|
|
101
|
+
- The control becomes `touched` when the popover closes, so a `required` time
|
|
102
|
+
range shows its error message at the moment the matcher intends instead of
|
|
103
|
+
never.
|
|
104
|
+
- The popover footer dropped its unnamed `role="group"`, and the from/to
|
|
105
|
+
prefixes are associated with their four inputs through `aria-labelledby`
|
|
106
|
+
instead of an inert `aria-label` on a bare `<span>`.
|
|
107
|
+
|
|
108
|
+
`fix` defaults to `true`. `ng update` invokes migrations with no options at all,
|
|
109
|
+
so the rule applies that default itself rather than relying on the schema.
|
|
110
|
+
|
|
111
|
+
[Params](schema.ts)
|
|
112
|
+
|
|
113
|
+
Usage for Angular Cli:
|
|
114
|
+
|
|
115
|
+
```shell
|
|
116
|
+
ng g @koobiq/components:time-range-title-for --project "<your project>"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Usage for Nx:
|
|
120
|
+
|
|
121
|
+
```shell
|
|
122
|
+
nx g @koobiq/components:time-range-title-for --project "<your project>"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Run locally
|
|
126
|
+
|
|
127
|
+
Build package
|
|
128
|
+
|
|
129
|
+
```shell
|
|
130
|
+
yarn run build:schematics
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Run command (for example, for `koobiq-docs` project)
|
|
134
|
+
|
|
135
|
+
```shell
|
|
136
|
+
ng g ./dist/components/schematics/collection.json:time-range-title-for --project koobiq-docs
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Result
|
|
140
|
+
|
|
141
|
+
#### Before
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
import { kbqTimeRangeLocaleConfigurationProvider } from '@koobiq/components/time-range';
|
|
145
|
+
|
|
146
|
+
export const timeRangeConfiguration = kbqTimeRangeLocaleConfigurationProvider({
|
|
147
|
+
title: {
|
|
148
|
+
for: 'за',
|
|
149
|
+
placeholder: 'Период'
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
#### After
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
import { kbqTimeRangeLocaleConfigurationProvider } from '@koobiq/components/time-range';
|
|
158
|
+
|
|
159
|
+
export const timeRangeConfiguration = kbqTimeRangeLocaleConfigurationProvider({
|
|
160
|
+
title: {
|
|
161
|
+
placeholder: 'Период'
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
```
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the time-range migration.
|
|
5
|
+
*
|
|
6
|
+
* Two changes to the same component land in the same release and ship as one schematic:
|
|
7
|
+
*
|
|
8
|
+
* - The `title` of `kbq-time-range` used to prepend `title.for` ("за" / "for") to the selected period.
|
|
9
|
+
* The period stands alone now ("последний час" / "Last hour") and the duration templates of each
|
|
10
|
+
* locale carry whatever word it needs, so the key was removed.
|
|
11
|
+
* - The component was made to tell Angular's forms layer the truth about itself: the end of a custom
|
|
12
|
+
* range was assembled from the *time* control instead of the *date* control, `setDisabledState` was
|
|
13
|
+
* implemented on both `KbqTimeRange` and `KbqTimeRangeEditor`, `onTouched` is called when the popover
|
|
14
|
+
* closes, `valueCorrected` compares the outcome instead of the shape of the input, the from/to block
|
|
15
|
+
* moved out of the radiogroup, and `KbqTimeRangeTitleAsControl` became a real `KbqFormFieldControl`
|
|
16
|
+
* instead of a set of declarations nothing ever assigned.
|
|
17
|
+
*
|
|
18
|
+
* Only the `for` removal has a mechanical translation. Everything else is reported: what replaces a
|
|
19
|
+
* write to a member that became a read-only signal is a binding on the host, or nothing at all, and
|
|
20
|
+
* neither can be derived from the assignment.
|
|
21
|
+
*/
|
|
22
|
+
/** The key removed from the `title` section of the time-range locale configuration. */
|
|
23
|
+
const REMOVED_KEY = 'for';
|
|
24
|
+
/** The section that held the removed key. */
|
|
25
|
+
const TITLE_KEY = 'title';
|
|
26
|
+
/** The time-range section of the locale data (`addLocale()`, `KBQ_LOCALE_DATA`, `[localeOverrides]`). */
|
|
27
|
+
const TIME_RANGE_KEY = 'timeRange';
|
|
28
|
+
/** The provider whose argument is a time-range locale configuration. */
|
|
29
|
+
const PROVIDER_NAME = 'kbqTimeRangeLocaleConfigurationProvider';
|
|
30
|
+
/** Siblings of `title` that only a time-range locale configuration has. */
|
|
31
|
+
const SIBLING_KEYS = ['editor', 'durationTemplate'];
|
|
32
|
+
/** Import specifier that marks a file as a time-range consumer. */
|
|
33
|
+
const TIME_RANGE_PACKAGE = '@koobiq/components/time-range';
|
|
34
|
+
/** Identifier and element shapes that mark a consumer without an import. */
|
|
35
|
+
const TIME_RANGE_TYPE = '\\bKbqTimeRange\\w*\\b|\\bkbq-time-range\\b';
|
|
36
|
+
/** The form-field adapter, whose members became read-only signals. */
|
|
37
|
+
const TITLE_AS_CONTROL_TYPE = '\\bKbqTimeRangeTitleAsControl\\b|\\bkbq-time-range-title-as-control\\b';
|
|
38
|
+
/**
|
|
39
|
+
* Cheap pre-check gating the AST parse: a `for` member of an object literal (`for:` or `'for':`). A
|
|
40
|
+
* preceding word character or dot rules out longer identifiers and property reads, which are warn-only.
|
|
41
|
+
*/
|
|
42
|
+
const FOR_MEMBER_PATTERN = /(?:^|[^.\w$])(['"]?)for\1\s*:/;
|
|
43
|
+
/** Whether a file is a time-range consumer at all, by import or by name. */
|
|
44
|
+
const referencesTimeRange = (content) => content.includes(TIME_RANGE_PACKAGE) || new RegExp(TIME_RANGE_TYPE).test(content);
|
|
45
|
+
/**
|
|
46
|
+
* Warnings for `.ts`, `.html`, `.scss` and `.css` files, inline templates included. Checked against the
|
|
47
|
+
* post-fix content, so the `for` ones only fire on what the fix left behind. An anchored pattern names a
|
|
48
|
+
* member of the component, so the file has to be a consumer before a match means anything.
|
|
49
|
+
*/
|
|
50
|
+
const warnPatterns = [
|
|
51
|
+
{
|
|
52
|
+
pattern: '\\btitle\\.for\\b',
|
|
53
|
+
message: 'The `for` key was removed from the title section of the time-range locale configuration: the ' +
|
|
54
|
+
'title shows the period alone. Drop this read. Manual migration required.'
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
pattern: '\\btitle\\s*:\\s*\\{[^{}]*\\bfor\\s*:',
|
|
58
|
+
message: 'A `for` key in a `title` section the fix did not rewrite: a time-range locale override it could not ' +
|
|
59
|
+
'recognise, or one bound in a template. Remove the key, or ignore this if the object is not a ' +
|
|
60
|
+
'time-range locale override.'
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
anchor: TIME_RANGE_TYPE,
|
|
64
|
+
pattern: '\\.\\s*timepickerList\\b',
|
|
65
|
+
message: 'KbqTimeRangeEditor.timepickerList was removed together with the statusChanges subscription ' +
|
|
66
|
+
'that wrote errorState onto the first timepicker by hand. It only ever marked the `from` ' +
|
|
67
|
+
'field, leaving the `to` field - the one an inverted range usually needs - looking valid. ' +
|
|
68
|
+
'Both pairs take their error state from ErrorStateMatcher now; provide your own matcher ' +
|
|
69
|
+
'through the ErrorStateMatcher token if you need different timing.'
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
anchor: TITLE_AS_CONTROL_TYPE,
|
|
73
|
+
// `control().stateChanges` read off a form field is reported by `form-field-signals`.
|
|
74
|
+
pattern: '\\.\\s*(?:errorState|empty|required|disabled|focused|id|placeholder|value|controlType)\\s*=(?!=)|' +
|
|
75
|
+
'(?<!control\\(\\)\\??)\\.\\s*stateChanges\\b',
|
|
76
|
+
message: 'A write to a member of a KbqTimeRangeTitleAsControl, or a read of its stateChanges - ignore this ' +
|
|
77
|
+
'if the receiver is another object, the anchor is the file, not the expression: value, id, ' +
|
|
78
|
+
'placeholder, focused, empty, required, disabled and errorState are no longer assignable, and ' +
|
|
79
|
+
'stateChanges was removed. They were declared and never written, so a form field around the ' +
|
|
80
|
+
'control rendered once against undefined state; they are read-only signals derived from the host ' +
|
|
81
|
+
'and the bound NgControl now, and controlType is readonly. Drive them through the form control ' +
|
|
82
|
+
'instead of assigning them, read them with a call - errorState() - and read the signals in a ' +
|
|
83
|
+
'computed() or an effect() where you subscribed to stateChanges.'
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
anchor: TIME_RANGE_TYPE,
|
|
87
|
+
pattern: '\\bvalueCorrected\\b',
|
|
88
|
+
message: 'valueCorrected now fires only when the correction produced a different range. It used to ' +
|
|
89
|
+
'fire on every write of a value with no startDateTime, which the allTime preset legitimately ' +
|
|
90
|
+
'produces - a host that wrote the payload back looped on it. A handler that counted emissions ' +
|
|
91
|
+
'or relied on one arriving for allTime sees fewer of them.'
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
anchor: TIME_RANGE_TYPE,
|
|
95
|
+
pattern: '\\bkbq-time-range-editor__(?:range|container)(?![\\w-])',
|
|
96
|
+
message: 'The editor markup changed: the from/to block is a sibling of the radiogroup rather than a ' +
|
|
97
|
+
'child of it, because a role="radiogroup" must not own two datepickers and two timepickers. ' +
|
|
98
|
+
'.kbq-time-range-editor__container is the flex column that holds both, the range radio ' +
|
|
99
|
+
'carries .kbq-time-range-editor__range-option, and .kbq-time-range-editor__range holds only ' +
|
|
100
|
+
'the two date/time rows. A selector that descends from the radiogroup no longer matches.'
|
|
101
|
+
}
|
|
102
|
+
];
|
|
103
|
+
/** Behaviour note printed once per run — the parts no call site can point at. */
|
|
104
|
+
const BEHAVIOUR_NOTE = [
|
|
105
|
+
'Time-range title behaviour changed:',
|
|
106
|
+
' - The title no longer prepends `title.for` to the selected period: it reads "последний час" /',
|
|
107
|
+
' "Last hour" rather than "за последний час" / "for last hour". A custom title template receives',
|
|
108
|
+
' the period alone in `formattedDate`.',
|
|
109
|
+
' - If you prefixed a word through `title.for`, move it into your `durationTemplate.title` overrides.',
|
|
110
|
+
'',
|
|
111
|
+
'Time-range forms contract changed:',
|
|
112
|
+
' - The end of a custom range is built from the `to` date control instead of the `to` time control.',
|
|
113
|
+
' Ranges emitted before this fix ended on whatever calendar day the timepicker held - today, or the',
|
|
114
|
+
' day of the previously applied value - rather than the day the user picked. Persisted ranges may',
|
|
115
|
+
' need correcting; the form validated the range the user saw while the component emitted a different',
|
|
116
|
+
' one, so an inverted range could pass validation and a valid one fail it.',
|
|
117
|
+
' - setDisabledState is implemented on KbqTimeRange and KbqTimeRangeEditor. A disabled control drops',
|
|
118
|
+
' the trigger out of the tab order, refuses to open the popover and takes a kbq-disabled host class;',
|
|
119
|
+
' it used to look and behave enabled while Angular silently discarded the value.',
|
|
120
|
+
' - onTouched is called when the popover closes, so the control becomes `touched` after the first',
|
|
121
|
+
' interaction. Every ErrorStateMatcher in the library keys error display off that, so a required',
|
|
122
|
+
' time range that never showed its message now shows it at the right moment.',
|
|
123
|
+
' - The popover footer no longer wraps Apply and Cancel in an unnamed role="group", and the from/to',
|
|
124
|
+
' prefixes carry an id that the four inputs point at with aria-labelledby instead of an inert',
|
|
125
|
+
' aria-label on a bare <span>.'
|
|
126
|
+
];
|
|
127
|
+
|
|
128
|
+
exports.BEHAVIOUR_NOTE = BEHAVIOUR_NOTE;
|
|
129
|
+
exports.FOR_MEMBER_PATTERN = FOR_MEMBER_PATTERN;
|
|
130
|
+
exports.PROVIDER_NAME = PROVIDER_NAME;
|
|
131
|
+
exports.REMOVED_KEY = REMOVED_KEY;
|
|
132
|
+
exports.SIBLING_KEYS = SIBLING_KEYS;
|
|
133
|
+
exports.TIME_RANGE_KEY = TIME_RANGE_KEY;
|
|
134
|
+
exports.TIME_RANGE_PACKAGE = TIME_RANGE_PACKAGE;
|
|
135
|
+
exports.TIME_RANGE_TYPE = TIME_RANGE_TYPE;
|
|
136
|
+
exports.TITLE_AS_CONTROL_TYPE = TITLE_AS_CONTROL_TYPE;
|
|
137
|
+
exports.TITLE_KEY = TITLE_KEY;
|
|
138
|
+
exports.referencesTimeRange = referencesTimeRange;
|
|
139
|
+
exports.warnPatterns = warnPatterns;
|
|
@@ -0,0 +1,164 @@
|
|
|
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 migrations_timeRangeTitleFor_data = require('./data.cjs');
|
|
10
|
+
require('@angular-devkit/schematics');
|
|
11
|
+
require('@schematics/angular/utility');
|
|
12
|
+
|
|
13
|
+
const TS_EXT = '.ts';
|
|
14
|
+
const HTML_EXT = '.html';
|
|
15
|
+
const STYLE_EXTENSIONS = ['.scss', '.css'];
|
|
16
|
+
const LABEL = '[time-range-title-for]';
|
|
17
|
+
const createSourceFile = (fileName, content) => ts.createSourceFile(fileName, content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
18
|
+
/** Property name of an object-literal member, for the forms a locale literal can use. */
|
|
19
|
+
function propertyName(property) {
|
|
20
|
+
if (!ts.isPropertyAssignment(property))
|
|
21
|
+
return null;
|
|
22
|
+
if (!ts.isIdentifier(property.name) && !ts.isStringLiteralLike(property.name))
|
|
23
|
+
return null;
|
|
24
|
+
return property.name.text;
|
|
25
|
+
}
|
|
26
|
+
function calleeName(call) {
|
|
27
|
+
const callee = call.expression;
|
|
28
|
+
if (ts.isIdentifier(callee))
|
|
29
|
+
return callee.text;
|
|
30
|
+
if (ts.isPropertyAccessExpression(callee))
|
|
31
|
+
return callee.name.text;
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Whether an object literal is the `title` section of a time-range locale configuration: the `title` of
|
|
36
|
+
* a `timeRange` section, of a `kbqTimeRangeLocaleConfigurationProvider()` argument, or of a literal that
|
|
37
|
+
* also carries a time-range-only sibling ({@link SIBLING_KEYS}). No type resolution is involved: the
|
|
38
|
+
* schematic's virtual tree has no `@koobiq` types to resolve against.
|
|
39
|
+
*/
|
|
40
|
+
function isTimeRangeTitle(node) {
|
|
41
|
+
const assignment = node.parent;
|
|
42
|
+
if (propertyName(assignment) !== migrations_timeRangeTitleFor_data.TITLE_KEY)
|
|
43
|
+
return false;
|
|
44
|
+
const section = assignment.parent;
|
|
45
|
+
if (!ts.isObjectLiteralExpression(section))
|
|
46
|
+
return false;
|
|
47
|
+
const owner = section.parent;
|
|
48
|
+
if (propertyName(owner) === migrations_timeRangeTitleFor_data.TIME_RANGE_KEY)
|
|
49
|
+
return true;
|
|
50
|
+
if (ts.isCallExpression(owner) && calleeName(owner) === migrations_timeRangeTitleFor_data.PROVIDER_NAME)
|
|
51
|
+
return true;
|
|
52
|
+
return section.properties.some((property) => migrations_timeRangeTitleFor_data.SIBLING_KEYS.includes(propertyName(property) ?? ''));
|
|
53
|
+
}
|
|
54
|
+
/** Spans of every removable `for` property across the file. */
|
|
55
|
+
function collectSpans(sourceFile) {
|
|
56
|
+
const spans = [];
|
|
57
|
+
const visit = (node) => {
|
|
58
|
+
if (ts.isObjectLiteralExpression(node) && isTimeRangeTitle(node)) {
|
|
59
|
+
for (const property of node.properties) {
|
|
60
|
+
if (propertyName(property) === migrations_timeRangeTitleFor_data.REMOVED_KEY) {
|
|
61
|
+
spans.push({ start: property.getStart(sourceFile), end: property.getEnd() });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
ts.forEachChild(node, visit);
|
|
66
|
+
};
|
|
67
|
+
ts.forEachChild(sourceFile, visit);
|
|
68
|
+
return spans;
|
|
69
|
+
}
|
|
70
|
+
/** A comma and the whitespace — at most one line break — that separates two members. */
|
|
71
|
+
const SEPARATOR_BEFORE = /,[ \t]*\r?\n?[ \t]*$/;
|
|
72
|
+
const SEPARATOR_AFTER = /^,[ \t]*\r?\n?[ \t]*/;
|
|
73
|
+
/**
|
|
74
|
+
* Deletes the given properties right-to-left, so earlier offsets stay valid, each together with exactly
|
|
75
|
+
* one adjacent separator — the preceding one when the property has one — so the literal keeps its shape
|
|
76
|
+
* and nothing around it is reformatted. A sole property leaves an empty literal rather than a stray comma.
|
|
77
|
+
*/
|
|
78
|
+
function removeProperties(content, spans) {
|
|
79
|
+
let result = content;
|
|
80
|
+
for (const { start, end } of [...spans].sort((a, b) => b.start - a.start)) {
|
|
81
|
+
const before = SEPARATOR_BEFORE.exec(result.slice(0, start));
|
|
82
|
+
const after = before ? null : SEPARATOR_AFTER.exec(result.slice(end));
|
|
83
|
+
result = result.slice(0, before ? before.index : start) + result.slice(end + (after ? after[0].length : 0));
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
function logWarnings(context, filePath, content) {
|
|
88
|
+
const consumer = migrations_timeRangeTitleFor_data.referencesTimeRange(content);
|
|
89
|
+
for (const { anchor, pattern, message } of migrations_timeRangeTitleFor_data.warnPatterns) {
|
|
90
|
+
// An anchored pattern names a member of the component, so a file that never mentions the
|
|
91
|
+
// component cannot hold a call site it is about.
|
|
92
|
+
if (anchor && (!consumer || !new RegExp(anchor).test(content)))
|
|
93
|
+
continue;
|
|
94
|
+
if (new RegExp(pattern).test(content)) {
|
|
95
|
+
utils_messages.logMessage(context.logger, [`${LABEL} ${filePath}`, ` ${message}`]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function isMigratableFile(filePath) {
|
|
100
|
+
return (filePath.endsWith(TS_EXT) ||
|
|
101
|
+
filePath.endsWith(HTML_EXT) ||
|
|
102
|
+
STYLE_EXTENSIONS.some((extension) => filePath.endsWith(extension)));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Removes `title.for` from time-range locale configuration literals and reports everything else the
|
|
106
|
+
* component review breaks: the removed `timepickerList`, the `KbqTimeRangeTitleAsControl` members that
|
|
107
|
+
* became read-only signals, the narrowed `valueCorrected` and the editor markup that moved the
|
|
108
|
+
* from/to block out of the radiogroup. Only the `for` removal is written back — what replaces a write
|
|
109
|
+
* to a derived member is a binding on the host, or nothing at all.
|
|
110
|
+
*
|
|
111
|
+
* Stylesheets are visited as well, because the markup change is what a descendant selector keyed on the
|
|
112
|
+
* radiogroup notices. The two changes ship in one release, so they ship as one schematic.
|
|
113
|
+
*/
|
|
114
|
+
function timeRangeTitleFor(options) {
|
|
115
|
+
return async (tree, context) => {
|
|
116
|
+
const { project } = options;
|
|
117
|
+
// ng update invokes migrations with no options at all, and migrations.json declares no
|
|
118
|
+
// schema, so the schema default never reaches us — applying the fix is the intended
|
|
119
|
+
// behaviour there.
|
|
120
|
+
const fix = options.fix ?? true;
|
|
121
|
+
const projectDefinition = await utils_packageConfig.setupOptions(project, tree);
|
|
122
|
+
const root = projectDefinition?.root ?? '';
|
|
123
|
+
const rootDir = root ? tree.getDir(root) : tree.root;
|
|
124
|
+
const filePaths = [];
|
|
125
|
+
utils_projectFiles.visitProjectFiles(rootDir, (filePath) => {
|
|
126
|
+
if (!isMigratableFile(filePath))
|
|
127
|
+
return;
|
|
128
|
+
filePaths.push(filePath);
|
|
129
|
+
});
|
|
130
|
+
let touched = 0;
|
|
131
|
+
for (const filePath of filePaths) {
|
|
132
|
+
const originalContent = tree.read(filePath)?.toString();
|
|
133
|
+
if (!originalContent)
|
|
134
|
+
continue;
|
|
135
|
+
let content = originalContent;
|
|
136
|
+
// Parsing every .ts of the project is not free, and a file with no `for` member at all
|
|
137
|
+
// cannot hold a literal to fix.
|
|
138
|
+
if (filePath.endsWith(TS_EXT) && migrations_timeRangeTitleFor_data.FOR_MEMBER_PATTERN.test(content)) {
|
|
139
|
+
content = removeProperties(content, collectSpans(createSourceFile(filePath, content)));
|
|
140
|
+
}
|
|
141
|
+
// Warn on what is left over, so an auto-fixed literal does not also produce a "manual
|
|
142
|
+
// migration required" note. In dry-run mode the fix is not written, so report against the
|
|
143
|
+
// original content.
|
|
144
|
+
logWarnings(context, filePath, fix ? content : originalContent);
|
|
145
|
+
if (content === originalContent)
|
|
146
|
+
continue;
|
|
147
|
+
touched++;
|
|
148
|
+
if (fix) {
|
|
149
|
+
tree.overwrite(filePath, content);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
utils_messages.logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
utils_messages.logMessage(context.logger, [
|
|
156
|
+
`${LABEL} processed tree under "${root || '<workspace root>'}", ` +
|
|
157
|
+
`${fix ? 'updated' : 'would update'} ${touched} file(s).`,
|
|
158
|
+
'',
|
|
159
|
+
...migrations_timeRangeTitleFor_data.BEHAVIOUR_NOTE
|
|
160
|
+
]);
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
exports.default = timeRangeTitleFor;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "koobiq-components-time-range-title-for",
|
|
4
|
+
"title": "Koobiq components time-range title.for removal",
|
|
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,78 @@
|
|
|
1
|
+
# timepicker-signals
|
|
2
|
+
|
|
3
|
+
Migration schematic invoked automatically by `ng update @koobiq/components@21` (registered for
|
|
4
|
+
`21.0.0-0`). Migrates `KbqTimepicker` consumers to its signal-based inputs.
|
|
5
|
+
|
|
6
|
+
## Background
|
|
7
|
+
|
|
8
|
+
The `KbqFormFieldControl` members of `KbqTimepicker` - `value`, `id`, `placeholder`, `required`,
|
|
9
|
+
`disabled`, `focused`, `empty` and `errorState` - are signals, migrated by `form-field-signals`: reads
|
|
10
|
+
become calls, a write to `disabled` becomes `.set()`, a write to the rest is reported. This schematic
|
|
11
|
+
covers the four inputs the timepicker owns.
|
|
12
|
+
|
|
13
|
+
`min` and `max` parsed in their setters and reported the parsed result:
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
set min(value: D | null) {
|
|
17
|
+
this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
|
|
18
|
+
this.validatorOnChange();
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
So an unparseable bound value read back as `null`. They report what was bound now; the parsed values
|
|
23
|
+
stay internal and still drive the validators, re-run from `ngOnChanges` when either input changes -
|
|
24
|
+
synchronously with the binding, the way the setters did.
|
|
25
|
+
|
|
26
|
+
`kbqValidationTooltip` was a setter-only input that subscribed to `incorrectInput` every time it ran, so
|
|
27
|
+
re-binding it stacked another subscription.
|
|
28
|
+
|
|
29
|
+
## What it rewrites
|
|
30
|
+
|
|
31
|
+
| Before | After |
|
|
32
|
+
| --------------------------- | ----------------------------- |
|
|
33
|
+
| `timepicker.format` | `timepicker.format()` |
|
|
34
|
+
| `this.timepicker()?.format` | `this.timepicker()?.format()` |
|
|
35
|
+
| `{{ tp.format }}` in a view | `{{ tp.format() }}` |
|
|
36
|
+
|
|
37
|
+
On receivers typed `KbqTimepicker` - by annotation, including an aliased import, or by `inject()`,
|
|
38
|
+
`viewChild()` and `contentChild()` - and through `!`, parentheses and `as`. Each name is resolved in its
|
|
39
|
+
own scope, so a nested binding that shadows the receiver, `this` inside a `function` that rebinds it, and
|
|
40
|
+
a parameter that only exists in a type position are left alone. Already-migrated reads are left alone too,
|
|
41
|
+
so the schematic is idempotent.
|
|
42
|
+
|
|
43
|
+
The template pass follows reference variables bound through the directive's `exportAs`,
|
|
44
|
+
`#tp="kbqTimepicker"`, in external and inline templates. A bare `#tp` on the native `<input>` is the
|
|
45
|
+
element itself, so it is not touched.
|
|
46
|
+
|
|
47
|
+
## What it does _not_ do
|
|
48
|
+
|
|
49
|
+
| Pattern | Manual migration |
|
|
50
|
+
| ------------------------------------------------------ | ------------------------------------------------------------------------------------- |
|
|
51
|
+
| `.min` / `.max` | `min()` / `max()` - a read without the call is always truthy; expect the bound value |
|
|
52
|
+
| Any write, incl. `??=`, `+=`, `++`, `delete` | Bind `[format]`, `[min]`, `[max]` or `[kbqValidationTooltip]`; every form is reported |
|
|
53
|
+
| `query.format` on an uncalled `viewChild()` | Read it as `query()?.format()` |
|
|
54
|
+
| `KbqTimepicker` named in a union, array or `QueryList` | Reported with its line; resolve the receiver by hand |
|
|
55
|
+
|
|
56
|
+
A `@ViewChild(KbqTimepicker)` field holds the instance itself, so its reads are rewritten with a single
|
|
57
|
+
`()` and no double call is suggested.
|
|
58
|
+
|
|
59
|
+
## Notes with no call site to point at
|
|
60
|
+
|
|
61
|
+
- **A re-bound `kbqValidationTooltip` no longer stacks subscriptions.** After several re-binds one rejected
|
|
62
|
+
keystroke used to open every tooltip ever bound. It is an effect with a teardown now, which also gives an
|
|
63
|
+
unbound tooltip its own trigger and delay back.
|
|
64
|
+
- **A locale change reformats the rendered time even when the placeholder was set by the consumer.**
|
|
65
|
+
The effect used to return early on a consumer-provided placeholder, which skipped the reformat with
|
|
66
|
+
it; the two are separate concerns now.
|
|
67
|
+
- **Generated ids come from the CDK `_IdGenerator`** instead of a module-level counter. The shape is
|
|
68
|
+
unchanged for a default `APP_ID`: the CDK omits the app id when it is `ng`, and the counter still starts
|
|
69
|
+
at 0, so a real app keeps getting `kbq-timepicker-0`. Only an app that sets `APP_ID` explicitly sees it
|
|
70
|
+
in the id, right before the counter and with no separator.
|
|
71
|
+
|
|
72
|
+
## Running it manually
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
ng generate @koobiq/components:timepicker-signals --project my-app
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Pass `--fix=false` to see what it would change without writing.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Data for the `timepicker-signals` migration.
|
|
5
|
+
*
|
|
6
|
+
* The `KbqFormFieldControl` members of `KbqTimepicker` (`value`, `id`, `placeholder`, `required`, `disabled`,
|
|
7
|
+
* `focused`, `empty`, `errorState`) are signals too, but `form-field-signals` migrates them. This migration
|
|
8
|
+
* covers the four inputs the timepicker owns.
|
|
9
|
+
*
|
|
10
|
+
* - `timepicker.format` → `timepicker.format()` (value unchanged — auto-fixed)
|
|
11
|
+
* - `timepicker.min` / `max` → signals whose value changed: the getters returned the parsed date (reported)
|
|
12
|
+
* - `kbqValidationTooltip` → a read-only input driven by an effect (writes reported)
|
|
13
|
+
*/
|
|
14
|
+
const TARGETS = [
|
|
15
|
+
{
|
|
16
|
+
type: 'KbqTimepicker',
|
|
17
|
+
signalMembers: ['format'],
|
|
18
|
+
reportedMembers: ['min', 'max'],
|
|
19
|
+
readOnlyMembers: ['format', 'min', 'max', 'kbqValidationTooltip'],
|
|
20
|
+
exportAs: ['kbqTimepicker'],
|
|
21
|
+
elements: [],
|
|
22
|
+
writeAdvice: 'Bind `[format]`, `[min]`, `[max]` and `[kbqValidationTooltip]` in the template instead.'
|
|
23
|
+
}
|
|
24
|
+
];
|
|
25
|
+
/** Methods on a signal, whose presence after the member means the read is already migrated. */
|
|
26
|
+
const SIGNAL_API_METHODS = new Set(['set', 'update', 'asReadonly', 'subscribe']);
|
|
27
|
+
/** Import specifier that marks a file as a timepicker consumer. */
|
|
28
|
+
const TIMEPICKER_PACKAGE = '@koobiq/components/timepicker';
|
|
29
|
+
/** Reported for writes to members that are read-only now, whatever form the write takes. */
|
|
30
|
+
const writeMessage = (type, members, advice) => `These ${type} members are read-only signals now, so these writes no longer compile: ` +
|
|
31
|
+
`${[...members].join(', ')}. That covers compound assignments (\`??=\`, \`+=\`), increments, \`delete\` ` +
|
|
32
|
+
`and destructuring targets as well as a plain \`=\`. ${advice}`;
|
|
33
|
+
/** Reported for reads of `min` / `max`, which have to become calls and changed what they return. */
|
|
34
|
+
const reportedMessage = (members) => `These KbqTimepicker reads were left untouched: ${[...members].join(', ')}. Add \`()\` - a read ` +
|
|
35
|
+
'without the call is the signal itself, a function, so `if (timepicker.min)` always passes - and ' +
|
|
36
|
+
'expect the value that was bound rather than the parsed date: the getters returned ' +
|
|
37
|
+
'`getValidDateOrNull(dateAdapter.deserialize(bound))`, so an unparseable bound value used to read as ' +
|
|
38
|
+
'`null` and reads as itself now.';
|
|
39
|
+
/**
|
|
40
|
+
* Reported for a read through a signal query, which is a signal holding the instance: the read needs two
|
|
41
|
+
* calls rather than one. Emitted from the AST pass rather than a regex, so a `@ViewChild` field - which holds
|
|
42
|
+
* the instance itself - is never mistaken for one.
|
|
43
|
+
*/
|
|
44
|
+
const signalQueryMessage = (member, required) => `A signal query holds the instance behind a call of its own, so reading \`${member}\` through it needs ` +
|
|
45
|
+
`two calls: \`this.query()${required ? '' : '?'}.${member}()\`.` +
|
|
46
|
+
(required ? '' : ' The query is optional, so keep the `?.`.') +
|
|
47
|
+
' Those reads are left untouched - migrate them by hand.';
|
|
48
|
+
/** Reported when a template references the timepicker but cannot be parsed, so nothing in it was inspected. */
|
|
49
|
+
const UNPARSEABLE_TEMPLATE_MESSAGE = 'This template references the timepicker but could not be parsed, so it was left untouched. Migrate ' +
|
|
50
|
+
'reads through its `#ref="kbqTimepicker"` reference variables by hand. If every template is reported ' +
|
|
51
|
+
'this way, `@angular/compiler` could not be loaded from this install.';
|
|
52
|
+
/**
|
|
53
|
+
* Reported when a file names `KbqTimepicker` in a type position the receiver pass cannot scope to a single
|
|
54
|
+
* identifier - a union, an array, a `QueryList<…>`, a return type - or reads a member in a shape the access
|
|
55
|
+
* pass cannot reach.
|
|
56
|
+
*/
|
|
57
|
+
const UNRESOLVED_RECEIVER_MESSAGE = 'KbqTimepicker is used here in a way this migration cannot resolve to a single receiver, so any signal ' +
|
|
58
|
+
'read through it was left untouched. Check these lines by hand:';
|
|
59
|
+
/** Printed once per project, after the per-file reports. */
|
|
60
|
+
const SUMMARY = [
|
|
61
|
+
' A re-bound `kbqValidationTooltip` no longer stacks subscriptions. The setter subscribed to ' +
|
|
62
|
+
'`incorrectInput` every time it ran, so after several re-binds one rejected keystroke opened every ' +
|
|
63
|
+
'tooltip ever bound. It is an effect with a teardown now, which also gives an unbound tooltip its own ' +
|
|
64
|
+
'trigger and delay back.',
|
|
65
|
+
' A locale change reformats the rendered time even when the placeholder was set by the consumer. The ' +
|
|
66
|
+
'effect used to return early on a consumer-provided placeholder, which skipped the reformat with ' +
|
|
67
|
+
'it — the two are separate concerns now.',
|
|
68
|
+
' Generated ids come from the CDK `_IdGenerator` instead of a module-level counter. The shape is ' +
|
|
69
|
+
'unchanged for a default `APP_ID`: the CDK omits the app id when it is `ng`, and the counter still ' +
|
|
70
|
+
'starts at 0, so a real app keeps getting `kbq-timepicker-0`. Only an app that sets `APP_ID` ' +
|
|
71
|
+
'explicitly sees it in the id, right before the counter and with no separator.'
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
exports.SIGNAL_API_METHODS = SIGNAL_API_METHODS;
|
|
75
|
+
exports.SUMMARY = SUMMARY;
|
|
76
|
+
exports.TARGETS = TARGETS;
|
|
77
|
+
exports.TIMEPICKER_PACKAGE = TIMEPICKER_PACKAGE;
|
|
78
|
+
exports.UNPARSEABLE_TEMPLATE_MESSAGE = UNPARSEABLE_TEMPLATE_MESSAGE;
|
|
79
|
+
exports.UNRESOLVED_RECEIVER_MESSAGE = UNRESOLVED_RECEIVER_MESSAGE;
|
|
80
|
+
exports.reportedMessage = reportedMessage;
|
|
81
|
+
exports.signalQueryMessage = signalQueryMessage;
|
|
82
|
+
exports.writeMessage = writeMessage;
|