ngx-tethys 20.0.2 → 20.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-select.mjs","sources":["../../../src/select/select.config.ts","../../../src/select/custom-select/custom-select.component.ts","../../../src/select/custom-select/custom-select.component.html","../../../src/select/native-select/native-select.component.ts","../../../src/select/native-select/native-select.component.html","../../../src/select/module.ts","../../../src/select/ngx-tethys-select.ts"],"sourcesContent":["import { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\n\nexport const THY_SELECT_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('thy-select-scroll-strategy');\n\nexport const THY_SELECT_SCROLL_STRATEGY_FACTORY: (overlay: Overlay) => () => ScrollStrategy = (overlay: Overlay) => {\n return () => overlay.scrollStrategies.reposition();\n};\n\nexport const THY_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: THY_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: THY_SELECT_SCROLL_STRATEGY_FACTORY\n};\n\nexport type ThyDropdownWidthMode = 'match-select' | 'min-width' | { minWidth: number };\n\n/**\n * 打开select下拉菜单的配置\n * @public\n * @order 30\n */\nexport interface ThySelectConfig {\n /**\n * 下拉菜单的最小宽度\n */\n dropdownWidthMode?: ThyDropdownWidthMode;\n\n /**\n * 下拉菜单的弹出位置\n */\n placement?: ThyPlacement;\n}\n\nexport const DEFAULT_SELECT_CONFIG: ThySelectConfig = {\n dropdownWidthMode: 'match-select',\n placement: 'bottom'\n};\n\nexport const THY_SELECT_CONFIG = new InjectionToken<ThySelectConfig>('thy-select-config');\n\nexport const THY_SELECT_CONFIG_PROVIDER = {\n provide: THY_SELECT_CONFIG,\n useValue: DEFAULT_SELECT_CONFIG\n};\n","import {\n getFlexiblePositions,\n injectPanelEmptyIcon,\n scaleMotion,\n scaleXMotion,\n scaleYMotion,\n TabIndexDisabledControlValueAccessorMixin,\n ThyClickDispatcher,\n ThyPlacement\n} from 'ngx-tethys/core';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport {\n SelectControlSize,\n ThyOption,\n ThyOptionRender,\n ThySelectControl,\n ThySelectOptionGroup,\n ThyStopPropagationDirective,\n ThyOptionGroupRender,\n SelectOptionBase\n} from 'ngx-tethys/shared';\nimport {\n A,\n coerceBooleanProperty,\n DOWN_ARROW,\n elementMatchClosest,\n END,\n ENTER,\n TAB,\n FunctionProp,\n hasModifierKey,\n helpers,\n HOME,\n isFunction,\n SPACE,\n UP_ARROW\n} from 'ngx-tethys/util';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, take } from 'rxjs/operators';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectionPositionPair, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { isPlatformBrowser, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n QueryList,\n TemplateRef,\n ViewChild,\n viewChild,\n ViewChildren,\n inject,\n Signal,\n input,\n contentChild,\n untracked,\n contentChildren,\n afterRenderEffect,\n signal,\n computed,\n linkedSignal,\n WritableSignal,\n DestroyRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DEFAULT_SELECT_CONFIG,\n THY_SELECT_CONFIG,\n THY_SELECT_SCROLL_STRATEGY,\n ThyDropdownWidthMode,\n ThySelectConfig\n} from '../select.config';\nimport { injectLocale, ThySelectLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { CdkVirtualScrollViewport, ScrollDispatcher, ScrollingModule } from '@angular/cdk/scrolling';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isUndefinedOrNull } from '@tethys/cdk/is';\n\nexport type SelectMode = 'multiple' | '';\n\nexport type ThySelectTriggerType = 'click' | 'hover';\n\nexport const SELECT_PANEL_MAX_HEIGHT = 300;\n\nexport const SELECT_OPTION_MAX_HEIGHT = 40;\n\nexport const SELECT_PANEL_PADDING_TOP = 12;\n\nexport const SELECT_PANEL_PADDING_BOTTOM = 12;\n\nexport const THY_SELECT_PANEL_MIN_WIDTH = 200;\n\nexport interface OptionValue {\n thyLabelText?: string;\n thyValue?: string;\n thyDisabled?: boolean;\n thyShowOptionCustom?: boolean;\n thySearchKey?: string;\n}\n\nexport interface ThySelectOptionModel {\n value?: string | number;\n disabled?: boolean;\n label?: string;\n icon?: string;\n groupLabel?: string;\n}\n\ninterface ThySelectFlattedItem {\n type: 'option' | 'group';\n value?: string | number;\n rawValue?: any;\n label?: string;\n showOptionCustom?: boolean;\n template?: TemplateRef<any>;\n disabled?: boolean;\n searchKey?: string;\n groupLabel?: string;\n}\n\n/**\n * 下拉选择组件\n * @name thy-select,thy-custom-select\n * @order 10\n */\n@Component({\n selector: 'thy-select,thy-custom-select',\n templateUrl: './custom-select.component.html',\n exportAs: 'thySelect',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThySelect),\n multi: true\n },\n ScrollDispatcher\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n CdkConnectedOverlay,\n ThyStopPropagationDirective,\n NgClass,\n ThyLoading,\n ThyEmpty,\n ThyOptionRender,\n ThyOptionGroupRender,\n NgTemplateOutlet,\n ScrollingModule\n ],\n host: {\n '[class.thy-select-custom]': 'true',\n '[class.thy-select]': 'true',\n '[class.menu-is-opened]': 'panelOpen',\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n },\n animations: [scaleXMotion, scaleYMotion, scaleMotion]\n})\nexport class ThySelect extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private overlay = inject(Overlay);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private platformId = inject(PLATFORM_ID);\n private locale: Signal<ThySelectLocale> = injectLocale('select');\n scrollStrategyFactory = inject<FunctionProp<ScrollStrategy>>(THY_SELECT_SCROLL_STRATEGY, { optional: true })!;\n selectConfig = inject(THY_SELECT_CONFIG, { optional: true })!;\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n disabled = false;\n\n mode: SelectMode = '';\n\n scrollTop = 0;\n\n defaultOffset = 4;\n\n readonly dropDownClass = computed<{ [key: string]: boolean }>(() => {\n const modeClass = `thy-select-dropdown-${this.isMultiple() ? 'multiple' : 'single'}`;\n return {\n [`thy-select-dropdown`]: true,\n [modeClass]: true\n };\n });\n\n readonly dropDownMinWidth = computed<number | null>(() => {\n const mode = this.thyDropdownWidthMode() || this.config.dropdownWidthMode;\n let dropdownMinWidth: number | null = null;\n\n if ((mode as { minWidth: number })?.minWidth) {\n dropdownMinWidth = (mode as { minWidth: number }).minWidth;\n } else if (mode === 'min-width') {\n dropdownMinWidth = THY_SELECT_PANEL_MIN_WIDTH;\n } else {\n dropdownMinWidth = null;\n }\n\n return dropdownMinWidth;\n });\n\n /**\n * 设置下拉框的最小宽度,默认值 `match-select`,表示与输入框的宽度一致;`min-width` 表示最小宽度为200px;支持自定义最小宽度,比如传 `{minWidth: 150}` 表示最小宽度为150px\n * @default match-select\n */\n readonly thyDropdownWidthMode = input<ThyDropdownWidthMode>();\n\n readonly placement = computed<ThyPlacement>(() => {\n return this.thyPlacement() || this.config.placement!;\n });\n\n readonly dropDownPositions = computed<ConnectionPositionPair[]>(() => {\n return getFlexiblePositions(this.placement(), this.defaultOffset);\n });\n\n public thyItemSize = input(SELECT_OPTION_MAX_HEIGHT, { transform: value => numberAttribute(value) });\n\n readonly virtualHeight = computed<number>(() => {\n const maxVirtualHeight = SELECT_PANEL_MAX_HEIGHT - SELECT_PANEL_PADDING_TOP - SELECT_PANEL_PADDING_BOTTOM;\n const height = this.filteredGroupsAndOptions().length * this.thyItemSize();\n return Math.min(height, maxVirtualHeight);\n });\n\n /**\n * 出现滚动条时,视觉上能看到的最大选项个数\n */\n private maxItemLength = computed(() => {\n return Math.round(this.virtualHeight() / this.thyItemSize());\n });\n\n public triggerRectWidth: WritableSignal<number | undefined> = signal(undefined);\n\n public scrollStrategy?: ScrollStrategy;\n\n private resizeSubscription?: Subscription | null;\n\n /**\n * 手动聚焦中的标识\n */\n private manualFocusing = false;\n\n private config: ThySelectConfig;\n\n private destroyRef = inject(DestroyRef);\n\n readonly cdkConnectedOverlay = viewChild<CdkConnectedOverlay>(CdkConnectedOverlay);\n\n panelOpen = false;\n\n /**\n * 搜索时回调\n */\n readonly thyOnSearch = output<string>();\n\n /**\n * 下拉菜单滚动到底部事件,可以用这个事件实现滚动加载\n */\n readonly thyOnScrollToBottom = output<void>();\n\n /**\n * 下拉菜单展开和折叠状态事件\n */\n readonly thyOnExpandStatusChange = output<boolean>();\n\n /**\n * 下拉列表是否显示搜索框\n */\n readonly thyShowSearch = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 选择框默认文字\n */\n readonly thyPlaceHolder = input<string>(this.locale().placeholder);\n\n /**\n * 是否使用服务端搜索,当为 true 时,将不再在前端进行过滤\n */\n readonly thyServerSearch = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 异步加载 loading 状态,false 表示加载中,true 表示加载完成\n */\n readonly thyLoadState = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 是否自动设置选项第一条为高亮状态\n */\n readonly thyAutoActiveFirstItem = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 下拉选择模式\n * @type 'multiple' | ''\n */\n readonly thyMode = input<SelectMode>('');\n\n /**\n * 操作图标类型\n * @type primary | success | danger | warning\n * @default primary\n */\n readonly thySize = input<SelectControlSize>();\n\n /**\n * 数据为空时显示的提示文字\n */\n readonly thyEmptyStateText = input(this.locale().empty, { transform: (value: string) => value || this.locale().empty });\n\n /**\n * 搜索结果为空时显示的提示文字\n */\n readonly thyEmptySearchMessageText = input(this.locale().empty, { transform: (value: string) => value || this.locale().empty });\n\n /**\n * 滚动加载是否可用,只能当这个参数可以,下面的thyOnScrollToBottom事件才会触发\n */\n readonly thyEnableScrollLoad = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 单选( thyMode=\"\" 或者不设置)时,选择框支持清除\n */\n readonly thyAllowClear = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n get thyDisabled(): boolean {\n return this.disabled;\n }\n\n /**\n * 排序比较函数\n */\n readonly thySortComparator = input<(a: ThyOption, b: ThyOption, options: ThyOption[]) => number>();\n\n /**\n * Footer 模板,默认值为空不显示 Footer\n */\n readonly thyFooterTemplate = input<TemplateRef<any>>();\n\n /**\n * 弹出位置\n * @type ThyPlacement\n */\n readonly thyPlacement = input<ThyPlacement>();\n\n /**\n * 自定义 Overlay Origin\n */\n readonly thyOrigin = input<ElementRef | HTMLElement>();\n\n /**\n * 自定义 Footer 模板容器 class\n */\n readonly thyFooterClass = input<string>('thy-custom-select-footer');\n\n /**\n * @private\n */\n readonly selectedValueDisplayRef = contentChild<TemplateRef<any>>('selectedDisplay');\n\n /**\n * 初始化时,是否展开面板\n */\n readonly thyAutoExpand = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否弹出透明遮罩,如果显示遮罩则会阻止滚动区域滚动\n */\n readonly thyHasBackdrop = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置多选时最大显示的标签数量,0 表示不限制,'auto' 表示自动计算显示数量,默认值为 0\n */\n readonly thyMaxTagCount = input(0, {\n transform: (value: number | 'auto') => {\n if (value === 'auto') return 'auto';\n return numberAttribute(value, 0);\n }\n });\n\n /**\n * 是否隐藏选择框边框\n */\n readonly thyBorderless = input(false, { transform: coerceBooleanProperty });\n\n private scrolledIndex = 0;\n\n readonly cdkVirtualScrollViewport = viewChild<CdkVirtualScrollViewport>(CdkVirtualScrollViewport);\n\n private shouldActivateOption = false;\n\n /**\n * option 列表\n */\n readonly thyOptions = input(undefined, {\n transform: (value: ThySelectOptionModel[]) => {\n if (helpers.isUndefinedOrNull(value)) {\n value = [];\n }\n return value;\n }\n });\n\n readonly keywords = signal<string>('');\n\n /**\n * 目前只支持多选选中项的展示,默认为空,渲染文字模板,传入tag,渲染展示模板,\n * @default ''|tag\n */\n readonly thyPreset = input<string>('');\n\n @ViewChild('trigger', { read: ElementRef, static: true }) trigger!: ElementRef<HTMLElement>;\n\n private readonly options = contentChildren<ThyOption>(ThyOption, { descendants: true });\n\n private readonly groups = contentChildren<ThySelectOptionGroup>(ThySelectOptionGroup, { descendants: true });\n\n /**\n * 所有分组和选项\n */\n private readonly allGroupsAndOptions = signal<ThySelectFlattedItem[]>([]);\n\n /**\n * 渲染的分组和选项,基于 keywords 过滤后\n */\n readonly filteredGroupsAndOptions = computed<ThySelectFlattedItem[]>(() => {\n return this.buildFilteredGroupsAndOptions();\n });\n\n /**\n * 渲染的选项\n */\n private readonly filteredOptions = computed<ThySelectFlattedItem[]>(() => {\n return this.filteredGroupsAndOptions().filter(item => item.type === 'option');\n });\n\n private readonly filteredOptionsMap = computed<Map<SafeAny, ThySelectFlattedItem>>(() => {\n return this.filteredOptions().reduce((map, item) => {\n if (!isUndefinedOrNull(item.value)) {\n map.set(item.value, item);\n }\n return map;\n }, new Map<SafeAny, ThySelectFlattedItem>());\n });\n\n /**\n * 当前选中的值\n */\n readonly selectedValues = linkedSignal<SelectMode, SafeAny[]>({\n source: () => this.thyMode(),\n computation: () => {\n return [];\n }\n });\n\n readonly selectedValuesMap = computed<Map<SafeAny, boolean>>(() => {\n return new Map(this.selectedValues().map(value => [value, true]));\n });\n\n /**\n * 传给 selectControl 指令的选中值\n */\n readonly selectedOptions: WritableSignal<SelectOptionBase | SelectOptionBase[] | null> = linkedSignal<SelectMode, SafeAny[] | null>({\n source: () => this.thyMode(),\n computation: () => {\n return this.thyMode() === 'multiple' ? [] : null;\n }\n });\n\n @ViewChildren(ThyOptionRender) optionRenders!: QueryList<ThyOptionRender>;\n\n @HostListener('keydown', ['$event'])\n keydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n if (event.keyCode === ENTER) {\n event.stopPropagation();\n }\n\n this.handleKeydown(event);\n }\n\n get optionsChanges$() {\n let previousOptions: ThyOptionRender[] = this.optionRenders?.toArray();\n return this.optionRenders.changes.pipe(\n map(data => {\n return this.optionRenders.toArray();\n }),\n filter(data => {\n const res = previousOptions.length !== data.length || previousOptions.some((op, index) => op !== data[index]);\n previousOptions = data;\n return res;\n })\n );\n }\n\n private buildScrollStrategy() {\n if (this.scrollStrategyFactory && isFunction(this.scrollStrategyFactory)) {\n this.scrollStrategy = this.scrollStrategyFactory();\n } else {\n this.scrollStrategy = this.overlay.scrollStrategies.reposition();\n }\n }\n\n constructor() {\n super();\n const selectConfig = this.selectConfig;\n\n this.config = { ...DEFAULT_SELECT_CONFIG, ...selectConfig };\n this.buildScrollStrategy();\n\n afterRenderEffect(() => {\n const options = this.options();\n const groups = this.groups();\n const reactiveOptions = this.thyOptions();\n\n untracked(() => {\n this.buildAllGroupsAndOptions();\n });\n });\n\n afterRenderEffect(() => {\n this.updateSelectedOptions();\n });\n }\n\n writeValue(value: SafeAny): void {\n let selectedValues: SafeAny[];\n if (helpers.isUndefinedOrNull(value)) {\n selectedValues = [];\n } else if (this.isMultiple()) {\n selectedValues = value;\n } else {\n selectedValues = [value];\n }\n this.selectedValues.set(selectedValues);\n }\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n if (!this.elementRef.nativeElement.contains(event.target) && this.panelOpen) {\n this.ngZone.run(() => {\n this.close();\n this.changeDetectorRef.markForCheck();\n });\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n this.setup();\n }\n\n private setup() {\n this.optionsChanges$.pipe(startWith(null), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n // Don't scroll to default highlighted option when scroll load more options\n if (this.shouldActivateOption) {\n this.shouldActivateOption = false;\n this.scrollToActivatedOption();\n }\n\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()!.overlayRef) {\n this.cdkConnectedOverlay()!.overlayRef.updatePosition();\n }\n });\n });\n\n if (this.thyAutoExpand()) {\n timer(0).subscribe(() => {\n this.changeDetectorRef.markForCheck();\n this.open();\n this.focus();\n });\n }\n }\n\n private buildAllGroupsAndOptions() {\n let allGroupsAndOptions: ThySelectFlattedItem[];\n const isReactiveDriven = this.thyOptions() && this.thyOptions()!.length > 0;\n if (isReactiveDriven) {\n allGroupsAndOptions = this.allGroupsAndOptionsByReactive();\n } else {\n allGroupsAndOptions = this.allGroupsAndOptionsByTemplate();\n }\n this.allGroupsAndOptions.set(allGroupsAndOptions);\n }\n\n private allGroupsAndOptionsByReactive(): ThySelectFlattedItem[] {\n const options = this.thyOptions()!;\n const groupMap = new Map<string, ThySelectOptionModel[]>();\n const ungroupedOptions: ThySelectOptionModel[] = [];\n\n const groupsAndOptions: ThySelectFlattedItem[] = [];\n\n for (const option of options) {\n if (option.groupLabel) {\n if (!groupMap.has(option.groupLabel)) {\n groupMap.set(option.groupLabel, []);\n }\n groupMap.get(option.groupLabel)!.push(option);\n } else {\n ungroupedOptions.push(option);\n }\n }\n\n for (const [groupLabel, groupOptions] of groupMap) {\n groupsAndOptions.push({\n type: 'group',\n label: groupLabel\n });\n for (const option of groupOptions) {\n groupsAndOptions.push({\n type: 'option',\n value: option.value,\n label: option.label,\n rawValue: option,\n showOptionCustom: false,\n disabled: !!option.disabled,\n groupLabel: option.groupLabel\n });\n }\n }\n\n for (const option of ungroupedOptions) {\n groupsAndOptions.push({\n type: 'option',\n value: option.value,\n label: option.label,\n rawValue: option,\n showOptionCustom: false,\n disabled: !!option.disabled\n });\n }\n\n return groupsAndOptions;\n }\n\n private allGroupsAndOptionsByTemplate(): ThySelectFlattedItem[] {\n const options = this.options();\n const groups = this.groups();\n\n let groupsAndOptions: ThySelectFlattedItem[] = [];\n\n if (options && options.length > 0) {\n groupsAndOptions = options.map((option: ThyOption) => {\n const { thyValue, thyRawValue, thyLabelText, thyShowOptionCustom, thyDisabled, template, thySearchKey, groupLabel } =\n option;\n\n return {\n type: 'option',\n value: thyValue(),\n rawValue: thyRawValue(),\n label: thyLabelText(),\n showOptionCustom: thyShowOptionCustom(),\n disabled: thyDisabled(),\n template: template(),\n searchKey: thySearchKey(),\n groupLabel: groupLabel\n };\n });\n }\n\n if (groups && groups.length > 0) {\n for (const group of groups) {\n const groupIndex = groupsAndOptions.findIndex(option => option.groupLabel === group.thyGroupLabel());\n if (groupIndex > -1) {\n const groupItem: ThySelectFlattedItem = {\n type: 'group',\n label: group.thyGroupLabel(),\n disabled: group.thyDisabled()\n };\n groupsAndOptions.splice(groupIndex, 0, groupItem);\n }\n }\n }\n\n return groupsAndOptions;\n }\n\n private buildFilteredGroupsAndOptions() {\n const keywords = this.keywords();\n const isServerSearch = this.thyServerSearch();\n const allGroupsAndOptions = this.allGroupsAndOptions();\n const filteredGroupsAndOptions: ThySelectFlattedItem[] = [];\n\n if (keywords && !isServerSearch) {\n const lowerKeywords = keywords.toLowerCase();\n\n const matchedOptions = new Set<string | number>();\n const matchedGroupLabels = new Set<string>();\n\n for (const item of allGroupsAndOptions) {\n if (item.type === 'option') {\n const isMatch =\n (item.searchKey || item.label) && (item.searchKey || item.label)!.toLowerCase().indexOf(lowerKeywords) > -1;\n if (isMatch) {\n matchedOptions.add(item.value!);\n if (item.groupLabel) {\n matchedGroupLabels.add(item.groupLabel);\n }\n }\n }\n }\n\n for (const item of allGroupsAndOptions) {\n if (item.type === 'group' && matchedGroupLabels.has(item.label!)) {\n filteredGroupsAndOptions.push(item);\n } else if (item.type === 'option' && matchedOptions.has(item.value!)) {\n filteredGroupsAndOptions.push(item);\n }\n }\n\n return filteredGroupsAndOptions;\n }\n\n return allGroupsAndOptions;\n }\n\n private updateSelectedOptions() {\n const selectedValues = this.selectedValues();\n const isMultiple = untracked(() => this.isMultiple());\n const newOptions: SelectOptionBase[] = [];\n\n if (selectedValues.length) {\n const filteredOptionsMap = this.filteredOptionsMap();\n const oldSelectedOptionsMap = untracked(() => {\n const selected = this.selectedOptions();\n let oldSelectedOptions: SelectOptionBase[];\n if (helpers.isArray(selected)) {\n oldSelectedOptions = selected;\n } else if (selected) {\n oldSelectedOptions = [selected];\n } else {\n oldSelectedOptions = [];\n }\n return helpers.keyBy(oldSelectedOptions, 'thyValue');\n });\n\n selectedValues.forEach(value => {\n const option: ThySelectFlattedItem | undefined = filteredOptionsMap.get(value);\n\n if (option) {\n newOptions.push({\n thyLabelText: option.label!,\n thyValue: option.value,\n thyRawValue: option.rawValue\n });\n } else if (oldSelectedOptionsMap[value]) {\n newOptions.push(oldSelectedOptionsMap[value]);\n }\n });\n\n this.selectedOptions.set(isMultiple ? newOptions : newOptions.length ? newOptions[0] : null);\n } else {\n this.selectedOptions.set(isMultiple ? [] : null);\n }\n }\n\n public optionsScrolled(index: number) {\n this.scrolledIndex = index;\n\n if (this.thyEnableScrollLoad()) {\n const isScrollToBottom = index + this.maxItemLength() >= this.filteredGroupsAndOptions().length;\n if (isScrollToBottom) {\n this.thyOnScrollToBottom.emit();\n }\n }\n }\n\n public search(keywords: string) {\n this.shouldActivateOption = true;\n this.activatedValue.set(null);\n this.keywords.set(keywords.trim());\n\n if (this.thyServerSearch()) {\n this.thyOnSearch.emit(keywords);\n } else {\n this.updateCdkConnectedOverlayPositions();\n }\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-select-dropdown', 'thy-select'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: FocusEvent) {\n // thyShowSearch 与 panelOpen 均为 true 时,点击 thySelectControl 需要触发自动聚焦到 input 的逻辑\n // manualFocusing 如果是手动聚焦,不触发自动聚焦到 input 的逻辑\n if (\n (this.thyShowSearch() && this.panelOpen) ||\n (!this.manualFocusing &&\n !elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-select-dropdown', 'thy-custom-select']))\n ) {\n const inputElement: HTMLInputElement = this.elementRef.nativeElement.querySelector('input');\n inputElement.focus();\n }\n this.manualFocusing = false;\n }\n\n public focus(options?: FocusOptions): void {\n this.manualFocusing = true;\n this.elementRef.nativeElement.focus(options);\n this.manualFocusing = false;\n }\n\n public remove($event: { item: SelectOptionBase; $eventOrigin: Event }) {\n $event.$eventOrigin.stopPropagation();\n if (this.disabled) {\n return;\n }\n const selectedValue = this.selectedValues();\n const index = selectedValue.indexOf($event.item.thyValue);\n if (index > -1) {\n this.selectedValues.set([...selectedValue.slice(0, index), ...selectedValue.slice(index + 1)]);\n }\n this.emitModelValueChange();\n }\n\n public clearSelectValue(event?: Event) {\n if (event) {\n event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.selectedValues.set([]);\n this.emitModelValueChange();\n }\n\n public updateCdkConnectedOverlayPositions(): void {\n setTimeout(() => {\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()!.overlayRef) {\n this.cdkConnectedOverlay()!.overlayRef.updatePosition();\n }\n });\n }\n\n readonly isMultiple = computed<boolean>(() => {\n return this.thyMode() === 'multiple';\n });\n\n readonly empty = computed(() => {\n return !this.selectedValues().length;\n });\n\n public activatedValue: WritableSignal<string | string[] | number | null | undefined> = signal(null);\n\n public toggle(event: MouseEvent): void {\n if (this.panelOpen) {\n if (!this.thyShowSearch()) {\n this.close();\n }\n } else {\n this.open();\n }\n }\n\n public open(): void {\n if (this.disabled || this.panelOpen) {\n return;\n }\n this.triggerRectWidth.set(this.getOriginRectWidth());\n this.subscribeTriggerResize();\n this.panelOpen = true;\n this.shouldActivateOption = true;\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n }\n\n public close(): void {\n if (this.panelOpen) {\n this.panelOpen = false;\n this.scrolledIndex = 0;\n this.unsubscribeTriggerResize();\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n this.onTouchedFn();\n }\n }\n\n private emitModelValueChange() {\n let modelValue: SafeAny;\n const selectedValues = this.selectedValues();\n if (this.isMultiple()) {\n modelValue = selectedValues;\n } else {\n if (selectedValues.length === 0) {\n modelValue = null;\n } else {\n modelValue = selectedValues[0];\n }\n }\n this.onChangeFn(modelValue);\n this.updateCdkConnectedOverlayPositions();\n }\n\n private scrollToActivatedOption(needSelect: boolean = false): void {\n if (!this.panelOpen) {\n return;\n }\n\n const filteredOptions = this.filteredOptions();\n if (!filteredOptions.length) {\n return;\n }\n\n let toActivatedValue: string | string[] | number | null | undefined = this.activatedValue();\n const filteredOptionsMap = this.filteredOptionsMap();\n if (!toActivatedValue || !filteredOptionsMap.has(toActivatedValue)) {\n let selectedValues = this.selectedValues();\n\n const lowerKeywords = this.keywords()?.trim()?.toLowerCase();\n if (lowerKeywords) {\n selectedValues = selectedValues.filter(value => {\n const option = filteredOptionsMap.get(value);\n return (\n option &&\n (option.searchKey || option.label) &&\n (option.searchKey || option.label)!.toLowerCase().indexOf(lowerKeywords) > -1\n );\n });\n }\n\n if (selectedValues.length > 0) {\n toActivatedValue = selectedValues[0];\n } else {\n if (this.thyAutoActiveFirstItem()) {\n toActivatedValue = filteredOptions[0].value || null;\n }\n }\n\n if (!toActivatedValue) {\n return;\n }\n this.activatedValue.set(toActivatedValue);\n }\n\n const targetIndex = this.filteredGroupsAndOptions().findIndex(item => item.value === toActivatedValue);\n if (targetIndex === -1) {\n return;\n }\n\n if (targetIndex < this.scrolledIndex || targetIndex >= this.scrolledIndex + this.maxItemLength()) {\n this.cdkVirtualScrollViewport()?.scrollToIndex(targetIndex || 0);\n }\n\n if (needSelect) {\n this.optionRenders.find(option => option.thyValue() === toActivatedValue)?.selectViaInteraction();\n }\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n if (event.altKey) {\n if (this.panelOpen && isArrowKey) {\n event.preventDefault();\n this.close();\n return;\n }\n }\n\n if (!this.panelOpen) {\n this.open();\n if (isOpenKey) {\n event.preventDefault();\n return;\n }\n }\n\n const filteredOptions = this.filteredOptions();\n if (keyCode === DOWN_ARROW || keyCode === UP_ARROW) {\n event.preventDefault();\n\n const activatedValue = this.activatedValue();\n const currentOption = this.filteredOptionsMap().get(activatedValue);\n if (!currentOption) {\n return;\n }\n\n const currentIndex = filteredOptions.indexOf(currentOption);\n let targetIndex: number;\n if (keyCode === DOWN_ARROW) {\n targetIndex = currentIndex + 1;\n if (targetIndex > filteredOptions.length - 1) {\n targetIndex = 0;\n }\n let attempts = 0;\n while (filteredOptions[targetIndex]?.disabled && attempts < filteredOptions.length) {\n targetIndex++;\n if (targetIndex > filteredOptions.length - 1) {\n targetIndex = 0;\n }\n attempts++;\n }\n } else {\n targetIndex = currentIndex - 1;\n if (targetIndex < 0) {\n targetIndex = filteredOptions.length - 1;\n }\n let attempts = 0;\n while (filteredOptions[targetIndex]?.disabled && attempts < filteredOptions.length) {\n targetIndex--;\n if (targetIndex < 0) {\n targetIndex = filteredOptions.length - 1;\n }\n attempts++;\n }\n }\n\n const targetOption = filteredOptions[targetIndex];\n if (targetOption?.disabled) {\n return;\n }\n\n this.activatedValue.set(targetOption.value);\n\n if (!hasModifierKey(event)) {\n this.scrollToActivatedOption();\n } else if (this.isMultiple() && event.shiftKey) {\n this.scrollToActivatedOption(true);\n }\n } else if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n const targetOption = keyCode === HOME ? filteredOptions[0] : filteredOptions[filteredOptions.length - 1];\n\n this.activatedValue.set(targetOption.value);\n this.scrollToActivatedOption();\n } else if ((keyCode === ENTER || keyCode === SPACE) && (this.activatedValue() || !this.empty()) && !hasModifierKey(event)) {\n event.preventDefault();\n this.scrollToActivatedOption(true);\n } else if (this.isMultiple() && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = filteredOptions.some(opt => !opt.disabled && !this.selectedValues().includes(opt.value));\n let selectedValues: SafeAny[] = [];\n if (hasDeselectedOptions) {\n selectedValues = filteredOptions.filter(option => !option.disabled).map(option => option.value);\n }\n this.selectedValues.set(selectedValues);\n this.emitModelValueChange();\n } else if (keyCode === TAB) {\n this.focus();\n this.close();\n }\n }\n\n optionClick(event: { value: SafeAny; isUserInput: boolean }) {\n const { value, isUserInput } = event;\n const options = this.options();\n\n if (this.isMultiple()) {\n const selectedValues = this.selectedValues() || [];\n const index = selectedValues.indexOf(value);\n if (index > -1) {\n selectedValues.splice(index, 1);\n } else {\n selectedValues.push(value);\n }\n const thySortComparator = this.thySortComparator();\n if (thySortComparator) {\n selectedValues.sort((a: SafeAny, b: SafeAny) => {\n const aOption = options.find(option => option.thyValue() === a)!;\n const bOption = options.find(option => option.thyValue() === b)!;\n return thySortComparator(aOption, bOption, [...options]);\n });\n }\n this.selectedValues.set([...selectedValues]);\n } else {\n this.selectedValues.set([value]);\n this.close();\n }\n\n const option = options.find(option => option.thyValue() === value);\n if (option) {\n const selected = this.selectedValues().includes(value);\n option.selected.set(selected);\n option.selectionChange.emit({ option, isUserInput });\n }\n\n this.emitModelValueChange();\n if (!this.isMultiple()) {\n this.onTouchedFn();\n }\n }\n\n optionHover(value: SafeAny) {\n this.activatedValue.set(value);\n }\n\n mouseLeaveOptions() {\n this.activatedValue.set(null);\n }\n\n private getOriginRectWidth() {\n return this.thyOrigin() ? coerceElement(this.thyOrigin()).offsetWidth : this.trigger.nativeElement.offsetWidth;\n }\n\n private subscribeTriggerResize(): void {\n this.unsubscribeTriggerResize();\n this.ngZone.runOutsideAngular(() => {\n this.resizeSubscription = new Observable<number | null>(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(null);\n });\n resize.observe(this.trigger.nativeElement);\n })\n .pipe(\n startWith(),\n map(() => {\n return this.getOriginRectWidth();\n }),\n distinctUntilChanged()\n )\n .subscribe((width: number) => {\n this.ngZone.run(() => {\n this.triggerRectWidth.set(width);\n this.updateCdkConnectedOverlayPositions();\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n private unsubscribeTriggerResize(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n }\n\n trackByFn(index: number, item: ThySelectFlattedItem): SafeAny {\n if (item.type === 'group') {\n return item.label || index;\n }\n if (item.type === 'option') {\n return item.value || index;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribeTriggerResize();\n }\n}\n","<div\n cdk-overlay-origin\n thySelectControl\n (click)=\"toggle($event)\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [thyPanelOpened]=\"panelOpen\"\n [thySelectedOptions]=\"selectedOptions()\"\n [thyIsMultiple]=\"isMultiple()\"\n [thyShowSearch]=\"thyShowSearch()\"\n [thyAllowClear]=\"thyAllowClear()\"\n [thySize]=\"thySize()\"\n [thyPlaceholder]=\"thyPlaceHolder()\"\n [customDisplayTemplate]=\"selectedValueDisplayRef()\"\n [thyDisabled]=\"disabled\"\n [thyBorderless]=\"thyBorderless()\"\n (thyOnClear)=\"clearSelectValue($event)\"\n (thyOnRemove)=\"remove($event)\"\n (thyOnSearch)=\"search($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n [thyMaxTagCount]=\"thyMaxTagCount()\"\n [thyPreset]=\"thyPreset()\"></div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop()\"\n [cdkConnectedOverlayPositions]=\"dropDownPositions()\"\n [cdkConnectedOverlayOrigin]=\"thyOrigin() || origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"triggerRectWidth()\"\n [cdkConnectedOverlayMinWidth]=\"dropDownMinWidth()\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n cdkConnectedOverlayTransformOriginOn=\".thy-select-dropdown\"\n (detach)=\"close()\">\n <div\n thyStopPropagation\n [attr.tabindex]=\"-1\"\n [ngClass]=\"dropDownClass()\"\n [@scaleYMotion]=\"placement() === 'top' || placement() === 'bottom' ? 'enter' : 'void'\"\n [@scaleXMotion]=\"placement() === 'left' || placement() === 'right' ? 'enter' : 'void'\"\n [@scaleMotion]=\"\n placement() !== 'top' && placement() !== 'bottom' && placement() !== 'left' && placement() !== 'right' ? 'enter' : 'void'\n \">\n @if (filteredGroupsAndOptions()?.length > 0) {\n <div\n #panel\n class=\"thy-select-dropdown-options thy-select-dropdown-options-{{ thySize() }} thy-select-dropdown-options-with-virtual-scroll\">\n <cdk-virtual-scroll-viewport\n class=\"thy-select-scroll-viewport\"\n [itemSize]=\"thyItemSize()\"\n [style.height.px]=\"virtualHeight()\"\n (scrolledIndexChange)=\"optionsScrolled($event)\"\n (mouseleave)=\"mouseLeaveOptions()\">\n <ng-template\n cdkVirtualFor\n [cdkVirtualForOf]=\"filteredGroupsAndOptions()\"\n [cdkVirtualForTrackBy]=\"trackByFn\"\n [cdkVirtualForTemplateCacheSize]=\"0\"\n let-item>\n @if (item.type === 'group') {\n <thy-option-group-render [thyGroupLabel]=\"item.label\"></thy-option-group-render>\n } @else {\n <thy-option-render\n [thyValue]=\"item.value\"\n [thyRawValue]=\"item.rawValue\"\n [thyLabelText]=\"item.label\"\n [thyShowOptionCustom]=\"item.showOptionCustom\"\n [thySearchKey]=\"item.searchKey\"\n [thyDisabled]=\"item.disabled\"\n [thyTemplate]=\"item.template\"\n [thyShowCheckedIcon]=\"isMultiple()\"\n [thySelectedValuesMap]=\"selectedValuesMap()\"\n [thyActivatedValue]=\"activatedValue()\"\n (optionHover)=\"optionHover($event)\"\n (optionClick)=\"optionClick($event)\">\n </thy-option-render>\n }\n </ng-template>\n </cdk-virtual-scroll-viewport>\n <ng-content></ng-content>\n </div>\n } @else {\n <thy-loading [thyDone]=\"thyLoadState()\" thySize=\"sm\"></thy-loading>\n <div class=\"thy-select-empty-content\">\n @if (thyLoadState()) {\n @let isSearching = keywords();\n <thy-empty\n [thyMessage]=\"isSearching ? thyEmptySearchMessageText() : thyEmptyStateText()\"\n thySize=\"sm\"\n [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n }\n @if (thyFooterTemplate()) {\n <div [class]=\"thyFooterClass() ? thyFooterClass() : 'thy-custom-select-footer'\">\n @if (thyFooterTemplate()) {\n <ng-template [ngTemplateOutlet]=\"thyFooterTemplate()\"></ng-template>\n }\n </div>\n }\n </div>\n</ng-template>\n","import { Component, forwardRef, OnInit, input, viewChild, model, signal , ElementRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, elementMatchClosest } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { SafeAny } from 'ngx-tethys/types';\n\nexport type InputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nconst noop = () => {};\n\n/**\n * 下拉选择\n * @name thy-native-select\n * @order 20\n */\n@Component({\n selector: 'thy-native-select',\n templateUrl: './native-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyNativeSelect),\n multi: true\n }\n ],\n imports: [ThyInputDirective, FormsModule, ThyIcon],\n host: {\n class: 'thy-select',\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n }\n})\nexport class ThyNativeSelect extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit {\n readonly selectElement = viewChild.required<ElementRef<any>>('select');\n\n readonly innerValue = model<SafeAny>(null);\n\n readonly disabled = signal<boolean>(false);\n\n private hostRenderer = useHostRenderer();\n\n readonly thySize = input<InputSize>();\n\n readonly name = input<string>();\n\n readonly thyAllowClear = input(false, { transform: coerceBooleanProperty });\n\n writeValue(obj: any): void {\n if (obj !== this.innerValue()) {\n this.innerValue.set(obj);\n }\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n constructor() {\n super();\n }\n\n ngModelChange() {\n this.onChangeFn(this.innerValue());\n this.onTouchedFn();\n }\n\n ngOnInit() {\n const size = this.thySize();\n const classes = size ? [`thy-select-${size}`] : [];\n this.hostRenderer.updateClass(classes);\n }\n\n onBlur(event: FocusEvent) {\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, 'thy-native-select')) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: Event) {\n this.selectElement().nativeElement.focus();\n }\n\n clearSelectValue(event: Event) {\n event.stopPropagation();\n this.innerValue.set('');\n this.onChangeFn(this.innerValue());\n }\n}\n","<select\n #select\n thyInput\n [tabindex]=\"-1\"\n [thySize]=\"thySize()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"innerValue\"\n (ngModelChange)=\"ngModelChange()\"\n (blur)=\"onBlur($event)\"\n [class.thy-select-selection-allow-clear]=\"thyAllowClear()\">\n <ng-content></ng-content>\n</select>\n<thy-icon thyIconName=\"angle-down\"></thy-icon>\n@if (thyAllowClear() && innerValue()) {\n <a class=\"thy-select-remove remove-link\" href=\"javascript:;\" (click)=\"clearSelectValue($event)\">\n <thy-icon class=\"remove-link-icon\" thyIconName=\"close-circle-bold-fill\"></thy-icon>\n </a>\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyOptionModule, ThySelectCommonModule, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThySelect } from './custom-select/custom-select.component';\nimport { ThyNativeSelect } from './native-select/native-select.component';\nimport { THY_SELECT_CONFIG_PROVIDER, THY_SELECT_SCROLL_STRATEGY_PROVIDER } from './select.config';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyInputModule,\n OverlayModule,\n ThyLoadingModule,\n ThySharedModule,\n ThyIconModule,\n ThyEmptyModule,\n ThySelectCommonModule,\n ThyOptionModule,\n ThyNativeSelect,\n ThySelect\n ],\n exports: [ThyNativeSelect, ThySelect, ThyOptionModule],\n providers: [THY_SELECT_SCROLL_STRATEGY_PROVIDER, THY_SELECT_CONFIG_PROVIDER]\n})\nexport class ThySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-select.mjs","sources":["../../../src/select/select.config.ts","../../../src/select/custom-select/custom-select.component.ts","../../../src/select/custom-select/custom-select.component.html","../../../src/select/native-select/native-select.component.ts","../../../src/select/native-select/native-select.component.html","../../../src/select/module.ts","../../../src/select/ngx-tethys-select.ts"],"sourcesContent":["import { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\n\nexport const THY_SELECT_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('thy-select-scroll-strategy');\n\nexport const THY_SELECT_SCROLL_STRATEGY_FACTORY: (overlay: Overlay) => () => ScrollStrategy = (overlay: Overlay) => {\n return () => overlay.scrollStrategies.reposition();\n};\n\nexport const THY_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: THY_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: THY_SELECT_SCROLL_STRATEGY_FACTORY\n};\n\nexport type ThyDropdownWidthMode = 'match-select' | 'min-width' | { minWidth: number };\n\n/**\n * 打开select下拉菜单的配置\n * @public\n * @order 30\n */\nexport interface ThySelectConfig {\n /**\n * 下拉菜单的最小宽度\n */\n dropdownWidthMode?: ThyDropdownWidthMode;\n\n /**\n * 下拉菜单的弹出位置\n */\n placement?: ThyPlacement;\n}\n\nexport const DEFAULT_SELECT_CONFIG: ThySelectConfig = {\n dropdownWidthMode: 'match-select',\n placement: 'bottom'\n};\n\nexport const THY_SELECT_CONFIG = new InjectionToken<ThySelectConfig>('thy-select-config');\n\nexport const THY_SELECT_CONFIG_PROVIDER = {\n provide: THY_SELECT_CONFIG,\n useValue: DEFAULT_SELECT_CONFIG\n};\n","import {\n getFlexiblePositions,\n injectPanelEmptyIcon,\n scaleMotion,\n scaleXMotion,\n scaleYMotion,\n ScrollToService,\n TabIndexDisabledControlValueAccessorMixin,\n ThyClickDispatcher,\n ThyPlacement\n} from 'ngx-tethys/core';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport {\n SelectControlSize,\n ThyOption,\n ThyOptionRender,\n ThySelectControl,\n ThySelectOptionGroup,\n ThyStopPropagationDirective,\n ThyOptionGroupRender,\n SelectOptionBase,\n ThyViewOutletDirective,\n ThyScrollDirective\n} from 'ngx-tethys/shared';\nimport {\n A,\n coerceBooleanProperty,\n DOWN_ARROW,\n elementMatchClosest,\n END,\n ENTER,\n TAB,\n FunctionProp,\n hasModifierKey,\n helpers,\n HOME,\n isFunction,\n SPACE,\n UP_ARROW\n} from 'ngx-tethys/util';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, take } from 'rxjs/operators';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectionPositionPair, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { isPlatformBrowser, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n QueryList,\n TemplateRef,\n ViewChild,\n viewChild,\n ViewChildren,\n inject,\n Signal,\n input,\n contentChild,\n untracked,\n contentChildren,\n afterRenderEffect,\n signal,\n computed,\n linkedSignal,\n WritableSignal,\n DestroyRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DEFAULT_SELECT_CONFIG,\n THY_SELECT_CONFIG,\n THY_SELECT_SCROLL_STRATEGY,\n ThyDropdownWidthMode,\n ThySelectConfig\n} from '../select.config';\nimport { injectLocale, ThySelectLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { CdkVirtualScrollViewport, ScrollDispatcher, ScrollingModule } from '@angular/cdk/scrolling';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isUndefinedOrNull } from '@tethys/cdk/is';\n\nexport type SelectMode = 'multiple' | '';\n\nexport type ThySelectTriggerType = 'click' | 'hover';\n\nexport const SELECT_PANEL_MAX_HEIGHT = 300;\n\nexport const SELECT_OPTION_MAX_HEIGHT = 40;\n\nexport const SELECT_PANEL_PADDING_TOP = 12;\n\nexport const SELECT_PANEL_PADDING_BOTTOM = 12;\n\nexport const THY_SELECT_PANEL_MIN_WIDTH = 200;\n\nexport interface OptionValue {\n thyLabelText?: string;\n thyValue?: string;\n thyDisabled?: boolean;\n thyShowOptionCustom?: boolean;\n thySearchKey?: string;\n}\n\nexport interface ThySelectOptionModel {\n value?: string | number;\n disabled?: boolean;\n label?: string;\n icon?: string;\n groupLabel?: string;\n}\n\ninterface ThySelectFlattedItem {\n type: 'option' | 'group';\n value?: string | number;\n rawValue?: any;\n label?: string;\n showOptionCustom?: boolean;\n template?: TemplateRef<any>;\n disabled?: boolean;\n searchKey?: string;\n groupLabel?: string;\n}\n\n/**\n * 下拉选择组件\n * @name thy-select,thy-custom-select\n * @order 10\n */\n@Component({\n selector: 'thy-select,thy-custom-select',\n templateUrl: './custom-select.component.html',\n exportAs: 'thySelect',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThySelect),\n multi: true\n },\n ScrollDispatcher\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n CdkConnectedOverlay,\n ThyStopPropagationDirective,\n NgClass,\n ThyLoading,\n ThyEmpty,\n ThyOptionRender,\n ThyOptionGroupRender,\n NgTemplateOutlet,\n ThyViewOutletDirective,\n ThyScrollDirective,\n ScrollingModule\n ],\n host: {\n '[class.thy-select-custom]': 'true',\n '[class.thy-select]': 'true',\n '[class.menu-is-opened]': 'panelOpen',\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n },\n animations: [scaleXMotion, scaleYMotion, scaleMotion]\n})\nexport class ThySelect extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private overlay = inject(Overlay);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private platformId = inject(PLATFORM_ID);\n private locale: Signal<ThySelectLocale> = injectLocale('select');\n scrollStrategyFactory = inject<FunctionProp<ScrollStrategy>>(THY_SELECT_SCROLL_STRATEGY, { optional: true })!;\n selectConfig = inject(THY_SELECT_CONFIG, { optional: true })!;\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n disabled = false;\n\n mode: SelectMode = '';\n\n scrollTop = 0;\n\n defaultOffset = 4;\n\n readonly dropDownClass = computed<{ [key: string]: boolean }>(() => {\n const modeClass = `thy-select-dropdown-${this.isMultiple() ? 'multiple' : 'single'}`;\n return {\n [`thy-select-dropdown`]: true,\n [modeClass]: true\n };\n });\n\n readonly dropDownMinWidth = computed<number | null>(() => {\n const mode = this.thyDropdownWidthMode() || this.config.dropdownWidthMode;\n let dropdownMinWidth: number | null = null;\n\n if ((mode as { minWidth: number })?.minWidth) {\n dropdownMinWidth = (mode as { minWidth: number }).minWidth;\n } else if (mode === 'min-width') {\n dropdownMinWidth = THY_SELECT_PANEL_MIN_WIDTH;\n } else {\n dropdownMinWidth = null;\n }\n\n return dropdownMinWidth;\n });\n\n /**\n * 设置下拉框的最小宽度,默认值 `match-select`,表示与输入框的宽度一致;`min-width` 表示最小宽度为200px;支持自定义最小宽度,比如传 `{minWidth: 150}` 表示最小宽度为150px\n * @default match-select\n */\n readonly thyDropdownWidthMode = input<ThyDropdownWidthMode>();\n\n readonly placement = computed<ThyPlacement>(() => {\n return this.thyPlacement() || this.config.placement!;\n });\n\n readonly dropDownPositions = computed<ConnectionPositionPair[]>(() => {\n return getFlexiblePositions(this.placement(), this.defaultOffset);\n });\n\n public thyItemSize = input(SELECT_OPTION_MAX_HEIGHT, { transform: value => numberAttribute(value) });\n\n readonly virtualHeight = computed<number>(() => {\n const maxVirtualHeight = SELECT_PANEL_MAX_HEIGHT - SELECT_PANEL_PADDING_TOP - SELECT_PANEL_PADDING_BOTTOM;\n const height = this.filteredGroupsAndOptions().length * this.thyItemSize();\n return Math.min(height, maxVirtualHeight);\n });\n\n /**\n * 出现滚动条时,视觉上能看到的最大选项个数\n */\n private maxItemLength = computed(() => {\n return Math.round(this.virtualHeight() / this.thyItemSize());\n });\n\n public triggerRectWidth: WritableSignal<number | undefined> = signal(undefined);\n\n public scrollStrategy?: ScrollStrategy;\n\n private resizeSubscription?: Subscription | null;\n\n /**\n * 手动聚焦中的标识\n */\n private manualFocusing = false;\n\n private config: ThySelectConfig;\n\n private destroyRef = inject(DestroyRef);\n\n readonly cdkConnectedOverlay = viewChild<CdkConnectedOverlay>(CdkConnectedOverlay);\n\n panelOpen = false;\n\n /**\n * 搜索时回调\n */\n readonly thyOnSearch = output<string>();\n\n /**\n * 下拉菜单滚动到底部事件,可以用这个事件实现滚动加载\n */\n readonly thyOnScrollToBottom = output<void>();\n\n /**\n * 下拉菜单展开和折叠状态事件\n */\n readonly thyOnExpandStatusChange = output<boolean>();\n\n /**\n * 下拉列表是否显示搜索框\n */\n readonly thyShowSearch = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 选择框默认文字\n */\n readonly thyPlaceHolder = input<string>(this.locale().placeholder);\n\n /**\n * 是否使用服务端搜索,当为 true 时,将不再在前端进行过滤\n */\n readonly thyServerSearch = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 异步加载 loading 状态,false 表示加载中,true 表示加载完成\n */\n readonly thyLoadState = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 是否自动设置选项第一条为高亮状态\n */\n readonly thyAutoActiveFirstItem = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 下拉选择模式\n * @type 'multiple' | ''\n */\n readonly thyMode = input<SelectMode>('');\n\n /**\n * 操作图标类型\n * @type primary | success | danger | warning\n * @default primary\n */\n readonly thySize = input<SelectControlSize>();\n\n /**\n * 数据为空时显示的提示文字\n */\n readonly thyEmptyStateText = input(this.locale().empty, { transform: (value: string) => value || this.locale().empty });\n\n /**\n * 搜索结果为空时显示的提示文字\n */\n readonly thyEmptySearchMessageText = input(this.locale().empty, { transform: (value: string) => value || this.locale().empty });\n\n /**\n * 滚动加载是否可用,只能当这个参数可以,下面的thyOnScrollToBottom事件才会触发\n */\n readonly thyEnableScrollLoad = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 单选( thyMode=\"\" 或者不设置)时,选择框支持清除\n */\n readonly thyAllowClear = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n get thyDisabled(): boolean {\n return this.disabled;\n }\n\n /**\n * 排序比较函数\n */\n readonly thySortComparator = input<(a: ThyOption, b: ThyOption, options: ThyOption[]) => number>();\n\n /**\n * Footer 模板,默认值为空不显示 Footer\n */\n readonly thyFooterTemplate = input<TemplateRef<any>>();\n\n /**\n * 弹出位置\n * @type ThyPlacement\n */\n readonly thyPlacement = input<ThyPlacement>();\n\n /**\n * 自定义 Overlay Origin\n */\n readonly thyOrigin = input<ElementRef | HTMLElement>();\n\n /**\n * 自定义 Footer 模板容器 class\n */\n readonly thyFooterClass = input<string>('thy-custom-select-footer');\n\n /**\n * @private\n */\n readonly selectedValueDisplayRef = contentChild<TemplateRef<any>>('selectedDisplay');\n\n /**\n * 初始化时,是否展开面板\n */\n readonly thyAutoExpand = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否弹出透明遮罩,如果显示遮罩则会阻止滚动区域滚动\n */\n readonly thyHasBackdrop = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置多选时最大显示的标签数量,0 表示不限制,'auto' 表示自动计算显示数量,默认值为 0\n */\n readonly thyMaxTagCount = input(0, {\n transform: (value: number | 'auto') => {\n if (value === 'auto') return 'auto';\n return numberAttribute(value, 0);\n }\n });\n\n /**\n * 是否隐藏选择框边框\n */\n readonly thyBorderless = input(false, { transform: coerceBooleanProperty });\n\n readonly panel = viewChild<ElementRef<HTMLElement>>('panel');\n\n /**\n * 是否启用虚拟滚动,默认值为 false\n */\n readonly thyVirtualScroll = input(false, { transform: coerceBooleanProperty });\n\n private scrolledIndex = 0;\n\n readonly cdkVirtualScrollViewport = viewChild<CdkVirtualScrollViewport>(CdkVirtualScrollViewport);\n\n private shouldActivateOption = false;\n\n /**\n * option 列表\n */\n readonly thyOptions = input(undefined, {\n transform: (value: ThySelectOptionModel[]) => {\n if (helpers.isUndefinedOrNull(value)) {\n value = [];\n }\n return value;\n }\n });\n\n readonly keywords = signal<string>('');\n\n /**\n * 目前只支持多选选中项的展示,默认为空,渲染文字模板,传入tag,渲染展示模板,\n * @default ''|tag\n */\n readonly thyPreset = input<string>('');\n\n @ViewChild('trigger', { read: ElementRef, static: true }) trigger!: ElementRef<HTMLElement>;\n\n private readonly options = contentChildren<ThyOption>(ThyOption, { descendants: true });\n\n private readonly groups = contentChildren<ThySelectOptionGroup>(ThySelectOptionGroup, { descendants: true });\n\n /**\n * 所有分组和选项\n */\n private readonly allGroupsAndOptions = signal<ThySelectFlattedItem[]>([]);\n\n /**\n * 渲染的分组和选项,基于 keywords 过滤后\n */\n readonly filteredGroupsAndOptions = computed<ThySelectFlattedItem[]>(() => {\n return this.buildFilteredGroupsAndOptions();\n });\n\n /**\n * 渲染的选项\n */\n private readonly filteredOptions = computed<ThySelectFlattedItem[]>(() => {\n return this.filteredGroupsAndOptions().filter(item => item.type === 'option');\n });\n\n private readonly filteredOptionsMap = computed<Map<SafeAny, ThySelectFlattedItem>>(() => {\n return this.filteredOptions().reduce((map, item) => {\n if (!isUndefinedOrNull(item.value)) {\n map.set(item.value, item);\n }\n return map;\n }, new Map<SafeAny, ThySelectFlattedItem>());\n });\n\n /**\n * 当前选中的值\n */\n readonly selectedValues = linkedSignal<SelectMode, SafeAny[]>({\n source: () => this.thyMode(),\n computation: () => {\n return [];\n }\n });\n\n readonly selectedValuesMap = computed<Map<SafeAny, boolean>>(() => {\n return new Map((this.selectedValues() || []).map(value => [value, true]));\n });\n\n /**\n * 传给 selectControl 指令的选中值\n */\n readonly selectedOptions: WritableSignal<SelectOptionBase | SelectOptionBase[] | null> = linkedSignal<SelectMode, SafeAny[] | null>({\n source: () => this.thyMode(),\n computation: () => {\n return this.thyMode() === 'multiple' ? [] : null;\n }\n });\n\n @ViewChildren(ThyOptionRender) optionRenders!: QueryList<ThyOptionRender>;\n\n @HostListener('keydown', ['$event'])\n keydown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n if (event.keyCode === ENTER) {\n event.stopPropagation();\n }\n\n this.handleKeydown(event);\n }\n\n get optionsChanges$() {\n let previousOptions: ThyOptionRender[] = this.optionRenders?.toArray();\n return this.optionRenders.changes.pipe(\n map(data => {\n return this.optionRenders.toArray();\n }),\n filter(data => {\n const res = previousOptions.length !== data.length || previousOptions.some((op, index) => op !== data[index]);\n previousOptions = data;\n return res;\n })\n );\n }\n\n private buildScrollStrategy() {\n if (this.scrollStrategyFactory && isFunction(this.scrollStrategyFactory)) {\n this.scrollStrategy = this.scrollStrategyFactory();\n } else {\n this.scrollStrategy = this.overlay.scrollStrategies.reposition();\n }\n }\n\n constructor() {\n super();\n const selectConfig = this.selectConfig;\n\n this.config = { ...DEFAULT_SELECT_CONFIG, ...selectConfig };\n this.buildScrollStrategy();\n\n afterRenderEffect(() => {\n const options = this.options();\n const groups = this.groups();\n const reactiveOptions = this.thyOptions();\n\n untracked(() => {\n this.buildAllGroupsAndOptions();\n });\n });\n\n afterRenderEffect(() => {\n this.updateSelectedOptions();\n });\n }\n\n writeValue(value: SafeAny): void {\n let selectedValues: SafeAny[];\n if (helpers.isUndefinedOrNull(value)) {\n selectedValues = [];\n } else if (this.isMultiple()) {\n selectedValues = value;\n } else {\n selectedValues = [value];\n }\n this.selectedValues.set(selectedValues);\n }\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n if (!this.elementRef.nativeElement.contains(event.target) && this.panelOpen) {\n this.ngZone.run(() => {\n this.close();\n this.changeDetectorRef.markForCheck();\n });\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n this.setup();\n }\n\n private setup() {\n this.optionsChanges$.pipe(startWith(null), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n // Don't scroll to default highlighted option when scroll load more options\n if (this.shouldActivateOption) {\n this.shouldActivateOption = false;\n this.scrollToActivatedOption();\n }\n\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()!.overlayRef) {\n this.cdkConnectedOverlay()!.overlayRef.updatePosition();\n }\n });\n });\n\n if (this.thyAutoExpand()) {\n timer(0).subscribe(() => {\n this.changeDetectorRef.markForCheck();\n this.open();\n this.focus();\n });\n }\n }\n\n private buildAllGroupsAndOptions() {\n let allGroupsAndOptions: ThySelectFlattedItem[];\n const isReactiveDriven = this.thyOptions() && this.thyOptions()!.length > 0;\n if (isReactiveDriven) {\n allGroupsAndOptions = this.allGroupsAndOptionsByReactive();\n } else {\n allGroupsAndOptions = this.allGroupsAndOptionsByTemplate();\n }\n this.allGroupsAndOptions.set(allGroupsAndOptions);\n }\n\n private allGroupsAndOptionsByReactive(): ThySelectFlattedItem[] {\n const options = this.thyOptions()!;\n const groupMap = new Map<string, ThySelectOptionModel[]>();\n const ungroupedOptions: ThySelectOptionModel[] = [];\n\n const groupsAndOptions: ThySelectFlattedItem[] = [];\n\n for (const option of options) {\n if (option.groupLabel) {\n if (!groupMap.has(option.groupLabel)) {\n groupMap.set(option.groupLabel, []);\n }\n groupMap.get(option.groupLabel)!.push(option);\n } else {\n ungroupedOptions.push(option);\n }\n }\n\n for (const [groupLabel, groupOptions] of groupMap) {\n groupsAndOptions.push({\n type: 'group',\n label: groupLabel\n });\n for (const option of groupOptions) {\n groupsAndOptions.push({\n type: 'option',\n value: option.value,\n label: option.label,\n rawValue: option,\n showOptionCustom: false,\n disabled: !!option.disabled,\n groupLabel: option.groupLabel\n });\n }\n }\n\n for (const option of ungroupedOptions) {\n groupsAndOptions.push({\n type: 'option',\n value: option.value,\n label: option.label,\n rawValue: option,\n showOptionCustom: false,\n disabled: !!option.disabled\n });\n }\n\n return groupsAndOptions;\n }\n\n private allGroupsAndOptionsByTemplate(): ThySelectFlattedItem[] {\n const options = this.options();\n const groups = this.groups();\n\n let groupsAndOptions: ThySelectFlattedItem[] = [];\n\n if (options && options.length > 0) {\n groupsAndOptions = options.map((option: ThyOption) => {\n const {\n thyValue,\n thyRawValue,\n thyLabelText,\n thyShowOptionCustom,\n thyDisabled,\n template,\n suffixTemplate,\n thySearchKey,\n groupLabel\n } = option;\n\n return {\n type: 'option',\n value: thyValue(),\n rawValue: thyRawValue(),\n label: thyLabelText(),\n showOptionCustom: thyShowOptionCustom(),\n disabled: thyDisabled(),\n template: template(),\n suffixTemplate: suffixTemplate(),\n searchKey: thySearchKey(),\n groupLabel: groupLabel\n };\n });\n }\n\n if (groups && groups.length > 0) {\n for (const group of groups) {\n const groupIndex = groupsAndOptions.findIndex(option => option.groupLabel === group.thyGroupLabel());\n if (groupIndex > -1) {\n const groupItem: ThySelectFlattedItem = {\n type: 'group',\n label: group.thyGroupLabel(),\n disabled: group.thyDisabled()\n };\n groupsAndOptions.splice(groupIndex, 0, groupItem);\n }\n }\n }\n\n return groupsAndOptions;\n }\n\n private buildFilteredGroupsAndOptions() {\n const keywords = this.keywords();\n const isServerSearch = this.thyServerSearch();\n const allGroupsAndOptions = this.allGroupsAndOptions();\n const filteredGroupsAndOptions: ThySelectFlattedItem[] = [];\n\n if (keywords && !isServerSearch) {\n const lowerKeywords = keywords.toLowerCase();\n\n const matchedOptions = new Set<string | number>();\n const matchedGroupLabels = new Set<string>();\n\n for (const item of allGroupsAndOptions) {\n if (item.type === 'option') {\n const isMatch =\n (item.searchKey || item.label) && (item.searchKey || item.label)!.toLowerCase().indexOf(lowerKeywords) > -1;\n if (isMatch) {\n matchedOptions.add(item.value!);\n if (item.groupLabel) {\n matchedGroupLabels.add(item.groupLabel);\n }\n }\n }\n }\n\n for (const item of allGroupsAndOptions) {\n if (item.type === 'group' && matchedGroupLabels.has(item.label!)) {\n filteredGroupsAndOptions.push(item);\n } else if (item.type === 'option' && matchedOptions.has(item.value!)) {\n filteredGroupsAndOptions.push(item);\n }\n }\n\n return filteredGroupsAndOptions;\n }\n\n return allGroupsAndOptions;\n }\n\n private updateSelectedOptions() {\n const selectedValues = this.selectedValues();\n const isMultiple = untracked(() => this.isMultiple());\n const newOptions: SelectOptionBase[] = [];\n\n if (selectedValues.length) {\n const filteredOptionsMap = this.filteredOptionsMap();\n const oldSelectedOptionsMap = untracked(() => {\n const selected = this.selectedOptions();\n let oldSelectedOptions: SelectOptionBase[];\n if (helpers.isArray(selected)) {\n oldSelectedOptions = selected;\n } else if (selected) {\n oldSelectedOptions = [selected];\n } else {\n oldSelectedOptions = [];\n }\n return helpers.keyBy(oldSelectedOptions, 'thyValue');\n });\n\n selectedValues.forEach(value => {\n const option: ThySelectFlattedItem | undefined = filteredOptionsMap.get(value);\n\n if (option) {\n newOptions.push({\n thyLabelText: option.label!,\n thyValue: option.value,\n thyRawValue: option.rawValue\n });\n } else if (oldSelectedOptionsMap[value]) {\n newOptions.push(oldSelectedOptionsMap[value]);\n }\n });\n\n this.selectedOptions.set(isMultiple ? newOptions : newOptions.length ? newOptions[0] : null);\n } else {\n this.selectedOptions.set(isMultiple ? [] : null);\n }\n }\n\n public optionsVirtualScrolled(index: number) {\n this.scrolledIndex = index;\n\n if (this.thyEnableScrollLoad()) {\n const isScrollToBottom = index + this.maxItemLength() >= this.filteredGroupsAndOptions().length;\n if (isScrollToBottom) {\n this.thyOnScrollToBottom.emit();\n }\n }\n }\n\n public optionsScrolled(elementRef: ElementRef) {\n const scroll = elementRef.nativeElement.scrollTop,\n height = elementRef.nativeElement.clientHeight,\n scrollHeight = elementRef.nativeElement.scrollHeight;\n\n if (scroll + height + 10 >= scrollHeight) {\n this.ngZone.run(() => {\n this.thyOnScrollToBottom.emit();\n });\n }\n }\n\n public search(keywords: string) {\n this.shouldActivateOption = true;\n this.activatedValue.set(null);\n this.keywords.set(keywords.trim());\n\n if (this.thyServerSearch()) {\n this.thyOnSearch.emit(keywords);\n } else {\n this.updateCdkConnectedOverlayPositions();\n }\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-select-dropdown', 'thy-select'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: FocusEvent) {\n // thyShowSearch 与 panelOpen 均为 true 时,点击 thySelectControl 需要触发自动聚焦到 input 的逻辑\n // manualFocusing 如果是手动聚焦,不触发自动聚焦到 input 的逻辑\n if (\n (this.thyShowSearch() && this.panelOpen) ||\n (!this.manualFocusing &&\n !elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-select-dropdown', 'thy-custom-select']))\n ) {\n const inputElement: HTMLInputElement = this.elementRef.nativeElement.querySelector('input');\n inputElement.focus();\n }\n this.manualFocusing = false;\n }\n\n public focus(options?: FocusOptions): void {\n this.manualFocusing = true;\n this.elementRef.nativeElement.focus(options);\n this.manualFocusing = false;\n }\n\n public remove($event: { item: SelectOptionBase; $eventOrigin: Event }) {\n $event.$eventOrigin.stopPropagation();\n if (this.disabled) {\n return;\n }\n const selectedValue = this.selectedValues();\n const index = selectedValue.indexOf($event.item.thyValue);\n if (index > -1) {\n this.selectedValues.set([...selectedValue.slice(0, index), ...selectedValue.slice(index + 1)]);\n }\n this.emitModelValueChange();\n }\n\n public clearSelectValue(event?: Event) {\n if (event) {\n event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.selectedValues.set([]);\n this.emitModelValueChange();\n }\n\n public updateCdkConnectedOverlayPositions(): void {\n setTimeout(() => {\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()!.overlayRef) {\n this.cdkConnectedOverlay()!.overlayRef.updatePosition();\n }\n });\n }\n\n readonly isMultiple = computed<boolean>(() => {\n return this.thyMode() === 'multiple';\n });\n\n readonly empty = computed(() => {\n return !this.selectedValues().length;\n });\n\n public activatedValue: WritableSignal<string | string[] | number | null | undefined> = signal(null);\n\n public toggle(event: MouseEvent): void {\n if (this.panelOpen) {\n if (!this.thyShowSearch()) {\n this.close();\n }\n } else {\n this.open();\n }\n }\n\n public open(): void {\n if (this.disabled || this.panelOpen) {\n return;\n }\n this.triggerRectWidth.set(this.getOriginRectWidth());\n this.subscribeTriggerResize();\n this.panelOpen = true;\n this.shouldActivateOption = true;\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n }\n\n public close(): void {\n if (this.panelOpen) {\n this.panelOpen = false;\n this.scrolledIndex = 0;\n this.unsubscribeTriggerResize();\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n this.onTouchedFn();\n }\n }\n\n private emitModelValueChange() {\n let modelValue: SafeAny;\n const selectedValues = this.selectedValues();\n if (this.isMultiple()) {\n modelValue = selectedValues;\n } else {\n if (selectedValues.length === 0) {\n modelValue = null;\n } else {\n modelValue = selectedValues[0];\n }\n }\n this.onChangeFn(modelValue);\n this.updateCdkConnectedOverlayPositions();\n }\n\n private scrollToActivatedOption(needSelect: boolean = false): void {\n if (!this.panelOpen) {\n return;\n }\n\n const filteredOptions = this.filteredOptions();\n if (!filteredOptions.length) {\n return;\n }\n\n let toActivatedValue: string | string[] | number | null | undefined = this.activatedValue();\n const filteredOptionsMap = this.filteredOptionsMap();\n if (!toActivatedValue || !filteredOptionsMap.has(toActivatedValue)) {\n let selectedValues = this.selectedValues();\n\n const lowerKeywords = this.keywords()?.trim()?.toLowerCase();\n if (lowerKeywords) {\n selectedValues = selectedValues.filter(value => {\n const option = filteredOptionsMap.get(value);\n return (\n option &&\n (option.searchKey || option.label) &&\n (option.searchKey || option.label)!.toLowerCase().indexOf(lowerKeywords) > -1\n );\n });\n }\n\n if (selectedValues.length > 0) {\n toActivatedValue = selectedValues[0];\n } else {\n if (this.thyAutoActiveFirstItem()) {\n toActivatedValue = filteredOptions[0].value || null;\n }\n }\n\n if (!toActivatedValue) {\n return;\n }\n this.activatedValue.set(toActivatedValue);\n }\n\n const targetIndex = this.filteredGroupsAndOptions().findIndex(item => item.value === toActivatedValue);\n if (targetIndex === -1) {\n return;\n }\n\n if (this.thyVirtualScroll()) {\n if (targetIndex < this.scrolledIndex || targetIndex >= this.scrolledIndex + this.maxItemLength()) {\n this.cdkVirtualScrollViewport()?.scrollToIndex(targetIndex || 0);\n }\n } else {\n const panelElement = this.panel()?.nativeElement;\n if (panelElement) {\n const optionElement = panelElement.querySelector(`[data-option-value=\"${toActivatedValue}\"]`) as HTMLElement;\n if (optionElement) {\n ScrollToService.scrollToElement(optionElement, panelElement);\n }\n }\n }\n\n if (needSelect) {\n this.optionRenders.find(option => option.thyValue() === toActivatedValue)?.selectViaInteraction();\n }\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n if (event.altKey) {\n if (this.panelOpen && isArrowKey) {\n event.preventDefault();\n this.close();\n return;\n }\n }\n\n if (!this.panelOpen) {\n this.open();\n if (isOpenKey) {\n event.preventDefault();\n return;\n }\n }\n\n const filteredOptions = this.filteredOptions();\n if (keyCode === DOWN_ARROW || keyCode === UP_ARROW) {\n event.preventDefault();\n\n const activatedValue = this.activatedValue();\n const currentOption = this.filteredOptionsMap().get(activatedValue);\n if (!currentOption) {\n return;\n }\n\n const currentIndex = filteredOptions.indexOf(currentOption);\n let targetIndex: number;\n if (keyCode === DOWN_ARROW) {\n targetIndex = currentIndex + 1;\n if (targetIndex > filteredOptions.length - 1) {\n targetIndex = 0;\n }\n let attempts = 0;\n while (filteredOptions[targetIndex]?.disabled && attempts < filteredOptions.length) {\n targetIndex++;\n if (targetIndex > filteredOptions.length - 1) {\n targetIndex = 0;\n }\n attempts++;\n }\n } else {\n targetIndex = currentIndex - 1;\n if (targetIndex < 0) {\n targetIndex = filteredOptions.length - 1;\n }\n let attempts = 0;\n while (filteredOptions[targetIndex]?.disabled && attempts < filteredOptions.length) {\n targetIndex--;\n if (targetIndex < 0) {\n targetIndex = filteredOptions.length - 1;\n }\n attempts++;\n }\n }\n\n const targetOption = filteredOptions[targetIndex];\n if (targetOption?.disabled) {\n return;\n }\n\n this.activatedValue.set(targetOption.value);\n\n if (!hasModifierKey(event)) {\n this.scrollToActivatedOption();\n } else if (this.isMultiple() && event.shiftKey) {\n this.scrollToActivatedOption(true);\n }\n } else if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n const targetOption = keyCode === HOME ? filteredOptions[0] : filteredOptions[filteredOptions.length - 1];\n\n this.activatedValue.set(targetOption.value);\n this.scrollToActivatedOption();\n } else if ((keyCode === ENTER || keyCode === SPACE) && (this.activatedValue() || !this.empty()) && !hasModifierKey(event)) {\n event.preventDefault();\n this.scrollToActivatedOption(true);\n } else if (this.isMultiple() && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = filteredOptions.some(opt => !opt.disabled && !this.selectedValues().includes(opt.value));\n let selectedValues: SafeAny[] = [];\n if (hasDeselectedOptions) {\n selectedValues = filteredOptions.filter(option => !option.disabled).map(option => option.value);\n }\n this.selectedValues.set(selectedValues);\n this.emitModelValueChange();\n } else if (keyCode === TAB) {\n this.focus();\n this.close();\n }\n }\n\n optionClick(event: { value: SafeAny; isUserInput: boolean }) {\n const { value, isUserInput } = event;\n const options = this.options();\n\n if (this.isMultiple()) {\n const selectedValues = this.selectedValues() || [];\n const index = selectedValues.indexOf(value);\n if (index > -1) {\n selectedValues.splice(index, 1);\n } else {\n selectedValues.push(value);\n }\n const thySortComparator = this.thySortComparator();\n if (thySortComparator) {\n selectedValues.sort((a: SafeAny, b: SafeAny) => {\n const aOption = options.find(option => option.thyValue() === a)!;\n const bOption = options.find(option => option.thyValue() === b)!;\n return thySortComparator(aOption, bOption, [...options]);\n });\n }\n this.selectedValues.set([...selectedValues]);\n } else {\n this.selectedValues.set([value]);\n }\n\n const option = options.find(option => option.thyValue() === value);\n if (option) {\n const selected = this.selectedValues().includes(value);\n option.selected.set(selected);\n option.selectionChange.emit({ option, isUserInput });\n }\n\n this.emitModelValueChange();\n if (!this.isMultiple()) {\n this.onTouchedFn();\n this.close();\n }\n }\n\n optionHover(value: SafeAny) {\n this.activatedValue.set(value);\n }\n\n mouseLeaveOptions() {\n this.activatedValue.set(null);\n }\n\n private getOriginRectWidth() {\n return this.thyOrigin() ? coerceElement(this.thyOrigin()).offsetWidth : this.trigger.nativeElement.offsetWidth;\n }\n\n private subscribeTriggerResize(): void {\n this.unsubscribeTriggerResize();\n this.ngZone.runOutsideAngular(() => {\n this.resizeSubscription = new Observable<number | null>(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(null);\n });\n resize.observe(this.trigger.nativeElement);\n })\n .pipe(\n startWith(),\n map(() => {\n return this.getOriginRectWidth();\n }),\n distinctUntilChanged()\n )\n .subscribe((width: number) => {\n this.ngZone.run(() => {\n this.triggerRectWidth.set(width);\n this.updateCdkConnectedOverlayPositions();\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n private unsubscribeTriggerResize(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n }\n\n trackByFn(index: number, item: ThySelectFlattedItem): SafeAny {\n if (item.type === 'group') {\n return item.label || index;\n }\n if (item.type === 'option') {\n return item.value || index;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribeTriggerResize();\n }\n}\n","<div\n cdk-overlay-origin\n thySelectControl\n (click)=\"toggle($event)\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [thyPanelOpened]=\"panelOpen\"\n [thySelectedOptions]=\"selectedOptions()\"\n [thyIsMultiple]=\"isMultiple()\"\n [thyShowSearch]=\"thyShowSearch()\"\n [thyAllowClear]=\"thyAllowClear()\"\n [thySize]=\"thySize()\"\n [thyPlaceholder]=\"thyPlaceHolder()\"\n [customDisplayTemplate]=\"selectedValueDisplayRef()\"\n [thyDisabled]=\"disabled\"\n [thyBorderless]=\"thyBorderless()\"\n (thyOnClear)=\"clearSelectValue($event)\"\n (thyOnRemove)=\"remove($event)\"\n (thyOnSearch)=\"search($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n [thyMaxTagCount]=\"thyMaxTagCount()\"\n [thyPreset]=\"thyPreset()\"></div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop()\"\n [cdkConnectedOverlayPositions]=\"dropDownPositions()\"\n [cdkConnectedOverlayOrigin]=\"thyOrigin() || origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"triggerRectWidth()\"\n [cdkConnectedOverlayMinWidth]=\"dropDownMinWidth()\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n cdkConnectedOverlayTransformOriginOn=\".thy-select-dropdown\"\n (detach)=\"close()\">\n <div\n thyStopPropagation\n [attr.tabindex]=\"-1\"\n [ngClass]=\"dropDownClass()\"\n [@scaleYMotion]=\"placement() === 'top' || placement() === 'bottom' ? 'enter' : 'void'\"\n [@scaleXMotion]=\"placement() === 'left' || placement() === 'right' ? 'enter' : 'void'\"\n [@scaleMotion]=\"\n placement() !== 'top' && placement() !== 'bottom' && placement() !== 'left' && placement() !== 'right' ? 'enter' : 'void'\n \">\n @if (filteredGroupsAndOptions()?.length > 0) {\n @if (thyVirtualScroll()) {\n <ng-container *thyViewOutlet=\"virtualScrollTemplate\"> </ng-container>\n } @else {\n <ng-container *thyViewOutlet=\"defaultTemplate\"> </ng-container>\n }\n } @else {\n <thy-loading [thyDone]=\"thyLoadState()\" thySize=\"sm\"></thy-loading>\n <div class=\"thy-select-empty-content\">\n @if (thyLoadState()) {\n @let isSearching = keywords();\n <thy-empty\n [thyMessage]=\"isSearching ? thyEmptySearchMessageText() : thyEmptyStateText()\"\n thySize=\"sm\"\n [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n }\n @if (thyFooterTemplate()) {\n <div [class]=\"thyFooterClass() ? thyFooterClass() : 'thy-custom-select-footer'\">\n @if (thyFooterTemplate()) {\n <ng-template [ngTemplateOutlet]=\"thyFooterTemplate()\"></ng-template>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #virtualScrollTemplate>\n <div\n #panel\n class=\"thy-select-dropdown-options thy-select-dropdown-options-{{ thySize() }} thy-select-dropdown-options-with-virtual-scroll\">\n <cdk-virtual-scroll-viewport\n class=\"thy-select-scroll-viewport\"\n [itemSize]=\"thyItemSize()\"\n [style.height.px]=\"virtualHeight()\"\n (scrolledIndexChange)=\"optionsVirtualScrolled($event)\"\n (mouseleave)=\"mouseLeaveOptions()\">\n <ng-template\n cdkVirtualFor\n [cdkVirtualForOf]=\"filteredGroupsAndOptions()\"\n [cdkVirtualForTrackBy]=\"trackByFn\"\n [cdkVirtualForTemplateCacheSize]=\"0\"\n let-item>\n <ng-container\n *thyViewOutlet=\"\n renderTemplate;\n context: {\n $implicit: item\n }\n \">\n </ng-container>\n </ng-template>\n </cdk-virtual-scroll-viewport>\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template #defaultTemplate>\n <div\n #panel\n class=\"thy-select-dropdown-options thy-select-dropdown-options-{{ thySize() }}\"\n thyScroll\n [thyEnable]=\"thyEnableScrollLoad()\"\n (thyOnScrolled)=\"optionsScrolled($event)\"\n (mouseleave)=\"mouseLeaveOptions()\">\n @for (item of filteredGroupsAndOptions(); track trackByFn($index, item)) {\n <ng-container\n *thyViewOutlet=\"\n renderTemplate;\n context: {\n $implicit: item\n }\n \">\n </ng-container>\n }\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template #renderTemplate let-item>\n @if (item.type === 'group') {\n <thy-option-group-render [thyGroupLabel]=\"item.label\"></thy-option-group-render>\n } @else {\n <thy-option-render\n [attr.data-option-value]=\"item.value\"\n [thyValue]=\"item.value\"\n [thyRawValue]=\"item.rawValue\"\n [thyLabelText]=\"item.label\"\n [thyShowOptionCustom]=\"item.showOptionCustom\"\n [thySearchKey]=\"item.searchKey\"\n [thyDisabled]=\"item.disabled\"\n [thyTemplate]=\"item.template\"\n [thyShowCheckedIcon]=\"isMultiple()\"\n [thySelectedValuesMap]=\"selectedValuesMap()\"\n [thyActivatedValue]=\"activatedValue()\"\n (optionHover)=\"optionHover($event)\"\n (optionClick)=\"optionClick($event)\">\n </thy-option-render>\n\n @if (item.suffixTemplate) {\n <ng-container *thyViewOutlet=\"item.suffixTemplate\"> </ng-container>\n }\n }\n</ng-template>\n","import { Component, forwardRef, OnInit, input, viewChild, model, signal , ElementRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, elementMatchClosest } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { SafeAny } from 'ngx-tethys/types';\n\nexport type InputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nconst noop = () => {};\n\n/**\n * 下拉选择\n * @name thy-native-select\n * @order 20\n */\n@Component({\n selector: 'thy-native-select',\n templateUrl: './native-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyNativeSelect),\n multi: true\n }\n ],\n imports: [ThyInputDirective, FormsModule, ThyIcon],\n host: {\n class: 'thy-select',\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n }\n})\nexport class ThyNativeSelect extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit {\n readonly selectElement = viewChild.required<ElementRef<any>>('select');\n\n readonly innerValue = model<SafeAny>(null);\n\n readonly disabled = signal<boolean>(false);\n\n private hostRenderer = useHostRenderer();\n\n readonly thySize = input<InputSize>();\n\n readonly name = input<string>();\n\n readonly thyAllowClear = input(false, { transform: coerceBooleanProperty });\n\n writeValue(obj: any): void {\n if (obj !== this.innerValue()) {\n this.innerValue.set(obj);\n }\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n constructor() {\n super();\n }\n\n ngModelChange() {\n this.onChangeFn(this.innerValue());\n this.onTouchedFn();\n }\n\n ngOnInit() {\n const size = this.thySize();\n const classes = size ? [`thy-select-${size}`] : [];\n this.hostRenderer.updateClass(classes);\n }\n\n onBlur(event: FocusEvent) {\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, 'thy-native-select')) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: Event) {\n this.selectElement().nativeElement.focus();\n }\n\n clearSelectValue(event: Event) {\n event.stopPropagation();\n this.innerValue.set('');\n this.onChangeFn(this.innerValue());\n }\n}\n","<select\n #select\n thyInput\n [tabindex]=\"-1\"\n [thySize]=\"thySize()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"innerValue\"\n (ngModelChange)=\"ngModelChange()\"\n (blur)=\"onBlur($event)\"\n [class.thy-select-selection-allow-clear]=\"thyAllowClear()\">\n <ng-content></ng-content>\n</select>\n<thy-icon thyIconName=\"angle-down\"></thy-icon>\n@if (thyAllowClear() && innerValue()) {\n <a class=\"thy-select-remove remove-link\" href=\"javascript:;\" (click)=\"clearSelectValue($event)\">\n <thy-icon class=\"remove-link-icon\" thyIconName=\"close-circle-bold-fill\"></thy-icon>\n </a>\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyOptionModule, ThySelectCommonModule, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThySelect } from './custom-select/custom-select.component';\nimport { ThyNativeSelect } from './native-select/native-select.component';\nimport { THY_SELECT_CONFIG_PROVIDER, THY_SELECT_SCROLL_STRATEGY_PROVIDER } from './select.config';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyInputModule,\n OverlayModule,\n ThyLoadingModule,\n ThySharedModule,\n ThyIconModule,\n ThyEmptyModule,\n ThySelectCommonModule,\n ThyOptionModule,\n ThyNativeSelect,\n ThySelect\n ],\n exports: [ThyNativeSelect, ThySelect, ThyOptionModule],\n providers: [THY_SELECT_SCROLL_STRATEGY_PROVIDER, THY_SELECT_CONFIG_PROVIDER]\n})\nexport class ThySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, inject, ViewContainerRef, effect, Directive, ElementRef, NgZone, Renderer2, output, computed, ContentChildren, KeyValueDiffers, linkedSignal, TemplateRef, untracked, ChangeDetectorRef, NgModule, Input, DestroyRef, model, signal, numberAttribute, viewChild, ChangeDetectionStrategy, Component, InjectionToken, HostListener, ViewEncapsulation } from '@angular/core';
2
+ import { input, inject, ViewContainerRef, effect, Directive, ElementRef, NgZone, Renderer2, output, computed, ContentChildren, KeyValueDiffers, linkedSignal, TemplateRef, untracked, ChangeDetectorRef, NgModule, Input, DestroyRef, model, signal, numberAttribute, viewChild, ChangeDetectionStrategy, Component, InjectionToken, HostListener, ViewEncapsulation, contentChild } from '@angular/core';
3
3
  import { reqAnimFrame, TabIndexDisabledControlValueAccessorMixin, ThyTranslate, mixinDisabled, MixinBase } from 'ngx-tethys/core';
4
4
  import { coerceBooleanProperty, keycodes, isTemplateRef, isUndefinedOrNull, coerceArray, ENTER, SPACE, hasModifierKey } from 'ngx-tethys/util';
5
5
  import { useHostRenderer } from '@tethys/cdk/dom';
@@ -1211,13 +1211,14 @@ class ThyOption {
1211
1211
  * 模板
1212
1212
  */
1213
1213
  this.template = viewChild(TemplateRef, ...(ngDevMode ? [{ debugName: "template" }] : []));
1214
+ this.suffixTemplate = contentChild('suffixTemplate', ...(ngDevMode ? [{ debugName: "suffixTemplate" }] : []));
1214
1215
  this.optionGroupComponent = inject(ThySelectOptionGroup, { optional: true });
1215
1216
  }
1216
1217
  get groupLabel() {
1217
1218
  return this.optionGroupComponent?.thyGroupLabel() || '';
1218
1219
  }
1219
1220
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyOption, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1220
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.15", type: ThyOption, isStandalone: true, selector: "thy-option", inputs: { thyValue: { classPropertyName: "thyValue", publicName: "thyValue", isSignal: true, isRequired: false, transformFunction: null }, thyRawValue: { classPropertyName: "thyRawValue", publicName: "thyRawValue", isSignal: true, isRequired: false, transformFunction: null }, thyLabelText: { classPropertyName: "thyLabelText", publicName: "thyLabelText", isSignal: true, isRequired: false, transformFunction: null }, thyShowOptionCustom: { classPropertyName: "thyShowOptionCustom", publicName: "thyShowOptionCustom", isSignal: true, isRequired: false, transformFunction: null }, thySearchKey: { classPropertyName: "thySearchKey", publicName: "thySearchKey", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: `
1221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.15", type: ThyOption, isStandalone: true, selector: "thy-option", inputs: { thyValue: { classPropertyName: "thyValue", publicName: "thyValue", isSignal: true, isRequired: false, transformFunction: null }, thyRawValue: { classPropertyName: "thyRawValue", publicName: "thyRawValue", isSignal: true, isRequired: false, transformFunction: null }, thyLabelText: { classPropertyName: "thyLabelText", publicName: "thyLabelText", isSignal: true, isRequired: false, transformFunction: null }, thyShowOptionCustom: { classPropertyName: "thyShowOptionCustom", publicName: "thyShowOptionCustom", isSignal: true, isRequired: false, transformFunction: null }, thySearchKey: { classPropertyName: "thySearchKey", publicName: "thySearchKey", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "suffixTemplate", first: true, predicate: ["suffixTemplate"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: `
1221
1222
  <ng-template>
1222
1223
  <ng-content></ng-content>
1223
1224
  </ng-template>
@@ -1234,7 +1235,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
1234
1235
  `,
1235
1236
  changeDetection: ChangeDetectionStrategy.OnPush
1236
1237
  }]
1237
- }], propDecorators: { thyValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyValue", required: false }] }], thyRawValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyRawValue", required: false }] }], thyLabelText: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyLabelText", required: false }] }], thyShowOptionCustom: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyShowOptionCustom", required: false }] }], thySearchKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "thySearchKey", required: false }] }], thyDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyDisabled", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
1238
+ }], propDecorators: { thyValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyValue", required: false }] }], thyRawValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyRawValue", required: false }] }], thyLabelText: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyLabelText", required: false }] }], thyShowOptionCustom: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyShowOptionCustom", required: false }] }], thySearchKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "thySearchKey", required: false }] }], thyDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyDisabled", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], suffixTemplate: [{ type: i0.ContentChild, args: ['suffixTemplate', { isSignal: true }] }] } });
1238
1239
 
1239
1240
  /**
1240
1241
  * 选项渲染组件