@taiga-ui/addon-commerce
Version:
Extension package for Taiga UI related to commerce, payment systems, currencies etc.
86 lines • 14 kB
JavaScript
import { ChangeDetectionStrategy, Component, computed, inject, Input, Output, signal, ViewEncapsulation, } from '@angular/core';
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
import { DefaultValueAccessor, NgControl } from '@angular/forms';
import { MaskitoDirective } from '@maskito/angular';
import { TUI_MASK_CARD } from '@taiga-ui/addon-commerce/constants';
import { TUI_PAYMENT_SYSTEM_ICONS } from '@taiga-ui/addon-commerce/tokens';
import { CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
import { tuiControlValue } from '@taiga-ui/cdk/observables';
import { TuiTextfieldContent, TuiWithTextfield } from '@taiga-ui/core/components/textfield';
import { tuiInjectIconResolver } from '@taiga-ui/core/tokens';
import { tuiMaskito } from '@taiga-ui/kit/utils';
import { distinctUntilChanged, map, skip, startWith, switchMap, timer } from 'rxjs';
import { TUI_INPUT_CARD_OPTIONS } from './input-card.options';
import * as i0 from "@angular/core";
import * as i1 from "@maskito/angular";
import * as i2 from "@taiga-ui/core/components/textfield";
class TuiInputCard {
constructor() {
this.icons = inject(TUI_PAYMENT_SYSTEM_ICONS);
this.options = inject(TUI_INPUT_CARD_OPTIONS);
this.resolver = tuiInjectIconResolver();
this.control = inject(NgControl);
this.value = toSignal(timer(0).pipe(switchMap(() => tuiControlValue(this.control))), { initialValue: '' });
this.icon = signal(this.options.icon);
this.accessor = inject(DefaultValueAccessor, {
self: true,
optional: true,
});
this.mask = tuiMaskito(TUI_MASK_CARD);
this.image = computed(() => {
const system = this.options.paymentSystemHandler(this.value());
const icon = system && this.icons[system] && this.resolver(this.icons[system]);
const url = this.icon() || icon;
return url && this.icon() !== '' ? url : null;
});
/** @deprecated apparently "off" doesn't disable autocomplete */
this.autocomplete = this.options.autocomplete;
this.binChange = toObservable(this.value).pipe(map((value) => (value.length < 6 ? null : value.replace(' ', '').slice(0, 6))), startWith(null), distinctUntilChanged(), skip(1));
}
set iconValue(icon) {
this.icon.set(icon);
}
ngOnInit() {
if (!this.accessor) {
return;
}
const onChanges = this.accessor.onChange.bind(this.accessor);
this.accessor.onChange = (value) => onChanges(value.replaceAll(CHAR_NO_BREAK_SPACE, ''));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: `
<img
*tuiTextfieldContent
alt=""
class="t-payment-system"
[hidden]="!image()"
[src]="image()"
/>
`, 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 }); }
}
export { TuiInputCard };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputCard, decorators: [{
type: Component,
args: [{ standalone: true, selector: 'input[tuiInputCard]', imports: [TuiTextfieldContent], template: `
<img
*tuiTextfieldContent
alt=""
class="t-payment-system"
[hidden]="!image()"
[src]="image()"
/>
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [MaskitoDirective, TuiWithTextfield], host: {
inputmode: 'numeric',
placeholder: '0000 0000 0000 0000',
ngSkipHydration: 'true',
autocomplete: 'cc-number',
}, styles: ["tui-textfield .t-payment-system{order:-1;inline-size:1.5rem}tui-textfield[data-size=l] .t-payment-system{inline-size:2rem}\n"] }]
}], propDecorators: { autocomplete: [{
type: Input
}], binChange: [{
type: Output
}], iconValue: [{
type: Input,
args: ['icon']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQvaW5wdXQtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEYsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0s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U0FxQnBCLFlBQVk7NEZBQVosWUFBWTtrQkF4QnhCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHFCQUFxQixXQUN0QixDQUFDLG1CQUFtQixDQUFDLFlBQ3BCOzs7Ozs7OztLQVFULGlCQUVjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sa0JBQy9CLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsUUFDOUM7d0JBQ0YsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLFdBQVcsRUFBRSxxQkFBcUI7d0JBQ2xDLGVBQWUsRUFBRSxNQUFNO3dCQUN2QixZQUFZLEVBQUUsV0FBVztxQkFDNUI7OEJBOEJNLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSVUsU0FBUztzQkFEeEIsTUFBTTtnQkFTSSxTQUFTO3NCQURuQixLQUFLO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgdHlwZSBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIHNpZ25hbCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvT2JzZXJ2YWJsZSwgdG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7RGVmYXVsdFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXNraXRvRGlyZWN0aXZlfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7VFVJX01BU0tfQ0FSRH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbnN0YW50cyc7XG5pbXBvcnQge1RVSV9QQVlNRU5UX1NZU1RFTV9JQ09OU30gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL3Rva2Vucyc7XG5pbXBvcnQge0NIQVJfTk9fQlJFQUtfU1BBQ0V9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7dHVpQ29udHJvbFZhbHVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VHVpVGV4dGZpZWxkQ29udGVudCwgVHVpV2l0aFRleHRmaWVsZH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHt0dWlJbmplY3RJY29uUmVzb2x2ZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge3R1aU1hc2tpdG99IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9DQVJEX09QVElPTlN9IGZyb20gJy4vaW5wdXQtY2FyZC5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aUlucHV0Q2FyZF0nLFxuICAgIGltcG9ydHM6IFtUdWlUZXh0ZmllbGRDb250ZW50XSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8aW1nXG4gICAgICAgICAgICAqdHVpVGV4dGZpZWxkQ29udGVudFxuICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1wYXltZW50LXN5c3RlbVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIiFpbWFnZSgpXCJcbiAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1jYXJkLnN0eWxlLmxlc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbTWFza2l0b0RpcmVjdGl2ZSwgVHVpV2l0aFRleHRmaWVsZF0sXG4gICAgaG9zdDoge1xuICAgICAgICBpbnB1dG1vZGU6ICdudW1lcmljJyxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICcwMDAwIDAwMDAgMDAwMCAwMDAwJyxcbiAgICAgICAgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScsXG4gICAgICAgIGF1dG9jb21wbGV0ZTogJ2NjLW51bWJlcicsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRDYXJkIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25zID0gaW5qZWN0KFRVSV9QQVlNRU5UX1NZU1RFTV9JQ09OUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9DQVJEX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZXIgPSB0dWlJbmplY3RJY29uUmVzb2x2ZXIoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlID0gdG9TaWduYWwoXG4gICAgICAgIHRpbWVyKDApLnBpcGUoc3dpdGNoTWFwKCgpID0+IHR1aUNvbnRyb2xWYWx1ZTxzdHJpbmc+KHRoaXMuY29udHJvbCkpKSxcbiAgICAgICAge2luaXRpYWxWYWx1ZTogJyd9LFxuICAgICk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb24gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4odGhpcy5vcHRpb25zLmljb24pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY2Nlc3NvciA9IGluamVjdChEZWZhdWx0VmFsdWVBY2Nlc3Nvciwge1xuICAgICAgICBzZWxmOiB0cnVlLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrID0gdHVpTWFza2l0byhUVUlfTUFTS19DQVJEKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW1hZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN5c3RlbSA9IHRoaXMub3B0aW9ucy5wYXltZW50U3lzdGVtSGFuZGxlcih0aGlzLnZhbHVlKCkpO1xuICAgICAgICBjb25zdCBpY29uID0gc3lzdGVtICYmIHRoaXMuaWNvbnNbc3lzdGVtXSAmJiB0aGlzLnJlc29sdmVyKHRoaXMuaWNvbnNbc3lzdGVtXSk7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuaWNvbigpIHx8IGljb247XG5cbiAgICAgICAgcmV0dXJuIHVybCAmJiB0aGlzLmljb24oKSAhPT0gJycgPyB1cmwgOiBudWxsO1xuICAgIH0pO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkIGFwcGFyZW50bHkgXCJvZmZcIiBkb2Vzbid0IGRpc2FibGUgYXV0b2NvbXBsZXRlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlID0gdGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBiaW5DaGFuZ2UgPSB0b09ic2VydmFibGUodGhpcy52YWx1ZSkucGlwZShcbiAgICAgICAgbWFwKCh2YWx1ZSkgPT4gKHZhbHVlLmxlbmd0aCA8IDYgPyBudWxsIDogdmFsdWUucmVwbGFjZSgnICcsICcnKS5zbGljZSgwLCA2KSkpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgKTtcblxuICAgIEBJbnB1dCgnaWNvbicpXG4gICAgcHVibGljIHNldCBpY29uVmFsdWUoaWNvbjogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLmljb24uc2V0KGljb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFjY2Vzc29yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvbkNoYW5nZXMgPSB0aGlzLmFjY2Vzc29yLm9uQ2hhbmdlLmJpbmQodGhpcy5hY2Nlc3Nvcik7XG5cbiAgICAgICAgdGhpcy5hY2Nlc3Nvci5vbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb25DaGFuZ2VzKHZhbHVlLnJlcGxhY2VBbGwoQ0hBUl9OT19CUkVBS19TUEFDRSwgJycpKTtcbiAgICB9XG59XG4iXX0=