@taiga-ui/kit 5.0.0-canary.2da416d → 5.0.0-canary.2f662cc
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/calendar-range/calendar-range.component.d.ts +3 -3
- package/components/counter/counter.component.d.ts +17 -0
- package/components/counter/counter.options.d.ts +14 -0
- package/components/counter/index.d.ts +2 -0
- package/components/index.d.ts +2 -0
- package/components/input-number/index.d.ts +1 -0
- package/components/input-number/step/input-number-step.component.d.ts +3 -5
- package/components/input-number/step/input-number-step.service.d.ts +12 -0
- package/components/multi-select/multi-select-group/multi-select-group.directive.d.ts +1 -0
- package/components/timeline/index.d.ts +3 -0
- package/components/timeline/timeline-item.component.d.ts +14 -0
- package/components/timeline/timeline.component.d.ts +16 -0
- package/components/timeline/timeline.d.ts +3 -0
- package/fesm2022/taiga-ui-kit-components-avatar.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-badge.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-block.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +1 -1
- package/fesm2022/taiga-ui-kit-components-calendar-month.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +15 -17
- package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-chip.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-comment.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-compass.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-counter.mjs +65 -0
- package/fesm2022/taiga-ui-kit-components-counter.mjs.map +1 -0
- package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-date.mjs +3 -2
- package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-number.mjs +35 -19
- package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-pin.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-input-year.mjs +5 -4
- package/fesm2022/taiga-ui-kit-components-input-year.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-like.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-message.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-multi-select.mjs +11 -4
- package/fesm2022/taiga-ui-kit-components-multi-select.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-pin.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-progress.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-radio-list.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-segmented.mjs +1 -1
- package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-select.mjs +6 -4
- package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-status.mjs +3 -3
- package/fesm2022/taiga-ui-kit-components-switch.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-textarea.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-components-timeline.mjs +68 -0
- package/fesm2022/taiga-ui-kit-components-timeline.mjs.map +1 -0
- package/fesm2022/taiga-ui-kit-components-toast.mjs +2 -2
- package/fesm2022/taiga-ui-kit-components.mjs +2 -0
- package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
- package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +1 -1
- package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs.map +1 -1
- package/package.json +99 -91
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components-input-date.mjs","sources":["../../../projects/kit/components/input-date/date-filler.ts","../../../projects/kit/components/input-date/input-date.options.ts","../../../projects/kit/components/input-date/input-date.directive.ts","../../../projects/kit/components/input-date/input-date.component.ts","../../../projects/kit/components/input-date/input-date.template.html","../../../projects/kit/components/input-date/input-date.ts","../../../projects/kit/components/input-date/taiga-ui-kit-components-input-date.ts"],"sourcesContent":["import {computed, inject, type Signal} from '@angular/core';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {TUI_DATE_FORMAT} from '@taiga-ui/core/tokens';\nimport {TUI_DATE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {identity} from 'rxjs';\n\nfunction changeDateSeparator(dateString: string, newDateSeparator: string): string {\n return dateString.replaceAll(/[^0-9A-ZА-Я]/gi, newDateSeparator);\n}\n\nexport function tuiWithDateFiller(\n fn: (dateFiller: string) => string = identity,\n): Signal<string> {\n const texts = inject(TUI_DATE_TEXTS);\n const format = inject(TUI_DATE_FORMAT);\n\n return tuiDirectiveBinding(\n TuiTextfieldComponent,\n 'filler',\n computed(() => {\n const {mode, separator} = format();\n const fillersMap = texts() ?? '';\n const filler = fillersMap && changeDateSeparator(fillersMap[mode], separator);\n\n return fn(filler);\n }),\n {},\n );\n}\n","import {\n TUI_IDENTITY_VALUE_TRANSFORMER,\n type TuiValueTransformer,\n} from '@taiga-ui/cdk/classes';\nimport {TUI_FIRST_DAY, TUI_LAST_DAY, type TuiDay} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputDateOptions {\n readonly icon: string;\n readonly max: TuiDay;\n readonly min: TuiDay;\n readonly valueTransformer: TuiValueTransformer<TuiDay | null, any>;\n}\n\nexport const TUI_INPUT_DATE_DEFAULT_OPTIONS = {\n icon: '@tui.calendar',\n min: TUI_FIRST_DAY,\n max: TUI_LAST_DAY,\n valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,\n} as const;\n\nexport const [TUI_INPUT_DATE_OPTIONS, tuiInputDateOptionsProvider] =\n tuiCreateOptions<TuiInputDateOptions>(TUI_INPUT_DATE_DEFAULT_OPTIONS);\n","import {\n computed,\n Directive,\n effect,\n inject,\n input,\n type Signal,\n untracked,\n} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {maskitoDateOptionsGenerator} from '@maskito/kit';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {\n DATE_FILLER_LENGTH,\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n type TuiDayRange,\n type TuiTime,\n} from '@taiga-ui/cdk/date-time';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {tuiAsOptionContent} from '@taiga-ui/core/components/data-list';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n tuiInjectAuxiliary,\n TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiIconEnd} from '@taiga-ui/core/directives/icons';\nimport {\n type TuiItemsHandlers,\n TuiItemsHandlersDirective,\n TuiItemsHandlersValidator,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {\n TuiDropdownAuto,\n tuiDropdownEnabled,\n TuiDropdownOpen,\n} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_DATE_FORMAT} from '@taiga-ui/core/tokens';\nimport {TuiCalendarRange} from '@taiga-ui/kit/components/calendar-range';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {tuiWithDateFiller} from './date-filler';\nimport {TUI_INPUT_DATE_OPTIONS, type TuiInputDateOptions} from './input-date.options';\n\n@Directive({\n host: {\n '[attr.inputmode]': 'mobile && open() ? \"none\" : \"numeric\"',\n '[disabled]': 'disabled()',\n '(input)': 'onValueChange($event.target.value)',\n '(click.capture.stop)': 'onClick()',\n },\n})\nexport abstract class TuiInputDateBase<\n T extends TuiDay | TuiDayRange | readonly [TuiDay, TuiTime | null],\n> extends TuiControl<T | null> {\n public abstract readonly max: Signal<TuiDay>;\n public abstract readonly min: Signal<TuiDay>;\n\n private readonly calendar = tuiInjectAuxiliary<TuiCalendar | TuiCalendarRange>(\n (x) => x instanceof TuiCalendar || x instanceof TuiCalendarRange,\n );\n\n protected readonly options =\n inject<Omit<TuiInputDateOptions, 'valueTransformer'>>(TUI_INPUT_DATE_OPTIONS);\n\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly input = inject(TuiInputDirective);\n protected readonly filler = tuiWithDateFiller();\n protected readonly mobile = inject(WA_IS_MOBILE);\n protected readonly open = inject(TuiDropdownOpen).open;\n protected readonly icon = tuiIconEnd(this.options.icon);\n protected readonly handlers = inject<TuiItemsHandlers<T>>(TuiItemsHandlersDirective);\n protected readonly format = inject(TUI_DATE_FORMAT);\n protected readonly dropdownEnabled = tuiDropdownEnabled(\n computed(() => !this.native && this.interactive()),\n );\n\n protected readonly identity = tuiDirectiveBinding(\n TuiItemsHandlersDirective,\n 'identityMatcher',\n (a: TuiDay, b: TuiDay) => a.daySame(b),\n {},\n );\n\n protected readonly valueEffect = effect(() => {\n const value =\n this.stringify(this.value()) ||\n (this.filler().length === this.el.value.length ? '' : this.el.value);\n\n this.input.value.set(value);\n });\n\n protected readonly calendarIn = effect(() => {\n if (this.calendar()) {\n this.processCalendar(this.calendar()!);\n }\n });\n\n protected readonly calendarOut = effect((onCleanup) => {\n const subscription = this.calendar()?.valueChange.subscribe((value) =>\n this.setDate(value),\n );\n\n onCleanup(() => subscription?.unsubscribe());\n });\n\n public readonly native =\n !!inject(TuiWithNativePicker, {optional: true}) && this.mobile;\n\n protected abstract onValueChange(value: string): void;\n\n public override writeValue(value: T | null): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n const changed = untracked(() => value !== this.value());\n\n if (changed || reset) {\n super.writeValue(value);\n this.input.value.set(this.stringify(this.value()));\n }\n }\n\n public setDate(value: TuiDay | TuiDayRange | readonly TuiDay[]): void {\n this.onChange(value as T);\n this.open.set(false);\n\n if (!this.el.closest('tui-dropdown')) {\n this.el.blur();\n }\n }\n\n protected processCalendar(calendar: TuiCalendar | TuiCalendarRange): void {\n const value = this.value();\n\n calendar.value = Array.isArray(value) ? value[0] : value;\n calendar.disabledItemHandler =\n this.handlers.disabledItemHandler() as TuiBooleanHandler<\n TuiDay | TuiDayRange\n >;\n calendar.min = this.min();\n calendar.max = this.max();\n }\n\n protected onClick(): void {\n if (!this.mobile && this.dropdownEnabled()) {\n this.open.update((open) => !open);\n }\n }\n\n protected stringify(value: T | null): string {\n return value?.toString(this.format().mode, this.format().separator) ?? '';\n }\n}\n\n@Directive({\n selector: 'input[tuiInputDate]',\n providers: [\n tuiAsOptionContent(TuiSelectOption),\n tuiAsControl(TuiInputDateDirective),\n tuiValueTransformerFrom(TUI_INPUT_DATE_OPTIONS),\n ],\n hostDirectives: [\n TuiWithInput,\n TuiDropdownAuto,\n TuiItemsHandlersValidator,\n MaskitoDirective,\n ],\n})\nexport class TuiInputDateDirective extends TuiInputDateBase<TuiDay> {\n public override readonly max = input(this.options.max, {\n transform: (max: TuiDay | null): TuiDay =>\n max instanceof TuiDay ? max : TUI_LAST_DAY,\n });\n\n public override readonly min = input(this.options.min, {\n transform: (min: TuiDay | null): TuiDay =>\n min instanceof TuiDay ? min : TUI_FIRST_DAY,\n });\n\n protected readonly mask = tuiMaskito(\n computed(() =>\n maskitoDateOptionsGenerator({\n separator: this.format().separator,\n mode: this.format().mode,\n min: this.min().toLocalNativeDate(),\n max: this.max().toLocalNativeDate(),\n }),\n ),\n );\n\n protected override onValueChange(value: string): void {\n this.control?.control?.updateValueAndValidity({emitEvent: false});\n this.onChange(\n value.length === DATE_FILLER_LENGTH\n ? TuiDay.normalizeParse(value, this.format().mode)\n : null,\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TuiDay} from '@taiga-ui/cdk/date-time';\nimport {\n TuiTextfieldContent,\n TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\n\nimport {TuiInputDateDirective} from './input-date.directive';\n\n@Component({\n selector: 'input[tuiInputDate][type=\"date\"]',\n imports: [TuiTextfieldContent],\n templateUrl: './input-date.template.html',\n styleUrl: './input-date.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiWithNativePicker],\n host: {\n ngSkipHydration: 'true',\n '[attr.list]': 'null',\n },\n})\nexport class TuiInputDateComponent {\n protected readonly host = inject(TuiInputDateDirective);\n\n public readonly list = input<string>();\n\n protected onInput(value: string): void {\n if (!value) {\n return this.host.onChange(null);\n }\n\n const [year = 0, month = 0, day = 0] = value.split('-').map(Number);\n\n this.host.onChange(new TuiDay(year, month - 1, day));\n }\n}\n","@if (host.native) {\n <input\n *tuiTextfieldContent\n type=\"date\"\n [attr.list]=\"list()\"\n [max]=\"host.max().toJSON()\"\n [min]=\"host.min().toJSON()\"\n [value]=\"host.value()?.toJSON()\"\n (click.stop.zoneless)=\"(0)\"\n (input)=\"onInput($any($event.target).value)\"\n (pointerdown.stop.zoneless)=\"(0)\"\n />\n}\n","import {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputDateComponent} from './input-date.component';\nimport {TuiInputDateDirective} from './input-date.directive';\n\nexport const TuiInputDate = [\n TuiInputDateDirective,\n TuiInputDateComponent,\n TuiCalendar,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,SAAS,mBAAmB,CAAC,UAAkB,EAAE,gBAAwB,EAAA;IACrE,OAAO,UAAU,CAAC,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACpE;AAEgB,SAAA,iBAAiB,CAC7B,EAAA,GAAqC,QAAQ,EAAA;AAE7C,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AACpC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;IAEtC,OAAO,mBAAmB,CACtB,qBAAqB,EACrB,QAAQ,EACR,QAAQ,CAAC,MAAK;QACV,MAAM,EAAC,IAAI,EAAE,SAAS,EAAC,GAAG,MAAM,EAAE;AAClC,QAAA,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE;AAChC,QAAA,MAAM,MAAM,GAAG,UAAU,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;AAE7E,QAAA,OAAO,EAAE,CAAC,MAAM,CAAC;AACrB,KAAC,CAAC,EACF,EAAE,CACL;AACL;;ACfa,MAAA,8BAA8B,GAAG;AAC1C,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,GAAG,EAAE,aAAa;AAClB,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,gBAAgB,EAAE,8BAA8B;;AAG7C,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAAC,GAC9D,gBAAgB,CAAsB,8BAA8B;;ACoClE,MAAgB,gBAEpB,SAAQ,UAAoB,CAAA;AAV9B,IAAA,WAAA,GAAA;;AAcqB,QAAA,IAAA,CAAA,QAAQ,GAAG,kBAAkB,CAC1C,CAAC,CAAC,KAAK,CAAC,YAAY,WAAW,IAAI,CAAC,YAAY,gBAAgB,CACnE;AAEkB,QAAA,IAAA,CAAA,OAAO,GACtB,MAAM,CAAgD,sBAAsB,CAAC;QAE9D,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAoB;AACzC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACjC,IAAM,CAAA,MAAA,GAAG,iBAAiB,EAAE;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI;QACnC,IAAI,CAAA,IAAA,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAsB,yBAAyB,CAAC;AACjE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAChC,QAAA,IAAA,CAAA,eAAe,GAAG,kBAAkB,CACnD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CACrD;QAEkB,IAAQ,CAAA,QAAA,GAAG,mBAAmB,CAC7C,yBAAyB,EACzB,iBAAiB,EACjB,CAAC,CAAS,EAAE,CAAS,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACtC,EAAE,CACL;AAEkB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,MAAK;YACzC,MAAM,KAAK,GACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;iBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAExE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,SAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAK;AACxC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC;;AAE9C,SAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,CAAC,SAAS,KAAI;YAClD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,KAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CACtB;YAED,SAAS,CAAC,MAAM,YAAY,EAAE,WAAW,EAAE,CAAC;AAChD,SAAC,CAAC;AAEc,QAAA,IAAA,CAAA,MAAM,GAClB,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,IAAI,CAAC,MAAM;AA4CrE;AAxCmB,IAAA,UAAU,CAAC,KAAe,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,KAAK;AACvE,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAEvD,QAAA,IAAI,OAAO,IAAI,KAAK,EAAE;AAClB,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;;;AAInD,IAAA,OAAO,CAAC,KAA+C,EAAA;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAU,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAEpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;;;AAIZ,IAAA,eAAe,CAAC,QAAwC,EAAA;AAC9D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAE1B,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AACxD,QAAA,QAAQ,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAEhC;AACL,QAAA,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACzB,QAAA,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;;IAGnB,OAAO,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;;;AAI/B,IAAA,SAAS,CAAC,KAAe,EAAA;QAC/B,OAAO,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE;;+GAjG3D,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oCAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,2CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,IAAI,EAAE;AACF,wBAAA,kBAAkB,EAAE,uCAAuC;AAC3D,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE,oCAAoC;AAC/C,wBAAA,sBAAsB,EAAE,WAAW;AACtC,qBAAA;AACJ,iBAAA;;AAoHK,MAAO,qBAAsB,SAAQ,gBAAwB,CAAA;AAdnE,IAAA,WAAA,GAAA;;QAe6B,IAAG,CAAA,GAAA,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AACnD,YAAA,SAAS,EAAE,CAAC,GAAkB,KAC1B,GAAG,YAAY,MAAM,GAAG,GAAG,GAAG,YAAY;AACjD,SAAA,CAAC;QAEuB,IAAG,CAAA,GAAA,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AACnD,YAAA,SAAS,EAAE,CAAC,GAAkB,KAC1B,GAAG,YAAY,MAAM,GAAG,GAAG,GAAG,aAAa;AAClD,SAAA,CAAC;QAEiB,IAAI,CAAA,IAAA,GAAG,UAAU,CAChC,QAAQ,CAAC,MACL,2BAA2B,CAAC;AACxB,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS;AAClC,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI;AACxB,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE;AACnC,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE;SACtC,CAAC,CACL,CACJ;AAUJ;AARsB,IAAA,aAAa,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,CACT,KAAK,CAAC,MAAM,KAAK;AACb,cAAE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI;cAC/C,IAAI,CACb;;+GA5BI,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAZnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,kBAAkB,CAAC,eAAe,CAAC;YACnC,YAAY,CAAC,qBAAqB,CAAC;YACnC,uBAAuB,CAAC,sBAAsB,CAAC;AAClD,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAQQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;wBACP,kBAAkB,CAAC,eAAe,CAAC;AACnC,wBAAA,YAAY,CAAuB,qBAAA,CAAA;wBACnC,uBAAuB,CAAC,sBAAsB,CAAC;AAClD,qBAAA;AACD,oBAAA,cAAc,EAAE;wBACZ,YAAY;wBACZ,eAAe;wBACf,yBAAyB;wBACzB,gBAAgB;AACnB,qBAAA;AACJ,iBAAA;;;MChJY,qBAAqB,CAAA;AAblC,IAAA,WAAA,GAAA;AAcuB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAEvC,IAAI,CAAA,IAAA,GAAG,KAAK,EAAU;AAWzC;AATa,IAAA,OAAO,CAAC,KAAa,EAAA;QAC3B,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;QAGnC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAEnE,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;;+GAZ/C,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BlC,yYAaA,EAAA,MAAA,EAAA,CAAA,6SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIc,mBAAmB,EAAA,QAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAWpB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,WACnC,CAAC,mBAAmB,CAAC,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B,CAAC,mBAAmB,CAAC,EAC/B,IAAA,EAAA;AACF,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,aAAa,EAAE,MAAM;AACxB,qBAAA,EAAA,QAAA,EAAA,yYAAA,EAAA,MAAA,EAAA,CAAA,6SAAA,CAAA,EAAA;;;AEfQ,MAAA,YAAY,GAAG;IACxB,qBAAqB;IACrB,qBAAqB;IACrB,WAAW;IACX,QAAQ;IACR,qBAAqB;IACrB,4BAA4B;IAC5B,kBAAkB;;;AClBtB;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components-input-date.mjs","sources":["../../../projects/kit/components/input-date/date-filler.ts","../../../projects/kit/components/input-date/input-date.options.ts","../../../projects/kit/components/input-date/input-date.directive.ts","../../../projects/kit/components/input-date/input-date.component.ts","../../../projects/kit/components/input-date/input-date.template.html","../../../projects/kit/components/input-date/input-date.ts","../../../projects/kit/components/input-date/taiga-ui-kit-components-input-date.ts"],"sourcesContent":["import {computed, inject, type Signal} from '@angular/core';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {TUI_DATE_FORMAT} from '@taiga-ui/core/tokens';\nimport {TUI_DATE_TEXTS} from '@taiga-ui/kit/tokens';\nimport {identity} from 'rxjs';\n\nfunction changeDateSeparator(dateString: string, newDateSeparator: string): string {\n return dateString.replaceAll(/[^0-9A-ZА-Я]/gi, newDateSeparator);\n}\n\nexport function tuiWithDateFiller(\n fn: (dateFiller: string) => string = identity,\n): Signal<string> {\n const texts = inject(TUI_DATE_TEXTS);\n const format = inject(TUI_DATE_FORMAT);\n\n return tuiDirectiveBinding(\n TuiTextfieldComponent,\n 'filler',\n computed(() => {\n const {mode, separator} = format();\n const fillersMap = texts() ?? '';\n const filler = fillersMap && changeDateSeparator(fillersMap[mode], separator);\n\n return fn(filler);\n }),\n {},\n );\n}\n","import {\n TUI_IDENTITY_VALUE_TRANSFORMER,\n type TuiValueTransformer,\n} from '@taiga-ui/cdk/classes';\nimport {TUI_FIRST_DAY, TUI_LAST_DAY, type TuiDay} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputDateOptions {\n readonly icon: string;\n readonly max: TuiDay;\n readonly min: TuiDay;\n readonly valueTransformer: TuiValueTransformer<TuiDay | null, any>;\n}\n\nexport const TUI_INPUT_DATE_DEFAULT_OPTIONS = {\n icon: '@tui.calendar',\n min: TUI_FIRST_DAY,\n max: TUI_LAST_DAY,\n valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,\n} as const;\n\nexport const [TUI_INPUT_DATE_OPTIONS, tuiInputDateOptionsProvider] =\n tuiCreateOptions<TuiInputDateOptions>(TUI_INPUT_DATE_DEFAULT_OPTIONS);\n","import {\n computed,\n Directive,\n effect,\n inject,\n input,\n type Signal,\n untracked,\n} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {maskitoDateOptionsGenerator} from '@maskito/kit';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {\n DATE_FILLER_LENGTH,\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n type TuiDayRange,\n type TuiTime,\n} from '@taiga-ui/cdk/date-time';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {tuiAsOptionContent} from '@taiga-ui/core/components/data-list';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n tuiInjectAuxiliary,\n TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiIconEnd} from '@taiga-ui/core/directives/icons';\nimport {\n type TuiItemsHandlers,\n TuiItemsHandlersDirective,\n TuiItemsHandlersValidator,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {\n TuiDropdownAuto,\n tuiDropdownEnabled,\n TuiDropdownOpen,\n} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_DATE_FORMAT} from '@taiga-ui/core/tokens';\nimport {TuiCalendarRange} from '@taiga-ui/kit/components/calendar-range';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {tuiWithDateFiller} from './date-filler';\nimport {TUI_INPUT_DATE_OPTIONS, type TuiInputDateOptions} from './input-date.options';\n\n@Directive({\n host: {\n '[attr.inputmode]': 'mobile && open() ? \"none\" : \"numeric\"',\n '[disabled]': 'disabled()',\n '(input)': 'onValueChange($event.target.value)',\n '(click.capture.stop)': 'onClick()',\n },\n})\nexport abstract class TuiInputDateBase<\n T extends TuiDay | TuiDayRange | readonly [TuiDay, TuiTime | null],\n> extends TuiControl<T | null> {\n public abstract readonly max: Signal<TuiDay>;\n public abstract readonly min: Signal<TuiDay>;\n\n private readonly calendar = tuiInjectAuxiliary<TuiCalendar | TuiCalendarRange>(\n (x) => x instanceof TuiCalendar || x instanceof TuiCalendarRange,\n );\n\n protected readonly options =\n inject<Omit<TuiInputDateOptions, 'valueTransformer'>>(TUI_INPUT_DATE_OPTIONS);\n\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly input = inject(TuiInputDirective);\n protected readonly filler = tuiWithDateFiller();\n protected readonly mobile = inject(WA_IS_MOBILE);\n protected readonly open = inject(TuiDropdownOpen).open;\n protected readonly icon = tuiIconEnd(this.options.icon);\n protected readonly handlers = inject<TuiItemsHandlers<T>>(TuiItemsHandlersDirective);\n protected readonly format = inject(TUI_DATE_FORMAT);\n protected readonly dropdownEnabled = tuiDropdownEnabled(\n computed(() => !this.native && this.interactive()),\n );\n\n protected readonly identity = tuiDirectiveBinding(\n TuiItemsHandlersDirective,\n 'identityMatcher',\n (a: TuiDay, b: TuiDay) => a.daySame(b),\n {},\n );\n\n protected readonly valueEffect = effect(() => {\n const value =\n this.stringify(this.value()) ||\n (this.filler().length === this.el.value.length ? '' : this.el.value);\n\n this.input.value.set(value);\n });\n\n protected readonly calendarIn = effect(() => {\n if (this.calendar()) {\n this.processCalendar(this.calendar()!);\n }\n });\n\n protected readonly calendarOut = effect((onCleanup) => {\n const subscription = this.calendar()?.valueChange.subscribe((value) =>\n this.setDate(value),\n );\n\n onCleanup(() => subscription?.unsubscribe());\n });\n\n public readonly native =\n !!inject(TuiWithNativePicker, {optional: true}) && this.mobile;\n\n protected abstract onValueChange(value: string): void;\n\n public override writeValue(value: T | null): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n const changed = untracked(() => value !== this.value());\n\n if (changed || reset) {\n super.writeValue(value);\n this.input.value.set(this.stringify(this.value()));\n }\n }\n\n public setDate(value: TuiDay | TuiDayRange | readonly TuiDay[]): void {\n this.onChange(value as T);\n this.open.set(false);\n\n if (!this.el.closest('tui-dropdown')) {\n this.el.blur();\n }\n }\n\n protected processCalendar(calendar: TuiCalendar | TuiCalendarRange): void {\n const value = this.value();\n\n calendar.value = Array.isArray(value) ? value[0] : value;\n calendar.disabledItemHandler =\n this.handlers.disabledItemHandler() as TuiBooleanHandler<\n TuiDay | TuiDayRange\n >;\n tuiSetSignal(calendar.min, this.min());\n tuiSetSignal(calendar.max, this.max());\n }\n\n protected onClick(): void {\n if (!this.mobile && this.dropdownEnabled()) {\n this.open.update((open) => !open);\n }\n }\n\n protected stringify(value: T | null): string {\n return value?.toString(this.format().mode, this.format().separator) ?? '';\n }\n}\n\n@Directive({\n selector: 'input[tuiInputDate]',\n providers: [\n tuiAsOptionContent(TuiSelectOption),\n tuiAsControl(TuiInputDateDirective),\n tuiValueTransformerFrom(TUI_INPUT_DATE_OPTIONS),\n ],\n hostDirectives: [\n TuiWithInput,\n TuiDropdownAuto,\n TuiItemsHandlersValidator,\n MaskitoDirective,\n ],\n})\nexport class TuiInputDateDirective extends TuiInputDateBase<TuiDay> {\n public override readonly max = input(this.options.max, {\n transform: (max: TuiDay | null): TuiDay =>\n max instanceof TuiDay ? max : TUI_LAST_DAY,\n });\n\n public override readonly min = input(this.options.min, {\n transform: (min: TuiDay | null): TuiDay =>\n min instanceof TuiDay ? min : TUI_FIRST_DAY,\n });\n\n protected readonly mask = tuiMaskito(\n computed(() =>\n maskitoDateOptionsGenerator({\n separator: this.format().separator,\n mode: this.format().mode,\n min: this.min().toLocalNativeDate(),\n max: this.max().toLocalNativeDate(),\n }),\n ),\n );\n\n protected override onValueChange(value: string): void {\n this.control?.control?.updateValueAndValidity({emitEvent: false});\n this.onChange(\n value.length === DATE_FILLER_LENGTH\n ? TuiDay.normalizeParse(value, this.format().mode)\n : null,\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TuiDay} from '@taiga-ui/cdk/date-time';\nimport {\n TuiTextfieldContent,\n TuiWithNativePicker,\n} from '@taiga-ui/core/components/textfield';\n\nimport {TuiInputDateDirective} from './input-date.directive';\n\n@Component({\n selector: 'input[tuiInputDate][type=\"date\"]',\n imports: [TuiTextfieldContent],\n templateUrl: './input-date.template.html',\n styleUrl: './input-date.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiWithNativePicker],\n host: {\n ngSkipHydration: 'true',\n '[attr.list]': 'null',\n },\n})\nexport class TuiInputDateComponent {\n protected readonly host = inject(TuiInputDateDirective);\n\n public readonly list = input<string>();\n\n protected onInput(value: string): void {\n if (!value) {\n return this.host.onChange(null);\n }\n\n const [year = 0, month = 0, day = 0] = value.split('-').map(Number);\n\n this.host.onChange(new TuiDay(year, month - 1, day));\n }\n}\n","@if (host.native) {\n <input\n *tuiTextfieldContent\n type=\"date\"\n [attr.list]=\"list()\"\n [max]=\"host.max().toJSON()\"\n [min]=\"host.min().toJSON()\"\n [value]=\"host.value()?.toJSON()\"\n (click.stop.zoneless)=\"(0)\"\n (input)=\"onInput($any($event.target).value)\"\n (pointerdown.stop.zoneless)=\"(0)\"\n />\n}\n","import {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputDateComponent} from './input-date.component';\nimport {TuiInputDateDirective} from './input-date.directive';\n\nexport const TuiInputDate = [\n TuiInputDateDirective,\n TuiInputDateComponent,\n TuiCalendar,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { TuiLabel } from '@taiga-ui/core/components/label';
|
|
|
2
2
|
import { TUI_TEXTFIELD_OPTIONS, TuiTextfieldContent, TuiTextfieldComponent, TuiTextfieldOptionsDirective } from '@taiga-ui/core/components/textfield';
|
|
3
3
|
import { TuiDropdownContent } from '@taiga-ui/core/portals/dropdown';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { inject, input, computed, effect, Directive, untracked, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
5
|
+
import { inject, input, computed, effect, Directive, untracked, DestroyRef, Injectable, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
6
6
|
import { maskitoNumberOptionsGenerator, maskitoStringifyNumber, maskitoCaretGuard, maskitoParseNumber } from '@maskito/kit';
|
|
7
7
|
import { WA_IS_IOS } from '@ng-web-apis/platform';
|
|
8
8
|
import { TuiValueTransformer, TUI_IDENTITY_VALUE_TRANSFORMER, TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
|
|
@@ -12,19 +12,19 @@ import { TuiInputDirective, TuiWithInput } from '@taiga-ui/core/components/input
|
|
|
12
12
|
import * as i1 from '@maskito/angular';
|
|
13
13
|
import { MaskitoDirective } from '@maskito/angular';
|
|
14
14
|
import { maskitoTransform } from '@maskito/core';
|
|
15
|
-
import { tuiIsSafeToRound, tuiRoundWith, tuiRound, tuiClamp } from '@taiga-ui/cdk/utils/math';
|
|
15
|
+
import { tuiIsSafeToRound, tuiRoundWith, tuiRound, tuiClamp, tuiSum } from '@taiga-ui/cdk/utils/math';
|
|
16
16
|
import { TUI_NUMBER_FORMAT } from '@taiga-ui/core/tokens';
|
|
17
17
|
import { tuiMaskito } from '@taiga-ui/kit/utils';
|
|
18
18
|
import { CHAR_MINUS } from '@taiga-ui/cdk/constants';
|
|
19
19
|
import { tuiCreateOptions, tuiProvide } from '@taiga-ui/cdk/utils/di';
|
|
20
20
|
import { TUI_FLOATING_PRECISION } from '@taiga-ui/core/components/slider';
|
|
21
21
|
import { tuiGetFractionPartPadded } from '@taiga-ui/core/utils/format';
|
|
22
|
-
import { identity, merge, fromEvent,
|
|
23
|
-
import { DOCUMENT } from '@angular/common';
|
|
24
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
22
|
+
import { identity, Subject, merge, fromEvent, switchMap, timer, expand, map, takeUntil, share } from 'rxjs';
|
|
25
23
|
import { TuiButton } from '@taiga-ui/core/components/button';
|
|
26
24
|
import * as i1$2 from '@taiga-ui/kit/directives/appearance-proxy';
|
|
27
25
|
import { TuiAppearanceProxy } from '@taiga-ui/kit/directives/appearance-proxy';
|
|
26
|
+
import { DOCUMENT } from '@angular/common';
|
|
27
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
28
28
|
|
|
29
29
|
const TUI_INPUT_NUMBER_DEFAULT_OPTIONS = {
|
|
30
30
|
min: Number.MIN_SAFE_INTEGER,
|
|
@@ -302,19 +302,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
302
302
|
const INITIAL_DELAY = 300;
|
|
303
303
|
const DELAY_DECREMENT = 15;
|
|
304
304
|
const MIN_DELAY = 100;
|
|
305
|
-
|
|
305
|
+
function getDelay(index) {
|
|
306
|
+
return Math.max(INITIAL_DELAY - index * DELAY_DECREMENT, MIN_DELAY);
|
|
307
|
+
}
|
|
308
|
+
class TuiInputNumberStepService {
|
|
306
309
|
constructor() {
|
|
307
310
|
this.doc = inject(DOCUMENT);
|
|
308
|
-
this.
|
|
311
|
+
this.destroyRef = inject(DestroyRef);
|
|
312
|
+
this.start$ = new Subject();
|
|
309
313
|
this.stop$ = merge(fromEvent(this.doc, 'pointerup'), fromEvent(this.doc, 'pointerleave'), fromEvent(this.doc, 'pointercancel'));
|
|
314
|
+
this.steps$ = this.start$.pipe(switchMap((value) => timer(INITIAL_DELAY).pipe(expand((_, index) => timer(getDelay(index))), map(() => value), takeUntil(this.stop$))), takeUntilDestroyed(this.destroyRef), share());
|
|
315
|
+
}
|
|
316
|
+
next(value) {
|
|
317
|
+
this.start$.next(value);
|
|
318
|
+
}
|
|
319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiInputNumberStepService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
320
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiInputNumberStepService }); }
|
|
321
|
+
}
|
|
322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiInputNumberStepService, decorators: [{
|
|
323
|
+
type: Injectable
|
|
324
|
+
}] });
|
|
325
|
+
|
|
326
|
+
class TuiInputNumberStep {
|
|
327
|
+
constructor() {
|
|
328
|
+
this.el = tuiInjectElement();
|
|
329
|
+
this.hold = inject((TuiInputNumberStepService));
|
|
330
|
+
this.$ = this.hold.steps$.subscribe((value) => this.onStep(value));
|
|
310
331
|
this.appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;
|
|
311
332
|
this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
|
|
312
333
|
this.mask = inject(TuiNumberMask, { self: true });
|
|
313
334
|
this.input = inject(TuiInputNumberDirective, { self: true });
|
|
314
|
-
this.step$ = new Subject();
|
|
315
|
-
this.stepping = this.step$
|
|
316
|
-
.pipe(switchMap((value) => timer(INITIAL_DELAY).pipe(expand((_, index) => timer(getDelay(index))), map(() => value), takeUntil(this.stop$))), takeUntilDestroyed())
|
|
317
|
-
.subscribe((value) => this.onStep(value));
|
|
318
335
|
this.step = input(this.options.step);
|
|
319
336
|
}
|
|
320
337
|
onStep(step) {
|
|
@@ -324,26 +341,25 @@ class TuiInputNumberStep {
|
|
|
324
341
|
* Without explicit conversion it throws
|
|
325
342
|
* TS2365: Operator + cannot be applied to types `number | bigint` and `number | bigint`
|
|
326
343
|
*/
|
|
327
|
-
typeof value === 'bigint'
|
|
344
|
+
typeof value === 'bigint'
|
|
345
|
+
? value + BigInt(step)
|
|
346
|
+
: tuiSum(value, Number(step)), this.mask.min(), this.mask.max()));
|
|
328
347
|
setTimeout((end = Number.MAX_SAFE_INTEGER) => {
|
|
329
348
|
this.el.setSelectionRange(end, end);
|
|
330
349
|
});
|
|
331
350
|
}
|
|
332
351
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiInputNumberStep, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
333
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiInputNumberStep, isStandalone: true, selector: "input[tuiInputNumber][step]", inputs: { step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "keydown.arrowDown.prevent": "onStep(-step())", "keydown.arrowUp.prevent": "onStep(step())" }, properties: { "class._with-buttons": "step()" } }, hostDirectives: [{ directive: i1$2.TuiAppearanceProxy }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n @if (step()) {\n <section class=\"t-input-number-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() >= mask.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (pointerdown.prevent)=\"
|
|
352
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiInputNumberStep, isStandalone: true, selector: "input[tuiInputNumber][step]", inputs: { step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "keydown.arrowDown.prevent": "onStep(-step())", "keydown.arrowUp.prevent": "onStep(step())" }, properties: { "class._with-buttons": "step()" } }, providers: [TuiInputNumberStepService], hostDirectives: [{ directive: i1$2.TuiAppearanceProxy }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n @if (step()) {\n <section class=\"t-input-number-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() >= mask.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (pointerdown.prevent)=\"hold.next(step())\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() <= mask.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (pointerdown.prevent)=\"hold.next(-step())\"\n >\n -\n </button>\n </section>\n }\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;display:flex;inset-inline-end:0;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}[dir=rtl] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-radius:0;border-top-left-radius:inherit}[dir=rtl] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0;border-bottom-left-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}[dir=rtl] [tuiInputNumber]._with-buttons{border-radius:inherit;border-top-left-radius:0;border-bottom-left-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));margin-inline-end: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: 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 }); }
|
|
334
353
|
}
|
|
335
354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiInputNumberStep, decorators: [{
|
|
336
355
|
type: Component,
|
|
337
|
-
args: [{ selector: 'input[tuiInputNumber][step]', imports: [TuiButton, TuiTextfieldContent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [TuiAppearanceProxy], host: {
|
|
356
|
+
args: [{ selector: 'input[tuiInputNumber][step]', imports: [TuiButton, TuiTextfieldContent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiInputNumberStepService], hostDirectives: [TuiAppearanceProxy], host: {
|
|
338
357
|
ngSkipHydration: 'true',
|
|
339
358
|
'(keydown.arrowDown.prevent)': 'onStep(-step())',
|
|
340
359
|
'(keydown.arrowUp.prevent)': 'onStep(step())',
|
|
341
360
|
'[class._with-buttons]': 'step()',
|
|
342
|
-
}, template: "<ng-container *tuiTextfieldContent>\n @if (step()) {\n <section class=\"t-input-number-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() >= mask.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (pointerdown.prevent)=\"
|
|
361
|
+
}, template: "<ng-container *tuiTextfieldContent>\n @if (step()) {\n <section class=\"t-input-number-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() >= mask.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (pointerdown.prevent)=\"hold.next(step())\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() <= mask.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (pointerdown.prevent)=\"hold.next(-step())\"\n >\n -\n </button>\n </section>\n }\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;display:flex;inset-inline-end:0;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}[dir=rtl] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-radius:0;border-top-left-radius:inherit}[dir=rtl] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0;border-bottom-left-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}[dir=rtl] [tuiInputNumber]._with-buttons{border-radius:inherit;border-top-left-radius:0;border-bottom-left-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));margin-inline-end:var(--t-input-number-offset-end)}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"] }]
|
|
343
362
|
}] });
|
|
344
|
-
function getDelay(index) {
|
|
345
|
-
return Math.max(INITIAL_DELAY - index * DELAY_DECREMENT, MIN_DELAY);
|
|
346
|
-
}
|
|
347
363
|
|
|
348
364
|
class TuiBigIntValueTransformer extends TuiValueTransformer {
|
|
349
365
|
constructor() {
|
|
@@ -391,5 +407,5 @@ const TuiInputNumber = [
|
|
|
391
407
|
* Generated bundle index. Do not edit.
|
|
392
408
|
*/
|
|
393
409
|
|
|
394
|
-
export { TUI_INPUT_NUMBER_DEFAULT_OPTIONS, TUI_INPUT_NUMBER_OPTIONS, TuiBigIntQuantumValueTransformer, TuiBigIntValueTransformer, TuiInputNumber, TuiInputNumberDirective, TuiInputNumberStep, TuiNumberMask, TuiNumberValueTransformer, TuiQuantumValueTransformer, TuiQuantumValueTransformerBase, TuiWithNumberMask, tuiInputNumberOptionsProvider };
|
|
410
|
+
export { TUI_INPUT_NUMBER_DEFAULT_OPTIONS, TUI_INPUT_NUMBER_OPTIONS, TuiBigIntQuantumValueTransformer, TuiBigIntValueTransformer, TuiInputNumber, TuiInputNumberDirective, TuiInputNumberStep, TuiInputNumberStepService, TuiNumberMask, TuiNumberValueTransformer, TuiQuantumValueTransformer, TuiQuantumValueTransformerBase, TuiWithNumberMask, tuiInputNumberOptionsProvider };
|
|
395
411
|
//# sourceMappingURL=taiga-ui-kit-components-input-number.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components-input-number.mjs","sources":["../../../projects/kit/components/input-number/input-number.options.ts","../../../projects/kit/components/input-number/number-mask.directive.ts","../../../projects/kit/components/input-number/quantum.directive.ts","../../../projects/kit/components/input-number/transformers/number.value-transformer.ts","../../../projects/kit/components/input-number/input-number.directive.ts","../../../projects/kit/components/input-number/step/input-number-step.component.ts","../../../projects/kit/components/input-number/step/input-number-step.template.html","../../../projects/kit/components/input-number/transformers/bigint.value-transformer.ts","../../../projects/kit/components/input-number/input-number.ts","../../../projects/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import {type MaskitoNumberParams} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {CHAR_MINUS} from '@taiga-ui/cdk/constants';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputNumberOptions extends Pick<\n Required<MaskitoNumberParams>,\n 'max' | 'min' | 'minusSign' | 'postfix' | 'prefix'\n> {\n readonly step: bigint | number;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n readonly valueTransformer:\n | TuiValueTransformer<bigint | null, any>\n | TuiValueTransformer<number | null, any>\n | null;\n}\n\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n prefix: '',\n postfix: '',\n minusSign: CHAR_MINUS,\n step: 0,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_NUMBER_OPTIONS, tuiInputNumberOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, effect, inject, input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions, maskitoTransform} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n type MaskitoNumberParams,\n maskitoStringifyNumber,\n} from '@maskito/kit';\nimport {tuiIsSafeToRound, tuiRoundWith} from '@taiga-ui/cdk/utils/math';\nimport {TuiInputDirective} from '@taiga-ui/core/components/input';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from './input-number.options';\n\n@Directive({hostDirectives: [MaskitoDirective]})\nexport class TuiNumberMask {\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private readonly numberFormat = inject(TUI_NUMBER_FORMAT);\n private readonly input = inject(TuiInputDirective);\n\n public readonly prefix = input(this.options.prefix);\n public readonly postfix = input(this.options.postfix);\n public readonly maximumFractionDigits = computed(\n (precision = this.numberFormat().precision) =>\n Number.isNaN(precision) ? 2 : precision,\n );\n\n public readonly min = input<\n TuiInputNumberOptions['min'],\n TuiInputNumberOptions['min'] | null\n >(this.options.min, {transform: (x) => x ?? this.options.min});\n\n public readonly max = input<\n TuiInputNumberOptions['max'],\n TuiInputNumberOptions['max'] | null\n >(this.options.max, {transform: (x) => x ?? this.options.max});\n\n public readonly params = computed(() => {\n const {decimalMode, ...numberFormat} = this.numberFormat();\n const maximumFractionDigits = this.maximumFractionDigits();\n\n return {\n ...numberFormat,\n ...this.options,\n maximumFractionDigits,\n min: this.min(),\n max: this.max(),\n prefix: this.prefix(),\n postfix: this.postfix(),\n minimumFractionDigits: decimalMode === 'always' ? maximumFractionDigits : 0,\n } as const satisfies MaskitoNumberParams;\n });\n\n protected readonly mask = tuiMaskito(computed(() => this.computeMask(this.params())));\n\n protected readonly maskInitialCalibration = effect(() => {\n const options = maskitoNumberOptionsGenerator({\n ...this.params(),\n min: -Infinity,\n max: Infinity,\n });\n\n this.input.value.update((x) => maskitoTransform(x, options));\n });\n\n public stringify(value: bigint | number | null | undefined): string {\n const params = this.params();\n const precision = params.maximumFractionDigits;\n const rounded =\n typeof value === 'number' &&\n Number.isFinite(precision) &&\n tuiIsSafeToRound(value, precision)\n ? tuiRoundWith({\n value,\n precision,\n method: this.numberFormat().rounding,\n })\n : value;\n\n return maskitoStringifyNumber(rounded ?? null, {\n ...params,\n minimumFractionDigits:\n String(rounded).includes(params.decimalSeparator) &&\n this.numberFormat().decimalMode !== 'not-zero'\n ? params.maximumFractionDigits\n : 0,\n });\n }\n\n private computeMask(params: MaskitoNumberParams): MaskitoOptions {\n const {prefix = '', postfix = ''} = params;\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n\n return {\n ...options,\n plugins: [\n ...plugins,\n maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n\n@Directive({\n hostDirectives: [\n {\n directive: TuiNumberMask,\n inputs: ['min', 'max', 'prefix', 'postfix'],\n },\n ],\n})\nexport class TuiWithNumberMask {}\n","import {Directive, input} from '@angular/core';\nimport {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiIsSafeToRound, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/core/components/slider';\nimport {tuiGetFractionPartPadded} from '@taiga-ui/core/utils/format';\nimport {identity} from 'rxjs';\n\n@Directive()\nexport class TuiQuantumValueTransformerBase extends TuiValueTransformer<\n number | null,\n number | null\n> {\n public override fromControlValue = identity;\n\n // eslint-disable-next-line @typescript-eslint/parameter-properties,@angular-eslint/prefer-inject\n constructor(public quantum = 0) {\n super();\n }\n\n public toControlValue(value: number | null): number | null {\n return value != null &&\n this.quantum > 0 &&\n tuiIsSafeToRound(value, tuiGetFractionPartPadded(this.quantum).length)\n ? tuiRound(\n Math.round(value / this.quantum) * this.quantum,\n TUI_FLOATING_PRECISION,\n )\n : value;\n }\n}\n\n@Directive({\n selector: '[tuiInputNumber][quantum]:not([bigint])',\n inputs: ['quantum'],\n})\nexport class TuiQuantumValueTransformer extends TuiQuantumValueTransformerBase {\n constructor() {\n super(0);\n }\n}\n\n@Directive({selector: '[tuiInputNumber][bigint][quantum]'})\nexport class TuiBigIntQuantumValueTransformer extends TuiValueTransformer<\n bigint | null,\n bigint | null\n> {\n public readonly quantum = input<bigint>(BigInt(0));\n public override fromControlValue = identity;\n\n public toControlValue(value: bigint | null): bigint | null {\n if (!this.quantum() || !value) {\n return value;\n }\n\n const floor = (value / this.quantum()) * this.quantum();\n const remainder = value % this.quantum();\n\n return (\n floor + (BigInt(2) * remainder >= this.quantum() ? this.quantum() : BigInt(0))\n );\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiQuantumValueTransformer} from '../quantum.directive';\n\n@Directive({providers: [tuiProvide(TuiValueTransformer, TuiNumberValueTransformer)]})\nexport class TuiNumberValueTransformer extends TuiValueTransformer<\n string,\n number | null\n> {\n private readonly mask = inject(TuiNumberMask);\n private readonly quantumTransformer: TuiValueTransformer<\n number | null,\n number | null\n > =\n inject(TuiQuantumValueTransformer, {optional: true}) ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly optionsTransformer: TuiValueTransformer<number | null, any> =\n inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n public toControlValue(textfieldValue: string | null): number | null {\n const parsed = maskitoParseNumber(textfieldValue ?? '', this.mask.params());\n\n return this.optionsTransformer.toControlValue(\n this.quantumTransformer.toControlValue(Number.isNaN(parsed) ? null : parsed),\n );\n }\n\n public fromControlValue(controlValue: number | null): string {\n return this.mask.stringify(\n this.optionsTransformer.fromControlValue(controlValue),\n );\n }\n}\n","import {computed, Directive, effect, inject, untracked} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\n\nimport {TuiNumberMask, TuiWithNumberMask} from './number-mask.directive';\nimport {TuiNumberValueTransformer} from './transformers/number.value-transformer';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n@Directive({\n selector: 'input[tuiInputNumber]',\n providers: [tuiAsControl(TuiInputNumberDirective)],\n hostDirectives: [TuiWithInput, TuiWithNumberMask, TuiNumberValueTransformer],\n host: {\n '[disabled]': 'disabled()',\n '[attr.inputMode]': 'inputMode()',\n '[attr.maxLength]':\n 'element.maxLength > 0 ? element.maxLength : defaultMaxLength()',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n },\n})\nexport class TuiInputNumberDirective extends TuiControl<string> {\n private readonly mask = inject(TuiNumberMask);\n private readonly input = inject(TuiInputDirective);\n private readonly isIOS = inject(WA_IS_IOS);\n\n protected readonly element = tuiInjectElement<HTMLInputElement>();\n\n protected readonly inputMode = computed(() => {\n if (this.isIOS) {\n return this.mask.min() < 0\n ? 'text' // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'\n : 'decimal';\n }\n\n /**\n * Samsung Keyboard does not have minus sign for `inputmode=decimal`\n * @see https://github.com/taiga-family/taiga-ui/issues/11061#issuecomment-2939103792\n */\n return 'numeric';\n });\n\n protected readonly defaultMaxLength = computed(() => {\n const {\n decimalSeparator,\n thousandSeparator,\n maximumFractionDigits,\n prefix,\n postfix,\n min,\n max,\n } = this.mask.params();\n\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n return -1;\n }\n\n const decimalPart =\n !!maximumFractionDigits && this.input.value().includes(decimalSeparator);\n const precision = decimalPart ? Math.min(maximumFractionDigits + 1, 20) : 0;\n const takeThousand = thousandSeparator.repeat(5).length;\n const affixes = prefix.length + postfix.length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand + affixes;\n });\n\n public readonly parsed = computed(() => this.parse(this.input.value()));\n\n protected readonly onChangeEffect = effect(() => {\n const changed = !Object.is(\n this.input.value().replaceAll(/\\D/g, ''),\n untracked(() => this.value()?.replaceAll(/\\D/g, '')) ?? '',\n );\n const value = this.parsed();\n const valid =\n Number.isNaN(value) || (value >= this.mask.min() && value <= this.mask.max());\n\n if (changed && valid) {\n this.onChange(this.input.value());\n }\n });\n\n public override writeValue(value: any): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n const changed = untracked(\n () => value !== this.transformer.toControlValue(this.value()),\n );\n\n if (changed || reset) {\n super.writeValue(value);\n untracked(() => this.input.value.set(this.value()));\n }\n }\n\n public setValue(value: bigint | number | string | null): void {\n this.input.value.set(\n typeof value === 'string' ? value : this.mask.stringify(value),\n );\n }\n\n protected onFocus(): void {\n if (!this.input.value() && !this.readOnly()) {\n this.input.value.set(this.mask.prefix() + this.mask.postfix());\n }\n }\n\n protected onBlur(): void {\n setTimeout(() =>\n this.setValue(this.transformer.fromControlValue(this.control.value)),\n );\n }\n\n private parse(value: string): bigint | number {\n const params = this.mask.params();\n const possibleTooBig =\n !Number.isFinite(this.mask.min()) || !Number.isFinite(this.mask.max());\n\n return (\n maskitoParseNumber(value, {\n ...params,\n bigint: !value.includes(params.decimalSeparator) && possibleTooBig,\n }) ?? NaN\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearanceProxy} from '@taiga-ui/kit/directives/appearance-proxy';\nimport {expand, fromEvent, map, merge, Subject, switchMap, takeUntil, timer} from 'rxjs';\n\nimport {TuiInputNumberDirective} from '../input-number.directive';\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\n\nconst INITIAL_DELAY = 300;\nconst DELAY_DECREMENT = 15;\nconst MIN_DELAY = 100;\n\n@Component({\n selector: 'input[tuiInputNumber][step]',\n imports: [TuiButton, TuiTextfieldContent],\n templateUrl: './input-number-step.template.html',\n styleUrl: './input-number-step.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiAppearanceProxy],\n host: {\n ngSkipHydration: 'true',\n '(keydown.arrowDown.prevent)': 'onStep(-step())',\n '(keydown.arrowUp.prevent)': 'onStep(step())',\n '[class._with-buttons]': 'step()',\n },\n})\nexport class TuiInputNumberStep {\n private readonly doc = inject(DOCUMENT);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private readonly stop$ = merge(\n fromEvent(this.doc, 'pointerup'),\n fromEvent(this.doc, 'pointerleave'),\n fromEvent(this.doc, 'pointercancel'),\n );\n\n protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n protected readonly options = inject<TuiInputNumberOptions>(TUI_INPUT_NUMBER_OPTIONS);\n protected readonly mask = inject(TuiNumberMask, {self: true});\n protected readonly input = inject(TuiInputNumberDirective, {self: true});\n protected readonly step$ = new Subject<bigint | number>();\n\n protected readonly stepping = this.step$\n .pipe(\n switchMap((value) =>\n timer(INITIAL_DELAY).pipe(\n expand((_, index) => timer(getDelay(index))),\n map(() => value),\n takeUntil(this.stop$),\n ),\n ),\n takeUntilDestroyed(),\n )\n .subscribe((value) => this.onStep(value));\n\n public readonly step = input(this.options.step);\n\n protected onStep(step: bigint | number): void {\n const value = this.input.parsed() || 0;\n\n this.input.setValue(\n tuiClamp<bigint | number>(\n /**\n * Without explicit conversion it throws\n * TS2365: Operator + cannot be applied to types `number | bigint` and `number | bigint`\n */\n typeof value === 'bigint' ? value + BigInt(step) : value + Number(step),\n this.mask.min(),\n this.mask.max(),\n ),\n );\n\n setTimeout((end = Number.MAX_SAFE_INTEGER) => {\n this.el.setSelectionRange(end, end);\n });\n }\n}\n\nfunction getDelay(index: number): number {\n return Math.max(INITIAL_DELAY - index * DELAY_DECREMENT, MIN_DELAY);\n}\n","<ng-container *tuiTextfieldContent>\n @if (step()) {\n <section class=\"t-input-number-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() >= mask.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (pointerdown.prevent)=\"step$.next(step())\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() <= mask.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (pointerdown.prevent)=\"step$.next(-step())\"\n >\n -\n </button>\n </section>\n }\n</ng-container>\n","import {Directive, inject} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiBigIntQuantumValueTransformer} from '../quantum.directive';\n\n@Directive({\n selector: '[tuiInputNumber][bigint]',\n providers: [tuiProvide(TuiValueTransformer, TuiBigIntValueTransformer)],\n})\nexport class TuiBigIntValueTransformer extends TuiValueTransformer<\n string,\n bigint | null\n> {\n private readonly quantumTransformer: TuiValueTransformer<\n bigint | null,\n bigint | null\n > =\n inject(TuiBigIntQuantumValueTransformer, {optional: true}) ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly optionsTransformer: TuiValueTransformer<bigint | null, any> =\n inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly mask = inject(TuiNumberMask);\n\n public toControlValue(textfieldValue: string | null): bigint | null {\n return this.optionsTransformer.toControlValue(\n this.quantumTransformer.toControlValue(\n maskitoParseNumber(textfieldValue ?? '', {\n ...this.mask.params(),\n bigint: true,\n }),\n ),\n );\n }\n\n public fromControlValue(controlValue: bigint | null): string {\n return this.mask.stringify(\n this.optionsTransformer.fromControlValue(controlValue),\n );\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputNumberDirective} from './input-number.directive';\nimport {TuiNumberMask} from './number-mask.directive';\nimport {\n TuiBigIntQuantumValueTransformer,\n TuiQuantumValueTransformer,\n} from './quantum.directive';\nimport {TuiInputNumberStep} from './step/input-number-step.component';\nimport {TuiBigIntValueTransformer} from './transformers/bigint.value-transformer';\n\nexport const TuiInputNumber = [\n TuiInputNumberDirective,\n TuiNumberMask,\n TuiInputNumberStep,\n TuiBigIntValueTransformer,\n TuiQuantumValueTransformer,\n TuiBigIntQuantumValueTransformer,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.TuiWithNumberMask","i3.TuiNumberValueTransformer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components-input-number.mjs","sources":["../../../projects/kit/components/input-number/input-number.options.ts","../../../projects/kit/components/input-number/number-mask.directive.ts","../../../projects/kit/components/input-number/quantum.directive.ts","../../../projects/kit/components/input-number/transformers/number.value-transformer.ts","../../../projects/kit/components/input-number/input-number.directive.ts","../../../projects/kit/components/input-number/step/input-number-step.service.ts","../../../projects/kit/components/input-number/step/input-number-step.component.ts","../../../projects/kit/components/input-number/step/input-number-step.template.html","../../../projects/kit/components/input-number/transformers/bigint.value-transformer.ts","../../../projects/kit/components/input-number/input-number.ts","../../../projects/kit/components/input-number/taiga-ui-kit-components-input-number.ts"],"sourcesContent":["import {type MaskitoNumberParams} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {CHAR_MINUS} from '@taiga-ui/cdk/constants';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputNumberOptions extends Pick<\n Required<MaskitoNumberParams>,\n 'max' | 'min' | 'minusSign' | 'postfix' | 'prefix'\n> {\n readonly step: bigint | number;\n readonly icons: Readonly<{\n decrease: string;\n increase: string;\n }>;\n readonly valueTransformer:\n | TuiValueTransformer<bigint | null, any>\n | TuiValueTransformer<number | null, any>\n | null;\n}\n\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n prefix: '',\n postfix: '',\n minusSign: CHAR_MINUS,\n step: 0,\n icons: {\n increase: '@tui.plus',\n decrease: '@tui.minus',\n },\n valueTransformer: null,\n};\n\nexport const [TUI_INPUT_NUMBER_OPTIONS, tuiInputNumberOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n);\n","import {computed, Directive, effect, inject, input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoOptions, maskitoTransform} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n type MaskitoNumberParams,\n maskitoStringifyNumber,\n} from '@maskito/kit';\nimport {tuiIsSafeToRound, tuiRoundWith} from '@taiga-ui/cdk/utils/math';\nimport {TuiInputDirective} from '@taiga-ui/core/components/input';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from './input-number.options';\n\n@Directive({hostDirectives: [MaskitoDirective]})\nexport class TuiNumberMask {\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private readonly numberFormat = inject(TUI_NUMBER_FORMAT);\n private readonly input = inject(TuiInputDirective);\n\n public readonly prefix = input(this.options.prefix);\n public readonly postfix = input(this.options.postfix);\n public readonly maximumFractionDigits = computed(\n (precision = this.numberFormat().precision) =>\n Number.isNaN(precision) ? 2 : precision,\n );\n\n public readonly min = input<\n TuiInputNumberOptions['min'],\n TuiInputNumberOptions['min'] | null\n >(this.options.min, {transform: (x) => x ?? this.options.min});\n\n public readonly max = input<\n TuiInputNumberOptions['max'],\n TuiInputNumberOptions['max'] | null\n >(this.options.max, {transform: (x) => x ?? this.options.max});\n\n public readonly params = computed(() => {\n const {decimalMode, ...numberFormat} = this.numberFormat();\n const maximumFractionDigits = this.maximumFractionDigits();\n\n return {\n ...numberFormat,\n ...this.options,\n maximumFractionDigits,\n min: this.min(),\n max: this.max(),\n prefix: this.prefix(),\n postfix: this.postfix(),\n minimumFractionDigits: decimalMode === 'always' ? maximumFractionDigits : 0,\n } as const satisfies MaskitoNumberParams;\n });\n\n protected readonly mask = tuiMaskito(computed(() => this.computeMask(this.params())));\n\n protected readonly maskInitialCalibration = effect(() => {\n const options = maskitoNumberOptionsGenerator({\n ...this.params(),\n min: -Infinity,\n max: Infinity,\n });\n\n this.input.value.update((x) => maskitoTransform(x, options));\n });\n\n public stringify(value: bigint | number | null | undefined): string {\n const params = this.params();\n const precision = params.maximumFractionDigits;\n const rounded =\n typeof value === 'number' &&\n Number.isFinite(precision) &&\n tuiIsSafeToRound(value, precision)\n ? tuiRoundWith({\n value,\n precision,\n method: this.numberFormat().rounding,\n })\n : value;\n\n return maskitoStringifyNumber(rounded ?? null, {\n ...params,\n minimumFractionDigits:\n String(rounded).includes(params.decimalSeparator) &&\n this.numberFormat().decimalMode !== 'not-zero'\n ? params.maximumFractionDigits\n : 0,\n });\n }\n\n private computeMask(params: MaskitoNumberParams): MaskitoOptions {\n const {prefix = '', postfix = ''} = params;\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n\n return {\n ...options,\n plugins: [\n ...plugins,\n maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n\n@Directive({\n hostDirectives: [\n {\n directive: TuiNumberMask,\n inputs: ['min', 'max', 'prefix', 'postfix'],\n },\n ],\n})\nexport class TuiWithNumberMask {}\n","import {Directive, input} from '@angular/core';\nimport {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiIsSafeToRound, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/core/components/slider';\nimport {tuiGetFractionPartPadded} from '@taiga-ui/core/utils/format';\nimport {identity} from 'rxjs';\n\n@Directive()\nexport class TuiQuantumValueTransformerBase extends TuiValueTransformer<\n number | null,\n number | null\n> {\n public override fromControlValue = identity;\n\n // eslint-disable-next-line @typescript-eslint/parameter-properties,@angular-eslint/prefer-inject\n constructor(public quantum = 0) {\n super();\n }\n\n public toControlValue(value: number | null): number | null {\n return value != null &&\n this.quantum > 0 &&\n tuiIsSafeToRound(value, tuiGetFractionPartPadded(this.quantum).length)\n ? tuiRound(\n Math.round(value / this.quantum) * this.quantum,\n TUI_FLOATING_PRECISION,\n )\n : value;\n }\n}\n\n@Directive({\n selector: '[tuiInputNumber][quantum]:not([bigint])',\n inputs: ['quantum'],\n})\nexport class TuiQuantumValueTransformer extends TuiQuantumValueTransformerBase {\n constructor() {\n super(0);\n }\n}\n\n@Directive({selector: '[tuiInputNumber][bigint][quantum]'})\nexport class TuiBigIntQuantumValueTransformer extends TuiValueTransformer<\n bigint | null,\n bigint | null\n> {\n public readonly quantum = input<bigint>(BigInt(0));\n public override fromControlValue = identity;\n\n public toControlValue(value: bigint | null): bigint | null {\n if (!this.quantum() || !value) {\n return value;\n }\n\n const floor = (value / this.quantum()) * this.quantum();\n const remainder = value % this.quantum();\n\n return (\n floor + (BigInt(2) * remainder >= this.quantum() ? this.quantum() : BigInt(0))\n );\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiQuantumValueTransformer} from '../quantum.directive';\n\n@Directive({providers: [tuiProvide(TuiValueTransformer, TuiNumberValueTransformer)]})\nexport class TuiNumberValueTransformer extends TuiValueTransformer<\n string,\n number | null\n> {\n private readonly mask = inject(TuiNumberMask);\n private readonly quantumTransformer: TuiValueTransformer<\n number | null,\n number | null\n > =\n inject(TuiQuantumValueTransformer, {optional: true}) ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly optionsTransformer: TuiValueTransformer<number | null, any> =\n inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n public toControlValue(textfieldValue: string | null): number | null {\n const parsed = maskitoParseNumber(textfieldValue ?? '', this.mask.params());\n\n return this.optionsTransformer.toControlValue(\n this.quantumTransformer.toControlValue(Number.isNaN(parsed) ? null : parsed),\n );\n }\n\n public fromControlValue(controlValue: number | null): string {\n return this.mask.stringify(\n this.optionsTransformer.fromControlValue(controlValue),\n );\n }\n}\n","import {computed, Directive, effect, inject, untracked} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\n\nimport {TuiNumberMask, TuiWithNumberMask} from './number-mask.directive';\nimport {TuiNumberValueTransformer} from './transformers/number.value-transformer';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n@Directive({\n selector: 'input[tuiInputNumber]',\n providers: [tuiAsControl(TuiInputNumberDirective)],\n hostDirectives: [TuiWithInput, TuiWithNumberMask, TuiNumberValueTransformer],\n host: {\n '[disabled]': 'disabled()',\n '[attr.inputMode]': 'inputMode()',\n '[attr.maxLength]':\n 'element.maxLength > 0 ? element.maxLength : defaultMaxLength()',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n },\n})\nexport class TuiInputNumberDirective extends TuiControl<string> {\n private readonly mask = inject(TuiNumberMask);\n private readonly input = inject(TuiInputDirective);\n private readonly isIOS = inject(WA_IS_IOS);\n\n protected readonly element = tuiInjectElement<HTMLInputElement>();\n\n protected readonly inputMode = computed(() => {\n if (this.isIOS) {\n return this.mask.min() < 0\n ? 'text' // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'\n : 'decimal';\n }\n\n /**\n * Samsung Keyboard does not have minus sign for `inputmode=decimal`\n * @see https://github.com/taiga-family/taiga-ui/issues/11061#issuecomment-2939103792\n */\n return 'numeric';\n });\n\n protected readonly defaultMaxLength = computed(() => {\n const {\n decimalSeparator,\n thousandSeparator,\n maximumFractionDigits,\n prefix,\n postfix,\n min,\n max,\n } = this.mask.params();\n\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n return -1;\n }\n\n const decimalPart =\n !!maximumFractionDigits && this.input.value().includes(decimalSeparator);\n const precision = decimalPart ? Math.min(maximumFractionDigits + 1, 20) : 0;\n const takeThousand = thousandSeparator.repeat(5).length;\n const affixes = prefix.length + postfix.length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand + affixes;\n });\n\n public readonly parsed = computed(() => this.parse(this.input.value()));\n\n protected readonly onChangeEffect = effect(() => {\n const changed = !Object.is(\n this.input.value().replaceAll(/\\D/g, ''),\n untracked(() => this.value()?.replaceAll(/\\D/g, '')) ?? '',\n );\n const value = this.parsed();\n const valid =\n Number.isNaN(value) || (value >= this.mask.min() && value <= this.mask.max());\n\n if (changed && valid) {\n this.onChange(this.input.value());\n }\n });\n\n public override writeValue(value: any): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n const changed = untracked(\n () => value !== this.transformer.toControlValue(this.value()),\n );\n\n if (changed || reset) {\n super.writeValue(value);\n untracked(() => this.input.value.set(this.value()));\n }\n }\n\n public setValue(value: bigint | number | string | null): void {\n this.input.value.set(\n typeof value === 'string' ? value : this.mask.stringify(value),\n );\n }\n\n protected onFocus(): void {\n if (!this.input.value() && !this.readOnly()) {\n this.input.value.set(this.mask.prefix() + this.mask.postfix());\n }\n }\n\n protected onBlur(): void {\n setTimeout(() =>\n this.setValue(this.transformer.fromControlValue(this.control.value)),\n );\n }\n\n private parse(value: string): bigint | number {\n const params = this.mask.params();\n const possibleTooBig =\n !Number.isFinite(this.mask.min()) || !Number.isFinite(this.mask.max());\n\n return (\n maskitoParseNumber(value, {\n ...params,\n bigint: !value.includes(params.decimalSeparator) && possibleTooBig,\n }) ?? NaN\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {DestroyRef, inject, Injectable} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n expand,\n fromEvent,\n map,\n merge,\n type Observable,\n share,\n Subject,\n switchMap,\n takeUntil,\n timer,\n} from 'rxjs';\n\nconst INITIAL_DELAY = 300;\nconst DELAY_DECREMENT = 15;\nconst MIN_DELAY = 100;\n\nfunction getDelay(index: number): number {\n return Math.max(INITIAL_DELAY - index * DELAY_DECREMENT, MIN_DELAY);\n}\n\n@Injectable()\nexport class TuiInputNumberStepService<T> {\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly start$ = new Subject<T>();\n private readonly stop$ = merge(\n fromEvent(this.doc, 'pointerup'),\n fromEvent(this.doc, 'pointerleave'),\n fromEvent(this.doc, 'pointercancel'),\n );\n\n public readonly steps$: Observable<T> = this.start$.pipe(\n switchMap((value) =>\n timer(INITIAL_DELAY).pipe(\n expand((_, index) => timer(getDelay(index))),\n map(() => value),\n takeUntil(this.stop$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n share(),\n );\n\n public next(value: T): void {\n this.start$.next(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearanceProxy} from '@taiga-ui/kit/directives/appearance-proxy';\n\nimport {TuiInputNumberDirective} from '../input-number.directive';\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiInputNumberStepService} from './input-number-step.service';\n\n@Component({\n selector: 'input[tuiInputNumber][step]',\n imports: [TuiButton, TuiTextfieldContent],\n templateUrl: './input-number-step.template.html',\n styleUrl: './input-number-step.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiInputNumberStepService],\n hostDirectives: [TuiAppearanceProxy],\n host: {\n ngSkipHydration: 'true',\n '(keydown.arrowDown.prevent)': 'onStep(-step())',\n '(keydown.arrowUp.prevent)': 'onStep(step())',\n '[class._with-buttons]': 'step()',\n },\n})\nexport class TuiInputNumberStep {\n private readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly hold = inject(TuiInputNumberStepService<bigint | number>);\n protected readonly $ = this.hold.steps$.subscribe((value) => this.onStep(value));\n protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n protected readonly options = inject<TuiInputNumberOptions>(TUI_INPUT_NUMBER_OPTIONS);\n protected readonly mask = inject(TuiNumberMask, {self: true});\n protected readonly input = inject(TuiInputNumberDirective, {self: true});\n public readonly step = input(this.options.step);\n\n protected onStep(step: bigint | number): void {\n const value = this.input.parsed() || 0;\n\n this.input.setValue(\n tuiClamp<bigint | number>(\n /**\n * Without explicit conversion it throws\n * TS2365: Operator + cannot be applied to types `number | bigint` and `number | bigint`\n */\n typeof value === 'bigint'\n ? value + BigInt(step)\n : tuiSum(value, Number(step)),\n this.mask.min(),\n this.mask.max(),\n ),\n );\n\n setTimeout((end = Number.MAX_SAFE_INTEGER) => {\n this.el.setSelectionRange(end, end);\n });\n }\n}\n","<ng-container *tuiTextfieldContent>\n @if (step()) {\n <section class=\"t-input-number-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() >= mask.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (pointerdown.prevent)=\"hold.next(step())\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || input.parsed() <= mask.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (pointerdown.prevent)=\"hold.next(-step())\"\n >\n -\n </button>\n </section>\n }\n</ng-container>\n","import {Directive, inject} from '@angular/core';\nimport {maskitoParseNumber} from '@maskito/kit';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nimport {TUI_INPUT_NUMBER_OPTIONS} from '../input-number.options';\nimport {TuiNumberMask} from '../number-mask.directive';\nimport {TuiBigIntQuantumValueTransformer} from '../quantum.directive';\n\n@Directive({\n selector: '[tuiInputNumber][bigint]',\n providers: [tuiProvide(TuiValueTransformer, TuiBigIntValueTransformer)],\n})\nexport class TuiBigIntValueTransformer extends TuiValueTransformer<\n string,\n bigint | null\n> {\n private readonly quantumTransformer: TuiValueTransformer<\n bigint | null,\n bigint | null\n > =\n inject(TuiBigIntQuantumValueTransformer, {optional: true}) ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly optionsTransformer: TuiValueTransformer<bigint | null, any> =\n inject(TUI_INPUT_NUMBER_OPTIONS).valueTransformer ??\n TUI_IDENTITY_VALUE_TRANSFORMER;\n\n private readonly mask = inject(TuiNumberMask);\n\n public toControlValue(textfieldValue: string | null): bigint | null {\n return this.optionsTransformer.toControlValue(\n this.quantumTransformer.toControlValue(\n maskitoParseNumber(textfieldValue ?? '', {\n ...this.mask.params(),\n bigint: true,\n }),\n ),\n );\n }\n\n public fromControlValue(controlValue: bigint | null): string {\n return this.mask.stringify(\n this.optionsTransformer.fromControlValue(controlValue),\n );\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputNumberDirective} from './input-number.directive';\nimport {TuiNumberMask} from './number-mask.directive';\nimport {\n TuiBigIntQuantumValueTransformer,\n TuiQuantumValueTransformer,\n} from './quantum.directive';\nimport {TuiInputNumberStep} from './step/input-number-step.component';\nimport {TuiBigIntValueTransformer} from './transformers/bigint.value-transformer';\n\nexport const TuiInputNumber = [\n TuiInputNumberDirective,\n TuiNumberMask,\n TuiInputNumberStep,\n TuiBigIntValueTransformer,\n TuiQuantumValueTransformer,\n TuiBigIntQuantumValueTransformer,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.TuiWithNumberMask","i3.TuiNumberValueTransformer"],"mappings":"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"}
|
|
@@ -147,7 +147,7 @@ class TuiInputPhoneInternationalComponent extends TuiControl {
|
|
|
147
147
|
tuiAsControl(TuiInputPhoneInternationalComponent),
|
|
148
148
|
tuiFallbackValueProvider(''),
|
|
149
149
|
tuiAutoFocusOptionsProvider({ preventScroll: true }),
|
|
150
|
-
], viewQueries: [{ propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithInput }, { directive: i3.TuiAppearanceProxy }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (click.prevent)=\"interactive() && open.set(!open())\"\n (pointerdown.stop)=\"(0)\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n <!-- To keep it under local injector -->\n @if (countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track $index) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]{left:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]+
|
|
150
|
+
], viewQueries: [{ propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithInput }, { directive: i3.TuiAppearanceProxy }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (click.prevent)=\"interactive() && open.set(!open())\"\n (pointerdown.stop)=\"(0)\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n <!-- To keep it under local injector -->\n @if (countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track $index) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]{left:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]{--t-offset: 4.125rem}tui-textfield[data-size=s] .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]{--t-offset: 4.875rem}tui-textfield[data-size=m] .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]{--t-offset: 5.25rem}tui-textfield[data-size=l] .t-ipi-flag{margin:0 -.1875rem}tui-textfield .t-ipi-select{position:absolute;left:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield .t-ipi-select_readonly{pointer-events:none}.t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}.t-ipi-code{color:var(--tui-text-secondary)}.t-ipi-search{position:sticky;top:0;z-index:1;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){.t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}tui-dropdown-mobile .t-ipi-search,tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}tui-dropdown-mobile .t-ipi-options:not(:first-child),tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}tui-sheet-dialog .t-ipi-search{top:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i5.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i5.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "component", type: i6.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "directive", type: i6.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i7.TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "directive", type: i2.TuiInputDirective, selector: "input[tuiInput]", inputs: ["readOnly", "invalid", "focused", "state"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
151
151
|
}
|
|
152
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiInputPhoneInternationalComponent, decorators: [{
|
|
153
153
|
type: Component,
|
|
@@ -174,7 +174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
|
|
|
174
174
|
'(input)': 'masked.set($event.target.value)',
|
|
175
175
|
'(click)': 'open.set(false)',
|
|
176
176
|
'(beforeinput.capture)': 'onPaste($event)',
|
|
177
|
-
}, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (click.prevent)=\"interactive() && open.set(!open())\"\n (pointerdown.stop)=\"(0)\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n <!-- To keep it under local injector -->\n @if (countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track $index) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]{left:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]+
|
|
177
|
+
}, template: "<ng-container *tuiTextfieldContent>\n <button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"mode()\"\n [class.t-ipi-select_readonly]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"open()\"\n (click.prevent)=\"interactive() && open.set(!open())\"\n (pointerdown.stop)=\"(0)\"\n >\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"countryIsoCode() | tuiFlag\"\n />\n </button>\n</ng-container>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n <!-- To keep it under local injector -->\n @if (countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track $index) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["[tuiInputPhoneInternational][tuiInputPhoneInternational]{left:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]{--t-offset: 4.125rem}tui-textfield[data-size=s] .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]{--t-offset: 4.875rem}tui-textfield[data-size=m] .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]{--t-offset: 5.25rem}tui-textfield[data-size=l] .t-ipi-flag{margin:0 -.1875rem}tui-textfield .t-ipi-select{position:absolute;left:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield .t-ipi-select_readonly{pointer-events:none}.t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}.t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}.t-ipi-code{color:var(--tui-text-secondary)}.t-ipi-search{position:sticky;top:0;z-index:1;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){.t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}tui-dropdown-mobile .t-ipi-search,tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}tui-dropdown-mobile .t-ipi-options:not(:first-child),tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}tui-sheet-dialog .t-ipi-search{top:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"] }]
|
|
178
178
|
}] });
|
|
179
179
|
function getCallingCode(iso, metadata) {
|
|
180
180
|
return metadata ? CHAR_PLUS + getCountryCallingCode(iso, metadata) : '';
|