@taiga-ui/addon-commerce 4.52.0-canary.698642f → 4.52.0-canary.6c67ccf

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 (34) hide show
  1. package/components/input-card/index.d.ts +0 -1
  2. package/components/input-card/input-card.component.d.ts +3 -9
  3. package/components/input-card-group/input-card-group.component.d.ts +1 -3
  4. package/components/input-card-group/input-card-group.options.d.ts +1 -2
  5. package/components/input-cvc/input-cvc.directive.d.ts +1 -3
  6. package/components/input-expire/input-expire.directive.d.ts +1 -3
  7. package/components/thumbnail-card/thumbnail-card.component.d.ts +1 -3
  8. package/components/thumbnail-card/thumbnail-card.options.d.ts +0 -2
  9. package/fesm2022/taiga-ui-addon-commerce-components-input-card-group.mjs +6 -11
  10. package/fesm2022/taiga-ui-addon-commerce-components-input-card-group.mjs.map +1 -1
  11. package/fesm2022/taiga-ui-addon-commerce-components-input-card.mjs +30 -61
  12. package/fesm2022/taiga-ui-addon-commerce-components-input-card.mjs.map +1 -1
  13. package/fesm2022/taiga-ui-addon-commerce-components-input-cvc.mjs +5 -10
  14. package/fesm2022/taiga-ui-addon-commerce-components-input-cvc.mjs.map +1 -1
  15. package/fesm2022/taiga-ui-addon-commerce-components-input-expire.mjs +5 -10
  16. package/fesm2022/taiga-ui-addon-commerce-components-input-expire.mjs.map +1 -1
  17. package/fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs +6 -10
  18. package/fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs.map +1 -1
  19. package/fesm2022/taiga-ui-addon-commerce-constants.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-addon-commerce-pipes-amount.mjs +3 -3
  21. package/fesm2022/taiga-ui-addon-commerce-pipes-amount.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-addon-commerce-pipes-currency.mjs +3 -3
  23. package/fesm2022/taiga-ui-addon-commerce-pipes-currency.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-addon-commerce-pipes-decimal.mjs +3 -3
  25. package/fesm2022/taiga-ui-addon-commerce-pipes-decimal.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-addon-commerce-pipes-format-card.mjs +3 -3
  27. package/fesm2022/taiga-ui-addon-commerce-pipes-format-card.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-addon-commerce-tokens.mjs +11 -11
  29. package/fesm2022/taiga-ui-addon-commerce-tokens.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-addon-commerce-types.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-addon-commerce-utils.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-addon-commerce-validators.mjs.map +1 -1
  33. package/package.json +1 -1
  34. package/components/input-card/input-card.options.d.ts +0 -12
@@ -1,2 +1 @@
1
1
  export * from './input-card.component';
2
- export * from './input-card.options';
@@ -4,19 +4,13 @@ import * as i1 from "@maskito/angular";
4
4
  import * as i2 from "@taiga-ui/core/components/textfield";
