@ng-nest/ui 21.0.3 → 21.0.4

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 (173) hide show
  1. package/fesm2022/ng-nest-ui-affix.mjs +12 -12
  2. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  3. package/fesm2022/ng-nest-ui-alert.mjs +22 -24
  4. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  5. package/fesm2022/ng-nest-ui-anchor.mjs +19 -19
  6. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  7. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  8. package/fesm2022/ng-nest-ui-attachments.mjs +22 -22
  9. package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
  10. package/fesm2022/ng-nest-ui-auto-complete.mjs +26 -30
  11. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  12. package/fesm2022/ng-nest-ui-avatar.mjs +17 -17
  13. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  14. package/fesm2022/ng-nest-ui-back-top.mjs +13 -13
  15. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  16. package/fesm2022/ng-nest-ui-badge.mjs +16 -16
  17. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  18. package/fesm2022/ng-nest-ui-base-form.mjs +13 -13
  19. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  20. package/fesm2022/ng-nest-ui-bubble.mjs +20 -20
  21. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-button.mjs +31 -31
  23. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
  25. package/fesm2022/ng-nest-ui-card.mjs +11 -11
  26. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  27. package/fesm2022/ng-nest-ui-carousel.mjs +24 -24
  28. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  29. package/fesm2022/ng-nest-ui-cascade.mjs +25 -29
  30. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  31. package/fesm2022/ng-nest-ui-checkbox.mjs +22 -22
  32. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  33. package/fesm2022/ng-nest-ui-collapse.mjs +22 -22
  34. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  35. package/fesm2022/ng-nest-ui-color-picker.mjs +25 -25
  36. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  37. package/fesm2022/ng-nest-ui-color.mjs +10 -10
  38. package/fesm2022/ng-nest-ui-comment.mjs +19 -19
  39. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  40. package/fesm2022/ng-nest-ui-container.mjs +34 -34
  41. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  42. package/fesm2022/ng-nest-ui-core.mjs +18 -18
  43. package/fesm2022/ng-nest-ui-coversations.mjs +11 -11
  44. package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
  45. package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
  46. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  47. package/fesm2022/ng-nest-ui-date-picker.mjs +87 -87
  48. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  49. package/fesm2022/ng-nest-ui-description.mjs +20 -20
  50. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  51. package/fesm2022/ng-nest-ui-dialog.mjs +58 -58
  52. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  53. package/fesm2022/ng-nest-ui-doc.mjs +7 -7
  54. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  55. package/fesm2022/ng-nest-ui-drawer.mjs +34 -34
  56. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  57. package/fesm2022/ng-nest-ui-dropdown.mjs +21 -21
  58. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  59. package/fesm2022/ng-nest-ui-empty.mjs +10 -10
  60. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  61. package/fesm2022/ng-nest-ui-find.mjs +31 -35
  62. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  63. package/fesm2022/ng-nest-ui-form.mjs +21 -21
  64. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  65. package/fesm2022/ng-nest-ui-highlight.mjs +14 -14
  66. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  67. package/fesm2022/ng-nest-ui-i18n.mjs +32 -31
  68. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  69. package/fesm2022/ng-nest-ui-icon.mjs +14 -14
  70. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  71. package/fesm2022/ng-nest-ui-image.mjs +21 -21
  72. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  73. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  74. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  75. package/fesm2022/ng-nest-ui-input-number.mjs +21 -21
  76. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  77. package/fesm2022/ng-nest-ui-input.mjs +36 -40
  78. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  79. package/fesm2022/ng-nest-ui-keyword.mjs +11 -11
  80. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  81. package/fesm2022/ng-nest-ui-layout.mjs +25 -25
  82. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  83. package/fesm2022/ng-nest-ui-link.mjs +13 -13
  84. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  85. package/fesm2022/ng-nest-ui-list.mjs +41 -41
  86. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  87. package/fesm2022/ng-nest-ui-loading.mjs +14 -14
  88. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  89. package/fesm2022/ng-nest-ui-menu.mjs +22 -22
  90. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  91. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  92. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  93. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  94. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  95. package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
  96. package/fesm2022/ng-nest-ui-pagination.mjs +27 -31
  97. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  98. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  99. package/fesm2022/ng-nest-ui-popconfirm.mjs +14 -14
  100. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  101. package/fesm2022/ng-nest-ui-popover.mjs +19 -19
  102. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  103. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  104. package/fesm2022/ng-nest-ui-progress.mjs +22 -22
  105. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  106. package/fesm2022/ng-nest-ui-prompts.mjs +12 -12
  107. package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -1
  108. package/fesm2022/ng-nest-ui-radio.mjs +20 -20
  109. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  110. package/fesm2022/ng-nest-ui-rate.mjs +15 -15
  111. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  112. package/fesm2022/ng-nest-ui-resizable.mjs +14 -14
  113. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  114. package/fesm2022/ng-nest-ui-result.mjs +10 -10
  115. package/fesm2022/ng-nest-ui-ripple.mjs +12 -12
  116. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  117. package/fesm2022/ng-nest-ui-scrollable.mjs +19 -7
  118. package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
  119. package/fesm2022/ng-nest-ui-select.mjs +35 -39
  120. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  121. package/fesm2022/ng-nest-ui-sender.mjs +19 -19
  122. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  123. package/fesm2022/ng-nest-ui-skeleton.mjs +13 -13
  124. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  125. package/fesm2022/ng-nest-ui-slider-select.mjs +21 -21
  126. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  127. package/fesm2022/ng-nest-ui-slider.mjs +16 -18
  128. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  129. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  130. package/fesm2022/ng-nest-ui-steps.mjs +14 -14
  131. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  132. package/fesm2022/ng-nest-ui-suggestion.mjs +17 -17
  133. package/fesm2022/ng-nest-ui-suggestion.mjs.map +1 -1
  134. package/fesm2022/ng-nest-ui-switch.mjs +15 -15
  135. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  136. package/fesm2022/ng-nest-ui-table-view.mjs +58 -58
  137. package/fesm2022/ng-nest-ui-table.mjs +90 -112
  138. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  139. package/fesm2022/ng-nest-ui-tabs.mjs +38 -40
  140. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  141. package/fesm2022/ng-nest-ui-tag.mjs +16 -16
  142. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  143. package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
  144. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  145. package/fesm2022/ng-nest-ui-textarea.mjs +19 -19
  146. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  147. package/fesm2022/ng-nest-ui-theme.mjs +12 -12
  148. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  149. package/fesm2022/ng-nest-ui-thought-chain.mjs +12 -12
  150. package/fesm2022/ng-nest-ui-thought-chain.mjs.map +1 -1
  151. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  152. package/fesm2022/ng-nest-ui-time-picker.mjs +28 -28
  153. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  154. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  155. package/fesm2022/ng-nest-ui-timeline.mjs +12 -12
  156. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  157. package/fesm2022/ng-nest-ui-tooltip.mjs +17 -17
  158. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  159. package/fesm2022/ng-nest-ui-transfer.mjs +14 -14
  160. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  161. package/fesm2022/ng-nest-ui-tree-file.mjs +17 -17
  162. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  163. package/fesm2022/ng-nest-ui-tree-select.mjs +36 -42
  164. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  165. package/fesm2022/ng-nest-ui-tree.mjs +44 -46
  166. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  167. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  168. package/fesm2022/ng-nest-ui-upload.mjs +24 -24
  169. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  170. package/fesm2022/ng-nest-ui-welcome.mjs +10 -10
  171. package/package.json +1 -1
  172. package/types/ng-nest-ui-i18n.d.ts +13 -11
  173. package/types/ng-nest-ui-scrollable.d.ts +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-loading.mjs","sources":["../../../../lib/ng-nest/ui/loading/loading.property.ts","../../../../lib/ng-nest/ui/loading/loading.component.ts","../../../../lib/ng-nest/ui/loading/loading.component.html","../../../../lib/ng-nest/ui/loading/loading.module.ts","../../../../lib/ng-nest/ui/loading/ng-nest-ui-loading.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, input, TemplateRef } from '@angular/core';\r\nimport type { XSize, XTemplate, XBoolean, XNumber, XCorner } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Loading\r\n * @selector x-loading\r\n * @decorator component\r\n */\r\nexport const XLoadingPrefix = 'x-loading';\r\nconst X_LOADING_CONFIG_NAME = 'loading';\r\n\r\n/**\r\n * Loading Property\r\n */\r\n@Component({ selector: `${XLoadingPrefix}-property`, template: '' })\r\nexport class XLoadingProperty extends XPropertyFunction(X_LOADING_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 显示 loading\r\n * @en_US Show loading\r\n */\r\n readonly loading = input<boolean, XBoolean>(false, { transform: XToBoolean, alias: 'x-loading' });\r\n /**\r\n * @zh_CN Loading 类型\r\n * @en_US Loading type\r\n */\r\n readonly type = input<XLoadingType>(this.config?.type ?? 'circular');\r\n /**\r\n * @zh_CN 层级\r\n * @en_US z-index\r\n */\r\n readonly zIndex = input<number, XNumber>(this.config?.zIndex ?? 10, { transform: XToNumber });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize | number>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 显示文字,支持自定义模板\r\n * @en_US Display text, support custom template\r\n */\r\n readonly text = input<XTemplate | null>(this.config?.text ?? null);\r\n /**\r\n * @zh_CN 显示的图标\r\n * @en_US Icon displayed\r\n */\r\n readonly icon = input<string | null>(this.config?.icon ?? null);\r\n /**\r\n * @zh_CN 自定义 loading 模板\r\n * @en_US Svg tpl\r\n */\r\n readonly customTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 颜色\r\n * @en_US Color\r\n */\r\n readonly color = input<string | null>(this.config?.color ?? null);\r\n /**\r\n * @zh_CN 全屏显示\r\n * @en_US Full-screen display\r\n */\r\n readonly fullScreen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 圆角覆盖显示\r\n * @en_US Rounded corner coverage display\r\n */\r\n readonly radius = input<XBoolean | XCorner[]>();\r\n /**\r\n * @zh_CN 背景样式\r\n * @en_US Background style\r\n */\r\n readonly background = input<string | null>(this.config?.background ?? null);\r\n /**\r\n * @zh_CN 行内显示\r\n * @en_US Inline display\r\n */\r\n readonly inline = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN Loading 类型\r\n * @en_US Loading type\r\n */\r\nexport type XLoadingType = 'circular' | 'spinner' | 'ripple' | 'dual-ring' | 'dual-ball' | 'bars';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n TemplateRef,\r\n ViewContainerRef,\r\n inject,\r\n computed,\r\n effect,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XLoadingPrefix, XLoadingProperty } from './loading.property';\r\nimport { XIsEmpty, XIsNumber, XCorner, XToNumber } from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XLoadingPrefix}, [${XLoadingPrefix}]`,\r\n imports: [NgClass, NgTemplateOutlet, XIconComponent, XOutletDirective],\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XLoadingComponent extends XLoadingProperty {\r\n @HostBinding('class.x-loading-parent') get getLoading() {\r\n return this.loading();\r\n }\r\n loadingTpl = viewChild.required<TemplateRef<void>>('loadingTpl');\r\n portalRef!: XPortalOverlayRef<any>;\r\n\r\n isRadius = computed(() => !(this.radius() instanceof Array) && Boolean(this.radius()));\r\n\r\n sizeNumber = computed(() => {\r\n const size = XToNumber(this.size());\r\n if (XIsNumber(size)) {\r\n return size;\r\n }\r\n return;\r\n });\r\n\r\n classMap = computed(() => {\r\n const size = this.size();\r\n if (isNaN(XToNumber(size))) {\r\n return { [`${XLoadingPrefix}-${size}`]: !XIsEmpty(size) };\r\n }\r\n return;\r\n });\r\n\r\n private portal = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.fullScreen()) {\r\n if (this.loading()) {\r\n this.createFullScreen();\r\n } else {\r\n this.closeFullScreen();\r\n }\r\n }\r\n });\r\n }\r\n\r\n includeRadius(cover: XCorner) {\r\n const radius = this.radius();\r\n if (!(radius instanceof Array)) {\r\n return false;\r\n }\r\n return radius.includes(cover);\r\n }\r\n\r\n createFullScreen() {\r\n this.portalRef = this.portal.attach({\r\n content: this.loadingTpl(),\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: {\r\n width: '100%',\r\n height: '100%',\r\n positionStrategy: this.portal.setPlacement()\r\n }\r\n });\r\n }\r\n\r\n closeFullScreen() {\r\n if (this.portalRef?.overlayRef?.hasAttached()) {\r\n this.portalRef.overlayRef.detach();\r\n }\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n\r\n@if (!fullScreen()) {\r\n <ng-container *ngTemplateOutlet=\"loadingTpl\"></ng-container>\r\n}\r\n\r\n<ng-template #loadingTpl>\r\n @if (loading()) {\r\n <div\r\n #loading\r\n class=\"x-loading\"\r\n [ngClass]=\"classMap()\"\r\n [style.background]=\"background()\"\r\n [style.zIndex]=\"zIndex()\"\r\n [class.x-loading-radius]=\"isRadius()\"\r\n [class.x-loading-top-left-radius]=\"includeRadius('top-start')\"\r\n [class.x-loading-top-right-radius]=\"includeRadius('top-end')\"\r\n [class.x-loading-bottom-left-radius]=\"includeRadius('bottom-start')\"\r\n [class.x-loading-bottom-left-radius]=\"includeRadius('bottom-end')\"\r\n [class.x-loading-inline]=\"inline()\"\r\n >\r\n <div class=\"x-loading-inner\" [style.color]=\"color()\">\r\n @if (customTpl()) {\r\n <ng-template *ngTemplateOutlet=\"customTpl()!\"></ng-template>\r\n } @else {\r\n @if (icon()) {\r\n <div class=\"x-loading-icon\" [style.font-size.px]=\"sizeNumber()\">\r\n <x-icon [type]=\"icon()!\"></x-icon>\r\n </div>\r\n } @else {\r\n @switch (type()) {\r\n @case ('circular') {\r\n <ng-container *ngTemplateOutlet=\"circularTpl\"></ng-container>\r\n }\r\n @case ('spinner') {\r\n <ng-container *ngTemplateOutlet=\"spinnerTpl\"></ng-container>\r\n }\r\n @case ('ripple') {\r\n <ng-container *ngTemplateOutlet=\"rippleTpl\"></ng-container>\r\n }\r\n @case ('dual-ring') {\r\n <ng-container *ngTemplateOutlet=\"dualRingTpl\"></ng-container>\r\n }\r\n @case ('dual-ball') {\r\n <ng-container *ngTemplateOutlet=\"dualBallTpl\"></ng-container>\r\n }\r\n @case ('bars') {\r\n <ng-container *ngTemplateOutlet=\"barsTpl\"></ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"circularTpl\"></ng-container>\r\n }\r\n }\r\n }\r\n }\r\n\r\n <div class=\"x-loading-text\">\r\n <ng-container *xOutlet=\"text()\">{{ text() }}</ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #circularTpl>\r\n <svg\r\n class=\"x-loading-circular\"\r\n [style.width.px]=\"sizeNumber()\"\r\n [style.height.px]=\"sizeNumber()\"\r\n viewBox=\"25 25 50 50\"\r\n >\r\n <circle class=\"x-loading-path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #spinnerTpl>\r\n <svg class=\"x-loading-spinner\" [style.width.px]=\"sizeNumber()\" [style.height.px]=\"sizeNumber()\" viewBox=\"25 25 50 50\">\r\n <g>\r\n <g transform=\"rotate(0 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.9166666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(30 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.8333333333333334s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(60 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.75s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(90 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.6666666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(120 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.5833333333333334s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(150 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.5s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(180 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.4166666666666667s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(210 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.3333333333333333s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(240 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.25s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(270 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.16666666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(300 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.08333333333333333s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(330 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"0s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g></g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n<ng-template #rippleTpl>\r\n <svg class=\"x-loading-ripple\" [style.width.px]=\"sizeNumber()\" [style.height.px]=\"sizeNumber()\" viewBox=\"0 0 100 100\">\r\n <g>\r\n <circle stroke-width=\"6\" stroke=\"currentColor\" fill=\"none\" r=\"0\" cy=\"50\" cx=\"50\">\r\n <animate\r\n begin=\"0s\"\r\n calcMode=\"spline\"\r\n keySplines=\"0 0.2 0.8 1\"\r\n keyTimes=\"0;1\"\r\n values=\"0;40\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"r\"\r\n ></animate>\r\n <animate\r\n begin=\"0s\"\r\n calcMode=\"spline\"\r\n keySplines=\"0.2 0 0.8 1\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </circle>\r\n <circle stroke-width=\"6\" stroke=\"currentColor\" fill=\"none\" r=\"0\" cy=\"50\" cx=\"50\">\r\n <animate\r\n begin=\"-0.5s\"\r\n calcMode=\"spline\"\r\n keySplines=\"0 0.2 0.8 1\"\r\n keyTimes=\"0;1\"\r\n values=\"0;40\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"r\"\r\n ></animate>\r\n <animate\r\n begin=\"-0.5s\"\r\n calcMode=\"spline\"\r\n keySplines=\"0.2 0 0.8 1\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </circle>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n<ng-template #dualRingTpl>\r\n <svg\r\n class=\"x-loading-dual-ring\"\r\n [style.width.px]=\"sizeNumber()\"\r\n [style.height.px]=\"sizeNumber()\"\r\n viewBox=\"0 0 100 100\"\r\n >\r\n <g>\r\n <circle\r\n stroke-linecap=\"round\"\r\n fill=\"none\"\r\n stroke-dasharray=\"50.26548245743669 50.26548245743669\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"8\"\r\n r=\"32\"\r\n cy=\"50\"\r\n cx=\"50\"\r\n >\r\n <animateTransform\r\n values=\"0 50 50;360 50 50\"\r\n keyTimes=\"0;1\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n type=\"rotate\"\r\n attributeName=\"transform\"\r\n ></animateTransform>\r\n </circle>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n<ng-template #dualBallTpl>\r\n <svg\r\n class=\"x-loading-dual-ball\"\r\n [style.width.px]=\"sizeNumber()\"\r\n [style.height.px]=\"sizeNumber()\"\r\n viewBox=\"0 0 100 100\"\r\n >\r\n <g>\r\n <circle r=\"20\" fill=\"currentColor\" cy=\"50\" cx=\"30\">\r\n <animate\r\n begin=\"-0.5s\"\r\n values=\"30;70;30\"\r\n keyTimes=\"0;0.5;1\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"cx\"\r\n ></animate>\r\n </circle>\r\n <circle r=\"20\" fill=\"var(--x-primary-500)\" cy=\"50\" cx=\"70\">\r\n <animate\r\n begin=\"0s\"\r\n values=\"30;70;30\"\r\n keyTimes=\"0;0.5;1\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"cx\"\r\n ></animate>\r\n </circle>\r\n <circle r=\"20\" fill=\"currentColor\" cy=\"50\" cx=\"30\">\r\n <animate\r\n begin=\"-0.5s\"\r\n values=\"30;70;30\"\r\n keyTimes=\"0;0.5;1\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"cx\"\r\n ></animate>\r\n <animate\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n keyTimes=\"0;0.499;0.5;1\"\r\n calcMode=\"discrete\"\r\n values=\"0;0;1;1\"\r\n attributeName=\"fill-opacity\"\r\n ></animate>\r\n </circle>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n<ng-template #barsTpl>\r\n <svg class=\"x-loading-bars\" [style.width.px]=\"sizeNumber()\" [style.height.px]=\"sizeNumber()\" viewBox=\"0 0 100 100\">\r\n <g>\r\n <rect fill=\"currentColor\" height=\"40\" width=\"10\" y=\"30\" x=\"15\">\r\n <animate\r\n begin=\"-0.6\"\r\n values=\"1;0.2;1\"\r\n keySplines=\"0.5 0 0.5 1;0.5 0 0.5 1\"\r\n keyTimes=\"0;0.5;1\"\r\n calcMode=\"spline\"\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n <rect fill=\"var(--x-primary-200)\" height=\"40\" width=\"10\" y=\"30\" x=\"35\">\r\n <animate\r\n begin=\"-0.4\"\r\n values=\"1;0.2;1\"\r\n keySplines=\"0.5 0 0.5 1;0.5 0 0.5 1\"\r\n keyTimes=\"0;0.5;1\"\r\n calcMode=\"spline\"\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n <rect fill=\"var(--x-primary-400)\" height=\"40\" width=\"10\" y=\"30\" x=\"55\">\r\n <animate\r\n begin=\"-0.2\"\r\n values=\"1;0.2;1\"\r\n keySplines=\"0.5 0 0.5 1;0.5 0 0.5 1\"\r\n keyTimes=\"0;0.5;1\"\r\n calcMode=\"spline\"\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n <rect fill=\"var(--x-primary-600)\" height=\"40\" width=\"10\" y=\"30\" x=\"75\">\r\n <animate\r\n begin=\"-1\"\r\n values=\"1;0.2;1\"\r\n keySplines=\"0.5 0 0.5 1;0.5 0 0.5 1\"\r\n keyTimes=\"0;0.5;1\"\r\n calcMode=\"spline\"\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XLoadingComponent } from './loading.component';\r\n\r\n@NgModule({\r\n exports: [XLoadingComponent],\r\n imports: [XLoadingComponent]\r\n})\r\nexport class XLoadingModule {}\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-loading.mjs","sources":["../../../../lib/ng-nest/ui/loading/loading.property.ts","../../../../lib/ng-nest/ui/loading/loading.component.ts","../../../../lib/ng-nest/ui/loading/loading.component.html","../../../../lib/ng-nest/ui/loading/loading.module.ts","../../../../lib/ng-nest/ui/loading/ng-nest-ui-loading.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, input, TemplateRef } from '@angular/core';\r\nimport type { XSize, XTemplate, XBoolean, XNumber, XCorner } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Loading\r\n * @selector x-loading\r\n * @decorator component\r\n */\r\nexport const XLoadingPrefix = 'x-loading';\r\nconst X_LOADING_CONFIG_NAME = 'loading';\r\n\r\n/**\r\n * Loading Property\r\n */\r\n@Component({ selector: `${XLoadingPrefix}-property`, template: '' })\r\nexport class XLoadingProperty extends XPropertyFunction(X_LOADING_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 显示 loading\r\n * @en_US Show loading\r\n */\r\n readonly loading = input<boolean, XBoolean>(false, { transform: XToBoolean, alias: 'x-loading' });\r\n /**\r\n * @zh_CN Loading 类型\r\n * @en_US Loading type\r\n */\r\n readonly type = input<XLoadingType>(this.config?.type ?? 'circular');\r\n /**\r\n * @zh_CN 层级\r\n * @en_US z-index\r\n */\r\n readonly zIndex = input<number, XNumber>(this.config?.zIndex ?? 10, { transform: XToNumber });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize | number>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 显示文字,支持自定义模板\r\n * @en_US Display text, support custom template\r\n */\r\n readonly text = input<XTemplate | null>(this.config?.text ?? null);\r\n /**\r\n * @zh_CN 显示的图标\r\n * @en_US Icon displayed\r\n */\r\n readonly icon = input<string | null>(this.config?.icon ?? null);\r\n /**\r\n * @zh_CN 自定义 loading 模板\r\n * @en_US Svg tpl\r\n */\r\n readonly customTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 颜色\r\n * @en_US Color\r\n */\r\n readonly color = input<string | null>(this.config?.color ?? null);\r\n /**\r\n * @zh_CN 全屏显示\r\n * @en_US Full-screen display\r\n */\r\n readonly fullScreen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 圆角覆盖显示\r\n * @en_US Rounded corner coverage display\r\n */\r\n readonly radius = input<XBoolean | XCorner[]>();\r\n /**\r\n * @zh_CN 背景样式\r\n * @en_US Background style\r\n */\r\n readonly background = input<string | null>(this.config?.background ?? null);\r\n /**\r\n * @zh_CN 行内显示\r\n * @en_US Inline display\r\n */\r\n readonly inline = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN Loading 类型\r\n * @en_US Loading type\r\n */\r\nexport type XLoadingType = 'circular' | 'spinner' | 'ripple' | 'dual-ring' | 'dual-ball' | 'bars';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n TemplateRef,\r\n ViewContainerRef,\r\n inject,\r\n computed,\r\n effect,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XLoadingPrefix, XLoadingProperty } from './loading.property';\r\nimport { XIsEmpty, XIsNumber, XCorner, XToNumber } from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XLoadingPrefix}, [${XLoadingPrefix}]`,\r\n imports: [NgClass, NgTemplateOutlet, XIconComponent, XOutletDirective],\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XLoadingComponent extends XLoadingProperty {\r\n @HostBinding('class.x-loading-parent') get getLoading() {\r\n return this.loading();\r\n }\r\n loadingTpl = viewChild.required<TemplateRef<void>>('loadingTpl');\r\n portalRef!: XPortalOverlayRef<any>;\r\n\r\n isRadius = computed(() => !(this.radius() instanceof Array) && Boolean(this.radius()));\r\n\r\n sizeNumber = computed(() => {\r\n const size = XToNumber(this.size());\r\n if (XIsNumber(size)) {\r\n return size;\r\n }\r\n return;\r\n });\r\n\r\n classMap = computed(() => {\r\n const size = this.size();\r\n if (isNaN(XToNumber(size))) {\r\n return { [`${XLoadingPrefix}-${size}`]: !XIsEmpty(size) };\r\n }\r\n return;\r\n });\r\n\r\n private portal = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.fullScreen()) {\r\n if (this.loading()) {\r\n this.createFullScreen();\r\n } else {\r\n this.closeFullScreen();\r\n }\r\n }\r\n });\r\n }\r\n\r\n includeRadius(cover: XCorner) {\r\n const radius = this.radius();\r\n if (!(radius instanceof Array)) {\r\n return false;\r\n }\r\n return radius.includes(cover);\r\n }\r\n\r\n createFullScreen() {\r\n this.portalRef = this.portal.attach({\r\n content: this.loadingTpl(),\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: {\r\n width: '100%',\r\n height: '100%',\r\n positionStrategy: this.portal.setPlacement()\r\n }\r\n });\r\n }\r\n\r\n closeFullScreen() {\r\n if (this.portalRef?.overlayRef?.hasAttached()) {\r\n this.portalRef.overlayRef.detach();\r\n }\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n\r\n@if (!fullScreen()) {\r\n <ng-container *ngTemplateOutlet=\"loadingTpl\"></ng-container>\r\n}\r\n\r\n<ng-template #loadingTpl>\r\n @if (loading()) {\r\n <div\r\n #loading\r\n class=\"x-loading\"\r\n [ngClass]=\"classMap()\"\r\n [style.background]=\"background()\"\r\n [style.zIndex]=\"zIndex()\"\r\n [class.x-loading-radius]=\"isRadius()\"\r\n [class.x-loading-top-left-radius]=\"includeRadius('top-start')\"\r\n [class.x-loading-top-right-radius]=\"includeRadius('top-end')\"\r\n [class.x-loading-bottom-left-radius]=\"includeRadius('bottom-start')\"\r\n [class.x-loading-bottom-left-radius]=\"includeRadius('bottom-end')\"\r\n [class.x-loading-inline]=\"inline()\"\r\n >\r\n <div class=\"x-loading-inner\" [style.color]=\"color()\">\r\n @if (customTpl()) {\r\n <ng-template *ngTemplateOutlet=\"customTpl()!\"></ng-template>\r\n } @else {\r\n @if (icon()) {\r\n <div class=\"x-loading-icon\" [style.font-size.px]=\"sizeNumber()\">\r\n <x-icon [type]=\"icon()!\"></x-icon>\r\n </div>\r\n } @else {\r\n @switch (type()) {\r\n @case ('circular') {\r\n <ng-container *ngTemplateOutlet=\"circularTpl\"></ng-container>\r\n }\r\n @case ('spinner') {\r\n <ng-container *ngTemplateOutlet=\"spinnerTpl\"></ng-container>\r\n }\r\n @case ('ripple') {\r\n <ng-container *ngTemplateOutlet=\"rippleTpl\"></ng-container>\r\n }\r\n @case ('dual-ring') {\r\n <ng-container *ngTemplateOutlet=\"dualRingTpl\"></ng-container>\r\n }\r\n @case ('dual-ball') {\r\n <ng-container *ngTemplateOutlet=\"dualBallTpl\"></ng-container>\r\n }\r\n @case ('bars') {\r\n <ng-container *ngTemplateOutlet=\"barsTpl\"></ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"circularTpl\"></ng-container>\r\n }\r\n }\r\n }\r\n }\r\n\r\n <div class=\"x-loading-text\">\r\n <ng-container *xOutlet=\"text()\">{{ text() }}</ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #circularTpl>\r\n <svg\r\n class=\"x-loading-circular\"\r\n [style.width.px]=\"sizeNumber()\"\r\n [style.height.px]=\"sizeNumber()\"\r\n viewBox=\"25 25 50 50\"\r\n >\r\n <circle class=\"x-loading-path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #spinnerTpl>\r\n <svg class=\"x-loading-spinner\" [style.width.px]=\"sizeNumber()\" [style.height.px]=\"sizeNumber()\" viewBox=\"25 25 50 50\">\r\n <g>\r\n <g transform=\"rotate(0 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.9166666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(30 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.8333333333333334s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(60 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.75s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(90 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.6666666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(120 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.5833333333333334s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(150 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.5s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(180 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.4166666666666667s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(210 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.3333333333333333s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(240 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.25s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(270 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.16666666666666666s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(300 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"-0.08333333333333333s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g transform=\"rotate(330 50 50)\">\r\n <rect fill=\"currentColor\" height=\"11\" width=\"6\" ry=\"0.66\" rx=\"0.66\" y=\"25.5\" x=\"47\">\r\n <animate\r\n repeatCount=\"indefinite\"\r\n begin=\"0s\"\r\n dur=\"1s\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n <g></g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n<ng-template #rippleTpl>\r\n <svg class=\"x-loading-ripple\" [style.width.px]=\"sizeNumber()\" [style.height.px]=\"sizeNumber()\" viewBox=\"0 0 100 100\">\r\n <g>\r\n <circle stroke-width=\"6\" stroke=\"currentColor\" fill=\"none\" r=\"0\" cy=\"50\" cx=\"50\">\r\n <animate\r\n begin=\"0s\"\r\n calcMode=\"spline\"\r\n keySplines=\"0 0.2 0.8 1\"\r\n keyTimes=\"0;1\"\r\n values=\"0;40\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"r\"\r\n ></animate>\r\n <animate\r\n begin=\"0s\"\r\n calcMode=\"spline\"\r\n keySplines=\"0.2 0 0.8 1\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </circle>\r\n <circle stroke-width=\"6\" stroke=\"currentColor\" fill=\"none\" r=\"0\" cy=\"50\" cx=\"50\">\r\n <animate\r\n begin=\"-0.5s\"\r\n calcMode=\"spline\"\r\n keySplines=\"0 0.2 0.8 1\"\r\n keyTimes=\"0;1\"\r\n values=\"0;40\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"r\"\r\n ></animate>\r\n <animate\r\n begin=\"-0.5s\"\r\n calcMode=\"spline\"\r\n keySplines=\"0.2 0 0.8 1\"\r\n keyTimes=\"0;1\"\r\n values=\"1;0\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </circle>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n<ng-template #dualRingTpl>\r\n <svg\r\n class=\"x-loading-dual-ring\"\r\n [style.width.px]=\"sizeNumber()\"\r\n [style.height.px]=\"sizeNumber()\"\r\n viewBox=\"0 0 100 100\"\r\n >\r\n <g>\r\n <circle\r\n stroke-linecap=\"round\"\r\n fill=\"none\"\r\n stroke-dasharray=\"50.26548245743669 50.26548245743669\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"8\"\r\n r=\"32\"\r\n cy=\"50\"\r\n cx=\"50\"\r\n >\r\n <animateTransform\r\n values=\"0 50 50;360 50 50\"\r\n keyTimes=\"0;1\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n type=\"rotate\"\r\n attributeName=\"transform\"\r\n ></animateTransform>\r\n </circle>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n<ng-template #dualBallTpl>\r\n <svg\r\n class=\"x-loading-dual-ball\"\r\n [style.width.px]=\"sizeNumber()\"\r\n [style.height.px]=\"sizeNumber()\"\r\n viewBox=\"0 0 100 100\"\r\n >\r\n <g>\r\n <circle r=\"20\" fill=\"currentColor\" cy=\"50\" cx=\"30\">\r\n <animate\r\n begin=\"-0.5s\"\r\n values=\"30;70;30\"\r\n keyTimes=\"0;0.5;1\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"cx\"\r\n ></animate>\r\n </circle>\r\n <circle r=\"20\" fill=\"var(--x-primary-500)\" cy=\"50\" cx=\"70\">\r\n <animate\r\n begin=\"0s\"\r\n values=\"30;70;30\"\r\n keyTimes=\"0;0.5;1\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"cx\"\r\n ></animate>\r\n </circle>\r\n <circle r=\"20\" fill=\"currentColor\" cy=\"50\" cx=\"30\">\r\n <animate\r\n begin=\"-0.5s\"\r\n values=\"30;70;30\"\r\n keyTimes=\"0;0.5;1\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"\r\n attributeName=\"cx\"\r\n ></animate>\r\n <animate\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n keyTimes=\"0;0.499;0.5;1\"\r\n calcMode=\"discrete\"\r\n values=\"0;0;1;1\"\r\n attributeName=\"fill-opacity\"\r\n ></animate>\r\n </circle>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n<ng-template #barsTpl>\r\n <svg class=\"x-loading-bars\" [style.width.px]=\"sizeNumber()\" [style.height.px]=\"sizeNumber()\" viewBox=\"0 0 100 100\">\r\n <g>\r\n <rect fill=\"currentColor\" height=\"40\" width=\"10\" y=\"30\" x=\"15\">\r\n <animate\r\n begin=\"-0.6\"\r\n values=\"1;0.2;1\"\r\n keySplines=\"0.5 0 0.5 1;0.5 0 0.5 1\"\r\n keyTimes=\"0;0.5;1\"\r\n calcMode=\"spline\"\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n <rect fill=\"var(--x-primary-200)\" height=\"40\" width=\"10\" y=\"30\" x=\"35\">\r\n <animate\r\n begin=\"-0.4\"\r\n values=\"1;0.2;1\"\r\n keySplines=\"0.5 0 0.5 1;0.5 0 0.5 1\"\r\n keyTimes=\"0;0.5;1\"\r\n calcMode=\"spline\"\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n <rect fill=\"var(--x-primary-400)\" height=\"40\" width=\"10\" y=\"30\" x=\"55\">\r\n <animate\r\n begin=\"-0.2\"\r\n values=\"1;0.2;1\"\r\n keySplines=\"0.5 0 0.5 1;0.5 0 0.5 1\"\r\n keyTimes=\"0;0.5;1\"\r\n calcMode=\"spline\"\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n <rect fill=\"var(--x-primary-600)\" height=\"40\" width=\"10\" y=\"30\" x=\"75\">\r\n <animate\r\n begin=\"-1\"\r\n values=\"1;0.2;1\"\r\n keySplines=\"0.5 0 0.5 1;0.5 0 0.5 1\"\r\n keyTimes=\"0;0.5;1\"\r\n calcMode=\"spline\"\r\n repeatCount=\"indefinite\"\r\n dur=\"1s\"\r\n attributeName=\"opacity\"\r\n ></animate>\r\n </rect>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XLoadingComponent } from './loading.component';\r\n\r\n@NgModule({\r\n exports: [XLoadingComponent],\r\n imports: [XLoadingComponent]\r\n})\r\nexport class XLoadingModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ class XMenuProperty extends XPropertyFunction(X_MENU_CONFIG_NAME) {
25
25
  * @zh_CN 节点数据
26
26
  * @en_US Node data
27
27
  */
28
- this.data = input([], ...(ngDevMode ? [{ debugName: "data", transform: XToDataArray }] : [{ transform: XToDataArray }]));
28
+ this.data = input([], { ...(ngDevMode ? { debugName: "data" } : {}), transform: XToDataArray });
29
29
  /**
30
30
  * @zh_CN 布局方向
31
31
  * @en_US Layout direction
@@ -40,12 +40,12 @@ class XMenuProperty extends XPropertyFunction(X_MENU_CONFIG_NAME) {
40
40
  * @zh_CN 宽度,只有布局 layout 为 'column' 生效
41
41
  * @en_US Width, only layout layout is the 'column'
42
42
  */
43
- this.width = input(this.config?.width ?? '16rem', ...(ngDevMode ? [{ debugName: "width", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
43
+ this.width = input(this.config?.width ?? '16rem', { ...(ngDevMode ? { debugName: "width" } : {}), transform: XToCssPixelValue });
44
44
  /**
45
45
  * @zh_CN 缩起菜单
46
46
  * @en_US Shrink menu
47
47
  */
48
- this.collapsed = input(false, ...(ngDevMode ? [{ debugName: "collapsed", transform: XToBoolean }] : [{ transform: XToBoolean }]));
48
+ this.collapsed = input(false, { ...(ngDevMode ? { debugName: "collapsed" } : {}), transform: XToBoolean });
49
49
  /**
50
50
  * @zh_CN 触发方式,只针对横向布局
51
51
  * @en_US Trigger mode, only for horizontal layout
@@ -60,12 +60,12 @@ class XMenuProperty extends XPropertyFunction(X_MENU_CONFIG_NAME) {
60
60
  * @zh_CN 展开的所有层级,只对 layout 布局为 'column' 的生效
61
61
  * @en_US All expanded levels are only effective for the layout of'column'
62
62
  */
63
- this.expandedAll = input(false, ...(ngDevMode ? [{ debugName: "expandedAll", transform: XToBoolean }] : [{ transform: XToBoolean }]));
63
+ this.expandedAll = input(false, { ...(ngDevMode ? { debugName: "expandedAll" } : {}), transform: XToBoolean });
64
64
  /**
65
65
  * @zh_CN 默认展开的层级,只对 layout 布局为 'column' 的生效
66
66
  * @en_US The level expanded by default is only valid for the layout of'column'
67
67
  */
68
- this.expandedLevel = input(-1, ...(ngDevMode ? [{ debugName: "expandedLevel", transform: XToNumber }] : [{ transform: XToNumber }]));
68
+ this.expandedLevel = input(-1, { ...(ngDevMode ? { debugName: "expandedLevel" } : {}), transform: XToNumber });
69
69
  /**
70
70
  * @zh_CN 当前激活的节点 id
71
71
  * @en_US Currently active node id
@@ -80,17 +80,17 @@ class XMenuProperty extends XPropertyFunction(X_MENU_CONFIG_NAME) {
80
80
  * @zh_CN 弹框的最小宽度
81
81
  * @en_US Portal min-width
82
82
  */
83
- this.portalMinWidth = input('', ...(ngDevMode ? [{ debugName: "portalMinWidth", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
83
+ this.portalMinWidth = input('', { ...(ngDevMode ? { debugName: "portalMinWidth" } : {}), transform: XToCssPixelValue });
84
84
  /**
85
85
  * @zh_CN 节点点击的事件
86
86
  * @en_US Node click event
87
87
  */
88
88
  this.nodeClick = output();
89
89
  }
90
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
91
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: XMenuProperty, isStandalone: true, selector: "x-menu-property", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: true, isRequired: false, transformFunction: null }, nodeTpl: { classPropertyName: "nodeTpl", publicName: "nodeTpl", isSignal: true, isRequired: false, transformFunction: null }, expandedAll: { classPropertyName: "expandedAll", publicName: "expandedAll", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null }, activatedId: { classPropertyName: "activatedId", publicName: "activatedId", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, portalMinWidth: { classPropertyName: "portalMinWidth", publicName: "portalMinWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activatedId: "activatedIdChange", nodeClick: "nodeClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
90
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
91
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: XMenuProperty, isStandalone: true, selector: "x-menu-property", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: true, isRequired: false, transformFunction: null }, nodeTpl: { classPropertyName: "nodeTpl", publicName: "nodeTpl", isSignal: true, isRequired: false, transformFunction: null }, expandedAll: { classPropertyName: "expandedAll", publicName: "expandedAll", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null }, activatedId: { classPropertyName: "activatedId", publicName: "activatedId", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, portalMinWidth: { classPropertyName: "portalMinWidth", publicName: "portalMinWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activatedId: "activatedIdChange", nodeClick: "nodeClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
92
92
  }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuProperty, decorators: [{
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuProperty, decorators: [{
94
94
  type: Component,
95
95
  args: [{ selector: `${XMenuPrefix}-property`, template: '' }]
96
96
  }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], trigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "trigger", required: false }] }], nodeTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeTpl", required: false }] }], expandedAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandedAll", required: false }] }], expandedLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandedLevel", required: false }] }], activatedId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activatedId", required: false }] }, { type: i0.Output, args: ["activatedIdChange"] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], portalMinWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "portalMinWidth", required: false }] }], nodeClick: [{ type: i0.Output, args: ["nodeClick"] }] } });
