UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

79 lines 12.9 kB
import { computed, Directive, inject, Input, signal } from '@angular/core'; import { MaskitoDirective } from '@maskito/angular'; import { maskitoDateRangeOptionsGenerator } from '@maskito/kit'; import { tuiAsControl, tuiValueTransformerFrom } from '@taiga-ui/cdk/classes'; import { DATE_RANGE_FILLER_LENGTH, RANGE_SEPARATOR_CHAR, TuiDayRange, } from '@taiga-ui/cdk/date-time'; import { tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous'; import { TuiWithTextfield } from '@taiga-ui/core/components/textfield'; import { TuiDropdownAuto } from '@taiga-ui/core/directives/dropdown'; import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers'; import { TUI_DATE_ADAPTER, TUI_INPUT_DATE_OPTIONS_NEW, TuiInputDateBase, tuiWithDateFiller, } from '@taiga-ui/kit/components/input-date'; import { tuiMaskito } from '@taiga-ui/kit/utils'; import { TUI_INPUT_DATE_RANGE_OPTIONS } from './input-date-range.options'; import * as i0 from "@angular/core"; import * as i1 from "@taiga-ui/core/components/textfield"; import * as i2 from "@taiga-ui/core/directives/dropdown"; import * as i3 from "@maskito/angular"; class TuiInputDateRangeDirective extends TuiInputDateBase { constructor() { super(...arguments); this.identity = inject(TUI_ITEMS_HANDLERS).identityMatcher.set((a, b) => a.daySame(b)); this.filler = tuiWithDateFiller((filler) => `${filler}${RANGE_SEPARATOR_CHAR}${filler}`); this.mask = tuiMaskito(computed(() => maskitoDateRangeOptionsGenerator({ dateSeparator: this.format().separator, mode: TUI_DATE_ADAPTER[this.format().mode], min: this.min().toLocalNativeDate(), max: this.max().toLocalNativeDate(), minLength: this.minLength() || {}, maxLength: this.maxLength() || {}, }))); this.minLength = signal(null); this.maxLength = signal(null); } set minLengthSetter(minLength) { this.minLength.set(minLength); } set maxLengthSetter(maxLength) { this.maxLength.set(maxLength); } processCalendar(calendar) { super.processCalendar(calendar); calendar.minLength = this.minLength(); calendar.maxLength = this.maxLength(); } onValueChange(value) { this.control?.control?.updateValueAndValidity({ emitEvent: false }); this.onChange(value.length === DATE_RANGE_FILLER_LENGTH ? TuiDayRange.normalizeParse(value, this.format().mode) : null); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputDateRangeDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputDateRangeDirective, isStandalone: true, selector: "input[tuiInputDateRange]", inputs: { minLengthSetter: ["minLength", "minLengthSetter"], maxLengthSetter: ["maxLength", "maxLengthSetter"] }, providers: [ // TODO: Add SelectOption after data-list in calendar-range is refactored tuiAsControl(TuiInputDateRangeDirective), tuiValueTransformerFrom(TUI_INPUT_DATE_RANGE_OPTIONS), tuiProvide(TUI_INPUT_DATE_OPTIONS_NEW, TUI_INPUT_DATE_RANGE_OPTIONS), ], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithTextfield }, { directive: i2.TuiDropdownAuto }, { directive: i3.MaskitoDirective }], ngImport: i0 }); } } export { TuiInputDateRangeDirective }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputDateRangeDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: 'input[tuiInputDateRange]', providers: [ // TODO: Add SelectOption after data-list in calendar-range is refactored tuiAsControl(TuiInputDateRangeDirective), tuiValueTransformerFrom(TUI_INPUT_DATE_RANGE_OPTIONS), tuiProvide(TUI_INPUT_DATE_OPTIONS_NEW, TUI_INPUT_DATE_RANGE_OPTIONS), ], hostDirectives: [TuiWithTextfield, TuiDropdownAuto, MaskitoDirective], }] }], propDecorators: { minLengthSetter: [{ type: Input, args: ['minLength'] }], maxLengthSetter: [{ type: Input, args: ['maxLength'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsWUFBWSxFQUFFLHVCQUF1QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUNILHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsV0FBVyxHQUNkLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUU1RSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ3BCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUV4RSxNQVdhLDBCQUEyQixTQUFRLGdCQUE2QjtJQVg3RTs7UUFZdUIsYUFBUSxHQUFHLE1BQU0sQ0FDaEMs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Z0JBTVAsZUFBZTtzQkFEekIsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXNraXRvRGlyZWN0aXZlfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7bWFza2l0b0RhdGVSYW5nZU9wdGlvbnNHZW5lcmF0b3J9IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgdHVpVmFsdWVUcmFuc2Zvcm1lckZyb219IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQgdHlwZSB7VHVpRGF5TGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtcbiAgICBEQVRFX1JBTkdFX0ZJTExFUl9MRU5HVEgsXG4gICAgUkFOR0VfU0VQQVJBVE9SX0NIQVIsXG4gICAgVHVpRGF5UmFuZ2UsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7dHVpUHJvdmlkZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VHVpV2l0aFRleHRmaWVsZH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtUdWlEcm9wZG93bkF1dG99IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24nO1xuaW1wb3J0IHR5cGUge1R1aUl0ZW1zSGFuZGxlcnN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuaW1wb3J0IHtUVUlfSVRFTVNfSEFORExFUlN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuaW1wb3J0IHR5cGUge1R1aUNhbGVuZGFyUmFuZ2V9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9jYWxlbmRhci1yYW5nZSc7XG5pbXBvcnQge1xuICAgIFRVSV9EQVRFX0FEQVBURVIsXG4gICAgVFVJX0lOUFVUX0RBVEVfT1BUSU9OU19ORVcsXG4gICAgVHVpSW5wdXREYXRlQmFzZSxcbiAgICB0dWlXaXRoRGF0ZUZpbGxlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LWRhdGUnO1xuaW1wb3J0IHt0dWlNYXNraXRvfSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfREFURV9SQU5HRV9PUFRJT05TfSBmcm9tICcuL2lucHV0LWRhdGUtcmFuZ2Uub3B0aW9ucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlJbnB1dERhdGVSYW5nZV0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICAvLyBUT0RPOiBBZGQgU2VsZWN0T3B0aW9uIGFmdGVyIGRhdGEtbGlzdCBpbiBjYWxlbmRhci1yYW5nZSBpcyByZWZhY3RvcmVkXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dERhdGVSYW5nZURpcmVjdGl2ZSksXG4gICAgICAgIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tKFRVSV9JTlBVVF9EQVRFX1JBTkdFX09QVElPTlMpLFxuICAgICAgICB0dWlQcm92aWRlKFRVSV9JTlBVVF9EQVRFX09QVElPTlNfTkVXLCBUVUlfSU5QVVRfREFURV9SQU5HRV9PUFRJT05TKSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpV2l0aFRleHRmaWVsZCwgVHVpRHJvcGRvd25BdXRvLCBNYXNraXRvRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXREYXRlUmFuZ2VEaXJlY3RpdmUgZXh0ZW5kcyBUdWlJbnB1dERhdGVCYXNlPFR1aURheVJhbmdlPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlkZW50aXR5ID0gaW5qZWN0PFR1aUl0ZW1zSGFuZGxlcnM8VHVpRGF5UmFuZ2U+PihcbiAgICAgICAgVFVJX0lURU1TX0hBTkRMRVJTLFxuICAgICkuaWRlbnRpdHlNYXRjaGVyLnNldCgoYSwgYikgPT4gYS5kYXlTYW1lKGIpKTtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBmaWxsZXIgPSB0dWlXaXRoRGF0ZUZpbGxlcihcbiAgICAgICAgKGZpbGxlcikgPT4gYCR7ZmlsbGVyfSR7UkFOR0VfU0VQQVJBVE9SX0NIQVJ9JHtmaWxsZXJ9YCxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1hc2sgPSB0dWlNYXNraXRvKFxuICAgICAgICBjb21wdXRlZCgoKSA9PlxuICAgICAgICAgICAgbWFza2l0b0RhdGVSYW5nZU9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgICAgIGRhdGVTZXBhcmF0b3I6IHRoaXMuZm9ybWF0KCkuc2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgIG1vZGU6IFRVSV9EQVRFX0FEQVBURVJbdGhpcy5mb3JtYXQoKS5tb2RlXSxcbiAgICAgICAgICAgICAgICBtaW46IHRoaXMubWluKCkudG9Mb2NhbE5hdGl2ZURhdGUoKSxcbiAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4KCkudG9Mb2NhbE5hdGl2ZURhdGUoKSxcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IHRoaXMubWluTGVuZ3RoKCkgfHwge30sXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoOiB0aGlzLm1heExlbmd0aCgpIHx8IHt9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBtaW5MZW5ndGggPSBzaWduYWw8VHVpRGF5TGlrZSB8IG51bGw+KG51bGwpO1xuICAgIHB1YmxpYyByZWFkb25seSBtYXhMZW5ndGggPSBzaWduYWw8VHVpRGF5TGlrZSB8IG51bGw+KG51bGwpO1xuXG4gICAgQElucHV0KCdtaW5MZW5ndGgnKVxuICAgIHB1YmxpYyBzZXQgbWluTGVuZ3RoU2V0dGVyKG1pbkxlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5taW5MZW5ndGguc2V0KG1pbkxlbmd0aCk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtYXhMZW5ndGgnKVxuICAgIHB1YmxpYyBzZXQgbWF4TGVuZ3RoU2V0dGVyKG1heExlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5tYXhMZW5ndGguc2V0KG1heExlbmd0aCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHByb2Nlc3NDYWxlbmRhcihjYWxlbmRhcjogVHVpQ2FsZW5kYXJSYW5nZSk6IHZvaWQge1xuICAgICAgICBzdXBlci5wcm9jZXNzQ2FsZW5kYXIoY2FsZW5kYXIpO1xuXG4gICAgICAgIGNhbGVuZGFyLm1pbkxlbmd0aCA9IHRoaXMubWluTGVuZ3RoKCk7XG4gICAgICAgIGNhbGVuZGFyLm1heExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRyb2w/LmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShcbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gREFURV9SQU5HRV9GSUxMRVJfTEVOR1RIXG4gICAgICAgICAgICAgICAgPyBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZSh2YWx1ZSwgdGhpcy5mb3JtYXQoKS5tb2RlKVxuICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=