@sebgroup/green-angular 5.1.1 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. package/esm2022/lib/shared/core-element/core-element.directive.mjs +1 -2
  2. package/esm2022/src/lib/shared/core-element/core-element.directive.mjs +1 -2
  3. package/esm2022/src/v-angular/account-number/account-number.module.mjs +18 -0
  4. package/esm2022/src/v-angular/account-number/account-number.pipe.mjs +54 -0
  5. package/esm2022/src/v-angular/account-number/index.mjs +3 -0
  6. package/esm2022/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.mjs +5 -0
  7. package/esm2022/src/v-angular/alert/alert.component.mjs +47 -0
  8. package/esm2022/src/v-angular/alert/alert.models.mjs +8 -0
  9. package/esm2022/src/v-angular/alert/alert.module.mjs +18 -0
  10. package/esm2022/src/v-angular/alert/index.mjs +4 -0
  11. package/esm2022/src/v-angular/alert/sebgroup-green-angular-src-v-angular-alert.mjs +5 -0
  12. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  13. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  14. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  15. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  16. package/esm2022/src/v-angular/button/button.component.mjs +9 -9
  17. package/esm2022/src/v-angular/button/button.module.mjs +11 -11
  18. package/esm2022/src/v-angular/card/card.component.mjs +6 -6
  19. package/esm2022/src/v-angular/card/card.module.mjs +9 -9
  20. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  21. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +9 -7
  22. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +14 -12
  23. package/esm2022/src/v-angular/core/core.utils.mjs +35 -1
  24. package/esm2022/src/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  25. package/esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  26. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  27. package/esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  28. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  29. package/esm2022/src/v-angular/datepicker/datepicker.globals.mjs +20 -0
  30. package/esm2022/src/v-angular/datepicker/datepicker.models.mjs +56 -0
  31. package/esm2022/src/v-angular/datepicker/datepicker.module.mjs +63 -0
  32. package/esm2022/src/v-angular/datepicker/datepicker.utils.mjs +196 -0
  33. package/esm2022/src/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  34. package/esm2022/src/v-angular/datepicker/index.mjs +17 -0
  35. package/esm2022/src/v-angular/datepicker/models/dates.mjs +291 -0
  36. package/esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  37. package/esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  38. package/esm2022/src/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  39. package/esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.mjs +5 -0
  40. package/esm2022/src/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  41. package/esm2022/src/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  42. package/esm2022/src/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  43. package/esm2022/src/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  44. package/esm2022/src/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  45. package/esm2022/src/v-angular/drag-drop/index.mjs +5 -0
  46. package/esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.mjs +5 -0
  47. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  48. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +16 -9
  49. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +31 -15
  50. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  51. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  52. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  53. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  54. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  55. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +5 -5
  56. package/esm2022/src/v-angular/external-link/external-link.module.mjs +9 -9
  57. package/esm2022/src/v-angular/i18n/i18n.module.mjs +12 -12
  58. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +6 -6
  59. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +6 -6
  60. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +11 -11
  61. package/esm2022/src/v-angular/input/input.component.mjs +11 -15
  62. package/esm2022/src/v-angular/input/input.module.mjs +27 -22
  63. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +6 -6
  64. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +10 -10
  65. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +53 -31
  66. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  67. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  68. package/esm2022/src/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  69. package/esm2022/src/v-angular/modal/modal.module.mjs +38 -27
  70. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  71. package/esm2022/src/v-angular/pagination/index.mjs +3 -0
  72. package/esm2022/src/v-angular/pagination/pagination.component.mjs +144 -0
  73. package/esm2022/src/v-angular/pagination/pagination.module.mjs +37 -0
  74. package/esm2022/src/v-angular/pagination/sebgroup-green-angular-src-v-angular-pagination.mjs +5 -0
  75. package/esm2022/src/v-angular/radio/radio.component.mjs +14 -12
  76. package/esm2022/src/v-angular/radio/radio.module.mjs +12 -11
  77. package/esm2022/src/v-angular/slug/slug.module.mjs +6 -6
  78. package/esm2022/src/v-angular/table/index.mjs +9 -0
  79. package/esm2022/src/v-angular/table/sebgroup-green-angular-src-v-angular-table.mjs +5 -0
  80. package/esm2022/src/v-angular/table/table.component.mjs +387 -0
  81. package/esm2022/src/v-angular/table/table.directive.mjs +110 -0
  82. package/esm2022/src/v-angular/table/table.models.mjs +2 -0
  83. package/esm2022/src/v-angular/table/table.module.mjs +40 -0
  84. package/esm2022/src/v-angular/table/table.tools.mjs +29 -0
  85. package/esm2022/src/v-angular/table/tr-thook.pipe.mjs +22 -0
  86. package/esm2022/src/v-angular/tabs/index.mjs +8 -0
  87. package/esm2022/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.mjs +5 -0
  88. package/esm2022/src/v-angular/tabs/tab.directive.mjs +81 -0
  89. package/esm2022/src/v-angular/tabs/tabs.component.mjs +262 -0
  90. package/esm2022/src/v-angular/tabs/tabs.models.mjs +2 -0
  91. package/esm2022/src/v-angular/tabs/tabs.module.mjs +21 -0
  92. package/esm2022/src/v-angular/textarea/textarea.component.mjs +9 -7
  93. package/esm2022/src/v-angular/textarea/textarea.module.mjs +27 -13
  94. package/esm2022/src/v-angular/toast/index.mjs +8 -0
  95. package/esm2022/src/v-angular/toast/sebgroup-green-angular-src-v-angular-toast.mjs +5 -0
  96. package/esm2022/src/v-angular/toast/toast-message.service.mjs +63 -0
  97. package/esm2022/src/v-angular/toast/toast.component.mjs +70 -0
  98. package/esm2022/src/v-angular/toast/toast.models.mjs +8 -0
  99. package/esm2022/src/v-angular/toast/toast.module.mjs +21 -0
  100. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +35 -15
  101. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +11 -11
  102. package/esm2022/src/v-angular/tooltip/tooltip.styles.mjs +60 -0
  103. package/esm2022/v-angular/alert/alert.component.mjs +47 -0
  104. package/esm2022/v-angular/alert/alert.models.mjs +8 -0
  105. package/esm2022/v-angular/alert/alert.module.mjs +18 -0
  106. package/esm2022/v-angular/alert/index.mjs +4 -0
  107. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  108. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  109. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  110. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  111. package/esm2022/v-angular/button/button.component.mjs +9 -9
  112. package/esm2022/v-angular/button/button.module.mjs +11 -11
  113. package/esm2022/v-angular/card/card.component.mjs +6 -6
  114. package/esm2022/v-angular/card/card.module.mjs +9 -9
  115. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  116. package/esm2022/v-angular/checkbox/checkbox.component.mjs +9 -7
  117. package/esm2022/v-angular/checkbox/checkbox.module.mjs +14 -12
  118. package/esm2022/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  119. package/esm2022/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  120. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  121. package/esm2022/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  122. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  123. package/esm2022/v-angular/datepicker/datepicker.globals.mjs +20 -0
  124. package/esm2022/v-angular/datepicker/datepicker.models.mjs +56 -0
  125. package/esm2022/v-angular/datepicker/datepicker.module.mjs +63 -0
  126. package/esm2022/v-angular/datepicker/datepicker.utils.mjs +196 -0
  127. package/esm2022/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  128. package/esm2022/v-angular/datepicker/index.mjs +17 -0
  129. package/esm2022/v-angular/datepicker/models/dates.mjs +291 -0
  130. package/esm2022/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  131. package/esm2022/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  132. package/esm2022/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  133. package/esm2022/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  134. package/esm2022/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  135. package/esm2022/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  136. package/esm2022/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  137. package/esm2022/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  138. package/esm2022/v-angular/drag-drop/index.mjs +5 -0
  139. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  140. package/esm2022/v-angular/dropdown/dropdown.component.mjs +16 -9
  141. package/esm2022/v-angular/dropdown/dropdown.module.mjs +31 -15
  142. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  143. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  144. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  145. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  146. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  147. package/esm2022/v-angular/external-link/external-link.directive.mjs +37 -0
  148. package/esm2022/v-angular/external-link/external-link.module.mjs +18 -0
  149. package/esm2022/v-angular/external-link/index.mjs +3 -0
  150. package/esm2022/v-angular/i18n/i18n.module.mjs +12 -12
  151. package/esm2022/v-angular/i18n/i18n.test.module.mjs +6 -6
  152. package/esm2022/v-angular/index.mjs +10 -1
  153. package/esm2022/v-angular/info-circle/info-circle.component.mjs +6 -6
  154. package/esm2022/v-angular/info-circle/info-circle.module.mjs +11 -11
  155. package/esm2022/v-angular/input/input.component.mjs +11 -15
  156. package/esm2022/v-angular/input/input.module.mjs +27 -22
  157. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +6 -6
  158. package/esm2022/v-angular/input-mask/input-mask.module.mjs +10 -10
  159. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +53 -31
  160. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  161. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  162. package/esm2022/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  163. package/esm2022/v-angular/modal/modal.module.mjs +38 -27
  164. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  165. package/esm2022/v-angular/pagination/index.mjs +3 -0
  166. package/esm2022/v-angular/pagination/pagination.component.mjs +144 -0
  167. package/esm2022/v-angular/pagination/pagination.module.mjs +37 -0
  168. package/esm2022/v-angular/radio/radio.component.mjs +14 -12
  169. package/esm2022/v-angular/radio/radio.module.mjs +12 -11
  170. package/esm2022/v-angular/slug/index.mjs +3 -0
  171. package/esm2022/v-angular/slug/slug.module.mjs +18 -0
  172. package/esm2022/v-angular/slug/slug.pipe.mjs +27 -0
  173. package/esm2022/v-angular/table/index.mjs +9 -0
  174. package/esm2022/v-angular/table/table.component.mjs +387 -0
  175. package/esm2022/v-angular/table/table.directive.mjs +110 -0
  176. package/esm2022/v-angular/table/table.models.mjs +2 -0
  177. package/esm2022/v-angular/table/table.module.mjs +40 -0
  178. package/esm2022/v-angular/table/table.tools.mjs +29 -0
  179. package/esm2022/v-angular/table/tr-thook.pipe.mjs +22 -0
  180. package/esm2022/v-angular/tabs/index.mjs +8 -0
  181. package/esm2022/v-angular/tabs/tab.directive.mjs +81 -0
  182. package/esm2022/v-angular/tabs/tabs.component.mjs +262 -0
  183. package/esm2022/v-angular/tabs/tabs.models.mjs +2 -0
  184. package/esm2022/v-angular/tabs/tabs.module.mjs +21 -0
  185. package/esm2022/v-angular/textarea/textarea.component.mjs +9 -7
  186. package/esm2022/v-angular/textarea/textarea.module.mjs +27 -13
  187. package/esm2022/v-angular/toast/index.mjs +8 -0
  188. package/esm2022/v-angular/toast/toast-message.service.mjs +63 -0
  189. package/esm2022/v-angular/toast/toast.component.mjs +70 -0
  190. package/esm2022/v-angular/toast/toast.models.mjs +8 -0
  191. package/esm2022/v-angular/toast/toast.module.mjs +21 -0
  192. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +35 -15
  193. package/esm2022/v-angular/tooltip/tooltip.module.mjs +11 -11
  194. package/esm2022/v-angular/tooltip/tooltip.styles.mjs +60 -0
  195. package/esm2022/v-angular/v-angular.module.mjs +104 -68
  196. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +0 -1
  197. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
  198. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +76 -0
  199. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -0
  200. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +76 -0
  201. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -0
  202. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +23 -13
  203. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  204. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +14 -14
  205. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  206. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +18 -18
  207. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  208. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +13 -13
  209. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  210. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +6 -6
  211. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  212. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +21 -17
  213. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  214. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +34 -0
  215. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  216. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +1759 -0
  217. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -0
  218. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +687 -0
  219. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -0
  220. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +126 -74
  221. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  222. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +12 -12
  223. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  224. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +17 -17
  225. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  226. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +15 -15
  227. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  228. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +14 -14
  229. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  230. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +36 -35
  231. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  232. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +246 -81
  233. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  234. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +185 -0
  235. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -0
  236. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +24 -21
  237. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  238. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +6 -6
  239. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  240. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +585 -0
  241. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -0
  242. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +367 -0
  243. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -0
  244. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +33 -18
  245. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  246. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +166 -0
  247. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -0
  248. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +103 -24
  249. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  250. package/fesm2022/sebgroup-green-angular-v-angular.mjs +6295 -2165
  251. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  252. package/fesm2022/sebgroup-green-angular.mjs +0 -1
  253. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  254. package/package.json +51 -3
  255. package/src/v-angular/account-number/README.md +70 -0
  256. package/src/v-angular/account-number/account-number.module.d.ts +8 -0
  257. package/src/v-angular/account-number/account-number.pipe.d.ts +32 -0
  258. package/src/v-angular/account-number/index.d.ts +2 -0
  259. package/src/v-angular/alert/alert.component.d.ts +19 -0
  260. package/src/v-angular/alert/alert.models.d.ts +13 -0
  261. package/src/v-angular/alert/alert.module.d.ts +8 -0
  262. package/src/v-angular/alert/index.d.ts +3 -0
  263. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  264. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  265. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  266. package/src/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  267. package/src/v-angular/button/button.component.d.ts +5 -5
  268. package/src/v-angular/button/button.module.d.ts +4 -4
  269. package/src/v-angular/card/card.component.d.ts +3 -3
  270. package/src/v-angular/card/card.module.d.ts +4 -4
  271. package/src/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  272. package/src/v-angular/checkbox/checkbox.component.d.ts +6 -5
  273. package/src/v-angular/checkbox/checkbox.module.d.ts +5 -4
  274. package/src/v-angular/core/core.utils.d.ts +1 -0
  275. package/src/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  276. package/src/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  277. package/src/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  278. package/src/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  279. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  280. package/src/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  281. package/src/v-angular/datepicker/datepicker.models.d.ts +50 -0
  282. package/src/v-angular/datepicker/datepicker.module.d.ts +19 -0
  283. package/src/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  284. package/src/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  285. package/src/v-angular/datepicker/index.d.ts +13 -0
  286. package/src/v-angular/datepicker/models/dates.d.ts +15 -0
  287. package/src/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  288. package/src/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  289. package/src/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  290. package/src/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  291. package/src/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  292. package/src/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  293. package/src/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  294. package/src/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  295. package/src/v-angular/drag-drop/index.d.ts +4 -0
  296. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  297. package/src/v-angular/dropdown/dropdown.component.d.ts +10 -6
  298. package/src/v-angular/dropdown/dropdown.module.d.ts +8 -7
  299. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  300. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  301. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  302. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  303. package/src/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  304. package/src/v-angular/external-link/external-link.directive.d.ts +3 -3
  305. package/src/v-angular/external-link/external-link.module.d.ts +4 -4
  306. package/src/v-angular/i18n/i18n.module.d.ts +7 -7
  307. package/src/v-angular/i18n/i18n.test.module.d.ts +4 -4
  308. package/src/v-angular/info-circle/info-circle.component.d.ts +4 -4
  309. package/src/v-angular/info-circle/info-circle.module.d.ts +4 -4
  310. package/src/v-angular/input/input.component.d.ts +5 -10
  311. package/src/v-angular/input/input.module.d.ts +5 -4
  312. package/src/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  313. package/src/v-angular/input-mask/input-mask.module.d.ts +5 -5
  314. package/src/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  315. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  316. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  317. package/src/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  318. package/src/v-angular/modal/modal.module.d.ts +4 -4
  319. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  320. package/src/v-angular/pagination/index.d.ts +2 -0
  321. package/src/v-angular/pagination/pagination.component.d.ts +64 -0
  322. package/src/v-angular/pagination/pagination.module.d.ts +12 -0
  323. package/src/v-angular/radio/radio.component.d.ts +14 -13
  324. package/src/v-angular/radio/radio.module.d.ts +5 -4
  325. package/src/v-angular/slug/slug.module.d.ts +4 -4
  326. package/src/v-angular/table/index.d.ts +5 -0
  327. package/src/v-angular/table/table.component.d.ts +229 -0
  328. package/src/v-angular/table/table.directive.d.ts +36 -0
  329. package/src/v-angular/table/table.models.d.ts +62 -0
  330. package/src/v-angular/table/table.module.d.ts +12 -0
  331. package/src/v-angular/table/table.tools.d.ts +5 -0
  332. package/src/v-angular/table/tr-thook.pipe.d.ts +7 -0
  333. package/src/v-angular/tabs/index.d.ts +4 -0
  334. package/src/v-angular/tabs/tab.directive.d.ts +37 -0
  335. package/src/v-angular/tabs/tabs.component.d.ts +65 -0
  336. package/src/v-angular/tabs/tabs.models.d.ts +25 -0
  337. package/src/v-angular/tabs/tabs.module.d.ts +11 -0
  338. package/src/v-angular/textarea/textarea.component.d.ts +6 -5
  339. package/src/v-angular/textarea/textarea.module.d.ts +6 -4
  340. package/src/v-angular/toast/index.d.ts +4 -0
  341. package/src/v-angular/toast/toast-message.service.d.ts +17 -0
  342. package/src/v-angular/toast/toast.component.d.ts +22 -0
  343. package/src/v-angular/toast/toast.models.d.ts +15 -0
  344. package/src/v-angular/toast/toast.module.d.ts +10 -0
  345. package/src/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  346. package/src/v-angular/tooltip/tooltip.module.d.ts +4 -4
  347. package/src/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  348. package/v-angular/alert/alert.component.d.ts +19 -0
  349. package/v-angular/alert/alert.models.d.ts +13 -0
  350. package/v-angular/alert/alert.module.d.ts +8 -0
  351. package/v-angular/alert/index.d.ts +3 -0
  352. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  353. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  354. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  355. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  356. package/v-angular/button/button.component.d.ts +5 -5
  357. package/v-angular/button/button.module.d.ts +4 -4
  358. package/v-angular/card/card.component.d.ts +3 -3
  359. package/v-angular/card/card.module.d.ts +4 -4
  360. package/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  361. package/v-angular/checkbox/checkbox.component.d.ts +6 -5
  362. package/v-angular/checkbox/checkbox.module.d.ts +5 -4
  363. package/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  364. package/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  365. package/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  366. package/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  367. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  368. package/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  369. package/v-angular/datepicker/datepicker.models.d.ts +50 -0
  370. package/v-angular/datepicker/datepicker.module.d.ts +19 -0
  371. package/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  372. package/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  373. package/v-angular/datepicker/index.d.ts +13 -0
  374. package/v-angular/datepicker/models/dates.d.ts +15 -0
  375. package/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  376. package/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  377. package/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  378. package/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  379. package/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  380. package/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  381. package/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  382. package/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  383. package/v-angular/drag-drop/index.d.ts +4 -0
  384. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  385. package/v-angular/dropdown/dropdown.component.d.ts +10 -6
  386. package/v-angular/dropdown/dropdown.module.d.ts +8 -7
  387. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  388. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  389. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  390. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  391. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  392. package/v-angular/external-link/external-link.directive.d.ts +17 -0
  393. package/v-angular/external-link/external-link.module.d.ts +8 -0
  394. package/v-angular/external-link/index.d.ts +2 -0
  395. package/v-angular/i18n/i18n.module.d.ts +7 -7
  396. package/v-angular/i18n/i18n.test.module.d.ts +4 -4
  397. package/v-angular/index.d.ts +9 -0
  398. package/v-angular/info-circle/info-circle.component.d.ts +4 -4
  399. package/v-angular/info-circle/info-circle.module.d.ts +4 -4
  400. package/v-angular/input/input.component.d.ts +5 -10
  401. package/v-angular/input/input.module.d.ts +5 -4
  402. package/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  403. package/v-angular/input-mask/input-mask.module.d.ts +5 -5
  404. package/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  405. package/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  406. package/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  407. package/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  408. package/v-angular/modal/modal.module.d.ts +4 -4
  409. package/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  410. package/v-angular/pagination/index.d.ts +2 -0
  411. package/v-angular/pagination/pagination.component.d.ts +64 -0
  412. package/v-angular/pagination/pagination.module.d.ts +12 -0
  413. package/v-angular/radio/radio.component.d.ts +14 -13
  414. package/v-angular/radio/radio.module.d.ts +5 -4
  415. package/v-angular/slug/index.d.ts +2 -0
  416. package/v-angular/slug/slug.module.d.ts +8 -0
  417. package/v-angular/slug/slug.pipe.d.ts +12 -0
  418. package/v-angular/table/index.d.ts +5 -0
  419. package/v-angular/table/table.component.d.ts +229 -0
  420. package/v-angular/table/table.directive.d.ts +36 -0
  421. package/v-angular/table/table.models.d.ts +62 -0
  422. package/v-angular/table/table.module.d.ts +12 -0
  423. package/v-angular/table/table.tools.d.ts +5 -0
  424. package/v-angular/table/tr-thook.pipe.d.ts +7 -0
  425. package/v-angular/tabs/index.d.ts +4 -0
  426. package/v-angular/tabs/tab.directive.d.ts +37 -0
  427. package/v-angular/tabs/tabs.component.d.ts +65 -0
  428. package/v-angular/tabs/tabs.models.d.ts +25 -0
  429. package/v-angular/tabs/tabs.module.d.ts +11 -0
  430. package/v-angular/textarea/textarea.component.d.ts +6 -5
  431. package/v-angular/textarea/textarea.module.d.ts +6 -4
  432. package/v-angular/toast/index.d.ts +4 -0
  433. package/v-angular/toast/toast-message.service.d.ts +17 -0
  434. package/v-angular/toast/toast.component.d.ts +22 -0
  435. package/v-angular/toast/toast.models.d.ts +15 -0
  436. package/v-angular/toast/toast.module.d.ts +10 -0
  437. package/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  438. package/v-angular/tooltip/tooltip.module.d.ts +4 -4
  439. package/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  440. package/v-angular/v-angular.module.d.ts +27 -18
