{"version":3,"file":"ng-nest-ui-select.mjs","sources":["../../../../lib/ng-nest/ui/select/select.property.ts","../../../../lib/ng-nest/ui/select/select-portal.component.ts","../../../../lib/ng-nest/ui/select/select-portal.component.html","../../../../lib/ng-nest/ui/select/select.component.ts","../../../../lib/ng-nest/ui/select/select.component.html","../../../../lib/ng-nest/ui/select/select.module.ts","../../../../lib/ng-nest/ui/select/ng-nest-ui-select.ts"],"sourcesContent":["import { XToBoolean, XToCssPixelValue, XToDataConvert, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n  XParentIdentityProperty,\r\n  XData,\r\n  XBoolean,\r\n  XSize,\r\n  XNumber,\r\n  XTemplate,\r\n  XPlacement,\r\n  XDirection,\r\n  XAlign,\r\n  XJustify,\r\n  XVariant,\r\n  XFloatLabel\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Select\r\n * @selector x-select\r\n * @decorator component\r\n */\r\nexport const XSelectPrefix = 'x-select';\r\nconst X_SELECT_CONFIG_NAME = 'select';\r\n\r\n/**\r\n * Select Property\r\n */\r\n@Component({ selector: `${XSelectPrefix}-property`, template: '' })\r\nexport class XSelectProperty extends XFormControlFunction(X_SELECT_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 节点数据\r\n   * @en_US Node data\r\n   */\r\n  readonly data = input<XData<XSelectNode>, XData<XSelectNode>>([], { transform: XToDataConvert });\r\n  /**\r\n   * @zh_CN 形态变体\r\n   * @en_US Input variant\r\n   */\r\n  readonly variant = input<XSelectVariant>(this.config?.variant ?? 'outlined');\r\n  /**\r\n   * @zh_CN 宽度\r\n   * @en_US width\r\n   */\r\n  readonly width = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 自适应宽度，需要有默认值\r\n   * @en_US auto width，needs a default value\r\n   */\r\n  readonly autoWidth = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 自适应最小的宽度\r\n   * @en_US auto min width\r\n   */\r\n  readonly autoMinWidth = input<number, XNumber>(40, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 自适应最大的宽度\r\n   * @en_US auto max width，input needs a default value\r\n   */\r\n  readonly autoMaxWidth = input<number | null, XNumber>(null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 清除按钮\r\n   * @en_US Clear button\r\n   */\r\n  readonly clearable = input<boolean, XBoolean>(this.config?.clearable ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 异步加载\r\n   * @en_US Asynchronous loading\r\n   */\r\n  readonly async = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 展示方位\r\n   * @en_US Display position\r\n   */\r\n  readonly placement = input<XPlacement>(this.config?.placement ?? 'bottom');\r\n  /**\r\n   * @zh_CN 多选功能\r\n   * @en_US Multiple choice\r\n   */\r\n  readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 多选添加全选功能\r\n   * @en_US Multi choice to add full selection function\r\n   */\r\n  readonly selectAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 全选的文字\r\n   * @en_US Selected all text\r\n   */\r\n  readonly selectAllText = input<string>(this.config?.selectAllText ?? '');\r\n  /**\r\n   * @zh_CN 节点模板\r\n   * @en_US Node template\r\n   */\r\n  readonly nodeTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 显示边框\r\n   * @en_US Display Border\r\n   */\r\n  readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 输入框样式\r\n   * @en_US Input Style\r\n   */\r\n  readonly inputStyle = input<{ [style: string]: any }>();\r\n  /**\r\n   * @zh_CN 下拉框的最大高度\r\n   * @en_US The biggest height of the drop-down box\r\n   */\r\n  readonly portalMaxHeight = input<string, XNumber>(this.config?.portalMaxHeight ?? '12rem', {\r\n    transform: XToCssPixelValue\r\n  });\r\n  /**\r\n   * @zh_CN 下拉框的高度，启用虚拟滚动的时候必须设置一个高度\r\n   * @en_US The biggest height of the drop-down box\r\n   */\r\n  readonly portalHeight = input<string, XNumber>('', {\r\n    transform: XToCssPixelValue\r\n  });\r\n  /**\r\n   * @zh_CN 下拉框的宽度\r\n   * @en_US The width of the drop-down box\r\n   */\r\n  readonly portalWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 下拉框设置样式名\r\n   * @en_US The style class name of the drop-down box\r\n   */\r\n  readonly portalClass = input<string | string[]>('');\r\n  /**\r\n   * @zh_CN 输入搜索\r\n   * @en_US Input search\r\n   */\r\n  readonly search = input<boolean, XBoolean>(this.config?.search ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 匹配区分大小写\r\n   * @en_US Case-sensitive\r\n   */\r\n  readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 输入延迟执行时间，ms\r\n   * @en_US Enter a delay execution time, ms\r\n   */\r\n  readonly debounceTime = input<number, XNumber>(this.config?.debounceTime ?? 200, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 多选时显示的选中数据个数，其它的在更多中显示，默认全部显示\r\n   * @en_US Display the number of data in the maximum election, and the others are displayed in more of them\r\n   * @default 显示所有\r\n   */\r\n  readonly maxTagCount = input<number, XNumber>(this.config?.maxTagCount ?? -1, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 多选时显示的个数超过指定个数，显示的文字模版\r\n   * @en_US The number displayed when multiple choices exceeds the specified number, the displayed text template displayed\r\n   * @default '更多{{surplus}}个选中'\r\n   */\r\n  readonly maxTagContent = input<XTemplate>(this.config?.maxTagContent ?? '');\r\n  /**\r\n   * @zh_CN 开启虚拟滚动\r\n   * @en_US Turn on virtual scrolling\r\n   */\r\n  readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 搜索时允许使用输入的值，作为选择器的值\r\n   * @en_US Allow the use of input values as selector values during search\r\n   */\r\n  readonly allowInput = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 浮动标签\r\n   * @en_US Float label\r\n   */\r\n  readonly floatLabel = input<XSelectFloatLabel | null>(this.config?.floatLabel ?? null);\r\n  /**\r\n   * @zh_CN 固定浮动标签\r\n   * @en_US Fixed float label\r\n   */\r\n  readonly floatFixed = input<boolean, XBoolean>(this.config?.floatFixed ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 尺寸\r\n   * @en_US Size\r\n   */\r\n  override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n  /**\r\n   * @zh_CN 输入框点击样式\r\n   * @en_US Input pointer\r\n   */\r\n  override readonly pointer = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 标签\r\n   * @en_US Label\r\n   */\r\n  override readonly label = input<XTemplate>('');\r\n  /**\r\n   * @zh_CN 标签宽度\r\n   * @en_US Label width\r\n   */\r\n  override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 标签文字对齐方式\r\n   * @en_US Label text alignment method\r\n   */\r\n  override readonly labelAlign = input<XAlign>('start');\r\n  /**\r\n   * @zh_CN flex 布局下的子元素水平排列方式\r\n   * @en_US The level of sub-element level arrangement under flex layout\r\n   */\r\n  override readonly justify = input<XJustify>('start');\r\n  /**\r\n   * @zh_CN flex 布局下的子元素垂直排列方式\r\n   * @en_US sub-element vertical arrangement method under flex layout\r\n   */\r\n  override readonly align = input<XAlign>('start');\r\n  /**\r\n   * @zh_CN flex 布局下的子元素排列方向\r\n   * @en_US The direction of the sub-element arrangement under flex layout\r\n   */\r\n  override readonly direction = input<XDirection>('column');\r\n  /**\r\n   * @zh_CN 输入提示信息\r\n   * @en_US Enter prompt information\r\n   */\r\n  override readonly placeholder = input<string | string[]>('');\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disabled\r\n   */\r\n  override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 必填\r\n   * @en_US Required\r\n   */\r\n  override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 只读\r\n   * @en_US Readonly\r\n   */\r\n  override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 值模板\r\n   * @en_US Node template\r\n   */\r\n  override readonly valueTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 值模板参数\r\n   * @en_US Node template\r\n   */\r\n  override readonly valueTplContext = input();\r\n  /**\r\n   * @zh_CN 前置标签\r\n   * @en_US Before label\r\n   */\r\n  override readonly before = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 后置标签\r\n   * @en_US After label\r\n   */\r\n  override readonly after = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 正则验证规则\r\n   * @en_US Regular verification rules\r\n   */\r\n  override readonly pattern = input<RegExp | null>(null);\r\n  /**\r\n   * @zh_CN 验证不通过提示文字\r\n   * @en_US Verify not pass the prompt text\r\n   */\r\n  override readonly message = input<string>('');\r\n  /**\r\n   * @zh_CN 激活状态\r\n   * @en_US Activation state\r\n   */\r\n  override readonly active = model<boolean>(false);\r\n  /**\r\n   * @zh_CN 输入验证函数\r\n   * @en_US Enter the verification function\r\n   */\r\n  override readonly inputValidator = input<(value: any) => boolean>();\r\n}\r\n\r\n/**\r\n * Select Option\r\n */\r\nexport interface XSelectOption extends XFormOption {\r\n  /**\r\n   * @zh_CN 节点数据\r\n   * @en_US Node data\r\n   */\r\n  data?: XData<XSelectNode>;\r\n  /**\r\n   * @zh_CN 形态变体\r\n   * @en_US Input variant\r\n   */\r\n  variant?: XSelectVariant;\r\n  /**\r\n   * @zh_CN 清除按钮\r\n   * @en_US Clear button\r\n   */\r\n  clearable?: boolean;\r\n  /**\r\n   * @zh_CN 异步加载\r\n   * @en_US Asynchronous loading\r\n   */\r\n  async?: boolean;\r\n  /**\r\n   * @zh_CN 展示方位\r\n   * @en_US Display position\r\n   */\r\n  placement?: XPlacement;\r\n  /**\r\n   * @zh_CN 多选功能\r\n   * @en_US Multiple choice\r\n   */\r\n  multiple?: boolean;\r\n  /**\r\n   * @zh_CN 多选添加全选功能\r\n   * @en_US Multi choice to add full selection function\r\n   */\r\n  selectAll?: boolean;\r\n  /**\r\n   * @zh_CN 全选的文字\r\n   * @en_US Selected all text\r\n   */\r\n  selectAllText?: string;\r\n  /**\r\n   * @zh_CN 节点模板\r\n   * @en_US Node template\r\n   */\r\n  nodeTpl?: TemplateRef<any>;\r\n  /**\r\n   * @zh_CN 显示边框\r\n   * @en_US Display Border\r\n   */\r\n  bordered?: boolean;\r\n  /**\r\n   * @zh_CN 下拉框的最大高度\r\n   * @en_US The biggest height of the drop-down box\r\n   */\r\n  portalMaxHeight?: string;\r\n  /**\r\n   * @zh_CN 下拉框的宽度\r\n   * @en_US The width of the drop-down box\r\n   */\r\n  portalWidth?: string;\r\n  /**\r\n   * @zh_CN 输入搜索\r\n   * @en_US Input search\r\n   */\r\n  search?: boolean;\r\n  /**\r\n   * @zh_CN 匹配区分大小写\r\n   * @en_US Case-sensitive\r\n   */\r\n  caseSensitive?: boolean;\r\n  /**\r\n   * @zh_CN 输入延迟执行时间，ms\r\n   * @en_US Enter a delay execution time, ms\r\n   */\r\n  debounceTime?: number;\r\n  /**\r\n   * @zh_CN 多选时显示的选中数据个数，其它的在更多中显示，默认全部显示\r\n   * @en_US Display the number of data in the maximum election, and the others are displayed in more of them\r\n   * @default 显示所有\r\n   */\r\n  maxTagCount?: number;\r\n  /**\r\n   * @zh_CN 多选时显示的个数超过指定个数，显示的文字模版\r\n   * @en_US The number displayed when multiple choices exceeds the specified number, the displayed text template displayed\r\n   * @default '更多{{surplus}}个选中'\r\n   */\r\n  maxTagContent?: XTemplate;\r\n  /**\r\n   * @zh_CN 开启虚拟滚动\r\n   * @en_US Turn on virtual scrolling\r\n   */\r\n  virtualScroll?: boolean;\r\n  /**\r\n   * @zh_CN 搜索时允许使用输入的值，作为选择器的值\r\n   * @en_US Allow the use of input values as selector values during search\r\n   */\r\n  allowInput?: boolean;\r\n  /**\r\n   * @zh_CN 浮动标签\r\n   * @en_US Float label\r\n   */\r\n  floatLabel?: XSelectFloatLabel;\r\n  /**\r\n   * @zh_CN 固定浮动标签\r\n   * @en_US Fixed float label\r\n   */\r\n  floatFixed?: boolean;\r\n  /**\r\n   * @zh_CN 尺寸\r\n   * @en_US Size\r\n   */\r\n  size?: XSize;\r\n  /**\r\n   * @zh_CN 输入框点击样式\r\n   * @en_US Input pointer\r\n   */\r\n  pointer?: boolean;\r\n  /**\r\n   * @zh_CN 标签\r\n   * @en_US Label\r\n   */\r\n  label?: string;\r\n  /**\r\n   * @zh_CN 标签宽度\r\n   * @en_US Label width\r\n   */\r\n  labelWidth?: string;\r\n  /**\r\n   * @zh_CN 标签文字对齐方式\r\n   * @en_US Label text alignment method\r\n   */\r\n  labelAlign?: XAlign;\r\n  /**\r\n   * @zh_CN flex 布局下的子元素水平排列方式\r\n   * @en_US The level of sub-element level arrangement under flex layout\r\n   */\r\n  justify?: XJustify;\r\n  /**\r\n   * @zh_CN flex 布局下的子元素垂直排列方式\r\n   * @en_US sub-element vertical arrangement method under flex layout\r\n   */\r\n  align?: XAlign;\r\n  /**\r\n   * @zh_CN flex 布局下的子元素排列方向\r\n   * @en_US The direction of the sub-element arrangement under flex layout\r\n   */\r\n  direction?: XDirection;\r\n  /**\r\n   * @zh_CN 输入提示信息\r\n   * @en_US Enter prompt information\r\n   */\r\n  placeholder?: string;\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disabled\r\n   */\r\n  disabled?: boolean;\r\n  /**\r\n   * @zh_CN 必填\r\n   * @en_US Required\r\n   */\r\n  required?: boolean;\r\n  /**\r\n   * @zh_CN 只读\r\n   * @en_US Readonly\r\n   */\r\n  readonly?: boolean;\r\n  /**\r\n   * @zh_CN 值模板\r\n   * @en_US Node template\r\n   */\r\n  valueTpl?: TemplateRef<any>;\r\n  /**\r\n   * @zh_CN 值模板参数\r\n   * @en_US Node template\r\n   */\r\n  valueTplContext?: any;\r\n  /**\r\n   * @zh_CN 前置标签\r\n   * @en_US Before label\r\n   */\r\n  before?: XTemplate;\r\n  /**\r\n   * @zh_CN 后置标签\r\n   * @en_US After label\r\n   */\r\n  after?: XTemplate;\r\n  /**\r\n   * @zh_CN 正则验证规则\r\n   * @en_US Regular verification rules\r\n   */\r\n  pattern?: RegExp;\r\n  /**\r\n   * @zh_CN 验证不通过提示文字\r\n   * @en_US Verify not pass the prompt text\r\n   */\r\n  message?: string;\r\n  /**\r\n   * @zh_CN 激活状态\r\n   * @en_US Activation state\r\n   */\r\n  active?: boolean;\r\n  /**\r\n   * @zh_CN 输入验证函数\r\n   * @en_US Enter the verification function\r\n   */\r\n  inputValidator?: (value: any) => boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN Select 数据对象\r\n * @en_US Select data object\r\n */\r\nexport interface XSelectNode extends XParentIdentityProperty<XSelectNode> {}\r\n\r\n/**\r\n * @zh_CN 浮动标签类型\r\n * @en_US Float label type\r\n */\r\nexport type XSelectFloatLabel = XFloatLabel;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XSelectVariant = XVariant;\r\n\r\n/**\r\n * Select Portal\r\n * @selector x-select-portal\r\n * @decorator component\r\n */\r\nexport const XSelectPortalPrefix = 'x-select-portal';\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  OnInit,\r\n  TemplateRef,\r\n  input,\r\n  viewChild,\r\n  model,\r\n  output,\r\n  signal,\r\n  computed,\r\n  inject,\r\n  DestroyRef,\r\n  HostBinding,\r\n  HostListener\r\n} from '@angular/core';\r\nimport { XSelectNode, XSelectPortalPrefix } from './select.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XPlacement, XSize } from '@ng-nest/ui/core';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XI18nSelect, XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n  selector: `${XSelectPortalPrefix}`,\r\n  imports: [FormsModule, XListComponent],\r\n  templateUrl: './select-portal.component.html',\r\n  styleUrls: ['./select-portal.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSelectPortalComponent implements OnInit {\r\n  @HostBinding('animate.enter') animateEnter = 'x-connect-enter';\r\n  @HostBinding('animate.leave') animateLeave = 'x-connect-leave';\r\n\r\n  @HostListener('animationend') done() {\r\n    if (this.destroy()) return;\r\n    this.animating.emit(false);\r\n  }\r\n  @HostListener('animationstart') start() {\r\n    if (this.destroy()) return;\r\n    this.animating.emit(true);\r\n  }\r\n\r\n  destroy = signal(false);\r\n  private unSubject = new Subject<void>();\r\n  private destroyRef = inject(DestroyRef);\r\n  private i18n = inject(XI18nService);\r\n\r\n  list = viewChild.required<XListComponent>('list');\r\n\r\n  value = model<any>();\r\n  data = input<XSelectNode[]>();\r\n  placement = input<XPlacement>('bottom');\r\n  multiple = input(1);\r\n  nodeTpl = input<TemplateRef<any>>();\r\n  inputCom = input<XInputComponent>();\r\n  portalMaxHeight = input<string>('');\r\n  portalHeight = input<string>('');\r\n  objectArray = input<boolean>(false);\r\n  selectAll = input(false);\r\n  selectAllText = input<string>('');\r\n  caseSensitive = input<boolean>(true);\r\n  search = input<boolean>(false);\r\n  virtualScroll = input<boolean>(false);\r\n  keywordText = input<any>('');\r\n  size = input<XSize>();\r\n  showPortal = signal(false);\r\n\r\n  animating = output<boolean>();\r\n  nodeClick = output<{ node: XSelectNode | null; value?: XSelectNode[] | (string | number)[] }>();\r\n\r\n  closeSubject!: Subject<void>;\r\n  keydownSubject!: Subject<KeyboardEvent>;\r\n  active = signal(-1);\r\n  locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.select as XI18nSelect)), { initialValue: zh_CN.select });\r\n  getSelectAllText = computed(() => this.selectAllText() || this.locale()!.selectAllText);\r\n\r\n  ngOnInit(): void {\r\n    this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n      this.data() && this.data()!.length > 0 && this.list().setUnActive(this.active());\r\n    });\r\n    this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n      this.data() && this.data()!.length > 0 && this.list().keydown(x);\r\n    });\r\n    this.destroyRef.onDestroy(() => {\r\n      this.destroy.set(true);\r\n      this.unSubject.next();\r\n      this.unSubject.complete();\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.list().keyManager.setFirstItemActive();\r\n  }\r\n\r\n  stopPropagation(event: Event): void {\r\n    event.stopPropagation();\r\n  }\r\n\r\n  onNodeClick(node: XSelectNode) {\r\n    if (this.multiple() === 0) {\r\n      this.nodeClick.emit({ node, value: this.value() });\r\n    } else {\r\n      this.nodeClick.emit({ node });\r\n    }\r\n  }\r\n\r\n  onSelectAll(_isSelectAll: boolean) {\r\n    this.nodeClick.emit({ node: null, value: this.value() });\r\n  }\r\n\r\n  onActive(num: number) {\r\n    this.active.set(num);\r\n  }\r\n\r\n  onTabOut() {\r\n    this.closeSubject.next();\r\n  }\r\n}\r\n","<div\r\n  #selectPortal\r\n  class=\"x-select-portal\"\r\n  [class.x-select-portal-virtualScroll]=\"virtualScroll()\"\r\n  (click)=\"inputCom()?.inputFocus(); stopPropagation($event)\"\r\n  [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n  [style.height]=\"portalHeight()\"\r\n>\r\n  <x-list\r\n    #list\r\n    [data]=\"data()!\"\r\n    [(ngModel)]=\"value\"\r\n    (nodeClick)=\"onNodeClick($event)\"\r\n    (keyManagerChange)=\"onActive($event)\"\r\n    (keyManagerTabOut)=\"onTabOut()\"\r\n    (onSelectAll)=\"onSelectAll($event)\"\r\n    checked\r\n    [objectArray]=\"objectArray()\"\r\n    [multiple]=\"multiple()\"\r\n    [selectAll]=\"selectAll()\"\r\n    [selectAllText]=\"getSelectAllText()!\"\r\n    [nodeTpl]=\"nodeTpl()\"\r\n    [scrollElement]=\"selectPortal\"\r\n    [virtualScroll]=\"virtualScroll()\"\r\n    [size]=\"size()!\"\r\n    [heightAdaption]=\"selectPortal\"\r\n    [keywordText]=\"keywordText()\"\r\n    [caseSensitive]=\"caseSensitive()\"\r\n    [inPortal]=\"true\"\r\n  ></x-list>\r\n</div>\r\n","import { Subject, fromEvent, of } from 'rxjs';\r\nimport {\r\n  Component,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Renderer2,\r\n  ElementRef,\r\n  SimpleChanges,\r\n  OnChanges,\r\n  ViewContainerRef,\r\n  TemplateRef,\r\n  inject,\r\n  AfterViewInit,\r\n  OnDestroy,\r\n  viewChild,\r\n  computed,\r\n  signal,\r\n  ComponentRef,\r\n  effect,\r\n  HostBinding\r\n} from '@angular/core';\r\nimport { XSelectNode, XSelectProperty, XSelectPrefix } from './select.property';\r\nimport {\r\n  XIsEmpty,\r\n  XIsObservable,\r\n  XIsChange,\r\n  XSetData,\r\n  XPositionTopBottom,\r\n  XIsObjectArray,\r\n  XIsFunction,\r\n  XIsArray,\r\n  XIsString,\r\n  XRemove,\r\n  XResize,\r\n  XPlacement,\r\n  XComputed,\r\n  XResizeObserver,\r\n  XParents,\r\n  XIsUndefined,\r\n  XIsNull\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XSelectPortalComponent } from './select-portal.component';\r\nimport {\r\n  Overlay,\r\n  FlexibleConnectedPositionStrategy,\r\n  ConnectedOverlayPositionChange,\r\n  OverlayConfig,\r\n  OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { takeUntil, throttleTime, debounceTime, distinctUntilChanged, map, filter, delay } from 'rxjs/operators';\r\nimport {\r\n  DOWN_ARROW,\r\n  UP_ARROW,\r\n  ENTER,\r\n  MAC_ENTER,\r\n  ESCAPE,\r\n  LEFT_ARROW,\r\n  RIGHT_ARROW,\r\n  TAB,\r\n  BACKSPACE\r\n} from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XI18nSelect, XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XTagComponent } from '@ng-nest/ui/tag';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n  selector: `${XSelectPrefix}`,\r\n  imports: [FormsModule, ReactiveFormsModule, XTagComponent, XInputComponent, XOutletDirective],\r\n  templateUrl: './select.component.html',\r\n  styleUrls: ['./select.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [XValueAccessor(XSelectComponent)]\r\n})\r\nexport class XSelectComponent extends XSelectProperty implements OnInit, OnChanges, AfterViewInit, OnDestroy {\r\n  private i18n = inject(XI18nService);\r\n  document = inject(DOCUMENT);\r\n  private renderer = inject(Renderer2);\r\n  override cdr = inject(ChangeDetectorRef);\r\n  private portalService = inject(XPortalService);\r\n  private viewContainerRef = inject(ViewContainerRef);\r\n  private elementRef = inject(ElementRef);\r\n  private overlay = inject(Overlay);\r\n\r\n  inputCom = viewChild.required<XInputComponent>('inputCom');\r\n  select = viewChild.required<ElementRef<HTMLElement>>('select');\r\n  multipleValueTpl = viewChild.required<TemplateRef<void>>('multipleValueTpl');\r\n  multipleInput = viewChild<XInputComponent>('multipleInput');\r\n  searchInput = viewChild<XInputComponent>('searchInput');\r\n  valueTemplate = viewChild.required<TemplateRef<void>>('valueTemplate');\r\n  searchTemplate = viewChild.required<TemplateRef<void>>('searchTemplate');\r\n\r\n  getReadonly = computed(() => this.readonly() || !this.search() || !this.allowInput());\r\n  getMaxTagContent = computed(() => this.maxTagContent() || this.locale()!.maxTagContent);\r\n\r\n  noPortalWidthPlacements: XPlacement[] = ['bottom', 'top'];\r\n  hasPortalWidthPlacements: XPlacement[] = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\r\n\r\n  override writeValue(value: any) {\r\n    if (this.multiple()) {\r\n      if (XIsNull(value) || XIsUndefined(value)) {\r\n        value = [];\r\n      }\r\n      if (!XIsArray(value)) {\r\n        value = [value];\r\n      }\r\n    }\r\n    this.value.set(value);\r\n    this.setDisplayValue();\r\n  }\r\n\r\n  enter = signal(false);\r\n  showClearable = signal(false);\r\n  displayValue = signal('');\r\n  multipleSearchValue = signal('');\r\n  nodes = signal<XSelectNode[]>([]);\r\n  selectedNodes = signal<XSelectNode[]>([]);\r\n  displayNodes = signal<XSelectNode[]>([]);\r\n  displayMore = signal('');\r\n  showDisplayMore = signal(false);\r\n  searchNodes = signal<XSelectNode[]>([]);\r\n  portal!: XPortalOverlayRef<XSelectPortalComponent>;\r\n  icon = signal('fto-chevron-down');\r\n  iconSpin = signal(false);\r\n  animating = signal(false);\r\n  objectArray = signal(false);\r\n  selectedSurplus = signal(0);\r\n  selectedTotal = signal(0);\r\n  composition = signal(false);\r\n  locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.select as XI18nSelect)), { initialValue: zh_CN.select });\r\n  closeSubject: Subject<void> = new Subject();\r\n  keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n  inputChange: Subject<any> = new Subject();\r\n  multipleInputSizeChange = new Subject<number>();\r\n  private unSubject = new Subject<void>();\r\n  private resizeObserver!: XResizeObserver;\r\n\r\n  @HostBinding('style.width') get getWidth() {\r\n    return this.width();\r\n  }\r\n\r\n  valueTplComputed = computed(() => {\r\n    if (this.valueTpl()) {\r\n      return this.valueTpl();\r\n    }\r\n    if (this.nodeTpl()) {\r\n      return this.nodeTpl();\r\n    }\r\n    if (this.multiple()) {\r\n      return this.multipleValueTpl();\r\n    }\r\n    if (this.search()) {\r\n      return this.searchTemplate();\r\n    }\r\n    return this.valueTemplate();\r\n  });\r\n\r\n  valueTplContextSignal = signal<{ $node: any; $isValue: boolean }>({ $node: null, $isValue: true });\r\n  valueTplContextComputed = computed(() => {\r\n    return this.valueTplContext() ? this.valueTplContext() : this.valueTplContextSignal();\r\n  });\r\n  placements = computed(() => {\r\n    let placement = this.placement();\r\n    if (this.portalWidth()) {\r\n      if (placement === 'bottom') {\r\n        placement = 'bottom-start';\r\n      }\r\n      return [placement, ...this.hasPortalWidthPlacements];\r\n    } else {\r\n      return [placement, ...this.noPortalWidthPlacements];\r\n    }\r\n  });\r\n\r\n  private realPlacement = signal<XPlacement | null>(null);\r\n  portalComponent = signal<ComponentRef<XSelectPortalComponent> | null>(null);\r\n  portalOverlayRef = signal<OverlayRef | null>(null);\r\n  inputChanged = toSignal(this.inputChange);\r\n  portalData = computed(() => {\r\n    const nodes = this.nodes();\r\n    if (\r\n      XIsFunction(this.data()) ||\r\n      XIsEmpty(this.inputChanged()) ||\r\n      (!this.multiple() && this.displayValue() === '') ||\r\n      (this.multiple() && this.multipleSearchValue() === '') ||\r\n      this.portalAllData()\r\n    ) {\r\n      return nodes;\r\n    }\r\n    return this.searchNodes();\r\n  });\r\n  portalAllData = signal(true);\r\n  allowAgian = signal(true);\r\n  keywordText = signal('');\r\n\r\n  constructor() {\r\n    super();\r\n    effect(() => this.portalComponent()?.setInput('data', this.portalData()));\r\n    effect(() => this.portalComponent()?.setInput('value', this.value()));\r\n    effect(() => this.portalComponent()?.setInput('placement', this.realPlacement()));\r\n    effect(() => this.portalComponent()?.setInput('multiple', this.multiple() === true ? 0 : 1));\r\n    effect(() => this.portalComponent()?.setInput('nodeTpl', this.nodeTpl()));\r\n    effect(() => this.portalComponent()?.setInput('inputCom', this.inputCom()));\r\n    effect(() => this.portalComponent()?.setInput('portalMaxHeight', this.portalMaxHeight()));\r\n    effect(() => this.portalComponent()?.setInput('portalHeight', this.portalHeight()));\r\n    effect(() => this.portalComponent()?.setInput('objectArray', this.objectArray()));\r\n    effect(() => this.portalComponent()?.setInput('selectAll', this.selectAll()));\r\n    effect(() => this.portalComponent()?.setInput('selectAllText', this.selectAllText()));\r\n    effect(() => this.portalComponent()?.setInput('caseSensitive', this.caseSensitive()));\r\n    effect(() => this.portalComponent()?.setInput('search', this.search()));\r\n    effect(() => this.portalComponent()?.setInput('virtualScroll', this.virtualScroll()));\r\n    effect(() => this.portalComponent()?.setInput('size', this.size()));\r\n    effect(() => this.portalComponent()?.setInput('keywordText', this.keywordText()));\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.setSubject();\r\n    this.setParantScroll();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { data } = changes;\r\n    XIsChange(data) && this.setData();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.setPortal();\r\n    if (this.multiple() && this.inputCom().inputValueRef()) {\r\n      XResize(this.inputCom().inputValueRef()?.nativeElement)\r\n        .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n        .subscribe((x) => {\r\n          this.resizeObserver = x.resizeObserver;\r\n          this.setMutipleInputSize();\r\n        });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unSubject.next();\r\n    this.unSubject.complete();\r\n    this.resizeObserver?.disconnect();\r\n  }\r\n\r\n  setData() {\r\n    if (this.async()) return;\r\n    XSetData<XSelectNode>(this.data(), this.unSubject).subscribe((x) => {\r\n      this.nodes.set(x);\r\n      this.setDisplayValue();\r\n      this.setPortal();\r\n    });\r\n  }\r\n\r\n  setSubject() {\r\n    this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n      this.closePortal();\r\n    });\r\n    this.inputChange\r\n      .pipe(debounceTime(this.debounceTime() as number), distinctUntilChanged(), takeUntil(this.unSubject))\r\n      .subscribe((x) => {\r\n        this.keywordText.set(x);\r\n        this.modelChange(x);\r\n        if (this.allowInput() && !this.multiple()) {\r\n          this.value.set(x);\r\n          this.onChange && this.onChange(this.value());\r\n        }\r\n      });\r\n    this.keydownSubject.pipe(throttleTime(10), takeUntil(this.unSubject)).subscribe((x) => {\r\n      const keyCode = x.keyCode;\r\n      if (\r\n        !this.portalAttached() &&\r\n        [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, MAC_ENTER, BACKSPACE].includes(keyCode)\r\n      ) {\r\n        this.modelChange(this.displayValue());\r\n      }\r\n      if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n        this.closeSubject.next();\r\n      }\r\n      if (this.portalAttached() && [ENTER].includes(keyCode)) {\r\n        if (this.allowInput() && this.multiple()) {\r\n          const val = this.multipleSearchValue();\r\n          if (XIsEmpty(val)) return;\r\n          if (!this.displayNodes().find((x) => x.id === val)) {\r\n            this.nodeClick({ id: val, label: val, selected: true }, [...this.displayNodes().map((x) => x.id), val]);\r\n          }\r\n          this.multipleSearchValue.set('');\r\n        }\r\n      }\r\n    });\r\n    this.multipleInputSizeChange.pipe(distinctUntilChanged(), takeUntil(this.unSubject)).subscribe((x) => {\r\n      if (this.multipleInput()) {\r\n        const input = this.multipleInput()?.elementRef.nativeElement;\r\n        this.renderer.setStyle(input, 'width', `${x}px`);\r\n      }\r\n    });\r\n  }\r\n\r\n  setMutipleInputSize() {\r\n    const ivf = this.inputCom().inputValueRef()?.nativeElement as HTMLDivElement;\r\n    let { clientWidth, scrollHeight } = ivf;\r\n    const len = ivf.children.length;\r\n    let lastRowTagTop = -1;\r\n    let lines = 1;\r\n    let rowTagTop = -1;\r\n    let lastRowTagsWidth = 0;\r\n    let marginLeft = 0;\r\n    let marginTop = 0;\r\n    for (let i = len - 1; i >= 0; i--) {\r\n      const ele = ivf.children[i] as HTMLElement;\r\n      if (ele.tagName === 'X-TAG') {\r\n        const { offsetTop, offsetWidth } = ele;\r\n        const style = XComputed(ele);\r\n        marginLeft = Number(style.marginLeft.replace('px', ''));\r\n        marginTop = Number(style.marginTop.replace('px', ''));\r\n        if (rowTagTop === -1) {\r\n          rowTagTop = offsetTop;\r\n        } else if (rowTagTop !== offsetTop) {\r\n          lines++;\r\n          rowTagTop = offsetTop;\r\n        }\r\n        if (lastRowTagTop === -1) {\r\n          lastRowTagTop = offsetTop;\r\n        }\r\n        if (lastRowTagTop === offsetTop) {\r\n          lastRowTagsWidth += offsetWidth + marginLeft;\r\n        }\r\n      }\r\n    }\r\n    const height = scrollHeight + (lines > 1 ? marginTop : 0);\r\n    this.renderer.setStyle(this.inputCom().inputRef().nativeElement, 'height', `${height}px`);\r\n    if (this.multipleInput()) {\r\n      this.multipleInputSizeChange.next(clientWidth - lastRowTagsWidth - marginLeft);\r\n    }\r\n    this.portal?.overlayRef?.updatePosition();\r\n  }\r\n\r\n  menter() {\r\n    if (this.disabledComputed() || !this.clearable() || this.iconSpin()) return;\r\n    this.enter.set(true);\r\n    if ((!this.multiple() && !XIsEmpty(this.displayValue())) || (this.multiple() && !XIsEmpty(this.displayNodes()))) {\r\n      this.icon.set('fto-x');\r\n      this.showClearable.set(true);\r\n    }\r\n  }\r\n\r\n  mleave() {\r\n    if (this.disabledComputed() || !this.clearable() || this.iconSpin()) return;\r\n    this.enter.set(false);\r\n    if (this.clearable()) {\r\n      this.icon.set('fto-chevron-down');\r\n      this.showClearable.set(false);\r\n    }\r\n  }\r\n\r\n  modelChange(value: string | number) {\r\n    if (XIsFunction(this.data())) {\r\n      if (!this.portalAttached()) {\r\n        this.showPortal();\r\n      }\r\n      this.icon.set('fto-loader');\r\n      this.iconSpin.set(true);\r\n      XSetData<XSelectNode>(this.data(), this.unSubject, true, value as any).subscribe((x) => {\r\n        this.icon.set('');\r\n        this.iconSpin.set(false);\r\n        if (!this.enter() && this.clearable()) {\r\n          this.showClearable.set(false);\r\n        }\r\n        this.nodes.set(x);\r\n      });\r\n      return;\r\n    }\r\n    if (this.nodes()) {\r\n      this.portalAllData.set(false);\r\n      if (!this.portalAttached()) {\r\n        this.showPortal();\r\n      }\r\n      if (XIsEmpty(value)) {\r\n        this.searchNodes.set(this.nodes());\r\n      } else {\r\n        this.setSearchNodes(value);\r\n      }\r\n    }\r\n  }\r\n\r\n  setSearchNodes(value: string | number) {\r\n    if (this.caseSensitive()) {\r\n      this.searchNodes.set(this.nodes().filter((x) => String(x.label).indexOf(String(value)) >= 0));\r\n    } else {\r\n      this.searchNodes.set(\r\n        this.nodes().filter((x) => String(x.label).toLowerCase().indexOf(String(value).toLowerCase()) >= 0)\r\n      );\r\n    }\r\n  }\r\n\r\n  setParantScroll() {\r\n    if (!this.document) return;\r\n    const parents = XParents(this.elementRef.nativeElement);\r\n    let firstScroll: HTMLElement | null = null;\r\n    for (let item of parents) {\r\n      if (item.clientHeight < item.scrollHeight) {\r\n        firstScroll = item;\r\n        break;\r\n      }\r\n    }\r\n    if (firstScroll && firstScroll.tagName !== 'BODY') {\r\n      fromEvent(firstScroll, 'scroll')\r\n        .pipe(\r\n          filter(() => this.portalAttached()!),\r\n          takeUntil(this.unSubject)\r\n        )\r\n        .subscribe(() => {\r\n          this.portal?.overlayRef?.updatePosition();\r\n          const eract = this.elementRef.nativeElement.getBoundingClientRect();\r\n          const frect = firstScroll!.getBoundingClientRect();\r\n          if (eract.top + eract.height - frect.top < 0 || eract.bottom > frect.bottom) {\r\n            this.closeSubject.next();\r\n          }\r\n        });\r\n    }\r\n  }\r\n\r\n  clearEmit() {\r\n    this.value.update(() => {\r\n      if (this.multiple()) {\r\n        return [];\r\n      } else {\r\n        return '';\r\n      }\r\n    });\r\n    this.displayValue.set('');\r\n    this.multipleSearchValue.set('');\r\n    this.selectedNodes.set([]);\r\n    this.setDisplayNodes();\r\n    this.valueTplContextSignal.update((x) => {\r\n      x.$node = null;\r\n      return { ...x };\r\n    });\r\n    this.mleave();\r\n    this.inputChange.next('');\r\n    if (this.search()) {\r\n      if (!this.multiple()) {\r\n        this.searchInput()?.inputFocus();\r\n      } else {\r\n        this.multipleInput()?.inputFocus();\r\n      }\r\n    }\r\n    if (this.onChange) this.onChange(this.value());\r\n  }\r\n\r\n  setDisplayValue(clickNode?: XSelectNode) {\r\n    if (this.nodes().length > 0) {\r\n      if (this.multiple()) {\r\n        if (XIsEmpty(this.value())) {\r\n          if (XIsUndefined(this.value()) || XIsNull(this.value()) || this.value() === '') {\r\n            this.value.set([]);\r\n          } else {\r\n            this.value.update((x) => {\r\n              x.splice(0, x.length);\r\n              return x;\r\n            });\r\n          }\r\n          this.displayValue.set('');\r\n          this.selectedNodes.set([]);\r\n          this.displayNodes.set([]);\r\n          this.displayMore.set('');\r\n          this.valueTplContextSignal.update((x) => {\r\n            x.$node = null;\r\n            return { ...x };\r\n          });\r\n          this.setDisplayNodes();\r\n        } else {\r\n          let ids = [];\r\n          let selected = [];\r\n          if (XIsObjectArray<XSelectNode[]>(this.value())) {\r\n            this.objectArray.set(true);\r\n            ids = this.value().map((x: XSelectNode) => x.id);\r\n          } else {\r\n            this.objectArray.set(false);\r\n            ids = this.value();\r\n          }\r\n          if (clickNode) {\r\n            if (clickNode.selected) {\r\n              this.selectedNodes.update((x) => {\r\n                x.push(clickNode);\r\n                return [...x];\r\n              });\r\n            } else {\r\n              this.selectedNodes.update((x) => {\r\n                XRemove(x, (y) => y.id === clickNode.id);\r\n                return [...x];\r\n              });\r\n            }\r\n          } else {\r\n            for (let id of ids) {\r\n              let node = this.nodes().find((x) => x.id === id);\r\n              if (node) selected.push(node);\r\n              else if (this.allowInput()) {\r\n                selected.push({ id: id, label: id });\r\n              }\r\n            }\r\n            this.selectedNodes.set(selected);\r\n          }\r\n          this.setDisplayNodes();\r\n          this.displayValue.set(\r\n            this.selectedNodes()\r\n              .map((x) => x.label)\r\n              .join(',')\r\n          );\r\n          this.valueTplContextSignal.update((x) => {\r\n            x.$node = [...this.selectedNodes()];\r\n            return { ...x };\r\n          });\r\n        }\r\n      } else {\r\n        if (this.allowInput()) {\r\n          this.displayValue.set(this.value());\r\n        } else {\r\n          let node = this.nodes().find((x) => x.id === this.value());\r\n          if (node) {\r\n            this.displayValue.set(node.label);\r\n            this.valueTplContextSignal.update((x) => {\r\n              x.$node = node;\r\n              return { ...x };\r\n            });\r\n          } else {\r\n            this.displayValue.set('');\r\n            this.valueTplContextSignal.update((x) => {\r\n              x.$node = null;\r\n              return { ...x };\r\n            });\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  closeNode(event: Event, node: XSelectNode, index: number) {\r\n    let inx = -1;\r\n    if (XIsObjectArray<XSelectNode[]>(this.value())) {\r\n      inx = this.value().findIndex((y: XSelectNode) => y.id === node.id);\r\n    } else {\r\n      inx = this.value().findIndex((y: number | string) => y === node.id);\r\n    }\r\n    if (inx >= 0) {\r\n      this.value.update((x) => {\r\n        x.splice(inx, 1);\r\n        return [...x];\r\n      });\r\n      if (this.onChange) this.onChange(this.value());\r\n      this.selectedNodes.update((x) => {\r\n        x.splice(index, 1);\r\n        return x;\r\n      });\r\n      this.setDisplayNodes();\r\n    }\r\n    event.stopPropagation();\r\n  }\r\n\r\n  setDisplayNodes() {\r\n    if (!this.multiple()) return;\r\n    const maxlen = this.selectedNodes().length;\r\n    let len = 0;\r\n    if (this.maxTagCount() >= 0) {\r\n      len = maxlen > this.maxTagCount() ? this.maxTagCount() : maxlen;\r\n    } else {\r\n      len = maxlen;\r\n    }\r\n    let more = maxlen - len;\r\n    more = more < 0 ? 0 : more;\r\n    this.displayNodes.set(this.selectedNodes().slice(0, len));\r\n    this.showDisplayMore.set(more > 0);\r\n    if (XIsString(this.getMaxTagContent())) {\r\n      this.displayMore.set(more > 0 ? (this.getMaxTagContent() as string).replace(/\\{\\{surplus\\}\\}/g, `${more}`) : '');\r\n    } else {\r\n      this.selectedSurplus.set(more);\r\n      this.selectedTotal.set(maxlen);\r\n    }\r\n    setTimeout(() => this.setMutipleInputSize());\r\n  }\r\n\r\n  portalAttached() {\r\n    return this.portal?.overlayRef?.hasAttached();\r\n  }\r\n\r\n  closePortal() {\r\n    if (this.portalAttached()) {\r\n      this.portal?.overlayRef?.detach();\r\n      this.active.set(false);\r\n      this.multipleSearchValue.set('');\r\n      this.portalAllData.set(true);\r\n      this.allowAgian.set(false);\r\n      of(true)\r\n        .pipe(delay(200))\r\n        .subscribe(() => this.allowAgian.set(true));\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  showPortal(click = false) {\r\n    if (this.disabledComputed() || !this.allowAgian() || this.iconSpin() || this.animating()) return;\r\n    this.active.set(true);\r\n    if ((this.async() && XIsObservable(this.data()) && this.nodes().length === 0) || XIsFunction(this.data())) {\r\n      this.icon.set('fto-loader');\r\n      this.iconSpin.set(true);\r\n      XSetData<XSelectNode>(this.data(), this.unSubject, true, click ? '' : this.displayValue()).subscribe((x) => {\r\n        this.icon.set('fto-chevron-down');\r\n        this.iconSpin.set(false);\r\n        if (!this.enter() && this.clearable()) {\r\n          this.showClearable.set(false);\r\n        }\r\n        this.nodes.set(x);\r\n        if (!this.search()) this.setDisplayValue();\r\n        this.createPortal();\r\n      });\r\n    } else {\r\n      this.createPortal();\r\n    }\r\n    if (this.search() && this.multiple()) {\r\n      this.multipleInput()?.inputFocus();\r\n    } else if (this.search() && !this.multiple()) {\r\n      this.searchInput()?.inputFocus();\r\n    } else {\r\n      this.inputCom().inputFocus('focus');\r\n    }\r\n  }\r\n\r\n  createPortal() {\r\n    this.nodes.update((nodes) => {\r\n      nodes.filter((x) => x.selected).map((x) => (x.selected = false));\r\n      return [...nodes];\r\n    });\r\n    const box = this.inputCom().inputRef().nativeElement.getBoundingClientRect();\r\n    const config: OverlayConfig = {\r\n      backdropClass: '',\r\n      panelClass: this.portalClass(),\r\n      width: this.portalWidth() || box.width,\r\n      positionStrategy: this.setPlacement(),\r\n      scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n    };\r\n    this.setPosition(config);\r\n    this.portal = this.portalService.attach({\r\n      content: XSelectPortalComponent,\r\n      viewContainerRef: this.viewContainerRef,\r\n      overlayConfig: config\r\n    });\r\n    this.portal.overlayRef\r\n      ?.outsidePointerEvents()\r\n      .pipe(takeUntil(this.unSubject))\r\n      .subscribe(() => {\r\n        if (!this.allowInput()) {\r\n          this.setDisplayValue();\r\n        }\r\n        this.closeSubject.next();\r\n      });\r\n    this.setInstance();\r\n  }\r\n\r\n  setPosition(config: OverlayConfig) {\r\n    let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n    position.positionChanges.pipe(takeUntil(this.unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n      const place = XPortalConnectedPosition.get(pos.connectionPair) as XPositionTopBottom;\r\n      if (place !== this.realPlacement()) {\r\n        this.realPlacement.set(place);\r\n        this.portalOverlayRef()?.updatePosition();\r\n      }\r\n    });\r\n  }\r\n\r\n  setInstance() {\r\n    let { componentRef, overlayRef } = this.portal;\r\n    if (!componentRef || !overlayRef) return;\r\n    this.portalComponent.set(componentRef);\r\n    this.portalOverlayRef.set(overlayRef);\r\n    this.realPlacement.set(this.placement());\r\n    Object.assign(componentRef.instance, {\r\n      closeSubject: this.closeSubject,\r\n      keydownSubject: this.keydownSubject\r\n    });\r\n    const { nodeClick, animating } = componentRef.instance;\r\n    nodeClick.subscribe((x) => this.nodeClick(x.node!, x.value));\r\n    animating.subscribe((ing) => this.animating.set(ing));\r\n  }\r\n\r\n  nodeClick(node: XSelectNode, value?: XSelectNode[] | (string | number)[]) {\r\n    if (this.multiple()) {\r\n      if (node) {\r\n        if (XIsObjectArray(value)) {\r\n          if (node.selected) {\r\n            this.value.update((x) => {\r\n              x.push(node);\r\n              return [...x];\r\n            });\r\n          } else {\r\n            let inx = this.value().findIndex((x: XSelectNode) => x.id === node.id);\r\n            this.value.update((x) => {\r\n              x.splice(inx, 1);\r\n              return [...x];\r\n            });\r\n          }\r\n        } else if (XIsArray(value)) {\r\n          if (node.selected) {\r\n            this.value.update((x) => {\r\n              x.push(node.id);\r\n              return [...x];\r\n            });\r\n          } else {\r\n            this.value.update((x) => {\r\n              x.splice(x.indexOf(node.id), 1);\r\n              return [...x];\r\n            });\r\n          }\r\n        }\r\n      } else {\r\n        this.value.update((x) => {\r\n          x.splice(0, x.length);\r\n          x.push(...(value as any[]));\r\n          return [...x];\r\n        });\r\n      }\r\n      if (this.multipleInput()) {\r\n        const input = this.multipleInput()!.elementRef.nativeElement;\r\n        this.renderer.setStyle(input, 'width', '2rem');\r\n      }\r\n      if (this.search() && !this.allowInput() && this.multipleSearchValue() !== '') {\r\n        this.multipleSearchValue.set('');\r\n        this.inputChange.next('');\r\n      }\r\n      this.setDisplayValue(node);\r\n    } else {\r\n      node = node as XSelectNode;\r\n      this.displayValue.set(node.label);\r\n      this.valueTplContextSignal.update((x) => {\r\n        x.$node = node;\r\n        return { ...x };\r\n      });\r\n      this.value.set(node.id);\r\n      if (this.search() && !this.allowInput()) {\r\n        this.inputChange.next('');\r\n      }\r\n      this.closeSubject.next();\r\n    }\r\n    if (this.search() && this.multiple() && this.multipleInput()) {\r\n      this.multipleInput()!.inputFocus();\r\n    } else {\r\n      this.inputCom().inputFocus('focus');\r\n    }\r\n    this.keywordText.set('');\r\n    if (this.onChange) this.onChange(this.value());\r\n    this.formControlValidator();\r\n  }\r\n\r\n  selectAllNodes(value: XSelectNode[] | (string | number)[]) {\r\n    this.value.set(value);\r\n  }\r\n\r\n  setPlacement() {\r\n    return this.portalService.setPlacement({\r\n      elementRef: this.inputCom().inputRef(),\r\n      placement: this.placements(),\r\n      transformOriginOn: 'x-select-portal'\r\n    });\r\n  }\r\n\r\n  setPortal() {\r\n    this.portalAttached() && this.portal?.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n  }\r\n\r\n  onKeydown($event: KeyboardEvent) {\r\n    this.keydownSubject.next($event);\r\n    if ($event.keyCode !== TAB && !this.search()) {\r\n      $event.preventDefault();\r\n    }\r\n  }\r\n\r\n  onFocus(_event: Event) {\r\n    if (this.search() && this.multiple() && this.multipleInput()) {\r\n      this.multipleInput()!.inputFocus();\r\n    } else {\r\n      this.inputCom().inputFocus('focus');\r\n    }\r\n  }\r\n\r\n  onInput(_event: InputEvent) {\r\n    this.formControlValidator();\r\n    setTimeout(() => this.inputChange.next(this.multiple() ? this.multipleSearchValue() : this.displayValue()));\r\n  }\r\n}\r\n","<div\r\n  #select\r\n  class=\"x-select\"\r\n  [class.x-select-multiple]=\"multiple()\"\r\n  [class.x-select-search-single]=\"search() && !multiple()\"\r\n>\r\n  <div class=\"x-select-row\">\r\n    <x-input\r\n      #inputCom\r\n      type=\"text\"\r\n      [label]=\"label()\"\r\n      [labelWidth]=\"labelWidth()\"\r\n      [labelAlign]=\"labelAlign()\"\r\n      [width]=\"width()\"\r\n      [justify]=\"justify()\"\r\n      [align]=\"align()\"\r\n      [direction]=\"direction()\"\r\n      [disabled]=\"disabledComputed()\"\r\n      [required]=\"requiredComputed()\"\r\n      [validator]=\"validatorComputed()!\"\r\n      [inputValidator]=\"inputValidator()\"\r\n      [icon]=\"icon()\"\r\n      [iconSpin]=\"iconSpin()\"\r\n      [placeholder]=\"placeholder()\"\r\n      [readonly]=\"getReadonly()\"\r\n      [clearable]=\"showClearable()\"\r\n      [(ngModel)]=\"value\"\r\n      [valueTpl]=\"valueTplComputed()\"\r\n      [valueTplContext]=\"valueTplContextComputed()\"\r\n      [size]=\"size()\"\r\n      [bordered]=\"bordered()\"\r\n      [inputStyle]=\"inputStyle()\"\r\n      [before]=\"before()\"\r\n      [after]=\"after()\"\r\n      [pattern]=\"patternComputed()\"\r\n      [message]=\"messageComputed()\"\r\n      [pointer]=\"pointer()\"\r\n      [variant]=\"variant()\"\r\n      [floatLabel]=\"floatLabel()\"\r\n      [floatFixed]=\"floatFixed()\"\r\n      [autoWidth]=\"autoWidth()\"\r\n      [autoMinWidth]=\"autoMinWidth()!\"\r\n      [autoMaxWidth]=\"autoMaxWidth()!\"\r\n      [autoWidthValue]=\"displayValue()\"\r\n      [(active)]=\"active\"\r\n      (clearEmit)=\"clearEmit()\"\r\n      (xKeydown)=\"onKeydown($event)\"\r\n      (xInput)=\"onInput($event)\"\r\n      (xFocus)=\"onFocus($event)\"\r\n      (xClick)=\"showPortal(true)\"\r\n      (xMouseenter)=\"menter()\"\r\n      (xMouseleave)=\"mleave()\"\r\n      (xComposition)=\"composition.set($event)\"\r\n    ></x-input>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #valueTemplate>\r\n  <span [attr.title]=\"displayValue()\">{{ displayValue() }}</span>\r\n</ng-template>\r\n\r\n<ng-template #searchTemplate>\r\n  <x-input\r\n    #searchInput\r\n    [bordered]=\"false\"\r\n    [size]=\"size()\"\r\n    [(ngModel)]=\"displayValue\"\r\n    [clearable]=\"false\"\r\n    (xInput)=\"onInput($event)\"\r\n    (xKeydown)=\"onKeydown($event)\"\r\n  ></x-input>\r\n</ng-template>\r\n\r\n<ng-template #multipleValueTpl>\r\n  @for (node of displayNodes(); track node.id; let i = $index) {\r\n    <x-tag\r\n      [bordered]=\"false\"\r\n      [closable]=\"!disabledComputed()\"\r\n      [type]=\"'info'\"\r\n      (close)=\"closeNode($event, node, i)\"\r\n      [size]=\"size()\"\r\n      >{{ node.label }}</x-tag\r\n    >\r\n  }\r\n  @if (showDisplayMore()) {\r\n    <x-tag [@.disabled]=\"true\" [bordered]=\"false\" [type]=\"'info'\" [size]=\"size()\">\r\n      <ng-container *xOutlet=\"getMaxTagContent(); context: { $surplus: selectedSurplus(), $total: selectedTotal() }\">{{\r\n        displayMore()\r\n      }}</ng-container>\r\n    </x-tag>\r\n  }\r\n\r\n  @if (search()) {\r\n    <x-input\r\n      #multipleInput\r\n      [bordered]=\"false\"\r\n      [size]=\"size()\"\r\n      [ngModel]=\"multipleSearchValue()\"\r\n      (ngModelChange)=\"multipleSearchValue.set($event)\"\r\n      (xInput)=\"onInput($event)\"\r\n      (xKeydown)=\"onKeydown($event)\"\r\n    ></x-input>\r\n  }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XSelectComponent } from './select.component';\r\n\r\n@NgModule({\r\n  exports: [XSelectComponent],\r\n  imports: [XSelectComponent]\r\n})\r\nexport class XSelectModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}