@koobiq/components 21.0.0 → 21.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/badge/_badge-theme.scss +31 -0
- package/breadcrumbs/breadcrumbs.scss +5 -1
- package/checkbox/_checkbox-theme.scss +0 -17
- package/checkbox/checkbox-tokens.scss +0 -4
- package/code-block/_code-block-theme.scss +7 -6
- package/code-block/code-block-tokens.scss +8 -4
- package/code-block/code-block.scss +54 -32
- package/content-panel/content-panel-header.scss +2 -3
- package/content-panel/content-panel.scss +3 -0
- package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -2
- package/fesm2022/koobiq-components-accordion.mjs +4 -4
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -2
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +2 -2
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +18 -8
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +78 -10
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +106 -394
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +4 -4
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +300 -37
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +151 -60
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +3 -3
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +3 -3
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +17 -8
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +124 -41
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +3 -3
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +90 -27
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +38 -17
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +19 -2
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +76 -17
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +1 -1
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +3 -3
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +86 -25
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +4 -4
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +116 -38
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +86 -7
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +41 -19
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +29 -17
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +49 -12
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +198 -186
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +49 -25
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +30 -11
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +1 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +28 -11
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +2 -2
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +71 -16
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +2 -2
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +2 -2
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +25 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +90 -17
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +27 -7
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +24 -9
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +288 -109
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +0 -12
- package/file-upload/file-upload-tokens.scss +0 -1
- package/file-upload/file-upload.scss +0 -1
- package/filter-bar/_filter-bar-theme.scss +7 -8
- package/filter-bar/filter-bar.scss +0 -1
- package/filter-bar/pipes/base-pipe.scss +36 -2
- package/filter-bar/pipes/pipe-multi-tree-select.scss +27 -0
- package/form-field/_fieldset-theme.scss +2 -7
- package/form-field/_form-field-theme.scss +9 -22
- package/form-field/_hint-theme.scss +20 -0
- package/form-field/fieldset-tokens.scss +0 -1
- package/form-field/fieldset.scss +0 -3
- package/form-field/form-field-tokens.scss +1 -1
- package/form-field/form-field.scss +9 -0
- package/form-field/hint-tokens.scss +3 -0
- package/modal/modal.scss +2 -0
- package/navbar/_navbar-item_vertical.scss +48 -2
- package/navbar/_navbar-theme.scss +11 -3
- package/navbar/navbar-item.scss +17 -0
- package/navbar/navbar-tokens.scss +3 -0
- package/package.json +4 -4
- package/popover/popover.scss +1 -1
- package/radio/_radio-theme.scss +0 -30
- package/radio/radio-tokens.scss +0 -2
- package/schematics/collection.json +94 -89
- package/schematics/migrations/accordion-state-saving-default/{index.js → index.cjs} +5 -4
- package/schematics/migrations/actions-panel-overlay-container/{index.js → index.cjs} +5 -4
- package/schematics/migrations/alert-signals/{index.js → index.cjs} +14 -13
- package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
- package/schematics/migrations/app-switcher-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
- package/schematics/migrations/autocomplete-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/badge-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/button-state-and-styles/{index.js → index.cjs} +7 -6
- package/schematics/migrations/button-supported-colors/{index.js → index.cjs} +7 -6
- package/schematics/migrations/button-toggle-signals-and-aria/{index.js → index.cjs} +7 -6
- package/schematics/migrations/button-truncation/{index.js → index.cjs} +7 -6
- package/schematics/migrations/checkbox-signals/{index.js → index.cjs} +9 -8
- package/schematics/migrations/clamped-text-disclosure/{index.js → index.cjs} +5 -4
- 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/{index.js → index.cjs} +7 -6
- package/schematics/migrations/color-signals/index.cjs +20 -0
- package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
- package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
- package/schematics/migrations/datepicker-signals/index.cjs +18 -0
- package/schematics/migrations/deprecated-icons/README.md +21 -5
- package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +15 -28
- package/schematics/migrations/deprecated-icons/schema.json +1 -1
- package/schematics/migrations/design-tokens-v4/{index.js → index.cjs} +3 -2
- package/schematics/migrations/divider-signals-and-aria/{index.js → index.cjs} +5 -4
- package/schematics/migrations/dl-attribute-coercion/{index.js → index.cjs} +7 -6
- package/schematics/migrations/dl-standalone-names/{index.js → index.cjs} +11 -10
- package/schematics/migrations/dropdown-demote-overlay/{index.js → index.cjs} +7 -6
- package/schematics/migrations/dropdown-signals/index.cjs +20 -0
- package/schematics/migrations/empty-state-error-color/{index.js → index.cjs} +5 -4
- package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/file-upload-cva-and-primitives/{index.js → index.cjs} +5 -4
- package/schematics/migrations/file-upload-deprecated-outputs/{index.js → index.cjs} +5 -4
- package/schematics/migrations/filter-bar-rename-action/{index.js → index.cjs} +5 -4
- package/schematics/migrations/filter-bar-signals/{index.js → index.cjs} +16 -15
- package/schematics/migrations/filter-bar-state-saving-default/{index.js → index.cjs} +5 -4
- package/schematics/migrations/flag-inner-html/{index.js → index.cjs} +5 -4
- package/schematics/migrations/form-field-signals/{index.js → index.cjs} +18 -17
- package/schematics/migrations/icon-semantics-and-api/{data.js → data.cjs} +4 -4
- package/schematics/migrations/icon-semantics-and-api/{index.js → index.cjs} +6 -5
- package/schematics/migrations/icons-replacement/README.md +16 -2
- package/schematics/migrations/icons-replacement/{index.js → index.cjs} +21 -18
- package/schematics/migrations/icons-replacement/schema.json +12 -3
- package/schematics/migrations/inline-edit-a11y-and-types/{index.js → index.cjs} +5 -4
- package/schematics/migrations/input-number-surface/{index.js → index.cjs} +5 -4
- package/schematics/migrations/input-signals/index.cjs +18 -0
- package/schematics/migrations/link-deprecated-path/{index.js → index.cjs} +4 -3
- package/schematics/migrations/link-signals/{index.js → index.cjs} +5 -4
- package/schematics/migrations/list-signals/index.cjs +18 -0
- package/schematics/migrations/list-tree-multiple-input/{index.js → index.cjs} +7 -6
- package/schematics/migrations/loader-overlay-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/locale-configuration-providers/{index.js → index.cjs} +5 -4
- package/schematics/migrations/mandatory-peer-dependencies/{index.js → index.cjs} +3 -2
- package/schematics/migrations/markdown-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/modal-dialog-semantics/{index.js → index.cjs} +5 -4
- package/schematics/migrations/modal-signals/index.cjs +20 -0
- package/schematics/migrations/navbar-signals-and-aria/{index.js → index.cjs} +7 -6
- package/schematics/migrations/new-icons-pack/README.md +37 -25
- package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +29 -38
- package/schematics/migrations/new-icons-pack/replacement.json +2 -14
- package/schematics/migrations/new-icons-pack/schema.json +3 -3
- package/schematics/migrations/notification-center-signals/{index.js → index.cjs} +5 -4
- package/schematics/migrations/option-signals/index.cjs +20 -0
- package/schematics/migrations/popover-leave-delay/{index.js → index.cjs} +5 -4
- package/schematics/migrations/progress-bar-percentage-and-aria/{index.js → index.cjs} +5 -4
- package/schematics/migrations/progress-spinner-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/query-list-signals/index.cjs +18 -0
- package/schematics/migrations/radio-signals-and-aria/{index.js → index.cjs} +9 -8
- package/schematics/migrations/read-state-dwell-handlers/{index.js → index.cjs} +5 -4
- package/schematics/migrations/scrollbar-deprecated-path/{index.js → index.cjs} +4 -3
- package/schematics/migrations/select-signal-inputs/{index.js → index.cjs} +5 -4
- package/schematics/migrations/sidepanel-non-modal-behavior/{index.js → index.cjs} +5 -4
- package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
- package/schematics/migrations/split-button-optional-disabled/{index.js → index.cjs} +5 -4
- package/schematics/migrations/splitter-deprecated-path/{index.js → index.cjs} +4 -3
- package/schematics/migrations/state-saving-default/{index.js → index.cjs} +5 -4
- package/schematics/migrations/table-cell-content/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tabs-signals-and-aria/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tag-list-cleaner/{index.js → index.cjs} +7 -6
- package/schematics/migrations/tag-slots/{index.js → index.cjs} +6 -5
- package/schematics/migrations/tags-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/textarea-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/time-range-title-for/{index.js → index.cjs} +5 -4
- package/schematics/migrations/timepicker-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/timezone-grouping-utils/{index.js → index.cjs} +5 -4
- package/schematics/migrations/title-encapsulation/{index.js → index.cjs} +5 -4
- package/schematics/migrations/toast-stack-and-defaults/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tooltip-pointer-events-and-types/{index.js → index.cjs} +5 -4
- package/schematics/migrations/top-bar-container-selectors/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tree-select-signals/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tree-signals/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tree-state-saving-default/{index.js → index.cjs} +5 -4
- package/schematics/migrations/username-pipe-injection/{index.js → index.cjs} +5 -4
- package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +7 -7
- package/schematics/migrations/v20-upgrade/index.cjs +19 -0
- package/schematics/migrations/v21-upgrade/{data.js → data.cjs} +22 -22
- package/schematics/migrations/v21-upgrade/{index.js → index.cjs} +11 -10
- package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
- package/schematics/migrations.json +87 -82
- package/schematics/ng-add/{index.js → index.cjs} +15 -289
- package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
- package/schematics/utils/custom-data.cjs +64 -0
- package/schematics/utils/{deprecated-path-migration.js → deprecated-path-migration.cjs} +4 -3
- package/schematics/utils/html-config.cjs +148 -0
- package/schematics/utils/{icon-migration.js → icon-migration.cjs} +11 -5
- package/schematics/utils/list-item-pattern.cjs +16 -0
- package/schematics/utils/{messages.js → messages.cjs} +4 -0
- package/schematics/utils/package-config.cjs +99 -0
- 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/select/select.scss +7 -0
- package/tabs/_tabs-common.scss +23 -0
- package/textarea/textarea-tokens.scss +4 -1
- package/toast/toast.component.scss +1 -0
- package/toggle/_toggle-theme.scss +0 -17
- package/tooltip/tooltip.scss +1 -1
- package/top-bar/top-bar-tokens.scss +1 -0
- package/top-bar/top-bar.scss +10 -0
- package/types/koobiq-components-accordion.d.ts +25 -0
- package/types/koobiq-components-button-toggle.d.ts +6 -0
- package/types/koobiq-components-checkbox.d.ts +30 -0
- package/types/koobiq-components-clamped-text.d.ts +16 -3
- package/types/koobiq-components-code-block.d.ts +55 -14
- package/types/koobiq-components-core.d.ts +226 -13
- package/types/koobiq-components-datepicker.d.ts +28 -1
- package/types/koobiq-components-divider.d.ts +28 -10
- package/types/koobiq-components-dropdown.d.ts +19 -0
- package/types/koobiq-components-filter-bar.d.ts +79 -6
- package/types/koobiq-components-flag.d.ts +18 -0
- package/types/koobiq-components-form-field.d.ts +87 -6
- package/types/koobiq-components-icon.d.ts +15 -0
- package/types/koobiq-components-inline-edit.d.ts +8 -1
- package/types/koobiq-components-input.d.ts +22 -3
- package/types/koobiq-components-list.d.ts +6 -0
- package/types/koobiq-components-modal.d.ts +7 -0
- package/types/koobiq-components-navbar.d.ts +71 -7
- package/types/koobiq-components-notification-center.d.ts +13 -0
- package/types/koobiq-components-overflow-items.d.ts +26 -2
- package/types/koobiq-components-popover.d.ts +38 -3
- package/types/koobiq-components-radio.d.ts +30 -0
- package/types/koobiq-components-search-expandable.d.ts +10 -0
- package/types/koobiq-components-select.d.ts +36 -4
- package/types/koobiq-components-sidepanel.d.ts +52 -1
- package/types/koobiq-components-splitter.d.ts +13 -4
- package/types/koobiq-components-tabs.d.ts +4 -0
- package/types/koobiq-components-tags.d.ts +6 -0
- package/types/koobiq-components-textarea.d.ts +9 -2
- package/types/koobiq-components-timepicker.d.ts +15 -0
- package/types/koobiq-components-toggle.d.ts +30 -0
- package/types/koobiq-components-tooltip.d.ts +55 -10
- package/types/koobiq-components-top-bar.d.ts +11 -3
- package/types/koobiq-components-tree-select.d.ts +23 -8
- package/types/koobiq-components-tree.d.ts +144 -60
- package/schematics/migrations/angular-animations-removal/index.js +0 -20
- package/schematics/migrations/color-signals/index.js +0 -19
- package/schematics/migrations/core-mixins-removal/index.js +0 -17
- package/schematics/migrations/datepicker-signals/index.js +0 -17
- package/schematics/migrations/dropdown-signals/index.js +0 -19
- package/schematics/migrations/input-signals/index.js +0 -17
- package/schematics/migrations/list-signals/index.js +0 -17
- package/schematics/migrations/modal-signals/index.js +0 -19
- package/schematics/migrations/option-signals/index.js +0 -19
- package/schematics/migrations/query-list-signals/index.js +0 -17
- package/schematics/migrations/signal-inputs-subclasses/index.js +0 -17
- package/schematics/migrations/v20-upgrade/index.js +0 -18
- package/schematics/migrations/zoneless-change-detection/index.js +0 -20
- package/schematics/utils/package-config.js +0 -13
- /package/schematics/migrations/accordion-state-saving-default/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/actions-panel-overlay-container/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/alert-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/angular-animations-removal/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/app-switcher-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/autocomplete-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/badge-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/button-state-and-styles/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/button-supported-colors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/button-toggle-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/button-truncation/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/checkbox-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/clamped-text-disclosure/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/code-block-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/color-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/core-mixins-removal/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/datepicker-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/divider-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/dl-attribute-coercion/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/dl-standalone-names/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/dropdown-demote-overlay/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/dropdown-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/empty-state-error-color/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/file-upload-cva-and-primitives/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/file-upload-deprecated-outputs/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/filter-bar-rename-action/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/filter-bar-state-saving-default/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/flag-inner-html/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/form-field-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/inline-edit-a11y-and-types/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/input-number-surface/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/input-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/link-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/list-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/list-tree-multiple-input/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/loader-overlay-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/locale-configuration-providers/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/markdown-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/modal-dialog-semantics/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/modal-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/navbar-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/notification-center-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/option-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/popover-leave-delay/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/progress-bar-percentage-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/progress-spinner-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/query-list-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/radio-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/read-state-dwell-handlers/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/select-signal-inputs/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/sidepanel-non-modal-behavior/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/signal-inputs-subclasses/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/split-button-optional-disabled/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/state-saving-default/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/table-cell-content/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tabs-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tag-list-cleaner/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tags-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/textarea-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/time-range-title-for/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/timepicker-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/timezone-grouping-utils/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/title-encapsulation/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/toast-stack-and-defaults/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tooltip-pointer-events-and-types/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/top-bar-container-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tree-select-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tree-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tree-state-saving-default/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/username-pipe-injection/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/zoneless-change-detection/{data.js → data.cjs} +0 -0
- /package/schematics/utils/{ast.js → ast.cjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-form-field.mjs","sources":["../../../packages/components/form-field/cleaner.ts","../../../packages/components/form-field/hint.ts","../../../packages/components/form-field/hint.html","../../../packages/components/form-field/error.ts","../../../packages/components/form-field/fieldset.ts","../../../packages/components/form-field/form-field-control.ts","../../../packages/components/form-field/label.ts","../../../packages/components/form-field/password-toggle.ts","../../../packages/components/form-field/prefix.ts","../../../packages/components/form-field/reactive-password-hint.ts","../../../packages/components/form-field/stepper.ts","../../../packages/components/form-field/suffix.ts","../../../packages/components/form-field/form-field.ts","../../../packages/components/form-field/form-field.html","../../../packages/components/form-field/form-field.module.ts","../../../packages/components/form-field/koobiq-components-form-field.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n Provider,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n ESCAPE,\n KBQ_A11Y_LOCALE_CONFIGURATION,\n KbqComponentColors,\n KbqLocaleOverridesDirective\n} from '@koobiq/components/core';\nimport { KbqIconButton } from '@koobiq/components/icon';\nimport { fromEvent } from 'rxjs';\nimport { KbqFormFieldControl } from './form-field-control';\n\n/** @docs-private */\nexport interface KbqCleanerContextBase {\n readonly control: KbqFormFieldControl<unknown>;\n /** Overrides the default `cleanerControl.ngControl?.reset()` behavior when the cleaner is activated. */\n clear?(): void;\n\n /**\n * Whether the control still holds something the cleaner would remove — a host that keeps part of\n * its value back reports `false` once only that part is left. Defaults to `true`.\n */\n canClear?(): boolean;\n}\n\n/**\n * `keydownTarget` is where `Escape` presses are listened for, so it is required by `clearByEscape` and\n * refused without it — a host that asks for `Escape` clearing but names no target would silently never clear.\n *\n * @docs-private\n */\nexport type KbqCleanerContext = KbqCleanerContextBase &\n (\n | { readonly clearByEscape: true; readonly keydownTarget: HTMLElement }\n | { readonly clearByEscape: false; readonly keydownTarget?: never }\n );\n\n/** @docs-private */\nexport const KBQ_CLEANER_CONTEXT = new InjectionToken<KbqCleanerContext | null>('KbqCleanerContext');\n\n/**\n * Utility provider for `KBQ_CLEANER_CONTEXT`, built from a factory that resolves the current host's `KbqCleanerContext`.\n *\n * @docs-private\n */\nexport const kbqCleanerFactoryProvider = (factory: () => KbqCleanerContext): Provider => ({\n provide: KBQ_CLEANER_CONTEXT,\n useFactory: factory\n});\n\n/** @internal */\nexport function getKbqFormFieldYouCanNotUseCleanerInNumberInputError(): Error {\n return Error(`You can't use kbq-cleaner with input that have type=\"number\"`);\n}\n\n/**\n * Element to be placed in end of the form field.\n * Resets form control by click.\n */\n@Component({\n selector: 'kbq-cleaner',\n template: `\n <ng-content />\n `,\n styleUrls: ['cleaner.scss', '../icon/icon-button.scss', '../icon/icon-button-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-cleaner',\n // The cleaner is an icon-only control: without a role and an accessible name it is announced as an\n // unlabeled focusable graphic.\n role: 'button',\n '[attr.aria-label]': 'accessibleName()',\n '(click)': 'clear($event)',\n '(keydown.enter)': 'clear($event)',\n '(keydown.space)': 'clear($event)'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ],\n exportAs: 'kbqCleaner'\n})\nexport class KbqCleaner extends KbqIconButton implements AfterContentInit {\n private readonly context = inject(KBQ_CLEANER_CONTEXT, { optional: true });\n\n /**\n * Whether the cleaner can be displayed for the current control state.\n *\n * @docs-private\n */\n get canShow(): boolean {\n const context = this.context;\n\n if (!context?.control) return true;\n\n const { control } = context;\n\n return !control.disabled() && !control.empty() && (context.canClear?.() ?? true);\n }\n\n private readonly a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'a11y',\n KBQ_A11Y_LOCALE_CONFIGURATION\n );\n\n /** Accessible name of the cleaner. Defaults to the localized \"Clear\". */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** @docs-private */\n protected readonly accessibleName = computed(() => this.ariaLabel() || this.a11yLocaleConfiguration().clear);\n\n constructor() {\n super();\n\n this.setIconName('kbq-circle-xmark_16');\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n this.autoColor = true;\n }\n\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n if (this.context?.control?.controlType === 'input-number') {\n throw getKbqFormFieldYouCanNotUseCleanerInNumberInputError();\n }\n\n const keydownTarget = this.context?.keydownTarget;\n\n if (keydownTarget) {\n fromEvent<KeyboardEvent>(keydownTarget, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.onKeyDown(event));\n }\n }\n\n /**\n * Clears the owning control in response to pointer or keyboard activation.\n *\n * @docs-private\n */\n clear(event: Event): void {\n // Untracked: called from a consumer's `effect()`, the state of the control read on the way — `disabled`,\n // `empty` — would make the effect run again as soon as something is typed, and clear it.\n untracked(() => {\n if (!this.context || !this.canShow) return;\n\n event.stopPropagation();\n event.preventDefault();\n\n if (this.context.clear) {\n this.context.clear();\n } else {\n this.context.control.ngControl?.reset();\n }\n\n this.context.control.focus();\n });\n }\n\n /**\n * Clears the focused control when Escape handling is enabled.\n */\n private onKeyDown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE && this.context?.clearByEscape && this.context.control.focused() && this.canShow) {\n this.clear(event);\n }\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { KbqColorDirective } from '@koobiq/components/core';\n\nlet nextUniqueId = 0;\n\n/** Hint text to be shown below the form field control. */\n@Component({\n selector: 'kbq-hint',\n templateUrl: './hint.html',\n styleUrls: ['./hint.scss', './hint-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-hint',\n '[attr.id]': 'id()',\n '[class.kbq-hint_fill-text-off]': 'fillTextOff()',\n '[class.kbq-hint_compact]': 'compact()'\n },\n exportAs: 'kbqHint'\n})\nexport class KbqHint extends KbqColorDirective {\n /** Unique ID for the hint. Referenced by the `aria-describedby` of the form field control. */\n readonly id = input<string>(`kbq-hint-${nextUniqueId++}`);\n\n /** Disables `color` for the hint text. */\n readonly fillTextOff = input(false, { transform: booleanAttribute });\n\n /** Makes the hint size smaller. */\n readonly compact = input(false, { transform: booleanAttribute });\n}\n","<ng-content select=\"[kbq-icon]\" />\n\n<span class=\"kbq-hint__text\">\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqHint } from './hint';\n\n/** Error text to be shown below the form field control. */\n@Component({\n selector: 'kbq-error',\n templateUrl: './hint.html',\n styleUrls: [\n './hint.scss',\n './hint-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-error',\n // The form field mounts the error only while the control is invalid, so the element itself has to be\n // the live region: screen readers announce a node inserted with `role=\"alert\"`, while an `aria-live`\n // wrapper has to be in the accessibility tree before its content changes.\n role: 'alert',\n 'aria-atomic': 'true'\n },\n exportAs: 'kbqError'\n})\nexport class KbqError extends KbqHint {\n constructor() {\n super();\n\n this.setDefaultColor(KbqComponentColors.Error);\n }\n}\n","import { ChangeDetectionStrategy, Component, contentChild, Directive, input, ViewEncapsulation } from '@angular/core';\n\nlet nextLegendUniqueId = 0;\n\n/** Directive for marking an element as legend of `KbqFieldset` */\n@Directive({\n selector: '[kbqLegend]',\n host: {\n class: 'kbq-legend',\n '[attr.id]': 'id()'\n },\n exportAs: 'kbqLegend'\n})\nexport class KbqLegend {\n /** Unique ID for the legend, referenced by the `aria-labelledby` of the fieldset. */\n readonly id = input<string>(`kbq-legend-${nextLegendUniqueId++}`);\n}\n\n/** Directive for marking elements as items inside `KbqFieldset` */\n@Directive({\n selector: '[kbqFieldsetItem]',\n host: {\n class: 'kbq-fieldset-item'\n },\n exportAs: 'kbqFieldsetItem'\n})\nexport class KbqFieldsetItem {}\n\n/**\n * A group of form-fields and related controls.\n * Container component emulating the native `fieldset` element.\n */\n@Component({\n selector: 'kbq-fieldset',\n template: `\n <ng-content select=\"[kbqLegend]\" />\n\n <div class=\"kbq-fieldset__container\">\n <ng-content />\n </div>\n\n <!--\n Mirrors the hint area of KbqFormField. Unlike the form field, the fieldset owns no control, so it has\n no error state to guard the projected kbq-error with — showing it is up to the consumer.\n -->\n <div class=\"kbq-form-field__hint\">\n <ng-content select=\"kbq-error\" />\n\n <ng-content select=\"kbq-hint, kbq-reactive-password-hint\" />\n </div>\n `,\n styleUrls: ['./fieldset.scss', './fieldset-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-fieldset',\n role: 'group',\n '[attr.aria-labelledby]': 'legend()?.id()'\n },\n exportAs: 'kbqFieldset'\n})\nexport class KbqFieldset {\n /**\n * Labels the group with the projected legend. Referencing the element keeps the accessible name in sync\n * with the visible text, including after a locale change.\n */\n protected readonly legend = contentChild(KbqLegend);\n}\n","import { Signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n/**\n * An interface which allows a control to work inside of a `KbqFormField`.\n *\n * Every state member is a signal: the form field derives its own state from them and runs `OnPush`, so a\n * change of the control reaches it without any notification of the control's own.\n */\nexport abstract class KbqFormFieldControl<T> {\n /** The value of the control. */\n readonly value: Signal<T | null>;\n\n /** The element ID for this control. */\n readonly id: Signal<string>;\n\n /** The placeholder for this control. */\n readonly placeholder: Signal<string | null | undefined>;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: Signal<boolean>;\n\n /** Whether the control is empty. */\n readonly empty: Signal<boolean>;\n\n /** Whether the control is required. */\n readonly required: Signal<boolean>;\n\n /** Whether the control is disabled. */\n readonly disabled: Signal<boolean>;\n\n /** Whether the control is in an error state. */\n readonly errorState: Signal<boolean>;\n\n /**\n * Whether the control's value was filled in by the browser.\n *\n * Implement it only where autofill is reachable: on a control that is itself a text input or a\n * textarea, or — like `KbqTagList` — on a wrapper that forwards the state of the input it hosts.\n * Leave it out on controls the browser never fills.\n */\n readonly autofilled?: Signal<boolean>;\n\n /**\n * An optional name for the control type that can be used to distinguish `kbq-form-field` elements\n * based on their control type. The form field will add a class,\n * `kbq-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /**\n * Whether the control is a native labelable element, so that the `<label for>` a wrapping\n * `kbq-form-field` renders associates with it.\n *\n * Defaults to `true`. A control rendered as a custom element (`kbq-select`, for one) sets it to\n * `false`: a `<label>` with neither a `for` matching a labelable element nor a nested one is\n * invalid, so the form field renders the caption as a `<span>` instead and the control is named\n * through `aria-labelledby`.\n */\n readonly isNativeLabelSupported?: boolean;\n\n /**\n * Sets the ids of the elements (hints, errors) that describe the control.\n *\n * Implement it only when `aria-describedby` has to be placed on an element other than the one\n * the control is declared on: `KbqFormField` writes the attribute on the control's host element\n * by default.\n */\n setDescribedByIds?: (ids: string[]) => void;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\n\n /** Focuses the control. */\n abstract focus(options?: FocusOptions): void;\n\n /** Opens control's overlay. */\n open?: () => void;\n}\n\n/** Ids written by `kbqSetDescribedByIds` for a given element, so consumer-provided ids survive updates. */\nconst ownDescribedByIds = new WeakMap<HTMLElement, string[]>();\n\n/**\n * Writes `aria-describedby` on the control's element, preserving the ids the consumer set themselves.\n *\n * @internal\n */\nexport function kbqSetDescribedByIds(element: HTMLElement, ids: string[]): void {\n const previouslyOwned = ownDescribedByIds.get(element) || [];\n const current = (element.getAttribute('aria-describedby') || '').split(/\\s+/).filter(Boolean);\n const next = [...current.filter((id) => !previouslyOwned.includes(id)), ...ids];\n\n ownDescribedByIds.set(element, ids);\n\n if (next.length) {\n element.setAttribute('aria-describedby', next.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n}\n","import { Directive } from '@angular/core';\n\n/** Label for the form field. */\n@Directive({\n selector: 'kbq-label',\n host: {\n class: 'kbq-label'\n },\n exportAs: 'kbqLabel'\n})\nexport class KbqLabel {}\n","import { FocusMonitor } from '@angular/cdk/a11y';\n\nimport { F8 } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n InputSignal,\n numberAttribute,\n OnDestroy,\n Signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n KBQ_A11Y_LOCALE_CONFIGURATION,\n kbqInjectNativeElement,\n KbqLocaleOverridesDirective,\n PopUpTriggers\n} from '@koobiq/components/core';\nimport { KbqIconButton, KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { fromEvent } from 'rxjs';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport { KbqFormFieldControl } from './form-field-control';\n\n/**\n * Narrow structural contract for `kbqInputPassword`, duck-typed here to avoid a circular\n * dependency between `@koobiq/components/form-field` and `@koobiq/components/input`.\n */\ntype KbqPasswordToggleControl = KbqFormFieldControl<unknown> & {\n readonly controlType: 'input-password';\n readonly elementType: Signal<'text' | 'password'>;\n toggleType: () => void;\n};\n\n/**\n * Checks whether the given control structurally matches `KbqPasswordToggleControl`.\n */\nconst isPasswordToggleControl = (control: unknown): control is KbqPasswordToggleControl => {\n return (\n !!control &&\n typeof control === 'object' &&\n 'controlType' in control &&\n control.controlType === 'input-password' &&\n 'elementType' in control &&\n 'toggleType' in control &&\n typeof control.toggleType === 'function'\n );\n};\n\nconst getKbqPasswordToggleMissingControlError = (): Error => {\n return Error('You should use kbq-password-toggle with kbqInputPassword');\n};\n\n/** Component which changes password visibility. */\n@Component({\n selector: `kbq-password-toggle`,\n imports: [KbqIconModule, KbqToolTipModule],\n template: `\n <ng-content>\n <i\n role=\"button\"\n [attr.aria-label]=\"accessibleName\"\n [attr.aria-pressed]=\"!hidden\"\n [color]=\"hasError() ? 'error' : 'contrast-fade'\"\n [kbq-icon-button]=\"iconClass\"\n [tabindex]=\"tabindex()\"\n ></i>\n </ng-content>\n `,\n styleUrls: ['password-toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-password-toggle',\n // `visibility` is what takes the disabled toggle out of the tab order and the accessibility tree;\n // `cdk-visually-hidden` and `aria-hidden` are kept for backward compatibility with consumer styles.\n // The three bindings read one signal of the toggle's own, back to back: the host bindings of every toggle in a\n // view run in that view's reactive consumer, where a signal read again after others costs a scan of all it has\n // read so far, and the form field and the input read the control's signals there too.\n '[style.visibility]': 'visibility',\n '[class.cdk-visually-hidden]': 'visibility === \"hidden\"',\n '[attr.aria-hidden]': 'visibility === \"hidden\"',\n '(click)': 'toggle($event)',\n '(keydown.ENTER)': 'toggle($event)',\n '(keydown.SPACE)': 'toggle($event)'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ],\n exportAs: 'kbqPasswordToggle'\n})\nexport class KbqPasswordToggle extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {\n protected readonly nativeElement = kbqInjectNativeElement();\n protected readonly focusMonitor = inject(FocusMonitor);\n\n private readonly a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'a11y',\n KBQ_A11Y_LOCALE_CONFIGURATION\n );\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n\n readonly tabindex = input<number, unknown>(0, { transform: numberAttribute });\n\n /**\n * @docs-private\n */\n readonly icon = viewChild.required(KbqIconButton);\n\n /** @docs-private */\n override readonly contentInput: InputSignal<KbqTooltipTrigger['content'] | undefined> = input<\n KbqTooltipTrigger['content'] | undefined\n >(undefined, {\n alias: 'kbqTooltipNotHidden'\n });\n\n /**\n * Tooltip shown while the password is visible. Reading it resolves to the tooltip matching the current\n * visibility, so that the base trigger renders the right one.\n */\n get content(): string | TemplateRef<any> {\n return this.control.elementType() === 'password' ? this.kbqTooltipHidden() : this._content;\n }\n\n set content(content: string | TemplateRef<any>) {\n this._content = content;\n\n untracked(() => this.updateData());\n }\n\n /** Tooltip shown while the password is hidden. */\n readonly kbqTooltipHidden = input<string | TemplateRef<any>>(undefined!);\n\n protected readonly hasError = computed(() => !!this.formField?.control().errorState());\n\n /** Form field password control. */\n private get control(): KbqPasswordToggleControl {\n const control = this.formField?.control();\n\n if (!isPasswordToggleControl(control)) {\n throw getKbqPasswordToggleMissingControlError();\n }\n\n return control;\n }\n\n /**\n * @docs-private\n */\n get hidden(): boolean {\n return this.control.elementType() === 'password';\n }\n\n /**\n * @docs-private\n */\n get iconClass(): string {\n return this.hidden ? 'kbq-eye_16' : 'kbq-eye-slash_16';\n }\n\n /**\n * @docs-private\n */\n get visibility(): 'hidden' | 'visible' {\n return this.visibilityState();\n }\n\n private readonly visibilityState = computed<'hidden' | 'visible'>(() =>\n this.control.disabled() ? 'hidden' : 'visible'\n );\n\n /**\n * Accessible name of the icon-only toggle, describing the action it performs.\n *\n * @docs-private\n */\n protected get accessibleName(): string {\n const { showPassword, hidePassword } = this.a11yLocaleConfiguration();\n\n return this.hidden ? showPassword : hidePassword;\n }\n\n constructor() {\n super();\n\n this.trigger = `${PopUpTriggers.Hover}`;\n\n const keydownTarget = this.formField?.elementRef.nativeElement;\n\n if (keydownTarget) {\n fromEvent<KeyboardEvent>(keydownTarget, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.onFormFieldKeyDown(event));\n }\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.nativeElement);\n }\n\n /**\n * @docs-private\n */\n toggle(event: Event): void {\n // Untracked, as the `content` setter: called from a consumer's `effect()`, the state read on the way — the\n // control's `disabled` and type, the tooltip's inputs — would make the effect run again on every toggle.\n untracked(() => {\n if (this.control.disabled()) return;\n\n this.hide();\n\n this.control.toggleType();\n\n this.updateData();\n\n event.preventDefault();\n });\n }\n\n /**\n * Toggles password visibility for the Alt+F8 shortcut.\n */\n private onFormFieldKeyDown(event: KeyboardEvent): void {\n if (event.altKey && event.keyCode === F8) {\n this.toggle(event);\n }\n }\n}\n","import { Directive } from '@angular/core';\n\n/** Element to be placed in front of the form field. */\n@Directive({\n selector: '[kbqPrefix]',\n host: {\n class: 'kbq-prefix'\n },\n exportAs: 'kbqPrefix'\n})\nexport class KbqPrefix {}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { PristineChangeEvent, TouchedChangeEvent } from '@angular/forms';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { filter } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport { KbqHint } from './hint';\n\n/** Password hint to be shown below the password form field control. */\n@Component({\n selector: 'kbq-reactive-password-hint',\n imports: [KbqIconModule],\n template: `\n <i [kbq-icon]=\"icon()\" [color]=\"color()\"></i>\n\n <span class=\"kbq-hint__text\">\n <ng-content />\n </span>\n `,\n styleUrls: [\n './hint.scss',\n './hint-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-reactive-password-hint'\n },\n exportAs: 'kbqReactivePasswordHint'\n})\nexport class KbqReactivePasswordHint extends KbqHint {\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n\n /** Whether the form field control has an error. */\n readonly hasError = input(false, { transform: booleanAttribute });\n\n /** Disables `color` for the hint text. */\n override readonly fillTextOff = input(true, { transform: booleanAttribute });\n\n /**\n * The form field hint icon.\n *\n * @docs-private\n */\n protected readonly icon = computed(() => (this.hasError() ? 'kbq-xmark-s_16' : 'kbq-check-s_16'));\n\n constructor() {\n super();\n\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n\n // `hasError` also drives `icon`, so the color has to follow it in the same pass, otherwise the icon and\n // its color disagree for a tick.\n effect(() => {\n this.hasError();\n\n this.updateColor();\n });\n\n // `touched` and `pristine` are not signals and can change on their own (`markAllAsTouched()` on submit,\n // `reset()` to the same value), so the color follows their events.\n afterNextRender(() => {\n this.formField\n ?.control()\n ?.ngControl?.control?.events.pipe(\n filter((event) => event instanceof TouchedChangeEvent || event instanceof PristineChangeEvent),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.updateColor());\n });\n }\n\n private updateColor(): void {\n this.color.set(this.makeColor());\n }\n\n private makeColor(): KbqComponentColors {\n const control = this.formField?.control();\n\n if (control?.ngControl?.untouched && control.ngControl.pristine) {\n return KbqComponentColors.ContrastFade;\n }\n\n return this.hasError() ? KbqComponentColors.Error : KbqComponentColors.Success;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n output,\n OutputEmitterRef,\n Signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { concatMap, fromEvent, interval, Subject, timer } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD } from './form-field';\n\n/**\n * Narrow structural contract for `KbqNumberInput`, duck-typed here to avoid a circular dependency between\n * `@koobiq/components/form-field` and `@koobiq/components/input`. It is not the form field control: that is\n * `KbqInput` on the same element.\n */\ntype KbqStepperControl = {\n readonly controlType: 'input-number';\n /** Read by the template, so it has to be backed by a signal for the stepper to follow it. */\n readonly disabled: boolean;\n /** A signal since the input review: `step` is an `input()` on `KbqNumberInput`. */\n readonly step: Signal<number>;\n stepUp: (step: number) => void;\n /** Decreases the value by `step`. */\n stepDown: (step: number) => void;\n};\n\n/**\n * Checks whether the given value structurally matches `KbqStepperControl`.\n */\nconst isStepperControl = (control: unknown): control is KbqStepperControl => {\n return (\n !!control &&\n typeof control === 'object' &&\n 'controlType' in control &&\n control.controlType === 'input-number' &&\n 'stepUp' in control &&\n typeof control.stepUp === 'function' &&\n 'stepDown' in control &&\n typeof control.stepDown === 'function'\n );\n};\n\nconst getKbqStepperToggleMissingControlError = (): Error => {\n return Error('You should use kbq-stepper with kbqNumberInput');\n};\n\n/**\n * Timeout duration when clicking the up/down arrow\n *\n * @internal\n */\nexport const KBQ_STEPPER_INITIAL_TIMEOUT = 300;\n\n/**\n * Interval delay when clicking the up/down arrow\n *\n * @internal\n */\nexport const KBQ_STEPPER_INTERVAL_DELAY = 75;\n\n/** Component which allow to increment or decrement number value. */\n@Component({\n selector: 'kbq-stepper',\n imports: [KbqIconModule],\n template: `\n <i\n aria-hidden=\"true\"\n class=\"kbq-stepper-step-up\"\n color=\"contrast-fade\"\n kbq-icon-button=\"kbq-chevron-up-s_16\"\n [tabindex]=\"-1\"\n [autoColor]=\"true\"\n [disabled]=\"control().disabled\"\n (mousedown)=\"onStepUp($event)\"\n ></i>\n <i\n aria-hidden=\"true\"\n class=\"kbq-stepper-step-down\"\n color=\"contrast-fade\"\n kbq-icon-button=\"kbq-chevron-down-s_16\"\n [tabindex]=\"-1\"\n [autoColor]=\"true\"\n [disabled]=\"control().disabled\"\n (mousedown)=\"onStepDown($event)\"\n ></i>\n `,\n styleUrls: ['stepper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-stepper'\n },\n exportAs: 'kbqStepper'\n})\nexport class KbqStepper {\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Emitted when the stepper is incremented. */\n readonly stepUp = output<void>();\n\n /** Emitted when the stepper is decremented. */\n readonly stepDown = output<void>();\n\n /** @docs-private */\n protected readonly mouseUp = new Subject<void>();\n\n /**\n * Timing observable simulating long press in native input-number.\n * - Value increases/decreases by step immediately.\n * - Brief pause (`300ms`, {@link KBQ_STEPPER_INITIAL_TIMEOUT})\n * - Numbers start running upward/downward with selected speed\n * (controlled by interval period, {@link KBQ_STEPPER_INTERVAL_DELAY})\n */\n private readonly longPress = timer(KBQ_STEPPER_INITIAL_TIMEOUT).pipe(\n concatMap(() => interval(KBQ_STEPPER_INTERVAL_DELAY)),\n takeUntilDestroyed(),\n takeUntil(this.mouseUp)\n );\n\n /**\n * Form field number control. Resolved once per control change instead of on every template read.\n *\n * @docs-private\n */\n protected readonly control = computed<KbqStepperControl>(() => {\n const control = this.formField?.control();\n // `formFieldControl` here is `KbqInput` (it owns the `KbqFormFieldControl` provider on\n // `<input kbqNumberInput>`), not the number-input itself: `stepUp`/`stepDown`/`step`\n // live on the sibling `KbqNumberInput` directive, reachable only via `KbqInput.numberInput`.\n const inputNumberControl =\n control?.controlType === 'input-number' && 'numberInput' in control ? control.numberInput : null;\n\n if (!isStepperControl(inputNumberControl)) {\n throw getKbqStepperToggleMissingControlError();\n }\n\n return inputNumberControl;\n });\n\n constructor() {\n this.destroyRef.onDestroy(() => this.mouseUp.complete());\n }\n\n /** @docs-private */\n onStepUp(event: MouseEvent): void {\n this.handleStep(event, (control) => control.stepUp(control.step()), this.stepUp);\n }\n\n /** @docs-private */\n onStepDown(event: MouseEvent): void {\n this.handleStep(event, (control) => control.stepDown(control.step()), this.stepDown);\n }\n\n private handleStep(\n event: MouseEvent,\n step: (control: KbqStepperControl) => void,\n emitter: OutputEmitterRef<void>\n ): void {\n const control = this.control();\n\n if (control.disabled) return;\n\n const performStep = () => {\n step(control);\n emitter.emit();\n };\n\n performStep();\n // handle case when cursor is out of viewport.\n fromEvent(this.document, 'mouseup')\n .pipe(take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.mouseUp.next());\n this.longPress.subscribe(performStep);\n event.preventDefault();\n }\n}\n","import { Directive } from '@angular/core';\n\n/** Element to be placed at the end of the form field. */\n@Directive({\n selector: '[kbqSuffix]',\n host: {\n class: 'kbq-suffix'\n },\n exportAs: 'kbqSuffix'\n})\nexport class KbqSuffix {}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n InjectionToken,\n input,\n model,\n OnDestroy,\n Provider,\n Signal,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { KBQ_CONNECTED_OVERLAY_ORIGIN, KBQ_FORM_FIELD_REF, KbqColorDirective } from '@koobiq/components/core';\nimport { kbqIconErrorStateContextFactoryProvider } from '@koobiq/components/icon';\nimport { KbqCleaner, kbqCleanerFactoryProvider } from './cleaner';\nimport { KbqError } from './error';\nimport { KbqFormFieldControl, kbqSetDescribedByIds } from './form-field-control';\nimport { KbqHint } from './hint';\nimport { KbqLabel } from './label';\nimport { KbqPasswordToggle } from './password-toggle';\nimport { KbqPrefix } from './prefix';\nimport { KbqReactivePasswordHint } from './reactive-password-hint';\nimport { KbqStepper } from './stepper';\nimport { KbqSuffix } from './suffix';\n\n/** @internal */\nexport function getKbqFormFieldMissingControlError(): Error {\n return Error('kbq-form-field must contain a KbqFormFieldControl');\n}\n\n/**\n * Injection token used to access the owning `KbqFormField`.\n *\n * @docs-private\n */\nexport const KBQ_FORM_FIELD = new InjectionToken<KbqFormField>('KbqFormField');\n\n/**\n * Default options for the kbq-form-field that can be configured using the `KBQ_FORM_FIELD_DEFAULT_OPTIONS`\n * injection token.\n */\nexport type KbqFormFieldDefaultOptions = Partial<{\n /** Disables form field borders and shadows. */\n noBorders: boolean;\n /** Use when KbqFormField is in an overlay container. */\n inOverlay: boolean;\n /** Whether the form field is displayed horizontally. */\n horizontal: boolean;\n /** Additional CSS classes applied to the label element. */\n labelClass: string | string[] | Set<string>;\n /** Additional CSS classes applied to the content wrapper element. */\n contentClass: string | string[] | Set<string>;\n}>;\n\n/**\n * Injection token that can be used to configure the default options for all kbq-form-field's.\n *\n * @docs-private\n */\nexport const KBQ_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<KbqFormFieldDefaultOptions>(\n 'KBQ_FORM_FIELD_DEFAULT_OPTIONS'\n);\n\n/** Utility provider for `KBQ_FORM_FIELD_DEFAULT_OPTIONS`. */\nexport const kbqFormFieldDefaultOptionsProvider = (options: KbqFormFieldDefaultOptions): Provider => ({\n provide: KBQ_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: options\n});\n\n/** Container for form controls that applies styling and behavior. */\n@Component({\n selector: 'kbq-form-field',\n imports: [NgTemplateOutlet],\n templateUrl: 'form-field.html',\n styleUrls: [\n 'form-field.scss',\n 'form-field-tokens.scss',\n // The controls below are directives, and directives can't declare styles. The form field is the only\n // component they are always rendered inside of, so it carries their styles on their behalf.\n // Keep every entry paired with the control that owns it; removing one silently unstyles that control.\n // KbqInput\n '../input/input.scss',\n '../input/input-tokens.scss',\n // KbqTimepicker\n '../timepicker/timepicker.scss',\n // KbqDatepickerInput\n '../datepicker/datepicker-input.scss',\n // KbqTextarea\n '../textarea/textarea.scss',\n // KbqTagInput\n '../tags/tag-input-tokens.scss'\n ],\n providers: [\n // Kept for consumers that cannot depend on the form-field entry point.\n { provide: KBQ_FORM_FIELD_REF, useExisting: KbqFormField },\n { provide: KBQ_FORM_FIELD, useExisting: KbqFormField },\n kbqCleanerFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return {\n get control() {\n return formField.control();\n },\n get keydownTarget() {\n return formField.elementRef.nativeElement;\n },\n clearByEscape: true\n };\n }),\n kbqIconErrorStateContextFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return {\n get errorState() {\n return formField.control().errorState;\n }\n };\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // Every component of this package renders unencapsulated, on purpose: the `kbq-form-field__*` and\n // `kbq-hint*` classes are a public contract that themes, the controls projected into the field and\n // consumer stylesheets all target. Renaming or nesting them is a breaking change.\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-form-field',\n\n '[class.kbq-form-field_invalid]': 'invalid',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-form-field_autofilled]': 'autofilled',\n '[class.kbq-form-field_no-borders]': 'noBorders()',\n '[class.kbq-form-field_in-overlay]': 'inOverlay()',\n '[class.kbq-form-field_horizontal]': 'horizontal()',\n\n '[class.ng-untouched]': 'shouldForward(\"untouched\")',\n '[class.ng-touched]': 'shouldForward(\"touched\")',\n '[class.ng-pristine]': 'shouldForward(\"pristine\")',\n '[class.ng-dirty]': 'shouldForward(\"dirty\")',\n '[class.ng-valid]': 'shouldForward(\"valid\")',\n '[class.ng-invalid]': 'shouldForward(\"invalid\")',\n '[class.ng-pending]': 'shouldForward(\"pending\")'\n },\n exportAs: 'kbqFormField'\n})\nexport class KbqFormField\n extends KbqColorDirective\n implements AfterContentInit, AfterViewInit, OnDestroy, AfterContentChecked\n{\n private readonly destroyRef = inject(DestroyRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly defaultOptions = inject(KBQ_FORM_FIELD_DEFAULT_OPTIONS, { optional: true });\n private readonly customOverlayOrigin = inject(KBQ_CONNECTED_OVERLAY_ORIGIN, { optional: true });\n\n /**\n * @docs-private\n */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Disables form field borders and shadows. */\n readonly noBorders = input(this.defaultOptions?.noBorders, { transform: booleanAttribute });\n\n /** Use when KbqFormField is in an overlay container. */\n readonly inOverlay = model(this.defaultOptions?.inOverlay);\n\n /** Whether the form field is displayed horizontally. */\n readonly horizontal = input(this.defaultOptions?.horizontal, { transform: booleanAttribute });\n\n /** Additional CSS classes applied to the label element. */\n readonly labelClass = input(this.defaultOptions?.labelClass);\n\n /** Additional CSS classes applied to the content wrapper element. */\n readonly contentClass = input(this.defaultOptions?.contentClass);\n\n /**\n * The form field control.\n *\n * @docs-private\n */\n readonly control = contentChild.required(KbqFormFieldControl);\n\n /**\n * @docs-private\n */\n readonly stepper = contentChild(KbqStepper);\n\n /**\n * @docs-private\n */\n readonly cleaner = contentChild(KbqCleaner, { descendants: false });\n\n /**\n * @docs-private\n */\n readonly passwordToggle = contentChild(KbqPasswordToggle);\n\n /**\n * @docs-private\n */\n readonly hint = contentChildren(KbqHint);\n\n /**\n * @docs-private\n */\n readonly suffix = contentChildren(KbqSuffix);\n\n /**\n * @docs-private\n */\n readonly prefix = contentChildren(KbqPrefix);\n\n /**\n * @docs-private\n */\n readonly connectionContainerRef = viewChild.required<ElementRef>('connectionContainer');\n\n /** Host element of the control, used as the `aria-describedby` target. */\n private readonly controlElementRef: Signal<ElementRef<HTMLElement>> = contentChild.required(KbqFormFieldControl, {\n read: ElementRef\n });\n\n private readonly reactivePasswordHint = contentChildren(KbqReactivePasswordHint);\n private readonly error = contentChildren(KbqError);\n private readonly label = contentChild(KbqLabel);\n\n // One signal per host value. The host bindings of every form field in a view run in that view's reactive\n // consumer, where a signal read again by another binding costs a scan of everything the view has read.\n private readonly invalidState = computed(() => !!this.control()?.errorState());\n private readonly disabledState = computed(() => !!this.control()?.disabled());\n private readonly autofilledState = computed(() => !!this.control()?.autofilled?.());\n\n /** Whether the form field is invalid. */\n get invalid(): boolean {\n return this.invalidState();\n }\n\n /**\n * Whether the form field control has an reactive password hint.\n *\n * @docs-private\n */\n protected readonly hasReactivePasswordHint = computed(() => this.reactivePasswordHint().length > 0);\n\n /**\n * Whether the form-field contains kbq-error.\n *\n * @docs-private\n */\n protected readonly hasError = computed(() => this.error().length > 0);\n\n /**\n * Whether the form-field contains kbq-label.\n *\n * @docs-private\n */\n protected readonly hasLabel = computed(() => !!this.label());\n\n /**\n * Id of the rendered label, or `null` when the form field has no label.\n *\n * `for` only associates a label with a native form control, so a control that is a custom element\n * (`kbq-select`, for one) has to point back at the label through `aria-labelledby` instead.\n */\n readonly labelId = computed(() => (this.hasLabel() ? `${this.control().id()}-label` : null));\n\n /**\n * Whether the control is a native labelable element, so that a `<label>` can associate with it.\n *\n * A custom control (`kbq-select`, for one) reports `isNativeLabelSupported: false`; the caption is then rendered\n * as a `<span>` instead of a `<label>`, because a label that neither has a `for` matching a labelable\n * element nor wraps one is invalid, and the control is named through `aria-labelledby` instead.\n */\n readonly isNativeLabelSupported = computed(() => this.control().isNativeLabelSupported !== false);\n\n /**\n * Whether the form-field contains kbq-hint.\n *\n * @docs-private\n */\n readonly hasHint = computed(() => this.hint().length > 0);\n\n /**\n * Whether the form-field contains kbqSuffix.\n *\n * @docs-private\n */\n readonly hasSuffix = computed(() => this.suffix().length > 0);\n\n /**\n * Whether the form-field contains kbqPrefix.\n *\n * @docs-private\n */\n readonly hasPrefix = computed(() => this.prefix().length > 0);\n\n /**\n * Whether the form-field contains kbq-cleaner.\n *\n * @docs-private\n */\n readonly hasCleaner = computed(() => !!this.cleaner());\n\n /**\n * Whether the form-field contains kbq-stepper.\n *\n * @docs-private\n */\n readonly hasStepper = computed(() => !!this.stepper());\n\n /**\n * Whether the form-field contains kbq-password-toggle.\n *\n * @docs-private\n */\n readonly hasPasswordToggle = computed(() => !!this.passwordToggle());\n\n /**\n * Current focus origin state.\n *\n * @docs-private\n */\n get focusOrigin(): FocusOrigin {\n return this._focusOrigin;\n }\n\n private _focusOrigin: FocusOrigin;\n\n /**\n * @docs-private\n */\n get hasFocus(): boolean {\n return !!this.control()?.focused();\n }\n\n /**\n * Whether the cleaner can be displayed: it requires a projected `kbq-cleaner`, an enabled control\n * and a value that is not empty.\n *\n * @docs-private\n */\n get canShowCleaner(): boolean {\n return !!this.cleaner()?.canShow;\n }\n\n /** Whether the form field is disabled. */\n get disabled(): boolean {\n return this.disabledState();\n }\n\n /**\n * Whether the form field control's value was filled in by the browser. Controls that cannot be\n * autofilled do not implement `autofilled`, and report `false` here.\n *\n * Reflected as `kbq-form-field_autofilled` for application code to key on. The autofill styling\n * does not use it: CSS matches `:autofill` directly, in the same style pass the browser fills\n * the field, where this arrives a frame or two later. Keeping the paint on one source also means\n * a class left behind by a detached or re-attached control cannot tint a field the browser no\n * longer considers autofilled.\n */\n get autofilled(): boolean {\n return this.autofilledState();\n }\n\n /** Ids last written to the control's `aria-describedby`, to skip redundant DOM writes. */\n private appliedDescribedByIds: string = '';\n\n ngAfterContentInit(): void {\n this.validateControlChild();\n\n this.initializeControl();\n }\n\n ngAfterContentChecked(): void {\n this.validateControlChild();\n this.updateDescribedByIds();\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n }\n\n ngOnDestroy(): void {\n this.stopFocusMonitor();\n }\n\n /** Focuses the control. */\n focus(options?: FocusOptions): void {\n this.control().focus(options);\n }\n\n /**\n * @docs-private\n */\n clearValue(event: Event): void {\n this.cleaner()?.clear(event);\n }\n\n /**\n * Handles a click on the control's container.\n *\n * @docs-private\n */\n onContainerClick(event: MouseEvent): void {\n const control = this.control();\n\n if (control?.onContainerClick) {\n control.onContainerClick(event);\n }\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return (\n this.customOverlayOrigin?.getConnectedOverlayOrigin() ?? this.connectionContainerRef() ?? this.elementRef\n );\n }\n\n /**\n * Determines whether a class from the NgControl should be forwarded to the host element.\n *\n * @docs-private\n */\n shouldForward(prop: keyof NgControl): boolean {\n // Untracked: the `ng-*` state is no signal, and the computeds above already refresh the host bindings when\n // the control is replaced.\n return !!untracked(this.control)?.ngControl?.[prop];\n }\n\n /**\n * Runs the focus monitor for the form field.\n *\n * @docs-private\n */\n runFocusMonitor = () => {\n this.focusMonitor\n .monitor(this.elementRef.nativeElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((origin) => (this._focusOrigin = origin));\n };\n\n /**\n * Stops the focus monitor for the form field.\n *\n * @docs-private\n */\n stopFocusMonitor(): void {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n /**\n * Throws an error if the form-field control is missing.\n *\n * @docs-private\n */\n protected validateControlChild() {\n let control: KbqFormFieldControl<unknown> | undefined;\n\n try {\n control = this.control();\n } catch {\n throw getKbqFormFieldMissingControlError();\n }\n\n if (!control) {\n throw getKbqFormFieldMissingControlError();\n }\n }\n\n /**\n * Links the hints and the error rendered by the form field to the control via `aria-describedby`,\n * so assistive technology announces them when the control gets focused.\n */\n private updateDescribedByIds(): void {\n const ids = [\n // The error is rendered only while the control is invalid, and `aria-describedby` must not\n // reference elements that are not in the DOM.\n ...(this.invalid ? this.error() : []),\n ...this.hint(),\n ...this.reactivePasswordHint()\n ].map((hint) => hint.id());\n const joinedIds = ids.join(' ');\n\n if (joinedIds === this.appliedDescribedByIds) {\n return;\n }\n\n this.appliedDescribedByIds = joinedIds;\n\n const control = this.control();\n\n if (control.setDescribedByIds) {\n control.setDescribedByIds(ids);\n } else {\n kbqSetDescribedByIds(this.controlElementRef().nativeElement, ids);\n }\n }\n\n /** Initializes the form field control. */\n private initializeControl(): void {\n const control = this.control();\n\n if (control.controlType) {\n this.elementRef.nativeElement.classList.add(`kbq-form-field-type-${control.controlType}`);\n }\n\n // The `ng-*` classes forwarded from the form control are not signals.\n control.ngControl?.valueChanges\n ?.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n\n/**\n * Trims the value of `kbqInput` and `kbqTextarea` before it reaches the model.\n *\n * The value displayed in the control is left untouched, so trimming never fights the user while they\n * are typing. Add the `no-trim` attribute to the control to keep the value as is. `kbqInputPassword`\n * is not matched by this directive, so passwords keep their leading and trailing whitespace.\n *\n * @docs-private\n */\n@Directive({\n selector: '[kbqInput], [kbqTextarea]',\n host: { class: 'kbq-trim' },\n exportAs: 'KbqTrim'\n})\nexport class KbqTrim {\n private readonly noTrim = coerceBooleanProperty(inject(new HostAttributeToken('no-trim'), { optional: true }));\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.noTrim || !this.ngControl) {\n return;\n }\n\n // Wrapped through the declared accessors rather than through `NgControl.valueAccessor`, which\n // Angular 22 leaves null until the form directive's first `ngOnChanges` — after this\n // constructor. Resolved here rather than in a field initializer so that an element without a\n // form control neither patches nor eagerly constructs its accessors. An accessor the form\n // does not select is patched too, but Angular never registers on it. An accessor installed by\n // assigning `NgControl.valueAccessor` directly is not covered.\n const valueAccessors = inject(NG_VALUE_ACCESSOR, { optional: true, self: true });\n\n for (const valueAccessor of valueAccessors ?? []) {\n const original = valueAccessor.registerOnChange.bind(valueAccessor);\n\n valueAccessor.registerOnChange = (fn: (value: unknown) => void) =>\n original((value: unknown) => fn(this.trim(value)));\n }\n }\n\n /**\n * Trims the value when it is a string, other values are passed through as is.\n *\n * @docs-private\n */\n trim(value: unknown): unknown {\n if (this.noTrim) {\n return value;\n }\n\n return typeof value === 'string' ? value.trim() : value;\n }\n}\n","@if (hasLabel()) {\n @if (isNativeLabelSupported()) {\n <label class=\"kbq-form-field__label\" [attr.id]=\"labelId()\" [class]=\"labelClass()\" [attr.for]=\"control().id()\">\n <ng-container [ngTemplateOutlet]=\"labelContent\" />\n </label>\n } @else {\n <span class=\"kbq-form-field__label\" [attr.id]=\"labelId()\" [class]=\"labelClass()\">\n <ng-container [ngTemplateOutlet]=\"labelContent\" />\n </span>\n }\n}\n\n<ng-template #labelContent><ng-content select=\"kbq-label\" /></ng-template>\n\n<div class=\"kbq-form-field__content\" [class]=\"contentClass()\">\n <div #connectionContainer class=\"kbq-form-field__container\" (click)=\"onContainerClick($event)\">\n @if (hasPrefix()) {\n <div class=\"kbq-form-field__prefix\">\n <ng-content select=\"[kbqPrefix]\" />\n </div>\n }\n\n <div class=\"kbq-form-field__infix\">\n <ng-content />\n </div>\n\n @if (hasSuffix() || hasCleaner() || hasPasswordToggle() || hasStepper()) {\n <div class=\"kbq-form-field__suffix\">\n @if (canShowCleaner) {\n <div class=\"kbq-form-field__cleaner\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <ng-content select=\"kbq-password-toggle, kbq-stepper, [kbqSuffix]\" />\n </div>\n }\n </div>\n\n @if (hasHint() || hasError() || hasReactivePasswordHint()) {\n <div class=\"kbq-form-field__hint\">\n @if (invalid) {\n <ng-content select=\"kbq-error\" />\n }\n\n <ng-content select=\"kbq-hint, kbq-reactive-password-hint\" />\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqCleaner } from './cleaner';\nimport { KbqError } from './error';\nimport { KbqFieldset, KbqFieldsetItem, KbqLegend } from './fieldset';\nimport { KbqFormField, KbqTrim } from './form-field';\nimport { KbqHint } from './hint';\nimport { KbqLabel } from './label';\nimport { KbqPasswordToggle } from './password-toggle';\nimport { KbqPrefix } from './prefix';\nimport { KbqReactivePasswordHint } from './reactive-password-hint';\nimport { KbqStepper } from './stepper';\nimport { KbqSuffix } from './suffix';\n\nconst COMPONENTS = [\n KbqCleaner,\n KbqFormField,\n KbqPrefix,\n KbqSuffix,\n KbqPasswordToggle,\n KbqStepper,\n KbqLabel,\n KbqHint,\n KbqError,\n KbqReactivePasswordHint,\n KbqLegend,\n KbqFieldset,\n KbqFieldsetItem,\n\n // Legacy components\n KbqTrim\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqFormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-form-field.mjs","sources":["../../../packages/components/form-field/cleaner.ts","../../../packages/components/form-field/hint.ts","../../../packages/components/form-field/hint.html","../../../packages/components/form-field/error.ts","../../../packages/components/form-field/fieldset.ts","../../../packages/components/form-field/form-field-control.ts","../../../packages/components/form-field/label.ts","../../../packages/components/form-field/password-toggle.ts","../../../packages/components/form-field/prefix.ts","../../../packages/components/form-field/reactive-password-hint.ts","../../../packages/components/form-field/stepper.ts","../../../packages/components/form-field/suffix.ts","../../../packages/components/form-field/form-field.ts","../../../packages/components/form-field/form-field.html","../../../packages/components/form-field/form-field.module.ts","../../../packages/components/form-field/koobiq-components-form-field.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n Provider,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n ESCAPE,\n KBQ_A11Y_LOCALE_CONFIGURATION,\n KbqComponentColors,\n KbqLocaleOverridesDirective\n} from '@koobiq/components/core';\nimport { KbqIconButton } from '@koobiq/components/icon';\nimport { fromEvent } from 'rxjs';\nimport { KbqFormFieldControl } from './form-field-control';\n\n/** @docs-private */\nexport interface KbqCleanerContextBase {\n readonly control: KbqFormFieldControl<unknown>;\n /** Overrides the default `cleanerControl.ngControl?.reset()` behavior when the cleaner is activated. */\n clear?(): void;\n\n /**\n * Whether the control still holds something the cleaner would remove — a host that keeps part of\n * its value back reports `false` once only that part is left. Defaults to `true`.\n */\n canClear?(): boolean;\n}\n\n/**\n * `keydownTarget` is where `Escape` presses are listened for, so it is required by `clearByEscape` and\n * refused without it — a host that asks for `Escape` clearing but names no target would silently never clear.\n *\n * @docs-private\n */\nexport type KbqCleanerContext = KbqCleanerContextBase &\n (\n | { readonly clearByEscape: true; readonly keydownTarget: HTMLElement }\n | { readonly clearByEscape: false; readonly keydownTarget?: never }\n );\n\n/** @docs-private */\nexport const KBQ_CLEANER_CONTEXT = new InjectionToken<KbqCleanerContext | null>('KbqCleanerContext');\n\n/**\n * Utility provider for `KBQ_CLEANER_CONTEXT`, built from a factory that resolves the current host's `KbqCleanerContext`.\n *\n * @docs-private\n */\nexport const kbqCleanerFactoryProvider = (factory: () => KbqCleanerContext): Provider => ({\n provide: KBQ_CLEANER_CONTEXT,\n useFactory: factory\n});\n\n/** @internal */\nexport function getKbqFormFieldYouCanNotUseCleanerInNumberInputError(): Error {\n return Error(`You can't use kbq-cleaner with input that have type=\"number\"`);\n}\n\n/**\n * Element to be placed in end of the form field.\n * Resets form control by click.\n */\n@Component({\n selector: 'kbq-cleaner',\n template: `\n <ng-content />\n `,\n styleUrls: ['cleaner.scss', '../icon/icon-button.scss', '../icon/icon-button-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-cleaner',\n // The cleaner is an icon-only control: without a role and an accessible name it is announced as an\n // unlabeled focusable graphic.\n role: 'button',\n '[attr.aria-label]': 'accessibleName()',\n '(click)': 'clear($event)',\n '(keydown.enter)': 'clear($event)',\n '(keydown.space)': 'clear($event)'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ],\n exportAs: 'kbqCleaner'\n})\nexport class KbqCleaner extends KbqIconButton implements AfterContentInit {\n private readonly context = inject(KBQ_CLEANER_CONTEXT, { optional: true });\n\n /**\n * Whether the cleaner can be displayed for the current control state.\n *\n * @docs-private\n */\n get canShow(): boolean {\n const context = this.context;\n\n if (!context?.control) return true;\n\n const { control } = context;\n\n return !control.disabled() && !control.readonly?.() && !control.empty() && (context.canClear?.() ?? true);\n }\n\n private readonly a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'a11y',\n KBQ_A11Y_LOCALE_CONFIGURATION\n );\n\n /** Accessible name of the cleaner. Defaults to the localized \"Clear\". */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** @docs-private */\n protected readonly accessibleName = computed(() => this.ariaLabel() || this.a11yLocaleConfiguration().clear);\n\n constructor() {\n super();\n\n this.setIconName('kbq-circle-xmark_16');\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n this.autoColor = true;\n }\n\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n if (this.context?.control?.controlType === 'input-number') {\n throw getKbqFormFieldYouCanNotUseCleanerInNumberInputError();\n }\n\n const keydownTarget = this.context?.keydownTarget;\n\n if (keydownTarget) {\n fromEvent<KeyboardEvent>(keydownTarget, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.onKeyDown(event));\n }\n }\n\n /**\n * Clears the owning control in response to pointer or keyboard activation.\n *\n * @docs-private\n */\n clear(event: Event): void {\n // Untracked: called from a consumer's `effect()`, the state of the control read on the way — `disabled`,\n // `empty` — would make the effect run again as soon as something is typed, and clear it.\n untracked(() => {\n if (!this.context || !this.canShow) return;\n\n event.stopPropagation();\n event.preventDefault();\n\n if (this.context.clear) {\n this.context.clear();\n } else {\n this.context.control.ngControl?.reset();\n }\n\n this.context.control.focus();\n });\n }\n\n /**\n * Clears the focused control when Escape handling is enabled.\n */\n private onKeyDown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE && this.context?.clearByEscape && this.context.control.focused() && this.canShow) {\n this.clear(event);\n }\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n Provider,\n Signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqColorDirective } from '@koobiq/components/core';\n\n/**\n * State that a control gives to the hints projected into it. A hint's own input can only add to it: `[compact]=\"false\"`\n * does not cancel `compact` of the control.\n *\n * @docs-private\n */\nexport interface KbqHintParentConfig {\n /** Makes the hints smaller, as `KbqHint.compact` does. */\n compact?: Signal<boolean>;\n /** Disables `color` for the hint text, as `KbqHint.fillTextOff` does. */\n fillTextOff?: Signal<boolean>;\n\n /**\n * Whether the control is disabled. Its hints then show in the disabled color what no `color` paints: a hint\n * without `color` with its icons that have no color of their own, and the text of a hint with `fillTextOff`. A\n * color set on the hint or on its icon wins. A hint has no `disabled` of its own: it is not interactive, so only the\n * state of its control applies.\n */\n disabled?: Signal<boolean>;\n}\n\n/**\n * Lets a control set the state of the hints projected into it, so that it does not restyle them.\n *\n * @docs-private\n */\nexport const KBQ_HINT_PARENT = new InjectionToken<KbqHintParentConfig>('KBQ_HINT_PARENT');\n\n/**\n * Provides `KBQ_HINT_PARENT`. The factory runs in the injection context of the control, so it can inject the control.\n *\n * @docs-private\n */\nexport const kbqHintParentFactoryProvider = (factory: () => KbqHintParentConfig): Provider => ({\n provide: KBQ_HINT_PARENT,\n useFactory: factory\n});\n\nlet nextUniqueId = 0;\n\n/** Hint text to be shown below the form field control. */\n@Component({\n selector: 'kbq-hint',\n templateUrl: './hint.html',\n styleUrls: ['./hint.scss', './hint-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-hint',\n '[attr.id]': 'id()',\n '[class.kbq-hint_fill-text-off]': 'isFillTextOff()',\n '[class.kbq-hint_compact]': 'isCompact()',\n '[class.kbq-hint_disabled]': 'isDisabled()'\n },\n exportAs: 'kbqHint'\n})\nexport class KbqHint extends KbqColorDirective {\n private readonly parent = inject(KBQ_HINT_PARENT, { optional: true });\n\n /** Unique ID for the hint. Referenced by the `aria-describedby` of the form field control. */\n readonly id = input<string>(`kbq-hint-${nextUniqueId++}`);\n\n /** Disables `color` for the hint text. */\n readonly fillTextOff = input(false, { transform: booleanAttribute });\n\n /** Makes the hint size smaller. */\n readonly compact = input(false, { transform: booleanAttribute });\n\n /** @docs-private */\n protected readonly isFillTextOff = computed(() => this.fillTextOff() || !!this.parent?.fillTextOff?.());\n\n /** @docs-private */\n protected readonly isCompact: Signal<boolean> = computed(() => this.compact() || !!this.parent?.compact?.());\n\n /** @docs-private */\n protected readonly isDisabled: Signal<boolean> = computed(() => !!this.parent?.disabled?.());\n}\n","<ng-content select=\"[kbq-icon]\" />\n\n<span class=\"kbq-hint__text\">\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqHint } from './hint';\n\n/** Error text to be shown below the form field control. It keeps the error color under a disabled control too. */\n@Component({\n selector: 'kbq-error',\n templateUrl: './hint.html',\n styleUrls: [\n './hint.scss',\n './hint-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-error',\n // The form field mounts the error only while the control is invalid, so the element itself has to be\n // the live region: screen readers announce a node inserted with `role=\"alert\"`, while an `aria-live`\n // wrapper has to be in the accessibility tree before its content changes.\n role: 'alert',\n 'aria-atomic': 'true'\n },\n exportAs: 'kbqError'\n})\nexport class KbqError extends KbqHint {\n constructor() {\n super();\n\n this.setDefaultColor(KbqComponentColors.Error);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { kbqHintParentFactoryProvider } from './hint';\n\nlet nextLegendUniqueId = 0;\n\n/** Directive for marking an element as legend of `KbqFieldset` */\n@Directive({\n selector: '[kbqLegend]',\n host: {\n class: 'kbq-legend',\n '[attr.id]': 'id()'\n },\n exportAs: 'kbqLegend'\n})\nexport class KbqLegend {\n /** Unique ID for the legend, referenced by the `aria-labelledby` of the fieldset. */\n readonly id = input<string>(`kbq-legend-${nextLegendUniqueId++}`);\n}\n\n/** Directive for marking elements as items inside `KbqFieldset` */\n@Directive({\n selector: '[kbqFieldsetItem]',\n host: {\n class: 'kbq-fieldset-item'\n },\n exportAs: 'kbqFieldsetItem'\n})\nexport class KbqFieldsetItem {}\n\n/**\n * A group of form-fields and related controls.\n * Container component emulating the native `fieldset` element.\n */\n@Component({\n selector: 'kbq-fieldset',\n template: `\n <ng-content select=\"[kbqLegend]\" />\n\n <div class=\"kbq-fieldset__container\">\n <ng-content />\n </div>\n\n <!--\n Mirrors the hint area of KbqFormField. Unlike the form field, the fieldset owns no control, so it has\n no error state to guard the projected kbq-error with — showing it is up to the consumer.\n -->\n <div class=\"kbq-form-field__hint\">\n <ng-content select=\"kbq-error\" />\n\n <ng-content select=\"kbq-hint, kbq-reactive-password-hint\" />\n </div>\n `,\n styleUrls: ['./fieldset.scss', './fieldset-tokens.scss'],\n providers: [kbqHintParentFactoryProvider(() => ({ compact: signal(true) }))],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-fieldset',\n role: 'group',\n '[attr.aria-labelledby]': 'legend()?.id()'\n },\n exportAs: 'kbqFieldset'\n})\nexport class KbqFieldset {\n /**\n * Labels the group with the projected legend. Referencing the element keeps the accessible name in sync\n * with the visible text, including after a locale change.\n */\n protected readonly legend = contentChild(KbqLegend);\n}\n","import { Signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n/**\n * An interface which allows a control to work inside of a `KbqFormField`.\n *\n * Every state member is a signal: the form field derives its own state from them and runs `OnPush`, so a\n * change of the control reaches it without any notification of the control's own.\n */\nexport abstract class KbqFormFieldControl<T> {\n /** The value of the control. */\n readonly value: Signal<T | null>;\n\n /** The element ID for this control. */\n readonly id: Signal<string>;\n\n /** The placeholder for this control. */\n readonly placeholder: Signal<string | null | undefined>;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: Signal<boolean>;\n\n /** Whether the control is empty. */\n readonly empty: Signal<boolean>;\n\n /** Whether the control is required. */\n readonly required: Signal<boolean>;\n\n /** Whether the control is disabled. */\n readonly disabled: Signal<boolean>;\n\n /** Whether the control is in an error state. */\n readonly errorState: Signal<boolean>;\n\n /**\n * Whether the control is read-only: it can be focused and its value selected and copied, but not changed.\n *\n * Implement it only on a control that has a read-only state. `KbqFormField` then hides the cleaner and adds\n * the `kbq-form-field_readonly` class.\n */\n readonly readonly?: Signal<boolean>;\n\n /**\n * Whether the control's value was filled in by the browser.\n *\n * Implement it only where autofill is reachable: on a control that is itself a text input or a\n * textarea, or — like `KbqTagList` — on a wrapper that forwards the state of the input it hosts.\n * Leave it out on controls the browser never fills.\n */\n readonly autofilled?: Signal<boolean>;\n\n /**\n * An optional name for the control type that can be used to distinguish `kbq-form-field` elements\n * based on their control type. The form field will add a class,\n * `kbq-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /**\n * Whether the control is a native labelable element, so that the `<label for>` a wrapping\n * `kbq-form-field` renders associates with it.\n *\n * Defaults to `true`. A control rendered as a custom element (`kbq-select`, for one) sets it to\n * `false`: a `<label>` with neither a `for` matching a labelable element nor a nested one is\n * invalid, so the form field renders the caption as a `<span>` instead and the control is named\n * through `aria-labelledby`.\n */\n readonly isNativeLabelSupported?: boolean;\n\n /**\n * Sets the ids of the elements (hints, errors) that describe the control.\n *\n * Implement it only when `aria-describedby` has to be placed on an element other than the one\n * the control is declared on: `KbqFormField` writes the attribute on the control's host element\n * by default.\n */\n setDescribedByIds?: (ids: string[]) => void;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\n\n /** Focuses the control. */\n abstract focus(options?: FocusOptions): void;\n\n /** Opens control's overlay. */\n open?: () => void;\n}\n\n/** Ids written by `kbqSetDescribedByIds` for a given element, so consumer-provided ids survive updates. */\nconst ownDescribedByIds = new WeakMap<HTMLElement, string[]>();\n\n/**\n * Writes `aria-describedby` on the control's element, preserving the ids the consumer set themselves.\n *\n * @internal\n */\nexport function kbqSetDescribedByIds(element: HTMLElement, ids: string[]): void {\n const previouslyOwned = ownDescribedByIds.get(element) || [];\n const current = (element.getAttribute('aria-describedby') || '').split(/\\s+/).filter(Boolean);\n const next = [...current.filter((id) => !previouslyOwned.includes(id)), ...ids];\n\n ownDescribedByIds.set(element, ids);\n\n if (next.length) {\n element.setAttribute('aria-describedby', next.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n}\n","import { Directive } from '@angular/core';\n\n/** Label for the form field. */\n@Directive({\n selector: 'kbq-label',\n host: {\n class: 'kbq-label'\n },\n exportAs: 'kbqLabel'\n})\nexport class KbqLabel {}\n","import { FocusMonitor } from '@angular/cdk/a11y';\n\nimport { F8 } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n InputSignal,\n numberAttribute,\n OnDestroy,\n Signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n KBQ_A11Y_LOCALE_CONFIGURATION,\n kbqInjectNativeElement,\n KbqLocaleOverridesDirective,\n PopUpTriggers\n} from '@koobiq/components/core';\nimport { KbqIconButton, KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { fromEvent } from 'rxjs';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport { KbqFormFieldControl } from './form-field-control';\n\n/**\n * Narrow structural contract for `kbqInputPassword`, duck-typed here to avoid a circular\n * dependency between `@koobiq/components/form-field` and `@koobiq/components/input`.\n */\ntype KbqPasswordToggleControl = KbqFormFieldControl<unknown> & {\n readonly controlType: 'input-password';\n readonly elementType: Signal<'text' | 'password'>;\n toggleType: () => void;\n};\n\n/**\n * Checks whether the given control structurally matches `KbqPasswordToggleControl`.\n */\nconst isPasswordToggleControl = (control: unknown): control is KbqPasswordToggleControl => {\n return (\n !!control &&\n typeof control === 'object' &&\n 'controlType' in control &&\n control.controlType === 'input-password' &&\n 'elementType' in control &&\n 'toggleType' in control &&\n typeof control.toggleType === 'function'\n );\n};\n\nconst getKbqPasswordToggleMissingControlError = (): Error => {\n return Error('You should use kbq-password-toggle with kbqInputPassword');\n};\n\n/** Component which changes password visibility. */\n@Component({\n selector: `kbq-password-toggle`,\n imports: [KbqIconModule, KbqToolTipModule],\n template: `\n <ng-content>\n <i\n role=\"button\"\n [attr.aria-label]=\"accessibleName\"\n [attr.aria-pressed]=\"!hidden\"\n [color]=\"hasError() ? 'error' : 'contrast-fade'\"\n [kbq-icon-button]=\"iconClass\"\n [tabindex]=\"tabindex()\"\n ></i>\n </ng-content>\n `,\n styleUrls: ['password-toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-password-toggle',\n // `visibility` is what takes the disabled toggle out of the tab order and the accessibility tree;\n // `cdk-visually-hidden` and `aria-hidden` are kept for backward compatibility with consumer styles.\n // The three bindings read one signal of the toggle's own, back to back: the host bindings of every toggle in a\n // view run in that view's reactive consumer, where a signal read again after others costs a scan of all it has\n // read so far, and the form field and the input read the control's signals there too.\n '[style.visibility]': 'visibility',\n '[class.cdk-visually-hidden]': 'visibility === \"hidden\"',\n '[attr.aria-hidden]': 'visibility === \"hidden\"',\n '(click)': 'toggle($event)',\n '(keydown.ENTER)': 'toggle($event)',\n '(keydown.SPACE)': 'toggle($event)'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ],\n exportAs: 'kbqPasswordToggle'\n})\nexport class KbqPasswordToggle extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {\n protected readonly nativeElement = kbqInjectNativeElement();\n protected readonly focusMonitor = inject(FocusMonitor);\n\n private readonly a11yLocaleConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'a11y',\n KBQ_A11Y_LOCALE_CONFIGURATION\n );\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n\n readonly tabindex = input<number, unknown>(0, { transform: numberAttribute });\n\n /**\n * @docs-private\n */\n readonly icon = viewChild.required(KbqIconButton);\n\n /** @docs-private */\n override readonly contentInput: InputSignal<KbqTooltipTrigger['content'] | undefined> = input<\n KbqTooltipTrigger['content'] | undefined\n >(undefined, {\n alias: 'kbqTooltipNotHidden'\n });\n\n /**\n * Tooltip shown while the password is visible. Reading it resolves to the tooltip matching the current\n * visibility, so that the base trigger renders the right one.\n */\n get content(): string | TemplateRef<any> {\n return this.control.elementType() === 'password' ? this.kbqTooltipHidden() : this._content;\n }\n\n set content(content: string | TemplateRef<any>) {\n this._content = content;\n\n untracked(() => this.updateData());\n }\n\n /** Tooltip shown while the password is hidden. */\n readonly kbqTooltipHidden = input<string | TemplateRef<any>>(undefined!);\n\n protected readonly hasError = computed(() => !!this.formField?.control().errorState());\n\n /** Form field password control. */\n private get control(): KbqPasswordToggleControl {\n const control = this.formField?.control();\n\n if (!isPasswordToggleControl(control)) {\n throw getKbqPasswordToggleMissingControlError();\n }\n\n return control;\n }\n\n /**\n * @docs-private\n */\n get hidden(): boolean {\n return this.control.elementType() === 'password';\n }\n\n /**\n * @docs-private\n */\n get iconClass(): string {\n return this.hidden ? 'kbq-eye_16' : 'kbq-eye-slash_16';\n }\n\n /**\n * @docs-private\n */\n get visibility(): 'hidden' | 'visible' {\n return this.visibilityState();\n }\n\n private readonly visibilityState = computed<'hidden' | 'visible'>(() =>\n this.control.disabled() ? 'hidden' : 'visible'\n );\n\n /**\n * Accessible name of the icon-only toggle, describing the action it performs.\n *\n * @docs-private\n */\n protected get accessibleName(): string {\n const { showPassword, hidePassword } = this.a11yLocaleConfiguration();\n\n return this.hidden ? showPassword : hidePassword;\n }\n\n constructor() {\n super();\n\n this.trigger = `${PopUpTriggers.Hover}`;\n\n const keydownTarget = this.formField?.elementRef.nativeElement;\n\n if (keydownTarget) {\n fromEvent<KeyboardEvent>(keydownTarget, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.onFormFieldKeyDown(event));\n }\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.nativeElement);\n }\n\n /**\n * @docs-private\n */\n toggle(event: Event): void {\n // Untracked, as the `content` setter: called from a consumer's `effect()`, the state read on the way — the\n // control's `disabled` and type, the tooltip's inputs — would make the effect run again on every toggle.\n untracked(() => {\n if (this.control.disabled()) return;\n\n this.hide();\n\n this.control.toggleType();\n\n this.updateData();\n\n event.preventDefault();\n });\n }\n\n /**\n * Toggles password visibility for the Alt+F8 shortcut.\n */\n private onFormFieldKeyDown(event: KeyboardEvent): void {\n if (event.altKey && event.keyCode === F8) {\n this.toggle(event);\n }\n }\n}\n","import { Directive } from '@angular/core';\n\n/** Element to be placed in front of the form field. */\n@Directive({\n selector: '[kbqPrefix]',\n host: {\n class: 'kbq-prefix'\n },\n exportAs: 'kbqPrefix'\n})\nexport class KbqPrefix {}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n Signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { PristineChangeEvent, TouchedChangeEvent } from '@angular/forms';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { filter } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport { KbqHint } from './hint';\n\n/** Password hint to be shown below the password form field control. */\n@Component({\n selector: 'kbq-reactive-password-hint',\n imports: [KbqIconModule],\n template: `\n <i [kbq-icon]=\"icon()\" [color]=\"color()\"></i>\n\n <span class=\"kbq-hint__text\">\n <ng-content />\n </span>\n `,\n styleUrls: [\n './hint.scss',\n './hint-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-reactive-password-hint'\n },\n exportAs: 'kbqReactivePasswordHint'\n})\nexport class KbqReactivePasswordHint extends KbqHint {\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n\n /** Whether the form field control has an error. */\n readonly hasError = input(false, { transform: booleanAttribute });\n\n /** Disables `color` for the hint text. */\n override readonly fillTextOff = input(true, { transform: booleanAttribute });\n\n /**\n * A password hint keeps its size under any control, so `compact` of the control does not apply to it.\n *\n * @docs-private\n */\n protected override readonly isCompact: Signal<boolean> = this.compact;\n\n /**\n * The form field hint icon.\n *\n * @docs-private\n */\n protected readonly icon = computed(() => (this.hasError() ? 'kbq-xmark-s_16' : 'kbq-check-s_16'));\n\n constructor() {\n super();\n\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n\n // `hasError` also drives `icon`, so the color has to follow it in the same pass, otherwise the icon and\n // its color disagree for a tick.\n effect(() => {\n this.hasError();\n\n this.updateColor();\n });\n\n // `touched` and `pristine` are not signals and can change on their own (`markAllAsTouched()` on submit,\n // `reset()` to the same value), so the color follows their events.\n afterNextRender(() => {\n this.formField\n ?.control()\n ?.ngControl?.control?.events.pipe(\n filter((event) => event instanceof TouchedChangeEvent || event instanceof PristineChangeEvent),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.updateColor());\n });\n }\n\n private updateColor(): void {\n this.color.set(this.makeColor());\n }\n\n private makeColor(): KbqComponentColors {\n const control = this.formField?.control();\n\n if (control?.ngControl?.untouched && control.ngControl.pristine) {\n return KbqComponentColors.ContrastFade;\n }\n\n return this.hasError() ? KbqComponentColors.Error : KbqComponentColors.Success;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n output,\n OutputEmitterRef,\n Signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { concatMap, fromEvent, interval, Subject, timer } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD } from './form-field';\n\n/**\n * Narrow structural contract for `KbqNumberInput`, duck-typed here to avoid a circular dependency between\n * `@koobiq/components/form-field` and `@koobiq/components/input`. It is not the form field control: that is\n * `KbqInput` on the same element.\n */\ntype KbqStepperControl = {\n readonly controlType: 'input-number';\n /** Read by the template, so it has to be backed by a signal for the stepper to follow it. */\n readonly disabled: boolean;\n /** Whether the field is read-only: the stepper stays visible but does not step. */\n readonly readonly: Signal<boolean>;\n /** A signal since the input review: `step` is an `input()` on `KbqNumberInput`. */\n readonly step: Signal<number>;\n stepUp: (step: number) => void;\n /** Decreases the value by `step`. */\n stepDown: (step: number) => void;\n};\n\n/**\n * Checks whether the given value structurally matches `KbqStepperControl`.\n */\nconst isStepperControl = (control: unknown): control is KbqStepperControl => {\n return (\n !!control &&\n typeof control === 'object' &&\n 'controlType' in control &&\n control.controlType === 'input-number' &&\n 'stepUp' in control &&\n typeof control.stepUp === 'function' &&\n 'stepDown' in control &&\n typeof control.stepDown === 'function'\n );\n};\n\nconst getKbqStepperToggleMissingControlError = (): Error => {\n return Error('You should use kbq-stepper with kbqNumberInput');\n};\n\n/**\n * Timeout duration when clicking the up/down arrow\n *\n * @internal\n */\nexport const KBQ_STEPPER_INITIAL_TIMEOUT = 300;\n\n/**\n * Interval delay when clicking the up/down arrow\n *\n * @internal\n */\nexport const KBQ_STEPPER_INTERVAL_DELAY = 75;\n\n/** Component which allow to increment or decrement number value. */\n@Component({\n selector: 'kbq-stepper',\n imports: [KbqIconModule],\n template: `\n <i\n aria-hidden=\"true\"\n class=\"kbq-stepper-step-up\"\n color=\"contrast-fade\"\n kbq-icon-button=\"kbq-chevron-up-s_16\"\n [tabindex]=\"-1\"\n [autoColor]=\"true\"\n [disabled]=\"inactive()\"\n (mousedown)=\"onStepUp($event)\"\n ></i>\n <i\n aria-hidden=\"true\"\n class=\"kbq-stepper-step-down\"\n color=\"contrast-fade\"\n kbq-icon-button=\"kbq-chevron-down-s_16\"\n [tabindex]=\"-1\"\n [autoColor]=\"true\"\n [disabled]=\"inactive()\"\n (mousedown)=\"onStepDown($event)\"\n ></i>\n `,\n styleUrls: ['stepper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-stepper'\n },\n exportAs: 'kbqStepper'\n})\nexport class KbqStepper {\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Emitted when the stepper is incremented. */\n readonly stepUp = output<void>();\n\n /** Emitted when the stepper is decremented. */\n readonly stepDown = output<void>();\n\n /** @docs-private */\n protected readonly mouseUp = new Subject<void>();\n\n /**\n * Timing observable simulating long press in native input-number.\n * - Value increases/decreases by step immediately.\n * - Brief pause (`300ms`, {@link KBQ_STEPPER_INITIAL_TIMEOUT})\n * - Numbers start running upward/downward with selected speed\n * (controlled by interval period, {@link KBQ_STEPPER_INTERVAL_DELAY})\n */\n private readonly longPress = timer(KBQ_STEPPER_INITIAL_TIMEOUT).pipe(\n concatMap(() => interval(KBQ_STEPPER_INTERVAL_DELAY)),\n takeUntilDestroyed(),\n takeUntil(this.mouseUp)\n );\n\n /**\n * Form field number control. Resolved once per control change instead of on every template read.\n *\n * @docs-private\n */\n protected readonly control = computed<KbqStepperControl>(() => {\n const control = this.formField?.control();\n // `formFieldControl` here is `KbqInput` (it owns the `KbqFormFieldControl` provider on\n // `<input kbqNumberInput>`), not the number-input itself: `stepUp`/`stepDown`/`step`\n // live on the sibling `KbqNumberInput` directive, reachable only via `KbqInput.numberInput`.\n const inputNumberControl =\n control?.controlType === 'input-number' && 'numberInput' in control ? control.numberInput : null;\n\n if (!isStepperControl(inputNumberControl)) {\n throw getKbqStepperToggleMissingControlError();\n }\n\n return inputNumberControl;\n });\n\n /**\n * Whether the steps are blocked. A read-only field keeps the stepper visible, as a disabled one does.\n *\n * @docs-private\n */\n protected readonly inactive = computed(() => this.control().disabled || this.control().readonly());\n\n constructor() {\n this.destroyRef.onDestroy(() => this.mouseUp.complete());\n }\n\n /** @docs-private */\n onStepUp(event: MouseEvent): void {\n this.handleStep(event, (control) => control.stepUp(control.step()), this.stepUp);\n }\n\n /** @docs-private */\n onStepDown(event: MouseEvent): void {\n this.handleStep(event, (control) => control.stepDown(control.step()), this.stepDown);\n }\n\n private handleStep(\n event: MouseEvent,\n step: (control: KbqStepperControl) => void,\n emitter: OutputEmitterRef<void>\n ): void {\n const control = this.control();\n\n if (this.inactive()) return;\n\n const performStep = () => {\n step(control);\n emitter.emit();\n };\n\n performStep();\n // handle case when cursor is out of viewport.\n fromEvent(this.document, 'mouseup')\n .pipe(take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.mouseUp.next());\n this.longPress.subscribe(performStep);\n event.preventDefault();\n }\n}\n","import { Directive } from '@angular/core';\n\n/** Element to be placed at the end of the form field. */\n@Directive({\n selector: '[kbqSuffix]',\n host: {\n class: 'kbq-suffix'\n },\n exportAs: 'kbqSuffix'\n})\nexport class KbqSuffix {}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n InjectionToken,\n input,\n model,\n OnDestroy,\n Provider,\n Signal,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\nimport { KBQ_CONNECTED_OVERLAY_ORIGIN, KBQ_FORM_FIELD_REF, KbqColorDirective } from '@koobiq/components/core';\nimport { kbqIconErrorStateContextFactoryProvider } from '@koobiq/components/icon';\nimport { KbqCleaner, kbqCleanerFactoryProvider } from './cleaner';\nimport { KbqError } from './error';\nimport { KbqFormFieldControl, kbqSetDescribedByIds } from './form-field-control';\nimport { KbqHint, kbqHintParentFactoryProvider } from './hint';\nimport { KbqLabel } from './label';\nimport { KbqPasswordToggle } from './password-toggle';\nimport { KbqPrefix } from './prefix';\nimport { KbqReactivePasswordHint } from './reactive-password-hint';\nimport { KbqStepper } from './stepper';\nimport { KbqSuffix } from './suffix';\n\n/** @internal */\nexport function getKbqFormFieldMissingControlError(): Error {\n return Error('kbq-form-field must contain a KbqFormFieldControl');\n}\n\n/**\n * Injection token used to access the owning `KbqFormField`.\n *\n * @docs-private\n */\nexport const KBQ_FORM_FIELD = new InjectionToken<KbqFormField>('KbqFormField');\n\n/**\n * Default options for the kbq-form-field that can be configured using the `KBQ_FORM_FIELD_DEFAULT_OPTIONS`\n * injection token.\n */\nexport type KbqFormFieldDefaultOptions = Partial<{\n /** Disables form field borders and shadows. */\n noBorders: boolean;\n /** Use when KbqFormField is in an overlay container. */\n inOverlay: boolean;\n /** Whether the form field is displayed horizontally. */\n horizontal: boolean;\n /** Additional CSS classes applied to the label element. */\n labelClass: string | string[] | Set<string>;\n /** Additional CSS classes applied to the content wrapper element. */\n contentClass: string | string[] | Set<string>;\n /** Whether the label of a required control ends with the `*` marker. */\n showRequiredMarker: boolean;\n}>;\n\n/**\n * Injection token that can be used to configure the default options for all kbq-form-field's.\n *\n * @docs-private\n */\nexport const KBQ_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<KbqFormFieldDefaultOptions>(\n 'KBQ_FORM_FIELD_DEFAULT_OPTIONS'\n);\n\n/** Utility provider for `KBQ_FORM_FIELD_DEFAULT_OPTIONS`. */\nexport const kbqFormFieldDefaultOptionsProvider = (options: KbqFormFieldDefaultOptions): Provider => ({\n provide: KBQ_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: options\n});\n\n/** Container for form controls that applies styling and behavior. */\n@Component({\n selector: 'kbq-form-field',\n imports: [NgTemplateOutlet],\n templateUrl: 'form-field.html',\n styleUrls: [\n 'form-field.scss',\n 'form-field-tokens.scss',\n // The controls below are directives, and directives can't declare styles. The form field is the only\n // component they are always rendered inside of, so it carries their styles on their behalf.\n // Keep every entry paired with the control that owns it; removing one silently unstyles that control.\n // KbqInput\n '../input/input.scss',\n '../input/input-tokens.scss',\n // KbqTimepicker\n '../timepicker/timepicker.scss',\n // KbqDatepickerInput\n '../datepicker/datepicker-input.scss',\n // KbqTextarea\n '../textarea/textarea.scss',\n // KbqTagInput\n '../tags/tag-input-tokens.scss'\n ],\n providers: [\n // Kept for consumers that cannot depend on the form-field entry point.\n { provide: KBQ_FORM_FIELD_REF, useExisting: KbqFormField },\n { provide: KBQ_FORM_FIELD, useExisting: KbqFormField },\n kbqCleanerFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return {\n get control() {\n return formField.control();\n },\n get keydownTarget() {\n return formField.elementRef.nativeElement;\n },\n clearByEscape: true\n };\n }),\n kbqIconErrorStateContextFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return {\n get errorState() {\n return formField.control().errorState;\n }\n };\n }),\n kbqHintParentFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return { compact: signal(true), disabled: computed(() => formField.disabled) };\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // Every component of this package renders unencapsulated, on purpose: the `kbq-form-field__*` and\n // `kbq-hint*` classes are a public contract that themes, the controls projected into the field and\n // consumer stylesheets all target. Renaming or nesting them is a breaking change.\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-form-field',\n\n '[class.kbq-form-field_invalid]': 'invalid',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-form-field_readonly]': 'readonly()',\n '[class.kbq-form-field_autofilled]': 'autofilled',\n '[class.kbq-form-field_no-borders]': 'noBorders()',\n '[class.kbq-form-field_in-overlay]': 'inOverlay()',\n '[class.kbq-form-field_horizontal]': 'horizontal()',\n\n '[class.ng-untouched]': 'shouldForward(\"untouched\")',\n '[class.ng-touched]': 'shouldForward(\"touched\")',\n '[class.ng-pristine]': 'shouldForward(\"pristine\")',\n '[class.ng-dirty]': 'shouldForward(\"dirty\")',\n '[class.ng-valid]': 'shouldForward(\"valid\")',\n '[class.ng-invalid]': 'shouldForward(\"invalid\")',\n '[class.ng-pending]': 'shouldForward(\"pending\")'\n },\n exportAs: 'kbqFormField'\n})\nexport class KbqFormField\n extends KbqColorDirective\n implements AfterContentInit, AfterViewInit, OnDestroy, AfterContentChecked\n{\n private readonly destroyRef = inject(DestroyRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly defaultOptions = inject(KBQ_FORM_FIELD_DEFAULT_OPTIONS, { optional: true });\n private readonly customOverlayOrigin = inject(KBQ_CONNECTED_OVERLAY_ORIGIN, { optional: true });\n\n /**\n * @docs-private\n */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Disables form field borders and shadows. */\n readonly noBorders = input(this.defaultOptions?.noBorders, { transform: booleanAttribute });\n\n /** Use when KbqFormField is in an overlay container. */\n readonly inOverlay = model(this.defaultOptions?.inOverlay);\n\n /** Whether the form field is displayed horizontally. */\n readonly horizontal = input(this.defaultOptions?.horizontal, { transform: booleanAttribute });\n\n /** Additional CSS classes applied to the label element. */\n readonly labelClass = input(this.defaultOptions?.labelClass);\n\n /** Additional CSS classes applied to the content wrapper element. */\n readonly contentClass = input(this.defaultOptions?.contentClass);\n\n /**\n * Whether the label of a required control ends with the `*` marker. A control is required by its `required`\n * state or by `Validators.required` on its form control.\n */\n readonly showRequiredMarker = input(!!this.defaultOptions?.showRequiredMarker, { transform: booleanAttribute });\n\n /**\n * The form field control.\n *\n * @docs-private\n */\n readonly control = contentChild.required(KbqFormFieldControl);\n\n /**\n * @docs-private\n */\n readonly stepper = contentChild(KbqStepper);\n\n /**\n * @docs-private\n */\n readonly cleaner = contentChild(KbqCleaner, { descendants: false });\n\n /**\n * @docs-private\n */\n readonly passwordToggle = contentChild(KbqPasswordToggle);\n\n /**\n * @docs-private\n */\n readonly hint = contentChildren(KbqHint);\n\n /**\n * @docs-private\n */\n readonly suffix = contentChildren(KbqSuffix);\n\n /**\n * @docs-private\n */\n readonly prefix = contentChildren(KbqPrefix);\n\n /**\n * @docs-private\n */\n readonly connectionContainerRef = viewChild.required<ElementRef>('connectionContainer');\n\n /** Host element of the control, used as the `aria-describedby` target. */\n private readonly controlElementRef: Signal<ElementRef<HTMLElement>> = contentChild.required(KbqFormFieldControl, {\n read: ElementRef\n });\n\n private readonly reactivePasswordHint = contentChildren(KbqReactivePasswordHint);\n private readonly error = contentChildren(KbqError);\n private readonly label = contentChild(KbqLabel);\n\n // One signal per host value. The host bindings of every form field in a view run in that view's reactive\n // consumer, where a signal read again by another binding costs a scan of everything the view has read.\n private readonly invalidState = computed(() => !!this.control()?.errorState());\n private readonly disabledState = computed(() => !!this.control()?.disabled());\n private readonly autofilledState = computed(() => !!this.control()?.autofilled?.());\n\n /** Whether the form field is invalid. */\n get invalid(): boolean {\n return this.invalidState();\n }\n\n /**\n * Whether the form field control has an reactive password hint.\n *\n * @docs-private\n */\n protected readonly hasReactivePasswordHint = computed(() => this.reactivePasswordHint().length > 0);\n\n /**\n * Whether the form-field contains kbq-error.\n *\n * @docs-private\n */\n protected readonly hasError = computed(() => this.error().length > 0);\n\n /**\n * Whether the form-field contains kbq-label.\n *\n * @docs-private\n */\n protected readonly hasLabel = computed(() => !!this.label());\n\n /**\n * Whether the bound form control has `Validators.required`. Re-read on every content check: the validators of a\n * control notify nothing a signal could follow.\n */\n private readonly requiredByValidator = signal(false);\n\n /**\n * Whether the label ends with the required marker.\n *\n * @docs-private\n */\n protected readonly hasRequiredMarker = computed(\n () => !!this.showRequiredMarker() && (this.control().required() || this.requiredByValidator())\n );\n\n /**\n * Id of the rendered label, or `null` when the form field has no label.\n *\n * `for` only associates a label with a native form control, so a control that is a custom element\n * (`kbq-select`, for one) has to point back at the label through `aria-labelledby` instead.\n */\n readonly labelId = computed(() => (this.hasLabel() ? `${this.control().id()}-label` : null));\n\n /**\n * Whether the control is a native labelable element, so that a `<label>` can associate with it.\n *\n * A custom control (`kbq-select`, for one) reports `isNativeLabelSupported: false`; the caption is then rendered\n * as a `<span>` instead of a `<label>`, because a label that neither has a `for` matching a labelable\n * element nor wraps one is invalid, and the control is named through `aria-labelledby` instead.\n */\n readonly isNativeLabelSupported = computed(() => this.control().isNativeLabelSupported !== false);\n\n /**\n * Whether the form-field contains kbq-hint.\n *\n * @docs-private\n */\n readonly hasHint = computed(() => this.hint().length > 0);\n\n /**\n * Whether the form-field contains kbqSuffix.\n *\n * @docs-private\n */\n readonly hasSuffix = computed(() => this.suffix().length > 0);\n\n /**\n * Whether the form-field contains kbqPrefix.\n *\n * @docs-private\n */\n readonly hasPrefix = computed(() => this.prefix().length > 0);\n\n /**\n * Whether the form-field contains kbq-cleaner.\n *\n * @docs-private\n */\n readonly hasCleaner = computed(() => !!this.cleaner());\n\n /**\n * Whether the form-field contains kbq-stepper.\n *\n * @docs-private\n */\n readonly hasStepper = computed(() => !!this.stepper());\n\n /**\n * Whether the form-field contains kbq-password-toggle.\n *\n * @docs-private\n */\n readonly hasPasswordToggle = computed(() => !!this.passwordToggle());\n\n /**\n * Current focus origin state.\n *\n * @docs-private\n */\n get focusOrigin(): FocusOrigin {\n return this._focusOrigin;\n }\n\n private _focusOrigin: FocusOrigin;\n\n /**\n * @docs-private\n */\n get hasFocus(): boolean {\n return !!this.control()?.focused();\n }\n\n /**\n * Whether the cleaner can be displayed: it requires a projected `kbq-cleaner`, an enabled control\n * that is not read-only and a value that is not empty.\n *\n * @docs-private\n */\n get canShowCleaner(): boolean {\n return !!this.cleaner()?.canShow;\n }\n\n /** Whether the form field is disabled. */\n get disabled(): boolean {\n return this.disabledState();\n }\n\n /** Whether the form field control is read-only. */\n readonly readonly = computed(() => !!this.control()?.readonly?.());\n\n /**\n * Whether the form field control's value was filled in by the browser. Controls that cannot be\n * autofilled do not implement `autofilled`, and report `false` here.\n *\n * Reflected as `kbq-form-field_autofilled` for application code to key on. The autofill styling\n * does not use it: CSS matches `:autofill` directly, in the same style pass the browser fills\n * the field, where this arrives a frame or two later. Keeping the paint on one source also means\n * a class left behind by a detached or re-attached control cannot tint a field the browser no\n * longer considers autofilled.\n */\n get autofilled(): boolean {\n return this.autofilledState();\n }\n\n /** Ids last written to the control's `aria-describedby`, to skip redundant DOM writes. */\n private appliedDescribedByIds: string = '';\n\n ngAfterContentInit(): void {\n this.validateControlChild();\n\n this.initializeControl();\n }\n\n ngAfterContentChecked(): void {\n this.validateControlChild();\n this.updateDescribedByIds();\n this.requiredByValidator.set(!!this.control().ngControl?.control?.hasValidator(Validators.required));\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n }\n\n ngOnDestroy(): void {\n this.stopFocusMonitor();\n }\n\n /** Focuses the control. */\n focus(options?: FocusOptions): void {\n this.control().focus(options);\n }\n\n /**\n * @docs-private\n */\n clearValue(event: Event): void {\n this.cleaner()?.clear(event);\n }\n\n /**\n * Handles a click on the control's container.\n *\n * @docs-private\n */\n onContainerClick(event: MouseEvent): void {\n const control = this.control();\n\n if (control?.onContainerClick) {\n control.onContainerClick(event);\n }\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return (\n this.customOverlayOrigin?.getConnectedOverlayOrigin() ?? this.connectionContainerRef() ?? this.elementRef\n );\n }\n\n /**\n * Determines whether a class from the NgControl should be forwarded to the host element.\n *\n * @docs-private\n */\n shouldForward(prop: keyof NgControl): boolean {\n // Untracked: the `ng-*` state is no signal, and the computeds above already refresh the host bindings when\n // the control is replaced.\n return !!untracked(this.control)?.ngControl?.[prop];\n }\n\n /**\n * Runs the focus monitor for the form field.\n *\n * @docs-private\n */\n runFocusMonitor = () => {\n this.focusMonitor\n .monitor(this.elementRef.nativeElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((origin) => (this._focusOrigin = origin));\n };\n\n /**\n * Stops the focus monitor for the form field.\n *\n * @docs-private\n */\n stopFocusMonitor(): void {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n /**\n * Throws an error if the form-field control is missing.\n *\n * @docs-private\n */\n protected validateControlChild() {\n let control: KbqFormFieldControl<unknown> | undefined;\n\n try {\n control = this.control();\n } catch {\n throw getKbqFormFieldMissingControlError();\n }\n\n if (!control) {\n throw getKbqFormFieldMissingControlError();\n }\n }\n\n /**\n * Links the hints and the error rendered by the form field to the control via `aria-describedby`,\n * so assistive technology announces them when the control gets focused.\n */\n private updateDescribedByIds(): void {\n const ids = [\n // The error is rendered only while the control is invalid, and `aria-describedby` must not\n // reference elements that are not in the DOM.\n ...(this.invalid ? this.error() : []),\n ...this.hint(),\n ...this.reactivePasswordHint()\n ].map((hint) => hint.id());\n const joinedIds = ids.join(' ');\n\n if (joinedIds === this.appliedDescribedByIds) {\n return;\n }\n\n this.appliedDescribedByIds = joinedIds;\n\n const control = this.control();\n\n if (control.setDescribedByIds) {\n control.setDescribedByIds(ids);\n } else {\n kbqSetDescribedByIds(this.controlElementRef().nativeElement, ids);\n }\n }\n\n /** Initializes the form field control. */\n private initializeControl(): void {\n const control = this.control();\n\n if (control.controlType) {\n this.elementRef.nativeElement.classList.add(`kbq-form-field-type-${control.controlType}`);\n }\n\n // The `ng-*` classes forwarded from the form control are not signals.\n control.ngControl?.valueChanges\n ?.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n\n/**\n * Trims the value of `kbqInput` and `kbqTextarea` before it reaches the model.\n *\n * The value displayed in the control is left untouched, so trimming never fights the user while they\n * are typing. Add the `no-trim` attribute to the control to keep the value as is. `kbqInputPassword`\n * is not matched by this directive, so passwords keep their leading and trailing whitespace.\n *\n * @docs-private\n */\n@Directive({\n selector: '[kbqInput], [kbqTextarea]',\n host: { class: 'kbq-trim' },\n exportAs: 'KbqTrim'\n})\nexport class KbqTrim {\n private readonly noTrim = coerceBooleanProperty(inject(new HostAttributeToken('no-trim'), { optional: true }));\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.noTrim || !this.ngControl) {\n return;\n }\n\n // Wrapped through the declared accessors rather than through `NgControl.valueAccessor`, which\n // Angular 22 leaves null until the form directive's first `ngOnChanges` — after this\n // constructor. Resolved here rather than in a field initializer so that an element without a\n // form control neither patches nor eagerly constructs its accessors. An accessor the form\n // does not select is patched too, but Angular never registers on it. An accessor installed by\n // assigning `NgControl.valueAccessor` directly is not covered.\n const valueAccessors = inject(NG_VALUE_ACCESSOR, { optional: true, self: true });\n\n for (const valueAccessor of valueAccessors ?? []) {\n const original = valueAccessor.registerOnChange.bind(valueAccessor);\n\n valueAccessor.registerOnChange = (fn: (value: unknown) => void) =>\n original((value: unknown) => fn(this.trim(value)));\n }\n }\n\n /**\n * Trims the value when it is a string, other values are passed through as is.\n *\n * @docs-private\n */\n trim(value: unknown): unknown {\n if (this.noTrim) {\n return value;\n }\n\n return typeof value === 'string' ? value.trim() : value;\n }\n}\n","@if (hasLabel()) {\n @if (isNativeLabelSupported()) {\n <label\n class=\"kbq-form-field__label\"\n [attr.id]=\"labelId()\"\n [class]=\"labelClass()\"\n [class.kbq-form-field__label_required]=\"hasRequiredMarker()\"\n [attr.for]=\"control().id()\"\n >\n <ng-container [ngTemplateOutlet]=\"labelContent\" />\n </label>\n } @else {\n <span\n class=\"kbq-form-field__label\"\n [attr.id]=\"labelId()\"\n [class]=\"labelClass()\"\n [class.kbq-form-field__label_required]=\"hasRequiredMarker()\"\n >\n <ng-container [ngTemplateOutlet]=\"labelContent\" />\n </span>\n }\n}\n\n<ng-template #labelContent><ng-content select=\"kbq-label\" /></ng-template>\n\n<div class=\"kbq-form-field__content\" [class]=\"contentClass()\">\n <div #connectionContainer class=\"kbq-form-field__container\" (click)=\"onContainerClick($event)\">\n @if (hasPrefix()) {\n <div class=\"kbq-form-field__prefix\">\n <ng-content select=\"[kbqPrefix]\" />\n </div>\n }\n\n <div class=\"kbq-form-field__infix\">\n <ng-content />\n </div>\n\n @if (hasSuffix() || hasCleaner() || hasPasswordToggle() || hasStepper()) {\n <div class=\"kbq-form-field__suffix\">\n @if (canShowCleaner) {\n <div class=\"kbq-form-field__cleaner\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <ng-content select=\"kbq-password-toggle, kbq-stepper, [kbqSuffix]\" />\n </div>\n }\n </div>\n\n @if (hasHint() || hasError() || hasReactivePasswordHint()) {\n <div class=\"kbq-form-field__hint\">\n @if (invalid) {\n <ng-content select=\"kbq-error\" />\n }\n\n <ng-content select=\"kbq-hint, kbq-reactive-password-hint\" />\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqCleaner } from './cleaner';\nimport { KbqError } from './error';\nimport { KbqFieldset, KbqFieldsetItem, KbqLegend } from './fieldset';\nimport { KbqFormField, KbqTrim } from './form-field';\nimport { KbqHint } from './hint';\nimport { KbqLabel } from './label';\nimport { KbqPasswordToggle } from './password-toggle';\nimport { KbqPrefix } from './prefix';\nimport { KbqReactivePasswordHint } from './reactive-password-hint';\nimport { KbqStepper } from './stepper';\nimport { KbqSuffix } from './suffix';\n\nconst COMPONENTS = [\n KbqCleaner,\n KbqFormField,\n KbqPrefix,\n KbqSuffix,\n KbqPasswordToggle,\n KbqStepper,\n KbqLabel,\n KbqHint,\n KbqError,\n KbqReactivePasswordHint,\n KbqLegend,\n KbqFieldset,\n KbqFieldsetItem,\n\n // Legacy components\n KbqTrim\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqFormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { FocusMonitor } from '@angular/cdk/a11y';
|
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { InjectionToken, inject, SecurityContext, Injectable, DestroyRef, Renderer2, input, booleanAttribute, computed, numberAttribute, signal, ViewEncapsulation, ChangeDetectionStrategy, Component, effect, isDevMode, NgModule } from '@angular/core';
|
|
4
4
|
import { KbqColorDirective, KbqComponentColors } from '@koobiq/components/core';
|
|
5
|
-
import { defer, of,
|
|
5
|
+
import { throwError, defer, of, Subscription } from 'rxjs';
|
|
6
6
|
import { DOCUMENT } from '@angular/common';
|
|
7
7
|
import { HttpClient } from '@angular/common/http';
|
|
8
8
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
@@ -61,6 +61,18 @@ function kbqIconsDictProvider(dict) {
|
|
|
61
61
|
function iconKey(namespace, name) {
|
|
62
62
|
return namespace ? `${namespace}:${name}` : name;
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Splits "namespace:name" at the first colon; a name without one stays in the given namespace.
|
|
66
|
+
*
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
function parseIconName(name, namespace = '') {
|
|
70
|
+
const colonIndex = name.indexOf(':');
|
|
71
|
+
return colonIndex === -1 ? [namespace, name] : [name.slice(0, colonIndex), name.slice(colonIndex + 1)];
|
|
72
|
+
}
|
|
73
|
+
function isSvgMarkup(text) {
|
|
74
|
+
return text.trimStart().startsWith('<');
|
|
75
|
+
}
|
|
64
76
|
function cloneSvg(svg) {
|
|
65
77
|
return svg.cloneNode(true);
|
|
66
78
|
}
|
|
@@ -126,18 +138,25 @@ class KbqIconRegistry {
|
|
|
126
138
|
* Accepts "namespace:name" syntax.
|
|
127
139
|
*/
|
|
128
140
|
getNamedSvgIcon(name, namespace = '') {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
141
|
+
const icon = this.findSvgIcon(name, namespace);
|
|
142
|
+
if (icon)
|
|
143
|
+
return icon;
|
|
144
|
+
const key = iconKey(...parseIconName(name, namespace));
|
|
145
|
+
return throwError(() => Error(`KbqIconRegistry: no icon registered for "${key}".`));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* `getNamedSvgIcon` without the error for a miss: `null` when nothing registered can resolve the name. Every font
|
|
149
|
+
* icon is looked up, and an error per miss would cost a stack trace each.
|
|
150
|
+
*
|
|
151
|
+
* @docs-private
|
|
152
|
+
*/
|
|
153
|
+
findSvgIcon(name, namespace = '') {
|
|
154
|
+
if (isSvgMarkup(name)) {
|
|
132
155
|
// `defer` so that unparsable markup arrives as an error notification: every failure of this
|
|
133
156
|
// class has to reach the caller through the same channel.
|
|
134
|
-
return defer(() => of(this.svgElementFromText(this.sanitizer.sanitize(SecurityContext.HTML,
|
|
135
|
-
}
|
|
136
|
-
const colonIndex = name.indexOf(':');
|
|
137
|
-
if (colonIndex !== -1) {
|
|
138
|
-
resolvedNs = name.slice(0, colonIndex);
|
|
139
|
-
resolvedName = name.slice(colonIndex + 1);
|
|
157
|
+
return defer(() => of(this.svgElementFromText(this.sanitizer.sanitize(SecurityContext.HTML, name) ?? '')));
|
|
140
158
|
}
|
|
159
|
+
const [resolvedNs, resolvedName] = parseIconName(name, namespace);
|
|
141
160
|
const key = iconKey(resolvedNs, resolvedName);
|
|
142
161
|
const iconConfig = this.iconConfigs.get(key);
|
|
143
162
|
if (iconConfig) {
|
|
@@ -153,7 +172,7 @@ class KbqIconRegistry {
|
|
|
153
172
|
svgElement: null,
|
|
154
173
|
options: undefined
|
|
155
174
|
};
|
|
156
|
-
if (result
|
|
175
|
+
if (isSvgMarkup(result)) {
|
|
157
176
|
const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, result) ?? '';
|
|
158
177
|
config.svgText = this.sanitizer.bypassSecurityTrustHtml(sanitized);
|
|
159
178
|
}
|
|
@@ -167,7 +186,7 @@ class KbqIconRegistry {
|
|
|
167
186
|
if (sets?.length) {
|
|
168
187
|
return this.loadIconFromSets(resolvedName, sets);
|
|
169
188
|
}
|
|
170
|
-
return
|
|
189
|
+
return null;
|
|
171
190
|
}
|
|
172
191
|
cacheIcon(namespace, name, config) {
|
|
173
192
|
this.iconConfigs.set(iconKey(namespace, name), config);
|
|
@@ -389,7 +408,7 @@ class KbqIcon extends KbqColorDirective {
|
|
|
389
408
|
* `color`: the host bindings of every icon in a view run in that view's reactive consumer, which finds a
|
|
390
409
|
* signal read a second time by scanning all it has read so far, O(N²) per check across N icons.
|
|
391
410
|
*
|
|
392
|
-
* @
|
|
411
|
+
* @docs-private
|
|
393
412
|
*/
|
|
394
413
|
this.colorIsError = computed(() => this.color() === KbqComponentColors.Error, ...(ngDevMode ? [{ debugName: "colorIsError" }] : /* istanbul ignore next */ []));
|
|
395
414
|
/** @docs-private */
|
|
@@ -476,9 +495,12 @@ class KbqIcon extends KbqColorDirective {
|
|
|
476
495
|
return;
|
|
477
496
|
}
|
|
478
497
|
const registry = this.registry;
|
|
498
|
+
// A registry that replaces the lookup, such as a subclass overriding `getNamedSvgIcon` or a test double, is
|
|
499
|
+
// asked through it: only the library's own lookup can report a miss without building an error.
|
|
500
|
+
const ownLookup = registry.getNamedSvgIcon === KbqIconRegistry.prototype.getNamedSvgIcon;
|
|
479
501
|
// Deferred so that a resolver or a literal that throws falls back to the font class as well, and the
|
|
480
502
|
// next name is resolved again.
|
|
481
|
-
this.svgIconSubscription = defer(() => registry.getNamedSvgIcon(name)).subscribe({
|
|
503
|
+
this.svgIconSubscription = defer(() => (ownLookup ? registry.findSvgIcon(name) : registry.getNamedSvgIcon(name)) ?? of(null)).subscribe({
|
|
482
504
|
next: (svg) => this.renderSvgIcon(svg),
|
|
483
505
|
error: () => this.renderSvgIcon(null)
|
|
484
506
|
});
|
|
@@ -523,8 +545,7 @@ class KbqIcon extends KbqColorDirective {
|
|
|
523
545
|
return this.iconSize() ?? this.parseIconSize();
|
|
524
546
|
}
|
|
525
547
|
parseIconSize() {
|
|
526
|
-
const
|
|
527
|
-
const baseName = iconName?.includes(':') ? iconName.split(':')[1] : iconName;
|
|
548
|
+
const baseName = this.iconName && parseIconName(this.iconName)[1];
|
|
528
549
|
const size = parseInt(baseName?.split('_').pop() ?? '');
|
|
529
550
|
return Number.isNaN(size) ? undefined : size;
|
|
530
551
|
}
|
|
@@ -752,5 +773,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImpo
|
|
|
752
773
|
* Generated bundle index. Do not edit.
|
|
753
774
|
*/
|
|
754
775
|
|
|
755
|
-
export { KBQ_ICONS_CONFIG, KBQ_ICON_ERROR_STATE_CONTEXT, KBQ_ICON_RESOLVER, KbqIcon, KbqIconButton, KbqIconItem, KbqIconModule, KbqIconRegistry, kbqIconErrorStateContextFactoryProvider, kbqIconsDictProvider, kbqIconsProvider, kbqIconsResolverProvider };
|
|
776
|
+
export { KBQ_ICONS_CONFIG, KBQ_ICON_ERROR_STATE_CONTEXT, KBQ_ICON_RESOLVER, KbqIcon, KbqIconButton, KbqIconItem, KbqIconModule, KbqIconRegistry, kbqIconErrorStateContextFactoryProvider, kbqIconsDictProvider, kbqIconsProvider, kbqIconsResolverProvider, parseIconName };
|
|
756
777
|
//# sourceMappingURL=koobiq-components-icon.mjs.map
|