@ng-nest/ui 21.0.13 → 22.0.0

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 (204) 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 +46 -34
  4. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  5. package/fesm2022/ng-nest-ui-anchor.mjs +43 -31
  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 +74 -48
  9. package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
  10. package/fesm2022/ng-nest-ui-auto-complete.mjs +114 -70
  11. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  12. package/fesm2022/ng-nest-ui-avatar.mjs +47 -32
  13. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  14. package/fesm2022/ng-nest-ui-back-top.mjs +23 -18
  15. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  16. package/fesm2022/ng-nest-ui-badge.mjs +30 -23
  17. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  18. package/fesm2022/ng-nest-ui-base-form.mjs +75 -44
  19. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  20. package/fesm2022/ng-nest-ui-bubble.mjs +76 -48
  21. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-button.mjs +53 -42
  23. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-calendar.mjs +30 -20
  25. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  26. package/fesm2022/ng-nest-ui-card.mjs +21 -16
  27. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  28. package/fesm2022/ng-nest-ui-carousel.mjs +68 -46
  29. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  30. package/fesm2022/ng-nest-ui-cascade.mjs +121 -73
  31. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  32. package/fesm2022/ng-nest-ui-checkbox.mjs +54 -38
  33. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  34. package/fesm2022/ng-nest-ui-collapse.mjs +38 -30
  35. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  36. package/fesm2022/ng-nest-ui-color-picker.mjs +119 -72
  37. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  38. package/fesm2022/ng-nest-ui-color.mjs +22 -16
  39. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  40. package/fesm2022/ng-nest-ui-comment.mjs +23 -21
  41. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  42. package/fesm2022/ng-nest-ui-container.mjs +40 -37
  43. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  44. package/fesm2022/ng-nest-ui-contextmenu.mjs +71 -45
  45. package/fesm2022/ng-nest-ui-contextmenu.mjs.map +1 -1
  46. package/fesm2022/ng-nest-ui-core.mjs +24 -21
  47. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  48. package/fesm2022/ng-nest-ui-coversations.mjs +25 -18
  49. package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
  50. package/fesm2022/ng-nest-ui-crumb.mjs +15 -13
  51. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  52. package/fesm2022/ng-nest-ui-date-picker.mjs +425 -256
  53. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  54. package/fesm2022/ng-nest-ui-description.mjs +42 -31
  55. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  56. package/fesm2022/ng-nest-ui-dialog.mjs +106 -82
  57. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  58. package/fesm2022/ng-nest-ui-divider.mjs +24 -17
  59. package/fesm2022/ng-nest-ui-divider.mjs.map +1 -1
  60. package/fesm2022/ng-nest-ui-doc.mjs +7 -7
  61. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  62. package/fesm2022/ng-nest-ui-drawer.mjs +52 -43
  63. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  64. package/fesm2022/ng-nest-ui-dropdown.mjs +94 -58
  65. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  66. package/fesm2022/ng-nest-ui-empty.mjs +14 -12
  67. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  68. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  69. package/fesm2022/ng-nest-ui-find.mjs +111 -71
  70. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  71. package/fesm2022/ng-nest-ui-form.mjs +45 -33
  72. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  73. package/fesm2022/ng-nest-ui-highlight.mjs +26 -20
  74. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  75. package/fesm2022/ng-nest-ui-i18n.mjs +16 -15
  76. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  77. package/fesm2022/ng-nest-ui-icon.mjs +28 -21
  78. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  79. package/fesm2022/ng-nest-ui-image.mjs +57 -51
  80. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  81. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  82. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  83. package/fesm2022/ng-nest-ui-input-number.mjs +63 -42
  84. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  85. package/fesm2022/ng-nest-ui-input.mjs +130 -85
  86. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  87. package/fesm2022/ng-nest-ui-keyword.mjs +19 -15
  88. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  89. package/fesm2022/ng-nest-ui-layout.mjs +37 -31
  90. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  91. package/fesm2022/ng-nest-ui-link.mjs +23 -18
  92. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  93. package/fesm2022/ng-nest-ui-list.mjs +137 -89
  94. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  95. package/fesm2022/ng-nest-ui-loading.mjs +36 -25
  96. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  97. package/fesm2022/ng-nest-ui-menu.mjs +68 -45
  98. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  99. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  100. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  101. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  102. package/fesm2022/ng-nest-ui-outlet.mjs +11 -9
  103. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  104. package/fesm2022/ng-nest-ui-page-header.mjs +20 -15
  105. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  106. package/fesm2022/ng-nest-ui-pagination.mjs +69 -48
  107. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  108. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  109. package/fesm2022/ng-nest-ui-popconfirm.mjs +40 -27
  110. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  111. package/fesm2022/ng-nest-ui-popover.mjs +57 -38
  112. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  113. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  114. package/fesm2022/ng-nest-ui-progress.mjs +60 -41
  115. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  116. package/fesm2022/ng-nest-ui-prompts.mjs +18 -15
  117. package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -1
  118. package/fesm2022/ng-nest-ui-radio.mjs +50 -35
  119. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  120. package/fesm2022/ng-nest-ui-rate.mjs +43 -29
  121. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  122. package/fesm2022/ng-nest-ui-resizable.mjs +18 -16
  123. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  124. package/fesm2022/ng-nest-ui-result.mjs +22 -16
  125. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  126. package/fesm2022/ng-nest-ui-ripple.mjs +14 -13
  127. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  128. package/fesm2022/ng-nest-ui-scrollable.mjs +41 -24
  129. package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
  130. package/fesm2022/ng-nest-ui-select.mjs +197 -118
  131. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  132. package/fesm2022/ng-nest-ui-sender.mjs +43 -31
  133. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  134. package/fesm2022/ng-nest-ui-skeleton.mjs +17 -15
  135. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  136. package/fesm2022/ng-nest-ui-slider-select.mjs +85 -53
  137. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  138. package/fesm2022/ng-nest-ui-slider.mjs +58 -37
  139. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  140. package/fesm2022/ng-nest-ui-splitter.mjs +32 -24
  141. package/fesm2022/ng-nest-ui-splitter.mjs.map +1 -1
  142. package/fesm2022/ng-nest-ui-statistic.mjs +44 -30
  143. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  144. package/fesm2022/ng-nest-ui-steps.mjs +30 -22
  145. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  146. package/fesm2022/ng-nest-ui-suggestion.mjs +23 -20
  147. package/fesm2022/ng-nest-ui-suggestion.mjs.map +1 -1
  148. package/fesm2022/ng-nest-ui-switch.mjs +35 -25
  149. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  150. package/fesm2022/ng-nest-ui-table-view.mjs +78 -69
  151. package/fesm2022/ng-nest-ui-table-view.mjs.map +1 -1
  152. package/fesm2022/ng-nest-ui-table.mjs +320 -205
  153. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  154. package/fesm2022/ng-nest-ui-tabs.mjs +74 -56
  155. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  156. package/fesm2022/ng-nest-ui-tag.mjs +30 -23
  157. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  158. package/fesm2022/ng-nest-ui-text-retract.mjs +19 -15
  159. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  160. package/fesm2022/ng-nest-ui-textarea.mjs +69 -44
  161. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  162. package/fesm2022/ng-nest-ui-theme.mjs +34 -23
  163. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  164. package/fesm2022/ng-nest-ui-thought-chain.mjs +26 -19
  165. package/fesm2022/ng-nest-ui-thought-chain.mjs.map +1 -1
  166. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  167. package/fesm2022/ng-nest-ui-time-picker.mjs +164 -96
  168. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  169. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  170. package/fesm2022/ng-nest-ui-timeline.mjs +26 -19
  171. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  172. package/fesm2022/ng-nest-ui-tooltip.mjs +53 -35
  173. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  174. package/fesm2022/ng-nest-ui-transfer.mjs +66 -40
  175. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  176. package/fesm2022/ng-nest-ui-tree-file.mjs +39 -28
  177. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  178. package/fesm2022/ng-nest-ui-tree-select.mjs +186 -111
  179. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  180. package/fesm2022/ng-nest-ui-tree.mjs +166 -105
  181. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  182. package/fesm2022/ng-nest-ui-typography.mjs +16 -13
  183. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  184. package/fesm2022/ng-nest-ui-upload.mjs +81 -53
  185. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  186. package/fesm2022/ng-nest-ui-watermark.mjs +45 -35
  187. package/fesm2022/ng-nest-ui-watermark.mjs.map +1 -1
  188. package/fesm2022/ng-nest-ui-welcome.mjs +22 -16
  189. package/fesm2022/ng-nest-ui-welcome.mjs.map +1 -1
  190. package/package.json +3 -2
  191. package/types/ng-nest-ui-base-form.d.ts +3 -3
  192. package/types/ng-nest-ui-carousel.d.ts +1 -1
  193. package/types/ng-nest-ui-container.d.ts +1 -1
  194. package/types/ng-nest-ui-core.d.ts +1 -1
  195. package/types/ng-nest-ui-dialog.d.ts +1 -1
  196. package/types/ng-nest-ui-drawer.d.ts +1 -1
  197. package/types/ng-nest-ui-form.d.ts +12 -12
  198. package/types/ng-nest-ui-layout.d.ts +1 -1
  199. package/types/ng-nest-ui-list.d.ts +1 -1
  200. package/types/ng-nest-ui-portal.d.ts +3 -3
  201. package/types/ng-nest-ui-table-view.d.ts +1 -1
  202. package/types/ng-nest-ui-table.d.ts +1 -1
  203. package/types/ng-nest-ui-tabs.d.ts +1 -1
  204. package/types/ng-nest-ui-tree.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-image.mjs","sources":["../../../../lib/ng-nest/ui/image/image.property.ts","../../../../lib/ng-nest/ui/image/image-preview.component.ts","../../../../lib/ng-nest/ui/image/image-preview.component.html","../../../../lib/ng-nest/ui/image/image-group.token.ts","../../../../lib/ng-nest/ui/image/image.component.ts","../../../../lib/ng-nest/ui/image/image.component.html","../../../../lib/ng-nest/ui/image/image-group.component.ts","../../../../lib/ng-nest/ui/image/image-group.component.html","../../../../lib/ng-nest/ui/image/image.module.ts","../../../../lib/ng-nest/ui/image/ng-nest-ui-image.ts"],"sourcesContent":["import { Component, input, InputSignal, output } from '@angular/core';\r\nimport { XProperty, XPropertyFunction, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport type { XNumber, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Image\r\n * @selector x-image\r\n * @decorator component\r\n */\r\nexport const XImagePrefix = 'x-image';\r\nconst X_IMAGE_CONFIG_NAME = 'image';\r\n\r\n/**\r\n * Image Property\r\n */\r\n@Component({ selector: `${XImagePrefix}-property`, template: '' })\r\nexport class XImageProperty extends XPropertyFunction(X_IMAGE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 图片显示地址\r\n * @en_US Picture display address\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly src = input<string>();\r\n /**\r\n * @zh_CN 图片宽度\r\n * @en_US Picture width\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly width = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 图片高度\r\n * @en_US Picture height\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly height = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 图像描述\r\n * @en_US Image description\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * alt=\"ng-nest-admin-light\"\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly alt = input<string>();\r\n /**\r\n * @zh_CN 加载失败显示的地址\r\n * @en_US Load fault tolerance address\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"error\"\r\n * fallback=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg==\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly fallback = input<string>();\r\n /**\r\n * @zh_CN 预览文字\r\n * @en_US Preview text\r\n * @default '预览'\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * previewText=\"查看\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly previewText = input<string>(this.config?.previewText!);\r\n /**\r\n * @zh_CN 渐进加载显示的图片地址\r\n * @en_US Progressive loading image addresses\r\n */\r\n readonly placeholder = input<string>();\r\n /**\r\n * @zh_CN 自定义预览操作\r\n * @en_US Custom preview operation\r\n */\r\n readonly previewTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 图片加载错误\r\n * @en_US Picture load failed\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"error\"\r\n * (error)=\"onError($event)\"\r\n * ></x-image>\r\n * ```\r\n *\r\n * ```typescript\r\n * onError(event: ErrorEvent) {\r\n * console.log(event)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly error = output<ErrorEvent>();\r\n /**\r\n * @zh_CN 图片加载完成\r\n * @en_US Picture loading complete\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * (load)=\"onLoad($event)\"\r\n * ></x-image>\r\n * ```\r\n *\r\n * ```typescript\r\n * onLoad(event: Event) {\r\n * console.log(event)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly load = output<Event>();\r\n}\r\n\r\n/**\r\n * @zh_CN 图片节点数据\r\n * @en_US Image node data\r\n */\r\nexport interface XImageNode {\r\n /**\r\n * @zh_CN 图片显示地址\r\n * @en_US Picture display address\r\n */\r\n src?: string;\r\n /**\r\n * @zh_CN 图像描述\r\n * @en_US Image description\r\n */\r\n alt?: string;\r\n /**\r\n * @zh_CN 加载失败显示的地址\r\n * @en_US Load fault tolerance address\r\n */\r\n fallback?: string;\r\n /**\r\n * @zh_CN 当前激活的图片\r\n * @en_US Current activated pictures\r\n */\r\n activated?: boolean;\r\n}\r\n\r\n/**\r\n * Image Preview\r\n * @selector x-image-preview\r\n * @decorator component\r\n */\r\nexport const XImagePreviewPrefix = 'x-image-preview';\r\n\r\n/**\r\n * Image Preview Property\r\n */\r\n@Component({ selector: `${XImagePreviewPrefix}-property`, template: '' })\r\nexport class XImagePreviewProperty extends XProperty {}\r\n\r\n/**\r\n * Image Group\r\n * @selector x-image-group\r\n * @decorator component\r\n */\r\nexport const XImageGroupPrefix = 'x-image-group';\r\n\r\n/**\r\n * @zh_CN 图片组件定义\r\n * @en_US Image component definition\r\n */\r\nexport interface XImageHandle {\r\n src: InputSignal<string | undefined>;\r\n alt: InputSignal<string | undefined>;\r\n fallback: InputSignal<string | undefined>;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n OnInit,\r\n signal,\r\n computed,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XImageNode, XImagePreviewPrefix, XImagePreviewProperty } from './image.property';\r\nimport { XDialogCloseDirective, X_DIALOG_DATA } from '@ng-nest/ui/dialog';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n selector: `${XImagePreviewPrefix}`,\r\n imports: [XIconComponent, DragDropModule, XDialogCloseDirective],\r\n templateUrl: './image-preview.component.html',\r\n styleUrls: ['./image-preview.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImagePreviewComponent extends XImagePreviewProperty implements OnInit {\r\n imgScale3d = signal({\r\n x: 1,\r\n y: 1,\r\n z: 1\r\n });\r\n rotate = signal(0);\r\n\r\n position = signal({\r\n x: 0,\r\n y: 0\r\n });\r\n\r\n activated = signal<XImageNode | undefined>(undefined);\r\n total = signal(1);\r\n current = signal(1);\r\n\r\n private document = inject(DOCUMENT);\r\n\r\n wrapperTransform = computed(() => {\r\n return `translate3d(${this.position().x}px, ${this.position().y}px, 0)`;\r\n });\r\n imgTransform = computed(() => {\r\n return `scale3d(${this.imgScale3d().x}, ${this.imgScale3d().y}, ${this.imgScale3d().z}) rotate(${this.rotate()}deg)`;\r\n });\r\n\r\n imageRef = viewChild.required<ElementRef<HTMLImageElement>>('imageRef');\r\n\r\n data = inject<XImageNode[]>(X_DIALOG_DATA);\r\n\r\n ngOnInit() {\r\n this.setActivated();\r\n }\r\n\r\n initialization() {\r\n this.imgScale3d.set({\r\n x: 1,\r\n y: 1,\r\n z: 1\r\n });\r\n this.rotate.set(0);\r\n this.position.set({\r\n x: 0,\r\n y: 0\r\n });\r\n }\r\n\r\n setActivated() {\r\n if (!this.data) return;\r\n if (this.data.length === 1) {\r\n this.activated.set(this.data[0]);\r\n this.total.set(1);\r\n this.current.set(1);\r\n } else {\r\n this.total.set(this.data.length);\r\n this.activated.set(\r\n this.data.find((x, index) => {\r\n if (x.activated) {\r\n this.current.set(index + 1);\r\n return true;\r\n }\r\n return false;\r\n })\r\n );\r\n }\r\n }\r\n\r\n onCurrentChange(num: number) {\r\n this.current.update((x) => x + num);\r\n this.activated.set(this.data[this.current() - 1]);\r\n this.initialization();\r\n }\r\n\r\n onRotate(deg: number) {\r\n this.rotate.update((x) => x + deg);\r\n }\r\n\r\n onScale(zoom: number) {\r\n const currentScale = this.imgScale3d().x;\r\n let newScale: number;\r\n \r\n if (zoom > 0) {\r\n // �Ŵ�ʹ��ָ�����������������ֵ\r\n newScale = Math.min(currentScale * 1.2, 5);\r\n } else {\r\n // ��С��ʹ��ָ�����٣���������Сֵ\r\n newScale = Math.max(currentScale / 1.2, 0.1);\r\n }\r\n \r\n if (newScale !== currentScale) {\r\n this.imgScale3d.update((item) => {\r\n item.x = newScale;\r\n item.y = newScale;\r\n return { ...item };\r\n });\r\n // ���ź����¼���λ�ã���ֹͼƬ�����߽�\r\n setTimeout(() => this.adjustPosition(), 0);\r\n }\r\n }\r\n\r\n onWheel(event: WheelEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n \r\n const delta = event.deltaY > 0 ? -1 : 1;\r\n this.onScale(delta);\r\n }\r\n\r\n onDragReleased() {\r\n this.adjustPosition();\r\n }\r\n\r\n private adjustPosition() {\r\n const img = this.imageRef().nativeElement;\r\n const scale = this.imgScale3d().x;\r\n const rotation = this.rotate() % 360;\r\n \r\n // ��ȡͼƬ��ԭʼ�ߴ�\r\n const imgWidth = img.naturalWidth || img.offsetWidth;\r\n const imgHeight = img.naturalHeight || img.offsetHeight;\r\n \r\n // �������ź�ijߴ�\r\n let scaledWidth = imgWidth * scale;\r\n let scaledHeight = imgHeight * scale;\r\n \r\n // ���ͼƬ��ת��90�Ȼ�270�ȣ���������\r\n const isRotated = Math.abs(rotation) === 90 || Math.abs(rotation) === 270;\r\n if (isRotated) {\r\n [scaledWidth, scaledHeight] = [scaledHeight, scaledWidth];\r\n }\r\n \r\n // ��ȡ�����ߴ�\r\n const containerWidth = this.document.documentElement.clientWidth;\r\n const containerHeight = this.document.documentElement.clientHeight;\r\n \r\n // ��ȡ��ǰͼƬ��λ��\r\n const rect = img.getBoundingClientRect();\r\n const currentX = this.position().x;\r\n const currentY = this.position().y;\r\n \r\n // ����ͼƬ���ĵ�������������ĵ�ƫ��\r\n const imgCenterX = rect.left + rect.width / 2;\r\n const imgCenterY = rect.top + rect.height / 2;\r\n const containerCenterX = containerWidth / 2;\r\n const containerCenterY = containerHeight / 2;\r\n \r\n let newX = currentX;\r\n let newY = currentY;\r\n \r\n // ���ͼƬ��������������ק��Χ\r\n if (scaledWidth > containerWidth) {\r\n const maxOffsetX = (scaledWidth - containerWidth) / 2;\r\n const offsetX = imgCenterX - containerCenterX;\r\n \r\n if (offsetX > maxOffsetX) {\r\n newX = currentX - (offsetX - maxOffsetX);\r\n } else if (offsetX < -maxOffsetX) {\r\n newX = currentX - (offsetX + maxOffsetX);\r\n }\r\n } else {\r\n // ���ͼƬ������С��������ʾ\r\n newX = 0;\r\n }\r\n \r\n if (scaledHeight > containerHeight) {\r\n const maxOffsetY = (scaledHeight - containerHeight) / 2;\r\n const offsetY = imgCenterY - containerCenterY;\r\n \r\n if (offsetY > maxOffsetY) {\r\n newY = currentY - (offsetY - maxOffsetY);\r\n } else if (offsetY < -maxOffsetY) {\r\n newY = currentY - (offsetY + maxOffsetY);\r\n }\r\n } else {\r\n // ���ͼƬ������С��������ʾ\r\n newY = 0;\r\n }\r\n \r\n this.position.set({ x: newX, y: newY });\r\n }\r\n}\r\n","<div class=\"x-image-preview\">\r\n <div class=\"x-image-preview-header\">\r\n <div class=\"x-image-preview-header-left\">\r\n @if (total() != 1) {\r\n <span class=\"x-image-preview-current\">{{ current() }} / {{ total() }}</span>\r\n }\r\n </div>\r\n <div class=\"x-image-preview-header-center\">\r\n <x-icon type=\"fto-corner-up-left\" (click)=\"onRotate(-90)\"></x-icon>\r\n <x-icon type=\"fto-corner-up-right\" (click)=\"onRotate(90)\"></x-icon>\r\n <x-icon\r\n type=\"fto-zoom-out\"\r\n [class.x-image-preview-disabled]=\"imgScale3d().x <= 0.1\"\r\n (click)=\"imgScale3d().x > 0.1 && onScale(-1)\"\r\n ></x-icon>\r\n <x-icon type=\"fto-zoom-in\" [class.x-image-preview-disabled]=\"imgScale3d().x >= 5\" (click)=\"imgScale3d().x < 5 && onScale(1)\"></x-icon>\r\n </div>\r\n <div class=\"x-image-preview-header-right\">\r\n <x-icon type=\"fto-x\" x-dialog-close></x-icon>\r\n </div>\r\n </div>\r\n <div\r\n class=\"x-image-preview-wrapper\"\r\n cdkDrag\r\n [style.transform]=\"wrapperTransform()\"\r\n [cdkDragFreeDragPosition]=\"position()\"\r\n (cdkDragReleased)=\"onDragReleased()\"\r\n (wheel)=\"onWheel($event)\"\r\n >\r\n <img\r\n #imageRef\r\n [src]=\"activated()?.src!\"\r\n [attr.alt]=\"activated()?.alt!\"\r\n cdkDragHandle\r\n [style.transform]=\"imgTransform()\"\r\n />\r\n </div>\r\n @if (data && data.length > 1) {\r\n <div\r\n [class.x-image-preview-disabled]=\"current() === 1\"\r\n class=\"x-image-preview-left\"\r\n (click)=\"current() > 1 && onCurrentChange(-1)\"\r\n >\r\n <x-icon type=\"fto-chevron-left\"></x-icon>\r\n </div>\r\n <div\r\n [class.x-image-preview-disabled]=\"current() === total()\"\r\n class=\"x-image-preview-right\"\r\n (click)=\"current() != total() && onCurrentChange(1)\"\r\n >\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </div>\r\n }\r\n</div>\r\n","import { InjectionToken, WritableSignal } from '@angular/core';\r\nimport type { XImageHandle } from './image.property';\r\n\r\nexport interface XImageGroupContext {\r\n images: WritableSignal<XImageHandle[]>;\r\n addImage(image: XImageHandle): void;\r\n removeImage(image: XImageHandle): void;\r\n}\r\n\r\nexport const X_IMAGE_GROUP_CONTEXT = new InjectionToken<XImageGroupContext>('X_IMAGE_GROUP_CONTEXT');\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n inject,\r\n computed,\r\n signal,\r\n OnDestroy,\r\n effect\r\n} from '@angular/core';\r\nimport { XImageHandle, XImageNode, XImagePrefix, XImageProperty } from './image.property';\r\nimport { XConfigService } from '@ng-nest/ui/core';\r\nimport { XDialogService } from '@ng-nest/ui/dialog';\r\nimport { XImagePreviewComponent } from './image-preview.component';\r\nimport { XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { map } from 'rxjs';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { X_IMAGE_GROUP_CONTEXT } from './image-group.token';\r\n\r\n@Component({\r\n selector: `${XImagePrefix}`,\r\n imports: [XIconComponent, XOutletDirective],\r\n templateUrl: './image.component.html',\r\n styleUrls: ['./image.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImageComponent extends XImageProperty implements OnInit, OnDestroy, XImageHandle {\r\n private dialog = inject(XDialogService);\r\n private i18n = inject(XI18nService);\r\n private group = inject(X_IMAGE_GROUP_CONTEXT, { optional: true });\r\n configService = inject(XConfigService);\r\n isError = signal(false);\r\n isLoaded = signal(false);\r\n\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.image!)), { initialValue: zh_CN.image });\r\n\r\n previewTextSignal = computed(() => {\r\n return this.previewText() || this.locale().previewText;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.src();\r\n this.isLoaded.set(false);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.group && this.group.addImage(this);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.group && this.group.removeImage(this);\r\n }\r\n\r\n onPreview() {\r\n let data: XImageNode[] = [];\r\n if (this.group) {\r\n const activatedIndex = this.group.images().indexOf(this);\r\n data = this.group.images().map((x, index) => ({\r\n src: x.src(),\r\n alt: x.alt(),\r\n fallback: x.fallback(),\r\n activated: index === activatedIndex\r\n }));\r\n } else {\r\n data = [{ src: this.src(), alt: this.alt(), fallback: this.fallback() }];\r\n }\r\n this.dialog.create(XImagePreviewComponent, {\r\n width: '100%',\r\n height: '100%',\r\n className: 'x-image-preview-portal',\r\n data\r\n });\r\n }\r\n\r\n onError(event: ErrorEvent) {\r\n this.isError.set(true);\r\n this.error.emit(event);\r\n }\r\n\r\n onLoad(event: Event) {\r\n this.isLoaded.set(true);\r\n this.isError.set(false);\r\n this.load.emit(event);\r\n }\r\n}\r\n","<div class=\"x-image\">\r\n <img\r\n [hidden]=\"(placeholder() && !isLoaded()) || isError()\"\r\n class=\"x-image-img\"\r\n [src]=\"src()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [attr.alt]=\"alt()\"\r\n (error)=\"onError($event)\"\r\n (load)=\"onLoad($event)\"\r\n />\r\n @if (placeholder() && !isLoaded()) {\r\n <img class=\"x-image-img\" [src]=\"placeholder()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && fallback()) {\r\n <img class=\"x-image-img x-image-fallback\" [src]=\"fallback()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && !fallback()) {\r\n <div class=\"x-image-error-icon\" [style.width]=\"width()\" [style.height]=\"height()\">\r\n <x-icon type=\"fto-image\"></x-icon>\r\n </div>\r\n }\r\n @if (previewTpl()) {\r\n <div class=\"x-image-overlay\">\r\n <ng-container *xOutlet=\"previewTpl(); context: { $image: this }\"> </ng-container>\r\n </div>\r\n } @else {\r\n @if (!isError()) {\r\n <div class=\"x-image-overlay\" (click)=\"onPreview()\">\r\n <div class=\"x-image-text\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n <span>{{ previewTextSignal() }}</span>\r\n </div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, signal } from '@angular/core';\r\nimport { XImageGroupPrefix, XImageHandle } from './image.property';\r\nimport { X_IMAGE_GROUP_CONTEXT, XImageGroupContext } from './image-group.token';\r\n\r\n@Component({\r\n selector: `${XImageGroupPrefix}`,\r\n templateUrl: './image-group.component.html',\r\n styleUrls: ['./image-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_IMAGE_GROUP_CONTEXT,\r\n useExisting: XImageGroupComponent\r\n }\r\n ]\r\n})\r\nexport class XImageGroupComponent implements XImageGroupContext {\r\n images = signal<XImageHandle[]>([]);\r\n\r\n addImage(image: XImageHandle): void {\r\n this.images.update((x) => {\r\n x.push(image);\r\n return [...x];\r\n });\r\n }\r\n\r\n removeImage(image: XImageHandle): void {\r\n this.images.update((x) => {\r\n x.splice(x.indexOf(image), 1);\r\n return [...x];\r\n });\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XImageComponent } from './image.component';\r\nimport { XImagePreviewComponent } from './image-preview.component';\r\nimport { XImageGroupComponent } from './image-group.component';\r\n\r\n@NgModule({\r\n exports: [XImageComponent, XImagePreviewComponent, XImageGroupComponent],\r\n imports: [XImageComponent, XImagePreviewComponent, XImageGroupComponent]\r\n})\r\nexport class XImageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-image.mjs","sources":["../../../../lib/ng-nest/ui/image/image.property.ts","../../../../lib/ng-nest/ui/image/image-preview.component.ts","../../../../lib/ng-nest/ui/image/image-preview.component.html","../../../../lib/ng-nest/ui/image/image-group.token.ts","../../../../lib/ng-nest/ui/image/image.component.ts","../../../../lib/ng-nest/ui/image/image.component.html","../../../../lib/ng-nest/ui/image/image-group.component.ts","../../../../lib/ng-nest/ui/image/image-group.component.html","../../../../lib/ng-nest/ui/image/image.module.ts","../../../../lib/ng-nest/ui/image/ng-nest-ui-image.ts"],"sourcesContent":["import { Component, input, InputSignal, output } from '@angular/core';\r\nimport { XProperty, XPropertyFunction, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport type { XNumber, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Image\r\n * @selector x-image\r\n * @decorator component\r\n */\r\nexport const XImagePrefix = 'x-image';\r\nconst X_IMAGE_CONFIG_NAME = 'image';\r\n\r\n/**\r\n * Image Property\r\n */\r\n@Component({ selector: `${XImagePrefix}-property`, template: '' })\r\nexport class XImageProperty extends XPropertyFunction(X_IMAGE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 图片显示地址\r\n * @en_US Picture display address\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly src = input<string>();\r\n /**\r\n * @zh_CN 图片宽度\r\n * @en_US Picture width\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly width = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 图片高度\r\n * @en_US Picture height\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly height = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 图像描述\r\n * @en_US Image description\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * alt=\"ng-nest-admin-light\"\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly alt = input<string>();\r\n /**\r\n * @zh_CN 加载失败显示的地址\r\n * @en_US Load fault tolerance address\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"error\"\r\n * fallback=\"data:image/png;base64,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\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly fallback = input<string>();\r\n /**\r\n * @zh_CN 预览文字\r\n * @en_US Preview text\r\n * @default '预览'\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * previewText=\"查看\"\r\n * ></x-image>\r\n * ```\r\n *\r\n */\r\n readonly previewText = input<string>(this.config?.previewText!);\r\n /**\r\n * @zh_CN 渐进加载显示的图片地址\r\n * @en_US Progressive loading image addresses\r\n */\r\n readonly placeholder = input<string>();\r\n /**\r\n * @zh_CN 自定义预览操作\r\n * @en_US Custom preview operation\r\n */\r\n readonly previewTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 图片加载错误\r\n * @en_US Picture load failed\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"error\"\r\n * (error)=\"onError($event)\"\r\n * ></x-image>\r\n * ```\r\n *\r\n * ```typescript\r\n * onError(event: ErrorEvent) {\r\n * console.log(event)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly error = output<ErrorEvent>();\r\n /**\r\n * @zh_CN 图片加载完成\r\n * @en_US Picture loading complete\r\n * @example\r\n *\r\n * ```html\r\n * <x-image\r\n * width=\"100px\"\r\n * height=\"100px\"\r\n * src=\"https://ngnest.com/static/docs/course/rbac/1-introduction/demo/1__ng-nest-admin/light.png\"\r\n * (load)=\"onLoad($event)\"\r\n * ></x-image>\r\n * ```\r\n *\r\n * ```typescript\r\n * onLoad(event: Event) {\r\n * console.log(event)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly load = output<Event>();\r\n}\r\n\r\n/**\r\n * @zh_CN 图片节点数据\r\n * @en_US Image node data\r\n */\r\nexport interface XImageNode {\r\n /**\r\n * @zh_CN 图片显示地址\r\n * @en_US Picture display address\r\n */\r\n src?: string;\r\n /**\r\n * @zh_CN 图像描述\r\n * @en_US Image description\r\n */\r\n alt?: string;\r\n /**\r\n * @zh_CN 加载失败显示的地址\r\n * @en_US Load fault tolerance address\r\n */\r\n fallback?: string;\r\n /**\r\n * @zh_CN 当前激活的图片\r\n * @en_US Current activated pictures\r\n */\r\n activated?: boolean;\r\n}\r\n\r\n/**\r\n * Image Preview\r\n * @selector x-image-preview\r\n * @decorator component\r\n */\r\nexport const XImagePreviewPrefix = 'x-image-preview';\r\n\r\n/**\r\n * Image Preview Property\r\n */\r\n@Component({ selector: `${XImagePreviewPrefix}-property`, template: '' })\r\nexport class XImagePreviewProperty extends XProperty {}\r\n\r\n/**\r\n * Image Group\r\n * @selector x-image-group\r\n * @decorator component\r\n */\r\nexport const XImageGroupPrefix = 'x-image-group';\r\n\r\n/**\r\n * @zh_CN 图片组件定义\r\n * @en_US Image component definition\r\n */\r\nexport interface XImageHandle {\r\n src: InputSignal<string | undefined>;\r\n alt: InputSignal<string | undefined>;\r\n fallback: InputSignal<string | undefined>;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n OnInit,\r\n signal,\r\n computed,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XImageNode, XImagePreviewPrefix, XImagePreviewProperty } from './image.property';\r\nimport { XDialogCloseDirective, X_DIALOG_DATA } from '@ng-nest/ui/dialog';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n selector: `${XImagePreviewPrefix}`,\r\n imports: [XIconComponent, DragDropModule, XDialogCloseDirective],\r\n templateUrl: './image-preview.component.html',\r\n styleUrls: ['./image-preview.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImagePreviewComponent extends XImagePreviewProperty implements OnInit {\r\n imgScale3d = signal({\r\n x: 1,\r\n y: 1,\r\n z: 1\r\n });\r\n rotate = signal(0);\r\n\r\n position = signal({\r\n x: 0,\r\n y: 0\r\n });\r\n\r\n activated = signal<XImageNode | undefined>(undefined);\r\n total = signal(1);\r\n current = signal(1);\r\n\r\n private document = inject(DOCUMENT);\r\n\r\n wrapperTransform = computed(() => {\r\n return `translate3d(${this.position().x}px, ${this.position().y}px, 0)`;\r\n });\r\n imgTransform = computed(() => {\r\n return `scale3d(${this.imgScale3d().x}, ${this.imgScale3d().y}, ${this.imgScale3d().z}) rotate(${this.rotate()}deg)`;\r\n });\r\n\r\n imageRef = viewChild.required<ElementRef<HTMLImageElement>>('imageRef');\r\n\r\n data = inject<XImageNode[]>(X_DIALOG_DATA);\r\n\r\n ngOnInit() {\r\n this.setActivated();\r\n }\r\n\r\n initialization() {\r\n this.imgScale3d.set({\r\n x: 1,\r\n y: 1,\r\n z: 1\r\n });\r\n this.rotate.set(0);\r\n this.position.set({\r\n x: 0,\r\n y: 0\r\n });\r\n }\r\n\r\n setActivated() {\r\n if (!this.data) return;\r\n if (this.data.length === 1) {\r\n this.activated.set(this.data[0]);\r\n this.total.set(1);\r\n this.current.set(1);\r\n } else {\r\n this.total.set(this.data.length);\r\n this.activated.set(\r\n this.data.find((x, index) => {\r\n if (x.activated) {\r\n this.current.set(index + 1);\r\n return true;\r\n }\r\n return false;\r\n })\r\n );\r\n }\r\n }\r\n\r\n onCurrentChange(num: number) {\r\n this.current.update((x) => x + num);\r\n this.activated.set(this.data[this.current() - 1]);\r\n this.initialization();\r\n }\r\n\r\n onRotate(deg: number) {\r\n this.rotate.update((x) => x + deg);\r\n }\r\n\r\n onScale(zoom: number) {\r\n const currentScale = this.imgScale3d().x;\r\n let newScale: number;\r\n\r\n if (zoom > 0) {\r\n newScale = Math.min(currentScale * 1.2, 5);\r\n } else {\r\n newScale = Math.max(currentScale / 1.2, 0.1);\r\n }\r\n\r\n if (newScale !== currentScale) {\r\n this.imgScale3d.update((item) => {\r\n item.x = newScale;\r\n item.y = newScale;\r\n return { ...item };\r\n });\r\n setTimeout(() => this.adjustPosition(), 0);\r\n }\r\n }\r\n\r\n onWheel(event: WheelEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const delta = event.deltaY > 0 ? -1 : 1;\r\n this.onScale(delta);\r\n }\r\n\r\n onDragReleased() {\r\n this.adjustPosition();\r\n }\r\n\r\n private adjustPosition() {\r\n const img = this.imageRef().nativeElement;\r\n const scale = this.imgScale3d().x;\r\n const rotation = this.rotate() % 360;\r\n\r\n const imgWidth = img.naturalWidth || img.offsetWidth;\r\n const imgHeight = img.naturalHeight || img.offsetHeight;\r\n\r\n let scaledWidth = imgWidth * scale;\r\n let scaledHeight = imgHeight * scale;\r\n\r\n const isRotated = Math.abs(rotation) === 90 || Math.abs(rotation) === 270;\r\n if (isRotated) {\r\n [scaledWidth, scaledHeight] = [scaledHeight, scaledWidth];\r\n }\r\n\r\n const containerWidth = this.document.documentElement.clientWidth;\r\n const containerHeight = this.document.documentElement.clientHeight;\r\n\r\n const rect = img.getBoundingClientRect();\r\n const currentX = this.position().x;\r\n const currentY = this.position().y;\r\n\r\n const imgCenterX = rect.left + rect.width / 2;\r\n const imgCenterY = rect.top + rect.height / 2;\r\n const containerCenterX = containerWidth / 2;\r\n const containerCenterY = containerHeight / 2;\r\n\r\n let newX = currentX;\r\n let newY = currentY;\r\n\r\n if (scaledWidth > containerWidth) {\r\n const maxOffsetX = (scaledWidth - containerWidth) / 2;\r\n const offsetX = imgCenterX - containerCenterX;\r\n\r\n if (offsetX > maxOffsetX) {\r\n newX = currentX - (offsetX - maxOffsetX);\r\n } else if (offsetX < -maxOffsetX) {\r\n newX = currentX - (offsetX + maxOffsetX);\r\n }\r\n } else {\r\n newX = 0;\r\n }\r\n\r\n if (scaledHeight > containerHeight) {\r\n const maxOffsetY = (scaledHeight - containerHeight) / 2;\r\n const offsetY = imgCenterY - containerCenterY;\r\n\r\n if (offsetY > maxOffsetY) {\r\n newY = currentY - (offsetY - maxOffsetY);\r\n } else if (offsetY < -maxOffsetY) {\r\n newY = currentY - (offsetY + maxOffsetY);\r\n }\r\n } else {\r\n newY = 0;\r\n }\r\n\r\n this.position.set({ x: newX, y: newY });\r\n }\r\n}\r\n","<div class=\"x-image-preview\">\r\n <div class=\"x-image-preview-header\">\r\n <div class=\"x-image-preview-header-left\">\r\n @if (total() != 1) {\r\n <span class=\"x-image-preview-current\">{{ current() }} / {{ total() }}</span>\r\n }\r\n </div>\r\n <div class=\"x-image-preview-header-center\">\r\n <x-icon type=\"fto-corner-up-left\" (click)=\"onRotate(-90)\"></x-icon>\r\n <x-icon type=\"fto-corner-up-right\" (click)=\"onRotate(90)\"></x-icon>\r\n <x-icon\r\n type=\"fto-zoom-out\"\r\n [class.x-image-preview-disabled]=\"imgScale3d().x <= 0.1\"\r\n (click)=\"imgScale3d().x > 0.1 && onScale(-1)\"\r\n ></x-icon>\r\n <x-icon type=\"fto-zoom-in\" [class.x-image-preview-disabled]=\"imgScale3d().x >= 5\" (click)=\"imgScale3d().x < 5 && onScale(1)\"></x-icon>\r\n </div>\r\n <div class=\"x-image-preview-header-right\">\r\n <x-icon type=\"fto-x\" x-dialog-close></x-icon>\r\n </div>\r\n </div>\r\n <div\r\n class=\"x-image-preview-wrapper\"\r\n cdkDrag\r\n [style.transform]=\"wrapperTransform()\"\r\n [cdkDragFreeDragPosition]=\"position()\"\r\n (cdkDragReleased)=\"onDragReleased()\"\r\n (wheel)=\"onWheel($event)\"\r\n >\r\n <img\r\n #imageRef\r\n [src]=\"activated()?.src!\"\r\n [attr.alt]=\"activated()?.alt!\"\r\n cdkDragHandle\r\n [style.transform]=\"imgTransform()\"\r\n />\r\n </div>\r\n @if (data && data.length > 1) {\r\n <div\r\n [class.x-image-preview-disabled]=\"current() === 1\"\r\n class=\"x-image-preview-left\"\r\n (click)=\"current() > 1 && onCurrentChange(-1)\"\r\n >\r\n <x-icon type=\"fto-chevron-left\"></x-icon>\r\n </div>\r\n <div\r\n [class.x-image-preview-disabled]=\"current() === total()\"\r\n class=\"x-image-preview-right\"\r\n (click)=\"current() != total() && onCurrentChange(1)\"\r\n >\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </div>\r\n }\r\n</div>\r\n","import { InjectionToken, WritableSignal } from '@angular/core';\r\nimport type { XImageHandle } from './image.property';\r\n\r\nexport interface XImageGroupContext {\r\n images: WritableSignal<XImageHandle[]>;\r\n addImage(image: XImageHandle): void;\r\n removeImage(image: XImageHandle): void;\r\n}\r\n\r\nexport const X_IMAGE_GROUP_CONTEXT = new InjectionToken<XImageGroupContext>('X_IMAGE_GROUP_CONTEXT');\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n inject,\r\n computed,\r\n signal,\r\n OnDestroy,\r\n effect\r\n} from '@angular/core';\r\nimport { XImageHandle, XImageNode, XImagePrefix, XImageProperty } from './image.property';\r\nimport { XConfigService } from '@ng-nest/ui/core';\r\nimport { XDialogService } from '@ng-nest/ui/dialog';\r\nimport { XImagePreviewComponent } from './image-preview.component';\r\nimport { XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { map } from 'rxjs';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { X_IMAGE_GROUP_CONTEXT } from './image-group.token';\r\n\r\n@Component({\r\n selector: `${XImagePrefix}`,\r\n imports: [XIconComponent, XOutletDirective],\r\n templateUrl: './image.component.html',\r\n styleUrls: ['./image.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XImageComponent extends XImageProperty implements OnInit, OnDestroy, XImageHandle {\r\n private dialog = inject(XDialogService);\r\n private i18n = inject(XI18nService);\r\n private group = inject(X_IMAGE_GROUP_CONTEXT, { optional: true });\r\n configService = inject(XConfigService);\r\n isError = signal(false);\r\n isLoaded = signal(false);\r\n\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.image!)), { initialValue: zh_CN.image });\r\n\r\n previewTextSignal = computed(() => {\r\n return this.previewText() || this.locale().previewText;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.src();\r\n this.isLoaded.set(false);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.group && this.group.addImage(this);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.group && this.group.removeImage(this);\r\n }\r\n\r\n onPreview() {\r\n let data: XImageNode[] = [];\r\n if (this.group) {\r\n const activatedIndex = this.group.images().indexOf(this);\r\n data = this.group.images().map((x, index) => ({\r\n src: x.src(),\r\n alt: x.alt(),\r\n fallback: x.fallback(),\r\n activated: index === activatedIndex\r\n }));\r\n } else {\r\n data = [{ src: this.src(), alt: this.alt(), fallback: this.fallback() }];\r\n }\r\n this.dialog.create(XImagePreviewComponent, {\r\n width: '100%',\r\n height: '100%',\r\n className: 'x-image-preview-portal',\r\n data\r\n });\r\n }\r\n\r\n onError(event: ErrorEvent) {\r\n this.isError.set(true);\r\n this.error.emit(event);\r\n }\r\n\r\n onLoad(event: Event) {\r\n this.isLoaded.set(true);\r\n this.isError.set(false);\r\n this.load.emit(event);\r\n }\r\n}\r\n","<div class=\"x-image\">\r\n <img\r\n [hidden]=\"(placeholder() && !isLoaded()) || isError()\"\r\n class=\"x-image-img\"\r\n [src]=\"src()\"\r\n [style.width]=\"width()\"\r\n [style.height]=\"height()\"\r\n [attr.alt]=\"alt()\"\r\n (error)=\"onError($event)\"\r\n (load)=\"onLoad($event)\"\r\n />\r\n @if (placeholder() && !isLoaded()) {\r\n <img class=\"x-image-img\" [src]=\"placeholder()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && fallback()) {\r\n <img class=\"x-image-img x-image-fallback\" [src]=\"fallback()\" [style.width]=\"width()\" [style.height]=\"height()\" />\r\n }\r\n @if (isError() && !fallback()) {\r\n <div class=\"x-image-error-icon\" [style.width]=\"width()\" [style.height]=\"height()\">\r\n <x-icon type=\"fto-image\"></x-icon>\r\n </div>\r\n }\r\n @if (previewTpl()) {\r\n <div class=\"x-image-overlay\">\r\n <ng-container *xOutlet=\"previewTpl(); context: { $image: this }\"> </ng-container>\r\n </div>\r\n } @else {\r\n @if (!isError()) {\r\n <div class=\"x-image-overlay\" (click)=\"onPreview()\">\r\n <div class=\"x-image-text\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n <span>{{ previewTextSignal() }}</span>\r\n </div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, signal } from '@angular/core';\r\nimport { XImageGroupPrefix, XImageHandle } from './image.property';\r\nimport { X_IMAGE_GROUP_CONTEXT, XImageGroupContext } from './image-group.token';\r\n\r\n@Component({\r\n selector: `${XImageGroupPrefix}`,\r\n templateUrl: './image-group.component.html',\r\n styleUrls: ['./image-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_IMAGE_GROUP_CONTEXT,\r\n useExisting: XImageGroupComponent\r\n }\r\n ]\r\n})\r\nexport class XImageGroupComponent implements XImageGroupContext {\r\n images = signal<XImageHandle[]>([]);\r\n\r\n addImage(image: XImageHandle): void {\r\n this.images.update((x) => {\r\n x.push(image);\r\n return [...x];\r\n });\r\n }\r\n\r\n removeImage(image: XImageHandle): void {\r\n this.images.update((x) => {\r\n x.splice(x.indexOf(image), 1);\r\n return [...x];\r\n });\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XImageComponent } from './image.component';\r\nimport { XImagePreviewComponent } from './image-preview.component';\r\nimport { XImageGroupComponent } from './image-group.component';\r\n\r\n@NgModule({\r\n exports: [XImageComponent, XImagePreviewComponent, XImageGroupComponent],\r\n imports: [XImageComponent, XImagePreviewComponent, XImageGroupComponent]\r\n})\r\nexport class XImageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -19,12 +19,12 @@ class XInnerProperty extends XPropertyFunction(X_INNER_CONFIG_NAME) {
19
19
  * @zh_CN 内边距
20
20
  * @en_US Inner padding
21
21
  */
22
- this.padding = input(this.config?.padding ?? '1rem', { ...(ngDevMode ? { debugName: "padding" } : {}), transform: XToCssPixelValue });
22
+ this.padding = input(this.config?.padding ?? '1rem', { ...(ngDevMode ? { debugName: "padding" } : /* istanbul ignore next */ {}), transform: XToCssPixelValue });
23
23
  }
24
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInnerProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
25
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: XInnerProperty, isStandalone: true, selector: "x-inner-property", inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
24
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInnerProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
25
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: XInnerProperty, isStandalone: true, selector: "x-inner-property", inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInnerProperty, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInnerProperty, decorators: [{
28
28
  type: Component,
29
29
  args: [{ selector: `${XInnerPrefix}-property`, template: '' }]
30
30
  }], propDecorators: { padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }] } });