5
5
  export declare class TuiInputCard implements OnInit {
6
6
  private readonly icons;
7
- private readonly options;
8
- private readonly resolver;
9
7
  private readonly control;
10
8
  private readonly value;
11
- private readonly icon;
12
9
  private readonly accessor;
13
10
  protected readonly mask: import("@angular/core").WritableSignal<import("@maskito/core").MaskitoOptions | null>;
14
- protected readonly image: import("@angular/core").Signal<string | null>;
15
- /** @deprecated apparently "off" doesn't disable autocomplete */
16
- autocomplete: boolean;
17
- readonly binChange: import("rxjs").Observable<string | null>;
18
- set iconValue(icon: string | null);
11
+ protected readonly image: import("@angular/core").Signal<string>;
12
+ readonly binChange: import("@angular/core").OutputRef<string | null>;
19
13
  ngOnInit(): void;
20
14
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputCard, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputCard, "input[tuiInputCard]", never, { "autocomplete": { "alias": "autocomplete"; "required": false; }; "iconValue": { "alias": "icon"; "required": false; }; }, { "binChange": "binChange"; }, never, never, true, [{ directive: typeof i1.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputCard, "input[tuiInputCard]", never, {}, { "binChange": "binChange"; }, never, never, true, [{ directive: typeof i1.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
22
16
  }
@@ -53,8 +53,6 @@ export declare class TuiInputCardGroup extends TuiControl<TuiCard | null> implem
53
53
  cardValidator: TuiBooleanHandler<string>;
54
54
  icon: PolymorpheusContent;
55
55
  id: string;
56
- /** @deprecated apparently "off" doesn't disable autocomplete */
57
- autocomplete: boolean;
58
56
  readonly binChange: EventEmitter<string | null>;
59
57
  set codeLength(length: 3 | 4);
60
58
  get bin(): string | null;
@@ -91,5 +89,5 @@ export declare class TuiInputCardGroup extends TuiControl<TuiCard | null> implem
91
89
  private updateProperty;
92
90
  private focusInput;
93
91
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputCardGroup, never>;
94
- 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; }; "autocomplete": { "alias": "autocomplete"; "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 i3.TuiWithTextfieldDropdown; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithDropdownOpen; inputs: {}; outputs: {}; }]>;
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 i3.TuiWithTextfieldDropdown; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithDropdownOpen; inputs: {}; outputs: {}; }]>;
95
93
  }
@@ -1,11 +1,10 @@
1
1
  import { InjectionToken, type Provider } from '@angular/core';
2
- import { type TuiInputCardOptions } from '@taiga-ui/addon-commerce/components/input-card';
3
2
  import { type TuiBooleanHandler } from '@taiga-ui/cdk/types';
4
3
  export interface TuiCardInputs {
5
4
  cvc: boolean;
6
5
  expire: boolean;
7
6
  }
8
- export interface TuiInputCardGroupOptions extends TuiInputCardOptions {
7
+ export interface TuiInputCardGroupOptions {
9
8
  readonly cardValidator: TuiBooleanHandler<string>;
10
9
  readonly exampleText: string;
11
10
  readonly exampleTextCVC: string;
@@ -4,11 +4,9 @@ import * as i1 from "@maskito/angular";
4
4
  import * as i2 from "@taiga-ui/core/components/textfield";
5
5
  export declare class TuiInputCVC implements OnChanges {
6
6
  private readonly mask;
7
- /** @deprecated apparently "off" doesn't disable autocomplete */
8
- autocomplete: boolean;
9
7
  hidden: boolean;
10
8
  length: 3 | 4;
11
9
  ngOnChanges(): void;
12
10
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputCVC, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputCVC, "input[tuiInputCVC]", never, { "autocomplete": { "alias": "autocomplete"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "length": { "alias": "length"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputCVC, "input[tuiInputCVC]", never, { "hidden": { "alias": "hidden"; "required": false; }; "length": { "alias": "length"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
14
12
  }
@@ -3,8 +3,6 @@ import * as i1 from "@maskito/angular";
3
3
  import * as i2 from "@taiga-ui/core/components/textfield";
4
4
  export declare class TuiInputExpire {
5
5
  protected readonly mask: import("@angular/core").WritableSignal<import("@maskito/core").MaskitoOptions | null>;
6
- /** @deprecated apparently "off" doesn't disable autocomplete */
7
- autocomplete: boolean;
8
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputExpire, never>;
9
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputExpire, "input[tuiInputExpire]", never, { "autocomplete": { "alias": "autocomplete"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputExpire, "input[tuiInputExpire]", never, {}, {}, never, never, true, [{ directive: typeof i1.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
10
8
  }
@@ -1,5 +1,4 @@
1
1
  import { type TuiPaymentSystem } from '@taiga-ui/addon-commerce/types';
2
- import { type TuiBooleanHandler } from '@taiga-ui/cdk/types';
3
2
  import { type TuiSizeL, type TuiSizeXS } from '@taiga-ui/core/types';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class TuiThumbnailCard {
@@ -8,7 +7,6 @@ export declare class TuiThumbnailCard {
8
7
  paymentSystem: TuiPaymentSystem | null;
9
8
  iconStart: string;
10
9
  iconEnd: string;
11
- monoHandler: TuiBooleanHandler<TuiPaymentSystem>;
12
10
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiThumbnailCard, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiThumbnailCard, "tui-thumbnail-card", never, { "size": { "alias": "size"; "required": false; }; "paymentSystem": { "alias": "paymentSystem"; "required": false; }; "iconStart": { "alias": "iconStart"; "required": false; }; "iconEnd": { "alias": "iconEnd"; "required": false; }; "monoHandler": { "alias": "monoHandler"; "required": false; }; }, {}, never, ["img", "*"], true, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiThumbnailCard, "tui-thumbnail-card", never, { "size": { "alias": "size"; "required": false; }; "paymentSystem": { "alias": "paymentSystem"; "required": false; }; "iconStart": { "alias": "iconStart"; "required": false; }; "iconEnd": { "alias": "iconEnd"; "required": false; }; }, {}, never, ["img", "*"], true, never>;
14
12
  }
@@ -1,10 +1,8 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { type TuiPaymentSystem } from '@taiga-ui/addon-commerce/types';
3
- import { type TuiBooleanHandler } from '@taiga-ui/cdk/types';
4
3
  import { type TuiSizeL, type TuiSizeXS } from '@taiga-ui/core/types';
5
4
  export interface TuiThumbnailCardOptions {
6
5
  readonly size: TuiSizeL | TuiSizeXS;
7
6
  readonly icons: Record<TuiPaymentSystem, string>;
8
- readonly monoHandler: TuiBooleanHandler<TuiPaymentSystem>;
9
7
  }
10
8
  export declare const TUI_THUMBNAIL_CARD_OPTIONS: InjectionToken<TuiThumbnailCardOptions>;
@@ -10,6 +10,7 @@ import { WaResizeObserver } from '@ng-web-apis/resize-observer';
10
10
  import { tuiDefaultCardValidator, TUI_MASK_CVC, TUI_MASK_CARD, TUI_MASK_EXPIRE } from '@taiga-ui/addon-commerce/constants';
11
11
  import { TuiFormatCardPipe } from '@taiga-ui/addon-commerce/pipes';
12
12
  import { TUI_CARD_NUMBER_TEXTS, TUI_CARD_EXPIRY_TEXTS, TUI_CARD_CVC_TEXTS, TUI_PAYMENT_SYSTEM_ICONS } from '@taiga-ui/addon-commerce/tokens';
13
+ import { tuiGetPaymentSystem } from '@taiga-ui/addon-commerce/utils';
13
14
  import { TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
14
15
  import { TUI_NON_DIGIT_REGEXP, CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
15
16
  import { tuiHovered, TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
@@ -32,12 +33,10 @@ import { TUI_MEDIA, TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
32
33
  import { TuiChevron } from '@taiga-ui/kit/directives/chevron';
33
34
  import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
34
35
  import { startWith, switchMap, combineLatest, of, map, Subject, EMPTY, timer } from 'rxjs';
35
- import { TUI_INPUT_CARD_DEFAULT_OPTIONS } from '@taiga-ui/addon-commerce/components/input-card';
36
36
  import { WA_WINDOW } from '@ng-web-apis/common';
37
37
  import { tuiTypedFromEvent } from '@taiga-ui/cdk/observables';
38
38
 
39
39
  const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS = {
40
- ...TUI_INPUT_CARD_DEFAULT_OPTIONS,
41
40
  cardValidator: tuiDefaultCardValidator,
42
41
  exampleText: '0000 0000 0000 0000',
43
42
  exampleTextCVC: '000',
@@ -118,10 +117,8 @@ class TuiInputCardGroup extends TuiControl {
118
117
  this.placeholder = this.options.exampleText;
119
118
  this.inputs = this.options.inputs;
120
119
  this.cardValidator = this.options.cardValidator;
121
- this.icon = this.options.icon;
120
+ this.icon = '';
122
121
  this.id = tuiInjectId();
123
- /** @deprecated apparently "off" doesn't disable autocomplete */
124
- this.autocomplete = this.options.autocomplete;
125
122
  this.binChange = new EventEmitter();
126
123
  }
127
124
  set codeLength(length) {
@@ -275,7 +272,7 @@ class TuiInputCardGroup extends TuiControl {
275
272
  return this.cardValidator(card) || this.cardPrefilled;
276
273
  }
277
274
  getPaymentSystem(value) {
278
- return this.options.paymentSystemHandler(value);
275
+ return tuiGetPaymentSystem(value);
279
276
  }
280
277
  updateBin(oldBin) {
281
278
  const { bin } = this;
@@ -295,8 +292,8 @@ class TuiInputCardGroup extends TuiControl {
295
292
  this.inputCVC?.nativeElement;
296
293
  element?.focus();
297
294
  }
298
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: TuiInputCardGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.9", type: TuiInputCardGroup, isStandalone: true, selector: "tui-input-card-group", inputs: { exampleText: "exampleText", placeholder: "placeholder", inputs: "inputs", cardValidator: "cardValidator", icon: "icon", id: "id", autocomplete: "autocomplete", codeLength: "codeLength" }, outputs: { binChange: "binChange" }, host: { attributes: { "data-size": "l" }, listeners: { "pointerdown": "onPointerDown($event)", "scroll.zoneless": "$event.target.scrollLeft = 0" }, properties: { "style.--tui-duration.s": "0" } }, providers: [
295
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCardGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
296
+ 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: { attributes: { "data-size": "l" }, listeners: { "pointerdown": "onPointerDown($event)", "scroll.zoneless": "$event.target.scrollLeft = 0" }, properties: { "style.--tui-duration.s": "0" } }, providers: [
300
297
  tuiAsDataListHost(TuiInputCardGroup),
301
298
  tuiAsControl(TuiInputCardGroup),
302
299
  tuiDropdownOptionsProvider({ limitWidth: 'fixed' }),
@@ -309,7 +306,7 @@ __decorate([
309
306
  __decorate([
310
307
  tuiPure
311
308
  ], TuiInputCardGroup.prototype, "getPaymentSystem", null);
312
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: TuiInputCardGroup, decorators: [{
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCardGroup, decorators: [{
313
310
  type: Component,
314
311
  args: [{ selector: 'tui-input-card-group', imports: [
315
312
  FormsModule,
@@ -360,8 +357,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImpor
360
357
  type: Input
361
358
  }], id: [{
362
359
  type: Input
363
- }], autocomplete: [{
364
- type: Input
365
360
  }], binChange: [{
366
361
  type: Output
367
362
  }], codeLength: [{
@@ -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.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 {InjectionToken, type Provider} from '@angular/core';\nimport {\n TUI_INPUT_CARD_DEFAULT_OPTIONS,\n type TuiInputCardOptions,\n} from '@taiga-ui/addon-commerce/components/input-card';\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 extends TuiInputCardOptions {\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 ...TUI_INPUT_CARD_DEFAULT_OPTIONS,\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 {WA_WINDOW} from '@ng-web-apis/common';\nimport {\n TUI_CARD_CVC_TEXTS,\n TUI_CARD_EXPIRY_TEXTS,\n TUI_CARD_NUMBER_TEXTS,\n} from '@taiga-ui/addon-commerce/tokens';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport {combineLatest, map, type Observable, of, startWith, switchMap} from 'rxjs';\n\nexport interface TuiCardGroupedTexts {\n readonly cardNumberText: string;\n readonly cvcText: string;\n readonly expiryText: string;\n}\n\n/**\n * InputCardGroup texts\n */\nexport const TUI_INPUT_CARD_GROUP_TEXTS = new InjectionToken<\n Observable<TuiCardGroupedTexts>\n>(ngDevMode ? 'TUI_INPUT_CARD_GROUP_TEXTS' : '', {\n factory: () => {\n const win = inject(WA_WINDOW);\n const cardNumberTexts = inject(TUI_CARD_NUMBER_TEXTS);\n const expiryTexts = inject(TUI_CARD_EXPIRY_TEXTS);\n const cvcTexts = inject(TUI_CARD_CVC_TEXTS);\n const {desktopSmall} = inject(TUI_MEDIA);\n\n const media = win.matchMedia(\n `screen and (min-width: ${(desktopSmall - 1) / 16}em)`,\n );\n\n return tuiTypedFromEvent(media, 'change').pipe(\n startWith(null),\n switchMap(() =>\n combineLatest([\n of(Number(media.matches)),\n cardNumberTexts,\n expiryTexts,\n cvcTexts,\n ]),\n ),\n map(([index, cardNumber, expiry, cvcTexts]) => ({\n cardNumberText: cardNumber[index] ?? '',\n expiryText: expiry[index] ?? '',\n cvcText: cvcTexts[index] ?? '',\n })),\n );\n },\n});\n","import {DOCUMENT, isPlatformServer} from '@angular/common';\nimport {\n type AfterViewInit,\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 {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 {TuiLet} from '@taiga-ui/cdk/directives/let';\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, tuiIsNativeFocused} 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 {\n TUI_TEXTFIELD_OPTIONS,\n TuiWithTextfieldDropdown,\n} 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 {TUI_INPUT_CARD_GROUP_OPTIONS} from './input-card-group.options';\nimport {TUI_INPUT_CARD_GROUP_TEXTS} 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 TuiLet,\n TuiMapperPipe,\n WaResizeObserver,\n ],\n templateUrl: './input-card-group.template.html',\n styleUrls: ['./input-card-group.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsDataListHost(TuiInputCardGroup),\n tuiAsControl(TuiInputCardGroup),\n tuiDropdownOptionsProvider({limitWidth: 'fixed'}),\n TuiHoveredService,\n ],\n hostDirectives: [\n TuiAppearance,\n TuiDropdownDirective,\n TuiWithTextfieldDropdown,\n TuiWithDropdownOpen,\n ],\n host: {\n 'data-size': 'l',\n '[style.--tui-duration.s]': '0',\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>>, AfterViewInit\n{\n @ViewChild('inputCard', {static: true})\n private readonly inputCard?: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputExpire', {static: true})\n private readonly inputExpire?: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputCVC', {static: true})\n private readonly inputCVC?: ElementRef<HTMLInputElement>;\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 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 = this.options.icon;\n\n @Input()\n public id = tuiInjectId();\n\n /** @deprecated apparently \"off\" doesn't disable autocomplete */\n @Input()\n public autocomplete = this.options.autocomplete;\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 ngAfterViewInit(): void {\n // Enabling transitions\n setTimeout(() => this.el.style.removeProperty('--tui-duration'), 500);\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 if (\n !this.inputExpire ||\n this.isMobile ||\n this.isWebkit ||\n this.isServer ||\n this.inputExpire.nativeElement.value === this.expire\n ) {\n return;\n }\n\n this.inputExpire.nativeElement.focus({preventScroll: true});\n this.inputExpire.nativeElement.select();\n this.doc.execCommand('insertText', false, this.expire);\n this.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) &&\n !tuiIsNativeFocused(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 this.options.paymentSystemHandler(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","<div class=\"t-wrapper\">\n <label\n *tuiLet=\"value()?.card | tuiFormatCard: cardPrefilled as formattedCard\"\n (click.zoneless.prevent)=\"(0)\"\n >\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 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 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 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 (click)=\"toggle()\"\n />\n }\n</div>\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-group.mjs","sources":["../../../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 {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 {WA_WINDOW} from '@ng-web-apis/common';\nimport {\n TUI_CARD_CVC_TEXTS,\n TUI_CARD_EXPIRY_TEXTS,\n TUI_CARD_NUMBER_TEXTS,\n} from '@taiga-ui/addon-commerce/tokens';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport {combineLatest, map, type Observable, of, startWith, switchMap} from 'rxjs';\n\nexport interface TuiCardGroupedTexts {\n readonly cardNumberText: string;\n readonly cvcText: string;\n readonly expiryText: string;\n}\n\n/**\n * InputCardGroup texts\n */\nexport const TUI_INPUT_CARD_GROUP_TEXTS = new InjectionToken<\n Observable<TuiCardGroupedTexts>\n>(ngDevMode ? 'TUI_INPUT_CARD_GROUP_TEXTS' : '', {\n factory: () => {\n const win = inject(WA_WINDOW);\n const cardNumberTexts = inject(TUI_CARD_NUMBER_TEXTS);\n const expiryTexts = inject(TUI_CARD_EXPIRY_TEXTS);\n const cvcTexts = inject(TUI_CARD_CVC_TEXTS);\n const {desktopSmall} = inject(TUI_MEDIA);\n\n const media = win.matchMedia(\n `screen and (min-width: ${(desktopSmall - 1) / 16}em)`,\n );\n\n return tuiTypedFromEvent(media, 'change').pipe(\n startWith(null),\n switchMap(() =>\n combineLatest([\n of(Number(media.matches)),\n cardNumberTexts,\n expiryTexts,\n cvcTexts,\n ]),\n ),\n map(([index, cardNumber, expiry, cvcTexts]) => ({\n cardNumberText: cardNumber[index] ?? '',\n expiryText: expiry[index] ?? '',\n cvcText: cvcTexts[index] ?? '',\n })),\n );\n },\n});\n","import {DOCUMENT, isPlatformServer} from '@angular/common';\nimport {\n type AfterViewInit,\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 {TuiLet} from '@taiga-ui/cdk/directives/let';\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, tuiIsNativeFocused} 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 {\n TUI_TEXTFIELD_OPTIONS,\n TuiWithTextfieldDropdown,\n} 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 {TUI_INPUT_CARD_GROUP_OPTIONS} from './input-card-group.options';\nimport {TUI_INPUT_CARD_GROUP_TEXTS} 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 TuiLet,\n TuiMapperPipe,\n WaResizeObserver,\n ],\n templateUrl: './input-card-group.template.html',\n styleUrls: ['./input-card-group.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsDataListHost(TuiInputCardGroup),\n tuiAsControl(TuiInputCardGroup),\n tuiDropdownOptionsProvider({limitWidth: 'fixed'}),\n TuiHoveredService,\n ],\n hostDirectives: [\n TuiAppearance,\n TuiDropdownDirective,\n TuiWithTextfieldDropdown,\n TuiWithDropdownOpen,\n ],\n host: {\n 'data-size': 'l',\n '[style.--tui-duration.s]': '0',\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>>, AfterViewInit\n{\n @ViewChild('inputCard', {static: true})\n private readonly inputCard?: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputExpire', {static: true})\n private readonly inputExpire?: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputCVC', {static: true})\n private readonly inputCVC?: ElementRef<HTMLInputElement>;\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 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 ngAfterViewInit(): void {\n // Enabling transitions\n setTimeout(() => this.el.style.removeProperty('--tui-duration'), 500);\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 if (\n !this.inputExpire ||\n this.isMobile ||\n this.isWebkit ||\n this.isServer ||\n this.inputExpire.nativeElement.value === this.expire\n ) {\n return;\n }\n\n this.inputExpire.nativeElement.focus({preventScroll: true});\n this.inputExpire.nativeElement.select();\n this.doc.execCommand('insertText', false, this.expire);\n this.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) &&\n !tuiIsNativeFocused(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","<div class=\"t-wrapper\">\n <label\n *tuiLet=\"value()?.card | tuiFormatCard: cardPrefilled as formattedCard\"\n (click.zoneless.prevent)=\"(0)\"\n >\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 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 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 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 (click)=\"toggle()\"\n />\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,58 +1,32 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, signal, computed, Input, Output, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
- import { toSignal, toObservable } from '@angular/core/rxjs-interop';
2
+ import { inject, computed, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
+ import { toSignal, outputFromObservable, toObservable } from '@angular/core/rxjs-interop';
4
4
  import { NgControl, DefaultValueAccessor } from '@angular/forms';
5
5
  import * as i1 from '@maskito/angular';
6
6
  import { MaskitoDirective } from '@maskito/angular';
7
7
  import { TUI_MASK_CARD } from '@taiga-ui/addon-commerce/constants';
8
8
  import { TUI_PAYMENT_SYSTEM_ICONS } from '@taiga-ui/addon-commerce/tokens';
9
+ import { tuiGetPaymentSystem } from '@taiga-ui/addon-commerce/utils';
9
10
  import { CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
10
11
  import { tuiControlValue } from '@taiga-ui/cdk/observables';
12
+ import { TuiIconPipe } from '@taiga-ui/core/components/icon';
11
13
  import * as i2 from '@taiga-ui/core/components/textfield';
12
14
  import { TuiTextfieldContent, TuiWithTextfield } from '@taiga-ui/core/components/textfield';
13
- import { tuiInjectIconResolver } from '@taiga-ui/core/tokens';
14
15
  import { tuiMaskito } from '@taiga-ui/kit/utils';
15
16
  import { timer, switchMap, map, startWith, distinctUntilChanged, skip } from 'rxjs';
16
- import { tuiGetPaymentSystem } from '@taiga-ui/addon-commerce/utils';
17
- import { tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
18
-
19
- const TUI_INPUT_CARD_DEFAULT_OPTIONS = {
20
- icon: null,
21
- paymentSystemHandler: tuiGetPaymentSystem,
22
- autocomplete: false,
23
- };
24
- const TUI_INPUT_CARD_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_INPUT_CARD_OPTIONS' : '', {
25
- factory: () => TUI_INPUT_CARD_DEFAULT_OPTIONS,
26
- });
27
- function tuiInputCardOptionsProvider(options) {
28
- return tuiProvideOptions(TUI_INPUT_CARD_OPTIONS, options, TUI_INPUT_CARD_DEFAULT_OPTIONS);
29
- }
30
17
 
31
18
  class TuiInputCard {
32
19
  constructor() {
33
20
  this.icons = inject(TUI_PAYMENT_SYSTEM_ICONS);
34
- this.options = inject(TUI_INPUT_CARD_OPTIONS);
35
- this.resolver = tuiInjectIconResolver();
36
21
  this.control = inject(NgControl);
37
22
  this.value = toSignal(timer(0).pipe(switchMap(() => tuiControlValue(this.control))), { initialValue: '' });
38
- this.icon = signal(this.options.icon);
39
23
  this.accessor = inject(DefaultValueAccessor, {
40
24
  self: true,
41
25
  optional: true,
42
26
  });
43
27
  this.mask = tuiMaskito(TUI_MASK_CARD);
44
- this.image = computed(() => {
45
- const system = this.options.paymentSystemHandler(this.value());
46
- const icon = system && this.icons[system] && this.resolver(this.icons[system]);
47
- const url = this.icon() || icon;
48
- return url && this.icon() !== '' ? url : null;
49
- });
50
- /** @deprecated apparently "off" doesn't disable autocomplete */
51
- this.autocomplete = this.options.autocomplete;
52
- this.binChange = toObservable(this.value).pipe(map((value) => (value.length < 6 ? null : value.replace(' ', '').slice(0, 6))), startWith(null), distinctUntilChanged(), skip(1));
53
- }
54
- set iconValue(icon) {
55
- this.icon.set(icon);
28
+ this.image = computed((s = tuiGetPaymentSystem(this.value())) => (s && this.icons[s]) || '');
29
+ this.binChange = outputFromObservable(toObservable(this.value).pipe(map((v) => (v.length < 6 ? null : v.replace(' ', '').slice(0, 6))), startWith(null), distinctUntilChanged(), skip(1)));
56
30
  }
57
31
  ngOnInit() {
58
32
  if (!this.accessor) {
@@ -61,45 +35,40 @@ class TuiInputCard {
61
35
  const onChanges = this.accessor.onChange.bind(this.accessor);
62
36
  this.accessor.onChange = (value) => onChanges(value.replaceAll(CHAR_NO_BREAK_SPACE, ''));
63
37
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: TuiInputCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.9", type: TuiInputCard, isStandalone: true, selector: "input[tuiInputCard]", inputs: { autocomplete: "autocomplete", iconValue: ["icon", "iconValue"] }, outputs: { binChange: "binChange" }, host: { attributes: { "inputmode": "numeric", "placeholder": "0000 0000 0000 0000", "ngSkipHydration": "true", "autocomplete": "cc-number" } }, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithTextfield }], ngImport: i0, template: `
66
- <img
67
- *tuiTextfieldContent
68
- alt=""
69
- class="t-payment-system"
70
- [hidden]="!image()"
71
- [src]="image()"
72
- />
73
- `, isInline: true, styles: ["tui-textfield .t-payment-system{order:-1;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]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiInputCard, isStandalone: true, selector: "input[tuiInputCard]", outputs: { binChange: "binChange" }, host: { attributes: { "inputmode": "numeric", "placeholder": "0000 0000 0000 0000", "ngSkipHydration": "true", "autocomplete": "cc-number" } }, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithTextfield }], ngImport: i0, template: `
40
+ @if (image()) {
41
+ <img
42
+ *tuiTextfieldContent
43
+ alt=""
44
+ class="t-payment-system"
45
+ [src]="image() | tuiIcon"
46
+ />
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 }); }
74
49
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: TuiInputCard, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCard, decorators: [{
76
51
  type: Component,
77
- args: [{ selector: 'input[tuiInputCard]', imports: [TuiTextfieldContent], template: `
78
- <img
79
- *tuiTextfieldContent
80
- alt=""
81
- class="t-payment-system"
82
- [hidden]="!image()"
83
- [src]="image()"
84
- />
52
+ args: [{ selector: 'input[tuiInputCard]', imports: [TuiTextfieldContent, TuiIconPipe], template: `
53
+ @if (image()) {
54
+ <img
55
+ *tuiTextfieldContent
56
+ alt=""
57
+ class="t-payment-system"
58
+ [src]="image() | tuiIcon"
59
+ />
60
+ }
85
61
  `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [MaskitoDirective, TuiWithTextfield], host: {
86
62
  inputmode: 'numeric',
87
63
  placeholder: '0000 0000 0000 0000',
88
64
  ngSkipHydration: 'true',
89
65
  autocomplete: 'cc-number',
90
- }, styles: ["tui-textfield .t-payment-system{order:-1;inline-size:1.5rem}tui-textfield[data-size=l] .t-payment-system{inline-size:2rem}\n"] }]
91
- }], propDecorators: { autocomplete: [{
92
- type: Input
93
- }], binChange: [{
94
- type: Output
95
- }], iconValue: [{
96
- type: Input,
97
- args: ['icon']
98
- }] } });
66
+ }, 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"] }]
67
+ }] });
99
68
 
100
69
  /**
101
70
  * Generated bundle index. Do not edit.
102
71
  */
103
72
 
104
- export { TUI_INPUT_CARD_DEFAULT_OPTIONS, TUI_INPUT_CARD_OPTIONS, TuiInputCard, tuiInputCardOptionsProvider };
73
+ export { TuiInputCard };
105
74
  //# sourceMappingURL=taiga-ui-addon-commerce-components-input-card.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-commerce-components-input-card.mjs","sources":["../../../projects/addon-commerce/components/input-card/input-card.options.ts","../../../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 {InjectionToken, type Provider} from '@angular/core';\nimport {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\nimport {tuiGetPaymentSystem} from '@taiga-ui/addon-commerce/utils';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiInputCardOptions {\n /** @deprecated apparently \"off\" doesn't disable autocomplete */\n readonly autocomplete: boolean;\n readonly icon: string | null;\n readonly paymentSystemHandler: TuiHandler<\n string | null | undefined,\n TuiPaymentSystem | null\n >;\n}\n\nexport const TUI_INPUT_CARD_DEFAULT_OPTIONS: TuiInputCardOptions = {\n icon: null,\n paymentSystemHandler: tuiGetPaymentSystem,\n autocomplete: false,\n};\n\nexport const TUI_INPUT_CARD_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_INPUT_CARD_OPTIONS' : '',\n {\n factory: () => TUI_INPUT_CARD_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiInputCardOptionsProvider(\n options: Partial<TuiInputCardOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_CARD_OPTIONS,\n options,\n TUI_INPUT_CARD_DEFAULT_OPTIONS,\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Input,\n type OnInit,\n Output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {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 {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {TuiTextfieldContent, TuiWithTextfield} from '@taiga-ui/core/components/textfield';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\nimport {distinctUntilChanged, map, skip, startWith, switchMap, timer} from 'rxjs';\n\nimport {TUI_INPUT_CARD_OPTIONS} from './input-card.options';\n\n@Component({\n selector: 'input[tuiInputCard]',\n imports: [TuiTextfieldContent],\n template: `\n <img\n *tuiTextfieldContent\n alt=\"\"\n class=\"t-payment-system\"\n [hidden]=\"!image()\"\n [src]=\"image()\"\n />\n `,\n styleUrls: ['./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 options = inject(TUI_INPUT_CARD_OPTIONS);\n private readonly resolver = tuiInjectIconResolver();\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 icon = signal<string | null>(this.options.icon);\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 const system = this.options.paymentSystemHandler(this.value());\n const icon = system && this.icons[system] && this.resolver(this.icons[system]);\n const url = this.icon() || icon;\n\n return url && this.icon() !== '' ? url : null;\n });\n\n /** @deprecated apparently \"off\" doesn't disable autocomplete */\n @Input()\n public autocomplete = this.options.autocomplete;\n\n @Output()\n public readonly binChange = toObservable(this.value).pipe(\n map((value) => (value.length < 6 ? null : value.replace(' ', '').slice(0, 6))),\n startWith(null),\n distinctUntilChanged(),\n skip(1),\n );\n\n @Input('icon')\n public set iconValue(icon: string | null) {\n this.icon.set(icon);\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: [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 styleUrls: ['./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,8 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Input, Directive } from '@angular/core';
2
+ import { Input, Directive } from '@angular/core';
3
3
  import * as i1 from '@maskito/angular';
4
4
  import { MaskitoDirective } from '@maskito/angular';
5
- import { TUI_INPUT_CARD_OPTIONS } from '@taiga-ui/addon-commerce/components/input-card';
6
5
  import { TUI_MASK_CVC } from '@taiga-ui/addon-commerce/constants';
7
6
  import * as i2 from '@taiga-ui/core/components/textfield';
8
7
  import { TuiWithTextfield } from '@taiga-ui/core/components/textfield';
@@ -11,8 +10,6 @@ import { tuiMaskito } from '@taiga-ui/kit/utils';
11
10
  class TuiInputCVC {
12
11
  constructor() {
13
12
  this.mask = tuiMaskito(TUI_MASK_CVC(3));
14
- /** @deprecated apparently "off" doesn't disable autocomplete */
15
- this.autocomplete = inject(TUI_INPUT_CARD_OPTIONS).autocomplete;
16
13
  this.hidden = true;
17
14
  this.length = 3;
18
15
  }
@@ -20,10 +17,10 @@ class TuiInputCVC {
20
17
  ngOnChanges() {
21
18
  this.mask.set(TUI_MASK_CVC(this.length));
22
19
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: TuiInputCVC, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.9", type: TuiInputCVC, isStandalone: true, selector: "input[tuiInputCVC]", inputs: { autocomplete: "autocomplete", hidden: "hidden", length: "length" }, host: { attributes: { "inputmode": "numeric", "autocomplete": "cc-csc" }, listeners: { "copy.prevent": "(0)" }, properties: { "placeholder": "\"0\".repeat(length)", "style.-webkit-text-security": "hidden ? \"disc\" : null" } }, usesOnChanges: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithTextfield }], ngImport: i0 }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCVC, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiInputCVC, isStandalone: true, selector: "input[tuiInputCVC]", inputs: { hidden: "hidden", length: "length" }, host: { attributes: { "inputmode": "numeric", "autocomplete": "cc-csc" }, listeners: { "copy.prevent": "(0)" }, properties: { "placeholder": "\"0\".repeat(length)", "style.-webkit-text-security": "hidden ? \"disc\" : null" } }, usesOnChanges: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithTextfield }], ngImport: i0 }); }
25
22
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: TuiInputCVC, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputCVC, decorators: [{
27
24
  type: Directive,
28
25
  args: [{
29
26
  standalone: true,
@@ -37,9 +34,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImpor
37
34
  '(copy.prevent)': '(0)',
38
35
  },
39
36
  }]
40
- }], propDecorators: { autocomplete: [{
41
- type: Input
42
- }], hidden: [{
37
+ }], propDecorators: { hidden: [{
43
38
  type: Input
44
39
  }], length: [{
45
40
  type: Input