@taiga-ui/kit
Version:
Taiga UI Angular main components kit
86 lines • 13.7 kB
JavaScript
import { Directive, effect, inject, signal } from '@angular/core';
import { toSignal } from '@angular/core/rxjs-interop';
import { tuiAsControl, TuiControl, tuiValueTransformerFrom } from '@taiga-ui/cdk/classes';
import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
import { RANGE_SEPARATOR_CHAR, TuiMonthRange, } from '@taiga-ui/cdk/date-time';
import { tuiInjectAuxiliary, TuiSelectLike, TuiTextfieldDirective, tuiTextfieldIconBinding, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
import { TuiDropdownAuto, tuiDropdownEnabled, tuiDropdownOpen, } from '@taiga-ui/core/directives/dropdown';
import { TuiCalendarMonth } from '@taiga-ui/kit/components/calendar-month';
import { TUI_MONTH_FORMATTER } from '@taiga-ui/kit/tokens';
import { TUI_INPUT_MONTH_RANGE_OPTIONS } from './input-month-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";
class TuiInputMonthRangeDirective extends TuiControl {
constructor() {
super(...arguments);
this.textfield = inject(TuiTextfieldDirective);
this.formatter = toSignal(inject(TUI_MONTH_FORMATTER));
this.open = tuiDropdownOpen();
this.intermediateValue = signal(null);
this.calendar = tuiInjectAuxiliary((x) => x instanceof TuiCalendarMonth);
this.icon = tuiTextfieldIconBinding(TUI_INPUT_MONTH_RANGE_OPTIONS);
this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
this.valueEffect = effect(() => {
const value = this.value();
const format = this.formatter() || (() => '');
const string = value
? format(value.from) + RANGE_SEPARATOR_CHAR + format(value.to)
: '';
this.textfield.value.set(string);
}, TUI_ALLOW_SIGNAL_WRITES);
this.calendarInit = effect(() => {
const calendar = this.calendar();
if (calendar) {
calendar.options.rangeMode = true;
}
});
this.calendarSync = effect(() => {
this.calendar()?.value.set(this.intermediateValue() ?? this.value());
}, TUI_ALLOW_SIGNAL_WRITES);
// TODO: use linked signal (Angular 19+)
this.resetIntermediateValue = effect(() => {
this.intermediateValue.set(this.value() && null);
}, TUI_ALLOW_SIGNAL_WRITES);
this.onMonthClickEffect = effect((onCleanup) => {
const subscription = this.calendar()?.monthClick.subscribe((month) => {
const intermediateValue = this.intermediateValue();
if (!intermediateValue) {
this.intermediateValue.set(month);
}
else {
this.onChange(TuiMonthRange.sort(intermediateValue, month));
this.open.set(false);
}
});
onCleanup(() => subscription?.unsubscribe());
});
}
clear() {
this.onChange(null);
this.open.set(true);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputMonthRangeDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputMonthRangeDirective, isStandalone: true, selector: "input[tuiInputMonthRange]", host: { listeners: { "input": "$event.inputType?.includes(\"delete\") && clear()" }, properties: { "disabled": "disabled()" } }, providers: [
tuiAsControl(TuiInputMonthRangeDirective),
tuiValueTransformerFrom(TUI_INPUT_MONTH_RANGE_OPTIONS),
], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithTextfield }, { directive: i1.TuiSelectLike }, { directive: i2.TuiDropdownAuto }], ngImport: i0 }); }
}
export { TuiInputMonthRangeDirective };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputMonthRangeDirective, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: 'input[tuiInputMonthRange]',
providers: [
tuiAsControl(TuiInputMonthRangeDirective),
tuiValueTransformerFrom(TUI_INPUT_MONTH_RANGE_OPTIONS),
],
hostDirectives: [TuiWithTextfield, TuiSelectLike, TuiDropdownAuto],
host: {
'[disabled]': 'disabled()',
'(input)': '$event.inputType?.includes("delete") && clear()',
},
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9udGgtcmFuZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbW9udGgtcmFuZ2UvaW5wdXQtbW9udGgtcmFuZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUNILG9CQUFvQixFQUVwQixhQUFhLEdBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILGtCQUFrQixFQUNsQixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixnQkFBZ0IsR0FDbkIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixlQUFlLEdBQ2xCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFFMUUsTUFhYSwyQkFBNEIsU0FBUSxVQUFnQztJQWJqRjs7UUFjcUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzFDLGNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFD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LENBQUMsQ0FBQztJQUN4QixDQUFDOytHQTFEUSwyQkFBMkI7bUdBQTNCLDJCQUEyQix5TUFWekI7WUFDUCxZQUFZLENBQUMsMkJBQTJCLENBQUM7WUFDekMsdUJBQXVCLENBQUMsNkJBQTZCLENBQUM7U0FDekQ7O1NBT1EsMkJBQTJCOzRGQUEzQiwyQkFBMkI7a0JBYnZDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDUCxZQUFZLDZCQUE2Qjt3QkFDekMsdUJBQXVCLENBQUMsNkJBQTZCLENBQUM7cUJBQ3pEO29CQUNELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7b0JBQ2xFLElBQUksRUFBRTt3QkFDRixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsU0FBUyxFQUFFLGlEQUFpRDtxQkFDL0Q7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgVHVpQ29udHJvbCwgdHVpVmFsdWVUcmFuc2Zvcm1lckZyb219IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQge1RVSV9BTExPV19TSUdOQUxfV1JJVEVTfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFJBTkdFX1NFUEFSQVRPUl9DSEFSLFxuICAgIHR5cGUgVHVpTW9udGgsXG4gICAgVHVpTW9udGhSYW5nZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtcbiAgICB0dWlJbmplY3RBdXhpbGlhcnksXG4gICAgVHVpU2VsZWN0TGlrZSxcbiAgICBUdWlUZXh0ZmllbGREaXJlY3RpdmUsXG4gICAgdHVpVGV4dGZpZWxkSWNvbkJpbmRpbmcsXG4gICAgVHVpV2l0aFRleHRmaWVsZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtcbiAgICBUdWlEcm9wZG93bkF1dG8sXG4gICAgdHVpRHJvcGRvd25FbmFibGVkLFxuICAgIHR1aURyb3Bkb3duT3Blbixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bic7XG5pbXBvcnQge1R1aUNhbGVuZGFyTW9udGh9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9jYWxlbmRhci1tb250aCc7XG5pbXBvcnQge1RVSV9NT05USF9GT1JNQVRURVJ9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfTU9OVEhfUkFOR0VfT1BUSU9OU30gZnJvbSAnLi9pbnB1dC1tb250aC1yYW5nZS5vcHRpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aUlucHV0TW9udGhSYW5nZV0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXRNb250aFJhbmdlRGlyZWN0aXZlKSxcbiAgICAgICAgdHVpVmFsdWVUcmFuc2Zvcm1lckZyb20oVFVJX0lOUFVUX01PTlRIX1JBTkdFX09QVElPTlMpLFxuICAgIF0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlXaXRoVGV4dGZpZWxkLCBUdWlTZWxlY3RMaWtlLCBUdWlEcm9wZG93bkF1dG9dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICcoaW5wdXQpJzogJyRldmVudC5pbnB1dFR5cGU/LmluY2x1ZGVzKFwiZGVsZXRlXCIpICYmIGNsZWFyKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0TW9udGhSYW5nZURpcmVjdGl2ZSBleHRlbmRzIFR1aUNvbnRyb2w8VHVpTW9udGhSYW5nZSB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGREaXJlY3RpdmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybWF0dGVyID0gdG9TaWduYWwoaW5qZWN0KFRVSV9NT05USF9GT1JNQVRURVIpKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGludGVybWVkaWF0ZVZhbHVlID0gc2lnbmFsPFR1aU1vbnRoIHwgbnVsbD4obnVsbCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyID0gdHVpSW5qZWN0QXV4aWxpYXJ5PFR1aUNhbGVuZGFyTW9udGg+KFxuICAgICAgICAoeCkgPT4geCBpbnN0YW5jZW9mIFR1aUNhbGVuZGFyTW9udGgsXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29uID0gdHVpVGV4dGZpZWxkSWNvbkJpbmRpbmcoVFVJX0lOUFVUX01PTlRIX1JBTkdFX09QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93bkVuYWJsZWQgPSB0dWlEcm9wZG93bkVuYWJsZWQodGhpcy5pbnRlcmFjdGl2ZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmFsdWVFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5mb3JtYXR0ZXIoKSB8fCAoKCkgPT4gJycpO1xuICAgICAgICBjb25zdCBzdHJpbmcgPSB2YWx1ZVxuICAgICAgICAgICAgPyBmb3JtYXQodmFsdWUuZnJvbSkgKyBSQU5HRV9TRVBBUkFUT1JfQ0hBUiArIGZvcm1hdCh2YWx1ZS50bylcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUuc2V0KHN0cmluZyk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFySW5pdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyID0gdGhpcy5jYWxlbmRhcigpO1xuXG4gICAgICAgIGlmIChjYWxlbmRhcikge1xuICAgICAgICAgICAgY2FsZW5kYXIub3B0aW9ucy5yYW5nZU1vZGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJTeW5jID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhcigpPy52YWx1ZS5zZXQodGhpcy5pbnRlcm1lZGlhdGVWYWx1ZSgpID8/IHRoaXMudmFsdWUoKSk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgLy8gVE9ETzogdXNlIGxpbmtlZCBzaWduYWwgKEFuZ3VsYXIgMTkrKVxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXNldEludGVybWVkaWF0ZVZhbHVlID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbnRlcm1lZGlhdGVWYWx1ZS5zZXQodGhpcy52YWx1ZSgpICYmIG51bGwpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCBvbk1vbnRoQ2xpY2tFZmZlY3QgPSBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmNhbGVuZGFyKCk/Lm1vbnRoQ2xpY2suc3Vic2NyaWJlKChtb250aCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW50ZXJtZWRpYXRlVmFsdWUgPSB0aGlzLmludGVybWVkaWF0ZVZhbHVlKCk7XG5cbiAgICAgICAgICAgIGlmICghaW50ZXJtZWRpYXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybWVkaWF0ZVZhbHVlLnNldChtb250aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoVHVpTW9udGhSYW5nZS5zb3J0KGludGVybWVkaWF0ZVZhbHVlLCBtb250aCkpO1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBvbkNsZWFudXAoKCkgPT4gc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpKTtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy5vcGVuLnNldCh0cnVlKTtcbiAgICB9XG59XG4iXX0=