@@ -104,10 +104,10 @@ const XMenuNodePrefix = 'x-menu-node';
104
104
  * Menu Node Property
105
105
  */
106
106
  class XMenuNodeProperty extends XProperty {
107
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuNodeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
108
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.0", type: XMenuNodeProperty, isStandalone: true, selector: "x-menu-node-property", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
107
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuNodeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
108
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: XMenuNodeProperty, isStandalone: true, selector: "x-menu-node-property", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
109
109
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuNodeProperty, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuNodeProperty, decorators: [{
111
111
  type: Component,
112
112
  args: [{ selector: `${XMenuNodePrefix}-property`, template: '' }]
113
113
  }] });
@@ -131,10 +131,10 @@ class XMenuNodeComponent extends XMenuNodeProperty {
131
131
  }
132
132
  });
133
133
  }
134
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XMenuNodeComponent, isStandalone: true, selector: "x-menu-node", inputs: { routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, leaf: { classPropertyName: "leaf", publicName: "leaf", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: false, transformFunction: null }, nodeTpl: { classPropertyName: "nodeTpl", publicName: "nodeTpl", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@if (routerLink() && !leaf()) {\r\n <a [routerLink]=\"routerLink()\">\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n </a>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n @if (icon()) {\r\n <x-icon class=\"x-menu-icon\" [type]=\"icon()\"></x-icon>\r\n }\r\n @if (nodeTpl()) {\r\n <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node()! }\"></ng-container>\r\n } @else if (label()) {\r\n <span class=\"x-menu-text\">{{ label() }} </span>\r\n }\r\n @if (label()) {}\r\n @if (leaf()) {\r\n <x-icon class=\"x-menu-arrow\" [class.is-open]=\"open()\" type=\"fto-chevron-down\"></x-icon>\r\n }\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
134
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XMenuNodeComponent, isStandalone: true, selector: "x-menu-node", inputs: { routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, leaf: { classPropertyName: "leaf", publicName: "leaf", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: false, transformFunction: null }, nodeTpl: { classPropertyName: "nodeTpl", publicName: "nodeTpl", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "@if (routerLink() && !leaf()) {\r\n <a [routerLink]=\"routerLink()\">\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n </a>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n @if (icon()) {\r\n <x-icon class=\"x-menu-icon\" [type]=\"icon()\"></x-icon>\r\n }\r\n @if (nodeTpl()) {\r\n <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node()! }\"></ng-container>\r\n } @else if (label()) {\r\n <span class=\"x-menu-text\">{{ label() }} </span>\r\n }\r\n @if (label()) {}\r\n @if (leaf()) {\r\n <x-icon class=\"x-menu-arrow\" [class.is-open]=\"open()\" type=\"fto-chevron-down\"></x-icon>\r\n }\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
136
136
  }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuNodeComponent, decorators: [{
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuNodeComponent, decorators: [{
138
138
  type: Component,
139
139
  args: [{ selector: `${XMenuNodePrefix}`, imports: [NgTemplateOutlet, XIconComponent, RouterModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (routerLink() && !leaf()) {\r\n <a [routerLink]=\"routerLink()\">\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n </a>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n @if (icon()) {\r\n <x-icon class=\"x-menu-icon\" [type]=\"icon()\"></x-icon>\r\n }\r\n @if (nodeTpl()) {\r\n <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node()! }\"></ng-container>\r\n } @else if (label()) {\r\n <span class=\"x-menu-text\">{{ label() }} </span>\r\n }\r\n @if (label()) {}\r\n @if (leaf()) {\r\n <x-icon class=\"x-menu-arrow\" [class.is-open]=\"open()\" type=\"fto-chevron-down\"></x-icon>\r\n }\r\n</ng-template>\r\n" }]
140
140
  }], ctorParameters: () => [], propDecorators: { routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: false }] }], leaf: [{ type: i0.Input, args: [{ isSignal: true, alias: "leaf", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: false }] }], nodeTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeTpl", required: false }] }] } });
@@ -298,20 +298,20 @@ class XMenuComponent extends XMenuProperty {
298
298
  };
299
299
  getParent(node);
300
300
  }
301
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
302
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XMenuComponent, isStandalone: true, selector: "x-menu", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #menu class=\"x-menu\" [ngClass]=\"classMap()\" [style.width]=\"layout() === 'column' ? width() : ''\">\r\n @if (layout() === 'column') {\r\n <div class=\"x-menu-nodes\">\r\n @for (node of nodes(); track node.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n @if (layout() === 'row') {\r\n <x-slider\r\n [data]=\"nodes()\"\r\n [size]=\"size()\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex()\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n }\r\n</div>\r\n\r\n<ng-template #nodeTemplate let-node=\"$node\">\r\n @if (node.level === 0 && collapsed()) {\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n placement=\"right-start\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n </x-dropdown>\r\n }\r\n @if (!collapsed()) {\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap()\">\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated()?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap()\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n @if (node.childrenLoaded || (node.leaf && node.open)) {\r\n <div class=\"x-menu-nodes\" [hidden]=\"!node.open\">\r\n @for (child of node.children; track child.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["x-menu{display:block}.x-menu{margin:0;padding:0}.x-menu-icon.x-icon{width:1rem;height:1rem;font-size:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon{width:1rem;height:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon.is-open{transform:rotate(180deg)}.x-menu-node.x-size-big{padding:0 calc(var(--x-padding-big) + .25rem);height:calc(var(--x-height-big) + .75rem);line-height:calc(var(--x-height-big) + .75rem)}.x-menu-node.x-size-big.x-menu-category{height:calc(calc(var(--x-height-big) + .75rem) * 1.5)}.x-menu-node.x-size-large{padding:0 calc(var(--x-padding-large) + .25rem);height:calc(var(--x-height-large) + .75rem);line-height:calc(var(--x-height-large) + .75rem)}.x-menu-node.x-size-large.x-menu-category{height:calc(calc(var(--x-height-large) + .75rem) * 1.5)}.x-menu-node.x-size-medium{padding:0 calc(var(--x-padding-medium) + .25rem);height:calc(var(--x-height-medium) + .75rem);line-height:calc(var(--x-height-medium) + .75rem)}.x-menu-node.x-size-medium.x-menu-category{height:calc(calc(var(--x-height-medium) + .75rem) * 1.5)}.x-menu-node.x-size-small{padding:0 var(--x-padding-small);height:calc(var(--x-height-small) + .5rem);line-height:calc(var(--x-height-small) + .5rem)}.x-menu-node.x-size-small.x-menu-category{height:calc(calc(var(--x-height-small) + .5rem) * 1.5)}.x-menu-node.x-size-mini{padding:0 var(--x-padding-mini);height:calc(var(--x-height-mini) + .5rem);line-height:calc(var(--x-height-mini) + .5rem)}.x-menu-node.x-size-mini.x-menu-category{height:calc(calc(var(--x-height-mini) + .5rem) * 1.5)}.x-menu x-slider .x-slider-scroll>ul>li>x-link{height:inherit!important;line-height:inherit!important}.x-menu-column{width:16rem;transition:var(--x-animation-duration-base)}.x-menu-row .x-menu-text{margin-left:.25rem}.x-menu-nodes .x-menu-node{cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:width var(--x-animation-duration-base),background-color var(--x-animation-duration-base);position:relative;-webkit-user-select:none;user-select:none;padding-right:var(--x-font-size);border-radius:var(--x-border-radius);margin:.125rem 0}.x-menu-nodes .x-menu-node .x-menu-text{flex:1;margin:0 .25rem;transition:background-color var(--x-animation-duration-base),opacity var(--x-animation-duration-base);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x-menu-nodes .x-menu-node:hover{color:var(--x-primary);background-color:var(--x-background-a200)}.x-menu-nodes .x-menu-node x-menu-node{flex:1;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.x-menu-nodes .x-menu-node x-menu-node>a{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;color:var(--x-text)}.x-menu-nodes .x-menu-node.x-activated{color:var(--x-primary);background-color:var(--x-primary-900)}.x-menu-nodes .x-menu-node.x-activated:after{content:\"\";position:absolute;height:100%;right:-.125rem;top:0}.x-menu-nodes .x-menu-node.x-activated x-menu-node>a{color:var(--x-primary)}.x-menu-nodes .x-menu-node.x-menu-category{cursor:inherit;color:var(--x-text-400)}.x-menu-nodes .x-menu-node.x-menu-category:hover{background-color:transparent}.x-menu-nodes .x-menu-node.x-menu-category>x-menu-node{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-menu-collapsed.x-menu-column{width:3rem!important}.x-menu-collapsed .x-menu-nodes x-dropdown,.x-menu-collapsed .x-menu-nodes .x-dropdown{display:flex;flex:1}.x-menu-collapsed .x-menu-nodes .x-menu-node{padding-left:0!important;padding-right:0}.x-menu-collapsed .x-menu-nodes .x-menu-node x-menu-node{padding-left:var(--x-font-size)}.x-menu-collapsed .x-menu-nodes .x-menu-node .x-menu-text{opacity:0;width:0}.x-menu-collapsed .x-menu-nodes .x-menu-nodes{display:none}.x-menu-collapsed .x-menu-arrow.x-icon{opacity:0;width:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XSliderComponent, selector: "x-slider" }, { kind: "component", type: XDropdownComponent, selector: "x-dropdown" }, { kind: "component", type: XMenuNodeComponent, selector: "x-menu-node", inputs: ["routerLink", "leaf", "icon", "label", "open", "id", "node", "nodeTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
301
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
302
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XMenuComponent, isStandalone: true, selector: "x-menu", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #menu class=\"x-menu\" [ngClass]=\"classMap()\" [style.width]=\"layout() === 'column' ? width() : ''\">\r\n @if (layout() === 'column') {\r\n <div class=\"x-menu-nodes\">\r\n @for (node of nodes(); track node.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n @if (layout() === 'row') {\r\n <x-slider\r\n [data]=\"nodes()\"\r\n [size]=\"size()\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex()\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n }\r\n</div>\r\n\r\n<ng-template #nodeTemplate let-node=\"$node\">\r\n @if (node.level === 0 && collapsed()) {\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n placement=\"right-start\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n </x-dropdown>\r\n }\r\n @if (!collapsed()) {\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap()\">\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated()?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap()\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n @if (node.childrenLoaded || (node.leaf && node.open)) {\r\n <div class=\"x-menu-nodes\" [hidden]=\"!node.open\">\r\n @for (child of node.children; track child.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["x-menu{display:block}.x-menu{margin:0;padding:0}.x-menu-icon.x-icon{width:1rem;height:1rem;font-size:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon{width:1rem;height:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon.is-open{transform:rotate(180deg)}.x-menu-node.x-size-big{padding:0 calc(var(--x-padding-big) + .25rem);height:calc(var(--x-height-big) + .75rem);line-height:calc(var(--x-height-big) + .75rem)}.x-menu-node.x-size-big.x-menu-category{height:calc(calc(var(--x-height-big) + .75rem) * 1.5)}.x-menu-node.x-size-large{padding:0 calc(var(--x-padding-large) + .25rem);height:calc(var(--x-height-large) + .75rem);line-height:calc(var(--x-height-large) + .75rem)}.x-menu-node.x-size-large.x-menu-category{height:calc(calc(var(--x-height-large) + .75rem) * 1.5)}.x-menu-node.x-size-medium{padding:0 calc(var(--x-padding-medium) + .25rem);height:calc(var(--x-height-medium) + .75rem);line-height:calc(var(--x-height-medium) + .75rem)}.x-menu-node.x-size-medium.x-menu-category{height:calc(calc(var(--x-height-medium) + .75rem) * 1.5)}.x-menu-node.x-size-small{padding:0 var(--x-padding-small);height:calc(var(--x-height-small) + .5rem);line-height:calc(var(--x-height-small) + .5rem)}.x-menu-node.x-size-small.x-menu-category{height:calc(calc(var(--x-height-small) + .5rem) * 1.5)}.x-menu-node.x-size-mini{padding:0 var(--x-padding-mini);height:calc(var(--x-height-mini) + .5rem);line-height:calc(var(--x-height-mini) + .5rem)}.x-menu-node.x-size-mini.x-menu-category{height:calc(calc(var(--x-height-mini) + .5rem) * 1.5)}.x-menu x-slider .x-slider-scroll>ul>li>x-link{height:inherit!important;line-height:inherit!important}.x-menu-column{width:16rem;transition:var(--x-animation-duration-base)}.x-menu-row .x-menu-text{margin-left:.25rem}.x-menu-nodes .x-menu-node{cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:width var(--x-animation-duration-base),background-color var(--x-animation-duration-base);position:relative;-webkit-user-select:none;user-select:none;padding-right:var(--x-font-size);border-radius:var(--x-border-radius);margin:.125rem 0}.x-menu-nodes .x-menu-node .x-menu-text{flex:1;margin:0 .25rem;transition:background-color var(--x-animation-duration-base),opacity var(--x-animation-duration-base);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x-menu-nodes .x-menu-node:hover{color:var(--x-primary);background-color:var(--x-background-a200)}.x-menu-nodes .x-menu-node x-menu-node{flex:1;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.x-menu-nodes .x-menu-node x-menu-node>a{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;color:var(--x-text)}.x-menu-nodes .x-menu-node.x-activated{color:var(--x-primary);background-color:var(--x-primary-900)}.x-menu-nodes .x-menu-node.x-activated:after{content:\"\";position:absolute;height:100%;right:-.125rem;top:0}.x-menu-nodes .x-menu-node.x-activated x-menu-node>a{color:var(--x-primary)}.x-menu-nodes .x-menu-node.x-menu-category{cursor:inherit;color:var(--x-text-400)}.x-menu-nodes .x-menu-node.x-menu-category:hover{background-color:transparent}.x-menu-nodes .x-menu-node.x-menu-category>x-menu-node{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-menu-collapsed.x-menu-column{width:3rem!important}.x-menu-collapsed .x-menu-nodes x-dropdown,.x-menu-collapsed .x-menu-nodes .x-dropdown{display:flex;flex:1}.x-menu-collapsed .x-menu-nodes .x-menu-node{padding-left:0!important;padding-right:0}.x-menu-collapsed .x-menu-nodes .x-menu-node x-menu-node{padding-left:var(--x-font-size)}.x-menu-collapsed .x-menu-nodes .x-menu-node .x-menu-text{opacity:0;width:0}.x-menu-collapsed .x-menu-nodes .x-menu-nodes{display:none}.x-menu-collapsed .x-menu-arrow.x-icon{opacity:0;width:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XSliderComponent, selector: "x-slider" }, { kind: "component", type: XDropdownComponent, selector: "x-dropdown" }, { kind: "component", type: XMenuNodeComponent, selector: "x-menu-node", inputs: ["routerLink", "leaf", "icon", "label", "open", "id", "node", "nodeTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
303
303
  }
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuComponent, decorators: [{
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuComponent, decorators: [{
305
305
  type: Component,
306
306
  args: [{ selector: `${XMenuPrefix}`, imports: [NgClass, NgTemplateOutlet, XSliderComponent, XDropdownComponent, XMenuNodeComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #menu class=\"x-menu\" [ngClass]=\"classMap()\" [style.width]=\"layout() === 'column' ? width() : ''\">\r\n @if (layout() === 'column') {\r\n <div class=\"x-menu-nodes\">\r\n @for (node of nodes(); track node.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n @if (layout() === 'row') {\r\n <x-slider\r\n [data]=\"nodes()\"\r\n [size]=\"size()\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex()\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n }\r\n</div>\r\n\r\n<ng-template #nodeTemplate let-node=\"$node\">\r\n @if (node.level === 0 && collapsed()) {\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n placement=\"right-start\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n </x-dropdown>\r\n }\r\n @if (!collapsed()) {\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap()\">\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated()?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap()\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n @if (node.childrenLoaded || (node.leaf && node.open)) {\r\n <div class=\"x-menu-nodes\" [hidden]=\"!node.open\">\r\n @for (child of node.children; track child.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["x-menu{display:block}.x-menu{margin:0;padding:0}.x-menu-icon.x-icon{width:1rem;height:1rem;font-size:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon{width:1rem;height:1rem;transition:opacity var(--x-animation-duration-base)}.x-menu-arrow.x-icon.is-open{transform:rotate(180deg)}.x-menu-node.x-size-big{padding:0 calc(var(--x-padding-big) + .25rem);height:calc(var(--x-height-big) + .75rem);line-height:calc(var(--x-height-big) + .75rem)}.x-menu-node.x-size-big.x-menu-category{height:calc(calc(var(--x-height-big) + .75rem) * 1.5)}.x-menu-node.x-size-large{padding:0 calc(var(--x-padding-large) + .25rem);height:calc(var(--x-height-large) + .75rem);line-height:calc(var(--x-height-large) + .75rem)}.x-menu-node.x-size-large.x-menu-category{height:calc(calc(var(--x-height-large) + .75rem) * 1.5)}.x-menu-node.x-size-medium{padding:0 calc(var(--x-padding-medium) + .25rem);height:calc(var(--x-height-medium) + .75rem);line-height:calc(var(--x-height-medium) + .75rem)}.x-menu-node.x-size-medium.x-menu-category{height:calc(calc(var(--x-height-medium) + .75rem) * 1.5)}.x-menu-node.x-size-small{padding:0 var(--x-padding-small);height:calc(var(--x-height-small) + .5rem);line-height:calc(var(--x-height-small) + .5rem)}.x-menu-node.x-size-small.x-menu-category{height:calc(calc(var(--x-height-small) + .5rem) * 1.5)}.x-menu-node.x-size-mini{padding:0 var(--x-padding-mini);height:calc(var(--x-height-mini) + .5rem);line-height:calc(var(--x-height-mini) + .5rem)}.x-menu-node.x-size-mini.x-menu-category{height:calc(calc(var(--x-height-mini) + .5rem) * 1.5)}.x-menu x-slider .x-slider-scroll>ul>li>x-link{height:inherit!important;line-height:inherit!important}.x-menu-column{width:16rem;transition:var(--x-animation-duration-base)}.x-menu-row .x-menu-text{margin-left:.25rem}.x-menu-nodes .x-menu-node{cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:width var(--x-animation-duration-base),background-color var(--x-animation-duration-base);position:relative;-webkit-user-select:none;user-select:none;padding-right:var(--x-font-size);border-radius:var(--x-border-radius);margin:.125rem 0}.x-menu-nodes .x-menu-node .x-menu-text{flex:1;margin:0 .25rem;transition:background-color var(--x-animation-duration-base),opacity var(--x-animation-duration-base);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x-menu-nodes .x-menu-node:hover{color:var(--x-primary);background-color:var(--x-background-a200)}.x-menu-nodes .x-menu-node x-menu-node{flex:1;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.x-menu-nodes .x-menu-node x-menu-node>a{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;color:var(--x-text)}.x-menu-nodes .x-menu-node.x-activated{color:var(--x-primary);background-color:var(--x-primary-900)}.x-menu-nodes .x-menu-node.x-activated:after{content:\"\";position:absolute;height:100%;right:-.125rem;top:0}.x-menu-nodes .x-menu-node.x-activated x-menu-node>a{color:var(--x-primary)}.x-menu-nodes .x-menu-node.x-menu-category{cursor:inherit;color:var(--x-text-400)}.x-menu-nodes .x-menu-node.x-menu-category:hover{background-color:transparent}.x-menu-nodes .x-menu-node.x-menu-category>x-menu-node{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-menu-collapsed.x-menu-column{width:3rem!important}.x-menu-collapsed .x-menu-nodes x-dropdown,.x-menu-collapsed .x-menu-nodes .x-dropdown{display:flex;flex:1}.x-menu-collapsed .x-menu-nodes .x-menu-node{padding-left:0!important;padding-right:0}.x-menu-collapsed .x-menu-nodes .x-menu-node x-menu-node{padding-left:var(--x-font-size)}.x-menu-collapsed .x-menu-nodes .x-menu-node .x-menu-text{opacity:0;width:0}.x-menu-collapsed .x-menu-nodes .x-menu-nodes{display:none}.x-menu-collapsed .x-menu-arrow.x-icon{opacity:0;width:0}\n"] }]
307
307
  }], ctorParameters: () => [] });
308
308
 
309
309
  class XMenuModule {
310
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
311
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XMenuModule, imports: [XMenuComponent, XMenuNodeComponent], exports: [XMenuComponent, XMenuNodeComponent] }); }
312
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuModule, imports: [XMenuComponent, XMenuNodeComponent] }); }
310
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
311
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XMenuModule, imports: [XMenuComponent, XMenuNodeComponent], exports: [XMenuComponent, XMenuNodeComponent] }); }
312
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuModule, imports: [XMenuComponent, XMenuNodeComponent] }); }
313
313
  }
