UNPKG

@taiga-ui/layout

Version:

A package with Taiga UI layout components

1 lines 14.3 kB
{"version":3,"file":"taiga-ui-layout-components-search.mjs","sources":["../../../projects/layout/components/search/search.component.ts","../../../projects/layout/components/search/search-filter.component.ts","../../../projects/layout/components/search/search-filters.component.ts","../../../projects/layout/components/search/search-filters.template.html","../../../projects/layout/components/search/search.ts","../../../projects/layout/components/search/taiga-ui-layout-components-search.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {tuiTextfieldOptionsProvider} from '@taiga-ui/core/components/textfield';\nimport {tuiBlockOptionsProvider} from '@taiga-ui/kit/components/block';\nimport {tuiSwitchOptionsProvider} from '@taiga-ui/kit/components/switch';\n\n@Component({\n standalone: true,\n selector: 'search[tuiSearch]',\n template: '<ng-content/>',\n styleUrls: ['./search.styles.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiButtonOptionsProvider({size: 'm'}),\n tuiBlockOptionsProvider({size: 's'}),\n tuiSwitchOptionsProvider({size: 's'}),\n tuiTextfieldOptionsProvider({size: signal('m')}),\n ],\n})\nexport class TuiSearchComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n tuiDropdown,\n TuiDropdownDirective,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_ICON_START} from '@taiga-ui/core/tokens';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/layout/tokens';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'button[tuiSearchFilter]',\n template: '<ng-template><ng-content /></ng-template>filters',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiDropdownOptionsProvider({align: 'right'}),\n {\n provide: TUI_ICON_START,\n useFactory: () => inject(TUI_COMMON_ICONS).filter,\n },\n ],\n hostDirectives: [TuiDropdownDirective, TuiWithDropdownOpen],\n})\nexport class TuiSearchFilterComponent {\n private readonly dropdown = tuiDropdown(null);\n\n @ViewChild(TemplateRef)\n protected set template(template: PolymorpheusContent) {\n this.dropdown.set(template);\n }\n}\n","import {NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {\n type AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n type QueryList,\n signal,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {\n tuiControlValue,\n tuiQueryListChanges,\n tuiZonefull,\n} from '@taiga-ui/cdk/observables';\nimport {tuiIsControlEmpty} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton, tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiTextfieldOptionsDirective} from '@taiga-ui/core/components/textfield';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\nimport {distinctUntilChanged, map, merge, switchMap} from 'rxjs';\n\nimport {TuiSearchFilterComponent} from './search-filter.component';\n\nconst WIDTH = 12;\n\n@Component({\n standalone: true,\n selector: 'tui-search-filters',\n imports: [NgForOf, NgIf, NgTemplateOutlet, TuiButton, TuiSearchFilterComponent],\n templateUrl: './search-filters.template.html',\n styleUrls: ['./search-filters.styles.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n ResizeObserverService,\n tuiButtonOptionsProvider({size: 'xs', appearance: 'flat'}),\n ],\n hostDirectives: [\n {\n directive: TuiTextfieldOptionsDirective,\n inputs: ['tuiTextfieldSize: size'],\n },\n ],\n})\nexport class TuiSearchFiltersComponent implements AfterContentInit {\n @ViewChild('rem')\n private readonly rem?: ElementRef<HTMLDivElement>;\n\n @ViewChild(TuiButton, {read: ElementRef})\n private readonly button?: ElementRef<HTMLDivElement>;\n\n @ContentChildren(NgControl, {descendants: true})\n private readonly children: QueryList<NgControl> = EMPTY_QUERY;\n\n private readonly controls = signal<readonly NgControl[]>([]);\n\n @ContentChildren(TuiItem, {descendants: true, read: TemplateRef})\n protected readonly templates: QueryList<TemplateRef<any>> = EMPTY_QUERY;\n\n protected readonly overflown = toSignal(\n inject(ResizeObserverService, {self: true}).pipe(\n map((entry) => {\n const width = entry[0]?.contentRect.width ?? 0;\n\n return Math.floor((width - this.more) / WIDTH / this.unit);\n }),\n distinctUntilChanged(),\n tuiZonefull(),\n ),\n {initialValue: 0},\n );\n\n protected readonly enabled = computed(() =>\n this.controls().some(\n ({control}, index) =>\n control && index >= this.overflown() && !tuiIsControlEmpty(control),\n ),\n );\n\n @Input()\n public size: TuiSizeS = 'm';\n\n // TODO: Refactor to signal queries when Angular is updated\n public ngAfterContentInit(): void {\n tuiQueryListChanges(this.children)\n .pipe(\n switchMap((all) => merge(...all.map((c) => tuiControlValue(c)))),\n map(() => this.children.toArray()),\n )\n .subscribe((controls) => this.controls.set(controls));\n }\n\n protected onReset(): void {\n this.children.forEach(({control}, index) => {\n if (control && index >= this.overflown()) {\n control.setValue(null);\n }\n });\n }\n\n private get unit(): number {\n return this.rem?.nativeElement.offsetWidth || 16;\n }\n\n private get more(): number {\n return this.button?.nativeElement.clientWidth || 0;\n }\n}\n","<ng-container *ngFor=\"let template of templates; let i = index\">\n <ng-container\n *ngIf=\"i < overflown()\"\n [ngTemplateOutlet]=\"template\"\n />\n</ng-container>\n<div\n #rem\n class=\"t-rem\"\n></div>\n<button\n *ngIf=\"overflown() < templates.length\"\n appearance=\"secondary\"\n tuiIconButton\n tuiSearchFilter\n type=\"button\"\n class=\"t-button\"\n [class._active]=\"enabled()\"\n [size]=\"size\"\n>\n <form\n class=\"t-form\"\n (reset)=\"onReset()\"\n >\n <fieldset\n class=\"t-header\"\n [disabled]=\"!enabled()\"\n >\n <ng-content />\n </fieldset>\n <ng-container *ngFor=\"let template of templates; let i = index\">\n <ng-container\n *ngIf=\"i >= overflown()\"\n [ngTemplateOutlet]=\"template\"\n />\n </ng-container>\n </form>\n</button>\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiSearchComponent} from './search.component';\nimport {TuiSearchFiltersComponent} from './search-filters.component';\n\nexport const TuiSearch = [\n TuiSearchComponent,\n TuiSearchFiltersComponent,\n TuiItem,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}