@ng-nest/ui 19.0.0 → 19.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/anchor/anchor.component.d.ts +3 -1
  2. package/api/api.component.d.ts +1 -1
  3. package/auto-complete/auto-complete.component.d.ts +1 -3
  4. package/auto-complete/auto-complete.property.d.ts +1 -1
  5. package/base-form/base-form.component.d.ts +1 -1
  6. package/base-form/base-form.property.d.ts +0 -104
  7. package/carousel/carousel-panel.component.d.ts +1 -1
  8. package/cascade/cascade.component.d.ts +1 -2
  9. package/cascade/cascade.property.d.ts +1 -1
  10. package/checkbox/checkbox.property.d.ts +6 -1
  11. package/collapse/collapse.component.d.ts +1 -3
  12. package/collapse/collapse.property.d.ts +1 -15
  13. package/color-picker/color-picker.component.d.ts +0 -1
  14. package/color-picker/color-picker.property.d.ts +1 -1
  15. package/core/config/config.d.ts +1 -0
  16. package/date-picker/date-picker.component.d.ts +0 -1
  17. package/date-picker/date-picker.property.d.ts +2 -2
  18. package/dialog/dialog-portal.component.d.ts +5 -3
  19. package/dropdown/dropdown.component.d.ts +0 -1
  20. package/fesm2022/ng-nest-ui-anchor.mjs +11 -7
  21. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-api.mjs +4 -4
  23. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-auto-complete.mjs +14 -23
  25. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  26. package/fesm2022/ng-nest-ui-back-top.mjs +1 -1
  27. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  28. package/fesm2022/ng-nest-ui-base-form.mjs +23 -120
  29. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  30. package/fesm2022/ng-nest-ui-calendar.mjs +1 -6
  31. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  32. package/fesm2022/ng-nest-ui-carousel.mjs +3 -11
  33. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  34. package/fesm2022/ng-nest-ui-cascade.mjs +1 -7
  35. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  36. package/fesm2022/ng-nest-ui-checkbox.mjs +2 -2
  37. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  38. package/fesm2022/ng-nest-ui-collapse.mjs +6 -28
  39. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  40. package/fesm2022/ng-nest-ui-color-picker.mjs +0 -3
  41. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  42. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  43. package/fesm2022/ng-nest-ui-date-picker.mjs +0 -3
  44. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  45. package/fesm2022/ng-nest-ui-dialog.mjs +11 -5
  46. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  47. package/fesm2022/ng-nest-ui-dropdown.mjs +0 -3
  48. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  49. package/fesm2022/ng-nest-ui-image.mjs +2 -2
  50. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  51. package/fesm2022/ng-nest-ui-select.mjs +4 -6
  52. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  53. package/fesm2022/ng-nest-ui-table.mjs +24 -7
  54. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  55. package/fesm2022/ng-nest-ui-textarea.mjs +2 -2
  56. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  57. package/fesm2022/ng-nest-ui-time-picker.mjs +0 -3
  58. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  59. package/fesm2022/ng-nest-ui-timeline.mjs +1 -11
  60. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  61. package/fesm2022/ng-nest-ui-tooltip.mjs +30 -19
  62. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  63. package/fesm2022/ng-nest-ui-transfer.mjs +8 -3
  64. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  65. package/fesm2022/ng-nest-ui-tree-file.mjs +2 -2
  66. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  67. package/fesm2022/ng-nest-ui-tree-select.mjs +93 -53
  68. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  69. package/fesm2022/ng-nest-ui-tree.mjs +10 -5
  70. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  71. package/fesm2022/ng-nest-ui-upload.mjs +3 -6
  72. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  73. package/find/find.property.d.ts +1 -1
  74. package/form/form.property.d.ts +1 -1
  75. package/input/input.property.d.ts +1 -1
  76. package/input-number/input-number.property.d.ts +1 -1
  77. package/list/list.property.d.ts +1 -1
  78. package/package.json +62 -62
  79. package/radio/radio.property.d.ts +1 -1
  80. package/rate/rate.property.d.ts +1 -1
  81. package/select/select.component.d.ts +0 -1
  82. package/select/select.property.d.ts +1 -1
  83. package/slider-select/slider-select.property.d.ts +1 -1
  84. package/switch/switch.property.d.ts +1 -1
  85. package/table/table-body.component.d.ts +2 -0
  86. package/table/table.component.d.ts +2 -2
  87. package/table/table.property.d.ts +12 -1
  88. package/textarea/textarea.property.d.ts +1 -1
  89. package/theme/theme.property.d.ts +1 -1
  90. package/time-picker/time-picker.component.d.ts +0 -1
  91. package/time-picker/time-picker.property.d.ts +1 -1
  92. package/timeline/timeline.property.d.ts +1 -11
  93. package/tooltip/tooltip.directive.d.ts +5 -3
  94. package/transfer/transfer.property.d.ts +1 -1
  95. package/tree/tree.property.d.ts +6 -1
  96. package/tree-select/tree-select-portal.component.d.ts +1 -4
  97. package/tree-select/tree-select.component.d.ts +13 -6
  98. package/tree-select/tree-select.property.d.ts +2 -12
  99. package/upload/upload.component.d.ts +0 -1
  100. package/upload/upload.property.d.ts +1 -1
