@koobiq/components 17.0.0-rc.9 → 17.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/alert/_alert-theme.scss +0 -1
- package/alert/alert.component.d.ts +3 -1
- package/alert/alert.component.scss +14 -14
- package/alert/public-api.d.ts +1 -1
- package/autocomplete/_autocomplete-theme.scss +0 -1
- package/autocomplete/autocomplete.scss +3 -6
- package/autocomplete/public-api.d.ts +2 -2
- package/badge/_badge-theme.scss +1 -2
- package/badge/badge.component.scss +0 -1
- package/badge/public-api.d.ts +1 -1
- package/button/_button-base.scss +0 -1
- package/button/_button-theme.scss +5 -3
- package/button/button.component.d.ts +2 -2
- package/button/button.scss +0 -1
- package/button/public-api.d.ts +1 -1
- package/button-toggle/_button-toggle-theme.scss +2 -3
- package/button-toggle/button-toggle.scss +2 -9
- package/button-toggle/public-api.d.ts +1 -1
- package/card/_card-theme.scss +0 -1
- package/card/card.component.d.ts +1 -1
- package/card/card.component.scss +1 -2
- package/card/public-api.d.ts +1 -1
- package/checkbox/_checkbox-theme.scss +10 -11
- package/checkbox/checkbox.scss +13 -19
- package/code-block/README.md +17 -14
- package/code-block/_code-block-theme.scss +23 -16
- package/code-block/actionbar.component.d.ts +2 -1
- package/code-block/actionbar.component.scss +5 -13
- package/code-block/code-block.component.d.ts +4 -3
- package/code-block/code-block.scss +8 -14
- package/code-block/public-api.d.ts +1 -1
- package/core/animation/index.d.ts +1 -1
- package/core/common-behaviors/index.d.ts +3 -3
- package/core/datetime/index.d.ts +1 -1
- package/core/formatters/index.d.ts +1 -1
- package/core/forms/_forms-theme.scss +0 -1
- package/core/forms/_forms.scss +0 -1
- package/core/forms/index.d.ts +1 -1
- package/core/locales/index.d.ts +1 -1
- package/core/option/_optgroup-theme.scss +0 -1
- package/core/option/_option-action-theme.scss +0 -1
- package/core/option/_option-theme.scss +0 -1
- package/core/option/action.scss +4 -2
- package/core/option/index.d.ts +2 -2
- package/core/option/optgroup.scss +2 -3
- package/core/option/option.scss +0 -1
- package/core/pop-up/_pop-up.scss +0 -1
- package/core/pop-up/pop-up-trigger.d.ts +3 -3
- package/core/public-api.d.ts +3 -3
- package/core/select/constants.d.ts +1 -1
- package/core/select/index.d.ts +3 -3
- package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +0 -2
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +0 -1
- package/core/services/theme.service.d.ts +3 -2
- package/core/styles/_core.scss +0 -1
- package/core/styles/_koobiq-theme.scss +5 -3
- package/core/styles/common/_animation.scss +11 -10
- package/core/styles/common/_button.scss +0 -2
- package/core/styles/common/_clearfix.scss +1 -1
- package/core/styles/common/_groups.scss +0 -4
- package/core/styles/common/_list.scss +23 -61
- package/core/styles/common/_overlay.scss +4 -3
- package/core/styles/common/_popup.scss +0 -1
- package/core/styles/common/_rtl.scss +4 -4
- package/core/styles/common/_select.scss +37 -26
- package/core/styles/common/_tokens.scss +0 -2
- package/core/styles/functions/_number.scss +14 -19
- package/core/styles/functions/_string.scss +18 -19
- package/core/styles/functions/_timing.scss +24 -24
- package/core/styles/theming/_components-theming.scss +1120 -1208
- package/core/styles/theming/_scrollbar-theme.scss +8 -5
- package/core/styles/theming/_theming.scss +22 -20
- package/core/styles/typography/_typography-utils.scss +9 -3
- package/core/styles/typography/_typography.scss +114 -94
- package/core/styles/visual/_body.scss +0 -2
- package/core/styles/visual/_layout.scss +30 -22
- package/core/utils/data-size/index.d.ts +1 -1
- package/core/utils/public-api.d.ts +1 -1
- package/datepicker/_datepicker-theme.scss +21 -8
- package/datepicker/calendar-body.scss +0 -3
- package/datepicker/calendar-header.scss +0 -1
- package/datepicker/calendar.scss +1 -2
- package/datepicker/datepicker-content.scss +1 -3
- package/datepicker/datepicker-input.directive.d.ts +1 -0
- package/datepicker/datepicker-input.scss +0 -1
- package/datepicker/datepicker-toggle.scss +0 -1
- package/datepicker/datepicker.component.d.ts +2 -2
- package/datepicker/public-api.d.ts +4 -4
- package/divider/_divider-theme.scss +0 -1
- package/divider/divider.scss +0 -1
- package/dl/_dl-theme.scss +0 -2
- package/dl/dl.scss +0 -1
- package/dl/public-api.d.ts +1 -1
- package/dropdown/_dropdown-theme.scss +4 -2
- package/dropdown/dropdown-content.directive.d.ts +1 -1
- package/dropdown/dropdown-item.component.d.ts +1 -1
- package/dropdown/dropdown-item.scss +9 -7
- package/dropdown/dropdown.component.d.ts +1 -1
- package/dropdown/dropdown.scss +0 -1
- package/dropdown/public-api.d.ts +5 -5
- package/ellipsis-center/ellipsis-center.directive.d.ts +1 -1
- package/empty-state/README.md +0 -0
- package/empty-state/_empty-state-theme.scss +56 -0
- package/empty-state/empty-state.component.d.ts +31 -0
- package/empty-state/empty-state.module.d.ts +10 -0
- package/empty-state/empty-state.scss +81 -0
- package/empty-state/index.d.ts +1 -0
- package/empty-state/public-api.d.ts +2 -0
- package/esm2022/alert/alert.component.mjs +7 -3
- package/esm2022/alert/alert.module.mjs +1 -1
- package/esm2022/alert/public-api.mjs +2 -2
- package/esm2022/autocomplete/autocomplete-origin.directive.mjs +1 -1
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +25 -42
- package/esm2022/autocomplete/autocomplete.component.mjs +14 -9
- package/esm2022/autocomplete/autocomplete.module.mjs +3 -3
- package/esm2022/autocomplete/public-api.mjs +3 -3
- package/esm2022/badge/badge.component.mjs +8 -6
- package/esm2022/badge/badge.module.mjs +1 -1
- package/esm2022/badge/public-api.mjs +2 -2
- package/esm2022/button/button.component.mjs +12 -9
- package/esm2022/button/button.module.mjs +1 -1
- package/esm2022/button/public-api.mjs +2 -2
- package/esm2022/button-toggle/button-toggle.component.mjs +26 -20
- package/esm2022/button-toggle/button-toggle.module.mjs +1 -1
- package/esm2022/button-toggle/public-api.mjs +2 -2
- package/esm2022/card/card.component.mjs +4 -5
- package/esm2022/card/card.module.mjs +1 -1
- package/esm2022/card/public-api.mjs +2 -2
- package/esm2022/checkbox/checkbox-config.mjs +1 -1
- package/esm2022/checkbox/checkbox-module.mjs +1 -1
- package/esm2022/checkbox/checkbox-required-validator.mjs +1 -1
- package/esm2022/checkbox/checkbox.mjs +6 -8
- package/esm2022/checkbox/public-api.mjs +1 -1
- package/esm2022/code-block/actionbar.component.mjs +6 -6
- package/esm2022/code-block/code-block.component.mjs +20 -19
- package/esm2022/code-block/code-block.module.mjs +9 -5
- package/esm2022/code-block/public-api.mjs +2 -2
- package/esm2022/core/animation/fade-animations.mjs +1 -1
- package/esm2022/core/animation/index.mjs +2 -2
- package/esm2022/core/animation/select-animations.mjs +2 -2
- package/esm2022/core/common-behaviors/color.mjs +4 -2
- package/esm2022/core/common-behaviors/common-module.mjs +2 -5
- package/esm2022/core/common-behaviors/constructor.mjs +1 -1
- package/esm2022/core/common-behaviors/disabled.mjs +2 -2
- package/esm2022/core/common-behaviors/error-state.mjs +1 -1
- package/esm2022/core/common-behaviors/index.mjs +4 -4
- package/esm2022/core/common-behaviors/tabindex.mjs +1 -1
- package/esm2022/core/datetime/date-adapter.mjs +1 -2
- package/esm2022/core/datetime/date-formats.mjs +1 -1
- package/esm2022/core/datetime/index.mjs +2 -2
- package/esm2022/core/error/error-options.mjs +1 -1
- package/esm2022/core/form-field/form-field-ref.mjs +1 -1
- package/esm2022/core/formatters/date/formatter.mjs +1 -1
- package/esm2022/core/formatters/date/formatter.pipe.mjs +1 -1
- package/esm2022/core/formatters/index.mjs +2 -2
- package/esm2022/core/formatters/number/formatter.mjs +19 -24
- package/esm2022/core/forms/forms-module.mjs +1 -1
- package/esm2022/core/forms/forms.directive.mjs +1 -1
- package/esm2022/core/forms/index.mjs +2 -2
- package/esm2022/core/highlight/highlight.pipe.mjs +1 -1
- package/esm2022/core/highlight/index.mjs +1 -1
- package/esm2022/core/label/label-options.mjs +1 -1
- package/esm2022/core/line/line.mjs +2 -2
- package/esm2022/core/locales/en-US.mjs +1 -1
- package/esm2022/core/locales/es-LA.mjs +1 -1
- package/esm2022/core/locales/fa-IR.mjs +1 -1
- package/esm2022/core/locales/formatters.mjs +1 -3
- package/esm2022/core/locales/index.mjs +2 -2
- package/esm2022/core/locales/locale-service.mjs +8 -5
- package/esm2022/core/locales/locale-service.module.mjs +1 -1
- package/esm2022/core/locales/pt-BR.mjs +1 -1
- package/esm2022/core/locales/ru-RU.mjs +3 -3
- package/esm2022/core/locales/zh-CN.mjs +1 -1
- package/esm2022/core/option/action.mjs +22 -14
- package/esm2022/core/option/index.mjs +3 -3
- package/esm2022/core/option/optgroup.mjs +4 -5
- package/esm2022/core/option/option-module.mjs +1 -1
- package/esm2022/core/option/option.mjs +13 -10
- package/esm2022/core/overlay/overlay-position-map.mjs +1 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +14 -24
- package/esm2022/core/pop-up/pop-up.mjs +1 -2
- package/esm2022/core/public-api.mjs +4 -4
- package/esm2022/core/select/common.mjs +2 -5
- package/esm2022/core/select/constants.mjs +1 -2
- package/esm2022/core/select/index.mjs +4 -4
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +1 -1
- package/esm2022/core/services/measure-scrollbar.service.mjs +1 -2
- package/esm2022/core/services/theme.service.mjs +5 -4
- package/esm2022/core/title/title-text-ref.mjs +1 -1
- package/esm2022/core/utils/data-size/config.mjs +1 -1
- package/esm2022/core/utils/data-size/data-size.pipe.mjs +2 -3
- package/esm2022/core/utils/data-size/index.mjs +2 -2
- package/esm2022/core/utils/data-size/size.mjs +3 -6
- package/esm2022/core/utils/public-api.mjs +2 -2
- package/esm2022/core/utils/utils.mjs +4 -2
- package/esm2022/core/validation/validation.mjs +4 -2
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-body.component.mjs +3 -5
- package/esm2022/datepicker/calendar-header.component.mjs +8 -8
- package/esm2022/datepicker/calendar.component.mjs +6 -6
- package/esm2022/datepicker/datepicker-animations.mjs +1 -1
- package/esm2022/datepicker/datepicker-errors.mjs +1 -1
- package/esm2022/datepicker/datepicker-input.directive.mjs +47 -49
- package/esm2022/datepicker/datepicker-intl.mjs +1 -1
- package/esm2022/datepicker/datepicker-module.mjs +2 -2
- package/esm2022/datepicker/datepicker-toggle.component.mjs +11 -10
- package/esm2022/datepicker/datepicker.component.mjs +15 -18
- package/esm2022/datepicker/month-view.component.mjs +14 -14
- package/esm2022/datepicker/public-api.mjs +5 -5
- package/esm2022/divider/divider.component.mjs +1 -1
- package/esm2022/divider/divider.module.mjs +1 -1
- package/esm2022/dl/dl.component.mjs +7 -7
- package/esm2022/dl/dl.module.mjs +2 -2
- package/esm2022/dl/public-api.mjs +2 -2
- package/esm2022/dropdown/dropdown-animations.mjs +2 -2
- package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
- package/esm2022/dropdown/dropdown-item.component.mjs +5 -8
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +24 -33
- package/esm2022/dropdown/dropdown.component.mjs +10 -19
- package/esm2022/dropdown/dropdown.module.mjs +1 -1
- package/esm2022/dropdown/dropdown.types.mjs +1 -2
- package/esm2022/dropdown/public-api.mjs +6 -6
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +6 -5
- package/esm2022/empty-state/empty-state.component.mjs +104 -0
- package/esm2022/empty-state/empty-state.module.mjs +50 -0
- package/esm2022/empty-state/index.mjs +2 -0
- package/esm2022/empty-state/koobiq-components-empty-state.mjs +5 -0
- package/esm2022/empty-state/public-api.mjs +3 -0
- package/esm2022/file-upload/file-drop.mjs +3 -2
- package/esm2022/file-upload/file-upload.mjs +1 -1
- package/esm2022/file-upload/file-upload.module.mjs +2 -2
- package/esm2022/file-upload/index.mjs +1 -1
- package/esm2022/file-upload/multiple-file-upload.component.mjs +16 -14
- package/esm2022/file-upload/public-api.mjs +2 -2
- package/esm2022/file-upload/single-file-upload.component.mjs +14 -12
- package/esm2022/form-field/cleaner.mjs +13 -3
- package/esm2022/form-field/form-field-control.mjs +1 -2
- package/esm2022/form-field/form-field-errors.mjs +1 -1
- package/esm2022/form-field/form-field.mjs +8 -15
- package/esm2022/form-field/form-field.module.mjs +1 -1
- package/esm2022/form-field/hint.mjs +6 -6
- package/esm2022/form-field/password-hint.mjs +15 -15
- package/esm2022/form-field/password-toggle.mjs +4 -7
- package/esm2022/form-field/prefix.mjs +1 -1
- package/esm2022/form-field/public-api.mjs +4 -4
- package/esm2022/form-field/stepper.mjs +33 -29
- package/esm2022/form-field/suffix.mjs +1 -1
- package/esm2022/form-field/validate.directive.mjs +6 -7
- package/esm2022/icon/icon-button.component.mjs +4 -4
- package/esm2022/icon/icon-item.component.mjs +3 -3
- package/esm2022/icon/icon.component.mjs +5 -6
- package/esm2022/icon/icon.module.mjs +1 -1
- package/esm2022/icon/public-api.mjs +3 -3
- package/esm2022/input/input-number-validators.mjs +1 -1
- package/esm2022/input/input-number.mjs +29 -41
- package/esm2022/input/input-password.mjs +13 -8
- package/esm2022/input/input-value-accessor.mjs +1 -1
- package/esm2022/input/input.mjs +13 -10
- package/esm2022/input/input.module.mjs +1 -1
- package/esm2022/input/public-api.mjs +3 -3
- package/esm2022/link/link.component.mjs +2 -2
- package/esm2022/link/link.module.mjs +1 -1
- package/esm2022/link/public-api.mjs +2 -2
- package/esm2022/list/list-selection.component.mjs +36 -41
- package/esm2022/list/list.component.mjs +5 -6
- package/esm2022/list/list.module.mjs +2 -2
- package/esm2022/list/public-api.mjs +3 -3
- package/esm2022/loader-overlay/loader-overlay.component.mjs +3 -3
- package/esm2022/loader-overlay/loader-overlay.module.mjs +1 -1
- package/esm2022/loader-overlay/public-api.mjs +2 -2
- package/esm2022/markdown/markdown.component.mjs +20 -6
- package/esm2022/markdown/markdown.module.mjs +1 -1
- package/esm2022/markdown/markdown.service.mjs +1 -1
- package/esm2022/modal/css-unit.pipe.mjs +1 -1
- package/esm2022/modal/modal-control.service.mjs +6 -2
- package/esm2022/modal/modal-ref.class.mjs +1 -2
- package/esm2022/modal/modal-util.mjs +1 -1
- package/esm2022/modal/modal.component.mjs +60 -33
- package/esm2022/modal/modal.directive.mjs +27 -11
- package/esm2022/modal/modal.module.mjs +2 -2
- package/esm2022/modal/modal.service.mjs +3 -6
- package/esm2022/modal/modal.type.mjs +1 -1
- package/esm2022/modal/public-api.mjs +3 -3
- package/esm2022/navbar/index.mjs +1 -1
- package/esm2022/navbar/navbar-item.component.mjs +41 -33
- package/esm2022/navbar/navbar.component.mjs +19 -29
- package/esm2022/navbar/navbar.module.mjs +2 -2
- package/esm2022/navbar/public-api.mjs +3 -3
- package/esm2022/navbar/vertical-navbar.component.mjs +21 -23
- package/esm2022/popover/popover-animations.mjs +1 -1
- package/esm2022/popover/popover-confirm.component.mjs +3 -3
- package/esm2022/popover/popover.component.mjs +5 -5
- package/esm2022/popover/popover.module.mjs +1 -1
- package/esm2022/popover/public-api.mjs +3 -3
- package/esm2022/progress-bar/progress-bar.component.mjs +4 -4
- package/esm2022/progress-bar/progress-bar.module.mjs +2 -2
- package/esm2022/progress-bar/public-api.mjs +2 -2
- package/esm2022/progress-spinner/progress-spinner.component.mjs +4 -4
- package/esm2022/progress-spinner/progress-spinner.module.mjs +1 -1
- package/esm2022/progress-spinner/public-api.mjs +2 -2
- package/esm2022/radio/public-api.mjs +2 -2
- package/esm2022/radio/radio.component.mjs +9 -14
- package/esm2022/radio/radio.module.mjs +1 -1
- package/esm2022/risk-level/public-api.mjs +2 -2
- package/esm2022/risk-level/risk-level.component.mjs +3 -3
- package/esm2022/risk-level/risk-level.module.mjs +1 -1
- package/esm2022/scrollbar/public-api.mjs +2 -2
- package/esm2022/scrollbar/scrollbar.component.mjs +19 -21
- package/esm2022/scrollbar/scrollbar.directive.mjs +4 -5
- package/esm2022/scrollbar/scrollbar.module.mjs +2 -2
- package/esm2022/scrollbar/scrollbar.types.mjs +3 -2
- package/esm2022/select/public-api.mjs +3 -3
- package/esm2022/select/select-option.directive.mjs +8 -5
- package/esm2022/select/select.component.mjs +45 -71
- package/esm2022/select/select.module.mjs +1 -1
- package/esm2022/sidebar/public-api.mjs +2 -2
- package/esm2022/sidebar/sidebar-animations.mjs +1 -1
- package/esm2022/sidebar/sidebar.component.mjs +5 -7
- package/esm2022/sidebar/sidebar.module.mjs +1 -1
- package/esm2022/sidepanel/public-api.mjs +4 -4
- package/esm2022/sidepanel/sidepanel-animations.mjs +7 -4
- package/esm2022/sidepanel/sidepanel-config.mjs +1 -1
- package/esm2022/sidepanel/sidepanel-container.component.mjs +4 -4
- package/esm2022/sidepanel/sidepanel-directives.mjs +33 -20
- package/esm2022/sidepanel/sidepanel-ref.mjs +10 -5
- package/esm2022/sidepanel/sidepanel.module.mjs +1 -1
- package/esm2022/sidepanel/sidepanel.service.mjs +11 -15
- package/esm2022/splitter/public-api.mjs +2 -2
- package/esm2022/splitter/splitter.component.mjs +13 -24
- package/esm2022/splitter/splitter.module.mjs +1 -1
- package/esm2022/table/public-api.mjs +2 -2
- package/esm2022/table/table.component.mjs +3 -3
- package/esm2022/table/table.module.mjs +1 -1
- package/esm2022/tabs/paginated-tab-header.mjs +9 -14
- package/esm2022/tabs/public-api.mjs +6 -6
- package/esm2022/tabs/tab-body.component.mjs +10 -11
- package/esm2022/tabs/tab-content.directive.mjs +1 -1
- package/esm2022/tabs/tab-group.component.mjs +11 -13
- package/esm2022/tabs/tab-header.component.mjs +4 -4
- package/esm2022/tabs/tab-label-wrapper.directive.mjs +1 -1
- package/esm2022/tabs/tab-label.directive.mjs +1 -1
- package/esm2022/tabs/tab-nav-bar/index.mjs +1 -1
- package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +46 -49
- package/esm2022/tabs/tab.component.mjs +7 -10
- package/esm2022/tabs/tabs-animations.mjs +1 -1
- package/esm2022/tabs/tabs.module.mjs +2 -2
- package/esm2022/tags/public-api.mjs +5 -5
- package/esm2022/tags/tag-default-options.mjs +1 -1
- package/esm2022/tags/tag-input.mjs +12 -16
- package/esm2022/tags/tag-list.component.mjs +15 -27
- package/esm2022/tags/tag-text-control.mjs +1 -1
- package/esm2022/tags/tag.component.mjs +5 -8
- package/esm2022/tags/tag.module.mjs +9 -7
- package/esm2022/textarea/index.mjs +1 -1
- package/esm2022/textarea/textarea.component.mjs +4 -7
- package/esm2022/textarea/textarea.module.mjs +1 -1
- package/esm2022/timepicker/public-api.mjs +2 -2
- package/esm2022/timepicker/timepicker.constants.mjs +6 -2
- package/esm2022/timepicker/timepicker.directive.mjs +62 -31
- package/esm2022/timepicker/timepicker.module.mjs +1 -1
- package/esm2022/timezone/cities-by-filter.pipe.mjs +1 -1
- package/esm2022/timezone/timezone-option.component.mjs +12 -11
- package/esm2022/timezone/timezone-option.directive.mjs +3 -3
- package/esm2022/timezone/timezone-select.component.mjs +5 -5
- package/esm2022/timezone/timezone.models.mjs +1 -2
- package/esm2022/timezone/timezone.module.mjs +1 -1
- package/esm2022/timezone/timezone.utils.mjs +5 -9
- package/esm2022/timezone/utc-offset.pipe.mjs +1 -1
- package/esm2022/title/public-api.mjs +2 -2
- package/esm2022/title/title.directive.mjs +9 -5
- package/esm2022/title/title.module.mjs +1 -1
- package/esm2022/toast/public-api.mjs +4 -4
- package/esm2022/toast/toast-animations.mjs +2 -2
- package/esm2022/toast/toast-container.component.mjs +5 -6
- package/esm2022/toast/toast.component.mjs +6 -6
- package/esm2022/toast/toast.module.mjs +1 -1
- package/esm2022/toast/toast.service.mjs +18 -30
- package/esm2022/toast/toast.type.mjs +1 -1
- package/esm2022/toggle/public-api.mjs +2 -2
- package/esm2022/toggle/toggle.component.mjs +17 -11
- package/esm2022/toggle/toggle.module.mjs +1 -1
- package/esm2022/tooltip/public-api.mjs +2 -2
- package/esm2022/tooltip/tooltip.animations.mjs +1 -1
- package/esm2022/tooltip/tooltip.component.mjs +7 -7
- package/esm2022/tooltip/tooltip.module.mjs +2 -2
- package/esm2022/tree/control/base-tree-control.mjs +1 -2
- package/esm2022/tree/control/flat-tree-control.filters.mjs +4 -7
- package/esm2022/tree/control/flat-tree-control.mjs +4 -7
- package/esm2022/tree/control/nested-tree-control.mjs +1 -2
- package/esm2022/tree/control/tree-control.mjs +1 -1
- package/esm2022/tree/data-source/flat-data-source.mjs +3 -8
- package/esm2022/tree/data-source/nested-data-source.mjs +2 -4
- package/esm2022/tree/node.mjs +1 -1
- package/esm2022/tree/outlet.mjs +1 -1
- package/esm2022/tree/padding.directive.mjs +4 -5
- package/esm2022/tree/public-api.mjs +11 -11
- package/esm2022/tree/toggle.mjs +8 -5
- package/esm2022/tree/tree-base.mjs +3 -7
- package/esm2022/tree/tree-errors.mjs +1 -1
- package/esm2022/tree/tree-option.component.mjs +9 -13
- package/esm2022/tree/tree-selection.component.mjs +20 -36
- package/esm2022/tree/tree.mjs +7 -3
- package/esm2022/tree/tree.module.mjs +2 -3
- package/esm2022/tree-select/public-api.mjs +2 -2
- package/esm2022/tree-select/tree-select.component.mjs +59 -72
- package/esm2022/tree-select/tree-select.module.mjs +1 -1
- package/fesm2022/koobiq-components-alert.mjs +10 -6
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +60 -72
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +10 -8
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +30 -24
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +14 -11
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-card.mjs +4 -5
- package/fesm2022/koobiq-components-card.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +3 -5
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +39 -34
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +325 -336
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +105 -111
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +9 -9
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +125 -147
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +3 -2
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +157 -0
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -0
- package/fesm2022/koobiq-components-file-upload.mjs +46 -41
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +75 -73
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +9 -10
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +56 -60
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +1 -1
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +43 -49
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +6 -6
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +18 -4
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +96 -54
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +82 -86
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +12 -12
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +5 -5
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +5 -5
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +11 -16
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-risk-level.mjs +4 -4
- package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs +22 -24
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +55 -78
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +5 -7
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +110 -93
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +15 -26
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +5 -5
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +85 -98
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +39 -56
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +2 -5
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +69 -34
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +16 -21
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +11 -7
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +74 -87
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +17 -11
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +10 -10
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +67 -80
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +509 -541
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +28 -18
- package/file-upload/file-upload.scss +0 -1
- package/file-upload/multiple-file-upload.component.d.ts +2 -2
- package/file-upload/multiple-file-upload.component.scss +17 -27
- package/file-upload/public-api.d.ts +1 -1
- package/file-upload/single-file-upload.component.d.ts +2 -2
- package/file-upload/single-file-upload.component.scss +1 -7
- package/form-field/_form-field-theme.scss +24 -12
- package/form-field/_hint-theme.scss +0 -2
- package/form-field/cleaner.scss +0 -1
- package/form-field/form-field.scss +12 -14
- package/form-field/hint.scss +0 -1
- package/form-field/password-toggle.scss +0 -1
- package/form-field/public-api.d.ts +3 -3
- package/form-field/stepper.scss +0 -1
- package/icon/_icon-button-theme.scss +18 -7
- package/icon/_icon-theme.scss +0 -1
- package/icon/icon-button.scss +2 -5
- package/icon/icon-item.scss +2 -5
- package/icon/icon.scss +0 -1
- package/icon/public-api.d.ts +2 -2
- package/input/_input-theme.scss +0 -1
- package/input/input.scss +9 -9
- package/input/public-api.d.ts +2 -2
- package/link/_link-theme.scss +12 -18
- package/link/link.component.d.ts +1 -1
- package/link/public-api.d.ts +1 -1
- package/list/_list-theme.scss +0 -1
- package/list/list-selection.component.d.ts +3 -3
- package/list/list.scss +1 -3
- package/list/public-api.d.ts +2 -2
- package/loader-overlay/_loader-overlay-theme.scss +6 -4
- package/loader-overlay/loader-overlay.scss +0 -1
- package/loader-overlay/public-api.d.ts +1 -1
- package/markdown/_markdown-theme.scss +11 -8
- package/markdown/markdown.scss +3 -3
- package/modal/README.md +4 -3
- package/modal/_modal-animation.scss +0 -1
- package/modal/_modal-confirm.scss +0 -1
- package/modal/_modal-theme.scss +8 -9
- package/modal/modal.directive.d.ts +3 -3
- package/modal/modal.scss +9 -15
- package/modal/modal.type.d.ts +2 -2
- package/modal/public-api.d.ts +2 -2
- package/navbar/README.md +21 -20
- package/navbar/_navbar-item_horizontal.scss +31 -24
- package/navbar/_navbar-item_vertical.scss +0 -3
- package/navbar/_navbar-theme.scss +3 -6
- package/navbar/navbar-brand.scss +0 -1
- package/navbar/navbar-divider.scss +0 -1
- package/navbar/navbar-item.component.d.ts +1 -1
- package/navbar/navbar-item.scss +9 -2
- package/navbar/navbar.scss +0 -1
- package/navbar/public-api.d.ts +2 -2
- package/navbar/vertical-navbar.scss +0 -1
- package/package.json +12 -6
- package/popover/README.md +17 -14
- package/popover/_popover-theme.scss +0 -1
- package/popover/popover.component.d.ts +1 -1
- package/popover/popover.scss +5 -13
- package/popover/public-api.d.ts +2 -2
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +0 -1
- package/progress-bar/progress-bar.scss +0 -1
- package/progress-bar/public-api.d.ts +1 -1
- package/progress-spinner/_progress-spinner-theme.scss +0 -1
- package/progress-spinner/progress-spinner.scss +0 -1
- package/progress-spinner/public-api.d.ts +1 -1
- package/radio/_radio-theme.scss +13 -5
- package/radio/public-api.d.ts +1 -1
- package/radio/radio.scss +20 -6
- package/risk-level/_risk-level-theme.scss +0 -1
- package/risk-level/public-api.d.ts +1 -1
- package/risk-level/risk-level.component.scss +1 -4
- package/schematics/ng-add/index.js +4 -4
- package/scrollbar/_scrollbar-component-theme.scss +2 -3
- package/scrollbar/public-api.d.ts +1 -1
- package/scrollbar/scrollbar.component.scss +56 -44
- package/scrollbar/scrollbar.directive.d.ts +1 -1
- package/scrollbar/scrollbar.types.d.ts +1 -1
- package/select/_select-theme.scss +0 -1
- package/select/public-api.d.ts +2 -2
- package/select/select.component.d.ts +4 -1
- package/select/select.scss +0 -1
- package/sidebar/public-api.d.ts +1 -1
- package/sidepanel/_sidepanel-theme.scss +0 -1
- package/sidepanel/public-api.d.ts +3 -3
- package/sidepanel/sidepanel.scss +6 -12
- package/splitter/_splitter-theme.scss +0 -1
- package/splitter/public-api.d.ts +1 -1
- package/splitter/splitter.component.d.ts +2 -2
- package/splitter/splitter.scss +0 -1
- package/table/_table-theme.scss +7 -7
- package/table/public-api.d.ts +1 -1
- package/table/table.scss +2 -2
- package/tabs/_tabs-common.scss +10 -8
- package/tabs/_tabs-theme.scss +0 -1
- package/tabs/paginated-tab-header.d.ts +1 -1
- package/tabs/public-api.d.ts +5 -5
- package/tabs/tab-body.component.d.ts +3 -3
- package/tabs/tab-group.component.d.ts +1 -1
- package/tabs/tab-group.scss +0 -1
- package/tabs/tab-header.scss +0 -6
- package/tabs/tab-nav-bar/tab-nav-bar.d.ts +17 -17
- package/tabs/tab-nav-bar/tab-nav-bar.scss +0 -1
- package/tags/_tag-theme.scss +0 -2
- package/tags/public-api.d.ts +4 -4
- package/tags/tag-input.d.ts +1 -1
- package/tags/tag-list.scss +9 -7
- package/tags/tag.component.d.ts +2 -2
- package/tags/tag.scss +1 -4
- package/textarea/_textarea-theme.scss +0 -1
- package/textarea/textarea.component.d.ts +1 -1
- package/textarea/textarea.scss +1 -4
- package/timepicker/public-api.d.ts +1 -1
- package/timepicker/timepicker.constants.d.ts +2 -0
- package/timepicker/timepicker.directive.d.ts +10 -3
- package/timepicker/timepicker.scss +0 -1
- package/timezone/_timezone-option-theme.scss +0 -1
- package/timezone/timezone-option.component.scss +0 -1
- package/timezone/timezone-option.directive.d.ts +1 -1
- package/timezone/timezone-select.component.scss +0 -1
- package/timezone/timezone.utils.d.ts +1 -1
- package/title/public-api.d.ts +1 -1
- package/title/title.directive.d.ts +2 -2
- package/toast/_toast-theme.scss +0 -2
- package/toast/public-api.d.ts +3 -3
- package/toast/toast-container.component.scss +0 -1
- package/toast/toast.component.scss +4 -2
- package/toast/toast.service.d.ts +2 -2
- package/toast/toast.type.d.ts +1 -1
- package/toggle/_toggle-theme.scss +10 -9
- package/toggle/public-api.d.ts +1 -1
- package/toggle/toggle.component.d.ts +2 -2
- package/toggle/toggle.scss +0 -1
- package/tooltip/_tooltip-theme.scss +0 -1
- package/tooltip/public-api.d.ts +1 -1
- package/tooltip/tooltip.component.d.ts +2 -2
- package/tooltip/tooltip.scss +1 -5
- package/tree/_tree-theme.scss +2 -3
- package/tree/public-api.d.ts +10 -10
- package/tree/toggle.scss +0 -1
- package/tree/tree-base.d.ts +1 -1
- package/tree/tree-option.component.d.ts +1 -1
- package/tree/tree-option.scss +12 -8
- package/tree/tree-selection.component.d.ts +3 -2
- package/tree-select/_tree-select-theme.scss +0 -1
- package/tree-select/public-api.d.ts +1 -1
- package/tree-select/tree-select.component.d.ts +9 -4
- package/tree-select/tree-select.scss +0 -1
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
2
|
+
import { getSupportedInputTypes } from '@angular/cdk/platform';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { forwardRef, EventEmitter, Directive, Attribute, Optional, Inject, Input, InjectionToken, Self, NgModule } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
6
6
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators, FormsModule } from '@angular/forms';
|
|
7
7
|
import * as i3 from '@koobiq/components/core';
|
|
8
8
|
import { KBQ_LOCALE_SERVICE, mixinErrorState, KbqCommonModule } from '@koobiq/components/core';
|
|
9
|
-
import { KbqIconModule } from '@koobiq/components/icon';
|
|
10
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
11
|
-
import { getSupportedInputTypes } from '@angular/cdk/platform';
|
|
12
9
|
import { KbqFormFieldControl } from '@koobiq/components/form-field';
|
|
13
10
|
import { Subject, Subscription } from 'rxjs';
|
|
14
11
|
import { A, C, V, X, Z, NUMPAD_MINUS, DASH, FF_MINUS, DELETE, BACKSPACE, TAB, ESCAPE, ENTER, LEFT_ARROW, RIGHT_ARROW, HOME, END, isFunctionKey, isNumberKey, isNumpadKey, UP_ARROW, DOWN_ARROW } from '@koobiq/cdk/keycodes';
|
|
12
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
13
|
+
import { CommonModule } from '@angular/common';
|
|
14
|
+
import { KbqIconModule } from '@koobiq/components/icon';
|
|
15
15
|
|
|
16
16
|
function getKbqInputUnsupportedTypeError(inputType) {
|
|
17
17
|
return Error(`Input type "${inputType}" isn't supported by kbqInput.`);
|
|
@@ -33,10 +33,7 @@ function isDigit(value) {
|
|
|
33
33
|
}
|
|
34
34
|
function getPrecision(value) {
|
|
35
35
|
const arr = value.toString().split('.');
|
|
36
|
-
return arr.length === 1
|
|
37
|
-
? 1
|
|
38
|
-
// tslint:disable-next-line:no-magic-numbers
|
|
39
|
-
: Math.pow(10, arr[1].length);
|
|
36
|
+
return arr.length === 1 ? 1 : Math.pow(10, arr[1].length);
|
|
40
37
|
}
|
|
41
38
|
function add(value1, value2) {
|
|
42
39
|
const precision = Math.max(getPrecision(value1), getPrecision(value2));
|
|
@@ -99,9 +96,7 @@ class KbqNumberInput {
|
|
|
99
96
|
this._disabled = false;
|
|
100
97
|
this.focused = false;
|
|
101
98
|
this.localeSubscription = Subscription.EMPTY;
|
|
102
|
-
// tslint:disable-next-line:no-empty
|
|
103
99
|
this.onTouched = () => { };
|
|
104
|
-
// tslint:disable-next-line:no-empty
|
|
105
100
|
this.cvaOnChange = () => { };
|
|
106
101
|
this.updateLocaleParams = (id) => {
|
|
107
102
|
this.numberLocaleConfig = this.localeService.locales[id].input.number;
|
|
@@ -113,19 +108,16 @@ class KbqNumberInput {
|
|
|
113
108
|
this.max = isDigit(max) ? parseFloat(max) : Infinity;
|
|
114
109
|
if ('valueAsNumber' in this.nativeElement) {
|
|
115
110
|
Object.defineProperty(Object.getPrototypeOf(this.nativeElement), 'valueAsNumber', {
|
|
116
|
-
// tslint:disable-next-line:no-reserved-keywords
|
|
117
111
|
get() {
|
|
118
112
|
const res = parseFloat(normalizeSplitter(this.value));
|
|
119
113
|
return isNaN(res) ? null : res;
|
|
120
114
|
}
|
|
121
115
|
});
|
|
122
116
|
}
|
|
123
|
-
this.allNumberLocaleConfigs = this.localeService?.locales.items
|
|
124
|
-
.map((localeItem) => {
|
|
117
|
+
this.allNumberLocaleConfigs = this.localeService?.locales.items.map((localeItem) => {
|
|
125
118
|
return { id: localeItem.id, config: this.localeService.locales[localeItem.id].input.number };
|
|
126
119
|
});
|
|
127
|
-
this.localeSubscription = this.localeService?.changes
|
|
128
|
-
.subscribe(this.updateLocaleParams);
|
|
120
|
+
this.localeSubscription = this.localeService?.changes.subscribe(this.updateLocaleParams);
|
|
129
121
|
}
|
|
130
122
|
ngAfterContentInit() {
|
|
131
123
|
this.renderer.setProperty(this.nativeElement, 'type', 'text');
|
|
@@ -164,21 +156,19 @@ class KbqNumberInput {
|
|
|
164
156
|
}
|
|
165
157
|
}
|
|
166
158
|
onKeyDown(event) {
|
|
167
|
-
// tslint:disable-next-line:deprecation
|
|
168
159
|
const keyCode = event.keyCode;
|
|
169
160
|
const isCtrlA = (e) => e.keyCode === A && (e.ctrlKey || e.metaKey);
|
|
170
161
|
const isCtrlC = (e) => e.keyCode === C && (e.ctrlKey || e.metaKey);
|
|
171
162
|
const isCtrlV = (e) => e.keyCode === V && (e.ctrlKey || e.metaKey);
|
|
172
163
|
const isCtrlX = (e) => e.keyCode === X && (e.ctrlKey || e.metaKey);
|
|
173
164
|
const isCtrlZ = (e) => e.keyCode === Z && (e.ctrlKey || e.metaKey);
|
|
174
|
-
const isPeriod = (e) => this.numberLocaleConfig.groupSeparator.includes(e.key)
|
|
175
|
-
|
|
165
|
+
const isPeriod = (e) => this.numberLocaleConfig.groupSeparator.includes(e.key) ||
|
|
166
|
+
[this.numberLocaleConfig.fractionSeparator, '.'].includes(e.key);
|
|
176
167
|
const minuses = [NUMPAD_MINUS, DASH, FF_MINUS];
|
|
177
168
|
const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];
|
|
178
169
|
const arrows = [LEFT_ARROW, RIGHT_ARROW];
|
|
179
170
|
const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);
|
|
180
|
-
if (minuses.includes(keyCode) &&
|
|
181
|
-
(this.viewValue.includes(event.key) || this.min >= 0)) {
|
|
171
|
+
if (minuses.includes(keyCode) && (this.viewValue.includes(event.key) || this.min >= 0)) {
|
|
182
172
|
event.preventDefault();
|
|
183
173
|
return;
|
|
184
174
|
}
|
|
@@ -189,21 +179,20 @@ class KbqNumberInput {
|
|
|
189
179
|
return;
|
|
190
180
|
}
|
|
191
181
|
}
|
|
192
|
-
if (allowedKeys.indexOf(keyCode) !== -1 ||
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
].some((fn) => fn(event))) {
|
|
182
|
+
if (allowedKeys.indexOf(keyCode) !== -1 || [
|
|
183
|
+
isCtrlA,
|
|
184
|
+
isCtrlC,
|
|
185
|
+
isCtrlV,
|
|
186
|
+
isCtrlX,
|
|
187
|
+
isCtrlZ,
|
|
188
|
+
isFunctionKey,
|
|
189
|
+
isPeriod
|
|
190
|
+
].some((fn) => fn(event))) {
|
|
202
191
|
// let it happen, don't do anything
|
|
203
192
|
return;
|
|
204
193
|
}
|
|
205
194
|
// Ensure that it is not a number and stop the keypress
|
|
206
|
-
if (event.shiftKey || !isNumberKey(event) && !isNumpadKey(event)) {
|
|
195
|
+
if (event.shiftKey || (!isNumberKey(event) && !isNumpadKey(event))) {
|
|
207
196
|
event.preventDefault();
|
|
208
197
|
// process steps
|
|
209
198
|
const step = event.shiftKey ? this.bigStep : this.step;
|
|
@@ -229,7 +218,8 @@ class KbqNumberInput {
|
|
|
229
218
|
const offsetWhenSeparatorAdded = 2;
|
|
230
219
|
Promise.resolve().then(() => {
|
|
231
220
|
if (Math.abs(this.viewValue.length - currentValueLength) === offsetWhenSeparatorAdded) {
|
|
232
|
-
const cursorPosition = Math.max(0, (this.nativeElement.selectionStart || 0) +
|
|
221
|
+
const cursorPosition = Math.max(0, (this.nativeElement.selectionStart || 0) +
|
|
222
|
+
Math.sign(this.viewValue.length - currentValueLength));
|
|
233
223
|
this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);
|
|
234
224
|
this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);
|
|
235
225
|
}
|
|
@@ -282,11 +272,11 @@ class KbqNumberInput {
|
|
|
282
272
|
if (this.viewValue === null || this.viewValue === '' || Number.isNaN(+this.normalizeNumber(this.viewValue))) {
|
|
283
273
|
return null;
|
|
284
274
|
}
|
|
285
|
-
const separator = this.numberLocaleConfig.groupSeparator.includes(' ')
|
|
286
|
-
&& this.numberLocaleConfig.fractionSeparator === ','
|
|
275
|
+
const separator = this.numberLocaleConfig.groupSeparator.includes(' ') && this.numberLocaleConfig.fractionSeparator === ','
|
|
287
276
|
? /[,.]/
|
|
288
277
|
: this.numberLocaleConfig.fractionSeparator;
|
|
289
|
-
const [intPart, fractionPart] = this.viewValue
|
|
278
|
+
const [intPart, fractionPart] = this.viewValue
|
|
279
|
+
.split(separator)
|
|
290
280
|
.map((valuePart) => this.normalizeNumber(valuePart));
|
|
291
281
|
return this.createLocalizedNumberFromParts(+intPart, fractionPart);
|
|
292
282
|
}
|
|
@@ -303,14 +293,14 @@ class KbqNumberInput {
|
|
|
303
293
|
maximumFractionDigits: 20
|
|
304
294
|
};
|
|
305
295
|
if (this.withThousandSeparator && this.numberLocaleConfig.startFormattingFrom) {
|
|
306
|
-
formatOptions.useGrouping = intPart >= Math.pow(
|
|
307
|
-
// tslint:disable-next-line:no-magic-numbers
|
|
308
|
-
10, this.numberLocaleConfig.startFormattingFrom);
|
|
296
|
+
formatOptions.useGrouping = intPart >= Math.pow(10, this.numberLocaleConfig.startFormattingFrom);
|
|
309
297
|
}
|
|
310
298
|
const localeId = this.localeService.id === 'es-LA' ? 'ru-RU' : this.localeService.id;
|
|
311
299
|
const formatter = new Intl.NumberFormat(localeId, formatOptions);
|
|
312
|
-
const formattedFractionPart = fractionPart
|
|
313
|
-
|
|
300
|
+
const formattedFractionPart = fractionPart
|
|
301
|
+
?.split('')
|
|
302
|
+
.map((numChar) => formatter.format(+numChar))
|
|
303
|
+
.join('');
|
|
314
304
|
return formattedFractionPart === undefined
|
|
315
305
|
? formatter.format(intPart)
|
|
316
306
|
: `${formatter.format(intPart)}${this.numberLocaleConfig.fractionSeparator}${formattedFractionPart}`;
|
|
@@ -325,9 +315,7 @@ class KbqNumberInput {
|
|
|
325
315
|
const { groupSeparator, fractionSeparator } = customConfig || this.numberLocaleConfig;
|
|
326
316
|
const groupSeparatorRegexp = new RegExp(`[${groupSeparator.join('')}]`, 'g');
|
|
327
317
|
const fractionSeparatorRegexp = new RegExp(`\\${fractionSeparator}`, 'g');
|
|
328
|
-
return value.toString()
|
|
329
|
-
.replace(groupSeparatorRegexp, '')
|
|
330
|
-
.replace(fractionSeparatorRegexp, '.');
|
|
318
|
+
return value.toString().replace(groupSeparatorRegexp, '').replace(fractionSeparatorRegexp, '.');
|
|
331
319
|
}
|
|
332
320
|
checkAndNormalizeLocalizedNumber(num) {
|
|
333
321
|
if (num === null || num === undefined) {
|
|
@@ -467,7 +455,6 @@ class KbqInput extends KbqInputMixinBase {
|
|
|
467
455
|
set required(value) {
|
|
468
456
|
this._required = coerceBooleanProperty(value);
|
|
469
457
|
}
|
|
470
|
-
// tslint:disable no-reserved-keywords
|
|
471
458
|
/** Input type of the element. */
|
|
472
459
|
get type() {
|
|
473
460
|
return this._type;
|
|
@@ -495,7 +482,6 @@ class KbqInput extends KbqInputMixinBase {
|
|
|
495
482
|
this.stateChanges.next();
|
|
496
483
|
}
|
|
497
484
|
}
|
|
498
|
-
// tslint:disable-next-line: naming-convention
|
|
499
485
|
constructor(elementRef, ngControl, numberInput, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor) {
|
|
500
486
|
super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
|
|
501
487
|
this.elementRef = elementRef;
|
|
@@ -526,7 +512,6 @@ class KbqInput extends KbqInputMixinBase {
|
|
|
526
512
|
].filter((t) => getSupportedInputTypes().has(t));
|
|
527
513
|
this._disabled = false;
|
|
528
514
|
this._required = false;
|
|
529
|
-
// tslint:enable no-reserved-keywords
|
|
530
515
|
this._type = 'text';
|
|
531
516
|
// If no input value accessor was explicitly specified, use the element as the input value accessor.
|
|
532
517
|
this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;
|
|
@@ -610,9 +595,12 @@ class KbqInput extends KbqInputMixinBase {
|
|
|
610
595
|
return validity?.badInput;
|
|
611
596
|
}
|
|
612
597
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: KbqNumberInput, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: KBQ_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
613
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqInput, selector: "input[kbqInput]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", type: "type", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "kbq-input" }, providers: [
|
|
614
|
-
|
|
615
|
-
|
|
598
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqInput, selector: "input[kbqInput]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", type: "type", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "kbq-input" }, providers: [
|
|
599
|
+
{
|
|
600
|
+
provide: KbqFormFieldControl,
|
|
601
|
+
useExisting: KbqInput
|
|
602
|
+
}
|
|
603
|
+
], exportAs: ["kbqInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
616
604
|
}
|
|
617
605
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqInput, decorators: [{
|
|
618
606
|
type: Directive,
|
|
@@ -630,9 +618,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
|
|
|
630
618
|
'(blur)': 'onBlur()',
|
|
631
619
|
'(focus)': 'focusChanged(true)'
|
|
632
620
|
},
|
|
633
|
-
providers: [
|
|
634
|
-
|
|
635
|
-
|
|
621
|
+
providers: [
|
|
622
|
+
{
|
|
623
|
+
provide: KbqFormFieldControl,
|
|
624
|
+
useExisting: KbqInput
|
|
625
|
+
}
|
|
626
|
+
]
|
|
636
627
|
}]
|
|
637
628
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
|
|
638
629
|
type: Optional
|
|
@@ -829,7 +820,6 @@ class KbqInputPassword extends KbqInputMixinBase {
|
|
|
829
820
|
get empty() {
|
|
830
821
|
return !this.elementRef.nativeElement.value && !this.isBadInput();
|
|
831
822
|
}
|
|
832
|
-
// tslint:disable-next-line: naming-convention
|
|
833
823
|
constructor(elementRef, ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor) {
|
|
834
824
|
super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
|
|
835
825
|
this.elementRef = elementRef;
|
|
@@ -933,9 +923,12 @@ class KbqInputPassword extends KbqInputMixinBase {
|
|
|
933
923
|
return this.elementRef.nativeElement.validity?.badInput;
|
|
934
924
|
}
|
|
935
925
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqInputPassword, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: KBQ_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
936
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqInputPassword, selector: "input[kbqInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "kbq-input kbq-input-password" }, providers: [
|
|
937
|
-
|
|
938
|
-
|
|
926
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqInputPassword, selector: "input[kbqInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "kbq-input kbq-input-password" }, providers: [
|
|
927
|
+
{
|
|
928
|
+
provide: KbqFormFieldControl,
|
|
929
|
+
useExisting: KbqInputPassword
|
|
930
|
+
}
|
|
931
|
+
], exportAs: ["kbqInputPassword"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
939
932
|
}
|
|
940
933
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqInputPassword, decorators: [{
|
|
941
934
|
type: Directive,
|
|
@@ -955,9 +948,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
|
|
|
955
948
|
'(focus)': 'focusChanged(true)',
|
|
956
949
|
'(input)': 'onInput()'
|
|
957
950
|
},
|
|
958
|
-
providers: [
|
|
959
|
-
|
|
960
|
-
|
|
951
|
+
providers: [
|
|
952
|
+
{
|
|
953
|
+
provide: KbqFormFieldControl,
|
|
954
|
+
useExisting: KbqInputPassword
|
|
955
|
+
}
|
|
956
|
+
]
|
|
961
957
|
}]
|
|
962
958
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
|
|
963
959
|
type: Optional
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-input.mjs","sources":["../../../packages/components/input/input-errors.ts","../../../packages/components/input/input-number.ts","../../../packages/components/input/input-value-accessor.ts","../../../packages/components/input/input.ts","../../../packages/components/input/input-number-validators.ts","../../../packages/components/input/input-password.ts","../../../packages/components/input/input.module.ts","../../../packages/components/input/koobiq-components-input.ts"],"sourcesContent":["export function getKbqInputUnsupportedTypeError(inputType: string): Error {\n return Error(`Input type \"${inputType}\" isn't supported by kbqInput.`);\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Attribute,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Renderer2\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n END, C, V, X, A, Z, DELETE, BACKSPACE, TAB, ENTER,\n ESCAPE, NUMPAD_MINUS, DASH,\n FF_MINUS, LEFT_ARROW, RIGHT_ARROW, HOME, UP_ARROW, DOWN_ARROW, isFunctionKey,\n isNumberKey, isNumpadKey\n} from '@koobiq/cdk/keycodes';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Subject, Subscription } from 'rxjs';\n\n\nexport const BIG_STEP = 10;\nexport const SMALL_STEP = 1;\n\nexport function normalizeSplitter(value: string): string {\n return value ? value.replace(/,/g, '.') : value;\n}\n\nexport function isFloat(value: string): boolean {\n return /^-?\\d+\\.\\d+$/.test(value);\n}\n\nexport function isInt(value: string): boolean {\n return /^-?\\d+$/.test(value);\n}\n\nexport function isDigit(value: string): boolean {\n return isFloat(value) || isInt(value);\n}\n\nexport function getPrecision(value: number): number {\n const arr = value.toString().split('.');\n\n return arr.length === 1\n ? 1\n // tslint:disable-next-line:no-magic-numbers\n : Math.pow(10, arr[1].length);\n}\n\nexport function add(value1: number, value2: number): number {\n const precision = Math.max(getPrecision(value1), getPrecision(value2));\n\n return (value1 * precision + value2 * precision) / precision;\n}\n\nexport const KBQ_NUMBER_INPUT_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqNumberInput),\n multi: true\n};\n\ninterface NumberLocaleConfig {\n groupSeparator: string[];\n fractionSeparator: string;\n startFormattingFrom?: number;\n}\n\n@Directive({\n selector: `input[kbqInput][type=\"number\"]`,\n exportAs: 'kbqNumericalInput',\n providers: [KBQ_NUMBER_INPUT_VALUE_ACCESSOR],\n host: {\n '(blur)': 'focusChanged(false)',\n '(focus)': 'focusChanged(true)',\n '(paste)': 'onPaste($event)',\n '(keydown)': 'onKeyDown($event)',\n '(input)': 'onInput($event)'\n }\n})\nexport class KbqNumberInput implements KbqFormFieldControl<any>, ControlValueAccessor, AfterContentInit, OnDestroy {\n /** Emits when the value changes (either due to user input or programmatic change). */\n valueChange = new EventEmitter<number | null>();\n\n /** Emits when the disabled state has changed */\n disabledChange = new EventEmitter<boolean>();\n\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n id: string;\n\n placeholder: string;\n\n empty: boolean;\n\n required: boolean;\n\n errorState: boolean;\n\n controlType?: string | undefined;\n\n @Input()\n bigStep: number;\n\n @Input()\n step: number;\n\n @Input()\n min: number;\n\n @Input()\n max: number;\n\n @Input()\n withThousandSeparator: boolean = true;\n\n /**\n * Include thousand separator from custom index. For example, it will be useful in tables.\n */\n @Input()\n startFormattingFrom?: number;\n\n @Input()\n get value(): number | null {\n return this._value;\n }\n\n set value(value: number | null) {\n const oldValue = this.value;\n this._value = value;\n\n if (oldValue !== value) {\n this.setViewValue(this.formatNumber(value));\n\n this.valueChange.emit(value);\n }\n }\n\n private _value: number | null;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n\n private _disabled: boolean = false;\n\n focused: boolean = false;\n\n get nativeElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n get viewValue(): string {\n return this.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n private control: AbstractControl;\n\n private readonly allNumberLocaleConfigs: { id: string; config: NumberLocaleConfig }[];\n\n private numberLocaleConfig: NumberLocaleConfig;\n\n private valueFromPaste: number | null;\n\n private localeSubscription = Subscription.EMPTY;\n\n constructor(\n private elementRef: ElementRef,\n private readonly renderer: Renderer2,\n @Attribute('step') step: string,\n @Attribute('big-step') bigStep: string,\n @Attribute('min') min: string,\n @Attribute('max') max: string,\n @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService: KbqLocaleService\n ) {\n this.step = isDigit(step) ? parseFloat(step) : SMALL_STEP;\n this.bigStep = isDigit(bigStep) ? parseFloat(bigStep) : BIG_STEP;\n this.min = isDigit(min) ? parseFloat(min) : -Infinity;\n this.max = isDigit(max) ? parseFloat(max) : Infinity;\n\n if ('valueAsNumber' in this.nativeElement) {\n Object.defineProperty(Object.getPrototypeOf(this.nativeElement), 'valueAsNumber', {\n // tslint:disable-next-line:no-reserved-keywords\n get() {\n const res = parseFloat(normalizeSplitter(this.value));\n\n return isNaN(res) ? null : res;\n }\n });\n }\n\n this.allNumberLocaleConfigs = this.localeService?.locales.items\n .map((localeItem: { id: string; name: string }) => {\n return { id: localeItem.id, config: this.localeService.locales[localeItem.id].input.number };\n });\n\n this.localeSubscription = this.localeService?.changes\n .subscribe(this.updateLocaleParams);\n }\n\n ngAfterContentInit(): void {\n this.renderer.setProperty(this.nativeElement, 'type', 'text');\n }\n\n ngOnDestroy(): void {\n this.localeSubscription.unsubscribe();\n this.valueChange.complete();\n this.disabledChange.complete();\n }\n\n onContainerClick(): void {\n this.focus();\n }\n\n focus(): void {\n this.nativeElement.focus();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this.cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n // tslint:disable-next-line:no-empty\n onTouched = () => {};\n\n onKeyDown(event: KeyboardEvent) {\n // tslint:disable-next-line:deprecation\n const keyCode = event.keyCode;\n\n const isCtrlA = (e) => e.keyCode === A && (e.ctrlKey || e.metaKey);\n const isCtrlC = (e) => e.keyCode === C && (e.ctrlKey || e.metaKey);\n const isCtrlV = (e) => e.keyCode === V && (e.ctrlKey || e.metaKey);\n const isCtrlX = (e) => e.keyCode === X && (e.ctrlKey || e.metaKey);\n const isCtrlZ = (e) => e.keyCode === Z && (e.ctrlKey || e.metaKey);\n\n const isPeriod = (e) => this.numberLocaleConfig.groupSeparator.includes(e.key)\n || [this.numberLocaleConfig.fractionSeparator, '.'].includes(e.key);\n\n const minuses = [NUMPAD_MINUS, DASH, FF_MINUS];\n const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];\n const arrows = [LEFT_ARROW, RIGHT_ARROW];\n const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);\n\n if (\n minuses.includes(keyCode) &&\n (this.viewValue.includes(event.key) || this.min >= 0)\n ) {\n event.preventDefault();\n\n return;\n }\n\n if (isPeriod(event)) {\n if (event.key === this.numberLocaleConfig.fractionSeparator &&\n this.viewValue.indexOf(this.numberLocaleConfig.fractionSeparator) !== -1) {\n event.preventDefault();\n\n return;\n }\n }\n\n if (allowedKeys.indexOf(keyCode) !== -1 ||\n [\n isCtrlA,\n isCtrlC,\n isCtrlV,\n isCtrlX,\n isCtrlZ,\n isFunctionKey,\n isPeriod\n ].some((fn) => fn(event))\n ) {\n // let it happen, don't do anything\n return;\n }\n // Ensure that it is not a number and stop the keypress\n if (event.shiftKey || !isNumberKey(event) && !isNumpadKey(event)) {\n event.preventDefault();\n\n // process steps\n const step = event.shiftKey ? this.bigStep : this.step;\n\n if (keyCode === UP_ARROW) {\n this.stepUp(step);\n }\n\n if (keyCode === DOWN_ARROW) {\n this.stepDown(step);\n }\n }\n }\n\n onInput(event: InputEvent) {\n const currentValueLength = this.formatNumber(this.value)?.length || 0;\n\n setTimeout(() => {\n const fromPaste = event.inputType === 'insertFromPaste';\n let formattedValue: string | null;\n if (fromPaste) {\n formattedValue = this.formatNumber(this.valueFromPaste);\n } else {\n /*this.viewValue is raw and should be reformatted to localized number */\n formattedValue = this.formatViewValue();\n\n const offsetWhenSeparatorAdded = 2;\n\n Promise.resolve().then(() => {\n if (Math.abs(this.viewValue.length - currentValueLength) === offsetWhenSeparatorAdded) {\n const cursorPosition = Math.max(\n 0,\n (this.nativeElement.selectionStart || 0) + Math.sign(\n this.viewValue.length - currentValueLength\n )\n );\n\n this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);\n this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);\n }\n });\n }\n this.setViewValue(formattedValue, !fromPaste);\n this.viewToModelUpdate(formattedValue);\n });\n }\n\n onPaste(event: ClipboardEvent) {\n this.valueFromPaste = this.checkAndNormalizeLocalizedNumber(event.clipboardData?.getData('text'));\n if (this.valueFromPaste === null) { event.preventDefault(); }\n }\n\n stepUp(step: number) {\n this.nativeElement.focus();\n\n const res = Math.max(Math.min(add(this.value || 0, step), this.max), this.min);\n\n this.setViewValue(this.formatNumber(res));\n\n this._value = res;\n this.cvaOnChange(res);\n this.valueChange.emit(res);\n }\n\n stepDown(step: number) {\n this.nativeElement.focus();\n\n const res = Math.min(Math.max(add(this.value || 0, -step), this.min), this.max);\n\n this.setViewValue(this.formatNumber(res));\n\n this._value = res;\n this.cvaOnChange(res);\n this.valueChange.emit(res);\n }\n\n // tslint:disable-next-line:no-empty\n private cvaOnChange: (value: any) => void = () => {};\n\n private setViewValue(value: string | null, savePosition: boolean = false) {\n const cursorPosition = this.nativeElement.selectionStart;\n\n this.renderer.setProperty(this.nativeElement, 'value', value);\n\n if (savePosition) {\n this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);\n this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);\n }\n }\n\n private viewToModelUpdate(newValue: string | null) {\n const normalizedValue = newValue === null ? null : +this.normalizeNumber(newValue);\n\n if (normalizedValue !== this.value) {\n this._value = normalizedValue;\n this.cvaOnChange(normalizedValue);\n this.valueChange.emit(normalizedValue);\n }\n\n this.ngControl?.updateValueAndValidity({ emitEvent: false });\n }\n\n private formatViewValue(): string | null {\n if (this.viewValue === null || this.viewValue === '' || Number.isNaN(+this.normalizeNumber(this.viewValue))) {\n return null;\n }\n\n const separator = this.numberLocaleConfig.groupSeparator.includes(' ')\n && this.numberLocaleConfig.fractionSeparator === ','\n ? /[,.]/\n : this.numberLocaleConfig.fractionSeparator;\n\n const [intPart, fractionPart] = this.viewValue.split(separator)\n .map((valuePart) => this.normalizeNumber(valuePart));\n\n return this.createLocalizedNumberFromParts(+intPart, fractionPart);\n }\n\n private formatNumber(value: number | null | undefined): string | null {\n if (value === null || value === undefined) { return null; }\n\n const [intPart, fractionPart] = value.toString().split('.');\n\n return this.createLocalizedNumberFromParts(+intPart, fractionPart);\n }\n\n private createLocalizedNumberFromParts(intPart: number, fractionPart?: string): string {\n const formatOptions = {\n useGrouping: this.withThousandSeparator,\n maximumFractionDigits: 20\n };\n\n if (this.withThousandSeparator && this.numberLocaleConfig.startFormattingFrom) {\n formatOptions.useGrouping = intPart >= Math.pow(\n // tslint:disable-next-line:no-magic-numbers\n 10, this.numberLocaleConfig.startFormattingFrom\n );\n }\n\n const localeId = this.localeService.id === 'es-LA' ? 'ru-RU' : this.localeService.id;\n\n const formatter = new Intl.NumberFormat(localeId, formatOptions);\n const formattedFractionPart = fractionPart?.split('')\n .map((numChar) => formatter.format(+numChar)).join('');\n\n return formattedFractionPart === undefined\n ? formatter.format(intPart)\n : `${ formatter.format(intPart) }${ this.numberLocaleConfig.fractionSeparator }${ formattedFractionPart }`;\n }\n\n /**\n * Method that returns a string representation of a number without localized separators\n */\n private normalizeNumber(value: string | null | undefined, customConfig?: NumberLocaleConfig): string {\n if (value === null || value === undefined) { return ''; }\n\n const { groupSeparator, fractionSeparator } = customConfig || this.numberLocaleConfig;\n const groupSeparatorRegexp = new RegExp(`[${groupSeparator.join('')}]`, 'g');\n const fractionSeparatorRegexp = new RegExp(`\\\\${fractionSeparator}`, 'g');\n\n return value.toString()\n .replace(groupSeparatorRegexp, '')\n .replace(fractionSeparatorRegexp, '.');\n }\n\n private updateLocaleParams = (id: string) => {\n this.numberLocaleConfig = this.localeService.locales[id].input.number;\n\n this.setViewValue(this.formatNumber(this.value));\n }\n\n private checkAndNormalizeLocalizedNumber(num: string | null | undefined): number | null {\n if (num === null || num === undefined) { return null; }\n\n /* if some locale input config satisfies pasted number, try to normalize with selected locale config */\n let numberOutput: number | null = null;\n for (const { config } of this.allNumberLocaleConfigs) {\n const normalized = +this.normalizeNumber(num, config);\n if (!Number.isNaN(normalized)) {\n numberOutput = normalized;\n break;\n }\n }\n\n return numberOutput;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n\nexport const KBQ_INPUT_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('KBQ_INPUT_VALUE_ACCESSOR');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\nimport {\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Self\n} from '@angular/core';\nimport {\n FormGroupDirective,\n NgControl,\n NgForm\n} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n mixinErrorState\n} from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Subject } from 'rxjs';\n\nimport { getKbqInputUnsupportedTypeError } from './input-errors';\nimport { KbqNumberInput } from './input-number';\nimport { KBQ_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\n\n\nconst KBQ_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\nlet nextUniqueId = 0;\n\n/** @docs-private */\nexport class KbqInputBase {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public defaultErrorStateMatcher: ErrorStateMatcher,\n public parentForm: NgForm,\n public parentFormGroup: FormGroupDirective,\n public ngControl: NgControl\n ) {}\n}\n\n/** @docs-private */\nexport const KbqInputMixinBase: CanUpdateErrorStateCtor & typeof KbqInputBase = mixinErrorState(KbqInputBase);\n\n\n@Directive({\n selector: `input[kbqInput]`,\n exportAs: 'kbqInput',\n host: {\n class: 'kbq-input',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[attr.disabled]': 'disabled || null',\n '[required]': 'required',\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)'\n },\n providers: [{\n provide: KbqFormFieldControl, useExisting: KbqInput\n }]\n})\nexport class KbqInput extends KbqInputMixinBase implements KbqFormFieldControl<any>, OnChanges, OnDestroy, DoCheck,\n CanUpdateErrorState, OnChanges {\n\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n controlType: string = 'input';\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n protected uid = `kbq-input-${nextUniqueId++}`;\n protected previousNativeValue: any;\n protected neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter((t) => getSupportedInputTypes().has(t));\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) { return this.ngControl.disabled; }\n\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n\n private _disabled = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required = false;\n\n // tslint:disable no-reserved-keywords\n /** Input type of the element. */\n @Input()\n get type(): string {\n return this._type;\n }\n\n set type(value: string) {\n this._type = value || 'text';\n this.validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (getSupportedInputTypes().has(this._type)) {\n this.elementRef.nativeElement.type = this._type;\n }\n }\n // tslint:enable no-reserved-keywords\n\n private _type = 'text';\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this.inputValueAccessor.value;\n }\n\n set value(value: string) {\n if (value !== this.value) {\n this.inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n // tslint:disable-next-line: orthodox-getter-and-setter\n private inputValueAccessor: { value: any };\n\n // tslint:disable-next-line: naming-convention\n constructor(\n protected elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Self() public numberInput: KbqNumberInput,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(KBQ_INPUT_VALUE_ACCESSOR) inputValueAccessor: any\n ) {\n super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n // If no input value accessor was explicitly specified, use the element as the input value accessor.\n this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n this.previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n /** Focuses the input. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onBlur(): void {\n this.focusChanged(false);\n\n if (this.ngControl?.control) {\n const control = this.ngControl.control;\n\n control.updateValueAndValidity({ emitEvent: false });\n (control.statusChanges as EventEmitter<string>).emit(control.status);\n }\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n focusChanged(isFocused: boolean) {\n if (this.focused !== isFocused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.isNeverEmpty() && !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected dirtyCheckNativeValue() {\n const newValue = this.value;\n\n if (this.previousNativeValue !== newValue) {\n this.previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Make sure the input is a supported type. */\n protected validateType() {\n if (KBQ_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {\n throw getKbqInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected isNeverEmpty() {\n return this.neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected isBadInput() {\n // The `validity` property won't be present on platform-server.\n const validity = (this.elementRef.nativeElement as HTMLInputElement).validity;\n\n return validity?.badInput;\n }\n}\n\n@Directive({\n selector: 'input[kbqInputMonospace]',\n exportAs: 'KbqInputMonospace',\n host: { class: 'kbq-input_monospace' }\n})\nexport class KbqInputMono {}\n","import { Directive, forwardRef, Input, OnChanges, Provider, SimpleChanges } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\n\n\nexport const MIN_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MinValidator),\n multi: true\n};\n\n/**\n * A directive which installs the MinValidator for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n */\n@Directive({\n selector: '[min][formControlName],[min][formControl],[min][ngModel]',\n providers: [MIN_VALIDATOR],\n host: {\n '[attr.min]': 'min ? min : null'\n }\n})\nexport class MinValidator implements Validator, OnChanges {\n\n @Input() min: number;\n private validator: ValidatorFn;\n private onChange: () => void;\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('min' in changes) {\n this.createValidator();\n\n if (this.onChange) { this.onChange(); }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n private createValidator(): void {\n this.validator = Validators.min(parseInt(this.min as unknown as string, 10));\n }\n}\n\n\nexport const MAX_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaxValidator),\n multi: true\n};\n\n/**\n * A directive which installs the MaxValidator for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n */\n@Directive({\n selector: '[max][formControlName],[max][formControl],[max][ngModel]',\n providers: [MAX_VALIDATOR],\n host: {\n '[attr.max]': 'max ? max : null'\n }\n})\nexport class MaxValidator implements Validator,\n OnChanges {\n\n @Input() max: number | string;\n private validator: ValidatorFn;\n private onChange: () => void;\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('max' in changes) {\n this.createValidator();\n\n if (this.onChange) { this.onChange(); }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n private createValidator(): void {\n this.validator = Validators.max(parseInt(this.max as unknown as string, 10));\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Self\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { CanUpdateErrorState, ErrorStateMatcher } from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Subject } from 'rxjs';\n\nimport { KbqInputMixinBase } from './input';\nimport { KBQ_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\n\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: `input[kbqInputPassword]`,\n exportAs: 'kbqInputPassword',\n host: {\n class: 'kbq-input kbq-input-password',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.type]': 'elementType',\n '[attr.placeholder]': 'placeholder',\n '[attr.disabled]': 'disabled || null',\n '[required]': 'required',\n\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n '(input)': 'onInput()'\n },\n providers: [{\n provide: KbqFormFieldControl, useExisting: KbqInputPassword\n }]\n})\nexport class KbqInputPassword extends KbqInputMixinBase implements KbqFormFieldControl<any>, OnChanges, OnDestroy, DoCheck,\n CanUpdateErrorState, OnChanges {\n\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n readonly stateChanges = new Subject<any>();\n\n readonly checkRule = new Subject<void>();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n controlType: string = 'input-password';\n\n elementType: string = 'password';\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n protected uid = `kbq-input-${nextUniqueId++}`;\n protected previousNativeValue: any;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl?.disabled !== null) {\n return this.ngControl.disabled;\n }\n\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next(null);\n }\n }\n\n private _disabled = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required = false;\n\n // this.elementRef.nativeElement.type = this._type;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this._inputValueAccessor.value;\n }\n\n set value(value: string) {\n if (value === this.value) { return; }\n\n this._inputValueAccessor.value = value;\n this.stateChanges.next(null);\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n\n // tslint:disable-next-line: orthodox-getter-and-setter\n private _inputValueAccessor: { value: any };\n\n // tslint:disable-next-line: naming-convention\n constructor(\n protected elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(KBQ_INPUT_VALUE_ACCESSOR) inputValueAccessor: any\n ) {\n super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n this.previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnChanges() {\n this.stateChanges.next(null);\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n checkRules() {\n this.checkRule.next();\n }\n\n toggleType() {\n this.elementType = this.elementType === 'password' ? 'text' : 'password';\n }\n\n /** Focuses the input. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onBlur(): void {\n if (this.ngControl?.control) {\n const control = this.ngControl.control;\n\n control.updateValueAndValidity({ emitEvent: false });\n (control.statusChanges as EventEmitter<string>).emit(control.status);\n }\n\n this.focusChanged(false);\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n focusChanged(isFocused: boolean) {\n if (isFocused === this.focused) { return; }\n\n this.focused = isFocused;\n this.stateChanges.next({ focused: this.focused });\n }\n\n onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected dirtyCheckNativeValue() {\n if (this.previousNativeValue !== this.value) {\n this.previousNativeValue = this.value;\n this.stateChanges.next(null);\n }\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected isBadInput() {\n // The `validity` property won't be present on platform-server.\n return (this.elementRef.nativeElement as HTMLInputElement).validity?.badInput;\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KbqCommonModule } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\n\nimport { KbqInput, KbqInputMono } from './input';\nimport { KbqNumberInput } from './input-number';\nimport { MaxValidator, MinValidator } from './input-number-validators';\nimport { KbqInputPassword } from './input-password';\n\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n KbqCommonModule,\n FormsModule,\n KbqIconModule\n ],\n declarations: [\n KbqInput,\n KbqNumberInput,\n KbqInputPassword,\n KbqInputMono,\n MinValidator,\n MaxValidator\n ],\n exports: [\n KbqInput,\n KbqNumberInput,\n KbqInputPassword,\n KbqInputMono,\n MinValidator,\n MaxValidator\n ]\n})\nexport class KbqInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextUniqueId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-input.mjs","sources":["../../../packages/components/input/input-errors.ts","../../../packages/components/input/input-number.ts","../../../packages/components/input/input-value-accessor.ts","../../../packages/components/input/input.ts","../../../packages/components/input/input-number-validators.ts","../../../packages/components/input/input-password.ts","../../../packages/components/input/input.module.ts","../../../packages/components/input/koobiq-components-input.ts"],"sourcesContent":["export function getKbqInputUnsupportedTypeError(inputType: string): Error {\n return Error(`Input type \"${inputType}\" isn't supported by kbqInput.`);\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Attribute,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Renderer2\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n A,\n BACKSPACE,\n C,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n FF_MINUS,\n HOME,\n isFunctionKey,\n isNumberKey,\n isNumpadKey,\n LEFT_ARROW,\n NUMPAD_MINUS,\n RIGHT_ARROW,\n TAB,\n UP_ARROW,\n V,\n X,\n Z\n} from '@koobiq/cdk/keycodes';\nimport { KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Subject, Subscription } from 'rxjs';\n\nexport const BIG_STEP = 10;\nexport const SMALL_STEP = 1;\n\nexport function normalizeSplitter(value: string): string {\n return value ? value.replace(/,/g, '.') : value;\n}\n\nexport function isFloat(value: string): boolean {\n return /^-?\\d+\\.\\d+$/.test(value);\n}\n\nexport function isInt(value: string): boolean {\n return /^-?\\d+$/.test(value);\n}\n\nexport function isDigit(value: string): boolean {\n return isFloat(value) || isInt(value);\n}\n\nexport function getPrecision(value: number): number {\n const arr = value.toString().split('.');\n\n return arr.length === 1 ? 1 : Math.pow(10, arr[1].length);\n}\n\nexport function add(value1: number, value2: number): number {\n const precision = Math.max(getPrecision(value1), getPrecision(value2));\n\n return (value1 * precision + value2 * precision) / precision;\n}\n\nexport const KBQ_NUMBER_INPUT_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqNumberInput),\n multi: true\n};\n\ninterface NumberLocaleConfig {\n groupSeparator: string[];\n fractionSeparator: string;\n startFormattingFrom?: number;\n}\n\n@Directive({\n selector: `input[kbqInput][type=\"number\"]`,\n exportAs: 'kbqNumericalInput',\n providers: [KBQ_NUMBER_INPUT_VALUE_ACCESSOR],\n host: {\n '(blur)': 'focusChanged(false)',\n '(focus)': 'focusChanged(true)',\n '(paste)': 'onPaste($event)',\n '(keydown)': 'onKeyDown($event)',\n '(input)': 'onInput($event)'\n }\n})\nexport class KbqNumberInput implements KbqFormFieldControl<any>, ControlValueAccessor, AfterContentInit, OnDestroy {\n /** Emits when the value changes (either due to user input or programmatic change). */\n valueChange = new EventEmitter<number | null>();\n\n /** Emits when the disabled state has changed */\n disabledChange = new EventEmitter<boolean>();\n\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n id: string;\n\n placeholder: string;\n\n empty: boolean;\n\n required: boolean;\n\n errorState: boolean;\n\n controlType?: string | undefined;\n\n @Input()\n bigStep: number;\n\n @Input()\n step: number;\n\n @Input()\n min: number;\n\n @Input()\n max: number;\n\n @Input()\n withThousandSeparator: boolean = true;\n\n /**\n * Include thousand separator from custom index. For example, it will be useful in tables.\n */\n @Input()\n startFormattingFrom?: number;\n\n @Input()\n get value(): number | null {\n return this._value;\n }\n\n set value(value: number | null) {\n const oldValue = this.value;\n this._value = value;\n\n if (oldValue !== value) {\n this.setViewValue(this.formatNumber(value));\n\n this.valueChange.emit(value);\n }\n }\n\n private _value: number | null;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n\n private _disabled: boolean = false;\n\n focused: boolean = false;\n\n get nativeElement(): HTMLInputElement {\n return this.elementRef.nativeElement;\n }\n\n get viewValue(): string {\n return this.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n private control: AbstractControl;\n\n private readonly allNumberLocaleConfigs: { id: string; config: NumberLocaleConfig }[];\n\n private numberLocaleConfig: NumberLocaleConfig;\n\n private valueFromPaste: number | null;\n\n private localeSubscription = Subscription.EMPTY;\n\n constructor(\n private elementRef: ElementRef,\n private readonly renderer: Renderer2,\n @Attribute('step') step: string,\n @Attribute('big-step') bigStep: string,\n @Attribute('min') min: string,\n @Attribute('max') max: string,\n @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService: KbqLocaleService\n ) {\n this.step = isDigit(step) ? parseFloat(step) : SMALL_STEP;\n this.bigStep = isDigit(bigStep) ? parseFloat(bigStep) : BIG_STEP;\n this.min = isDigit(min) ? parseFloat(min) : -Infinity;\n this.max = isDigit(max) ? parseFloat(max) : Infinity;\n\n if ('valueAsNumber' in this.nativeElement) {\n Object.defineProperty(Object.getPrototypeOf(this.nativeElement), 'valueAsNumber', {\n get() {\n const res = parseFloat(normalizeSplitter(this.value));\n\n return isNaN(res) ? null : res;\n }\n });\n }\n\n this.allNumberLocaleConfigs = this.localeService?.locales.items.map(\n (localeItem: { id: string; name: string }) => {\n return { id: localeItem.id, config: this.localeService.locales[localeItem.id].input.number };\n }\n );\n\n this.localeSubscription = this.localeService?.changes.subscribe(this.updateLocaleParams);\n }\n\n ngAfterContentInit(): void {\n this.renderer.setProperty(this.nativeElement, 'type', 'text');\n }\n\n ngOnDestroy(): void {\n this.localeSubscription.unsubscribe();\n this.valueChange.complete();\n this.disabledChange.complete();\n }\n\n onContainerClick(): void {\n this.focus();\n }\n\n focus(): void {\n this.nativeElement.focus();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this.cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n onTouched = () => {};\n\n onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n const isCtrlA = (e) => e.keyCode === A && (e.ctrlKey || e.metaKey);\n const isCtrlC = (e) => e.keyCode === C && (e.ctrlKey || e.metaKey);\n const isCtrlV = (e) => e.keyCode === V && (e.ctrlKey || e.metaKey);\n const isCtrlX = (e) => e.keyCode === X && (e.ctrlKey || e.metaKey);\n const isCtrlZ = (e) => e.keyCode === Z && (e.ctrlKey || e.metaKey);\n\n const isPeriod = (e) =>\n this.numberLocaleConfig.groupSeparator.includes(e.key) ||\n [this.numberLocaleConfig.fractionSeparator, '.'].includes(e.key);\n\n const minuses = [NUMPAD_MINUS, DASH, FF_MINUS];\n const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];\n const arrows = [LEFT_ARROW, RIGHT_ARROW];\n const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);\n\n if (minuses.includes(keyCode) && (this.viewValue.includes(event.key) || this.min >= 0)) {\n event.preventDefault();\n\n return;\n }\n\n if (isPeriod(event)) {\n if (\n event.key === this.numberLocaleConfig.fractionSeparator &&\n this.viewValue.indexOf(this.numberLocaleConfig.fractionSeparator) !== -1\n ) {\n event.preventDefault();\n\n return;\n }\n }\n\n if (allowedKeys.indexOf(keyCode) !== -1 || [\n isCtrlA,\n isCtrlC,\n isCtrlV,\n isCtrlX,\n isCtrlZ,\n isFunctionKey,\n isPeriod\n ].some((fn) => fn(event))) {\n // let it happen, don't do anything\n return;\n }\n // Ensure that it is not a number and stop the keypress\n if (event.shiftKey || (!isNumberKey(event) && !isNumpadKey(event))) {\n event.preventDefault();\n\n // process steps\n const step = event.shiftKey ? this.bigStep : this.step;\n\n if (keyCode === UP_ARROW) {\n this.stepUp(step);\n }\n\n if (keyCode === DOWN_ARROW) {\n this.stepDown(step);\n }\n }\n }\n\n onInput(event: InputEvent) {\n const currentValueLength = this.formatNumber(this.value)?.length || 0;\n\n setTimeout(() => {\n const fromPaste = event.inputType === 'insertFromPaste';\n let formattedValue: string | null;\n if (fromPaste) {\n formattedValue = this.formatNumber(this.valueFromPaste);\n } else {\n /*this.viewValue is raw and should be reformatted to localized number */\n formattedValue = this.formatViewValue();\n\n const offsetWhenSeparatorAdded = 2;\n\n Promise.resolve().then(() => {\n if (Math.abs(this.viewValue.length - currentValueLength) === offsetWhenSeparatorAdded) {\n const cursorPosition = Math.max(\n 0,\n (this.nativeElement.selectionStart || 0) +\n Math.sign(this.viewValue.length - currentValueLength)\n );\n\n this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);\n this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);\n }\n });\n }\n this.setViewValue(formattedValue, !fromPaste);\n this.viewToModelUpdate(formattedValue);\n });\n }\n\n onPaste(event: ClipboardEvent) {\n this.valueFromPaste = this.checkAndNormalizeLocalizedNumber(event.clipboardData?.getData('text'));\n if (this.valueFromPaste === null) {\n event.preventDefault();\n }\n }\n\n stepUp(step: number) {\n this.nativeElement.focus();\n\n const res = Math.max(Math.min(add(this.value || 0, step), this.max), this.min);\n\n this.setViewValue(this.formatNumber(res));\n\n this._value = res;\n this.cvaOnChange(res);\n this.valueChange.emit(res);\n }\n\n stepDown(step: number) {\n this.nativeElement.focus();\n\n const res = Math.min(Math.max(add(this.value || 0, -step), this.min), this.max);\n\n this.setViewValue(this.formatNumber(res));\n\n this._value = res;\n this.cvaOnChange(res);\n this.valueChange.emit(res);\n }\n\n private cvaOnChange: (value: any) => void = () => {};\n\n private setViewValue(value: string | null, savePosition: boolean = false) {\n const cursorPosition = this.nativeElement.selectionStart;\n\n this.renderer.setProperty(this.nativeElement, 'value', value);\n\n if (savePosition) {\n this.renderer.setProperty(this.nativeElement, 'selectionStart', cursorPosition);\n this.renderer.setProperty(this.nativeElement, 'selectionEnd', cursorPosition);\n }\n }\n\n private viewToModelUpdate(newValue: string | null) {\n const normalizedValue = newValue === null ? null : +this.normalizeNumber(newValue);\n\n if (normalizedValue !== this.value) {\n this._value = normalizedValue;\n this.cvaOnChange(normalizedValue);\n this.valueChange.emit(normalizedValue);\n }\n\n this.ngControl?.updateValueAndValidity({ emitEvent: false });\n }\n\n private formatViewValue(): string | null {\n if (this.viewValue === null || this.viewValue === '' || Number.isNaN(+this.normalizeNumber(this.viewValue))) {\n return null;\n }\n\n const separator =\n this.numberLocaleConfig.groupSeparator.includes(' ') && this.numberLocaleConfig.fractionSeparator === ','\n ? /[,.]/\n : this.numberLocaleConfig.fractionSeparator;\n\n const [intPart, fractionPart] = this.viewValue\n .split(separator)\n .map((valuePart) => this.normalizeNumber(valuePart));\n\n return this.createLocalizedNumberFromParts(+intPart, fractionPart);\n }\n\n private formatNumber(value: number | null | undefined): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n const [intPart, fractionPart] = value.toString().split('.');\n\n return this.createLocalizedNumberFromParts(+intPart, fractionPart);\n }\n\n private createLocalizedNumberFromParts(intPart: number, fractionPart?: string): string {\n const formatOptions = {\n useGrouping: this.withThousandSeparator,\n maximumFractionDigits: 20\n };\n\n if (this.withThousandSeparator && this.numberLocaleConfig.startFormattingFrom) {\n formatOptions.useGrouping = intPart >= Math.pow(10, this.numberLocaleConfig.startFormattingFrom);\n }\n\n const localeId = this.localeService.id === 'es-LA' ? 'ru-RU' : this.localeService.id;\n\n const formatter = new Intl.NumberFormat(localeId, formatOptions);\n const formattedFractionPart = fractionPart\n ?.split('')\n .map((numChar) => formatter.format(+numChar))\n .join('');\n\n return formattedFractionPart === undefined\n ? formatter.format(intPart)\n : `${formatter.format(intPart)}${this.numberLocaleConfig.fractionSeparator}${formattedFractionPart}`;\n }\n\n /**\n * Method that returns a string representation of a number without localized separators\n */\n private normalizeNumber(value: string | null | undefined, customConfig?: NumberLocaleConfig): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const { groupSeparator, fractionSeparator } = customConfig || this.numberLocaleConfig;\n const groupSeparatorRegexp = new RegExp(`[${groupSeparator.join('')}]`, 'g');\n const fractionSeparatorRegexp = new RegExp(`\\\\${fractionSeparator}`, 'g');\n\n return value.toString().replace(groupSeparatorRegexp, '').replace(fractionSeparatorRegexp, '.');\n }\n\n private updateLocaleParams = (id: string) => {\n this.numberLocaleConfig = this.localeService.locales[id].input.number;\n\n this.setViewValue(this.formatNumber(this.value));\n };\n\n private checkAndNormalizeLocalizedNumber(num: string | null | undefined): number | null {\n if (num === null || num === undefined) {\n return null;\n }\n\n /* if some locale input config satisfies pasted number, try to normalize with selected locale config */\n let numberOutput: number | null = null;\n for (const { config } of this.allNumberLocaleConfigs) {\n const normalized = +this.normalizeNumber(num, config);\n if (!Number.isNaN(normalized)) {\n numberOutput = normalized;\n break;\n }\n }\n\n return numberOutput;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const KBQ_INPUT_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('KBQ_INPUT_VALUE_ACCESSOR');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\nimport {\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Self\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n mixinErrorState\n} from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Subject } from 'rxjs';\nimport { getKbqInputUnsupportedTypeError } from './input-errors';\nimport { KbqNumberInput } from './input-number';\nimport { KBQ_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\n\nconst KBQ_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\nlet nextUniqueId = 0;\n\n/** @docs-private */\nexport class KbqInputBase {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public defaultErrorStateMatcher: ErrorStateMatcher,\n public parentForm: NgForm,\n public parentFormGroup: FormGroupDirective,\n public ngControl: NgControl\n ) {}\n}\n\n/** @docs-private */\nexport const KbqInputMixinBase: CanUpdateErrorStateCtor & typeof KbqInputBase = mixinErrorState(KbqInputBase);\n\n@Directive({\n selector: `input[kbqInput]`,\n exportAs: 'kbqInput',\n host: {\n class: 'kbq-input',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[attr.disabled]': 'disabled || null',\n '[required]': 'required',\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)'\n },\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqInput\n }\n ]\n})\nexport class KbqInput\n extends KbqInputMixinBase\n implements KbqFormFieldControl<any>, OnChanges, OnDestroy, DoCheck, CanUpdateErrorState, OnChanges\n{\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n controlType: string = 'input';\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n protected uid = `kbq-input-${nextUniqueId++}`;\n protected previousNativeValue: any;\n protected neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter((t) => getSupportedInputTypes().has(t));\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n\n private _disabled = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required = false;\n\n /** Input type of the element. */\n @Input()\n get type(): string {\n return this._type;\n }\n\n set type(value: string) {\n this._type = value || 'text';\n this.validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (getSupportedInputTypes().has(this._type)) {\n this.elementRef.nativeElement.type = this._type;\n }\n }\n\n private _type = 'text';\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this.inputValueAccessor.value;\n }\n\n set value(value: string) {\n if (value !== this.value) {\n this.inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n private inputValueAccessor: { value: any };\n\n constructor(\n protected elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Self() public numberInput: KbqNumberInput,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(KBQ_INPUT_VALUE_ACCESSOR) inputValueAccessor: any\n ) {\n super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n // If no input value accessor was explicitly specified, use the element as the input value accessor.\n this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n this.previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n /** Focuses the input. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onBlur(): void {\n this.focusChanged(false);\n\n if (this.ngControl?.control) {\n const control = this.ngControl.control;\n\n control.updateValueAndValidity({ emitEvent: false });\n (control.statusChanges as EventEmitter<string>).emit(control.status);\n }\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n focusChanged(isFocused: boolean) {\n if (this.focused !== isFocused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.isNeverEmpty() && !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected dirtyCheckNativeValue() {\n const newValue = this.value;\n\n if (this.previousNativeValue !== newValue) {\n this.previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Make sure the input is a supported type. */\n protected validateType() {\n if (KBQ_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {\n throw getKbqInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected isNeverEmpty() {\n return this.neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected isBadInput() {\n // The `validity` property won't be present on platform-server.\n const validity = (this.elementRef.nativeElement as HTMLInputElement).validity;\n\n return validity?.badInput;\n }\n}\n\n@Directive({\n selector: 'input[kbqInputMonospace]',\n exportAs: 'KbqInputMonospace',\n host: { class: 'kbq-input_monospace' }\n})\nexport class KbqInputMono {}\n","import { Directive, forwardRef, Input, OnChanges, Provider, SimpleChanges } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\n\nexport const MIN_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MinValidator),\n multi: true\n};\n\n/**\n * A directive which installs the MinValidator for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n */\n@Directive({\n selector: '[min][formControlName],[min][formControl],[min][ngModel]',\n providers: [MIN_VALIDATOR],\n host: {\n '[attr.min]': 'min ? min : null'\n }\n})\nexport class MinValidator implements Validator, OnChanges {\n @Input() min: number;\n private validator: ValidatorFn;\n private onChange: () => void;\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('min' in changes) {\n this.createValidator();\n\n if (this.onChange) {\n this.onChange();\n }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n private createValidator(): void {\n this.validator = Validators.min(parseInt(this.min as unknown as string, 10));\n }\n}\n\nexport const MAX_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaxValidator),\n multi: true\n};\n\n/**\n * A directive which installs the MaxValidator for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n */\n@Directive({\n selector: '[max][formControlName],[max][formControl],[max][ngModel]',\n providers: [MAX_VALIDATOR],\n host: {\n '[attr.max]': 'max ? max : null'\n }\n})\nexport class MaxValidator implements Validator, OnChanges {\n @Input() max: number | string;\n private validator: ValidatorFn;\n private onChange: () => void;\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('max' in changes) {\n this.createValidator();\n\n if (this.onChange) {\n this.onChange();\n }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n private createValidator(): void {\n this.validator = Validators.max(parseInt(this.max as unknown as string, 10));\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Self\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { CanUpdateErrorState, ErrorStateMatcher } from '@koobiq/components/core';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Subject } from 'rxjs';\nimport { KbqInputMixinBase } from './input';\nimport { KBQ_INPUT_VALUE_ACCESSOR } from './input-value-accessor';\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: `input[kbqInputPassword]`,\n exportAs: 'kbqInputPassword',\n host: {\n class: 'kbq-input kbq-input-password',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.type]': 'elementType',\n '[attr.placeholder]': 'placeholder',\n '[attr.disabled]': 'disabled || null',\n '[required]': 'required',\n\n '(blur)': 'onBlur()',\n '(focus)': 'focusChanged(true)',\n '(input)': 'onInput()'\n },\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqInputPassword\n }\n ]\n})\nexport class KbqInputPassword\n extends KbqInputMixinBase\n implements KbqFormFieldControl<any>, OnChanges, OnDestroy, DoCheck, CanUpdateErrorState, OnChanges\n{\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n readonly stateChanges = new Subject<any>();\n\n readonly checkRule = new Subject<void>();\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n controlType: string = 'input-password';\n\n elementType: string = 'password';\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n protected uid = `kbq-input-${nextUniqueId++}`;\n protected previousNativeValue: any;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl?.disabled !== null) {\n return this.ngControl.disabled;\n }\n\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next(null);\n }\n }\n\n private _disabled = false;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required = false;\n\n // this.elementRef.nativeElement.type = this._type;\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this._inputValueAccessor.value;\n }\n\n set value(value: string) {\n if (value === this.value) {\n return;\n }\n\n this._inputValueAccessor.value = value;\n this.stateChanges.next(null);\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this.elementRef.nativeElement.value && !this.isBadInput();\n }\n\n private _inputValueAccessor: { value: any };\n\n constructor(\n protected elementRef: ElementRef,\n @Optional() @Self() ngControl: NgControl,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(KBQ_INPUT_VALUE_ACCESSOR) inputValueAccessor: any\n ) {\n super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;\n\n this.previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnChanges() {\n this.stateChanges.next(null);\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this.dirtyCheckNativeValue();\n }\n\n checkRules() {\n this.checkRule.next();\n }\n\n toggleType() {\n this.elementType = this.elementType === 'password' ? 'text' : 'password';\n }\n\n /** Focuses the input. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n onBlur(): void {\n if (this.ngControl?.control) {\n const control = this.ngControl.control;\n\n control.updateValueAndValidity({ emitEvent: false });\n (control.statusChanges as EventEmitter<string>).emit(control.status);\n }\n\n this.focusChanged(false);\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n focusChanged(isFocused: boolean) {\n if (isFocused === this.focused) {\n return;\n }\n\n this.focused = isFocused;\n this.stateChanges.next({ focused: this.focused });\n }\n\n onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected dirtyCheckNativeValue() {\n if (this.previousNativeValue !== this.value) {\n this.previousNativeValue = this.value;\n this.stateChanges.next(null);\n }\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected isBadInput() {\n // The `validity` property won't be present on platform-server.\n return (this.elementRef.nativeElement as HTMLInputElement).validity?.badInput;\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KbqCommonModule } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputMono } from './input';\nimport { KbqNumberInput } from './input-number';\nimport { MaxValidator, MinValidator } from './input-number-validators';\nimport { KbqInputPassword } from './input-password';\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n KbqCommonModule,\n FormsModule,\n KbqIconModule\n ],\n declarations: [\n KbqInput,\n KbqNumberInput,\n KbqInputPassword,\n KbqInputMono,\n MinValidator,\n MaxValidator\n ],\n exports: [\n KbqInput,\n KbqNumberInput,\n KbqInputPassword,\n KbqInputMono,\n MinValidator,\n MaxValidator\n ]\n})\nexport class KbqInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextUniqueId"],"mappings":"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"}
|