@acorex/components 21.0.0-next.3 → 21.0.0-next.31

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 (273) hide show
  1. package/accordion/index.d.ts +0 -1
  2. package/autocomplete/index.d.ts +23 -9
  3. package/button/index.d.ts +38 -17
  4. package/chips/index.d.ts +3 -8
  5. package/code-editor/README.md +291 -1
  6. package/code-editor/index.d.ts +260 -12
  7. package/command/index.d.ts +1 -0
  8. package/conversation2/README.md +426 -0
  9. package/conversation2/index.d.ts +6139 -0
  10. package/data-table/index.d.ts +79 -7
  11. package/dialog/index.d.ts +1 -1
  12. package/drawer/README.md +2 -2
  13. package/drawer/index.d.ts +33 -57
  14. package/drawer-legacy/README.md +3 -0
  15. package/drawer-legacy/index.d.ts +86 -0
  16. package/editor/README.md +3 -0
  17. package/editor/index.d.ts +79 -0
  18. package/fesm2022/acorex-components-accordion.mjs +19 -24
  19. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  20. package/fesm2022/acorex-components-action-sheet.mjs +12 -12
  21. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  22. package/fesm2022/acorex-components-alert.mjs +14 -14
  23. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  24. package/fesm2022/acorex-components-aspect-ratio.mjs +4 -4
  25. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  26. package/fesm2022/acorex-components-audio-wave.mjs +12 -11
  27. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  28. package/fesm2022/acorex-components-autocomplete.mjs +30 -13
  29. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  30. package/fesm2022/acorex-components-avatar.mjs +13 -13
  31. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  32. package/fesm2022/acorex-components-badge.mjs +10 -10
  33. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  34. package/fesm2022/acorex-components-bottom-navigation.mjs +12 -12
  35. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  36. package/fesm2022/acorex-components-breadcrumbs.mjs +12 -12
  37. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  38. package/fesm2022/acorex-components-button-group.mjs +17 -19
  39. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  40. package/fesm2022/acorex-components-button.mjs +78 -29
  41. package/fesm2022/acorex-components-button.mjs.map +1 -1
  42. package/fesm2022/acorex-components-calendar.mjs +18 -18
  43. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  44. package/fesm2022/acorex-components-check-box.mjs +11 -11
  45. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  46. package/fesm2022/acorex-components-chips.mjs +12 -14
  47. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  48. package/fesm2022/acorex-components-circular-progress.mjs +13 -11
  49. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  50. package/fesm2022/acorex-components-code-editor.mjs +494 -162
  51. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  52. package/fesm2022/acorex-components-collapse.mjs +13 -28
  53. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  54. package/fesm2022/acorex-components-color-box.mjs +11 -11
  55. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  56. package/fesm2022/acorex-components-color-palette.mjs +32 -32
  57. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  58. package/fesm2022/acorex-components-command.mjs +18 -11
  59. package/fesm2022/acorex-components-command.mjs.map +1 -1
  60. package/fesm2022/acorex-components-comment.mjs +34 -34
  61. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  62. package/fesm2022/acorex-components-conversation.mjs +56 -65
  63. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  64. package/fesm2022/acorex-components-conversation2.mjs +17641 -0
  65. package/fesm2022/acorex-components-conversation2.mjs.map +1 -0
  66. package/fesm2022/acorex-components-cron-job.mjs +53 -53
  67. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  68. package/fesm2022/acorex-components-data-list.mjs +5 -5
  69. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  70. package/fesm2022/acorex-components-data-pager.mjs +53 -41
  71. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  72. package/fesm2022/acorex-components-data-table.mjs +462 -105
  73. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  74. package/fesm2022/acorex-components-datetime-box.mjs +10 -10
  75. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  76. package/fesm2022/acorex-components-datetime-input.mjs +8 -8
  77. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  78. package/fesm2022/acorex-components-datetime-picker.mjs +11 -11
  79. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  80. package/fesm2022/acorex-components-decorators.mjs +96 -54
  81. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  82. package/fesm2022/acorex-components-dialog.mjs +26 -16
  83. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  84. package/fesm2022/acorex-components-drawer-legacy.mjs +218 -0
  85. package/fesm2022/acorex-components-drawer-legacy.mjs.map +1 -0
  86. package/fesm2022/acorex-components-drawer.mjs +66 -150
  87. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  88. package/fesm2022/acorex-components-dropdown-button.mjs +9 -9
  89. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  90. package/fesm2022/acorex-components-dropdown.mjs +18 -16
  91. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  92. package/fesm2022/acorex-components-editor.mjs +195 -0
  93. package/fesm2022/acorex-components-editor.mjs.map +1 -0
  94. package/fesm2022/acorex-components-file-explorer.mjs +28 -28
  95. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
  96. package/fesm2022/acorex-components-flow-chart.mjs +18 -18
  97. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  98. package/fesm2022/acorex-components-form.mjs +52 -35
  99. package/fesm2022/acorex-components-form.mjs.map +1 -1
  100. package/fesm2022/acorex-components-grid-layout-builder.mjs +14 -15
  101. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  102. package/fesm2022/acorex-components-image-editor.mjs +166 -126
  103. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  104. package/fesm2022/acorex-components-image.mjs +10 -10
  105. package/fesm2022/acorex-components-image.mjs.map +1 -1
  106. package/fesm2022/acorex-components-json-viewer.mjs +9 -9
  107. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  108. package/fesm2022/acorex-components-kanban.mjs +9 -7
  109. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  110. package/fesm2022/acorex-components-kbd.mjs +8 -8
  111. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  112. package/fesm2022/acorex-components-label.mjs +9 -9
  113. package/fesm2022/acorex-components-label.mjs.map +1 -1
  114. package/fesm2022/acorex-components-list.mjs +10 -10
  115. package/fesm2022/acorex-components-list.mjs.map +1 -1
  116. package/fesm2022/acorex-components-loading-dialog.mjs +22 -13
  117. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  118. package/fesm2022/acorex-components-loading.mjs +23 -23
  119. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  120. package/fesm2022/acorex-components-map.mjs +16 -15
  121. package/fesm2022/acorex-components-map.mjs.map +1 -1
  122. package/fesm2022/acorex-components-media-viewer.mjs +78 -97
  123. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  124. package/fesm2022/acorex-components-menu.mjs +24 -24
  125. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  126. package/fesm2022/{acorex-components-modal-acorex-components-modal-h5Y-qcbh.mjs → acorex-components-modal-acorex-components-modal-BmmAkCKJ.mjs} +24 -24
  127. package/fesm2022/acorex-components-modal-acorex-components-modal-BmmAkCKJ.mjs.map +1 -0
  128. package/fesm2022/acorex-components-modal-modal-content.component-5GqTzNOs.mjs +214 -0
  129. package/fesm2022/acorex-components-modal-modal-content.component-5GqTzNOs.mjs.map +1 -0
  130. package/fesm2022/acorex-components-modal.mjs +1 -1
  131. package/fesm2022/acorex-components-navbar.mjs +9 -9
  132. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  133. package/fesm2022/acorex-components-notification.mjs +16 -23
  134. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  135. package/fesm2022/acorex-components-number-box-legacy.mjs +412 -0
  136. package/fesm2022/acorex-components-number-box-legacy.mjs.map +1 -0
  137. package/fesm2022/acorex-components-number-box.mjs +98 -331
  138. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  139. package/fesm2022/acorex-components-otp.mjs +10 -10
  140. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  141. package/fesm2022/acorex-components-page.mjs +10 -10
  142. package/fesm2022/acorex-components-page.mjs.map +1 -1
  143. package/fesm2022/acorex-components-paint.mjs +35 -40
  144. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  145. package/fesm2022/acorex-components-password-box.mjs +13 -13
  146. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  147. package/fesm2022/acorex-components-pdf-reader.mjs +8 -8
  148. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  149. package/fesm2022/acorex-components-phone-box.mjs +10 -10
  150. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  151. package/fesm2022/acorex-components-picker.mjs +17 -17
  152. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  153. package/fesm2022/acorex-components-popover.mjs +12 -12
  154. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  155. package/fesm2022/acorex-components-popup.mjs +13 -13
  156. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  157. package/fesm2022/acorex-components-progress-bar.mjs +11 -9
  158. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  159. package/fesm2022/acorex-components-qrcode.mjs +8 -8
  160. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  161. package/fesm2022/acorex-components-query-builder.mjs +9 -9
  162. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  163. package/fesm2022/acorex-components-radio.mjs +7 -7
  164. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  165. package/fesm2022/acorex-components-rail-navigation.mjs +40 -38
  166. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  167. package/fesm2022/acorex-components-range-slider.mjs +11 -11
  168. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  169. package/fesm2022/acorex-components-rate-picker.mjs +20 -35
  170. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  171. package/fesm2022/acorex-components-rest-api-generator.mjs +23 -23
  172. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  173. package/fesm2022/acorex-components-result.mjs +8 -8
  174. package/fesm2022/acorex-components-result.mjs.map +1 -1
  175. package/fesm2022/acorex-components-routing-progress.mjs +8 -8
  176. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  177. package/fesm2022/acorex-components-rrule.mjs +111 -16
  178. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  179. package/fesm2022/acorex-components-scheduler-picker.mjs +2339 -0
  180. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -0
  181. package/fesm2022/acorex-components-scheduler.mjs +52 -52
  182. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  183. package/fesm2022/acorex-components-scss.mjs +4 -4
  184. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  185. package/fesm2022/acorex-components-search-box.mjs +23 -12
  186. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  187. package/fesm2022/acorex-components-select-box.mjs +36 -17
  188. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  189. package/fesm2022/acorex-components-selection-list-2.mjs +10 -10
  190. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  191. package/fesm2022/acorex-components-selection-list.mjs +10 -10
  192. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  193. package/fesm2022/acorex-components-side-menu.mjs +31 -38
  194. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  195. package/fesm2022/acorex-components-skeleton.mjs +8 -8
  196. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  197. package/fesm2022/acorex-components-slider.mjs +11 -11
  198. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  199. package/fesm2022/acorex-components-sliding-item.mjs +17 -17
  200. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  201. package/fesm2022/acorex-components-step-wizard.mjs +16 -16
  202. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  203. package/fesm2022/acorex-components-switch.mjs +14 -14
  204. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  205. package/fesm2022/acorex-components-tabs.mjs +20 -16
  206. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  207. package/fesm2022/acorex-components-tag-box.mjs +51 -21
  208. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  209. package/fesm2022/acorex-components-tag.mjs +47 -11
  210. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  211. package/fesm2022/acorex-components-text-area.mjs +9 -9
  212. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  213. package/fesm2022/acorex-components-text-box.mjs +13 -13
  214. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  215. package/fesm2022/acorex-components-time-duration.mjs +54 -14
  216. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  217. package/fesm2022/acorex-components-time-line.mjs +14 -29
  218. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  219. package/fesm2022/acorex-components-toast.mjs +14 -14
  220. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  221. package/fesm2022/acorex-components-toolbar.mjs +9 -9
  222. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  223. package/fesm2022/acorex-components-tooltip.mjs +12 -12
  224. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  225. package/fesm2022/acorex-components-tree-view.mjs +16 -45
  226. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  227. package/fesm2022/acorex-components-tree2.mjs +689 -0
  228. package/fesm2022/acorex-components-tree2.mjs.map +1 -0
  229. package/fesm2022/acorex-components-uploader.mjs +28 -641
  230. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  231. package/fesm2022/acorex-components-video-player.mjs +8 -8
  232. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  233. package/fesm2022/acorex-components-wysiwyg.mjs +213 -462
  234. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  235. package/fesm2022/acorex-components.mjs.map +1 -1
  236. package/form/index.d.ts +3 -3
  237. package/grid-layout-builder/index.d.ts +1 -2
  238. package/image-editor/index.d.ts +8 -5
  239. package/loading/index.d.ts +1 -1
  240. package/media-viewer/index.d.ts +2 -3
  241. package/notification/index.d.ts +0 -2
  242. package/number-box/README.md +2 -2
  243. package/number-box/index.d.ts +31 -171
  244. package/number-box-legacy/README.md +3 -0
  245. package/number-box-legacy/index.d.ts +191 -0
  246. package/package.json +53 -26
  247. package/paint/index.d.ts +1 -6
  248. package/phone-box/index.d.ts +4 -4
  249. package/rate-picker/index.d.ts +5 -15
  250. package/rrule/index.d.ts +96 -1
  251. package/scheduler-picker/README.md +15 -0
  252. package/scheduler-picker/index.d.ts +1360 -0
  253. package/search-box/index.d.ts +6 -1
  254. package/select-box/index.d.ts +15 -10
  255. package/side-menu/index.d.ts +3 -2
  256. package/tag/index.d.ts +8 -2
  257. package/tag-box/index.d.ts +12 -3
  258. package/time-duration/index.d.ts +19 -3
  259. package/tree2/README.md +3 -0
  260. package/tree2/index.d.ts +337 -0
  261. package/uploader/index.d.ts +4 -331
  262. package/wysiwyg/index.d.ts +57 -159
  263. package/drawer-2/README.md +0 -3
  264. package/drawer-2/index.d.ts +0 -62
  265. package/fesm2022/acorex-components-drawer-2.mjs +0 -134
  266. package/fesm2022/acorex-components-drawer-2.mjs.map +0 -1
  267. package/fesm2022/acorex-components-modal-acorex-components-modal-h5Y-qcbh.mjs.map +0 -1
  268. package/fesm2022/acorex-components-modal-modal-content.component-B6tyMLdU.mjs +0 -235
  269. package/fesm2022/acorex-components-modal-modal-content.component-B6tyMLdU.mjs.map +0 -1
  270. package/fesm2022/acorex-components-number-box-2.mjs +0 -183
  271. package/fesm2022/acorex-components-number-box-2.mjs.map +0 -1
  272. package/number-box-2/README.md +0 -3
  273. package/number-box-2/index.d.ts +0 -41
