@taiga-ui/core 5.18.0 → 5.19.0-canary.b454a40
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.
- package/components/calendar/calendar.component.d.ts +1 -1
- package/components/error/error.d.ts +2 -2
- package/components/error/error.directive.d.ts +26 -7
- package/components/input/input.directive.d.ts +30 -3
- package/components/scrollbar/scroll-controls.component.d.ts +3 -2
- package/components/scrollbar/scroll-ref.directive.d.ts +1 -0
- package/components/scrollbar/scrollbar.component.d.ts +1 -1
- package/components/scrollbar/scrollbar.directive.d.ts +2 -3
- package/components/scrollbar/scrollbar.service.d.ts +4 -1
- package/components/textfield/textfield.component.d.ts +12 -2
- package/fesm2022/taiga-ui-core-components-button.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-calendar.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-cell.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-checkbox.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-checkbox.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-data-list.mjs +4 -4
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-error.mjs +98 -28
- package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-icon.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-input.mjs +50 -10
- package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-label.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-link.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-notification.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-radio.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-radio.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-root.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +86 -51
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +15 -5
- package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-title.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-group.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-icons.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-alert.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-dialog.mjs +2 -2
- package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs +2 -2
- package/fesm2022/taiga-ui-core-portals-hint.mjs +16 -5
- package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-modal.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +4 -2
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/package.json +36 -36
- package/portals/hint/hint-hover.directive.d.ts +5 -0
- package/portals/hint/hint.component.d.ts +1 -1
- package/tokens/index.d.ts +1 -0
- package/tokens/timeline-support.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-data-list.mjs","sources":["../../../projects/core/components/data-list/data-list.tokens.ts","../../../projects/core/components/data-list/option-content.directive.ts","../../../projects/core/components/data-list/option-with-content.directive.ts","../../../projects/core/components/data-list/option-with-value.directive.ts","../../../projects/core/components/data-list/data-list.component.ts","../../../projects/core/components/data-list/data-list.template.html","../../../projects/core/components/data-list/opt-group.directive.ts","../../../projects/core/components/data-list/option.directive.ts","../../../projects/core/components/data-list/data-list.ts","../../../projects/core/components/data-list/taiga-ui-core-components-data-list.ts"],"sourcesContent":["import {\n inject,\n InjectionToken,\n type Provider,\n type Signal,\n type Type,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiDataListAccessor<T = unknown> {\n options: Signal<readonly T[]>;\n}\n\nexport interface TuiDataListHost<T> {\n handleOption?(option: T): void;\n readonly size?: TuiSizeL | TuiSizeS;\n}\n\nexport const TUI_DATA_LIST_HOST = new InjectionToken<TuiDataListHost<unknown>>(\n ngDevMode ? 'TUI_DATA_LIST_HOST' : '',\n);\n\nexport function tuiAsDataListHost<T>(host: Type<TuiDataListHost<T>>): Provider {\n return tuiProvide(TUI_DATA_LIST_HOST, host);\n}\n\nexport const TUI_DATA_LIST_SIZE = new InjectionToken<TuiSizeL | TuiSizeS | ''>(\n ngDevMode ? 'TUI_DATA_LIST_SIZE' : '',\n);\n\nexport function tuiInjectDataListSize(): TuiSizeL | TuiSizeS {\n const sizes = ['s', 'm', 'l'] as const;\n\n const size =\n inject(TUI_DATA_LIST_SIZE, {optional: true}) ||\n inject(TUI_DATA_LIST_HOST, {optional: true})?.size;\n\n return size && sizes.includes(size) ? size : 'l';\n}\n","import {\n ContentChild,\n Directive,\n inject,\n InjectionToken,\n type Provider,\n type Type,\n} from '@angular/core';\n\n/**\n * Content for tuiOption component\n */\nexport const TUI_OPTION_CONTENT = new InjectionToken<Type<any>>(\n ngDevMode ? 'TUI_OPTION_CONTENT' : '',\n);\n\nexport function tuiAsOptionContent(useValue: Type<any>): Provider {\n return {provide: TUI_OPTION_CONTENT, useValue};\n}\n\n@Directive()\nexport class TuiWithOptionContent {\n @ContentChild(TUI_OPTION_CONTENT, {descendants: true})\n protected readonly local: Type<any> | null = null;\n\n protected readonly global = inject<Type<any>>(TUI_OPTION_CONTENT, {optional: true});\n\n public get content(): Type<any> | null | undefined {\n return this.global ?? this.local;\n }\n}\n","import {\n createComponent,\n Directive,\n EnvironmentInjector,\n inject,\n INJECTOR,\n ViewContainerRef,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {TUI_OPTION_CONTENT} from './option-content.directive';\n\n@Directive()\nexport class TuiOptionWithContent {\n private readonly vcr = inject(ViewContainerRef);\n private readonly content = inject(TUI_OPTION_CONTENT, {optional: true});\n\n private readonly ref =\n this.content &&\n createComponent(this.content, {\n environmentInjector: inject(EnvironmentInjector),\n elementInjector: inject(INJECTOR),\n hostElement: tuiInjectElement(),\n });\n\n constructor() {\n if (this.ref) {\n this.vcr.insert(this.ref.hostView);\n this.ref.changeDetectorRef.detectChanges();\n }\n }\n}\n","import {Directive, inject, input} from '@angular/core';\n\nimport {TUI_DATA_LIST_HOST} from './data-list.tokens';\nimport {TuiOptionWithContent} from './option-with-content.directive';\n\n@Directive({\n selector: 'button[tuiOption][value], a[tuiOption][value], label[tuiOption][value]',\n hostDirectives: [TuiOptionWithContent],\n host: {'(click)': 'onClick()'},\n})\nexport class TuiOptionWithValue<T = unknown> {\n private readonly host = inject(TUI_DATA_LIST_HOST, {optional: true});\n\n public readonly disabled = input(false);\n public readonly value = input<T>();\n\n protected onClick(value = this.value()): void {\n if (value !== undefined) {\n this.host?.handleOption?.(value);\n }\n }\n}\n","import {\n type AfterContentChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n forwardRef,\n inject,\n input,\n NgZone,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiTakeUntilDestroyed, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsFocusedIn, tuiMoveFocus} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiCell, tuiCellOptionsProvider} from '@taiga-ui/core/components/cell';\nimport {TUI_NOTHING_FOUND_MESSAGE, tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {timer} from 'rxjs';\n\nimport {type TuiDataListAccessor, tuiInjectDataListSize} from './data-list.tokens';\nimport {TUI_OPTION_CONTENT, TuiWithOptionContent} from './option-content.directive';\nimport {TuiOptionWithValue} from './option-with-value.directive';\n\n// TODO: Consider aria-activedescendant for proper accessibility implementation\n@Component({\n selector: 'tui-data-list',\n imports: [PolymorpheusOutlet, TuiCell],\n templateUrl: './data-list.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './data-list.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiCellOptionsProvider(() => ({size: inject(TuiDataListComponent).size()})),\n tuiAsAuxiliary(TuiDataListComponent),\n {\n provide: TUI_OPTION_CONTENT,\n useFactory: () =>\n inject(TuiWithOptionContent, {optional: true})?.content ??\n inject(TUI_OPTION_CONTENT, {skipSelf: true, optional: true}),\n },\n ],\n host: {\n 'data-tui-version': TUI_VERSION,\n role: 'listbox',\n '[attr.data-size]': 'size()',\n '[attr.role]': 'role',\n '(focusin)': 'onFocusIn($event.relatedTarget, $event.currentTarget)',\n '(keydown.arrowDown.prevent)': 'onKeyDownArrow($event.target, 1)',\n '(keydown.arrowUp.prevent)': 'onKeyDownArrow($event.target, -1)',\n '(keydown.shift.tab)': 'handleFocusLossIfNecessary()',\n '(keydown.tab)': 'handleFocusLossIfNecessary()',\n '(mousedown.prevent)': '(0)',\n '(mouseleave)': 'handleFocusLossIfNecessary($event.target)',\n '(wheel.zoneless.passive)': 'handleFocusLossIfNecessary()',\n },\n})\nexport class TuiDataListComponent<T>\n implements TuiDataListAccessor<T>, AfterContentChecked\n{\n private origin?: HTMLElement;\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private readonly el = tuiInjectElement();\n private readonly cdr = inject(ChangeDetectorRef);\n\n private readonly optionsQuery = contentChildren<TuiOptionWithValue<T>>(\n forwardRef(() => TuiOptionWithValue),\n {descendants: true},\n );\n\n protected readonly fallback = inject(TUI_NOTHING_FOUND_MESSAGE);\n protected readonly empty = signal(false);\n\n public readonly emptyContent = input<PolymorpheusContent>();\n public readonly size = input(tuiInjectDataListSize());\n\n public readonly options = computed(() =>\n this.optionsQuery()\n .map(({value}) => value())\n .filter(tuiIsPresent),\n );\n\n public onKeyDownArrow(current: HTMLElement, step: number): void {\n const {elements} = this;\n\n tuiMoveFocus(elements.indexOf(current), elements, step);\n }\n\n public handleFocusLossIfNecessary(element: Element = this.el): void {\n if (tuiIsFocusedIn(element)) {\n this.origin?.focus({preventScroll: true});\n }\n }\n\n public ngAfterContentChecked(): void {\n // TODO: Refactor to :has after Safari support bumped to 15\n timer(0)\n .pipe(tuiZonefree(this.ngZone), tuiTakeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.empty.set(!this.elements.length);\n this.cdr.detectChanges();\n });\n }\n\n protected get role(): string | null {\n return this.el.parentElement?.closest('[role=\"menu\"],[role=\"listbox\"]')\n ? null\n : this.el.role;\n }\n\n protected onFocusIn(relatedTarget: HTMLElement, currentTarget: HTMLElement): void {\n if (!currentTarget.contains(relatedTarget) && !this.origin) {\n this.origin = relatedTarget;\n }\n }\n\n private get elements(): readonly HTMLElement[] {\n return Array.from(this.el.querySelectorAll('[tuiOption]:not(.t-empty)'));\n }\n}\n","<ng-content />\n@if (empty()) {\n <!-- tuiOption selector purely for cosmetics, do not import -->\n <span\n tuiCell\n tuiOption\n class=\"t-empty\"\n >\n <ng-container *polymorpheusOutlet=\"emptyContent() || fallback() as text\">\n {{ text }}\n </ng-container>\n </span>\n}\n","import {Directive, input} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\n\n@Directive({\n selector: 'tui-opt-group',\n host: {\n 'data-tui-version': TUI_VERSION,\n role: 'group',\n '[attr.data-label]': 'label() || \"\"',\n },\n})\nexport class TuiOptGroup {\n public readonly label = input<string | null>();\n}\n","import {Directive, forwardRef, inject, input, type OnDestroy} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {TuiCell} from '@taiga-ui/core/components/cell';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiDataListComponent} from './data-list.component';\n\n@Directive({\n selector: 'button[tuiOption], a[tuiOption], label[tuiOption]',\n hostDirectives: [TuiWithIcons, TuiCell],\n host: {\n role: 'option',\n type: 'button',\n '[attr.disabled]': 'disabled() || null',\n '[class._with-dropdown]': 'dropdown?.()',\n '(mousemove.zoneless)': 'onMouseMove()',\n },\n})\nexport class TuiOption<T = unknown> implements OnDestroy {\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly el = tuiInjectElement();\n\n private readonly datalist = inject<TuiDataListComponent<T>>(\n forwardRef(() => TuiDataListComponent),\n {optional: true},\n );\n\n protected readonly dropdown = inject(TuiDropdownDirective, {\n self: true,\n optional: true,\n })?.ref;\n\n public readonly disabled = input(false);\n\n // Preventing focus loss upon focused option removal\n public ngOnDestroy(): void {\n this.datalist?.handleFocusLossIfNecessary(this.el);\n }\n\n protected onMouseMove(): void {\n if (\n !this.isMobile &&\n !tuiIsFocused(this.el) &&\n this.datalist &&\n this.el.closest('[tuiDataListDropdownManager]')\n ) {\n this.el.focus({preventScroll: true});\n }\n }\n}\n","import {TuiDataListComponent} from './data-list.component';\nimport {TuiOptGroup} from './opt-group.directive';\nimport {TuiOption} from './option.directive';\nimport {TuiOptionWithValue} from './option-with-value.directive';\n\nexport const TuiDataList = [\n TuiDataListComponent,\n TuiOption,\n TuiOptionWithValue,\n TuiOptGroup,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiOptionWithContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-data-list.mjs","sources":["../../../projects/core/components/data-list/data-list.tokens.ts","../../../projects/core/components/data-list/option-content.directive.ts","../../../projects/core/components/data-list/option-with-content.directive.ts","../../../projects/core/components/data-list/option-with-value.directive.ts","../../../projects/core/components/data-list/data-list.component.ts","../../../projects/core/components/data-list/data-list.template.html","../../../projects/core/components/data-list/opt-group.directive.ts","../../../projects/core/components/data-list/option.directive.ts","../../../projects/core/components/data-list/data-list.ts","../../../projects/core/components/data-list/taiga-ui-core-components-data-list.ts"],"sourcesContent":["import {\n inject,\n InjectionToken,\n type Provider,\n type Signal,\n type Type,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiDataListAccessor<T = unknown> {\n options: Signal<readonly T[]>;\n}\n\nexport interface TuiDataListHost<T> {\n handleOption?(option: T): void;\n readonly size?: TuiSizeL | TuiSizeS;\n}\n\nexport const TUI_DATA_LIST_HOST = new InjectionToken<TuiDataListHost<unknown>>(\n ngDevMode ? 'TUI_DATA_LIST_HOST' : '',\n);\n\nexport function tuiAsDataListHost<T>(host: Type<TuiDataListHost<T>>): Provider {\n return tuiProvide(TUI_DATA_LIST_HOST, host);\n}\n\nexport const TUI_DATA_LIST_SIZE = new InjectionToken<TuiSizeL | TuiSizeS | ''>(\n ngDevMode ? 'TUI_DATA_LIST_SIZE' : '',\n);\n\nexport function tuiInjectDataListSize(): TuiSizeL | TuiSizeS {\n const sizes = ['s', 'm', 'l'] as const;\n\n const size =\n inject(TUI_DATA_LIST_SIZE, {optional: true}) ||\n inject(TUI_DATA_LIST_HOST, {optional: true})?.size;\n\n return size && sizes.includes(size) ? size : 'l';\n}\n","import {\n ContentChild,\n Directive,\n inject,\n InjectionToken,\n type Provider,\n type Type,\n} from '@angular/core';\n\n/**\n * Content for tuiOption component\n */\nexport const TUI_OPTION_CONTENT = new InjectionToken<Type<any>>(\n ngDevMode ? 'TUI_OPTION_CONTENT' : '',\n);\n\nexport function tuiAsOptionContent(useValue: Type<any>): Provider {\n return {provide: TUI_OPTION_CONTENT, useValue};\n}\n\n@Directive()\nexport class TuiWithOptionContent {\n @ContentChild(TUI_OPTION_CONTENT, {descendants: true})\n protected readonly local: Type<any> | null = null;\n\n protected readonly global = inject<Type<any>>(TUI_OPTION_CONTENT, {optional: true});\n\n public get content(): Type<any> | null | undefined {\n return this.global ?? this.local;\n }\n}\n","import {\n createComponent,\n Directive,\n EnvironmentInjector,\n inject,\n INJECTOR,\n ViewContainerRef,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {TUI_OPTION_CONTENT} from './option-content.directive';\n\n@Directive()\nexport class TuiOptionWithContent {\n private readonly vcr = inject(ViewContainerRef);\n private readonly content = inject(TUI_OPTION_CONTENT, {optional: true});\n\n private readonly ref =\n this.content &&\n createComponent(this.content, {\n environmentInjector: inject(EnvironmentInjector),\n elementInjector: inject(INJECTOR),\n hostElement: tuiInjectElement(),\n });\n\n constructor() {\n if (this.ref) {\n this.vcr.insert(this.ref.hostView);\n this.ref.changeDetectorRef.detectChanges();\n }\n }\n}\n","import {Directive, inject, input} from '@angular/core';\n\nimport {TUI_DATA_LIST_HOST} from './data-list.tokens';\nimport {TuiOptionWithContent} from './option-with-content.directive';\n\n@Directive({\n selector: 'button[tuiOption][value], a[tuiOption][value], label[tuiOption][value]',\n hostDirectives: [TuiOptionWithContent],\n host: {'(click)': 'onClick()'},\n})\nexport class TuiOptionWithValue<T = unknown> {\n private readonly host = inject(TUI_DATA_LIST_HOST, {optional: true});\n\n public readonly disabled = input(false);\n public readonly value = input<T>();\n\n protected onClick(value = this.value()): void {\n if (value !== undefined) {\n this.host?.handleOption?.(value);\n }\n }\n}\n","import {\n type AfterContentChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n forwardRef,\n inject,\n input,\n NgZone,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiTakeUntilDestroyed, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsFocusedIn, tuiMoveFocus} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiCell, tuiCellOptionsProvider} from '@taiga-ui/core/components/cell';\nimport {TUI_NOTHING_FOUND_MESSAGE, tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {timer} from 'rxjs';\n\nimport {type TuiDataListAccessor, tuiInjectDataListSize} from './data-list.tokens';\nimport {TUI_OPTION_CONTENT, TuiWithOptionContent} from './option-content.directive';\nimport {TuiOptionWithValue} from './option-with-value.directive';\n\n// TODO: Consider aria-activedescendant for proper accessibility implementation\n@Component({\n selector: 'tui-data-list',\n imports: [PolymorpheusOutlet, TuiCell],\n templateUrl: './data-list.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './data-list.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiCellOptionsProvider(() => ({size: inject(TuiDataListComponent).size()})),\n tuiAsAuxiliary(TuiDataListComponent),\n {\n provide: TUI_OPTION_CONTENT,\n useFactory: () =>\n inject(TuiWithOptionContent, {optional: true})?.content ??\n inject(TUI_OPTION_CONTENT, {skipSelf: true, optional: true}),\n },\n ],\n host: {\n 'data-tui-version': TUI_VERSION,\n role: 'listbox',\n '[attr.data-size]': 'size()',\n '[attr.role]': 'role',\n '(focusin)': 'onFocusIn($event.relatedTarget, $event.currentTarget)',\n '(keydown.arrowDown.prevent)': 'onKeyDownArrow($event.target, 1)',\n '(keydown.arrowUp.prevent)': 'onKeyDownArrow($event.target, -1)',\n '(keydown.shift.tab)': 'handleFocusLossIfNecessary()',\n '(keydown.tab)': 'handleFocusLossIfNecessary()',\n '(mousedown.prevent)': '(0)',\n '(mouseleave)': 'handleFocusLossIfNecessary($event.target)',\n '(wheel.zoneless.passive)': 'handleFocusLossIfNecessary()',\n },\n})\nexport class TuiDataListComponent<T>\n implements TuiDataListAccessor<T>, AfterContentChecked\n{\n private origin?: HTMLElement;\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private readonly el = tuiInjectElement();\n private readonly cdr = inject(ChangeDetectorRef);\n\n private readonly optionsQuery = contentChildren<TuiOptionWithValue<T>>(\n forwardRef(() => TuiOptionWithValue),\n {descendants: true},\n );\n\n protected readonly fallback = inject(TUI_NOTHING_FOUND_MESSAGE);\n protected readonly empty = signal(false);\n\n public readonly emptyContent = input<PolymorpheusContent>();\n public readonly size = input(tuiInjectDataListSize());\n\n public readonly options = computed(() =>\n this.optionsQuery()\n .map(({value}) => value())\n .filter(tuiIsPresent),\n );\n\n public onKeyDownArrow(current: HTMLElement, step: number): void {\n const {elements} = this;\n\n tuiMoveFocus(elements.indexOf(current), elements, step);\n }\n\n public handleFocusLossIfNecessary(element: Element = this.el): void {\n if (tuiIsFocusedIn(element)) {\n this.origin?.focus({preventScroll: true});\n }\n }\n\n public ngAfterContentChecked(): void {\n // TODO: Refactor to :has after Safari support bumped to 15\n timer(0)\n .pipe(tuiZonefree(this.ngZone), tuiTakeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.empty.set(!this.elements.length);\n this.cdr.detectChanges();\n });\n }\n\n protected get role(): string | null {\n return this.el.parentElement?.closest('[role=\"menu\"],[role=\"listbox\"]')\n ? null\n : this.el.role;\n }\n\n protected onFocusIn(relatedTarget: HTMLElement, currentTarget: HTMLElement): void {\n if (!currentTarget.contains(relatedTarget) && !this.origin) {\n this.origin = relatedTarget;\n }\n }\n\n private get elements(): readonly HTMLElement[] {\n return Array.from(this.el.querySelectorAll('[tuiOption]:not(.t-empty)'));\n }\n}\n","<ng-content />\n@if (empty()) {\n <!-- tuiOption selector purely for cosmetics, do not import -->\n <span\n tuiCell\n tuiOption\n class=\"t-empty\"\n >\n <ng-container *polymorpheusOutlet=\"emptyContent() || fallback() as text\">\n {{ text }}\n </ng-container>\n </span>\n}\n","import {Directive, input} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\n\n@Directive({\n selector: 'tui-opt-group',\n host: {\n 'data-tui-version': TUI_VERSION,\n role: 'group',\n '[attr.data-label]': 'label() || \"\"',\n },\n})\nexport class TuiOptGroup {\n public readonly label = input<string | null>();\n}\n","import {Directive, forwardRef, inject, input, type OnDestroy} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {TuiCell} from '@taiga-ui/core/components/cell';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiDataListComponent} from './data-list.component';\n\n@Directive({\n selector: 'button[tuiOption], a[tuiOption], label[tuiOption]',\n hostDirectives: [TuiWithIcons, TuiCell],\n host: {\n role: 'option',\n type: 'button',\n '[attr.disabled]': 'disabled() || null',\n '[class._with-dropdown]': 'dropdown?.()',\n '(mousemove.zoneless)': 'onMouseMove()',\n },\n})\nexport class TuiOption<T = unknown> implements OnDestroy {\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly el = tuiInjectElement();\n\n private readonly datalist = inject<TuiDataListComponent<T>>(\n forwardRef(() => TuiDataListComponent),\n {optional: true},\n );\n\n protected readonly dropdown = inject(TuiDropdownDirective, {\n self: true,\n optional: true,\n })?.ref;\n\n public readonly disabled = input(false);\n\n // Preventing focus loss upon focused option removal\n public ngOnDestroy(): void {\n this.datalist?.handleFocusLossIfNecessary(this.el);\n }\n\n protected onMouseMove(): void {\n if (\n !this.isMobile &&\n !tuiIsFocused(this.el) &&\n this.datalist &&\n this.el.closest('[tuiDataListDropdownManager]')\n ) {\n this.el.focus({preventScroll: true});\n }\n }\n}\n","import {TuiDataListComponent} from './data-list.component';\nimport {TuiOptGroup} from './opt-group.directive';\nimport {TuiOption} from './option.directive';\nimport {TuiOptionWithValue} from './option-with-value.directive';\n\nexport const TuiDataList = [\n TuiDataListComponent,\n TuiOption,\n TuiOptionWithValue,\n TuiOptGroup,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiOptionWithContent"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, computed, input, ChangeDetectionStrategy, Component, isSignal, Directive, TemplateRef, untracked, Pipe } from '@angular/core';
|
|
2
|
+
import { inject, computed, input, ChangeDetectionStrategy, Component, isSignal, Directive, model, TemplateRef, untracked, Pipe } from '@angular/core';
|
|
3
3
|
import { TuiValidationError } from '@taiga-ui/cdk/classes';
|
|
4
4
|
import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
|
|
5
5
|
import { tuiIsString, tuiSetSignal } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
@@ -27,27 +27,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
27
27
|
args: [{ selector: 'tui-error', imports: [PolymorpheusOutlet, TuiAnimated], changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class._error]': 'content()' }, template: "@if (content(); as error) {\n <span\n tuiAnimated\n class=\"t-message-text\"\n >\n <span\n *polymorpheusOutlet=\"error.message || default() as text; context: error.context || {}\"\n [innerHTML]=\"text\"\n ></span>\n </span>\n}\n", styles: [":host{transition-property:grid-template-rows;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);display:grid;font:var(--tui-typography-body-s);color:var(--tui-text-negative);overflow-wrap:break-word;grid-template-rows:0fr}:host._error{grid-template-rows:1fr;transition-duration:var(--tui-duration)}.t-message-text{white-space:pre-line;grid-area:1 / 1 / span 2}.t-message-text.tui-enter{animation-name:tuiFade}.t-message-text.tui-leave{animation-name:tuiFade;animation-duration:calc(var(--tui-duration) / 2)}.t-message-text:before{content:\"\";line-height:calc(24 / 14);vertical-align:bottom}\n"] }]
|
|
28
28
|
}] });
|
|
29
29
|
|
|
30
|
-
class
|
|
30
|
+
class AbstractTuiErrorDirective {
|
|
31
31
|
constructor() {
|
|
32
32
|
this.el = tuiInjectElement();
|
|
33
33
|
this.content = inject(TUI_VALIDATION_ERRORS);
|
|
34
|
-
this.control = new BehaviorSubject(null);
|
|
35
|
-
this.errors = toSignal(this.control.pipe(filter(Boolean), distinctUntilChanged(), switchMap((control) => control.events.pipe(startWith(null), map(() => !control.disabled && control.touched && control.errors)))));
|
|
36
|
-
this.key = computed((errors = this.errors() || {}) => this.order().find((id) => errors[id]) || Object.keys(errors)[0] || '');
|
|
37
34
|
this.order = input([]);
|
|
38
|
-
this
|
|
39
|
-
}
|
|
40
|
-
registerOnChange() { }
|
|
41
|
-
registerOnTouched() { }
|
|
42
|
-
writeValue() { }
|
|
43
|
-
validate(control) {
|
|
44
|
-
this.control.next(control);
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
onValidator(validator) {
|
|
48
|
-
if (this.control.value && validator.control === this.control.value) {
|
|
49
|
-
validator.id = this.el.id;
|
|
50
|
-
}
|
|
35
|
+
this.$ = tuiDirectiveBinding(TuiErrorComponent, 'error', computed(() => this.error()), { self: true, optional: true });
|
|
51
36
|
}
|
|
52
37
|
getError(context, content) {
|
|
53
38
|
context = isSignal(context) ? context() : context;
|
|
@@ -66,11 +51,41 @@ class TuiErrorDirective {
|
|
|
66
51
|
}
|
|
67
52
|
return getError(content, context);
|
|
68
53
|
}
|
|
69
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type:
|
|
70
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type:
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AbstractTuiErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: AbstractTuiErrorDirective, isStandalone: true, inputs: { order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-live": "polite" } }, hostDirectives: [{ directive: i1.TuiId }], ngImport: i0 }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AbstractTuiErrorDirective, decorators: [{
|
|
58
|
+
type: Directive,
|
|
59
|
+
args: [{
|
|
60
|
+
hostDirectives: [TuiId],
|
|
61
|
+
host: { 'aria-live': 'polite' },
|
|
62
|
+
}]
|
|
63
|
+
}] });
|
|
64
|
+
class TuiErrorDirective extends AbstractTuiErrorDirective {
|
|
65
|
+
constructor() {
|
|
66
|
+
super(...arguments);
|
|
67
|
+
this.control = new BehaviorSubject(null);
|
|
68
|
+
this.errors = toSignal(this.control.pipe(filter(Boolean), distinctUntilChanged(), switchMap((control) => control.events.pipe(startWith(null), map(() => !control.disabled && control.touched && control.errors)))));
|
|
69
|
+
this.key = computed((errors = this.errors() || {}) => this.order().find((id) => errors[id]) || Object.keys(errors)[0] || '');
|
|
70
|
+
this.error = computed((errors = this.errors() || null) => errors && this.getError(errors[this.key()], this.content[this.key()]));
|
|
71
|
+
}
|
|
72
|
+
registerOnChange() { }
|
|
73
|
+
registerOnTouched() { }
|
|
74
|
+
writeValue() { }
|
|
75
|
+
validate(control) {
|
|
76
|
+
this.control.next(control);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
onValidator(validator) {
|
|
80
|
+
if (this.control.value && validator.control === this.control.value) {
|
|
81
|
+
validator.id = this.el.id;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiErrorDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
85
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiErrorDirective, isStandalone: true, selector: "tui-error[ngModel], tui-error[formControlName], tui-error[formControl], tui-error[formGroup], tui-error[formGroupName], tui-error[formArrayName], tui-error[formArray]", host: { listeners: { "document:tui-validator.zoneless": "onValidator($event.detail)" } }, providers: [
|
|
71
86
|
tuiProvide(NG_VALUE_ACCESSOR, TuiErrorDirective, true),
|
|
72
87
|
tuiProvide(NG_VALIDATORS, TuiErrorDirective, true),
|
|
73
|
-
],
|
|
88
|
+
], usesInheritance: true, ngImport: i0 }); }
|
|
74
89
|
}
|
|
75
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiErrorDirective, decorators: [{
|
|
76
91
|
type: Directive,
|
|
@@ -80,11 +95,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
80
95
|
tuiProvide(NG_VALUE_ACCESSOR, TuiErrorDirective, true),
|
|
81
96
|
tuiProvide(NG_VALIDATORS, TuiErrorDirective, true),
|
|
82
97
|
],
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
98
|
+
host: { '(document:tui-validator.zoneless)': 'onValidator($event.detail)' },
|
|
99
|
+
}]
|
|
100
|
+
}] });
|
|
101
|
+
class TuiErrorField extends AbstractTuiErrorDirective {
|
|
102
|
+
constructor() {
|
|
103
|
+
super(...arguments);
|
|
104
|
+
// TODO: use inject(FORM_FIELD) from `@angular/forms/signals` after update to Angular >= 21
|
|
105
|
+
// @ts-expect-error
|
|
106
|
+
this.field = inject(NgControl, { self: true }).field;
|
|
107
|
+
this.errors = input([]);
|
|
108
|
+
this.touched = input(false);
|
|
109
|
+
this.value = model(null);
|
|
110
|
+
this.error = computed((errors = this.errors()) => {
|
|
111
|
+
if (!this.touched()) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const kind = this.order().find((id) => errors.find(({ kind }) => kind === id));
|
|
115
|
+
const error = kind ? errors.find((x) => x.kind === kind) : errors[0];
|
|
116
|
+
return error
|
|
117
|
+
? this.getError(error, error.message ?? this.content[error.kind])
|
|
118
|
+
: null;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
onValidator(validator) {
|
|
122
|
+
/**
|
|
123
|
+
* Signal forms have no `AbstractControl`: `inject(NgControl)` returns Angular's internal
|
|
124
|
+
* `InteropNgControl`, and every `[formField]` builds ITS OWN INSTANCE. So two bindings of the
|
|
125
|
+
* same field hold two different controls, and comparing them by identity is meaningless:
|
|
126
|
+
*
|
|
127
|
+
* ```html
|
|
128
|
+
* <input [formField]="form.name" />
|
|
129
|
+
* <tui-error [formField]="form.name" />
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* What they do share is the `FieldState` behind them, but the only way to it is the
|
|
133
|
+
* undocumented `field` property — hence the index access.
|
|
134
|
+
*
|
|
135
|
+
* TODO: read the state through the public `FORM_FIELD` token once Taiga UI drops Angular < 22
|
|
136
|
+
* https://angular.dev/api/forms/signals/FORM_FIELD
|
|
137
|
+
*/
|
|
138
|
+
// @ts-ignore
|
|
139
|
+
const validatorField = validator.control.field?.();
|
|
140
|
+
const field = this.field?.();
|
|
141
|
+
if (field && validatorField === field) {
|
|
142
|
+
validator.id = this.el.id;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiErrorField, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
146
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiErrorField, isStandalone: true, selector: "tui-error[formField]", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "document:tui-validator.zoneless": "onValidator($event.detail)" } }, usesInheritance: true, ngImport: i0 }); }
|
|
147
|
+
}
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiErrorField, decorators: [{
|
|
149
|
+
type: Directive,
|
|
150
|
+
args: [{
|
|
151
|
+
selector: 'tui-error[formField]',
|
|
152
|
+
host: { '(document:tui-validator.zoneless)': 'onValidator($event.detail)' },
|
|
88
153
|
}]
|
|
89
154
|
}] });
|
|
90
155
|
function getError(content = '', context) {
|
|
@@ -126,11 +191,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
126
191
|
}]
|
|
127
192
|
}] });
|
|
128
193
|
|
|
129
|
-
const TuiError = [
|
|
194
|
+
const TuiError = [
|
|
195
|
+
TuiErrorComponent,
|
|
196
|
+
TuiErrorDirective,
|
|
197
|
+
TuiErrorField,
|
|
198
|
+
TuiErrorPipe,
|
|
199
|
+
];
|
|
130
200
|
|
|
131
201
|
/**
|
|
132
202
|
* Generated bundle index. Do not edit.
|
|
133
203
|
*/
|
|
134
204
|
|
|
135
|
-
export { TuiError, TuiErrorComponent, TuiErrorDirective, TuiErrorPipe };
|
|
205
|
+
export { AbstractTuiErrorDirective, TuiError, TuiErrorComponent, TuiErrorDirective, TuiErrorField, TuiErrorPipe };
|
|
136
206
|
//# sourceMappingURL=taiga-ui-core-components-error.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-error.mjs","sources":["../../../projects/core/components/error/error.component.ts","../../../projects/core/components/error/error.template.html","../../../projects/core/components/error/error.directive.ts","../../../projects/core/components/error/error.pipe.ts","../../../projects/core/components/error/error.ts","../../../projects/core/components/error/taiga-ui-core-components-error.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {TuiValidationError} from '@taiga-ui/cdk/classes';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DEFAULT_ERROR_MESSAGE} from '@taiga-ui/core/tokens';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-error',\n imports: [PolymorpheusOutlet, TuiAnimated],\n templateUrl: './error.template.html',\n styleUrl: './error.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[class._error]': 'content()'},\n})\nexport class TuiErrorComponent {\n protected readonly default = inject(TUI_DEFAULT_ERROR_MESSAGE);\n\n protected readonly content = computed((error = this.error()) =>\n tuiIsString(error) ? new TuiValidationError(error) : error,\n );\n\n public readonly error = input<TuiValidationError | string | null>(null);\n}\n","@if (content(); as error) {\n <span\n tuiAnimated\n class=\"t-message-text\"\n >\n <span\n *polymorpheusOutlet=\"error.message || default() as text; context: error.context || {}\"\n [innerHTML]=\"text\"\n ></span>\n </span>\n}\n","import {\n computed,\n Directive,\n inject,\n input,\n isSignal,\n type Signal,\n TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n type ValidationErrors,\n type Validator,\n} from '@angular/forms';\nimport {TuiValidationError} from '@taiga-ui/cdk/classes';\nimport {TuiId} from '@taiga-ui/cdk/directives/id';\nimport {type TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiDirectiveBinding, tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_VALIDATION_ERRORS} from '@taiga-ui/core/tokens';\nimport {\n PolymorpheusComponent,\n type PolymorpheusContent,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n} from 'rxjs';\n\nimport {TuiErrorComponent} from './error.component';\n\n@Directive({\n selector:\n 'tui-error[ngModel], tui-error[formControlName], tui-error[formControl], tui-error[formGroup], tui-error[formGroupName], tui-error[formArrayName], tui-error[formArray]',\n providers: [\n tuiProvide(NG_VALUE_ACCESSOR, TuiErrorDirective, true),\n tuiProvide(NG_VALIDATORS, TuiErrorDirective, true),\n ],\n hostDirectives: [TuiId],\n host: {\n 'aria-live': 'polite',\n '(document:tui-validator.zoneless)': 'onValidator($event.detail)',\n },\n})\nexport class TuiErrorDirective implements ControlValueAccessor, Validator {\n private readonly el = tuiInjectElement();\n private readonly content = inject(TUI_VALIDATION_ERRORS);\n private readonly control = new BehaviorSubject<AbstractControl | null>(null);\n\n private readonly errors = toSignal(\n this.control.pipe(\n filter(Boolean),\n distinctUntilChanged(),\n switchMap((control) =>\n control.events.pipe(\n startWith(null),\n map(() => !control.disabled && control.touched && control.errors),\n ),\n ),\n ),\n );\n\n private readonly key = computed(\n (errors = this.errors() || {}) =>\n this.order().find((id) => errors[id]) || Object.keys(errors)[0] || '',\n );\n\n public readonly order = input<readonly string[]>([]);\n\n public readonly error = tuiDirectiveBinding(\n TuiErrorComponent,\n 'error',\n computed(\n (errors = this.errors() || null) =>\n errors && this.getError(errors[this.key()], this.content[this.key()]),\n ),\n {self: true, optional: true},\n );\n\n public registerOnChange(): void {}\n\n public registerOnTouched(): void {}\n\n public writeValue(): void {}\n\n public validate(control: AbstractControl): ValidationErrors | null {\n this.control.next(control);\n\n return null;\n }\n\n protected onValidator(validator: TuiNativeValidator): void {\n if (this.control.value && validator.control === this.control.value) {\n validator.id = this.el.id;\n }\n }\n\n private getError(\n context: unknown,\n content?: PolymorpheusContent | Signal<PolymorpheusContent>,\n ): TuiValidationError {\n context = isSignal(context) ? context() : context;\n\n if (context instanceof TuiValidationError) {\n return context;\n }\n\n if (content === undefined && isContent(context)) {\n return getError(context);\n }\n\n if (isSignal(content)) {\n return getError(content(), context);\n }\n\n if (content instanceof Function) {\n const message = content(context);\n\n return getError(isSignal(message) ? message() : message, context);\n }\n\n return getError(content, context);\n }\n}\n\nfunction getError(content: unknown = '', context?: any): TuiValidationError {\n return new TuiValidationError(content as PolymorpheusContent, context);\n}\n\nfunction isContent(value: unknown): value is PolymorpheusContent {\n return (\n tuiIsString(value) ||\n value instanceof TemplateRef ||\n value instanceof PolymorpheusTemplate ||\n value instanceof PolymorpheusComponent\n );\n}\n","import {inject, Pipe, type PipeTransform, untracked} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiErrorDirective} from './error.directive';\n\n@Pipe({\n name: 'tuiError',\n pure: false,\n})\nexport class TuiErrorPipe implements PipeTransform {\n private readonly control = inject(NgControl);\n private readonly directive = new TuiErrorDirective();\n\n public transform(order: readonly string[]): PolymorpheusContent {\n untracked(() => {\n this.directive.validate(this.control.control!);\n tuiSetSignal(this.directive.order, order);\n });\n\n const error = this.directive.error();\n\n if (!error) {\n return '';\n }\n\n return typeof error.message === 'function'\n ? error.message(error.context)\n : error.message;\n }\n}\n","import {TuiErrorComponent} from './error.component';\nimport {TuiErrorDirective} from './error.directive';\nimport {TuiErrorPipe} from './error.pipe';\n\nexport const TuiError = [TuiErrorComponent, TuiErrorDirective, TuiErrorPipe] as const;\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-core-components-error.mjs","sources":["../../../projects/core/components/error/error.component.ts","../../../projects/core/components/error/error.template.html","../../../projects/core/components/error/error.directive.ts","../../../projects/core/components/error/error.pipe.ts","../../../projects/core/components/error/error.ts","../../../projects/core/components/error/taiga-ui-core-components-error.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {TuiValidationError} from '@taiga-ui/cdk/classes';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DEFAULT_ERROR_MESSAGE} from '@taiga-ui/core/tokens';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-error',\n imports: [PolymorpheusOutlet, TuiAnimated],\n templateUrl: './error.template.html',\n styleUrl: './error.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[class._error]': 'content()'},\n})\nexport class TuiErrorComponent {\n protected readonly default = inject(TUI_DEFAULT_ERROR_MESSAGE);\n\n protected readonly content = computed((error = this.error()) =>\n tuiIsString(error) ? new TuiValidationError(error) : error,\n );\n\n public readonly error = input<TuiValidationError | string | null>(null);\n}\n","@if (content(); as error) {\n <span\n tuiAnimated\n class=\"t-message-text\"\n >\n <span\n *polymorpheusOutlet=\"error.message || default() as text; context: error.context || {}\"\n [innerHTML]=\"text\"\n ></span>\n </span>\n}\n","import {\n computed,\n Directive,\n inject,\n input,\n isSignal,\n model,\n type Signal,\n TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n type ValidationErrors,\n type Validator,\n} from '@angular/forms';\nimport {\n type TuiFormValueControl,\n type TuiSignalValidationError,\n TuiValidationError,\n} from '@taiga-ui/cdk/classes';\nimport {TuiId} from '@taiga-ui/cdk/directives/id';\nimport {type TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiDirectiveBinding, tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_VALIDATION_ERRORS} from '@taiga-ui/core/tokens';\nimport {\n PolymorpheusComponent,\n type PolymorpheusContent,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n} from 'rxjs';\n\nimport {TuiErrorComponent} from './error.component';\n\n@Directive({\n hostDirectives: [TuiId],\n host: {'aria-live': 'polite'},\n})\nexport abstract class AbstractTuiErrorDirective {\n protected abstract readonly error: Signal<TuiValidationError | null>;\n protected readonly el = tuiInjectElement();\n protected readonly content = inject(TUI_VALIDATION_ERRORS);\n\n public readonly order = input<readonly string[]>([]);\n\n protected readonly $ = tuiDirectiveBinding(\n TuiErrorComponent,\n 'error',\n computed(() => this.error()),\n {self: true, optional: true},\n );\n\n protected getError(\n context: unknown,\n content?: PolymorpheusContent | Signal<PolymorpheusContent>,\n ): TuiValidationError {\n context = isSignal(context) ? context() : context;\n\n if (context instanceof TuiValidationError) {\n return context;\n }\n\n if (content === undefined && isContent(context)) {\n return getError(context);\n }\n\n if (isSignal(content)) {\n return getError(content(), context);\n }\n\n if (content instanceof Function) {\n const message = content(context);\n\n return getError(isSignal(message) ? message() : message, context);\n }\n\n return getError(content, context);\n }\n}\n\n@Directive({\n selector:\n 'tui-error[ngModel], tui-error[formControlName], tui-error[formControl], tui-error[formGroup], tui-error[formGroupName], tui-error[formArrayName], tui-error[formArray]',\n providers: [\n tuiProvide(NG_VALUE_ACCESSOR, TuiErrorDirective, true),\n tuiProvide(NG_VALIDATORS, TuiErrorDirective, true),\n ],\n host: {'(document:tui-validator.zoneless)': 'onValidator($event.detail)'},\n})\nexport class TuiErrorDirective\n extends AbstractTuiErrorDirective\n implements ControlValueAccessor, Validator\n{\n private readonly control = new BehaviorSubject<AbstractControl | null>(null);\n private readonly errors = toSignal(\n this.control.pipe(\n filter(Boolean),\n distinctUntilChanged(),\n switchMap((control) =>\n control.events.pipe(\n startWith(null),\n map(() => !control.disabled && control.touched && control.errors),\n ),\n ),\n ),\n );\n\n private readonly key = computed(\n (errors = this.errors() || {}) =>\n this.order().find((id) => errors[id]) || Object.keys(errors)[0] || '',\n );\n\n public readonly error = computed(\n (errors = this.errors() || null) =>\n errors && this.getError(errors[this.key()], this.content[this.key()]),\n );\n\n public registerOnChange(): void {}\n\n public registerOnTouched(): void {}\n\n public writeValue(): void {}\n\n public validate(control: AbstractControl): ValidationErrors | null {\n this.control.next(control);\n\n return null;\n }\n\n protected onValidator(validator: TuiNativeValidator): void {\n if (this.control.value && validator.control === this.control.value) {\n validator.id = this.el.id;\n }\n }\n}\n\n@Directive({\n selector: 'tui-error[formField]',\n host: {'(document:tui-validator.zoneless)': 'onValidator($event.detail)'},\n})\nexport class TuiErrorField\n extends AbstractTuiErrorDirective\n implements TuiFormValueControl<unknown>\n{\n // TODO: use inject(FORM_FIELD) from `@angular/forms/signals` after update to Angular >= 21\n // @ts-expect-error\n private readonly field = inject(NgControl, {self: true}).field;\n\n public readonly errors = input<readonly TuiSignalValidationError[]>([]);\n public readonly touched = input(false);\n public readonly value = model<unknown>(null);\n\n public readonly error = computed((errors = this.errors()) => {\n if (!this.touched()) {\n return null;\n }\n\n const kind = this.order().find((id) => errors.find(({kind}) => kind === id));\n const error = kind ? errors.find((x) => x.kind === kind) : errors[0];\n\n return error\n ? this.getError(error, error.message ?? this.content[error.kind])\n : null;\n });\n\n protected onValidator(validator: TuiNativeValidator): void {\n /**\n * Signal forms have no `AbstractControl`: `inject(NgControl)` returns Angular's internal\n * `InteropNgControl`, and every `[formField]` builds ITS OWN INSTANCE. So two bindings of the\n * same field hold two different controls, and comparing them by identity is meaningless:\n *\n * ```html\n * <input [formField]=\"form.name\" />\n * <tui-error [formField]=\"form.name\" />\n * ```\n *\n * What they do share is the `FieldState` behind them, but the only way to it is the\n * undocumented `field` property — hence the index access.\n *\n * TODO: read the state through the public `FORM_FIELD` token once Taiga UI drops Angular < 22\n * https://angular.dev/api/forms/signals/FORM_FIELD\n */\n // @ts-ignore\n const validatorField = validator.control.field?.();\n const field = this.field?.();\n\n if (field && validatorField === field) {\n validator.id = this.el.id;\n }\n }\n}\n\nfunction getError(content: unknown = '', context?: any): TuiValidationError {\n return new TuiValidationError(content as PolymorpheusContent, context);\n}\n\nfunction isContent(value: unknown): value is PolymorpheusContent {\n return (\n tuiIsString(value) ||\n value instanceof TemplateRef ||\n value instanceof PolymorpheusTemplate ||\n value instanceof PolymorpheusComponent\n );\n}\n","import {inject, Pipe, type PipeTransform, untracked} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiErrorDirective} from './error.directive';\n\n@Pipe({\n name: 'tuiError',\n pure: false,\n})\nexport class TuiErrorPipe implements PipeTransform {\n private readonly control = inject(NgControl);\n private readonly directive = new TuiErrorDirective();\n\n public transform(order: readonly string[]): PolymorpheusContent {\n untracked(() => {\n this.directive.validate(this.control.control!);\n tuiSetSignal(this.directive.order, order);\n });\n\n const error = this.directive.error();\n\n if (!error) {\n return '';\n }\n\n return typeof error.message === 'function'\n ? error.message(error.context)\n : error.message;\n }\n}\n","import {TuiErrorComponent} from './error.component';\nimport {TuiErrorDirective, TuiErrorField} from './error.directive';\nimport {TuiErrorPipe} from './error.pipe';\n\nexport const TuiError = [\n TuiErrorComponent,\n TuiErrorDirective,\n TuiErrorField,\n TuiErrorPipe,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ class TuiIcon {
|
|
|
12
12
|
this.background = input('');
|
|
13
13
|
}
|
|
14
14
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.25", type: TuiIcon, isStandalone: true, selector: "tui-icon:not([tuiBadge])", inputs: { background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--t-icon-bg": "mask()" } }, hostDirectives: [{ directive: i1.TuiIcons, inputs: ["iconStart", "icon", "iconEnd", "badge"] }], ngImport: i0, template: '', isInline: true, styles: ["tui-icon:where(*[data-tui-version=\"5.
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.25", type: TuiIcon, isStandalone: true, selector: "tui-icon:not([tuiBadge])", inputs: { background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--t-icon-bg": "mask()" } }, hostDirectives: [{ directive: i1.TuiIcons, inputs: ["iconStart", "icon", "iconEnd", "badge"] }], ngImport: i0, template: '', isInline: true, styles: ["tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"]){--tui-icon-size: 1em;position:relative;display:inline-flex;inline-size:1em;block-size:1em;font-size:1.5rem;flex-shrink:0;border:0 solid transparent;vertical-align:middle;box-sizing:border-box;-webkit-mask-image:var(--t-icon-bg);mask-image:var(--t-icon-bg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:calc(100% + 10 * var(--tui-stroke-width)) 100%;mask-size:calc(100% + 10 * var(--tui-stroke-width)) 100%;zoom:calc(100%*clamp(0px,var(--tui-font-offset) - 10px,1px)/.8px)}@media(hover:hover)and (pointer:fine){tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-appearance=icon]:hover{color:var(--tui-text-secondary)}}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[tuiIcons]:before,tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[tuiIcons]:after{zoom:1}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end]:before{-webkit-mask-image:var(--t-icon-start),radial-gradient(circle at bottom .1em right .1em,transparent calc(.4em - .5px),#000 .4em);mask-image:var(--t-icon-start),radial-gradient(circle at bottom .1em right .1em,transparent calc(.4em - .5px),#000 .4em);-webkit-mask-composite:source-in;mask-composite:intersect}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end][data-icon-start=img]:before,tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end][data-icon-start=font]:before{-webkit-mask-image:radial-gradient(circle at bottom .1em right .1em,transparent calc(.4em - .5px),#000 .4em);mask-image:radial-gradient(circle at bottom .1em right .1em,transparent calc(.4em - .5px),#000 .4em)}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end]:after{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-start]:before{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-start]:after{transform:translate(36%,36%);--tui-icon-size: .5715em}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-start=font]:before,tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end=font]:after{zoom:.667}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
16
16
|
}
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiIcon, decorators: [{
|
|
18
18
|
type: Component,
|
|
@@ -21,7 +21,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
21
21
|
directive: TuiIcons,
|
|
22
22
|
inputs: ['iconStart: icon', 'iconEnd: badge'],
|
|
23
23
|
},
|
|
24
|
-
], host: { '[style.--t-icon-bg]': 'mask()' }, styles: ["tui-icon:where(*[data-tui-version=\"5.
|
|
24
|
+
], host: { '[style.--t-icon-bg]': 'mask()' }, styles: ["tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"]){--tui-icon-size: 1em;position:relative;display:inline-flex;inline-size:1em;block-size:1em;font-size:1.5rem;flex-shrink:0;border:0 solid transparent;vertical-align:middle;box-sizing:border-box;-webkit-mask-image:var(--t-icon-bg);mask-image:var(--t-icon-bg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:calc(100% + 10 * var(--tui-stroke-width)) 100%;mask-size:calc(100% + 10 * var(--tui-stroke-width)) 100%;zoom:calc(100%*clamp(0px,var(--tui-font-offset) - 10px,1px)/.8px)}@media(hover:hover)and (pointer:fine){tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-appearance=icon]:hover{color:var(--tui-text-secondary)}}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[tuiIcons]:before,tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[tuiIcons]:after{zoom:1}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end]:before{-webkit-mask-image:var(--t-icon-start),radial-gradient(circle at bottom .1em right .1em,transparent calc(.4em - .5px),#000 .4em);mask-image:var(--t-icon-start),radial-gradient(circle at bottom .1em right .1em,transparent calc(.4em - .5px),#000 .4em);-webkit-mask-composite:source-in;mask-composite:intersect}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end][data-icon-start=img]:before,tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end][data-icon-start=font]:before{-webkit-mask-image:radial-gradient(circle at bottom .1em right .1em,transparent calc(.4em - .5px),#000 .4em);mask-image:radial-gradient(circle at bottom .1em right .1em,transparent calc(.4em - .5px),#000 .4em)}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end]:after{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-start]:before{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-start]:after{transform:translate(36%,36%);--tui-icon-size: .5715em}tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-start=font]:before,tui-icon:where(*[data-tui-version=\"5.19.0-canary.b454a40\"])[data-icon-end=font]:after{zoom:.667}\n"] }]
|
|
25
25
|
}] });
|
|
26
26
|
|
|
27
27
|
class TuiIconPipe {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-icon.mjs","sources":["../../../projects/core/components/icon/icon.component.ts","../../../projects/core/components/icon/icon.pipe.ts","../../../projects/core/components/icon/taiga-ui-core-components-icon.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiIcons} from '@taiga-ui/core/directives/icons';\n\n@Component({\n // :not([tuiBadge]) is required to avoid double matching of TuiIcons\n selector: 'tui-icon:not([tuiBadge])',\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import '@taiga-ui/styles/components/icon.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiIcons,\n inputs: ['iconStart: icon', 'iconEnd: badge'],\n },\n ],\n host: {'[style.--t-icon-bg]': 'mask()'},\n})\nexport class TuiIcon {\n protected readonly icons = inject(TuiIcons);\n protected readonly mask = computed(() => this.icons.resolve(this.background()));\n\n public readonly background = input('');\n}\n","import {Pipe, type PipeTransform} from '@angular/core';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\n\n@Pipe({name: 'tuiIcon'})\nexport class TuiIconPipe implements PipeTransform {\n public readonly transform = tuiInjectIconResolver();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MA8Ba,OAAO,CAAA;AAnBpB,IAAA,WAAA,GAAA;AAoBuB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAE/D,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;AACzC,IAAA;+GALY,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,OAAO,iYAhBN,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-icon.mjs","sources":["../../../projects/core/components/icon/icon.component.ts","../../../projects/core/components/icon/icon.pipe.ts","../../../projects/core/components/icon/taiga-ui-core-components-icon.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiIcons} from '@taiga-ui/core/directives/icons';\n\n@Component({\n // :not([tuiBadge]) is required to avoid double matching of TuiIcons\n selector: 'tui-icon:not([tuiBadge])',\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import '@taiga-ui/styles/components/icon.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiIcons,\n inputs: ['iconStart: icon', 'iconEnd: badge'],\n },\n ],\n host: {'[style.--t-icon-bg]': 'mask()'},\n})\nexport class TuiIcon {\n protected readonly icons = inject(TuiIcons);\n protected readonly mask = computed(() => this.icons.resolve(this.background()));\n\n public readonly background = input('');\n}\n","import {Pipe, type PipeTransform} from '@angular/core';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\n\n@Pipe({name: 'tuiIcon'})\nexport class TuiIconPipe implements PipeTransform {\n public readonly transform = tuiInjectIconResolver();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MA8Ba,OAAO,CAAA;AAnBpB,IAAA,WAAA,GAAA;AAoBuB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAE/D,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;AACzC,IAAA;+GALY,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,OAAO,iYAhBN,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+3EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAgBH,OAAO,EAAA,UAAA,EAAA,CAAA;kBAnBnB,SAAS;+BAEI,0BAA0B,EAAA,QAAA,EAC1B,EAAE,EAAA,aAAA,EAMG,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,QAAQ;AACnB,4BAAA,MAAM,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;AAChD,yBAAA;AACJ,qBAAA,EAAA,IAAA,EACK,EAAC,qBAAqB,EAAE,QAAQ,EAAC,EAAA,MAAA,EAAA,CAAA,+3EAAA,CAAA,EAAA;;;MCxB9B,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;QAEoB,IAAA,CAAA,SAAS,GAAG,qBAAqB,EAAE;AACtD,IAAA;+GAFY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;mBAAC,EAAC,IAAI,EAAE,SAAS,EAAC;;;ACHvB;;AAEG;;;;"}
|
|
@@ -2,17 +2,24 @@ import { TuiLabel } from '@taiga-ui/core/components/label';
|
|
|
2
2
|
import { TuiTextfieldComponent, TUI_TEXTFIELD_OPTIONS, tuiAsTextfieldAccessor, TuiTextfieldOptionsDirective } from '@taiga-ui/core/components/textfield';
|
|
3
3
|
import { TuiDropdownDirective, TuiDropdownContent } from '@taiga-ui/core/portals/dropdown';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { inject, computed, input, Directive } from '@angular/core';
|
|
5
|
+
import { inject, computed, input, INJECTOR, effect, Directive } from '@angular/core';
|
|
6
6
|
import { NgControl } from '@angular/forms';
|
|
7
|
+
import { TuiControl } from '@taiga-ui/cdk/classes';
|
|
7
8
|
import * as i2 from '@taiga-ui/cdk/directives/id';
|
|
8
9
|
import { TuiId } from '@taiga-ui/cdk/directives/id';
|
|
9
10
|
import * as i1 from '@taiga-ui/cdk/directives/native-validator';
|
|
10
11
|
import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator';
|
|
11
12
|
import { tuiInjectElement, tuiValue } from '@taiga-ui/cdk/utils/dom';
|
|
13
|
+
import { tuiSetSignal } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
12
14
|
import { tuiAppearance, tuiAppearanceState, tuiAppearanceMode, tuiAppearanceFocus } from '@taiga-ui/core/directives/appearance';
|
|
13
15
|
import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
|
|
14
16
|
|
|
15
17
|
class TuiInputDirective {
|
|
18
|
+
/**
|
|
19
|
+
* Temporary workaround until TuiControl has deprecated `pseudoInvalid` property
|
|
20
|
+
* We cannot inject `TuiTextfieldComponent` (@taiga-ui/core) inside `TuiControl` (`@taiga-ui/cdk`)
|
|
21
|
+
* TODO(v6): remove all logic inside constructor
|
|
22
|
+
*/
|
|
16
23
|
constructor() {
|
|
17
24
|
this.el = tuiInjectElement();
|
|
18
25
|
this.control = inject(NgControl, { optional: true });
|
|
@@ -20,22 +27,55 @@ class TuiInputDirective {
|
|
|
20
27
|
this.textfield = inject(TuiTextfieldComponent);
|
|
21
28
|
this.dropdown = inject(TuiDropdownDirective);
|
|
22
29
|
this.a = tuiAppearance(inject(TUI_TEXTFIELD_OPTIONS).appearance);
|
|
23
|
-
this.s = tuiAppearanceState(computed(() => this.state()));
|
|
30
|
+
this.s = tuiAppearanceState(computed(() => this.state() ?? this.textfield.tuiAppearanceState()));
|
|
24
31
|
this.m = tuiAppearanceMode(computed(() => this.mode()));
|
|
25
|
-
|
|
26
|
-
this.
|
|
32
|
+
// TODO(v6): move to {@link TuiTextfieldComponent}
|
|
33
|
+
this.f = tuiAppearanceFocus(computed(() => this.focused() ??
|
|
34
|
+
this.textfield.tuiAppearanceFocus() ??
|
|
35
|
+
this.textfield.focused()));
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated use `<input [readonly]="..." />` instead
|
|
38
|
+
* TODO(v6): delete
|
|
39
|
+
*/
|
|
40
|
+
this.readOnlyLegacy = input(false, { alias: 'readOnly' });
|
|
41
|
+
/**
|
|
42
|
+
* TODO(v6): delete, it's only for backward compatibility
|
|
43
|
+
*/
|
|
44
|
+
this.readOnly = computed(() => this.readonly() || this.readOnlyLegacy());
|
|
45
|
+
this.readonly = input(false);
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated use `<tui-textfield [invalid]="..." />` instead
|
|
48
|
+
* TODO(v6): delete
|
|
49
|
+
*/
|
|
27
50
|
this.invalid = input(null);
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated use `<tui-textfield [tuiAppearanceFocus]="..." />` instead
|
|
53
|
+
* TODO(v6): delete
|
|
54
|
+
*/
|
|
28
55
|
this.focused = input(null);
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated use `<tui-textfield [tuiAppearanceState]="..." />` instead
|
|
58
|
+
* TODO(v6): delete
|
|
59
|
+
*/
|
|
29
60
|
this.state = input(null);
|
|
30
61
|
this.value = tuiValue(this.el);
|
|
31
62
|
this.mode = computed(() => {
|
|
63
|
+
const invalid = this.textfield.invalid() ?? this.invalid();
|
|
32
64
|
if (this.readOnly()) {
|
|
33
65
|
return 'readonly';
|
|
34
66
|
}
|
|
35
|
-
if (
|
|
67
|
+
if (invalid === false) {
|
|
36
68
|
return 'valid';
|
|
37
69
|
}
|
|
38
|
-
return
|
|
70
|
+
return invalid ? 'invalid' : null;
|
|
71
|
+
});
|
|
72
|
+
const injector = inject(INJECTOR);
|
|
73
|
+
const invalid = computed(() => this.textfield.invalid() ?? this.invalid());
|
|
74
|
+
effect(() => {
|
|
75
|
+
const control = injector.get(TuiControl, null, { self: true });
|
|
76
|
+
if (control) {
|
|
77
|
+
tuiSetSignal(control.pseudoInvalid, invalid());
|
|
78
|
+
}
|
|
39
79
|
});
|
|
40
80
|
}
|
|
41
81
|
setValue(value) {
|
|
@@ -52,7 +92,7 @@ class TuiInputDirective {
|
|
|
52
92
|
}
|
|
53
93
|
}
|
|
54
94
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiInputDirective, isStandalone: true, selector: "input[tuiInput]", inputs: {
|
|
95
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiInputDirective, isStandalone: true, selector: "input[tuiInput]", inputs: { readOnlyLegacy: { classPropertyName: "readOnlyLegacy", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tuiInput": "" }, listeners: { "focusin": "0", "focusout": "0", "input": "0" }, properties: { "attr.role": "dropdown.content() && !el.matches(\"select\") ? \"combobox\" : null", "class._empty": "value() === \"\"", "readOnly": "readOnly()" } }, providers: [tuiAsTextfieldAccessor(TuiInputDirective)], hostDirectives: [{ directive: i1.TuiNativeValidator }, { directive: i2.TuiId }], ngImport: i0 }); }
|
|
56
96
|
}
|
|
57
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputDirective, decorators: [{
|
|
58
98
|
type: Directive,
|
|
@@ -70,10 +110,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
70
110
|
'(input)': '0',
|
|
71
111
|
},
|
|
72
112
|
}]
|
|
73
|
-
}] });
|
|
113
|
+
}], ctorParameters: () => [] });
|
|
74
114
|
class TuiWithInput {
|
|
75
115
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiWithInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
76
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiWithInput, isStandalone: true, hostDirectives: [{ directive: TuiInputDirective, inputs: ["invalid", "invalid", "focused", "focused", "readOnly", "readOnly", "state", "state"] }], ngImport: i0 }); }
|
|
116
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiWithInput, isStandalone: true, hostDirectives: [{ directive: TuiInputDirective, inputs: ["invalid", "invalid", "focused", "focused", "readOnly", "readOnly", "readonly", "readonly", "state", "state"] }], ngImport: i0 }); }
|
|
77
117
|
}
|
|
78
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiWithInput, decorators: [{
|
|
79
119
|
type: Directive,
|
|
@@ -81,7 +121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
81
121
|
hostDirectives: [
|
|
82
122
|
{
|
|
83
123
|
directive: TuiInputDirective,
|
|
84
|
-
inputs: ['invalid', 'focused', 'readOnly', 'state'],
|
|
124
|
+
inputs: ['invalid', 'focused', 'readOnly', 'readonly', 'state'],
|
|
85
125
|
},
|
|
86
126
|
],
|
|
87
127
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-input.mjs","sources":["../../../projects/core/components/input/input.directive.ts","../../../projects/core/components/input/input.ts","../../../projects/core/components/input/taiga-ui-core-components-input.ts"],"sourcesContent":["import {computed, Directive, inject, input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TuiId} from '@taiga-ui/cdk/directives/id';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiInjectElement, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n tuiAsTextfieldAccessor,\n type TuiTextfieldAccessor,\n TuiTextfieldComponent,\n} from '@taiga-ui/core/components/textfield';\nimport {\n tuiAppearance,\n tuiAppearanceFocus,\n tuiAppearanceMode,\n tuiAppearanceState,\n} from '@taiga-ui/core/directives/appearance';\nimport {\n TUI_ITEMS_HANDLERS,\n type TuiItemsHandlers,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {type TuiInteractiveState} from '@taiga-ui/core/types';\n\n@Directive({\n selector: 'input[tuiInput]',\n providers: [tuiAsTextfieldAccessor(TuiInputDirective)],\n hostDirectives: [TuiNativeValidator, TuiId],\n host: {\n tuiInput: '',\n '[attr.role]': 'dropdown.content() && !el.matches(\"select\") ? \"combobox\" : null',\n '[class._empty]': 'value() === \"\"',\n '[readOnly]': 'readOnly()',\n '(focusin)': '0',\n '(focusout)': '0',\n '(input)': '0',\n },\n})\nexport class TuiInputDirective<T> implements TuiTextfieldAccessor<T> {\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly control = inject(NgControl, {optional: true});\n protected readonly handlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n protected readonly textfield = inject(TuiTextfieldComponent);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly a = tuiAppearance(inject(TUI_TEXTFIELD_OPTIONS).appearance);\n protected readonly s = tuiAppearanceState(computed(() => this.state()));\n protected readonly m = tuiAppearanceMode(computed(() => this.mode()));\n\n protected readonly f = tuiAppearanceFocus(\n computed(() => this.focused() ?? this.textfield.focused()),\n );\n\n public readonly readOnly = input(false);\n public readonly invalid = input<boolean | null>(null);\n public readonly focused = input<boolean | null>(null);\n public readonly state = input<TuiInteractiveState | null>(null);\n public readonly value = tuiValue(this.el);\n\n public readonly mode = computed<string | null>(() => {\n if (this.readOnly()) {\n return 'readonly';\n }\n\n if (this.invalid() === false) {\n return 'valid';\n }\n\n return this.invalid() ? 'invalid' : null;\n });\n\n public setValue(value: T | null): void {\n this.el.focus();\n this.el.select();\n\n if (value == null) {\n this.el.ownerDocument.execCommand('delete');\n\n // see https://github.com/taiga-family/taiga-ui/issues/11634\n // ensure non-erasable affixes actually deleted\n this.el.value = '';\n } else {\n this.el.ownerDocument.execCommand(\n 'insertText',\n false,\n this.handlers.stringify()(value),\n );\n }\n }\n}\n\n@Directive({\n hostDirectives: [\n {\n directive: TuiInputDirective,\n inputs: ['invalid', 'focused', 'readOnly', 'state'],\n },\n ],\n})\nexport class TuiWithInput {}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputDirective} from './input.directive';\n\nexport const TuiInput = [\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n TuiInputDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MAsCa,iBAAiB,CAAA;AAd9B,IAAA,WAAA,GAAA;QAeuB,IAAA,CAAA,EAAE,GAAG,gBAAgB,EAAoB;QACzC,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,QAAQ,GAAwB,MAAM,CAAC,kBAAkB,CAAC;AAC1D,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACvC,IAAA,CAAA,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC;AAC3D,QAAA,IAAA,CAAA,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,QAAA,IAAA,CAAA,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAElD,IAAA,CAAA,CAAC,GAAG,kBAAkB,CACrC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAC7D;AAEe,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,CAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,CAAC;AACrC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAA6B,IAAI,CAAC;AAC/C,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAgB,MAAK;AAChD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,gBAAA,OAAO,UAAU;YACrB;AAEA,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE;AAC1B,gBAAA,OAAO,OAAO;YAClB;AAEA,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,IAAI;AAC5C,QAAA,CAAC,CAAC;AAoBL,IAAA;AAlBU,IAAA,QAAQ,CAAC,KAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACf,QAAA,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;AAEhB,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC;;;AAI3C,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE;QACtB;aAAO;YACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAC7B,YAAY,EACZ,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CACnC;QACL;IACJ;+GAjDS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,y0BAZf,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAY7C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,SAAS,EAAE,CAAC,sBAAsB,CAAA,iBAAA,CAAmB,CAAC;AACtD,oBAAA,cAAc,EAAE,CAAC,kBAAkB,EAAE,KAAK,CAAC;AAC3C,oBAAA,IAAI,EAAE;AACF,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,aAAa,EAAE,iEAAiE;AAChF,wBAAA,gBAAgB,EAAE,gBAAgB;AAClC,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,WAAW,EAAE,GAAG;AAChB,wBAAA,YAAY,EAAE,GAAG;AACjB,wBAAA,SAAS,EAAE,GAAG;AACjB,qBAAA;AACJ,iBAAA;;MA6DY,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,oDA5DZ,iBAAiB,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FA4DjB,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,iBAAiB;4BAC5B,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC;AACtD,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;;ACxFM,MAAM,QAAQ,GAAG;IACpB,QAAQ;IACR,qBAAqB;IACrB,4BAA4B;IAC5B,kBAAkB;IAClB,iBAAiB;;;ACdrB;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-input.mjs","sources":["../../../projects/core/components/input/input.directive.ts","../../../projects/core/components/input/input.ts","../../../projects/core/components/input/taiga-ui-core-components-input.ts"],"sourcesContent":["import {computed, Directive, effect, inject, INJECTOR, input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TuiId} from '@taiga-ui/cdk/directives/id';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiInjectElement, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n tuiAsTextfieldAccessor,\n type TuiTextfieldAccessor,\n TuiTextfieldComponent,\n} from '@taiga-ui/core/components/textfield';\nimport {\n tuiAppearance,\n tuiAppearanceFocus,\n tuiAppearanceMode,\n tuiAppearanceState,\n} from '@taiga-ui/core/directives/appearance';\nimport {\n TUI_ITEMS_HANDLERS,\n type TuiItemsHandlers,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {type TuiInteractiveState} from '@taiga-ui/core/types';\n\n@Directive({\n selector: 'input[tuiInput]',\n providers: [tuiAsTextfieldAccessor(TuiInputDirective)],\n hostDirectives: [TuiNativeValidator, TuiId],\n host: {\n tuiInput: '',\n '[attr.role]': 'dropdown.content() && !el.matches(\"select\") ? \"combobox\" : null',\n '[class._empty]': 'value() === \"\"',\n '[readOnly]': 'readOnly()',\n '(focusin)': '0',\n '(focusout)': '0',\n '(input)': '0',\n },\n})\nexport class TuiInputDirective<T> implements TuiTextfieldAccessor<T> {\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly control = inject(NgControl, {optional: true});\n protected readonly handlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n protected readonly textfield = inject(TuiTextfieldComponent);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly a = tuiAppearance(inject(TUI_TEXTFIELD_OPTIONS).appearance);\n\n protected readonly s = tuiAppearanceState(\n computed(() => this.state() ?? this.textfield.tuiAppearanceState()),\n );\n\n protected readonly m = tuiAppearanceMode(computed(() => this.mode()));\n\n // TODO(v6): move to {@link TuiTextfieldComponent}\n protected readonly f = tuiAppearanceFocus(\n computed(\n () =>\n this.focused() ??\n this.textfield.tuiAppearanceFocus() ??\n this.textfield.focused(),\n ),\n );\n\n /**\n * @deprecated use `<input [readonly]=\"...\" />` instead\n * TODO(v6): delete\n */\n public readonly readOnlyLegacy = input(false, {alias: 'readOnly'});\n /**\n * TODO(v6): delete, it's only for backward compatibility\n */\n public readonly readOnly = computed(() => this.readonly() || this.readOnlyLegacy());\n public readonly readonly = input(false);\n\n /**\n * @deprecated use `<tui-textfield [invalid]=\"...\" />` instead\n * TODO(v6): delete\n */\n public readonly invalid = input<boolean | null>(null);\n\n /**\n * @deprecated use `<tui-textfield [tuiAppearanceFocus]=\"...\" />` instead\n * TODO(v6): delete\n */\n public readonly focused = input<boolean | null>(null);\n\n /**\n * @deprecated use `<tui-textfield [tuiAppearanceState]=\"...\" />` instead\n * TODO(v6): delete\n */\n public readonly state = input<TuiInteractiveState | null>(null);\n public readonly value = tuiValue(this.el);\n\n public readonly mode = computed<string | null>(() => {\n const invalid = this.textfield.invalid() ?? this.invalid();\n\n if (this.readOnly()) {\n return 'readonly';\n }\n\n if (invalid === false) {\n return 'valid';\n }\n\n return invalid ? 'invalid' : null;\n });\n\n /**\n * Temporary workaround until TuiControl has deprecated `pseudoInvalid` property\n * We cannot inject `TuiTextfieldComponent` (@taiga-ui/core) inside `TuiControl` (`@taiga-ui/cdk`)\n * TODO(v6): remove all logic inside constructor\n */\n constructor() {\n const injector = inject(INJECTOR);\n const invalid = computed(() => this.textfield.invalid() ?? this.invalid());\n\n effect(() => {\n const control = injector.get(TuiControl, null, {self: true});\n\n if (control) {\n tuiSetSignal(control.pseudoInvalid, invalid());\n }\n });\n }\n\n public setValue(value: T | null): void {\n this.el.focus();\n this.el.select();\n\n if (value == null) {\n this.el.ownerDocument.execCommand('delete');\n\n // see https://github.com/taiga-family/taiga-ui/issues/11634\n // ensure non-erasable affixes actually deleted\n this.el.value = '';\n } else {\n this.el.ownerDocument.execCommand(\n 'insertText',\n false,\n this.handlers.stringify()(value),\n );\n }\n }\n}\n\n@Directive({\n hostDirectives: [\n {\n directive: TuiInputDirective,\n inputs: ['invalid', 'focused', 'readOnly', 'readonly', 'state'],\n },\n ],\n})\nexport class TuiWithInput {}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputDirective} from './input.directive';\n\nexport const TuiInput = [\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n TuiInputDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|