UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

54 lines 12 kB
import { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation, } from '@angular/core'; import { NgControl } from '@angular/forms'; import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator'; import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom'; import { tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous'; import { TuiAppearance } from '@taiga-ui/core/directives/appearance'; import { tuiInjectIconResolver } from '@taiga-ui/core/tokens'; import { TUI_SWITCH_OPTIONS } from './switch.options'; import * as i0 from "@angular/core"; import * as i1 from "@taiga-ui/core/directives/appearance"; import * as i2 from "@taiga-ui/cdk/directives/native-validator"; class TuiSwitch { constructor() { this.appearance = inject(TuiAppearance); this.resolver = tuiInjectIconResolver(); this.options = inject(TUI_SWITCH_OPTIONS); this.el = tuiInjectElement(); this.control = inject(NgControl, { self: true, optional: true }); this.size = this.options.size; this.showIcons = this.options.showIcons; } ngDoCheck() { this.appearance.tuiAppearance = this.options.appearance(this.el); } get icon() { const { options, resolver, size } = this; const icon = tuiIsString(options.icon) ? options.icon : options.icon(size); return this.showIcons && icon ? `url(${resolver(icon)})` : null; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwitch, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwitch, isStandalone: true, selector: "input[type=\"checkbox\"][tuiSwitch]", inputs: { size: "size", showIcons: "showIcons" }, host: { attributes: { "role": "switch" }, properties: { "disabled": "!control || control.disabled", "attr.data-size": "size", "class._readonly": "!control", "style.--t-checked-icon": "icon" } }, hostDirectives: [{ directive: i1.TuiAppearance, inputs: ["tuiAppearanceState", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceFocus"] }, { directive: i2.TuiNativeValidator }], ngImport: i0, template: '', isInline: true, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0;color:#fff!important}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;block-size:100%;inline-size:1.5rem}[tuiSwitch]:before{display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } export { TuiSwitch }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwitch, decorators: [{ type: Component, args: [{ standalone: true, selector: 'input[type="checkbox"][tuiSwitch]', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [ { directive: TuiAppearance, inputs: ['tuiAppearanceState', 'tuiAppearanceFocus'], }, TuiNativeValidator, ], host: { role: 'switch', '[disabled]': '!control || control.disabled', '[attr.data-size]': 'size', '[class._readonly]': '!control', '[style.--t-checked-icon]': 'icon', }, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0;color:#fff!important}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;block-size:100%;inline-size:1.5rem}[tuiSwitch]:before{display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}\n"] }] }], propDecorators: { size: [{ type: Input }], showIcons: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3N3aXRjaC9zd2l0Y2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRzVELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7O0FBRXBELE1Bc0JhLFNBQVM7SUF0QnRCO1FBdUJxQixlQUFVLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25DLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyQyxPQUFFLEdBQUcsZ0JBQWdCLEVBQW9CLENBQUM7UUFFeEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBR3RFLFNBQUksR0FBYSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUduQyxjQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FZN0M7SUFWVSxTQUFTO1FBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFjLElBQUk7UUFDZCxNQUFNLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRSxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEUsQ0FBQzsrR0F2QlEsU0FBUzttR0FBVCxTQUFTLCtnQkFuQlIsRUFBRTs7U0FtQkgsU0FBUzs0RkFBVCxTQUFTO2tCQXRCckIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sbUNBQW1DLFlBQ25DLEVBQUUsaUJBRUcsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxrQkFDL0I7d0JBQ1o7NEJBQ0ksU0FBUyxFQUFFLGFBQWE7NEJBQ3hCLE1BQU0sRUFBRSxDQUFDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO3lCQUN2RDt3QkFDRCxrQkFBa0I7cUJBQ3JCLFFBQ0s7d0JBQ0YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsWUFBWSxFQUFFLDhCQUE4Qjt3QkFDNUMsa0JBQWtCLEVBQUUsTUFBTTt3QkFDMUIsbUJBQW1CLEVBQUUsVUFBVTt3QkFDL0IsMEJBQTBCLEVBQUUsTUFBTTtxQkFDckM7OEJBV00sSUFBSTtzQkFEVixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtEb0NoZWNrfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUdWlOYXRpdmVWYWxpZGF0b3J9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9uYXRpdmUtdmFsaWRhdG9yJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlJc1N0cmluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VHVpQXBwZWFyYW5jZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9hcHBlYXJhbmNlJztcbmltcG9ydCB7dHVpSW5qZWN0SWNvblJlc29sdmVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aVNpemVTfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7VFVJX1NXSVRDSF9PUFRJT05TfSBmcm9tICcuL3N3aXRjaC5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXVt0dWlTd2l0Y2hdJyxcbiAgICB0ZW1wbGF0ZTogJycsXG4gICAgc3R5bGVzOiBbJ0BpbXBvcnQgXCJAdGFpZ2EtdWkva2l0L3N0eWxlcy9jb21wb25lbnRzL3N3aXRjaC5sZXNzXCI7J10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IFR1aUFwcGVhcmFuY2UsXG4gICAgICAgICAgICBpbnB1dHM6IFsndHVpQXBwZWFyYW5jZVN0YXRlJywgJ3R1aUFwcGVhcmFuY2VGb2N1cyddLFxuICAgICAgICB9LFxuICAgICAgICBUdWlOYXRpdmVWYWxpZGF0b3IsXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdzd2l0Y2gnLFxuICAgICAgICAnW2Rpc2FibGVkXSc6ICchY29udHJvbCB8fCBjb250cm9sLmRpc2FibGVkJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc2l6ZV0nOiAnc2l6ZScsXG4gICAgICAgICdbY2xhc3MuX3JlYWRvbmx5XSc6ICchY29udHJvbCcsXG4gICAgICAgICdbc3R5bGUuLS10LWNoZWNrZWQtaWNvbl0nOiAnaWNvbicsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpU3dpdGNoIGltcGxlbWVudHMgRG9DaGVjayB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBlYXJhbmNlID0gaW5qZWN0KFR1aUFwcGVhcmFuY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZXIgPSB0dWlJbmplY3RJY29uUmVzb2x2ZXIoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX1NXSVRDSF9PUFRJT05TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7c2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWV9KTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNpemU6IFR1aVNpemVTID0gdGhpcy5vcHRpb25zLnNpemU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93SWNvbnMgPSB0aGlzLm9wdGlvbnMuc2hvd0ljb25zO1xuXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hcHBlYXJhbmNlLnR1aUFwcGVhcmFuY2UgPSB0aGlzLm9wdGlvbnMuYXBwZWFyYW5jZSh0aGlzLmVsKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGljb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHtvcHRpb25zLCByZXNvbHZlciwgc2l6ZX0gPSB0aGlzO1xuICAgICAgICBjb25zdCBpY29uID0gdHVpSXNTdHJpbmcob3B0aW9ucy5pY29uKSA/IG9wdGlvbnMuaWNvbiA6IG9wdGlvbnMuaWNvbihzaXplKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zaG93SWNvbnMgJiYgaWNvbiA/IGB1cmwoJHtyZXNvbHZlcihpY29uKX0pYCA6IG51bGw7XG4gICAgfVxufVxuIl19