@@ -1,560 +1,12 @@
1
- import * as i0 from '@angular/core';
2
- import { signal, computed, inject, Injectable, ElementRef, ChangeDetectorRef, DOCUMENT, PLATFORM_ID, EventEmitter, HostBinding, Output, Input, Directive, ViewEncapsulation, Component, input, NgModule } from '@angular/core';
3
- import { AXTranslationService, AXTranslatorPipe, AXTranslationModule } from '@acorex/core/translation';
4
- import { AXUnsubscriber } from '@acorex/core/utils';
5
- import { isPlatformBrowser, AsyncPipe, NgClass, CommonModule } from '@angular/common';
6
- import { AXPopupService, AXPopupModule } from '@acorex/components/popup';
7
- import { AXFileService, AXFileModule } from '@acorex/core/file';
8
- import { sumBy } from 'lodash-es';
9
- import { Subject, BehaviorSubject, map } from 'rxjs';
10
1
  import { AXComponent, AXClosableComponent, MXBaseComponent } from '@acorex/cdk/common';
11
- import { trigger, state, transition, style, AUTO_STYLE, animate } from '@angular/animations';
12
- import { AXProgressBarComponent, AXProgressBarModule } from '@acorex/components/progress-bar';
13
- import { AXFormatPipe, AXFormatModule } from '@acorex/core/format';
14
- import { AXDecoratorIconComponent, AXDecoratorModule } from '@acorex/components/decorators';
15
- import { AXButtonModule } from '@acorex/components/button';
16
- import { AXCircularProgressModule } from '@acorex/components/circular-progress';
17
- import { AXDateTimeModule } from '@acorex/core/date-time';
18
-
19
- class AXUploadRequest {
20
- get name() {
21
- return this.file.name;
22
- }
23
- get ext() {
24
- const parts = this.name.split('.');
25
- if (parts.length > 1) {
26
- return parts[parts.length - 1];
27
- }
28
- else {
29
- // No extension found
30
- return '';
31
- }
32
- }
33
- get size() {
34
- return this.file.size;
35
- }
36
- get file() {
37
- return this.uploadFile;
38
- }
39
- constructor(uploadFile) {
40
- this.uploadFile = uploadFile;
41
- this._progress = signal(0, ...(ngDevMode ? [{ debugName: "_progress" }] : []));
42
- this.progress = computed(() => this._progress(), ...(ngDevMode ? [{ debugName: "progress" }] : []));
43
- this._estimateTime = signal(0, ...(ngDevMode ? [{ debugName: "_estimateTime" }] : []));
44
- this.estimateTime = computed(() => this._estimateTime(), ...(ngDevMode ? [{ debugName: "estimateTime" }] : []));
45
- this._status = signal('new', ...(ngDevMode ? [{ debugName: "_status" }] : []));
46
- this.status = computed(() => this._status(), ...(ngDevMode ? [{ debugName: "status" }] : []));
47
- this._message = signal(null, ...(ngDevMode ? [{ debugName: "_message" }] : []));
48
- this.message = computed(() => this._message(), ...(ngDevMode ? [{ debugName: "message" }] : []));
49
- this._isDetermined = signal(false, ...(ngDevMode ? [{ debugName: "_isDetermined" }] : []));
50
- this.isDetermined = computed(() => this._isDetermined(), ...(ngDevMode ? [{ debugName: "isDetermined" }] : []));
51
- this.bytesTransferred = 0;
52
- this.onCancel = new Subject();
53
- this.onStart = new Subject();
54
- this.onFailed = new Subject();
55
- this.onComplete = new BehaviorSubject(null);
56
- }
57
- estimateTimeRemaining(bytesTransferred) {
58
- const now = Date.now();
59
- const elapsed = now - this.startTime; // Time in milliseconds
60
- if (isNaN(elapsed) || elapsed === 0) {
61
- return null; // Avoid division by zero
62
- }
63
- const speed = (bytesTransferred || 1) / elapsed; // Bytes per millisecond
64
- const remainingBytes = this.size - bytesTransferred;
65
- const estimatedTime = Math.ceil(remainingBytes / speed); // Time in milliseconds
66
- return estimatedTime; // Return the estimated time in milliseconds
67
- }
68
- setTransferredBytes(value) {
69
- this.bytesTransferred = value;
70
- if (value > 0 && !this._isDetermined() && (this.status() == 'new' || this.status() == 'inprogress')) {
71
- this._isDetermined.set(true);
72
- }
73
- this.updateEstimateTime();
74
- }
75
- updateEstimateTime() {
76
- this._estimateTime.set(this.estimateTimeRemaining(this.bytesTransferred));
77
- const progress = Math.floor((this.bytesTransferred / this.size) * 100);
78
- this._progress.set(progress);
79
- }
80
- async upload() {
81
- this.startTime = Date.now();
82
- this._progress.set(0);
83
- this._status.set('inprogress');
84
- this.onStart.next();
85
- }
86
- cancel() {
87
- this._status.set('canceled');
88
- this.bytesTransferred = 0;
89
- this._estimateTime.set(0);
90
- this._progress.set(0);
91
- this.onCancel.next();
92
- }
93
- redo() {
94
- // this.startTime = Date.now();
95
- this._progress.set(0);
96
- this._status.set('inprogress');
97
- this._message.set(null);
98
- this.onStart.next();
99
- }
100
- error(message) {
101
- this._status.set('failed');
102
- this.bytesTransferred = 0;
103
- this._estimateTime.set(0);
104
- this._progress.set(0);
105
- this._message.set(message);
106
- this.onFailed.next();
107
- }
108
- finish(data) {
109
- this._status.set('completed');
110
- this.bytesTransferred = this.size;
111
- this._estimateTime.set(0);
112
- this._progress.set(100);
113
- this.onComplete.next(data);
114
- }
115
- }
116
-
117
- /**
118
- * Service for managing file uploads with drag-and-drop support, progress tracking, and dialog management.
119
- * @category Services
120
- */
121
- class AXUploaderService {
122
- constructor() {
123
- /**
124
- * Popup service for showing upload dialogs.
125
- * @ignore
126
- */
127
- this.popupService = inject(AXPopupService);
128
- /**
129
- * Translation service for localized text.
130
- * @ignore
131
- */
132
- this.translateService = inject(AXTranslationService);
133
- /**
134
- * File service for file operations.
135
- * @ignore
136
- */
137
- this.fileService = inject(AXFileService);
138
- /**
139
- * Behavior subject for managing upload requests.
140
- * @ignore
141
- */
142
- this._files$ = new BehaviorSubject([]);
143
- /**
144
- * Gets the files behavior subject for observing upload requests.
145
- */
146
- this.files = this._files$.asObservable();
147
- /**
148
- * Subject for file upload start events.
149
- */
150
- this.onFileUploadStart = new Subject();
151
- /**
152
- * Subject for file upload complete events.
153
- */
154
- this.onFileUploadComplete = new Subject();
155
- /**
156
- * Subject for all files upload complete events.
157
- */
158
- this.onFilesUploadComplete = new Subject();
159
- /**
160
- * Subject for file upload canceled events.
161
- */
162
- this.onFileUploadCanceled = new Subject();
163
- /**
164
- * Signal indicating if any upload has determined progress.
165
- */
166
- this.isAnyDetermined = computed(() => this._files$.value.some((file) => file.isDetermined()), ...(ngDevMode ? [{ debugName: "isAnyDetermined" }] : []));
167
- /**
168
- * Observable for total estimated upload time.
169
- */
170
- this.totalEstimateTime = this._files$.pipe(map((files) => sumBy(files, (file) => (file.status() === 'inprogress' ? file.estimateTime() : 0))));
171
- }
172
- /**
173
- * Shows the upload dialog with the list of files.
174
- * @private
175
- */
176
- async showDialog() {
177
- const filesCount = this._files$.getValue().length;
178
- Promise.resolve().then(function () { return uploaderList_component; }).then(async (c) => {
179
- this.popupService
180
- .open(c.AXUploaderListComponent, {
181
- size: 'sm',
182
- title: filesCount > 1
183
- ? await this.translateService.translateAsync('@acorex:uploader.zone.uploadFiles')
184
- : await this.translateService.translateAsync('@acorex:uploader.zone.uploadFile'),
185
- })
186
- .then(async () => {
187
- await this.cancelAll();
188
- this.clearAll();
189
- });
190
- });
191
- }
192
- /**
193
- * Converts a File object to an AXUploadRequest.
194
- * @private
195
- */
196
- convertFileToRequest(file) {
197
- return new AXUploadRequest(file);
198
- }
199
- /**
200
- * Starts uploading files that are in 'new' status.
201
- * @private
202
- */
203
- async startUpload() {
204
- const newFiles = this._files$.value.filter((c) => c.status() === 'new');
205
- for (const file of newFiles) {
206
- await this.bindEvents(file);
207
- }
208
- }
209
- /**
210
- * Binds event handlers to an upload request.
211
- * @private
212
- */
213
- async bindEvents(c) {
214
- c.onStart.subscribe(() => {
215
- this.onFileUploadStart.next({
216
- component: this,
217
- uploadedFile: c,
218
- isUserInteraction: false,
219
- });
220
- });
221
- c.onComplete.subscribe((data) => {
222
- Object.assign(c, { metaData: data });
223
- this.onFileUploadComplete.next({
224
- component: this,
225
- uploadedFile: c,
226
- isUserInteraction: false,
227
- });
228
- const isAllDone = this._files$.value.every((f) => f.status() === 'completed' || f.status() === 'canceled' || f.status() === 'failed');
229
- if (isAllDone) {
230
- this.onFilesUploadComplete.next({
231
- component: this,
232
- uploadedFiles: this._files$.value,
233
- isUserInteraction: false,
234
- });
235
- }
236
- });
237
- c.onCancel.subscribe(() => {
238
- this.onFileUploadCanceled.next({
239
- component: this,
240
- uploadedFile: c,
241
- isUserInteraction: false,
242
- });
243
- });
244
- }
245
- /**
246
- * Opens the file browser dialog and returns selected files as upload requests.
247
- * @param options - Configuration options for file selection
248
- * @returns Promise that resolves to an array of upload requests
249
- */
250
- async browse(options = { multiple: false }) {
251
- try {
252
- const files = await this.fileService.choose({ multiple: options?.multiple || false, accept: options.accept });
253
- if (files.length) {
254
- return this.add(files);
255
- }
256
- return [];
257
- }
258
- catch (error) {
259
- // It's good practice to log the error.
260
- console.error('File browse failed:', error);
261
- return [];
262
- }
263
- }
264
- /**
265
- * Adds files to the upload queue and starts the upload process.
266
- * @param files - Files to add to the upload queue
267
- * @returns Promise that resolves to an array of upload requests
268
- */
269
- async add(files) {
270
- const list = Array.from(files).map((f) => this.convertFileToRequest(f));
271
- const newFiles = [...this._files$.value, ...list];
272
- this._files$.next(newFiles);
273
- await this.showDialog();
274
- this.startUpload();
275
- return list;
276
- }
277
- /**
278
- * Cancels all pending and in-progress uploads.
279
- */
280
- async cancelAll() {
281
- await Promise.all(this._files$.value.filter((c) => c.status() !== 'completed').map((c) => c.cancel()));
282
- }
283
- /**
284
- * Clears all completed uploads from the queue.
285
- */
286
- clearAll() {
287
- const remainingFiles = this._files$.value.filter((c) => c.status() === 'inprogress');
288
- this._files$.next(remainingFiles);
289
- }
290
- /**
291
- * Removes a specific upload request from the queue.
292
- * @param item - The upload request to remove
293
- */
294
- remove(item) {
295
- const updatedFiles = this._files$.value.filter((c) => c !== item);
296
- this._files$.next(updatedFiles);
297
- }
298
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
299
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderService, providedIn: 'root' }); }
300
- }
301
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderService, decorators: [{
302
- type: Injectable,
303
- args: [{ providedIn: 'root' }]
304
- }] });
305
-
306
- /**
307
- * A directive that provides drag-and-drop and file upload functionality.
308
- * When applied to an element, it enables drag-and-drop file uploads and file browsing.
309
- * @category Directives
310
- */
311
- class AXUploaderZoneDirective {
312
- /**
313
- * Initializes the directive with event listeners and service subscriptions.
314
- */
315
- constructor() {
316
- /**
317
- * The element reference for the directive host.
318
- * @ignore
319
- */
320
- this.elementRef = inject(ElementRef);
321
- /**
322
- * Whether multiple files can be selected.
323
- * @defaultValue true
324
- */
325
- this.multiple = true;
326
- /**
327
- * File types that are accepted for upload.
328
- * @defaultValue null
329
- */
330
- this.accept = null;
331
- /**
332
- * Change detector reference.
333
- * @ignore
334
- */
335
- this.cdr = inject(ChangeDetectorRef);
336
- /**
337
- * Document reference.
338
- * @ignore
339
- */
340
- this.document = inject(DOCUMENT);
341
- /**
342
- * Platform ID for browser detection.
343
- * @ignore
344
- */
345
- this.platformID = inject(PLATFORM_ID);
346
- /**
347
- * Upload service instance.
348
- * @ignore
349
- */
350
- this.uploadService = inject(AXUploaderService);
351
- /**
352
- * Unsubscriber service instance.
353
- * @ignore
354
- */
355
- this.unsubscriber = inject(AXUnsubscriber);
356
- /**
357
- * Translation service instance.
358
- * @ignore
359
- */
360
- this.translateService = inject(AXTranslationService);
361
- /**
362
- * Emitted when files are changed (added, removed, etc.).
363
- */
364
- this.onChanged = new EventEmitter();
365
- /**
366
- * Emitted when a single file upload is completed.
367
- */
368
- this.onFileUploadComplete = new EventEmitter();
369
- /**
370
- * Emitted when all files upload is completed.
371
- */
372
- this.onFilesUploadComplete = new EventEmitter();
373
- /**
374
- * CSS class for the overlay state.
375
- * @ignore
376
- */
377
- this.stateClass = 'ax-uploader-overlay-state';
378
- this.element = this.elementRef.nativeElement;
379
- this.element.style.position = 'relative';
380
- //
381
- this.uploadService.onFileUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {
382
- this.onFileUploadComplete.next(c);
383
- });
384
- this.uploadService.onFilesUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {
385
- this.onFilesUploadComplete.next(c);
386
- });
387
- //
388
- setTimeout(() => {
389
- const browseHandlers = this.element.querySelectorAll('[data-ax-uploader-browse-handle="true"]');
390
- if (browseHandlers.length <= 0)
391
- this.element.addEventListener('click', this.browser.bind(this), true);
392
- });
393
- this.element.addEventListener('dragenter', this.handleDragEnter.bind(this), true);
394
- this.element.addEventListener('dragover', this.handleDragOver.bind(this), true);
395
- this.element.addEventListener('drop', this.handleOnDrop.bind(this), true);
396
- this.element.addEventListener('dragleave', this.removeZone.bind(this), true);
397
- }
398
- /**
399
- * Cleans up event listeners when the directive is destroyed.
400
- */
401
- ngOnDestroy() {
402
- this.element.removeEventListener('click', this.browser.bind(this));
403
- this.element.removeEventListener('dragenter', this.handleDragEnter.bind(this));
404
- this.element.removeEventListener('drop', this.handleOnDrop.bind(this));
405
- this.element.removeEventListener('dragover', this.handleDragOver.bind(this));
406
- this.element.removeEventListener('dragleave', this.removeZone.bind(this));
407
- }
408
- /**
409
- * Handles drag enter events to show the upload overlay.
410
- * @private
411
- */
412
- async handleDragEnter(event) {
413
- this.createZone();
414
- event.preventDefault();
415
- event.stopImmediatePropagation();
416
- }
417
- /**
418
- * Handles drop events to process dropped files.
419
- * @private
420
- */
421
- async handleOnDrop(event) {
422
- event.preventDefault();
423
- event.stopImmediatePropagation();
424
- const requests = await this.uploadService.add(event.dataTransfer?.files);
425
- this.onChanged.emit({
426
- component: this,
427
- requests,
428
- isUserInteraction: true,
429
- });
430
- this.removeZone();
431
- this.cdr.detectChanges();
432
- }
433
- /**
434
- * Handles drag over events to allow dropping.
435
- * @private
436
- */
437
- handleDragOver(event) {
438
- event.preventDefault();
439
- event.stopImmediatePropagation();
440
- }
441
- /**
442
- * Creates the visual overlay for drag and drop feedback.
443
- * @private
444
- */
445
- async createZone() {
446
- if (isPlatformBrowser(this.platformID)) {
447
- this.overlayElement = this.document.createElement('div');
448
- this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');
449
- this.overlayElement.id = 'ax-uploader-overlay-state';
450
- const icon = this.document.createElement('span');
451
- icon.classList.add('ax-icon', 'ax-icon-upload');
452
- const text = this.document.createElement('span');
453
- text.innerText = await this.translateService.translateAsync('@acorex:uploader.zone.text');
454
- this.overlayElement.appendChild(icon);
455
- this.overlayElement.appendChild(text);
456
- this.element.appendChild(this.overlayElement);
457
- }
458
- }
459
- /**
460
- * Removes the visual overlay for drag and drop feedback.
461
- * @private
462
- */
463
- removeZone() {
464
- if (isPlatformBrowser(this.platformID)) {
465
- this.element.removeChild(this.document.getElementById('ax-uploader-overlay-state'));
466
- this.overlayElement.remove();
467
- //console.log(this.overlayElement);
468
- }
469
- }
470
- /**
471
- * Opens the file browser dialog and processes selected files.
472
- * @returns Promise that resolves when files are processed
473
- */
474
- async browser() {
475
- const requests = await this.uploadService.browse({ accept: this.accept, multiple: this.multiple });
476
- this.onChanged.emit({
477
- component: this,
478
- requests,
479
- isUserInteraction: true,
480
- });
481
- }
482
- /**
483
- * Host binding for CSS class.
484
- * @ignore
485
- */
486
- get __hostClass() {
487
- return `ax-drop-zone`;
488
- }
489
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderZoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
490
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: AXUploaderZoneDirective, isStandalone: true, selector: "[axUploaderZone]", inputs: { multiple: "multiple", accept: "accept" }, outputs: { onChanged: "onChanged", onFileUploadComplete: "onFileUploadComplete", onFilesUploadComplete: "onFilesUploadComplete" }, host: { properties: { "class": "this.__hostClass" } }, providers: [AXUnsubscriber], ngImport: i0 }); }
491
- }
492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderZoneDirective, decorators: [{
493
- type: Directive,
494
- args: [{
495
- selector: '[axUploaderZone]',
496
- providers: [AXUnsubscriber],
497
- }]
498
- }], ctorParameters: () => [], propDecorators: { multiple: [{
499
- type: Input
500
- }], accept: [{
501
- type: Input
502
- }], onChanged: [{
503
- type: Output
504
- }], onFileUploadComplete: [{
505
- type: Output
506
- }], onFilesUploadComplete: [{
507
- type: Output
508
- }], __hostClass: [{
509
- type: HostBinding,
510
- args: ['class']
511
- }] } });
512
-
513
- /**
514
- * A directive that provides browse functionality for file uploads.
515
- * When applied to an element, clicking it will trigger the file browser dialog.
516
- * @category Directives
517
- */
518
- class AXUploaderBrowseDirective {
519
- constructor() {
520
- /**
521
- * The uploader zone directive instance.
522
- * @ignore
523
- */
524
- this.uploaderZone = inject(AXUploaderZoneDirective);
525
- /**
526
- * The element reference for the directive host.
527
- * @ignore
528
- */
529
- this.elemenrRef = inject((ElementRef));
530
- }
531
- /**
532
- * Initializes the directive by adding click event listener and data attribute.
533
- */
534
- ngOnInit() {
535
- this.elemenrRef.nativeElement.addEventListener('click', this.handleClick.bind(this));
536
- this.elemenrRef.nativeElement.dataset['axUploaderBrowseHandle'] = 'true';
537
- }
538
- /**
539
- * Cleans up the directive by removing event listeners.
540
- */
541
- ngOnDestroy() {
542
- this.elemenrRef.nativeElement.removeEventListener('click', this.handleClick.bind(this));
543
- }
544
- /**
545
- * Handles the click event to trigger file browser.
546
- * @private
547
- */
548
- async handleClick() {
549
- await this.uploaderZone.browser();
550
- }
551
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderBrowseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
552
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: AXUploaderBrowseDirective, isStandalone: true, selector: "[axUploaderBrowseHandle]", ngImport: i0 }); }
553
- }
554
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderBrowseDirective, decorators: [{
555
- type: Directive,
556
- args: [{ selector: '[axUploaderBrowseHandle]' }]
557
- }] });
2
+ import { AXTranslatorPipe } from '@acorex/core/translation';
3
+ import { AsyncPipe, NgClass } from '@angular/common';
4
+ import * as i0 from '@angular/core';
5
+ import { inject, ViewEncapsulation, Component, input, NgModule } from '@angular/core';
6
+ import { AXUploaderService } from '@acorex/cdk/uploader';
7
+ import { AXProgressBarComponent } from '@acorex/components/progress-bar';
8
+ import { AXFormatPipe } from '@acorex/core/format';
9
+ import { AXDecoratorIconComponent } from '@acorex/components/decorators';
558
10
 
