UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

79 lines 12.8 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsWUFBWSxFQUFFLHVCQUF1QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUNILHdCQUF3QixFQUN4QixvQkFBb0IsRUFFcEIsV0FBVyxHQUNkLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQ0gsa0JBQWtCLEdBRXJCLE1BQU0sMENBQTBDLENBQUM7QUFFbEQsT0FBTyxFQUNILGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNwQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFeEUsTUFXYSwwQkFBMkIsU0FBUSxnQkFBNkI7SUFYN0U7O1FBWXVCLGFBQVEsR0FBRyxNQUFNLENBQ2hD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O2dCQU1QLGVBQWU7c0JBRHpCLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29tcHV0ZWQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQge21hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHt0dWlBc0NvbnRyb2wsIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBEQVRFX1JBTkdFX0ZJTExFUl9MRU5HVEgsXG4gICAgUkFOR0VfU0VQQVJBVE9SX0NIQVIsXG4gICAgdHlwZSBUdWlEYXlMaWtlLFxuICAgIFR1aURheVJhbmdlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge3R1aVByb3ZpZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1R1aVdpdGhUZXh0ZmllbGR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7VHVpRHJvcGRvd25BdXRvfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7XG4gICAgVFVJX0lURU1TX0hBTkRMRVJTLFxuICAgIHR5cGUgVHVpSXRlbXNIYW5kbGVycyxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9pdGVtcy1oYW5kbGVycyc7XG5pbXBvcnQge3R5cGUgVHVpQ2FsZW5kYXJSYW5nZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLXJhbmdlJztcbmltcG9ydCB7XG4gICAgVFVJX0RBVEVfQURBUFRFUixcbiAgICBUVUlfSU5QVVRfREFURV9PUFRJT05TX05FVyxcbiAgICBUdWlJbnB1dERhdGVCYXNlLFxuICAgIHR1aVdpdGhEYXRlRmlsbGVyLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZSc7XG5pbXBvcnQge3R1aU1hc2tpdG99IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9EQVRFX1JBTkdFX09QVElPTlN9IGZyb20gJy4vaW5wdXQtZGF0ZS1yYW5nZS5vcHRpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aUlucHV0RGF0ZVJhbmdlXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIC8vIFRPRE86IEFkZCBTZWxlY3RPcHRpb24gYWZ0ZXIgZGF0YS1saXN0IGluIGNhbGVuZGFyLXJhbmdlIGlzIHJlZmFjdG9yZWRcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0RGF0ZVJhbmdlRGlyZWN0aXZlKSxcbiAgICAgICAgdHVpVmFsdWVUcmFuc2Zvcm1lckZyb20oVFVJX0lOUFVUX0RBVEVfUkFOR0VfT1BUSU9OUyksXG4gICAgICAgIHR1aVByb3ZpZGUoVFVJX0lOUFVUX0RBVEVfT1BUSU9OU19ORVcsIFRVSV9JTlBVVF9EQVRFX1JBTkdFX09QVElPTlMpLFxuICAgIF0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlXaXRoVGV4dGZpZWxkLCBUdWlEcm9wZG93bkF1dG8sIE1hc2tpdG9EaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dERhdGVSYW5nZURpcmVjdGl2ZSBleHRlbmRzIFR1aUlucHV0RGF0ZUJhc2U8VHVpRGF5UmFuZ2U+IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWRlbnRpdHkgPSBpbmplY3Q8VHVpSXRlbXNIYW5kbGVyczxUdWlEYXlSYW5nZT4+KFxuICAgICAgICBUVUlfSVRFTVNfSEFORExFUlMsXG4gICAgKS5pZGVudGl0eU1hdGNoZXIuc2V0KChhLCBiKSA9PiBhLmRheVNhbWUoYikpO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IGZpbGxlciA9IHR1aVdpdGhEYXRlRmlsbGVyKFxuICAgICAgICAoZmlsbGVyKSA9PiBgJHtmaWxsZXJ9JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke2ZpbGxlcn1gLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFzayA9IHR1aU1hc2tpdG8oXG4gICAgICAgIGNvbXB1dGVkKCgpID0+XG4gICAgICAgICAgICBtYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICAgICAgZGF0ZVNlcGFyYXRvcjogdGhpcy5mb3JtYXQoKS5zZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgbW9kZTogVFVJX0RBVEVfQURBUFRFUlt0aGlzLmZvcm1hdCgpLm1vZGVdLFxuICAgICAgICAgICAgICAgIG1pbjogdGhpcy5taW4oKS50b0xvY2FsTmF0aXZlRGF0ZSgpLFxuICAgICAgICAgICAgICAgIG1heDogdGhpcy5tYXgoKS50b0xvY2FsTmF0aXZlRGF0ZSgpLFxuICAgICAgICAgICAgICAgIG1pbkxlbmd0aDogdGhpcy5taW5MZW5ndGgoKSB8fCB7fSxcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg6IHRoaXMubWF4TGVuZ3RoKCkgfHwge30sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IG1pbkxlbmd0aCA9IHNpZ25hbDxUdWlEYXlMaWtlIHwgbnVsbD4obnVsbCk7XG4gICAgcHVibGljIHJlYWRvbmx5IG1heExlbmd0aCA9IHNpZ25hbDxUdWlEYXlMaWtlIHwgbnVsbD4obnVsbCk7XG5cbiAgICBASW5wdXQoJ21pbkxlbmd0aCcpXG4gICAgcHVibGljIHNldCBtaW5MZW5ndGhTZXR0ZXIobWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLm1pbkxlbmd0aC5zZXQobWluTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ21heExlbmd0aCcpXG4gICAgcHVibGljIHNldCBtYXhMZW5ndGhTZXR0ZXIobWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLm1heExlbmd0aC5zZXQobWF4TGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcHJvY2Vzc0NhbGVuZGFyKGNhbGVuZGFyOiBUdWlDYWxlbmRhclJhbmdlKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnByb2Nlc3NDYWxlbmRhcihjYWxlbmRhcik7XG5cbiAgICAgICAgY2FsZW5kYXIubWluTGVuZ3RoID0gdGhpcy5taW5MZW5ndGgoKTtcbiAgICAgICAgY2FsZW5kYXIubWF4TGVuZ3RoID0gdGhpcy5tYXhMZW5ndGgoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25WYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udHJvbD8uY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKFxuICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09PSBEQVRFX1JBTkdFX0ZJTExFUl9MRU5HVEhcbiAgICAgICAgICAgICAgICA/IFR1aURheVJhbmdlLm5vcm1hbGl6ZVBhcnNlKHZhbHVlLCB0aGlzLmZvcm1hdCgpLm1vZGUpXG4gICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==