@@ -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 XTrigger,\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} 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 当前激活的菜单\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} from '@angular/core';\r\nimport { XDropdownPortalPrefix, XDropdownNode, XDropdownTrigger } from './dropdown.property';\r\nimport { XPortalConnectedPosition, XPortalOverlayRef, XPortalService } from '@ng-nest/ui/portal';\r\nimport { XConnectBaseAnimation, 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\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 animations: [XConnectBaseAnimation]\r\n})\r\nexport class XDropdownPortalComponent {\r\n @HostBinding('@x-connect-base-animation') public get getPlacement() {\r\n return this.placement();\r\n }\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done() {\r\n if (this.destroy()) return;\r\n this.animating.emit(false);\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n if (this.destroy()) return;\r\n this.animating.emit(true);\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 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 openNode = signal<XDropdownNode | null>(null);\r\n timeoutHide: any;\r\n\r\n portalPlacement = signal<XPositionTopBottom | null>(null);\r\n childAnimating = signal(false);\r\n activatedId = model<any>();\r\n destroy = signal(false);\r\n private unSubject = new Subject<void>();\r\n private destroyRef = inject(DestroyRef);\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('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 }\r\n\r\n ngOnInit() {\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 onNodeClick(node: XDropdownNode) {\r\n this.nodeClick.emit(node);\r\n if (!node.leaf) {\r\n this.activatedId.set(node.id);\r\n this.closed.emit();\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 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()?.event?.target),\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 onEnter(node: XDropdownNode) {\r\n if (!node.leaf || node.disabled || this.childAnimating()) return;\r\n if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n if (this.portalAttached() && this.node()?.id !== node.id) {\r\n this.changeOpenNode(false);\r\n this.portalOverlayRef()?.dispose();\r\n }\r\n this.node.set(node);\r\n if (!this.portalAttached()) {\r\n this.openNode.set(node);\r\n this.changeOpenNode(true);\r\n this.createPortal();\r\n }\r\n }\r\n\r\n onLeave() {\r\n if (this.portalAttached()) {\r\n this.timeoutHide = setTimeout(() => {\r\n this.changeOpenNode(false);\r\n this.portal?.overlayRef?.dispose();\r\n });\r\n } else {\r\n this.changeOpenNode(false);\r\n }\r\n }\r\n\r\n changeOpenNode(open: boolean) {\r\n if (this.openNode()) {\r\n this.openNode.update((x) => {\r\n x!.openPortal = open;\r\n x!.change && x!.change();\r\n return x;\r\n });\r\n }\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 [data]=\"data()\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [(ngModel)]=\"activatedId\"\r\n (nodeMouseenter)=\"onEnter($event)\"\r\n (nodeMouseleave)=\"onLeave()\"\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} from '@angular/core';\r\nimport { XDropdownPrefix, XDropdownNode, XDropdownProperty } from './dropdown.property';\r\nimport { XIsEmpty, XHasChildren, XGetChildren, XPositionTopBottom, XPlacement } 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 } 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\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 visible = signal(false);\r\n animating = signal(false);\r\n outsideClick = signal(false);\r\n minWidth = signal<string>('0px');\r\n hoverDelayUnsub = new Subject<void>();\r\n closeSubject: Subject<void> = new Subject();\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 }\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 setSubject() {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n }\r\n\r\n onEnter() {\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.visible.set(true);\r\n this.createPortal();\r\n }\r\n });\r\n }\r\n\r\n onLeave() {\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.portalOverlayRef()?.dispose();\r\n this.visible.set(false);\r\n });\r\n }\r\n }\r\n\r\n showPortal() {\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.visible.set(false);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portalOverlayRef()?.dispose();\r\n }\r\n\r\n createPortal() {\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 this.closeSubject.next();\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 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) => this.nodeClick.emit(node));\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 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]=\"visible()\"\r\n (mouseenter)=\"onEnter()\"\r\n (mouseleave)=\"onLeave()\"\r\n (click)=\"showPortal()\"\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 XTrigger,\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} 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 当前激活的菜单\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} from '@angular/core';\r\nimport { XDropdownPortalPrefix, XDropdownNode, XDropdownTrigger } from './dropdown.property';\r\nimport { XPortalConnectedPosition, XPortalOverlayRef, XPortalService } from '@ng-nest/ui/portal';\r\nimport { XConnectBaseAnimation, 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\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 animations: [XConnectBaseAnimation]\r\n})\r\nexport class XDropdownPortalComponent {\r\n @HostBinding('@x-connect-base-animation') public get getPlacement() {\r\n return this.placement();\r\n }\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done() {\r\n if (this.destroy()) return;\r\n this.animating.emit(false);\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n if (this.destroy()) return;\r\n this.animating.emit(true);\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 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 openNode = signal<XDropdownNode | null>(null);\r\n timeoutHide: any;\r\n\r\n portalPlacement = signal<XPositionTopBottom | null>(null);\r\n childAnimating = signal(false);\r\n activatedId = model<any>();\r\n destroy = signal(false);\r\n private unSubject = new Subject<void>();\r\n private destroyRef = inject(DestroyRef);\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('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 }\r\n\r\n ngOnInit() {\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 onNodeClick(node: XDropdownNode) {\r\n this.nodeClick.emit(node);\r\n if (!node.leaf) {\r\n this.activatedId.set(node.id);\r\n this.closed.emit();\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 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()?.event?.target),\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 onEnter(node: XDropdownNode) {\r\n if (!node.leaf || node.disabled || this.childAnimating()) return;\r\n if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n if (this.portalAttached() && this.node()?.id !== node.id) {\r\n this.changeOpenNode(false);\r\n this.portalOverlayRef()?.dispose();\r\n }\r\n this.node.set(node);\r\n if (!this.portalAttached()) {\r\n this.openNode.set(node);\r\n this.changeOpenNode(true);\r\n this.createPortal();\r\n }\r\n }\r\n\r\n onLeave() {\r\n if (this.portalAttached()) {\r\n this.timeoutHide = setTimeout(() => {\r\n this.changeOpenNode(false);\r\n this.portal?.overlayRef?.dispose();\r\n });\r\n } else {\r\n this.changeOpenNode(false);\r\n }\r\n }\r\n\r\n changeOpenNode(open: boolean) {\r\n if (this.openNode()) {\r\n this.openNode.update((x) => {\r\n x!.openPortal = open;\r\n x!.change && x!.change();\r\n return x;\r\n });\r\n }\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 [data]=\"data()\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [(ngModel)]=\"activatedId\"\r\n (nodeMouseenter)=\"onEnter($event)\"\r\n (nodeMouseleave)=\"onLeave()\"\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} from '@angular/core';\r\nimport { XDropdownPrefix, XDropdownNode, XDropdownProperty } from './dropdown.property';\r\nimport { XIsEmpty, XHasChildren, XGetChildren, XPositionTopBottom, XPlacement } 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 } 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\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 visible = signal(false);\r\n animating = signal(false);\r\n outsideClick = signal(false);\r\n minWidth = signal<string>('0px');\r\n hoverDelayUnsub = new Subject<void>();\r\n closeSubject: Subject<void> = new Subject();\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 }\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 setSubject() {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n }\r\n\r\n onEnter() {\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.visible.set(true);\r\n this.createPortal();\r\n }\r\n });\r\n }\r\n\r\n onLeave() {\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.portalOverlayRef()?.dispose();\r\n this.visible.set(false);\r\n });\r\n }\r\n }\r\n\r\n showPortal() {\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.visible.set(false);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n createPortal() {\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 this.closeSubject.next();\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 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) => this.nodeClick.emit(node));\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 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]=\"visible()\"\r\n (mouseenter)=\"onEnter()\"\r\n (mouseleave)=\"onLeave()\"\r\n (click)=\"showPortal()\"\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,IAAI,CAAA,IAAA,GAAG,KAAK,CAA6C,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAClG;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC;AAC3E;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAa,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,cAAc,CAAC;AAChF;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACrF;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACrF;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACtF;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACtF;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAkB,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC3E;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,EAAmB;AAC/C;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAG,KAAK,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC;AAC3D;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,MAAM,EAAiB;AAC7C;iIAlEY,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,0wDADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACrD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,eAAe,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;AAiFpE;;;;AAIG;AACI,MAAM,qBAAqB,GAAG;;MCxExB,wBAAwB,CAAA;AACnC,IAAA,IAAqD,YAAY,GAAA;AAC/D,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;;IAEmC,IAAI,GAAA;QAC9D,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;IAEiC,KAAK,GAAA;QAChE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IA0BC,UAAU,GAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGD,UAAU,GAAA;AACpC,QAAA,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AASxD,IAAA,WAAA,GAAA;AAtCA,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,OAAO,CAAC;QAC1C,IAAS,CAAA,SAAA,GAAG,KAAK,EAAsB;AACvC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAQ,QAAQ,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU;QAC1B,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU;QAC1B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU;QAC3B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU;QAC3B,IAAM,CAAA,MAAA,GAAG,MAAM,EAAE;QACjB,IAAS,CAAA,SAAA,GAAG,MAAM,EAAW;QAC7B,IAAS,CAAA,SAAA,GAAG,MAAM,EAAiB;QACnC,IAAW,CAAA,WAAA,GAAG,MAAM,EAAW;AAE/B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAuB,IAAI,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAuB,IAAI,CAAC;AAG7C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAA4B,IAAI,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAG,KAAK,EAAO;AAC1B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACf,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAUvC,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,CAAC;AAC7E,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAoB,IAAI,CAAC;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,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;;IAGnF,QAAQ,GAAA;AACN,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,SAAC,CAAC;;AAGJ,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,MAAM,CAAC,IAAI,EAAE;;;IAItB,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE;;IAG/C,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE;AAClC,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;IAGd,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;;AAGpB,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;;AAE7C,SAAC,CAAC;;IAGJ,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,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;;AAGrD,IAAA,KAAK,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;AAC7B,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;;aACzB;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE;;;IAIlB,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AACrC,YAAA,UAAU,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC;YACtD,SAAS,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC;AACjE,YAAA,iBAAiB,EAAE;AACpB,SAAA,CAAC;;AAGJ,IAAA,OAAO,CAAC,IAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE;QAC1D,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AACxD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE;;AAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE;;;IAIvB,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;AACpC,aAAC,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;;AAI9B,IAAA,cAAc,CAAC,IAAa,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACzB,gBAAA,CAAE,CAAC,UAAU,GAAG,IAAI;AACpB,gBAAA,CAAE,CAAC,MAAM,IAAI,CAAE,CAAC,MAAM,EAAE;AACxB,gBAAA,OAAO,CAAC;AACV,aAAC,CAAC;;;iIAnLK,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAxB,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,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,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,gCAAA,EAAA,cAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCrC,ifAkBA,EDgBY,MAAA,EAAA,CAAA,6bAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+VAAE,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAKzB,CAAC,qBAAqB,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAExB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,qBAAqB,CAAE,CAAA,EAAA,OAAA,EAC3B,CAAC,WAAW,EAAE,cAAc,CAAC,EAAA,aAAA,EAGvB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,ifAAA,EAAA,MAAA,EAAA,CAAA,6bAAA,CAAA,EAAA;wDAGkB,YAAY,EAAA,CAAA;sBAAhE,WAAW;uBAAC,2BAA2B;gBAGoB,IAAI,EAAA,CAAA;sBAA/D,YAAY;uBAAC,gCAAgC,EAAE,CAAC,QAAQ,CAAC;gBAIG,KAAK,EAAA,CAAA;sBAAjE,YAAY;uBAAC,iCAAiC,EAAE,CAAC,QAAQ,CAAC;gBA4B/B,UAAU,EAAA,CAAA;sBAArC,YAAY;uBAAC,YAAY;gBAIE,UAAU,EAAA,CAAA;sBAArC,YAAY;uBAAC,YAAY;;;AE5CtB,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AA0BvD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AA1BD,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;;AAEhG,YAAA,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,SAAC,CAAC;AAGF,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AACrC,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAE;AAEnC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAoB,IAAI,CAAC;AACvD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAgD,IAAI,CAAC;AAC7E,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAoB,IAAI,CAAC;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;;IAGrE,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;;IAGnB,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;;IAGjC,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,SAAC,CAAC;;IAGJ,OAAO,GAAA;QACL,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;;YAEzB,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;AAC5E,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,CAAC,YAAY,EAAE;;AAEvB,SAAC,CAAC;;IAGN,OAAO,GAAA;AACL,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;AACjC,gBAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE;AAClC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,aAAC,CAAC;;;IAIN,UAAU,GAAA;AACR,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;;QAEF,IAAI,CAAC,YAAY,EAAE;;IAGrB,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE;;IAG/C,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;IAGd,YAAY,GAAA;QACV,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,CAAG,EAAA,GAAG,CAAC,KAAK,CAAI,EAAA,CAAA,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,YAAY,CAAC,IAAI,EAAE;AAC1B,aAAC,CAAC;;QAGN,IAAI,CAAC,WAAW,EAAE;;AAGpB,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;;AAE7C,SAAC,CAAC;;IAGJ,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,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,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,WAAW,CAAC,KAAK,CAAC,CAAC;;AAG3D,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;AAC7B,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;;aACzB;YACL,IAAI,CAAC,OAAO,EAAE;;;IAIlB,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;;iIA1KO,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,mNCrC/B,oOAUA,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;;2FD2Ba,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;+BACE,CAAG,EAAA,eAAe,CAAE,CAAA,EAAA,OAAA,EACrB,EAAE,EAAA,aAAA,EAGI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,oOAAA,EAAA,MAAA,EAAA,CAAA,iHAAA,CAAA,EAAA;;;ME7BpC,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;;;;"}
@@ -410,11 +410,11 @@ class XImageComponent extends XImageProperty {
410
410
  this.load.emit(event);
411
411
  }
412
412
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
413
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: XImageComponent, isStandalone: true, selector: "x-image", usesInheritance: true, ngImport: i0, template: "<div class=\"x-image\">\r\n <img\r\n [hidden]=\"(placeholder() && !isLoaded()) || isError()\"\r\n class=\"x-image-img\"\r\n [src]=\"src()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [attr.alt]=\"alt()\"\r\n (error)=\"onError($event)\"\r\n (load)=\"onLoad($event)\"\r\n />\r\n @if (placeholder() && !isLoaded()) {\r\n <img class=\"x-image-img\" [src]=\"placeholder()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && fallback()) {\r\n <img class=\"x-image-img\" [src]=\"fallback()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && !fallback()) {\r\n <div class=\"x-image-error-icon\" [style.width]=\"width()\" [style.height]=\"height()\">\r\n <x-icon type=\"fto-image\"></x-icon>\r\n </div>\r\n }\r\n <ng-container *xOutlet=\"previewTpl(); context: { $image: this }\">\r\n @if (!isError()) {\r\n <div class=\"x-image-overlay\" (click)=\"onPreview()\">\r\n <div class=\"x-image-text\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n <span>{{ previewTextSignal() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n</div>\r\n", styles: ["x-image{display:inline-block}.x-image{margin:0;padding:0}.x-image{position:relative;display:inline-block}.x-image-img{max-width:100%;max-height:100%;vertical-align:middle}.x-image-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:#00000080;cursor:pointer;opacity:0;transition:opacity var(--x-animation-duration-base)}.x-image-overlay:hover{opacity:1}.x-image-text>span{margin-left:.25rem}.x-image-error{display:none}.x-image-error-icon{font-size:2rem}\n"], dependencies: [{ kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
413
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: XImageComponent, isStandalone: true, selector: "x-image", usesInheritance: true, ngImport: i0, template: "<div class=\"x-image\">\r\n <img\r\n [hidden]=\"(placeholder() && !isLoaded()) || isError()\"\r\n class=\"x-image-img\"\r\n [src]=\"src()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [attr.alt]=\"alt()\"\r\n (error)=\"onError($event)\"\r\n (load)=\"onLoad($event)\"\r\n />\r\n @if (placeholder() && !isLoaded()) {\r\n <img class=\"x-image-img\" [src]=\"placeholder()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && fallback()) {\r\n <img class=\"x-image-img x-image-fallback\" [src]=\"fallback()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && !fallback()) {\r\n <div class=\"x-image-error-icon\" [style.width]=\"width()\" [style.height]=\"height()\">\r\n <x-icon type=\"fto-image\"></x-icon>\r\n </div>\r\n }\r\n <ng-container *xOutlet=\"previewTpl(); context: { $image: this }\">\r\n @if (!isError()) {\r\n <div class=\"x-image-overlay\" (click)=\"onPreview()\">\r\n <div class=\"x-image-text\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n <span>{{ previewTextSignal() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n</div>\r\n", styles: ["x-image{display:inline-block}.x-image{margin:0;padding:0}.x-image{position:relative;display:inline-block}.x-image-img{max-width:100%;max-height:100%;vertical-align:middle}.x-image-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:#00000080;cursor:pointer;opacity:0;transition:opacity var(--x-animation-duration-base)}.x-image-overlay:hover{opacity:1}.x-image-text>span{margin-left:.25rem}.x-image-error{display:none}.x-image-error-icon{font-size:2rem}\n"], dependencies: [{ kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
414
414
  }
415
415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XImageComponent, decorators: [{
416
416
  type: Component,
417
- args: [{ selector: `${XImagePrefix}`, imports: [XIconComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-image\">\r\n <img\r\n [hidden]=\"(placeholder() && !isLoaded()) || isError()\"\r\n class=\"x-image-img\"\r\n [src]=\"src()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [attr.alt]=\"alt()\"\r\n (error)=\"onError($event)\"\r\n (load)=\"onLoad($event)\"\r\n />\r\n @if (placeholder() && !isLoaded()) {\r\n <img class=\"x-image-img\" [src]=\"placeholder()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && fallback()) {\r\n <img class=\"x-image-img\" [src]=\"fallback()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && !fallback()) {\r\n <div class=\"x-image-error-icon\" [style.width]=\"width()\" [style.height]=\"height()\">\r\n <x-icon type=\"fto-image\"></x-icon>\r\n </div>\r\n }\r\n <ng-container *xOutlet=\"previewTpl(); context: { $image: this }\">\r\n @if (!isError()) {\r\n <div class=\"x-image-overlay\" (click)=\"onPreview()\">\r\n <div class=\"x-image-text\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n <span>{{ previewTextSignal() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n</div>\r\n", styles: ["x-image{display:inline-block}.x-image{margin:0;padding:0}.x-image{position:relative;display:inline-block}.x-image-img{max-width:100%;max-height:100%;vertical-align:middle}.x-image-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:#00000080;cursor:pointer;opacity:0;transition:opacity var(--x-animation-duration-base)}.x-image-overlay:hover{opacity:1}.x-image-text>span{margin-left:.25rem}.x-image-error{display:none}.x-image-error-icon{font-size:2rem}\n"] }]
417
+ args: [{ selector: `${XImagePrefix}`, imports: [XIconComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-image\">\r\n <img\r\n [hidden]=\"(placeholder() && !isLoaded()) || isError()\"\r\n class=\"x-image-img\"\r\n [src]=\"src()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [attr.alt]=\"alt()\"\r\n (error)=\"onError($event)\"\r\n (load)=\"onLoad($event)\"\r\n />\r\n @if (placeholder() && !isLoaded()) {\r\n <img class=\"x-image-img\" [src]=\"placeholder()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && fallback()) {\r\n <img class=\"x-image-img x-image-fallback\" [src]=\"fallback()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && !fallback()) {\r\n <div class=\"x-image-error-icon\" [style.width]=\"width()\" [style.height]=\"height()\">\r\n <x-icon type=\"fto-image\"></x-icon>\r\n </div>\r\n }\r\n <ng-container *xOutlet=\"previewTpl(); context: { $image: this }\">\r\n @if (!isError()) {\r\n <div class=\"x-image-overlay\" (click)=\"onPreview()\">\r\n <div class=\"x-image-text\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n <span>{{ previewTextSignal() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n</div>\r\n", styles: ["x-image{display:inline-block}.x-image{margin:0;padding:0}.x-image{position:relative;display:inline-block}.x-image-img{max-width:100%;max-height:100%;vertical-align:middle}.x-image-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:#00000080;cursor:pointer;opacity:0;transition:opacity var(--x-animation-duration-base)}.x-image-overlay:hover{opacity:1}.x-image-text>span{margin-left:.25rem}.x-image-error{display:none}.x-image-error-icon{font-size:2rem}\n"] }]
418
418
  }], ctorParameters: () => [] });
419
419
 
420
420
  class XImageModule {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-image.mjs","sources":["../../../../lib/ng-nest/ui/image/image.property.ts","../../../../lib/ng-nest/ui/image/image-preview.component.ts","../../../../lib/ng-nest/ui/image/image-preview.component.html","../../../../lib/ng-nest/ui/image/image-group.component.ts","../../../../lib/ng-nest/ui/image/image-group.component.html","../../../../lib/ng-nest/ui/image/image.component.ts","../../../../lib/ng-nest/ui/image/image.component.html","../../../../lib/ng-nest/ui/image/image.module.ts","../../../../lib/ng-nest/ui/image/ng-nest-ui-image.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\r\nimport { XProperty, XPropertyFunction, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport type { XNumber, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Image\r\n * @selector x-image\r\n * @decorator component\r\n */\r\nexport const XImagePrefix = 'x-image';\r\nconst X_IMAGE_CONFIG_NAME = 'image';\r\n\r\n/**\r\n * Image Property\r\n */\r\n@Component({ selector: `${XImagePrefix}-property`, template: '' })\r\nexport class XImageProperty extends XPropertyFunction(X_IMAGE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 图片显示地址\r\n * @en_US Picture display address\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly src = input<string>();\r\n /**\r\n * @zh_CN 图片宽度\r\n * @en_US Picture width\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly width = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 图片高度\r\n * @en_US Picture height\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly height = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 图像描述\r\n * @en_US Image description\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * alt=\"ng-nest-admin-light\"\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly alt = input<string>();\r\n /**\r\n * @zh_CN 加载失败显示的地址\r\n * @en_US Load fault tolerance address\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"error\"\r\n * fallback=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg==\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly fallback = input<string>();\r\n /**\r\n * @zh_CN 预览文字\r\n * @en_US Preview text\r\n * @default '预览'\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * previewText=\"查看\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly previewText = input<string>(this.config?.previewText!);\r\n /**\r\n * @zh_CN 渐进加载显示的图片地址\r\n * @en_US Progressive loading image addresses\r\n */\r\n readonly placeholder = input<string>();\r\n /**\r\n * @zh_CN 自定义预览操作\r\n * @en_US Custom preview operation\r\n */\r\n readonly previewTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 图片加载错误\r\n * @en_US Picture load failed\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"error\"\r\n * (error)=\"onError($event)\"\r\n * ></x-image>\r\n * ```\r\n *\r\n * ```typescript\r\n * onError(event: ErrorEvent) {\r\n * console.log(event)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly error = output<ErrorEvent>();\r\n /**\r\n * @zh_CN 图片加载完成\r\n * @en_US Picture loading complete\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * (load)=\"onLoad($event)\"\r\n * ></x-image>\r\n * ```\r\n *\r\n * ```typescript\r\n * onLoad(event: Event) {\r\n * console.log(event)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly load = output<Event>();\r\n}\r\n\r\n/**\r\n * @zh_CN 图片节点数据\r\n * @en_US Image node data\r\n */\r\nexport interface XImageNode {\r\n /**\r\n * @zh_CN 图片显示地址\r\n * @en_US Picture display address\r\n */\r\n src?: string;\r\n /**\r\n * @zh_CN 图像描述\r\n * @en_US Image description\r\n */\r\n alt?: string;\r\n /**\r\n * @zh_CN 加载失败显示的地址\r\n * @en_US Load fault tolerance address\r\n */\r\n fallback?: string;\r\n /**\r\n * @zh_CN 当前激活的图片\r\n * @en_US Current activated pictures\r\n */\r\n activated?: boolean;\r\n}\r\n\r\n/**\r\n * Image Preview\r\n * @selector x-image-preview\r\n * @decorator component\r\n */\r\nexport const XImagePreviewPrefix = 'x-image-preview';\r\n\r\n/**\r\n * Image Preview Property\r\n */\r\n@Component({ selector: `${XImagePreviewPrefix}-property`, template: '' })\r\nexport class XImagePreviewProperty extends XProperty {}\r\n\r\n/**\r\n * Image Group\r\n * @selector x-image-group\r\n * @decorator component\r\n */\r\nexport const XImageGroupPrefix = 'x-image-group';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n OnInit,\r\n signal,\r\n computed,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XImageNode, XImagePreviewPrefix, XImagePreviewProperty } from './image.property';\r\nimport { XDialogCloseDirective, X_DIALOG_DATA } from '@ng-nest/ui/dialog';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n selector: `${XImagePreviewPrefix}`,\r\n imports: [XIconComponent, DragDropModule, XDialogCloseDirective],\r\n templateUrl: './image-preview.component.html',\r\n styleUrls: ['./image-preview.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImagePreviewComponent extends XImagePreviewProperty implements OnInit {\r\n imgScale3d = signal({\r\n x: 1,\r\n y: 1,\r\n z: 1\r\n });\r\n rotate = signal(0);\r\n\r\n position = signal({\r\n x: 0,\r\n y: 0\r\n });\r\n\r\n activated = signal<XImageNode | undefined>(undefined);\r\n total = signal(1);\r\n current = signal(1);\r\n\r\n private document = inject(DOCUMENT);\r\n\r\n wrapperTransform = computed(() => {\r\n return `translate3d(${this.position().x}px, ${this.position().y}px, 0)`;\r\n });\r\n imgTransform = computed(() => {\r\n return `scale3d(${this.imgScale3d().x}, ${this.imgScale3d().y}, ${this.imgScale3d().z}) rotate(${this.rotate()}deg)`;\r\n });\r\n\r\n imageRef = viewChild.required<ElementRef<HTMLImageElement>>('imageRef');\r\n\r\n data = inject<XImageNode[]>(X_DIALOG_DATA);\r\n\r\n ngOnInit() {\r\n this.setActivated();\r\n }\r\n\r\n initialization() {\r\n this.imgScale3d.set({\r\n x: 1,\r\n y: 1,\r\n z: 1\r\n });\r\n this.rotate.set(0);\r\n this.position.set({\r\n x: 0,\r\n y: 0\r\n });\r\n }\r\n\r\n setActivated() {\r\n if (!this.data) return;\r\n if (this.data.length === 1) {\r\n this.activated.set(this.data[0]);\r\n this.total.set(1);\r\n this.current.set(1);\r\n } else {\r\n this.total.set(this.data.length);\r\n this.activated.set(\r\n this.data.find((x, index) => {\r\n if (x.activated) {\r\n this.current.set(index + 1);\r\n return true;\r\n }\r\n return false;\r\n })\r\n );\r\n }\r\n }\r\n\r\n onCurrentChange(num: number) {\r\n this.current.update((x) => x + num);\r\n this.activated.set(this.data[this.current() - 1]);\r\n this.initialization();\r\n }\r\n\r\n onRotate(deg: number) {\r\n this.rotate.update((x) => x + deg);\r\n }\r\n\r\n onScale(zoom: number) {\r\n this.imgScale3d.update((item) => {\r\n item.x += zoom;\r\n item.y += zoom;\r\n return { ...item };\r\n });\r\n }\r\n\r\n onDragReleased() {\r\n let width = this.imageRef().nativeElement.offsetWidth * this.imgScale3d().x;\r\n let height = this.imageRef().nativeElement.offsetHeight * this.imgScale3d().x;\r\n const clientWidth = this.document.documentElement.clientWidth;\r\n const clientHeight = this.document.defaultView?.innerHeight || this.document.documentElement.clientHeight;\r\n const isRotate = this.rotate() % 180 !== 0;\r\n const box = this.imageRef().nativeElement.getBoundingClientRect();\r\n const docElem = this.document.documentElement;\r\n const left =\r\n box.left +\r\n (this.document.defaultView?.pageXOffset || docElem.scrollLeft) -\r\n (docElem.clientLeft || this.document.body.clientLeft || 0);\r\n const top =\r\n box.top +\r\n (this.document.defaultView?.pageYOffset || docElem.scrollTop) -\r\n (docElem.clientTop || this.document.body.clientTop || 0);\r\n width = isRotate ? height : width;\r\n height = isRotate ? width : height;\r\n\r\n let position = { x: 0, y: 0 };\r\n if (width > clientWidth || height > clientHeight) {\r\n const x = this.fitPoint(left, width, clientWidth);\r\n const y = this.fitPoint(top, height, clientHeight);\r\n position.x = x ? x : 0;\r\n position.y = y ? y : 0;\r\n }\r\n\r\n this.position.update((x) => ({ ...x, ...position }));\r\n }\r\n\r\n fitPoint(start: number, size: number, clientSize: number): number | null {\r\n const startAddSize = start + size;\r\n const offsetStart = (size - clientSize) / 2;\r\n let distance: number | null = null;\r\n\r\n if (size > clientSize) {\r\n if (start > 0) {\r\n distance = offsetStart;\r\n }\r\n if (start < 0 && startAddSize < clientSize) {\r\n distance = -offsetStart;\r\n }\r\n } else {\r\n if (start < 0 || startAddSize > clientSize) {\r\n distance = start < 0 ? offsetStart : -offsetStart;\r\n }\r\n }\r\n\r\n return distance;\r\n }\r\n}\r\n","<div class=\"x-image-preview\">\r\n <div class=\"x-image-preview-header\">\r\n <div class=\"x-image-preview-header-left\">\r\n @if (total() != 1) {\r\n <span class=\"x-image-preview-current\">{{ current() }} / {{ total() }}</span>\r\n }\r\n </div>\r\n <div class=\"x-image-preview-header-center\">\r\n <x-icon type=\"fto-corner-up-left\" (click)=\"onRotate(-90)\"></x-icon>\r\n <x-icon type=\"fto-corner-up-right\" (click)=\"onRotate(90)\"></x-icon>\r\n <x-icon\r\n type=\"fto-zoom-out\"\r\n [class.x-image-preview-disabled]=\"imgScale3d().x === 1\"\r\n (click)=\"imgScale3d().x > 1 && onScale(-1)\"\r\n ></x-icon>\r\n <x-icon type=\"fto-zoom-in\" (click)=\"onScale(1)\"></x-icon>\r\n </div>\r\n <div class=\"x-image-preview-header-right\">\r\n <x-icon type=\"fto-x\" x-dialog-close></x-icon>\r\n </div>\r\n </div>\r\n <div\r\n class=\"x-image-preview-wrapper\"\r\n cdkDrag\r\n [style.transform]=\"wrapperTransform()\"\r\n [cdkDragFreeDragPosition]=\"position()\"\r\n (cdkDragReleased)=\"onDragReleased()\"\r\n >\r\n <img\r\n #imageRef\r\n [src]=\"activated()?.src!\"\r\n [attr.alt]=\"activated()?.alt!\"\r\n cdkDragHandle\r\n [style.transform]=\"imgTransform()\"\r\n />\r\n </div>\r\n @if (data && data.length > 1) {\r\n <div\r\n [class.x-image-preview-disabled]=\"current() === 1\"\r\n class=\"x-image-preview-left\"\r\n (click)=\"current() > 1 && onCurrentChange(-1)\"\r\n >\r\n <x-icon type=\"fto-chevron-left\"></x-icon>\r\n </div>\r\n <div\r\n [class.x-image-preview-disabled]=\"current() === total()\"\r\n class=\"x-image-preview-right\"\r\n (click)=\"current() != total() && onCurrentChange(1)\"\r\n >\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, signal } from '@angular/core';\r\nimport { XImageComponent } from './image.component';\r\nimport { XImageGroupPrefix } from './image.property';\r\n\r\n@Component({\r\n selector: `${XImageGroupPrefix}`,\r\n templateUrl: './image-group.component.html',\r\n styleUrls: ['./image-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImageGroupComponent {\r\n images = signal<XImageComponent[]>([]);\r\n\r\n addImage(image: XImageComponent): void {\r\n this.images.update((x) => {\r\n x.push(image);\r\n return [...x];\r\n });\r\n }\r\n\r\n removeImage(image: XImageComponent): void {\r\n this.images.update((x) => {\r\n x.splice(x.indexOf(image), 1);\r\n return [...x];\r\n });\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n inject,\r\n computed,\r\n signal,\r\n OnDestroy,\r\n effect\r\n} from '@angular/core';\r\nimport { XImageNode, XImagePrefix, XImageProperty } from './image.property';\r\nimport { XConfigService } from '@ng-nest/ui/core';\r\nimport { XDialogService } from '@ng-nest/ui/dialog';\r\nimport { XImagePreviewComponent } from './image-preview.component';\r\nimport { XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { map } from 'rxjs';\r\nimport { XImageGroupComponent } from './image-group.component';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XImagePrefix}`,\r\n imports: [XIconComponent, XOutletDirective],\r\n templateUrl: './image.component.html',\r\n styleUrls: ['./image.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImageComponent extends XImageProperty implements OnInit, OnDestroy {\r\n private dialog = inject(XDialogService);\r\n private i18n = inject(XI18nService);\r\n private group = inject(XImageGroupComponent, { optional: true });\r\n configService = inject(XConfigService);\r\n isError = signal(false);\r\n isLoaded = signal(false);\r\n\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.image!)), { initialValue: zh_CN.image });\r\n\r\n previewTextSignal = computed(() => {\r\n return this.previewText() || this.locale().previewText;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.src();\r\n this.isLoaded.set(false);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.group && this.group.addImage(this);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.group && this.group.removeImage(this);\r\n }\r\n\r\n onPreview() {\r\n let data: XImageNode[] = [];\r\n if (this.group) {\r\n const activatedIndex = this.group.images().indexOf(this);\r\n data = this.group.images().map((x, index) => ({\r\n src: x.src(),\r\n alt: x.alt(),\r\n fallback: x.fallback(),\r\n activated: index === activatedIndex\r\n }));\r\n } else {\r\n data = [{ src: this.src(), alt: this.alt(), fallback: this.fallback() }];\r\n }\r\n this.dialog.create(XImagePreviewComponent, {\r\n width: '100%',\r\n height: '100%',\r\n className: 'x-image-preview-portal',\r\n data\r\n });\r\n }\r\n\r\n onError(event: ErrorEvent) {\r\n this.isError.set(true);\r\n this.error.emit(event);\r\n }\r\n\r\n onLoad(event: Event) {\r\n this.isLoaded.set(true);\r\n this.isError.set(false);\r\n this.load.emit(event);\r\n }\r\n}\r\n","<div class=\"x-image\">\r\n <img\r\n [hidden]=\"(placeholder() && !isLoaded()) || isError()\"\r\n class=\"x-image-img\"\r\n [src]=\"src()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [attr.alt]=\"alt()\"\r\n (error)=\"onError($event)\"\r\n (load)=\"onLoad($event)\"\r\n />\r\n @if (placeholder() && !isLoaded()) {\r\n <img class=\"x-image-img\" [src]=\"placeholder()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && fallback()) {\r\n <img class=\"x-image-img\" [src]=\"fallback()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && !fallback()) {\r\n <div class=\"x-image-error-icon\" [style.width]=\"width()\" [style.height]=\"height()\">\r\n <x-icon type=\"fto-image\"></x-icon>\r\n </div>\r\n }\r\n <ng-container *xOutlet=\"previewTpl(); context: { $image: this }\">\r\n @if (!isError()) {\r\n <div class=\"x-image-overlay\" (click)=\"onPreview()\">\r\n <div class=\"x-image-text\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n <span>{{ previewTextSignal() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XImageComponent } from './image.component';\r\nimport { XImagePreviewComponent } from './image-preview.component';\r\nimport { XImageGroupComponent } from './image-group.component';\r\n\r\n@NgModule({\r\n exports: [XImageComponent, XImagePreviewComponent, XImageGroupComponent],\r\n imports: [XImageComponent, XImagePreviewComponent, XImageGroupComponent]\r\n})\r\nexport class XImageModule {}\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-image.mjs","sources":["../../../../lib/ng-nest/ui/image/image.property.ts","../../../../lib/ng-nest/ui/image/image-preview.component.ts","../../../../lib/ng-nest/ui/image/image-preview.component.html","../../../../lib/ng-nest/ui/image/image-group.component.ts","../../../../lib/ng-nest/ui/image/image-group.component.html","../../../../lib/ng-nest/ui/image/image.component.ts","../../../../lib/ng-nest/ui/image/image.component.html","../../../../lib/ng-nest/ui/image/image.module.ts","../../../../lib/ng-nest/ui/image/ng-nest-ui-image.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\r\nimport { XProperty, XPropertyFunction, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport type { XNumber, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Image\r\n * @selector x-image\r\n * @decorator component\r\n */\r\nexport const XImagePrefix = 'x-image';\r\nconst X_IMAGE_CONFIG_NAME = 'image';\r\n\r\n/**\r\n * Image Property\r\n */\r\n@Component({ selector: `${XImagePrefix}-property`, template: '' })\r\nexport class XImageProperty extends XPropertyFunction(X_IMAGE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 图片显示地址\r\n * @en_US Picture display address\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly src = input<string>();\r\n /**\r\n * @zh_CN 图片宽度\r\n * @en_US Picture width\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly width = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 图片高度\r\n * @en_US Picture height\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly height = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 图像描述\r\n * @en_US Image description\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * alt=\"ng-nest-admin-light\"\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly alt = input<string>();\r\n /**\r\n * @zh_CN 加载失败显示的地址\r\n * @en_US Load fault tolerance address\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"error\"\r\n * fallback=\"data:image/png;base64,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\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly fallback = input<string>();\r\n /**\r\n * @zh_CN 预览文字\r\n * @en_US Preview text\r\n * @default '预览'\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * previewText=\"查看\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly previewText = input<string>(this.config?.previewText!);\r\n /**\r\n * @zh_CN 渐进加载显示的图片地址\r\n * @en_US Progressive loading image addresses\r\n */\r\n readonly placeholder = input<string>();\r\n /**\r\n * @zh_CN 自定义预览操作\r\n * @en_US Custom preview operation\r\n */\r\n readonly previewTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 图片加载错误\r\n * @en_US Picture load failed\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"error\"\r\n * (error)=\"onError($event)\"\r\n * ></x-image>\r\n * ```\r\n *\r\n * ```typescript\r\n * onError(event: ErrorEvent) {\r\n * console.log(event)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly error = output<ErrorEvent>();\r\n /**\r\n * @zh_CN 图片加载完成\r\n * @en_US Picture loading complete\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * (load)=\"onLoad($event)\"\r\n * ></x-image>\r\n * ```\r\n *\r\n * ```typescript\r\n * onLoad(event: Event) {\r\n * console.log(event)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly load = output<Event>();\r\n}\r\n\r\n/**\r\n * @zh_CN 图片节点数据\r\n * @en_US Image node data\r\n */\r\nexport interface XImageNode {\r\n /**\r\n * @zh_CN 图片显示地址\r\n * @en_US Picture display address\r\n */\r\n src?: string;\r\n /**\r\n * @zh_CN 图像描述\r\n * @en_US Image description\r\n */\r\n alt?: string;\r\n /**\r\n * @zh_CN 加载失败显示的地址\r\n * @en_US Load fault tolerance address\r\n */\r\n fallback?: string;\r\n /**\r\n * @zh_CN 当前激活的图片\r\n * @en_US Current activated pictures\r\n */\r\n activated?: boolean;\r\n}\r\n\r\n/**\r\n * Image Preview\r\n * @selector x-image-preview\r\n * @decorator component\r\n */\r\nexport const XImagePreviewPrefix = 'x-image-preview';\r\n\r\n/**\r\n * Image Preview Property\r\n */\r\n@Component({ selector: `${XImagePreviewPrefix}-property`, template: '' })\r\nexport class XImagePreviewProperty extends XProperty {}\r\n\r\n/**\r\n * Image Group\r\n * @selector x-image-group\r\n * @decorator component\r\n */\r\nexport const XImageGroupPrefix = 'x-image-group';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n OnInit,\r\n signal,\r\n computed,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XImageNode, XImagePreviewPrefix, XImagePreviewProperty } from './image.property';\r\nimport { XDialogCloseDirective, X_DIALOG_DATA } from '@ng-nest/ui/dialog';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n selector: `${XImagePreviewPrefix}`,\r\n imports: [XIconComponent, DragDropModule, XDialogCloseDirective],\r\n templateUrl: './image-preview.component.html',\r\n styleUrls: ['./image-preview.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImagePreviewComponent extends XImagePreviewProperty implements OnInit {\r\n imgScale3d = signal({\r\n x: 1,\r\n y: 1,\r\n z: 1\r\n });\r\n rotate = signal(0);\r\n\r\n position = signal({\r\n x: 0,\r\n y: 0\r\n });\r\n\r\n activated = signal<XImageNode | undefined>(undefined);\r\n total = signal(1);\r\n current = signal(1);\r\n\r\n private document = inject(DOCUMENT);\r\n\r\n wrapperTransform = computed(() => {\r\n return `translate3d(${this.position().x}px, ${this.position().y}px, 0)`;\r\n });\r\n imgTransform = computed(() => {\r\n return `scale3d(${this.imgScale3d().x}, ${this.imgScale3d().y}, ${this.imgScale3d().z}) rotate(${this.rotate()}deg)`;\r\n });\r\n\r\n imageRef = viewChild.required<ElementRef<HTMLImageElement>>('imageRef');\r\n\r\n data = inject<XImageNode[]>(X_DIALOG_DATA);\r\n\r\n ngOnInit() {\r\n this.setActivated();\r\n }\r\n\r\n initialization() {\r\n this.imgScale3d.set({\r\n x: 1,\r\n y: 1,\r\n z: 1\r\n });\r\n this.rotate.set(0);\r\n this.position.set({\r\n x: 0,\r\n y: 0\r\n });\r\n }\r\n\r\n setActivated() {\r\n if (!this.data) return;\r\n if (this.data.length === 1) {\r\n this.activated.set(this.data[0]);\r\n this.total.set(1);\r\n this.current.set(1);\r\n } else {\r\n this.total.set(this.data.length);\r\n this.activated.set(\r\n this.data.find((x, index) => {\r\n if (x.activated) {\r\n this.current.set(index + 1);\r\n return true;\r\n }\r\n return false;\r\n })\r\n );\r\n }\r\n }\r\n\r\n onCurrentChange(num: number) {\r\n this.current.update((x) => x + num);\r\n this.activated.set(this.data[this.current() - 1]);\r\n this.initialization();\r\n }\r\n\r\n onRotate(deg: number) {\r\n this.rotate.update((x) => x + deg);\r\n }\r\n\r\n onScale(zoom: number) {\r\n this.imgScale3d.update((item) => {\r\n item.x += zoom;\r\n item.y += zoom;\r\n return { ...item };\r\n });\r\n }\r\n\r\n onDragReleased() {\r\n let width = this.imageRef().nativeElement.offsetWidth * this.imgScale3d().x;\r\n let height = this.imageRef().nativeElement.offsetHeight * this.imgScale3d().x;\r\n const clientWidth = this.document.documentElement.clientWidth;\r\n const clientHeight = this.document.defaultView?.innerHeight || this.document.documentElement.clientHeight;\r\n const isRotate = this.rotate() % 180 !== 0;\r\n const box = this.imageRef().nativeElement.getBoundingClientRect();\r\n const docElem = this.document.documentElement;\r\n const left =\r\n box.left +\r\n (this.document.defaultView?.pageXOffset || docElem.scrollLeft) -\r\n (docElem.clientLeft || this.document.body.clientLeft || 0);\r\n const top =\r\n box.top +\r\n (this.document.defaultView?.pageYOffset || docElem.scrollTop) -\r\n (docElem.clientTop || this.document.body.clientTop || 0);\r\n width = isRotate ? height : width;\r\n height = isRotate ? width : height;\r\n\r\n let position = { x: 0, y: 0 };\r\n if (width > clientWidth || height > clientHeight) {\r\n const x = this.fitPoint(left, width, clientWidth);\r\n const y = this.fitPoint(top, height, clientHeight);\r\n position.x = x ? x : 0;\r\n position.y = y ? y : 0;\r\n }\r\n\r\n this.position.update((x) => ({ ...x, ...position }));\r\n }\r\n\r\n fitPoint(start: number, size: number, clientSize: number): number | null {\r\n const startAddSize = start + size;\r\n const offsetStart = (size - clientSize) / 2;\r\n let distance: number | null = null;\r\n\r\n if (size > clientSize) {\r\n if (start > 0) {\r\n distance = offsetStart;\r\n }\r\n if (start < 0 && startAddSize < clientSize) {\r\n distance = -offsetStart;\r\n }\r\n } else {\r\n if (start < 0 || startAddSize > clientSize) {\r\n distance = start < 0 ? offsetStart : -offsetStart;\r\n }\r\n }\r\n\r\n return distance;\r\n }\r\n}\r\n","<div class=\"x-image-preview\">\r\n <div class=\"x-image-preview-header\">\r\n <div class=\"x-image-preview-header-left\">\r\n @if (total() != 1) {\r\n <span class=\"x-image-preview-current\">{{ current() }} / {{ total() }}</span>\r\n }\r\n </div>\r\n <div class=\"x-image-preview-header-center\">\r\n <x-icon type=\"fto-corner-up-left\" (click)=\"onRotate(-90)\"></x-icon>\r\n <x-icon type=\"fto-corner-up-right\" (click)=\"onRotate(90)\"></x-icon>\r\n <x-icon\r\n type=\"fto-zoom-out\"\r\n [class.x-image-preview-disabled]=\"imgScale3d().x === 1\"\r\n (click)=\"imgScale3d().x > 1 && onScale(-1)\"\r\n ></x-icon>\r\n <x-icon type=\"fto-zoom-in\" (click)=\"onScale(1)\"></x-icon>\r\n </div>\r\n <div class=\"x-image-preview-header-right\">\r\n <x-icon type=\"fto-x\" x-dialog-close></x-icon>\r\n </div>\r\n </div>\r\n <div\r\n class=\"x-image-preview-wrapper\"\r\n cdkDrag\r\n [style.transform]=\"wrapperTransform()\"\r\n [cdkDragFreeDragPosition]=\"position()\"\r\n (cdkDragReleased)=\"onDragReleased()\"\r\n >\r\n <img\r\n #imageRef\r\n [src]=\"activated()?.src!\"\r\n [attr.alt]=\"activated()?.alt!\"\r\n cdkDragHandle\r\n [style.transform]=\"imgTransform()\"\r\n />\r\n </div>\r\n @if (data && data.length > 1) {\r\n <div\r\n [class.x-image-preview-disabled]=\"current() === 1\"\r\n class=\"x-image-preview-left\"\r\n (click)=\"current() > 1 && onCurrentChange(-1)\"\r\n >\r\n <x-icon type=\"fto-chevron-left\"></x-icon>\r\n </div>\r\n <div\r\n [class.x-image-preview-disabled]=\"current() === total()\"\r\n class=\"x-image-preview-right\"\r\n (click)=\"current() != total() && onCurrentChange(1)\"\r\n >\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, signal } from '@angular/core';\r\nimport { XImageComponent } from './image.component';\r\nimport { XImageGroupPrefix } from './image.property';\r\n\r\n@Component({\r\n selector: `${XImageGroupPrefix}`,\r\n templateUrl: './image-group.component.html',\r\n styleUrls: ['./image-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImageGroupComponent {\r\n images = signal<XImageComponent[]>([]);\r\n\r\n addImage(image: XImageComponent): void {\r\n this.images.update((x) => {\r\n x.push(image);\r\n return [...x];\r\n });\r\n }\r\n\r\n removeImage(image: XImageComponent): void {\r\n this.images.update((x) => {\r\n x.splice(x.indexOf(image), 1);\r\n return [...x];\r\n });\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n inject,\r\n computed,\r\n signal,\r\n OnDestroy,\r\n effect\r\n} from '@angular/core';\r\nimport { XImageNode, XImagePrefix, XImageProperty } from './image.property';\r\nimport { XConfigService } from '@ng-nest/ui/core';\r\nimport { XDialogService } from '@ng-nest/ui/dialog';\r\nimport { XImagePreviewComponent } from './image-preview.component';\r\nimport { XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { map } from 'rxjs';\r\nimport { XImageGroupComponent } from './image-group.component';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XImagePrefix}`,\r\n imports: [XIconComponent, XOutletDirective],\r\n templateUrl: './image.component.html',\r\n styleUrls: ['./image.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImageComponent extends XImageProperty implements OnInit, OnDestroy {\r\n private dialog = inject(XDialogService);\r\n private i18n = inject(XI18nService);\r\n private group = inject(XImageGroupComponent, { optional: true });\r\n configService = inject(XConfigService);\r\n isError = signal(false);\r\n isLoaded = signal(false);\r\n\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.image!)), { initialValue: zh_CN.image });\r\n\r\n previewTextSignal = computed(() => {\r\n return this.previewText() || this.locale().previewText;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.src();\r\n this.isLoaded.set(false);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.group && this.group.addImage(this);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.group && this.group.removeImage(this);\r\n }\r\n\r\n onPreview() {\r\n let data: XImageNode[] = [];\r\n if (this.group) {\r\n const activatedIndex = this.group.images().indexOf(this);\r\n data = this.group.images().map((x, index) => ({\r\n src: x.src(),\r\n alt: x.alt(),\r\n fallback: x.fallback(),\r\n activated: index === activatedIndex\r\n }));\r\n } else {\r\n data = [{ src: this.src(), alt: this.alt(), fallback: this.fallback() }];\r\n }\r\n this.dialog.create(XImagePreviewComponent, {\r\n width: '100%',\r\n height: '100%',\r\n className: 'x-image-preview-portal',\r\n data\r\n });\r\n }\r\n\r\n onError(event: ErrorEvent) {\r\n this.isError.set(true);\r\n this.error.emit(event);\r\n }\r\n\r\n onLoad(event: Event) {\r\n this.isLoaded.set(true);\r\n this.isError.set(false);\r\n this.load.emit(event);\r\n }\r\n}\r\n","<div class=\"x-image\">\r\n <img\r\n [hidden]=\"(placeholder() && !isLoaded()) || isError()\"\r\n class=\"x-image-img\"\r\n [src]=\"src()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [attr.alt]=\"alt()\"\r\n (error)=\"onError($event)\"\r\n (load)=\"onLoad($event)\"\r\n />\r\n @if (placeholder() && !isLoaded()) {\r\n <img class=\"x-image-img\" [src]=\"placeholder()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && fallback()) {\r\n <img class=\"x-image-img x-image-fallback\" [src]=\"fallback()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && !fallback()) {\r\n <div class=\"x-image-error-icon\" [style.width]=\"width()\" [style.height]=\"height()\">\r\n <x-icon type=\"fto-image\"></x-icon>\r\n </div>\r\n }\r\n <ng-container *xOutlet=\"previewTpl(); context: { $image: this }\">\r\n @if (!isError()) {\r\n <div class=\"x-image-overlay\" (click)=\"onPreview()\">\r\n <div class=\"x-image-text\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n <span>{{ previewTextSignal() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XImageComponent } from './image.component';\r\nimport { XImagePreviewComponent } from './image-preview.component';\r\nimport { XImageGroupComponent } from './image-group.component';\r\n\r\n@NgModule({\r\n exports: [XImageComponent, XImagePreviewComponent, XImageGroupComponent],\r\n imports: [XImageComponent, XImagePreviewComponent, XImageGroupComponent]\r\n})\r\nexport class XImageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -404,12 +404,12 @@ class XSelectComponent extends XSelectProperty {
404
404
  this.multipleInputSizeChange = new Subject();
405
405
  this.unSubject = new Subject();
406
406
  this.valueTplComputed = computed(() => {
407
- if (this.nodeTpl()) {
408
- return this.nodeTpl();
409
- }
410
407
  if (this.valueTpl()) {
411
408
  return this.valueTpl();
412
409
  }
410
+ if (this.nodeTpl()) {
411
+ return this.nodeTpl();
412
+ }
413
413
  if (this.multiple()) {
414
414
  return this.multipleValueTpl();
415
415
  }
@@ -555,6 +555,7 @@ class XSelectComponent extends XSelectProperty {
555
555
  }
556
556
  const height = scrollHeight + (lines > 1 ? marginTop : 0);
557
557
  this.renderer.setStyle(this.inputCom().inputRef().nativeElement, 'height', `${height}px`);
558
+ console.log(height);
558
559
  if (this.multipleInput()) {
559
560
  this.multipleInputSizeChange.next(clientWidth - lastRowTagsWidth - marginLeft);
560
561
  }
@@ -809,9 +810,6 @@ class XSelectComponent extends XSelectProperty {
809
810
  }
810
811
  return false;
811
812
  }
812
- destroyPortal() {
813
- this.portal?.overlayRef?.dispose();
814
- }
815
813
  showPortal(click = false) {
816
814
  if (this.disabledComputed() || !this.allowAgian() || this.iconSpin() || this.animating())
817
815
  return;