diff --git a/projects/core/components/textfield/textfield.component.ts b/projects/core/components/textfield/textfield.component.ts index 93860d32dc51..6c8bf06b0eed 100644 --- a/projects/core/components/textfield/textfield.component.ts +++ b/projects/core/components/textfield/textfield.component.ts @@ -25,16 +25,14 @@ import type {TuiDataListHost} from '@taiga-ui/core/components/data-list'; import {tuiAsDataListHost} from '@taiga-ui/core/components/data-list'; import {TuiLabel} from '@taiga-ui/core/components/label'; import { - TUI_DROPDOWN_OPTIONS, TuiDropdownDirective, + TuiDropdownFixed, tuiDropdownOpen, - tuiDropdownOptionsProvider, TuiWithDropdownOpen, } from '@taiga-ui/core/directives/dropdown'; import {TuiWithIcons} from '@taiga-ui/core/directives/icons'; import {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens'; import type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types'; -import {tuiOverrideDefaultOptions} from '@taiga-ui/core/utils'; import type {PolymorpheusContent} from '@taiga-ui/polymorpheus'; import {PolymorpheusOutlet} from '@taiga-ui/polymorpheus'; @@ -50,8 +48,9 @@ import {TuiWithTextfieldDropdown} from './textfield-dropdown.directive'; styles: ['@import "@taiga-ui/core/styles/components/textfield.less";'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, - providers: [tuiAsDataListHost(TuiTextfieldComponent), tuiDropdownOptionsProvider({})], + providers: [tuiAsDataListHost(TuiTextfieldComponent)], hostDirectives: [ + TuiDropdownFixed, TuiDropdownDirective, TuiWithDropdownOpen, TuiWithTextfieldDropdown, @@ -82,9 +81,6 @@ export class TuiTextfieldComponent implements TuiDataListHost { protected readonly control?: NgControl; protected readonly icons = inject(TUI_COMMON_ICONS); - protected readonly override = tuiOverrideDefaultOptions(TUI_DROPDOWN_OPTIONS, { - limitWidth: 'fixed', - }); protected computedFiller = computed(() => { const value = this.directive?.nativeValue() || ''; diff --git a/projects/core/directives/dropdown/dropdown-fixed.directive.ts b/projects/core/directives/dropdown/dropdown-fixed.directive.ts new file mode 100644 index 000000000000..335f9f9a8289 --- /dev/null +++ b/projects/core/directives/dropdown/dropdown-fixed.directive.ts @@ -0,0 +1,21 @@ +import {Directive, inject} from '@angular/core'; +import {tuiOverrideOptions} from '@taiga-ui/core/utils/miscellaneous'; + +import { + TUI_DROPDOWN_DEFAULT_OPTIONS, + TUI_DROPDOWN_OPTIONS, +} from './dropdown-options.directive'; + +@Directive({ + standalone: true, +}) +export class TuiDropdownFixed { + constructor() { + const override = tuiOverrideOptions( + {limitWidth: 'fixed'}, + TUI_DROPDOWN_DEFAULT_OPTIONS, + ); + + override(inject(TUI_DROPDOWN_OPTIONS), TUI_DROPDOWN_DEFAULT_OPTIONS); + } +} diff --git a/projects/core/directives/dropdown/index.ts b/projects/core/directives/dropdown/index.ts index b8d8363f2ccf..9a4ff85ca366 100644 --- a/projects/core/directives/dropdown/index.ts +++ b/projects/core/directives/dropdown/index.ts @@ -18,3 +18,4 @@ export * from './dropdown-position-sided.directive'; export * from './dropdown-selection.directive'; export * from './dropdowns.component'; export * from './with-dropdown-open.directive'; +export * from './dropdown-fixed.directive'; diff --git a/projects/core/utils/miscellaneous/override-options.ts b/projects/core/utils/miscellaneous/override-options.ts index 66f462ea1076..4c1527037df7 100644 --- a/projects/core/utils/miscellaneous/override-options.ts +++ b/projects/core/utils/miscellaneous/override-options.ts @@ -1,6 +1,3 @@ -import type {ProviderToken} from '@angular/core'; -import {inject} from '@angular/core'; - export function tuiOverrideOptions( override: Partial, fallback: T, @@ -16,14 +13,3 @@ export function tuiOverrideOptions( return result; }; } - -export function tuiOverrideDefaultOptions( - key: ProviderToken, - options: Partial, -): void { - const defaultOptions = inject(key, {self: true}); - - Object.keys(options).forEach((key) => { - (defaultOptions as Record)[key] = options[key as keyof T]; - }); -}