@koobiq/components 21.0.1 → 21.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/badge/_badge-theme.scss +31 -0
- package/breadcrumbs/breadcrumbs.scss +5 -1
- package/checkbox/_checkbox-theme.scss +0 -17
- package/checkbox/checkbox-tokens.scss +0 -4
- package/code-block/_code-block-theme.scss +7 -6
- package/code-block/code-block-tokens.scss +8 -4
- package/code-block/code-block.scss +54 -32
- package/content-panel/content-panel-header.scss +2 -3
- package/content-panel/content-panel.scss +3 -0
- package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -2
- package/fesm2022/koobiq-components-accordion.mjs +4 -4
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -2
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +2 -2
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +18 -8
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +78 -10
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +63 -379
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +4 -4
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +300 -37
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +151 -60
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +3 -3
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +3 -3
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +17 -8
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +115 -36
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +3 -3
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +90 -27
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +2 -2
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +19 -2
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +76 -17
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +1 -1
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +3 -3
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +86 -25
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +4 -4
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +116 -38
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +86 -7
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +41 -19
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +29 -17
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +49 -12
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +198 -186
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +49 -25
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +30 -11
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +1 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +28 -11
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +2 -2
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +71 -16
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +2 -2
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +2 -2
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +25 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +90 -17
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +27 -7
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +4 -4
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +71 -27
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +0 -12
- package/file-upload/file-upload-tokens.scss +0 -1
- package/file-upload/file-upload.scss +0 -1
- package/filter-bar/_filter-bar-theme.scss +7 -8
- package/filter-bar/filter-bar.scss +0 -1
- package/filter-bar/pipes/base-pipe.scss +36 -2
- package/filter-bar/pipes/pipe-multi-tree-select.scss +27 -0
- package/form-field/_fieldset-theme.scss +2 -7
- package/form-field/_form-field-theme.scss +9 -22
- package/form-field/_hint-theme.scss +20 -0
- package/form-field/fieldset-tokens.scss +0 -1
- package/form-field/fieldset.scss +0 -3
- package/form-field/form-field-tokens.scss +1 -1
- package/form-field/form-field.scss +9 -0
- package/form-field/hint-tokens.scss +3 -0
- package/modal/modal.scss +2 -0
- package/navbar/_navbar-item_vertical.scss +48 -2
- package/navbar/_navbar-theme.scss +11 -3
- package/navbar/navbar-item.scss +17 -0
- package/navbar/navbar-tokens.scss +3 -0
- package/package.json +4 -4
- package/popover/popover.scss +1 -1
- package/radio/_radio-theme.scss +0 -30
- package/radio/radio-tokens.scss +0 -2
- package/schematics/migrations/deprecated-icons/README.md +21 -5
- package/schematics/migrations/deprecated-icons/index.cjs +8 -22
- package/schematics/migrations/deprecated-icons/schema.json +1 -1
- package/schematics/migrations/icons-replacement/README.md +16 -2
- package/schematics/migrations/icons-replacement/index.cjs +18 -16
- package/schematics/migrations/icons-replacement/schema.json +12 -3
- package/schematics/migrations/new-icons-pack/README.md +37 -25
- package/schematics/migrations/new-icons-pack/index.cjs +22 -32
- package/schematics/migrations/new-icons-pack/replacement.json +2 -14
- package/schematics/migrations/new-icons-pack/schema.json +3 -3
- package/schematics/ng-add/index.cjs +4 -4
- package/schematics/utils/custom-data.cjs +64 -0
- package/schematics/utils/icon-migration.cjs +9 -3
- package/schematics/utils/messages.cjs +4 -0
- package/schematics/utils/package-config.cjs +19 -0
- package/select/select.scss +7 -0
- package/tabs/_tabs-common.scss +23 -0
- package/textarea/textarea-tokens.scss +4 -1
- package/toast/toast.component.scss +1 -0
- package/toggle/_toggle-theme.scss +0 -17
- package/tooltip/tooltip.scss +1 -1
- package/top-bar/top-bar-tokens.scss +1 -0
- package/top-bar/top-bar.scss +10 -0
- package/types/koobiq-components-accordion.d.ts +25 -0
- package/types/koobiq-components-button-toggle.d.ts +6 -0
- package/types/koobiq-components-checkbox.d.ts +30 -0
- package/types/koobiq-components-clamped-text.d.ts +16 -3
- package/types/koobiq-components-code-block.d.ts +17 -3
- package/types/koobiq-components-core.d.ts +226 -13
- package/types/koobiq-components-datepicker.d.ts +28 -1
- package/types/koobiq-components-divider.d.ts +28 -10
- package/types/koobiq-components-dropdown.d.ts +19 -0
- package/types/koobiq-components-filter-bar.d.ts +77 -4
- package/types/koobiq-components-flag.d.ts +18 -0
- package/types/koobiq-components-form-field.d.ts +87 -6
- package/types/koobiq-components-icon.d.ts +15 -0
- package/types/koobiq-components-inline-edit.d.ts +8 -1
- package/types/koobiq-components-input.d.ts +22 -3
- package/types/koobiq-components-list.d.ts +6 -0
- package/types/koobiq-components-modal.d.ts +7 -0
- package/types/koobiq-components-navbar.d.ts +71 -7
- package/types/koobiq-components-notification-center.d.ts +13 -0
- package/types/koobiq-components-overflow-items.d.ts +26 -2
- package/types/koobiq-components-popover.d.ts +38 -3
- package/types/koobiq-components-radio.d.ts +30 -0
- package/types/koobiq-components-search-expandable.d.ts +10 -0
- package/types/koobiq-components-select.d.ts +36 -4
- package/types/koobiq-components-sidepanel.d.ts +52 -1
- package/types/koobiq-components-splitter.d.ts +13 -4
- package/types/koobiq-components-tabs.d.ts +4 -0
- package/types/koobiq-components-tags.d.ts +6 -0
- package/types/koobiq-components-textarea.d.ts +9 -2
- package/types/koobiq-components-timepicker.d.ts +15 -0
- package/types/koobiq-components-toggle.d.ts +30 -0
- package/types/koobiq-components-tooltip.d.ts +55 -10
- package/types/koobiq-components-top-bar.d.ts +11 -3
- package/types/koobiq-components-tree-select.d.ts +12 -0
- package/types/koobiq-components-tree.d.ts +37 -2
|
@@ -275,7 +275,7 @@ class KbqCalendarHeader {
|
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
277
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqCalendarHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
278
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqCalendarHeader, isStandalone: true, selector: "kbq-calendar-header", inputs: { activeDateInput: { classPropertyName: "activeDateInput", publicName: "activeDate", isSignal: true, isRequired: false, transformFunction: null }, maxDateInput: { classPropertyName: "maxDateInput", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, minDateInput: { classPropertyName: "minDateInput", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeDateChange: "activeDateChange", monthSelected: "monthSelected", yearSelected: "yearSelected" }, host: { classAttribute: "kbq-calendar-header" }, exportAs: ["kbqCalendarHeader"], usesOnChanges: true, ngImport: i0, template: "<div class=\"kbq-calendar-header__select-group\">\n <kbq-select\n #monthSelect=\"kbqSelect\"\n class=\"kbq-calendar-header__select\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selectedMonth\"\n (selectionChange)=\"onMonthSelected($event.value)\"\n >\n <button\n kbq-button\n kbq-select-matcher\n class=\"layout-padding-right-xs\"\n [class.kbq-active]=\"monthSelect.panelOpen\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n >\n {{ monthNames[selectedMonth].nameShort | titlecase }}\n\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"layout-padding-left-3xs\" [color]=\"'contrast'\"></i>\n </button>\n\n @for (month of monthNames; track month.nameShort) {\n <kbq-option [disabled]=\"month.disabled\" [kbqTooltipDisabled]=\"true\" [value]=\"month.value\">\n {{ month.name }}\n </kbq-option>\n }\n </kbq-select>\n\n <kbq-select\n #yearSelect=\"kbqSelect\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selectedYear\"\n (selectionChange)=\"onYearSelected($event.value)\"\n >\n <button\n kbq-button\n kbq-select-matcher\n class=\"layout-padding-right-xs\"\n [class.kbq-active]=\"yearSelect.panelOpen\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n >\n {{ selectedYear }}\n\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"layout-padding-left-3xs\"></i>\n </button>\n\n @for (year of years; track year) {\n <kbq-option [kbqTooltipDisabled]=\"true\" [value]=\"year\">\n {{ year }}\n </kbq-option>\n }\n </kbq-select>\n</div>\n\n<div class=\"kbq-calendar-header__button-group\">\n <button\n kbq-button\n class=\"kbq-calendar-header__previous-button\"\n [attr.aria-label]=\"a11yLocaleConfiguration().previousMonth\"\n [color]=\"'contrast'\"\n [disabled]=\"previousDisabled\"\n [kbqStyle]=\"'transparent'\"\n [tabindex]=\"-1\"\n (click)=\"selectPreviousMonth()\"\n >\n <i kbq-icon=\"kbq-chevron-left_16\"></i>\n </button>\n\n <button\n kbq-button\n [attr.aria-label]=\"a11yLocaleConfiguration().currentDate\"\n [color]=\"'contrast'\"\n [disabled]=\"currentDisabled\"\n [kbqStyle]=\"'transparent'\"\n [tabindex]=\"-1\"\n (click)=\"selectCurrentDate()\"\n >\n <i kbq-icon=\"kbq-circle-xs_16\"></i>\n </button>\n\n <button\n kbq-button\n class=\"kbq-calendar-header__next-button\"\n [attr.aria-label]=\"a11yLocaleConfiguration().nextMonth\"\n [color]=\"'contrast'\"\n [disabled]=\"nextDisabled\"\n [kbqStyle]=\"'transparent'\"\n [tabindex]=\"-1\"\n (click)=\"selectNextMonth()\"\n >\n <i kbq-icon=\"kbq-chevron-right_16\"></i>\n </button>\n</div>\n", styles: [".kbq-calendar-header{display:flex;flex-direction:row;justify-content:space-between;padding-right:var(--kbq-datepicker-size-header-padding-horizontal);padding-left:var(--kbq-datepicker-size-header-padding-horizontal);margin-bottom:var(--kbq-datepicker-size-header-margin-bottom)}.kbq-calendar-header__select{width:auto!important}.kbq-calendar-header__button-group,.kbq-calendar-header__select-group{display:flex;flex-direction:row}.kbq-calendar-select-panel{margin-top:2px;min-width:98%!important}.kbq-calendar-select-panel .kbq-select__content{max-height:384px;overflow-x:hidden;scrollbar-gutter:auto}.kbq-calendar-select-panel .kbq-select__content .kbq-option{min-width:65px}\n"], dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["aria-hidden", "iconSize", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqSelectModule }, { kind: "component", type: i3.KbqSelect, selector: "kbq-select", inputs: ["hiddenItemsText", "hiddenItemsTextFormatter", "aria-label", "showPreselectedValues", "triggerValuesLimit", "panelClass", "backdropClass", "errorStateMatcher", "sortComparator", "multiline", "searchMinOptionsThreshold", "scrolledToBottomOffset", "hasBackdrop", "placeholder", "required", "multiple", "compareWith", "virtualOptionFactory", "clearPredicate", "selectAllToggle", "selectAll", "selectAllHandler", "panelWidth", "panelMinWidth", "panelMaxWidth", "panelMaxHeight", "value", "id", "tabIndex", "disabled"], outputs: ["openedChange", "beforeOpened", "opened", "closed", "selectionChange", "onSelectAll", "valueChange", "scrolledToBottom"], exportAs: ["kbqSelect"] }, { kind: "directive", type: i3.KbqOptionTooltip, selector: "kbq-option", inputs: ["ignoreTooltipPointerEvents"] }, { kind: "component", type: i4.KbqOption, selector: "kbq-option", inputs: ["value", "selectable", "userSelect", "showCheckbox", "viewValue", "disabled"], outputs: ["onSelectionChange"], exportAs: ["kbqOption"] }, { kind: "directive", type: i4.KbqSelectMatcher, selector: "kbq-select-matcher, [kbq-select-matcher]", inputs: ["useDefaultHandlers"] }, { kind: "ngmodule", type: KbqOptionModule }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
278
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqCalendarHeader, isStandalone: true, selector: "kbq-calendar-header", inputs: { activeDateInput: { classPropertyName: "activeDateInput", publicName: "activeDate", isSignal: true, isRequired: false, transformFunction: null }, maxDateInput: { classPropertyName: "maxDateInput", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, minDateInput: { classPropertyName: "minDateInput", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeDateChange: "activeDateChange", monthSelected: "monthSelected", yearSelected: "yearSelected" }, host: { classAttribute: "kbq-calendar-header" }, exportAs: ["kbqCalendarHeader"], usesOnChanges: true, ngImport: i0, template: "<div class=\"kbq-calendar-header__select-group\">\n <kbq-select\n #monthSelect=\"kbqSelect\"\n class=\"kbq-calendar-header__select\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selectedMonth\"\n (selectionChange)=\"onMonthSelected($event.value)\"\n >\n <button\n kbq-button\n kbq-select-matcher\n class=\"layout-padding-right-xs\"\n [class.kbq-active]=\"monthSelect.panelOpen\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n >\n {{ monthNames[selectedMonth].nameShort | titlecase }}\n\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"layout-padding-left-3xs\" [color]=\"'contrast'\"></i>\n </button>\n\n @for (month of monthNames; track month.nameShort) {\n <kbq-option [disabled]=\"month.disabled\" [kbqTooltipDisabled]=\"true\" [value]=\"month.value\">\n {{ month.name }}\n </kbq-option>\n }\n </kbq-select>\n\n <kbq-select\n #yearSelect=\"kbqSelect\"\n [panelClass]=\"'kbq-calendar-select-panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selectedYear\"\n (selectionChange)=\"onYearSelected($event.value)\"\n >\n <button\n kbq-button\n kbq-select-matcher\n class=\"layout-padding-right-xs\"\n [class.kbq-active]=\"yearSelect.panelOpen\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n >\n {{ selectedYear }}\n\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"layout-padding-left-3xs\"></i>\n </button>\n\n @for (year of years; track year) {\n <kbq-option [kbqTooltipDisabled]=\"true\" [value]=\"year\">\n {{ year }}\n </kbq-option>\n }\n </kbq-select>\n</div>\n\n<div class=\"kbq-calendar-header__button-group\">\n <button\n kbq-button\n class=\"kbq-calendar-header__previous-button\"\n [attr.aria-label]=\"a11yLocaleConfiguration().previousMonth\"\n [color]=\"'contrast'\"\n [disabled]=\"previousDisabled\"\n [kbqStyle]=\"'transparent'\"\n [tabindex]=\"-1\"\n (click)=\"selectPreviousMonth()\"\n >\n <i kbq-icon=\"kbq-chevron-left_16\"></i>\n </button>\n\n <button\n kbq-button\n [attr.aria-label]=\"a11yLocaleConfiguration().currentDate\"\n [color]=\"'contrast'\"\n [disabled]=\"currentDisabled\"\n [kbqStyle]=\"'transparent'\"\n [tabindex]=\"-1\"\n (click)=\"selectCurrentDate()\"\n >\n <i kbq-icon=\"kbq-circle-xs_16\"></i>\n </button>\n\n <button\n kbq-button\n class=\"kbq-calendar-header__next-button\"\n [attr.aria-label]=\"a11yLocaleConfiguration().nextMonth\"\n [color]=\"'contrast'\"\n [disabled]=\"nextDisabled\"\n [kbqStyle]=\"'transparent'\"\n [tabindex]=\"-1\"\n (click)=\"selectNextMonth()\"\n >\n <i kbq-icon=\"kbq-chevron-right_16\"></i>\n </button>\n</div>\n", styles: [".kbq-calendar-header{display:flex;flex-direction:row;justify-content:space-between;padding-right:var(--kbq-datepicker-size-header-padding-horizontal);padding-left:var(--kbq-datepicker-size-header-padding-horizontal);margin-bottom:var(--kbq-datepicker-size-header-margin-bottom)}.kbq-calendar-header__select{width:auto!important}.kbq-calendar-header__button-group,.kbq-calendar-header__select-group{display:flex;flex-direction:row}.kbq-calendar-select-panel{margin-top:2px;min-width:98%!important}.kbq-calendar-select-panel .kbq-select__content{max-height:384px;overflow-x:hidden;scrollbar-gutter:auto}.kbq-calendar-select-panel .kbq-select__content .kbq-option{min-width:65px}\n"], dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["aria-hidden", "iconSize", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqSelectModule }, { kind: "component", type: i3.KbqSelect, selector: "kbq-select", inputs: ["hiddenItemsText", "hiddenItemsTextFormatter", "aria-label", "showPreselectedValues", "triggerValuesLimit", "panelClass", "backdropClass", "errorStateMatcher", "sortComparator", "multiline", "multilineOptions", "searchMinOptionsThreshold", "scrolledToBottomOffset", "hasBackdrop", "placeholder", "required", "multiple", "compareWith", "virtualOptionFactory", "clearPredicate", "selectAllToggle", "selectAll", "selectAllHandler", "panelWidth", "panelMinWidth", "panelMaxWidth", "panelMaxHeight", "value", "id", "tabIndex", "disabled"], outputs: ["openedChange", "beforeOpened", "opened", "closed", "selectionChange", "onSelectAll", "valueChange", "scrolledToBottom"], exportAs: ["kbqSelect"] }, { kind: "directive", type: i3.KbqOptionTooltip, selector: "kbq-option", inputs: ["ignoreTooltipPointerEvents"] }, { kind: "component", type: i4.KbqOption, selector: "kbq-option", inputs: ["value", "selectable", "userSelect", "showCheckbox", "viewValue", "disabled"], outputs: ["onSelectionChange"], exportAs: ["kbqOption"] }, { kind: "directive", type: i4.KbqSelectMatcher, selector: "kbq-select-matcher, [kbq-select-matcher]", inputs: ["useDefaultHandlers"] }, { kind: "ngmodule", type: KbqOptionModule }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
279
279
|
}
|
|
280
280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqCalendarHeader, decorators: [{
|
|
281
281
|
type: Component,
|
|
@@ -625,12 +625,22 @@ var DateParts;
|
|
|
625
625
|
})(DateParts || (DateParts = {}));
|
|
626
626
|
const MAX_YEAR = 9999;
|
|
627
627
|
const YEAR_LENGTH = 4;
|
|
628
|
+
/** Days in the longest month */
|
|
629
|
+
const MAX_DAYS_IN_MONTH = 31;
|
|
630
|
+
/** A one- or two-digit year below it falls in the current century, any other in the previous one */
|
|
631
|
+
const SHORT_YEAR_PIVOT = 30;
|
|
632
|
+
/** First year of the current century */
|
|
633
|
+
const CURRENT_CENTURY_START = 2000;
|
|
634
|
+
/** First year of the previous century */
|
|
635
|
+
const PREVIOUS_CENTURY_START = 1900;
|
|
636
|
+
/** Key of the error reported for text that is not a date */
|
|
637
|
+
const parseErrorKey = 'kbqDatepickerParse';
|
|
628
638
|
class DateDigit {
|
|
629
639
|
constructor(value, start, length) {
|
|
630
640
|
this.value = value;
|
|
631
641
|
this.start = start;
|
|
632
642
|
this.length = length;
|
|
633
|
-
this.maxDays =
|
|
643
|
+
this.maxDays = MAX_DAYS_IN_MONTH;
|
|
634
644
|
this.maxMonth = 12;
|
|
635
645
|
if (value === DateParts.day) {
|
|
636
646
|
this.parse = this.parseDay;
|
|
@@ -944,6 +954,12 @@ class KbqDatepickerInput {
|
|
|
944
954
|
this.datepickerSubscription = Subscription.EMPTY;
|
|
945
955
|
/** Whether the last value set on the input was valid. */
|
|
946
956
|
this.lastValueValid = false;
|
|
957
|
+
/**
|
|
958
|
+
* Whether a drag started in this field, so that its drop here is the field's own text.
|
|
959
|
+
*
|
|
960
|
+
* @docs-private
|
|
961
|
+
*/
|
|
962
|
+
this.draggingOwnText = false;
|
|
947
963
|
this.firstDigit = null;
|
|
948
964
|
this.secondDigit = null;
|
|
949
965
|
this.thirdDigit = null;
|
|
@@ -956,23 +972,9 @@ class KbqDatepickerInput {
|
|
|
956
972
|
*/
|
|
957
973
|
this.onTouched = () => { };
|
|
958
974
|
this.onInput = () => {
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
const newTimeObj = this.getDateFromString(formattedValue);
|
|
962
|
-
this.lastValueValid = !!newTimeObj;
|
|
963
|
-
if (!newTimeObj) {
|
|
964
|
-
if (!this.viewValue) {
|
|
965
|
-
this.lastValueValid = false;
|
|
966
|
-
this.updateValue(newTimeObj);
|
|
967
|
-
}
|
|
968
|
-
else {
|
|
969
|
-
this.control?.updateValueAndValidity();
|
|
970
|
-
}
|
|
971
|
-
return;
|
|
975
|
+
if (!this.readViewValue() && this.viewValue) {
|
|
976
|
+
this.control?.updateValueAndValidity();
|
|
972
977
|
}
|
|
973
|
-
this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateInputFormat), true);
|
|
974
|
-
this.selectNextDigitByCursor(cursorPosition);
|
|
975
|
-
this.updateValue(newTimeObj);
|
|
976
978
|
};
|
|
977
979
|
this.parseOnBlur = () => {
|
|
978
980
|
if (!this.viewValue || !this.readyForParse) {
|
|
@@ -984,29 +986,30 @@ class KbqDatepickerInput {
|
|
|
984
986
|
.map((value) => value)
|
|
985
987
|
.filter((value) => value);
|
|
986
988
|
const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;
|
|
989
|
+
// A text that fails here is reported by `onBlur()` unless the next parse takes it.
|
|
987
990
|
if (viewDigits.length !== 3) {
|
|
988
991
|
this.lastValueValid = false;
|
|
989
992
|
this.valueState.set(null);
|
|
990
|
-
return
|
|
993
|
+
return null;
|
|
991
994
|
}
|
|
992
995
|
date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);
|
|
993
996
|
date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);
|
|
994
997
|
date[this.thirdDigit.fullName] = this.thirdDigit.parse(thirdViewDigit);
|
|
995
998
|
const [digitWithYear, viewDigitWithYear] = [this.firstDigit, this.secondDigit, this.thirdDigit].reduce((acc, digit, index) => (digit.value === DateParts.year ? [digit, viewDigits[index]] : acc), []);
|
|
996
999
|
if (viewDigitWithYear.length < 3) {
|
|
997
|
-
date.year
|
|
1000
|
+
// From the text rather than `date.year`: the year part reads `00` as 1.
|
|
1001
|
+
date.year = this.expandShortYear(parseInt(viewDigitWithYear));
|
|
998
1002
|
}
|
|
999
1003
|
else if (viewDigitWithYear.length < digitWithYear.length) {
|
|
1000
1004
|
this.lastValueValid = false;
|
|
1001
1005
|
this.valueState.set(null);
|
|
1002
|
-
return
|
|
1006
|
+
return null;
|
|
1003
1007
|
}
|
|
1004
1008
|
const newTimeObj = this.createDateTime(date);
|
|
1005
1009
|
if (!newTimeObj) {
|
|
1006
1010
|
this.lastValueValid = false;
|
|
1007
1011
|
this.valueState.set(null);
|
|
1008
|
-
|
|
1009
|
-
return setTimeout(() => this.control?.updateValueAndValidity());
|
|
1012
|
+
return null;
|
|
1010
1013
|
}
|
|
1011
1014
|
/* Check if the number of days entered does not match the entered month */
|
|
1012
1015
|
if (!this.getValidDateOrNull(newTimeObj)) {
|
|
@@ -1022,7 +1025,7 @@ class KbqDatepickerInput {
|
|
|
1022
1025
|
this.parseValidator = () => {
|
|
1023
1026
|
return this.focused() || this.isEmpty() || this.lastValueValid
|
|
1024
1027
|
? null
|
|
1025
|
-
: {
|
|
1028
|
+
: { [parseErrorKey]: { text: this.elementRef.nativeElement.value } };
|
|
1026
1029
|
};
|
|
1027
1030
|
/** The form control validator for the min date. */
|
|
1028
1031
|
this.minValidator = (control) => {
|
|
@@ -1093,15 +1096,22 @@ class KbqDatepickerInput {
|
|
|
1093
1096
|
}
|
|
1094
1097
|
// The date adapter follows the same locale, so its input format may have changed with it: the
|
|
1095
1098
|
// digit layout has to be re-derived and the rendered value re-formatted.
|
|
1099
|
+
// Only a complete value is re-rendered: with none, the text is the user's, and `''` written over it
|
|
1100
|
+
// would leave the form with an error about text that is gone.
|
|
1096
1101
|
untracked(() => {
|
|
1097
1102
|
this.setFormat(this.dateInputFormat);
|
|
1098
|
-
this.
|
|
1103
|
+
const value = this.valueState();
|
|
1104
|
+
if (value)
|
|
1105
|
+
this.setValue(value);
|
|
1099
1106
|
});
|
|
1100
1107
|
});
|
|
1101
1108
|
this.timezoneService.changes.pipe(takeUntilDestroyed()).subscribe(() => {
|
|
1102
1109
|
// The rendered text names a wall clock in the zone it was formatted in. Left as it is, the
|
|
1103
|
-
// next keystroke re-parses it against the new zone and emits a different instant.
|
|
1104
|
-
|
|
1110
|
+
// next keystroke re-parses it against the new zone and emits a different instant. Only a
|
|
1111
|
+
// complete value, as above.
|
|
1112
|
+
const value = this.valueState();
|
|
1113
|
+
if (value)
|
|
1114
|
+
this.setValue(value);
|
|
1105
1115
|
});
|
|
1106
1116
|
}
|
|
1107
1117
|
ngOnChanges(changes) {
|
|
@@ -1251,34 +1261,46 @@ class KbqDatepickerInput {
|
|
|
1251
1261
|
}
|
|
1252
1262
|
/** Handles blur events on the input. */
|
|
1253
1263
|
onBlur() {
|
|
1254
|
-
|
|
1255
|
-
this.
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
}
|
|
1269
|
-
const match = rawValue.match(/^(?<first>\d+)\W(?<second>\d+)\W(?<third>\d+)$/);
|
|
1270
|
-
if (!match?.groups?.first || !match?.groups?.second || !match?.groups?.third) {
|
|
1271
|
-
this.setViewValue(rawValue);
|
|
1272
|
-
return rawValue;
|
|
1273
|
-
}
|
|
1274
|
-
const value = [match.groups.first, match.groups.second, match.groups.third].join(this.separator);
|
|
1275
|
-
const newTimeObj = this.getDateFromString(value);
|
|
1276
|
-
if (!newTimeObj) {
|
|
1277
|
-
this.setViewValue(value);
|
|
1278
|
-
return value;
|
|
1264
|
+
const wasFocused = this.focused();
|
|
1265
|
+
const reportedText = this.control?.getError(parseErrorKey)?.text ?? '';
|
|
1266
|
+
// `focused` goes first, as the validators read it, and `onTouched` last: it is what commits the
|
|
1267
|
+
// value of a control with `updateOn: 'blur'`, and whatever is emitted after it waits for the next blur.
|
|
1268
|
+
this.focusedValue.set(false);
|
|
1269
|
+
// A text the form already knows is not a date: parsing it again would only restart its async validators.
|
|
1270
|
+
if (!reportedText || reportedText !== this.viewValue) {
|
|
1271
|
+
this.parseOnBlur();
|
|
1272
|
+
this.readViewValue();
|
|
1273
|
+
// Text that is not a date reaches the element without a keydown: an undo, an IME, autofill.
|
|
1274
|
+
if (!this.lastValueValid && this.viewValue) {
|
|
1275
|
+
this.valueState.set(null);
|
|
1276
|
+
this.cvaOnChange(null);
|
|
1277
|
+
}
|
|
1279
1278
|
}
|
|
1280
|
-
|
|
1281
|
-
|
|
1279
|
+
if (wasFocused)
|
|
1280
|
+
this.onTouched();
|
|
1281
|
+
}
|
|
1282
|
+
onPaste(event) {
|
|
1283
|
+
event.preventDefault();
|
|
1284
|
+
if (this.isReadOnly)
|
|
1285
|
+
return;
|
|
1286
|
+
this.replaceText(event.clipboardData?.getData('text') ?? '');
|
|
1287
|
+
}
|
|
1288
|
+
/**
|
|
1289
|
+
* Takes dropped text the way a paste is taken. The browser would insert it at the pointer, with no event
|
|
1290
|
+
* the parsing listens to.
|
|
1291
|
+
*
|
|
1292
|
+
* @docs-private
|
|
1293
|
+
*/
|
|
1294
|
+
onDrop(event) {
|
|
1295
|
+
event.preventDefault();
|
|
1296
|
+
// A part dragged within the field would be read as the whole date. A disabled or read-only field is only
|
|
1297
|
+
// reached when an ancestor accepts the drop.
|
|
1298
|
+
if (this.draggingOwnText || this.disabled() || this.isReadOnly)
|
|
1299
|
+
return;
|
|
1300
|
+
this.focus();
|
|
1301
|
+
// Not left to the focus: a window that is not active, where a drag from another one ends, fires none.
|
|
1302
|
+
this.onTouched();
|
|
1303
|
+
this.replaceText(event.dataTransfer?.getData('text') ?? '');
|
|
1282
1304
|
}
|
|
1283
1305
|
toISO8601(value) {
|
|
1284
1306
|
return this.adapter.toIso8601(value);
|
|
@@ -1292,6 +1314,68 @@ class KbqDatepickerInput {
|
|
|
1292
1314
|
getOrigin() {
|
|
1293
1315
|
return this.formField ? this.formField.getConnectedOverlayOrigin() : this.elementRef;
|
|
1294
1316
|
}
|
|
1317
|
+
/** Parses the rendered text as typing does, taking the date it holds. Returns whether there was one. */
|
|
1318
|
+
readViewValue() {
|
|
1319
|
+
const cursorPosition = this.correctedCursorPosition();
|
|
1320
|
+
const newTimeObj = this.getDateFromString(this.replaceSymbols(this.viewValue));
|
|
1321
|
+
this.lastValueValid = !!newTimeObj;
|
|
1322
|
+
if (!newTimeObj) {
|
|
1323
|
+
if (!this.viewValue) {
|
|
1324
|
+
this.updateValue(null);
|
|
1325
|
+
}
|
|
1326
|
+
return false;
|
|
1327
|
+
}
|
|
1328
|
+
this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateInputFormat), true);
|
|
1329
|
+
this.selectNextDigitByCursor(cursorPosition);
|
|
1330
|
+
this.updateValue(newTimeObj);
|
|
1331
|
+
return true;
|
|
1332
|
+
}
|
|
1333
|
+
/** Takes a pasted or dropped text as the whole value; one that is not a date is rejected as a letter key is. */
|
|
1334
|
+
replaceText(text) {
|
|
1335
|
+
// Punctuation around the date comes along when it is copied out of a sentence or brackets.
|
|
1336
|
+
const newTimeObj = this.readPastedDate(text.replace(/^[^\p{L}\d]+|[^\p{L}\d]+$/gu, ''));
|
|
1337
|
+
if (!newTimeObj) {
|
|
1338
|
+
if (text.trim())
|
|
1339
|
+
this.incorrectInput.emit();
|
|
1340
|
+
return;
|
|
1341
|
+
}
|
|
1342
|
+
this.lastValueValid = true;
|
|
1343
|
+
this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateInputFormat));
|
|
1344
|
+
this.updateValue(newTimeObj);
|
|
1345
|
+
}
|
|
1346
|
+
/**
|
|
1347
|
+
* Reads the parts of the format, in its order, from two or three groups of digits split by anything but a
|
|
1348
|
+
* letter. A short day or month is padded and a short year expanded as blur does; a group longer than its
|
|
1349
|
+
* part, such as the year of an ISO date, makes the text not a date.
|
|
1350
|
+
*/
|
|
1351
|
+
readPastedDate(text) {
|
|
1352
|
+
if (!this.readyForParse || !/^\d+(?:[^\p{L}\d]+\d+){1,2}$/u.test(text))
|
|
1353
|
+
return null;
|
|
1354
|
+
const digits = [this.firstDigit, this.secondDigit, this.thirdDigit];
|
|
1355
|
+
const parts = [];
|
|
1356
|
+
for (const [index, part] of text.split(/[^\p{L}\d]+/u).entries()) {
|
|
1357
|
+
const digit = digits[index];
|
|
1358
|
+
if (part.length > digit.length)
|
|
1359
|
+
return null;
|
|
1360
|
+
if (!digit.isYear) {
|
|
1361
|
+
parts.push(part.padStart(digit.length, '0'));
|
|
1362
|
+
}
|
|
1363
|
+
else if (part.length === digit.length) {
|
|
1364
|
+
parts.push(part);
|
|
1365
|
+
}
|
|
1366
|
+
else if (part.length <= 2) {
|
|
1367
|
+
parts.push(`${this.expandShortYear(parseInt(part))}`);
|
|
1368
|
+
}
|
|
1369
|
+
else {
|
|
1370
|
+
return null;
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
return this.getDateFromString(parts.join(this.separator));
|
|
1374
|
+
}
|
|
1375
|
+
/** A year of one or two digits as a full one. */
|
|
1376
|
+
expandShortYear(year) {
|
|
1377
|
+
return year + (year < SHORT_YEAR_PIVOT ? CURRENT_CENTURY_START : PREVIOUS_CENTURY_START);
|
|
1378
|
+
}
|
|
1295
1379
|
saveTimePart(selected) {
|
|
1296
1380
|
const value = this.value();
|
|
1297
1381
|
if (!value) {
|
|
@@ -1427,9 +1511,12 @@ class KbqDatepickerInput {
|
|
|
1427
1511
|
for (const [index, dateDigit] of dateDigits.entries()) {
|
|
1428
1512
|
digitViewValue[dateDigit.fullName] = parseInt(viewDigits[index]);
|
|
1429
1513
|
}
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1514
|
+
const { month, year } = digitViewValue;
|
|
1515
|
+
// Set on every parse: a limit left by an earlier date would cut the day of this one.
|
|
1516
|
+
const maxDays = month && month <= this.firstDigit.maxMonth && !isNaN(year)
|
|
1517
|
+
? this.getLastDayFor(year, month - 1)
|
|
1518
|
+
: MAX_DAYS_IN_MONTH;
|
|
1519
|
+
dateDigits.forEach((digit) => (digit.maxDays = maxDays));
|
|
1433
1520
|
date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);
|
|
1434
1521
|
date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);
|
|
1435
1522
|
date[this.thirdDigit.fullName] = this.thirdDigit.parse(thirdViewDigit);
|
|
@@ -1568,7 +1655,8 @@ class KbqDatepickerInput {
|
|
|
1568
1655
|
return this.createDate(year, month, day);
|
|
1569
1656
|
}
|
|
1570
1657
|
getLastDayFor(year, month) {
|
|
1571
|
-
|
|
1658
|
+
// The adapter's own date: the input's one takes the time of the value, and there may be none.
|
|
1659
|
+
return this.adapter.getNumDaysInMonth(this.adapter.createDate(year, month, 1));
|
|
1572
1660
|
}
|
|
1573
1661
|
decrementDate(date, whatToDecrement) {
|
|
1574
1662
|
let year = this.adapter.getYear(date);
|
|
@@ -1783,7 +1871,7 @@ class KbqDatepickerInput {
|
|
|
1783
1871
|
return this.separatorPositions.includes(position) ? position - 1 : position;
|
|
1784
1872
|
}
|
|
1785
1873
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqDatepickerInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1786
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqDatepickerInput, isStandalone: true, selector: "input[kbqDatepicker], input[kbqCalendar]", inputs: { errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, placeholderInput: { classPropertyName: "placeholderInput", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, kbqDatepickerInput: { classPropertyName: "kbqDatepickerInput", publicName: "kbqDatepicker", isSignal: true, isRequired: false, transformFunction: null }, kbqCalendarInput: { classPropertyName: "kbqCalendarInput", publicName: "kbqCalendar", isSignal: true, isRequired: false, transformFunction: null }, kbqDatepickerFilterInput: { classPropertyName: "kbqDatepickerFilterInput", publicName: "kbqDatepickerFilter", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, minInput: { classPropertyName: "minInput", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, maxInput: { classPropertyName: "maxInput", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, idInput: { classPropertyName: "idInput", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, kbqValidationTooltipInput: { classPropertyName: "kbqValidationTooltipInput", publicName: "kbqValidationTooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { incorrectInput: "incorrectInput", dateChange: "dateChange", dateInput: "dateInput" }, host: { listeners: { "paste": "onPaste($event)", "change": "onChange()", "focus": "focusChanged(true)", "blur": "onBlur()", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "id()", "attr.placeholder": "placeholder()", "attr.required": "required() || null", "attr.disabled": "disabled() || null", "attr.min": "min ? toISO8601(min) : null", "attr.max": "max ? toISO8601(max) : null", "attr.autocomplete": "\"off\"" }, classAttribute: "kbq-input kbq-datepicker" }, providers: [
|
|
1874
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqDatepickerInput, isStandalone: true, selector: "input[kbqDatepicker], input[kbqCalendar]", inputs: { errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, placeholderInput: { classPropertyName: "placeholderInput", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, kbqDatepickerInput: { classPropertyName: "kbqDatepickerInput", publicName: "kbqDatepicker", isSignal: true, isRequired: false, transformFunction: null }, kbqCalendarInput: { classPropertyName: "kbqCalendarInput", publicName: "kbqCalendar", isSignal: true, isRequired: false, transformFunction: null }, kbqDatepickerFilterInput: { classPropertyName: "kbqDatepickerFilterInput", publicName: "kbqDatepickerFilter", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, minInput: { classPropertyName: "minInput", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, maxInput: { classPropertyName: "maxInput", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, idInput: { classPropertyName: "idInput", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, kbqValidationTooltipInput: { classPropertyName: "kbqValidationTooltipInput", publicName: "kbqValidationTooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { incorrectInput: "incorrectInput", dateChange: "dateChange", dateInput: "dateInput" }, host: { listeners: { "paste": "onPaste($event)", "drop": "onDrop($event)", "dragstart": "draggingOwnText = true", "dragend": "draggingOwnText = false", "change": "onChange()", "focus": "focusChanged(true)", "blur": "onBlur()", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "id()", "attr.placeholder": "placeholder()", "attr.required": "required() || null", "attr.disabled": "disabled() || null", "attr.min": "min ? toISO8601(min) : null", "attr.max": "max ? toISO8601(max) : null", "attr.autocomplete": "\"off\"" }, classAttribute: "kbq-input kbq-datepicker" }, providers: [
|
|
1787
1875
|
KBQ_DATEPICKER_VALUE_ACCESSOR,
|
|
1788
1876
|
KBQ_DATEPICKER_VALIDATORS,
|
|
1789
1877
|
{ provide: KbqFormFieldControl, useExisting: KbqDatepickerInput },
|
|
@@ -1810,6 +1898,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImpo
|
|
|
1810
1898
|
'[attr.max]': 'max ? toISO8601(max) : null',
|
|
1811
1899
|
'[attr.autocomplete]': '"off"',
|
|
1812
1900
|
'(paste)': 'onPaste($event)',
|
|
1901
|
+
'(drop)': 'onDrop($event)',
|
|
1902
|
+
'(dragstart)': 'draggingOwnText = true',
|
|
1903
|
+
'(dragend)': 'draggingOwnText = false',
|
|
1813
1904
|
'(change)': 'onChange()',
|
|
1814
1905
|
'(focus)': 'focusChanged(true)',
|
|
1815
1906
|
'(blur)': 'onBlur()',
|
|
@@ -1899,7 +1990,7 @@ class KbqDatepickerToggleIconComponent {
|
|
|
1899
1990
|
datepicker.datepickerInput.focus();
|
|
1900
1991
|
datepicker.open();
|
|
1901
1992
|
}
|
|
1902
|
-
/** @
|
|
1993
|
+
/** @docs-private */
|
|
1903
1994
|
onMousedown(event) {
|
|
1904
1995
|
// A press on the icon, focusable by its `tabindex`, would take the focus from the input.
|
|
1905
1996
|
event.preventDefault();
|