559
11
  /**
560
12
  * A component that displays a list of uploaded files.
@@ -568,19 +20,14 @@ class AXUploaderListComponent {
568
20
  */
569
21
  this.uploadService = inject(AXUploaderService);
570
22
  }
571
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
572
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXUploaderListComponent, isStandalone: true, selector: "ax-uploader-list", providers: [{ provide: AXComponent, useExisting: AXUploaderListComponent }], ngImport: i0, template: "<!-- @if ((uploadService.totalEstimateTime | async) > 0) { -->\n<div class=\"ax-uploader-progress-status\" [class.ax-hide]=\"(uploadService.totalEstimateTime | async) <= 0\">\n @if (uploadService.isAnyDetermined()) {\n <span>{{ '@acorex:common.status.processing' | translate | async }}</span>\n } @else {\n <div>{{ uploadService.totalEstimateTime | async | format: 'timeleft' | async }}</div>\n }\n <button (click)=\"uploadService.cancelAll()\">{{ '@acorex:common.actions.cancel' | translate | async }}</button>\n</div>\n<!-- } -->\n\n<ul class=\"ax-uploader-list-items\">\n @for (item of uploadService.files | async; track item.name) {\n <li>\n <div class=\"ax-file\">\n <span>{{ item.ext }}</span>\n </div>\n <div class=\"ax-item-container\">\n <div class=\"ax-item-name\" [title]=\"item.name\">{{ item.name }}</div>\n <div class=\"ax-status\">\n @switch (item.status()) {\n @case ('inprogress') {\n <span>{{ item.size | format: 'filesize' | async }}</span> /\n {{\n item.isDetermined()\n ? (item.estimateTime() | format: 'timeleft' | async)\n : ('@acorex:common.status.processing' | translate | async)\n }}\n }\n @case ('failed') {\n <div class=\"ax-state-failed\">\n <span>{{ item.message() }}</span>\n </div>\n }\n @case ('completed') {\n <div class=\"ax-state-completed\">\n <span>{{ '@acorex:common.status.completed' | translate | async }}</span>\n </div>\n }\n }\n </div>\n </div>\n <div class=\"ax-status\">\n @switch (item.status()) {\n @case ('completed') {\n <i class=\"ax-icon ax-icon-solid ax-icon-check-circle ax-state-completed\"></i>\n }\n @case ('canceled') {\n <div>\n <span class=\"ax-state-canceled\">{{ '@acorex:common.actions.canceled' | translate | async }}</span>\n <!-- <i class=\"ax-icon ax-icon-solid ax-icon-redo\" (click)=\"item.redo()\" title=\"{{ 'retry' | translate | async }}\"></i> -->\n </div>\n }\n @case ('failed') {\n <div class=\"ax-state-failed\">\n <span>{{ '@acorex:common.status.failed' | translate | async }}</span>\n <i\n class=\"ax-icon ax-icon-solid ax-icon-redo\"\n (click)=\"item.redo()\"\n title=\"{{ '@acorex:common.actions.retry' | translate | async }}\"\n ></i>\n </div>\n }\n @default {\n <!-- <ax-circular-progress\n [mode]=\"item.isDetermined() ? 'determinate' : 'indeterminate'\"\n [size]=\"22\"\n [stroke]=\"6\"\n [progress]=\"item.isDetermined() ? item.progress() : 60\"\n class=\"ax-show\"\n >\n </ax-circular-progress> -->\n <i\n class=\"ax-icon ax-icon-solid ax-icon-close\"\n (click)=\"item.cancel()\"\n title=\"{{ '@acorex:common.actions.cancel' | translate | async }}\"\n ></i>\n }\n }\n </div>\n </li>\n @let completed = item.status() === 'completed';\n @if (item.status() === 'inprogress' || completed) {\n <div class=\"ax-status-loading\" [class.ax-status-loading-hide]=\"completed\">\n <ax-progress-bar\n [height]=\"4\"\n [mode]=\"completed ? 'determinate' : 'indeterminate'\"\n [progress]=\"completed ? 100 : 60\"\n [color]=\"completed ? 'success' : 'primary'\"\n ></ax-progress-bar>\n </div>\n }\n }\n</ul>\n", styles: ["ax-uploader-list .ax-uploader-progress-status{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;border-top-width:1px;border-color:rgba(var(--ax-sys-color-primary-lightest-surface));background-color:rgba(var(--ax-sys-color-primary-lightest-surface));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-sys-color-on-primary-lightest-surface));transition:.3s ease-out}ax-uploader-list .ax-uploader-progress-status.ax-hide{opacity:0;overflow:hidden;height:0;padding-top:0;padding-bottom:0;transition:.3s ease-out}ax-uploader-list .ax-uploader-list-items{max-height:75vh;width:100%;overflow-y:auto;overflow-x:hidden;gap:.5rem;display:flex;flex-direction:column}ax-uploader-list .ax-uploader-list-items li{display:flex;padding:.5rem 1rem;align-items:center;font-size:.875rem;line-height:1.25rem;gap:1rem;width:100%}ax-uploader-list .ax-uploader-list-items li .ax-item-container{display:flex;flex-direction:column;flex:1;-webkit-user-select:none;user-select:none}ax-uploader-list .ax-uploader-list-items li .ax-item-container .ax-item-name{font-size:.875rem;line-height:1.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;width:12rem}ax-uploader-list .ax-uploader-list-items li .ax-status{position:relative;color:rgba(var(--ax-sys-color-on-surface),.5)}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-icon{font-size:1.375rem}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-icon-close{cursor:pointer}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-canceled span{color:rgba(var(--ax-sys-color-secondary-surface))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed{display:flex;align-items:center;gap:.5rem}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed span{color:rgba(var(--ax-sys-color-danger-surface))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed i{cursor:pointer}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-completed{color:rgba(var(--ax-sys-color-success-surface))}ax-uploader-list .ax-uploader-list-items li:hover .ax-hide{display:flex!important}ax-uploader-list .ax-uploader-list-items li:hover .ax-show{display:none!important}ax-uploader-list .ax-uploader-list-items li .ax-show{display:flex!important}ax-uploader-list .ax-uploader-list-items li .ax-hide{display:none!important}ax-uploader-list .ax-uploader-list-items .ax-status-loading.ax-status-loading-hide{transition:all 1s linear;opacity:0;overflow:hidden}.ax-file{position:relative;display:flex;align-items:center;justify-content:center;width:1.5rem;aspect-ratio:.7;border-radius:.25rem;color:rgba(var(--ax-sys-color-light-surface));background-color:rgba(var(--ax-sys-color-success-surface))!important}.ax-file>*{position:absolute;bottom:.3rem;font-weight:700;font-size:.65rem;line-height:.65rem}.ax-file:before{content:\"\";position:absolute;top:0;right:0;border-width:0 12px 12px 0;border-color:rgba(var(--ax-sys-color-surface)) rgba(var(--ax-sys-color-surface)) rgba(var(--ax-sys-color-on-surface),.3) rgba(var(--ax-sys-color-on-surface),.3)}\n"], dependencies: [{ kind: "component", type: AXProgressBarComponent, selector: "ax-progress-bar", inputs: ["color", "mode", "progress", "height"], outputs: ["ValueChange", "sizeChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXUploaderListComponent, isStandalone: true, selector: "ax-uploader-list", providers: [{ provide: AXComponent, useExisting: AXUploaderListComponent }], ngImport: i0, template: "<!-- @if ((uploadService.totalEstimateTime | async) > 0) { -->\n<div class=\"ax-uploader-progress-status\" [class.ax-hide]=\"(uploadService.totalEstimateTime | async) <= 0\">\n @if (uploadService.isAnyDetermined()) {\n <span>{{ '@acorex:common.status.processing' | translate | async }}</span>\n } @else {\n <div>{{ uploadService.totalEstimateTime | async | format: 'timeleft' | async }}</div>\n }\n <button (click)=\"uploadService.cancelAll()\">{{ '@acorex:common.actions.cancel' | translate | async }}</button>\n</div>\n<!-- } -->\n\n<ul class=\"ax-uploader-list-items\">\n @for (item of uploadService.files | async; track item.name) {\n <li>\n <div class=\"ax-file\">\n <span>{{ item.ext }}</span>\n </div>\n <div class=\"ax-item-container\">\n <div class=\"ax-item-name\" [title]=\"item.name\">{{ item.name }}</div>\n <div class=\"ax-status\">\n @switch (item.status()) {\n @case ('inprogress') {\n <span>{{ item.size | format: 'filesize' | async }}</span> /\n {{\n item.isDetermined()\n ? (item.estimateTime() | format: 'timeleft' | async)\n : ('@acorex:common.status.processing' | translate | async)\n }}\n }\n @case ('failed') {\n <div class=\"ax-state-failed\">\n <span>{{ item.message() }}</span>\n </div>\n }\n @case ('completed') {\n <div class=\"ax-state-completed\">\n <span>{{ '@acorex:common.status.completed' | translate | async }}</span>\n </div>\n }\n }\n </div>\n </div>\n <div class=\"ax-status\">\n @switch (item.status()) {\n @case ('completed') {\n <i class=\"ax-icon ax-icon-solid ax-icon-check-circle ax-state-completed\"></i>\n }\n @case ('canceled') {\n <div>\n <span class=\"ax-state-canceled\">{{ '@acorex:common.actions.canceled' | translate | async }}</span>\n <!-- <i class=\"ax-icon ax-icon-solid ax-icon-redo\" (click)=\"item.redo()\" title=\"{{ 'retry' | translate | async }}\"></i> -->\n </div>\n }\n @case ('failed') {\n <div class=\"ax-state-failed\">\n <span>{{ '@acorex:common.status.failed' | translate | async }}</span>\n <i\n class=\"ax-icon ax-icon-solid ax-icon-redo\"\n (click)=\"item.redo()\"\n title=\"{{ '@acorex:common.actions.retry' | translate | async }}\"\n ></i>\n </div>\n }\n @default {\n <!-- <ax-circular-progress\n [mode]=\"item.isDetermined() ? 'determinate' : 'indeterminate'\"\n [size]=\"22\"\n [stroke]=\"6\"\n [progress]=\"item.isDetermined() ? item.progress() : 60\"\n class=\"ax-show\"\n >\n </ax-circular-progress> -->\n <i\n class=\"ax-icon ax-icon-solid ax-icon-close\"\n (click)=\"item.cancel()\"\n title=\"{{ '@acorex:common.actions.cancel' | translate | async }}\"\n ></i>\n }\n }\n </div>\n </li>\n @let completed = item.status() === 'completed';\n @if (item.status() === 'inprogress' || completed) {\n <div class=\"ax-status-loading\" [class.ax-status-loading-hide]=\"completed\">\n <ax-progress-bar\n [height]=\"4\"\n [mode]=\"completed ? 'determinate' : 'indeterminate'\"\n [progress]=\"completed ? 100 : 60\"\n [color]=\"completed ? 'success' : 'primary'\"\n ></ax-progress-bar>\n </div>\n }\n }\n</ul>\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-content:\"\"}}}@layer components{ax-uploader-list .ax-uploader-progress-status{border-block-style:var(--tw-border-style);border-block-width:1px;border-color:var(--color-primary-lightest,rgba(var(--ax-sys-color-primary-lightest-surface)));background-color:var(--color-primary-lightest,rgba(var(--ax-sys-color-primary-lightest-surface)));padding-inline:calc(var(--spacing,.25rem)*3);padding-block:calc(var(--spacing,.25rem)*2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));color:var(--color-on-primary-lightest,rgba(var(--ax-sys-color-on-primary-lightest-surface)));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));justify-content:space-between;align-items:center;display:flex}ax-uploader-list .ax-uploader-progress-status.ax-hide{height:calc(var(--spacing,.25rem)*0);padding-block:calc(var(--spacing,.25rem)*0);opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));overflow:hidden}ax-uploader-list .ax-uploader-list-items{gap:calc(var(--spacing,.25rem)*2);flex-direction:column;width:100%;max-height:75vh;display:flex;overflow:hidden auto}ax-uploader-list .ax-uploader-list-items li{align-items:center;gap:calc(var(--spacing,.25rem)*4);width:100%;padding-inline:calc(var(--spacing,.25rem)*4);padding-block:calc(var(--spacing,.25rem)*2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));display:flex}ax-uploader-list .ax-uploader-list-items li .ax-item-container{-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;display:flex}ax-uploader-list .ax-uploader-list-items li .ax-item-container .ax-item-name{width:calc(var(--spacing,.25rem)*32);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));text-overflow:ellipsis;white-space:nowrap;display:inline-block;overflow:hidden}ax-uploader-list .ax-uploader-list-items li .ax-status{color:color-mix(in srgb,rgba(var(--ax-sys-color-on-surface))50%,transparent);position:relative}@supports (color:color-mix(in lab,red,red)){ax-uploader-list .ax-uploader-list-items li .ax-status{color:color-mix(in oklab,var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)))50%,transparent)}}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-icon{font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75/1.25)))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-icon-close{cursor:pointer}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-canceled span{color:var(--color-secondary,rgba(var(--ax-sys-color-secondary-surface)))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed{align-items:center;gap:calc(var(--spacing,.25rem)*2);display:flex}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed span{color:var(--color-danger-600,rgba(var(--ax-sys-color-danger-600)))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed i{cursor:pointer}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-completed{color:var(--color-success,rgba(var(--ax-sys-color-success-surface)))}ax-uploader-list .ax-uploader-list-items li:hover .ax-hide{display:flex!important}ax-uploader-list .ax-uploader-list-items li:hover .ax-show{display:none!important}ax-uploader-list .ax-uploader-list-items li .ax-show{display:flex!important}ax-uploader-list .ax-uploader-list-items li .ax-hide{display:none!important}ax-uploader-list .ax-uploader-list-items .ax-status-loading.ax-status-loading-hide{opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));overflow:hidden}.ax-file{aspect-ratio:1;width:calc(var(--spacing,.25rem)*4);border-radius:var(--radius-sm,.25rem);background-color:var(--color-success,rgba(var(--ax-sys-color-success-surface)));color:var(--color-light,rgba(var(--ax-sys-color-light-surface)));justify-content:center;align-items:center;display:flex;position:relative}.ax-file>*{bottom:calc(var(--spacing,.25rem)*1.5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1/.75)));--tw-font-weight:var(--font-weight-bold,700);font-weight:var(--font-weight-bold,700);color:var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)));position:absolute}.ax-file:before{top:calc(var(--spacing,.25rem)*0);right:calc(var(--spacing,.25rem)*0);border-style:var(--tw-border-style);border-width:0;border-right-style:var(--tw-border-style);border-right-width:4px;border-bottom-style:var(--tw-border-style);border-bottom-width:4px;border-color:var(--color-surface,rgba(var(--ax-sys-color-surface)));border-top-color:color-mix(in srgb,rgba(var(--ax-sys-color-surface))30%,transparent);position:absolute}@supports (color:color-mix(in lab,red,red)){.ax-file:before{border-top-color:color-mix(in oklab,var(--color-surface,rgba(var(--ax-sys-color-surface)))30%,transparent)}}.ax-file:before{border-left-color:color-mix(in srgb,rgba(var(--ax-sys-color-surface))30%,transparent)}@supports (color:color-mix(in lab,red,red)){.ax-file:before{border-left-color:color-mix(in oklab,var(--color-surface,rgba(var(--ax-sys-color-surface)))30%,transparent)}}.ax-file:before{--tw-content:\"\";content:var(--tw-content)}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}\n/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXProgressBarComponent, selector: "ax-progress-bar", inputs: ["color", "mode", "progress", "height"], outputs: ["ValueChange", "sizeChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
573
25
  }
574
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderListComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderListComponent, decorators: [{
575
27
  type: Component,
576
- args: [{ selector: 'ax-uploader-list', encapsulation: ViewEncapsulation.None, imports: [AXProgressBarComponent, AsyncPipe, AXTranslatorPipe, AXFormatPipe], providers: [{ provide: AXComponent, useExisting: AXUploaderListComponent }], template: "<!-- @if ((uploadService.totalEstimateTime | async) > 0) { -->\n<div class=\"ax-uploader-progress-status\" [class.ax-hide]=\"(uploadService.totalEstimateTime | async) <= 0\">\n @if (uploadService.isAnyDetermined()) {\n <span>{{ '@acorex:common.status.processing' | translate | async }}</span>\n } @else {\n <div>{{ uploadService.totalEstimateTime | async | format: 'timeleft' | async }}</div>\n }\n <button (click)=\"uploadService.cancelAll()\">{{ '@acorex:common.actions.cancel' | translate | async }}</button>\n</div>\n<!-- } -->\n\n<ul class=\"ax-uploader-list-items\">\n @for (item of uploadService.files | async; track item.name) {\n <li>\n <div class=\"ax-file\">\n <span>{{ item.ext }}</span>\n </div>\n <div class=\"ax-item-container\">\n <div class=\"ax-item-name\" [title]=\"item.name\">{{ item.name }}</div>\n <div class=\"ax-status\">\n @switch (item.status()) {\n @case ('inprogress') {\n <span>{{ item.size | format: 'filesize' | async }}</span> /\n {{\n item.isDetermined()\n ? (item.estimateTime() | format: 'timeleft' | async)\n : ('@acorex:common.status.processing' | translate | async)\n }}\n }\n @case ('failed') {\n <div class=\"ax-state-failed\">\n <span>{{ item.message() }}</span>\n </div>\n }\n @case ('completed') {\n <div class=\"ax-state-completed\">\n <span>{{ '@acorex:common.status.completed' | translate | async }}</span>\n </div>\n }\n }\n </div>\n </div>\n <div class=\"ax-status\">\n @switch (item.status()) {\n @case ('completed') {\n <i class=\"ax-icon ax-icon-solid ax-icon-check-circle ax-state-completed\"></i>\n }\n @case ('canceled') {\n <div>\n <span class=\"ax-state-canceled\">{{ '@acorex:common.actions.canceled' | translate | async }}</span>\n <!-- <i class=\"ax-icon ax-icon-solid ax-icon-redo\" (click)=\"item.redo()\" title=\"{{ 'retry' | translate | async }}\"></i> -->\n </div>\n }\n @case ('failed') {\n <div class=\"ax-state-failed\">\n <span>{{ '@acorex:common.status.failed' | translate | async }}</span>\n <i\n class=\"ax-icon ax-icon-solid ax-icon-redo\"\n (click)=\"item.redo()\"\n title=\"{{ '@acorex:common.actions.retry' | translate | async }}\"\n ></i>\n </div>\n }\n @default {\n <!-- <ax-circular-progress\n [mode]=\"item.isDetermined() ? 'determinate' : 'indeterminate'\"\n [size]=\"22\"\n [stroke]=\"6\"\n [progress]=\"item.isDetermined() ? item.progress() : 60\"\n class=\"ax-show\"\n >\n </ax-circular-progress> -->\n <i\n class=\"ax-icon ax-icon-solid ax-icon-close\"\n (click)=\"item.cancel()\"\n title=\"{{ '@acorex:common.actions.cancel' | translate | async }}\"\n ></i>\n }\n }\n </div>\n </li>\n @let completed = item.status() === 'completed';\n @if (item.status() === 'inprogress' || completed) {\n <div class=\"ax-status-loading\" [class.ax-status-loading-hide]=\"completed\">\n <ax-progress-bar\n [height]=\"4\"\n [mode]=\"completed ? 'determinate' : 'indeterminate'\"\n [progress]=\"completed ? 100 : 60\"\n [color]=\"completed ? 'success' : 'primary'\"\n ></ax-progress-bar>\n </div>\n }\n }\n</ul>\n", styles: ["ax-uploader-list .ax-uploader-progress-status{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;border-top-width:1px;border-color:rgba(var(--ax-sys-color-primary-lightest-surface));background-color:rgba(var(--ax-sys-color-primary-lightest-surface));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-sys-color-on-primary-lightest-surface));transition:.3s ease-out}ax-uploader-list .ax-uploader-progress-status.ax-hide{opacity:0;overflow:hidden;height:0;padding-top:0;padding-bottom:0;transition:.3s ease-out}ax-uploader-list .ax-uploader-list-items{max-height:75vh;width:100%;overflow-y:auto;overflow-x:hidden;gap:.5rem;display:flex;flex-direction:column}ax-uploader-list .ax-uploader-list-items li{display:flex;padding:.5rem 1rem;align-items:center;font-size:.875rem;line-height:1.25rem;gap:1rem;width:100%}ax-uploader-list .ax-uploader-list-items li .ax-item-container{display:flex;flex-direction:column;flex:1;-webkit-user-select:none;user-select:none}ax-uploader-list .ax-uploader-list-items li .ax-item-container .ax-item-name{font-size:.875rem;line-height:1.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;width:12rem}ax-uploader-list .ax-uploader-list-items li .ax-status{position:relative;color:rgba(var(--ax-sys-color-on-surface),.5)}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-icon{font-size:1.375rem}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-icon-close{cursor:pointer}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-canceled span{color:rgba(var(--ax-sys-color-secondary-surface))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed{display:flex;align-items:center;gap:.5rem}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed span{color:rgba(var(--ax-sys-color-danger-surface))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed i{cursor:pointer}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-completed{color:rgba(var(--ax-sys-color-success-surface))}ax-uploader-list .ax-uploader-list-items li:hover .ax-hide{display:flex!important}ax-uploader-list .ax-uploader-list-items li:hover .ax-show{display:none!important}ax-uploader-list .ax-uploader-list-items li .ax-show{display:flex!important}ax-uploader-list .ax-uploader-list-items li .ax-hide{display:none!important}ax-uploader-list .ax-uploader-list-items .ax-status-loading.ax-status-loading-hide{transition:all 1s linear;opacity:0;overflow:hidden}.ax-file{position:relative;display:flex;align-items:center;justify-content:center;width:1.5rem;aspect-ratio:.7;border-radius:.25rem;color:rgba(var(--ax-sys-color-light-surface));background-color:rgba(var(--ax-sys-color-success-surface))!important}.ax-file>*{position:absolute;bottom:.3rem;font-weight:700;font-size:.65rem;line-height:.65rem}.ax-file:before{content:\"\";position:absolute;top:0;right:0;border-width:0 12px 12px 0;border-color:rgba(var(--ax-sys-color-surface)) rgba(var(--ax-sys-color-surface)) rgba(var(--ax-sys-color-on-surface),.3) rgba(var(--ax-sys-color-on-surface),.3)}\n"] }]
28
+ args: [{ selector: 'ax-uploader-list', encapsulation: ViewEncapsulation.None, imports: [AXProgressBarComponent, AsyncPipe, AXTranslatorPipe, AXFormatPipe], providers: [{ provide: AXComponent, useExisting: AXUploaderListComponent }], template: "<!-- @if ((uploadService.totalEstimateTime | async) > 0) { -->\n<div class=\"ax-uploader-progress-status\" [class.ax-hide]=\"(uploadService.totalEstimateTime | async) <= 0\">\n @if (uploadService.isAnyDetermined()) {\n <span>{{ '@acorex:common.status.processing' | translate | async }}</span>\n } @else {\n <div>{{ uploadService.totalEstimateTime | async | format: 'timeleft' | async }}</div>\n }\n <button (click)=\"uploadService.cancelAll()\">{{ '@acorex:common.actions.cancel' | translate | async }}</button>\n</div>\n<!-- } -->\n\n<ul class=\"ax-uploader-list-items\">\n @for (item of uploadService.files | async; track item.name) {\n <li>\n <div class=\"ax-file\">\n <span>{{ item.ext }}</span>\n </div>\n <div class=\"ax-item-container\">\n <div class=\"ax-item-name\" [title]=\"item.name\">{{ item.name }}</div>\n <div class=\"ax-status\">\n @switch (item.status()) {\n @case ('inprogress') {\n <span>{{ item.size | format: 'filesize' | async }}</span> /\n {{\n item.isDetermined()\n ? (item.estimateTime() | format: 'timeleft' | async)\n : ('@acorex:common.status.processing' | translate | async)\n }}\n }\n @case ('failed') {\n <div class=\"ax-state-failed\">\n <span>{{ item.message() }}</span>\n </div>\n }\n @case ('completed') {\n <div class=\"ax-state-completed\">\n <span>{{ '@acorex:common.status.completed' | translate | async }}</span>\n </div>\n }\n }\n </div>\n </div>\n <div class=\"ax-status\">\n @switch (item.status()) {\n @case ('completed') {\n <i class=\"ax-icon ax-icon-solid ax-icon-check-circle ax-state-completed\"></i>\n }\n @case ('canceled') {\n <div>\n <span class=\"ax-state-canceled\">{{ '@acorex:common.actions.canceled' | translate | async }}</span>\n <!-- <i class=\"ax-icon ax-icon-solid ax-icon-redo\" (click)=\"item.redo()\" title=\"{{ 'retry' | translate | async }}\"></i> -->\n </div>\n }\n @case ('failed') {\n <div class=\"ax-state-failed\">\n <span>{{ '@acorex:common.status.failed' | translate | async }}</span>\n <i\n class=\"ax-icon ax-icon-solid ax-icon-redo\"\n (click)=\"item.redo()\"\n title=\"{{ '@acorex:common.actions.retry' | translate | async }}\"\n ></i>\n </div>\n }\n @default {\n <!-- <ax-circular-progress\n [mode]=\"item.isDetermined() ? 'determinate' : 'indeterminate'\"\n [size]=\"22\"\n [stroke]=\"6\"\n [progress]=\"item.isDetermined() ? item.progress() : 60\"\n class=\"ax-show\"\n >\n </ax-circular-progress> -->\n <i\n class=\"ax-icon ax-icon-solid ax-icon-close\"\n (click)=\"item.cancel()\"\n title=\"{{ '@acorex:common.actions.cancel' | translate | async }}\"\n ></i>\n }\n }\n </div>\n </li>\n @let completed = item.status() === 'completed';\n @if (item.status() === 'inprogress' || completed) {\n <div class=\"ax-status-loading\" [class.ax-status-loading-hide]=\"completed\">\n <ax-progress-bar\n [height]=\"4\"\n [mode]=\"completed ? 'determinate' : 'indeterminate'\"\n [progress]=\"completed ? 100 : 60\"\n [color]=\"completed ? 'success' : 'primary'\"\n ></ax-progress-bar>\n </div>\n }\n }\n</ul>\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-content:\"\"}}}@layer components{ax-uploader-list .ax-uploader-progress-status{border-block-style:var(--tw-border-style);border-block-width:1px;border-color:var(--color-primary-lightest,rgba(var(--ax-sys-color-primary-lightest-surface)));background-color:var(--color-primary-lightest,rgba(var(--ax-sys-color-primary-lightest-surface)));padding-inline:calc(var(--spacing,.25rem)*3);padding-block:calc(var(--spacing,.25rem)*2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));color:var(--color-on-primary-lightest,rgba(var(--ax-sys-color-on-primary-lightest-surface)));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));justify-content:space-between;align-items:center;display:flex}ax-uploader-list .ax-uploader-progress-status.ax-hide{height:calc(var(--spacing,.25rem)*0);padding-block:calc(var(--spacing,.25rem)*0);opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));overflow:hidden}ax-uploader-list .ax-uploader-list-items{gap:calc(var(--spacing,.25rem)*2);flex-direction:column;width:100%;max-height:75vh;display:flex;overflow:hidden auto}ax-uploader-list .ax-uploader-list-items li{align-items:center;gap:calc(var(--spacing,.25rem)*4);width:100%;padding-inline:calc(var(--spacing,.25rem)*4);padding-block:calc(var(--spacing,.25rem)*2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));display:flex}ax-uploader-list .ax-uploader-list-items li .ax-item-container{-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;display:flex}ax-uploader-list .ax-uploader-list-items li .ax-item-container .ax-item-name{width:calc(var(--spacing,.25rem)*32);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));text-overflow:ellipsis;white-space:nowrap;display:inline-block;overflow:hidden}ax-uploader-list .ax-uploader-list-items li .ax-status{color:color-mix(in srgb,rgba(var(--ax-sys-color-on-surface))50%,transparent);position:relative}@supports (color:color-mix(in lab,red,red)){ax-uploader-list .ax-uploader-list-items li .ax-status{color:color-mix(in oklab,var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)))50%,transparent)}}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-icon{font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75/1.25)))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-icon-close{cursor:pointer}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-canceled span{color:var(--color-secondary,rgba(var(--ax-sys-color-secondary-surface)))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed{align-items:center;gap:calc(var(--spacing,.25rem)*2);display:flex}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed span{color:var(--color-danger-600,rgba(var(--ax-sys-color-danger-600)))}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-failed i{cursor:pointer}ax-uploader-list .ax-uploader-list-items li .ax-status .ax-state-completed{color:var(--color-success,rgba(var(--ax-sys-color-success-surface)))}ax-uploader-list .ax-uploader-list-items li:hover .ax-hide{display:flex!important}ax-uploader-list .ax-uploader-list-items li:hover .ax-show{display:none!important}ax-uploader-list .ax-uploader-list-items li .ax-show{display:flex!important}ax-uploader-list .ax-uploader-list-items li .ax-hide{display:none!important}ax-uploader-list .ax-uploader-list-items .ax-status-loading.ax-status-loading-hide{opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));overflow:hidden}.ax-file{aspect-ratio:1;width:calc(var(--spacing,.25rem)*4);border-radius:var(--radius-sm,.25rem);background-color:var(--color-success,rgba(var(--ax-sys-color-success-surface)));color:var(--color-light,rgba(var(--ax-sys-color-light-surface)));justify-content:center;align-items:center;display:flex;position:relative}.ax-file>*{bottom:calc(var(--spacing,.25rem)*1.5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1/.75)));--tw-font-weight:var(--font-weight-bold,700);font-weight:var(--font-weight-bold,700);color:var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)));position:absolute}.ax-file:before{top:calc(var(--spacing,.25rem)*0);right:calc(var(--spacing,.25rem)*0);border-style:var(--tw-border-style);border-width:0;border-right-style:var(--tw-border-style);border-right-width:4px;border-bottom-style:var(--tw-border-style);border-bottom-width:4px;border-color:var(--color-surface,rgba(var(--ax-sys-color-surface)));border-top-color:color-mix(in srgb,rgba(var(--ax-sys-color-surface))30%,transparent);position:absolute}@supports (color:color-mix(in lab,red,red)){.ax-file:before{border-top-color:color-mix(in oklab,var(--color-surface,rgba(var(--ax-sys-color-surface)))30%,transparent)}}.ax-file:before{border-left-color:color-mix(in srgb,rgba(var(--ax-sys-color-surface))30%,transparent)}@supports (color:color-mix(in lab,red,red)){.ax-file:before{border-left-color:color-mix(in oklab,var(--color-surface,rgba(var(--ax-sys-color-surface)))30%,transparent)}}.ax-file:before{--tw-content:\"\";content:var(--tw-content)}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}\n/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n"] }]
577
29
  }] });
