UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

1 lines 7.46 kB
{"version":3,"file":"taiga-ui-kit-components-checkbox.mjs","sources":["../../../projects/kit/components/checkbox/checkbox.options.ts","../../../projects/kit/components/checkbox/checkbox.component.ts","../../../projects/kit/components/checkbox/taiga-ui-kit-components-checkbox.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiCheckboxOptions {\n readonly size: TuiSizeS;\n readonly appearance: TuiStringHandler<HTMLInputElement> | string;\n readonly icons: Readonly<{\n checked: TuiStringHandler<TuiSizeS> | string;\n indeterminate: TuiStringHandler<TuiSizeS> | string;\n }>;\n}\n\nexport const TUI_CHECKBOX_DEFAULT_OPTIONS: TuiCheckboxOptions = {\n size: 'm',\n appearance: (el) =>\n el.checked || el.indeterminate ? 'primary' : 'outline-grayscale',\n icons: {\n checked: '@tui.check',\n indeterminate: '@tui.minus',\n },\n};\n\nexport const TUI_CHECKBOX_OPTIONS = tuiCreateToken(TUI_CHECKBOX_DEFAULT_OPTIONS);\n\nexport function tuiCheckboxOptionsProvider(\n options: Partial<TuiCheckboxOptions>,\n): Provider {\n return tuiProvideOptions(TUI_CHECKBOX_OPTIONS, options, TUI_CHECKBOX_DEFAULT_OPTIONS);\n}\n","import type {DoCheck, OnInit} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TUI_CHECKBOX_OPTIONS} from './checkbox.options';\n\n@Component({\n standalone: true,\n selector: 'input[type=\"checkbox\"][tuiCheckbox]',\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/checkbox.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiAppearance,\n inputs: ['tuiAppearanceState', 'tuiAppearanceFocus'],\n },\n\n TuiNativeValidator,\n ],\n host: {\n '[disabled]': '!control || control.disabled',\n '[attr.data-size]': 'size',\n '[class._readonly]': '!control',\n '[style.--t-checked-icon]': 'getIcon(\"checked\")',\n '[style.--t-indeterminate-icon]': 'getIcon(\"indeterminate\")',\n },\n})\nexport class TuiCheckbox implements OnInit, DoCheck {\n private readonly appearance = inject(TuiAppearance);\n private readonly options = inject(TUI_CHECKBOX_OPTIONS);\n private readonly resolver = tuiInjectIconResolver();\n private readonly destroyRef = inject(DestroyRef);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n\n @Input()\n public size: TuiSizeS = this.options.size;\n\n public readonly control: NgControl | null = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n public ngOnInit(): void {\n if (!this.control?.valueChanges) {\n return;\n }\n\n tuiControlValue(this.control)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n // https://github.com/angular/angular/issues/14988\n const fix =\n this.control instanceof NgModel && value === null\n ? this.control.model\n : value;\n\n this.el.indeterminate = fix === null;\n });\n }\n\n public ngDoCheck(): void {\n this.appearance.tuiAppearance = tuiIsString(this.options.appearance)\n ? this.options.appearance\n : this.options.appearance(this.el);\n }\n\n protected getIcon(state: 'checked' | 'indeterminate'): string {\n const option = this.options.icons[state];\n const icon = tuiIsString(option) ? option : option(this.size);\n\n return icon && `url(${this.resolver(icon)})`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}