@taiga-ui/addon-commerce 4.52.0-canary.eb5ffe3 → 4.52.0-canary.ec0802b

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.
Files changed (23) hide show
  1. package/README.md +2 -2
  2. package/components/input-card-group/input-card-group.component.d.ts +12 -12
  3. package/components/input-card-group/input-card-group.options.d.ts +1 -3
  4. package/fesm2022/taiga-ui-addon-commerce-components-input-card-group.mjs +23 -46
  5. package/fesm2022/taiga-ui-addon-commerce-components-input-card-group.mjs.map +1 -1
  6. package/fesm2022/taiga-ui-addon-commerce-components-input-card.mjs +2 -2
  7. package/fesm2022/taiga-ui-addon-commerce-components-input-card.mjs.map +1 -1
  8. package/fesm2022/taiga-ui-addon-commerce-components-input-cvc.mjs +0 -1
  9. package/fesm2022/taiga-ui-addon-commerce-components-input-cvc.mjs.map +1 -1
  10. package/fesm2022/taiga-ui-addon-commerce-components-input-expire.mjs +0 -1
  11. package/fesm2022/taiga-ui-addon-commerce-components-input-expire.mjs.map +1 -1
  12. package/fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs +2 -2
  13. package/fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs.map +1 -1
  14. package/fesm2022/taiga-ui-addon-commerce-pipes-amount.mjs +6 -10
  15. package/fesm2022/taiga-ui-addon-commerce-pipes-amount.mjs.map +1 -1
  16. package/fesm2022/taiga-ui-addon-commerce-pipes-currency.mjs +0 -1
  17. package/fesm2022/taiga-ui-addon-commerce-pipes-currency.mjs.map +1 -1
  18. package/fesm2022/taiga-ui-addon-commerce-pipes-decimal.mjs +3 -2
  19. package/fesm2022/taiga-ui-addon-commerce-pipes-decimal.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-addon-commerce-pipes-format-card.mjs +0 -1
  21. package/fesm2022/taiga-ui-addon-commerce-pipes-format-card.mjs.map +1 -1
  22. package/package.json +12 -9
  23. package/pipes/amount/amount.options.d.ts +1 -3
package/README.md CHANGED
@@ -16,13 +16,13 @@ consisting of multiple base libraries and several add-ons
16
16
 
17
17
  Install base packages:
18
18
 
19
- ```
19
+ ```bash
20
20
  npm i @taiga-ui/{cdk,core}
21
21
  ```
22
22
 
23
23
  Install addon-commerce:
24
24
 
25
- ```
25
+ ```bash
26
26
  npm i @taiga-ui/addon-commerce
27
27
  ```
28
28
 
@@ -1,4 +1,4 @@
1
- import { EventEmitter, type Signal } from '@angular/core';
1
+ import { type Signal } from '@angular/core';
2
2
  import { TuiControl } from '@taiga-ui/cdk/classes';
3
3
  import { type TuiBooleanHandler } from '@taiga-ui/cdk/types';
4
4
  import { type TuiDataListHost } from '@taiga-ui/core/components/data-list';
@@ -26,9 +26,9 @@ export declare class TuiInputCardGroup extends TuiControl<TuiCard | null> implem
26
26
  private readonly el;
27
27
  private readonly hover;
28
28
  private readonly focusedIn;
29
- protected exampleTextCVC: string;
29
+ protected readonly exampleTextCVC: Signal<string>;
30
+ protected readonly maskCVC: Signal<import("@maskito/core").MaskitoOptions>;
30
31
  protected cvcHidden: boolean;
31
- protected maskCVC: import("@maskito/core").MaskitoOptions;
32
32
  protected readonly isMobile: boolean;
33
33
  protected readonly isWebkit: boolean;
34
34
  protected readonly dropdown: TuiDropdownDirective;
@@ -48,14 +48,14 @@ export declare class TuiInputCardGroup extends TuiControl<TuiCard | null> implem
48
48
  /**
49
49
  * @deprecated use 'placeholder' instead
50
50
  */
51
- exampleText: string;
52
- placeholder: string;
53
- inputs: import("./input-card-group.options").TuiCardInputs;
54
- cardValidator: TuiBooleanHandler<string>;
55
- icon: PolymorpheusContent;
56
- id: string;
57
- readonly binChange: EventEmitter<string | null>;
58
- set codeLength(length: 3 | 4);
51
+ readonly exampleText: import("@angular/core").InputSignal<string>;
52
+ readonly placeholder: import("@angular/core").InputSignal<string>;
53
+ readonly inputs: import("@angular/core").InputSignal<import("./input-card-group.options").TuiCardInputs>;
54
+ readonly cardValidator: import("@angular/core").InputSignal<TuiBooleanHandler<string>>;
55
+ readonly icon: import("@angular/core").InputSignal<PolymorpheusContent>;
56
+ readonly id: import("@angular/core").InputSignal<string>;
57
+ readonly codeLength: import("@angular/core").InputSignal<4 | 3 | undefined>;
58
+ readonly binChange: import("@angular/core").OutputEmitterRef<string | null>;
59
59
  get bin(): string | null;
60
60
  writeValue(value: TuiCard | null): void;
61
61
  /** Public API for manual focus management */
@@ -89,5 +89,5 @@ export declare class TuiInputCardGroup extends TuiControl<TuiCard | null> implem
89
89
  private updateProperty;
90
90
  private focusInput;