578
30
 
579
- var uploaderList_component = /*#__PURE__*/Object.freeze({
580
- __proto__: null,
581
- AXUploaderListComponent: AXUploaderListComponent
582
- });
583
-
584
31
  /**
585
32
  * A container for managing the uploader dialog with collapse and expand animations.
586
33
  * @category Components
@@ -610,26 +57,12 @@ class AXUploaderDialogContainerComponent {
610
57
  toggle() {
611
58
  this.isCollapsed = !this.isCollapsed;
612
59
  }
613
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderDialogContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
614
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: AXUploaderDialogContainerComponent, isStandalone: true, selector: "ax-uploader-dialog-container", providers: [{ provide: AXComponent, useExisting: AXUploaderDialogContainerComponent }], ngImport: i0, template: "<div class=\"ax-uploader-list-header\">\n <div>{{ '@acorex:common.actions.uploading' | translate | async }}</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n<div [@collapse]=\"isCollapsed\">\n <ax-uploader-list></ax-uploader-list>\n</div>\n", styles: ["ax-uploader-dialog-container{display:block;background-color:rgba(var(--ax-sys-color-surface));-webkit-border-top-left-radius:.75rem;-webkit-border-top-right-radius:.75rem;-moz-border-radius-topleft:.75rem;-moz-border-radius-topright:.75rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem;overflow:hidden;box-shadow:-1px -1px 10px #00000029;border:1px solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));outline-color:rgba(var(--ax-sys-color-primary-surface))}ax-uploader-dialog-container .ax-uploader-list-header{display:flex;justify-content:space-between;background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;font-weight:500;color:rgba(var(--ax-sys-color-surface-fore))}ax-uploader-dialog-container .ax-uploader-list-header .ax-icon{margin-inline-start:.5rem;cursor:pointer}ax-uploader-dialog-container .ax-uploader-list-header .ax-icon:hover{opacity:.75}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AXUploaderListComponent, selector: "ax-uploader-list" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], animations: [
615
- trigger('collapse', [
616
- state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),
617
- state('true', style({ height: '0', visibility: 'hidden' })),
618
- transition('false => true', animate(150 + 'ms ease-in')),
619
- transition('true => false', animate(150 + 'ms ease-out')),
620
- ]),
621
- ], encapsulation: i0.ViewEncapsulation.None }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderDialogContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXUploaderDialogContainerComponent, isStandalone: true, selector: "ax-uploader-dialog-container", providers: [{ provide: AXComponent, useExisting: AXUploaderDialogContainerComponent }], ngImport: i0, template: "<div class=\"ax-uploader-list-header\">\n <div>{{ '@acorex:common.actions.uploading' | translate | async }}</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n@if (isCollapsed) {\n <div animate.enter=\"ax-fade-slide-in\" animate.leave=\"ax-fade-slide-out\">\n <ax-uploader-list></ax-uploader-list>\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial}}}@layer components{ax-uploader-dialog-container{border-top-left-radius:var(--radius-xl,.75rem);border-top-right-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border-lightest,rgba(var(--ax-sys-color-border-lightest-surface)));background-color:var(--color-surface,rgba(var(--ax-sys-color-surface)));--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline-color:var(--color-primary,rgba(var(--ax-sys-color-primary-surface)));display:block;overflow:hidden}ax-uploader-dialog-container .ax-uploader-list-header{background-color:var(--color-surface,rgba(var(--ax-sys-color-surface)));padding-inline:calc(var(--spacing,.25rem)*3);padding-block:calc(var(--spacing,.25rem)*4);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)));justify-content:space-between;display:flex}ax-uploader-dialog-container .ax-uploader-list-header .ax-icon{cursor:pointer;margin-inline-start:calc(var(--spacing,.25rem)*2)}ax-uploader-dialog-container .ax-uploader-list-header .ax-icon:hover{opacity:.75}ax-uploader-dialog-container .ax-fade-slide-in{animation:fadeSlideIn var(--ax-sys-transition-duration)var(--ax-sys-transition-timing-function)}ax-uploader-dialog-container .ax-fade-slide-out{animation:fadeSlideOut var(--ax-sys-transition-duration)var(--ax-sys-transition-timing-function)}}@keyframes fadeSlideIn{0%{opacity:0;max-height:0}to{opacity:1;max-height:350px}}@keyframes fadeSlideOut{0%{opacity:1;max-height:350px}to{opacity:0;max-height:0}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-font-weight{syntax:\"*\";inherits:false}\n/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AXUploaderListComponent, selector: "ax-uploader-list" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
622
62
  }
623
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderDialogContainerComponent, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderDialogContainerComponent, decorators: [{
624
64
  type: Component,
625
- args: [{ selector: 'ax-uploader-dialog-container', encapsulation: ViewEncapsulation.None, animations: [
626
- trigger('collapse', [
627
- state('false', style({ height: AUTO_STYLE, visibility: AUTO_STYLE })),
628
- state('true', style({ height: '0', visibility: 'hidden' })),
629
- transition('false => true', animate(150 + 'ms ease-in')),
630
- transition('true => false', animate(150 + 'ms ease-out')),
631
- ]),
632
- ], imports: [NgClass, AXUploaderListComponent, AsyncPipe, AXTranslatorPipe], providers: [{ provide: AXComponent, useExisting: AXUploaderDialogContainerComponent }], template: "<div class=\"ax-uploader-list-header\">\n <div>{{ '@acorex:common.actions.uploading' | translate | async }}</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n<div [@collapse]=\"isCollapsed\">\n <ax-uploader-list></ax-uploader-list>\n</div>\n", styles: ["ax-uploader-dialog-container{display:block;background-color:rgba(var(--ax-sys-color-surface));-webkit-border-top-left-radius:.75rem;-webkit-border-top-right-radius:.75rem;-moz-border-radius-topleft:.75rem;-moz-border-radius-topright:.75rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem;overflow:hidden;box-shadow:-1px -1px 10px #00000029;border:1px solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));outline-color:rgba(var(--ax-sys-color-primary-surface))}ax-uploader-dialog-container .ax-uploader-list-header{display:flex;justify-content:space-between;background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;font-weight:500;color:rgba(var(--ax-sys-color-surface-fore))}ax-uploader-dialog-container .ax-uploader-list-header .ax-icon{margin-inline-start:.5rem;cursor:pointer}ax-uploader-dialog-container .ax-uploader-list-header .ax-icon:hover{opacity:.75}\n"] }]
65
+ args: [{ selector: 'ax-uploader-dialog-container', encapsulation: ViewEncapsulation.None, imports: [NgClass, AXUploaderListComponent, AsyncPipe, AXTranslatorPipe], providers: [{ provide: AXComponent, useExisting: AXUploaderDialogContainerComponent }], template: "<div class=\"ax-uploader-list-header\">\n <div>{{ '@acorex:common.actions.uploading' | translate | async }}</div>\n <div>\n <i\n class=\"ax-icon\"\n [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n (click)=\"toggle()\"\n ></i>\n <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n </div>\n</div>\n@if (isCollapsed) {\n <div animate.enter=\"ax-fade-slide-in\" animate.leave=\"ax-fade-slide-out\">\n <ax-uploader-list></ax-uploader-list>\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial}}}@layer components{ax-uploader-dialog-container{border-top-left-radius:var(--radius-xl,.75rem);border-top-right-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border-lightest,rgba(var(--ax-sys-color-border-lightest-surface)));background-color:var(--color-surface,rgba(var(--ax-sys-color-surface)));--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline-color:var(--color-primary,rgba(var(--ax-sys-color-primary-surface)));display:block;overflow:hidden}ax-uploader-dialog-container .ax-uploader-list-header{background-color:var(--color-surface,rgba(var(--ax-sys-color-surface)));padding-inline:calc(var(--spacing,.25rem)*3);padding-block:calc(var(--spacing,.25rem)*4);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)));justify-content:space-between;display:flex}ax-uploader-dialog-container .ax-uploader-list-header .ax-icon{cursor:pointer;margin-inline-start:calc(var(--spacing,.25rem)*2)}ax-uploader-dialog-container .ax-uploader-list-header .ax-icon:hover{opacity:.75}ax-uploader-dialog-container .ax-fade-slide-in{animation:fadeSlideIn var(--ax-sys-transition-duration)var(--ax-sys-transition-timing-function)}ax-uploader-dialog-container .ax-fade-slide-out{animation:fadeSlideOut var(--ax-sys-transition-duration)var(--ax-sys-transition-timing-function)}}@keyframes fadeSlideIn{0%{opacity:0;max-height:0}to{opacity:1;max-height:350px}}@keyframes fadeSlideOut{0%{opacity:1;max-height:350px}to{opacity:0;max-height:0}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-font-weight{syntax:\"*\";inherits:false}\n/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n"] }]
633
66
  }] });
634
67
 
635
68
  /**
@@ -652,70 +85,24 @@ class AXUploaderDropZoneComponent extends MXBaseComponent {
652
85
  preventRefresh() {
653
86
  return false;
654
87
  }
655
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderDropZoneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
656
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXUploaderDropZoneComponent, isStandalone: true, selector: "ax-uploader-drop-zone", inputs: { description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXComponent, useExisting: AXUploaderDropZoneComponent }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-uploader-drop-zone-container\">\n <ax-icon class=\"ax-icon ax-icon-upload\"></ax-icon>\n <div class=\"ax-uploader-drop-zone-description\">\n <span>\n {{ '@acorex:uploader.zone.drag' | translate | async }}\n <a href=\"\" (click)=\"preventRefresh()\">\n {{ '@acorex:uploader.zone.choose' | translate | async }}\n </a>\n {{ '@acorex:uploader.zone.to-upload' | translate | async }}\n </span>\n <!-- <p>SVG, PNG, JPG or GIF (MAX. 800x400px)</p> -->\n @if (description()) {\n <p>{{ description() }}</p>\n }\n </div>\n</div>\n", styles: ["ax-uploader-drop-zone{width:100%;height:100%;display:block;cursor:pointer}ax-uploader-drop-zone .ax-uploader-drop-zone-container{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:.5rem;margin:1rem;padding:1rem;gap:1rem;border:2px dashed;border-color:rgba(var(--ax-sys-color-border-lightest-surface));pointer-events:none}ax-uploader-drop-zone .ax-uploader-drop-zone-container:hover{border-color:rgba(var(--ax-sys-color-primary-surface));background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}ax-uploader-drop-zone .ax-uploader-drop-zone-container ax-icon{font-size:1.875rem;line-height:2.25rem;color:#a3a3a3;width:1.75rem;height:2rem}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description{display:flex;flex-direction:column;gap:.5rem}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description a{color:rgba(var(--ax-sys-color-primary-surface))}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description p{font-size:.875rem;line-height:1.25rem;color:#a3a3a3}\n"], dependencies: [{ kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderDropZoneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXUploaderDropZoneComponent, isStandalone: true, selector: "ax-uploader-drop-zone", inputs: { description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXComponent, useExisting: AXUploaderDropZoneComponent }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-uploader-drop-zone-container\">\n <ax-icon class=\"ax-icon ax-icon-upload\"></ax-icon>\n <div class=\"ax-uploader-drop-zone-description\">\n <span>\n {{ '@acorex:uploader.zone.drag' | translate | async }}\n <a href=\"\" (click)=\"preventRefresh()\">\n {{ '@acorex:uploader.zone.choose' | translate | async }}\n </a>\n {{ '@acorex:uploader.zone.to-upload' | translate | async }}\n </span>\n <!-- <p>SVG, PNG, JPG or GIF (MAX. 800x400px)</p> -->\n @if (description()) {\n <p>{{ description() }}</p>\n }\n </div>\n</div>\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}@layer components{ax-uploader-drop-zone{cursor:pointer;width:100%;height:100%;display:block}ax-uploader-drop-zone .ax-uploader-drop-zone-container{pointer-events:none;margin:calc(var(--spacing,.25rem)*4);justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem)*4);border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:2px;border-color:var(--color-border-lightest,rgba(var(--ax-sys-color-border-lightest-surface)));padding:calc(var(--spacing,.25rem)*4);flex-direction:column;display:flex}ax-uploader-drop-zone .ax-uploader-drop-zone-container:hover{border-color:var(--color-primary,rgba(var(--ax-sys-color-primary-surface)));background-color:var(--color-primary-lightest,rgba(var(--ax-sys-color-primary-lightest-surface)))}ax-uploader-drop-zone .ax-uploader-drop-zone-container ax-icon{height:calc(var(--spacing,.25rem)*8);width:calc(var(--spacing,.25rem)*7);font-size:var(--text-3xl,1.875rem);line-height:var(--tw-leading,var(--text-3xl--line-height, 1.2 ));color:color-mix(in srgb,rgba(var(--ax-sys-color-on-surface))50%,transparent)}@supports (color:color-mix(in lab,red,red)){ax-uploader-drop-zone .ax-uploader-drop-zone-container ax-icon{color:color-mix(in oklab,var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)))50%,transparent)}}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description{gap:calc(var(--spacing,.25rem)*2);flex-direction:column;display:flex}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description a{color:var(--color-primary,rgba(var(--ax-sys-color-primary-surface)))}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description p{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));color:color-mix(in srgb,rgba(var(--ax-sys-color-on-surface))50%,transparent)}@supports (color:color-mix(in lab,red,red)){ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description p{color:color-mix(in oklab,var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)))50%,transparent)}}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}\n/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
657
90
  }
658
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderDropZoneComponent, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderDropZoneComponent, decorators: [{
659
92
  type: Component,
660
- args: [{ selector: 'ax-uploader-drop-zone', encapsulation: ViewEncapsulation.None, imports: [AXDecoratorIconComponent, AsyncPipe, AXTranslatorPipe], providers: [{ provide: AXComponent, useExisting: AXUploaderDropZoneComponent }], template: "<div class=\"ax-uploader-drop-zone-container\">\n <ax-icon class=\"ax-icon ax-icon-upload\"></ax-icon>\n <div class=\"ax-uploader-drop-zone-description\">\n <span>\n {{ '@acorex:uploader.zone.drag' | translate | async }}\n <a href=\"\" (click)=\"preventRefresh()\">\n {{ '@acorex:uploader.zone.choose' | translate | async }}\n </a>\n {{ '@acorex:uploader.zone.to-upload' | translate | async }}\n </span>\n <!-- <p>SVG, PNG, JPG or GIF (MAX. 800x400px)</p> -->\n @if (description()) {\n <p>{{ description() }}</p>\n }\n </div>\n</div>\n", styles: ["ax-uploader-drop-zone{width:100%;height:100%;display:block;cursor:pointer}ax-uploader-drop-zone .ax-uploader-drop-zone-container{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:.5rem;margin:1rem;padding:1rem;gap:1rem;border:2px dashed;border-color:rgba(var(--ax-sys-color-border-lightest-surface));pointer-events:none}ax-uploader-drop-zone .ax-uploader-drop-zone-container:hover{border-color:rgba(var(--ax-sys-color-primary-surface));background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}ax-uploader-drop-zone .ax-uploader-drop-zone-container ax-icon{font-size:1.875rem;line-height:2.25rem;color:#a3a3a3;width:1.75rem;height:2rem}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description{display:flex;flex-direction:column;gap:.5rem}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description a{color:rgba(var(--ax-sys-color-primary-surface))}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description p{font-size:.875rem;line-height:1.25rem;color:#a3a3a3}\n"] }]
661
- }] });
93
+ args: [{ selector: 'ax-uploader-drop-zone', encapsulation: ViewEncapsulation.None, imports: [AXDecoratorIconComponent, AsyncPipe, AXTranslatorPipe], providers: [{ provide: AXComponent, useExisting: AXUploaderDropZoneComponent }], template: "<div class=\"ax-uploader-drop-zone-container\">\n <ax-icon class=\"ax-icon ax-icon-upload\"></ax-icon>\n <div class=\"ax-uploader-drop-zone-description\">\n <span>\n {{ '@acorex:uploader.zone.drag' | translate | async }}\n <a href=\"\" (click)=\"preventRefresh()\">\n {{ '@acorex:uploader.zone.choose' | translate | async }}\n </a>\n {{ '@acorex:uploader.zone.to-upload' | translate | async }}\n </span>\n <!-- <p>SVG, PNG, JPG or GIF (MAX. 800x400px)</p> -->\n @if (description()) {\n <p>{{ description() }}</p>\n }\n </div>\n</div>\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}@layer components{ax-uploader-drop-zone{cursor:pointer;width:100%;height:100%;display:block}ax-uploader-drop-zone .ax-uploader-drop-zone-container{pointer-events:none;margin:calc(var(--spacing,.25rem)*4);justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem)*4);border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:2px;border-color:var(--color-border-lightest,rgba(var(--ax-sys-color-border-lightest-surface)));padding:calc(var(--spacing,.25rem)*4);flex-direction:column;display:flex}ax-uploader-drop-zone .ax-uploader-drop-zone-container:hover{border-color:var(--color-primary,rgba(var(--ax-sys-color-primary-surface)));background-color:var(--color-primary-lightest,rgba(var(--ax-sys-color-primary-lightest-surface)))}ax-uploader-drop-zone .ax-uploader-drop-zone-container ax-icon{height:calc(var(--spacing,.25rem)*8);width:calc(var(--spacing,.25rem)*7);font-size:var(--text-3xl,1.875rem);line-height:var(--tw-leading,var(--text-3xl--line-height, 1.2 ));color:color-mix(in srgb,rgba(var(--ax-sys-color-on-surface))50%,transparent)}@supports (color:color-mix(in lab,red,red)){ax-uploader-drop-zone .ax-uploader-drop-zone-container ax-icon{color:color-mix(in oklab,var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)))50%,transparent)}}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description{gap:calc(var(--spacing,.25rem)*2);flex-direction:column;display:flex}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description a{color:var(--color-primary,rgba(var(--ax-sys-color-primary-surface)))}ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description p{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));color:color-mix(in srgb,rgba(var(--ax-sys-color-on-surface))50%,transparent)}@supports (color:color-mix(in lab,red,red)){ax-uploader-drop-zone .ax-uploader-drop-zone-container .ax-uploader-drop-zone-description p{color:color-mix(in oklab,var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)))50%,transparent)}}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}\n/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n"] }]
94
+ }], propDecorators: { description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }] } });
662
95
 
663
- const COMPONENTS = [
664
- AXUploaderDropZoneComponent,
665
- AXUploaderListComponent,
666
- AXUploaderZoneDirective,
667
- AXUploaderBrowseDirective,
668
- AXUploaderDialogContainerComponent,
669
- ];
96
+ const COMPONENTS = [AXUploaderListComponent, AXUploaderDialogContainerComponent];
670
97
  class AXUploaderModule {
671
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
672
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderModule, imports: [CommonModule,
673
- AXDecoratorModule,
674
- AXButtonModule,
675
- AXTranslationModule,
676
- AXProgressBarModule,
677
- AXFormatModule,
678
- AXFileModule,
679
- AXDateTimeModule,
680
- AXCircularProgressModule,
681
- AXPopupModule, AXUploaderDropZoneComponent,
682
- AXUploaderListComponent,
683
- AXUploaderZoneDirective,
684
- AXUploaderBrowseDirective,
685
- AXUploaderDialogContainerComponent], exports: [AXUploaderDropZoneComponent,
686
- AXUploaderListComponent,
687
- AXUploaderZoneDirective,
688
- AXUploaderBrowseDirective,
689
- AXUploaderDialogContainerComponent] }); }
690
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderModule, imports: [CommonModule,
691
- AXDecoratorModule,
692
- AXButtonModule,
693
- AXTranslationModule,
694
- AXProgressBarModule,
695
- AXFormatModule,
696
- AXFileModule,
697
- AXDateTimeModule,
698
- AXCircularProgressModule,
699
- AXPopupModule, AXUploaderDropZoneComponent,
700
- AXUploaderListComponent,
701
- AXUploaderDialogContainerComponent] }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
99
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderModule, imports: [AXUploaderListComponent, AXUploaderDialogContainerComponent], exports: [AXUploaderListComponent, AXUploaderDialogContainerComponent] }); }
100
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderModule, imports: [COMPONENTS] }); }
702
101
  }
703
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXUploaderModule, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXUploaderModule, decorators: [{
704
103
  type: NgModule,
705
104
  args: [{
706
- imports: [
707
- CommonModule,
708
- AXDecoratorModule,
709
- AXButtonModule,
710
- AXTranslationModule,
711
- AXProgressBarModule,
712
- AXFormatModule,
713
- AXFileModule,
714
- AXDateTimeModule,
715
- AXCircularProgressModule,
716
- AXPopupModule,
717
- ...COMPONENTS,
718
- ],
105
+ imports: [...COMPONENTS],
719
106
  exports: [...COMPONENTS],
720
107
  providers: [],
721
108
  }]
@@ -725,5 +112,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
725
112
  * Generated bundle index. Do not edit.
726
113
  */
727
114
 
728
- export { AXUploadRequest, AXUploaderBrowseDirective, AXUploaderDialogContainerComponent, AXUploaderDropZoneComponent, AXUploaderListComponent, AXUploaderModule, AXUploaderService, AXUploaderZoneDirective };
115
+ export { AXUploaderDialogContainerComponent, AXUploaderDropZoneComponent, AXUploaderListComponent, AXUploaderModule };
729
116
  //# sourceMappingURL=acorex-components-uploader.mjs.map