@koobiq/components 20.4.2 → 21.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-trigger.scss +3 -10
- package/accordion/accordion.scss +4 -6
- package/actions-panel/actions-panel-container.scss +45 -1
- package/alert/alert.component.scss +3 -2
- package/app-switcher/_app-switcher-theme.scss +0 -4
- package/app-switcher/app-switcher-dropdown-app.scss +3 -2
- package/app-switcher/app-switcher-dropdown-site.scss +2 -1
- package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
- package/app-switcher/app-switcher-tokens.scss +15 -0
- package/app-switcher/app-switcher.scss +14 -4
- package/autocomplete/autocomplete.scss +7 -6
- package/badge/badge.component.scss +5 -8
- package/breadcrumbs/breadcrumbs.scss +25 -10
- package/button/_button-base.scss +30 -7
- package/button/_button-theme.scss +16 -0
- package/button/button-group.scss +7 -0
- package/button/button-tokens.scss +0 -2
- package/button/button.scss +34 -2
- package/button-toggle/_button-toggle-theme.scss +7 -2
- package/button-toggle/button-toggle.scss +65 -15
- package/checkbox/_checkbox-theme.scss +4 -3
- package/checkbox/checkbox.scss +3 -6
- package/clamped-text/clamped-text.scss +6 -2
- package/code-block/code-block-tokens.scss +0 -224
- package/code-block/code-block.scss +20 -9
- package/content-panel/content-panel-aside.scss +3 -2
- package/content-panel/content-panel-container.scss +37 -0
- package/content-panel/content-panel.scss +4 -3
- package/core/highlight/_highlight-theme.scss +3 -1
- package/core/option/action-container.scss +2 -2
- package/core/option/action.scss +2 -1
- package/core/option/option.scss +2 -1
- package/core/pop-up/_pop-up.scss +0 -37
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
- package/core/styles/_core.scss +3 -0
- package/core/styles/_koobiq-theme.scss +5 -6
- package/core/styles/common/_animation.scss +44 -16
- package/core/styles/common/_groups-mixins.scss +21 -19
- package/core/styles/common/_groups.scss +4 -32
- package/core/styles/common/_index.scss +0 -2
- package/core/styles/common/_link.scss +117 -0
- package/core/styles/common/_list.scss +0 -26
- package/core/styles/common/_overlay.scss +8 -10
- package/core/styles/common/_rtl.scss +0 -14
- package/core/styles/common/_select.scss +33 -15
- package/core/styles/common/_squircle.scss +63 -0
- package/core/styles/common/_tokens.scss +0 -11
- package/core/styles/common/_vendor-prefixes.scss +0 -20
- package/core/styles/functions/_timing.scss +0 -22
- package/core/styles/theming/_scrollbar-theme.scss +6 -1
- package/core/styles/theming/_theming.scss +13 -65
- package/core/styles/typography/_index.scss +0 -1
- package/core/styles/typography/_typography.scss +0 -143
- package/core/styles/visual/_body.scss +1 -6
- package/core/styles/visual/_layout.scss +0 -12
- package/datepicker/calendar-body.scss +3 -1
- package/datepicker/calendar-header.scss +0 -1
- package/datepicker/datepicker-content.scss +33 -1
- package/datepicker/datepicker-toggle.scss +0 -38
- package/dl/dl-tokens.scss +10 -0
- package/dl/dl.scss +113 -13
- package/dropdown/_dropdown-theme.scss +4 -16
- package/dropdown/dropdown-item.scss +4 -10
- package/dropdown/dropdown.scss +2 -1
- package/empty-state/_empty-state-theme.scss +10 -4
- package/empty-state/empty-state-tokens.scss +4 -4
- package/empty-state/empty-state.scss +4 -0
- package/fesm2022/koobiq-components-accordion.mjs +347 -229
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +39 -39
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +46 -48
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +332 -116
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +172 -132
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +791 -609
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +260 -143
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +4342 -1595
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +73 -36
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +447 -89
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +703 -599
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
- package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +116 -60
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +550 -290
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +2871 -2595
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +79 -24
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +389 -525
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +400 -149
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +601 -459
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
- package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-link.mjs +328 -125
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +583 -433
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +55 -78
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +853 -475
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +895 -556
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +680 -310
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +684 -285
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +450 -231
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +127 -21
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +883 -693
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +207 -88
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +815 -41
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +109 -88
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
- package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +890 -501
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +63 -49
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +1062 -603
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +886 -733
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +213 -185
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +299 -147
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +233 -245
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +344 -142
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +229 -145
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +463 -143
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +177 -130
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +657 -214
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +61 -32
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +734 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1700 -617
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +290 -135
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/dropzone.scss +31 -3
- package/file-upload/file-upload-tokens.scss +2 -22
- package/file-upload/file-upload.scss +6 -0
- package/file-upload/multiple-file-upload.component.scss +14 -12
- package/file-upload/single-file-upload.component.scss +3 -2
- package/filter-bar/filters.scss +7 -0
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +8 -1
- package/flag/flag-tokens.scss +22 -0
- package/flag/flag.scss +34 -21
- package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
- package/form-field/_form-field-theme.scss +4 -9
- package/form-field/cleaner.scss +3 -1
- package/form-field/fieldset.scss +3 -4
- package/form-field/form-field.scss +26 -21
- package/form-field/password-toggle.scss +3 -1
- package/icon/_icon-button-theme.scss +7 -0
- package/icon/_icon-theme.scss +10 -7
- package/icon/icon-button.scss +0 -2
- package/icon/icon-tokens.scss +12 -9
- package/inline-edit/inline-edit.scss +40 -54
- package/input/input.scss +4 -0
- package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
- package/link/deprecated/link-tokens.scss +27 -0
- package/link/link-tokens.scss +6 -25
- package/link/link.scss +137 -0
- package/list/list.scss +3 -2
- package/loader-overlay/_loader-overlay-theme.scss +19 -10
- package/loader-overlay/loader-overlay-tokens.scss +0 -2
- package/loader-overlay/loader-overlay.scss +7 -1
- package/markdown/_markdown-theme.scss +16 -0
- package/markdown/markdown-tokens.scss +5 -0
- package/markdown/markdown.scss +2 -1
- package/modal/_modal-animation.scss +23 -14
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal.scss +35 -31
- package/navbar/_navbar-item_horizontal.scss +8 -6
- package/navbar/_navbar-item_vertical.scss +18 -6
- package/navbar/_navbar-theme.scss +9 -1
- package/navbar/navbar-brand.scss +8 -6
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.scss +8 -9
- package/navbar/navbar-toggle.scss +3 -3
- package/navbar/navbar-tokens.scss +14 -0
- package/navbar/navbar.scss +1 -2
- package/navbar/vertical-navbar.scss +2 -2
- package/notification-center/_notification-center-theme.scss +11 -6
- package/notification-center/notification-center-tokens.scss +33 -0
- package/notification-center/notification-center.scss +58 -20
- package/notification-center/notification-item.scss +15 -6
- package/package.json +112 -81
- package/popover/popover-tokens.scss +0 -2
- package/popover/popover.scss +41 -19
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +20 -3
- package/progress-bar/progress-bar-tokens.scss +3 -0
- package/progress-bar/progress-bar.scss +36 -8
- package/progress-spinner/progress-spinner.scss +4 -3
- package/radio/_radio-theme.scss +21 -4
- package/radio/radio-tokens.scss +7 -3
- package/radio/radio.scss +55 -8
- package/schematics/collection.json +415 -18
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.cjs +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
- package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
- package/schematics/migrations/actions-panel-overlay-container/data.cjs +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.cjs +55 -0
- package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
- package/schematics/migrations/alert-signals/README.md +13 -7
- package/schematics/migrations/alert-signals/{data.js → data.cjs} +3 -0
- package/schematics/migrations/alert-signals/index.cjs +221 -0
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.cjs +150 -0
- package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
- package/schematics/migrations/angular-animations-removal/schema.json +15 -0
- package/schematics/migrations/app-switcher-signals/README.md +88 -0
- package/schematics/migrations/app-switcher-signals/data.cjs +136 -0
- package/schematics/migrations/app-switcher-signals/index.cjs +366 -0
- package/schematics/migrations/app-switcher-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
- package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.cjs +149 -0
- package/schematics/migrations/autocomplete-signals/index.cjs +707 -0
- package/schematics/migrations/autocomplete-signals/schema.json +20 -0
- package/schematics/migrations/badge-signals/README.md +77 -0
- package/schematics/migrations/badge-signals/data.cjs +109 -0
- package/schematics/migrations/badge-signals/index.cjs +694 -0
- package/schematics/migrations/badge-signals/schema.json +20 -0
- package/schematics/migrations/button-state-and-styles/README.md +129 -0
- package/schematics/migrations/button-state-and-styles/data.cjs +136 -0
- package/schematics/migrations/button-state-and-styles/index.cjs +221 -0
- package/schematics/migrations/button-state-and-styles/schema.json +20 -0
- package/schematics/migrations/button-supported-colors/README.md +73 -0
- package/schematics/migrations/button-supported-colors/data.cjs +106 -0
- package/schematics/migrations/button-supported-colors/index.cjs +261 -0
- package/schematics/migrations/button-supported-colors/schema.json +20 -0
- package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
- package/schematics/migrations/button-toggle-signals-and-aria/data.cjs +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.cjs +497 -0
- package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/button-truncation/README.md +110 -0
- package/schematics/migrations/button-truncation/data.cjs +88 -0
- package/schematics/migrations/button-truncation/index.cjs +270 -0
- package/schematics/migrations/button-truncation/schema.json +20 -0
- package/schematics/migrations/checkbox-signals/README.md +76 -0
- package/schematics/migrations/checkbox-signals/data.cjs +114 -0
- package/schematics/migrations/checkbox-signals/index.cjs +635 -0
- package/schematics/migrations/checkbox-signals/schema.json +20 -0
- package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
- package/schematics/migrations/clamped-text-disclosure/data.cjs +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.cjs +60 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
- package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
- package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
- package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.cjs +121 -0
- package/schematics/migrations/code-block-signals/index.cjs +701 -0
- package/schematics/migrations/code-block-signals/schema.json +20 -0
- package/schematics/migrations/color-signals/README.md +46 -0
- package/schematics/migrations/color-signals/data.cjs +131 -0
- package/schematics/migrations/color-signals/index.cjs +20 -0
- package/schematics/migrations/color-signals/schema.json +20 -0
- package/schematics/migrations/core-mixins-removal/README.md +20 -0
- package/schematics/migrations/core-mixins-removal/data.cjs +27 -0
- package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
- package/schematics/migrations/core-mixins-removal/schema.json +15 -0
- package/schematics/migrations/css-selectors/README.md +2 -2
- package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.cjs +49 -0
- package/schematics/migrations/datepicker-signals/index.cjs +18 -0
- package/schematics/migrations/datepicker-signals/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +2 -2
- package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +8 -7
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.cjs +60 -0
- package/schematics/migrations/design-tokens-v4/schema.json +15 -0
- package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
- package/schematics/migrations/divider-signals-and-aria/data.cjs +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.cjs +212 -0
- package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
- package/schematics/migrations/dl-attribute-coercion/data.cjs +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.cjs +162 -0
- package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
- package/schematics/migrations/dl-standalone-names/README.md +49 -0
- package/schematics/migrations/dl-standalone-names/data.cjs +44 -0
- package/schematics/migrations/dl-standalone-names/index.cjs +322 -0
- package/schematics/migrations/dl-standalone-names/schema.json +20 -0
- package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
- package/schematics/migrations/dropdown-demote-overlay/data.cjs +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.cjs +289 -0
- package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
- package/schematics/migrations/dropdown-signals/README.md +83 -0
- package/schematics/migrations/dropdown-signals/data.cjs +152 -0
- package/schematics/migrations/dropdown-signals/index.cjs +20 -0
- package/schematics/migrations/dropdown-signals/schema.json +20 -0
- package/schematics/migrations/empty-state-error-color/README.md +84 -0
- package/schematics/migrations/empty-state-error-color/data.cjs +85 -0
- package/schematics/migrations/empty-state-error-color/index.cjs +72 -0
- package/schematics/migrations/empty-state-error-color/schema.json +15 -0
- package/schematics/migrations/empty-state-size-attr/README.md +2 -2
- package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.cjs +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.cjs +61 -0
- package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
- package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
- package/schematics/migrations/file-upload-deprecated-outputs/data.cjs +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.cjs +71 -0
- package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
- package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
- package/schematics/migrations/filter-bar-rename-action/data.cjs +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.cjs +178 -0
- package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
- package/schematics/migrations/filter-bar-signals/README.md +27 -16
- package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +1 -2
- package/schematics/migrations/filter-bar-signals/index.cjs +225 -0
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.cjs +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.cjs +62 -0
- package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
- package/schematics/migrations/flag-inner-html/README.md +67 -0
- package/schematics/migrations/flag-inner-html/data.cjs +58 -0
- package/schematics/migrations/flag-inner-html/index.cjs +62 -0
- package/schematics/migrations/flag-inner-html/schema.json +15 -0
- package/schematics/migrations/form-field-signals/README.md +125 -0
- package/schematics/migrations/form-field-signals/data.cjs +288 -0
- package/schematics/migrations/form-field-signals/index.cjs +383 -0
- package/schematics/migrations/form-field-signals/schema.json +20 -0
- package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
- package/schematics/migrations/icon-semantics-and-api/data.cjs +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.cjs +65 -0
- package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
- package/schematics/migrations/icons-replacement/README.md +5 -5
- package/schematics/migrations/icons-replacement/{index.js → index.cjs} +4 -3
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.cjs +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.cjs +98 -0
- package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
- package/schematics/migrations/input-number-surface/README.md +140 -0
- package/schematics/migrations/input-number-surface/data.cjs +135 -0
- package/schematics/migrations/input-number-surface/index.cjs +293 -0
- package/schematics/migrations/input-number-surface/schema.json +20 -0
- package/schematics/migrations/input-signals/README.md +20 -0
- package/schematics/migrations/input-signals/data.cjs +30 -0
- package/schematics/migrations/input-signals/index.cjs +18 -0
- package/schematics/migrations/input-signals/schema.json +15 -0
- package/schematics/migrations/link-deprecated-path/README.md +144 -0
- package/schematics/migrations/link-deprecated-path/index.cjs +20 -0
- package/schematics/migrations/link-deprecated-path/schema.json +20 -0
- package/schematics/migrations/link-signals/README.md +71 -0
- package/schematics/migrations/link-signals/data.cjs +116 -0
- package/schematics/migrations/link-signals/index.cjs +416 -0
- package/schematics/migrations/link-signals/schema.json +20 -0
- package/schematics/migrations/list-signals/README.md +22 -0
- package/schematics/migrations/list-signals/data.cjs +35 -0
- package/schematics/migrations/list-signals/index.cjs +18 -0
- package/schematics/migrations/list-signals/schema.json +15 -0
- package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
- package/schematics/migrations/list-tree-multiple-input/data.cjs +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.cjs +222 -0
- package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
- package/schematics/migrations/loader-overlay-signals/README.md +62 -0
- package/schematics/migrations/loader-overlay-signals/data.cjs +101 -0
- package/schematics/migrations/loader-overlay-signals/index.cjs +698 -0
- package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
- package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
- package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.cjs +257 -0
- package/schematics/migrations/locale-configuration-providers/index.cjs +295 -0
- package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
- package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
- package/schematics/migrations/mandatory-peer-dependencies/index.cjs +43 -0
- package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
- package/schematics/migrations/markdown-signals/README.md +58 -0
- package/schematics/migrations/markdown-signals/data.cjs +79 -0
- package/schematics/migrations/markdown-signals/index.cjs +640 -0
- package/schematics/migrations/markdown-signals/schema.json +20 -0
- package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
- package/schematics/migrations/modal-dialog-semantics/data.cjs +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.cjs +59 -0
- package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
- package/schematics/migrations/modal-signals/README.md +88 -0
- package/schematics/migrations/modal-signals/data.cjs +132 -0
- package/schematics/migrations/modal-signals/index.cjs +20 -0
- package/schematics/migrations/modal-signals/schema.json +20 -0
- package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
- package/schematics/migrations/navbar-signals-and-aria/data.cjs +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.cjs +569 -0
- package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/new-icons-pack/README.md +10 -10
- package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +8 -7
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.cjs +66 -0
- package/schematics/migrations/notification-center-signals/index.cjs +62 -0
- package/schematics/migrations/notification-center-signals/schema.json +15 -0
- package/schematics/migrations/option-signals/README.md +37 -0
- package/schematics/migrations/option-signals/data.cjs +86 -0
- package/schematics/migrations/option-signals/index.cjs +20 -0
- package/schematics/migrations/option-signals/schema.json +20 -0
- package/schematics/migrations/popover-leave-delay/README.md +51 -0
- package/schematics/migrations/popover-leave-delay/data.cjs +61 -0
- package/schematics/migrations/popover-leave-delay/index.cjs +55 -0
- package/schematics/migrations/popover-leave-delay/schema.json +15 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/data.cjs +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.cjs +59 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
- package/schematics/migrations/progress-spinner-signals/README.md +72 -0
- package/schematics/migrations/progress-spinner-signals/data.cjs +83 -0
- package/schematics/migrations/progress-spinner-signals/index.cjs +695 -0
- package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
- package/schematics/migrations/query-list-signals/README.md +32 -0
- package/schematics/migrations/query-list-signals/data.cjs +70 -0
- package/schematics/migrations/query-list-signals/index.cjs +18 -0
- package/schematics/migrations/query-list-signals/schema.json +15 -0
- package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
- package/schematics/migrations/radio-signals-and-aria/data.cjs +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.cjs +40 -0
- package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
- package/schematics/migrations/read-state-dwell-handlers/data.cjs +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.cjs +216 -0
- package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
- package/schematics/migrations/scrollbar-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
- package/schematics/migrations/select-signal-inputs/README.md +61 -0
- package/schematics/migrations/select-signal-inputs/data.cjs +99 -0
- package/schematics/migrations/select-signal-inputs/index.cjs +58 -0
- package/schematics/migrations/select-signal-inputs/schema.json +15 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/data.cjs +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.cjs +58 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
- package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
- package/schematics/migrations/signal-inputs-subclasses/data.cjs +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
- package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
- package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
- package/schematics/migrations/split-button-optional-disabled/data.cjs +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.cjs +58 -0
- package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
- package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
- package/schematics/migrations/splitter-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
- package/schematics/migrations/state-saving-default/README.md +67 -0
- package/schematics/migrations/state-saving-default/data.cjs +88 -0
- package/schematics/migrations/state-saving-default/index.cjs +63 -0
- package/schematics/migrations/state-saving-default/schema.json +15 -0
- package/schematics/migrations/table-cell-content/README.md +55 -0
- package/schematics/migrations/table-cell-content/data.cjs +66 -0
- package/schematics/migrations/table-cell-content/index.cjs +67 -0
- package/schematics/migrations/table-cell-content/schema.json +15 -0
- package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
- package/schematics/migrations/tabs-signals-and-aria/data.cjs +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.cjs +66 -0
- package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/tag-list-cleaner/README.md +58 -0
- package/schematics/migrations/tag-list-cleaner/data.cjs +42 -0
- package/schematics/migrations/tag-list-cleaner/index.cjs +197 -0
- package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
- package/schematics/migrations/tag-slots/README.md +41 -0
- package/schematics/migrations/tag-slots/index.cjs +191 -0
- package/schematics/migrations/tag-slots/schema.json +20 -0
- package/schematics/migrations/tags-signals/README.md +85 -0
- package/schematics/migrations/tags-signals/data.cjs +103 -0
- package/schematics/migrations/tags-signals/index.cjs +674 -0
- package/schematics/migrations/tags-signals/schema.json +20 -0
- package/schematics/migrations/textarea-signals/README.md +72 -0
- package/schematics/migrations/textarea-signals/data.cjs +121 -0
- package/schematics/migrations/textarea-signals/index.cjs +380 -0
- package/schematics/migrations/textarea-signals/schema.json +20 -0
- package/schematics/migrations/time-range-title-for/README.md +164 -0
- package/schematics/migrations/time-range-title-for/data.cjs +139 -0
- package/schematics/migrations/time-range-title-for/index.cjs +164 -0
- package/schematics/migrations/time-range-title-for/schema.json +20 -0
- package/schematics/migrations/timepicker-signals/README.md +78 -0
- package/schematics/migrations/timepicker-signals/data.cjs +82 -0
- package/schematics/migrations/timepicker-signals/index.cjs +710 -0
- package/schematics/migrations/timepicker-signals/schema.json +20 -0
- package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
- package/schematics/migrations/timezone-grouping-utils/data.cjs +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.cjs +65 -0
- package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
- package/schematics/migrations/title-encapsulation/README.md +49 -0
- package/schematics/migrations/title-encapsulation/data.cjs +69 -0
- package/schematics/migrations/title-encapsulation/index.cjs +58 -0
- package/schematics/migrations/title-encapsulation/schema.json +15 -0
- package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
- package/schematics/migrations/toast-stack-and-defaults/data.cjs +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.cjs +54 -0
- package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/data.cjs +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.cjs +61 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
- package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
- package/schematics/migrations/top-bar-container-selectors/data.cjs +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.cjs +85 -0
- package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
- package/schematics/migrations/tree-select-signals/README.md +61 -0
- package/schematics/migrations/tree-select-signals/data.cjs +106 -0
- package/schematics/migrations/tree-select-signals/index.cjs +59 -0
- package/schematics/migrations/tree-select-signals/schema.json +15 -0
- package/schematics/migrations/tree-signals/README.md +82 -0
- package/schematics/migrations/tree-signals/data.cjs +123 -0
- package/schematics/migrations/tree-signals/index.cjs +55 -0
- package/schematics/migrations/tree-signals/schema.json +15 -0
- package/schematics/migrations/tree-state-saving-default/README.md +66 -0
- package/schematics/migrations/tree-state-saving-default/data.cjs +78 -0
- package/schematics/migrations/tree-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
- package/schematics/migrations/username-pipe-injection/README.md +59 -0
- package/schematics/migrations/username-pipe-injection/data.cjs +78 -0
- package/schematics/migrations/username-pipe-injection/index.cjs +59 -0
- package/schematics/migrations/username-pipe-injection/schema.json +15 -0
- package/schematics/migrations/v20-upgrade/README.md +36 -16
- package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +124 -77
- package/schematics/migrations/v20-upgrade/index.cjs +19 -0
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.cjs +1371 -0
- package/schematics/migrations/v21-upgrade/index.cjs +95 -0
- package/schematics/migrations/v21-upgrade/schema.json +20 -0
- package/schematics/migrations/zoneless-change-detection/README.md +30 -0
- package/schematics/migrations/zoneless-change-detection/data.cjs +29 -0
- package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +401 -6
- package/schematics/ng-add/index.cjs +266 -0
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
- package/schematics/utils/deprecated-path-migration.cjs +62 -0
- package/schematics/utils/html-config.cjs +148 -0
- package/schematics/utils/{icon-migration.js → icon-migration.cjs} +2 -2
- package/schematics/utils/list-item-pattern.cjs +16 -0
- package/schematics/utils/{package-config.js → package-config.cjs} +3 -32
- package/schematics/utils/project-files.cjs +25 -0
- package/schematics/utils/replacement-driver.cjs +337 -0
- package/schematics/utils/safe-rule.cjs +23 -0
- package/schematics/utils/signal-members-migration.cjs +779 -0
- package/schematics/utils/tag-patterns.cjs +21 -0
- package/schematics/utils/template-ref-access.cjs +155 -0
- package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
- package/schematics/utils/warn-only-migration.cjs +52 -0
- package/schematics/utils/workspace-styles.cjs +123 -0
- package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
- package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
- package/scrollbar/native-scrollbar.scss +68 -0
- package/scrollbar/scrollbar-tokens.scss +13 -22
- package/scrollbar/scrollbar-track.scss +94 -0
- package/scrollbar/scrollbar-viewport.scss +33 -0
- package/scrollbar/scrollbar.scss +24 -0
- package/search-expandable/search-expandable-tokens.scss +4 -0
- package/search-expandable/search-expandable.scss +4 -2
- package/select/_select-theme.scss +3 -16
- package/select/select.scss +0 -6
- package/sidebar/sidebar.scss +20 -0
- package/sidepanel/_sidepanel-theme.scss +1 -1
- package/sidepanel/sidepanel-tokens.scss +7 -1
- package/sidepanel/sidepanel.scss +41 -5
- package/skeleton/skeleton-presets.scss +350 -0
- package/skeleton/skeleton-tokens.scss +127 -0
- package/skeleton/skeleton.scss +53 -45
- package/split-button/_split-button-theme.scss +4 -4
- package/split-button/split-button.scss +2 -6
- package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
- package/splitter/deprecated/splitter.scss +51 -0
- package/splitter/splitter-tokens.scss +19 -0
- package/splitter/splitter.scss +148 -28
- package/table/_table-theme.scss +13 -12
- package/table/table-tokens.scss +8 -0
- package/table/table.scss +47 -22
- package/tabs/_tabs-common.scss +14 -14
- package/tabs/_tabs-theme.scss +4 -5
- package/tabs/tab-body.scss +49 -1
- package/tabs/tab-header.scss +2 -1
- package/tags/tag-list.scss +4 -0
- package/tags/tag.scss +19 -1
- package/time-range/time-range.scss +9 -0
- package/timezone/timezone-option.component.scss +4 -7
- package/timezone/timezone-select.component.scss +3 -0
- package/toast/_toast-theme.scss +1 -4
- package/toast/toast-container.component.scss +19 -13
- package/toast/toast-tokens.scss +12 -6
- package/toast/toast.component.scss +42 -19
- package/toggle/_toggle-theme.scss +4 -10
- package/toggle/toggle.scss +67 -26
- package/tooltip/_tooltip-theme.scss +7 -1
- package/tooltip/tooltip-tokens.scss +1 -2
- package/tooltip/tooltip.scss +55 -9
- package/top-bar/top-bar-tokens.scss +13 -2
- package/top-bar/top-bar.scss +24 -19
- package/tree/_tree-theme.scss +0 -1
- package/tree/toggle.scss +5 -9
- package/tree/tree-option.scss +2 -4
- package/tree/tree-tokens.scss +2 -1
- package/tree/tree.scss +3 -5
- package/tree-select/_tree-select-theme.scss +4 -15
- package/tree-select/tree-select-tokens.scss +16 -0
- package/tree-select/tree-select.scss +0 -6
- package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
- package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
- package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
- package/types/koobiq-components-app-switcher.d.ts +406 -0
- package/types/koobiq-components-autocomplete.d.ts +443 -0
- package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
- package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
- package/types/koobiq-components-button-toggle.d.ts +340 -0
- package/types/koobiq-components-button.d.ts +296 -0
- package/types/koobiq-components-checkbox.d.ts +172 -0
- package/types/koobiq-components-clamped-text.d.ts +184 -0
- package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +150 -88
- package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
- package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
- package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
- package/types/koobiq-components-divider.d.ts +43 -0
- package/types/koobiq-components-dl.d.ts +235 -0
- package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
- package/types/koobiq-components-ellipsis-center.d.ts +85 -0
- package/types/koobiq-components-empty-state.d.ts +106 -0
- package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
- package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
- package/types/koobiq-components-flag.d.ts +68 -0
- package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
- package/types/koobiq-components-icon.d.ts +333 -0
- package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
- package/types/koobiq-components-input.d.ts +477 -0
- package/types/koobiq-components-link-deprecated.d.ts +101 -0
- package/types/koobiq-components-link.d.ts +176 -0
- package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
- package/types/koobiq-components-loader-overlay.d.ts +101 -0
- package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
- package/types/koobiq-components-modal.d.ts +666 -0
- package/types/koobiq-components-navbar.d.ts +569 -0
- package/types/koobiq-components-notification-center.d.ts +500 -0
- package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
- package/types/koobiq-components-popover.d.ts +468 -0
- package/types/koobiq-components-progress-bar.d.ts +67 -0
- package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
- package/types/koobiq-components-radio.d.ts +294 -0
- package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
- package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
- package/types/koobiq-components-scrollbar.d.ts +154 -0
- package/types/koobiq-components-search-expandable.d.ts +164 -0
- package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
- package/types/koobiq-components-sidebar.d.ts +152 -0
- package/types/koobiq-components-sidepanel.d.ts +436 -0
- package/types/koobiq-components-skeleton.d.ts +234 -0
- package/types/koobiq-components-split-button.d.ts +65 -0
- package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
- package/types/koobiq-components-splitter.d.ts +406 -0
- package/types/koobiq-components-table.d.ts +44 -0
- package/types/koobiq-components-tabs.d.ts +888 -0
- package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
- package/types/koobiq-components-textarea.d.ts +178 -0
- package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
- package/types/koobiq-components-timepicker.d.ts +223 -0
- package/types/koobiq-components-timezone.d.ts +266 -0
- package/types/koobiq-components-title.d.ts +184 -0
- package/types/koobiq-components-toast.d.ts +289 -0
- package/types/koobiq-components-toggle.d.ts +121 -0
- package/types/koobiq-components-tooltip.d.ts +610 -0
- package/types/koobiq-components-top-bar.d.ts +61 -0
- package/types/koobiq-components-tree-select.d.ts +670 -0
- package/types/koobiq-components-tree.d.ts +1339 -0
- package/types/koobiq-components-username.d.ts +340 -0
- package/username/_username-theme.scss +35 -0
- package/username/username.scss +10 -34
- package/app-switcher/index.d.ts +0 -276
- package/autocomplete/index.d.ts +0 -286
- package/button/index.d.ts +0 -153
- package/button-toggle/index.d.ts +0 -162
- package/checkbox/index.d.ts +0 -163
- package/clamped-text/index.d.ts +0 -146
- package/core/styles/_tokens.scss +0 -7
- package/core/styles/common/_clearfix.scss +0 -13
- package/core/styles/common/_popup.scss +0 -6
- package/core/styles/functions/_index.scss +0 -3
- package/core/styles/functions/_number.scss +0 -60
- package/core/styles/functions/_string.scss +0 -18
- package/core/styles/theming/scrollbar-tokens.scss +0 -25
- package/core/styles/typography/_typography-utils.scss +0 -84
- package/divider/index.d.ts +0 -20
- package/dl/index.d.ts +0 -45
- package/ellipsis-center/index.d.ts +0 -71
- package/empty-state/index.d.ts +0 -45
- package/flag/index.d.ts +0 -44
- package/icon/index.d.ts +0 -200
- package/input/index.d.ts +0 -354
- package/link/index.d.ts +0 -56
- package/loader-overlay/index.d.ts +0 -57
- package/modal/index.d.ts +0 -339
- package/navbar/index.d.ts +0 -372
- package/notification-center/index.d.ts +0 -323
- package/popover/index.d.ts +0 -182
- package/prebuilt-themes/dark-theme.css +0 -1
- package/prebuilt-themes/light-theme.css +0 -1
- package/progress-bar/index.d.ts +0 -31
- package/radio/index.d.ts +0 -203
- package/schematics/migrations/alert-signals/index.js +0 -353
- package/schematics/migrations/filter-bar-signals/index.js +0 -319
- package/schematics/migrations/v20-upgrade/index.js +0 -225
- package/schematics/ng-add/index.js +0 -39
- package/search-expandable/index.d.ts +0 -101
- package/sidebar/index.d.ts +0 -94
- package/sidepanel/index.d.ts +0 -272
- package/skeleton/index.d.ts +0 -26
- package/split-button/index.d.ts +0 -46
- package/table/index.d.ts +0 -25
- package/tabs/index.d.ts +0 -677
- package/textarea/index.d.ts +0 -138
- package/timepicker/index.d.ts +0 -197
- package/timezone/index.d.ts +0 -125
- package/title/index.d.ts +0 -139
- package/toast/index.d.ts +0 -178
- package/toggle/index.d.ts +0 -104
- package/tooltip/index.d.ts +0 -335
- package/top-bar/index.d.ts +0 -33
- package/tree/index.d.ts +0 -802
- package/tree-select/index.d.ts +0 -475
- package/username/index.d.ts +0 -194
- /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
- /package/schematics/utils/{ast.js → ast.cjs} +0 -0
- /package/schematics/utils/{messages.js → messages.cjs} +0 -0
- /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
- /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
|
@@ -1,90 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _IdGenerator, A11yModule } from '@angular/cdk/a11y';
|
|
2
|
+
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
2
3
|
import { Platform } from '@angular/cdk/platform';
|
|
3
4
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, inject, ElementRef, NgZone,
|
|
5
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { InjectionToken, inject, ElementRef, NgZone, DestroyRef, input, booleanAttribute, Renderer2, signal, computed, linkedSignal, effect, untracked, Directive, NgModule } from '@angular/core';
|
|
6
|
+
import { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
7
|
import { NgControl, NgForm, FormGroupDirective, FormsModule } from '@angular/forms';
|
|
7
|
-
import { ErrorStateMatcher, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_WINDOW, kbqInjectAutofilled } from '@koobiq/components/core';
|
|
8
|
+
import { ErrorStateMatcher, KBQ_PARENT_ANIMATION_COMPONENT, KbqErrorStateTracker, KBQ_WINDOW, kbqOptionalNumberAttribute, kbqInjectAutofilled } from '@koobiq/components/core';
|
|
8
9
|
import { KbqFormFieldControl, KbqFormFieldModule } from '@koobiq/components/form-field';
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
10
|
+
import * as i1 from '@koobiq/components/scrollbar';
|
|
11
|
+
import { KbqNativeScrollbar } from '@koobiq/components/scrollbar';
|
|
12
|
+
import { asapScheduler } from 'rxjs';
|
|
11
13
|
|
|
12
14
|
const KBQ_TEXTAREA_VALUE_ACCESSOR = new InjectionToken('KBQ_TEXTAREA_VALUE_ACCESSOR');
|
|
13
|
-
|
|
15
|
+
const isObject = (value) => typeof value === 'object' && value !== null;
|
|
14
16
|
class KbqTextarea {
|
|
15
|
-
/** Parameter enables or disables the ability to automatically increase the height.
|
|
16
|
-
* If set to false, the textarea becomes vertically resizable. */
|
|
17
|
-
// TODO: Skipped for migration because:
|
|
18
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
19
|
-
get canGrow() {
|
|
20
|
-
return !this.maxRowLimitReached && this._canGrow;
|
|
21
|
-
}
|
|
22
|
-
set canGrow(value) {
|
|
23
|
-
this._canGrow = value;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Implemented as part of KbqFormFieldControl.
|
|
27
|
-
* @docs-private
|
|
28
|
-
*/
|
|
29
|
-
// TODO: Skipped for migration because:
|
|
30
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
31
|
-
get disabled() {
|
|
32
|
-
if (this.ngControl && this.ngControl.disabled !== null) {
|
|
33
|
-
return this.ngControl.disabled;
|
|
34
|
-
}
|
|
35
|
-
return this._disabled;
|
|
36
|
-
}
|
|
37
|
-
set disabled(value) {
|
|
38
|
-
this._disabled = coerceBooleanProperty(value);
|
|
39
|
-
if (this.focused) {
|
|
40
|
-
this.focused = false;
|
|
41
|
-
this.stateChanges.next();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Implemented as part of KbqFormFieldControl.
|
|
46
|
-
* @docs-private
|
|
47
|
-
*/
|
|
48
|
-
// TODO: Skipped for migration because:
|
|
49
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
50
|
-
get id() {
|
|
51
|
-
return this._id;
|
|
52
|
-
}
|
|
53
|
-
set id(value) {
|
|
54
|
-
this._id = value || this.uid;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Implemented as part of KbqFormFieldControl.
|
|
58
|
-
* @docs-private
|
|
59
|
-
*/
|
|
60
|
-
// TODO: Skipped for migration because:
|
|
61
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
62
|
-
get required() {
|
|
63
|
-
return this._required;
|
|
64
|
-
}
|
|
65
|
-
set required(value) {
|
|
66
|
-
this._required = coerceBooleanProperty(value);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Implemented as part of KbqFormFieldControl.
|
|
70
|
-
* @docs-private
|
|
71
|
-
*/
|
|
72
|
-
// TODO: Skipped for migration because:
|
|
73
|
-
// Accessor inputs cannot be migrated as they are too complex.
|
|
74
|
-
get value() {
|
|
75
|
-
return this.valueAccessor.value;
|
|
76
|
-
}
|
|
77
|
-
set value(value) {
|
|
78
|
-
if (value !== this.value) {
|
|
79
|
-
this.valueAccessor.value = value;
|
|
80
|
-
this.stateChanges.next();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/** Flag that will be set to true when the maximum number of lines is reached.
|
|
84
|
-
* Maximum number of rows can be set using the maxRows input. */
|
|
85
|
-
get maxRowLimitReached() {
|
|
86
|
-
return this.rowsCount > this.maxRows();
|
|
87
|
-
}
|
|
88
17
|
constructor() {
|
|
89
18
|
this.elementRef = inject(ElementRef);
|
|
90
19
|
this.ngControl = inject(NgControl, { optional: true, self: true });
|
|
@@ -93,84 +22,173 @@ class KbqTextarea {
|
|
|
93
22
|
this.defaultErrorStateMatcher = inject(ErrorStateMatcher);
|
|
94
23
|
this.parent = inject(KBQ_PARENT_ANIMATION_COMPONENT, { optional: true, host: true });
|
|
95
24
|
this.ngZone = inject(NgZone);
|
|
25
|
+
this.destroyRef = inject(DestroyRef);
|
|
26
|
+
this.errorStateTracker = new KbqErrorStateTracker(this.defaultErrorStateMatcher, this.ngControl, this.parentFormGroup, this.parentForm);
|
|
96
27
|
/** Whether the component is in an error state. */
|
|
97
|
-
this.errorState =
|
|
28
|
+
this.errorState = this.errorStateTracker.errorState;
|
|
29
|
+
/**
|
|
30
|
+
* Parameter enables or disables the ability to automatically increase the height.
|
|
31
|
+
* If set to false, the textarea becomes vertically resizable.
|
|
32
|
+
*/
|
|
33
|
+
this.canGrow = input(true, { ...(ngDevMode ? { debugName: "canGrow" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
98
34
|
this.isBrowser = inject(Platform).isBrowser;
|
|
99
35
|
this.renderer = inject(Renderer2);
|
|
100
36
|
this.window = inject(KBQ_WINDOW);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
37
|
+
/** Maximum number of lines to which the textarea will grow. Unlimited when unset. */
|
|
38
|
+
this.maxRows = input(undefined, { ...(ngDevMode ? { debugName: "maxRows" } : /* istanbul ignore next */ {}), transform: kbqOptionalNumberAttribute });
|
|
39
|
+
/** An object used to control when error messages are shown. */
|
|
40
|
+
this.errorStateMatcher = input(...(ngDevMode ? [undefined, { debugName: "errorStateMatcher" }] : /* istanbul ignore next */ []));
|
|
41
|
+
this.focusedValue = signal(false, ...(ngDevMode ? [{ debugName: "focusedValue" }] : /* istanbul ignore next */ []));
|
|
104
42
|
/**
|
|
105
43
|
* Implemented as part of KbqFormFieldControl.
|
|
44
|
+
*
|
|
106
45
|
* @docs-private
|
|
107
46
|
*/
|
|
108
|
-
this.focused =
|
|
47
|
+
this.focused = this.focusedValue.asReadonly();
|
|
109
48
|
/**
|
|
110
49
|
* Implemented as part of KbqFormFieldControl.
|
|
50
|
+
*
|
|
111
51
|
* @docs-private
|
|
112
52
|
*/
|
|
113
53
|
this.autofilled = kbqInjectAutofilled();
|
|
114
54
|
/**
|
|
115
55
|
* Implemented as part of KbqFormFieldControl.
|
|
56
|
+
*
|
|
116
57
|
* @docs-private
|
|
117
58
|
*/
|
|
118
|
-
this.
|
|
59
|
+
this.controlType = 'textarea';
|
|
60
|
+
/** @docs-private */
|
|
61
|
+
this.disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled',
|
|
62
|
+
transform: booleanAttribute });
|
|
63
|
+
/** `disabled` of the bound form control, which takes precedence over the input. */
|
|
64
|
+
this.formDisabled = signal(null, ...(ngDevMode ? [{ debugName: "formDisabled" }] : /* istanbul ignore next */ []));
|
|
119
65
|
/**
|
|
120
66
|
* Implemented as part of KbqFormFieldControl.
|
|
67
|
+
*
|
|
121
68
|
* @docs-private
|
|
122
69
|
*/
|
|
123
|
-
this.
|
|
124
|
-
|
|
125
|
-
this.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
70
|
+
this.disabled = computed(() => this.formDisabled() ?? this.disabledInput(), ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
71
|
+
/** @docs-private */
|
|
72
|
+
this.idInput = input(undefined, { ...(ngDevMode ? { debugName: "idInput" } : /* istanbul ignore next */ {}), alias: 'id' });
|
|
73
|
+
/**
|
|
74
|
+
* Implemented as part of KbqFormFieldControl.
|
|
75
|
+
*
|
|
76
|
+
* @docs-private
|
|
77
|
+
*/
|
|
78
|
+
this.id = computed(() => this.idInput() || this.uid, ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
79
|
+
/** @docs-private */
|
|
80
|
+
this.placeholderInput = input(undefined, { ...(ngDevMode ? { debugName: "placeholderInput" } : /* istanbul ignore next */ {}), alias: 'placeholder' });
|
|
81
|
+
/**
|
|
82
|
+
* Implemented as part of KbqFormFieldControl.
|
|
83
|
+
*
|
|
84
|
+
* @docs-private
|
|
85
|
+
*/
|
|
86
|
+
this.placeholder = linkedSignal(() => this.placeholderInput(), ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
87
|
+
/** Distance from the last line to the bottom border. Defaults to a single line height. */
|
|
88
|
+
this.freeRowsHeight = input(undefined, { ...(ngDevMode ? { debugName: "freeRowsHeight" } : /* istanbul ignore next */ {}), transform: kbqOptionalNumberAttribute });
|
|
89
|
+
/**
|
|
90
|
+
* Implemented as part of KbqFormFieldControl.
|
|
91
|
+
*
|
|
92
|
+
* @docs-private
|
|
93
|
+
*/
|
|
94
|
+
this.required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
95
|
+
/** @docs-private */
|
|
96
|
+
this.valueInput = input(undefined, { ...(ngDevMode ? { debugName: "valueInput" } : /* istanbul ignore next */ {}), alias: 'value' });
|
|
97
|
+
this.emptyValue = signal(true, ...(ngDevMode ? [{ debugName: "emptyValue" }] : /* istanbul ignore next */ []));
|
|
98
|
+
/**
|
|
99
|
+
* Implemented as part of KbqFormFieldControl.
|
|
100
|
+
*
|
|
101
|
+
* @docs-private
|
|
102
|
+
*/
|
|
103
|
+
this.empty = this.emptyValue.asReadonly();
|
|
104
|
+
/**
|
|
105
|
+
* Flag that will be set to true when the maximum number of lines is reached.
|
|
106
|
+
* Maximum number of rows can be set using the maxRows input.
|
|
107
|
+
*/
|
|
108
|
+
this.maxRowLimitReached = computed(() => {
|
|
109
|
+
const maxRows = this.maxRows();
|
|
110
|
+
return maxRows !== undefined && this.rowsCount() > maxRows;
|
|
111
|
+
}, ...(ngDevMode ? [{ debugName: "maxRowLimitReached" }] : /* istanbul ignore next */ []));
|
|
112
|
+
/**
|
|
113
|
+
* Whether the textarea still grows with its content. It stops once `maxRows` is reached, and from
|
|
114
|
+
* there the element keeps its own scrollbar: `kbq-textarea_max-row-limit-reached` sets
|
|
115
|
+
* `resize: unset`, which follows `kbq-textarea-resizable` in the stylesheet and wins on source
|
|
116
|
+
* order, so no native handle appears.
|
|
117
|
+
*
|
|
118
|
+
* @docs-private
|
|
119
|
+
*/
|
|
120
|
+
this.growing = computed(() => !this.maxRowLimitReached() && this.canGrow(), ...(ngDevMode ? [{ debugName: "growing" }] : /* istanbul ignore next */ []));
|
|
121
|
+
/** Distance from the last line to the bottom border, falling back to the measured line height. */
|
|
122
|
+
this.resolvedFreeRowsHeight = computed(() => this.freeRowsHeight() ?? this.lineHeight(), ...(ngDevMode ? [{ debugName: "resolvedFreeRowsHeight" }] : /* istanbul ignore next */ []));
|
|
123
|
+
this.uid = inject(_IdGenerator).getId('kbq-textarea-');
|
|
124
|
+
/** Measured once the textarea has been rendered; the growth arithmetic is in terms of these. */
|
|
125
|
+
this.lineHeight = signal(0, ...(ngDevMode ? [{ debugName: "lineHeight" }] : /* istanbul ignore next */ []));
|
|
126
|
+
this.minHeight = signal(0, ...(ngDevMode ? [{ debugName: "minHeight" }] : /* istanbul ignore next */ []));
|
|
127
|
+
this.rowsCount = signal(0, ...(ngDevMode ? [{ debugName: "rowsCount" }] : /* istanbul ignore next */ []));
|
|
146
128
|
const inputValueAccessor = inject(KBQ_TEXTAREA_VALUE_ACCESSOR, { optional: true, self: true });
|
|
147
129
|
// If no input value accessor was explicitly specified, use the element as the textarea value
|
|
148
130
|
// accessor.
|
|
149
131
|
this.valueAccessor = inputValueAccessor || this.elementRef.nativeElement;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
this.
|
|
153
|
-
|
|
154
|
-
this.
|
|
155
|
-
|
|
132
|
+
// Read once: a custom accessor may build a new value on every read.
|
|
133
|
+
const initialValue = this.valueAccessor.value;
|
|
134
|
+
this.value = signal(initialValue, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
135
|
+
this.syncedValue = initialValue;
|
|
136
|
+
this.syncedText = this.elementRef.nativeElement.value;
|
|
137
|
+
if (this.parent) {
|
|
138
|
+
outputToObservable(this.parent.animationDone)
|
|
139
|
+
.pipe(takeUntilDestroyed())
|
|
140
|
+
// eslint-disable-next-line @angular-eslint/no-lifecycle-call
|
|
141
|
+
.subscribe(() => this.ngOnInit());
|
|
142
|
+
}
|
|
143
|
+
// A bound value replaces the current one whenever the binding changes.
|
|
144
|
+
effect(() => {
|
|
145
|
+
const value = this.valueInput();
|
|
146
|
+
if (value !== undefined) {
|
|
147
|
+
untracked(() => this.value.set(value));
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
// A value set in code is written to the element on the next change detection. The one the element last agreed
|
|
151
|
+
// on is not written back: a custom accessor that builds a new value on every read would be written on every
|
|
152
|
+
// keystroke.
|
|
153
|
+
effect(() => {
|
|
154
|
+
const value = this.value();
|
|
155
|
+
untracked(() => {
|
|
156
|
+
if (value !== this.syncedValue) {
|
|
157
|
+
if (this.valueAccessor.value !== value) {
|
|
158
|
+
this.valueAccessor.value = value;
|
|
159
|
+
}
|
|
160
|
+
this.syncedValue = value;
|
|
161
|
+
this.syncedText = this.elementRef.nativeElement.value;
|
|
162
|
+
}
|
|
163
|
+
this.emptyValue.set(this.isEmpty());
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
// The height follows the content and the inputs that size it, measured once the change is rendered.
|
|
167
|
+
effect(() => {
|
|
168
|
+
this.value();
|
|
169
|
+
this.canGrow();
|
|
170
|
+
this.maxRows();
|
|
171
|
+
this.freeRowsHeight();
|
|
172
|
+
untracked(() => asapScheduler.schedule(() => this.grow()));
|
|
173
|
+
});
|
|
174
|
+
// Browsers may not fire the blur event if the textarea is disabled too quickly.
|
|
175
|
+
// Reset from here to ensure that the element doesn't become stuck.
|
|
176
|
+
effect(() => {
|
|
177
|
+
if (this.disabled()) {
|
|
178
|
+
untracked(() => this.focusedValue.set(false));
|
|
179
|
+
}
|
|
180
|
+
});
|
|
156
181
|
}
|
|
157
182
|
ngOnInit() {
|
|
158
183
|
if (!this.isBrowser)
|
|
159
184
|
return;
|
|
160
185
|
Promise.resolve().then(() => {
|
|
161
|
-
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
this.minHeight
|
|
165
|
-
this.freeRowsHeight = this.freeRowsHeight ?? this.lineHeight;
|
|
186
|
+
const styles = this.window.getComputedStyle(this.elementRef.nativeElement);
|
|
187
|
+
const lineHeight = parseInt(styles.lineHeight, 10);
|
|
188
|
+
this.lineHeight.set(lineHeight);
|
|
189
|
+
this.minHeight.set(lineHeight + parseInt(styles.paddingTop, 10) + parseInt(styles.paddingBottom, 10));
|
|
166
190
|
});
|
|
167
|
-
setTimeout(this.grow, 0);
|
|
168
|
-
}
|
|
169
|
-
ngOnChanges() {
|
|
170
|
-
this.stateChanges.next();
|
|
171
|
-
}
|
|
172
|
-
ngOnDestroy() {
|
|
173
|
-
this.stateChanges.complete();
|
|
191
|
+
setTimeout(() => this.grow(), 0);
|
|
174
192
|
}
|
|
175
193
|
ngDoCheck() {
|
|
176
194
|
if (this.ngControl) {
|
|
@@ -178,6 +196,7 @@ class KbqTextarea {
|
|
|
178
196
|
// error triggers that we can't subscribe to (e.g. parent form submissions). This means
|
|
179
197
|
// that whatever logic is in here has to be super lean or we risk destroying the performance.
|
|
180
198
|
this.updateErrorState();
|
|
199
|
+
this.formDisabled.set(this.ngControl.disabled);
|
|
181
200
|
}
|
|
182
201
|
// We need to dirty-check the native element's value, because there are some cases where
|
|
183
202
|
// we won't be notified when it changes (e.g. the consumer isn't using forms or they're
|
|
@@ -185,51 +204,74 @@ class KbqTextarea {
|
|
|
185
204
|
this.dirtyCheckNativeValue();
|
|
186
205
|
}
|
|
187
206
|
updateErrorState() {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;
|
|
191
|
-
const control = this.ngControl ? this.ngControl.control : null;
|
|
192
|
-
const newState = matcher.isErrorState(control, parent);
|
|
193
|
-
if (newState !== oldState) {
|
|
194
|
-
this.errorState = newState;
|
|
195
|
-
this.stateChanges.next();
|
|
196
|
-
}
|
|
207
|
+
this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();
|
|
208
|
+
this.errorStateTracker.updateErrorState();
|
|
197
209
|
}
|
|
210
|
+
/** @docs-private */
|
|
198
211
|
onBlur() {
|
|
199
212
|
this.focusChanged(false);
|
|
200
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Grow textarea height to avoid vertical scroll.
|
|
216
|
+
*
|
|
217
|
+
* @docs-private
|
|
218
|
+
*/
|
|
219
|
+
grow() {
|
|
220
|
+
// Every call is deferred, so it can land once the textarea is destroyed and has no parent to measure in.
|
|
221
|
+
if (!this.isBrowser || this.destroyRef.destroyed || !this.canGrow())
|
|
222
|
+
return;
|
|
223
|
+
this.ngZone.runOutsideAngular(() => {
|
|
224
|
+
const textarea = this.elementRef.nativeElement;
|
|
225
|
+
const clone = textarea.cloneNode(false);
|
|
226
|
+
this.renderer.appendChild(this.renderer.parentNode(textarea), clone);
|
|
227
|
+
const outerHeight = parseInt(this.window.getComputedStyle(textarea).height, 10);
|
|
228
|
+
const diff = outerHeight - +textarea.clientHeight;
|
|
229
|
+
clone.style.minHeight = '0'; // this line is important to height recalculation
|
|
230
|
+
const lineHeight = this.lineHeight();
|
|
231
|
+
const height = Math.max(this.minHeight(), +clone.scrollHeight + diff + this.resolvedFreeRowsHeight());
|
|
232
|
+
clone.remove();
|
|
233
|
+
this.rowsCount.set(lineHeight > 0 ? Math.floor(height / lineHeight) : 0);
|
|
234
|
+
const maxRows = this.maxRows();
|
|
235
|
+
textarea.style.minHeight = coerceCssPixelValue(maxRows !== undefined && this.maxRowLimitReached() ? maxRows * lineHeight : height);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
201
238
|
/** Focuses the textarea. */
|
|
202
239
|
focus() {
|
|
203
240
|
this.elementRef.nativeElement.focus();
|
|
204
241
|
}
|
|
205
|
-
/** Callback for the cases where the focused state of the textarea changes. */
|
|
206
|
-
focusChanged(isFocused) {
|
|
207
|
-
if (isFocused !== this.focused) {
|
|
208
|
-
this.focused = isFocused;
|
|
209
|
-
this.stateChanges.next();
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
242
|
/**
|
|
213
|
-
*
|
|
243
|
+
* Callback for the cases where the focused state of the textarea changes.
|
|
244
|
+
*
|
|
214
245
|
* @docs-private
|
|
215
246
|
*/
|
|
216
|
-
|
|
217
|
-
|
|
247
|
+
focusChanged(isFocused) {
|
|
248
|
+
this.focusedValue.set(isFocused);
|
|
218
249
|
}
|
|
219
250
|
/**
|
|
220
251
|
* Implemented as part of KbqFormFieldControl.
|
|
252
|
+
*
|
|
221
253
|
* @docs-private
|
|
222
254
|
*/
|
|
223
255
|
onContainerClick() {
|
|
224
256
|
this.focus();
|
|
225
257
|
}
|
|
226
|
-
/**
|
|
258
|
+
/**
|
|
259
|
+
* Reads the native value back, since it changes without notice: through the forms API, which writes the
|
|
260
|
+
* element directly, or by the user typing into a textarea that no form listens to.
|
|
261
|
+
*
|
|
262
|
+
* @docs-private
|
|
263
|
+
*/
|
|
227
264
|
dirtyCheckNativeValue() {
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
265
|
+
const nativeValue = this.valueAccessor.value;
|
|
266
|
+
const text = this.elementRef.nativeElement.value;
|
|
267
|
+
// Only a change of the element itself: a value set in code and not yet written must not be overwritten. An
|
|
268
|
+
// object counts as changed only with the text, as a custom accessor may build a new one on every read.
|
|
269
|
+
if (nativeValue !== this.syncedValue && (!isObject(nativeValue) || text !== this.syncedText)) {
|
|
270
|
+
this.syncedValue = nativeValue;
|
|
271
|
+
this.syncedText = text;
|
|
272
|
+
this.value.set(nativeValue);
|
|
232
273
|
}
|
|
274
|
+
this.emptyValue.set(this.isEmpty());
|
|
233
275
|
}
|
|
234
276
|
/** Checks whether the textarea is invalid based on the native validation. */
|
|
235
277
|
isBadInput() {
|
|
@@ -237,55 +279,41 @@ class KbqTextarea {
|
|
|
237
279
|
const validity = this.elementRef.nativeElement.validity;
|
|
238
280
|
return validity && validity.badInput;
|
|
239
281
|
}
|
|
240
|
-
|
|
241
|
-
|
|
282
|
+
isEmpty() {
|
|
283
|
+
return !this.elementRef.nativeElement.value && !this.isBadInput();
|
|
284
|
+
}
|
|
285
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTextarea, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
286
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqTextarea, isStandalone: true, selector: "textarea[kbqTextarea]", inputs: { canGrow: { classPropertyName: "canGrow", publicName: "canGrow", isSignal: true, isRequired: false, transformFunction: null }, maxRows: { classPropertyName: "maxRows", publicName: "maxRows", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, idInput: { classPropertyName: "idInput", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, placeholderInput: { classPropertyName: "placeholderInput", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, freeRowsHeight: { classPropertyName: "freeRowsHeight", publicName: "freeRowsHeight", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "dirtyCheckNativeValue()" }, properties: { "class.kbq-textarea-resizable": "!growing()", "class.kbq-textarea_max-row-limit-reached": "maxRowLimitReached()", "attr.id": "id()", "attr.placeholder": "placeholder()", "attr.aria-invalid": "errorState()", "disabled": "disabled()", "required": "required()" }, classAttribute: "kbq-textarea" }, providers: [{ provide: KbqFormFieldControl, useExisting: KbqTextarea }], exportAs: ["kbqTextarea"], hostDirectives: [{ directive: i1.KbqNativeScrollbar }], ngImport: i0 }); }
|
|
242
287
|
}
|
|
243
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTextarea, decorators: [{
|
|
244
289
|
type: Directive,
|
|
245
290
|
args: [{
|
|
246
291
|
selector: 'textarea[kbqTextarea]',
|
|
247
292
|
providers: [{ provide: KbqFormFieldControl, useExisting: KbqTextarea }],
|
|
248
293
|
host: {
|
|
249
|
-
class: 'kbq-textarea
|
|
250
|
-
'[class.kbq-textarea-resizable]': '!
|
|
251
|
-
'[class.kbq-textarea_max-row-limit-reached]': 'maxRowLimitReached',
|
|
252
|
-
'[attr.id]': 'id',
|
|
253
|
-
'[attr.placeholder]': 'placeholder',
|
|
254
|
-
'[attr.aria-invalid]': 'errorState',
|
|
255
|
-
'[disabled]': 'disabled',
|
|
256
|
-
'[required]': 'required',
|
|
294
|
+
class: 'kbq-textarea',
|
|
295
|
+
'[class.kbq-textarea-resizable]': '!growing()',
|
|
296
|
+
'[class.kbq-textarea_max-row-limit-reached]': 'maxRowLimitReached()',
|
|
297
|
+
'[attr.id]': 'id()',
|
|
298
|
+
'[attr.placeholder]': 'placeholder()',
|
|
299
|
+
'[attr.aria-invalid]': 'errorState()',
|
|
300
|
+
'[disabled]': 'disabled()',
|
|
301
|
+
'[required]': 'required()',
|
|
257
302
|
'(blur)': 'onBlur()',
|
|
258
303
|
'(focus)': 'focusChanged(true)',
|
|
259
304
|
'(input)': 'dirtyCheckNativeValue()'
|
|
260
305
|
},
|
|
306
|
+
hostDirectives: [KbqNativeScrollbar],
|
|
261
307
|
exportAs: 'kbqTextarea'
|
|
262
308
|
}]
|
|
263
|
-
}], ctorParameters: () => [], propDecorators: { canGrow: [{
|
|
264
|
-
type: Input,
|
|
265
|
-
args: [{ transform: booleanAttribute }]
|
|
266
|
-
}], maxRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxRows", required: false }] }], errorStateMatcher: [{
|
|
267
|
-
type: Input
|
|
268
|
-
}], disabled: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], id: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], placeholder: [{
|
|
273
|
-
type: Input
|
|
274
|
-
}], freeRowsHeight: [{
|
|
275
|
-
type: Input,
|
|
276
|
-
args: [{ transform: numberAttribute }]
|
|
277
|
-
}], required: [{
|
|
278
|
-
type: Input
|
|
279
|
-
}], value: [{
|
|
280
|
-
type: Input
|
|
281
|
-
}] } });
|
|
309
|
+
}], ctorParameters: () => [], propDecorators: { canGrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "canGrow", required: false }] }], maxRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxRows", required: false }] }], errorStateMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorStateMatcher", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], idInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], placeholderInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], freeRowsHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "freeRowsHeight", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }] } });
|
|
282
310
|
|
|
283
311
|
class KbqTextareaModule {
|
|
284
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
285
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
286
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
312
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
313
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqTextareaModule, imports: [A11yModule, FormsModule, KbqTextarea], exports: [KbqTextarea, KbqFormFieldModule] }); }
|
|
314
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTextareaModule, imports: [A11yModule, FormsModule, KbqFormFieldModule] }); }
|
|
287
315
|
}
|
|
288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
316
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqTextareaModule, decorators: [{
|
|
289
317
|
type: NgModule,
|
|
290
318
|
args: [{
|
|
291
319
|
imports: [A11yModule, FormsModule, KbqTextarea],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-textarea.mjs","sources":["../../../packages/components/textarea/textarea.component.ts","../../../packages/components/textarea/textarea.module.ts","../../../packages/components/textarea/koobiq-components-textarea.ts"],"sourcesContent":["import { coerceBooleanProperty, coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n booleanAttribute,\n Directive,\n DoCheck,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n input,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n KBQ_PARENT_ANIMATION_COMPONENT,\n KBQ_WINDOW,\n kbqInjectAutofilled\n} from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { asapScheduler, observeOn, Subject } from 'rxjs';\n\nexport const KBQ_TEXTAREA_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('KBQ_TEXTAREA_VALUE_ACCESSOR');\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: 'textarea[kbqTextarea]',\n providers: [{ provide: KbqFormFieldControl, useExisting: KbqTextarea }],\n host: {\n class: 'kbq-textarea kbq-scrollbar',\n '[class.kbq-textarea-resizable]': '!canGrow',\n '[class.kbq-textarea_max-row-limit-reached]': 'maxRowLimitReached',\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[attr.aria-invalid]': 'errorState',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n '(input)': 'dirtyCheckNativeValue()'\n },\n exportAs: 'kbqTextarea'\n})\nexport class KbqTextarea\n implements KbqFormFieldControl<any>, OnInit, OnChanges, OnDestroy, DoCheck, CanUpdateErrorState\n{\n protected elementRef = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n ngControl = inject(NgControl, { optional: true, self: true });\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n private parent = inject(KBQ_PARENT_ANIMATION_COMPONENT, { optional: true, host: true });\n private ngZone = inject(NgZone);\n\n /** Whether the component is in an error state. */\n errorState: boolean = false;\n\n /** Parameter enables or disables the ability to automatically increase the height.\n * If set to false, the textarea becomes vertically resizable. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get canGrow(): boolean {\n return !this.maxRowLimitReached && this._canGrow;\n }\n\n set canGrow(value: boolean) {\n this._canGrow = value;\n }\n\n protected readonly isBrowser = inject(Platform).isBrowser;\n protected readonly renderer = inject(Renderer2);\n private readonly window = inject(KBQ_WINDOW);\n\n private _canGrow: boolean = true;\n\n /** Maximum number of lines to which the textarea will grow. Default unlimited */\n readonly maxRows = input<number>(undefined!);\n\n /** An object used to control when error messages are shown. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n readonly autofilled = kbqInjectAutofilled();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n controlType: string = 'textarea';\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() placeholder: string;\n\n /** Distance from the last line to the bottom border */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ transform: numberAttribute }) freeRowsHeight: number;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get value(): string {\n return this.valueAccessor.value;\n }\n\n set value(value: string) {\n if (value !== this.value) {\n this.valueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n /** Flag that will be set to true when the maximum number of lines is reached.\n * Maximum number of rows can be set using the maxRows input. */\n get maxRowLimitReached(): boolean {\n return this.rowsCount > this.maxRows();\n }\n\n protected uid = `kbq-textarea-${nextUniqueId++}`;\n protected previousNativeValue: any;\n private _disabled = false;\n private _id: string;\n private _required = false;\n\n private valueAccessor: { value: any };\n\n private lineHeight: number = 0;\n private minHeight: number = 0;\n private rowsCount: number;\n\n constructor() {\n const inputValueAccessor = inject(KBQ_TEXTAREA_VALUE_ACCESSOR, { optional: true, self: true });\n\n // If no input value accessor was explicitly specified, use the element as the textarea value\n // accessor.\n this.valueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n this.previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // eslint-disable-next-line @angular-eslint/no-lifecycle-call\n this.parent?.animationDone.subscribe(() => this.ngOnInit());\n\n this.stateChanges.pipe(observeOn(asapScheduler), takeUntilDestroyed()).subscribe(() => this.grow());\n }\n\n ngOnInit() {\n if (!this.isBrowser) return;\n\n Promise.resolve().then(() => {\n this.lineHeight = parseInt(this.window.getComputedStyle(this.elementRef.nativeElement).lineHeight!, 10);\n\n const paddingTop = parseInt(this.window.getComputedStyle(this.elementRef.nativeElement).paddingTop!, 10);\n const paddingBottom = parseInt(\n this.window.getComputedStyle(this.elementRef.nativeElement).paddingBottom!,\n 10\n );\n\n this.minHeight = this.lineHeight + paddingTop + paddingBottom;\n this.freeRowsHeight = this.freeRowsHeight ?? this.lineHeight;\n });\n\n setTimeout(this.grow, 0);\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n onBlur(): void {\n this.focusChanged(false);\n }\n\n /** Grow textarea height to avoid vertical scroll */\n grow = () => {\n if (!this.isBrowser || !this._canGrow) return;\n\n this.ngZone.runOutsideAngular(() => {\n const textarea = this.elementRef.nativeElement;\n\n const clone = textarea.cloneNode(false) as HTMLTextAreaElement;\n\n this.renderer.appendChild(this.renderer.parentNode(textarea), clone);\n\n const outerHeight = parseInt(this.window.getComputedStyle(textarea).height!, 10);\n const diff = outerHeight - +textarea.clientHeight;\n\n clone.style.minHeight = '0'; // this line is important to height recalculation\n\n const height = Math.max(this.minHeight, +clone.scrollHeight + diff + this.freeRowsHeight);\n\n clone.remove();\n\n this.rowsCount = Math.floor(height / this.lineHeight);\n\n textarea.style.minHeight = coerceCssPixelValue(\n this.maxRowLimitReached ? this.maxRows() * this.lineHeight : height\n );\n });\n };\n\n /** Focuses the textarea. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /** Callback for the cases where the focused state of the textarea changes. */\n focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Does some manual dirty checking on the native textarea `value` property. */\n protected dirtyCheckNativeValue() {\n const newValue = this.value;\n\n if (this.previousNativeValue !== newValue) {\n this.previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Checks whether the textarea is invalid based on the native validation. */\n protected isBadInput(): boolean {\n // The `validity` property won't be present on platform-server.\n const validity = (this.elementRef.nativeElement as HTMLTextAreaElement).validity;\n\n return validity && validity.badInput;\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqTextarea } from './textarea.component';\n\n@NgModule({\n imports: [A11yModule, FormsModule, KbqTextarea],\n exports: [KbqTextarea, KbqFormFieldModule]\n})\nexport class KbqTextareaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MA8Ba,2BAA2B,GAAG,IAAI,cAAc,CAAiB,6BAA6B;AAE3G,IAAI,YAAY,GAAG,CAAC;MAoBP,WAAW,CAAA;AAcpB;AACiE;;;AAGjE,IAAA,IACI,OAAO,GAAA;QACP,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ;IACpD;IAEA,IAAI,OAAO,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACzB;AAyCA;;;AAGG;;;AAGH,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACpD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAClC;QAEA,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAE7C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;IACJ;AAEA;;;AAGG;;;AAGH,IAAA,IACI,EAAE,GAAA;QACF,OAAO,IAAI,CAAC,GAAG;IACnB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAChB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG;IAChC;AAgBA;;;AAGG;;;AAGH,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACjD;AAEA;;;AAGG;;;AAGH,IAAA,IACI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK;IACnC;IAEA,IAAI,KAAK,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;AAChC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;IACJ;AAEA;AACgE;AAChE,IAAA,IAAI,kBAAkB,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;IAC1C;AAcA,IAAA,WAAA,GAAA;AAvKU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAkC,UAAU,CAAC;AAC1E,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7D,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChE,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC5C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/E,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;QAG/B,IAAA,CAAA,UAAU,GAAY,KAAK;AAeR,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAEpC,IAAA,CAAA,QAAQ,GAAY,IAAI;;AAGvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,SAAU,mDAAC;AAQ5C;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAY,KAAK;AAExB;;;AAGG;QACM,IAAA,CAAA,UAAU,GAAG,mBAAmB,EAAE;AAE3C;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ;AAE1D;;;AAGG;QACH,IAAA,CAAA,WAAW,GAAW,UAAU;AA8FtB,QAAA,IAAA,CAAA,GAAG,GAAG,CAAA,aAAA,EAAgB,YAAY,EAAE,EAAE;QAExC,IAAA,CAAA,SAAS,GAAG,KAAK;QAEjB,IAAA,CAAA,SAAS,GAAG,KAAK;QAIjB,IAAA,CAAA,UAAU,GAAW,CAAC;QACtB,IAAA,CAAA,SAAS,GAAW,CAAC;;QAgF7B,IAAA,CAAA,IAAI,GAAG,MAAK;YACR,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE;AAEvC,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;gBAE9C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAwB;AAE9D,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;AAEpE,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAO,EAAE,EAAE,CAAC;gBAChF,MAAM,IAAI,GAAG,WAAW,GAAG,CAAC,QAAQ,CAAC,YAAY;gBAEjD,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;gBAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;gBAEzF,KAAK,CAAC,MAAM,EAAE;AAEd,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;gBAErD,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAC1C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,CACtE;AACL,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;AArGG,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;;QAI9F,IAAI,CAAC,aAAa,GAAG,kBAAkB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa;AAExE,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK;;AAGrC,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;;AAGjB,QAAA,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE3D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACvG;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AAErB,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;YACxB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,UAAW,EAAE,EAAE,CAAC;YAEvG,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,UAAW,EAAE,EAAE,CAAC;YACxG,MAAM,aAAa,GAAG,QAAQ,CAC1B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,aAAc,EAC1E,EAAE,CACL;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,aAAa;YAC7D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU;AAChE,QAAA,CAAC,CAAC;AAEF,QAAA,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5B;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC5B;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAChC;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;;;;YAIhB,IAAI,CAAC,gBAAgB,EAAE;QAC3B;;;;QAKA,IAAI,CAAC,qBAAqB,EAAE;IAChC;IAEA,gBAAgB,GAAA;AACZ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB;AACvE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC,OAA8B,GAAG,IAAI;QACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;AAEtD,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;IACJ;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC5B;;IA+BA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;;AAGA,IAAA,YAAY,CAAC,SAAkB,EAAA;AAC3B,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;IACJ;AAEA;;;AAGG;AACH,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IACrE;AAEA;;;AAGG;IACH,gBAAgB,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IAChB;;IAGU,qBAAqB,GAAA;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;AAE3B,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;IACJ;;IAGU,UAAU,GAAA;;QAEhB,MAAM,QAAQ,GAAI,IAAI,CAAC,UAAU,CAAC,aAAqC,CAAC,QAAQ;AAEhF,QAAA,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ;IACxC;kIA/TS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAkBA,gBAAgB,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAmGhB,eAAe,+qBArIxB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAgB9D,WAAW,EAAA,UAAA,EAAA,CAAA;kBAlBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,WAAa,EAAE,CAAC;AACvE,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,gCAAgC,EAAE,UAAU;AAC5C,wBAAA,4CAA4C,EAAE,oBAAoB;AAClE,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,oBAAoB,EAAE,aAAa;AACnC,wBAAA,qBAAqB,EAAE,YAAY;AACnC,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,SAAS,EAAE;AACd,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;sBAmBI,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAsBrC;;sBAgCA;;sBAwBA;;sBAgBA;;sBAKA,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAQpC;;sBAeA;;;MCtLQ,iBAAiB,CAAA;kIAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAAjB,iBAAiB,EAAA,OAAA,EAAA,CAHhB,UAAU,EAAE,WAAW,EAAE,WAAW,CAAA,EAAA,OAAA,EAAA,CACpC,WAAW,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEhC,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,OAAA,EAAA,CAHhB,UAAU,EAAE,WAAW,EACV,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAEhC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;AAC/C,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,kBAAkB;AAC5C,iBAAA;;;ACTD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-textarea.mjs","sources":["../../../packages/components/textarea/textarea.component.ts","../../../packages/components/textarea/textarea.module.ts","../../../packages/components/textarea/koobiq-components-textarea.ts"],"sourcesContent":["import { _IdGenerator } from '@angular/cdk/a11y';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n input,\n linkedSignal,\n NgZone,\n OnInit,\n Renderer2,\n signal,\n untracked,\n WritableSignal\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n KBQ_PARENT_ANIMATION_COMPONENT,\n KBQ_WINDOW,\n KbqErrorStateTracker,\n kbqInjectAutofilled,\n kbqOptionalNumberAttribute\n} from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { KbqNativeScrollbar } from '@koobiq/components/scrollbar';\nimport { asapScheduler } from 'rxjs';\n\nexport const KBQ_TEXTAREA_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('KBQ_TEXTAREA_VALUE_ACCESSOR');\n\nconst isObject = (value: unknown): value is object => typeof value === 'object' && value !== null;\n\n@Directive({\n selector: 'textarea[kbqTextarea]',\n providers: [{ provide: KbqFormFieldControl, useExisting: KbqTextarea }],\n host: {\n class: 'kbq-textarea',\n '[class.kbq-textarea-resizable]': '!growing()',\n '[class.kbq-textarea_max-row-limit-reached]': 'maxRowLimitReached()',\n '[attr.id]': 'id()',\n '[attr.placeholder]': 'placeholder()',\n '[attr.aria-invalid]': 'errorState()',\n '[disabled]': 'disabled()',\n '[required]': 'required()',\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n '(input)': 'dirtyCheckNativeValue()'\n },\n hostDirectives: [KbqNativeScrollbar],\n exportAs: 'kbqTextarea'\n})\nexport class KbqTextarea implements KbqFormFieldControl<any>, OnInit, DoCheck, CanUpdateErrorState {\n protected elementRef = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n readonly ngControl = inject(NgControl, { optional: true, self: true });\n readonly parentForm = inject(NgForm, { optional: true });\n readonly parentFormGroup = inject(FormGroupDirective, { optional: true });\n readonly defaultErrorStateMatcher = inject(ErrorStateMatcher);\n private readonly parent = inject(KBQ_PARENT_ANIMATION_COMPONENT, { optional: true, host: true });\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly errorStateTracker = new KbqErrorStateTracker(\n this.defaultErrorStateMatcher,\n this.ngControl,\n this.parentFormGroup,\n this.parentForm\n );\n\n /** Whether the component is in an error state. */\n readonly errorState = this.errorStateTracker.errorState;\n\n /**\n * Parameter enables or disables the ability to automatically increase the height.\n * If set to false, the textarea becomes vertically resizable.\n */\n readonly canGrow = input(true, { transform: booleanAttribute });\n\n protected readonly isBrowser = inject(Platform).isBrowser;\n protected readonly renderer = inject(Renderer2);\n private readonly window = inject(KBQ_WINDOW);\n\n /** Maximum number of lines to which the textarea will grow. Unlimited when unset. */\n readonly maxRows = input<number | undefined, unknown>(undefined, { transform: kbqOptionalNumberAttribute });\n\n /** An object used to control when error messages are shown. */\n readonly errorStateMatcher = input<ErrorStateMatcher>();\n\n private readonly focusedValue = signal(false);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly focused = this.focusedValue.asReadonly();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly autofilled = kbqInjectAutofilled();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n controlType: string = 'textarea';\n\n /** @docs-private */\n readonly disabledInput = input<boolean, boolean | string | null | undefined>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n /** `disabled` of the bound form control, which takes precedence over the input. */\n private readonly formDisabled = signal<boolean | null>(null);\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly disabled = computed(() => this.formDisabled() ?? this.disabledInput());\n\n /** @docs-private */\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly id = computed(() => this.idInput() || this.uid);\n\n /** @docs-private */\n readonly placeholderInput = input<string | undefined>(undefined, { alias: 'placeholder' });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly placeholder = linkedSignal(() => this.placeholderInput());\n\n /** Distance from the last line to the bottom border. Defaults to a single line height. */\n readonly freeRowsHeight = input<number | undefined, unknown>(undefined, { transform: kbqOptionalNumberAttribute });\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly required = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n /** @docs-private */\n readonly valueInput = input<string | undefined>(undefined, { alias: 'value' });\n\n /**\n * Implemented as part of KbqFormFieldControl. Follows what the user types; a value bound with `[value]` or set\n * here is written to the element.\n *\n * @docs-private\n */\n readonly value: WritableSignal<string>;\n\n private readonly emptyValue = signal(true);\n\n /** The value the element and `value` last agreed on, and the text the element showed then. */\n private syncedValue: unknown;\n private syncedText: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n readonly empty = this.emptyValue.asReadonly();\n\n /**\n * Flag that will be set to true when the maximum number of lines is reached.\n * Maximum number of rows can be set using the maxRows input.\n */\n readonly maxRowLimitReached = computed(() => {\n const maxRows = this.maxRows();\n\n return maxRows !== undefined && this.rowsCount() > maxRows;\n });\n\n /**\n * Whether the textarea still grows with its content. It stops once `maxRows` is reached, and from\n * there the element keeps its own scrollbar: `kbq-textarea_max-row-limit-reached` sets\n * `resize: unset`, which follows `kbq-textarea-resizable` in the stylesheet and wins on source\n * order, so no native handle appears.\n *\n * @docs-private\n */\n protected readonly growing = computed(() => !this.maxRowLimitReached() && this.canGrow());\n\n /** Distance from the last line to the bottom border, falling back to the measured line height. */\n private readonly resolvedFreeRowsHeight = computed(() => this.freeRowsHeight() ?? this.lineHeight());\n\n protected readonly uid = inject(_IdGenerator).getId('kbq-textarea-');\n\n private valueAccessor: { value: any };\n\n /** Measured once the textarea has been rendered; the growth arithmetic is in terms of these. */\n private readonly lineHeight = signal(0);\n private readonly minHeight = signal(0);\n private readonly rowsCount = signal(0);\n\n constructor() {\n const inputValueAccessor = inject(KBQ_TEXTAREA_VALUE_ACCESSOR, { optional: true, self: true });\n\n // If no input value accessor was explicitly specified, use the element as the textarea value\n // accessor.\n this.valueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n // Read once: a custom accessor may build a new value on every read.\n const initialValue = this.valueAccessor.value;\n\n this.value = signal(initialValue);\n this.syncedValue = initialValue;\n this.syncedText = this.elementRef.nativeElement.value;\n\n if (this.parent) {\n outputToObservable(this.parent.animationDone)\n .pipe(takeUntilDestroyed())\n // eslint-disable-next-line @angular-eslint/no-lifecycle-call\n .subscribe(() => this.ngOnInit());\n }\n\n // A bound value replaces the current one whenever the binding changes.\n effect(() => {\n const value = this.valueInput();\n\n if (value !== undefined) {\n untracked(() => this.value.set(value));\n }\n });\n\n // A value set in code is written to the element on the next change detection. The one the element last agreed\n // on is not written back: a custom accessor that builds a new value on every read would be written on every\n // keystroke.\n effect(() => {\n const value = this.value();\n\n untracked(() => {\n if (value !== this.syncedValue) {\n if (this.valueAccessor.value !== value) {\n this.valueAccessor.value = value;\n }\n\n this.syncedValue = value;\n this.syncedText = this.elementRef.nativeElement.value;\n }\n\n this.emptyValue.set(this.isEmpty());\n });\n });\n\n // The height follows the content and the inputs that size it, measured once the change is rendered.\n effect(() => {\n this.value();\n this.canGrow();\n this.maxRows();\n this.freeRowsHeight();\n\n untracked(() => asapScheduler.schedule(() => this.grow()));\n });\n\n // Browsers may not fire the blur event if the textarea is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n effect(() => {\n if (this.disabled()) {\n untracked(() => this.focusedValue.set(false));\n }\n });\n }\n\n ngOnInit() {\n if (!this.isBrowser) return;\n\n Promise.resolve().then(() => {\n const styles = this.window.getComputedStyle(this.elementRef.nativeElement);\n const lineHeight = parseInt(styles.lineHeight!, 10);\n\n this.lineHeight.set(lineHeight);\n this.minHeight.set(lineHeight + parseInt(styles.paddingTop!, 10) + parseInt(styles.paddingBottom!, 10));\n });\n\n setTimeout(() => this.grow(), 0);\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n this.formDisabled.set(this.ngControl.disabled);\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n updateErrorState() {\n this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();\n this.errorStateTracker.updateErrorState();\n }\n\n /** @docs-private */\n onBlur(): void {\n this.focusChanged(false);\n }\n\n /**\n * Grow textarea height to avoid vertical scroll.\n *\n * @docs-private\n */\n protected grow(): void {\n // Every call is deferred, so it can land once the textarea is destroyed and has no parent to measure in.\n if (!this.isBrowser || this.destroyRef.destroyed || !this.canGrow()) return;\n\n this.ngZone.runOutsideAngular(() => {\n const textarea = this.elementRef.nativeElement;\n\n const clone = textarea.cloneNode(false) as HTMLTextAreaElement;\n\n this.renderer.appendChild(this.renderer.parentNode(textarea), clone);\n\n const outerHeight = parseInt(this.window.getComputedStyle(textarea).height!, 10);\n const diff = outerHeight - +textarea.clientHeight;\n\n clone.style.minHeight = '0'; // this line is important to height recalculation\n\n const lineHeight = this.lineHeight();\n const height = Math.max(this.minHeight(), +clone.scrollHeight + diff + this.resolvedFreeRowsHeight());\n\n clone.remove();\n\n this.rowsCount.set(lineHeight > 0 ? Math.floor(height / lineHeight) : 0);\n\n const maxRows = this.maxRows();\n\n textarea.style.minHeight = coerceCssPixelValue(\n maxRows !== undefined && this.maxRowLimitReached() ? maxRows * lineHeight : height\n );\n });\n }\n\n /** Focuses the textarea. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Callback for the cases where the focused state of the textarea changes.\n *\n * @docs-private\n */\n focusChanged(isFocused: boolean) {\n this.focusedValue.set(isFocused);\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /**\n * Reads the native value back, since it changes without notice: through the forms API, which writes the\n * element directly, or by the user typing into a textarea that no form listens to.\n *\n * @docs-private\n */\n dirtyCheckNativeValue() {\n const nativeValue = this.valueAccessor.value;\n const text = this.elementRef.nativeElement.value;\n\n // Only a change of the element itself: a value set in code and not yet written must not be overwritten. An\n // object counts as changed only with the text, as a custom accessor may build a new one on every read.\n if (nativeValue !== this.syncedValue && (!isObject(nativeValue) || text !== this.syncedText)) {\n this.syncedValue = nativeValue;\n this.syncedText = text;\n this.value.set(nativeValue);\n }\n\n this.emptyValue.set(this.isEmpty());\n }\n\n /** Checks whether the textarea is invalid based on the native validation. */\n protected isBadInput(): boolean {\n // The `validity` property won't be present on platform-server.\n const validity = (this.elementRef.nativeElement as HTMLTextAreaElement).validity;\n\n return validity && validity.badInput;\n }\n\n private isEmpty(): boolean {\n return !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqTextarea } from './textarea.component';\n\n@NgModule({\n imports: [A11yModule, FormsModule, KbqTextarea],\n exports: [KbqTextarea, KbqFormFieldModule]\n})\nexport class KbqTextareaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|