@@ -37,10 +37,10 @@ class XInnerComponent extends XInnerProperty {
37
37
  get getPadding() {
38
38
  return this.padding();
39
39
  }
40
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInnerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
41
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: XInnerComponent, isStandalone: true, selector: "x-inner", host: { properties: { "class": "this.className", "style.padding": "this.getPadding" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [".x-inner{margin:0;padding:0}.x-inner{display:block;width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInnerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
41
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: XInnerComponent, isStandalone: true, selector: "x-inner", host: { properties: { "class": "this.className", "style.padding": "this.getPadding" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [".x-inner{margin:0;padding:0}.x-inner{display:block;width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
42
42
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInnerComponent, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInnerComponent, decorators: [{
44
44
  type: Component,
45
45
  args: [{ selector: `${XInnerPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\r\n", styles: [".x-inner{margin:0;padding:0}.x-inner{display:block;width:100%;height:100%}\n"] }]
46
46
  }], propDecorators: { className: [{
@@ -52,11 +52,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
52
52
  }] } });
53
53
 
54
54
  class XInnerModule {
55
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
56
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.1", ngImport: i0, type: XInnerModule, imports: [XInnerComponent], exports: [XInnerComponent] }); }
57
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInnerModule }); }
55
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
56
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: XInnerModule, imports: [XInnerComponent], exports: [XInnerComponent] }); }
57
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInnerModule }); }
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInnerModule, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInnerModule, decorators: [{
60
60
  type: NgModule,
61
61
  args: [{
62
62
  exports: [XInnerComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-inner.mjs","sources":["../../../../lib/ng-nest/ui/inner/inner.property.ts","../../../../lib/ng-nest/ui/inner/inner.component.ts","../../../../lib/ng-nest/ui/inner/inner.component.html","../../../../lib/ng-nest/ui/inner/inner.module.ts","../../../../lib/ng-nest/ui/inner/ng-nest-ui-inner.ts"],"sourcesContent":["import { XNumber, XPropertyFunction, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\n\r\n/**\r\n * Inner\r\n * @selector x-inner\r\n * @decorator component\r\n */\r\nexport const XInnerPrefix = 'x-inner';\r\nconst X_INNER_CONFIG_NAME = 'inner';\r\n\r\n/**\r\n * Inner Property\r\n */\r\n@Component({ selector: `${XInnerPrefix}-property`, template: '' })\r\nexport class XInnerProperty extends XPropertyFunction(X_INNER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 内边距\r\n * @en_US Inner padding\r\n */\r\n readonly padding = input<string, XNumber>(this.config?.padding ?? '1rem', { transform: XToCssPixelValue });\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { XInnerPrefix, XInnerProperty } from './inner.property';\r\n\r\n@Component({\r\n selector: `${XInnerPrefix}`,\r\n templateUrl: './inner.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XInnerComponent extends XInnerProperty {\r\n @HostBinding('class') className = XInnerPrefix;\r\n @HostBinding('style.padding') get getPadding() {\r\n return this.padding();\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XInnerComponent } from './inner.component';\r\n\r\n@NgModule({\r\n exports: [XInnerComponent],\r\n imports: [XInnerComponent]\r\n})\r\nexport class XInnerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAGA;;;;AAIG;AACI,MAAM,YAAY,GAAG;AAC5B,MAAM,mBAAmB,GAAG,OAAO;AAEnC;;AAEG;MAEU,cAAe,SAAQ,iBAAiB,CAAC,mBAAmB,CAAC,CAAA;AAD1E,IAAA,WAAA,GAAA;;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,GAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AAC3G,IAAA;iIANY,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,6OADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAClD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAA,EAAG,YAAY,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACJ3D,MAAO,eAAgB,SAAQ,cAAc,CAAA;AAPnD,IAAA,WAAA,GAAA;;QAQwB,IAAA,CAAA,SAAS,GAAG,YAAY;AAI/C,IAAA;AAHC,IAAA,IAAkC,UAAU,GAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;iIAJW,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,mLCV5B,+BACA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDSa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACE,CAAA,EAAG,YAAY,EAAE,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA;;sBAG9C,WAAW;uBAAC,OAAO;;sBACnB,WAAW;uBAAC,eAAe;;;MELjB,YAAY,CAAA;iIAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAZ,YAAY,EAAA,OAAA,EAAA,CAFb,eAAe,CAAA,EAAA,OAAA,EAAA,CADf,eAAe,CAAA,EAAA,CAAA,CAAA;kIAGd,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe;AAC1B,iBAAA;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-nest-ui-inner.mjs","sources":["../../../../lib/ng-nest/ui/inner/inner.property.ts","../../../../lib/ng-nest/ui/inner/inner.component.ts","../../../../lib/ng-nest/ui/inner/inner.component.html","../../../../lib/ng-nest/ui/inner/inner.module.ts","../../../../lib/ng-nest/ui/inner/ng-nest-ui-inner.ts"],"sourcesContent":["import { XNumber, XPropertyFunction, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\n\r\n/**\r\n * Inner\r\n * @selector x-inner\r\n * @decorator component\r\n */\r\nexport const XInnerPrefix = 'x-inner';\r\nconst X_INNER_CONFIG_NAME = 'inner';\r\n\r\n/**\r\n * Inner Property\r\n */\r\n@Component({ selector: `${XInnerPrefix}-property`, template: '' })\r\nexport class XInnerProperty extends XPropertyFunction(X_INNER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 内边距\r\n * @en_US Inner padding\r\n */\r\n readonly padding = input<string, XNumber>(this.config?.padding ?? '1rem', { transform: XToCssPixelValue });\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { XInnerPrefix, XInnerProperty } from './inner.property';\r\n\r\n@Component({\r\n selector: `${XInnerPrefix}`,\r\n templateUrl: './inner.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XInnerComponent extends XInnerProperty {\r\n @HostBinding('class') className = XInnerPrefix;\r\n @HostBinding('style.padding') get getPadding() {\r\n return this.padding();\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XInnerComponent } from './inner.component';\r\n\r\n@NgModule({\r\n exports: [XInnerComponent],\r\n imports: [XInnerComponent]\r\n})\r\nexport class XInnerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAGA;;;;AAIG;AACI,MAAM,YAAY,GAAG;AAC5B,MAAM,mBAAmB,GAAG,OAAO;AAEnC;;AAEG;MAEU,cAAe,SAAQ,iBAAiB,CAAC,mBAAmB,CAAC,CAAA;AAD1E,IAAA,WAAA,GAAA;;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AAC3G,IAAA;iIANY,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,6OADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAClD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAA,EAAG,YAAY,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACJ3D,MAAO,eAAgB,SAAQ,cAAc,CAAA;AAPnD,IAAA,WAAA,GAAA;;QAQwB,IAAA,CAAA,SAAS,GAAG,YAAY;AAI/C,IAAA;AAHC,IAAA,IAAkC,UAAU,GAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;iIAJW,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,mLCV5B,+BACA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDSa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACE,CAAA,EAAG,YAAY,EAAE,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA;;sBAG9C,WAAW;uBAAC,OAAO;;sBACnB,WAAW;uBAAC,eAAe;;;MELjB,YAAY,CAAA;iIAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAZ,YAAY,EAAA,OAAA,EAAA,CAFb,eAAe,CAAA,EAAA,OAAA,EAAA,CADf,eAAe,CAAA,EAAA,CAAA,CAAA;kIAGd,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe;AAC1B,iBAAA;;;ACND;;AAEG;;;;"}
@@ -26,132 +26,146 @@ class XInputNumberProperty extends XFormControlFunction(X_INPUT_NUMBER_CONFIG_NA
26
26
  * @zh_CN 形态变体
27
27
  * @en_US Input variant
28
28
  */
29
- this.variant = input(this.config?.variant ?? 'outlined', ...(ngDevMode ? [{ debugName: "variant" }] : []));
29
+ this.variant = input(this.config?.variant ?? 'outlined', /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
30
31
  /**
31
32
  * @zh_CN 最小值
32
33
  * @en_US Minimum
33
34
  */
34
- this.min = input(Number.MIN_SAFE_INTEGER, { ...(ngDevMode ? { debugName: "min" } : {}), transform: XToNumber });
35
+ this.min = input(Number.MIN_SAFE_INTEGER, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: XToNumber });
35
36
  /**
36
37
  * @zh_CN 最大值
37
38
  * @en_US Max
38
39
  */
39
- this.max = input(Number.MAX_SAFE_INTEGER, { ...(ngDevMode ? { debugName: "max" } : {}), transform: XToNumber });
40
+ this.max = input(Number.MAX_SAFE_INTEGER, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: XToNumber });
40
41
  /**
41
42
  * @zh_CN 步数
42
43
  * @en_US Step count
43
44
  */
44
- this.step = input(1, { ...(ngDevMode ? { debugName: "step" } : {}), transform: XToNumber });
45
+ this.step = input(1, { ...(ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {}), transform: XToNumber });
45
46
  /**
46
47
  * @zh_CN 按住后步进速度
47
48
  * @en_US Stepping speed after pressing
48
49
  */
49
- this.debounce = input(40, { ...(ngDevMode ? { debugName: "debounce" } : {}), transform: XToNumber });
50
+ this.debounce = input(40, { ...(ngDevMode ? { debugName: "debounce" } : /* istanbul ignore next */ {}), transform: XToNumber });
50
51
  /**
51
52
  * @zh_CN 精度
52
53
  * @en_US Precision
53
54
  */
54
- this.precision = input(0, { ...(ngDevMode ? { debugName: "precision" } : {}), transform: XToNumber });
55
+ this.precision = input(0, { ...(ngDevMode ? { debugName: "precision" } : /* istanbul ignore next */ {}), transform: XToNumber });
55
56
  /**
56
57
  * @zh_CN 显示边框
57
58
  * @en_US Display Border
58
59
  */
59
- this.bordered = input(this.config?.bordered ?? true, { ...(ngDevMode ? { debugName: "bordered" } : {}), transform: XToBoolean });
60
+ this.bordered = input(this.config?.bordered ?? true, { ...(ngDevMode ? { debugName: "bordered" } : /* istanbul ignore next */ {}), transform: XToBoolean });
60
61
  /**
61
62
  * @zh_CN 数字格式化
62
63
  * @en_US Display Formatter
63
64
  */
64
- this.formatter = input(...(ngDevMode ? [undefined, { debugName: "formatter" }] : []));
65
+ this.formatter = input(/* @ts-ignore */
66
+ ...(ngDevMode ? [undefined, { debugName: "formatter" }] : /* istanbul ignore next */ []));
65
67
  /**
66
68
  * @zh_CN 隐藏步进按钮
67
69
  * @en_US Hide step button
68
70
  */
69
- this.hiddenButton = input(this.config?.hiddenButton ?? false, { ...(ngDevMode ? { debugName: "hiddenButton" } : {}), transform: XToBoolean });
71
+ this.hiddenButton = input(this.config?.hiddenButton ?? false, { ...(ngDevMode ? { debugName: "hiddenButton" } : /* istanbul ignore next */ {}), transform: XToBoolean });
70
72
  /**
71
73
  * @zh_CN 尺寸
72
74
  * @en_US Size
73
75
  */
74
- this.size = input(this.config?.size ?? 'medium', ...(ngDevMode ? [{ debugName: "size" }] : []));
76
+ this.size = input(this.config?.size ?? 'medium', /* @ts-ignore */
77
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
75
78
  /**
76
79
  * @zh_CN 标签
77
80
  * @en_US Label
78
81
  */
79
- this.label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
82
+ this.label = input('', /* @ts-ignore */
83
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
80
84
  /**
81
85
  * @zh_CN 标签宽度
82
86
  * @en_US Label width
83
87
  */
84
- this.labelWidth = input('', { ...(ngDevMode ? { debugName: "labelWidth" } : {}), transform: XToCssPixelValue });
88
+ this.labelWidth = input('', { ...(ngDevMode ? { debugName: "labelWidth" } : /* istanbul ignore next */ {}), transform: XToCssPixelValue });
85
89
  /**
86
90
  * @zh_CN 标签文字对齐方式
87
91
  * @en_US Label text alignment method
88
92
  */
89
- this.labelAlign = input('start', ...(ngDevMode ? [{ debugName: "labelAlign" }] : []));
93
+ this.labelAlign = input('start', /* @ts-ignore */
94
+ ...(ngDevMode ? [{ debugName: "labelAlign" }] : /* istanbul ignore next */ []));
90
95
  /**
91
96
  * @zh_CN flex 布局下的子元素水平排列方式
92
97
  * @en_US The level of sub-element level arrangement under flex layout
93
98
  */
94
- this.justify = input('start', ...(ngDevMode ? [{ debugName: "justify" }] : []));
99
+ this.justify = input('start', /* @ts-ignore */
100
+ ...(ngDevMode ? [{ debugName: "justify" }] : /* istanbul ignore next */ []));
95
101
  /**
96
102
  * @zh_CN flex 布局下的子元素垂直排列方式
97
103
  * @en_US sub-element vertical arrangement method under flex layout
98
104
  */
99
- this.align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : []));
105
+ this.align = input('start', /* @ts-ignore */
106
+ ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
100
107
  /**
101
108
  * @zh_CN flex 布局下的子元素排列方向
102
109
  * @en_US The direction of the sub-element arrangement under flex layout
103
110
  */
104
- this.direction = input('column', ...(ngDevMode ? [{ debugName: "direction" }] : []));
111
+ this.direction = input('column', /* @ts-ignore */
112
+ ...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
105
113
  /**
106
114
  * @zh_CN 输入提示信息
107
115
  * @en_US Enter prompt information
108
116
  */
109
- this.placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
117
+ this.placeholder = input('', /* @ts-ignore */
118
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
110
119
  /**
111
120
  * @zh_CN 禁用
112
121
  * @en_US Disabled
113
122
  */
114
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: XToBoolean });
123
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: XToBoolean });
115
124
  /**
116
125
  * @zh_CN 必填
117
126
  * @en_US Required
118
127
  */
119
- this.required = input(false, { ...(ngDevMode ? { debugName: "required" } : {}), transform: XToBoolean });
128
+ this.required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: XToBoolean });
120
129
  /**
121
130
  * @zh_CN 只读
122
131
  * @en_US Readonly
123
132
  */
124
- this.readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : {}), transform: XToBoolean });
133
+ this.readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: XToBoolean });
125
134
  /**
126
135
  * @zh_CN 值模板
127
136
  * @en_US Node template
128
137
  */
129
- this.valueTpl = input(...(ngDevMode ? [undefined, { debugName: "valueTpl" }] : []));
138
+ this.valueTpl = input(/* @ts-ignore */
139
+ ...(ngDevMode ? [undefined, { debugName: "valueTpl" }] : /* istanbul ignore next */ []));
130
140
  /**
131
141
  * @zh_CN 值模板参数
132
142
  * @en_US Node template
133
143
  */
134
- this.valueTplContext = input(...(ngDevMode ? [undefined, { debugName: "valueTplContext" }] : []));
144
+ this.valueTplContext = input(/* @ts-ignore */
145
+ ...(ngDevMode ? [undefined, { debugName: "valueTplContext" }] : /* istanbul ignore next */ []));
135
146
  /**
136
147
  * @zh_CN 正则验证规则
137
148
  * @en_US Regular verification rules
138
149
  */
139
- this.pattern = input(null, ...(ngDevMode ? [{ debugName: "pattern" }] : []));
150
+ this.pattern = input(null, /* @ts-ignore */
151
+ ...(ngDevMode ? [{ debugName: "pattern" }] : /* istanbul ignore next */ []));
140
152
  /**
141
153
  * @zh_CN 验证不通过提示文字
142
154
  * @en_US Verify not pass the prompt text
143
155
  */
144
- this.message = input('', ...(ngDevMode ? [{ debugName: "message" }] : []));
156
+ this.message = input('', /* @ts-ignore */
157
+ ...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
145
158
  /**
146
159
  * @zh_CN 输入验证函数
147
160
  * @en_US Enter the verification function
148
161
  */
149
- this.inputValidator = input(...(ngDevMode ? [undefined, { debugName: "inputValidator" }] : []));
162
+ this.inputValidator = input(/* @ts-ignore */
163
+ ...(ngDevMode ? [undefined, { debugName: "inputValidator" }] : /* istanbul ignore next */ []));
150
164
  }
151
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInputNumberProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
152
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: XInputNumberProperty, isStandalone: true, selector: "x-input-number-property", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, debounce: { classPropertyName: "debounce", publicName: "debounce", isSignal: true, isRequired: false, transformFunction: null }, precision: { classPropertyName: "precision", publicName: "precision", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, formatter: { classPropertyName: "formatter", publicName: "formatter", isSignal: true, isRequired: false, transformFunction: null }, hiddenButton: { classPropertyName: "hiddenButton", publicName: "hiddenButton", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, valueTpl: { classPropertyName: "valueTpl", publicName: "valueTpl", isSignal: true, isRequired: false, transformFunction: null }, valueTplContext: { classPropertyName: "valueTplContext", publicName: "valueTplContext", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
165
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInputNumberProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
166
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: XInputNumberProperty, isStandalone: true, selector: "x-input-number-property", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, debounce: { classPropertyName: "debounce", publicName: "debounce", isSignal: true, isRequired: false, transformFunction: null }, precision: { classPropertyName: "precision", publicName: "precision", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, formatter: { classPropertyName: "formatter", publicName: "formatter", isSignal: true, isRequired: false, transformFunction: null }, hiddenButton: { classPropertyName: "hiddenButton", publicName: "hiddenButton", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelWidth: { classPropertyName: "labelWidth", publicName: "labelWidth", isSignal: true, isRequired: false, transformFunction: null }, labelAlign: { classPropertyName: "labelAlign", publicName: "labelAlign", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, valueTpl: { classPropertyName: "valueTpl", publicName: "valueTpl", isSignal: true, isRequired: false, transformFunction: null }, valueTplContext: { classPropertyName: "valueTplContext", publicName: "valueTplContext", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputValidator: { classPropertyName: "inputValidator", publicName: "inputValidator", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
153
167
  }
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInputNumberProperty, decorators: [{
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInputNumberProperty, decorators: [{
155
169
  type: Component,
156
170
  args: [{ selector: `${XInputNumberPrefix}-property`, template: '' }]
157
171
  }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], debounce: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounce", required: false }] }], precision: [{ type: i0.Input, args: [{ isSignal: true, alias: "precision", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], formatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatter", required: false }] }], hiddenButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "hiddenButton", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelWidth", required: false }] }], labelAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelAlign", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], valueTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueTpl", required: false }] }], valueTplContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueTplContext", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], inputValidator: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputValidator", required: false }] }] } });
@@ -161,13 +175,20 @@ class XInputNumberComponent extends XInputNumberProperty {
161
175
  super();
162
176
  this.inputNumber = viewChild.required('inputNumber');
163
177
  this.inputEleRef = viewChild.required('inputEleRef');
164
- this.displayValue = signal('', ...(ngDevMode ? [{ debugName: "displayValue" }] : []));
165
- this.minDisabled = signal(false, ...(ngDevMode ? [{ debugName: "minDisabled" }] : []));
166
- this.maxDisabled = signal(false, ...(ngDevMode ? [{ debugName: "maxDisabled" }] : []));
167
- this.icon = signal('', ...(ngDevMode ? [{ debugName: "icon" }] : []));
168
- this.iconSpin = signal(false, ...(ngDevMode ? [{ debugName: "iconSpin" }] : []));
169
- this.clearable = signal(false, ...(ngDevMode ? [{ debugName: "clearable" }] : []));
170
- this.isDown = signal(false, ...(ngDevMode ? [{ debugName: "isDown" }] : []));
178
+ this.displayValue = signal('', /* @ts-ignore */
179
+ ...(ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []));
180
+ this.minDisabled = signal(false, /* @ts-ignore */
181
+ ...(ngDevMode ? [{ debugName: "minDisabled" }] : /* istanbul ignore next */ []));
182
+ this.maxDisabled = signal(false, /* @ts-ignore */
183
+ ...(ngDevMode ? [{ debugName: "maxDisabled" }] : /* istanbul ignore next */ []));
184
+ this.icon = signal('', /* @ts-ignore */
185
+ ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
186
+ this.iconSpin = signal(false, /* @ts-ignore */
187
+ ...(ngDevMode ? [{ debugName: "iconSpin" }] : /* istanbul ignore next */ []));
188
+ this.clearable = signal(false, /* @ts-ignore */
189
+ ...(ngDevMode ? [{ debugName: "clearable" }] : /* istanbul ignore next */ []));
190
+ this.isDown = signal(false, /* @ts-ignore */
191
+ ...(ngDevMode ? [{ debugName: "isDown" }] : /* istanbul ignore next */ []));
171
192
  this.valueChange = new Subject();
172
193
  this.document = inject(DOCUMENT);
173
194
  this.unSubject = new Subject();
@@ -284,20 +305,20 @@ class XInputNumberComponent extends XInputNumberProperty {
284
305
  }
285
306
  this.displayValue.set(displayValue);
286
307
  }
287
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
288
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: XInputNumberComponent, isStandalone: true, selector: "x-input-number", providers: [XValueAccessor(XInputNumberComponent)], viewQueries: [{ propertyName: "inputNumber", first: true, predicate: ["inputNumber"], descendants: true, isSignal: true }, { propertyName: "inputEleRef", first: true, predicate: ["inputEleRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n [text]=\"['borderless', 'underlined'].includes(variant())\"\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [variant]=\"variant()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n [text]=\"['borderless', 'underlined'].includes(variant())\"\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0}.x-input-number,.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
308
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
309
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: XInputNumberComponent, isStandalone: true, selector: "x-input-number", providers: [XValueAccessor(XInputNumberComponent)], viewQueries: [{ propertyName: "inputNumber", first: true, predicate: ["inputNumber"], descendants: true, isSignal: true }, { propertyName: "inputEleRef", first: true, predicate: ["inputEleRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n [text]=\"['borderless', 'underlined'].includes(variant())\"\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [variant]=\"variant()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n [text]=\"['borderless', 'underlined'].includes(variant())\"\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0}.x-input-number,.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: XInputComponent, selector: "x-input" }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
289
310
  }
290
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInputNumberComponent, decorators: [{
311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInputNumberComponent, decorators: [{
291
312
  type: Component,
292
313
  args: [{ selector: `${XInputNumberPrefix}`, imports: [FormsModule, ReactiveFormsModule, XInputComponent, XButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XInputNumberComponent)], template: "<div #inputNumber class=\"x-input-number\" [class.x-input-number-hidden-button]=\"hiddenButton()\">\r\n <div class=\"x-input-number-row\">\r\n <ng-template #beforeButtonTpl>\r\n <x-button\r\n class=\"x-input-number-reduce\"\r\n icon=\"fto-minus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || minDisabled()\"\r\n (click)=\"!minDisabled() && plus($event, step(), false); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!minDisabled() && down($event, step(), false)\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n [text]=\"['borderless', 'underlined'].includes(variant())\"\r\n ></x-button>\r\n </ng-template>\r\n <x-input\r\n #inputEleRef\r\n class=\"x-input-number-input\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"clearable()\"\r\n [ngModel]=\"displayValue()\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContext()\"\r\n [size]=\"size()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"hiddenButton() ? '' : beforeButtonTpl\"\r\n [after]=\"hiddenButton() ? '' : afterButtonTpl\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [variant]=\"variant()\"\r\n (xInput)=\"onInput($event); formControlValidator()\"\r\n ></x-input>\r\n <ng-template #afterButtonTpl>\r\n <x-button\r\n class=\"x-input-number-plus\"\r\n icon=\"fto-plus\"\r\n [size]=\"size()\"\r\n [onlyIcon]=\"!bordered()\"\r\n [disabled]=\"disabledComputed() || maxDisabled()\"\r\n (click)=\"!maxDisabled() && plus($event, step()); formControlValidator()\"\r\n attrType=\"button\"\r\n (mousedown)=\"!maxDisabled() && down($event, step())\"\r\n (mouseup)=\"up($event)\"\r\n plain\r\n flat\r\n [text]=\"['borderless', 'underlined'].includes(variant())\"\r\n ></x-button>\r\n </ng-template>\r\n @if (invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-input-number{display:inline-block;width:12rem}.x-input-number{margin:0;padding:0}.x-input-number,.x-input-number-input{width:100%}.x-input-number-input input{text-align:center}.x-input-number-hidden-button .x-input-number-input input{text-align:left}\n"] }]
293
314
  }], ctorParameters: () => [], propDecorators: { inputNumber: [{ type: i0.ViewChild, args: ['inputNumber', { isSignal: true }] }], inputEleRef: [{ type: i0.ViewChild, args: ['inputEleRef', { isSignal: true }] }] } });
294
315
 
295
316
  class XInputNumberModule {
296
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
297
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.1", ngImport: i0, type: XInputNumberModule, imports: [XInputNumberComponent], exports: [XInputNumberComponent] }); }
298
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInputNumberModule, imports: [XInputNumberComponent] }); }
317
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
318
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: XInputNumberModule, imports: [XInputNumberComponent], exports: [XInputNumberComponent] }); }
319
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInputNumberModule, imports: [XInputNumberComponent] }); }
299
320
  }
300
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XInputNumberModule, decorators: [{
321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XInputNumberModule, decorators: [{
301
322
  type: NgModule,
302
323
  args: [{
303
324
  exports: [XInputNumberComponent],