@ng-nest/ui 21.0.4 → 21.0.5

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.
Files changed (47) hide show
  1. package/fesm2022/ng-nest-ui-base-form.mjs +2 -1
  2. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  3. package/fesm2022/ng-nest-ui-bubble.mjs +141 -129
  4. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  5. package/fesm2022/ng-nest-ui-dialog.mjs +49 -45
  6. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  7. package/fesm2022/ng-nest-ui-dropdown.mjs +2 -2
  8. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  9. package/fesm2022/ng-nest-ui-form.mjs +16 -4
  10. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  11. package/fesm2022/ng-nest-ui-i18n.mjs +5 -5
  12. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  13. package/fesm2022/ng-nest-ui-image.mjs +37 -25
  14. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  15. package/fesm2022/ng-nest-ui-input.mjs +12 -2
  16. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  17. package/fesm2022/ng-nest-ui-list.mjs +3 -0
  18. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  19. package/fesm2022/ng-nest-ui-menu.mjs +16 -4
  20. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  21. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  23. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-scrollable.mjs +14 -6
  25. package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
  26. package/fesm2022/ng-nest-ui-table-view.mjs +277 -243
  27. package/fesm2022/ng-nest-ui-table-view.mjs.map +1 -1
  28. package/fesm2022/ng-nest-ui-table.mjs +18 -6
  29. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  30. package/fesm2022/ng-nest-ui-tree.mjs +37 -19
  31. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  32. package/package.json +1 -1
  33. package/types/ng-nest-ui-bubble.d.ts +12 -7
  34. package/types/ng-nest-ui-dialog.d.ts +170 -102
  35. package/types/ng-nest-ui-form.d.ts +15 -3
  36. package/types/ng-nest-ui-i18n.d.ts +23 -24
  37. package/types/ng-nest-ui-image.d.ts +28 -13
  38. package/types/ng-nest-ui-input.d.ts +1 -0
  39. package/types/ng-nest-ui-list.d.ts +31 -20
  40. package/types/ng-nest-ui-menu.d.ts +15 -3
  41. package/types/ng-nest-ui-message-box.d.ts +16 -3
  42. package/types/ng-nest-ui-message.d.ts +15 -3
  43. package/types/ng-nest-ui-notification.d.ts +15 -3
  44. package/types/ng-nest-ui-scrollable.d.ts +4 -2
  45. package/types/ng-nest-ui-table-view.d.ts +99 -65
  46. package/types/ng-nest-ui-table.d.ts +60 -5
  47. package/types/ng-nest-ui-tree.d.ts +29 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-dropdown.mjs","sources":["../../../../lib/ng-nest/ui/dropdown/dropdown.property.ts","../../../../lib/ng-nest/ui/dropdown/dropdown-portal.component.ts","../../../../lib/ng-nest/ui/dropdown/dropdown-portal.component.html","../../../../lib/ng-nest/ui/dropdown/dropdown.component.ts","../../../../lib/ng-nest/ui/dropdown/dropdown.component.html","../../../../lib/ng-nest/ui/dropdown/dropdown.module.ts","../../../../lib/ng-nest/ui/dropdown/ng-nest-ui-dropdown.ts"],"sourcesContent":["import {\r\n XBoolean,\r\n XPlacement,\r\n XSize,\r\n XPropertyFunction,\r\n XToDataArray,\r\n XDataArray,\r\n XToBoolean,\r\n XToCssPixelValue,\r\n XNumber,\r\n XToNumber,\r\n XTrigger\r\n} from '@ng-nest/ui/core';\r\nimport { XListNode } from '@ng-nest/ui/list';\r\nimport { Component, input, model, output } from '@angular/core';\r\n\r\n/**\r\n * Dropdown\r\n * @selector x-dropdown\r\n * @decorator component\r\n */\r\nexport const XDropdownPrefix = 'x-dropdown';\r\nconst X_DROPDOWN_CONFIG_NAME = 'dropdown';\r\n\r\n/**\r\n * Dropdown Property\r\n */\r\n@Component({ selector: `${XDropdownPrefix}-property`, template: '' })\r\nexport class XDropdownProperty extends XPropertyFunction(X_DROPDOWN_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XDropdownNode[], XDataArray<XDropdownNode>>([], { transform: XToDataArray });\r\n /**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\n readonly trigger = input<XDropdownTrigger>(this.config?.trigger ?? 'hover');\r\n /**\r\n * @zh_CN 展示位置\r\n * @en_US Placement\r\n */\r\n readonly placement = input<XPlacement>(this.config?.placement ?? 'bottom-start');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点中已经包含子节点数据\r\n * @en_US The node already contains child node data\r\n */\r\n readonly children = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 弹框的最小宽度\r\n * @en_US Portal min-width\r\n */\r\n readonly portalMinWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框的最大宽度\r\n * @en_US Portal max-width\r\n */\r\n readonly portalMaxWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框的最小高度\r\n * @en_US Portal min-height\r\n */\r\n readonly portalMinHeight = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框的最大高度\r\n * @en_US Portal max-height\r\n */\r\n readonly portalMaxHeight = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN hover 延迟触发时间,只有 trigger 为 'hover' 生效\r\n * @en_US Hover delay trigger time, only trigger is the 'hover'\r\n */\r\n readonly hoverDelay = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN visible 参数控制显示/隐藏\r\n * @en_US visible parameter controls display/hide\r\n */\r\n readonly visible = model<boolean | null>(null);\r\n /**\r\n * @zh_CN 当前激活的菜单\r\n * @en_US The currently activated menu\r\n */\r\n readonly activatedId = model<string | number>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 节点点击事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeClick = output<XDropdownNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN Dropdown 数据对象\r\n * @en_US Dropdown data object\r\n */\r\nexport interface XDropdownNode extends XListNode {}\r\n\r\n/**\r\n * @zh_CN 显示方式\r\n * @en_US Display method\r\n */\r\nexport type XDropdownTrigger = XTrigger;\r\n\r\n/**\r\n * Dropdown Portal\r\n * @selector x-dropdown-portal\r\n * @decorator component\r\n */\r\nexport const XDropdownPortalPrefix = 'x-dropdown-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n HostListener,\r\n ViewContainerRef,\r\n HostBinding,\r\n input,\r\n output,\r\n model,\r\n signal,\r\n inject,\r\n ComponentRef,\r\n effect,\r\n DestroyRef,\r\n viewChild,\r\n computed\r\n} from '@angular/core';\r\nimport { XDropdownPortalPrefix, XDropdownNode, XDropdownTrigger } from './dropdown.property';\r\nimport { XPortalConnectedPosition, XPortalOverlayRef, XPortalService } from '@ng-nest/ui/portal';\r\nimport { XPositionTopBottom, XSize } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n ConnectedOverlayPositionChange,\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\r\n\r\n@Component({\r\n selector: `${XDropdownPortalPrefix}`,\r\n imports: [FormsModule, XListComponent],\r\n templateUrl: './dropdown-portal.component.html',\r\n styleUrls: ['./dropdown-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDropdownPortalComponent {\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 data = input<XDropdownNode[]>([]);\r\n trigger = input<XDropdownTrigger>('hover');\r\n placement = input<XPositionTopBottom>();\r\n size = input<XSize>('medium');\r\n minWidth = input<string>();\r\n maxWidth = input<string>();\r\n minHeight = input<string>();\r\n maxHeight = input<string>();\r\n level = input(0);\r\n parentPortalComponent = input<XDropdownPortalComponent>();\r\n isKeyboardControlled = model(true);\r\n closed = output();\r\n animating = output<boolean>();\r\n nodeClick = output<XDropdownNode>();\r\n portalHover = output<boolean>();\r\n portal!: XPortalOverlayRef<XDropdownPortalComponent>;\r\n node = signal<XDropdownNode | null>(null);\r\n timeoutHide: any;\r\n\r\n list = viewChild.required<XListComponent>('list');\r\n portalPlacement = signal<XPositionTopBottom | null>(null);\r\n childAnimating = signal(false);\r\n activatedId = model<any>();\r\n destroy = signal(false);\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n active = signal(0);\r\n private unSubject = new Subject<void>();\r\n private destroyRef = inject(DestroyRef);\r\n\r\n activatedIdComputed = computed(() => {\r\n const path = this.findPathById(this.data(), this.activatedId());\r\n if (path) {\r\n for (let node of path) {\r\n const nd = this.data().find((x) => x.id === node.id);\r\n if (nd) return nd.id;\r\n }\r\n }\r\n return null;\r\n });\r\n\r\n @HostListener('mouseenter') mouseenter() {\r\n this.portalHover.emit(true);\r\n }\r\n\r\n @HostListener('mouseleave') mouseleave() {\r\n !this.portalAttached() && this.portalHover.emit(false);\r\n }\r\n\r\n portalService = inject(XPortalService);\r\n overlay = inject(Overlay);\r\n viewContainerRef = inject(ViewContainerRef);\r\n portalComponent = signal<ComponentRef<XDropdownPortalComponent> | null>(null);\r\n portalOverlayRef = signal<OverlayRef | null>(null);\r\n\r\n constructor() {\r\n effect(() => this.portalComponent()?.setInput('data', this.node()?.children));\r\n effect(() => this.portalComponent()?.setInput('trigger', this.trigger()));\r\n effect(() => this.portalComponent()?.setInput('level', this.level() + 1));\r\n effect(() => this.portalComponent()?.setInput('minWidth', this.minWidth()));\r\n effect(() => this.portalComponent()?.setInput('maxWidth', this.maxWidth()));\r\n effect(() => this.portalComponent()?.setInput('minHeight', this.minHeight()));\r\n effect(() => this.portalComponent()?.setInput('maxHeight', this.maxHeight()));\r\n effect(() => this.portalComponent()?.setInput('size', this.size()));\r\n effect(() => this.portalComponent()?.setInput('placement', this.portalPlacement()));\r\n effect(() => this.portalComponent()?.setInput('activatedId', this.activatedId()));\r\n effect(() => this.portalComponent()?.setInput('parentPortalComponent', this));\r\n }\r\n\r\n ngOnInit() {\r\n this.closeSubject.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 if (!this.isKeyboardControlled()) return;\r\n const keyCode = x.keyCode;\r\n const isRightArrow = [RIGHT_ARROW].includes(keyCode);\r\n const isLeftArrow = [LEFT_ARROW].includes(keyCode);\r\n if (isRightArrow) {\r\n const item = this.list().keyManager.activeItem!;\r\n if (item?.leaf()) {\r\n const node = item.node()!;\r\n node.event = x;\r\n node.component = item;\r\n this.isKeyboardControlled.set(false);\r\n this.onNodeClick(node);\r\n }\r\n }\r\n if (isLeftArrow && this.level() > 0) {\r\n this.parentPortalComponent()?.isKeyboardControlled.set(true);\r\n this.parentPortalComponent()?.closePortal();\r\n }\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 onNodeClick(node: XDropdownNode) {\r\n this.nodeClick.emit(node);\r\n if (!node.leaf) {\r\n this.activatedId.set(node.id);\r\n this.closeSubject.next();\r\n } else {\r\n if (node.disabled || this.childAnimating()) return;\r\n this.showPortal(node);\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portalOverlayRef()?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portalOverlayRef()?.dispose();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n createPortal() {\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n panelClass: 'x-dropdown-portal-child',\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n minWidth: this.minWidth()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XDropdownPortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\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.portalPlacement()) {\r\n this.portalPlacement.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 Object.assign(componentRef.instance, {\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject,\r\n parantPortal: this\r\n });\r\n const { closed, animating, nodeClick, portalHover, activatedId } = componentRef.instance;\r\n closed.subscribe(() => this.closePortal());\r\n animating.subscribe((ing) => this.childAnimating.set(ing));\r\n nodeClick.subscribe((node) => this.nodeClick.emit(node));\r\n activatedId.subscribe((id) => this.activatedId.set(id));\r\n portalHover.subscribe((hover) => this.hover(hover));\r\n }\r\n\r\n hover(hover: boolean) {\r\n if (this.timeoutHide && hover) {\r\n clearTimeout(this.timeoutHide);\r\n } else {\r\n this.portalHover.emit(false);\r\n this.onLeave();\r\n }\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: new ElementRef(this.node()?.component?.elementRef?.nativeElement),\r\n placement: ['right-start', 'right-end', 'left-start', 'left-end'],\r\n transformOriginOn: 'x-dropdown-portal'\r\n });\r\n }\r\n\r\n showPortal(node: XDropdownNode) {\r\n if (this.portalAttached() && this.node()?.id !== node.id) {\r\n this.portalOverlayRef()?.dispose();\r\n }\r\n this.node.set(node);\r\n if (!this.portalAttached()) {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n onEnter(node: XDropdownNode) {\r\n if (!node.leaf || node.disabled || this.trigger() === 'click' || this.childAnimating()) return;\r\n if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n this.showPortal(node);\r\n }\r\n\r\n onLeave() {\r\n if (this.trigger() !== 'hover') return;\r\n if (this.portalAttached()) {\r\n this.timeoutHide = setTimeout(() => {\r\n this.closePortal();\r\n });\r\n }\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 findPathById(nodes: XDropdownNode[], id: number, currentPath: XDropdownNode[] = []): XDropdownNode[] | null {\r\n for (const node of nodes) {\r\n const newPath = [...currentPath, node];\r\n if (node.id === id) {\r\n return newPath;\r\n }\r\n if (node.children && node.children.length > 0) {\r\n const result = this.findPathById(node.children, id, newPath);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","<div\r\n #dropdownPortal\r\n class=\"x-dropdown-portal\"\r\n [style.minWidth]=\"minWidth()\"\r\n [style.maxWidth]=\"maxWidth()\"\r\n [style.minHeight]=\"minHeight()\"\r\n [style.maxHeight]=\"maxHeight()\"\r\n>\r\n <x-list\r\n #list\r\n [data]=\"data()\"\r\n [ngModel]=\"activatedIdComputed()\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n (nodeMouseenter)=\"onEnter($event)\"\r\n (nodeMouseleave)=\"onLeave()\"\r\n [isKeyboardControlled]=\"isKeyboardControlled()\"\r\n [inPortal]=\"true\"\r\n [size]=\"size()\"\r\n ></x-list>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n ViewContainerRef,\r\n inject,\r\n OnDestroy,\r\n OnInit,\r\n signal,\r\n computed,\r\n viewChild,\r\n ComponentRef,\r\n effect,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { XDropdownPrefix, XDropdownNode, XDropdownProperty } from './dropdown.property';\r\nimport {\r\n XIsEmpty,\r\n XHasChildren,\r\n XGetChildren,\r\n XPositionTopBottom,\r\n XPlacement,\r\n XIsChange,\r\n XIsNull\r\n} from '@ng-nest/ui/core';\r\nimport { of, Subject } from 'rxjs';\r\nimport { XPortalConnectedPosition, XPortalOverlayRef, XPortalService } from '@ng-nest/ui/portal';\r\nimport { XDropdownPortalComponent } from './dropdown-portal.component';\r\nimport { debounceTime, delay, takeUntil, throttleTime } from 'rxjs/operators';\r\nimport {\r\n ConnectedOverlayPositionChange,\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { DOWN_ARROW, ESCAPE } from '@angular/cdk/keycodes';\r\n\r\n@Component({\r\n selector: `${XDropdownPrefix}`,\r\n imports: [],\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDropdownComponent extends XDropdownProperty implements OnInit, OnDestroy {\r\n private unSubject = new Subject<void>();\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private overlay = inject(Overlay);\r\n dropdown = viewChild.required<ElementRef<HTMLElement>>('dropdown');\r\n nodes = computed(() => {\r\n const data = this.data();\r\n if (!this.children()) {\r\n return data.filter((y) => XIsEmpty(y.pid)).map((y) => XGetChildren<XDropdownNode>(data, y, 0));\r\n }\r\n return XHasChildren(data, 0);\r\n });\r\n portal!: XPortalOverlayRef<XDropdownPortalComponent>;\r\n timeoutHide: any;\r\n animating = signal(false);\r\n visibleClass = signal(false);\r\n outsideClick = signal(false);\r\n isClickNodeLeaf = signal(false);\r\n minWidth = signal<string>('0px');\r\n hoverDelayUnsub = new Subject<void>();\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n isNullVisible = signal(false);\r\n\r\n private realPlacement = signal<XPlacement | null>(null);\r\n portalComponent = signal<ComponentRef<XDropdownPortalComponent> | null>(null);\r\n portalOverlayRef = signal<OverlayRef | null>(null);\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.portalComponent()?.setInput('data', this.nodes()));\r\n effect(() => this.portalComponent()?.setInput('trigger', this.trigger()));\r\n effect(() => this.portalComponent()?.setInput('minWidth', this.minWidth()));\r\n effect(() => this.portalComponent()?.setInput('maxWidth', this.portalMaxWidth()));\r\n effect(() => this.portalComponent()?.setInput('minHeight', this.portalMinHeight()));\r\n effect(() => this.portalComponent()?.setInput('maxHeight', this.portalMaxHeight()));\r\n effect(() => this.portalComponent()?.setInput('activatedId', this.activatedId()));\r\n effect(() => this.portalComponent()?.setInput('size', this.size()));\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubject();\r\n this.isNullVisible.set(XIsNull(this.visible()));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { visible } = changes;\r\n XIsChange(visible) && this.setVisible();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.hoverDelayUnsub.next();\r\n this.hoverDelayUnsub.complete();\r\n }\r\n\r\n setVisible() {\r\n if (this.disabled() || this.animating()) return;\r\n if (this.visible()) {\r\n if (this.portalAttached()) {\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.createPortal();\r\n } else {\r\n this.closePortal();\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.keydownSubject.pipe(throttleTime(10), takeUntil(this.unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n if (!this.portalAttached() && [DOWN_ARROW].includes(keyCode)) {\r\n if (this.disabled()) return;\r\n this.createPortal();\r\n }\r\n });\r\n }\r\n\r\n onEnter() {\r\n if (!this.isNullVisible()) return;\r\n of(true)\r\n .pipe(delay(this.hoverDelay()), takeUntil(this.hoverDelayUnsub))\r\n .subscribe(() => {\r\n if (this.disabled() || this.trigger() === 'click') return;\r\n if (this.timeoutHide) {\r\n clearTimeout(this.timeoutHide);\r\n this.timeoutHide = null;\r\n }\r\n if (!this.portal || (this.portal && !this.portalOverlayRef()?.hasAttached())) {\r\n this.createPortal();\r\n }\r\n });\r\n }\r\n\r\n onLeave() {\r\n if (!this.isNullVisible()) return;\r\n this.hoverDelayUnsub.next();\r\n if (this.disabled() || this.trigger() === 'click') return;\r\n if (this.portalOverlayRef()?.hasAttached()) {\r\n this.timeoutHide = setTimeout(() => {\r\n this.closePortal();\r\n });\r\n }\r\n }\r\n\r\n onClickShow() {\r\n if (this.disabled() || this.trigger() === 'hover' || this.animating()) return;\r\n if (this.trigger() === 'click' && this.portalAttached()) {\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.createPortal();\r\n }\r\n\r\n portalAttached() {\r\n return this.portalOverlayRef()?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portalOverlayRef()?.dispose();\r\n this.visibleClass.set(false);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n createPortal() {\r\n this.visibleClass.set(true);\r\n let box = this.dropdown().nativeElement.getBoundingClientRect();\r\n this.minWidth.set(this.portalMinWidth() ? this.portalMinWidth() : `${box.width}px`);\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n minWidth: this.minWidth()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XDropdownPortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n\r\n if (this.trigger() === 'click') {\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n if (!this.isClickNodeLeaf()) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\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 { closed, animating, nodeClick, portalHover, activatedId } = componentRef.instance;\r\n closed.subscribe(() => this.closeSubject.next());\r\n animating.subscribe((ing) => this.animating.set(ing));\r\n nodeClick.subscribe((node) => {\r\n this.isClickNodeLeaf.set(node.leaf!);\r\n this.nodeClick.emit(node);\r\n });\r\n activatedId.subscribe((id) => this.activatedId.set(id));\r\n portalHover.subscribe((hover) => this.portalHover(hover));\r\n }\r\n\r\n portalHover(hover: boolean) {\r\n if (this.timeoutHide && hover) {\r\n clearTimeout(this.timeoutHide);\r\n } else {\r\n this.onLeave();\r\n }\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.dropdown(),\r\n placement: [this.placement(), 'bottom-start', 'top-start', 'bottom-end', 'top-end'],\r\n transformOriginOn: 'x-dropdown-portal'\r\n });\r\n }\r\n}\r\n","<div\r\n #dropdown\r\n class=\"x-dropdown\"\r\n [class.x-visible]=\"visibleClass()\"\r\n (mouseenter)=\"onEnter()\"\r\n (mouseleave)=\"onLeave()\"\r\n (click)=\"onClickShow()\"\r\n (keydown)=\"onKeydown($event)\"\r\n tabindex=\"-1\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XDropdownComponent } from './dropdown.component';\r\n@NgModule({\r\n imports: [XDropdownComponent],\r\n exports: [XDropdownComponent]\r\n})\r\nexport class XDropdownModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-dropdown.mjs","sources":["../../../../lib/ng-nest/ui/dropdown/dropdown.property.ts","../../../../lib/ng-nest/ui/dropdown/dropdown-portal.component.ts","../../../../lib/ng-nest/ui/dropdown/dropdown-portal.component.html","../../../../lib/ng-nest/ui/dropdown/dropdown.component.ts","../../../../lib/ng-nest/ui/dropdown/dropdown.component.html","../../../../lib/ng-nest/ui/dropdown/dropdown.module.ts","../../../../lib/ng-nest/ui/dropdown/ng-nest-ui-dropdown.ts"],"sourcesContent":["import {\r\n XBoolean,\r\n XPlacement,\r\n XSize,\r\n XPropertyFunction,\r\n XToDataArray,\r\n XDataArray,\r\n XToBoolean,\r\n XToCssPixelValue,\r\n XNumber,\r\n XToNumber,\r\n XTrigger\r\n} from '@ng-nest/ui/core';\r\nimport { XListNode } from '@ng-nest/ui/list';\r\nimport { Component, input, model, output } from '@angular/core';\r\n\r\n/**\r\n * Dropdown\r\n * @selector x-dropdown\r\n * @decorator component\r\n */\r\nexport const XDropdownPrefix = 'x-dropdown';\r\nconst X_DROPDOWN_CONFIG_NAME = 'dropdown';\r\n\r\n/**\r\n * Dropdown Property\r\n */\r\n@Component({ selector: `${XDropdownPrefix}-property`, template: '' })\r\nexport class XDropdownProperty extends XPropertyFunction(X_DROPDOWN_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XDropdownNode[], XDataArray<XDropdownNode>>([], { transform: XToDataArray });\r\n /**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\n readonly trigger = input<XDropdownTrigger>(this.config?.trigger ?? 'hover');\r\n /**\r\n * @zh_CN 展示位置\r\n * @en_US Placement\r\n */\r\n readonly placement = input<XPlacement>(this.config?.placement ?? 'bottom-start');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点中已经包含子节点数据\r\n * @en_US The node already contains child node data\r\n */\r\n readonly children = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 弹框的最小宽度\r\n * @en_US Portal min-width\r\n */\r\n readonly portalMinWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框的最大宽度\r\n * @en_US Portal max-width\r\n */\r\n readonly portalMaxWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框的最小高度\r\n * @en_US Portal min-height\r\n */\r\n readonly portalMinHeight = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框的最大高度\r\n * @en_US Portal max-height\r\n */\r\n readonly portalMaxHeight = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN hover 延迟触发时间,只有 trigger 为 'hover' 生效\r\n * @en_US Hover delay trigger time, only trigger is the 'hover'\r\n */\r\n readonly hoverDelay = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN visible 参数控制显示/隐藏\r\n * @en_US visible parameter controls display/hide\r\n */\r\n readonly visible = model<boolean | null>(null);\r\n /**\r\n * @zh_CN 当前激活的菜单\r\n * @en_US The currently activated menu\r\n */\r\n readonly activatedId = model<string | number>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 节点点击事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeClick = output<XDropdownNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN Dropdown 数据对象\r\n * @en_US Dropdown data object\r\n */\r\nexport interface XDropdownNode extends XListNode {}\r\n\r\n/**\r\n * @zh_CN 显示方式\r\n * @en_US Display method\r\n */\r\nexport type XDropdownTrigger = XTrigger;\r\n\r\n/**\r\n * Dropdown Portal\r\n * @selector x-dropdown-portal\r\n * @decorator component\r\n */\r\nexport const XDropdownPortalPrefix = 'x-dropdown-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n HostListener,\r\n ViewContainerRef,\r\n HostBinding,\r\n input,\r\n output,\r\n model,\r\n signal,\r\n inject,\r\n ComponentRef,\r\n effect,\r\n DestroyRef,\r\n viewChild,\r\n computed\r\n} from '@angular/core';\r\nimport { XDropdownPortalPrefix, XDropdownNode, XDropdownTrigger } from './dropdown.property';\r\nimport { XPortalConnectedPosition, XPortalOverlayRef, XPortalService } from '@ng-nest/ui/portal';\r\nimport { XPositionTopBottom, XSize } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n ConnectedOverlayPositionChange,\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\r\n\r\n@Component({\r\n selector: `${XDropdownPortalPrefix}`,\r\n imports: [FormsModule, XListComponent],\r\n templateUrl: './dropdown-portal.component.html',\r\n styleUrls: ['./dropdown-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDropdownPortalComponent {\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 data = input<XDropdownNode[]>([]);\r\n trigger = input<XDropdownTrigger>('hover');\r\n placement = input<XPositionTopBottom>();\r\n size = input<XSize>('medium');\r\n minWidth = input<string>();\r\n maxWidth = input<string>();\r\n minHeight = input<string>();\r\n maxHeight = input<string>();\r\n level = input(0);\r\n parentPortalComponent = input<XDropdownPortalComponent>();\r\n isKeyboardControlled = model(true);\r\n closed = output();\r\n animating = output<boolean>();\r\n nodeClick = output<XDropdownNode>();\r\n portalHover = output<boolean>();\r\n portal!: XPortalOverlayRef<XDropdownPortalComponent>;\r\n node = signal<XDropdownNode | null>(null);\r\n timeoutHide: any;\r\n\r\n list = viewChild.required<XListComponent>('list');\r\n portalPlacement = signal<XPositionTopBottom | null>(null);\r\n childAnimating = signal(false);\r\n activatedId = model<any>();\r\n destroy = signal(false);\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n active = signal(0);\r\n private unSubject = new Subject<void>();\r\n private destroyRef = inject(DestroyRef);\r\n\r\n activatedIdComputed = computed(() => {\r\n const path = this.findPathById(this.data(), this.activatedId());\r\n if (path) {\r\n for (let node of path) {\r\n const nd = this.data().find((x) => x.id === node.id);\r\n if (nd) return nd.id;\r\n }\r\n }\r\n return null;\r\n });\r\n\r\n @HostListener('mouseenter') mouseenter() {\r\n this.portalHover.emit(true);\r\n }\r\n\r\n @HostListener('mouseleave') mouseleave() {\r\n !this.portalAttached() && this.portalHover.emit(false);\r\n }\r\n\r\n portalService = inject(XPortalService);\r\n overlay = inject(Overlay);\r\n viewContainerRef = inject(ViewContainerRef);\r\n portalComponent = signal<ComponentRef<XDropdownPortalComponent> | null>(null);\r\n portalOverlayRef = signal<OverlayRef | null>(null);\r\n\r\n constructor() {\r\n effect(() => this.portalComponent()?.setInput('data', this.node()?.children));\r\n effect(() => this.portalComponent()?.setInput('trigger', this.trigger()));\r\n effect(() => this.portalComponent()?.setInput('level', this.level() + 1));\r\n effect(() => this.portalComponent()?.setInput('minWidth', this.minWidth()));\r\n effect(() => this.portalComponent()?.setInput('maxWidth', this.maxWidth()));\r\n effect(() => this.portalComponent()?.setInput('minHeight', this.minHeight()));\r\n effect(() => this.portalComponent()?.setInput('maxHeight', this.maxHeight()));\r\n effect(() => this.portalComponent()?.setInput('size', this.size()));\r\n effect(() => this.portalComponent()?.setInput('placement', this.portalPlacement()));\r\n effect(() => this.portalComponent()?.setInput('activatedId', this.activatedId()));\r\n effect(() => this.portalComponent()?.setInput('parentPortalComponent', this));\r\n }\r\n\r\n ngOnInit() {\r\n this.closeSubject.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 if (!this.isKeyboardControlled()) return;\r\n const keyCode = x.keyCode;\r\n const isRightArrow = [RIGHT_ARROW].includes(keyCode);\r\n const isLeftArrow = [LEFT_ARROW].includes(keyCode);\r\n if (isRightArrow) {\r\n const item = this.list().keyManager.activeItem!;\r\n if (item?.leaf()) {\r\n const node = item.node()!;\r\n node.event = x;\r\n node.component = item;\r\n this.isKeyboardControlled.set(false);\r\n this.onNodeClick(node);\r\n }\r\n }\r\n if (isLeftArrow && this.level() > 0) {\r\n this.parentPortalComponent()?.isKeyboardControlled.set(true);\r\n this.parentPortalComponent()?.closePortal();\r\n }\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 onNodeClick(node: XDropdownNode) {\r\n this.nodeClick.emit(node);\r\n if (!node.leaf) {\r\n this.activatedId.set(node.id);\r\n this.closeSubject.next();\r\n } else {\r\n if (node.disabled || this.childAnimating()) return;\r\n this.showPortal(node);\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portalOverlayRef()?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portalOverlayRef()?.dispose();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n createPortal() {\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n panelClass: 'x-dropdown-portal-child',\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n minWidth: this.minWidth()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XDropdownPortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\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.portalPlacement()) {\r\n this.portalPlacement.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 Object.assign(componentRef.instance, {\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject,\r\n parantPortal: this\r\n });\r\n const { closed, animating, nodeClick, portalHover, activatedId } = componentRef.instance;\r\n closed.subscribe(() => this.closePortal());\r\n animating.subscribe((ing) => this.childAnimating.set(ing));\r\n nodeClick.subscribe((node) => this.nodeClick.emit(node));\r\n activatedId.subscribe((id) => this.activatedId.set(id));\r\n portalHover.subscribe((hover) => this.hover(hover));\r\n }\r\n\r\n hover(hover: boolean) {\r\n if (this.timeoutHide && hover) {\r\n clearTimeout(this.timeoutHide);\r\n } else {\r\n this.portalHover.emit(false);\r\n this.onLeave();\r\n }\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.node()?.component?.getElementRef(),\r\n placement: ['right-start', 'right-end', 'left-start', 'left-end'],\r\n transformOriginOn: 'x-dropdown-portal'\r\n });\r\n }\r\n\r\n showPortal(node: XDropdownNode) {\r\n if (this.portalAttached() && this.node()?.id !== node.id) {\r\n this.portalOverlayRef()?.dispose();\r\n }\r\n this.node.set(node);\r\n if (!this.portalAttached()) {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n onEnter(node: XDropdownNode) {\r\n if (!node.leaf || node.disabled || this.trigger() === 'click' || this.childAnimating()) return;\r\n if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n this.showPortal(node);\r\n }\r\n\r\n onLeave() {\r\n if (this.trigger() !== 'hover') return;\r\n if (this.portalAttached()) {\r\n this.timeoutHide = setTimeout(() => {\r\n this.closePortal();\r\n });\r\n }\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 findPathById(nodes: XDropdownNode[], id: number, currentPath: XDropdownNode[] = []): XDropdownNode[] | null {\r\n for (const node of nodes) {\r\n const newPath = [...currentPath, node];\r\n if (node.id === id) {\r\n return newPath;\r\n }\r\n if (node.children && node.children.length > 0) {\r\n const result = this.findPathById(node.children, id, newPath);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","<div\r\n #dropdownPortal\r\n class=\"x-dropdown-portal\"\r\n [style.minWidth]=\"minWidth()\"\r\n [style.maxWidth]=\"maxWidth()\"\r\n [style.minHeight]=\"minHeight()\"\r\n [style.maxHeight]=\"maxHeight()\"\r\n>\r\n <x-list\r\n #list\r\n [data]=\"data()\"\r\n [ngModel]=\"activatedIdComputed()\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n (nodeMouseenter)=\"onEnter($event)\"\r\n (nodeMouseleave)=\"onLeave()\"\r\n [isKeyboardControlled]=\"isKeyboardControlled()\"\r\n [inPortal]=\"true\"\r\n [size]=\"size()\"\r\n ></x-list>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n ViewContainerRef,\r\n inject,\r\n OnDestroy,\r\n OnInit,\r\n signal,\r\n computed,\r\n viewChild,\r\n ComponentRef,\r\n effect,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { XDropdownPrefix, XDropdownNode, XDropdownProperty } from './dropdown.property';\r\nimport {\r\n XIsEmpty,\r\n XHasChildren,\r\n XGetChildren,\r\n XPositionTopBottom,\r\n XPlacement,\r\n XIsChange,\r\n XIsNull\r\n} from '@ng-nest/ui/core';\r\nimport { of, Subject } from 'rxjs';\r\nimport { XPortalConnectedPosition, XPortalOverlayRef, XPortalService } from '@ng-nest/ui/portal';\r\nimport { XDropdownPortalComponent } from './dropdown-portal.component';\r\nimport { debounceTime, delay, takeUntil, throttleTime } from 'rxjs/operators';\r\nimport {\r\n ConnectedOverlayPositionChange,\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { DOWN_ARROW, ESCAPE } from '@angular/cdk/keycodes';\r\n\r\n@Component({\r\n selector: `${XDropdownPrefix}`,\r\n imports: [],\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDropdownComponent extends XDropdownProperty implements OnInit, OnDestroy {\r\n private unSubject = new Subject<void>();\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private overlay = inject(Overlay);\r\n dropdown = viewChild.required<ElementRef<HTMLElement>>('dropdown');\r\n nodes = computed(() => {\r\n const data = this.data();\r\n if (!this.children()) {\r\n return data.filter((y) => XIsEmpty(y.pid)).map((y) => XGetChildren<XDropdownNode>(data, y, 0));\r\n }\r\n return XHasChildren(data, 0);\r\n });\r\n portal!: XPortalOverlayRef<XDropdownPortalComponent>;\r\n timeoutHide: any;\r\n animating = signal(false);\r\n visibleClass = signal(false);\r\n outsideClick = signal(false);\r\n isClickNodeLeaf = signal(false);\r\n minWidth = signal<string>('0px');\r\n hoverDelayUnsub = new Subject<void>();\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n isNullVisible = signal(false);\r\n\r\n private realPlacement = signal<XPlacement | null>(null);\r\n portalComponent = signal<ComponentRef<XDropdownPortalComponent> | null>(null);\r\n portalOverlayRef = signal<OverlayRef | null>(null);\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.portalComponent()?.setInput('data', this.nodes()));\r\n effect(() => this.portalComponent()?.setInput('trigger', this.trigger()));\r\n effect(() => this.portalComponent()?.setInput('minWidth', this.minWidth()));\r\n effect(() => this.portalComponent()?.setInput('maxWidth', this.portalMaxWidth()));\r\n effect(() => this.portalComponent()?.setInput('minHeight', this.portalMinHeight()));\r\n effect(() => this.portalComponent()?.setInput('maxHeight', this.portalMaxHeight()));\r\n effect(() => this.portalComponent()?.setInput('activatedId', this.activatedId()));\r\n effect(() => this.portalComponent()?.setInput('size', this.size()));\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubject();\r\n this.isNullVisible.set(XIsNull(this.visible()));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { visible } = changes;\r\n XIsChange(visible) && this.setVisible();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.hoverDelayUnsub.next();\r\n this.hoverDelayUnsub.complete();\r\n }\r\n\r\n setVisible() {\r\n if (this.disabled() || this.animating()) return;\r\n if (this.visible()) {\r\n if (this.portalAttached()) {\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.createPortal();\r\n } else {\r\n this.closePortal();\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.keydownSubject.pipe(throttleTime(10), takeUntil(this.unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n if (!this.portalAttached() && [DOWN_ARROW].includes(keyCode)) {\r\n if (this.disabled()) return;\r\n this.createPortal();\r\n }\r\n });\r\n }\r\n\r\n onEnter() {\r\n if (!this.isNullVisible()) return;\r\n of(true)\r\n .pipe(delay(this.hoverDelay()), takeUntil(this.hoverDelayUnsub))\r\n .subscribe(() => {\r\n if (this.disabled() || this.trigger() === 'click') return;\r\n if (this.timeoutHide) {\r\n clearTimeout(this.timeoutHide);\r\n this.timeoutHide = null;\r\n }\r\n if (!this.portal || (this.portal && !this.portalOverlayRef()?.hasAttached())) {\r\n this.createPortal();\r\n }\r\n });\r\n }\r\n\r\n onLeave() {\r\n if (!this.isNullVisible()) return;\r\n this.hoverDelayUnsub.next();\r\n if (this.disabled() || this.trigger() === 'click') return;\r\n if (this.portalOverlayRef()?.hasAttached()) {\r\n this.timeoutHide = setTimeout(() => {\r\n this.closePortal();\r\n });\r\n }\r\n }\r\n\r\n onClickShow() {\r\n if (this.disabled() || this.trigger() === 'hover' || this.animating()) return;\r\n if (this.trigger() === 'click' && this.portalAttached()) {\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.createPortal();\r\n }\r\n\r\n portalAttached() {\r\n return this.portalOverlayRef()?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portalOverlayRef()?.dispose();\r\n this.visibleClass.set(false);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n createPortal() {\r\n this.visibleClass.set(true);\r\n let box = this.dropdown().nativeElement.getBoundingClientRect();\r\n this.minWidth.set(this.portalMinWidth() ? this.portalMinWidth() : `${box.width}px`);\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n minWidth: this.minWidth()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XDropdownPortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n\r\n if (this.trigger() === 'click') {\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n if (!this.isClickNodeLeaf()) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\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 { closed, animating, nodeClick, portalHover, activatedId } = componentRef.instance;\r\n closed.subscribe(() => this.closeSubject.next());\r\n animating.subscribe((ing) => this.animating.set(ing));\r\n nodeClick.subscribe((node) => {\r\n this.isClickNodeLeaf.set(node.leaf!);\r\n this.nodeClick.emit(node);\r\n });\r\n activatedId.subscribe((id) => this.activatedId.set(id));\r\n portalHover.subscribe((hover) => this.portalHover(hover));\r\n }\r\n\r\n portalHover(hover: boolean) {\r\n if (this.timeoutHide && hover) {\r\n clearTimeout(this.timeoutHide);\r\n } else {\r\n this.onLeave();\r\n }\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.dropdown(),\r\n placement: [this.placement(), 'bottom-start', 'top-start', 'bottom-end', 'top-end'],\r\n transformOriginOn: 'x-dropdown-portal'\r\n });\r\n }\r\n}\r\n","<div\r\n #dropdown\r\n class=\"x-dropdown\"\r\n [class.x-visible]=\"visibleClass()\"\r\n (mouseenter)=\"onEnter()\"\r\n (mouseleave)=\"onLeave()\"\r\n (click)=\"onClickShow()\"\r\n (keydown)=\"onKeydown($event)\"\r\n tabindex=\"-1\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XDropdownComponent } from './dropdown.component';\r\n@NgModule({\r\n imports: [XDropdownComponent],\r\n exports: [XDropdownComponent]\r\n})\r\nexport class XDropdownModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAgBA;;;;AAIG;AACI,MAAM,eAAe,GAAG;AAC/B,MAAM,sBAAsB,GAAG,UAAU;AAEzC;;AAEG;MAEU,iBAAkB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AADhF,IAAA,WAAA,GAAA;;AAEE;;;AAGG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAA6C,EAAE,iDAAI,SAAS,EAAE,YAAY,EAAA,CAAG;AAClG;;;AAGG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC3E;;;AAGG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAa,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,cAAc,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAChF;;;AAGG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoB,KAAK,qDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AAC9E;;;AAGG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoB,KAAK,qDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AAC9E;;;AAGG;QACM,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,EAAE,2DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACrF;;;AAGG;QACM,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,EAAE,2DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACrF;;;AAGG;QACM,IAAA,CAAA,eAAe,GAAG,KAAK,CAAkB,EAAE,4DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACtF;;;AAGG;QACM,IAAA,CAAA,eAAe,GAAG,KAAK,CAAkB,EAAE,4DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACtF;;;AAGG;QACM,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkB,GAAG,uDAAI,SAAS,EAAE,SAAS,EAAA,CAAG;AAC3E;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,mDAAC;AAC9C;;;AAGG;QACM,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAmB;AAC/C;;;AAGG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC3D;;;AAGG;QACM,IAAA,CAAA,SAAS,GAAG,MAAM,EAAiB;AAC7C,IAAA;iIAvEY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,k6DADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACrD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAA,EAAG,eAAe,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;AAsFpE;;;;AAIG;AACI,MAAM,qBAAqB,GAAG;;MC5ExB,wBAAwB,CAAA;IAIL,IAAI,GAAA;QAChC,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;IACgC,KAAK,GAAA;QACnC,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IA2C4B,UAAU,GAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;IAE4B,UAAU,GAAA;AACpC,QAAA,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IACxD;AAQA,IAAA,WAAA,GAAA;QAnE8B,IAAA,CAAA,YAAY,GAAG,iBAAiB;QAChC,IAAA,CAAA,YAAY,GAAG,iBAAiB;AAW9D,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,EAAE,gDAAC;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,OAAO,mDAAC;QAC1C,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACvC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAQ,QAAQ,gDAAC;QAC7B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC1B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC1B,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC3B,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,CAAC,iDAAC;QAChB,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4B;AACzD,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAC,IAAI,gEAAC;QAClC,IAAA,CAAA,MAAM,GAAG,MAAM,EAAE;QACjB,IAAA,CAAA,SAAS,GAAG,MAAM,EAAW;QAC7B,IAAA,CAAA,SAAS,GAAG,MAAM,EAAiB;QACnC,IAAA,CAAA,WAAW,GAAG,MAAM,EAAW;AAE/B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAuB,IAAI,gDAAC;AAGzC,QAAA,IAAA,CAAA,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAiB,MAAM,CAAC;AACjD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAA4B,IAAI,2DAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;QAC9B,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AAC1B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;AAGvB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,kDAAC;AACV,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/D,IAAI,IAAI,EAAE;AACR,gBAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;oBACrB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AACpD,oBAAA,IAAI,EAAE;wBAAE,OAAO,EAAE,CAAC,EAAE;gBACtB;YACF;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,+DAAC;AAUF,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAgD,IAAI,2DAAC;AAC7E,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAoB,IAAI,4DAAC;QAGhD,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC7E,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACzE,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7E,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7E,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACnF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACjF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IAC/E;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAC/B,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAClF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAClE,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAAE;AAClC,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO;YACzB,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YACpD,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAClD,IAAI,YAAY,EAAE;gBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAW;AAC/C,gBAAA,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE;AAChB,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAG;AACzB,oBAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,oBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACxB;YACF;YACA,IAAI,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,qBAAqB,EAAE,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5D,gBAAA,IAAI,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE;YAC7C;YACA,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,EAAE;IAC7C;AAEA,IAAA,WAAW,CAAC,IAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;aAAO;AACL,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;gBAAE;AAC5C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACvB;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE;IAC/C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,MAAM,GAAkB;AAC5B,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,UAAU,EAAE,yBAAyB;AACrC,YAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE;YACrC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACtC,YAAA,OAAO,EAAE,wBAAwB;YACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,YAAA,aAAa,EAAE;AAChB,SAAA,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,WAAW,CAAC,MAAqB,EAAA;AAC/B,QAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,gBAAqD;AAC3E,QAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAmC,KAAI;YACzG,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAuB;AACpF,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE,EAAE;AACpC,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE;YAC3C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM;AAC9C,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU;YAAE;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;AACrC,QAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;AACnC,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;AACF,QAAA,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,QAAQ;QACxF,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvD,QAAA,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrD;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;AAC7B,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAChC;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE;QAChB;IACF;IAEA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;YACnD,SAAS,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC;AACjE,YAAA,iBAAiB,EAAE;AACpB,SAAA,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,IAAmB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AACxD,YAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE;QACpC;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;YAC1B,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEA,IAAA,OAAO,CAAC,IAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE;QACxF,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACvB;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO;YAAE;AAChC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;gBACjC,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEA,IAAA,YAAY,CAAC,KAAsB,EAAE,EAAU,EAAE,cAA+B,EAAE,EAAA;AAChF,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC;AACtC,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AAClB,gBAAA,OAAO,OAAO;YAChB;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC;gBAC5D,IAAI,MAAM,EAAE;AACV,oBAAA,OAAO,MAAM;gBACf;YACF;QACF;AACA,QAAA,OAAO,IAAI;IACb;iIA3PW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CrC,upBAsBA,EAAA,MAAA,EAAA,CAAA,6bAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDcY,WAAW,+VAAE,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAM1B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,qBAAqB,CAAA,CAAE,EAAA,OAAA,EAC3B,CAAC,WAAW,EAAE,cAAc,CAAC,EAAA,aAAA,EAGvB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,upBAAA,EAAA,MAAA,EAAA,CAAA,6bAAA,CAAA,EAAA;;sBAG9C,WAAW;uBAAC,eAAe;;sBAC3B,WAAW;uBAAC,eAAe;;sBAE3B,YAAY;uBAAC,cAAc;;sBAI3B,YAAY;uBAAC,gBAAgB;y4CAwBY,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA;sBAsB/C,YAAY;uBAAC,YAAY;;sBAIzB,YAAY;uBAAC,YAAY;;;AErDtB,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AA6BvD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AA7BD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAA0B,UAAU,CAAC;AAClE,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACpB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,YAAY,CAAgB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAChG;AACA,YAAA,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,QAAA,CAAC,iDAAC;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,2DAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,KAAK,oDAAC;AAChC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AACrC,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAE;AAC3C,QAAA,IAAA,CAAA,cAAc,GAA2B,IAAI,OAAO,EAAE;AACtD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAErB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAoB,IAAI,yDAAC;AACvD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAgD,IAAI,2DAAC;AAC7E,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAoB,IAAI,4DAAC;AAIhD,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpE,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACjF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACnF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACnF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACjF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACjD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;QAC3B,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;IACzC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;IAEA,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AACzC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;gBACxB;YACF;YACA,IAAI,CAAC,YAAY,EAAE;QACrB;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC/D,IAAI,CAAC,WAAW,EAAE;AACpB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACpF,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO;AACzB,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC1B;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC5D,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAAE;gBACrB,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE;QAC3B,EAAE,CAAC,IAAI;AACJ,aAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;aAC9D,SAAS,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO;gBAAE;AACnD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACzB;YACA,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;gBAC5E,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;IACN;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO;YAAE;QACnD,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;gBACjC,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AACvE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACvD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YACxB;QACF;QACA,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE;IAC/C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAC/D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAA,EAAG,GAAG,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;AACnF,QAAA,MAAM,MAAM,GAAkB;AAC5B,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE;YACrC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACtC,YAAA,OAAO,EAAE,wBAAwB;YACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,YAAA,aAAa,EAAE;AAChB,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC;AACV,kBAAE,oBAAoB;AACrB,iBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;iBAChD,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AAC3B,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;gBAC1B;AACF,YAAA,CAAC,CAAC;QACN;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,WAAW,CAAC,MAAqB,EAAA;AAC/B,QAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,gBAAqD;AAC3E,QAAA,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAmC,KAAI;YACzG,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAuB;AACpF,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;AAClC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,gBAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE;YAC3C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM;AAC9C,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU;YAAE;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACxC,QAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC;AACtB,SAAA,CAAC;AACF,QAAA,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,QAAQ;AACxF,QAAA,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAChD,QAAA,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrD,QAAA,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAC3B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAK,CAAC;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvD,QAAA,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3D;AAEA,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;AAC7B,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAChC;aAAO;YACL,IAAI,CAAC,OAAO,EAAE;QAChB;IACF;AAEA,IAAA,SAAS,CAAC,MAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC;IAEA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AACrC,YAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;AACnF,YAAA,iBAAiB,EAAE;AACpB,SAAA,CAAC;IACJ;iIAzNW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,wOC/C/B,oSAYA,EAAA,MAAA,EAAA,CAAA,iHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDmCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;+BACE,CAAA,EAAG,eAAe,CAAA,CAAE,EAAA,OAAA,EACrB,EAAE,EAAA,aAAA,EAGI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,oSAAA,EAAA,MAAA,EAAA,CAAA,iHAAA,CAAA,EAAA;gGAOQ,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME9CtD,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAf,eAAe,EAAA,OAAA,EAAA,CAHhB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAClB,kBAAkB,CAAA,EAAA,CAAA,CAAA;kIAEjB,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB;AAC7B,iBAAA;;;ACLD;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, output, Component, model, inject, ViewContainerRef, signal, viewChild, effect, OutputEmitterRef, ChangeDetectionStrategy, ViewEncapsulation, computed, NgModule } from '@angular/core';
2
+ import { input, output, Component, model, InjectionToken, inject, ViewContainerRef, signal, viewChild, effect, OutputEmitterRef, ChangeDetectionStrategy, ViewEncapsulation, computed, NgModule } from '@angular/core';
3
3
  import { XToCssPixelValue, XToNumber, XToBoolean, XIdentity, XIsEmpty, XIsFunction, XIsChange } from '@ng-nest/ui/core';
4
4
  import * as i1 from '@angular/forms';
5
5
  import { UntypedFormGroup, UntypedFormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
@@ -227,6 +227,8 @@ class XAutoCompleteControl extends XControl {
227
227
  }
228
228
  }
229
229
 
230
+ const X_FORM_CONTEXT = new InjectionToken('X_FORM_CONTEXT');
231
+
230
232
  class XControlComponent extends XControlProperty {
231
233
  constructor() {
232
234
  super();
@@ -237,7 +239,7 @@ class XControlComponent extends XControlProperty {
237
239
  this.formControl = signal(null, ...(ngDevMode ? [{ debugName: "formControl" }] : []));
238
240
  this._unSubject = new Subject();
239
241
  this.value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
240
- this.form = inject(XFormComponent, { optional: true });
242
+ this.form = inject(X_FORM_CONTEXT, { optional: true });
241
243
  this.locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.form)), { initialValue: zh_CN.form });
242
244
  this.portal = signal(null, ...(ngDevMode ? [{ debugName: "portal" }] : []));
243
245
  this.portalOutlet = viewChild.required(CdkPortalOutlet);
@@ -517,7 +519,12 @@ class XFormComponent extends XFormProperty {
517
519
  this.xSubmit.emit(event);
518
520
  }
519
521
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
520
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XFormComponent, isStandalone: true, selector: "x-form", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @if (title()) {\r\n <div class=\"x-form-title\">{{ title() }}</div>\r\n }\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n", styles: [".x-form{margin:0;padding:0}.x-form{display:inline-block;overflow:hidden}.x-form-title{display:inline-flex;align-items:center;font-size:var(--x-font-size-medium)}.x-form-title>x-icon{margin-right:.25rem}.x-form-category{width:100%;overflow:hidden}.x-form-rows>x-row[hidden]{display:none}.x-form-rows>x-row:not(:first-child){margin-top:1.5rem}.x-form x-col[hidden]{display:none}.x-form-has-content .x-form-content{margin-top:1.5rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: XRowComponent, selector: "x-row" }, { kind: "component", type: XColComponent, selector: "x-col" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XControlComponent, selector: "x-control" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
522
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XFormComponent, isStandalone: true, selector: "x-form", providers: [
523
+ {
524
+ provide: X_FORM_CONTEXT,
525
+ useExisting: XFormComponent
526
+ }
527
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @if (title()) {\r\n <div class=\"x-form-title\">{{ title() }}</div>\r\n }\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n", styles: [".x-form{margin:0;padding:0}.x-form{display:inline-block;overflow:hidden}.x-form-title{display:inline-flex;align-items:center;font-size:var(--x-font-size-medium)}.x-form-title>x-icon{margin-right:.25rem}.x-form-category{width:100%;overflow:hidden}.x-form-rows>x-row[hidden]{display:none}.x-form-rows>x-row:not(:first-child){margin-top:1.5rem}.x-form x-col[hidden]{display:none}.x-form-has-content .x-form-content{margin-top:1.5rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: XRowComponent, selector: "x-row" }, { kind: "component", type: XColComponent, selector: "x-col" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XControlComponent, selector: "x-control" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
521
528
  }
522
529
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XFormComponent, decorators: [{
523
530
  type: Component,
@@ -531,7 +538,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
531
538
  XOutletDirective,
532
539
  XIconComponent,
533
540
  XControlComponent
534
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @if (title()) {\r\n <div class=\"x-form-title\">{{ title() }}</div>\r\n }\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n", styles: [".x-form{margin:0;padding:0}.x-form{display:inline-block;overflow:hidden}.x-form-title{display:inline-flex;align-items:center;font-size:var(--x-font-size-medium)}.x-form-title>x-icon{margin-right:.25rem}.x-form-category{width:100%;overflow:hidden}.x-form-rows>x-row[hidden]{display:none}.x-form-rows>x-row:not(:first-child){margin-top:1.5rem}.x-form x-col[hidden]{display:none}.x-form-has-content .x-form-content{margin-top:1.5rem}\n"] }]
541
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
542
+ {
543
+ provide: X_FORM_CONTEXT,
544
+ useExisting: XFormComponent
545
+ }
546
+ ], template: "<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @if (title()) {\r\n <div class=\"x-form-title\">{{ title() }}</div>\r\n }\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n", styles: [".x-form{margin:0;padding:0}.x-form{display:inline-block;overflow:hidden}.x-form-title{display:inline-flex;align-items:center;font-size:var(--x-font-size-medium)}.x-form-title>x-icon{margin-right:.25rem}.x-form-category{width:100%;overflow:hidden}.x-form-rows>x-row[hidden]{display:none}.x-form-rows>x-row:not(:first-child){margin-top:1.5rem}.x-form x-col[hidden]{display:none}.x-form-has-content .x-form-content{margin-top:1.5rem}\n"] }]
535
547
  }] });
536
548
 
537
549
  class XFormModule {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-form.mjs","sources":["../../../../lib/ng-nest/ui/form/form.property.ts","../../../../lib/ng-nest/ui/form/control.component.ts","../../../../lib/ng-nest/ui/form/control.component.html","../../../../lib/ng-nest/ui/form/form.component.ts","../../../../lib/ng-nest/ui/form/form.component.html","../../../../lib/ng-nest/ui/form/form.module.ts","../../../../lib/ng-nest/ui/form/ng-nest-ui-form.ts"],"sourcesContent":["import { XIdentity, XBoolean, XIsEmpty, XNumber, XToCssPixelValue, XToNumber, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, model, input, output } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { XInputOption, XInputComponent } from '@ng-nest/ui/input';\r\nimport { XSelectOption, XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XCascadeOption, XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxOption, XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerOption, XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerOption, XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XInputNumberOption, XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioOption, XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateOption, XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSliderSelectOption, XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchOption, XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTimePickerOption, XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\nimport { XTextareaOption, XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XFindOption, XFindComponent } from '@ng-nest/ui/find';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompleteOption, XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\n\r\n/**\r\n * Form\r\n * @selector x-form\r\n * @decorator component\r\n */\r\nexport const XFormPrefix = 'x-form';\r\nconst X_FORM_CONFIG_NAME = 'form';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XFormTemplate = { [property: string]: TemplateRef<any> };\r\n/**\r\n * Form Property\r\n */\r\n@Component({ selector: `${XFormPrefix}-property`, template: '' })\r\nexport class XFormProperty extends XFormControlFunction(X_FORM_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 表单 FormGroup\r\n * @en_US Form FormGroup\r\n * @default new UntypedFormGroup({})\r\n */\r\n readonly formGroup = input<UntypedFormGroup>(new UntypedFormGroup({}));\r\n /**\r\n * @zh_CN 表单名称\r\n * @en_US Form name\r\n */\r\n readonly title = input<string>('');\r\n /**\r\n * @zh_CN 控件间距\r\n * @en_US Control spacing\r\n */\r\n readonly space = input<string, XNumber>(this.config?.space ?? '1.75rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 控件宽度,24栅格\r\n * @en_US Control width, 24 grid\r\n */\r\n readonly span = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 标签后缀\r\n * @en_US Label suffix\r\n */\r\n readonly labelSuffix = input<string>(this.config?.labelSuffix ?? '');\r\n /**\r\n * @zh_CN 表单控件\r\n * @en_US Form control\r\n */\r\n readonly controls = input<XFormControlOption[] | XFormRow[]>([]);\r\n /**\r\n * @zh_CN 表单宽度\r\n * @en_US Form width\r\n */\r\n readonly width = input<string, XNumber>(this.config?.width ?? '100%', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly controlTpl = input<XFormTemplate>({});\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 Submit\r\n * @en_US Submit\r\n */\r\n readonly xSubmit = output<SubmitEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport interface XControlOption {\r\n /**\r\n * @zh_CN 列 Id\r\n * @en_US The column Id\r\n */\r\n id?: any;\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 初始默认值\r\n * @en_US Default value\r\n */\r\n defaultValue?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\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 Read only\r\n */\r\n readonly?: 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 Hide\r\n */\r\n hidden?: boolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport class XControl extends XIdentity implements XControlOption {\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 开启这个,执行 reset 的时候初始为设置的 value,默认为 null\r\n * @en_US Enable this. When performing a reset, the initial value is the set value, which defaults to null\r\n */\r\n nonNullable?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\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 Read only\r\n */\r\n readonly?: 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 Hide\r\n */\r\n hidden?: boolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 设置验证\r\n * @en_US Set verification\r\n */\r\n setValidators?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n\r\n constructor(option: XControlOption = {}) {\r\n super();\r\n if (XIsEmpty(this.value)) this.value = '';\r\n Object.assign(this, option);\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 表单行对象\r\n * @en_US Form row object\r\n */\r\nexport interface XFormRow {\r\n /**\r\n * @zh_CN 行标题\r\n * @en_US Row header\r\n */\r\n title?: string;\r\n /**\r\n * @zh_CN 行图标\r\n * @en_US Row icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 行中的控件\r\n * @en_US Control in row\r\n */\r\n controls: XFormControlOption[];\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hidden\r\n */\r\n hidden?: XBoolean;\r\n}\r\n\r\n/**\r\n * Control\r\n * @selector x-control\r\n * @decorator component\r\n */\r\nexport const XControlPrefix = 'x-control';\r\n\r\n/**\r\n * Control Property\r\n */\r\n@Component({ selector: `${XControlPrefix}-property`, template: '' })\r\nexport class XControlProperty {\r\n /**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\n readonly option = model.required<XControl>({});\r\n}\r\n\r\n/**\r\n * Form control\r\n */\r\nexport class XFormControl extends UntypedFormControl {\r\n /**\r\n * @zh_CN 提示信息\r\n * @en_US Prompt information\r\n */\r\n messages?: string[] = [];\r\n}\r\n\r\n/**\r\n * @zh_CN 表单控件参数\r\n * @en_US Form control option\r\n */\r\nexport type XFormControlOption =\r\n | XInputControlOption\r\n | XSelectControlOption\r\n | XCascadeControlOption\r\n | XCheckboxControlOption\r\n | XColorPickerControlOption\r\n | XDatePickerControlOption\r\n | XInputNumberControlOption\r\n | XRadioControlOption\r\n | XRateControlOption\r\n | XSliderSelectControlOption\r\n | XSwitchControlOption\r\n | XTimePickerControlOption\r\n | XFindControlOption\r\n | XTemplateControlOption;\r\n\r\n/**\r\n * @zh_CN 表单控件组件\r\n * @en_US Form control component\r\n */\r\nexport type XFormControlComponent =\r\n | XInputComponent\r\n | XSelectComponent\r\n | XCascadeComponent\r\n | XCheckboxComponent\r\n | XColorPickerComponent\r\n | XDatePickerComponent\r\n | XInputNumberComponent\r\n | XRadioComponent\r\n | XRateComponent\r\n | XSliderSelectComponent\r\n | XSwitchComponent\r\n | XTimePickerComponent\r\n | XTextareaComponent\r\n | XFindComponent\r\n | XAutoCompleteComponent;\r\n\r\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\r\n */\r\nexport type XFormControlType =\r\n | XInputControl\r\n | XSelectControl\r\n | XCascadeControl\r\n | XCheckboxControl\r\n | XColorPickerControl\r\n | XDatePickerControl\r\n | XInputNumberControl\r\n | XRadioControl\r\n | XRateControl\r\n | XSliderSelectControl\r\n | XSwitchControl\r\n | XTimePickerControl\r\n | XTextareaControl\r\n | XFindControl\r\n | XAutoCompleteControl;\r\n\r\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\r\n */\r\nexport type XControlType =\r\n | 'input'\r\n | 'select'\r\n | 'cascade'\r\n | 'checkbox'\r\n | 'color-picker'\r\n | 'date-picker'\r\n | 'input-number'\r\n | 'radio'\r\n | 'rate'\r\n | 'slider-select'\r\n | 'switch'\r\n | 'time-picker'\r\n | 'textarea'\r\n | 'find'\r\n | 'auto-complete'\r\n | 'template';\r\n\r\n/**\r\n * Input Control\r\n */\r\nexport interface XInputControlOption extends XControlOption, XInputOption {}\r\nexport class XInputControl extends XControl {\r\n constructor(option: XInputControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Select Control\r\n */\r\nexport interface XSelectControlOption extends XControlOption, XSelectOption {}\r\nexport class XSelectControl extends XControl {\r\n constructor(option: XSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Cascade Control\r\n */\r\nexport interface XCascadeControlOption extends XControlOption, XCascadeOption {}\r\nexport class XCascadeControl extends XControl {\r\n constructor(option: XCascadeControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Checkbox Control\r\n */\r\nexport interface XCheckboxControlOption extends XControlOption, XCheckboxOption {}\r\nexport class XCheckboxControl extends XControl {\r\n constructor(option: XCheckboxControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * ColorPicker Control\r\n */\r\nexport interface XColorPickerControlOption extends XControlOption, XColorPickerOption {}\r\nexport class XColorPickerControl extends XControl {\r\n constructor(option: XColorPickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * DatePicker Control\r\n */\r\nexport interface XDatePickerControlOption extends XControlOption, XDatePickerOption {}\r\nexport class XDatePickerControl extends XControl {\r\n constructor(option: XDatePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * InputNumber Control\r\n */\r\nexport interface XInputNumberControlOption extends XControlOption, XInputNumberOption {}\r\nexport class XInputNumberControl extends XControl {\r\n constructor(option: XInputNumberControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Radio Control\r\n */\r\nexport interface XRadioControlOption extends XControlOption, XRadioOption {}\r\nexport class XRadioControl extends XControl {\r\n constructor(option: XRadioControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Rate Control\r\n */\r\nexport interface XRateControlOption extends XControlOption, XRateOption {}\r\nexport class XRateControl extends XControl {\r\n constructor(option: XRateControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * SliderSelect Control\r\n */\r\nexport interface XSliderSelectControlOption extends XControlOption, XSliderSelectOption {}\r\nexport class XSliderSelectControl extends XControl {\r\n constructor(option: XSliderSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Switch Control\r\n */\r\nexport interface XSwitchControlOption extends XControlOption, XSwitchOption {}\r\nexport class XSwitchControl extends XControl {\r\n constructor(option: XSwitchControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * TimePicker Control\r\n */\r\nexport interface XTimePickerControlOption extends XControlOption, XTimePickerOption {}\r\nexport class XTimePickerControl extends XControl {\r\n constructor(option: XTimePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Textarea Control\r\n */\r\nexport interface XTextareaControlOption extends XControlOption, XTextareaOption {}\r\nexport class XTextareaControl extends XControl {\r\n constructor(option: XTextareaControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Find Control\r\n */\r\nexport interface XFindControlOption extends XControlOption, XFindOption {}\r\nexport class XFindControl extends XControl {\r\n constructor(option: XFindControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * AutoComplete Control\r\n */\r\nexport interface XAutoCompleteControlOption extends XControlOption, XAutoCompleteOption {}\r\nexport class XAutoCompleteControl extends XControl {\r\n constructor(option: XAutoCompleteControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Template Control\r\n */\r\nexport interface XTemplateControlOption extends XControlOption, XFormOption {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy,\r\n inject,\r\n viewChild,\r\n signal,\r\n ViewContainerRef,\r\n ComponentRef,\r\n OutputEmitterRef,\r\n effect\r\n} from '@angular/core';\r\nimport { XControlProperty, XFormControlOption, XFormControlComponent, XFormControl } from './form.property';\r\nimport {\r\n Validators,\r\n UntypedFormControl,\r\n ValidatorFn,\r\n FormControlStatus,\r\n FormsModule,\r\n ReactiveFormsModule\r\n} from '@angular/forms';\r\nimport { XIsEmpty, XIsFunction } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XI18nForm, XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XFormInputValidator } from '@ng-nest/ui/base-form';\r\nimport { XFormComponent } from './form.component';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CdkPortalOutlet, ComponentPortal, Portal, PortalModule } from '@angular/cdk/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\nimport { XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XFindComponent } from '@ng-nest/ui/find';\r\nimport { XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\n\r\n@Component({\r\n selector: 'x-control',\r\n imports: [FormsModule, ReactiveFormsModule, PortalModule],\r\n templateUrl: './control.component.html',\r\n styleUrls: ['./control.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XControlComponent extends XControlProperty implements OnInit, AfterViewInit, OnDestroy {\r\n private i18n = inject(XI18nService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private _sharedProps = signal(['span', 'direction', 'justify', 'align', 'labelWidth', 'labelAlign']);\r\n private validatorFns = signal<ValidatorFn[]>([]);\r\n private formControl = signal<UntypedFormControl | null>(null);\r\n private _unSubject = new Subject<void>();\r\n value = signal<any>(null);\r\n\r\n form = inject(XFormComponent, { optional: true })!;\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.form as XI18nForm)), { initialValue: zh_CN.form });\r\n portal = signal<Portal<any> | null>(null);\r\n componentPortal!: ComponentPortal<XFormControlComponent>;\r\n componentRef!: ComponentRef<XFormControlComponent>;\r\n portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n this.formControl()!.patchValue(this.value());\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.setOption();\r\n\r\n this.formControl.set(\r\n new UntypedFormControl(this.option().value, {\r\n nonNullable: this.option().nonNullable\r\n })\r\n );\r\n this.setValidators();\r\n this.formControl()!\r\n .statusChanges.pipe(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this.setMessages(x);\r\n });\r\n this.formControl()!\r\n .valueChanges.pipe(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this.componentRef?.instance?.writeValue(x);\r\n });\r\n this.option().setValidators = () => this.setValidators();\r\n this.form.formGroup().addControl(this.option().id, this.formControl());\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentPortal = this.createComponentPortal(this.option());\r\n this.componentRef = this.portalOutlet().attachComponentPortal(this.componentPortal);\r\n\r\n for (let key in this.option()) {\r\n if (key in this.componentRef.instance) {\r\n const val = (this.componentRef.instance as any)[key];\r\n if (XIsFunction(val)) {\r\n const valSymbols = Object.getOwnPropertySymbols(val);\r\n if (valSymbols.length !== 1) break;\r\n const valSymbol = val[valSymbols[0]];\r\n if (valSymbol.hasOwnProperty('transformFn')) {\r\n // input\r\n this.componentRef.setInput(key, this.option()[key]);\r\n } else {\r\n // signal\r\n val.set(this.option()[key]);\r\n }\r\n } else if (val instanceof OutputEmitterRef) {\r\n // output\r\n val.subscribe((x) => this.option()[key](x));\r\n }\r\n }\r\n }\r\n\r\n if (this.option().value !== undefined) {\r\n this.componentRef.instance.writeValue(this.option().value);\r\n }\r\n\r\n this.componentRef.instance.valueObservable.subscribe((x) => {\r\n this.value.set(x);\r\n });\r\n\r\n this.form.controlTypes[this.option().id] = this.option();\r\n this.form.controlComponents[this.option().id] = this.componentRef.instance;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setValidators() {\r\n this.validatorFns.set([]);\r\n if (this.option().disabled || this.form.disabled()) {\r\n this.formControl()!.disable();\r\n } else {\r\n this.formControl()!.enable();\r\n }\r\n if (this.option().required && !this.form.disabled()) {\r\n this.validatorFns.update((x) => [...x, Validators.required]);\r\n }\r\n if (this.option().pattern) {\r\n this.setPattern();\r\n }\r\n if (XIsFunction(this.option().inputValidator)) {\r\n this.validatorFns.update((x) => [...x, XFormInputValidator(this.option().inputValidator!)]);\r\n }\r\n this.formControl()!.setValidators(this.validatorFns());\r\n this.formControl()!.updateValueAndValidity();\r\n }\r\n\r\n setOption() {\r\n for (let prop of this._sharedProps()) {\r\n if (XIsEmpty(this.option()[prop])) {\r\n this.option.update((x) => {\r\n x[prop] = (this.form as any)[prop]();\r\n return x;\r\n });\r\n }\r\n }\r\n if (XIsEmpty(this.option().label)) {\r\n this.option.update((x) => {\r\n x.label = '';\r\n return x;\r\n });\r\n }\r\n this.option.update((x) => {\r\n x.label = `${this.option().label}${this.form.labelSuffix()}`;\r\n return x;\r\n });\r\n }\r\n\r\n setPattern() {\r\n const pattern = this.option().pattern;\r\n if (Array.isArray(pattern)) {\r\n for (const pt of pattern) {\r\n this.validatorFns.update((x) => [...x, Validators.pattern(pt)]);\r\n }\r\n } else {\r\n this.validatorFns.update((x) => [...x, Validators.pattern(pattern as RegExp)]);\r\n }\r\n }\r\n\r\n getPatternMsg(pattern: string) {\r\n const controlPattern = this.option().pattern;\r\n if (Array.isArray(controlPattern)) {\r\n return (this.option().message as Array<any>)[controlPattern.findIndex((x) => String(x) === pattern)];\r\n } else {\r\n return this.option().message;\r\n }\r\n }\r\n\r\n setMessages(state: FormControlStatus) {\r\n let control = this.formControl()! as XFormControl;\r\n if (state === 'INVALID' && this.formControl()!.errors !== null) {\r\n let messages: string[] = [];\r\n for (const key in control.errors) {\r\n const label = this.option().label || this.option().id;\r\n if (key === 'required') {\r\n messages = [...messages, `${label} ${this.locale()?.required || 'required'}`];\r\n } else if (key === 'pattern') {\r\n messages = [...messages, `${label} ${this.getPatternMsg(control.errors[key].requiredPattern)}`];\r\n } else if (key === 'inputValidator') {\r\n messages = [...messages, `${label} ${this.option().message}`];\r\n }\r\n }\r\n control.messages = messages;\r\n } else if (state === 'VALID') {\r\n control.messages = [];\r\n }\r\n }\r\n\r\n createComponentPortal(option: XFormControlOption) {\r\n switch (option.control) {\r\n case 'input':\r\n return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n case 'select':\r\n return new ComponentPortal(XSelectComponent, this.viewContainerRef);\r\n case 'checkbox':\r\n return new ComponentPortal(XCheckboxComponent, this.viewContainerRef);\r\n case 'radio':\r\n return new ComponentPortal(XRadioComponent, this.viewContainerRef);\r\n case 'switch':\r\n return new ComponentPortal(XSwitchComponent, this.viewContainerRef);\r\n case 'rate':\r\n return new ComponentPortal(XRateComponent, this.viewContainerRef);\r\n case 'date-picker':\r\n return new ComponentPortal(XDatePickerComponent, this.viewContainerRef);\r\n case 'time-picker':\r\n return new ComponentPortal(XTimePickerComponent, this.viewContainerRef);\r\n case 'input-number':\r\n return new ComponentPortal(XInputNumberComponent, this.viewContainerRef);\r\n case 'slider-select':\r\n return new ComponentPortal(XSliderSelectComponent, this.viewContainerRef);\r\n case 'cascade':\r\n return new ComponentPortal(XCascadeComponent, this.viewContainerRef);\r\n case 'color-picker':\r\n return new ComponentPortal(XColorPickerComponent, this.viewContainerRef);\r\n case 'textarea':\r\n return new ComponentPortal(XTextareaComponent, this.viewContainerRef);\r\n case 'find':\r\n return new ComponentPortal(XFindComponent, this.viewContainerRef);\r\n case 'auto-complete':\r\n return new ComponentPortal(XAutoCompleteComponent, this.viewContainerRef);\r\n default:\r\n return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n }\r\n }\r\n}\r\n","<div class=\"x-control\" [formGroup]=\"form.formGroup()\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n AfterViewInit,\r\n computed\r\n} from '@angular/core';\r\nimport {\r\n XFormProperty,\r\n XFormRow,\r\n XFormPrefix,\r\n XFormControlOption,\r\n XFormControl,\r\n XFormControlComponent,\r\n XControl\r\n} from './form.property';\r\nimport { XIsChange } from '@ng-nest/ui/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XColComponent, XRowComponent } from '@ng-nest/ui/layout';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XControlComponent } from './control.component';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\n\r\n@Component({\r\n selector: `${XFormPrefix}`,\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XRowComponent,\r\n XColComponent,\r\n XOutletDirective,\r\n XIconComponent,\r\n XControlComponent\r\n ],\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XFormComponent extends XFormProperty implements OnChanges, AfterViewInit {\r\n controlsType = computed(() => {\r\n const controls = this.controls();\r\n return controls && controls.length > 0 && (controls[0] as XFormRow).controls ? 'rows' : 'controls';\r\n });\r\n controlComponents: { [property: string]: XFormControlComponent } = {};\r\n controlTypes: { [property: string]: XControl } = {};\r\n formId = Number(Math.random().toString().substring(2, 6) + Date.now()).toString(36);\r\n classMap = computed(() => ({\r\n [`${XFormPrefix}-${this.controlsType()}`]: true\r\n }));\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { disabled } = changes;\r\n XIsChange(disabled) && this.setDisabled();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setDisabled();\r\n }\r\n\r\n setDisabled() {\r\n if (Object.keys(this.controlComponents).length === 0) return;\r\n if (this.disabled()) {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabledSignal.set(true);\r\n control.requiredSignal.set(false);\r\n control.patternSignal.set([]);\r\n type.setValidators && type.setValidators();\r\n }\r\n } else {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabledSignal.set(type.disabled!);\r\n control.requiredSignal.set(type.required!);\r\n control.patternSignal.set(type.pattern as RegExp | RegExp[]);\r\n type.setValidators && type.setValidators();\r\n }\r\n }\r\n this.formGroup().updateValueAndValidity();\r\n }\r\n\r\n setValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.formControlValidator();\r\n type.setValidators && type.setValidators();\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n resetValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control] = [this.controlComponents[key]];\r\n control.validatorSignal.set(false);\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n getValidatorMessages(): string[] {\r\n let result: string[] = [];\r\n if (this.formGroup().valid) return result;\r\n else {\r\n const eachControls = (array: XFormControlOption[]) => {\r\n for (const ctr of array) {\r\n const formCtr = this.formGroup().controls[ctr.id] as XFormControl;\r\n if (formCtr && formCtr.invalid) {\r\n result = [...result, ...(formCtr.messages as string[])];\r\n }\r\n }\r\n };\r\n if (this.controlsType() === 'rows') {\r\n for (const row of this.controls() as XFormRow[]) {\r\n eachControls(row.controls);\r\n }\r\n } else {\r\n eachControls(this.controls() as XFormControlOption[]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n onSubmit(event: SubmitEvent) {\r\n this.setValidator();\r\n this.xSubmit.emit(event);\r\n }\r\n}\r\n","<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @if (title()) {\r\n <div class=\"x-form-title\">{{ title() }}</div>\r\n }\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XFormComponent } from './form.component';\r\nimport { XControlComponent } from './control.component';\r\n\r\n@NgModule({\r\n exports: [XFormComponent, XControlComponent],\r\n imports: [XFormComponent, XControlComponent]\r\n})\r\nexport class XFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-form.mjs","sources":["../../../../lib/ng-nest/ui/form/form.property.ts","../../../../lib/ng-nest/ui/form/form.token.ts","../../../../lib/ng-nest/ui/form/control.component.ts","../../../../lib/ng-nest/ui/form/control.component.html","../../../../lib/ng-nest/ui/form/form.component.ts","../../../../lib/ng-nest/ui/form/form.component.html","../../../../lib/ng-nest/ui/form/form.module.ts","../../../../lib/ng-nest/ui/form/ng-nest-ui-form.ts"],"sourcesContent":["import { XIdentity, XBoolean, XIsEmpty, XNumber, XToCssPixelValue, XToNumber, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, model, input, output } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { XInputOption, XInputComponent } from '@ng-nest/ui/input';\r\nimport { XSelectOption, XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XCascadeOption, XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxOption, XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerOption, XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerOption, XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XInputNumberOption, XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioOption, XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateOption, XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSliderSelectOption, XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchOption, XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTimePickerOption, XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\nimport { XTextareaOption, XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XFindOption, XFindComponent } from '@ng-nest/ui/find';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompleteOption, XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\n\r\n/**\r\n * Form\r\n * @selector x-form\r\n * @decorator component\r\n */\r\nexport const XFormPrefix = 'x-form';\r\nconst X_FORM_CONFIG_NAME = 'form';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XFormTemplate = { [property: string]: TemplateRef<any> };\r\n/**\r\n * Form Property\r\n */\r\n@Component({ selector: `${XFormPrefix}-property`, template: '' })\r\nexport class XFormProperty extends XFormControlFunction(X_FORM_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 表单 FormGroup\r\n * @en_US Form FormGroup\r\n * @default new UntypedFormGroup({})\r\n */\r\n readonly formGroup = input<UntypedFormGroup>(new UntypedFormGroup({}));\r\n /**\r\n * @zh_CN 表单名称\r\n * @en_US Form name\r\n */\r\n readonly title = input<string>('');\r\n /**\r\n * @zh_CN 控件间距\r\n * @en_US Control spacing\r\n */\r\n readonly space = input<string, XNumber>(this.config?.space ?? '1.75rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 控件宽度,24栅格\r\n * @en_US Control width, 24 grid\r\n */\r\n readonly span = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 标签后缀\r\n * @en_US Label suffix\r\n */\r\n readonly labelSuffix = input<string>(this.config?.labelSuffix ?? '');\r\n /**\r\n * @zh_CN 表单控件\r\n * @en_US Form control\r\n */\r\n readonly controls = input<XFormControlOption[] | XFormRow[]>([]);\r\n /**\r\n * @zh_CN 表单宽度\r\n * @en_US Form width\r\n */\r\n readonly width = input<string, XNumber>(this.config?.width ?? '100%', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly controlTpl = input<XFormTemplate>({});\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 Submit\r\n * @en_US Submit\r\n */\r\n readonly xSubmit = output<SubmitEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport interface XControlOption {\r\n /**\r\n * @zh_CN 列 Id\r\n * @en_US The column Id\r\n */\r\n id?: any;\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 初始默认值\r\n * @en_US Default value\r\n */\r\n defaultValue?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\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 Read only\r\n */\r\n readonly?: 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 Hide\r\n */\r\n hidden?: boolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport class XControl extends XIdentity implements XControlOption {\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 开启这个,执行 reset 的时候初始为设置的 value,默认为 null\r\n * @en_US Enable this. When performing a reset, the initial value is the set value, which defaults to null\r\n */\r\n nonNullable?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\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 Read only\r\n */\r\n readonly?: 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 Hide\r\n */\r\n hidden?: boolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 设置验证\r\n * @en_US Set verification\r\n */\r\n setValidators?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n\r\n constructor(option: XControlOption = {}) {\r\n super();\r\n if (XIsEmpty(this.value)) this.value = '';\r\n Object.assign(this, option);\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 表单行对象\r\n * @en_US Form row object\r\n */\r\nexport interface XFormRow {\r\n /**\r\n * @zh_CN 行标题\r\n * @en_US Row header\r\n */\r\n title?: string;\r\n /**\r\n * @zh_CN 行图标\r\n * @en_US Row icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 行中的控件\r\n * @en_US Control in row\r\n */\r\n controls: XFormControlOption[];\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hidden\r\n */\r\n hidden?: XBoolean;\r\n}\r\n\r\n/**\r\n * Control\r\n * @selector x-control\r\n * @decorator component\r\n */\r\nexport const XControlPrefix = 'x-control';\r\n\r\n/**\r\n * Control Property\r\n */\r\n@Component({ selector: `${XControlPrefix}-property`, template: '' })\r\nexport class XControlProperty {\r\n /**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\n readonly option = model.required<XControl>({});\r\n}\r\n\r\n/**\r\n * Form control\r\n */\r\nexport class XFormControl extends UntypedFormControl {\r\n /**\r\n * @zh_CN 提示信息\r\n * @en_US Prompt information\r\n */\r\n messages?: string[] = [];\r\n}\r\n\r\n/**\r\n * @zh_CN 表单控件参数\r\n * @en_US Form control option\r\n */\r\nexport type XFormControlOption =\r\n | XInputControlOption\r\n | XSelectControlOption\r\n | XCascadeControlOption\r\n | XCheckboxControlOption\r\n | XColorPickerControlOption\r\n | XDatePickerControlOption\r\n | XInputNumberControlOption\r\n | XRadioControlOption\r\n | XRateControlOption\r\n | XSliderSelectControlOption\r\n | XSwitchControlOption\r\n | XTimePickerControlOption\r\n | XFindControlOption\r\n | XTemplateControlOption;\r\n\r\n/**\r\n * @zh_CN 表单控件组件\r\n * @en_US Form control component\r\n */\r\nexport type XFormControlComponent =\r\n | XInputComponent\r\n | XSelectComponent\r\n | XCascadeComponent\r\n | XCheckboxComponent\r\n | XColorPickerComponent\r\n | XDatePickerComponent\r\n | XInputNumberComponent\r\n | XRadioComponent\r\n | XRateComponent\r\n | XSliderSelectComponent\r\n | XSwitchComponent\r\n | XTimePickerComponent\r\n | XTextareaComponent\r\n | XFindComponent\r\n | XAutoCompleteComponent;\r\n\r\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\r\n */\r\nexport type XFormControlType =\r\n | XInputControl\r\n | XSelectControl\r\n | XCascadeControl\r\n | XCheckboxControl\r\n | XColorPickerControl\r\n | XDatePickerControl\r\n | XInputNumberControl\r\n | XRadioControl\r\n | XRateControl\r\n | XSliderSelectControl\r\n | XSwitchControl\r\n | XTimePickerControl\r\n | XTextareaControl\r\n | XFindControl\r\n | XAutoCompleteControl;\r\n\r\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\r\n */\r\nexport type XControlType =\r\n | 'input'\r\n | 'select'\r\n | 'cascade'\r\n | 'checkbox'\r\n | 'color-picker'\r\n | 'date-picker'\r\n | 'input-number'\r\n | 'radio'\r\n | 'rate'\r\n | 'slider-select'\r\n | 'switch'\r\n | 'time-picker'\r\n | 'textarea'\r\n | 'find'\r\n | 'auto-complete'\r\n | 'template';\r\n\r\n/**\r\n * Input Control\r\n */\r\nexport interface XInputControlOption extends XControlOption, XInputOption {}\r\nexport class XInputControl extends XControl {\r\n constructor(option: XInputControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Select Control\r\n */\r\nexport interface XSelectControlOption extends XControlOption, XSelectOption {}\r\nexport class XSelectControl extends XControl {\r\n constructor(option: XSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Cascade Control\r\n */\r\nexport interface XCascadeControlOption extends XControlOption, XCascadeOption {}\r\nexport class XCascadeControl extends XControl {\r\n constructor(option: XCascadeControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Checkbox Control\r\n */\r\nexport interface XCheckboxControlOption extends XControlOption, XCheckboxOption {}\r\nexport class XCheckboxControl extends XControl {\r\n constructor(option: XCheckboxControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * ColorPicker Control\r\n */\r\nexport interface XColorPickerControlOption extends XControlOption, XColorPickerOption {}\r\nexport class XColorPickerControl extends XControl {\r\n constructor(option: XColorPickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * DatePicker Control\r\n */\r\nexport interface XDatePickerControlOption extends XControlOption, XDatePickerOption {}\r\nexport class XDatePickerControl extends XControl {\r\n constructor(option: XDatePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * InputNumber Control\r\n */\r\nexport interface XInputNumberControlOption extends XControlOption, XInputNumberOption {}\r\nexport class XInputNumberControl extends XControl {\r\n constructor(option: XInputNumberControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Radio Control\r\n */\r\nexport interface XRadioControlOption extends XControlOption, XRadioOption {}\r\nexport class XRadioControl extends XControl {\r\n constructor(option: XRadioControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Rate Control\r\n */\r\nexport interface XRateControlOption extends XControlOption, XRateOption {}\r\nexport class XRateControl extends XControl {\r\n constructor(option: XRateControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * SliderSelect Control\r\n */\r\nexport interface XSliderSelectControlOption extends XControlOption, XSliderSelectOption {}\r\nexport class XSliderSelectControl extends XControl {\r\n constructor(option: XSliderSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Switch Control\r\n */\r\nexport interface XSwitchControlOption extends XControlOption, XSwitchOption {}\r\nexport class XSwitchControl extends XControl {\r\n constructor(option: XSwitchControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * TimePicker Control\r\n */\r\nexport interface XTimePickerControlOption extends XControlOption, XTimePickerOption {}\r\nexport class XTimePickerControl extends XControl {\r\n constructor(option: XTimePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Textarea Control\r\n */\r\nexport interface XTextareaControlOption extends XControlOption, XTextareaOption {}\r\nexport class XTextareaControl extends XControl {\r\n constructor(option: XTextareaControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Find Control\r\n */\r\nexport interface XFindControlOption extends XControlOption, XFindOption {}\r\nexport class XFindControl extends XControl {\r\n constructor(option: XFindControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * AutoComplete Control\r\n */\r\nexport interface XAutoCompleteControlOption extends XControlOption, XAutoCompleteOption {}\r\nexport class XAutoCompleteControl extends XControl {\r\n constructor(option: XAutoCompleteControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Template Control\r\n */\r\nexport interface XTemplateControlOption extends XControlOption, XFormOption {}\r\n","import { InjectionToken, InputSignal, InputSignalWithTransform } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { XControl, XFormControlComponent } from './form.property';\r\nimport type { XBoolean } from '@ng-nest/ui/core';\r\n\r\nexport interface XFormContext {\r\n formGroup: InputSignal<UntypedFormGroup>;\r\n controlComponents: { [property: string]: XFormControlComponent };\r\n controlTypes: { [property: string]: XControl };\r\n disabled: InputSignalWithTransform<boolean, XBoolean>;\r\n labelSuffix: InputSignal<string>;\r\n}\r\n\r\nexport const X_FORM_CONTEXT = new InjectionToken<XFormContext>('X_FORM_CONTEXT');\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy,\r\n inject,\r\n viewChild,\r\n signal,\r\n ViewContainerRef,\r\n ComponentRef,\r\n OutputEmitterRef,\r\n effect\r\n} from '@angular/core';\r\nimport { XControlProperty, XFormControlOption, XFormControlComponent, XFormControl } from './form.property';\r\nimport {\r\n Validators,\r\n UntypedFormControl,\r\n ValidatorFn,\r\n FormControlStatus,\r\n FormsModule,\r\n ReactiveFormsModule\r\n} from '@angular/forms';\r\nimport { XIsEmpty, XIsFunction } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XI18nForm, XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XFormInputValidator } from '@ng-nest/ui/base-form';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CdkPortalOutlet, ComponentPortal, Portal, PortalModule } from '@angular/cdk/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\nimport { XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XFindComponent } from '@ng-nest/ui/find';\r\nimport { XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\nimport { X_FORM_CONTEXT } from './form.token';\r\n\r\n@Component({\r\n selector: 'x-control',\r\n imports: [FormsModule, ReactiveFormsModule, PortalModule],\r\n templateUrl: './control.component.html',\r\n styleUrls: ['./control.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XControlComponent extends XControlProperty implements OnInit, AfterViewInit, OnDestroy {\r\n private i18n = inject(XI18nService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private _sharedProps = signal(['span', 'direction', 'justify', 'align', 'labelWidth', 'labelAlign']);\r\n private validatorFns = signal<ValidatorFn[]>([]);\r\n private formControl = signal<UntypedFormControl | null>(null);\r\n private _unSubject = new Subject<void>();\r\n value = signal<any>(null);\r\n\r\n form = inject(X_FORM_CONTEXT, { optional: true })!;\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.form as XI18nForm)), { initialValue: zh_CN.form });\r\n portal = signal<Portal<any> | null>(null);\r\n componentPortal!: ComponentPortal<XFormControlComponent>;\r\n componentRef!: ComponentRef<XFormControlComponent>;\r\n portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n this.formControl()!.patchValue(this.value());\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.setOption();\r\n\r\n this.formControl.set(\r\n new UntypedFormControl(this.option().value, {\r\n nonNullable: this.option().nonNullable\r\n })\r\n );\r\n this.setValidators();\r\n this.formControl()!\r\n .statusChanges.pipe(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this.setMessages(x);\r\n });\r\n this.formControl()!\r\n .valueChanges.pipe(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this.componentRef?.instance?.writeValue(x);\r\n });\r\n this.option().setValidators = () => this.setValidators();\r\n this.form.formGroup().addControl(this.option().id, this.formControl());\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentPortal = this.createComponentPortal(this.option());\r\n this.componentRef = this.portalOutlet().attachComponentPortal(this.componentPortal);\r\n\r\n for (let key in this.option()) {\r\n if (key in this.componentRef.instance) {\r\n const val = (this.componentRef.instance as any)[key];\r\n if (XIsFunction(val)) {\r\n const valSymbols = Object.getOwnPropertySymbols(val);\r\n if (valSymbols.length !== 1) break;\r\n const valSymbol = val[valSymbols[0]];\r\n if (valSymbol.hasOwnProperty('transformFn')) {\r\n // input\r\n this.componentRef.setInput(key, this.option()[key]);\r\n } else {\r\n // signal\r\n val.set(this.option()[key]);\r\n }\r\n } else if (val instanceof OutputEmitterRef) {\r\n // output\r\n val.subscribe((x) => this.option()[key](x));\r\n }\r\n }\r\n }\r\n\r\n if (this.option().value !== undefined) {\r\n this.componentRef.instance.writeValue(this.option().value);\r\n }\r\n\r\n this.componentRef.instance.valueObservable.subscribe((x) => {\r\n this.value.set(x);\r\n });\r\n\r\n this.form.controlTypes[this.option().id] = this.option();\r\n this.form.controlComponents[this.option().id] = this.componentRef.instance;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setValidators() {\r\n this.validatorFns.set([]);\r\n if (this.option().disabled || this.form.disabled()) {\r\n this.formControl()!.disable();\r\n } else {\r\n this.formControl()!.enable();\r\n }\r\n if (this.option().required && !this.form.disabled()) {\r\n this.validatorFns.update((x) => [...x, Validators.required]);\r\n }\r\n if (this.option().pattern) {\r\n this.setPattern();\r\n }\r\n if (XIsFunction(this.option().inputValidator)) {\r\n this.validatorFns.update((x) => [...x, XFormInputValidator(this.option().inputValidator!)]);\r\n }\r\n this.formControl()!.setValidators(this.validatorFns());\r\n this.formControl()!.updateValueAndValidity();\r\n }\r\n\r\n setOption() {\r\n for (let prop of this._sharedProps()) {\r\n if (XIsEmpty(this.option()[prop])) {\r\n this.option.update((x) => {\r\n x[prop] = (this.form as any)[prop]();\r\n return x;\r\n });\r\n }\r\n }\r\n if (XIsEmpty(this.option().label)) {\r\n this.option.update((x) => {\r\n x.label = '';\r\n return x;\r\n });\r\n }\r\n this.option.update((x) => {\r\n x.label = `${this.option().label}${this.form.labelSuffix()}`;\r\n return x;\r\n });\r\n }\r\n\r\n setPattern() {\r\n const pattern = this.option().pattern;\r\n if (Array.isArray(pattern)) {\r\n for (const pt of pattern) {\r\n this.validatorFns.update((x) => [...x, Validators.pattern(pt)]);\r\n }\r\n } else {\r\n this.validatorFns.update((x) => [...x, Validators.pattern(pattern as RegExp)]);\r\n }\r\n }\r\n\r\n getPatternMsg(pattern: string) {\r\n const controlPattern = this.option().pattern;\r\n if (Array.isArray(controlPattern)) {\r\n return (this.option().message as Array<any>)[controlPattern.findIndex((x) => String(x) === pattern)];\r\n } else {\r\n return this.option().message;\r\n }\r\n }\r\n\r\n setMessages(state: FormControlStatus) {\r\n let control = this.formControl()! as XFormControl;\r\n if (state === 'INVALID' && this.formControl()!.errors !== null) {\r\n let messages: string[] = [];\r\n for (const key in control.errors) {\r\n const label = this.option().label || this.option().id;\r\n if (key === 'required') {\r\n messages = [...messages, `${label} ${this.locale()?.required || 'required'}`];\r\n } else if (key === 'pattern') {\r\n messages = [...messages, `${label} ${this.getPatternMsg(control.errors[key].requiredPattern)}`];\r\n } else if (key === 'inputValidator') {\r\n messages = [...messages, `${label} ${this.option().message}`];\r\n }\r\n }\r\n control.messages = messages;\r\n } else if (state === 'VALID') {\r\n control.messages = [];\r\n }\r\n }\r\n\r\n createComponentPortal(option: XFormControlOption) {\r\n switch (option.control) {\r\n case 'input':\r\n return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n case 'select':\r\n return new ComponentPortal(XSelectComponent, this.viewContainerRef);\r\n case 'checkbox':\r\n return new ComponentPortal(XCheckboxComponent, this.viewContainerRef);\r\n case 'radio':\r\n return new ComponentPortal(XRadioComponent, this.viewContainerRef);\r\n case 'switch':\r\n return new ComponentPortal(XSwitchComponent, this.viewContainerRef);\r\n case 'rate':\r\n return new ComponentPortal(XRateComponent, this.viewContainerRef);\r\n case 'date-picker':\r\n return new ComponentPortal(XDatePickerComponent, this.viewContainerRef);\r\n case 'time-picker':\r\n return new ComponentPortal(XTimePickerComponent, this.viewContainerRef);\r\n case 'input-number':\r\n return new ComponentPortal(XInputNumberComponent, this.viewContainerRef);\r\n case 'slider-select':\r\n return new ComponentPortal(XSliderSelectComponent, this.viewContainerRef);\r\n case 'cascade':\r\n return new ComponentPortal(XCascadeComponent, this.viewContainerRef);\r\n case 'color-picker':\r\n return new ComponentPortal(XColorPickerComponent, this.viewContainerRef);\r\n case 'textarea':\r\n return new ComponentPortal(XTextareaComponent, this.viewContainerRef);\r\n case 'find':\r\n return new ComponentPortal(XFindComponent, this.viewContainerRef);\r\n case 'auto-complete':\r\n return new ComponentPortal(XAutoCompleteComponent, this.viewContainerRef);\r\n default:\r\n return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n }\r\n }\r\n}\r\n","<div class=\"x-control\" [formGroup]=\"form.formGroup()\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n AfterViewInit,\r\n computed\r\n} from '@angular/core';\r\nimport {\r\n XFormProperty,\r\n XFormRow,\r\n XFormPrefix,\r\n XFormControlOption,\r\n XFormControl,\r\n XFormControlComponent,\r\n XControl\r\n} from './form.property';\r\nimport { XIsChange } from '@ng-nest/ui/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XColComponent, XRowComponent } from '@ng-nest/ui/layout';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XControlComponent } from './control.component';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { X_FORM_CONTEXT, XFormContext } from './form.token';\r\n\r\n@Component({\r\n selector: `${XFormPrefix}`,\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XRowComponent,\r\n XColComponent,\r\n XOutletDirective,\r\n XIconComponent,\r\n XControlComponent\r\n ],\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_FORM_CONTEXT,\r\n useExisting: XFormComponent\r\n }\r\n ]\r\n})\r\nexport class XFormComponent extends XFormProperty implements OnChanges, AfterViewInit, XFormContext {\r\n controlsType = computed(() => {\r\n const controls = this.controls();\r\n return controls && controls.length > 0 && (controls[0] as XFormRow).controls ? 'rows' : 'controls';\r\n });\r\n controlComponents: { [property: string]: XFormControlComponent } = {};\r\n controlTypes: { [property: string]: XControl } = {};\r\n formId = Number(Math.random().toString().substring(2, 6) + Date.now()).toString(36);\r\n classMap = computed(() => ({\r\n [`${XFormPrefix}-${this.controlsType()}`]: true\r\n }));\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { disabled } = changes;\r\n XIsChange(disabled) && this.setDisabled();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setDisabled();\r\n }\r\n\r\n setDisabled() {\r\n if (Object.keys(this.controlComponents).length === 0) return;\r\n if (this.disabled()) {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabledSignal.set(true);\r\n control.requiredSignal.set(false);\r\n control.patternSignal.set([]);\r\n type.setValidators && type.setValidators();\r\n }\r\n } else {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabledSignal.set(type.disabled!);\r\n control.requiredSignal.set(type.required!);\r\n control.patternSignal.set(type.pattern as RegExp | RegExp[]);\r\n type.setValidators && type.setValidators();\r\n }\r\n }\r\n this.formGroup().updateValueAndValidity();\r\n }\r\n\r\n setValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.formControlValidator();\r\n type.setValidators && type.setValidators();\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n resetValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control] = [this.controlComponents[key]];\r\n control.validatorSignal.set(false);\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n getValidatorMessages(): string[] {\r\n let result: string[] = [];\r\n if (this.formGroup().valid) return result;\r\n else {\r\n const eachControls = (array: XFormControlOption[]) => {\r\n for (const ctr of array) {\r\n const formCtr = this.formGroup().controls[ctr.id] as XFormControl;\r\n if (formCtr && formCtr.invalid) {\r\n result = [...result, ...(formCtr.messages as string[])];\r\n }\r\n }\r\n };\r\n if (this.controlsType() === 'rows') {\r\n for (const row of this.controls() as XFormRow[]) {\r\n eachControls(row.controls);\r\n }\r\n } else {\r\n eachControls(this.controls() as XFormControlOption[]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n onSubmit(event: SubmitEvent) {\r\n this.setValidator();\r\n this.xSubmit.emit(event);\r\n }\r\n}\r\n","<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @if (title()) {\r\n <div class=\"x-form-title\">{{ title() }}</div>\r\n }\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XFormComponent } from './form.component';\r\nimport { XControlComponent } from './control.component';\r\n\r\n@NgModule({\r\n exports: [XFormComponent, XControlComponent],\r\n imports: [XFormComponent, XControlComponent]\r\n})\r\nexport class XFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}