314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMenuModule, decorators: [{
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMenuModule, decorators: [{
315
315
  type: NgModule,
316
316
  args: [{
317
317
  exports: [XMenuComponent, XMenuNodeComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-menu.mjs","sources":["../../../../lib/ng-nest/ui/menu/menu.property.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.html","../../../../lib/ng-nest/ui/menu/menu.component.ts","../../../../lib/ng-nest/ui/menu/menu.component.html","../../../../lib/ng-nest/ui/menu/menu.module.ts","../../../../lib/ng-nest/ui/menu/ng-nest-ui-menu.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToDataArray, XToCssPixelValue, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, model, output } from '@angular/core';\r\nimport type { XParentIdentityProperty, XSize, XNumber, XBoolean, XTrigger, XDataArray } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Menu\r\n * @selector x-menu\r\n * @decorator component\r\n */\r\nexport const XMenuPrefix = 'x-menu';\r\nconst X_MENU_CONFIG_NAME = 'menu';\r\n\r\n/**\r\n * Menu Property\r\n */\r\n@Component({ selector: `${XMenuPrefix}-property`, template: '' })\r\nexport class XMenuProperty extends XPropertyFunction(X_MENU_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XMenuNode[], XDataArray<XMenuNode>>([], { transform: XToDataArray });\r\n /**\r\n * @zh_CN 布局方向\r\n * @en_US Layout direction\r\n */\r\n readonly layout = input<XMenuLayout>('row');\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 宽度,只有布局 layout 为 'column' 生效\r\n * @en_US Width, only layout layout is the 'column'\r\n */\r\n readonly width = input<string, XNumber>(this.config?.width ?? '16rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 缩起菜单\r\n * @en_US Shrink menu\r\n */\r\n readonly collapsed = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 触发方式,只针对横向布局\r\n * @en_US Trigger mode, only for horizontal layout\r\n */\r\n readonly trigger = input<XMenuTrigger>(this.config?.trigger ?? 'hover');\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n readonly nodeTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 展开的所有层级,只对 layout 布局为 'column' 的生效\r\n * @en_US All expanded levels are only effective for the layout of'column'\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级,只对 layout 布局为 'column' 的生效\r\n * @en_US The level expanded by default is only valid for the layout of'column'\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 当前激活的节点 id\r\n * @en_US Currently active node id\r\n */\r\n readonly activatedId = model<string | number>();\r\n /**\r\n * @zh_CN 滚动容器\r\n * @en_US Rolling container\r\n */\r\n readonly target = input<string | HTMLElement>();\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 Node click event\r\n */\r\n readonly nodeClick = output<XMenuNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN MenuNode 节点数据\r\n * @en_US MenuNode node data\r\n */\r\nexport interface XMenuNode extends XParentIdentityProperty<XMenuNode> {\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 展开\r\n * @en_US Unfold\r\n */\r\n open?: boolean;\r\n /**\r\n * @zh_CN 子节点已加载过\r\n * @en_US Child node has been loaded\r\n */\r\n childrenLoaded?: boolean;\r\n /**\r\n * @zh_CN 分类显示,设置值后节点显示成分类样式\r\n * @en_US Category display, after setting the value, the node is displayed in a category style\r\n */\r\n category?: string;\r\n /**\r\n * @zh_CN 分类节点,通过内部计算\r\n * @en_US Classification node, through internal calculation\r\n */\r\n categoryNode?: boolean;\r\n /**\r\n * @zh_CN 检查更新\r\n * @en_US Check for updates\r\n */\r\n change?: Function;\r\n /**\r\n * @zh_CN 路由\r\n * @en_US Router\r\n */\r\n routerLink?: string | any[];\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XMenuLayout = 'row' | 'column';\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XMenuTrigger = XTrigger;\r\n\r\n/**\r\n * Menu Node\r\n * @selector x-menu-node\r\n * @decorator component\r\n */\r\nexport const XMenuNodePrefix = 'x-menu-node';\r\n\r\n/**\r\n * Menu Node Property\r\n */\r\n@Component({ selector: `${XMenuNodePrefix}-property`, template: '' })\r\nexport class XMenuNodeProperty extends XProperty {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n inject,\r\n input,\r\n effect,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { XMenuNodeProperty, XMenuNodePrefix, XMenuNode } from './menu.property';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { XMenuComponent } from './menu.component';\r\n\r\n@Component({\r\n selector: `${XMenuNodePrefix}`,\r\n imports: [NgTemplateOutlet, XIconComponent, RouterModule],\r\n templateUrl: './menu-node.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuNodeComponent extends XMenuNodeProperty {\r\n menu = inject(XMenuComponent, { optional: true })!;\r\n routerLink = input<string>();\r\n leaf = input<boolean>();\r\n icon = input<string>();\r\n label = input<string>();\r\n open = input<boolean>();\r\n id = input<any>();\r\n node = input<XMenuNode>();\r\n nodeTpl = input<TemplateRef<any>>();\r\n\r\n private elementRef = inject(ElementRef);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.menu.activatedId() === this.id()) {\r\n this.menu.activatedElementRef.set(this.elementRef);\r\n }\r\n });\r\n }\r\n}\r\n","@if (routerLink() && !leaf()) {\r\n <a [routerLink]=\"routerLink()\">\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n </a>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n @if (icon()) {\r\n <x-icon class=\"x-menu-icon\" [type]=\"icon()\"></x-icon>\r\n }\r\n @if (nodeTpl()) {\r\n <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node()! }\"></ng-container>\r\n } @else if (label()) {\r\n <span class=\"x-menu-text\">{{ label() }} </span>\r\n }\r\n @if (label()) {}\r\n @if (leaf()) {\r\n <x-icon class=\"x-menu-arrow\" [class.is-open]=\"open()\" type=\"fto-chevron-down\"></x-icon>\r\n }\r\n</ng-template>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n inject,\r\n computed,\r\n signal,\r\n effect\r\n} from '@angular/core';\r\nimport { XMenuPrefix, XMenuNode, XMenuProperty } from './menu.property';\r\nimport { XIsChange, XIsEmpty, XGroupBy } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XSliderComponent } from '@ng-nest/ui/slider';\r\nimport { XDropdownComponent } from '@ng-nest/ui/dropdown';\r\nimport { XMenuNodeComponent } from './menu-node.component';\r\n\r\n@Component({\r\n selector: `${XMenuPrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, XSliderComponent, XDropdownComponent, XMenuNodeComponent],\r\n templateUrl: './menu.component.html',\r\n styleUrls: ['./menu.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuComponent extends XMenuProperty implements OnChanges {\r\n showCategory = signal(false);\r\n get scroll(): HTMLElement {\r\n return this._target;\r\n }\r\n datas = signal<XMenuNode[]>([]);\r\n nodes = signal<XMenuNode[]>([]);\r\n rootIndex = signal(0);\r\n activated = signal<XMenuNode | null>(null);\r\n activatedElementRef = signal<ElementRef<HTMLElement> | null>(null);\r\n expanded = signal<any[]>([]);\r\n private doc = inject(DOCUMENT);\r\n private _target!: HTMLElement;\r\n\r\n classMap = computed(() => ({\r\n [`${XMenuPrefix}-${this.layout()}`]: !XIsEmpty(this.layout()),\r\n [`${XMenuPrefix}-collapsed`]: this.collapsed()\r\n }));\r\n nodeClassMap = computed(() => ({\r\n [`x-size-${this.size()}`]: !XIsEmpty(this.size())\r\n }));\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.setScrollTop();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { data, activatedId, target } = changes;\r\n XIsChange(data) && this.setDataChange(this.data());\r\n XIsChange(activatedId) && this.setActivatedNode(this.datas());\r\n if (XIsChange(target)) {\r\n const target = this.target();\r\n this._target = typeof target === 'string' ? this.doc.querySelector(target)! : target!;\r\n }\r\n }\r\n\r\n setScrollTop() {\r\n if (this.activatedElementRef() && this.scroll) {\r\n if (typeof this.activatedElementRef()!.nativeElement.getBoundingClientRect !== 'function') {\r\n return;\r\n }\r\n const nodeRect: DOMRect = this.activatedElementRef()!.nativeElement.getBoundingClientRect();\r\n const scrollRect: DOMRect = this.scroll.getBoundingClientRect();\r\n let scrollTop = nodeRect.top - scrollRect.top - scrollRect.height;\r\n if (scrollTop > 0) {\r\n let offset = 0;\r\n while (offset < scrollRect.height / 2) {\r\n offset = offset + nodeRect.height;\r\n }\r\n this.scroll.scrollTop = scrollTop + offset;\r\n }\r\n }\r\n }\r\n\r\n onNodeClick(node: XMenuNode) {\r\n if (!this.collapsed()) {\r\n this.rootIndex.set(this.nodes().indexOf(this.getRoot(node)));\r\n this.activatedId.set(node.id);\r\n this.activated.set(node);\r\n this.nodeClick.emit(node);\r\n } else {\r\n this.onToggle(null, node, true);\r\n }\r\n }\r\n\r\n rootIndexChange(index: number) {\r\n this.rootIndex.set(index);\r\n let node = this.nodes()[index];\r\n this.activatedId.set(node.id);\r\n this.activated.set(node);\r\n this.nodeClick.emit(node);\r\n }\r\n\r\n onToggle(event: Event | null, node: XMenuNode, isDropdown = false) {\r\n if ((this.collapsed() && !isDropdown) || node.categoryNode) return;\r\n if (!node.leaf) {\r\n this.activated.set(node);\r\n } else {\r\n event?.stopPropagation();\r\n node.open = !node.open;\r\n if (node.open && !node.childrenLoaded) {\r\n node.childrenLoaded = true;\r\n }\r\n }\r\n this.nodeClick.emit(node);\r\n }\r\n\r\n private setDataChange(value: XMenuNode[]) {\r\n !XIsEmpty(this.activatedId()) && this.setActivatedNode(value);\r\n let handlerDatas: XMenuNode[] = [];\r\n const getChildren = (node: XMenuNode, level: number) => {\r\n node.level = level;\r\n node.children = value.filter((y) => y.pid === node.id);\r\n node.leaf = node.children?.length > 0;\r\n if (node.leaf) {\r\n node.open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().indexOf(node.id) >= 0;\r\n node.childrenLoaded = node.open;\r\n node.children.map((y) => getChildren(y, level + 1));\r\n node.children = this.setCategory(node.children);\r\n }\r\n handlerDatas = [...handlerDatas, node];\r\n return node;\r\n };\r\n\r\n this.nodes.set(this.setCategory(value.filter((x) => XIsEmpty(x.pid))).map((x) => getChildren(x, 0)));\r\n this.datas.set(handlerDatas);\r\n }\r\n\r\n private getRoot(value: XMenuNode) {\r\n let root = value;\r\n const getParent = (node: XMenuNode) => {\r\n const parent = this.datas().find((x) => node.pid === x.id) as XMenuNode;\r\n if (XIsEmpty(parent?.pid)) root = parent;\r\n else getParent(parent);\r\n };\r\n if (!XIsEmpty(value.pid)) getParent(value);\r\n return root;\r\n }\r\n\r\n setCategory(nodes: XMenuNode[]) {\r\n const group = XGroupBy(nodes as XMenuNode[], 'category');\r\n for (let key in group) {\r\n const list = group[key];\r\n const first = list[0];\r\n if (first.category) {\r\n list.unshift({\r\n id: `${first.pid}__${first.category}`,\r\n pid: first.pid,\r\n label: first.category,\r\n level: first.level,\r\n categoryNode: true\r\n });\r\n }\r\n }\r\n let con: XMenuNode[] = [];\r\n for (let key in group) {\r\n const list = group[key];\r\n list.map((x) => {\r\n con = con.concat(x);\r\n });\r\n }\r\n\r\n return con;\r\n }\r\n\r\n setActivatedNode(nodes: XMenuNode[]) {\r\n this.activated.set(nodes.find((x) => x.id == this.activatedId()) as XMenuNode);\r\n this.rootIndex.set(nodes.findIndex((x) => x.id == this.activatedId() && !x.pid));\r\n if (this.activated()) {\r\n this.setParentOpen(nodes, this.activated()!);\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XMenuNode[], node: XMenuNode) {\r\n const getParent = (child: XMenuNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XMenuNode;\r\n if (!XIsEmpty(parent)) {\r\n this.expanded.set([...this.expanded(), parent.id]);\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n}\r\n","<div #menu class=\"x-menu\" [ngClass]=\"classMap()\" [style.width]=\"layout() === 'column' ? width() : ''\">\r\n @if (layout() === 'column') {\r\n <div class=\"x-menu-nodes\">\r\n @for (node of nodes(); track node.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n @if (layout() === 'row') {\r\n <x-slider\r\n [data]=\"nodes()\"\r\n [size]=\"size()\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex()\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n }\r\n</div>\r\n\r\n<ng-template #nodeTemplate let-node=\"$node\">\r\n @if (node.level === 0 && collapsed()) {\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n placement=\"right-start\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n </x-dropdown>\r\n }\r\n @if (!collapsed()) {\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap()\">\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated()?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap()\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n @if (node.childrenLoaded || (node.leaf && node.open)) {\r\n <div class=\"x-menu-nodes\" [hidden]=\"!node.open\">\r\n @for (child of node.children; track child.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XMenuComponent } from './menu.component';\r\nimport { XMenuNodeComponent } from './menu-node.component';\r\n\r\n@NgModule({\r\n exports: [XMenuComponent, XMenuNodeComponent],\r\n imports: [XMenuComponent, XMenuNodeComponent]\r\n})\r\nexport class XMenuModule {}\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-menu.mjs","sources":["../../../../lib/ng-nest/ui/menu/menu.property.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.html","../../../../lib/ng-nest/ui/menu/menu.component.ts","../../../../lib/ng-nest/ui/menu/menu.component.html","../../../../lib/ng-nest/ui/menu/menu.module.ts","../../../../lib/ng-nest/ui/menu/ng-nest-ui-menu.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToDataArray, XToCssPixelValue, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, model, output } from '@angular/core';\r\nimport type { XParentIdentityProperty, XSize, XNumber, XBoolean, XTrigger, XDataArray } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Menu\r\n * @selector x-menu\r\n * @decorator component\r\n */\r\nexport const XMenuPrefix = 'x-menu';\r\nconst X_MENU_CONFIG_NAME = 'menu';\r\n\r\n/**\r\n * Menu Property\r\n */\r\n@Component({ selector: `${XMenuPrefix}-property`, template: '' })\r\nexport class XMenuProperty extends XPropertyFunction(X_MENU_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XMenuNode[], XDataArray<XMenuNode>>([], { transform: XToDataArray });\r\n /**\r\n * @zh_CN 布局方向\r\n * @en_US Layout direction\r\n */\r\n readonly layout = input<XMenuLayout>('row');\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 宽度,只有布局 layout 为 'column' 生效\r\n * @en_US Width, only layout layout is the 'column'\r\n */\r\n readonly width = input<string, XNumber>(this.config?.width ?? '16rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 缩起菜单\r\n * @en_US Shrink menu\r\n */\r\n readonly collapsed = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 触发方式,只针对横向布局\r\n * @en_US Trigger mode, only for horizontal layout\r\n */\r\n readonly trigger = input<XMenuTrigger>(this.config?.trigger ?? 'hover');\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n readonly nodeTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 展开的所有层级,只对 layout 布局为 'column' 的生效\r\n * @en_US All expanded levels are only effective for the layout of'column'\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级,只对 layout 布局为 'column' 的生效\r\n * @en_US The level expanded by default is only valid for the layout of'column'\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 当前激活的节点 id\r\n * @en_US Currently active node id\r\n */\r\n readonly activatedId = model<string | number>();\r\n /**\r\n * @zh_CN 滚动容器\r\n * @en_US Rolling container\r\n */\r\n readonly target = input<string | HTMLElement>();\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 Node click event\r\n */\r\n readonly nodeClick = output<XMenuNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN MenuNode 节点数据\r\n * @en_US MenuNode node data\r\n */\r\nexport interface XMenuNode extends XParentIdentityProperty<XMenuNode> {\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 展开\r\n * @en_US Unfold\r\n */\r\n open?: boolean;\r\n /**\r\n * @zh_CN 子节点已加载过\r\n * @en_US Child node has been loaded\r\n */\r\n childrenLoaded?: boolean;\r\n /**\r\n * @zh_CN 分类显示,设置值后节点显示成分类样式\r\n * @en_US Category display, after setting the value, the node is displayed in a category style\r\n */\r\n category?: string;\r\n /**\r\n * @zh_CN 分类节点,通过内部计算\r\n * @en_US Classification node, through internal calculation\r\n */\r\n categoryNode?: boolean;\r\n /**\r\n * @zh_CN 检查更新\r\n * @en_US Check for updates\r\n */\r\n change?: Function;\r\n /**\r\n * @zh_CN 路由\r\n * @en_US Router\r\n */\r\n routerLink?: string | any[];\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XMenuLayout = 'row' | 'column';\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XMenuTrigger = XTrigger;\r\n\r\n/**\r\n * Menu Node\r\n * @selector x-menu-node\r\n * @decorator component\r\n */\r\nexport const XMenuNodePrefix = 'x-menu-node';\r\n\r\n/**\r\n * Menu Node Property\r\n */\r\n@Component({ selector: `${XMenuNodePrefix}-property`, template: '' })\r\nexport class XMenuNodeProperty extends XProperty {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n inject,\r\n input,\r\n effect,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { XMenuNodeProperty, XMenuNodePrefix, XMenuNode } from './menu.property';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { XMenuComponent } from './menu.component';\r\n\r\n@Component({\r\n selector: `${XMenuNodePrefix}`,\r\n imports: [NgTemplateOutlet, XIconComponent, RouterModule],\r\n templateUrl: './menu-node.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuNodeComponent extends XMenuNodeProperty {\r\n menu = inject(XMenuComponent, { optional: true })!;\r\n routerLink = input<string>();\r\n leaf = input<boolean>();\r\n icon = input<string>();\r\n label = input<string>();\r\n open = input<boolean>();\r\n id = input<any>();\r\n node = input<XMenuNode>();\r\n nodeTpl = input<TemplateRef<any>>();\r\n\r\n private elementRef = inject(ElementRef);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.menu.activatedId() === this.id()) {\r\n this.menu.activatedElementRef.set(this.elementRef);\r\n }\r\n });\r\n }\r\n}\r\n","@if (routerLink() && !leaf()) {\r\n <a [routerLink]=\"routerLink()\">\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n </a>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n @if (icon()) {\r\n <x-icon class=\"x-menu-icon\" [type]=\"icon()\"></x-icon>\r\n }\r\n @if (nodeTpl()) {\r\n <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node()! }\"></ng-container>\r\n } @else if (label()) {\r\n <span class=\"x-menu-text\">{{ label() }} </span>\r\n }\r\n @if (label()) {}\r\n @if (leaf()) {\r\n <x-icon class=\"x-menu-arrow\" [class.is-open]=\"open()\" type=\"fto-chevron-down\"></x-icon>\r\n }\r\n</ng-template>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n inject,\r\n computed,\r\n signal,\r\n effect\r\n} from '@angular/core';\r\nimport { XMenuPrefix, XMenuNode, XMenuProperty } from './menu.property';\r\nimport { XIsChange, XIsEmpty, XGroupBy } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XSliderComponent } from '@ng-nest/ui/slider';\r\nimport { XDropdownComponent } from '@ng-nest/ui/dropdown';\r\nimport { XMenuNodeComponent } from './menu-node.component';\r\n\r\n@Component({\r\n selector: `${XMenuPrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, XSliderComponent, XDropdownComponent, XMenuNodeComponent],\r\n templateUrl: './menu.component.html',\r\n styleUrls: ['./menu.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuComponent extends XMenuProperty implements OnChanges {\r\n showCategory = signal(false);\r\n get scroll(): HTMLElement {\r\n return this._target;\r\n }\r\n datas = signal<XMenuNode[]>([]);\r\n nodes = signal<XMenuNode[]>([]);\r\n rootIndex = signal(0);\r\n activated = signal<XMenuNode | null>(null);\r\n activatedElementRef = signal<ElementRef<HTMLElement> | null>(null);\r\n expanded = signal<any[]>([]);\r\n private doc = inject(DOCUMENT);\r\n private _target!: HTMLElement;\r\n\r\n classMap = computed(() => ({\r\n [`${XMenuPrefix}-${this.layout()}`]: !XIsEmpty(this.layout()),\r\n [`${XMenuPrefix}-collapsed`]: this.collapsed()\r\n }));\r\n nodeClassMap = computed(() => ({\r\n [`x-size-${this.size()}`]: !XIsEmpty(this.size())\r\n }));\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.setScrollTop();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { data, activatedId, target } = changes;\r\n XIsChange(data) && this.setDataChange(this.data());\r\n XIsChange(activatedId) && this.setActivatedNode(this.datas());\r\n if (XIsChange(target)) {\r\n const target = this.target();\r\n this._target = typeof target === 'string' ? this.doc.querySelector(target)! : target!;\r\n }\r\n }\r\n\r\n setScrollTop() {\r\n if (this.activatedElementRef() && this.scroll) {\r\n if (typeof this.activatedElementRef()!.nativeElement.getBoundingClientRect !== 'function') {\r\n return;\r\n }\r\n const nodeRect: DOMRect = this.activatedElementRef()!.nativeElement.getBoundingClientRect();\r\n const scrollRect: DOMRect = this.scroll.getBoundingClientRect();\r\n let scrollTop = nodeRect.top - scrollRect.top - scrollRect.height;\r\n if (scrollTop > 0) {\r\n let offset = 0;\r\n while (offset < scrollRect.height / 2) {\r\n offset = offset + nodeRect.height;\r\n }\r\n this.scroll.scrollTop = scrollTop + offset;\r\n }\r\n }\r\n }\r\n\r\n onNodeClick(node: XMenuNode) {\r\n if (!this.collapsed()) {\r\n this.rootIndex.set(this.nodes().indexOf(this.getRoot(node)));\r\n this.activatedId.set(node.id);\r\n this.activated.set(node);\r\n this.nodeClick.emit(node);\r\n } else {\r\n this.onToggle(null, node, true);\r\n }\r\n }\r\n\r\n rootIndexChange(index: number) {\r\n this.rootIndex.set(index);\r\n let node = this.nodes()[index];\r\n this.activatedId.set(node.id);\r\n this.activated.set(node);\r\n this.nodeClick.emit(node);\r\n }\r\n\r\n onToggle(event: Event | null, node: XMenuNode, isDropdown = false) {\r\n if ((this.collapsed() && !isDropdown) || node.categoryNode) return;\r\n if (!node.leaf) {\r\n this.activated.set(node);\r\n } else {\r\n event?.stopPropagation();\r\n node.open = !node.open;\r\n if (node.open && !node.childrenLoaded) {\r\n node.childrenLoaded = true;\r\n }\r\n }\r\n this.nodeClick.emit(node);\r\n }\r\n\r\n private setDataChange(value: XMenuNode[]) {\r\n !XIsEmpty(this.activatedId()) && this.setActivatedNode(value);\r\n let handlerDatas: XMenuNode[] = [];\r\n const getChildren = (node: XMenuNode, level: number) => {\r\n node.level = level;\r\n node.children = value.filter((y) => y.pid === node.id);\r\n node.leaf = node.children?.length > 0;\r\n if (node.leaf) {\r\n node.open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().indexOf(node.id) >= 0;\r\n node.childrenLoaded = node.open;\r\n node.children.map((y) => getChildren(y, level + 1));\r\n node.children = this.setCategory(node.children);\r\n }\r\n handlerDatas = [...handlerDatas, node];\r\n return node;\r\n };\r\n\r\n this.nodes.set(this.setCategory(value.filter((x) => XIsEmpty(x.pid))).map((x) => getChildren(x, 0)));\r\n this.datas.set(handlerDatas);\r\n }\r\n\r\n private getRoot(value: XMenuNode) {\r\n let root = value;\r\n const getParent = (node: XMenuNode) => {\r\n const parent = this.datas().find((x) => node.pid === x.id) as XMenuNode;\r\n if (XIsEmpty(parent?.pid)) root = parent;\r\n else getParent(parent);\r\n };\r\n if (!XIsEmpty(value.pid)) getParent(value);\r\n return root;\r\n }\r\n\r\n setCategory(nodes: XMenuNode[]) {\r\n const group = XGroupBy(nodes as XMenuNode[], 'category');\r\n for (let key in group) {\r\n const list = group[key];\r\n const first = list[0];\r\n if (first.category) {\r\n list.unshift({\r\n id: `${first.pid}__${first.category}`,\r\n pid: first.pid,\r\n label: first.category,\r\n level: first.level,\r\n categoryNode: true\r\n });\r\n }\r\n }\r\n let con: XMenuNode[] = [];\r\n for (let key in group) {\r\n const list = group[key];\r\n list.map((x) => {\r\n con = con.concat(x);\r\n });\r\n }\r\n\r\n return con;\r\n }\r\n\r\n setActivatedNode(nodes: XMenuNode[]) {\r\n this.activated.set(nodes.find((x) => x.id == this.activatedId()) as XMenuNode);\r\n this.rootIndex.set(nodes.findIndex((x) => x.id == this.activatedId() && !x.pid));\r\n if (this.activated()) {\r\n this.setParentOpen(nodes, this.activated()!);\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XMenuNode[], node: XMenuNode) {\r\n const getParent = (child: XMenuNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XMenuNode;\r\n if (!XIsEmpty(parent)) {\r\n this.expanded.set([...this.expanded(), parent.id]);\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n}\r\n","<div #menu class=\"x-menu\" [ngClass]=\"classMap()\" [style.width]=\"layout() === 'column' ? width() : ''\">\r\n @if (layout() === 'column') {\r\n <div class=\"x-menu-nodes\">\r\n @for (node of nodes(); track node.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n @if (layout() === 'row') {\r\n <x-slider\r\n [data]=\"nodes()\"\r\n [size]=\"size()\"\r\n [nodeTpl]=\"nodeRowTpl\"\r\n [nodeJustify]=\"'center'\"\r\n [activatedIndex]=\"rootIndex()\"\r\n (indexChange)=\"rootIndexChange($event)\"\r\n ></x-slider>\r\n }\r\n</div>\r\n\r\n<ng-template #nodeTemplate let-node=\"$node\">\r\n @if (node.level === 0 && collapsed()) {\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n placement=\"right-start\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n </x-dropdown>\r\n }\r\n @if (!collapsed()) {\r\n <x-menu-node\r\n [routerLink]=\"node.routerLink\"\r\n [leaf]=\"node.leaf\"\r\n [icon]=\"node.icon\"\r\n [label]=\"node.label\"\r\n [open]=\"node.open\"\r\n [id]=\"node.id\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [node]=\"node\"\r\n ></x-menu-node>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n <x-dropdown\r\n [disabled]=\"!node.leaf\"\r\n [data]=\"node.children\"\r\n [trigger]=\"trigger()\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n [portalMinWidth]=\"portalMinWidth()\"\r\n [size]=\"size()\"\r\n children\r\n >\r\n <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap()\">\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n <div\r\n class=\"x-menu-node\"\r\n [class.x-activated]=\"activated()?.id === node.id\"\r\n [class.x-menu-category]=\"node.categoryNode\"\r\n [ngClass]=\"nodeClassMap()\"\r\n (click)=\"onToggle($event, node)\"\r\n [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n </div>\r\n @if (node.childrenLoaded || (node.leaf && node.open)) {\r\n <div class=\"x-menu-nodes\" [hidden]=\"!node.open\">\r\n @for (child of node.children; track child.id) {\r\n <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XMenuComponent } from './menu.component';\r\nimport { XMenuNodeComponent } from './menu-node.component';\r\n\r\n@NgModule({\r\n exports: [XMenuComponent, XMenuNodeComponent],\r\n imports: [XMenuComponent, XMenuNodeComponent]\r\n})\r\nexport class XMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -114,10 +114,10 @@ class XMessageBoxComponent {
114
114
  XFormInputValidator(this.msgInput.inputValidator)
115
115
  ]));
116
116
  }
117
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
118
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XMessageBoxComponent, isStandalone: true, selector: "x-message-box", host: { listeners: { "animationend": "animationend($event)" }, properties: { "animate.enter": "this.animateEnter", "animate.leave": "this.animateLeave" } }, ngImport: i0, template: "<div class=\"x-message-box\">\r\n <x-alert\r\n (close)=\"onClose()\"\r\n [title]=\"msgInput.title\"\r\n [content]=\"contentTpl\"\r\n [type]=\"msgInput.type!\"\r\n [effect]=\"msgInput.effect!\"\r\n [hideClose]=\"msgInput.hideClose!\"\r\n [closeText]=\"msgInput.closeText\"\r\n [showIcon]=\"false\"\r\n [duration]=\"0\"\r\n manual\r\n disabledAnimation\r\n ></x-alert>\r\n <ng-template #contentTpl let-iconTpl=\"$iconTpl\">\r\n <div class=\"x-message-box-inner\">\r\n <div class=\"x-message-box-content\">\r\n @if (msgInput.showInput) {\r\n <form [formGroup]=\"formGroup\">\r\n <x-input\r\n formControlName=\"inputValue\"\r\n [type]=\"msgInput.inputType!\"\r\n [label]=\"getLabel\"\r\n [placeholder]=\"msgInput.inputPlaceholder!\"\r\n [pattern]=\"getPattern\"\r\n [message]=\"msgInput.inputInvalidMessage!\"\r\n [inputValidator]=\"msgInput.inputValidator!\"\r\n ></x-input>\r\n </form>\r\n } @else if (msgInput.showTextarea) {\r\n <form [formGroup]=\"formGroup\">\r\n <x-textarea\r\n formControlName=\"inputValue\"\r\n [placeholder]=\"msgInput.inputPlaceholder!\"\r\n [label]=\"getLabel\"\r\n [pattern]=\"getPattern\"\r\n [message]=\"msgInput.inputInvalidMessage!\"\r\n [inputValidator]=\"msgInput.inputValidator!\"\r\n [maxlength]=\"msgInput.textareaMaxlength!\"\r\n [height]=\"msgInput.textareaHeight!\"\r\n ></x-textarea>\r\n </form>\r\n } @else {\r\n @if (msgInput.showIcon) {\r\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\r\n }\r\n <ng-container *xOutlet=\"msgInput.content\">\r\n {{ msgInput.content }}\r\n </ng-container>\r\n }\r\n </div>\r\n <x-buttons space=\"0.5rem\">\r\n @if (msgInput.showCancel) {\r\n <x-button (click)=\"onCancel()\" flat plain>{{ msgInput.cancelText }}</x-button>\r\n }\r\n <x-button type=\"primary\" flat (click)=\"onConfirm()\" [disabled]=\"formGroup!.invalid\" [loading]=\"loading\">{{\r\n msgInput.confirmText\r\n }}</x-button>\r\n </x-buttons>\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: [".x-message-box{margin:0;padding:0}.x-message-box-inner{display:flex;flex-direction:column;margin:.5rem 0}.x-message-box-inner>x-buttons{margin-top:1rem;align-self:flex-end}.x-message-box-content{display:inline-flex}.x-message-box-content>form{width:100%;margin-bottom:1rem}.x-message-box-content>form>x-input{width:100%}.x-message-box-content>form>x-textarea{width:100%}.x-message-box-portal x-message-box{width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "component", type: XTextareaComponent, selector: "x-textarea" }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XButtonsComponent, selector: "x-buttons" }, { kind: "component", type: XAlertComponent, selector: "x-alert" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
117
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
118
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XMessageBoxComponent, isStandalone: true, selector: "x-message-box", host: { listeners: { "animationend": "animationend($event)" }, properties: { "animate.enter": "this.animateEnter", "animate.leave": "this.animateLeave" } }, ngImport: i0, template: "<div class=\"x-message-box\">\r\n <x-alert\r\n (close)=\"onClose()\"\r\n [title]=\"msgInput.title\"\r\n [content]=\"contentTpl\"\r\n [type]=\"msgInput.type!\"\r\n [effect]=\"msgInput.effect!\"\r\n [hideClose]=\"msgInput.hideClose!\"\r\n [closeText]=\"msgInput.closeText\"\r\n [showIcon]=\"false\"\r\n [duration]=\"0\"\r\n manual\r\n disabledAnimation\r\n ></x-alert>\r\n <ng-template #contentTpl let-iconTpl=\"$iconTpl\">\r\n <div class=\"x-message-box-inner\">\r\n <div class=\"x-message-box-content\">\r\n @if (msgInput.showInput) {\r\n <form [formGroup]=\"formGroup\">\r\n <x-input\r\n formControlName=\"inputValue\"\r\n [type]=\"msgInput.inputType!\"\r\n [label]=\"getLabel\"\r\n [placeholder]=\"msgInput.inputPlaceholder!\"\r\n [pattern]=\"getPattern\"\r\n [message]=\"msgInput.inputInvalidMessage!\"\r\n [inputValidator]=\"msgInput.inputValidator!\"\r\n ></x-input>\r\n </form>\r\n } @else if (msgInput.showTextarea) {\r\n <form [formGroup]=\"formGroup\">\r\n <x-textarea\r\n formControlName=\"inputValue\"\r\n [placeholder]=\"msgInput.inputPlaceholder!\"\r\n [label]=\"getLabel\"\r\n [pattern]=\"getPattern\"\r\n [message]=\"msgInput.inputInvalidMessage!\"\r\n [inputValidator]=\"msgInput.inputValidator!\"\r\n [maxlength]=\"msgInput.textareaMaxlength!\"\r\n [height]=\"msgInput.textareaHeight!\"\r\n ></x-textarea>\r\n </form>\r\n } @else {\r\n @if (msgInput.showIcon) {\r\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\r\n }\r\n <ng-container *xOutlet=\"msgInput.content\">\r\n {{ msgInput.content }}\r\n </ng-container>\r\n }\r\n </div>\r\n <x-buttons space=\"0.5rem\">\r\n @if (msgInput.showCancel) {\r\n <x-button (click)=\"onCancel()\" flat plain>{{ msgInput.cancelText }}</x-button>\r\n }\r\n <x-button type=\"primary\" flat (click)=\"onConfirm()\" [disabled]=\"formGroup!.invalid\" [loading]=\"loading\">{{\r\n msgInput.confirmText\r\n }}</x-button>\r\n </x-buttons>\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: [".x-message-box{margin:0;padding:0}.x-message-box-inner{display:flex;flex-direction:column;margin:.5rem 0}.x-message-box-inner>x-buttons{margin-top:1rem;align-self:flex-end}.x-message-box-content{display:inline-flex}.x-message-box-content>form{width:100%;margin-bottom:1rem}.x-message-box-content>form>x-input{width:100%}.x-message-box-content>form>x-textarea{width:100%}.x-message-box-portal x-message-box{width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "component", type: XTextareaComponent, selector: "x-textarea" }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XButtonsComponent, selector: "x-buttons" }, { kind: "component", type: XAlertComponent, selector: "x-alert" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
119
119
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxComponent, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxComponent, decorators: [{
121
121
  type: Component,
122
122
  args: [{ selector: `${XMessageBoxPrefix}`, imports: [
123
123
  NgTemplateOutlet,
@@ -222,20 +222,20 @@ class XMessageBoxService {
222
222
  const messageBoxLocale = this.i18n.getLocale().messageBox;
223
223
  this.default = { ...this.default, ...messageBoxLocale };
224
224
  }
225
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
226
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxService, providedIn: 'root' }); }
225
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
226
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxService, providedIn: 'root' }); }
227
227
  }
228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxService, decorators: [{
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxService, decorators: [{
229
229
  type: Injectable,
230
230
  args: [{ providedIn: 'root' }]
231
231
  }] });
232
232
 
233
233
  class XMessageBoxModule {
234
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
235
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxModule }); }
236
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxModule }); }
234
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
235
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxModule }); }
236
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxModule }); }
237
237
  }
238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XMessageBoxModule, decorators: [{
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XMessageBoxModule, decorators: [{
239
239
  type: NgModule,
240
240
  args: [{
241
241
  exports: [],