ngx-tethys 20.0.0 → 20.0.1

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 { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectionPositionPair, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { isPlatformBrowser, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n ContentChildren,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n Input,\n input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n QueryList,\n Signal,\n TemplateRef,\n untracked,\n ViewChild,\n viewChild,\n ViewChildren,\n viewChildren\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\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 IThyOptionParentComponent,\n SelectControlSize,\n THY_OPTION_PARENT_COMPONENT,\n ThyOption,\n ThyOptionsContainer,\n ThyOptionSelectionChangeEvent,\n ThyScrollDirective,\n ThySelectControl,\n ThySelectOptionGroup,\n ThyStopPropagationDirective\n} from 'ngx-tethys/shared';\nimport {\n A,\n coerceBooleanProperty,\n DOWN_ARROW,\n elementMatchClosest,\n END,\n ENTER,\n FunctionProp,\n hasModifierKey,\n helpers,\n HOME,\n isArray,\n isFunction,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW\n} from 'ngx-tethys/util';\nimport { defer, merge, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { injectLocale, ThySelectLocale } from 'ngx-tethys/i18n';\nimport {\n DEFAULT_SELECT_CONFIG,\n THY_SELECT_CONFIG,\n THY_SELECT_SCROLL_STRATEGY,\n ThyDropdownWidthMode,\n ThySelectConfig\n} from '../select.config';\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_OPTION_GROUP_MAX_HEIGHT = 30;\n\nexport const SELECT_PANEL_PADDING_TOP = 10;\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 ThyOptionGroupModel extends ThySelectOptionModel {\n children?: ThySelectOptionModel[];\n}\n\nconst noop = () => {};\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: THY_OPTION_PARENT_COMPONENT,\n useExisting: ThySelect\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThySelect),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n CdkConnectedOverlay,\n ThyStopPropagationDirective,\n NgClass,\n ThyScrollDirective,\n ThyLoading,\n ThyEmpty,\n ThyOptionsContainer,\n ThyOption,\n ThySelectOptionGroup,\n NgTemplateOutlet\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\n extends TabIndexDisabledControlValueAccessorMixin\n implements ControlValueAccessor, IThyOptionParentComponent, OnInit, AfterViewInit, AfterContentInit, OnDestroy\n{\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 modalValue: any = null;\n\n defaultOffset = 4;\n\n dropDownClass: { [key: string]: boolean };\n\n dropDownMinWidth: number | null = null;\n\n /**\n * 设置下拉框的最小宽度,默认值 `match-select`,表示与输入框的宽度一致;`min-width` 表示最小宽度为200px;支持自定义最小宽度,比如传 `{minWidth: 150}` 表示最小宽度为150px\n * @default match-select\n */\n readonly thyDropdownWidthMode = input<ThyDropdownWidthMode>();\n\n public dropDownPositions: ConnectionPositionPair[];\n\n public selectionModel: SelectionModel<ThyOption>;\n\n public triggerRectWidth: number;\n\n public scrollStrategy: ScrollStrategy;\n\n private resizeSubscription: Subscription;\n\n private selectionModelSubscription: Subscription;\n\n /**\n * 手动聚焦中的标识\n */\n private manualFocusing = false;\n\n private config: ThySelectConfig;\n\n private readonly destroy$ = new Subject<void>();\n\n readonly optionSelectionChanges: Observable<ThyOptionSelectionChangeEvent> = defer(() => {\n if (this.options) {\n return merge(...this.options.map(option => outputToObservable(option.selectionChange)));\n }\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<ThyOptionSelectionChangeEvent>;\n\n readonly cdkConnectedOverlay = viewChild<CdkConnectedOverlay>(CdkConnectedOverlay);\n\n keyManager: ActiveDescendantKeyManager<ThyOption>;\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 isReactiveDriven = false;\n\n innerOptions: ThySelectOptionModel[];\n\n optionGroups: ThyOptionGroupModel[] = [];\n\n /**\n * option 列表\n */\n readonly thyOptions = input(undefined, {\n transform: (value: ThySelectOptionModel[]) => {\n if (value === null) {\n value = [];\n }\n this.innerOptions = value;\n this.isReactiveDriven = true;\n this.buildReactiveOptions();\n return value;\n }\n });\n\n options: QueryList<ThyOption>;\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 readonly panel = viewChild<ElementRef<HTMLElement>>('panel');\n\n /**\n * @private\n */\n @ContentChildren(ThyOption, { descendants: true }) contentOptions: QueryList<ThyOption>;\n\n @ViewChildren(ThyOption) viewOptions: QueryList<ThyOption>;\n\n /**\n * @private\n */\n readonly contentGroups = contentChildren<ThySelectOptionGroup>(ThySelectOptionGroup);\n\n readonly viewGroups = viewChildren<ThySelectOptionGroup>(ThySelectOptionGroup);\n\n @HostListener('keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.keyCode === ENTER) {\n event.stopPropagation();\n }\n this.panelOpen ? this.handleOpenKeydown(event) : this.handleClosedKeydown(event);\n }\n }\n\n get optionsChanges$() {\n this.options = this.isReactiveDriven ? this.viewOptions : this.contentOptions;\n let previousOptions: ThyOption[] = this.options.toArray();\n return this.options.changes.pipe(\n map(data => {\n return this.options.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 private isSearching = false;\n\n groupBy = (item: ThySelectOptionModel) => item.groupLabel;\n\n get placement(): ThyPlacement {\n return this.thyPlacement() || this.config.placement;\n }\n\n constructor() {\n super();\n const selectConfig = this.selectConfig;\n\n this.config = { ...DEFAULT_SELECT_CONFIG, ...selectConfig };\n this.buildScrollStrategy();\n\n effect(() => {\n this.mode = this.thyMode();\n untracked(() => {\n this.instanceSelectionModel();\n this.getPositions();\n this.setDropDownClass();\n });\n });\n }\n\n writeValue(value: any): void {\n this.modalValue = value;\n this.setSelectionByModelValue(this.modalValue);\n }\n\n ngOnInit() {\n this.getPositions();\n this.dropDownMinWidth = this.getDropdownMinWidth();\n if (!this.selectionModel) {\n this.instanceSelectionModel();\n }\n this.setDropDownClass();\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntil(this.destroy$))\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 buildOptionGroups(options: ThySelectOptionModel[]) {\n const optionGroups: ThyOptionGroupModel[] = [];\n const groups = [...new Set(options.filter(item => this.groupBy(item)).map(sub => this.groupBy(sub)))];\n const groupMap = new Map();\n groups.forEach(group => {\n const children = options.filter(item => this.groupBy(item) === group);\n const groupOption = {\n groupLabel: group,\n children: children\n };\n groupMap.set(group, groupOption);\n });\n options.forEach(option => {\n if (this.groupBy(option)) {\n const currentIndex = optionGroups.findIndex(item => item.groupLabel === this.groupBy(option));\n if (currentIndex === -1) {\n const item = groupMap.get(this.groupBy(option));\n optionGroups.push(item);\n }\n } else {\n optionGroups.push(option);\n }\n });\n return optionGroups;\n }\n\n buildReactiveOptions() {\n if (this.innerOptions.filter(item => this.groupBy(item)).length > 0) {\n this.optionGroups = this.buildOptionGroups(this.innerOptions);\n } else {\n this.optionGroups = this.innerOptions;\n }\n }\n\n getDropdownMinWidth(): 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 ngAfterViewInit(): void {\n if (this.isReactiveDriven) {\n this.setup();\n }\n }\n\n ngAfterContentInit() {\n if (!this.isReactiveDriven) {\n this.setup();\n }\n }\n\n setup() {\n this.optionsChanges$.pipe(startWith(null), takeUntil(this.destroy$)).subscribe(data => {\n this.resetOptions();\n this.initializeSelection();\n this.initKeyManager();\n if (this.isSearching) {\n this.highlightCorrectOption(false);\n this.isSearching = false;\n }\n this.changeDetectorRef.markForCheck();\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 public get isHiddenOptions(): boolean {\n return this.options.toArray().every(option => option.hidden());\n }\n\n public onAttached(): void {\n this.cdkConnectedOverlay()\n .positionChange.pipe(take(1))\n .subscribe(() => {\n if (this.panel()) {\n if (this.keyManager.activeItem) {\n ScrollToService.scrollToElement(this.keyManager.activeItem.element.nativeElement, this.panel().nativeElement);\n this.changeDetectorRef.detectChanges();\n } else {\n if (!this.empty) {\n ScrollToService.scrollToElement(\n this.selectionModel.selected[0].element.nativeElement,\n this.panel().nativeElement\n );\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n });\n }\n\n public dropDownMouseMove(event: MouseEvent) {\n if (this.keyManager.activeItem) {\n this.keyManager.setActiveItem(-1);\n }\n }\n\n public onOptionsScrolled(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 onSearchFilter(searchText: string) {\n searchText = searchText.trim();\n if (this.thyServerSearch()) {\n this.isSearching = true;\n this.thyOnSearch.emit(searchText);\n } else {\n const options = this.options.toArray();\n options.forEach(option => {\n if (option.matchSearchText(searchText)) {\n option.showOption();\n } else {\n option.hideOption();\n }\n });\n this.highlightCorrectOption(false);\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: ThyOption; $eventOrigin: Event }) {\n $event.$eventOrigin.stopPropagation();\n if (this.disabled) {\n return;\n }\n if (!this.options.find(option => option === $event.item)) {\n $event.item.deselect();\n // fix option unselect can not emit changes;\n this.onSelect($event.item, true);\n } else {\n $event.item.deselect();\n }\n }\n\n public clearSelectValue(event?: Event) {\n if (event) {\n event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.selectionModel.clear();\n this.changeDetectorRef.markForCheck();\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 public get selected(): ThyOption | ThyOption[] {\n return this.isMultiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n public get isMultiple(): boolean {\n return this.mode === 'multiple';\n }\n\n public get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n public getItemCount(): number {\n const group = this.isReactiveDriven ? this.viewGroups() : this.contentGroups();\n return this.options.length + group.length;\n }\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.options || this.panelOpen) {\n return;\n }\n this.triggerRectWidth = this.getOriginRectWidth();\n this.subscribeTriggerResize();\n this.panelOpen = true;\n this.highlightCorrectOption();\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.unsubscribeTriggerResize();\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n this.onTouchedFn();\n }\n }\n\n private emitModelValueChange() {\n const selectedValues = this.selectionModel.selected;\n const changeValue = selectedValues.map((option: ThyOption) => {\n return option.thyValue;\n });\n if (this.isMultiple) {\n this.modalValue = changeValue;\n } else {\n if (changeValue.length === 0) {\n this.modalValue = null;\n } else {\n this.modalValue = changeValue[0];\n }\n }\n this.onChangeFn(this.modalValue);\n this.updateCdkConnectedOverlayPositions();\n }\n\n private highlightCorrectOption(fromOpenPanel: boolean = true): void {\n if (this.keyManager && this.panelOpen) {\n if (fromOpenPanel) {\n if (this.keyManager.activeItem) {\n return;\n }\n if (this.empty) {\n if (!this.thyAutoActiveFirstItem()) {\n return;\n }\n this.keyManager.setFirstItemActive();\n } else {\n this.keyManager.setActiveItem(this.selectionModel.selected[0]);\n }\n } else {\n if (!this.thyAutoActiveFirstItem()) {\n return;\n }\n // always set first option active\n this.keyManager.setFirstItemActive();\n }\n }\n }\n\n private initKeyManager() {\n if (this.keyManager && this.keyManager.activeItem) {\n this.keyManager.activeItem.setInactiveStyles();\n }\n this.keyManager = new ActiveDescendantKeyManager<ThyOption>(this.options)\n .withTypeAhead()\n .withWrap()\n .withVerticalOrientation()\n .withAllowedModifierKeys(['shiftKey']);\n\n this.keyManager.tabOut.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.focus();\n this.close();\n });\n this.keyManager.change.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.panelOpen && this.panel()) {\n if (this.keyManager.activeItem) {\n ScrollToService.scrollToElement(this.keyManager.activeItem.element.nativeElement, this.panel().nativeElement);\n }\n } else if (!this.panelOpen && !this.isMultiple && this.keyManager.activeItem) {\n this.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n private handleClosedKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this.keyManager;\n\n // Open the select on ALT + arrow key to match the native <select>\n if ((isOpenKey && !hasModifierKey(event)) || ((this.isMultiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n } else if (!this.isMultiple) {\n if (keyCode === HOME || keyCode === END) {\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n } else {\n manager.onKeydown(event);\n }\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const manager = this.keyManager;\n\n if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n } else if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n } else if ((keyCode === ENTER || keyCode === SPACE) && (manager.activeItem || !this.empty) && !hasModifierKey(event)) {\n event.preventDefault();\n if (!manager.activeItem) {\n if (manager.activeItemIndex === -1 && !this.empty) {\n manager.setActiveItem(this.selectionModel.selected[0]);\n }\n }\n manager.activeItem.selectViaInteraction();\n } else if (this.isMultiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected());\n\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n if (manager.activeItemIndex === -1 && !this.empty) {\n manager.setActiveItem(this.selectionModel.selected[0]);\n }\n const previouslyFocusedIndex = manager.activeItemIndex;\n\n manager.onKeydown(event);\n\n if (\n this.isMultiple &&\n isArrowKey &&\n event.shiftKey &&\n manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex\n ) {\n manager.activeItem.selectViaInteraction();\n }\n }\n }\n\n private getPositions() {\n this.dropDownPositions = getFlexiblePositions(this.thyPlacement() || this.config.placement, this.defaultOffset);\n }\n\n private instanceSelectionModel() {\n if (this.selectionModel) {\n this.selectionModel.clear();\n }\n this.selectionModel = new SelectionModel<ThyOption>(this.isMultiple);\n if (this.selectionModelSubscription) {\n this.selectionModelSubscription.unsubscribe();\n this.selectionModelSubscription = null;\n }\n this.selectionModelSubscription = this.selectionModel.changed.pipe(takeUntil(this.destroy$)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n }\n\n private resetOptions() {\n const changedOrDestroyed$ = merge(this.optionsChanges$, this.destroy$);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed$)).subscribe((event: ThyOptionSelectionChangeEvent) => {\n this.onSelect(event.option, event.isUserInput);\n if (event.isUserInput && !this.isMultiple && this.panelOpen) {\n this.close();\n this.focus();\n }\n });\n }\n\n private initializeSelection() {\n Promise.resolve().then(() => {\n this.setSelectionByModelValue(this.modalValue);\n });\n }\n\n private setDropDownClass() {\n let modeClass = '';\n if (this.isMultiple) {\n modeClass = `thy-select-dropdown-${this.mode}`;\n } else {\n modeClass = `thy-select-dropdown-single`;\n }\n this.dropDownClass = {\n [`thy-select-dropdown`]: true,\n [modeClass]: true\n };\n }\n\n private setSelectionByModelValue(modalValue: any) {\n if (helpers.isUndefinedOrNull(modalValue)) {\n if (this.selectionModel.selected.length > 0) {\n this.selectionModel.clear();\n this.changeDetectorRef.markForCheck();\n }\n return;\n }\n if (this.isMultiple) {\n if (isArray(modalValue)) {\n const selected = [...this.selectionModel.selected];\n this.selectionModel.clear();\n (modalValue as Array<any>).forEach(itemValue => {\n const option =\n this.options.find(_option => _option.thyValue === itemValue) ||\n selected.find(_option => _option.thyValue === itemValue);\n if (option) {\n this.selectionModel.select(option);\n }\n });\n }\n } else {\n const selectedOption = this.options?.find(option => {\n return option.thyValue === modalValue;\n });\n if (selectedOption) {\n this.selectionModel.select(selectedOption);\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private onSelect(option: ThyOption, isUserInput: boolean) {\n const wasSelected = this.selectionModel.isSelected(option);\n\n if (option.thyValue == null && !this.isMultiple) {\n option.deselect();\n this.selectionModel.clear();\n } else {\n if (wasSelected !== option.selected()) {\n option.selected() ? this.selectionModel.select(option) : this.selectionModel.deselect(option);\n }\n\n if (isUserInput) {\n this.keyManager.setActiveItem(option);\n }\n\n if (this.isMultiple) {\n this.sortValues();\n if (isUserInput) {\n this.focus();\n }\n }\n }\n\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this.emitModelValueChange();\n }\n if (!this.isMultiple) {\n this.onTouchedFn();\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private sortValues() {\n if (this.isMultiple) {\n const options = this.options.toArray();\n\n if (this.thySortComparator()) {\n this.selectionModel.sort((a, b) => {\n return this.thySortComparator()(a, b, options);\n });\n }\n }\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>(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 = 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 ngOnDestroy() {\n this.unsubscribeTriggerResize();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div\n cdk-overlay-origin\n thySelectControl\n (click)=\"toggle($event)\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [thyPanelOpened]=\"panelOpen\"\n [thySelectedOptions]=\"selected\"\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)=\"onSearchFilter($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 (attach)=\"onAttached()\"\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]=\"placement !== 'top' && placement !== 'bottom' && placement !== 'left' && placement !== 'right' ? 'enter' : 'void'\"\n (mousemove)=\"dropDownMouseMove($event)\">\n @if (contentOptions?.length > 0 || contentGroups?.length > 0 || innerOptions?.length > 0) {\n <div\n #panel\n class=\"thy-select-dropdown-options thy-select-dropdown-options-{{ thySize() }}\"\n thyScroll\n (thyOnScrolled)=\"onOptionsScrolled($event)\"\n [thyEnable]=\"thyEnableScrollLoad()\">\n @if (isReactiveDriven) {\n <ng-template [ngTemplateOutlet]=\"optionsContainer.optionsTemplate()\"></ng-template>\n }\n <ng-content></ng-content>\n @if (isHiddenOptions) {\n <thy-loading [thyDone]=\"thyLoadState()\" thySize=\"sm\"></thy-loading>\n <div class=\"thy-select-empty-content\">\n @if (thyLoadState()) {\n <thy-empty [thyMessage]=\"thyEmptySearchMessageText()\" thySize=\"sm\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n }\n </div>\n } @else {\n <thy-loading [thyDone]=\"thyLoadState()\" thySize=\"sm\"></thy-loading>\n <div class=\"thy-select-empty-content\">\n @if (thyLoadState()) {\n <thy-empty [thyMessage]=\"thyEmptyStateText()\" thySize=\"sm\" [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<thy-options-container #optionsContainer>\n @for (option of optionGroups; track $index) {\n @if (!option.children) {\n <thy-option\n [thyDisabled]=\"option.disabled\"\n [thyLabelText]=\"option.label\"\n [thyValue]=\"option.value\"\n [thyRawValue]=\"option\"></thy-option>\n } @else {\n <thy-option-group [thyGroupLabel]=\"option.groupLabel\">\n @for (sub of option.children; track sub.value) {\n <thy-option [thyDisabled]=\"sub.disabled\" [thyLabelText]=\"sub.label\" [thyValue]=\"sub.value\" [thyRawValue]=\"sub\"></thy-option>\n }\n </thy-option-group>\n }\n }\n</thy-options-container>\n","import { Component, forwardRef, OnInit, input, viewChild, model, signal } 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 { ElementRef } from '@angular/core';\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<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":["noop"],"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 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, Dictionary } from 'ngx-tethys/types';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 ],\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 itemSize = SELECT_OPTION_MAX_HEIGHT;\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.itemSize;\n return Math.min(height, maxVirtualHeight);\n });\n\n /**\n * 视觉上能看到的最大选项个数\n */\n private maxItemLength = 7;\n\n public triggerRectWidth: WritableSignal<number> = signal(undefined);\n\n public scrollStrategy: ScrollStrategy;\n\n private resizeSubscription: Subscription;\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<Dictionary<ThySelectFlattedItem>>(() => {\n return helpers.keyBy(this.filteredOptions(), 'value');\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[]> = linkedSignal<SelectMode, SafeAny[]>({\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()?.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 let 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 let 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 = (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 let 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 let option: ThySelectFlattedItem = filteredOptionsMap[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 = 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 = this.activatedValue();\n if (!toActivatedValue || !this.filteredOptionsMap()[toActivatedValue]) {\n if (this.selectedValues().length > 0) {\n toActivatedValue = this.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()[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 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 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 if (this.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 this.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>(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]=\"itemSize\"\n [style.height.px]=\"virtualHeight()\"\n (scrolledIndexChange)=\"optionsScrolled($event)\"\n (mouseleave)=\"mouseLeaveOptions()\">\n <ng-template cdkVirtualFor [cdkVirtualForOf]=\"filteredGroupsAndOptions()\" [cdkVirtualForTrackBy]=\"trackByFn\" 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 } 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 { ElementRef } from '@angular/core';\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<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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"}