@@ -0,0 +1,687 @@
1
+ import { HttpEventType, HttpClientModule } from '@angular/common/http';
2
+ import * as i0 from '@angular/core';
3
+ import { Pipe, inject, KeyValueDiffers, EventEmitter, Component, ViewChild, HostBinding, Input, Output, HostListener, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
4
+ import { throwError, timer } from 'rxjs';
5
+ import { mergeMap, finalize, switchMap, retryWhen, tap, filter, take } from 'rxjs/operators';
6
+ import * as i2 from '@sebgroup/green-angular/src/v-angular/modal';
7
+ import { NggvModalModule } from '@sebgroup/green-angular/src/v-angular/modal';
8
+ import '@sebgroup/green-core/components/icon/icons/cloud-upload.js';
9
+ import '@sebgroup/green-core/components/icon/icons/cross-small.js';
10
+ import '@sebgroup/green-core/components/icon/icons/checkmark.js';
11
+ import * as i1 from '@jsverse/transloco';
12
+ import { TranslocoModule, TRANSLOCO_SCOPE } from '@jsverse/transloco';
13
+ import * as i3 from '@sebgroup/green-angular/src/lib/shared';
14
+ import { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared';
15
+ import * as i4 from '@angular/common';
16
+ import { CommonModule } from '@angular/common';
17
+
18
+ /* eslint-disable no-console */
19
+ /**
20
+ * Helper to extend the base file with {@link APIFile} defaults
21
+ * @param file file base that will be extended with {@link APIFile} defaults
22
+ * @param data extra data to override defaults
23
+ */
24
+ const extendFile = (file, ...data) => {
25
+ return Object.assign({
26
+ id: file ? btoa(file.name) : '',
27
+ fileName: file ? file.name : 'na',
28
+ status: '',
29
+ statusReasonInformation: null,
30
+ principal: '',
31
+ uploadDate: (file
32
+ ? new Date(file.lastModified)
33
+ : new Date()).toISOString(),
34
+ registrarId: '',
35
+ registrarName: '',
36
+ progress: 0,
37
+ uploadState: 'local',
38
+ uploadRequests: undefined,
39
+ raw: file,
40
+ }, ...data);
41
+ };
42
+ /**
43
+ * Checks if file matches allowed mime types
44
+ * @param type file mime type
45
+ * @param accept allowed mime types
46
+ */
47
+ const verifyAccept = (type, accept) => {
48
+ if (!accept)
49
+ return true;
50
+ const regex = new RegExp(accept.replace(/\*/g, '.*').replace(/\s*,\s*/g, '|'));
51
+ return regex.test(type);
52
+ };
53
+ /**
54
+ * Determines if browser supports drag and drop
55
+ */
56
+ const isDragDropAvailable = () => {
57
+ const div = document.createElement('div');
58
+ return (('draggable' in div || ('ondragstart' in div && 'ondrop' in div)) &&
59
+ 'FormData' in window &&
60
+ 'FileReader' in window);
61
+ };
62
+ /**
63
+ * Pick only specified keys from a given object
64
+ * @param keys keys to pick from a given object
65
+ * @param object to extract keys from
66
+ */
67
+ const pick = (object, ...keys) => {
68
+ const copy = {};
69
+ keys.forEach((key) => {
70
+ copy[key] = object[key];
71
+ });
72
+ return copy;
73
+ };
74
+ /**
75
+ * Will retry running the observable when an error occurs to a maximum limit, increasing delay between executions.
76
+ * @param options specifies number of retries, scaling duration and statuses to exclude
77
+ */
78
+ const retryStrategy = ({ maxRetryAttempts = 3, scalingDuration = 1000, excludedStatusCodes = [], } = {}) => (attempts) => {
79
+ return attempts.pipe(mergeMap((error, i) => {
80
+ const retryAttempt = i + 1;
81
+ // if maximum number of retries have been met
82
+ // or response is a status code we don't wish to retry, throw error
83
+ if (retryAttempt > maxRetryAttempts ||
84
+ excludedStatusCodes.find((e) => e === error.status)) {
85
+ return throwError(() => error);
86
+ }
87
+ console.warn(`Attempt ${retryAttempt}: retrying in ${retryAttempt * scalingDuration}ms`);
88
+ return timer(retryAttempt * scalingDuration);
89
+ }), finalize(() => console.warn(`Failed after ${maxRetryAttempts} retry attempts, standing down.`)));
90
+ };
91
+
92
+ class ValuePipe {
93
+ constructor(differs) {
94
+ this.differs = differs;
95
+ this.values = [];
96
+ }
97
+ transform(input) {
98
+ if (!input || (!(input instanceof Map) && typeof input !== 'object')) {
99
+ return null;
100
+ }
101
+ if (!this.differ) {
102
+ // make a differ for whatever type we've been passed in
103
+ this.differ = this.differs.find(input).create();
104
+ }
105
+ const differChanges = this.differ.diff(input);
106
+ if (differChanges) {
107
+ this.values = [];
108
+ differChanges.forEachItem((r) => {
109
+ this.values.push(r.currentValue);
110
+ });
111
+ }
112
+ return this.values;
113
+ }
114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe }); }
115
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ValuePipe, name: "value", pure: false }); }
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValuePipe, decorators: [{
118
+ type: Pipe,
119
+ args: [{ name: 'value', pure: false }]
120
+ }], ctorParameters: () => [{ type: i0.KeyValueDiffers }] });
121
+ /**
122
+ * Stand-alone version of existing value pipe.
123
+ *
124
+ * Impure flag needed due to keep track of changes in complex values (such as objects or arrays).
125
+ */
126
+ class ValueImpurePipe {
127
+ constructor() {
128
+ this.differs = inject(KeyValueDiffers);
129
+ this.values = [];
130
+ }
131
+ transform(input) {
132
+ if (!input || (!(input instanceof Map) && typeof input !== 'object')) {
133
+ return null;
134
+ }
135
+ if (!this.differ) {
136
+ // make a differ for whatever type we've been passed in
137
+ this.differ = this.differs.find(input).create();
138
+ }
139
+ const differChanges = this.differ.diff(input);
140
+ if (differChanges) {
141
+ this.values = [];
142
+ differChanges.forEachItem(({ currentValue }) => {
143
+ this.values.push(currentValue);
144
+ });
145
+ }
146
+ return this.values;
147
+ }
148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValueImpurePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
149
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ValueImpurePipe, isStandalone: true, name: "valueImpure", pure: false }); }
150
+ }
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValueImpurePipe, decorators: [{
152
+ type: Pipe,
153
+ args: [{
154
+ name: 'valueImpure',
155
+ pure: false,
156
+ standalone: true,
157
+ }]
158
+ }] });
159
+
160
+ /* eslint-disable no-console */
161
+ class NggvDragDropComponent {
162
+ constructor() {
163
+ /** Special property used for selecting DOM elements during automated UI testing. */
164
+ this.thook = 'drag-drop';
165
+ /** Disables deletion or cancellation during defined states [local | uploading | aborted | uploaded | validating | error | deleted | done]. */
166
+ this.disableRemove = [];
167
+ /** File size limit in mega bytes. */
168
+ this.fileLimit = 250 * 1024 * 1024;
169
+ /** Allowing selecting or dropping multiple files. */
170
+ this.multiple = true;
171
+ /** Determines if list should be shown under upload, disabling list disables multiple upload. */
172
+ this.list = true;
173
+ /** Frequency of requests which to send to the API requesting status updates. */
174
+ this.throttle = 5000;
175
+ /** Maximum number of attempts to request a status update from the API if service is unreachable. */
176
+ this.retryAttempts = 5;
177
+ /** If selection of multiple file should be possible with a checkbox.
178
+ * @experimental work in progress and should not yet be used.
179
+ * @internal
180
+ */
181
+ this.selectable = false;
182
+ /** Allows multiple values from `apiFile.status` to be mapped to a single file upload state. */
183
+ this.stateMap = {
184
+ local: 'local',
185
+ uploading: 'uploading',
186
+ aborted: 'aborted',
187
+ uploaded: 'uploaded',
188
+ validating: 'validating',
189
+ error: 'error',
190
+ deleted: 'deleted',
191
+ done: 'done',
192
+ };
193
+ /** Statuses allowed to be fetch during the initial load. Used to hide "done" states from list. */
194
+ this.fetchStatuses = [];
195
+ /** Statuses allowed be shown when status is "rejected". Will fallback to generic message. `null` allows all. */
196
+ this.errorCodes = null;
197
+ /** Event triggered on initialization and every time the "uploadState" for a file changes. */
198
+ this.stateChange = new EventEmitter();
199
+ /** Event triggered when view details is clicked. */
200
+ this.detailsClick = new EventEmitter();
201
+ /** @internal */
202
+ this.isDragDropAvailable = isDragDropAvailable();
203
+ /** @internal */
204
+ this.componentState = 'normal';
205
+ /** @internal */
206
+ this.files = new Map();
207
+ /** @internal */
208
+ this.selected = [];
209
+ /** @internal */
210
+ this.loading = false;
211
+ }
212
+ /**
213
+ * Initialize the component and warn if service is not defined. Will also fetch files for the list if enabled.
214
+ */
215
+ ngOnInit() {
216
+ if (!this.service) {
217
+ return console.error('Drag and drop component will not work without the [service] property defined!');
218
+ }
219
+ if (this.list) {
220
+ this.service.fetchFiles(this.fetchStatuses).subscribe((apiFiles) => {
221
+ for (const apiFile of apiFiles) {
222
+ const extendedFile = extendFile(undefined, apiFile, {
223
+ progress: 100,
224
+ uploadState: this.determineUploadState(apiFile.status),
225
+ internalStatusReasonCode: this.fallbackError(apiFile.internalStatusReasonCode),
226
+ });
227
+ this.files.set(extendedFile.id, extendedFile);
228
+ this.stateChange.emit(pick(extendedFile, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'));
229
+ // Check if validation is required, then start polling
230
+ if (extendedFile.uploadState === 'uploaded' ||
231
+ extendedFile.uploadState === 'validating') {
232
+ this.checkValidity(extendedFile, this.throttle);
233
+ }
234
+ }
235
+ });
236
+ }
237
+ }
238
+ /** Destroy all event listeners and polling running */
239
+ ngOnDestroy() {
240
+ this.files.forEach((file) => {
241
+ file.uploadRequests?.unsubscribe();
242
+ if (file.uploadState === 'uploading') {
243
+ file.uploadState = 'aborted';
244
+ file.internalStatusReasonCode = 'MFEFHM004';
245
+ this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));
246
+ }
247
+ });
248
+ }
249
+ /** @internal Warn user trying to leave page before all uploads are done. Custom message only works in older browsers. */
250
+ onBeforeUnload(event) {
251
+ if (!this.allUploadingDone(this.files)) {
252
+ const confirmationMessage = `You still have files uploading, are you sure you want to leave this page?`;
253
+ (event || window.event).returnValue =
254
+ confirmationMessage;
255
+ return confirmationMessage;
256
+ }
257
+ return;
258
+ }
259
+ /* Drag & Drop Events */
260
+ /** @internal Event handler for when a file is held over the drop area */
261
+ onDragEnter(event) {
262
+ if (!this.service)
263
+ return;
264
+ event.preventDefault();
265
+ // Update the visual state
266
+ this.componentState = 'over';
267
+ }
268
+ /** @internal Event handler for when a file leaves the drop area */
269
+ onDragLeave(event) {
270
+ if (!this.service)
271
+ return;
272
+ event.preventDefault();
273
+ this.componentState = 'normal';
274
+ }
275
+ /** @internal Event handler for when a file is dropped on the drop area or when `input` files are selected */
276
+ onDrop(event) {
277
+ if (!this.service)
278
+ return;
279
+ event.preventDefault();
280
+ this.componentState = 'normal';
281
+ let files;
282
+ // Determine if files are from the drop event or input element
283
+ if (event instanceof DragEvent && event.dataTransfer) {
284
+ files = event.dataTransfer.files;
285
+ }
286
+ else if (event.target &&
287
+ event.target instanceof HTMLInputElement &&
288
+ event.target.files) {
289
+ files = event.target.files;
290
+ }
291
+ if (files) {
292
+ const extendedFiles = Array.from(files, (file) => {
293
+ let abort = false;
294
+ let statusCode = null;
295
+ // Check if file size is larger than limit
296
+ if (file.size > this.fileLimit) {
297
+ abort = true;
298
+ statusCode = 'MFEFHM003';
299
+ }
300
+ // Check if file type is not acceptable
301
+ if (!verifyAccept(file.type, this.accept)) {
302
+ abort = true;
303
+ statusCode = 'MFEFHM002';
304
+ }
305
+ // Add default values expected by the API
306
+ const extendedFile = extendFile(file, {
307
+ internalStatusReasonCode: statusCode,
308
+ uploadState: (abort ? 'aborted' : 'local'),
309
+ });
310
+ // Emit initial local upload event
311
+ this.stateChange.emit({
312
+ uploadState: 'local',
313
+ fileName: extendedFile.fileName,
314
+ });
315
+ if (abort) {
316
+ // Emit aborted upload event
317
+ this.stateChange.emit({
318
+ uploadState: 'aborted',
319
+ fileName: extendedFile.fileName,
320
+ status: 'aborted',
321
+ internalStatusReasonCode: statusCode,
322
+ });
323
+ }
324
+ return extendedFile;
325
+ });
326
+ // Append to previous files
327
+ let i = 0;
328
+ for (const file of extendedFiles) {
329
+ // If multiple or list is false append only file then break loop
330
+ if ((!this.multiple || !this.list) && i >= 1)
331
+ break;
332
+ this.lastFile = file;
333
+ this.files.set(file.id, file);
334
+ i++;
335
+ }
336
+ // Clear file input so that same file can be uploaded
337
+ if (event.target &&
338
+ event.target instanceof HTMLInputElement &&
339
+ event.target.files) {
340
+ event.target.value = '';
341
+ }
342
+ this.onSubmit();
343
+ }
344
+ }
345
+ /** @internal Event trigger for when delete button is pressed */
346
+ onRemove(id, state) {
347
+ // Only allow removal in certain states
348
+ if (!this.service || this.disableRemove.includes(state))
349
+ return;
350
+ const file = this.files.get(id);
351
+ if (!file)
352
+ return;
353
+ // Skip confirmation for aborted and deleted files
354
+ if (file.uploadState === 'error' ||
355
+ file.uploadState === 'aborted' ||
356
+ file.uploadState === 'deleted') {
357
+ this.onConfirmRemove({ original: undefined, payload: file });
358
+ }
359
+ else {
360
+ this.markedForDeletion = file;
361
+ this.deleteModalRef.open();
362
+ }
363
+ }
364
+ /** @internal */
365
+ onConfirmRemove(event) {
366
+ const { payload: file } = event;
367
+ if (!file || !this.service)
368
+ return;
369
+ // Abort upload and set local state to aborted to inform user
370
+ switch (file.uploadState) {
371
+ case 'local':
372
+ case 'uploading':
373
+ file.uploadRequests?.unsubscribe();
374
+ file.uploadState = 'aborted';
375
+ file.internalStatusReasonCode = 'MFEFHM004';
376
+ this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));
377
+ break;
378
+ // Remove file from service then set local state to aborted to inform user
379
+ case 'uploaded':
380
+ case 'validating':
381
+ this.service
382
+ .removeFile(file.id)
383
+ .subscribe({
384
+ error: console.warn,
385
+ })
386
+ .add(() => {
387
+ // Abort regardless of response from server
388
+ file.uploadRequests?.unsubscribe();
389
+ file.uploadState = 'aborted';
390
+ file.internalStatusReasonCode = 'MFEFHM005';
391
+ this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));
392
+ });
393
+ break;
394
+ // Remove file from service then locally for "completed" states
395
+ case 'error':
396
+ case 'done':
397
+ ;
398
+ (this.service.removeFileFor
399
+ ? this.service.removeFileFor(file)
400
+ : this.service.removeFile(file.id))
401
+ .subscribe({
402
+ error: console.warn,
403
+ })
404
+ .add(() => {
405
+ // Remove regardless of response from server
406
+ this.files.delete(file.id);
407
+ const event = pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation');
408
+ event.uploadState = 'deleted';
409
+ this.stateChange.emit(event);
410
+ });
411
+ break;
412
+ // Just remove the file locally to clean up
413
+ case 'aborted':
414
+ case 'deleted':
415
+ default:
416
+ this.files.delete(file.id);
417
+ this.stateChange.emit({
418
+ ...pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'),
419
+ uploadState: 'deleted',
420
+ });
421
+ break;
422
+ }
423
+ }
424
+ /** @internal Event handler for when the files should be uploaded */
425
+ onSubmit() {
426
+ if (!this.files || !this.service)
427
+ return;
428
+ // If list is not enabled update the component state to show progress
429
+ if (!this.list)
430
+ this.componentState = 'uploading';
431
+ this.loading = true;
432
+ this.files.forEach((file) => {
433
+ // Filter out all files that aren't currently considered local
434
+ if (!file.raw || file.uploadState !== 'local')
435
+ return;
436
+ file.uploadRequests = this.service.uploadFile(file.raw).subscribe({
437
+ next: (event) => {
438
+ switch (event.type) {
439
+ case HttpEventType.UploadProgress:
440
+ // Update upload progress
441
+ if (file.uploadState !== 'uploading') {
442
+ file.uploadState = 'uploading';
443
+ this.stateChange.emit(pick(file, 'uploadState', 'fileName'));
444
+ }
445
+ file.progress = Math.round((100 * event.loaded) / (event.total || 100));
446
+ file.uploadState = 'uploading';
447
+ break;
448
+ case HttpEventType.Response:
449
+ if (event.body?.id) {
450
+ // Remove old file id
451
+ this.files.delete(file.id);
452
+ // Update file with information from the API
453
+ Object.assign(file, event.body);
454
+ file.progress = 100;
455
+ file.uploadState = this.determineUploadState(file.status);
456
+ // Update with new file id
457
+ this.files.set(file.id, file);
458
+ }
459
+ this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'statusReasonInformation'));
460
+ // Check if validation is required, then start polling
461
+ if (file.uploadState === 'uploaded' ||
462
+ file.uploadState === 'validating') {
463
+ this.checkValidity(file, this.throttle);
464
+ }
465
+ else
466
+ this.setComponentStateDone();
467
+ this.loading = false;
468
+ break;
469
+ }
470
+ },
471
+ error: (error) => {
472
+ console.warn(error);
473
+ file.uploadState = 'aborted';
474
+ file.status = 'aborted';
475
+ // todo: wrong
476
+ file.statusReasonInformation = [
477
+ { originatorId: 'local', reason: 'dragDrop.error.MFEFHM001' },
478
+ ];
479
+ this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'statusReasonInformation'));
480
+ this.loading = false;
481
+ },
482
+ });
483
+ });
484
+ }
485
+ /**
486
+ * @internal
487
+ * Using the state map convert `apiFile.state` to one of {@link UploadState}
488
+ * @param apiState the state given by the file to be used for mapping
489
+ */
490
+ determineUploadState(apiState) {
491
+ // Reverse so that later states override earlier
492
+ const stateEntries = Object.entries(this.stateMap).reverse();
493
+ for (const [uploadState, apiStates] of stateEntries) {
494
+ if (this.uploadStateIsArray(apiStates)) {
495
+ if (apiStates.includes(apiState))
496
+ return uploadState;
497
+ }
498
+ else {
499
+ if (apiStates === apiState)
500
+ return uploadState;
501
+ }
502
+ }
503
+ return 'error';
504
+ }
505
+ /** @internal */
506
+ uploadStateIsArray(state) {
507
+ return Array.isArray(state);
508
+ }
509
+ /** @internal used for translation templating parameters */
510
+ translateParams(file) {
511
+ return { ...file, fileLimit: (this.fileLimit / 1024 / 1024).toFixed(3) };
512
+ }
513
+ /**
514
+ * Poll the status endpoint to determine when file is valid
515
+ * @param file file used to check state and update
516
+ * @param delay how long each interval should wait before sending a request
517
+ */
518
+ checkValidity(file, delay) {
519
+ if (!this.service)
520
+ return;
521
+ file.uploadRequests = timer(0, delay)
522
+ .pipe(switchMap(() => {
523
+ const asyncFetchStatus = this.service && this.service.fetchStatusFor
524
+ ? this.service.fetchStatusFor(file)
525
+ : this.service.fetchStatus(file.id);
526
+ return asyncFetchStatus;
527
+ }), retryWhen(retryStrategy({
528
+ maxRetryAttempts: this.retryAttempts,
529
+ })), tap((fileStatus) => {
530
+ // Continuously update file state to show step progress
531
+ if (fileStatus) {
532
+ // Emit event when status changes
533
+ if (file.status !== fileStatus.status) {
534
+ file.status = fileStatus.status;
535
+ file.internalStatusReasonCode = this.fallbackError(fileStatus.internalStatusReasonCode);
536
+ file.statusReasonInformation = fileStatus.statusReasonInformation;
537
+ file.uploadState = this.determineUploadState(fileStatus.status);
538
+ this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'));
539
+ }
540
+ }
541
+ }),
542
+ // Remove validation state
543
+ filter((apiFile) => !!apiFile &&
544
+ this.determineUploadState(apiFile.status) !== 'uploaded' &&
545
+ this.determineUploadState(apiFile.status) !== 'validating'),
546
+ // Take first state after validation
547
+ take(1))
548
+ .subscribe({
549
+ next: () => {
550
+ if (this.allValidationDone(this.files)) {
551
+ this.setComponentStateDone();
552
+ }
553
+ },
554
+ error: (err) => {
555
+ console.warn(err);
556
+ file.uploadState = 'aborted';
557
+ file.status = 'aborted';
558
+ file.internalStatusReasonCode = 'MFEFHM001';
559
+ this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode'));
560
+ this.setComponentStateDone();
561
+ },
562
+ });
563
+ }
564
+ fallbackError(code) {
565
+ if (this.errorCodes == null || (code && this.errorCodes.includes(code))) {
566
+ return code ?? null;
567
+ }
568
+ else {
569
+ return 'MFEFHM001';
570
+ }
571
+ }
572
+ /**
573
+ * Check so that no files are still validating
574
+ */
575
+ allValidationDone(files) {
576
+ return Array.from(files.values()).every((file) => file.uploadState !== 'validating');
577
+ }
578
+ /**
579
+ * Check so that no files are still uploading
580
+ */
581
+ allUploadingDone(files) {
582
+ return Array.from(files.values()).every((file) => file.uploadState !== 'uploading');
583
+ }
584
+ /**
585
+ * Helper to update the component state to done and then back to normal
586
+ */
587
+ setComponentStateDone() {
588
+ if (!this.list)
589
+ this.componentState = 'done';
590
+ setTimeout(() => {
591
+ if (this.componentState === 'done')
592
+ this.componentState = 'normal';
593
+ }, 3000);
594
+ }
595
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDragDropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
596
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NggvDragDropComponent, selector: "nggv-drag-drop", inputs: { thook: "thook", service: "service", accept: "accept", disableRemove: "disableRemove", fileLimit: "fileLimit", multiple: "multiple", list: "list", throttle: "throttle", retryAttempts: "retryAttempts", selectable: "selectable", stateMap: "stateMap", fetchStatuses: "fetchStatuses", errorCodes: "errorCodes" }, outputs: { stateChange: "stateChange", detailsClick: "detailsClick" }, host: { listeners: { "window:beforeunload": "onBeforeUnload($event)" }, properties: { "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "deleteModalRef", first: true, predicate: ["deleteModalRef"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <form enctype=\"multipart/form-data\" #dragDropForm>\n <div class=\"gds-drag-drop\">\n <input\n class=\"gds-drag-drop__input\"\n id=\"drag-drop\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple && list\"\n (change)=\"onDrop($event)\"\n />\n <label\n [ngClass]=\"{\n 'gds-drag-drop__label': true,\n 'gds-drag-drop__label--above': componentState === 'over',\n }\"\n for=\"drag-drop\"\n [attr.data-thook]=\"thook + '-picker'\"\n [attr.aria-busy]=\"loading\"\n (dragenter)=\"onDragEnter($event)\"\n (dragover)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (dragend)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n [ngSwitch]=\"componentState\"\n >\n <!-- COMPONENT STATE NORMAL -->\n <ng-template [ngSwitchCase]=\"'normal'\">\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\n ><em>{{ t('dragDrop.label.fileChoose') }}</em>\n <ng-template [ngIf]=\"isDragDropAvailable\">\n {{ t('dragDrop.label.fileDrag') }}</ng-template\n >\n </ng-template>\n\n <!-- COMPONENT STATE OVER -->\n <ng-template [ngSwitchCase]=\"'over'\">\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\n >{{ t('dragDrop.label.fileDrop') }}\n </ng-template>\n\n <!-- COMPONENT STATE UPLOADING -->\n <ng-template [ngSwitchCase]=\"'uploading'\">\n <strong class=\"filename\">{{ lastFile?.fileName }}</strong>\n\n <!-- UPLOADING STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'uploading'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- UPLOADED STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'uploaded'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n text: t('dragDrop.text.fileStateUploaded'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- VALIDATING STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'validating'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n text: t('dragDrop.text.fileStateValidating'),\n }\"\n ></ng-template>\n </ng-template>\n </ng-template>\n\n <!-- COMPONENT STATE DONE -->\n <ng-template [ngSwitchCase]=\"'done'\">\n {{ t('dragDrop.label.fileUploaded', { filename: lastFile?.fileName })\n }}<gds-icon-checkmark *nggCoreElement></gds-icon-checkmark>\n </ng-template>\n </label>\n\n <!-- LIST -->\n <table\n class=\"gds-table file-list\"\n [attr.data-thook]=\"thook + '-file-list'\"\n *ngIf=\"list\"\n >\n <thead>\n <tr>\n <th *ngIf=\"selectable\">\n <div class=\"gds-field-checkbox-wrap\">\n <input\n type=\"checkbox\"\n aria-label=\"Field label\"\n id=\"select-all\"\n />\n <label for=\"select-all\"></label>\n </div>\n </th>\n <th class=\"gds-table__primary-col col-name\">\n {{ t('dragDrop.label.fileName') }}\n </th>\n <th class=\"col-status\">\n {{ t('dragDrop.label.fileStatus') }}\n </th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n <tr\n [attr.data-thook]=\"thook + '-file'\"\n *ngFor=\"let file of files | value\"\n >\n <td *ngIf=\"selectable\">\n <div class=\"gds-field-checkbox-wrap\">\n <input\n type=\"checkbox\"\n aria-label=\"Field label\"\n [id]=\"'file-checkbox-' + file.id\"\n />\n <label [for]=\"'file-checkbox-' + file.id\"></label>\n </div>\n </td>\n <td\n class=\"gds-table__primary-col\"\n [attr.data-thook]=\"thook + '-file-name'\"\n >\n {{ file.fileName }}\n </td>\n <td\n [attr.data-thook]=\"thook + '-file-status'\"\n [ngSwitch]=\"file.uploadState\"\n >\n <!-- UPLOADING STATE -->\n <ng-template [ngSwitchCase]=\"'uploading'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- UPLOADED STATE -->\n <ng-template [ngSwitchCase]=\"'uploaded'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n text: t('dragDrop.text.fileStateUploaded'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- VALIDATING STATE -->\n <ng-template [ngSwitchCase]=\"'validating'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n text: t('dragDrop.text.fileStateValidating'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- ABORTED STATE -->\n <ng-template [ngSwitchCase]=\"'aborted'\">\n <span\n class=\"error-text\"\n [transloco]=\"\n 'dragDrop.error.' + file.internalStatusReasonCode\n \"\n [translocoParams]=\"translateParams(file)\"\n *ngIf=\"file.internalStatusReasonCode\"\n ></span>\n </ng-template>\n\n <!-- ERROR STATE -->\n <ng-template [ngSwitchCase]=\"'error'\">\n <span\n class=\"error-text\"\n [transloco]=\"\n 'dragDrop.error.' + file.internalStatusReasonCode\n \"\n [translocoParams]=\"translateParams(file)\"\n *ngIf=\"file.internalStatusReasonCode\"\n ></span>\n <br />\n <a\n (click)=\"detailsClick.emit(file)\"\n style=\"cursor: pointer\"\n *ngIf=\"\n file.statusReasonInformation &&\n file.statusReasonInformation.length\n \"\n >\n {{ t('dragDrop.link.viewDetails') }}\n </a>\n </ng-template>\n\n <!-- DONE STATE -->\n <ng-template [ngSwitchCase]=\"'done'\">\n <span class=\"success-text\">{{\n t('dragDrop.text.fileStateDone')\n }}</span>\n </ng-template>\n </td>\n\n <td class=\"gds-table__numeric-col\">\n <a\n class=\"remove\"\n tabindex=\"0\"\n (click)=\"onRemove(file.id, file.uploadState)\"\n *ngIf=\"!disableRemove.includes(file.uploadState)\"\n >\n <gds-icon-cross-small *nggCoreElement></gds-icon-cross-small>\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </form>\n\n <nggv-dialog\n #deleteModalRef\n [title]=\"t('dragDrop.text.fileCancelModalTitle')\"\n [content]=\"\n t('dragDrop.text.fileCancelModalContent', {\n name: markedForDeletion?.fileName,\n })\n \"\n [payload]=\"markedForDeletion\"\n [buttons]=\"{\n negative: 'dragDrop.text.fileCancelConfirm',\n positive: 'dragDrop.text.fileCancelDeny',\n }\"\n (nggvNegativeEvent)=\"onConfirmRemove($any($event))\"\n ></nggv-dialog>\n\n <!-- PROGRESS TEMPLATE -->\n\n <ng-template\n #progressTemplate\n let-file=\"\n file\"\n let-text=\"text\"\n >\n <div class=\"progress-wrapper\">\n <progress\n class=\"gds-progress-bar progress\"\n max=\"100\"\n [value]=\"file.progress\"\n >\n {{\n t('dragDrop.text.fileStateUploading', {\n uploaded:\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\n size: file.raw?.size / 1024 | number: '0.0-0',\n progress: file.progress,\n unit: 'kB',\n })\n }}\n </progress>\n <ng-template [ngIf]=\"stateMap.validating.length\">\n <div\n class=\"gds-progress-indicator indicator\"\n *ngIf=\"uploadStateIsArray(stateMap.validating); else singleValidation\"\n >\n <div\n class=\"gds-progress-indicator__step\"\n [class.-done]=\"i <= stateMap.validating.indexOf(file.status)\"\n *ngFor=\"let state of stateMap.validating; let i = index\"\n ></div>\n </div>\n </ng-template>\n <ng-template #singleValidation>\n <div class=\"gds-progress-indicator indicator\">\n <!-- eslint-disable @angular-eslint/template/eqeqeq -->\n <div\n class=\"gds-progress-indicator__step\"\n [class.-done]=\"file.status == stateMap.validating\"\n ></div>\n <!-- eslint-enable @angular-eslint/template/eqeqeq -->\n </div>\n </ng-template>\n </div>\n <span class=\"progress-text\">\n {{\n text ||\n t('dragDrop.text.fileStateUploading', {\n uploaded:\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\n size: file.raw?.size / 1024 | number: '0.0-0',\n progress: file.progress,\n unit: 'kB',\n })\n }}\n </span>\n </ng-template>\n</ng-container>\n", styles: [":host .gds-drag-drop{width:100%}:host .gds-drag-drop__input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}:host .gds-drag-drop__label{display:flex;justify-content:center;align-items:center;gap:.5rem;border:2px dashed #868686;font-weight:500;padding:2.25em 1.5em}:host .gds-drag-drop__input+.gds-drag-drop__label em{font-style:normal;color:#0092e1;cursor:pointer}:host .gds-drag-drop table,:host .gds-drag-drop .gds-table{margin-top:2.25em}:host .gds-table{width:100%;font-family:SEBSansSerif,Arial,sans-serif;border-spacing:0}:host .gds-table th,:host .gds-table td{text-align:left;border-bottom:1px solid #e9e9e9}:host .gds-table thead{color:#333;font-size:1em}:host .gds-table thead tr{min-height:2em}:host .gds-table thead th,:host .gds-table thead td{border-bottom:1px solid #cecece;font-weight:500}:host .gds-table tbody{font-size:1em}:host .gds-table tbody tr{height:2.5em;border-bottom:1px solid #adadad}:host .gds-table tbody tr:hover td,:host .gds-table tbody tr:hover th{background-color:#f8f8f8}:host .gds-table tfoot{font-weight:500;font-size:1em}:host .gds-table tfoot tr{height:2.5em}:host .gds-table tfoot td{border-top:1px solid #cecece;border-bottom-width:0}:host tr .gds-table__numeric-col{text-align:right}:host tr .gds-table__negative-col{color:#bb000c}:host tr .gds-table__primary-col{color:#000}:host .gds-table__sortable-col{cursor:pointer;white-space:nowrap;margin-left:.5em}:host .gds-table__sortable-col:after{content:\"\";display:inline-block;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\");background-repeat:no-repeat;margin-left:.25rem;width:.625rem;height:1rem;vertical-align:text-bottom}:host .gds-table__sortable-col:hover:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table__sortable-col--asc:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23007ac7' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table__sortable-col--asc:hover:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%2341b0ee' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table__sortable-col--desc:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23007ac7' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table__sortable-col--desc:hover:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%2341b0ee' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table .gds-field-checkbox-wrap{width:2.5rem}:host .gds-table .gds-field-checkbox-wrap label{box-shadow:none!important}:host .gds-table--fixed-l-col{overflow:auto;display:block;position:relative;max-width:100%}:host .gds-table--fixed-l-col td,:host .gds-table--fixed-l-col th{width:auto!important;min-width:150px}:host .gds-table--fixed-l-col td:first-child,:host .gds-table--fixed-l-col th:first-child{position:sticky;left:0;background-color:#fff;border-right:1px solid #e9e9e9}:host .gds-table--fixed-l-col thead th{top:0;z-index:1;position:sticky;background-color:#fff}:host .gds-table--fixed-l-col thead th:first-child{z-index:2}:host .gds-progress-bar{appearance:none;height:.3125rem;width:100%;position:relative;overflow:hidden;color:#45b400;border-width:0;background-color:#e9e9e9}:host .gds-progress-bar:before{display:block;position:absolute;content:\"\";left:-200px;width:200px;height:.3125rem;background-color:#45b400;animation:gds-progressbar-loading 2s linear infinite}:host .gds-progress-bar::-webkit-progress-value{background-color:transparent}:host .gds-progress-bar::-moz-progress-bar{background-color:transparent}:host .gds-progress-bar::-ms-fill{background-color:transparent;border-width:0}:host .gds-progress-bar::-webkit-progress-bar{background-color:#e9e9e9}@keyframes gds-progressbar-loading{0%{left:-30%;width:30%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}:host .gds-progress-bar[value]:before{content:none}:host .gds-progress-bar[value]::-webkit-progress-value{background-color:#45b400}:host .gds-progress-bar[value]::-moz-progress-bar{background-color:#45b400}:host .gds-progress-bar[value]::-ms-fill{background-color:#45b400}:host .gds-progress-indicator{display:flex;width:100%}:host .gds-progress-indicator__step{flex-grow:1;height:.5rem;margin-right:.125rem;background-color:#e9e9e9}:host .gds-progress-indicator__step.-done{background-color:#45b400}:host .gds-progress-indicator__step:last-child{margin-right:0}:host .file-list th:first-child,:host .file-list td:first-child{width:auto}:host .filename{display:block;margin-bottom:.5rem}:host .col-name{width:40%}:host .col-status{width:30%}:host .col-actions{width:.1%}:host .progress-wrapper{display:flex}:host .progress,:host .indicator{height:.5rem}:host .gds-progress-indicator__step{margin-right:0}:host .progress{color:#45b400}:host .progress::-webkit-progress-value{background-color:#45b400}:host .progress::-moz-progress-bar{background-color:#45b400}:host .progress::-ms-fill{background-color:#45b400}:host .progress-text{display:block;margin-top:.125rem}:host .error-text{color:#bb000c}:host .success-text{color:#308800}:host .remove{padding:0 .5rem;font-size:1.5em;color:#868686;cursor:pointer;display:grid;place-content:center}:host .remove:hover,:host .remove:focus{color:#bb000c}\n"], dependencies: [{ kind: "directive", type: i1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i2.NggvDialogComponent, selector: "nggv-dialog", inputs: ["thook", "shown", "initiallyShown", "heading", "title", "content", "autoClose", "payload", "dialogTitleId", "dialogBodyId", "closeModalOnEscape", "closeButtonAriaLabel", "buttons"], outputs: ["nggvCloseEvent", "nggvPositiveEvent", "nggvNeutralEvent", "nggvNegativeEvent"], exportAs: ["dialog"] }, { kind: "directive", type: i3.NggCoreElementDirective, selector: "[nggCoreElement]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i4.DecimalPipe, name: "number" }, { kind: "pipe", type: ValuePipe, name: "value" }] }); }
597
+ }
598
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDragDropComponent, decorators: [{
599
+ type: Component,
600
+ args: [{ selector: 'nggv-drag-drop', template: "<ng-container *transloco=\"let t\">\n <form enctype=\"multipart/form-data\" #dragDropForm>\n <div class=\"gds-drag-drop\">\n <input\n class=\"gds-drag-drop__input\"\n id=\"drag-drop\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple && list\"\n (change)=\"onDrop($event)\"\n />\n <label\n [ngClass]=\"{\n 'gds-drag-drop__label': true,\n 'gds-drag-drop__label--above': componentState === 'over',\n }\"\n for=\"drag-drop\"\n [attr.data-thook]=\"thook + '-picker'\"\n [attr.aria-busy]=\"loading\"\n (dragenter)=\"onDragEnter($event)\"\n (dragover)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (dragend)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n [ngSwitch]=\"componentState\"\n >\n <!-- COMPONENT STATE NORMAL -->\n <ng-template [ngSwitchCase]=\"'normal'\">\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\n ><em>{{ t('dragDrop.label.fileChoose') }}</em>\n <ng-template [ngIf]=\"isDragDropAvailable\">\n {{ t('dragDrop.label.fileDrag') }}</ng-template\n >\n </ng-template>\n\n <!-- COMPONENT STATE OVER -->\n <ng-template [ngSwitchCase]=\"'over'\">\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\n >{{ t('dragDrop.label.fileDrop') }}\n </ng-template>\n\n <!-- COMPONENT STATE UPLOADING -->\n <ng-template [ngSwitchCase]=\"'uploading'\">\n <strong class=\"filename\">{{ lastFile?.fileName }}</strong>\n\n <!-- UPLOADING STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'uploading'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- UPLOADED STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'uploaded'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n text: t('dragDrop.text.fileStateUploaded'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- VALIDATING STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'validating'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n text: t('dragDrop.text.fileStateValidating'),\n }\"\n ></ng-template>\n </ng-template>\n </ng-template>\n\n <!-- COMPONENT STATE DONE -->\n <ng-template [ngSwitchCase]=\"'done'\">\n {{ t('dragDrop.label.fileUploaded', { filename: lastFile?.fileName })\n }}<gds-icon-checkmark *nggCoreElement></gds-icon-checkmark>\n </ng-template>\n </label>\n\n <!-- LIST -->\n <table\n class=\"gds-table file-list\"\n [attr.data-thook]=\"thook + '-file-list'\"\n *ngIf=\"list\"\n >\n <thead>\n <tr>\n <th *ngIf=\"selectable\">\n <div class=\"gds-field-checkbox-wrap\">\n <input\n type=\"checkbox\"\n aria-label=\"Field label\"\n id=\"select-all\"\n />\n <label for=\"select-all\"></label>\n </div>\n </th>\n <th class=\"gds-table__primary-col col-name\">\n {{ t('dragDrop.label.fileName') }}\n </th>\n <th class=\"col-status\">\n {{ t('dragDrop.label.fileStatus') }}\n </th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n <tr\n [attr.data-thook]=\"thook + '-file'\"\n *ngFor=\"let file of files | value\"\n >\n <td *ngIf=\"selectable\">\n <div class=\"gds-field-checkbox-wrap\">\n <input\n type=\"checkbox\"\n aria-label=\"Field label\"\n [id]=\"'file-checkbox-' + file.id\"\n />\n <label [for]=\"'file-checkbox-' + file.id\"></label>\n </div>\n </td>\n <td\n class=\"gds-table__primary-col\"\n [attr.data-thook]=\"thook + '-file-name'\"\n >\n {{ file.fileName }}\n </td>\n <td\n [attr.data-thook]=\"thook + '-file-status'\"\n [ngSwitch]=\"file.uploadState\"\n >\n <!-- UPLOADING STATE -->\n <ng-template [ngSwitchCase]=\"'uploading'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- UPLOADED STATE -->\n <ng-template [ngSwitchCase]=\"'uploaded'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n text: t('dragDrop.text.fileStateUploaded'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- VALIDATING STATE -->\n <ng-template [ngSwitchCase]=\"'validating'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n text: t('dragDrop.text.fileStateValidating'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- ABORTED STATE -->\n <ng-template [ngSwitchCase]=\"'aborted'\">\n <span\n class=\"error-text\"\n [transloco]=\"\n 'dragDrop.error.' + file.internalStatusReasonCode\n \"\n [translocoParams]=\"translateParams(file)\"\n *ngIf=\"file.internalStatusReasonCode\"\n ></span>\n </ng-template>\n\n <!-- ERROR STATE -->\n <ng-template [ngSwitchCase]=\"'error'\">\n <span\n class=\"error-text\"\n [transloco]=\"\n 'dragDrop.error.' + file.internalStatusReasonCode\n \"\n [translocoParams]=\"translateParams(file)\"\n *ngIf=\"file.internalStatusReasonCode\"\n ></span>\n <br />\n <a\n (click)=\"detailsClick.emit(file)\"\n style=\"cursor: pointer\"\n *ngIf=\"\n file.statusReasonInformation &&\n file.statusReasonInformation.length\n \"\n >\n {{ t('dragDrop.link.viewDetails') }}\n </a>\n </ng-template>\n\n <!-- DONE STATE -->\n <ng-template [ngSwitchCase]=\"'done'\">\n <span class=\"success-text\">{{\n t('dragDrop.text.fileStateDone')\n }}</span>\n </ng-template>\n </td>\n\n <td class=\"gds-table__numeric-col\">\n <a\n class=\"remove\"\n tabindex=\"0\"\n (click)=\"onRemove(file.id, file.uploadState)\"\n *ngIf=\"!disableRemove.includes(file.uploadState)\"\n >\n <gds-icon-cross-small *nggCoreElement></gds-icon-cross-small>\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </form>\n\n <nggv-dialog\n #deleteModalRef\n [title]=\"t('dragDrop.text.fileCancelModalTitle')\"\n [content]=\"\n t('dragDrop.text.fileCancelModalContent', {\n name: markedForDeletion?.fileName,\n })\n \"\n [payload]=\"markedForDeletion\"\n [buttons]=\"{\n negative: 'dragDrop.text.fileCancelConfirm',\n positive: 'dragDrop.text.fileCancelDeny',\n }\"\n (nggvNegativeEvent)=\"onConfirmRemove($any($event))\"\n ></nggv-dialog>\n\n <!-- PROGRESS TEMPLATE -->\n\n <ng-template\n #progressTemplate\n let-file=\"\n file\"\n let-text=\"text\"\n >\n <div class=\"progress-wrapper\">\n <progress\n class=\"gds-progress-bar progress\"\n max=\"100\"\n [value]=\"file.progress\"\n >\n {{\n t('dragDrop.text.fileStateUploading', {\n uploaded:\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\n size: file.raw?.size / 1024 | number: '0.0-0',\n progress: file.progress,\n unit: 'kB',\n })\n }}\n </progress>\n <ng-template [ngIf]=\"stateMap.validating.length\">\n <div\n class=\"gds-progress-indicator indicator\"\n *ngIf=\"uploadStateIsArray(stateMap.validating); else singleValidation\"\n >\n <div\n class=\"gds-progress-indicator__step\"\n [class.-done]=\"i <= stateMap.validating.indexOf(file.status)\"\n *ngFor=\"let state of stateMap.validating; let i = index\"\n ></div>\n </div>\n </ng-template>\n <ng-template #singleValidation>\n <div class=\"gds-progress-indicator indicator\">\n <!-- eslint-disable @angular-eslint/template/eqeqeq -->\n <div\n class=\"gds-progress-indicator__step\"\n [class.-done]=\"file.status == stateMap.validating\"\n ></div>\n <!-- eslint-enable @angular-eslint/template/eqeqeq -->\n </div>\n </ng-template>\n </div>\n <span class=\"progress-text\">\n {{\n text ||\n t('dragDrop.text.fileStateUploading', {\n uploaded:\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\n size: file.raw?.size / 1024 | number: '0.0-0',\n progress: file.progress,\n unit: 'kB',\n })\n }}\n </span>\n </ng-template>\n</ng-container>\n", styles: [":host .gds-drag-drop{width:100%}:host .gds-drag-drop__input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}:host .gds-drag-drop__label{display:flex;justify-content:center;align-items:center;gap:.5rem;border:2px dashed #868686;font-weight:500;padding:2.25em 1.5em}:host .gds-drag-drop__input+.gds-drag-drop__label em{font-style:normal;color:#0092e1;cursor:pointer}:host .gds-drag-drop table,:host .gds-drag-drop .gds-table{margin-top:2.25em}:host .gds-table{width:100%;font-family:SEBSansSerif,Arial,sans-serif;border-spacing:0}:host .gds-table th,:host .gds-table td{text-align:left;border-bottom:1px solid #e9e9e9}:host .gds-table thead{color:#333;font-size:1em}:host .gds-table thead tr{min-height:2em}:host .gds-table thead th,:host .gds-table thead td{border-bottom:1px solid #cecece;font-weight:500}:host .gds-table tbody{font-size:1em}:host .gds-table tbody tr{height:2.5em;border-bottom:1px solid #adadad}:host .gds-table tbody tr:hover td,:host .gds-table tbody tr:hover th{background-color:#f8f8f8}:host .gds-table tfoot{font-weight:500;font-size:1em}:host .gds-table tfoot tr{height:2.5em}:host .gds-table tfoot td{border-top:1px solid #cecece;border-bottom-width:0}:host tr .gds-table__numeric-col{text-align:right}:host tr .gds-table__negative-col{color:#bb000c}:host tr .gds-table__primary-col{color:#000}:host .gds-table__sortable-col{cursor:pointer;white-space:nowrap;margin-left:.5em}:host .gds-table__sortable-col:after{content:\"\";display:inline-block;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\");background-repeat:no-repeat;margin-left:.25rem;width:.625rem;height:1rem;vertical-align:text-bottom}:host .gds-table__sortable-col:hover:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table__sortable-col--asc:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23007ac7' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table__sortable-col--asc:hover:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%2341b0ee' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table__sortable-col--desc:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23007ac7' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table__sortable-col--desc:hover:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%2341b0ee' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\")}:host .gds-table .gds-field-checkbox-wrap{width:2.5rem}:host .gds-table .gds-field-checkbox-wrap label{box-shadow:none!important}:host .gds-table--fixed-l-col{overflow:auto;display:block;position:relative;max-width:100%}:host .gds-table--fixed-l-col td,:host .gds-table--fixed-l-col th{width:auto!important;min-width:150px}:host .gds-table--fixed-l-col td:first-child,:host .gds-table--fixed-l-col th:first-child{position:sticky;left:0;background-color:#fff;border-right:1px solid #e9e9e9}:host .gds-table--fixed-l-col thead th{top:0;z-index:1;position:sticky;background-color:#fff}:host .gds-table--fixed-l-col thead th:first-child{z-index:2}:host .gds-progress-bar{appearance:none;height:.3125rem;width:100%;position:relative;overflow:hidden;color:#45b400;border-width:0;background-color:#e9e9e9}:host .gds-progress-bar:before{display:block;position:absolute;content:\"\";left:-200px;width:200px;height:.3125rem;background-color:#45b400;animation:gds-progressbar-loading 2s linear infinite}:host .gds-progress-bar::-webkit-progress-value{background-color:transparent}:host .gds-progress-bar::-moz-progress-bar{background-color:transparent}:host .gds-progress-bar::-ms-fill{background-color:transparent;border-width:0}:host .gds-progress-bar::-webkit-progress-bar{background-color:#e9e9e9}@keyframes gds-progressbar-loading{0%{left:-30%;width:30%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}:host .gds-progress-bar[value]:before{content:none}:host .gds-progress-bar[value]::-webkit-progress-value{background-color:#45b400}:host .gds-progress-bar[value]::-moz-progress-bar{background-color:#45b400}:host .gds-progress-bar[value]::-ms-fill{background-color:#45b400}:host .gds-progress-indicator{display:flex;width:100%}:host .gds-progress-indicator__step{flex-grow:1;height:.5rem;margin-right:.125rem;background-color:#e9e9e9}:host .gds-progress-indicator__step.-done{background-color:#45b400}:host .gds-progress-indicator__step:last-child{margin-right:0}:host .file-list th:first-child,:host .file-list td:first-child{width:auto}:host .filename{display:block;margin-bottom:.5rem}:host .col-name{width:40%}:host .col-status{width:30%}:host .col-actions{width:.1%}:host .progress-wrapper{display:flex}:host .progress,:host .indicator{height:.5rem}:host .gds-progress-indicator__step{margin-right:0}:host .progress{color:#45b400}:host .progress::-webkit-progress-value{background-color:#45b400}:host .progress::-moz-progress-bar{background-color:#45b400}:host .progress::-ms-fill{background-color:#45b400}:host .progress-text{display:block;margin-top:.125rem}:host .error-text{color:#bb000c}:host .success-text{color:#308800}:host .remove{padding:0 .5rem;font-size:1.5em;color:#868686;cursor:pointer;display:grid;place-content:center}:host .remove:hover,:host .remove:focus{color:#bb000c}\n"] }]
601
+ }], propDecorators: { deleteModalRef: [{
602
+ type: ViewChild,
603
+ args: ['deleteModalRef']
604
+ }], thook: [{
605
+ type: HostBinding,
606
+ args: ['attr.data-thook']
607
+ }, {
608
+ type: Input
609
+ }], service: [{
610
+ type: Input
611
+ }], accept: [{
612
+ type: Input
613
+ }], disableRemove: [{
614
+ type: Input
615
+ }], fileLimit: [{
616
+ type: Input
617
+ }], multiple: [{
618
+ type: Input
619
+ }], list: [{
620
+ type: Input
621
+ }], throttle: [{
622
+ type: Input
623
+ }], retryAttempts: [{
624
+ type: Input
625
+ }], selectable: [{
626
+ type: Input
627
+ }], stateMap: [{
628
+ type: Input
629
+ }], fetchStatuses: [{
630
+ type: Input
631
+ }], errorCodes: [{
632
+ type: Input
633
+ }], stateChange: [{
634
+ type: Output
635
+ }], detailsClick: [{
636
+ type: Output
637
+ }], onBeforeUnload: [{
638
+ type: HostListener,
639
+ args: ['window:beforeunload', ['$event']]
640
+ }] } });
641
+
642
+ class NggvDragDropModule {
643
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
644
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NggvDragDropModule, declarations: [ValuePipe, NggvDragDropComponent], imports: [HttpClientModule,
645
+ TranslocoModule,
646
+ NggvModalModule,
647
+ NggCoreWrapperModule,
648
+ CommonModule], exports: [NggvDragDropComponent] }); }
649
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDragDropModule, providers: [
650
+ {
651
+ provide: TRANSLOCO_SCOPE,
652
+ useValue: 'dragDrop',
653
+ },
654
+ ], imports: [HttpClientModule,
655
+ TranslocoModule,
656
+ NggvModalModule,
657
+ NggCoreWrapperModule,
658
+ CommonModule] }); }
659
+ }
660
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDragDropModule, decorators: [{
661
+ type: NgModule,
662
+ args: [{
663
+ imports: [
664
+ HttpClientModule,
665
+ TranslocoModule,
666
+ NggvModalModule,
667
+ NggCoreWrapperModule,
668
+ CommonModule,
669
+ ],
670
+ declarations: [ValuePipe, NggvDragDropComponent],
671
+ providers: [
672
+ {
673
+ provide: TRANSLOCO_SCOPE,
674
+ useValue: 'dragDrop',
675
+ },
676
+ ],
677
+ exports: [NggvDragDropComponent],
678
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
679
+ }]
680
+ }] });
681
+
682
+ /**
683
+ * Generated bundle index. Do not edit.
684
+ */
685
+
686
+ export { NggvDragDropComponent, NggvDragDropModule, ValueImpurePipe, ValuePipe };
687
+ //# sourceMappingURL=sebgroup-green-angular-src-v-angular-drag-drop.mjs.map