@taiga-ui/kit 4.37.0-canary.e7da31c → 4.37.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/components/input-month/input-month.directive.d.ts +2 -3
- package/components/input-month-range/input-month-range.directive.d.ts +2 -3
- package/components/input-number/input-number.directive.d.ts +2 -3
- package/components/input-number/step/input-number-step.component.d.ts +3 -4
- package/components/select/native-select/native-select.component.d.ts +0 -2
- package/components/select/select.directive.d.ts +1 -2
- package/esm2022/components/input-month/input-month.directive.mjs +7 -8
- package/esm2022/components/input-month-range/input-month-range.directive.mjs +8 -13
- package/esm2022/components/input-number/input-number.directive.mjs +19 -15
- package/esm2022/components/input-number/step/input-number-step.component.mjs +13 -14
- package/esm2022/components/select/native-select/native-select.component.mjs +5 -9
- package/esm2022/components/select/select.directive.mjs +5 -10
- package/esm2022/components/slider/helpers/slider-key-steps.directive.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +7 -12
- package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-month.mjs +6 -7
- package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-number.mjs +29 -26
- package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-select.mjs +6 -14
- package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-slider.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -5,12 +5,11 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
import * as i1 from "@taiga-ui/core/components/textfield";
|
|
6
6
|
import * as i2 from "@taiga-ui/core/directives/dropdown";
|
|
7
7
|
export declare class TuiInputMonthDirective extends TuiControl<TuiMonth | null> {
|
|
8
|
-
private readonly textfield;
|
|
9
|
-
private readonly formatter;
|
|
10
8
|
private readonly open;
|
|
9
|
+
private readonly formatter;
|
|
11
10
|
protected readonly icon: import("@angular/core").Signal<string>;
|
|
12
11
|
protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
|
|
13
|
-
protected readonly
|
|
12
|
+
protected readonly textfieldValue: import("@angular/core").Signal<string>;
|
|
14
13
|
protected readonly calendarSync: import("@angular/core").EffectRef;
|
|
15
14
|
protected onMonthClickEffect: import("@angular/core").EffectRef;
|
|
16
15
|
readonly calendar: import("@angular/core").Signal<TuiCalendarMonth | null>;
|
|
@@ -4,14 +4,13 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
import * as i1 from "@taiga-ui/core/components/textfield";
|
|
5
5
|
import * as i2 from "@taiga-ui/core/directives/dropdown";
|
|
6
6
|
export declare class TuiInputMonthRangeDirective extends TuiControl<TuiMonthRange | null> {
|
|
7
|
-
private readonly textfield;
|
|
8
|
-
private readonly formatter;
|
|
9
7
|
private readonly open;
|
|
10
8
|
private readonly intermediateValue;
|
|
11
9
|
private readonly calendar;
|
|
10
|
+
private readonly formatter;
|
|
12
11
|
protected readonly icon: import("@angular/core").Signal<string>;
|
|
13
12
|
protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
|
|
14
|
-
protected readonly
|
|
13
|
+
protected readonly textfieldValue: import("@angular/core").Signal<string>;
|
|
15
14
|
protected readonly calendarInit: import("@angular/core").EffectRef;
|
|
16
15
|
protected readonly calendarSync: import("@angular/core").EffectRef;
|
|
17
16
|
protected readonly resetIntermediateValue: import("@angular/core").EffectRef;
|
|
@@ -4,15 +4,14 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
import * as i1 from "@taiga-ui/core/components/textfield";
|
|
5
5
|
import * as i2 from "@maskito/angular";
|
|
6
6
|
export declare class TuiInputNumberDirective extends TuiControl<number | null> {
|
|
7
|
-
private readonly textfield;
|
|
8
7
|
private readonly isIOS;
|
|
9
8
|
private readonly numberFormat;
|
|
10
|
-
private readonly formatted;
|
|
11
9
|
private readonly precision;
|
|
12
|
-
private readonly
|
|
10
|
+
private readonly isIntermediateState;
|
|
13
11
|
protected readonly onChangeEffect: import("@angular/core").EffectRef;
|
|
14
12
|
protected readonly options: import("./input-number.options").TuiInputNumberOptions;
|
|
15
13
|
protected readonly element: HTMLInputElement;
|
|
14
|
+
protected readonly textfieldValue: import("@angular/core").WritableSignal<string>;
|
|
16
15
|
protected readonly inputMode: import("@angular/core").Signal<"text" | "decimal" | "numeric">;
|
|
17
16
|
protected readonly defaultMaxLength: import("@angular/core").Signal<number>;
|
|
18
17
|
protected readonly mask: import("@angular/core").Signal<MaskitoOptions | null>;
|
|
@@ -4,12 +4,11 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class TuiInputNumberStep {
|
|
5
5
|
private readonly destroyRef;
|
|
6
6
|
private readonly zone;
|
|
7
|
-
protected readonly
|
|
8
|
-
protected readonly
|
|
7
|
+
protected readonly element: HTMLInputElement;
|
|
8
|
+
protected readonly textfieldOptions: import("@taiga-ui/core/components/textfield").TuiTextfieldOptions;
|
|
9
9
|
protected readonly options: TuiInputNumberOptions;
|
|
10
|
-
protected readonly
|
|
10
|
+
protected readonly inputNumber: TuiInputNumberDirective;
|
|
11
11
|
protected readonly step: import("@angular/core").WritableSignal<number>;
|
|
12
|
-
protected readonly value: import("@angular/core").Signal<number>;
|
|
13
12
|
set stepSetter(x: number);
|
|
14
13
|
protected onStep(step: number): void;
|
|
15
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputNumberStep, never>;
|
|
@@ -5,14 +5,12 @@ import { tuiIsFlat } from '@taiga-ui/kit/utils';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@taiga-ui/core/components/textfield";
|
|
7
7
|
export declare class TuiNativeSelect<T> extends TuiControl<T | null> implements TuiTextfieldAccessor<T> {
|
|
8
|
-
private readonly textfield;
|
|
9
8
|
protected readonly isFlat: typeof tuiIsFlat;
|
|
10
9
|
protected readonly placeholder: import("@angular/core").WritableSignal<string>;
|
|
11
10
|
protected readonly itemsHandlers: TuiItemsHandlers<T>;
|
|
12
11
|
protected readonly stringified: import("@angular/core").Signal<string>;
|
|
13
12
|
protected readonly showPlaceholder: import("@angular/core").Signal<boolean | "">;
|
|
14
13
|
protected readonly isSelected: import("@angular/core").Signal<(x: T) => boolean>;
|
|
15
|
-
protected readonly valueEffect: import("@angular/core").EffectRef;
|
|
16
14
|
items: ReadonlyArray<readonly T[]> | readonly T[] | null;
|
|
17
15
|
labels: readonly string[];
|
|
18
16
|
set placeholderSetter(x: string);
|
|
@@ -3,11 +3,10 @@ import type { TuiTextfieldAccessor } from '@taiga-ui/core/components/textfield';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@taiga-ui/core/components/textfield";
|
|
5
5
|
export declare class TuiSelectDirective<T> extends TuiControl<T | null> implements TuiTextfieldAccessor<T> {
|
|
6
|
-
private readonly textfield;
|
|
7
6
|
private readonly open;
|
|
8
7
|
private readonly itemsHandlers;
|
|
9
8
|
protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
|
|
10
|
-
protected readonly
|
|
9
|
+
protected readonly stringified: import("@angular/core").Signal<string>;
|
|
11
10
|
setValue(value: T): void;
|
|
12
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiSelectDirective<any>, never>;
|
|
13
12
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TuiSelectDirective<any>, "input[tuiSelect]", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiWithTextfield; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiSelectLike; inputs: {}; outputs: {}; }]>;
|
|
@@ -3,8 +3,8 @@ import { toSignal } from '@angular/core/rxjs-interop';
|
|
|
3
3
|
import { tuiAsControl, TuiControl } from '@taiga-ui/cdk/classes';
|
|
4
4
|
import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
|
|
5
5
|
import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
|
|
6
|
-
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
7
|
-
import { tuiInjectAuxiliary, TuiSelectLike,
|
|
6
|
+
import { tuiInjectElement, tuiValueBinding } from '@taiga-ui/cdk/utils/dom';
|
|
7
|
+
import { tuiInjectAuxiliary, TuiSelectLike, tuiTextfieldIconBinding, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
|
|
8
8
|
import { TuiDropdownAuto, tuiDropdownEnabled, tuiDropdownOpen, } from '@taiga-ui/core/directives/dropdown';
|
|
9
9
|
import { TuiCalendarMonth } from '@taiga-ui/kit/components/calendar-month';
|
|
10
10
|
import { TUI_INPUT_DATE_OPTIONS, TUI_MONTH_FORMATTER } from '@taiga-ui/kit/tokens';
|
|
@@ -14,14 +14,13 @@ import * as i2 from "@taiga-ui/core/directives/dropdown";
|
|
|
14
14
|
class TuiInputMonthDirective extends TuiControl {
|
|
15
15
|
constructor() {
|
|
16
16
|
super(...arguments);
|
|
17
|
-
this.textfield = inject(TuiTextfieldDirective);
|
|
18
|
-
this.formatter = toSignal(inject(TUI_MONTH_FORMATTER));
|
|
19
17
|
this.open = tuiDropdownOpen();
|
|
18
|
+
this.formatter = toSignal(inject(TUI_MONTH_FORMATTER), {
|
|
19
|
+
initialValue: () => '',
|
|
20
|
+
});
|
|
20
21
|
this.icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS);
|
|
21
22
|
this.dropdownEnabled = tuiDropdownEnabled(computed(() => !this.nativePickerEnabled && this.interactive()));
|
|
22
|
-
this.
|
|
23
|
-
this.textfield.value.set(this.formatter()?.(this.value()) || '');
|
|
24
|
-
}, TUI_ALLOW_SIGNAL_WRITES);
|
|
23
|
+
this.textfieldValue = tuiValueBinding(computed(() => this.formatter()(this.value())));
|
|
25
24
|
this.calendarSync = effect(() => {
|
|
26
25
|
this.calendar()?.value.set(this.value());
|
|
27
26
|
}, TUI_ALLOW_SIGNAL_WRITES);
|
|
@@ -57,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
57
56
|
},
|
|
58
57
|
}]
|
|
59
58
|
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9udGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbW9udGgvaW5wdXQtbW9udGguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsZ0JBQWdCLEdBQ25CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNILGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWpGLE1BV2Esc0JBQXVCLFNBQVEsVUFBMkI7SUFYdkU7O1FBWXFCLFNBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUN6QixjQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQy9ELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO1NBQ3pCLENBQUMsQ0FBQztRQUVnQixTQUFJLEdBQUcsdUJBQXVCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN2RCxvQkFBZSxHQUFHLGtCQUFrQixDQUNuRCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ2xFLENBQUM7UUFFaUIsbUJBQWMsR0FBRyxlQUFlLENBQy9DLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDakQsQ0FBQztRQUVpQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFbEIsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFYSxhQUFRLEdBQUcsa0JBQWtCLENBQ3pDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksZ0JBQWdCLENBQ3ZDLENBQUM7UUFFYyx3QkFBbUIsR0FDL0IsZ0JBQWdCLEVBQW9CLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7S0FNdEY7SUFKYSxLQUFLO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQXRDUSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyTkFScEIsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7U0FReEMsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBWGxDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLFlBQVksd0JBQXdCLENBQUM7b0JBQ2pELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7b0JBQ2xFLElBQUksRUFBRTt3QkFDRixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsUUFBUSxFQUFFLGFBQWE7d0JBQ3ZCLFNBQVMsRUFBRSxpREFBaUQ7cUJBQy9EO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgVHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VFVJX0FMTE9XX1NJR05BTF9XUklURVN9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtUdWlNb250aH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUVUlfSVNfTU9CSUxFfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnQsIHR1aVZhbHVlQmluZGluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHtcbiAgICB0dWlJbmplY3RBdXhpbGlhcnksXG4gICAgVHVpU2VsZWN0TGlrZSxcbiAgICB0dWlUZXh0ZmllbGRJY29uQmluZGluZyxcbiAgICBUdWlXaXRoVGV4dGZpZWxkLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFR1aURyb3Bkb3duQXV0byxcbiAgICB0dWlEcm9wZG93bkVuYWJsZWQsXG4gICAgdHVpRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VHVpQ2FsZW5kYXJNb250aH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLW1vbnRoJztcbmltcG9ydCB7VFVJX0lOUFVUX0RBVEVfT1BUSU9OUywgVFVJX01PTlRIX0ZPUk1BVFRFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRNb250aF0nLFxuICAgIHByb3ZpZGVyczogW3R1aUFzQ29udHJvbChUdWlJbnB1dE1vbnRoRGlyZWN0aXZlKV0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlXaXRoVGV4dGZpZWxkLCBUdWlTZWxlY3RMaWtlLCBUdWlEcm9wZG93bkF1dG9dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICAgICAgICAnKGlucHV0KSc6ICckZXZlbnQuaW5wdXRUeXBlPy5pbmNsdWRlcyhcImRlbGV0ZVwiKSAmJiBjbGVhcigpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE1vbnRoRGlyZWN0aXZlIGV4dGVuZHMgVHVpQ29udHJvbDxUdWlNb250aCB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1hdHRlciA9IHRvU2lnbmFsKGluamVjdChUVUlfTU9OVEhfRk9STUFUVEVSKSwge1xuICAgICAgICBpbml0aWFsVmFsdWU6ICgpID0+ICcnLFxuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb24gPSB0dWlUZXh0ZmllbGRJY29uQmluZGluZyhUVUlfSU5QVVRfREFURV9PUFRJT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd25FbmFibGVkID0gdHVpRHJvcGRvd25FbmFibGVkKFxuICAgICAgICBjb21wdXRlZCgoKSA9PiAhdGhpcy5uYXRpdmVQaWNrZXJFbmFibGVkICYmIHRoaXMuaW50ZXJhY3RpdmUoKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXh0ZmllbGRWYWx1ZSA9IHR1aVZhbHVlQmluZGluZyhcbiAgICAgICAgY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtYXR0ZXIoKSh0aGlzLnZhbHVlKCkpKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFyU3luYyA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIoKT8udmFsdWUuc2V0KHRoaXMudmFsdWUoKSk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgcHJvdGVjdGVkIG9uTW9udGhDbGlja0VmZmVjdCA9IGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuY2FsZW5kYXIoKT8ubW9udGhDbGljay5zdWJzY3JpYmUoKG1vbnRoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG1vbnRoKTtcbiAgICAgICAgICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICBvbkNsZWFudXAoKCkgPT4gc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyByZWFkb25seSBjYWxlbmRhciA9IHR1aUluamVjdEF1eGlsaWFyeTxUdWlDYWxlbmRhck1vbnRoPihcbiAgICAgICAgKHgpID0+IHggaW5zdGFuY2VvZiBUdWlDYWxlbmRhck1vbnRoLFxuICAgICk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlUGlja2VyRW5hYmxlZCA9XG4gICAgICAgIHR1aUluamVjdEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4oKS50eXBlID09PSAnbW9udGgnICYmIGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIHByb3RlY3RlZCBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy5vcGVuLnNldCh0aGlzLmRyb3Bkb3duRW5hYmxlZCgpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Directive, effect, inject, signal } from '@angular/core';
|
|
1
|
+
import { computed, Directive, effect, inject, signal } from '@angular/core';
|
|
2
2
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { tuiAsControl, TuiControl } from '@taiga-ui/cdk/classes';
|
|
4
4
|
import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
|
|
5
5
|
import { RANGE_SEPARATOR_CHAR, TuiMonthRange } from '@taiga-ui/cdk/date-time';
|
|
6
|
-
import {
|
|
6
|
+
import { tuiValueBinding } from '@taiga-ui/cdk/utils/dom';
|
|
7
|
+
import { tuiInjectAuxiliary, TuiSelectLike, tuiTextfieldIconBinding, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
|
|
7
8
|
import { TuiDropdownAuto, tuiDropdownEnabled, tuiDropdownOpen, } from '@taiga-ui/core/directives/dropdown';
|
|
8
9
|
import { TuiCalendarMonth } from '@taiga-ui/kit/components/calendar-month';
|
|
9
10
|
import { TUI_INPUT_DATE_OPTIONS, TUI_MONTH_FORMATTER } from '@taiga-ui/kit/tokens';
|
|
@@ -13,21 +14,15 @@ import * as i2 from "@taiga-ui/core/directives/dropdown";
|
|
|
13
14
|
class TuiInputMonthRangeDirective extends TuiControl {
|
|
14
15
|
constructor() {
|
|
15
16
|
super(...arguments);
|
|
16
|
-
this.textfield = inject(TuiTextfieldDirective);
|
|
17
|
-
this.formatter = toSignal(inject(TUI_MONTH_FORMATTER));
|
|
18
17
|
this.open = tuiDropdownOpen();
|
|
19
18
|
this.intermediateValue = signal(null);
|
|
20
19
|
this.calendar = tuiInjectAuxiliary((x) => x instanceof TuiCalendarMonth);
|
|
20
|
+
this.formatter = toSignal(inject(TUI_MONTH_FORMATTER), {
|
|
21
|
+
initialValue: () => '',
|
|
22
|
+
});
|
|
21
23
|
this.icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS);
|
|
22
24
|
this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
|
|
23
|
-
this.
|
|
24
|
-
const value = this.value();
|
|
25
|
-
const format = this.formatter() || (() => '');
|
|
26
|
-
const string = value
|
|
27
|
-
? format(value.from) + RANGE_SEPARATOR_CHAR + format(value.to)
|
|
28
|
-
: '';
|
|
29
|
-
this.textfield.value.set(string);
|
|
30
|
-
}, TUI_ALLOW_SIGNAL_WRITES);
|
|
25
|
+
this.textfieldValue = tuiValueBinding(computed((value = this.value(), format = this.formatter()) => value ? format(value.from) + RANGE_SEPARATOR_CHAR + format(value.to) : ''));
|
|
31
26
|
this.calendarInit = effect(() => {
|
|
32
27
|
const calendar = this.calendar();
|
|
33
28
|
if (calendar) {
|
|
@@ -77,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
77
72
|
},
|
|
78
73
|
}]
|
|
79
74
|
}] });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9udGgtcmFuZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbW9udGgtcmFuZ2UvaW5wdXQtbW9udGgtcmFuZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGdCQUFnQixHQUNuQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGVBQWUsR0FDbEIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUVqRixNQVdhLDJCQUE0QixTQUFRLFVBQWdDO0lBWGpGOztRQVlxQixTQUFJLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDekIsc0JBQWlCLEdBQUcsTUFBTSxDQUFrQixJQUFJLENBQUMsQ0FBQztRQUVsRCxhQUFRLEdBQUcsa0JBQWtC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LElBQUk7b0JBQ2hCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLFlBQVksNkJBQTZCLENBQUM7b0JBQ3RELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7b0JBQ2xFLElBQUksRUFBRTt3QkFDRixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsUUFBUSxFQUFFLGFBQWE7d0JBQ3ZCLFNBQVMsRUFBRSxpREFBaUQ7cUJBQy9EO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfQUxMT1dfU0lHTkFMX1dSSVRFU30gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aU1vbnRofSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1JBTkdFX1NFUEFSQVRPUl9DSEFSLCBUdWlNb250aFJhbmdlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge3R1aVZhbHVlQmluZGluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHtcbiAgICB0dWlJbmplY3RBdXhpbGlhcnksXG4gICAgVHVpU2VsZWN0TGlrZSxcbiAgICB0dWlUZXh0ZmllbGRJY29uQmluZGluZyxcbiAgICBUdWlXaXRoVGV4dGZpZWxkLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFR1aURyb3Bkb3duQXV0byxcbiAgICB0dWlEcm9wZG93bkVuYWJsZWQsXG4gICAgdHVpRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VHVpQ2FsZW5kYXJNb250aH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLW1vbnRoJztcbmltcG9ydCB7VFVJX0lOUFVUX0RBVEVfT1BUSU9OUywgVFVJX01PTlRIX0ZPUk1BVFRFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRNb250aFJhbmdlXScsXG4gICAgcHJvdmlkZXJzOiBbdHVpQXNDb250cm9sKFR1aUlucHV0TW9udGhSYW5nZURpcmVjdGl2ZSldLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpV2l0aFRleHRmaWVsZCwgVHVpU2VsZWN0TGlrZSwgVHVpRHJvcGRvd25BdXRvXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnJGV2ZW50LmlucHV0VHlwZT8uaW5jbHVkZXMoXCJkZWxldGVcIikgJiYgY2xlYXIoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRNb250aFJhbmdlRGlyZWN0aXZlIGV4dGVuZHMgVHVpQ29udHJvbDxUdWlNb250aFJhbmdlIHwgbnVsbD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlbiA9IHR1aURyb3Bkb3duT3BlbigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJtZWRpYXRlVmFsdWUgPSBzaWduYWw8VHVpTW9udGggfCBudWxsPihudWxsKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FsZW5kYXIgPSB0dWlJbmplY3RBdXhpbGlhcnk8VHVpQ2FsZW5kYXJNb250aD4oXG4gICAgICAgICh4KSA9PiB4IGluc3RhbmNlb2YgVHVpQ2FsZW5kYXJNb250aCxcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXR0ZXIgPSB0b1NpZ25hbChpbmplY3QoVFVJX01PTlRIX0ZPUk1BVFRFUiksIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiAoKSA9PiAnJyxcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29uID0gdHVpVGV4dGZpZWxkSWNvbkJpbmRpbmcoVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duRW5hYmxlZCA9IHR1aURyb3Bkb3duRW5hYmxlZCh0aGlzLmludGVyYWN0aXZlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXh0ZmllbGRWYWx1ZSA9IHR1aVZhbHVlQmluZGluZyhcbiAgICAgICAgY29tcHV0ZWQoKHZhbHVlID0gdGhpcy52YWx1ZSgpLCBmb3JtYXQgPSB0aGlzLmZvcm1hdHRlcigpKSA9PlxuICAgICAgICAgICAgdmFsdWUgPyBmb3JtYXQodmFsdWUuZnJvbSkgKyBSQU5HRV9TRVBBUkFUT1JfQ0hBUiArIGZvcm1hdCh2YWx1ZS50bykgOiAnJyxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFySW5pdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyID0gdGhpcy5jYWxlbmRhcigpO1xuXG4gICAgICAgIGlmIChjYWxlbmRhcikge1xuICAgICAgICAgICAgY2FsZW5kYXIub3B0aW9ucy5yYW5nZU1vZGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJTeW5jID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhcigpPy52YWx1ZS5zZXQodGhpcy5pbnRlcm1lZGlhdGVWYWx1ZSgpID8/IHRoaXMudmFsdWUoKSk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgLy8gVE9ETzogdXNlIGxpbmtlZCBzaWduYWwgKEFuZ3VsYXIgMTkrKVxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXNldEludGVybWVkaWF0ZVZhbHVlID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbnRlcm1lZGlhdGVWYWx1ZS5zZXQodGhpcy52YWx1ZSgpICYmIG51bGwpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCBvbk1vbnRoQ2xpY2tFZmZlY3QgPSBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmNhbGVuZGFyKCk/Lm1vbnRoQ2xpY2suc3Vic2NyaWJlKChtb250aCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW50ZXJtZWRpYXRlVmFsdWUgPSB0aGlzLmludGVybWVkaWF0ZVZhbHVlKCk7XG5cbiAgICAgICAgICAgIGlmICghaW50ZXJtZWRpYXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybWVkaWF0ZVZhbHVlLnNldChtb250aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoVHVpTW9udGhSYW5nZS5zb3J0KGludGVybWVkaWF0ZVZhbHVlLCBtb250aCkpO1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBvbkNsZWFudXAoKCkgPT4gc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpKTtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy5vcGVuLnNldCh0cnVlKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -6,9 +6,9 @@ import { maskitoCaretGuard, maskitoNumberOptionsGenerator, maskitoParseNumber, }
|
|
|
6
6
|
import { tuiAsControl, TuiControl, tuiValueTransformerFrom } from '@taiga-ui/cdk/classes';
|
|
7
7
|
import { CHAR_HYPHEN, CHAR_MINUS, TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
|
|
8
8
|
import { TUI_IS_IOS, tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
|
|
9
|
-
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
9
|
+
import { tuiInjectElement, tuiValueBinding } from '@taiga-ui/cdk/utils/dom';
|
|
10
10
|
import { tuiIsSafeToRound } from '@taiga-ui/cdk/utils/math';
|
|
11
|
-
import {
|
|
11
|
+
import { TuiWithTextfield } from '@taiga-ui/core/components/textfield';
|
|
12
12
|
import { TUI_DEFAULT_NUMBER_FORMAT, TUI_NUMBER_FORMAT } from '@taiga-ui/core/tokens';
|
|
13
13
|
import { tuiFormatNumber } from '@taiga-ui/core/utils/format';
|
|
14
14
|
import { tuiMaskito } from '@taiga-ui/kit/utils';
|
|
@@ -20,21 +20,22 @@ const DEFAULT_MAX_LENGTH = 18;
|
|
|
20
20
|
class TuiInputNumberDirective extends TuiControl {
|
|
21
21
|
constructor() {
|
|
22
22
|
super(...arguments);
|
|
23
|
-
this.textfield = inject(TuiTextfieldDirective);
|
|
24
23
|
this.isIOS = inject(TUI_IS_IOS);
|
|
25
24
|
this.numberFormat = toSignal(inject(TUI_NUMBER_FORMAT), {
|
|
26
25
|
initialValue: TUI_DEFAULT_NUMBER_FORMAT,
|
|
27
26
|
});
|
|
28
|
-
this.formatted = computed(() => maskitoParseNumber(this.textfield.value(), this.numberFormat().decimalSeparator));
|
|
29
27
|
this.precision = computed(() => Number.isNaN(this.numberFormat().precision) ? 2 : this.numberFormat().precision);
|
|
30
|
-
this.
|
|
28
|
+
this.isIntermediateState = computed(() => {
|
|
29
|
+
const value = maskitoParseNumber(this.textfieldValue(), this.numberFormat().decimalSeparator);
|
|
30
|
+
return value < 0 ? value > this.max() : value < this.min();
|
|
31
|
+
});
|
|
31
32
|
this.onChangeEffect = effect(() => {
|
|
32
|
-
const value = this.
|
|
33
|
+
const value = maskitoParseNumber(this.textfieldValue(), this.numberFormat().decimalSeparator);
|
|
33
34
|
if (Number.isNaN(value)) {
|
|
34
35
|
this.onChange(null);
|
|
35
36
|
return;
|
|
36
37
|
}
|
|
37
|
-
if (this.
|
|
38
|
+
if (this.isIntermediateState() ||
|
|
38
39
|
value < this.min() ||
|
|
39
40
|
value > this.max() ||
|
|
40
41
|
this.value() === value) {
|
|
@@ -44,6 +45,7 @@ class TuiInputNumberDirective extends TuiControl {
|
|
|
44
45
|
}, TUI_ALLOW_SIGNAL_WRITES);
|
|
45
46
|
this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
|
|
46
47
|
this.element = tuiInjectElement();
|
|
48
|
+
this.textfieldValue = tuiValueBinding();
|
|
47
49
|
this.inputMode = computed(() => {
|
|
48
50
|
if (this.isIOS && this.min() < 0) {
|
|
49
51
|
// iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'
|
|
@@ -53,7 +55,7 @@ class TuiInputNumberDirective extends TuiControl {
|
|
|
53
55
|
});
|
|
54
56
|
this.defaultMaxLength = computed(() => {
|
|
55
57
|
const { decimalSeparator, thousandSeparator } = this.numberFormat();
|
|
56
|
-
const decimalPart = !!this.precision() && this.
|
|
58
|
+
const decimalPart = !!this.precision() && this.textfieldValue().includes(decimalSeparator);
|
|
57
59
|
const precision = decimalPart ? Math.min(this.precision() + 1, 20) : 0;
|
|
58
60
|
const takeThousand = thousandSeparator.repeat(5).length;
|
|
59
61
|
return DEFAULT_MAX_LENGTH + precision + takeThousand;
|
|
@@ -87,21 +89,22 @@ class TuiInputNumberDirective extends TuiControl {
|
|
|
87
89
|
this.postfix.set(x);
|
|
88
90
|
}
|
|
89
91
|
writeValue(value) {
|
|
90
|
-
super.writeValue(value);
|
|
92
|
+
super.writeValue(Number.isNaN(value) ? null : value);
|
|
91
93
|
this.setValue(this.value());
|
|
92
94
|
}
|
|
93
95
|
setValue(value) {
|
|
94
|
-
this.
|
|
96
|
+
this.textfieldValue.set(this.formatNumber(value));
|
|
95
97
|
}
|
|
96
98
|
onBlur() {
|
|
97
99
|
this.onTouched();
|
|
98
|
-
if (!this.
|
|
100
|
+
if (!this.isIntermediateState()) {
|
|
99
101
|
this.setValue(this.value());
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
onFocus() {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
const value = maskitoParseNumber(this.textfieldValue(), this.numberFormat().decimalSeparator);
|
|
106
|
+
if (Number.isNaN(value) && !this.readOnly()) {
|
|
107
|
+
this.textfieldValue.set(this.prefix() + this.postfix());
|
|
105
108
|
}
|
|
106
109
|
}
|
|
107
110
|
formatNumber(value) {
|
|
@@ -154,7 +157,7 @@ class TuiInputNumberDirective extends TuiControl {
|
|
|
154
157
|
};
|
|
155
158
|
}
|
|
156
159
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputNumberDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
157
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberDirective, isStandalone: true, selector: "input[tuiInputNumber]", inputs: { minSetter: ["min", "minSetter"], maxSetter: ["max", "maxSetter"], prefixSetter: ["prefix", "prefixSetter"], postfixSetter: ["postfix", "postfixSetter"] }, host: { listeners: { "blur": "onBlur()", "focus": "onFocus()" }, properties: { "disabled": "disabled()", "attr.inputMode": "inputMode()", "attr.maxLength": "element.maxLength > 0 ? element.maxLength : defaultMaxLength()" } }, providers: [
|
|
160
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberDirective, isStandalone: true, selector: "input[tuiInputNumber]", inputs: { minSetter: ["min", "minSetter"], maxSetter: ["max", "maxSetter"], prefixSetter: ["prefix", "prefixSetter"], postfixSetter: ["postfix", "postfixSetter"] }, host: { listeners: { "input": "textfieldValue.set(element.value)", "blur": "onBlur()", "focus": "onFocus()" }, properties: { "disabled": "disabled()", "attr.inputMode": "inputMode()", "attr.maxLength": "element.maxLength > 0 ? element.maxLength : defaultMaxLength()" } }, providers: [
|
|
158
161
|
tuiAsControl(TuiInputNumberDirective),
|
|
159
162
|
tuiFallbackValueProvider(null),
|
|
160
163
|
tuiValueTransformerFrom(TUI_INPUT_NUMBER_OPTIONS),
|
|
@@ -176,6 +179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
176
179
|
'[disabled]': 'disabled()',
|
|
177
180
|
'[attr.inputMode]': 'inputMode()',
|
|
178
181
|
'[attr.maxLength]': 'element.maxLength > 0 ? element.maxLength : defaultMaxLength()',
|
|
182
|
+
'(input)': 'textfieldValue.set(element.value)',
|
|
179
183
|
'(blur)': 'onBlur()',
|
|
180
184
|
'(focus)': 'onFocus()',
|
|
181
185
|
},
|
|
@@ -193,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
193
197
|
type: Input,
|
|
194
198
|
args: ['postfix']
|
|
195
199
|
}] } });
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxFQUFDLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsZ0JBQWdCLEdBQ25CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixD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V1EsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBbEJuQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1AsWUFBWSx5QkFBeUI7d0JBQ3JDLHdCQUF3QixDQUFDLElBQUksQ0FBQzt3QkFDOUIsdUJBQXVCLENBQUMsd0JBQXdCLENBQUM7cUJBQ3BEO29CQUNELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO29CQUNwRCxJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLGtCQUFrQixFQUFFLGFBQWE7d0JBQ2pDLGtCQUFrQixFQUNkLGdFQUFnRTt3QkFDcEUsUUFBUSxFQUFFLFVBQVU7d0JBQ3BCLFNBQVMsRUFBRSxXQUFXO3FCQUN6QjtpQkFDSjs4QkF3RmMsU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxLQUFLO2dCQU1ELFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsS0FBSztnQkFPRCxZQUFZO3NCQUR0QixLQUFLO3VCQUFDLFFBQVE7Z0JBT0osYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCwgSW5wdXQsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge01hc2tpdG9EaXJlY3RpdmV9IGZyb20gJ0BtYXNraXRvL2FuZ3VsYXInO1xuaW1wb3J0IHR5cGUge01hc2tpdG9PcHRpb25zfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbn0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQgdHlwZSB7TWFza2l0b051bWJlclBhcmFtc30gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7XG4gICAgbWFza2l0b0NhcmV0R3VhcmQsXG4gICAgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IsXG4gICAgbWFza2l0b1BhcnNlTnVtYmVyLFxufSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHt0dWlBc0NvbnRyb2wsIFR1aUNvbnRyb2wsIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUywgVFVJX0FMTE9XX1NJR05BTF9XUklURVN9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VFVJX0lTX0lPUywgdHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpSXNTYWZlVG9Sb3VuZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7XG4gICAgVHVpVGV4dGZpZWxkRGlyZWN0aXZlLFxuICAgIFR1aVdpdGhUZXh0ZmllbGQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7VFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCwgVFVJX05VTUJFUl9GT1JNQVR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge3R1aUZvcm1hdE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7dHVpTWFza2l0b30gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX05VTUJFUl9PUFRJT05TfSBmcm9tICcuL2lucHV0LW51bWJlci5vcHRpb25zJztcblxuY29uc3QgREVGQVVMVF9NQVhfTEVOR1RIID0gMTg7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlJbnB1dE51bWJlcl0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXROdW1iZXJEaXJlY3RpdmUpLFxuICAgICAgICB0dWlGYWxsYmFja1ZhbHVlUHJvdmlkZXIobnVsbCksXG4gICAgICAgIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tKFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyksXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1R1aVdpdGhUZXh0ZmllbGQsIE1hc2tpdG9EaXJlY3RpdmVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICdbYXR0ci5pbnB1dE1vZGVdJzogJ2lucHV0TW9kZSgpJyxcbiAgICAgICAgJ1thdHRyLm1heExlbmd0aF0nOlxuICAgICAgICAgICAgJ2VsZW1lbnQubWF4TGVuZ3RoID4gMCA/IGVsZW1lbnQubWF4TGVuZ3RoIDogZGVmYXVsdE1heExlbmd0aCgpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoKScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXROdW1iZXJEaXJlY3RpdmUgZXh0ZW5kcyBUdWlDb250cm9sPG51bWJlciB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGREaXJlY3RpdmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNJT1MgPSBpbmplY3QoVFVJX0lTX0lPUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQgPSB0b1NpZ25hbChpbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogVFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCxcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybWF0dGVkID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgbWFza2l0b1BhcnNlTnVtYmVyKHRoaXMudGV4dGZpZWxkLnZhbHVlKCksIHRoaXMubnVtYmVyRm9ybWF0KCkuZGVjaW1hbFNlcGFyYXRvciksXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlY2lzaW9uID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgTnVtYmVyLmlzTmFOKHRoaXMubnVtYmVyRm9ybWF0KCkucHJlY2lzaW9uKSA/IDIgOiB0aGlzLm51bWJlckZvcm1hdCgpLnByZWNpc2lvbixcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bmZpbmlzaGVkID0gY29tcHV0ZWQoKHZhbHVlID0gdGhpcy5mb3JtYXR0ZWQoKSkgPT5cbiAgICAgICAgdmFsdWUgPCAwID8gdmFsdWUgPiB0aGlzLm1heCgpIDogdmFsdWUgPCB0aGlzLm1pbigpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25DaGFuZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybWF0dGVkKCk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMudW5maW5pc2hlZCgpIHx8XG4gICAgICAgICAgICB2YWx1ZSA8IHRoaXMubWluKCkgfHxcbiAgICAgICAgICAgIHZhbHVlID4gdGhpcy5tYXgoKSB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZSgpID09PSB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRNb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0lPUyAmJiB0aGlzLm1pbigpIDwgMCkge1xuICAgICAgICAgICAgLy8gaVBob25lIGRvZXMgbm90IGhhdmUgbWludXMgc2lnbiBpZiBpbnB1dE1vZGUgaXMgZXF1YWwgdG8gJ251bWVyaWMnIC8gJ2RlY2ltYWwnXG4gICAgICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uKCkgPyAnZGVjaW1hbCcgOiAnbnVtZXJpYyc7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdE1heExlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qge2RlY2ltYWxTZXBhcmF0b3IsIHRob3VzYW5kU2VwYXJhdG9yfSA9IHRoaXMubnVtYmVyRm9ybWF0KCk7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID1cbiAgICAgICAgICAgICEhdGhpcy5wcmVjaXNpb24oKSAmJiB0aGlzLnRleHRmaWVsZC52YWx1ZSgpLmluY2x1ZGVzKGRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSBkZWNpbWFsUGFydCA/IE1hdGgubWluKHRoaXMucHJlY2lzaW9uKCkgKyAxLCAyMCkgOiAwO1xuICAgICAgICBjb25zdCB0YWtlVGhvdXNhbmQgPSB0aG91c2FuZFNlcGFyYXRvci5yZXBlYXQoNSkubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBERUZBVUxUX01BWF9MRU5HVEggKyBwcmVjaXNpb24gKyB0YWtlVGhvdXNhbmQ7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFzayA9IHR1aU1hc2tpdG8oXG4gICAgICAgIGNvbXB1dGVkKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHtkZWNpbWFsTW9kZSwgLi4ubnVtYmVyRm9ybWF0fSA9IHRoaXMubnVtYmVyRm9ybWF0KCksXG4gICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gdGhpcy5wcmVjaXNpb24oKSxcbiAgICAgICAgICAgICkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVNYXNrKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ubnVtYmVyRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMsXG4gICAgICAgICAgICAgICAgICAgIG1pbjogdGhpcy5taW4oKSxcbiAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLm1heCgpLFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IHRoaXMucHJlZml4KCksXG4gICAgICAgICAgICAgICAgICAgIHBvc3RmaXg6IHRoaXMucG9zdGZpeCgpLFxuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsTW9kZSA9PT0gJ2Fsd2F5cycgPyBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiAwLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWluID0gc2lnbmFsKHRoaXMub3B0aW9ucy5taW4pO1xuICAgIHB1YmxpYyByZWFkb25seSBtYXggPSBzaWduYWwodGhpcy5vcHRpb25zLm1heCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHByZWZpeCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMucHJlZml4KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcG9zdGZpeCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMucG9zdGZpeCk7XG5cbiAgICBASW5wdXQoJ21pbicpXG4gICAgcHVibGljIHNldCBtaW5TZXR0ZXIoeDogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1pbk1heExpbWl0cyh4LCB0aGlzLm1heCgpKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ21heCcpXG4gICAgcHVibGljIHNldCBtYXhTZXR0ZXIoeDogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1pbk1heExpbWl0cyh0aGlzLm1pbigpLCB4KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKHY1KTogcmVwbGFjZSB3aXRoIHNpZ25hbCBpbnB1dFxuICAgIEBJbnB1dCgncHJlZml4JylcbiAgICBwdWJsaWMgc2V0IHByZWZpeFNldHRlcih4OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wcmVmaXguc2V0KHgpO1xuICAgIH1cblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdwb3N0Zml4JylcbiAgICBwdWJsaWMgc2V0IHBvc3RmaXhTZXR0ZXIoeDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucG9zdGZpeC5zZXQoeCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUuc2V0KHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgICAgICBpZiAoIXRoaXMudW5maW5pc2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTih0aGlzLmZvcm1hdHRlZCgpKSAmJiAhdGhpcy5yZWFkT25seSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZC52YWx1ZS5zZXQodGhpcy5wcmVmaXgoKSArIHRoaXMucG9zdGZpeCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5wcmVmaXgoKSAhPT0gQ0hBUl9NSU5VUyA/IHRoaXMucHJlZml4KCkgOiAnJykgK1xuICAgICAgICAgICAgdHVpRm9ybWF0TnVtYmVyKHZhbHVlLCB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5udW1iZXJGb3JtYXQoKSxcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOdW1iZXIgY2FuIHNhdGlzZnkgaW50ZXJ2YWwgW051bWJlci5NSU5fU0FGRV9JTlRFR0VSOyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl1cbiAgICAgICAgICAgICAgICAgKiBidXQgaXRzIHJvdW5kaW5nIGNhbiB2aW9sYXRlIGl0LlxuICAgICAgICAgICAgICAgICAqIEJlZm9yZSBCaWdJbnQgc3VwcG9ydCB0aGVyZSBpcyBubyBwZXJmZWN0IHNvbHV0aW9uIOKAkyBvbmx5IHRyYWRlIG9mZi5cbiAgICAgICAgICAgICAgICAgKiBObyByb3VuZGluZyBpcyBiZXR0ZXIgdGhhbiBsb3NlIHByZWNpc2lvbiBhbmQgaW5jb3JyZWN0IG11dGF0aW9uIG9mIGFscmVhZHkgdmFsaWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0dWlJc1NhZmVUb1JvdW5kKHZhbHVlLCB0aGlzLnByZWNpc2lvbigpKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJlY2lzaW9uKClcbiAgICAgICAgICAgICAgICAgICAgOiBJbmZpbml0eSxcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoQ0hBUl9IWVBIRU4sIENIQVJfTUlOVVMpICtcbiAgICAgICAgICAgIHRoaXMucG9zdGZpeCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVNaW5NYXhMaW1pdHMoXG4gICAgICAgIG51bGxhYmxlTWluOiBudW1iZXIgfCBudWxsLFxuICAgICAgICBudWxsYWJsZU1heDogbnVtYmVyIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWluID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNaW4pID8/XG4gICAgICAgICAgICBudWxsYWJsZU1pbiA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1pbjtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNYXgpID8/XG4gICAgICAgICAgICBudWxsYWJsZU1heCA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1heDtcblxuICAgICAgICB0aGlzLm1pbi5zZXQoTWF0aC5taW4obWluLCBtYXgpKTtcbiAgICAgICAgdGhpcy5tYXguc2V0KE1hdGgubWF4KG1pbiwgbWF4KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlTWFzayhwYXJhbXM6IE1hc2tpdG9OdW1iZXJQYXJhbXMpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHtwcmVmaXggPSAnJywgcG9zdGZpeCA9ICcnfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3Qge3BsdWdpbnMsIC4uLm9wdGlvbnN9ID0gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IocGFyYW1zKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbENhbGlicmF0aW9uUGx1Z2luID0gbWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbihcbiAgICAgICAgICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgbWluOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgLi4ucGx1Z2lucyxcbiAgICAgICAgICAgICAgICBpbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4sXG4gICAgICAgICAgICAgICAgbWFza2l0b0NhcmV0R3VhcmQoKHZhbHVlKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCAtIHBvc3RmaXgubGVuZ3RoLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxFQUFDLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMseUJBQXlCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7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QUF1QjttR0FBdkIsdUJBQXVCLHlmQWhCckI7WUFDUCxZQUFZLENBQUMsdUJBQXVCLENBQUM7WUFDckMsd0JBQXdCLENBQUMsSUFBSSxDQUFDO1lBQzlCLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDO1NBQ3BEOztTQVlRLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQW5CbkMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsU0FBUyxFQUFFO3dCQUNQLFlBQVkseUJBQXlCO3dCQUNyQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7d0JBQzlCLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDO3FCQUNwRDtvQkFDRCxjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDcEQsSUFBSSxFQUFFO3dCQUNGLFlBQVksRUFBRSxZQUFZO3dCQUMxQixrQkFBa0IsRUFBRSxhQUFhO3dCQUNqQyxrQkFBa0IsRUFDZCxnRUFBZ0U7d0JBQ3BFLFNBQVMsRUFBRSxtQ0FBbUM7d0JBQzlDLFFBQVEsRUFBRSxVQUFVO3dCQUNwQixTQUFTLEVBQUUsV0FBVztxQkFDekI7aUJBQ0o7OEJBNEZjLFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsS0FBSztnQkFNRCxTQUFTO3NCQURuQixLQUFLO3VCQUFDLEtBQUs7Z0JBT0QsWUFBWTtzQkFEdEIsS0FBSzt1QkFBQyxRQUFRO2dCQU9KLGFBQWE7c0JBRHZCLEtBQUs7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QsIElucHV0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtNYXNraXRvRGlyZWN0aXZlfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB0eXBlIHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9Jbml0aWFsQ2FsaWJyYXRpb25QbHVnaW59IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHR5cGUge01hc2tpdG9OdW1iZXJQYXJhbXN9IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQge1xuICAgIG1hc2tpdG9DYXJldEd1YXJkLFxuICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yLFxuICAgIG1hc2tpdG9QYXJzZU51bWJlcixcbn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sLCB0dWlWYWx1ZVRyYW5zZm9ybWVyRnJvbX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7Q0hBUl9IWVBIRU4sIENIQVJfTUlOVVMsIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1RVSV9JU19JT1MsIHR1aUZhbGxiYWNrVmFsdWVQcm92aWRlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50LCB0dWlWYWx1ZUJpbmRpbmd9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpSXNTYWZlVG9Sb3VuZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7VHVpV2l0aFRleHRmaWVsZH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtUVUlfREVGQVVMVF9OVU1CRVJfRk9STUFULCBUVUlfTlVNQkVSX0ZPUk1BVH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpRm9ybWF0TnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHt0dWlNYXNraXRvfSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfTlVNQkVSX09QVElPTlN9IGZyb20gJy4vaW5wdXQtbnVtYmVyLm9wdGlvbnMnO1xuXG5jb25zdCBERUZBVUxUX01BWF9MRU5HVEggPSAxODtcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aUlucHV0TnVtYmVyXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dE51bWJlckRpcmVjdGl2ZSksXG4gICAgICAgIHR1aUZhbGxiYWNrVmFsdWVQcm92aWRlcihudWxsKSxcbiAgICAgICAgdHVpVmFsdWVUcmFuc2Zvcm1lckZyb20oVFVJX0lOUFVUX05VTUJFUl9PUFRJT05TKSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpV2l0aFRleHRmaWVsZCwgTWFza2l0b0RpcmVjdGl2ZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAgICAgJ1thdHRyLmlucHV0TW9kZV0nOiAnaW5wdXRNb2RlKCknLFxuICAgICAgICAnW2F0dHIubWF4TGVuZ3RoXSc6XG4gICAgICAgICAgICAnZWxlbWVudC5tYXhMZW5ndGggPiAwID8gZWxlbWVudC5tYXhMZW5ndGggOiBkZWZhdWx0TWF4TGVuZ3RoKCknLFxuICAgICAgICAnKGlucHV0KSc6ICd0ZXh0ZmllbGRWYWx1ZS5zZXQoZWxlbWVudC52YWx1ZSknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE51bWJlckRpcmVjdGl2ZSBleHRlbmRzIFR1aUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNJT1MgPSBpbmplY3QoVFVJX0lTX0lPUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQgPSB0b1NpZ25hbChpbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogVFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCxcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlY2lzaW9uID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgTnVtYmVyLmlzTmFOKHRoaXMubnVtYmVyRm9ybWF0KCkucHJlY2lzaW9uKSA/IDIgOiB0aGlzLm51bWJlckZvcm1hdCgpLnByZWNpc2lvbixcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0ludGVybWVkaWF0ZVN0YXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcihcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUoKSxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0KCkuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gdmFsdWUgPiB0aGlzLm1heCgpIDogdmFsdWUgPCB0aGlzLm1pbigpO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uQ2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtYXNraXRvUGFyc2VOdW1iZXIoXG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlKCksXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCgpLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNJbnRlcm1lZGlhdGVTdGF0ZSgpIHx8XG4gICAgICAgICAgICB2YWx1ZSA8IHRoaXMubWluKCkgfHxcbiAgICAgICAgICAgIHZhbHVlID4gdGhpcy5tYXgoKSB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZSgpID09PSB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRmaWVsZFZhbHVlID0gdHVpVmFsdWVCaW5kaW5nKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRNb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0lPUyAmJiB0aGlzLm1pbigpIDwgMCkge1xuICAgICAgICAgICAgLy8gaVBob25lIGRvZXMgbm90IGhhdmUgbWludXMgc2lnbiBpZiBpbnB1dE1vZGUgaXMgZXF1YWwgdG8gJ251bWVyaWMnIC8gJ2RlY2ltYWwnXG4gICAgICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uKCkgPyAnZGVjaW1hbCcgOiAnbnVtZXJpYyc7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdE1heExlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qge2RlY2ltYWxTZXBhcmF0b3IsIHRob3VzYW5kU2VwYXJhdG9yfSA9IHRoaXMubnVtYmVyRm9ybWF0KCk7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID1cbiAgICAgICAgICAgICEhdGhpcy5wcmVjaXNpb24oKSAmJiB0aGlzLnRleHRmaWVsZFZhbHVlKCkuaW5jbHVkZXMoZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbiA9IGRlY2ltYWxQYXJ0ID8gTWF0aC5taW4odGhpcy5wcmVjaXNpb24oKSArIDEsIDIwKSA6IDA7XG4gICAgICAgIGNvbnN0IHRha2VUaG91c2FuZCA9IHRob3VzYW5kU2VwYXJhdG9yLnJlcGVhdCg1KS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIERFRkFVTFRfTUFYX0xFTkdUSCArIHByZWNpc2lvbiArIHRha2VUaG91c2FuZDtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrID0gdHVpTWFza2l0byhcbiAgICAgICAgY29tcHV0ZWQoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAge2RlY2ltYWxNb2RlLCAuLi5udW1iZXJGb3JtYXR9ID0gdGhpcy5udW1iZXJGb3JtYXQoKSxcbiAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSB0aGlzLnByZWNpc2lvbigpLFxuICAgICAgICAgICAgKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZU1hc2soe1xuICAgICAgICAgICAgICAgICAgICAuLi5udW1iZXJGb3JtYXQsXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyxcbiAgICAgICAgICAgICAgICAgICAgbWluOiB0aGlzLm1pbigpLFxuICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4KCksXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeDogdGhpcy5wcmVmaXgoKSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdGZpeDogdGhpcy5wb3N0Zml4KCksXG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxNb2RlID09PSAnYWx3YXlzJyA/IG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IDAsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBtaW4gPSBzaWduYWwodGhpcy5vcHRpb25zLm1pbik7XG4gICAgcHVibGljIHJlYWRvbmx5IG1heCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMubWF4KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5wcmVmaXgpO1xuICAgIHB1YmxpYyByZWFkb25seSBwb3N0Zml4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5wb3N0Zml4KTtcblxuICAgIEBJbnB1dCgnbWluJylcbiAgICBwdWJsaWMgc2V0IG1pblNldHRlcih4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWluTWF4TGltaXRzKHgsIHRoaXMubWF4KCkpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWF4JylcbiAgICBwdWJsaWMgc2V0IG1heFNldHRlcih4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWluTWF4TGltaXRzKHRoaXMubWluKCksIHgpO1xuICAgIH1cblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdwcmVmaXgnKVxuICAgIHB1YmxpYyBzZXQgcHJlZml4U2V0dGVyKHg6IHN0cmluZykge1xuICAgICAgICB0aGlzLnByZWZpeC5zZXQoeCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyh2NSk6IHJlcGxhY2Ugd2l0aCBzaWduYWwgaW5wdXRcbiAgICBASW5wdXQoJ3Bvc3RmaXgnKVxuICAgIHB1YmxpYyBzZXQgcG9zdGZpeFNldHRlcih4OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wb3N0Zml4LnNldCh4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKE51bWJlci5pc05hTih2YWx1ZSkgPyBudWxsIDogdmFsdWUpO1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUuc2V0KHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNJbnRlcm1lZGlhdGVTdGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtYXNraXRvUGFyc2VOdW1iZXIoXG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlKCksXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCgpLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkgJiYgIXRoaXMucmVhZE9ubHkoKSkge1xuICAgICAgICAgICAgdGhpcy50ZXh0ZmllbGRWYWx1ZS5zZXQodGhpcy5wcmVmaXgoKSArIHRoaXMucG9zdGZpeCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5wcmVmaXgoKSAhPT0gQ0hBUl9NSU5VUyA/IHRoaXMucHJlZml4KCkgOiAnJykgK1xuICAgICAgICAgICAgdHVpRm9ybWF0TnVtYmVyKHZhbHVlLCB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5udW1iZXJGb3JtYXQoKSxcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOdW1iZXIgY2FuIHNhdGlzZnkgaW50ZXJ2YWwgW051bWJlci5NSU5fU0FGRV9JTlRFR0VSOyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl1cbiAgICAgICAgICAgICAgICAgKiBidXQgaXRzIHJvdW5kaW5nIGNhbiB2aW9sYXRlIGl0LlxuICAgICAgICAgICAgICAgICAqIEJlZm9yZSBCaWdJbnQgc3VwcG9ydCB0aGVyZSBpcyBubyBwZXJmZWN0IHNvbHV0aW9uIOKAkyBvbmx5IHRyYWRlIG9mZi5cbiAgICAgICAgICAgICAgICAgKiBObyByb3VuZGluZyBpcyBiZXR0ZXIgdGhhbiBsb3NlIHByZWNpc2lvbiBhbmQgaW5jb3JyZWN0IG11dGF0aW9uIG9mIGFscmVhZHkgdmFsaWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0dWlJc1NhZmVUb1JvdW5kKHZhbHVlLCB0aGlzLnByZWNpc2lvbigpKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJlY2lzaW9uKClcbiAgICAgICAgICAgICAgICAgICAgOiBJbmZpbml0eSxcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoQ0hBUl9IWVBIRU4sIENIQVJfTUlOVVMpICtcbiAgICAgICAgICAgIHRoaXMucG9zdGZpeCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVNaW5NYXhMaW1pdHMoXG4gICAgICAgIG51bGxhYmxlTWluOiBudW1iZXIgfCBudWxsLFxuICAgICAgICBudWxsYWJsZU1heDogbnVtYmVyIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWluID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNaW4pID8/XG4gICAgICAgICAgICBudWxsYWJsZU1pbiA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1pbjtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNYXgpID8/XG4gICAgICAgICAgICBudWxsYWJsZU1heCA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1heDtcblxuICAgICAgICB0aGlzLm1pbi5zZXQoTWF0aC5taW4obWluLCBtYXgpKTtcbiAgICAgICAgdGhpcy5tYXguc2V0KE1hdGgubWF4KG1pbiwgbWF4KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlTWFzayhwYXJhbXM6IE1hc2tpdG9OdW1iZXJQYXJhbXMpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHtwcmVmaXggPSAnJywgcG9zdGZpeCA9ICcnfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3Qge3BsdWdpbnMsIC4uLm9wdGlvbnN9ID0gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IocGFyYW1zKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbENhbGlicmF0aW9uUGx1Z2luID0gbWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbihcbiAgICAgICAgICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgbWluOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgLi4ucGx1Z2lucyxcbiAgICAgICAgICAgICAgICBpbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4sXG4gICAgICAgICAgICAgICAgbWFza2l0b0NhcmV0R3VhcmQoKHZhbHVlKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCAtIHBvc3RmaXgubGVuZ3RoLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgIf } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component,
|
|
2
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, inject, Input, NgZone, signal, ViewEncapsulation, } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { tuiZonefree } from '@taiga-ui/cdk/observables';
|
|
5
5
|
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
@@ -14,32 +14,31 @@ class TuiInputNumberStep {
|
|
|
14
14
|
constructor() {
|
|
15
15
|
this.destroyRef = inject(DestroyRef);
|
|
16
16
|
this.zone = inject(NgZone);
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
17
|
+
this.element = tuiInjectElement();
|
|
18
|
+
this.textfieldOptions = inject(TUI_TEXTFIELD_OPTIONS);
|
|
19
19
|
this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
|
|
20
|
-
this.
|
|
20
|
+
this.inputNumber = inject(TuiInputNumberDirective, { self: true });
|
|
21
21
|
this.step = signal(this.options.step);
|
|
22
|
-
this.value = computed(() => this.input.value() ?? NaN);
|
|
23
22
|
}
|
|
24
23
|
// TODO(v5): replace with signal input
|
|
25
24
|
set stepSetter(x) {
|
|
26
25
|
this.step.set(x);
|
|
27
26
|
}
|
|
28
27
|
onStep(step) {
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
28
|
+
const { inputNumber } = this;
|
|
29
|
+
const newValue = tuiClamp((inputNumber.value() ?? 0) + step, inputNumber.min(), inputNumber.max());
|
|
30
|
+
if (this.inputNumber.value() === null) {
|
|
32
31
|
timer(0)
|
|
33
32
|
.pipe(tuiZonefree(this.zone), takeUntilDestroyed(this.destroyRef))
|
|
34
33
|
.subscribe(() => {
|
|
35
|
-
const caretIndex = this.
|
|
36
|
-
this.
|
|
34
|
+
const caretIndex = this.element.value.length - inputNumber.postfix().length;
|
|
35
|
+
this.element.setSelectionRange(caretIndex, caretIndex);
|
|
37
36
|
});
|
|
38
37
|
}
|
|
39
|
-
this.
|
|
38
|
+
this.inputNumber.setValue(newValue);
|
|
40
39
|
}
|
|
41
40
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputNumberStep, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberStep, isStandalone: true, selector: "input[tuiInputNumber][step]", inputs: { stepSetter: ["step", "stepSetter"] }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "keydown.arrowDown.prevent": "onStep(-step())", "keydown.arrowUp.prevent": "onStep(step())" }, properties: { "class._with-buttons": "step()" } }, ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberStep, isStandalone: true, selector: "input[tuiInputNumber][step]", inputs: { stepSetter: ["step", "stepSetter"] }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "keydown.arrowDown.prevent": "onStep(-step())", "keydown.arrowUp.prevent": "onStep(step())" }, properties: { "class._with-buttons": "step()" } }, ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! >= inputNumber.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! <= inputNumber.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
43
42
|
}
|
|
44
43
|
export { TuiInputNumberStep };
|
|
45
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputNumberStep, decorators: [{
|
|
@@ -49,9 +48,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
49
48
|
'(keydown.arrowDown.prevent)': 'onStep(-step())',
|
|
50
49
|
'(keydown.arrowUp.prevent)': 'onStep(step())',
|
|
51
50
|
'[class._with-buttons]': 'step()',
|
|
52
|
-
}, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!
|
|
51
|
+
}, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! >= inputNumber.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! <= inputNumber.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"] }]
|
|
53
52
|
}], propDecorators: { stepSetter: [{
|
|
54
53
|
type: Input,
|
|
55
54
|
args: ['step']
|
|
56
55
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL3N0ZXAvaW5wdXQtbnVtYmVyLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL3N0ZXAvaW5wdXQtbnVtYmVyLXN0ZXAudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDM0QsT0FBTyxFQUNILHFCQUFxQixFQUNyQixtQkFBbUIsR0FDdEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTNCLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRWxFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQUVqRSxNQWVhLGtCQUFrQjtJQWYvQjtRQWdCcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBCLFlBQU8sR0FBRyxnQkFBZ0IsRUFBb0IsQ0FBQztRQUMvQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNqRCxZQUFPLEdBQUcsTUFBTSxDQUF3Qix3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xFLGdCQUFXLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDNUQsU0FBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBNkJ2RDtJQTNCRyxzQ0FBc0M7SUFDdEMsSUFDVyxVQUFVLENBQUMsQ0FBUztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRVMsTUFBTSxDQUFDLElBQVk7UUFDekIsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQ3JCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFDakMsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUNqQixXQUFXLENBQUMsR0FBRyxFQUFFLENBQ3BCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ25DLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNqRSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNaLE1BQU0sVUFBVSxHQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUU3RCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0FwQ1Esa0JBQWtCO21HQUFsQixrQkFBa0IseVZDekMvQiw0cUNBb0NBLDhnRERQYyxJQUFJLDZGQUFFLFNBQVMsb0lBQUUsbUJBQW1COztTQVlyQyxrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFmOUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sNkJBQTZCLFdBQzlCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxpQkFHaEMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixlQUFlLEVBQUUsTUFBTTt3QkFDdkIsNkJBQTZCLEVBQUUsaUJBQWlCO3dCQUNoRCwyQkFBMkIsRUFBRSxnQkFBZ0I7d0JBQzdDLHVCQUF1QixFQUFFLFFBQVE7cUJBQ3BDOzhCQWNVLFVBQVU7c0JBRHBCLEtBQUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBzaWduYWwsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7dHVpWm9uZWZyZWV9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUNsYW1wfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHtUdWlCdXR0b259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgVFVJX1RFWFRGSUVMRF9PUFRJT05TLFxuICAgIFR1aVRleHRmaWVsZENvbnRlbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7dGltZXJ9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aUlucHV0TnVtYmVyRGlyZWN0aXZlfSBmcm9tICcuLi9pbnB1dC1udW1iZXIuZGlyZWN0aXZlJztcbmltcG9ydCB0eXBlIHtUdWlJbnB1dE51bWJlck9wdGlvbnN9IGZyb20gJy4uL2lucHV0LW51bWJlci5vcHRpb25zJztcbmltcG9ydCB7VFVJX0lOUFVUX05VTUJFUl9PUFRJT05TfSBmcm9tICcuLi9pbnB1dC1udW1iZXIub3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlJbnB1dE51bWJlcl1bc3RlcF0nLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBUdWlCdXR0b24sIFR1aVRleHRmaWVsZENvbnRlbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXItc3RlcC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXItc3RlcC5zdHlsZS5sZXNzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dEb3duLnByZXZlbnQpJzogJ29uU3RlcCgtc3RlcCgpKScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd1VwLnByZXZlbnQpJzogJ29uU3RlcChzdGVwKCkpJyxcbiAgICAgICAgJ1tjbGFzcy5fd2l0aC1idXR0b25zXSc6ICdzdGVwKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0TnVtYmVyU3RlcCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRmaWVsZE9wdGlvbnMgPSBpbmplY3QoVFVJX1RFWFRGSUVMRF9PUFRJT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdDxUdWlJbnB1dE51bWJlck9wdGlvbnM+KFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0TnVtYmVyID0gaW5qZWN0KFR1aUlucHV0TnVtYmVyRGlyZWN0aXZlLCB7c2VsZjogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdGVwID0gc2lnbmFsKHRoaXMub3B0aW9ucy5zdGVwKTtcblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdzdGVwJylcbiAgICBwdWJsaWMgc2V0IHN0ZXBTZXR0ZXIoeDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc3RlcC5zZXQoeCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU3RlcChzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2lucHV0TnVtYmVyfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdHVpQ2xhbXAoXG4gICAgICAgICAgICAoaW5wdXROdW1iZXIudmFsdWUoKSA/PyAwKSArIHN0ZXAsXG4gICAgICAgICAgICBpbnB1dE51bWJlci5taW4oKSxcbiAgICAgICAgICAgIGlucHV0TnVtYmVyLm1heCgpLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0TnVtYmVyLnZhbHVlKCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWVyKDApXG4gICAgICAgICAgICAgICAgLnBpcGUodHVpWm9uZWZyZWUodGhpcy56b25lKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhcmV0SW5kZXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnZhbHVlLmxlbmd0aCAtIGlucHV0TnVtYmVyLnBvc3RmaXgoKS5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGNhcmV0SW5kZXgsIGNhcmV0SW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dE51bWJlci5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHVpVGV4dGZpZWxkQ29udGVudD5cbiAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cInN0ZXAoKVwiXG4gICAgICAgIGNsYXNzPVwidC1pbnB1dC1udW1iZXItYnV0dG9uc1wiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvblwiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJ0ZXh0ZmllbGRPcHRpb25zLmFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlucHV0TnVtYmVyLmludGVyYWN0aXZlKCkgfHwgaW5wdXROdW1iZXIudmFsdWUoKSEgPj0gaW5wdXROdW1iZXIubWF4KClcIlxuICAgICAgICAgICAgW2ljb25TdGFydF09XCJvcHRpb25zLmljb25zLmluY3JlYXNlXCJcbiAgICAgICAgICAgIChjbGljay5wcmV2ZW50KT1cIm9uU3RlcChzdGVwKCkpXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJlbGVtZW50LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICArXG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cInRleHRmaWVsZE9wdGlvbnMuYXBwZWFyYW5jZSgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaW5wdXROdW1iZXIuaW50ZXJhY3RpdmUoKSB8fCBpbnB1dE51bWJlci52YWx1ZSgpISA8PSBpbnB1dE51bWJlci5taW4oKVwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cIm9wdGlvbnMuaWNvbnMuZGVjcmVhc2VcIlxuICAgICAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25TdGVwKC1zdGVwKCkpXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJlbGVtZW50LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICAtXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
|