@koobiq/components 20.4.1 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-trigger.scss +3 -10
- package/accordion/accordion.scss +4 -6
- package/actions-panel/actions-panel-container.scss +45 -1
- package/alert/alert.component.scss +3 -2
- package/app-switcher/_app-switcher-theme.scss +0 -4
- package/app-switcher/app-switcher-dropdown-app.scss +3 -2
- package/app-switcher/app-switcher-dropdown-site.scss +2 -1
- package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
- package/app-switcher/app-switcher-tokens.scss +15 -0
- package/app-switcher/app-switcher.scss +14 -4
- package/autocomplete/autocomplete.scss +7 -6
- package/badge/badge.component.scss +5 -8
- package/breadcrumbs/breadcrumbs.scss +25 -10
- package/button/_button-base.scss +30 -7
- package/button/_button-theme.scss +16 -0
- package/button/button-group.scss +7 -0
- package/button/button-tokens.scss +0 -2
- package/button/button.scss +34 -2
- package/button-toggle/_button-toggle-theme.scss +7 -2
- package/button-toggle/button-toggle.scss +65 -15
- package/checkbox/_checkbox-theme.scss +4 -3
- package/checkbox/checkbox.scss +3 -6
- package/clamped-text/clamped-text.scss +6 -2
- package/code-block/code-block-tokens.scss +0 -224
- package/code-block/code-block.scss +20 -9
- package/content-panel/content-panel-aside.scss +3 -2
- package/content-panel/content-panel-container.scss +37 -0
- package/content-panel/content-panel.scss +4 -3
- package/core/highlight/_highlight-theme.scss +3 -1
- package/core/option/action-container.scss +2 -2
- package/core/option/action.scss +2 -1
- package/core/option/option.scss +2 -1
- package/core/pop-up/_pop-up.scss +0 -37
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
- package/core/styles/_core.scss +3 -0
- package/core/styles/_koobiq-theme.scss +5 -6
- package/core/styles/common/_animation.scss +44 -16
- package/core/styles/common/_groups-mixins.scss +21 -19
- package/core/styles/common/_groups.scss +4 -32
- package/core/styles/common/_index.scss +0 -2
- package/core/styles/common/_link.scss +117 -0
- package/core/styles/common/_list.scss +0 -26
- package/core/styles/common/_overlay.scss +8 -10
- package/core/styles/common/_rtl.scss +0 -14
- package/core/styles/common/_select.scss +33 -15
- package/core/styles/common/_squircle.scss +63 -0
- package/core/styles/common/_tokens.scss +0 -11
- package/core/styles/common/_vendor-prefixes.scss +0 -20
- package/core/styles/functions/_timing.scss +0 -22
- package/core/styles/theming/_scrollbar-theme.scss +6 -1
- package/core/styles/theming/_theming.scss +13 -65
- package/core/styles/typography/_index.scss +0 -1
- package/core/styles/typography/_typography.scss +0 -143
- package/core/styles/visual/_body.scss +1 -6
- package/core/styles/visual/_layout.scss +0 -12
- package/datepicker/calendar-body.scss +3 -1
- package/datepicker/calendar-header.scss +0 -1
- package/datepicker/datepicker-content.scss +33 -1
- package/datepicker/datepicker-toggle.scss +0 -38
- package/dl/dl-tokens.scss +10 -0
- package/dl/dl.scss +113 -13
- package/dropdown/_dropdown-theme.scss +4 -16
- package/dropdown/dropdown-item.scss +4 -10
- package/dropdown/dropdown.scss +2 -1
- package/empty-state/_empty-state-theme.scss +10 -4
- package/empty-state/empty-state-tokens.scss +4 -4
- package/empty-state/empty-state.scss +4 -0
- package/fesm2022/koobiq-components-accordion.mjs +347 -229
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +39 -39
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +46 -48
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +332 -116
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +172 -132
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +755 -601
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +260 -143
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +4342 -1595
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +73 -36
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +447 -89
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +703 -599
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
- package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +116 -60
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +550 -290
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +2810 -2538
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +79 -24
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +389 -525
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +366 -136
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +601 -459
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
- package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-link.mjs +328 -125
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +583 -433
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +55 -78
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +853 -475
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +895 -556
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +680 -310
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +684 -285
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +450 -231
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +127 -21
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +883 -693
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +207 -88
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +815 -41
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +109 -88
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
- package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +890 -501
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +63 -49
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +1062 -603
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +886 -733
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +213 -185
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +299 -147
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +233 -245
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +344 -142
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +229 -145
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +486 -165
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +177 -130
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +657 -214
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +61 -32
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +719 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1506 -558
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +290 -135
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/dropzone.scss +31 -3
- package/file-upload/file-upload-tokens.scss +2 -22
- package/file-upload/file-upload.scss +6 -0
- package/file-upload/multiple-file-upload.component.scss +14 -12
- package/file-upload/single-file-upload.component.scss +3 -2
- package/filter-bar/filters.scss +7 -0
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +8 -1
- package/flag/flag-tokens.scss +22 -0
- package/flag/flag.scss +34 -21
- package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
- package/form-field/_form-field-theme.scss +4 -9
- package/form-field/cleaner.scss +3 -1
- package/form-field/fieldset.scss +3 -4
- package/form-field/form-field.scss +26 -21
- package/form-field/password-toggle.scss +3 -1
- package/icon/_icon-button-theme.scss +7 -0
- package/icon/_icon-theme.scss +10 -7
- package/icon/icon-button.scss +0 -2
- package/icon/icon-tokens.scss +12 -9
- package/inline-edit/inline-edit.scss +40 -54
- package/input/input.scss +4 -0
- package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
- package/link/deprecated/link-tokens.scss +27 -0
- package/link/link-tokens.scss +6 -25
- package/link/link.scss +137 -0
- package/list/list.scss +3 -2
- package/loader-overlay/_loader-overlay-theme.scss +19 -10
- package/loader-overlay/loader-overlay-tokens.scss +0 -2
- package/loader-overlay/loader-overlay.scss +7 -1
- package/markdown/_markdown-theme.scss +16 -0
- package/markdown/markdown-tokens.scss +5 -0
- package/markdown/markdown.scss +2 -1
- package/modal/_modal-animation.scss +23 -14
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal.scss +35 -31
- package/navbar/_navbar-item_horizontal.scss +8 -6
- package/navbar/_navbar-item_vertical.scss +18 -6
- package/navbar/_navbar-theme.scss +9 -1
- package/navbar/navbar-brand.scss +8 -6
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.scss +8 -9
- package/navbar/navbar-toggle.scss +3 -3
- package/navbar/navbar-tokens.scss +14 -0
- package/navbar/navbar.scss +1 -2
- package/navbar/vertical-navbar.scss +2 -2
- package/notification-center/_notification-center-theme.scss +11 -6
- package/notification-center/notification-center-tokens.scss +33 -0
- package/notification-center/notification-center.scss +58 -20
- package/notification-center/notification-item.scss +15 -6
- package/package.json +112 -81
- package/popover/popover-tokens.scss +0 -2
- package/popover/popover.scss +41 -19
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +20 -3
- package/progress-bar/progress-bar-tokens.scss +3 -0
- package/progress-bar/progress-bar.scss +36 -8
- package/progress-spinner/progress-spinner.scss +4 -3
- package/radio/_radio-theme.scss +21 -4
- package/radio/radio-tokens.scss +7 -3
- package/radio/radio.scss +55 -8
- package/schematics/collection.json +399 -7
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.js +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.js +60 -0
- package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
- package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
- package/schematics/migrations/actions-panel-overlay-container/data.js +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.js +54 -0
- package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
- package/schematics/migrations/alert-signals/README.md +13 -7
- package/schematics/migrations/alert-signals/data.js +3 -0
- package/schematics/migrations/alert-signals/index.js +70 -203
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.js +150 -0
- package/schematics/migrations/angular-animations-removal/index.js +20 -0
- package/schematics/migrations/angular-animations-removal/schema.json +15 -0
- package/schematics/migrations/app-switcher-signals/README.md +88 -0
- package/schematics/migrations/app-switcher-signals/data.js +136 -0
- package/schematics/migrations/app-switcher-signals/index.js +365 -0
- package/schematics/migrations/app-switcher-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
- package/schematics/migrations/autocomplete-panel-width-auto/index.js +1 -1
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.js +149 -0
- package/schematics/migrations/autocomplete-signals/index.js +706 -0
- package/schematics/migrations/autocomplete-signals/schema.json +20 -0
- package/schematics/migrations/badge-signals/README.md +77 -0
- package/schematics/migrations/badge-signals/data.js +109 -0
- package/schematics/migrations/badge-signals/index.js +693 -0
- package/schematics/migrations/badge-signals/schema.json +20 -0
- package/schematics/migrations/button-state-and-styles/README.md +129 -0
- package/schematics/migrations/button-state-and-styles/data.js +136 -0
- package/schematics/migrations/button-state-and-styles/index.js +220 -0
- package/schematics/migrations/button-state-and-styles/schema.json +20 -0
- package/schematics/migrations/button-supported-colors/README.md +73 -0
- package/schematics/migrations/button-supported-colors/data.js +106 -0
- package/schematics/migrations/button-supported-colors/index.js +260 -0
- package/schematics/migrations/button-supported-colors/schema.json +20 -0
- package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
- package/schematics/migrations/button-toggle-signals-and-aria/data.js +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.js +496 -0
- package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/button-truncation/README.md +110 -0
- package/schematics/migrations/button-truncation/data.js +88 -0
- package/schematics/migrations/button-truncation/index.js +269 -0
- package/schematics/migrations/button-truncation/schema.json +20 -0
- package/schematics/migrations/checkbox-signals/README.md +76 -0
- package/schematics/migrations/checkbox-signals/data.js +114 -0
- package/schematics/migrations/checkbox-signals/index.js +634 -0
- package/schematics/migrations/checkbox-signals/schema.json +20 -0
- package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
- package/schematics/migrations/clamped-text-disclosure/data.js +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.js +59 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.js +121 -0
- package/schematics/migrations/code-block-signals/index.js +700 -0
- package/schematics/migrations/code-block-signals/schema.json +20 -0
- package/schematics/migrations/color-signals/README.md +46 -0
- package/schematics/migrations/color-signals/data.js +131 -0
- package/schematics/migrations/color-signals/index.js +19 -0
- package/schematics/migrations/color-signals/schema.json +20 -0
- package/schematics/migrations/core-mixins-removal/README.md +20 -0
- package/schematics/migrations/core-mixins-removal/data.js +27 -0
- package/schematics/migrations/core-mixins-removal/index.js +17 -0
- package/schematics/migrations/core-mixins-removal/schema.json +15 -0
- package/schematics/migrations/css-selectors/README.md +2 -2
- package/schematics/migrations/css-selectors/index.js +1 -1
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.js +49 -0
- package/schematics/migrations/datepicker-signals/index.js +17 -0
- package/schematics/migrations/datepicker-signals/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +2 -2
- package/schematics/migrations/deprecated-icons/index.js +1 -1
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.js +59 -0
- package/schematics/migrations/design-tokens-v4/schema.json +15 -0
- package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
- package/schematics/migrations/divider-signals-and-aria/data.js +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.js +211 -0
- package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
- package/schematics/migrations/dl-attribute-coercion/data.js +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.js +161 -0
- package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
- package/schematics/migrations/dl-standalone-names/README.md +49 -0
- package/schematics/migrations/dl-standalone-names/data.js +44 -0
- package/schematics/migrations/dl-standalone-names/index.js +321 -0
- package/schematics/migrations/dl-standalone-names/schema.json +20 -0
- package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
- package/schematics/migrations/dropdown-demote-overlay/data.js +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.js +288 -0
- package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
- package/schematics/migrations/dropdown-signals/README.md +83 -0
- package/schematics/migrations/dropdown-signals/data.js +152 -0
- package/schematics/migrations/dropdown-signals/index.js +19 -0
- package/schematics/migrations/dropdown-signals/schema.json +20 -0
- package/schematics/migrations/empty-state-error-color/README.md +84 -0
- package/schematics/migrations/empty-state-error-color/data.js +85 -0
- package/schematics/migrations/empty-state-error-color/index.js +71 -0
- package/schematics/migrations/empty-state-error-color/schema.json +15 -0
- package/schematics/migrations/empty-state-size-attr/README.md +2 -2
- package/schematics/migrations/empty-state-size-attr/index.js +1 -1
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.js +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.js +60 -0
- package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
- package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
- package/schematics/migrations/file-upload-deprecated-outputs/data.js +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.js +70 -0
- package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
- package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
- package/schematics/migrations/filter-bar-rename-action/data.js +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.js +177 -0
- package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
- package/schematics/migrations/filter-bar-signals/README.md +27 -16
- package/schematics/migrations/filter-bar-signals/data.js +1 -2
- package/schematics/migrations/filter-bar-signals/index.js +100 -195
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.js +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.js +61 -0
- package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
- package/schematics/migrations/flag-inner-html/README.md +67 -0
- package/schematics/migrations/flag-inner-html/data.js +58 -0
- package/schematics/migrations/flag-inner-html/index.js +61 -0
- package/schematics/migrations/flag-inner-html/schema.json +15 -0
- package/schematics/migrations/form-field-signals/README.md +125 -0
- package/schematics/migrations/form-field-signals/data.js +288 -0
- package/schematics/migrations/form-field-signals/index.js +382 -0
- package/schematics/migrations/form-field-signals/schema.json +20 -0
- package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
- package/schematics/migrations/icon-semantics-and-api/data.js +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.js +64 -0
- package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
- package/schematics/migrations/icons-replacement/README.md +5 -5
- package/schematics/migrations/icons-replacement/index.js +1 -1
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.js +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.js +97 -0
- package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
- package/schematics/migrations/input-number-surface/README.md +140 -0
- package/schematics/migrations/input-number-surface/data.js +135 -0
- package/schematics/migrations/input-number-surface/index.js +292 -0
- package/schematics/migrations/input-number-surface/schema.json +20 -0
- package/schematics/migrations/input-signals/README.md +20 -0
- package/schematics/migrations/input-signals/data.js +30 -0
- package/schematics/migrations/input-signals/index.js +17 -0
- package/schematics/migrations/input-signals/schema.json +15 -0
- package/schematics/migrations/link-deprecated-path/README.md +144 -0
- package/schematics/migrations/link-deprecated-path/index.js +19 -0
- package/schematics/migrations/link-deprecated-path/schema.json +20 -0
- package/schematics/migrations/link-signals/README.md +71 -0
- package/schematics/migrations/link-signals/data.js +116 -0
- package/schematics/migrations/link-signals/index.js +415 -0
- package/schematics/migrations/link-signals/schema.json +20 -0
- package/schematics/migrations/list-signals/README.md +22 -0
- package/schematics/migrations/list-signals/data.js +35 -0
- package/schematics/migrations/list-signals/index.js +17 -0
- package/schematics/migrations/list-signals/schema.json +15 -0
- package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
- package/schematics/migrations/list-tree-multiple-input/data.js +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.js +221 -0
- package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
- package/schematics/migrations/loader-overlay-signals/README.md +62 -0
- package/schematics/migrations/loader-overlay-signals/data.js +101 -0
- package/schematics/migrations/loader-overlay-signals/index.js +697 -0
- package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
- package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
- package/schematics/migrations/loader-overlay-size-attr/index.js +1 -1
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.js +257 -0
- package/schematics/migrations/locale-configuration-providers/index.js +294 -0
- package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
- package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
- package/schematics/migrations/mandatory-peer-dependencies/index.js +42 -0
- package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
- package/schematics/migrations/markdown-signals/README.md +58 -0
- package/schematics/migrations/markdown-signals/data.js +79 -0
- package/schematics/migrations/markdown-signals/index.js +639 -0
- package/schematics/migrations/markdown-signals/schema.json +20 -0
- package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
- package/schematics/migrations/modal-dialog-semantics/data.js +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.js +58 -0
- package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
- package/schematics/migrations/modal-signals/README.md +88 -0
- package/schematics/migrations/modal-signals/data.js +132 -0
- package/schematics/migrations/modal-signals/index.js +19 -0
- package/schematics/migrations/modal-signals/schema.json +20 -0
- package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
- package/schematics/migrations/navbar-signals-and-aria/data.js +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.js +568 -0
- package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/new-icons-pack/README.md +10 -10
- package/schematics/migrations/new-icons-pack/index.js +1 -1
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.js +66 -0
- package/schematics/migrations/notification-center-signals/index.js +61 -0
- package/schematics/migrations/notification-center-signals/schema.json +15 -0
- package/schematics/migrations/option-signals/README.md +37 -0
- package/schematics/migrations/option-signals/data.js +86 -0
- package/schematics/migrations/option-signals/index.js +19 -0
- package/schematics/migrations/option-signals/schema.json +20 -0
- package/schematics/migrations/popover-leave-delay/README.md +51 -0
- package/schematics/migrations/popover-leave-delay/data.js +61 -0
- package/schematics/migrations/popover-leave-delay/index.js +54 -0
- package/schematics/migrations/popover-leave-delay/schema.json +15 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/data.js +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.js +58 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
- package/schematics/migrations/progress-spinner-signals/README.md +72 -0
- package/schematics/migrations/progress-spinner-signals/data.js +83 -0
- package/schematics/migrations/progress-spinner-signals/index.js +694 -0
- package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
- package/schematics/migrations/query-list-signals/README.md +32 -0
- package/schematics/migrations/query-list-signals/data.js +70 -0
- package/schematics/migrations/query-list-signals/index.js +17 -0
- package/schematics/migrations/query-list-signals/schema.json +15 -0
- package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
- package/schematics/migrations/radio-signals-and-aria/data.js +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.js +39 -0
- package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
- package/schematics/migrations/read-state-dwell-handlers/data.js +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.js +215 -0
- package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
- package/schematics/migrations/scrollbar-deprecated-path/index.js +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
- package/schematics/migrations/select-signal-inputs/README.md +61 -0
- package/schematics/migrations/select-signal-inputs/data.js +99 -0
- package/schematics/migrations/select-signal-inputs/index.js +57 -0
- package/schematics/migrations/select-signal-inputs/schema.json +15 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/data.js +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.js +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
- package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
- package/schematics/migrations/signal-inputs-subclasses/data.js +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.js +17 -0
- package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
- package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
- package/schematics/migrations/split-button-optional-disabled/data.js +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.js +57 -0
- package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
- package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
- package/schematics/migrations/splitter-deprecated-path/index.js +20 -0
- package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
- package/schematics/migrations/state-saving-default/README.md +67 -0
- package/schematics/migrations/state-saving-default/data.js +88 -0
- package/schematics/migrations/state-saving-default/index.js +62 -0
- package/schematics/migrations/state-saving-default/schema.json +15 -0
- package/schematics/migrations/table-cell-content/README.md +55 -0
- package/schematics/migrations/table-cell-content/data.js +66 -0
- package/schematics/migrations/table-cell-content/index.js +66 -0
- package/schematics/migrations/table-cell-content/schema.json +15 -0
- package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
- package/schematics/migrations/tabs-signals-and-aria/data.js +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.js +65 -0
- package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/tag-list-cleaner/README.md +58 -0
- package/schematics/migrations/tag-list-cleaner/data.js +42 -0
- package/schematics/migrations/tag-list-cleaner/index.js +196 -0
- package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
- package/schematics/migrations/tag-slots/README.md +41 -0
- package/schematics/migrations/tag-slots/index.js +190 -0
- package/schematics/migrations/tag-slots/schema.json +20 -0
- package/schematics/migrations/tags-signals/README.md +85 -0
- package/schematics/migrations/tags-signals/data.js +103 -0
- package/schematics/migrations/tags-signals/index.js +673 -0
- package/schematics/migrations/tags-signals/schema.json +20 -0
- package/schematics/migrations/textarea-signals/README.md +72 -0
- package/schematics/migrations/textarea-signals/data.js +121 -0
- package/schematics/migrations/textarea-signals/index.js +379 -0
- package/schematics/migrations/textarea-signals/schema.json +20 -0
- package/schematics/migrations/time-range-title-for/README.md +164 -0
- package/schematics/migrations/time-range-title-for/data.js +139 -0
- package/schematics/migrations/time-range-title-for/index.js +163 -0
- package/schematics/migrations/time-range-title-for/schema.json +20 -0
- package/schematics/migrations/timepicker-signals/README.md +78 -0
- package/schematics/migrations/timepicker-signals/data.js +82 -0
- package/schematics/migrations/timepicker-signals/index.js +709 -0
- package/schematics/migrations/timepicker-signals/schema.json +20 -0
- package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
- package/schematics/migrations/timezone-grouping-utils/data.js +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.js +64 -0
- package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
- package/schematics/migrations/title-encapsulation/README.md +49 -0
- package/schematics/migrations/title-encapsulation/data.js +69 -0
- package/schematics/migrations/title-encapsulation/index.js +57 -0
- package/schematics/migrations/title-encapsulation/schema.json +15 -0
- package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
- package/schematics/migrations/toast-stack-and-defaults/data.js +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.js +53 -0
- package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/data.js +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.js +60 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
- package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
- package/schematics/migrations/top-bar-container-selectors/data.js +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.js +84 -0
- package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
- package/schematics/migrations/tree-select-signals/README.md +61 -0
- package/schematics/migrations/tree-select-signals/data.js +106 -0
- package/schematics/migrations/tree-select-signals/index.js +58 -0
- package/schematics/migrations/tree-select-signals/schema.json +15 -0
- package/schematics/migrations/tree-signals/README.md +82 -0
- package/schematics/migrations/tree-signals/data.js +123 -0
- package/schematics/migrations/tree-signals/index.js +54 -0
- package/schematics/migrations/tree-signals/schema.json +15 -0
- package/schematics/migrations/tree-state-saving-default/README.md +66 -0
- package/schematics/migrations/tree-state-saving-default/data.js +78 -0
- package/schematics/migrations/tree-state-saving-default/index.js +60 -0
- package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
- package/schematics/migrations/username-pipe-injection/README.md +59 -0
- package/schematics/migrations/username-pipe-injection/data.js +78 -0
- package/schematics/migrations/username-pipe-injection/index.js +58 -0
- package/schematics/migrations/username-pipe-injection/schema.json +15 -0
- package/schematics/migrations/v20-upgrade/README.md +36 -16
- package/schematics/migrations/v20-upgrade/data.js +124 -77
- package/schematics/migrations/v20-upgrade/index.js +6 -213
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.js +1371 -0
- package/schematics/migrations/v21-upgrade/index.js +94 -0
- package/schematics/migrations/v21-upgrade/schema.json +20 -0
- package/schematics/migrations/zoneless-change-detection/README.md +30 -0
- package/schematics/migrations/zoneless-change-detection/data.js +29 -0
- package/schematics/migrations/zoneless-change-detection/index.js +20 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +392 -2
- package/schematics/ng-add/index.js +515 -14
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/deprecated-path-migration.js +61 -0
- package/schematics/utils/package-config.js +9 -105
- package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
- package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
- package/scrollbar/native-scrollbar.scss +68 -0
- package/scrollbar/scrollbar-tokens.scss +13 -22
- package/scrollbar/scrollbar-track.scss +94 -0
- package/scrollbar/scrollbar-viewport.scss +33 -0
- package/scrollbar/scrollbar.scss +24 -0
- package/search-expandable/search-expandable-tokens.scss +4 -0
- package/search-expandable/search-expandable.scss +4 -2
- package/select/_select-theme.scss +3 -16
- package/select/select.scss +0 -6
- package/sidebar/sidebar.scss +20 -0
- package/sidepanel/_sidepanel-theme.scss +1 -1
- package/sidepanel/sidepanel-tokens.scss +7 -1
- package/sidepanel/sidepanel.scss +41 -5
- package/skeleton/skeleton-presets.scss +350 -0
- package/skeleton/skeleton-tokens.scss +127 -0
- package/skeleton/skeleton.scss +53 -45
- package/split-button/_split-button-theme.scss +4 -4
- package/split-button/split-button.scss +2 -6
- package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
- package/splitter/deprecated/splitter.scss +51 -0
- package/splitter/splitter-tokens.scss +19 -0
- package/splitter/splitter.scss +148 -28
- package/table/_table-theme.scss +13 -12
- package/table/table-tokens.scss +8 -0
- package/table/table.scss +47 -22
- package/tabs/_tabs-common.scss +14 -14
- package/tabs/_tabs-theme.scss +4 -5
- package/tabs/tab-body.scss +49 -1
- package/tabs/tab-header.scss +2 -1
- package/tags/tag-list.scss +4 -0
- package/tags/tag.scss +19 -1
- package/time-range/time-range.scss +9 -0
- package/timezone/timezone-option.component.scss +4 -7
- package/timezone/timezone-select.component.scss +3 -0
- package/toast/_toast-theme.scss +1 -4
- package/toast/toast-container.component.scss +19 -13
- package/toast/toast-tokens.scss +12 -6
- package/toast/toast.component.scss +42 -19
- package/toggle/_toggle-theme.scss +4 -10
- package/toggle/toggle.scss +67 -26
- package/tooltip/_tooltip-theme.scss +7 -1
- package/tooltip/tooltip-tokens.scss +1 -2
- package/tooltip/tooltip.scss +55 -9
- package/top-bar/top-bar-tokens.scss +13 -2
- package/top-bar/top-bar.scss +24 -19
- package/tree/_tree-theme.scss +0 -1
- package/tree/toggle.scss +5 -9
- package/tree/tree-option.scss +2 -4
- package/tree/tree-tokens.scss +2 -1
- package/tree/tree.scss +3 -5
- package/tree-select/_tree-select-theme.scss +4 -15
- package/tree-select/tree-select-tokens.scss +16 -0
- package/tree-select/tree-select.scss +0 -6
- package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
- package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
- package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
- package/types/koobiq-components-app-switcher.d.ts +406 -0
- package/types/koobiq-components-autocomplete.d.ts +443 -0
- package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
- package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
- package/types/koobiq-components-button-toggle.d.ts +340 -0
- package/types/koobiq-components-button.d.ts +296 -0
- package/types/koobiq-components-checkbox.d.ts +172 -0
- package/types/koobiq-components-clamped-text.d.ts +184 -0
- package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +114 -79
- package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
- package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
- package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
- package/types/koobiq-components-divider.d.ts +43 -0
- package/types/koobiq-components-dl.d.ts +235 -0
- package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
- package/types/koobiq-components-ellipsis-center.d.ts +85 -0
- package/types/koobiq-components-empty-state.d.ts +106 -0
- package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
- package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
- package/types/koobiq-components-flag.d.ts +68 -0
- package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
- package/types/koobiq-components-icon.d.ts +333 -0
- package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
- package/types/koobiq-components-input.d.ts +477 -0
- package/types/koobiq-components-link-deprecated.d.ts +101 -0
- package/types/koobiq-components-link.d.ts +176 -0
- package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
- package/types/koobiq-components-loader-overlay.d.ts +101 -0
- package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
- package/types/koobiq-components-modal.d.ts +666 -0
- package/types/koobiq-components-navbar.d.ts +569 -0
- package/types/koobiq-components-notification-center.d.ts +500 -0
- package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
- package/types/koobiq-components-popover.d.ts +468 -0
- package/types/koobiq-components-progress-bar.d.ts +67 -0
- package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
- package/types/koobiq-components-radio.d.ts +294 -0
- package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
- package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
- package/types/koobiq-components-scrollbar.d.ts +154 -0
- package/types/koobiq-components-search-expandable.d.ts +164 -0
- package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
- package/types/koobiq-components-sidebar.d.ts +152 -0
- package/types/koobiq-components-sidepanel.d.ts +436 -0
- package/types/koobiq-components-skeleton.d.ts +234 -0
- package/types/koobiq-components-split-button.d.ts +65 -0
- package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
- package/types/koobiq-components-splitter.d.ts +406 -0
- package/types/koobiq-components-table.d.ts +44 -0
- package/types/koobiq-components-tabs.d.ts +888 -0
- package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
- package/types/koobiq-components-textarea.d.ts +178 -0
- package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
- package/types/koobiq-components-timepicker.d.ts +223 -0
- package/types/koobiq-components-timezone.d.ts +266 -0
- package/types/koobiq-components-title.d.ts +184 -0
- package/types/koobiq-components-toast.d.ts +289 -0
- package/types/koobiq-components-toggle.d.ts +121 -0
- package/types/koobiq-components-tooltip.d.ts +610 -0
- package/types/koobiq-components-top-bar.d.ts +61 -0
- package/types/koobiq-components-tree-select.d.ts +667 -0
- package/types/koobiq-components-tree.d.ts +1290 -0
- package/types/koobiq-components-username.d.ts +340 -0
- package/username/_username-theme.scss +35 -0
- package/username/username.scss +10 -34
- package/app-switcher/index.d.ts +0 -276
- package/autocomplete/index.d.ts +0 -286
- package/button/index.d.ts +0 -153
- package/button-toggle/index.d.ts +0 -162
- package/checkbox/index.d.ts +0 -163
- package/clamped-text/index.d.ts +0 -146
- package/core/styles/_tokens.scss +0 -7
- package/core/styles/common/_clearfix.scss +0 -13
- package/core/styles/common/_popup.scss +0 -6
- package/core/styles/functions/_index.scss +0 -3
- package/core/styles/functions/_number.scss +0 -60
- package/core/styles/functions/_string.scss +0 -18
- package/core/styles/theming/scrollbar-tokens.scss +0 -25
- package/core/styles/typography/_typography-utils.scss +0 -84
- package/divider/index.d.ts +0 -20
- package/dl/index.d.ts +0 -45
- package/ellipsis-center/index.d.ts +0 -71
- package/empty-state/index.d.ts +0 -45
- package/flag/index.d.ts +0 -44
- package/icon/index.d.ts +0 -200
- package/input/index.d.ts +0 -354
- package/link/index.d.ts +0 -56
- package/loader-overlay/index.d.ts +0 -57
- package/modal/index.d.ts +0 -339
- package/navbar/index.d.ts +0 -372
- package/notification-center/index.d.ts +0 -323
- package/popover/index.d.ts +0 -182
- package/prebuilt-themes/dark-theme.css +0 -1
- package/prebuilt-themes/light-theme.css +0 -1
- package/progress-bar/index.d.ts +0 -31
- package/radio/index.d.ts +0 -203
- package/search-expandable/index.d.ts +0 -101
- package/sidebar/index.d.ts +0 -94
- package/sidepanel/index.d.ts +0 -272
- package/skeleton/index.d.ts +0 -26
- package/split-button/index.d.ts +0 -46
- package/table/index.d.ts +0 -25
- package/tabs/index.d.ts +0 -677
- package/textarea/index.d.ts +0 -138
- package/timepicker/index.d.ts +0 -197
- package/timezone/index.d.ts +0 -125
- package/title/index.d.ts +0 -139
- package/toast/index.d.ts +0 -187
- package/toggle/index.d.ts +0 -104
- package/tooltip/index.d.ts +0 -335
- package/top-bar/index.d.ts +0 -33
- package/tree/index.d.ts +0 -802
- package/tree-select/index.d.ts +0 -475
- package/username/index.d.ts +0 -194
- /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
- /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
|
@@ -10,16 +10,16 @@ class KbqDynamicTranslationSlot {
|
|
|
10
10
|
/**
|
|
11
11
|
* The name of the dynamic translation slot.
|
|
12
12
|
*/
|
|
13
|
-
this.name = input.required(...(ngDevMode ?
|
|
13
|
+
this.name = input.required({ ...(ngDevMode ? { debugName: "name" } : /* istanbul ignore next */ {}), alias: 'kbqDynamicTranslationSlot' });
|
|
14
14
|
/**
|
|
15
15
|
* @docs-private
|
|
16
16
|
*/
|
|
17
17
|
this.templateRef = inject(TemplateRef);
|
|
18
18
|
}
|
|
19
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
20
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
19
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslationSlot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
20
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqDynamicTranslationSlot, isStandalone: true, selector: "[kbqDynamicTranslationSlot]", inputs: { name: { classPropertyName: "name", publicName: "kbqDynamicTranslationSlot", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
21
21
|
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslationSlot, decorators: [{
|
|
23
23
|
type: Directive,
|
|
24
24
|
args: [{
|
|
25
25
|
selector: '[kbqDynamicTranslationSlot]'
|
|
@@ -30,15 +30,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
30
30
|
*/
|
|
31
31
|
class KbqDynamicTranslation {
|
|
32
32
|
constructor() {
|
|
33
|
-
this.slots = contentChildren(KbqDynamicTranslationSlot, ...(ngDevMode ? [{ debugName: "slots" }] : []));
|
|
33
|
+
this.slots = contentChildren(KbqDynamicTranslationSlot, ...(ngDevMode ? [{ debugName: "slots" }] : /* istanbul ignore next */ []));
|
|
34
34
|
/**
|
|
35
35
|
* The text which will be translated.
|
|
36
36
|
*/
|
|
37
|
-
this.text = input.required(...(ngDevMode ? [{ debugName: "text" }] : []));
|
|
37
|
+
this.text = input.required(...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
|
|
38
38
|
/**
|
|
39
39
|
* @docs-private
|
|
40
40
|
*/
|
|
41
|
-
this.parsedSlots = computed(() => this.parseSlots(this.text(), this.slots()), ...(ngDevMode ? [{ debugName: "parsedSlots" }] : []));
|
|
41
|
+
this.parsedSlots = computed(() => this.parseSlots(this.text(), this.slots()), ...(ngDevMode ? [{ debugName: "parsedSlots" }] : /* istanbul ignore next */ []));
|
|
42
42
|
}
|
|
43
43
|
parseSlots(text, slots) {
|
|
44
44
|
const slotTemplatesByName = slots.reduce((map, { name, templateRef }) => {
|
|
@@ -71,8 +71,8 @@ class KbqDynamicTranslation {
|
|
|
71
71
|
}
|
|
72
72
|
return parsedSlots;
|
|
73
73
|
}
|
|
74
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
75
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
74
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslation, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqDynamicTranslation, isStandalone: true, selector: "kbq-dynamic-translation", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null } }, queries: [{ propertyName: "slots", predicate: KbqDynamicTranslationSlot, isSignal: true }], ngImport: i0, template: `
|
|
76
76
|
@for (slot of parsedSlots(); track $index) {
|
|
77
77
|
@switch (slot.type) {
|
|
78
78
|
@case ('slot') {
|
|
@@ -85,7 +85,7 @@ class KbqDynamicTranslation {
|
|
|
85
85
|
}
|
|
86
86
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
87
87
|
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslation, decorators: [{
|
|
89
89
|
type: Component,
|
|
90
90
|
args: [{
|
|
91
91
|
selector: 'kbq-dynamic-translation',
|
|
@@ -111,10 +111,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
111
111
|
class KbqDynamicTranslationHelper {
|
|
112
112
|
constructor() {
|
|
113
113
|
this.renderer = inject(Renderer2);
|
|
114
|
-
this.replaceableSlotContainers = viewChildren('replaceableSlotContainer', ...(ngDevMode ? [{ debugName: "replaceableSlotContainers" }] : []));
|
|
114
|
+
this.replaceableSlotContainers = viewChildren('replaceableSlotContainer', ...(ngDevMode ? [{ debugName: "replaceableSlotContainers" }] : /* istanbul ignore next */ []));
|
|
115
115
|
this.slotsByName = new Map();
|
|
116
|
-
this.text = input.required(...(ngDevMode ? [{ debugName: "text" }] : []));
|
|
117
|
-
this.slots = input.required(...(ngDevMode ? [{ debugName: "slots" }] : []));
|
|
116
|
+
this.text = input.required(...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
|
|
117
|
+
this.slots = input.required(...(ngDevMode ? [{ debugName: "slots" }] : /* istanbul ignore next */ []));
|
|
118
118
|
effect(() => {
|
|
119
119
|
this.slotsByName.clear();
|
|
120
120
|
this.slots().forEach((slot) => this.slotsByName.set(slot.name, slot));
|
|
@@ -134,8 +134,8 @@ class KbqDynamicTranslationHelper {
|
|
|
134
134
|
nativeElement.replaceWith(elementToRender);
|
|
135
135
|
});
|
|
136
136
|
}
|
|
137
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
138
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
137
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslationHelper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
138
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqDynamicTranslationHelper, isStandalone: true, selector: "kbq-dynamic-translation-with-dynamic-component-creation", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, slots: { classPropertyName: "slots", publicName: "slots", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "replaceableSlotContainers", predicate: ["replaceableSlotContainer"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
139
139
|
<kbq-dynamic-translation [text]="text()">
|
|
140
140
|
@for (slot of slots(); track $index) {
|
|
141
141
|
<ng-container *kbqDynamicTranslationSlot="slot.name; let content">
|
|
@@ -149,7 +149,7 @@ class KbqDynamicTranslationHelper {
|
|
|
149
149
|
</kbq-dynamic-translation>
|
|
150
150
|
`, isInline: true, dependencies: [{ kind: "component", type: KbqDynamicTranslation, selector: "kbq-dynamic-translation", inputs: ["text"] }, { kind: "directive", type: KbqDynamicTranslationSlot, selector: "[kbqDynamicTranslationSlot]", inputs: ["kbqDynamicTranslationSlot"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
151
151
|
}
|
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslationHelper, decorators: [{
|
|
153
153
|
type: Component,
|
|
154
154
|
args: [{
|
|
155
155
|
selector: 'kbq-dynamic-translation-with-dynamic-component-creation',
|
|
@@ -177,15 +177,15 @@ const COMPONENTS = [
|
|
|
177
177
|
KbqDynamicTranslation
|
|
178
178
|
];
|
|
179
179
|
class KbqDynamicTranslationModule {
|
|
180
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
181
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
180
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
181
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslationModule, imports: [KbqDynamicTranslationSlot,
|
|
182
182
|
KbqDynamicTranslationHelper,
|
|
183
183
|
KbqDynamicTranslation], exports: [KbqDynamicTranslationSlot,
|
|
184
184
|
KbqDynamicTranslationHelper,
|
|
185
185
|
KbqDynamicTranslation] }); }
|
|
186
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
186
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslationModule }); }
|
|
187
187
|
}
|
|
188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDynamicTranslationModule, decorators: [{
|
|
189
189
|
type: NgModule,
|
|
190
190
|
args: [{
|
|
191
191
|
imports: COMPONENTS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-dynamic-translation.mjs","sources":["../../../packages/components/dynamic-translation/dynamic-translation.ts","../../../packages/components/dynamic-translation/module.ts","../../../packages/components/dynamic-translation/koobiq-components-dynamic-translation.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n Signal,\n TemplateRef,\n viewChildren\n} from '@angular/core';\n\n/**\n * @docs-private\n */\ntype KbqDynamicTranslationParsedSlot = {\n type: 'text' | 'slot';\n template: TemplateRef<unknown> | null;\n context?: { $implicit: unknown };\n text?: string;\n};\n\n/**\n * @docs-private\n */\nexport interface KbqDynamicTranslationHelperSlot {\n name: string;\n tag: string;\n attributes?: { key: string; value: string }[];\n content?: string;\n}\n\n/**\n * Directive for defining a dynamic translation slot.\n */\n@Directive({\n selector: '[kbqDynamicTranslationSlot]'\n})\nexport class KbqDynamicTranslationSlot {\n /**\n * The name of the dynamic translation slot.\n */\n readonly name = input.required<string>({ alias: 'kbqDynamicTranslationSlot' });\n\n /**\n * @docs-private\n */\n readonly templateRef = inject(TemplateRef);\n}\n\n/**\n * Component for dynamic translation.\n */\n@Component({\n selector: 'kbq-dynamic-translation',\n imports: [NgTemplateOutlet],\n template: `\n @for (slot of parsedSlots(); track $index) {\n @switch (slot.type) {\n @case ('slot') {\n <ng-container *ngTemplateOutlet=\"slot.template; context: slot.context\" />\n }\n @default {\n <ng-container>{{ slot.text }}</ng-container>\n }\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqDynamicTranslation {\n private readonly slots = contentChildren(KbqDynamicTranslationSlot);\n\n /**\n * The text which will be translated.\n */\n readonly text = input.required<string>();\n\n /**\n * @docs-private\n */\n protected readonly parsedSlots: Signal<KbqDynamicTranslationParsedSlot[]> = computed(() =>\n this.parseSlots(this.text(), this.slots())\n );\n\n private parseSlots(\n text: string,\n slots: ReadonlyArray<KbqDynamicTranslationSlot>\n ): KbqDynamicTranslationParsedSlot[] {\n const slotTemplatesByName = slots.reduce<Record<string, TemplateRef<unknown>>>((map, { name, templateRef }) => {\n const slotName = name();\n\n if (slotName) map[slotName] = templateRef;\n\n return map;\n }, {});\n const parsedSlots: KbqDynamicTranslationParsedSlot[] = [];\n const slotSelector = new RegExp(`\\\\[\\\\[(${Object.keys(slotTemplatesByName).join('|')})(?::(.+?))?\\\\]\\\\]`, 'g');\n let match: RegExpExecArray | null;\n let lastIndex = 0;\n\n while ((match = slotSelector.exec(text)) !== null) {\n const [slotMatch, slotName, slotText] = match;\n const [listMatch, listString] = new RegExp('^\\\\((.*?)\\\\)$', 'g').exec(slotText) ?? [];\n const textBeforeSlot = text.substring(lastIndex, +match.index);\n\n if (textBeforeSlot) {\n parsedSlots.push({ type: 'text', text: textBeforeSlot, template: null });\n }\n\n parsedSlots.push({\n type: 'slot',\n template: slotTemplatesByName[slotName] || null,\n context: { $implicit: listMatch && listString ? listString.split(',') : slotText }\n });\n\n lastIndex = match.index + slotMatch.length;\n }\n\n const textAfterLastSlot = text.substring(lastIndex);\n\n if (textAfterLastSlot) {\n parsedSlots.push({ type: 'text', text: textAfterLastSlot, template: null });\n }\n\n return parsedSlots;\n }\n}\n\n/**\n * @docs-private\n */\n@Component({\n selector: 'kbq-dynamic-translation-with-dynamic-component-creation',\n imports: [KbqDynamicTranslation, KbqDynamicTranslationSlot],\n template: `\n <kbq-dynamic-translation [text]=\"text()\">\n @for (slot of slots(); track $index) {\n <ng-container *kbqDynamicTranslationSlot=\"slot.name; let content\">\n <span\n #replaceableSlotContainer\n [attr.data-slot-name]=\"slot.name\"\n [attr.data-slot-content]=\"slot.content || content\"\n ></span>\n </ng-container>\n }\n </kbq-dynamic-translation>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqDynamicTranslationHelper {\n private readonly renderer = inject(Renderer2);\n private readonly replaceableSlotContainers = viewChildren<ElementRef<HTMLElement>>('replaceableSlotContainer');\n private readonly slotsByName = new Map<string, KbqDynamicTranslationHelperSlot>();\n\n readonly text = input.required<string>();\n\n readonly slots = input.required<KbqDynamicTranslationHelperSlot[]>();\n\n constructor() {\n effect(() => {\n this.slotsByName.clear();\n this.slots().forEach((slot) => this.slotsByName.set(slot.name, slot));\n });\n\n afterNextRender(() => {\n this.replaceSlots();\n });\n }\n\n private replaceSlots(): void {\n this.replaceableSlotContainers().forEach(({ nativeElement }: ElementRef<HTMLElement>) => {\n const slotName = nativeElement.getAttribute('data-slot-name')!;\n const slotContent = nativeElement.getAttribute('data-slot-content')!;\n const { tag, attributes } = this.slotsByName.get(slotName)!;\n const elementToRender = this.renderer.createElement(tag);\n\n this.renderer.appendChild(elementToRender, this.renderer.createText(slotContent));\n\n attributes?.forEach(({ key, value }) => this.renderer.setAttribute(elementToRender, key, value));\n\n nativeElement.replaceWith(elementToRender);\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqDynamicTranslation, KbqDynamicTranslationHelper, KbqDynamicTranslationSlot } from './dynamic-translation';\n\nconst COMPONENTS = [\n KbqDynamicTranslationSlot,\n KbqDynamicTranslationHelper,\n KbqDynamicTranslation\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqDynamicTranslationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-dynamic-translation.mjs","sources":["../../../packages/components/dynamic-translation/dynamic-translation.ts","../../../packages/components/dynamic-translation/module.ts","../../../packages/components/dynamic-translation/koobiq-components-dynamic-translation.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n Signal,\n TemplateRef,\n viewChildren\n} from '@angular/core';\n\n/**\n * @docs-private\n */\ntype KbqDynamicTranslationParsedSlot = {\n type: 'text' | 'slot';\n template: TemplateRef<unknown> | null;\n context?: { $implicit: unknown };\n text?: string;\n};\n\n/**\n * @docs-private\n */\nexport interface KbqDynamicTranslationHelperSlot {\n name: string;\n tag: string;\n attributes?: { key: string; value: string }[];\n content?: string;\n}\n\n/**\n * Directive for defining a dynamic translation slot.\n */\n@Directive({\n selector: '[kbqDynamicTranslationSlot]'\n})\nexport class KbqDynamicTranslationSlot {\n /**\n * The name of the dynamic translation slot.\n */\n readonly name = input.required<string>({ alias: 'kbqDynamicTranslationSlot' });\n\n /**\n * @docs-private\n */\n readonly templateRef = inject(TemplateRef);\n}\n\n/**\n * Component for dynamic translation.\n */\n@Component({\n selector: 'kbq-dynamic-translation',\n imports: [NgTemplateOutlet],\n template: `\n @for (slot of parsedSlots(); track $index) {\n @switch (slot.type) {\n @case ('slot') {\n <ng-container *ngTemplateOutlet=\"slot.template; context: slot.context\" />\n }\n @default {\n <ng-container>{{ slot.text }}</ng-container>\n }\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqDynamicTranslation {\n private readonly slots = contentChildren(KbqDynamicTranslationSlot);\n\n /**\n * The text which will be translated.\n */\n readonly text = input.required<string>();\n\n /**\n * @docs-private\n */\n protected readonly parsedSlots: Signal<KbqDynamicTranslationParsedSlot[]> = computed(() =>\n this.parseSlots(this.text(), this.slots())\n );\n\n private parseSlots(\n text: string,\n slots: ReadonlyArray<KbqDynamicTranslationSlot>\n ): KbqDynamicTranslationParsedSlot[] {\n const slotTemplatesByName = slots.reduce<Record<string, TemplateRef<unknown>>>((map, { name, templateRef }) => {\n const slotName = name();\n\n if (slotName) map[slotName] = templateRef;\n\n return map;\n }, {});\n const parsedSlots: KbqDynamicTranslationParsedSlot[] = [];\n const slotSelector = new RegExp(`\\\\[\\\\[(${Object.keys(slotTemplatesByName).join('|')})(?::(.+?))?\\\\]\\\\]`, 'g');\n let match: RegExpExecArray | null;\n let lastIndex = 0;\n\n while ((match = slotSelector.exec(text)) !== null) {\n const [slotMatch, slotName, slotText] = match;\n const [listMatch, listString] = new RegExp('^\\\\((.*?)\\\\)$', 'g').exec(slotText) ?? [];\n const textBeforeSlot = text.substring(lastIndex, +match.index);\n\n if (textBeforeSlot) {\n parsedSlots.push({ type: 'text', text: textBeforeSlot, template: null });\n }\n\n parsedSlots.push({\n type: 'slot',\n template: slotTemplatesByName[slotName] || null,\n context: { $implicit: listMatch && listString ? listString.split(',') : slotText }\n });\n\n lastIndex = match.index + slotMatch.length;\n }\n\n const textAfterLastSlot = text.substring(lastIndex);\n\n if (textAfterLastSlot) {\n parsedSlots.push({ type: 'text', text: textAfterLastSlot, template: null });\n }\n\n return parsedSlots;\n }\n}\n\n/**\n * @docs-private\n */\n@Component({\n selector: 'kbq-dynamic-translation-with-dynamic-component-creation',\n imports: [KbqDynamicTranslation, KbqDynamicTranslationSlot],\n template: `\n <kbq-dynamic-translation [text]=\"text()\">\n @for (slot of slots(); track $index) {\n <ng-container *kbqDynamicTranslationSlot=\"slot.name; let content\">\n <span\n #replaceableSlotContainer\n [attr.data-slot-name]=\"slot.name\"\n [attr.data-slot-content]=\"slot.content || content\"\n ></span>\n </ng-container>\n }\n </kbq-dynamic-translation>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqDynamicTranslationHelper {\n private readonly renderer = inject(Renderer2);\n private readonly replaceableSlotContainers = viewChildren<ElementRef<HTMLElement>>('replaceableSlotContainer');\n private readonly slotsByName = new Map<string, KbqDynamicTranslationHelperSlot>();\n\n readonly text = input.required<string>();\n\n readonly slots = input.required<KbqDynamicTranslationHelperSlot[]>();\n\n constructor() {\n effect(() => {\n this.slotsByName.clear();\n this.slots().forEach((slot) => this.slotsByName.set(slot.name, slot));\n });\n\n afterNextRender(() => {\n this.replaceSlots();\n });\n }\n\n private replaceSlots(): void {\n this.replaceableSlotContainers().forEach(({ nativeElement }: ElementRef<HTMLElement>) => {\n const slotName = nativeElement.getAttribute('data-slot-name')!;\n const slotContent = nativeElement.getAttribute('data-slot-content')!;\n const { tag, attributes } = this.slotsByName.get(slotName)!;\n const elementToRender = this.renderer.createElement(tag);\n\n this.renderer.appendChild(elementToRender, this.renderer.createText(slotContent));\n\n attributes?.forEach(({ key, value }) => this.renderer.setAttribute(elementToRender, key, value));\n\n nativeElement.replaceWith(elementToRender);\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqDynamicTranslation, KbqDynamicTranslationHelper, KbqDynamicTranslationSlot } from './dynamic-translation';\n\nconst COMPONENTS = [\n KbqDynamicTranslationSlot,\n KbqDynamicTranslationHelper,\n KbqDynamicTranslation\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqDynamicTranslationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,46 @@
|
|
|
1
1
|
import { SharedResizeObserver } from '@angular/cdk/observers/private';
|
|
2
2
|
import { _CdkPrivateStyleLoader } from '@angular/cdk/private';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { ViewEncapsulation, Component, inject, ChangeDetectorRef, input, numberAttribute,
|
|
4
|
+
import { ViewEncapsulation, ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, input, numberAttribute, Directive, NgModule } from '@angular/core';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
6
|
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
|
|
7
|
-
import { Subject } from 'rxjs';
|
|
8
7
|
import { debounceTime } from 'rxjs/operators';
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* Component used to load the `.kbq-ellipsis-center` styles.
|
|
12
11
|
*/
|
|
13
12
|
class EllipsisCenterStyleLoader {
|
|
14
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
15
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
13
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: EllipsisCenterStyleLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.25", type: EllipsisCenterStyleLoader, isStandalone: true, selector: "ellipsis-center-style-loader", ngImport: i0, template: '', isInline: true, styles: [".kbq-ellipsis-center{position:relative;display:flex;max-width:100%;min-width:0;overflow:hidden}.kbq-ellipsis-center .kbq-ellipsis-center_data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-ellipsis-center .kbq-ellipsis-center_data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
16
15
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: EllipsisCenterStyleLoader, decorators: [{
|
|
18
17
|
type: Component,
|
|
19
|
-
args: [{ selector: 'ellipsis-center-style-loader', template: '', encapsulation: ViewEncapsulation.None, styles: [".kbq-ellipsis-center{position:relative;display:flex;max-width:100%;min-width:0;overflow:hidden}.kbq-ellipsis-center .kbq-ellipsis-center_data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-ellipsis-center .kbq-ellipsis-center_data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n"] }]
|
|
18
|
+
args: [{ selector: 'ellipsis-center-style-loader', template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".kbq-ellipsis-center{position:relative;display:flex;max-width:100%;min-width:0;overflow:hidden}.kbq-ellipsis-center .kbq-ellipsis-center_data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-ellipsis-center .kbq-ellipsis-center_data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n"] }]
|
|
20
19
|
}] });
|
|
21
20
|
/**
|
|
22
21
|
* Renders text as two spans and moves the ellipsis into the middle, so the tail — a file extension, the
|
|
23
22
|
* digits that tell two reports apart — stays readable when the host is too narrow for the whole string. A
|
|
24
23
|
* tooltip spells out the full text, and is enabled only while something is actually hidden.
|
|
24
|
+
*
|
|
25
|
+
* The tooltip's `forDisabledComponent` is not for this host and should not be bound on it: the hint always
|
|
26
|
+
* repeats the text this directive shortened, never an explanation of why a wrapped control is unavailable,
|
|
27
|
+
* and the two derive the same state, so they would overwrite each other. Overflow is the only state the
|
|
28
|
+
* directive derives, and `kbqTooltipDisabled` is how a consumer suppresses the hint.
|
|
25
29
|
*/
|
|
26
30
|
class KbqEllipsisCenterDirective extends KbqTooltipTrigger {
|
|
27
|
-
// TODO: Skipped for migration because:
|
|
28
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
29
31
|
set kbqEllipsisCenter(value) {
|
|
30
32
|
this._kbqEllipsisCenter = value;
|
|
31
33
|
this.refresh();
|
|
32
34
|
// check the view to properly calculate text-start and text-end on text initialized
|
|
33
35
|
this.cdr.detectChanges();
|
|
34
36
|
}
|
|
37
|
+
ngOnChanges(changes) {
|
|
38
|
+
super.ngOnChanges(changes);
|
|
39
|
+
// A bound input is handed to its member; unbound, it leaves what code wrote.
|
|
40
|
+
// A bound `undefined` clears the text.
|
|
41
|
+
if (changes['kbqEllipsisCenterInput'])
|
|
42
|
+
this.kbqEllipsisCenter = this.kbqEllipsisCenterInput() ?? '';
|
|
43
|
+
}
|
|
35
44
|
constructor() {
|
|
36
45
|
super();
|
|
37
46
|
this.cdr = inject(ChangeDetectorRef);
|
|
@@ -44,6 +53,19 @@ class KbqEllipsisCenterDirective extends KbqTooltipTrigger {
|
|
|
44
53
|
this.resizeObserver = inject(SharedResizeObserver);
|
|
45
54
|
/** The two spans this directive renders have no styles of their own until this is loaded. */
|
|
46
55
|
this.styleLoader = inject(_CdkPrivateStyleLoader);
|
|
56
|
+
/**
|
|
57
|
+
* Overrides the tooltip's hoverable default, as `KbqOptionTooltip` does. The hint spells out text that
|
|
58
|
+
* the directive had to truncate, so it floats over the neighbouring content — and a pointer-capturing
|
|
59
|
+
* pane would swallow the clicks meant for it.
|
|
60
|
+
*/
|
|
61
|
+
this.ignoreTooltipPointerEvents = input(true, ...(ngDevMode ? [{ debugName: "ignoreTooltipPointerEvents" }] : /* istanbul ignore next */ []));
|
|
62
|
+
/**
|
|
63
|
+
* The hint spells out what the split hid, so `kbqTooltipDisabled="false"` cannot conjure one for a name
|
|
64
|
+
* that fits.
|
|
65
|
+
*
|
|
66
|
+
* @docs-private
|
|
67
|
+
*/
|
|
68
|
+
this.derivedDisabledWins = true;
|
|
47
69
|
/**
|
|
48
70
|
* Shortest text worth splitting in the middle. Anything below it keeps its natural order and is cut off
|
|
49
71
|
* at the end by the host's own `text-overflow`.
|
|
@@ -52,24 +74,19 @@ class KbqEllipsisCenterDirective extends KbqTooltipTrigger {
|
|
|
52
74
|
* done: the input was declared but never read, so any other default would silently end-truncate labels
|
|
53
75
|
* that consumers expect to see split.
|
|
54
76
|
*/
|
|
55
|
-
this.minVisibleLength = input(0, ...(ngDevMode ? [{ debugName: "minVisibleLength" }] : []));
|
|
77
|
+
this.minVisibleLength = input(0, ...(ngDevMode ? [{ debugName: "minVisibleLength" }] : /* istanbul ignore next */ []));
|
|
56
78
|
/**
|
|
57
79
|
* Lower bound, in pixels, for the average glyph width used to decide how many characters fit in the
|
|
58
80
|
* tail. The rendered text is measured as well and the wider of the two wins, so an underestimate here
|
|
59
81
|
* can no longer push the extension out of the tail — raising it only shortens the tail further.
|
|
60
82
|
*/
|
|
61
|
-
this.charWidth = input(7, ...(ngDevMode ? [{ debugName: "charWidth" }] : []));
|
|
83
|
+
this.charWidth = input(7, ...(ngDevMode ? [{ debugName: "charWidth" }] : /* istanbul ignore next */ []));
|
|
62
84
|
/**
|
|
63
|
-
* Debounce time (ms) for resize events before recalculating ellipsis position.
|
|
64
|
-
* @default 50
|
|
85
|
+
* Debounce time (ms) for resize events before recalculating ellipsis position. Defaults to `50`.
|
|
65
86
|
*/
|
|
66
|
-
this.debounceInterval = input(50, ...(ngDevMode ?
|
|
67
|
-
/**
|
|
68
|
-
|
|
69
|
-
* container-only ones a `window:resize` listener cannot see; the host listener that used to feed this
|
|
70
|
-
* subject is gone, and nothing subscribes to it. Kept as a no-op and removed in the next major version.
|
|
71
|
-
* @docs-private */
|
|
72
|
-
this.resizeStream = new Subject();
|
|
87
|
+
this.debounceInterval = input(50, { ...(ngDevMode ? { debugName: "debounceInterval" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
88
|
+
/** @docs-private */
|
|
89
|
+
this.kbqEllipsisCenterInput = input(undefined, { ...(ngDevMode ? { debugName: "kbqEllipsisCenterInput" } : /* istanbul ignore next */ {}), alias: 'kbqEllipsisCenter' });
|
|
73
90
|
this.styleLoader.load(EllipsisCenterStyleLoader);
|
|
74
91
|
}
|
|
75
92
|
ngOnInit() {
|
|
@@ -95,6 +112,7 @@ class KbqEllipsisCenterDirective extends KbqTooltipTrigger {
|
|
|
95
112
|
/**
|
|
96
113
|
* Updates the displayed text with center ellipsis truncation based on container width.
|
|
97
114
|
* Recreates start/end span elements, measures available space, and adjusts text accordingly.
|
|
115
|
+
*
|
|
98
116
|
* @docs-private
|
|
99
117
|
*/
|
|
100
118
|
refresh() {
|
|
@@ -147,16 +165,15 @@ class KbqEllipsisCenterDirective extends KbqTooltipTrigger {
|
|
|
147
165
|
}
|
|
148
166
|
dataTextStart.innerText = start;
|
|
149
167
|
dataTextEnd.innerText = end;
|
|
150
|
-
this.
|
|
151
|
-
this.cdr.markForCheck();
|
|
168
|
+
this.setDerivedDisabled(!truncated);
|
|
152
169
|
});
|
|
153
170
|
this.renderer.appendChild(this.elementRef.nativeElement, dataTextStart);
|
|
154
171
|
this.renderer.appendChild(this.elementRef.nativeElement, dataTextEnd);
|
|
155
172
|
}
|
|
156
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
157
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
173
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqEllipsisCenterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
174
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqEllipsisCenterDirective, isStandalone: true, selector: "[kbqEllipsisCenter]", inputs: { ignoreTooltipPointerEvents: { classPropertyName: "ignoreTooltipPointerEvents", publicName: "ignoreTooltipPointerEvents", isSignal: true, isRequired: false, transformFunction: null }, minVisibleLength: { classPropertyName: "minVisibleLength", publicName: "minVisibleLength", isSignal: true, isRequired: false, transformFunction: null }, charWidth: { classPropertyName: "charWidth", publicName: "charWidth", isSignal: true, isRequired: false, transformFunction: null }, debounceInterval: { classPropertyName: "debounceInterval", publicName: "debounceInterval", isSignal: true, isRequired: false, transformFunction: null }, kbqEllipsisCenterInput: { classPropertyName: "kbqEllipsisCenterInput", publicName: "kbqEllipsisCenter", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "kbq-ellipsis-center" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
158
175
|
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqEllipsisCenterDirective, decorators: [{
|
|
160
177
|
type: Directive,
|
|
161
178
|
args: [{
|
|
162
179
|
selector: '[kbqEllipsisCenter]',
|
|
@@ -164,15 +181,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
|
|
|
164
181
|
class: 'kbq-ellipsis-center'
|
|
165
182
|
}
|
|
166
183
|
}]
|
|
167
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
168
|
-
type: Input
|
|
169
|
-
}], minVisibleLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minVisibleLength", required: false }] }], charWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "charWidth", required: false }] }], debounceInterval: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceInterval", required: false }] }] } });
|
|
184
|
+
}], ctorParameters: () => [], propDecorators: { ignoreTooltipPointerEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "ignoreTooltipPointerEvents", required: false }] }], minVisibleLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minVisibleLength", required: false }] }], charWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "charWidth", required: false }] }], debounceInterval: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceInterval", required: false }] }], kbqEllipsisCenterInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqEllipsisCenter", required: false }] }] } });
|
|
170
185
|
class KbqEllipsisCenterModule {
|
|
171
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
172
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
173
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
186
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqEllipsisCenterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
187
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqEllipsisCenterModule, imports: [KbqEllipsisCenterDirective], exports: [KbqEllipsisCenterDirective] }); }
|
|
188
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqEllipsisCenterModule }); }
|
|
174
189
|
}
|
|
175
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqEllipsisCenterModule, decorators: [{
|
|
176
191
|
type: NgModule,
|
|
177
192
|
args: [{
|
|
178
193
|
imports: [KbqEllipsisCenterDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-ellipsis-center.mjs","sources":["../../../packages/components/ellipsis-center/ellipsis-center.directive.ts","../../../packages/components/ellipsis-center/koobiq-components-ellipsis-center.ts"],"sourcesContent":["import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Directive,\n inject,\n Input,\n input,\n NgModule,\n numberAttribute,\n OnDestroy,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/**\n * Component used to load the `.kbq-ellipsis-center` styles.\n */\n@Component({\n selector: 'ellipsis-center-style-loader',\n template: '',\n styleUrl: 'ellipsis-center.scss',\n encapsulation: ViewEncapsulation.None\n})\nclass EllipsisCenterStyleLoader {}\n\n/**\n * Renders text as two spans and moves the ellipsis into the middle, so the tail — a file extension, the\n * digits that tell two reports apart — stays readable when the host is too narrow for the whole string. A\n * tooltip spells out the full text, and is enabled only while something is actually hidden.\n */\n@Directive({\n selector: '[kbqEllipsisCenter]',\n host: {\n class: 'kbq-ellipsis-center'\n }\n})\nexport class KbqEllipsisCenterDirective extends KbqTooltipTrigger implements OnInit, AfterViewInit, OnDestroy {\n private cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Application-wide `ResizeObserver` shared by every consumer, as `KbqTitleDirective` uses. Unlike the\n * `window:resize` listener this directive used to carry, it also reacts to container-only resizes — a\n * splitter drag, a sidebar collapse, or the vertical scrollbar that appears once a file list fills up —\n * none of which resize the window, all of which change where the text has to be split.\n */\n private readonly resizeObserver = inject(SharedResizeObserver);\n\n /** The two spans this directive renders have no styles of their own until this is loaded. */\n private readonly styleLoader = inject(_CdkPrivateStyleLoader);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input() set kbqEllipsisCenter(value: string) {\n this._kbqEllipsisCenter = value;\n this.refresh();\n // check the view to properly calculate text-start and text-end on text initialized\n this.cdr.detectChanges();\n }\n\n /**\n * Shortest text worth splitting in the middle. Anything below it keeps its natural order and is cut off\n * at the end by the host's own `text-overflow`.\n *\n * Defaults to `0` — every overflowing text is split — because that is what the directive has always\n * done: the input was declared but never read, so any other default would silently end-truncate labels\n * that consumers expect to see split.\n */\n readonly minVisibleLength = input<number>(0);\n\n /**\n * Lower bound, in pixels, for the average glyph width used to decide how many characters fit in the\n * tail. The rendered text is measured as well and the wider of the two wins, so an underestimate here\n * can no longer push the extension out of the tail — raising it only shortens the tail further.\n */\n readonly charWidth = input(7);\n\n /**\n * Debounce time (ms) for resize events before recalculating ellipsis position.\n * @default 50\n */\n readonly debounceInterval = input<number, unknown>(50, { transform: numberAttribute });\n\n /**\n * @deprecated No longer read. Resizes now come from the shared `ResizeObserver`, which also catches the\n * container-only ones a `window:resize` listener cannot see; the host listener that used to feed this\n * subject is gone, and nothing subscribes to it. Kept as a no-op and removed in the next major version.\n * @docs-private */\n readonly resizeStream = new Subject<Event>();\n\n private _kbqEllipsisCenter: string;\n\n // Host width the last completed `refresh()` measured, so a resize that leaves it untouched (the host is\n // clamped to its container) does not schedule work that would produce the same split.\n private lastMeasuredWidth: number | undefined;\n\n private refreshTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n super();\n\n this.styleLoader.load(EllipsisCenterStyleLoader);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.content = this._kbqEllipsisCenter;\n this.refresh();\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n this.resizeObserver\n .observe(this.elementRef.nativeElement)\n .pipe(debounceTime(this.debounceInterval()), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.elementRef.nativeElement.clientWidth !== this.lastMeasuredWidth) {\n this.refresh();\n }\n });\n }\n\n ngOnDestroy() {\n clearTimeout(this.refreshTimeoutId);\n\n super.ngOnDestroy();\n }\n\n /**\n * Updates the displayed text with center ellipsis truncation based on container width.\n * Recreates start/end span elements, measures available space, and adjusts text accordingly.\n * @docs-private\n */\n refresh(): void {\n let start = '';\n let end = '';\n\n this.content = this._kbqEllipsisCenter;\n\n const [dataTextStart, dataTextEnd] = [\n 'kbq-ellipsis-center_data-text-start',\n 'kbq-ellipsis-center_data-text-end'\n ].map((querySelector) => {\n const element = this.elementRef.nativeElement.querySelector(`.${querySelector}`);\n\n if (element) {\n this.renderer.removeChild(this.elementRef.nativeElement, element);\n }\n\n const newElement = this.renderer.createElement('span');\n\n this.renderer.addClass(newElement, querySelector);\n\n return newElement;\n });\n\n this.renderer.appendChild(dataTextStart, this.renderer.createText(this._kbqEllipsisCenter));\n this.renderer.appendChild(dataTextEnd, this.renderer.createText(end));\n\n // A queued callback outlives both the spans it measures and the directive itself: it would measure\n // elements a newer `refresh()` has already detached (`scrollWidth === 0`, so the text reads as\n // fitting) and then call `hide()` on a torn-down trigger.\n clearTimeout(this.refreshTimeoutId);\n\n this.refreshTimeoutId = setTimeout(() => {\n const { clientWidth } = this.elementRef.nativeElement;\n // The full text is still in the start element at this point, so this is the width it needs.\n const textWidth = dataTextStart.scrollWidth;\n const truncated = clientWidth < textWidth;\n\n this.lastMeasuredWidth = clientWidth;\n\n if (truncated && this._kbqEllipsisCenter.length >= this.minVisibleLength()) {\n // What the text actually rendered at, not what `charWidth` assumes: with glyphs wider than\n // the Latin-sized default (Cyrillic, CJK, uppercase) the estimate hands the tail more\n // characters than the cell can hold, and the tail does not shrink — so `overflow: hidden`\n // would swallow the extension the split exists to keep.\n const averageCharWidth = Math.max(this.charWidth(), textWidth / this._kbqEllipsisCenter.length);\n const lastCharsLength = Math.round(clientWidth / 2 / averageCharWidth);\n\n // Both halves have to keep at least one character: an empty start element drops the ellipsis\n // (it is the only one carrying `text-overflow`), an empty end element drops the extension.\n const sliceIndex = Math.max(\n 1,\n Math.min(\n Math.round(this._kbqEllipsisCenter.length - lastCharsLength),\n this._kbqEllipsisCenter.length - 1\n )\n );\n\n start = this._kbqEllipsisCenter.slice(0, sliceIndex);\n end = this._kbqEllipsisCenter.slice(sliceIndex);\n } else {\n // Text that is not split goes into the start element, the only one carrying\n // `text-overflow: ellipsis` — the end element cannot shrink, so text parked there would\n // overflow the host instead of being cut off.\n start = this._kbqEllipsisCenter;\n end = '';\n }\n\n dataTextStart.innerText = start;\n dataTextEnd.innerText = end;\n\n this.disabled = !truncated;\n this.cdr.markForCheck();\n });\n\n this.renderer.appendChild(this.elementRef.nativeElement, dataTextStart);\n this.renderer.appendChild(this.elementRef.nativeElement, dataTextEnd);\n }\n}\n\n@NgModule({\n imports: [KbqEllipsisCenterDirective],\n exports: [KbqEllipsisCenterDirective]\n})\nexport class KbqEllipsisCenterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-ellipsis-center.mjs","sources":["../../../packages/components/ellipsis-center/ellipsis-center.directive.ts","../../../packages/components/ellipsis-center/koobiq-components-ellipsis-center.ts"],"sourcesContent":["import { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n inject,\n input,\n NgModule,\n numberAttribute,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { debounceTime } from 'rxjs/operators';\n\n/**\n * Component used to load the `.kbq-ellipsis-center` styles.\n */\n@Component({\n selector: 'ellipsis-center-style-loader',\n template: '',\n styleUrl: 'ellipsis-center.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nclass EllipsisCenterStyleLoader {}\n\n/**\n * Renders text as two spans and moves the ellipsis into the middle, so the tail — a file extension, the\n * digits that tell two reports apart — stays readable when the host is too narrow for the whole string. A\n * tooltip spells out the full text, and is enabled only while something is actually hidden.\n *\n * The tooltip's `forDisabledComponent` is not for this host and should not be bound on it: the hint always\n * repeats the text this directive shortened, never an explanation of why a wrapped control is unavailable,\n * and the two derive the same state, so they would overwrite each other. Overflow is the only state the\n * directive derives, and `kbqTooltipDisabled` is how a consumer suppresses the hint.\n */\n@Directive({\n selector: '[kbqEllipsisCenter]',\n host: {\n class: 'kbq-ellipsis-center'\n }\n})\nexport class KbqEllipsisCenterDirective extends KbqTooltipTrigger implements OnInit, AfterViewInit, OnDestroy {\n private cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Application-wide `ResizeObserver` shared by every consumer, as `KbqTitleDirective` uses. Unlike the\n * `window:resize` listener this directive used to carry, it also reacts to container-only resizes — a\n * splitter drag, a sidebar collapse, or the vertical scrollbar that appears once a file list fills up —\n * none of which resize the window, all of which change where the text has to be split.\n */\n private readonly resizeObserver = inject(SharedResizeObserver);\n\n /** The two spans this directive renders have no styles of their own until this is loaded. */\n private readonly styleLoader = inject(_CdkPrivateStyleLoader);\n\n set kbqEllipsisCenter(value: string) {\n this._kbqEllipsisCenter = value;\n this.refresh();\n // check the view to properly calculate text-start and text-end on text initialized\n this.cdr.detectChanges();\n }\n\n /**\n * Overrides the tooltip's hoverable default, as `KbqOptionTooltip` does. The hint spells out text that\n * the directive had to truncate, so it floats over the neighbouring content — and a pointer-capturing\n * pane would swallow the clicks meant for it.\n */\n readonly ignoreTooltipPointerEvents = input<boolean>(true);\n\n /**\n * The hint spells out what the split hid, so `kbqTooltipDisabled=\"false\"` cannot conjure one for a name\n * that fits.\n *\n * @docs-private\n */\n protected override readonly derivedDisabledWins = true;\n\n /**\n * Shortest text worth splitting in the middle. Anything below it keeps its natural order and is cut off\n * at the end by the host's own `text-overflow`.\n *\n * Defaults to `0` — every overflowing text is split — because that is what the directive has always\n * done: the input was declared but never read, so any other default would silently end-truncate labels\n * that consumers expect to see split.\n */\n readonly minVisibleLength = input<number>(0);\n\n /**\n * Lower bound, in pixels, for the average glyph width used to decide how many characters fit in the\n * tail. The rendered text is measured as well and the wider of the two wins, so an underestimate here\n * can no longer push the extension out of the tail — raising it only shortens the tail further.\n */\n readonly charWidth = input(7);\n\n /**\n * Debounce time (ms) for resize events before recalculating ellipsis position. Defaults to `50`.\n */\n readonly debounceInterval = input<number, unknown>(50, { transform: numberAttribute });\n\n private _kbqEllipsisCenter: string;\n\n // Host width the last completed `refresh()` measured, so a resize that leaves it untouched (the host is\n // clamped to its container) does not schedule work that would produce the same split.\n private lastMeasuredWidth: number | undefined;\n\n private refreshTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** @docs-private */\n readonly kbqEllipsisCenterInput = input<string | undefined>(undefined, { alias: 'kbqEllipsisCenter' });\n\n override ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n\n // A bound input is handed to its member; unbound, it leaves what code wrote.\n // A bound `undefined` clears the text.\n if (changes['kbqEllipsisCenterInput']) this.kbqEllipsisCenter = this.kbqEllipsisCenterInput() ?? '';\n }\n\n constructor() {\n super();\n\n this.styleLoader.load(EllipsisCenterStyleLoader);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.content = this._kbqEllipsisCenter;\n this.refresh();\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n this.resizeObserver\n .observe(this.elementRef.nativeElement)\n .pipe(debounceTime(this.debounceInterval()), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.elementRef.nativeElement.clientWidth !== this.lastMeasuredWidth) {\n this.refresh();\n }\n });\n }\n\n ngOnDestroy() {\n clearTimeout(this.refreshTimeoutId);\n\n super.ngOnDestroy();\n }\n\n /**\n * Updates the displayed text with center ellipsis truncation based on container width.\n * Recreates start/end span elements, measures available space, and adjusts text accordingly.\n *\n * @docs-private\n */\n refresh(): void {\n let start = '';\n let end = '';\n\n this.content = this._kbqEllipsisCenter;\n\n const [dataTextStart, dataTextEnd] = [\n 'kbq-ellipsis-center_data-text-start',\n 'kbq-ellipsis-center_data-text-end'\n ].map((querySelector) => {\n const element = this.elementRef.nativeElement.querySelector(`.${querySelector}`);\n\n if (element) {\n this.renderer.removeChild(this.elementRef.nativeElement, element);\n }\n\n const newElement = this.renderer.createElement('span');\n\n this.renderer.addClass(newElement, querySelector);\n\n return newElement;\n });\n\n this.renderer.appendChild(dataTextStart, this.renderer.createText(this._kbqEllipsisCenter));\n this.renderer.appendChild(dataTextEnd, this.renderer.createText(end));\n\n // A queued callback outlives both the spans it measures and the directive itself: it would measure\n // elements a newer `refresh()` has already detached (`scrollWidth === 0`, so the text reads as\n // fitting) and then call `hide()` on a torn-down trigger.\n clearTimeout(this.refreshTimeoutId);\n\n this.refreshTimeoutId = setTimeout(() => {\n const { clientWidth } = this.elementRef.nativeElement;\n // The full text is still in the start element at this point, so this is the width it needs.\n const textWidth = dataTextStart.scrollWidth;\n const truncated = clientWidth < textWidth;\n\n this.lastMeasuredWidth = clientWidth;\n\n if (truncated && this._kbqEllipsisCenter.length >= this.minVisibleLength()) {\n // What the text actually rendered at, not what `charWidth` assumes: with glyphs wider than\n // the Latin-sized default (Cyrillic, CJK, uppercase) the estimate hands the tail more\n // characters than the cell can hold, and the tail does not shrink — so `overflow: hidden`\n // would swallow the extension the split exists to keep.\n const averageCharWidth = Math.max(this.charWidth(), textWidth / this._kbqEllipsisCenter.length);\n const lastCharsLength = Math.round(clientWidth / 2 / averageCharWidth);\n\n // Both halves have to keep at least one character: an empty start element drops the ellipsis\n // (it is the only one carrying `text-overflow`), an empty end element drops the extension.\n const sliceIndex = Math.max(\n 1,\n Math.min(\n Math.round(this._kbqEllipsisCenter.length - lastCharsLength),\n this._kbqEllipsisCenter.length - 1\n )\n );\n\n start = this._kbqEllipsisCenter.slice(0, sliceIndex);\n end = this._kbqEllipsisCenter.slice(sliceIndex);\n } else {\n // Text that is not split goes into the start element, the only one carrying\n // `text-overflow: ellipsis` — the end element cannot shrink, so text parked there would\n // overflow the host instead of being cut off.\n start = this._kbqEllipsisCenter;\n end = '';\n }\n\n dataTextStart.innerText = start;\n dataTextEnd.innerText = end;\n\n this.setDerivedDisabled(!truncated);\n });\n\n this.renderer.appendChild(this.elementRef.nativeElement, dataTextStart);\n this.renderer.appendChild(this.elementRef.nativeElement, dataTextEnd);\n }\n}\n\n@NgModule({\n imports: [KbqEllipsisCenterDirective],\n exports: [KbqEllipsisCenterDirective]\n})\nexport class KbqEllipsisCenterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|