91
91
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputCardGroup, never>;
92
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputCardGroup, "tui-input-card-group", never, { "exampleText": { "alias": "exampleText"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "inputs": { "alias": "inputs"; "required": false; }; "cardValidator": { "alias": "cardValidator"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "id": { "alias": "id"; "required": false; }; "codeLength": { "alias": "codeLength"; "required": false; }; }, { "binChange": "binChange"; }, never, ["*"], true, [{ directive: typeof i1.TuiAppearance; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiDropdownDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithDropdownOpen; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiInputCardGroupDirective; inputs: { "compact": "compact"; }; outputs: {}; }]>;
92
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputCardGroup, "tui-input-card-group", never, { "exampleText": { "alias": "exampleText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "inputs": { "alias": "inputs"; "required": false; "isSignal": true; }; "cardValidator": { "alias": "cardValidator"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "codeLength": { "alias": "codeLength"; "required": false; "isSignal": true; }; }, { "binChange": "binChange"; }, never, ["*"], true, [{ directive: typeof i1.TuiAppearance; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiDropdownDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithDropdownOpen; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiInputCardGroupDirective; inputs: { "compact": "compact"; }; outputs: {}; }]>;
93
93
  }
@@ -1,4 +1,3 @@
1
- import { InjectionToken, type Provider } from '@angular/core';
2
1
  import { type TuiBooleanHandler } from '@taiga-ui/cdk/types';
3
2
  export interface TuiCardInputs {
4
3
  cvc: boolean;
@@ -12,5 +11,4 @@ export interface TuiInputCardGroupOptions {
12
11
  readonly inputs: TuiCardInputs;
13
12
  }
14
13
  export declare const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS: TuiInputCardGroupOptions;
15
- export declare const TUI_INPUT_CARD_GROUP_OPTIONS: InjectionToken<TuiInputCardGroupOptions>;
16
- export declare function tuiInputCardGroupOptionsProvider(options: Partial<TuiInputCardGroupOptions>): Provider;
14
+ export declare const TUI_INPUT_CARD_GROUP_OPTIONS: import("@angular/core").InjectionToken<TuiInputCardGroupOptions>, tuiInputCardGroupOptionsProvider: (item: Partial<TuiInputCardGroupOptions> | (() => Partial<TuiInputCardGroupOptions>)) => import("@angular/core").FactoryProvider;
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { DOCUMENT, isPlatformServer } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { inject, Directive, InjectionToken, viewChild, PLATFORM_ID, computed, EventEmitter, Input, Output, ChangeDetectionStrategy, Component } from '@angular/core';
4
+ import { inject, Directive, InjectionToken, viewChild, PLATFORM_ID, computed, input, output, ChangeDetectionStrategy, Component } from '@angular/core';
5
5
  import { toSignal, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
  import * as i4 from '@angular/forms';
7
7
  import { FormsModule } from '@angular/forms';
@@ -20,7 +20,7 @@ import { tuiInjectId } from '@taiga-ui/cdk/services';
20
20
  import { TUI_IS_MOBILE, TUI_IS_WEBKIT } from '@taiga-ui/cdk/tokens';
21
21
  import { tuiInjectElement, tuiIsElement, tuiIsInput } from '@taiga-ui/cdk/utils/dom';
22
22
  import { tuiFocusedIn, tuiIsFocused } from '@taiga-ui/cdk/utils/focus';
23
- import { tuiProvideOptions, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
23
+ import { tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
24
24
  import { tuiAsDataListHost } from '@taiga-ui/core/components/data-list';
25
25
  import { TuiIcon, TuiIconPipe } from '@taiga-ui/core/components/icon';
26
26
  import { TUI_TEXTFIELD_OPTIONS } from '@taiga-ui/core/components/textfield';
@@ -33,6 +33,7 @@ import { TuiChevron } from '@taiga-ui/kit/directives/chevron';
33
33
  import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
34
34
  import { BehaviorSubject, map, combineLatest, Subject, EMPTY, switchMap, timer } from 'rxjs';
35
35
  import { TuiBreakpointService } from '@taiga-ui/core/services';
36
+ import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
36
37
 
37
38
  class TuiInputCardGroupDirective {
38
39
  constructor() {
@@ -62,12 +63,7 @@ const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS = {
62
63
  cvcHidden: true,
63
64
  inputs: { cvc: true, expire: true },
64
65
  };
65
- const TUI_INPUT_CARD_GROUP_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_INPUT_CARD_GROUP_OPTIONS' : '', {
66
- factory: () => TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS,
67
- });
68
- function tuiInputCardGroupOptionsProvider(options) {
69
- return tuiProvideOptions(TUI_INPUT_CARD_GROUP_OPTIONS, options, TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS);
70
- }
66
+ const [TUI_INPUT_CARD_GROUP_OPTIONS, tuiInputCardGroupOptionsProvider] = tuiCreateOptions(TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS);
71
67
 
72
68
  const TUI_INPUT_CARD_GROUP_TEXTS = new InjectionToken(ngDevMode ? 'TUI_INPUT_CARD_GROUP_TEXTS' : '');
73
69
  const TUI_INPUT_CARD_GROUP_TEXTS_PROVIDER = {
@@ -100,9 +96,9 @@ class TuiInputCardGroup extends TuiControl {
100
96
  this.el = tuiInjectElement();
101
97
  this.hover = tuiHovered();
102
98
  this.focusedIn = tuiFocusedIn(this.el);
103
- this.exampleTextCVC = this.options.exampleTextCVC;
99
+ this.exampleTextCVC = computed((length = this.codeLength()) => length ? '0'.repeat(length) : this.options.exampleTextCVC);
100
+ this.maskCVC = computed((length = this.codeLength()) => TUI_MASK_CVC(length ?? 3));
104
101
  this.cvcHidden = this.options.cvcHidden;
105
- this.maskCVC = TUI_MASK_CVC(3);
106
102
  this.isMobile = inject(TUI_IS_MOBILE);
107
103
  this.isWebkit = inject(TUI_IS_WEBKIT);
108
104
  this.dropdown = inject(TuiDropdownDirective);
@@ -128,17 +124,14 @@ class TuiInputCardGroup extends TuiControl {
128
124
  /**
129
125
  * @deprecated use 'placeholder' instead
130
126
  */
131
- this.exampleText = this.options.exampleText;
132
- this.placeholder = this.options.exampleText;
133
- this.inputs = this.options.inputs;
134
- this.cardValidator = this.options.cardValidator;
135
- this.icon = '';
136
- this.id = tuiInjectId();
137
- this.binChange = new EventEmitter();
138
- }
139
- set codeLength(length) {
140
- this.exampleTextCVC = '0'.repeat(length);
141
- this.maskCVC = TUI_MASK_CVC(length);
127
+ this.exampleText = input(this.options.exampleText);
128
+ this.placeholder = input(this.options.exampleText);
129
+ this.inputs = input(this.options.inputs);
130
+ this.cardValidator = input(this.options.cardValidator);
131
+ this.icon = input('');
132
+ this.id = input(tuiInjectId());
133
+ this.codeLength = input();
134
+ this.binChange = output();
142
135
  }
143
136
  get bin() {
144
137
  return this.card.length < 6 ? null : this.card.slice(0, 6);
@@ -169,7 +162,7 @@ class TuiInputCardGroup extends TuiControl {
169
162
  this.inputCard()?.nativeElement.focus({ preventScroll: true });
170
163
  }
171
164
  focusExpire() {
172
- if (this.inputs.expire) {
165
+ if (this.inputs().expire) {
173
166
  this.inputExpire()?.nativeElement.focus({ preventScroll: true });
174
167
  }
175
168
  else {
@@ -205,7 +198,7 @@ class TuiInputCardGroup extends TuiControl {
205
198
  }
206
199
  get content() {
207
200
  const system = this.getPaymentSystem(this.card);
208
- return this.icon || (system && this.paymentSystems[system]);
201
+ return this.icon() || (system && this.paymentSystems[system]);
209
202
  }
210
203
  get card() {
211
204
  return this.value()?.card || '';
@@ -226,7 +219,7 @@ class TuiInputCardGroup extends TuiControl {
226
219
  return !!this.card.match(TUI_NON_DIGIT_REGEXP);
227
220
  }
228
221
  get cvcPrefilled() {
229
- return !this.inputs.cvc || !!this.cvc.match(TUI_NON_DIGIT_REGEXP);
222
+ return !this.inputs().cvc || !!this.cvc.match(TUI_NON_DIGIT_REGEXP);
230
223
  }
231
224
  get cardFocusable() {
232
225
  return !this.cardPrefilled;
@@ -248,7 +241,7 @@ class TuiInputCardGroup extends TuiControl {
248
241
  }
249
242
  this.updateProperty(parsed, 'card');
250
243
  this.updateBin(bin);
251
- if (this.cardValidator(this.card) && !value()?.expire && this.inputExpire()) {
244
+ if (this.cardValidator()(this.card) && !value()?.expire && this.inputExpire()) {
252
245
  this.focusExpire();
253
246
  // Safari autofill focus jerk workaround
254
247
  this.focus$.next();
@@ -280,7 +273,7 @@ class TuiInputCardGroup extends TuiControl {
280
273
  this.open.update((open) => !open);
281
274
  }
282
275
  isFocusable(card) {
283
- return this.cardValidator(card) || this.cardPrefilled;
276
+ return this.cardValidator()(card) || this.cardPrefilled;
284
277
  }
285
278
  getPaymentSystem(value) {
286
279
  return tuiGetPaymentSystem(value);
@@ -304,13 +297,13 @@ class TuiInputCardGroup extends TuiControl {
304
297
  element?.focus();
305
298
  }
306
299
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCardGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiInputCardGroup, isStandalone: true, selector: "tui-input-card-group", inputs: { exampleText: "exampleText", placeholder: "placeholder", inputs: "inputs", cardValidator: "cardValidator", icon: "icon", id: "id", codeLength: "codeLength" }, outputs: { binChange: "binChange" }, host: { listeners: { "pointerdown": "onPointerDown($event)", "scroll.zoneless": "$event.target.scrollLeft = 0" }, properties: { "attr.data-size": "textfield.size()" } }, providers: [
300
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiInputCardGroup, isStandalone: true, selector: "tui-input-card-group", inputs: { exampleText: { classPropertyName: "exampleText", publicName: "exampleText", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null }, cardValidator: { classPropertyName: "cardValidator", publicName: "cardValidator", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, codeLength: { classPropertyName: "codeLength", publicName: "codeLength", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { binChange: "binChange" }, host: { listeners: { "pointerdown": "onPointerDown($event)", "scroll.zoneless": "$event.target.scrollLeft = 0" }, properties: { "attr.data-size": "textfield.size()" } }, providers: [
308
301
  tuiAsDataListHost(TuiInputCardGroup),
309
302
  tuiAsControl(TuiInputCardGroup),
310
303
  tuiDropdownOptionsProvider({ limitWidth: 'fixed' }),
311
304
  TuiHoveredService,
312
305
  TUI_INPUT_CARD_GROUP_TEXTS_PROVIDER,
313
- ], viewQueries: [{ propertyName: "inputCard", first: true, predicate: ["inputCard"], descendants: true, isSignal: true }, { propertyName: "inputExpire", first: true, predicate: ["inputExpire"], descendants: true, isSignal: true }, { propertyName: "inputCVC", first: true, predicate: ["inputCVC"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiAppearance }, { directive: i2.TuiDropdownDirective }, { directive: i2.TuiWithDropdownOpen }, { directive: TuiInputCardGroupDirective, inputs: ["compact", "compact"] }], ngImport: i0, template: "@let formattedCard = value()?.card | tuiFormatCard: cardPrefilled;\n\n<div class=\"t-wrapper\">\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCard\n autocomplete=\"cc-number\"\n automation-id=\"tui-input-card-group__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator)\"\n [attr.id]=\"`${id}_card`\"\n [class.t-input_filled]=\"card.length\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cardPrefilled ? '' : placeholder || exampleText\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"cardFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"cardCollapsed\"\n (waResizeObserver)=\"onResize()\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style]=\"getStyle(ghost)\"\n [textContent]=\"formattedCard\"\n ></span>\n </span>\n </span>\n <div\n tuiTransitioned\n class=\"t-label\"\n [attr.data-label]=\"texts()?.cardNumberText\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n <ng-content />\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputExpire\n autocomplete=\"cc-exp\"\n automation-id=\"tui-input-card-group__expire\"\n inputmode=\"numeric\"\n maxlength=\"5\"\n name=\"ccexpiryyear\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"`${id}_expire`\"\n [class.t-input_inert]=\"!expireFocusable\"\n [class.t-input_prefilled]=\"!inputs.expire\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"inputs.expire ? '00/00' : '\u2022\u2022/\u2022\u2022'\"\n [readOnly]=\"readOnly() || !inputs.expire\"\n [tabIndex]=\"expireFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.expiryText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCVC\n autocomplete=\"cc-csc\"\n automation-id=\"tui-input-card-group__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"`${id}_cvc`\"\n [class.t-input_cvc_hidden]=\"cvcHidden\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCVC\"\n [ngModel]=\"cvc\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cvcPrefilled ? '\u2022\u2022\u2022' : exampleTextCVC\"\n [readOnly]=\"readOnly() || cvcPrefilled\"\n [tabIndex]=\"cvcFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cvcText }}\n </div>\n </label>\n</div>\n<div class=\"t-icons\">\n @if (content) {\n <div class=\"t-icon-outlet\">\n <img\n *polymorpheusOutlet=\"content as src\"\n alt=\"\"\n automation-id=\"tui-input-card-group__icon\"\n class=\"t-card\"\n [src]=\"src | tuiIcon\"\n />\n </div>\n }\n @if (hasCleaner()) {\n <tui-icon\n automation-id=\"tui-input-card-group__cleaner\"\n tuiAppearance=\"icon\"\n class=\"t-icon\"\n [icon]=\"icons.close\"\n (click)=\"clear()\"\n />\n }\n @if (dropdown._content()) {\n <tui-icon\n automation-id=\"tui-input-card-group__dropdown\"\n tuiAppearance=\"icon\"\n tuiChevron\n class=\"t-icon\"\n (click)=\"toggle()\"\n />\n }\n</div>\n", styles: ["@keyframes outside{0%{transform:translate3d(calc(var(--t-translate) * var(--tui-inline)),0,0)}to{transform:translate3d(calc(100% * var(--tui-inline)),0,0)}}@keyframes inside{0%{transform:translate3d(calc(100% * var(--tui-inline)),0,0)}to{transform:translate3d(calc(var(--t-translate) * var(--tui-inline)),0,0)}}:host{--t-height: var(--tui-height-l);--t-padding: var(--tui-padding-l);--t-label: -.7rem;--t-label-size: .83em;--t-translate: 6.5rem;position:relative;display:block;block-size:var(--t-height);min-inline-size:24rem;border-radius:var(--tui-radius-l);overflow:hidden;font:var(--tui-font-text-ui-m);isolation:isolate}:host[data-size=m]{--t-label: -.7em;--t-height: var(--tui-height-m);--t-padding: var(--tui-padding-m);border-radius:var(--tui-radius-m);font:var(--tui-font-text-ui-s)}:host[data-size=m] .t-card{inline-size:1.5rem;block-size:1.5rem}:host[data-size=m] [tuiChevron]{margin-inline-end:-.875rem;margin-inline-start:.125rem}:host._compact{min-inline-size:19rem;--t-translate: 4rem}:host[tuiAppearance][data-appearance]:has(:-webkit-autofill){background:var(--tui-service-autofill-background)!important}:host [tuiChevron]{block-size:auto;align-self:stretch;border-inline-end:var(--t-padding) solid transparent;margin-inline-end:-.75rem;box-sizing:content-box;font-size:1rem;cursor:pointer}.t-wrapper{position:absolute;z-index:1;inline-size:100%;block-size:100%;transition:opacity 0s var(--tui-duration)}.t-wrapper_cvc,.t-wrapper_expire{opacity:0;pointer-events:none;animation:outside var(--tui-duration) ease-in-out}.t-wrapper_cvc{margin-inline-start:7rem}:host._compact .t-wrapper_cvc{margin-inline-start:4rem}.t-wrapper_active{transition:none;pointer-events:auto;opacity:1;animation:inside var(--tui-duration) ease-in-out forwards}.t-card{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;padding:calc(var(--t-height) / 3) var(--t-padding) 0;box-sizing:border-box;line-height:calc(2 * var(--t-height) / 3);color:var(--tui-text-primary);white-space:nowrap;pointer-events:none}.t-collapsed:after{content:\"*\";float:left;opacity:0}:host-context([dir=\"rtl\"]) .t-collapsed:after{float:none}.t-collapsed_enable-mask:before{content:attr(data-before)}.t-collapsed_enable-mask:after{opacity:1}:host-context([dir=\"rtl\"]) .t-collapsed_enable-mask:after{transition:opacity 0s var(--tui-duration)}.t-collapsed_enable-mask .t-collapsed-wrapper{left:1.375rem}:host-context([dir=\"rtl\"]) .t-collapsed_enable-mask .t-collapsed-wrapper{left:unset}.t-collapsed-wrapper{position:absolute;top:0;display:block;inline-size:100%;block-size:100%;overflow:hidden}.t-value{transition-property:transform,clip-path;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;bottom:0;right:100%;display:block;clip-path:inset(0);transform:translate3d(calc(100% * var(--tui-inline)),0,0)}:host-context([dir=\"rtl\"]) .t-value{right:unset;left:100%;transform:translate3d(calc(100% * var(--tui-inline)),0,0)!important}.t-input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:1;border:0;margin:0;padding:calc(var(--t-height) / 3) var(--t-padding) 0;outline:none;background:transparent;box-sizing:border-box;font:inherit;color:var(--tui-text-primary);direction:ltr}:host-context([dir=\"rtl\"]) .t-input{text-align:end}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input_prefilled::placeholder{color:var(--tui-text-primary)}.t-input[chrome-autofilled],.t-input:-webkit-autofill{-webkit-text-fill-color:var(--tui-text-primary)!important;caret-color:var(--tui-text-primary)!important;transition:background-color 600000s 0s}.t-input.t-input.t-input_card:not(:-webkit-autofill):not(:focus:placeholder-shown),.t-input.t-input.t-input_card.t-input_filled{caret-color:var(--tui-text-primary);color:transparent!important;-webkit-text-fill-color:transparent!important}.t-input.t-input.t-input_card::-webkit-credit-card-auto-fill-button{content:none!important;position:absolute;left:-60rem;top:-60rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input_inert{pointer-events:none}.t-input_cvc_hidden{-webkit-text-security:disc}.t-icons{position:absolute;right:1rem;z-index:1;display:flex;align-items:center;block-size:100%;gap:.25rem;pointer-events:none}@supports (inset-inline-end: 0){.t-icons{right:unset;inset-inline-end:1rem}}.t-icon-outlet{display:flex;margin-inline-end:.25rem}.t-icon{cursor:pointer;pointer-events:auto}.t-icon:before{font-size:1rem}.t-label{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;margin:0 var(--t-padding);line-height:var(--t-height);color:var(--tui-text-secondary)}.t-label:empty:before{content:attr(data-label)}input:-webkit-autofill~.t-label,.t-label_raised{font-size:var(--t-label-size);transform:translateY(var(--t-label))}:host([data-mode~=\"invalid\"]) input:-webkit-autofill~.t-label,:host([data-mode~=\"invalid\"]) .t-label_raised{color:var(--tui-text-negative)}:host([data-focus=\"true\"]) .t-label{color:var(--tui-text-primary)}.t-ghost{visibility:hidden}\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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"], outputs: ["maskitoChange", "maskitoElementChange"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceMode"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "pipe", type: TuiFormatCardPipe, name: "tuiFormatCard" }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "pipe", type: TuiIconPipe, name: "tuiIcon" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "directive", type: TuiTransitioned, selector: "[tuiTransitioned]" }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
306
+ ], viewQueries: [{ propertyName: "inputCard", first: true, predicate: ["inputCard"], descendants: true, isSignal: true }, { propertyName: "inputExpire", first: true, predicate: ["inputExpire"], descendants: true, isSignal: true }, { propertyName: "inputCVC", first: true, predicate: ["inputCVC"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiAppearance }, { directive: i2.TuiDropdownDirective }, { directive: i2.TuiWithDropdownOpen }, { directive: TuiInputCardGroupDirective, inputs: ["compact", "compact"] }], ngImport: i0, template: "@let formattedCard = value()?.card | tuiFormatCard: cardPrefilled;\n\n<div class=\"t-wrapper\">\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCard\n autocomplete=\"cc-number\"\n automation-id=\"tui-input-card-group__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator())\"\n [attr.id]=\"`${id()}_card`\"\n [class.t-input_filled]=\"card.length\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cardPrefilled ? '' : placeholder() || exampleText()\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"cardFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"cardCollapsed\"\n (waResizeObserver)=\"onResize()\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style]=\"getStyle(ghost)\"\n [textContent]=\"formattedCard\"\n ></span>\n </span>\n </span>\n <div\n tuiTransitioned\n class=\"t-label\"\n [attr.data-label]=\"texts()?.cardNumberText\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n <ng-content />\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputExpire\n autocomplete=\"cc-exp\"\n automation-id=\"tui-input-card-group__expire\"\n inputmode=\"numeric\"\n maxlength=\"5\"\n name=\"ccexpiryyear\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"`${id()}_expire`\"\n [class.t-input_inert]=\"!expireFocusable\"\n [class.t-input_prefilled]=\"!inputs().expire\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"inputs().expire ? '00/00' : '\u2022\u2022/\u2022\u2022'\"\n [readOnly]=\"readOnly() || !inputs().expire\"\n [tabIndex]=\"expireFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.expiryText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCVC\n autocomplete=\"cc-csc\"\n automation-id=\"tui-input-card-group__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"`${id()}_cvc`\"\n [class.t-input_cvc_hidden]=\"cvcHidden\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCVC()\"\n [ngModel]=\"cvc\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cvcPrefilled ? '\u2022\u2022\u2022' : exampleTextCVC()\"\n [readOnly]=\"readOnly() || cvcPrefilled\"\n [tabIndex]=\"cvcFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cvcText }}\n </div>\n </label>\n</div>\n<div class=\"t-icons\">\n @if (content) {\n <div class=\"t-icon-outlet\">\n <img\n *polymorpheusOutlet=\"content as src\"\n alt=\"\"\n automation-id=\"tui-input-card-group__icon\"\n class=\"t-card\"\n [src]=\"src | tuiIcon\"\n />\n </div>\n }\n @if (hasCleaner()) {\n <tui-icon\n automation-id=\"tui-input-card-group__cleaner\"\n tuiAppearance=\"icon\"\n class=\"t-icon\"\n [icon]=\"icons.close\"\n (click)=\"clear()\"\n />\n }\n @if (dropdown._content()) {\n <tui-icon\n automation-id=\"tui-input-card-group__dropdown\"\n tuiAppearance=\"icon\"\n tuiChevron\n class=\"t-icon\"\n (click)=\"toggle()\"\n />\n }\n</div>\n", styles: ["@keyframes outside{0%{transform:translate3d(calc(var(--t-translate) * var(--tui-inline)),0,0)}to{transform:translate3d(calc(100% * var(--tui-inline)),0,0)}}@keyframes inside{0%{transform:translate3d(calc(100% * var(--tui-inline)),0,0)}to{transform:translate3d(calc(var(--t-translate) * var(--tui-inline)),0,0)}}:host{--t-height: var(--tui-height-l);--t-padding: var(--tui-padding-l);--t-label: -.7rem;--t-label-size: .83em;--t-translate: 6.5rem;--t-collapsed-offset: 1.4375rem;position:relative;display:block;block-size:var(--t-height);min-inline-size:24rem;border-radius:var(--tui-radius-l);overflow:hidden;font:var(--tui-font-text-ui-m);isolation:isolate}:host[data-size=m]{--t-label: -.7em;--t-height: var(--tui-height-m);--t-padding: var(--tui-padding-m);--t-collapsed-offset: 1.125rem;border-radius:var(--tui-radius-m);font:var(--tui-font-text-ui-s)}:host[data-size=m] .t-card{inline-size:1.5rem;block-size:1.5rem}:host[data-size=m] [tuiChevron]{margin-inline-end:-.875rem;margin-inline-start:.125rem}:host._compact{min-inline-size:19rem;--t-translate: 4rem}:host[tuiAppearance][data-appearance]:has(:-webkit-autofill){background:var(--tui-service-autofill-background)!important}:host [tuiChevron]{block-size:auto;align-self:stretch;border-inline-end:var(--t-padding) solid transparent;margin-inline-end:-.75rem;box-sizing:content-box;font-size:1rem;cursor:pointer}.t-wrapper{position:absolute;z-index:1;inline-size:100%;block-size:100%;transition:opacity 0s var(--tui-duration)}.t-wrapper_cvc,.t-wrapper_expire{opacity:0;pointer-events:none;animation:outside var(--tui-duration) ease-in-out}.t-wrapper_cvc{margin-inline-start:7rem}:host._compact .t-wrapper_cvc{margin-inline-start:4rem}.t-wrapper_active{transition:none;pointer-events:auto;opacity:1;animation:inside var(--tui-duration) ease-in-out forwards}.t-card{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;padding:calc(var(--t-height) / 3) var(--t-padding) 0;box-sizing:border-box;line-height:calc(2 * var(--t-height) / 3);color:var(--tui-text-primary);white-space:nowrap;pointer-events:none}.t-collapsed:after{content:\"*\";float:left;opacity:0}:host-context([dir=\"rtl\"]) .t-collapsed:after{float:none}.t-collapsed_enable-mask:before{content:attr(data-before)}.t-collapsed_enable-mask:after{opacity:1}:host-context([dir=\"rtl\"]) .t-collapsed_enable-mask:after{transition:opacity 0s var(--tui-duration)}.t-collapsed_enable-mask .t-collapsed-wrapper{left:var(--t-collapsed-offset)}:host-context([dir=\"rtl\"]) .t-collapsed_enable-mask .t-collapsed-wrapper{left:unset}.t-collapsed-wrapper{position:absolute;top:0;display:block;inline-size:100%;block-size:100%;overflow:hidden}.t-value{transition-property:transform,clip-path;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;bottom:0;right:100%;display:block;clip-path:inset(0);transform:translate3d(calc(100% * var(--tui-inline)),0,0)}:host-context([dir=\"rtl\"]) .t-value{right:unset;left:100%;transform:translate3d(calc(100% * var(--tui-inline)),0,0)!important}.t-input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:1;border:0;margin:0;padding:calc(var(--t-height) / 3) var(--t-padding) 0;outline:none;background:transparent;box-sizing:border-box;font:inherit;color:var(--tui-text-primary);direction:ltr}:host-context([dir=\"rtl\"]) .t-input{text-align:end}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input_prefilled::placeholder{color:var(--tui-text-primary)}.t-input[chrome-autofilled],.t-input:-webkit-autofill{-webkit-text-fill-color:var(--tui-text-primary)!important;caret-color:var(--tui-text-primary)!important;transition:background-color 600000s 0s}.t-input.t-input.t-input_card:not(:-webkit-autofill):not(:focus:placeholder-shown),.t-input.t-input.t-input_card.t-input_filled{caret-color:var(--tui-text-primary);color:transparent!important;-webkit-text-fill-color:transparent!important}.t-input.t-input.t-input_card::-webkit-credit-card-auto-fill-button{content:none!important;position:absolute;left:-60rem;top:-60rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input_inert{pointer-events:none}.t-input_cvc_hidden{-webkit-text-security:disc}.t-icons{position:absolute;right:1rem;z-index:1;display:flex;align-items:center;block-size:100%;gap:.25rem;pointer-events:none}@supports (inset-inline-end: 0){.t-icons{right:unset;inset-inline-end:1rem}}.t-icon-outlet{display:flex;margin-inline-end:.25rem}.t-icon{cursor:pointer;pointer-events:auto}.t-icon:before{font-size:1rem}.t-label{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;margin:0 var(--t-padding);line-height:var(--t-height);color:var(--tui-text-secondary)}.t-label:empty:before{content:attr(data-label)}input:-webkit-autofill~.t-label,.t-label_raised{font-size:var(--t-label-size);transform:translateY(var(--t-label))}:host([data-mode~=\"invalid\"]) input:-webkit-autofill~.t-label,:host([data-mode~=\"invalid\"]) .t-label_raised{color:var(--tui-text-negative)}:host([data-focus=\"true\"]) .t-label{color:var(--tui-text-primary)}.t-ghost{visibility:hidden}\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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"], outputs: ["maskitoChange", "maskitoElementChange"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceMode"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "pipe", type: TuiFormatCardPipe, name: "tuiFormatCard" }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "pipe", type: TuiIconPipe, name: "tuiIcon" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "directive", type: TuiTransitioned, selector: "[tuiTransitioned]" }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
314
307
  }
315
308
  __decorate([
316
309
  tuiPure
@@ -347,24 +340,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
347
340
  '[attr.data-size]': 'textfield.size()',
348
341
  '(pointerdown)': 'onPointerDown($event)',
349
342
  '(scroll.zoneless)': '$event.target.scrollLeft = 0',
350
- }, template: "@let formattedCard = value()?.card | tuiFormatCard: cardPrefilled;\n\n<div class=\"t-wrapper\">\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCard\n autocomplete=\"cc-number\"\n automation-id=\"tui-input-card-group__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator)\"\n [attr.id]=\"`${id}_card`\"\n [class.t-input_filled]=\"card.length\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cardPrefilled ? '' : placeholder || exampleText\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"cardFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"cardCollapsed\"\n (waResizeObserver)=\"onResize()\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style]=\"getStyle(ghost)\"\n [textContent]=\"formattedCard\"\n ></span>\n </span>\n </span>\n <div\n tuiTransitioned\n class=\"t-label\"\n [attr.data-label]=\"texts()?.cardNumberText\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n <ng-content />\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputExpire\n autocomplete=\"cc-exp\"\n automation-id=\"tui-input-card-group__expire\"\n inputmode=\"numeric\"\n maxlength=\"5\"\n name=\"ccexpiryyear\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"`${id}_expire`\"\n [class.t-input_inert]=\"!expireFocusable\"\n [class.t-input_prefilled]=\"!inputs.expire\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"inputs.expire ? '00/00' : '\u2022\u2022/\u2022\u2022'\"\n [readOnly]=\"readOnly() || !inputs.expire\"\n [tabIndex]=\"expireFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.expiryText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCVC\n autocomplete=\"cc-csc\"\n automation-id=\"tui-input-card-group__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"`${id}_cvc`\"\n [class.t-input_cvc_hidden]=\"cvcHidden\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCVC\"\n [ngModel]=\"cvc\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cvcPrefilled ? '\u2022\u2022\u2022' : exampleTextCVC\"\n [readOnly]=\"readOnly() || cvcPrefilled\"\n [tabIndex]=\"cvcFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cvcText }}\n </div>\n </label>\n</div>\n<div class=\"t-icons\">\n @if (content) {\n <div class=\"t-icon-outlet\">\n <img\n *polymorpheusOutlet=\"content as src\"\n alt=\"\"\n automation-id=\"tui-input-card-group__icon\"\n class=\"t-card\"\n [src]=\"src | tuiIcon\"\n />\n </div>\n }\n @if (hasCleaner()) {\n <tui-icon\n automation-id=\"tui-input-card-group__cleaner\"\n tuiAppearance=\"icon\"\n class=\"t-icon\"\n [icon]=\"icons.close\"\n (click)=\"clear()\"\n />\n }\n @if (dropdown._content()) {\n <tui-icon\n automation-id=\"tui-input-card-group__dropdown\"\n tuiAppearance=\"icon\"\n tuiChevron\n class=\"t-icon\"\n (click)=\"toggle()\"\n />\n }\n</div>\n", styles: ["@keyframes outside{0%{transform:translate3d(calc(var(--t-translate) * var(--tui-inline)),0,0)}to{transform:translate3d(calc(100% * var(--tui-inline)),0,0)}}@keyframes inside{0%{transform:translate3d(calc(100% * var(--tui-inline)),0,0)}to{transform:translate3d(calc(var(--t-translate) * var(--tui-inline)),0,0)}}:host{--t-height: var(--tui-height-l);--t-padding: var(--tui-padding-l);--t-label: -.7rem;--t-label-size: .83em;--t-translate: 6.5rem;position:relative;display:block;block-size:var(--t-height);min-inline-size:24rem;border-radius:var(--tui-radius-l);overflow:hidden;font:var(--tui-font-text-ui-m);isolation:isolate}:host[data-size=m]{--t-label: -.7em;--t-height: var(--tui-height-m);--t-padding: var(--tui-padding-m);border-radius:var(--tui-radius-m);font:var(--tui-font-text-ui-s)}:host[data-size=m] .t-card{inline-size:1.5rem;block-size:1.5rem}:host[data-size=m] [tuiChevron]{margin-inline-end:-.875rem;margin-inline-start:.125rem}:host._compact{min-inline-size:19rem;--t-translate: 4rem}:host[tuiAppearance][data-appearance]:has(:-webkit-autofill){background:var(--tui-service-autofill-background)!important}:host [tuiChevron]{block-size:auto;align-self:stretch;border-inline-end:var(--t-padding) solid transparent;margin-inline-end:-.75rem;box-sizing:content-box;font-size:1rem;cursor:pointer}.t-wrapper{position:absolute;z-index:1;inline-size:100%;block-size:100%;transition:opacity 0s var(--tui-duration)}.t-wrapper_cvc,.t-wrapper_expire{opacity:0;pointer-events:none;animation:outside var(--tui-duration) ease-in-out}.t-wrapper_cvc{margin-inline-start:7rem}:host._compact .t-wrapper_cvc{margin-inline-start:4rem}.t-wrapper_active{transition:none;pointer-events:auto;opacity:1;animation:inside var(--tui-duration) ease-in-out forwards}.t-card{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;padding:calc(var(--t-height) / 3) var(--t-padding) 0;box-sizing:border-box;line-height:calc(2 * var(--t-height) / 3);color:var(--tui-text-primary);white-space:nowrap;pointer-events:none}.t-collapsed:after{content:\"*\";float:left;opacity:0}:host-context([dir=\"rtl\"]) .t-collapsed:after{float:none}.t-collapsed_enable-mask:before{content:attr(data-before)}.t-collapsed_enable-mask:after{opacity:1}:host-context([dir=\"rtl\"]) .t-collapsed_enable-mask:after{transition:opacity 0s var(--tui-duration)}.t-collapsed_enable-mask .t-collapsed-wrapper{left:1.375rem}:host-context([dir=\"rtl\"]) .t-collapsed_enable-mask .t-collapsed-wrapper{left:unset}.t-collapsed-wrapper{position:absolute;top:0;display:block;inline-size:100%;block-size:100%;overflow:hidden}.t-value{transition-property:transform,clip-path;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;bottom:0;right:100%;display:block;clip-path:inset(0);transform:translate3d(calc(100% * var(--tui-inline)),0,0)}:host-context([dir=\"rtl\"]) .t-value{right:unset;left:100%;transform:translate3d(calc(100% * var(--tui-inline)),0,0)!important}.t-input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:1;border:0;margin:0;padding:calc(var(--t-height) / 3) var(--t-padding) 0;outline:none;background:transparent;box-sizing:border-box;font:inherit;color:var(--tui-text-primary);direction:ltr}:host-context([dir=\"rtl\"]) .t-input{text-align:end}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input_prefilled::placeholder{color:var(--tui-text-primary)}.t-input[chrome-autofilled],.t-input:-webkit-autofill{-webkit-text-fill-color:var(--tui-text-primary)!important;caret-color:var(--tui-text-primary)!important;transition:background-color 600000s 0s}.t-input.t-input.t-input_card:not(:-webkit-autofill):not(:focus:placeholder-shown),.t-input.t-input.t-input_card.t-input_filled{caret-color:var(--tui-text-primary);color:transparent!important;-webkit-text-fill-color:transparent!important}.t-input.t-input.t-input_card::-webkit-credit-card-auto-fill-button{content:none!important;position:absolute;left:-60rem;top:-60rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input_inert{pointer-events:none}.t-input_cvc_hidden{-webkit-text-security:disc}.t-icons{position:absolute;right:1rem;z-index:1;display:flex;align-items:center;block-size:100%;gap:.25rem;pointer-events:none}@supports (inset-inline-end: 0){.t-icons{right:unset;inset-inline-end:1rem}}.t-icon-outlet{display:flex;margin-inline-end:.25rem}.t-icon{cursor:pointer;pointer-events:auto}.t-icon:before{font-size:1rem}.t-label{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;margin:0 var(--t-padding);line-height:var(--t-height);color:var(--tui-text-secondary)}.t-label:empty:before{content:attr(data-label)}input:-webkit-autofill~.t-label,.t-label_raised{font-size:var(--t-label-size);transform:translateY(var(--t-label))}:host([data-mode~=\"invalid\"]) input:-webkit-autofill~.t-label,:host([data-mode~=\"invalid\"]) .t-label_raised{color:var(--tui-text-negative)}:host([data-focus=\"true\"]) .t-label{color:var(--tui-text-primary)}.t-ghost{visibility:hidden}\n"] }]
351
- }], propDecorators: { exampleText: [{
352
- type: Input
353
- }], placeholder: [{
354
- type: Input
355
- }], inputs: [{
356
- type: Input
357
- }], cardValidator: [{
358
- type: Input
359
- }], icon: [{
360
- type: Input
361
- }], id: [{
362
- type: Input
363
- }], binChange: [{
364
- type: Output
365
- }], codeLength: [{
366
- type: Input
367
- }], isFocusable: [], getPaymentSystem: [] } });
343
+ }, template: "@let formattedCard = value()?.card | tuiFormatCard: cardPrefilled;\n\n<div class=\"t-wrapper\">\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCard\n autocomplete=\"cc-number\"\n automation-id=\"tui-input-card-group__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator())\"\n [attr.id]=\"`${id()}_card`\"\n [class.t-input_filled]=\"card.length\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cardPrefilled ? '' : placeholder() || exampleText()\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"cardFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"cardCollapsed\"\n (waResizeObserver)=\"onResize()\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style]=\"getStyle(ghost)\"\n [textContent]=\"formattedCard\"\n ></span>\n </span>\n </span>\n <div\n tuiTransitioned\n class=\"t-label\"\n [attr.data-label]=\"texts()?.cardNumberText\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n <ng-content />\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputExpire\n autocomplete=\"cc-exp\"\n automation-id=\"tui-input-card-group__expire\"\n inputmode=\"numeric\"\n maxlength=\"5\"\n name=\"ccexpiryyear\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"`${id()}_expire`\"\n [class.t-input_inert]=\"!expireFocusable\"\n [class.t-input_prefilled]=\"!inputs().expire\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"inputs().expire ? '00/00' : '\u2022\u2022/\u2022\u2022'\"\n [readOnly]=\"readOnly() || !inputs().expire\"\n [tabIndex]=\"expireFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.expiryText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCVC\n autocomplete=\"cc-csc\"\n automation-id=\"tui-input-card-group__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"`${id()}_cvc`\"\n [class.t-input_cvc_hidden]=\"cvcHidden\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCVC()\"\n [ngModel]=\"cvc\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cvcPrefilled ? '\u2022\u2022\u2022' : exampleTextCVC()\"\n [readOnly]=\"readOnly() || cvcPrefilled\"\n [tabIndex]=\"cvcFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cvcText }}\n </div>\n </label>\n</div>\n<div class=\"t-icons\">\n @if (content) {\n <div class=\"t-icon-outlet\">\n <img\n *polymorpheusOutlet=\"content as src\"\n alt=\"\"\n automation-id=\"tui-input-card-group__icon\"\n class=\"t-card\"\n [src]=\"src | tuiIcon\"\n />\n </div>\n }\n @if (hasCleaner()) {\n <tui-icon\n automation-id=\"tui-input-card-group__cleaner\"\n tuiAppearance=\"icon\"\n class=\"t-icon\"\n [icon]=\"icons.close\"\n (click)=\"clear()\"\n />\n }\n @if (dropdown._content()) {\n <tui-icon\n automation-id=\"tui-input-card-group__dropdown\"\n tuiAppearance=\"icon\"\n tuiChevron\n class=\"t-icon\"\n (click)=\"toggle()\"\n />\n }\n</div>\n", styles: ["@keyframes outside{0%{transform:translate3d(calc(var(--t-translate) * var(--tui-inline)),0,0)}to{transform:translate3d(calc(100% * var(--tui-inline)),0,0)}}@keyframes inside{0%{transform:translate3d(calc(100% * var(--tui-inline)),0,0)}to{transform:translate3d(calc(var(--t-translate) * var(--tui-inline)),0,0)}}:host{--t-height: var(--tui-height-l);--t-padding: var(--tui-padding-l);--t-label: -.7rem;--t-label-size: .83em;--t-translate: 6.5rem;--t-collapsed-offset: 1.4375rem;position:relative;display:block;block-size:var(--t-height);min-inline-size:24rem;border-radius:var(--tui-radius-l);overflow:hidden;font:var(--tui-font-text-ui-m);isolation:isolate}:host[data-size=m]{--t-label: -.7em;--t-height: var(--tui-height-m);--t-padding: var(--tui-padding-m);--t-collapsed-offset: 1.125rem;border-radius:var(--tui-radius-m);font:var(--tui-font-text-ui-s)}:host[data-size=m] .t-card{inline-size:1.5rem;block-size:1.5rem}:host[data-size=m] [tuiChevron]{margin-inline-end:-.875rem;margin-inline-start:.125rem}:host._compact{min-inline-size:19rem;--t-translate: 4rem}:host[tuiAppearance][data-appearance]:has(:-webkit-autofill){background:var(--tui-service-autofill-background)!important}:host [tuiChevron]{block-size:auto;align-self:stretch;border-inline-end:var(--t-padding) solid transparent;margin-inline-end:-.75rem;box-sizing:content-box;font-size:1rem;cursor:pointer}.t-wrapper{position:absolute;z-index:1;inline-size:100%;block-size:100%;transition:opacity 0s var(--tui-duration)}.t-wrapper_cvc,.t-wrapper_expire{opacity:0;pointer-events:none;animation:outside var(--tui-duration) ease-in-out}.t-wrapper_cvc{margin-inline-start:7rem}:host._compact .t-wrapper_cvc{margin-inline-start:4rem}.t-wrapper_active{transition:none;pointer-events:auto;opacity:1;animation:inside var(--tui-duration) ease-in-out forwards}.t-card{inline-size:2rem;block-size:2rem}.t-collapsed{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;padding:calc(var(--t-height) / 3) var(--t-padding) 0;box-sizing:border-box;line-height:calc(2 * var(--t-height) / 3);color:var(--tui-text-primary);white-space:nowrap;pointer-events:none}.t-collapsed:after{content:\"*\";float:left;opacity:0}:host-context([dir=\"rtl\"]) .t-collapsed:after{float:none}.t-collapsed_enable-mask:before{content:attr(data-before)}.t-collapsed_enable-mask:after{opacity:1}:host-context([dir=\"rtl\"]) .t-collapsed_enable-mask:after{transition:opacity 0s var(--tui-duration)}.t-collapsed_enable-mask .t-collapsed-wrapper{left:var(--t-collapsed-offset)}:host-context([dir=\"rtl\"]) .t-collapsed_enable-mask .t-collapsed-wrapper{left:unset}.t-collapsed-wrapper{position:absolute;top:0;display:block;inline-size:100%;block-size:100%;overflow:hidden}.t-value{transition-property:transform,clip-path;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;bottom:0;right:100%;display:block;clip-path:inset(0);transform:translate3d(calc(100% * var(--tui-inline)),0,0)}:host-context([dir=\"rtl\"]) .t-value{right:unset;left:100%;transform:translate3d(calc(100% * var(--tui-inline)),0,0)!important}.t-input{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:1;border:0;margin:0;padding:calc(var(--t-height) / 3) var(--t-padding) 0;outline:none;background:transparent;box-sizing:border-box;font:inherit;color:var(--tui-text-primary);direction:ltr}:host-context([dir=\"rtl\"]) .t-input{text-align:end}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input_prefilled::placeholder{color:var(--tui-text-primary)}.t-input[chrome-autofilled],.t-input:-webkit-autofill{-webkit-text-fill-color:var(--tui-text-primary)!important;caret-color:var(--tui-text-primary)!important;transition:background-color 600000s 0s}.t-input.t-input.t-input_card:not(:-webkit-autofill):not(:focus:placeholder-shown),.t-input.t-input.t-input_card.t-input_filled{caret-color:var(--tui-text-primary);color:transparent!important;-webkit-text-fill-color:transparent!important}.t-input.t-input.t-input_card::-webkit-credit-card-auto-fill-button{content:none!important;position:absolute;left:-60rem;top:-60rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input_inert{pointer-events:none}.t-input_cvc_hidden{-webkit-text-security:disc}.t-icons{position:absolute;right:1rem;z-index:1;display:flex;align-items:center;block-size:100%;gap:.25rem;pointer-events:none}@supports (inset-inline-end: 0){.t-icons{right:unset;inset-inline-end:1rem}}.t-icon-outlet{display:flex;margin-inline-end:.25rem}.t-icon{cursor:pointer;pointer-events:auto}.t-icon:before{font-size:1rem}.t-label{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;margin:0 var(--t-padding);line-height:var(--t-height);color:var(--tui-text-secondary)}.t-label:empty:before{content:attr(data-label)}input:-webkit-autofill~.t-label,.t-label_raised{font-size:var(--t-label-size);transform:translateY(var(--t-label))}:host([data-mode~=\"invalid\"]) input:-webkit-autofill~.t-label,:host([data-mode~=\"invalid\"]) .t-label_raised{color:var(--tui-text-negative)}:host([data-focus=\"true\"]) .t-label{color:var(--tui-text-primary)}.t-ghost{visibility:hidden}\n"] }]
344
+ }], propDecorators: { isFocusable: [], getPaymentSystem: [] } });
368
345
 
369
346
  /**
370
347
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-components-input-card-group.mjs","sources":["../../../projects/addon-commerce/components/input-card-group/input-card-group.directive.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.options.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.providers.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.component.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.template.html","../../../projects/addon-commerce/components/input-card-group/taiga-ui-addon-commerce-components-input-card-group.ts"],"sourcesContent":["import {Directive, inject} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TuiBreakpointService} from '@taiga-ui/core/services';\nimport {BehaviorSubject, combineLatest, map} from 'rxjs';\n\n@Directive({\n inputs: ['compactSetter: compact'],\n host: {'[class._compact]': 'compact()'},\n})\nexport class TuiInputCardGroupDirective {\n private readonly c$ = new BehaviorSubject(false);\n private readonly m$ = inject(TuiBreakpointService).pipe(map((b) => b === 'mobile'));\n\n public readonly compact$ = combineLatest([this.c$, this.m$]).pipe(\n map((c) => c.some(Boolean)),\n );\n\n public readonly compact = toSignal(this.compact$, {initialValue: false});\n\n public set compactSetter(compact: boolean) {\n this.c$.next(compact);\n }\n}\n","import {InjectionToken, type Provider} from '@angular/core';\nimport {tuiDefaultCardValidator} from '@taiga-ui/addon-commerce/constants';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiCardInputs {\n cvc: boolean;\n expire: boolean;\n}\n\nexport interface TuiInputCardGroupOptions {\n readonly cardValidator: TuiBooleanHandler<string>;\n readonly exampleText: string;\n readonly exampleTextCVC: string;\n readonly cvcHidden: boolean;\n readonly inputs: TuiCardInputs;\n}\n\nexport const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS: TuiInputCardGroupOptions = {\n cardValidator: tuiDefaultCardValidator,\n exampleText: '0000 0000 0000 0000',\n exampleTextCVC: '000',\n cvcHidden: true,\n inputs: {cvc: true, expire: true},\n};\n\nexport const TUI_INPUT_CARD_GROUP_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_INPUT_CARD_GROUP_OPTIONS' : '',\n {\n factory: () => TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiInputCardGroupOptionsProvider(\n options: Partial<TuiInputCardGroupOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_CARD_GROUP_OPTIONS,\n options,\n TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS,\n );\n}\n","import {inject, InjectionToken} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {\n TUI_CARD_CVC_TEXTS,\n TUI_CARD_EXPIRY_TEXTS,\n TUI_CARD_NUMBER_TEXTS,\n} from '@taiga-ui/addon-commerce/tokens';\nimport {combineLatest, map, type Observable} from 'rxjs';\n\nimport {TuiInputCardGroupDirective} from './input-card-group.directive';\n\nexport interface TuiCardGroupedTexts {\n readonly cardNumberText: string;\n readonly cvcText: string;\n readonly expiryText: string;\n}\n\nexport const TUI_INPUT_CARD_GROUP_TEXTS = new InjectionToken<\n Observable<TuiCardGroupedTexts>\n>(ngDevMode ? 'TUI_INPUT_CARD_GROUP_TEXTS' : '');\n\nexport const TUI_INPUT_CARD_GROUP_TEXTS_PROVIDER = {\n provide: TUI_INPUT_CARD_GROUP_TEXTS,\n useFactory: () =>\n inject(TUI_INPUT_CARD_GROUP_TEXTS, {skipSelf: true, optional: true}) ??\n combineLatest([\n inject(TuiInputCardGroupDirective).compact$,\n toObservable(inject(TUI_CARD_NUMBER_TEXTS)),\n toObservable(inject(TUI_CARD_EXPIRY_TEXTS)),\n inject(TUI_CARD_CVC_TEXTS),\n ]).pipe(\n map(([compact, cardNumber, expiry, cvcTexts]) => ({\n cardNumberText: cardNumber[Number(!compact)] ?? '',\n expiryText: expiry[Number(!compact)] ?? '',\n cvcText: cvcTexts[Number(!compact)] ?? '',\n })),\n ),\n};\n","import {DOCUMENT, isPlatformServer} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n type ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n PLATFORM_ID,\n type Signal,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {\n TUI_MASK_CARD,\n TUI_MASK_CVC,\n TUI_MASK_EXPIRE,\n} from '@taiga-ui/addon-commerce/constants';\nimport {TuiFormatCardPipe} from '@taiga-ui/addon-commerce/pipes';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {tuiGetPaymentSystem} from '@taiga-ui/addon-commerce/utils';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_NO_BREAK_SPACE, TUI_NON_DIGIT_REGEXP} from '@taiga-ui/cdk/constants';\nimport {tuiHovered, TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiTransitioned} from '@taiga-ui/cdk/directives/transitioned';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {tuiInjectId} from '@taiga-ui/cdk/services';\nimport {TUI_IS_MOBILE, TUI_IS_WEBKIT} from '@taiga-ui/cdk/tokens';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement, tuiIsElement, tuiIsInput} from '@taiga-ui/cdk/utils/dom';\nimport {tuiFocusedIn, tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsDataListHost,\n type TuiDataListHost,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon, TuiIconPipe} from '@taiga-ui/core/components/icon';\nimport {TUI_TEXTFIELD_OPTIONS} from '@taiga-ui/core/components/textfield';\nimport {\n TuiAppearance,\n tuiAppearance,\n tuiAppearanceFocus,\n tuiAppearanceMode,\n tuiAppearanceState,\n} from '@taiga-ui/core/directives/appearance';\nimport {\n TuiDropdownDirective,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {EMPTY, Subject, switchMap, timer} from 'rxjs';\n\nimport {TuiInputCardGroupDirective} from './input-card-group.directive';\nimport {TUI_INPUT_CARD_GROUP_OPTIONS} from './input-card-group.options';\nimport {\n TUI_INPUT_CARD_GROUP_TEXTS,\n TUI_INPUT_CARD_GROUP_TEXTS_PROVIDER,\n} from './input-card-group.providers';\n\nexport interface TuiCard {\n card: string;\n cvc: string;\n expire: string;\n}\n\n@Component({\n selector: 'tui-input-card-group',\n imports: [\n FormsModule,\n MaskitoDirective,\n PolymorpheusOutlet,\n TuiAppearance,\n TuiChevron,\n TuiFormatCardPipe,\n TuiIcon,\n TuiIconPipe,\n TuiMapperPipe,\n TuiTransitioned,\n WaResizeObserver,\n ],\n templateUrl: './input-card-group.template.html',\n styleUrl: './input-card-group.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsDataListHost(TuiInputCardGroup),\n tuiAsControl(TuiInputCardGroup),\n tuiDropdownOptionsProvider({limitWidth: 'fixed'}),\n TuiHoveredService,\n TUI_INPUT_CARD_GROUP_TEXTS_PROVIDER,\n ],\n hostDirectives: [\n TuiAppearance,\n TuiDropdownDirective,\n TuiWithDropdownOpen,\n {directive: TuiInputCardGroupDirective, inputs: ['compact']},\n ],\n host: {\n '[attr.data-size]': 'textfield.size()',\n '(pointerdown)': 'onPointerDown($event)',\n '(scroll.zoneless)': '$event.target.scrollLeft = 0',\n },\n})\nexport class TuiInputCardGroup\n extends TuiControl<TuiCard | null>\n implements TuiDataListHost<Partial<TuiCard>>\n{\n private readonly inputCard = viewChild<ElementRef<HTMLInputElement>>('inputCard');\n\n private readonly inputExpire = viewChild<ElementRef<HTMLInputElement>>('inputExpire');\n\n private readonly inputCVC = viewChild<ElementRef<HTMLInputElement>>('inputCVC');\n\n private readonly doc = inject(DOCUMENT);\n private readonly isServer = isPlatformServer(inject(PLATFORM_ID));\n private readonly focus$ = new Subject<void>();\n private expirePrefilled = false;\n private readonly paymentSystems = inject(TUI_PAYMENT_SYSTEM_ICONS);\n private readonly options = inject(TUI_INPUT_CARD_GROUP_OPTIONS);\n private readonly el = tuiInjectElement();\n private readonly hover = tuiHovered();\n private readonly focusedIn = tuiFocusedIn(this.el);\n\n protected exampleTextCVC = this.options.exampleTextCVC;\n protected cvcHidden = this.options.cvcHidden;\n protected maskCVC = TUI_MASK_CVC(3);\n protected readonly isMobile = inject(TUI_IS_MOBILE);\n protected readonly isWebkit = inject(TUI_IS_WEBKIT);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly maskCard = TUI_MASK_CARD;\n protected readonly maskExpire = TUI_MASK_EXPIRE;\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly textfield = inject(TUI_TEXTFIELD_OPTIONS);\n protected readonly texts = toSignal(inject(TUI_INPUT_CARD_GROUP_TEXTS));\n protected readonly open = tuiDropdownOpen();\n protected readonly $ = this.isWebkit\n ? this.focus$\n .pipe(\n switchMap(() => timer(100)),\n takeUntilDestroyed(),\n )\n .subscribe(() => (this.expire ? this.focusCVC() : this.focusExpire()))\n : EMPTY;\n\n protected readonly m = tuiAppearanceMode(this.mode);\n protected readonly appearance = tuiAppearance(\n inject(TUI_TEXTFIELD_OPTIONS).appearance,\n );\n\n protected readonly state: Signal<unknown> = tuiAppearanceState(\n // eslint-disable-next-line no-nested-ternary\n computed(() => (this.disabled() ? 'disabled' : this.hover() ? 'hover' : null)),\n );\n\n protected readonly focus = tuiAppearanceFocus(\n computed(() => this.open() || this.focusedIn()),\n );\n\n protected readonly labelRaised = computed(\n () => (this.focus() && !this.readOnly()) || !!this.value()?.card,\n );\n\n protected readonly hasCleaner = computed(\n () => !!this.value()?.card && this.interactive(),\n );\n\n /**\n * @deprecated use 'placeholder' instead\n */\n @Input()\n public exampleText = this.options.exampleText;\n\n @Input()\n public placeholder = this.options.exampleText;\n\n @Input()\n public inputs = this.options.inputs;\n\n @Input()\n public cardValidator: TuiBooleanHandler<string> = this.options.cardValidator;\n\n @Input()\n public icon: PolymorpheusContent = '';\n\n @Input()\n public id = tuiInjectId();\n\n @Output()\n public readonly binChange = new EventEmitter<string | null>();\n\n @Input()\n public set codeLength(length: 3 | 4) {\n this.exampleTextCVC = '0'.repeat(length);\n this.maskCVC = TUI_MASK_CVC(length);\n }\n\n public get bin(): string | null {\n return this.card.length < 6 ? null : this.card.slice(0, 6);\n }\n\n public override writeValue(value: TuiCard | null): void {\n const {bin} = this;\n const {activeElement} = this.doc;\n\n super.writeValue(value);\n this.updateBin(bin);\n this.expirePrefilled = !!this.expire && this.cardPrefilled;\n\n // Programmatic setting of expire input value breaks autofill in Chrome\n const inputExpire = this.inputExpire();\n\n if (\n !inputExpire ||\n this.isMobile ||\n this.isWebkit ||\n this.isServer ||\n inputExpire.nativeElement.value === this.expire\n ) {\n return;\n }\n\n inputExpire.nativeElement.focus({preventScroll: true});\n inputExpire.nativeElement.select();\n this.doc.execCommand('insertText', false, this.expire);\n inputExpire.nativeElement.blur();\n (activeElement as HTMLElement | null)?.focus({preventScroll: true});\n }\n\n /** Public API for manual focus management */\n public focusCard(): void {\n this.inputCard()?.nativeElement.focus({preventScroll: true});\n }\n\n public focusExpire(): void {\n if (this.inputs.expire) {\n this.inputExpire()?.nativeElement.focus({preventScroll: true});\n } else {\n this.inputCVC()?.nativeElement.focus({preventScroll: true});\n }\n }\n\n public focusCVC(): void {\n this.inputCVC()?.nativeElement.focus({preventScroll: true});\n }\n\n public handleOption(option: Partial<TuiCard> | null): void {\n const {card = '', expire = '', cvc = ''} = option || {};\n const {bin} = this;\n const element =\n (!card && this.inputCard()?.nativeElement) ||\n (!expire && this.inputExpire()?.nativeElement) ||\n this.inputCVC()?.nativeElement;\n\n this.onChange({card, expire, cvc});\n this.updateBin(bin);\n this.open.set(false);\n this.expirePrefilled = !!expire;\n\n element?.focus();\n }\n\n public clear(): void {\n this.expirePrefilled = false;\n\n [this.inputCVC(), this.inputExpire(), this.inputCard()].forEach((e) => {\n e?.nativeElement.focus();\n e?.nativeElement.select();\n e?.nativeElement.ownerDocument.execCommand('delete');\n });\n\n this.onChange(null);\n }\n\n public onResize(): void {\n this.cdr.detectChanges();\n }\n\n protected get content(): PolymorpheusContent {\n const system = this.getPaymentSystem(this.card);\n\n return this.icon || (system && this.paymentSystems[system]);\n }\n\n protected get card(): string {\n return this.value()?.card || '';\n }\n\n protected get expire(): string {\n return this.value()?.expire || '';\n }\n\n protected get cvc(): string {\n return this.value()?.cvc || '';\n }\n\n protected get cardCollapsed(): boolean {\n return (\n this.isFocusable(this.card) && !tuiIsFocused(this.inputCard()?.nativeElement)\n );\n }\n\n protected get tailLength(): number {\n return this.card.length % 4 > 0 ? 5 : 4;\n }\n\n protected get cardPrefilled(): boolean {\n return !!this.card.match(TUI_NON_DIGIT_REGEXP);\n }\n\n protected get cvcPrefilled(): boolean {\n return !this.inputs.cvc || !!this.cvc.match(TUI_NON_DIGIT_REGEXP);\n }\n\n protected get cardFocusable(): boolean {\n return !this.cardPrefilled;\n }\n\n protected get expireFocusable(): boolean {\n return this.isFocusable(this.card) && !this.expirePrefilled;\n }\n\n protected get cvcFocusable(): boolean {\n return this.isFocusable(this.card);\n }\n\n protected get masked(): string {\n return this.cardPrefilled ? `${this.card.slice(-4)}` : '';\n }\n\n protected onCardChange(card: string): void {\n const {value, bin} = this;\n const parsed = card.split(CHAR_NO_BREAK_SPACE).join('');\n\n if (value()?.card === parsed) {\n return;\n }\n\n this.updateProperty(parsed, 'card');\n this.updateBin(bin);\n\n if (this.cardValidator(this.card) && !value()?.expire && this.inputExpire()) {\n this.focusExpire();\n // Safari autofill focus jerk workaround\n this.focus$.next();\n }\n }\n\n protected onExpireChange(expire: string): void {\n this.updateProperty(expire, 'expire');\n\n // MM/YY\n if (Number(this.inputExpire()?.nativeElement.selectionStart) === 5) {\n this.focusCVC();\n }\n }\n\n protected onCVCChange(cvc: string): void {\n this.updateProperty(cvc, 'cvc');\n }\n\n protected getStyle({offsetWidth}: HTMLSpanElement): string {\n return this.cardCollapsed\n ? `transform: translate3d(calc(${offsetWidth}px * var(--tui-inline)), 0, 0); clip-path: inset(0 0 0 calc(100% - ${offsetWidth}px));`\n : '';\n }\n\n protected onPointerDown(event: MouseEvent): void {\n if (tuiIsElement(event.target) && tuiIsInput(event.target)) {\n return;\n }\n\n event.preventDefault();\n this.focusInput();\n }\n\n protected toggle(): void {\n this.open.update((open) => !open);\n }\n\n @tuiPure\n private isFocusable(card: string): boolean {\n return this.cardValidator(card) || this.cardPrefilled;\n }\n\n @tuiPure\n private getPaymentSystem(value: string): TuiPaymentSystem | null {\n return tuiGetPaymentSystem(value);\n }\n\n private updateBin(oldBin: string | null): void {\n const {bin} = this;\n\n if (bin !== oldBin && !this.cardPrefilled) {\n this.binChange.emit(bin);\n }\n }\n\n private updateProperty(value: string, propName: 'card' | 'cvc' | 'expire'): void {\n const {card = '', expire = '', cvc = ''} = this.value() || {};\n const newValue: TuiCard = {card, expire, cvc};\n\n newValue[propName] = value;\n\n this.onChange(newValue.expire || newValue.cvc || newValue.card ? newValue : null);\n }\n\n private focusInput(): void {\n const element =\n (this.cardFocusable && this.inputCard()?.nativeElement) ||\n (this.expireFocusable && this.inputExpire()?.nativeElement) ||\n this.inputCVC()?.nativeElement;\n\n element?.focus();\n }\n}\n","@let formattedCard = value()?.card | tuiFormatCard: cardPrefilled;\n\n<div class=\"t-wrapper\">\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCard\n autocomplete=\"cc-number\"\n automation-id=\"tui-input-card-group__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator)\"\n [attr.id]=\"`${id}_card`\"\n [class.t-input_filled]=\"card.length\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cardPrefilled ? '' : placeholder || exampleText\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"cardFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"cardCollapsed\"\n (waResizeObserver)=\"onResize()\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style]=\"getStyle(ghost)\"\n [textContent]=\"formattedCard\"\n ></span>\n </span>\n </span>\n <div\n tuiTransitioned\n class=\"t-label\"\n [attr.data-label]=\"texts()?.cardNumberText\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n <ng-content />\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputExpire\n autocomplete=\"cc-exp\"\n automation-id=\"tui-input-card-group__expire\"\n inputmode=\"numeric\"\n maxlength=\"5\"\n name=\"ccexpiryyear\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"`${id}_expire`\"\n [class.t-input_inert]=\"!expireFocusable\"\n [class.t-input_prefilled]=\"!inputs.expire\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"inputs.expire ? '00/00' : '••/••'\"\n [readOnly]=\"readOnly() || !inputs.expire\"\n [tabIndex]=\"expireFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.expiryText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCVC\n autocomplete=\"cc-csc\"\n automation-id=\"tui-input-card-group__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"`${id}_cvc`\"\n [class.t-input_cvc_hidden]=\"cvcHidden\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCVC\"\n [ngModel]=\"cvc\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cvcPrefilled ? '•••' : exampleTextCVC\"\n [readOnly]=\"readOnly() || cvcPrefilled\"\n [tabIndex]=\"cvcFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cvcText }}\n </div>\n </label>\n</div>\n<div class=\"t-icons\">\n @if (content) {\n <div class=\"t-icon-outlet\">\n <img\n *polymorpheusOutlet=\"content as src\"\n alt=\"\"\n automation-id=\"tui-input-card-group__icon\"\n class=\"t-card\"\n [src]=\"src | tuiIcon\"\n />\n </div>\n }\n @if (hasCleaner()) {\n <tui-icon\n automation-id=\"tui-input-card-group__cleaner\"\n tuiAppearance=\"icon\"\n class=\"t-icon\"\n [icon]=\"icons.close\"\n (click)=\"clear()\"\n />\n }\n @if (dropdown._content()) {\n <tui-icon\n automation-id=\"tui-input-card-group__dropdown\"\n tuiAppearance=\"icon\"\n tuiChevron\n class=\"t-icon\"\n (click)=\"toggle()\"\n />\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.TuiInputCardGroupDirective"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-components-input-card-group.mjs","sources":["../../../projects/addon-commerce/components/input-card-group/input-card-group.directive.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.options.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.providers.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.component.ts","../../../projects/addon-commerce/components/input-card-group/input-card-group.template.html","../../../projects/addon-commerce/components/input-card-group/taiga-ui-addon-commerce-components-input-card-group.ts"],"sourcesContent":["import {Directive, inject} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TuiBreakpointService} from '@taiga-ui/core/services';\nimport {BehaviorSubject, combineLatest, map} from 'rxjs';\n\n@Directive({\n inputs: ['compactSetter: compact'],\n host: {'[class._compact]': 'compact()'},\n})\nexport class TuiInputCardGroupDirective {\n private readonly c$ = new BehaviorSubject(false);\n private readonly m$ = inject(TuiBreakpointService).pipe(map((b) => b === 'mobile'));\n\n public readonly compact$ = combineLatest([this.c$, this.m$]).pipe(\n map((c) => c.some(Boolean)),\n );\n\n public readonly compact = toSignal(this.compact$, {initialValue: false});\n\n public set compactSetter(compact: boolean) {\n this.c$.next(compact);\n }\n}\n","import {tuiDefaultCardValidator} from '@taiga-ui/addon-commerce/constants';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCardInputs {\n cvc: boolean;\n expire: boolean;\n}\n\nexport interface TuiInputCardGroupOptions {\n readonly cardValidator: TuiBooleanHandler<string>;\n readonly exampleText: string;\n readonly exampleTextCVC: string;\n readonly cvcHidden: boolean;\n readonly inputs: TuiCardInputs;\n}\n\nexport const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS: TuiInputCardGroupOptions = {\n cardValidator: tuiDefaultCardValidator,\n exampleText: '0000 0000 0000 0000',\n exampleTextCVC: '000',\n cvcHidden: true,\n inputs: {cvc: true, expire: true},\n};\n\nexport const [TUI_INPUT_CARD_GROUP_OPTIONS, tuiInputCardGroupOptionsProvider] =\n tuiCreateOptions(TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS);\n","import {inject, InjectionToken} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {\n TUI_CARD_CVC_TEXTS,\n TUI_CARD_EXPIRY_TEXTS,\n TUI_CARD_NUMBER_TEXTS,\n} from '@taiga-ui/addon-commerce/tokens';\nimport {combineLatest, map, type Observable} from 'rxjs';\n\nimport {TuiInputCardGroupDirective} from './input-card-group.directive';\n\nexport interface TuiCardGroupedTexts {\n readonly cardNumberText: string;\n readonly cvcText: string;\n readonly expiryText: string;\n}\n\nexport const TUI_INPUT_CARD_GROUP_TEXTS = new InjectionToken<\n Observable<TuiCardGroupedTexts>\n>(ngDevMode ? 'TUI_INPUT_CARD_GROUP_TEXTS' : '');\n\nexport const TUI_INPUT_CARD_GROUP_TEXTS_PROVIDER = {\n provide: TUI_INPUT_CARD_GROUP_TEXTS,\n useFactory: () =>\n inject(TUI_INPUT_CARD_GROUP_TEXTS, {skipSelf: true, optional: true}) ??\n combineLatest([\n inject(TuiInputCardGroupDirective).compact$,\n toObservable(inject(TUI_CARD_NUMBER_TEXTS)),\n toObservable(inject(TUI_CARD_EXPIRY_TEXTS)),\n inject(TUI_CARD_CVC_TEXTS),\n ]).pipe(\n map(([compact, cardNumber, expiry, cvcTexts]) => ({\n cardNumberText: cardNumber[Number(!compact)] ?? '',\n expiryText: expiry[Number(!compact)] ?? '',\n cvcText: cvcTexts[Number(!compact)] ?? '',\n })),\n ),\n};\n","import {DOCUMENT, isPlatformServer} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n type ElementRef,\n inject,\n input,\n output,\n PLATFORM_ID,\n type Signal,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {\n TUI_MASK_CARD,\n TUI_MASK_CVC,\n TUI_MASK_EXPIRE,\n} from '@taiga-ui/addon-commerce/constants';\nimport {TuiFormatCardPipe} from '@taiga-ui/addon-commerce/pipes';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {tuiGetPaymentSystem} from '@taiga-ui/addon-commerce/utils';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_NO_BREAK_SPACE, TUI_NON_DIGIT_REGEXP} from '@taiga-ui/cdk/constants';\nimport {tuiHovered, TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiTransitioned} from '@taiga-ui/cdk/directives/transitioned';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {tuiInjectId} from '@taiga-ui/cdk/services';\nimport {TUI_IS_MOBILE, TUI_IS_WEBKIT} from '@taiga-ui/cdk/tokens';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement, tuiIsElement, tuiIsInput} from '@taiga-ui/cdk/utils/dom';\nimport {tuiFocusedIn, tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsDataListHost,\n type TuiDataListHost,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon, TuiIconPipe} from '@taiga-ui/core/components/icon';\nimport {TUI_TEXTFIELD_OPTIONS} from '@taiga-ui/core/components/textfield';\nimport {\n TuiAppearance,\n tuiAppearance,\n tuiAppearanceFocus,\n tuiAppearanceMode,\n tuiAppearanceState,\n} from '@taiga-ui/core/directives/appearance';\nimport {\n TuiDropdownDirective,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {EMPTY, Subject, switchMap, timer} from 'rxjs';\n\nimport {TuiInputCardGroupDirective} from './input-card-group.directive';\nimport {TUI_INPUT_CARD_GROUP_OPTIONS} from './input-card-group.options';\nimport {\n TUI_INPUT_CARD_GROUP_TEXTS,\n TUI_INPUT_CARD_GROUP_TEXTS_PROVIDER,\n} from './input-card-group.providers';\n\nexport interface TuiCard {\n card: string;\n cvc: string;\n expire: string;\n}\n\n@Component({\n selector: 'tui-input-card-group',\n imports: [\n FormsModule,\n MaskitoDirective,\n PolymorpheusOutlet,\n TuiAppearance,\n TuiChevron,\n TuiFormatCardPipe,\n TuiIcon,\n TuiIconPipe,\n TuiMapperPipe,\n TuiTransitioned,\n WaResizeObserver,\n ],\n templateUrl: './input-card-group.template.html',\n styleUrl: './input-card-group.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsDataListHost(TuiInputCardGroup),\n tuiAsControl(TuiInputCardGroup),\n tuiDropdownOptionsProvider({limitWidth: 'fixed'}),\n TuiHoveredService,\n TUI_INPUT_CARD_GROUP_TEXTS_PROVIDER,\n ],\n hostDirectives: [\n TuiAppearance,\n TuiDropdownDirective,\n TuiWithDropdownOpen,\n {directive: TuiInputCardGroupDirective, inputs: ['compact']},\n ],\n host: {\n '[attr.data-size]': 'textfield.size()',\n '(pointerdown)': 'onPointerDown($event)',\n '(scroll.zoneless)': '$event.target.scrollLeft = 0',\n },\n})\nexport class TuiInputCardGroup\n extends TuiControl<TuiCard | null>\n implements TuiDataListHost<Partial<TuiCard>>\n{\n private readonly inputCard = viewChild<ElementRef<HTMLInputElement>>('inputCard');\n\n private readonly inputExpire = viewChild<ElementRef<HTMLInputElement>>('inputExpire');\n\n private readonly inputCVC = viewChild<ElementRef<HTMLInputElement>>('inputCVC');\n\n private readonly doc = inject(DOCUMENT);\n private readonly isServer = isPlatformServer(inject(PLATFORM_ID));\n private readonly focus$ = new Subject<void>();\n private expirePrefilled = false;\n private readonly paymentSystems = inject(TUI_PAYMENT_SYSTEM_ICONS);\n private readonly options = inject(TUI_INPUT_CARD_GROUP_OPTIONS);\n private readonly el = tuiInjectElement();\n private readonly hover = tuiHovered();\n private readonly focusedIn = tuiFocusedIn(this.el);\n\n protected readonly exampleTextCVC = computed((length = this.codeLength()) =>\n length ? '0'.repeat(length) : this.options.exampleTextCVC,\n );\n\n protected readonly maskCVC = computed((length = this.codeLength()) =>\n TUI_MASK_CVC(length ?? 3),\n );\n\n protected cvcHidden = this.options.cvcHidden;\n protected readonly isMobile = inject(TUI_IS_MOBILE);\n protected readonly isWebkit = inject(TUI_IS_WEBKIT);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly maskCard = TUI_MASK_CARD;\n protected readonly maskExpire = TUI_MASK_EXPIRE;\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly textfield = inject(TUI_TEXTFIELD_OPTIONS);\n protected readonly texts = toSignal(inject(TUI_INPUT_CARD_GROUP_TEXTS));\n protected readonly open = tuiDropdownOpen();\n protected readonly $ = this.isWebkit\n ? this.focus$\n .pipe(\n switchMap(() => timer(100)),\n takeUntilDestroyed(),\n )\n .subscribe(() => (this.expire ? this.focusCVC() : this.focusExpire()))\n : EMPTY;\n\n protected readonly m = tuiAppearanceMode(this.mode);\n protected readonly appearance = tuiAppearance(\n inject(TUI_TEXTFIELD_OPTIONS).appearance,\n );\n\n protected readonly state: Signal<unknown> = tuiAppearanceState(\n // eslint-disable-next-line no-nested-ternary\n computed(() => (this.disabled() ? 'disabled' : this.hover() ? 'hover' : null)),\n );\n\n protected readonly focus = tuiAppearanceFocus(\n computed(() => this.open() || this.focusedIn()),\n );\n\n protected readonly labelRaised = computed(\n () => (this.focus() && !this.readOnly()) || !!this.value()?.card,\n );\n\n protected readonly hasCleaner = computed(\n () => !!this.value()?.card && this.interactive(),\n );\n\n /**\n * @deprecated use 'placeholder' instead\n */\n public readonly exampleText = input(this.options.exampleText);\n\n public readonly placeholder = input(this.options.exampleText);\n\n public readonly inputs = input(this.options.inputs);\n\n public readonly cardValidator = input<TuiBooleanHandler<string>>(\n this.options.cardValidator,\n );\n\n public readonly icon = input<PolymorpheusContent>('');\n\n public readonly id = input(tuiInjectId());\n\n public readonly codeLength = input<3 | 4>();\n\n public readonly binChange = output<string | null>();\n\n public get bin(): string | null {\n return this.card.length < 6 ? null : this.card.slice(0, 6);\n }\n\n public override writeValue(value: TuiCard | null): void {\n const {bin} = this;\n const {activeElement} = this.doc;\n\n super.writeValue(value);\n this.updateBin(bin);\n this.expirePrefilled = !!this.expire && this.cardPrefilled;\n\n // Programmatic setting of expire input value breaks autofill in Chrome\n const inputExpire = this.inputExpire();\n\n if (\n !inputExpire ||\n this.isMobile ||\n this.isWebkit ||\n this.isServer ||\n inputExpire.nativeElement.value === this.expire\n ) {\n return;\n }\n\n inputExpire.nativeElement.focus({preventScroll: true});\n inputExpire.nativeElement.select();\n this.doc.execCommand('insertText', false, this.expire);\n inputExpire.nativeElement.blur();\n (activeElement as HTMLElement | null)?.focus({preventScroll: true});\n }\n\n /** Public API for manual focus management */\n public focusCard(): void {\n this.inputCard()?.nativeElement.focus({preventScroll: true});\n }\n\n public focusExpire(): void {\n if (this.inputs().expire) {\n this.inputExpire()?.nativeElement.focus({preventScroll: true});\n } else {\n this.inputCVC()?.nativeElement.focus({preventScroll: true});\n }\n }\n\n public focusCVC(): void {\n this.inputCVC()?.nativeElement.focus({preventScroll: true});\n }\n\n public handleOption(option: Partial<TuiCard> | null): void {\n const {card = '', expire = '', cvc = ''} = option || {};\n const {bin} = this;\n const element =\n (!card && this.inputCard()?.nativeElement) ||\n (!expire && this.inputExpire()?.nativeElement) ||\n this.inputCVC()?.nativeElement;\n\n this.onChange({card, expire, cvc});\n this.updateBin(bin);\n this.open.set(false);\n this.expirePrefilled = !!expire;\n\n element?.focus();\n }\n\n public clear(): void {\n this.expirePrefilled = false;\n\n [this.inputCVC(), this.inputExpire(), this.inputCard()].forEach((e) => {\n e?.nativeElement.focus();\n e?.nativeElement.select();\n e?.nativeElement.ownerDocument.execCommand('delete');\n });\n\n this.onChange(null);\n }\n\n public onResize(): void {\n this.cdr.detectChanges();\n }\n\n protected get content(): PolymorpheusContent {\n const system = this.getPaymentSystem(this.card);\n\n return this.icon() || (system && this.paymentSystems[system]);\n }\n\n protected get card(): string {\n return this.value()?.card || '';\n }\n\n protected get expire(): string {\n return this.value()?.expire || '';\n }\n\n protected get cvc(): string {\n return this.value()?.cvc || '';\n }\n\n protected get cardCollapsed(): boolean {\n return (\n this.isFocusable(this.card) && !tuiIsFocused(this.inputCard()?.nativeElement)\n );\n }\n\n protected get tailLength(): number {\n return this.card.length % 4 > 0 ? 5 : 4;\n }\n\n protected get cardPrefilled(): boolean {\n return !!this.card.match(TUI_NON_DIGIT_REGEXP);\n }\n\n protected get cvcPrefilled(): boolean {\n return !this.inputs().cvc || !!this.cvc.match(TUI_NON_DIGIT_REGEXP);\n }\n\n protected get cardFocusable(): boolean {\n return !this.cardPrefilled;\n }\n\n protected get expireFocusable(): boolean {\n return this.isFocusable(this.card) && !this.expirePrefilled;\n }\n\n protected get cvcFocusable(): boolean {\n return this.isFocusable(this.card);\n }\n\n protected get masked(): string {\n return this.cardPrefilled ? `${this.card.slice(-4)}` : '';\n }\n\n protected onCardChange(card: string): void {\n const {value, bin} = this;\n const parsed = card.split(CHAR_NO_BREAK_SPACE).join('');\n\n if (value()?.card === parsed) {\n return;\n }\n\n this.updateProperty(parsed, 'card');\n this.updateBin(bin);\n\n if (this.cardValidator()(this.card) && !value()?.expire && this.inputExpire()) {\n this.focusExpire();\n // Safari autofill focus jerk workaround\n this.focus$.next();\n }\n }\n\n protected onExpireChange(expire: string): void {\n this.updateProperty(expire, 'expire');\n\n // MM/YY\n if (Number(this.inputExpire()?.nativeElement.selectionStart) === 5) {\n this.focusCVC();\n }\n }\n\n protected onCVCChange(cvc: string): void {\n this.updateProperty(cvc, 'cvc');\n }\n\n protected getStyle({offsetWidth}: HTMLSpanElement): string {\n return this.cardCollapsed\n ? `transform: translate3d(calc(${offsetWidth}px * var(--tui-inline)), 0, 0); clip-path: inset(0 0 0 calc(100% - ${offsetWidth}px));`\n : '';\n }\n\n protected onPointerDown(event: MouseEvent): void {\n if (tuiIsElement(event.target) && tuiIsInput(event.target)) {\n return;\n }\n\n event.preventDefault();\n this.focusInput();\n }\n\n protected toggle(): void {\n this.open.update((open) => !open);\n }\n\n @tuiPure\n private isFocusable(card: string): boolean {\n return this.cardValidator()(card) || this.cardPrefilled;\n }\n\n @tuiPure\n private getPaymentSystem(value: string): TuiPaymentSystem | null {\n return tuiGetPaymentSystem(value);\n }\n\n private updateBin(oldBin: string | null): void {\n const {bin} = this;\n\n if (bin !== oldBin && !this.cardPrefilled) {\n this.binChange.emit(bin);\n }\n }\n\n private updateProperty(value: string, propName: 'card' | 'cvc' | 'expire'): void {\n const {card = '', expire = '', cvc = ''} = this.value() || {};\n const newValue: TuiCard = {card, expire, cvc};\n\n newValue[propName] = value;\n\n this.onChange(newValue.expire || newValue.cvc || newValue.card ? newValue : null);\n }\n\n private focusInput(): void {\n const element =\n (this.cardFocusable && this.inputCard()?.nativeElement) ||\n (this.expireFocusable && this.inputExpire()?.nativeElement) ||\n this.inputCVC()?.nativeElement;\n\n element?.focus();\n }\n}\n","@let formattedCard = value()?.card | tuiFormatCard: cardPrefilled;\n\n<div class=\"t-wrapper\">\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCard\n autocomplete=\"cc-number\"\n automation-id=\"tui-input-card-group__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator())\"\n [attr.id]=\"`${id()}_card`\"\n [class.t-input_filled]=\"card.length\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cardPrefilled ? '' : placeholder() || exampleText()\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"cardFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"cardCollapsed\"\n (waResizeObserver)=\"onResize()\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style]=\"getStyle(ghost)\"\n [textContent]=\"formattedCard\"\n ></span>\n </span>\n </span>\n <div\n tuiTransitioned\n class=\"t-label\"\n [attr.data-label]=\"texts()?.cardNumberText\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n <ng-content />\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputExpire\n autocomplete=\"cc-exp\"\n automation-id=\"tui-input-card-group__expire\"\n inputmode=\"numeric\"\n maxlength=\"5\"\n name=\"ccexpiryyear\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"`${id()}_expire`\"\n [class.t-input_inert]=\"!expireFocusable\"\n [class.t-input_prefilled]=\"!inputs().expire\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"inputs().expire ? '00/00' : '••/••'\"\n [readOnly]=\"readOnly() || !inputs().expire\"\n [tabIndex]=\"expireFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.expiryText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.zoneless.prevent)=\"(0)\">\n <input\n #inputCVC\n autocomplete=\"cc-csc\"\n automation-id=\"tui-input-card-group__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"`${id()}_cvc`\"\n [class.t-input_cvc_hidden]=\"cvcHidden\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCVC()\"\n [ngModel]=\"cvc\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"cvcPrefilled ? '•••' : exampleTextCVC()\"\n [readOnly]=\"readOnly() || cvcPrefilled\"\n [tabIndex]=\"cvcFocusable || (isMobile && isWebkit) ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <div\n tuiTransitioned\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cvcText }}\n </div>\n </label>\n</div>\n<div class=\"t-icons\">\n @if (content) {\n <div class=\"t-icon-outlet\">\n <img\n *polymorpheusOutlet=\"content as src\"\n alt=\"\"\n automation-id=\"tui-input-card-group__icon\"\n class=\"t-card\"\n [src]=\"src | tuiIcon\"\n />\n </div>\n }\n @if (hasCleaner()) {\n <tui-icon\n automation-id=\"tui-input-card-group__cleaner\"\n tuiAppearance=\"icon\"\n class=\"t-icon\"\n [icon]=\"icons.close\"\n (click)=\"clear()\"\n />\n }\n @if (dropdown._content()) {\n <tui-icon\n automation-id=\"tui-input-card-group__dropdown\"\n tuiAppearance=\"icon\"\n tuiChevron\n class=\"t-icon\"\n (click)=\"toggle()\"\n />\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.TuiInputCardGroupDirective"],"mappings":"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"}
@@ -45,11 +45,11 @@ class TuiInputCard {
45
45
  [src]="image() | tuiIcon"
46
46
  />
47
47
  }
48
- `, isInline: true, styles: ["tui-textfield .t-payment-system:not(:first-child){display:none}tui-textfield .t-payment-system{inline-size:1.5rem}tui-textfield[data-size=l] .t-payment-system{inline-size:2rem}\n"], dependencies: [{ kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }, { kind: "pipe", type: TuiIconPipe, name: "tuiIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
48
+ `, isInline: true, styles: ["tui-textfield .t-payment-system:not(:first-child){display:none}tui-textfield .t-payment-system{inline-size:1.5rem}tui-textfield[data-size=l] .t-payment-system{inline-size:2rem}\n"], dependencies: [{ kind: "pipe", type: TuiIconPipe, name: "tuiIcon" }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCard, decorators: [{
51
51
  type: Component,
52
- args: [{ selector: 'input[tuiInputCard]', imports: [TuiTextfieldContent, TuiIconPipe], template: `
52
+ args: [{ selector: 'input[tuiInputCard]', imports: [TuiIconPipe, TuiTextfieldContent], template: `
53
53
  @if (image()) {
54
54
  <img
55
55
  *tuiTextfieldContent
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-components-input-card.mjs","sources":["../../../projects/addon-commerce/components/input-card/input-card.component.ts","../../../projects/addon-commerce/components/input-card/taiga-ui-addon-commerce-components-input-card.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n type OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {outputFromObservable, toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {DefaultValueAccessor, NgControl} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TUI_MASK_CARD} from '@taiga-ui/addon-commerce/constants';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport {tuiGetPaymentSystem} from '@taiga-ui/addon-commerce/utils';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {TuiIconPipe} from '@taiga-ui/core/components/icon';\nimport {TuiTextfieldContent, TuiWithTextfield} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\nimport {distinctUntilChanged, map, skip, startWith, switchMap, timer} from 'rxjs';\n\n@Component({\n selector: 'input[tuiInputCard]',\n imports: [TuiTextfieldContent, TuiIconPipe],\n template: `\n @if (image()) {\n <img\n *tuiTextfieldContent\n alt=\"\"\n class=\"t-payment-system\"\n [src]=\"image() | tuiIcon\"\n />\n }\n `,\n styleUrl: './input-card.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [MaskitoDirective, TuiWithTextfield],\n host: {\n inputmode: 'numeric',\n placeholder: '0000 0000 0000 0000',\n ngSkipHydration: 'true',\n autocomplete: 'cc-number',\n },\n})\nexport class TuiInputCard implements OnInit {\n private readonly icons = inject(TUI_PAYMENT_SYSTEM_ICONS);\n private readonly control = inject(NgControl);\n private readonly value = toSignal(\n timer(0).pipe(switchMap(() => tuiControlValue<string>(this.control))),\n {initialValue: ''},\n );\n\n private readonly accessor = inject(DefaultValueAccessor, {\n self: true,\n optional: true,\n });\n\n protected readonly mask = tuiMaskito(TUI_MASK_CARD);\n protected readonly image = computed(\n (s = tuiGetPaymentSystem(this.value())) => (s && this.icons[s]) || '',\n );\n\n public readonly binChange = outputFromObservable(\n toObservable(this.value).pipe(\n map((v) => (v.length < 6 ? null : v.replace(' ', '').slice(0, 6))),\n startWith(null),\n distinctUntilChanged(),\n skip(1),\n ),\n );\n\n public ngOnInit(): void {\n if (!this.accessor) {\n return;\n }\n\n const onChanges = this.accessor.onChange.bind(this.accessor);\n\n this.accessor.onChange = (value: string) =>\n onChanges(value.replaceAll(CHAR_NO_BREAK_SPACE, ''));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-components-input-card.mjs","sources":["../../../projects/addon-commerce/components/input-card/input-card.component.ts","../../../projects/addon-commerce/components/input-card/taiga-ui-addon-commerce-components-input-card.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n type OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {outputFromObservable, toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {DefaultValueAccessor, NgControl} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TUI_MASK_CARD} from '@taiga-ui/addon-commerce/constants';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport {tuiGetPaymentSystem} from '@taiga-ui/addon-commerce/utils';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {TuiIconPipe} from '@taiga-ui/core/components/icon';\nimport {TuiTextfieldContent, TuiWithTextfield} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\nimport {distinctUntilChanged, map, skip, startWith, switchMap, timer} from 'rxjs';\n\n@Component({\n selector: 'input[tuiInputCard]',\n imports: [TuiIconPipe, TuiTextfieldContent],\n template: `\n @if (image()) {\n <img\n *tuiTextfieldContent\n alt=\"\"\n class=\"t-payment-system\"\n [src]=\"image() | tuiIcon\"\n />\n }\n `,\n styleUrl: './input-card.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [MaskitoDirective, TuiWithTextfield],\n host: {\n inputmode: 'numeric',\n placeholder: '0000 0000 0000 0000',\n ngSkipHydration: 'true',\n autocomplete: 'cc-number',\n },\n})\nexport class TuiInputCard implements OnInit {\n private readonly icons = inject(TUI_PAYMENT_SYSTEM_ICONS);\n private readonly control = inject(NgControl);\n private readonly value = toSignal(\n timer(0).pipe(switchMap(() => tuiControlValue<string>(this.control))),\n {initialValue: ''},\n );\n\n private readonly accessor = inject(DefaultValueAccessor, {\n self: true,\n optional: true,\n });\n\n protected readonly mask = tuiMaskito(TUI_MASK_CARD);\n protected readonly image = computed(\n (s = tuiGetPaymentSystem(this.value())) => (s && this.icons[s]) || '',\n );\n\n public readonly binChange = outputFromObservable(\n toObservable(this.value).pipe(\n map((v) => (v.length < 6 ? null : v.replace(' ', '').slice(0, 6))),\n startWith(null),\n distinctUntilChanged(),\n skip(1),\n ),\n );\n\n public ngOnInit(): void {\n if (!this.accessor) {\n return;\n }\n\n const onChanges = this.accessor.onChange.bind(this.accessor);\n\n this.accessor.onChange = (value: string) =>\n onChanges(value.replaceAll(CHAR_NO_BREAK_SPACE, ''));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -19,7 +19,6 @@ class TuiInputCVC {
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCVC, decorators: [{
20
20
  type: Directive,
21
21
  args: [{
22
- standalone: true,
23
22
  selector: 'input[tuiInputCVC]',
24
23
  hostDirectives: [MaskitoDirective, TuiWithTextfield],
25
24
  host: {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-components-input-cvc.mjs","sources":["../../../projects/addon-commerce/components/input-cvc/input-cvc.directive.ts","../../../projects/addon-commerce/components/input-cvc/taiga-ui-addon-commerce-components-input-cvc.ts"],"sourcesContent":["import {computed, Directive, input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TUI_MASK_CVC} from '@taiga-ui/addon-commerce/constants';\nimport {TuiWithTextfield} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputCVC]',\n hostDirectives: [MaskitoDirective, TuiWithTextfield],\n host: {\n inputmode: 'numeric',\n autocomplete: 'cc-csc',\n '[placeholder]': '\"0\".repeat(length())',\n '[style.-webkit-text-security]': 'hidden() ? \"disc\" : null',\n '(copy.prevent)': '(0)',\n },\n})\nexport class TuiInputCVC {\n protected readonly mask = tuiMaskito(computed(() => TUI_MASK_CVC(this.length())));\n\n public readonly hidden = input(true);\n\n public readonly length = input<3 | 4>(3);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAkBa,WAAW,CAAA;AAZxB,IAAA,WAAA,GAAA;AAauB,QAAA,IAAA,CAAA,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEjE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;AAEpB,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAQ,CAAC,CAAC;AAC3C;+GANY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAZvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,cAAc,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACpD,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,YAAY,EAAE,QAAQ;AACtB,wBAAA,eAAe,EAAE,sBAAsB;AACvC,wBAAA,+BAA+B,EAAE,0BAA0B;AAC3D,wBAAA,gBAAgB,EAAE,KAAK;AAC1B,qBAAA;AACJ,iBAAA;;;ACjBD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-components-input-cvc.mjs","sources":["../../../projects/addon-commerce/components/input-cvc/input-cvc.directive.ts","../../../projects/addon-commerce/components/input-cvc/taiga-ui-addon-commerce-components-input-cvc.ts"],"sourcesContent":["import {computed, Directive, input} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TUI_MASK_CVC} from '@taiga-ui/addon-commerce/constants';\nimport {TuiWithTextfield} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n selector: 'input[tuiInputCVC]',\n hostDirectives: [MaskitoDirective, TuiWithTextfield],\n host: {\n inputmode: 'numeric',\n autocomplete: 'cc-csc',\n '[placeholder]': '\"0\".repeat(length())',\n '[style.-webkit-text-security]': 'hidden() ? \"disc\" : null',\n '(copy.prevent)': '(0)',\n },\n})\nexport class TuiInputCVC {\n protected readonly mask = tuiMaskito(computed(() => TUI_MASK_CVC(this.length())));\n\n public readonly hidden = input(true);\n\n public readonly length = input<3 | 4>(3);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAiBa,WAAW,CAAA;AAXxB,IAAA,WAAA,GAAA;AAYuB,QAAA,IAAA,CAAA,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEjE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;AAEpB,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAQ,CAAC,CAAC;AAC3C;+GANY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAXvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,cAAc,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACpD,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,YAAY,EAAE,QAAQ;AACtB,wBAAA,eAAe,EAAE,sBAAsB;AACvC,wBAAA,+BAA+B,EAAE,0BAA0B;AAC3D,wBAAA,gBAAgB,EAAE,KAAK;AAC1B,qBAAA;AACJ,iBAAA;;;AChBD;;AAEG;;;;"}
@@ -17,7 +17,6 @@ class TuiInputExpire {
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputExpire, decorators: [{
18
18
  type: Directive,
19
19
  args: [{
20
- standalone: true,
21
20
  selector: 'input[tuiInputExpire]',
22
21
  hostDirectives: [MaskitoDirective, TuiWithTextfield],
23
22
  host: {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-components-input-expire.mjs","sources":["../../../projects/addon-commerce/components/input-expire/input-expire.directive.ts","../../../projects/addon-commerce/components/input-expire/taiga-ui-addon-commerce-components-input-expire.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TUI_MASK_EXPIRE} from '@taiga-ui/addon-commerce/constants';\nimport {TuiWithTextfield} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputExpire]',\n hostDirectives: [MaskitoDirective, TuiWithTextfield],\n host: {\n inputmode: 'numeric',\n placeholder: '00/00',\n translate: 'no',\n maxlength: '5',\n name: 'ccexpiryyear',\n autocomplete: 'cc-exp',\n },\n})\nexport class TuiInputExpire {\n protected readonly mask = tuiMaskito(TUI_MASK_EXPIRE);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAmBa,cAAc,CAAA;AAb3B,IAAA,WAAA,GAAA;AAcuB,QAAA,IAAA,CAAA,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC;AACxD;+GAFY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,IAAA,EAAA,WAAA,EAAA,GAAA,EAAA,MAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,cAAc,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACpD,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,SAAS,EAAE,GAAG;AACd,wBAAA,IAAI,EAAE,cAAc;AACpB,wBAAA,YAAY,EAAE,QAAQ;AACzB,qBAAA;AACJ,iBAAA;;;AClBD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-components-input-expire.mjs","sources":["../../../projects/addon-commerce/components/input-expire/input-expire.directive.ts","../../../projects/addon-commerce/components/input-expire/taiga-ui-addon-commerce-components-input-expire.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TUI_MASK_EXPIRE} from '@taiga-ui/addon-commerce/constants';\nimport {TuiWithTextfield} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n selector: 'input[tuiInputExpire]',\n hostDirectives: [MaskitoDirective, TuiWithTextfield],\n host: {\n inputmode: 'numeric',\n placeholder: '00/00',\n translate: 'no',\n maxlength: '5',\n name: 'ccexpiryyear',\n autocomplete: 'cc-exp',\n },\n})\nexport class TuiInputExpire {\n protected readonly mask = tuiMaskito(TUI_MASK_EXPIRE);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAkBa,cAAc,CAAA;AAZ3B,IAAA,WAAA,GAAA;AAauB,QAAA,IAAA,CAAA,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC;AACxD;+GAFY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,IAAA,EAAA,WAAA,EAAA,GAAA,EAAA,MAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,cAAc,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACpD,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,SAAS,EAAE,GAAG;AACd,wBAAA,IAAI,EAAE,cAAc;AACpB,wBAAA,YAAY,EAAE,QAAQ;AACzB,qBAAA;AACJ,iBAAA;;;ACjBD;;AAEG;;;;"}
@@ -19,13 +19,13 @@ class TuiThumbnailCard {
19
19
  this.iconEnd = input('');
20
20
  }
21
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiThumbnailCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiThumbnailCard, isStandalone: true, selector: "tui-thumbnail-card", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, paymentSystem: { classPropertyName: "paymentSystem", publicName: "paymentSystem", isSignal: true, isRequired: false, transformFunction: null }, iconStart: { classPropertyName: "iconStart", publicName: "iconStart", isSignal: true, isRequired: false, transformFunction: null }, iconEnd: { classPropertyName: "iconEnd", publicName: "iconEnd", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()" } }, ngImport: i0, template: "<div class=\"t-left t-icon\">\n <ng-content select=\"img\">\n @if (iconStart()) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart()\"\n />\n }\n </ng-content>\n</div>\n\n@if (iconEnd()) {\n <tui-icon\n class=\"t-right t-icon\"\n [icon]=\"iconEnd()\"\n />\n}\n\n<div class=\"t-content\">\n <ng-content />\n</div>\n\n@let system = paymentSystem();\n\n@if (system) {\n <tui-icon\n class=\"t-logo\"\n [icon]=\"options.icons[system]\"\n />\n}\n", styles: [":host{position:relative;display:inline-block;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden;box-shadow:inset 0 0 0 1px var(--tui-background-neutral-1);--t-logo-height: .8125rem}:host:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";border-radius:inherit}:host:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";backface-visibility:hidden;transform:rotateY(180deg) translateZ(1px);color:#b0b0b0;border-radius:inherit;background:linear-gradient(to bottom,currentColor 0 20%,#959595 20% 40%,currentColor 40%)}:host[data-size=xs],:host[data-size=s]{font-size:0;border-radius:.25rem}:host[data-size=xs]{inline-size:2rem;block-size:1.375rem}:host[data-size=s]{inline-size:2.5rem;block-size:1.625rem}:host[data-size=m]{inline-size:3rem;block-size:2rem;border-radius:.3125rem;font:normal .5625rem / var(--t-logo-height) var(--tui-font-text)}:host[data-size=l]{inline-size:3.375rem;block-size:2.25rem;border-radius:.375rem;font:normal .6875rem / var(--t-logo-height) var(--tui-font-text)}.t-left{position:absolute;top:0;left:0;display:flex;transform-origin:top left}:host[data-size=xs] .t-left,:host[data-size=s] .t-left{transform:translate(.125rem,.125rem) scale(.625)}:host[data-size=m] .t-left{transform:translate(.1875rem,.1875rem) scale(.75)}:host[data-size=l] .t-left{transform:translate(.1875rem,.1875rem)}.t-right{position:absolute;top:.1875rem;right:.1875rem}:host[data-size=xs] .t-right,:host[data-size=s] .t-right{display:none}:host[data-size=m] .t-right{font-size:.875rem}:host[data-size=m] .t-right:before{transform:scale(.5)}:host[data-size=l] .t-right:before{transform:scale(.625)}.t-right:after{--tui-icon-size: 100%;position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;display:block;transform:none;border-radius:100%;background:currentColor;opacity:.35}.t-right:before{color:#fff}.t-logo{position:absolute;right:.25rem;bottom:0;block-size:var(--t-logo-height);transform-origin:right}:host[data-size=xs] .t-logo{right:.125rem}:host[data-size=m] .t-logo,:host[data-size=l] .t-logo{bottom:.0625rem}.t-logo:before{block-size:100%;background-position:right;background-size:contain;-webkit-mask-position:right;mask-position:right;-webkit-mask-size:contain;mask-size:contain}.t-content{position:absolute}:host[data-size=m] .t-content{left:.1875rem;bottom:.0625rem}:host[data-size=l] .t-content{left:.25rem;bottom:.0625rem}.t-icon{inline-size:1em;block-size:1em;font-size:1rem}\n"], dependencies: [{ kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiThumbnailCard, isStandalone: true, selector: "tui-thumbnail-card", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, paymentSystem: { classPropertyName: "paymentSystem", publicName: "paymentSystem", isSignal: true, isRequired: false, transformFunction: null }, iconStart: { classPropertyName: "iconStart", publicName: "iconStart", isSignal: true, isRequired: false, transformFunction: null }, iconEnd: { classPropertyName: "iconEnd", publicName: "iconEnd", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()" } }, ngImport: i0, template: "<div class=\"t-left t-icon\">\n <ng-content select=\"img\">\n @if (iconStart()) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart()\"\n />\n }\n </ng-content>\n</div>\n\n@if (iconEnd()) {\n <tui-icon\n class=\"t-right t-icon\"\n [icon]=\"iconEnd()\"\n />\n}\n\n<div class=\"t-content\">\n <ng-content />\n</div>\n\n@let system = paymentSystem();\n\n@if (system) {\n <tui-icon\n class=\"t-logo\"\n [icon]=\"options.icons[system]\"\n />\n}\n", styles: [":host{position:relative;display:inline-block;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden;box-shadow:inset 0 0 0 1px var(--tui-background-neutral-1);--t-logo-height: .8125rem}:host:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";border-radius:inherit}:host:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";backface-visibility:hidden;transform:rotateY(180deg) translateZ(1px);color:#b0b0b0;border-radius:inherit;background:linear-gradient(to bottom,currentColor 0 20%,#959595 20% 40%,currentColor 40%)}:host[data-size=xs],:host[data-size=s]{font-size:0;border-radius:.25rem}:host[data-size=xs]{inline-size:2rem;block-size:1.375rem}:host[data-size=s]{inline-size:2.5rem;block-size:1.625rem}:host[data-size=m]{inline-size:3rem;block-size:2rem;border-radius:.3125rem;font:normal .5625rem / var(--t-logo-height) var(--tui-font-text)}:host[data-size=l]{inline-size:3.375rem;block-size:2.25rem;border-radius:.375rem;font:normal .6875rem / var(--t-logo-height) var(--tui-font-text)}.t-left{position:absolute;top:0;left:0;display:flex;transform-origin:top left}:host[data-size=xs] .t-left,:host[data-size=s] .t-left{transform:translate(.125rem,.125rem) scale(.625)}:host[data-size=m] .t-left{transform:translate(.1875rem,.1875rem) scale(.75)}:host[data-size=l] .t-left{transform:translate(.1875rem,.1875rem)}.t-right{position:absolute;top:.1875rem;right:.1875rem}:host[data-size=xs] .t-right,:host[data-size=s] .t-right{display:none}:host[data-size=m] .t-right{font-size:.875rem}:host[data-size=m] .t-right:before{transform:scale(.5)}:host[data-size=l] .t-right:before{transform:scale(.625)}.t-right:after{--tui-icon-size: 100%;position:absolute;inset:0;content:\"\";z-index:-1;display:block;transform:none;border-radius:100%;background:currentColor;opacity:.35}.t-right:before{color:#fff}.t-logo{position:absolute;right:.25rem;bottom:0;block-size:var(--t-logo-height);transform-origin:right}:host[data-size=xs] .t-logo{right:.125rem}:host[data-size=m] .t-logo,:host[data-size=l] .t-logo{bottom:.0625rem}.t-logo:before{block-size:100%;background-position:right;background-size:contain;-webkit-mask-position:right;mask-position:right;-webkit-mask-size:contain;mask-size:contain}.t-content{position:absolute}:host[data-size=m] .t-content{left:.1875rem;bottom:.0625rem}:host[data-size=l] .t-content{left:.25rem;bottom:.0625rem}.t-icon{inline-size:1em;block-size:1em;font-size:1rem}\n"], dependencies: [{ kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
23
  }
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiThumbnailCard, decorators: [{
25
25
  type: Component,
26
26
  args: [{ selector: 'tui-thumbnail-card', imports: [TuiIcon], changeDetection: ChangeDetectionStrategy.OnPush, host: {
27
27
  '[attr.data-size]': 'size()',
28
- }, template: "<div class=\"t-left t-icon\">\n <ng-content select=\"img\">\n @if (iconStart()) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart()\"\n />\n }\n </ng-content>\n</div>\n\n@if (iconEnd()) {\n <tui-icon\n class=\"t-right t-icon\"\n [icon]=\"iconEnd()\"\n />\n}\n\n<div class=\"t-content\">\n <ng-content />\n</div>\n\n@let system = paymentSystem();\n\n@if (system) {\n <tui-icon\n class=\"t-logo\"\n [icon]=\"options.icons[system]\"\n />\n}\n", styles: [":host{position:relative;display:inline-block;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden;box-shadow:inset 0 0 0 1px var(--tui-background-neutral-1);--t-logo-height: .8125rem}:host:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";border-radius:inherit}:host:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";backface-visibility:hidden;transform:rotateY(180deg) translateZ(1px);color:#b0b0b0;border-radius:inherit;background:linear-gradient(to bottom,currentColor 0 20%,#959595 20% 40%,currentColor 40%)}:host[data-size=xs],:host[data-size=s]{font-size:0;border-radius:.25rem}:host[data-size=xs]{inline-size:2rem;block-size:1.375rem}:host[data-size=s]{inline-size:2.5rem;block-size:1.625rem}:host[data-size=m]{inline-size:3rem;block-size:2rem;border-radius:.3125rem;font:normal .5625rem / var(--t-logo-height) var(--tui-font-text)}:host[data-size=l]{inline-size:3.375rem;block-size:2.25rem;border-radius:.375rem;font:normal .6875rem / var(--t-logo-height) var(--tui-font-text)}.t-left{position:absolute;top:0;left:0;display:flex;transform-origin:top left}:host[data-size=xs] .t-left,:host[data-size=s] .t-left{transform:translate(.125rem,.125rem) scale(.625)}:host[data-size=m] .t-left{transform:translate(.1875rem,.1875rem) scale(.75)}:host[data-size=l] .t-left{transform:translate(.1875rem,.1875rem)}.t-right{position:absolute;top:.1875rem;right:.1875rem}:host[data-size=xs] .t-right,:host[data-size=s] .t-right{display:none}:host[data-size=m] .t-right{font-size:.875rem}:host[data-size=m] .t-right:before{transform:scale(.5)}:host[data-size=l] .t-right:before{transform:scale(.625)}.t-right:after{--tui-icon-size: 100%;position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;display:block;transform:none;border-radius:100%;background:currentColor;opacity:.35}.t-right:before{color:#fff}.t-logo{position:absolute;right:.25rem;bottom:0;block-size:var(--t-logo-height);transform-origin:right}:host[data-size=xs] .t-logo{right:.125rem}:host[data-size=m] .t-logo,:host[data-size=l] .t-logo{bottom:.0625rem}.t-logo:before{block-size:100%;background-position:right;background-size:contain;-webkit-mask-position:right;mask-position:right;-webkit-mask-size:contain;mask-size:contain}.t-content{position:absolute}:host[data-size=m] .t-content{left:.1875rem;bottom:.0625rem}:host[data-size=l] .t-content{left:.25rem;bottom:.0625rem}.t-icon{inline-size:1em;block-size:1em;font-size:1rem}\n"] }]
28
+ }, template: "<div class=\"t-left t-icon\">\n <ng-content select=\"img\">\n @if (iconStart()) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart()\"\n />\n }\n </ng-content>\n</div>\n\n@if (iconEnd()) {\n <tui-icon\n class=\"t-right t-icon\"\n [icon]=\"iconEnd()\"\n />\n}\n\n<div class=\"t-content\">\n <ng-content />\n</div>\n\n@let system = paymentSystem();\n\n@if (system) {\n <tui-icon\n class=\"t-logo\"\n [icon]=\"options.icons[system]\"\n />\n}\n", styles: [":host{position:relative;display:inline-block;flex-shrink:0;background:#000;color:#fff;transform-style:preserve-3d;overflow:hidden;box-shadow:inset 0 0 0 1px var(--tui-background-neutral-1);--t-logo-height: .8125rem}:host:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";border-radius:inherit}:host:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";backface-visibility:hidden;transform:rotateY(180deg) translateZ(1px);color:#b0b0b0;border-radius:inherit;background:linear-gradient(to bottom,currentColor 0 20%,#959595 20% 40%,currentColor 40%)}:host[data-size=xs],:host[data-size=s]{font-size:0;border-radius:.25rem}:host[data-size=xs]{inline-size:2rem;block-size:1.375rem}:host[data-size=s]{inline-size:2.5rem;block-size:1.625rem}:host[data-size=m]{inline-size:3rem;block-size:2rem;border-radius:.3125rem;font:normal .5625rem / var(--t-logo-height) var(--tui-font-text)}:host[data-size=l]{inline-size:3.375rem;block-size:2.25rem;border-radius:.375rem;font:normal .6875rem / var(--t-logo-height) var(--tui-font-text)}.t-left{position:absolute;top:0;left:0;display:flex;transform-origin:top left}:host[data-size=xs] .t-left,:host[data-size=s] .t-left{transform:translate(.125rem,.125rem) scale(.625)}:host[data-size=m] .t-left{transform:translate(.1875rem,.1875rem) scale(.75)}:host[data-size=l] .t-left{transform:translate(.1875rem,.1875rem)}.t-right{position:absolute;top:.1875rem;right:.1875rem}:host[data-size=xs] .t-right,:host[data-size=s] .t-right{display:none}:host[data-size=m] .t-right{font-size:.875rem}:host[data-size=m] .t-right:before{transform:scale(.5)}:host[data-size=l] .t-right:before{transform:scale(.625)}.t-right:after{--tui-icon-size: 100%;position:absolute;inset:0;content:\"\";z-index:-1;display:block;transform:none;border-radius:100%;background:currentColor;opacity:.35}.t-right:before{color:#fff}.t-logo{position:absolute;right:.25rem;bottom:0;block-size:var(--t-logo-height);transform-origin:right}:host[data-size=xs] .t-logo{right:.125rem}:host[data-size=m] .t-logo,:host[data-size=l] .t-logo{bottom:.0625rem}.t-logo:before{block-size:100%;background-position:right;background-size:contain;-webkit-mask-position:right;mask-position:right;-webkit-mask-size:contain;mask-size:contain}.t-content{position:absolute}:host[data-size=m] .t-content{left:.1875rem;bottom:.0625rem}:host[data-size=l] .t-content{left:.25rem;bottom:.0625rem}.t-icon{inline-size:1em;block-size:1em;font-size:1rem}\n"] }]
29
29
  }] });
30
30
 
31
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-components-thumbnail-card.mjs","sources":["../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.options.ts","../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.component.ts","../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.template.html","../../../projects/addon-commerce/components/thumbnail-card/taiga-ui-addon-commerce-components-thumbnail-card.ts"],"sourcesContent":["import {inject, InjectionToken} from '@angular/core';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {type TuiSizeL, type TuiSizeXS} from '@taiga-ui/core/types';\n\nexport interface TuiThumbnailCardOptions {\n readonly size: TuiSizeL | TuiSizeXS;\n readonly icons: Record<TuiPaymentSystem, string>;\n}\n\nexport const TUI_THUMBNAIL_CARD_OPTIONS = new InjectionToken<TuiThumbnailCardOptions>(\n ngDevMode ? 'TUI_THUMBNAIL_CARD_OPTIONS' : '',\n {\n factory: () => ({\n icons: inject(TUI_PAYMENT_SYSTEM_ICONS),\n size: 'm',\n }),\n },\n);\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {type TuiSizeL, type TuiSizeXS} from '@taiga-ui/core/types';\n\nimport {TUI_THUMBNAIL_CARD_OPTIONS} from './thumbnail-card.options';\n\n@Component({\n selector: 'tui-thumbnail-card',\n imports: [TuiIcon],\n templateUrl: './thumbnail-card.template.html',\n styleUrl: './thumbnail-card.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class TuiThumbnailCard {\n protected readonly options = inject(TUI_THUMBNAIL_CARD_OPTIONS);\n\n public readonly size = input<TuiSizeL | TuiSizeXS>(this.options.size);\n\n public readonly paymentSystem = input<TuiPaymentSystem | null>(null);\n\n public readonly iconStart = input<string>('');\n\n public readonly iconEnd = input<string>('');\n}\n","<div class=\"t-left t-icon\">\n <ng-content select=\"img\">\n @if (iconStart()) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart()\"\n />\n }\n </ng-content>\n</div>\n\n@if (iconEnd()) {\n <tui-icon\n class=\"t-right t-icon\"\n [icon]=\"iconEnd()\"\n />\n}\n\n<div class=\"t-content\">\n <ng-content />\n</div>\n\n@let system = paymentSystem();\n\n@if (system) {\n <tui-icon\n class=\"t-logo\"\n [icon]=\"options.icons[system]\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAUa,MAAA,0BAA0B,GAAG,IAAI,cAAc,CACxD,SAAS,GAAG,4BAA4B,GAAG,EAAE,EAC7C;AACI,IAAA,OAAO,EAAE,OAAO;AACZ,QAAA,KAAK,EAAE,MAAM,CAAC,wBAAwB,CAAC;AACvC,QAAA,IAAI,EAAE,GAAG;KACZ,CAAC;AACL,CAAA;;MCAQ,gBAAgB,CAAA;AAV7B,IAAA,WAAA,GAAA;AAWuB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC;QAE/C,IAAI,CAAA,IAAA,GAAG,KAAK,CAAuB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAErD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA0B,IAAI,CAAC;AAEpD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC;AAE7B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,CAAC;AAC9C;+GAVY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB7B,gjBA8BA,EAAA,MAAA,EAAA,CAAA,y8EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBc,OAAO,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQR,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;+BACI,oBAAoB,EAAA,OAAA,EACrB,CAAC,OAAO,CAAC,mBAGD,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,QAAQ;AAC/B,qBAAA,EAAA,QAAA,EAAA,gjBAAA,EAAA,MAAA,EAAA,CAAA,y8EAAA,CAAA,EAAA;;;AEfL;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-components-thumbnail-card.mjs","sources":["../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.options.ts","../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.component.ts","../../../projects/addon-commerce/components/thumbnail-card/thumbnail-card.template.html","../../../projects/addon-commerce/components/thumbnail-card/taiga-ui-addon-commerce-components-thumbnail-card.ts"],"sourcesContent":["import {inject, InjectionToken} from '@angular/core';\nimport {TUI_PAYMENT_SYSTEM_ICONS} from '@taiga-ui/addon-commerce/tokens';\nimport {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {type TuiSizeL, type TuiSizeXS} from '@taiga-ui/core/types';\n\nexport interface TuiThumbnailCardOptions {\n readonly size: TuiSizeL | TuiSizeXS;\n readonly icons: Record<TuiPaymentSystem, string>;\n}\n\nexport const TUI_THUMBNAIL_CARD_OPTIONS = new InjectionToken<TuiThumbnailCardOptions>(\n ngDevMode ? 'TUI_THUMBNAIL_CARD_OPTIONS' : '',\n {\n factory: () => ({\n icons: inject(TUI_PAYMENT_SYSTEM_ICONS),\n size: 'm',\n }),\n },\n);\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {type TuiSizeL, type TuiSizeXS} from '@taiga-ui/core/types';\n\nimport {TUI_THUMBNAIL_CARD_OPTIONS} from './thumbnail-card.options';\n\n@Component({\n selector: 'tui-thumbnail-card',\n imports: [TuiIcon],\n templateUrl: './thumbnail-card.template.html',\n styleUrl: './thumbnail-card.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class TuiThumbnailCard {\n protected readonly options = inject(TUI_THUMBNAIL_CARD_OPTIONS);\n\n public readonly size = input<TuiSizeL | TuiSizeXS>(this.options.size);\n\n public readonly paymentSystem = input<TuiPaymentSystem | null>(null);\n\n public readonly iconStart = input<string>('');\n\n public readonly iconEnd = input<string>('');\n}\n","<div class=\"t-left t-icon\">\n <ng-content select=\"img\">\n @if (iconStart()) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"iconStart()\"\n />\n }\n </ng-content>\n</div>\n\n@if (iconEnd()) {\n <tui-icon\n class=\"t-right t-icon\"\n [icon]=\"iconEnd()\"\n />\n}\n\n<div class=\"t-content\">\n <ng-content />\n</div>\n\n@let system = paymentSystem();\n\n@if (system) {\n <tui-icon\n class=\"t-logo\"\n [icon]=\"options.icons[system]\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAUa,MAAA,0BAA0B,GAAG,IAAI,cAAc,CACxD,SAAS,GAAG,4BAA4B,GAAG,EAAE,EAC7C;AACI,IAAA,OAAO,EAAE,OAAO;AACZ,QAAA,KAAK,EAAE,MAAM,CAAC,wBAAwB,CAAC;AACvC,QAAA,IAAI,EAAE,GAAG;KACZ,CAAC;AACL,CAAA;;MCAQ,gBAAgB,CAAA;AAV7B,IAAA,WAAA,GAAA;AAWuB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC;QAE/C,IAAI,CAAA,IAAA,GAAG,KAAK,CAAuB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAErD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA0B,IAAI,CAAC;AAEpD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC;AAE7B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,CAAC;AAC9C;+GAVY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB7B,gjBA8BA,EAAA,MAAA,EAAA,CAAA,m7EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBc,OAAO,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQR,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;+BACI,oBAAoB,EAAA,OAAA,EACrB,CAAC,OAAO,CAAC,mBAGD,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,QAAQ;AAC/B,qBAAA,EAAA,QAAA,EAAA,gjBAAA,EAAA,MAAA,EAAA,CAAA,m7EAAA,CAAA,EAAA;;;AEfL;;AAEG;;;;"}
@@ -1,6 +1,7 @@
1
+ import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
1
2
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Pipe } from '@angular/core';
3
- import { tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
3
+ import { inject, Pipe } from '@angular/core';
4
+ import { toObservable } from '@angular/core/rxjs-interop';
4
5
  import { tuiFormatCurrency } from '@taiga-ui/addon-commerce/utils';
5
6
  import { CHAR_MINUS, CHAR_PLUS, CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
6
7
  import { TUI_NUMBER_FORMAT } from '@taiga-ui/core/tokens';
@@ -12,12 +13,7 @@ const TUI_AMOUNT_DEFAULT_OPTIONS = {
12
13
  currencyAlign: 'left',
13
14
  sign: 'negative-only',
14
15
  };
15
- const TUI_AMOUNT_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_AMOUNT_OPTIONS' : '', {
16
- factory: () => TUI_AMOUNT_DEFAULT_OPTIONS,
17
- });
18
- function tuiAmountOptionsProvider(options) {
19
- return tuiProvideOptions(TUI_AMOUNT_OPTIONS, options, TUI_AMOUNT_DEFAULT_OPTIONS);
20
- }
16
+ const [TUI_AMOUNT_OPTIONS, tuiAmountOptionsProvider] = tuiCreateOptions(TUI_AMOUNT_DEFAULT_OPTIONS);
21
17
 
22
18
  function tuiFormatSignSymbol(value, sign) {
23
19
  if (sign === 'never' || !value || (sign === 'negative-only' && value > 0)) {
@@ -33,7 +29,7 @@ const DEFAULT_PRECISION = 2;
33
29
  class TuiAmountPipe {
34
30
  constructor() {
35
31
  this.options = inject(TUI_AMOUNT_OPTIONS);
36
- this.format = inject(TUI_NUMBER_FORMAT);
32
+ this.format = toObservable(inject(TUI_NUMBER_FORMAT));
37
33
  }
38
34
  transform(value, currency = this.options.currency, currencyAlign = this.options.currencyAlign) {
39
35
  return this.format.pipe(map((format) => {
@@ -61,7 +57,7 @@ class TuiAmountPipe {
61
57
  }
62
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiAmountPipe, decorators: [{
63
59
  type: Pipe,
64
- args: [{ standalone: true, name: 'tuiAmount' }]
60
+ args: [{ name: 'tuiAmount' }]
65
61
  }] });
66
62
 
67
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-pipes-amount.mjs","sources":["../../../projects/addon-commerce/pipes/amount/amount.options.ts","../../../projects/addon-commerce/pipes/amount/amount.utils.ts","../../../projects/addon-commerce/pipes/amount/amount.pipe.ts","../../../projects/addon-commerce/pipes/amount/taiga-ui-addon-commerce-pipes-amount.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiHorizontalDirection} from '@taiga-ui/core/types';\n\nimport {type TuiAmountSign} from './amount.types';\n\nexport interface TuiAmountOptions {\n readonly currency: TuiCurrencyVariants;\n readonly currencyAlign: TuiHorizontalDirection;\n readonly sign: TuiAmountSign;\n}\n\nexport const TUI_AMOUNT_DEFAULT_OPTIONS: TuiAmountOptions = {\n currency: null,\n currencyAlign: 'left',\n sign: 'negative-only',\n};\n\nexport const TUI_AMOUNT_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_AMOUNT_OPTIONS' : '',\n {\n factory: () => TUI_AMOUNT_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiAmountOptionsProvider(options: Partial<TuiAmountOptions>): Provider {\n return tuiProvideOptions(TUI_AMOUNT_OPTIONS, options, TUI_AMOUNT_DEFAULT_OPTIONS);\n}\n","import {CHAR_MINUS, CHAR_PLUS} from '@taiga-ui/cdk/constants';\n\nimport {type TuiAmountSign, type TuiAmountSignSymbol} from './amount.types';\n\nexport function tuiFormatSignSymbol(\n value: number,\n sign: TuiAmountSign,\n): TuiAmountSignSymbol {\n if (sign === 'never' || !value || (sign === 'negative-only' && value > 0)) {\n return '';\n }\n\n if (sign === 'force-negative' || (value < 0 && sign !== 'force-positive')) {\n return CHAR_MINUS;\n }\n\n return CHAR_PLUS;\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {tuiFormatCurrency} from '@taiga-ui/addon-commerce/utils';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {type TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {tuiFormatNumber} from '@taiga-ui/core/utils/format';\nimport {map, type Observable} from 'rxjs';\n\nimport {TUI_AMOUNT_OPTIONS} from './amount.options';\nimport {tuiFormatSignSymbol} from './amount.utils';\n\nconst DEFAULT_PRECISION = 2;\n\n@Pipe({standalone: true, name: 'tuiAmount'})\nexport class TuiAmountPipe implements PipeTransform {\n private readonly options = inject(TUI_AMOUNT_OPTIONS);\n private readonly format = inject(TUI_NUMBER_FORMAT);\n\n public transform(\n value: number,\n currency: TuiCurrencyVariants = this.options.currency,\n currencyAlign: TuiHorizontalDirection = this.options.currencyAlign,\n ): Observable<string> {\n return this.format.pipe(\n map((format) => {\n const currencySymbol = tuiFormatCurrency(currency);\n const formatted = tuiFormatNumber(Math.abs(value), {\n ...format,\n precision: Number.isNaN(format.precision)\n ? DEFAULT_PRECISION\n : format.precision,\n });\n const sign =\n formatted === '0'\n ? ''\n : tuiFormatSignSymbol(value, this.options.sign);\n const space =\n currencySymbol &&\n (currencySymbol?.length > 1 || currencyAlign === 'right')\n ? CHAR_NO_BREAK_SPACE\n : '';\n\n return currencyAlign === 'right'\n ? `${sign}${formatted}${space}${currencySymbol}`\n : `${sign}${currencySymbol}${space}${formatted}`;\n }),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAaa,MAAA,0BAA0B,GAAqB;AACxD,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,IAAI,EAAE,eAAe;;AAGZ,MAAA,kBAAkB,GAAG,IAAI,cAAc,CAChD,SAAS,GAAG,oBAAoB,GAAG,EAAE,EACrC;AACI,IAAA,OAAO,EAAE,MAAM,0BAA0B;AAC5C,CAAA;AAGC,SAAU,wBAAwB,CAAC,OAAkC,EAAA;IACvE,OAAO,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,EAAE,0BAA0B,CAAC;AACrF;;ACxBgB,SAAA,mBAAmB,CAC/B,KAAa,EACb,IAAmB,EAAA;AAEnB,IAAA,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,KAAK,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACvE,QAAA,OAAO,EAAE;;AAGb,IAAA,IAAI,IAAI,KAAK,gBAAgB,KAAK,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,gBAAgB,CAAC,EAAE;AACvE,QAAA,OAAO,UAAU;;AAGrB,IAAA,OAAO,SAAS;AACpB;;ACLA,MAAM,iBAAiB,GAAG,CAAC;MAGd,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAgCtD;AA9BU,IAAA,SAAS,CACZ,KAAa,EACb,QAAA,GAAgC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrD,aAAwC,GAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAA;QAElE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACnB,GAAG,CAAC,CAAC,MAAM,KAAI;AACX,YAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC;YAClD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC/C,gBAAA,GAAG,MAAM;gBACT,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;AACpC,sBAAE;sBACA,MAAM,CAAC,SAAS;AACzB,aAAA,CAAC;AACF,YAAA,MAAM,IAAI,GACN,SAAS,KAAK;AACV,kBAAE;kBACA,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACvD,MAAM,KAAK,GACP,cAAc;iBACb,cAAc,EAAE,MAAM,GAAG,CAAC,IAAI,aAAa,KAAK,OAAO;AACpD,kBAAE;kBACA,EAAE;YAEZ,OAAO,aAAa,KAAK;kBACnB,GAAG,IAAI,CAAA,EAAG,SAAS,CAAG,EAAA,KAAK,CAAG,EAAA,cAAc,CAAE;kBAC9C,CAAG,EAAA,IAAI,CAAG,EAAA,cAAc,GAAG,KAAK,CAAA,EAAG,SAAS,CAAA,CAAE;SACvD,CAAC,CACL;;+GAhCI,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAC;;;ACd3C;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-pipes-amount.mjs","sources":["../../../projects/addon-commerce/pipes/amount/amount.options.ts","../../../projects/addon-commerce/pipes/amount/amount.utils.ts","../../../projects/addon-commerce/pipes/amount/amount.pipe.ts","../../../projects/addon-commerce/pipes/amount/taiga-ui-addon-commerce-pipes-amount.ts"],"sourcesContent":["import {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiHorizontalDirection} from '@taiga-ui/core/types';\n\nimport {type TuiAmountSign} from './amount.types';\n\nexport interface TuiAmountOptions {\n readonly currency: TuiCurrencyVariants;\n readonly currencyAlign: TuiHorizontalDirection;\n readonly sign: TuiAmountSign;\n}\n\nexport const TUI_AMOUNT_DEFAULT_OPTIONS: TuiAmountOptions = {\n currency: null,\n currencyAlign: 'left',\n sign: 'negative-only',\n};\n\nexport const [TUI_AMOUNT_OPTIONS, tuiAmountOptionsProvider] = tuiCreateOptions(\n TUI_AMOUNT_DEFAULT_OPTIONS,\n);\n","import {CHAR_MINUS, CHAR_PLUS} from '@taiga-ui/cdk/constants';\n\nimport {type TuiAmountSign, type TuiAmountSignSymbol} from './amount.types';\n\nexport function tuiFormatSignSymbol(\n value: number,\n sign: TuiAmountSign,\n): TuiAmountSignSymbol {\n if (sign === 'never' || !value || (sign === 'negative-only' && value > 0)) {\n return '';\n }\n\n if (sign === 'force-negative' || (value < 0 && sign !== 'force-positive')) {\n return CHAR_MINUS;\n }\n\n return CHAR_PLUS;\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {tuiFormatCurrency} from '@taiga-ui/addon-commerce/utils';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {type TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {tuiFormatNumber} from '@taiga-ui/core/utils/format';\nimport {map, type Observable} from 'rxjs';\n\nimport {TUI_AMOUNT_OPTIONS} from './amount.options';\nimport {tuiFormatSignSymbol} from './amount.utils';\n\nconst DEFAULT_PRECISION = 2;\n\n@Pipe({name: 'tuiAmount'})\nexport class TuiAmountPipe implements PipeTransform {\n private readonly options = inject(TUI_AMOUNT_OPTIONS);\n private readonly format = toObservable(inject(TUI_NUMBER_FORMAT));\n\n public transform(\n value: number,\n currency: TuiCurrencyVariants = this.options.currency,\n currencyAlign: TuiHorizontalDirection = this.options.currencyAlign,\n ): Observable<string> {\n return this.format.pipe(\n map((format) => {\n const currencySymbol = tuiFormatCurrency(currency);\n const formatted = tuiFormatNumber(Math.abs(value), {\n ...format,\n precision: Number.isNaN(format.precision)\n ? DEFAULT_PRECISION\n : format.precision,\n });\n const sign =\n formatted === '0'\n ? ''\n : tuiFormatSignSymbol(value, this.options.sign);\n const space =\n currencySymbol &&\n (currencySymbol?.length > 1 || currencyAlign === 'right')\n ? CHAR_NO_BREAK_SPACE\n : '';\n\n return currencyAlign === 'right'\n ? `${sign}${formatted}${space}${currencySymbol}`\n : `${sign}${currencySymbol}${space}${formatted}`;\n }),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAYa,MAAA,0BAA0B,GAAqB;AACxD,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,IAAI,EAAE,eAAe;;AAGlB,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,GAAG,gBAAgB,CAC1E,0BAA0B;;ACfd,SAAA,mBAAmB,CAC/B,KAAa,EACb,IAAmB,EAAA;AAEnB,IAAA,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,KAAK,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACvE,QAAA,OAAO,EAAE;;AAGb,IAAA,IAAI,IAAI,KAAK,gBAAgB,KAAK,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,gBAAgB,CAAC,EAAE;AACvE,QAAA,OAAO,UAAU;;AAGrB,IAAA,OAAO,SAAS;AACpB;;ACJA,MAAM,iBAAiB,GAAG,CAAC;MAGd,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACpC,IAAM,CAAA,MAAA,GAAG,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAgCpE;AA9BU,IAAA,SAAS,CACZ,KAAa,EACb,QAAA,GAAgC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrD,aAAwC,GAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAA;QAElE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACnB,GAAG,CAAC,CAAC,MAAM,KAAI;AACX,YAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC;YAClD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC/C,gBAAA,GAAG,MAAM;gBACT,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;AACpC,sBAAE;sBACA,MAAM,CAAC,SAAS;AACzB,aAAA,CAAC;AACF,YAAA,MAAM,IAAI,GACN,SAAS,KAAK;AACV,kBAAE;kBACA,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACvD,MAAM,KAAK,GACP,cAAc;iBACb,cAAc,EAAE,MAAM,GAAG,CAAC,IAAI,aAAa,KAAK,OAAO;AACpD,kBAAE;kBACA,EAAE;YAEZ,OAAO,aAAa,KAAK;kBACnB,GAAG,IAAI,CAAA,EAAG,SAAS,CAAG,EAAA,KAAK,CAAG,EAAA,cAAc,CAAE;kBAC9C,CAAG,EAAA,IAAI,CAAG,EAAA,cAAc,GAAG,KAAK,CAAA,EAAG,SAAS,CAAA,CAAE;SACvD,CAAC,CACL;;+GAhCI,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,IAAI;mBAAC,EAAC,IAAI,EAAE,WAAW,EAAC;;;ACfzB;;AAEG;;;;"}
@@ -12,7 +12,6 @@ class TuiCurrencyPipe {
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiCurrencyPipe, decorators: [{
13
13
  type: Pipe,
14
14
  args: [{
15
- standalone: true,
16
15
  name: 'tuiCurrency',
17
16
  }]
18
17
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-pipes-currency.mjs","sources":["../../../projects/addon-commerce/pipes/currency/currency.pipe.ts","../../../projects/addon-commerce/pipes/currency/taiga-ui-addon-commerce-pipes-currency.ts"],"sourcesContent":["import {Pipe, type PipeTransform} from '@angular/core';\nimport {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {tuiFormatCurrency} from '@taiga-ui/addon-commerce/utils';\n\n@Pipe({\n standalone: true,\n name: 'tuiCurrency',\n})\nexport class TuiCurrencyPipe implements PipeTransform {\n public transform(currency: TuiCurrencyVariants): string {\n return tuiFormatCurrency(currency);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAQa,eAAe,CAAA;AACjB,IAAA,SAAS,CAAC,QAA6B,EAAA;AAC1C,QAAA,OAAO,iBAAiB,CAAC,QAAQ,CAAC;;+GAF7B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,aAAa;AACtB,iBAAA;;;ACPD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-pipes-currency.mjs","sources":["../../../projects/addon-commerce/pipes/currency/currency.pipe.ts","../../../projects/addon-commerce/pipes/currency/taiga-ui-addon-commerce-pipes-currency.ts"],"sourcesContent":["import {Pipe, type PipeTransform} from '@angular/core';\nimport {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {tuiFormatCurrency} from '@taiga-ui/addon-commerce/utils';\n\n@Pipe({\n name: 'tuiCurrency',\n})\nexport class TuiCurrencyPipe implements PipeTransform {\n public transform(currency: TuiCurrencyVariants): string {\n return tuiFormatCurrency(currency);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAOa,eAAe,CAAA;AACjB,IAAA,SAAS,CAAC,QAA6B,EAAA;AAC1C,QAAA,OAAO,iBAAiB,CAAC,QAAQ,CAAC;;+GAF7B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,aAAa;AACtB,iBAAA;;;ACND;;AAEG;;;;"}
@@ -1,12 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Injector, INJECTOR, Pipe } from '@angular/core';
3
+ import { toObservable } from '@angular/core/rxjs-interop';
3
4
  import { TuiAmountPipe } from '@taiga-ui/addon-commerce/pipes/amount';
4
5
  import { TUI_NUMBER_FORMAT } from '@taiga-ui/core/tokens';
5
6
  import { switchMap, map } from 'rxjs';
6
7
 
7
8
  class TuiDecimalPipe {
8
9
  constructor() {
9
- this.format = inject(TUI_NUMBER_FORMAT);
10
+ this.format = toObservable(inject(TUI_NUMBER_FORMAT));
10
11
  this.amountPipe = Injector.create({
11
12
  providers: [{ provide: TuiAmountPipe }],
12
13
  parent: inject(INJECTOR),
@@ -23,7 +24,7 @@ class TuiDecimalPipe {
23
24
  }
24
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDecimalPipe, decorators: [{
25
26
  type: Pipe,
26
- args: [{ standalone: true, name: 'tuiDecimal' }]
27
+ args: [{ name: 'tuiDecimal' }]
27
28
  }] });
28
29
 
29
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-pipes-decimal.mjs","sources":["../../../projects/addon-commerce/pipes/decimal/decimal.pipe.ts","../../../projects/addon-commerce/pipes/decimal/taiga-ui-addon-commerce-pipes-decimal.ts"],"sourcesContent":["import {inject, INJECTOR, Injector, Pipe, type PipeTransform} from '@angular/core';\nimport {TuiAmountPipe} from '@taiga-ui/addon-commerce/pipes/amount';\nimport {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {map, type Observable, switchMap} from 'rxjs';\n\n@Pipe({standalone: true, name: 'tuiDecimal'})\nexport class TuiDecimalPipe implements PipeTransform {\n private readonly format = inject(TUI_NUMBER_FORMAT);\n private readonly amountPipe = Injector.create({\n providers: [{provide: TuiAmountPipe}],\n parent: inject(INJECTOR),\n }).get(TuiAmountPipe);\n\n public transform(\n value: number,\n currency: TuiCurrencyVariants = '',\n ): Observable<string> {\n return this.format.pipe(\n switchMap((format) =>\n this.amountPipe.transform(value, currency).pipe(\n map((value) => {\n const [, decimal] = value.split(format.decimalSeparator);\n\n return decimal ? `${format.decimalSeparator}${decimal}` : '';\n }),\n ),\n ),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAOa,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC1C,YAAA,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,aAAa,EAAC,CAAC;AACrC,YAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC3B,SAAA,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;AAkBxB;AAhBU,IAAA,SAAS,CACZ,KAAa,EACb,QAAA,GAAgC,EAAE,EAAA;AAElC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACnB,SAAS,CAAC,CAAC,MAAM,KACb,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,CAAC,KAAK,KAAI;AACV,YAAA,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAExD,YAAA,OAAO,OAAO,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAA,EAAG,OAAO,CAAE,CAAA,GAAG,EAAE;AAChE,SAAC,CAAC,CACL,CACJ,CACJ;;+GArBI,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAC;;;ACN5C;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-pipes-decimal.mjs","sources":["../../../projects/addon-commerce/pipes/decimal/decimal.pipe.ts","../../../projects/addon-commerce/pipes/decimal/taiga-ui-addon-commerce-pipes-decimal.ts"],"sourcesContent":["import {inject, INJECTOR, Injector, Pipe, type PipeTransform} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TuiAmountPipe} from '@taiga-ui/addon-commerce/pipes/amount';\nimport {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {map, type Observable, switchMap} from 'rxjs';\n\n@Pipe({name: 'tuiDecimal'})\nexport class TuiDecimalPipe implements PipeTransform {\n private readonly format = toObservable(inject(TUI_NUMBER_FORMAT));\n private readonly amountPipe = Injector.create({\n providers: [{provide: TuiAmountPipe}],\n parent: inject(INJECTOR),\n }).get(TuiAmountPipe);\n\n public transform(\n value: number,\n currency: TuiCurrencyVariants = '',\n ): Observable<string> {\n return this.format.pipe(\n switchMap((format) =>\n this.amountPipe.transform(value, currency).pipe(\n map((value) => {\n const [, decimal] = value.split(format.decimalSeparator);\n\n return decimal ? `${format.decimalSeparator}${decimal}` : '';\n }),\n ),\n ),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAQa,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEqB,IAAM,CAAA,MAAA,GAAG,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC1C,YAAA,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,aAAa,EAAC,CAAC;AACrC,YAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC3B,SAAA,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;AAkBxB;AAhBU,IAAA,SAAS,CACZ,KAAa,EACb,QAAA,GAAgC,EAAE,EAAA;AAElC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACnB,SAAS,CAAC,CAAC,MAAM,KACb,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,CAAC,KAAK,KAAI;AACV,YAAA,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAExD,YAAA,OAAO,OAAO,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAA,EAAG,OAAO,CAAE,CAAA,GAAG,EAAE;AAChE,SAAC,CAAC,CACL,CACJ,CACJ;;+GArBI,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAC,IAAI,EAAE,YAAY,EAAC;;;ACP1B;;AAEG;;;;"}
@@ -17,7 +17,6 @@ class TuiFormatCardPipe {
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiFormatCardPipe, decorators: [{
18
18
  type: Pipe,
19
19
  args: [{
20
- standalone: true,
21
20
  name: 'tuiFormatCard',
22
21
  }]
23
22
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-pipes-format-card.mjs","sources":["../../../projects/addon-commerce/pipes/format-card/format-card.pipe.ts","../../../projects/addon-commerce/pipes/format-card/taiga-ui-addon-commerce-pipes-format-card.ts"],"sourcesContent":["import {Pipe, type PipeTransform} from '@angular/core';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\n\n@Pipe({\n standalone: true,\n name: 'tuiFormatCard',\n})\nexport class TuiFormatCardPipe implements PipeTransform {\n public transform(value: string | null = '', cardPrefilled = false): string {\n return value && !cardPrefilled\n ? value\n .split('')\n .map((char, index) =>\n index && index % 4 === 0 ? `${CHAR_NO_BREAK_SPACE}${char}` : char,\n )\n .join('')\n : '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAOa,iBAAiB,CAAA;AACnB,IAAA,SAAS,CAAC,KAAuB,GAAA,EAAE,EAAE,aAAa,GAAG,KAAK,EAAA;QAC7D,OAAO,KAAK,IAAI,CAAC;AACb,cAAE;iBACK,KAAK,CAAC,EAAE;iBACR,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KACb,KAAK,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAA,EAAG,mBAAmB,CAAA,EAAG,IAAI,CAAA,CAAE,GAAG,IAAI;iBAEpE,IAAI,CAAC,EAAE;cACZ,EAAE;;+GATH,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,eAAe;AACxB,iBAAA;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-commerce-pipes-format-card.mjs","sources":["../../../projects/addon-commerce/pipes/format-card/format-card.pipe.ts","../../../projects/addon-commerce/pipes/format-card/taiga-ui-addon-commerce-pipes-format-card.ts"],"sourcesContent":["import {Pipe, type PipeTransform} from '@angular/core';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\n\n@Pipe({\n name: 'tuiFormatCard',\n})\nexport class TuiFormatCardPipe implements PipeTransform {\n public transform(value: string | null = '', cardPrefilled = false): string {\n return value && !cardPrefilled\n ? value\n .split('')\n .map((char, index) =>\n index && index % 4 === 0 ? `${CHAR_NO_BREAK_SPACE}${char}` : char,\n )\n .join('')\n : '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,iBAAiB,CAAA;AACnB,IAAA,SAAS,CAAC,KAAuB,GAAA,EAAE,EAAE,aAAa,GAAG,KAAK,EAAA;QAC7D,OAAO,KAAK,IAAI,CAAC;AACb,cAAE;iBACK,KAAK,CAAC,EAAE;iBACR,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KACb,KAAK,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAA,EAAG,mBAAmB,CAAA,EAAG,IAAI,CAAA,CAAE,GAAG,IAAI;iBAEpE,IAAI,CAAC,EAAE;cACZ,EAAE;;+GATH,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,eAAe;AACxB,iBAAA;;;ACLD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/addon-commerce",
3
- "version": "4.52.0-canary.eb5ffe3",
3
+ "version": "4.52.0-canary.ec0802b",
4
4
  "description": "Extension package for Taiga UI related to commerce, payment systems, currencies etc.",
5
5
  "keywords": [
6
6
  "angular",
@@ -11,15 +11,18 @@
11
11
  "payment"
12
12
  ],
13
13
  "homepage": "https://github.com/taiga-family/taiga-ui",
14
- "repository": "https://github.com/taiga-family/taiga-ui",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/taiga-family/taiga-ui"
17
+ },
15
18
  "license": "Apache-2.0",
16
19
  "peerDependencies": {
17
20
  "@angular/common": ">=19.0.0",
18
21
  "@angular/core": ">=19.0.0",
19
22
  "@angular/forms": ">=19.0.0",
20
- "@maskito/angular": "^4.0.0",
21
- "@maskito/core": "^4.0.0",
22
- "@maskito/kit": "^4.0.0",
23
+ "@maskito/angular": "^4.0.1",
24
+ "@maskito/core": "^4.0.1",
25
+ "@maskito/kit": "^4.0.1",
23
26
  "@ng-web-apis/common": "^4.12.2",
24
27
  "@taiga-ui/cdk": "^4.52.0",
25
28
  "@taiga-ui/core": "^4.52.0",
@@ -78,6 +81,10 @@
78
81
  "types": "./components/input-cvc/index.d.ts",
79
82
  "default": "./fesm2022/taiga-ui-addon-commerce-components-input-cvc.mjs"
80
83
  },
84
+ "./components/input-expire": {
85
+ "types": "./components/input-expire/index.d.ts",
86
+ "default": "./fesm2022/taiga-ui-addon-commerce-components-input-expire.mjs"
87
+ },
81
88
  "./components/thumbnail-card": {
82
89
  "types": "./components/thumbnail-card/index.d.ts",
83
90
  "default": "./fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs"
@@ -90,10 +97,6 @@
90
97
  "types": "./pipes/currency/index.d.ts",
91
98
  "default": "./fesm2022/taiga-ui-addon-commerce-pipes-currency.mjs"
92
99
  },
93
- "./components/input-expire": {
94
- "types": "./components/input-expire/index.d.ts",
95
- "default": "./fesm2022/taiga-ui-addon-commerce-components-input-expire.mjs"
96
- },
97
100
  "./pipes/decimal": {
98
101
  "types": "./pipes/decimal/index.d.ts",
99
102
  "default": "./fesm2022/taiga-ui-addon-commerce-pipes-decimal.mjs"
@@ -1,4 +1,3 @@
1
- import { InjectionToken, type Provider } from '@angular/core';
2
1
  import { type TuiCurrencyVariants } from '@taiga-ui/addon-commerce/types';
3
2
  import { type TuiHorizontalDirection } from '@taiga-ui/core/types';
4
3
  import { type TuiAmountSign } from './amount.types';
@@ -8,5 +7,4 @@ export interface TuiAmountOptions {
8
7
  readonly sign: TuiAmountSign;
9
8
  }
10
9
  export declare const TUI_AMOUNT_DEFAULT_OPTIONS: TuiAmountOptions;
11
- export declare const TUI_AMOUNT_OPTIONS: InjectionToken<TuiAmountOptions>;
12
- export declare function tuiAmountOptionsProvider(options: Partial<TuiAmountOptions>): Provider;
10
+ export declare const TUI_AMOUNT_OPTIONS: import("@angular/core").InjectionToken<TuiAmountOptions>, tuiAmountOptionsProvider: (item: Partial<TuiAmountOptions> | (() => Partial<TuiAmountOptions>)) => import("@angular/core").FactoryProvider;