zek 14.2.91 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/README.md +1 -1
  2. package/{esm2020 → esm2022}/lib/components/args.mjs +1 -1
  3. package/esm2022/lib/components/base.component.mjs +97 -0
  4. package/esm2022/lib/components/core-ui.component.mjs +195 -0
  5. package/esm2022/lib/components/core.component.mjs +40 -0
  6. package/esm2022/lib/components/edit-base.component.mjs +237 -0
  7. package/{esm2020 → esm2022}/lib/components/index.mjs +7 -7
  8. package/esm2022/lib/components/list-base.component.mjs +254 -0
  9. package/{esm2020 → esm2022}/lib/components/types.mjs +1 -1
  10. package/{esm2020 → esm2022}/lib/models/alert-type.mjs +11 -11
  11. package/{esm2020 → esm2022}/lib/models/captcha.model.mjs +1 -1
  12. package/{esm2020 → esm2022}/lib/models/ctor.mjs +1 -1
  13. package/{esm2020 → esm2022}/lib/models/edit-base.model.mjs +2 -2
  14. package/{esm2020 → esm2022}/lib/models/file.model.mjs +19 -19
  15. package/{esm2020 → esm2022}/lib/models/filter.model.mjs +11 -11
  16. package/{esm2020 → esm2022}/lib/models/gender.model.mjs +5 -5
  17. package/{esm2020 → esm2022}/lib/models/index.mjs +17 -17
  18. package/{esm2020 → esm2022}/lib/models/key-pair.model.mjs +13 -13
  19. package/{esm2020 → esm2022}/lib/models/list-base.model.mjs +2 -2
  20. package/{esm2020 → esm2022}/lib/models/login.model.mjs +1 -1
  21. package/{esm2020 → esm2022}/lib/models/month.model.mjs +15 -15
  22. package/{esm2020 → esm2022}/lib/models/nav.model.mjs +1 -1
  23. package/{esm2020 → esm2022}/lib/models/pager.model.mjs +31 -31
  24. package/{esm2020 → esm2022}/lib/models/print.model.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/models/tree.model.mjs +3 -3
  26. package/{esm2020 → esm2022}/lib/models/valid-event-args.model.mjs +5 -5
  27. package/esm2022/lib/modules/age/age.module.mjs +23 -0
  28. package/esm2022/lib/modules/age/age.pipe.mjs +22 -0
  29. package/{esm2020 → esm2022}/lib/modules/age/index.mjs +2 -2
  30. package/esm2022/lib/modules/alert/alert/alert.mjs +55 -0
  31. package/esm2022/lib/modules/alert/alert.module.mjs +36 -0
  32. package/{esm2020 → esm2022}/lib/modules/alert/index.mjs +5 -5
  33. package/esm2022/lib/modules/alert/toast/toast.mjs +110 -0
  34. package/esm2022/lib/modules/alert/validation/validation.mjs +86 -0
  35. package/esm2022/lib/modules/autocomplete/autocomplete.directive.mjs +25 -0
  36. package/esm2022/lib/modules/autocomplete/autocomplete.module.mjs +23 -0
  37. package/{esm2020 → esm2022}/lib/modules/autocomplete/index.mjs +2 -2
  38. package/esm2022/lib/modules/bb/bb-modal-base.component.mjs +75 -0
  39. package/esm2022/lib/modules/bb/bb-modal-toolbar.mjs +45 -0
  40. package/esm2022/lib/modules/bb/bb.component.mjs +189 -0
  41. package/esm2022/lib/modules/bb/bb.module.mjs +38 -0
  42. package/{esm2020 → esm2022}/lib/modules/bb/index.mjs +4 -4
  43. package/esm2022/lib/modules/callback/callback.module.mjs +23 -0
  44. package/esm2022/lib/modules/callback/callback.pipe.mjs +23 -0
  45. package/{esm2020 → esm2022}/lib/modules/callback/index.mjs +2 -2
  46. package/esm2022/lib/modules/card/card/card.component.mjs +48 -0
  47. package/esm2022/lib/modules/card/card.module.mjs +19 -0
  48. package/{esm2020 → esm2022}/lib/modules/card/index.mjs +2 -2
  49. package/esm2022/lib/modules/date-ago/date-ago.pipe.mjs +47 -0
  50. package/esm2022/lib/modules/date-ago/date.module.mjs +23 -0
  51. package/{esm2020 → esm2022}/lib/modules/date-ago/index.mjs +2 -2
  52. package/esm2022/lib/modules/datepicker/date-value-accessor.mjs +189 -0
  53. package/esm2022/lib/modules/datepicker/datepicker.module.mjs +32 -0
  54. package/{esm2020 → esm2022}/lib/modules/datepicker/index.mjs +2 -2
  55. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.component.mjs +75 -0
  56. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.module.mjs +27 -0
  57. package/{esm2020 → esm2022}/lib/modules/edit-toolbar/index.mjs +2 -2
  58. package/esm2022/lib/modules/file/file-size.pipe.mjs +48 -0
  59. package/esm2022/lib/modules/file/file.module.mjs +23 -0
  60. package/{esm2020 → esm2022}/lib/modules/file/index.mjs +2 -2
  61. package/esm2022/lib/modules/file-viewer/file-viewer.mjs +52 -0
  62. package/{esm2020 → esm2022}/lib/modules/file-viewer/index.mjs +2 -2
  63. package/esm2022/lib/modules/file-viewer/module.mjs +31 -0
  64. package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +146 -0
  65. package/esm2022/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.mjs +15 -0
  66. package/esm2022/lib/modules/grid-toolbar/grid-toolbar.module.mjs +34 -0
  67. package/{esm2020 → esm2022}/lib/modules/grid-toolbar/index.mjs +3 -3
  68. package/{esm2020 → esm2022}/lib/modules/index.mjs +32 -32
  69. package/{esm2020 → esm2022}/lib/modules/list-toolbar/index.mjs +2 -2
  70. package/esm2022/lib/modules/list-toolbar/list-toolbar.component.mjs +110 -0
  71. package/esm2022/lib/modules/list-toolbar/list-toolbar.module.mjs +25 -0
  72. package/{esm2020 → esm2022}/lib/modules/loading/index.mjs +3 -3
  73. package/esm2022/lib/modules/loading/loading-interceptor.mjs +80 -0
  74. package/esm2022/lib/modules/loading/loading.component.mjs +36 -0
  75. package/esm2022/lib/modules/loading/loading.module.mjs +33 -0
  76. package/esm2022/lib/modules/modal/filter-modal/filter-modal.component.mjs +27 -0
  77. package/{esm2020 → esm2022}/lib/modules/modal/index.mjs +4 -4
  78. package/esm2022/lib/modules/modal/modal/modal.component.mjs +313 -0
  79. package/esm2022/lib/modules/modal/modal.module.mjs +63 -0
  80. package/esm2022/lib/modules/modal/sum-modal/sum-modal.component.mjs +28 -0
  81. package/{esm2020 → esm2022}/lib/modules/page-title/index.mjs +2 -2
  82. package/esm2022/lib/modules/page-title/page-title.component.mjs +32 -0
  83. package/esm2022/lib/modules/page-title/page-title.module.mjs +27 -0
  84. package/{esm2020 → esm2022}/lib/modules/pager/index.mjs +2 -2
  85. package/esm2022/lib/modules/pager/pager/pager.component.mjs +51 -0
  86. package/esm2022/lib/modules/pager/pager.module.mjs +27 -0
  87. package/{esm2020 → esm2022}/lib/modules/password/index.mjs +2 -2
  88. package/{esm2020 → esm2022}/lib/modules/password/password.component.mjs +48 -47
  89. package/esm2022/lib/modules/password/password.module.mjs +31 -0
  90. package/{esm2020 → esm2022}/lib/modules/progress/index.mjs +2 -2
  91. package/esm2022/lib/modules/progress/module.mjs +27 -0
  92. package/esm2022/lib/modules/progress/progress.mjs +98 -0
  93. package/{esm2020 → esm2022}/lib/modules/radio/index.mjs +2 -2
  94. package/esm2022/lib/modules/radio/radio-button.component.mjs +135 -0
  95. package/esm2022/lib/modules/radio/radio.module.mjs +23 -0
  96. package/{esm2020 → esm2022}/lib/modules/readonly/index.mjs +2 -2
  97. package/esm2022/lib/modules/readonly/readonly.directive.mjs +26 -0
  98. package/esm2022/lib/modules/readonly/readonly.module.mjs +23 -0
  99. package/{esm2020 → esm2022}/lib/modules/recaptcha/index.mjs +3 -3
  100. package/{esm2020 → esm2022}/lib/modules/recaptcha/loader.mjs +12 -12
  101. package/{esm2020 → esm2022}/lib/modules/recaptcha/recaptcha.model.mjs +1 -1
  102. package/esm2022/lib/modules/recaptcha/recaptcha.module.mjs +33 -0
  103. package/esm2022/lib/modules/recaptcha/recaptcha.service.mjs +120 -0
  104. package/{esm2020 → esm2022}/lib/modules/safe/index.mjs +2 -2
  105. package/esm2022/lib/modules/safe/safe.module.mjs +21 -0
  106. package/esm2022/lib/modules/safe/safe.pipe.mjs +38 -0
  107. package/{esm2020 → esm2022}/lib/modules/select/index.mjs +2 -2
  108. package/{esm2020 → esm2022}/lib/modules/select/model.mjs +3 -3
  109. package/esm2022/lib/modules/select/module.mjs +29 -0
  110. package/esm2022/lib/modules/select/select.mjs +199 -0
  111. package/{esm2020 → esm2022}/lib/modules/select2/index.mjs +2 -2
  112. package/esm2022/lib/modules/select2/select2.component.mjs +171 -0
  113. package/esm2022/lib/modules/select2/select2.module.mjs +29 -0
  114. package/{esm2020 → esm2022}/lib/modules/select2-multiple/index.mjs +2 -2
  115. package/esm2022/lib/modules/select2-multiple/select2-multiple.component.mjs +133 -0
  116. package/esm2022/lib/modules/select2-multiple/select2-multiple.module.mjs +29 -0
  117. package/{esm2020 → esm2022}/lib/modules/sort/index.mjs +3 -3
  118. package/esm2022/lib/modules/sort/sort-button-group/sort-button-group.component.mjs +80 -0
  119. package/esm2022/lib/modules/sort/sort.directive.mjs +118 -0
  120. package/esm2022/lib/modules/sort/sort.module.mjs +34 -0
  121. package/{esm2020 → esm2022}/lib/modules/time/index.mjs +3 -3
  122. package/esm2022/lib/modules/time/time.module.mjs +28 -0
  123. package/esm2022/lib/modules/time/time.pipe.mjs +41 -0
  124. package/esm2022/lib/modules/time/timer-service.mjs +90 -0
  125. package/{esm2020 → esm2022}/lib/modules/validator/field-validator.mjs +21 -20
  126. package/{esm2020 → esm2022}/lib/modules/validator/index.mjs +2 -2
  127. package/esm2022/lib/modules/validator/validator.module.mjs +27 -0
  128. package/esm2022/lib/modules/validators/directive.mjs +76 -0
  129. package/{esm2020 → esm2022}/lib/modules/validators/index.mjs +3 -3
  130. package/esm2022/lib/modules/validators/module.mjs +23 -0
  131. package/{esm2020 → esm2022}/lib/modules/validators/validator.mjs +71 -71
  132. package/{esm2020 → esm2022}/lib/modules/wizard/index.mjs +3 -3
  133. package/esm2022/lib/modules/wizard/wizard/wizard.component.mjs +66 -0
  134. package/esm2022/lib/modules/wizard/wizard.module.mjs +34 -0
  135. package/esm2022/lib/modules/wizard/wizard2/wizard2.component.mjs +14 -0
  136. package/esm2022/lib/services/alert.service.mjs +77 -0
  137. package/esm2022/lib/services/auth-guard.service.mjs +29 -0
  138. package/esm2022/lib/services/auth.service.mjs +204 -0
  139. package/{esm2020 → esm2022}/lib/services/base.service.mjs +7 -7
  140. package/{esm2020 → esm2022}/lib/services/crud.service.mjs +42 -42
  141. package/esm2022/lib/services/http-error-handler.service.mjs +142 -0
  142. package/{esm2020 → esm2022}/lib/services/index.mjs +6 -6
  143. package/esm2022/lib/services/web.api.mjs +127 -0
  144. package/{esm2020 → esm2022}/lib/tokens.mjs +5 -5
  145. package/{esm2020 → esm2022}/lib/utils/array-helper.mjs +113 -113
  146. package/{esm2020 → esm2022}/lib/utils/base64-helper.mjs +8 -8
  147. package/{esm2020 → esm2022}/lib/utils/bitwise-helper.mjs +13 -13
  148. package/{esm2020 → esm2022}/lib/utils/bootstrap.helper.mjs +126 -126
  149. package/{esm2020 → esm2022}/lib/utils/convert.mjs +34 -34
  150. package/{esm2020 → esm2022}/lib/utils/css-helper.mjs +40 -40
  151. package/esm2022/lib/utils/date-helper.mjs +236 -0
  152. package/{esm2020 → esm2022}/lib/utils/file.helper.mjs +25 -25
  153. package/{esm2020 → esm2022}/lib/utils/filter-helper.mjs +12 -12
  154. package/{esm2020 → esm2022}/lib/utils/handler.mjs +23 -23
  155. package/{esm2020 → esm2022}/lib/utils/html-helper.mjs +65 -65
  156. package/{esm2020 → esm2022}/lib/utils/index.mjs +22 -22
  157. package/{esm2020 → esm2022}/lib/utils/math-helper.mjs +6 -6
  158. package/{esm2020 → esm2022}/lib/utils/object-helper.mjs +63 -63
  159. package/{esm2020 → esm2022}/lib/utils/overlap-helper.mjs +72 -72
  160. package/{esm2020 → esm2022}/lib/utils/pager-helper.mjs +62 -62
  161. package/{esm2020 → esm2022}/lib/utils/random-helper.mjs +10 -10
  162. package/{esm2020 → esm2022}/lib/utils/storage-helper.mjs +27 -27
  163. package/{esm2020 → esm2022}/lib/utils/string-helper.mjs +31 -31
  164. package/{esm2020 → esm2022}/lib/utils/thenBy.mjs +40 -40
  165. package/{esm2020 → esm2022}/lib/utils/time-helper.mjs +46 -46
  166. package/{esm2020 → esm2022}/lib/utils/url-helper.mjs +25 -25
  167. package/esm2022/lib/utils/validation-helper.mjs +11 -0
  168. package/esm2022/lib/zek.module.mjs +34 -0
  169. package/{esm2020 → esm2022}/public-api.mjs +10 -10
  170. package/{esm2020 → esm2022}/zek.mjs +4 -4
  171. package/{fesm2020 → fesm2022}/zek.mjs +6415 -6404
  172. package/fesm2022/zek.mjs.map +1 -0
  173. package/index.d.ts +5 -5
  174. package/lib/components/args.d.ts +5 -5
  175. package/lib/components/base.component.d.ts +24 -24
  176. package/lib/components/core-ui.component.d.ts +86 -86
  177. package/lib/components/core.component.d.ts +15 -15
  178. package/lib/components/edit-base.component.d.ts +59 -59
  179. package/lib/components/index.d.ts +7 -7
  180. package/lib/components/list-base.component.d.ts +61 -61
  181. package/lib/components/types.d.ts +3 -3
  182. package/lib/models/alert-type.d.ts +10 -10
  183. package/lib/models/captcha.model.d.ts +3 -3
  184. package/lib/models/ctor.d.ts +3 -3
  185. package/lib/models/edit-base.model.d.ts +5 -5
  186. package/lib/models/file.model.d.ts +14 -14
  187. package/lib/models/filter.model.d.ts +9 -9
  188. package/lib/models/gender.model.d.ts +4 -4
  189. package/lib/models/index.d.ts +16 -16
  190. package/lib/models/key-pair.model.d.ts +14 -14
  191. package/lib/models/list-base.model.d.ts +4 -4
  192. package/lib/models/login.model.d.ts +28 -28
  193. package/lib/models/month.model.d.ts +14 -14
  194. package/lib/models/nav.model.d.ts +19 -19
  195. package/lib/models/pager.model.d.ts +21 -21
  196. package/lib/models/print.model.d.ts +4 -4
  197. package/lib/models/tree.model.d.ts +8 -8
  198. package/lib/models/valid-event-args.model.d.ts +3 -3
  199. package/lib/modules/age/age.module.d.ts +8 -8
  200. package/lib/modules/age/age.pipe.d.ts +7 -7
  201. package/lib/modules/age/index.d.ts +2 -2
  202. package/lib/modules/alert/alert/alert.d.ts +16 -16
  203. package/lib/modules/alert/alert.module.d.ts +10 -10
  204. package/lib/modules/alert/index.d.ts +5 -5
  205. package/lib/modules/alert/toast/toast.d.ts +20 -20
  206. package/lib/modules/alert/validation/validation.d.ts +17 -17
  207. package/lib/modules/autocomplete/autocomplete.directive.d.ts +11 -11
  208. package/lib/modules/autocomplete/autocomplete.module.d.ts +8 -8
  209. package/lib/modules/autocomplete/index.d.ts +2 -2
  210. package/lib/modules/bb/bb-modal-base.component.d.ts +26 -26
  211. package/lib/modules/bb/bb-modal-toolbar.d.ts +16 -16
  212. package/lib/modules/bb/bb.component.d.ts +52 -52
  213. package/lib/modules/bb/bb.module.d.ts +11 -11
  214. package/lib/modules/bb/index.d.ts +4 -4
  215. package/lib/modules/callback/callback.module.d.ts +8 -8
  216. package/lib/modules/callback/callback.pipe.d.ts +7 -7
  217. package/lib/modules/callback/index.d.ts +2 -2
  218. package/lib/modules/card/card/card.component.d.ts +21 -21
  219. package/lib/modules/card/card.module.d.ts +8 -8
  220. package/lib/modules/card/index.d.ts +2 -2
  221. package/lib/modules/date-ago/date-ago.pipe.d.ts +7 -7
  222. package/lib/modules/date-ago/date.module.d.ts +8 -8
  223. package/lib/modules/date-ago/index.d.ts +2 -2
  224. package/lib/modules/datepicker/date-value-accessor.d.ts +24 -24
  225. package/lib/modules/datepicker/datepicker.module.d.ts +14 -14
  226. package/lib/modules/datepicker/index.d.ts +2 -2
  227. package/lib/modules/edit-toolbar/edit-toolbar.component.d.ts +25 -25
  228. package/lib/modules/edit-toolbar/edit-toolbar.module.d.ts +9 -9
  229. package/lib/modules/edit-toolbar/index.d.ts +2 -2
  230. package/lib/modules/file/file-size.pipe.d.ts +8 -8
  231. package/lib/modules/file/file.module.d.ts +8 -8
  232. package/lib/modules/file/index.d.ts +2 -2
  233. package/lib/modules/file-viewer/file-viewer.d.ts +10 -10
  234. package/lib/modules/file-viewer/index.d.ts +2 -2
  235. package/lib/modules/file-viewer/module.d.ts +10 -10
  236. package/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.d.ts +50 -50
  237. package/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.d.ts +6 -6
  238. package/lib/modules/grid-toolbar/grid-toolbar.module.d.ts +10 -10
  239. package/lib/modules/grid-toolbar/index.d.ts +3 -3
  240. package/lib/modules/index.d.ts +31 -31
  241. package/lib/modules/list-toolbar/index.d.ts +2 -2
  242. package/lib/modules/list-toolbar/list-toolbar.component.d.ts +41 -41
  243. package/lib/modules/list-toolbar/list-toolbar.module.d.ts +9 -9
  244. package/lib/modules/loading/index.d.ts +2 -2
  245. package/lib/modules/loading/loading-interceptor.d.ts +21 -21
  246. package/lib/modules/loading/loading.component.d.ts +13 -13
  247. package/lib/modules/loading/loading.module.d.ts +8 -8
  248. package/lib/modules/modal/filter-modal/filter-modal.component.d.ts +10 -10
  249. package/lib/modules/modal/index.d.ts +4 -4
  250. package/lib/modules/modal/modal/modal.component.d.ts +90 -90
  251. package/lib/modules/modal/modal.module.d.ts +12 -12
  252. package/lib/modules/modal/sum-modal/sum-modal.component.d.ts +8 -8
  253. package/lib/modules/page-title/index.d.ts +2 -2
  254. package/lib/modules/page-title/page-title.component.d.ts +12 -12
  255. package/lib/modules/page-title/page-title.module.d.ts +9 -9
  256. package/lib/modules/pager/index.d.ts +2 -2
  257. package/lib/modules/pager/pager/pager.component.d.ts +17 -17
  258. package/lib/modules/pager/pager.module.d.ts +9 -9
  259. package/lib/modules/password/index.d.ts +2 -2
  260. package/lib/modules/password/password.component.d.ts +18 -18
  261. package/lib/modules/password/password.module.d.ts +10 -10
  262. package/lib/modules/progress/index.d.ts +2 -2
  263. package/lib/modules/progress/module.d.ts +9 -9
  264. package/lib/modules/progress/progress.d.ts +33 -33
  265. package/lib/modules/radio/index.d.ts +2 -2
  266. package/lib/modules/radio/radio-button.component.d.ts +44 -41
  267. package/lib/modules/radio/radio.module.d.ts +8 -8
  268. package/lib/modules/readonly/index.d.ts +2 -2
  269. package/lib/modules/readonly/readonly.directive.d.ts +8 -8
  270. package/lib/modules/readonly/readonly.module.d.ts +8 -8
  271. package/lib/modules/recaptcha/index.d.ts +3 -3
  272. package/lib/modules/recaptcha/loader.d.ts +12 -12
  273. package/lib/modules/recaptcha/recaptcha.model.d.ts +109 -109
  274. package/lib/modules/recaptcha/recaptcha.module.d.ts +10 -10
  275. package/lib/modules/recaptcha/recaptcha.service.d.ts +60 -60
  276. package/lib/modules/safe/index.d.ts +2 -2
  277. package/lib/modules/safe/safe.module.d.ts +8 -8
  278. package/lib/modules/safe/safe.pipe.d.ts +16 -16
  279. package/lib/modules/select/index.d.ts +2 -2
  280. package/lib/modules/select/model.d.ts +5 -5
  281. package/lib/modules/select/module.d.ts +9 -9
  282. package/lib/modules/select/select.d.ts +42 -42
  283. package/lib/modules/select2/index.d.ts +2 -2
  284. package/lib/modules/select2/select2.component.d.ts +31 -31
  285. package/lib/modules/select2/select2.module.d.ts +9 -9
  286. package/lib/modules/select2-multiple/index.d.ts +2 -2
  287. package/lib/modules/select2-multiple/select2-multiple.component.d.ts +30 -30
  288. package/lib/modules/select2-multiple/select2-multiple.module.d.ts +9 -9
  289. package/lib/modules/sort/index.d.ts +3 -3
  290. package/lib/modules/sort/sort-button-group/sort-button-group.component.d.ts +34 -34
  291. package/lib/modules/sort/sort.directive.d.ts +34 -34
  292. package/lib/modules/sort/sort.module.d.ts +10 -10
  293. package/lib/modules/time/index.d.ts +3 -3
  294. package/lib/modules/time/time.module.d.ts +8 -8
  295. package/lib/modules/time/time.pipe.d.ts +11 -11
  296. package/lib/modules/time/timer-service.d.ts +21 -21
  297. package/lib/modules/validator/field-validator.d.ts +7 -7
  298. package/lib/modules/validator/index.d.ts +2 -2
  299. package/lib/modules/validator/validator.module.d.ts +9 -9
  300. package/lib/modules/validators/directive.d.ts +67 -67
  301. package/lib/modules/validators/index.d.ts +3 -3
  302. package/lib/modules/validators/module.d.ts +8 -8
  303. package/lib/modules/validators/validator.d.ts +33 -33
  304. package/lib/modules/wizard/index.d.ts +3 -3
  305. package/lib/modules/wizard/wizard/wizard.component.d.ts +19 -19
  306. package/lib/modules/wizard/wizard.module.d.ts +10 -10
  307. package/lib/modules/wizard/wizard2/wizard2.component.d.ts +6 -6
  308. package/lib/services/alert.service.d.ts +33 -33
  309. package/lib/services/auth-guard.service.d.ts +12 -12
  310. package/lib/services/auth.service.d.ts +30 -30
  311. package/lib/services/base.service.d.ts +8 -8
  312. package/lib/services/crud.service.d.ts +32 -32
  313. package/lib/services/http-error-handler.service.d.ts +39 -39
  314. package/lib/services/index.d.ts +6 -6
  315. package/lib/services/web.api.d.ts +31 -31
  316. package/lib/tokens.d.ts +5 -5
  317. package/lib/utils/array-helper.d.ts +14 -14
  318. package/lib/utils/base64-helper.d.ts +4 -4
  319. package/lib/utils/bitwise-helper.d.ts +4 -4
  320. package/lib/utils/bootstrap.helper.d.ts +25 -25
  321. package/lib/utils/convert.d.ts +7 -7
  322. package/lib/utils/css-helper.d.ts +5 -5
  323. package/lib/utils/date-helper.d.ts +43 -43
  324. package/lib/utils/file.helper.d.ts +3 -3
  325. package/lib/utils/filter-helper.d.ts +3 -3
  326. package/lib/utils/handler.d.ts +4 -4
  327. package/lib/utils/html-helper.d.ts +7 -7
  328. package/lib/utils/index.d.ts +22 -22
  329. package/lib/utils/math-helper.d.ts +3 -3
  330. package/lib/utils/object-helper.d.ts +13 -13
  331. package/lib/utils/overlap-helper.d.ts +22 -22
  332. package/lib/utils/pager-helper.d.ts +4 -4
  333. package/lib/utils/random-helper.d.ts +3 -3
  334. package/lib/utils/storage-helper.d.ts +4 -4
  335. package/lib/utils/string-helper.d.ts +8 -8
  336. package/lib/utils/thenBy.d.ts +4 -4
  337. package/lib/utils/time-helper.d.ts +7 -7
  338. package/lib/utils/url-helper.d.ts +5 -5
  339. package/lib/utils/validation-helper.d.ts +4 -4
  340. package/lib/zek.module.d.ts +14 -14
  341. package/package.json +9 -15
  342. package/public-api.d.ts +7 -7
  343. package/esm2020/lib/components/base.component.mjs +0 -96
  344. package/esm2020/lib/components/core-ui.component.mjs +0 -194
  345. package/esm2020/lib/components/core.component.mjs +0 -39
  346. package/esm2020/lib/components/edit-base.component.mjs +0 -234
  347. package/esm2020/lib/components/list-base.component.mjs +0 -253
  348. package/esm2020/lib/modules/age/age.module.mjs +0 -22
  349. package/esm2020/lib/modules/age/age.pipe.mjs +0 -21
  350. package/esm2020/lib/modules/alert/alert/alert.mjs +0 -54
  351. package/esm2020/lib/modules/alert/alert.module.mjs +0 -35
  352. package/esm2020/lib/modules/alert/toast/toast.mjs +0 -109
  353. package/esm2020/lib/modules/alert/validation/validation.mjs +0 -85
  354. package/esm2020/lib/modules/autocomplete/autocomplete.directive.mjs +0 -24
  355. package/esm2020/lib/modules/autocomplete/autocomplete.module.mjs +0 -22
  356. package/esm2020/lib/modules/bb/bb-modal-base.component.mjs +0 -74
  357. package/esm2020/lib/modules/bb/bb-modal-toolbar.mjs +0 -44
  358. package/esm2020/lib/modules/bb/bb.component.mjs +0 -188
  359. package/esm2020/lib/modules/bb/bb.module.mjs +0 -37
  360. package/esm2020/lib/modules/callback/callback.module.mjs +0 -22
  361. package/esm2020/lib/modules/callback/callback.pipe.mjs +0 -22
  362. package/esm2020/lib/modules/card/card/card.component.mjs +0 -47
  363. package/esm2020/lib/modules/card/card.module.mjs +0 -18
  364. package/esm2020/lib/modules/date-ago/date-ago.pipe.mjs +0 -46
  365. package/esm2020/lib/modules/date-ago/date.module.mjs +0 -22
  366. package/esm2020/lib/modules/datepicker/date-value-accessor.mjs +0 -188
  367. package/esm2020/lib/modules/datepicker/datepicker.module.mjs +0 -31
  368. package/esm2020/lib/modules/edit-toolbar/edit-toolbar.component.mjs +0 -74
  369. package/esm2020/lib/modules/edit-toolbar/edit-toolbar.module.mjs +0 -26
  370. package/esm2020/lib/modules/file/file-size.pipe.mjs +0 -47
  371. package/esm2020/lib/modules/file/file.module.mjs +0 -22
  372. package/esm2020/lib/modules/file-viewer/file-viewer.mjs +0 -51
  373. package/esm2020/lib/modules/file-viewer/module.mjs +0 -30
  374. package/esm2020/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +0 -145
  375. package/esm2020/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.mjs +0 -14
  376. package/esm2020/lib/modules/grid-toolbar/grid-toolbar.module.mjs +0 -33
  377. package/esm2020/lib/modules/list-toolbar/list-toolbar.component.mjs +0 -109
  378. package/esm2020/lib/modules/list-toolbar/list-toolbar.module.mjs +0 -24
  379. package/esm2020/lib/modules/loading/loading-interceptor.mjs +0 -79
  380. package/esm2020/lib/modules/loading/loading.component.mjs +0 -35
  381. package/esm2020/lib/modules/loading/loading.module.mjs +0 -32
  382. package/esm2020/lib/modules/modal/filter-modal/filter-modal.component.mjs +0 -26
  383. package/esm2020/lib/modules/modal/modal/modal.component.mjs +0 -307
  384. package/esm2020/lib/modules/modal/modal.module.mjs +0 -62
  385. package/esm2020/lib/modules/modal/sum-modal/sum-modal.component.mjs +0 -27
  386. package/esm2020/lib/modules/page-title/page-title.component.mjs +0 -31
  387. package/esm2020/lib/modules/page-title/page-title.module.mjs +0 -26
  388. package/esm2020/lib/modules/pager/pager/pager.component.mjs +0 -50
  389. package/esm2020/lib/modules/pager/pager.module.mjs +0 -26
  390. package/esm2020/lib/modules/password/password.module.mjs +0 -30
  391. package/esm2020/lib/modules/progress/module.mjs +0 -26
  392. package/esm2020/lib/modules/progress/progress.mjs +0 -97
  393. package/esm2020/lib/modules/radio/radio-button.component.mjs +0 -123
  394. package/esm2020/lib/modules/radio/radio.module.mjs +0 -22
  395. package/esm2020/lib/modules/readonly/readonly.directive.mjs +0 -25
  396. package/esm2020/lib/modules/readonly/readonly.module.mjs +0 -22
  397. package/esm2020/lib/modules/recaptcha/recaptcha.module.mjs +0 -32
  398. package/esm2020/lib/modules/recaptcha/recaptcha.service.mjs +0 -119
  399. package/esm2020/lib/modules/safe/safe.module.mjs +0 -20
  400. package/esm2020/lib/modules/safe/safe.pipe.mjs +0 -37
  401. package/esm2020/lib/modules/select/module.mjs +0 -28
  402. package/esm2020/lib/modules/select/select.mjs +0 -198
  403. package/esm2020/lib/modules/select2/select2.component.mjs +0 -170
  404. package/esm2020/lib/modules/select2/select2.module.mjs +0 -28
  405. package/esm2020/lib/modules/select2-multiple/select2-multiple.component.mjs +0 -132
  406. package/esm2020/lib/modules/select2-multiple/select2-multiple.module.mjs +0 -28
  407. package/esm2020/lib/modules/sort/sort-button-group/sort-button-group.component.mjs +0 -79
  408. package/esm2020/lib/modules/sort/sort.directive.mjs +0 -117
  409. package/esm2020/lib/modules/sort/sort.module.mjs +0 -33
  410. package/esm2020/lib/modules/time/time.module.mjs +0 -27
  411. package/esm2020/lib/modules/time/time.pipe.mjs +0 -40
  412. package/esm2020/lib/modules/time/timer-service.mjs +0 -89
  413. package/esm2020/lib/modules/validator/validator.module.mjs +0 -26
  414. package/esm2020/lib/modules/validators/directive.mjs +0 -75
  415. package/esm2020/lib/modules/validators/module.mjs +0 -22
  416. package/esm2020/lib/modules/wizard/wizard/wizard.component.mjs +0 -65
  417. package/esm2020/lib/modules/wizard/wizard.module.mjs +0 -33
  418. package/esm2020/lib/modules/wizard/wizard2/wizard2.component.mjs +0 -13
  419. package/esm2020/lib/services/alert.service.mjs +0 -76
  420. package/esm2020/lib/services/auth-guard.service.mjs +0 -28
  421. package/esm2020/lib/services/auth.service.mjs +0 -203
  422. package/esm2020/lib/services/http-error-handler.service.mjs +0 -141
  423. package/esm2020/lib/services/web.api.mjs +0 -126
  424. package/esm2020/lib/utils/date-helper.mjs +0 -235
  425. package/esm2020/lib/utils/validation-helper.mjs +0 -10
  426. package/esm2020/lib/zek.module.mjs +0 -33
  427. package/fesm2015/zek.mjs +0 -6682
  428. package/fesm2015/zek.mjs.map +0 -1
  429. package/fesm2020/zek.mjs.map +0 -1
@@ -1,170 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { RandomHelper, StringHelper } from '../../utils';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- export class Select2Component {
7
- constructor() {
8
- this.elementId = RandomHelper.randomHex();
9
- this._data = [];
10
- this.filteredData = [];
11
- this.placeholder = '';
12
- this.selectedItemChange = new EventEmitter();
13
- this.valueChange = new EventEmitter();
14
- }
15
- get data() {
16
- return this._data;
17
- }
18
- set data(value) {
19
- if (this._data !== value) {
20
- this._data = value;
21
- this.findAndSetItem();
22
- this.filterData();
23
- }
24
- }
25
- get selectedItem() {
26
- return this._selectedItem;
27
- }
28
- get value() {
29
- return this._value;
30
- }
31
- set value(v) {
32
- if (this._value !== v) {
33
- this._value = v;
34
- this.findAndSetItem();
35
- }
36
- }
37
- findAndSetItem() {
38
- let foundItem = null;
39
- if (this._value === undefined || this._value === null || !this.data) {
40
- }
41
- else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {
42
- foundItem = this.data.find(x => x === this._value);
43
- }
44
- else {
45
- foundItem = this.data.find(x => x[this.valueField] === this._value);
46
- }
47
- this._selectedItem = foundItem;
48
- this.setText();
49
- }
50
- // private _dropdown: any;
51
- // public get dropdown(): any {
52
- // if (!this._dropdown) {
53
- // let el = document.getElementById('btn-' + this.elementId);
54
- // this._dropdown = new bootstrap.Dropdown(el);
55
- // }
56
- // return this._dropdown;
57
- // }
58
- // public set dropdown(v: any) {
59
- // this._dropdown = v;
60
- // }
61
- ngOnDestroy() {
62
- // this.dropdown?.dispose();
63
- // this.dropdown = null;
64
- }
65
- onTextChange(text) {
66
- this.filter = StringHelper.tryTrim(text);
67
- this.filterData();
68
- }
69
- filterData() {
70
- if (this.filter && this.filter !== '') {
71
- let searchString = this.filter;
72
- if (this.textField === undefined || this.textField === null) {
73
- this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);
74
- }
75
- else {
76
- this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);
77
- }
78
- }
79
- else // if (this.filter === undefined || this.filter === null || this.filter === '')
80
- {
81
- this.filteredData = this.data;
82
- }
83
- }
84
- onFocus(e) {
85
- // if (this.dropdown){
86
- // this.dropdown.show();
87
- // }
88
- // let dropdown = document.getElementById(`dropdown-menu-container-${this.elementId}`);
89
- // console.log(dropdown);
90
- // if (dropdown) {
91
- // console.log(dropdown.classList);
92
- // if (!dropdown.classList.contains('show')) {
93
- // let el = document.getElementById(`input-${this.elementId}`);
94
- // if (el) {
95
- // el.click();
96
- // }
97
- // }
98
- // }
99
- // let inputId = 'input-' + this.elementId;
100
- // let el = document.getElementById(inputId);
101
- // if (el) {
102
- // if (!el.classList.contains('show')) {
103
- // this.dropdown?.show();
104
- // }
105
- // let menuId = '#dropdown-menu-' + this.elementId + ' ' + 'a';
106
- // el.addEventListener('keydown', function (e) {
107
- // if (e.key == 'ArrowDown') {
108
- // (document.querySelectorAll(menuId)[0] as any).focus();
109
- // }
110
- // });
111
- // }
112
- }
113
- inputUnfocused() {
114
- // this.expanded = false;
115
- }
116
- setText() {
117
- if (this._selectedItem === undefined || this._selectedItem === null) {
118
- this.text = null;
119
- }
120
- else if (this.textField === undefined || this.textField === null) {
121
- this.text = this._selectedItem;
122
- }
123
- else {
124
- this.text = this._selectedItem[this.textField];
125
- }
126
- }
127
- selectItem(item) {
128
- if (this._selectedItem !== item) {
129
- this._selectedItem = item;
130
- this.selectedItemChange.emit(item);
131
- this.setText();
132
- //set value
133
- let v;
134
- if (this.valueField === undefined || this.valueField === null || this.valueField === '') {
135
- // this.value = v
136
- v = item;
137
- }
138
- else {
139
- // this.value = v[this.valueField];
140
- v = item[this.valueField];
141
- }
142
- //if value not equals then emit valueChange
143
- if (this._value !== v) {
144
- this._value = v;
145
- this.valueChange.emit(v);
146
- }
147
- }
148
- }
149
- }
150
- Select2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
151
- Select2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: Select2Component, selector: "zek-select2,[zek-select2]", inputs: { data: "data", textField: "textField", valueField: "valueField", placeholder: "placeholder", value: "value" }, outputs: { selectedItemChange: "selectedItemChange", valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{entry[textField]}}</a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{textField}}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n<!-- <kendo-autocomplete\r\n [data]=\"data\"\r\n [filterable]=\"true\"\r\n (valueChange)=\"valueChange($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (open)=\"open()\"\r\n (close)=\"close()\"\r\n (focus)=\"focus()\"\r\n (blur)=\"blur()\">\r\n</kendo-autocomplete> -->", styles: [".scrollable-menu{max-height:400px;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2Component, decorators: [{
153
- type: Component,
154
- args: [{ selector: 'zek-select2,[zek-select2]', template: "<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{entry[textField]}}</a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{textField}}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n<!-- <kendo-autocomplete\r\n [data]=\"data\"\r\n [filterable]=\"true\"\r\n (valueChange)=\"valueChange($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (open)=\"open()\"\r\n (close)=\"close()\"\r\n (focus)=\"focus()\"\r\n (blur)=\"blur()\">\r\n</kendo-autocomplete> -->", styles: [".scrollable-menu{max-height:400px;overflow-y:auto}\n"] }]
155
- }], propDecorators: { data: [{
156
- type: Input
157
- }], textField: [{
158
- type: Input
159
- }], valueField: [{
160
- type: Input
161
- }], placeholder: [{
162
- type: Input
163
- }], selectedItemChange: [{
164
- type: Output
165
- }], valueChange: [{
166
- type: Output
167
- }], value: [{
168
- type: Input
169
- }] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDIvc2VsZWN0Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDIvc2VsZWN0Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQVN6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBUDdCO1FBV2EsY0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUV0QyxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBWS9CLGlCQUFZLEdBQWUsRUFBRSxDQUFDO1FBSXJCLGdCQUFXLEdBQVcsRUFBRSxDQUFBO1FBRXZCLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFNN0MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0tBa0puRDtJQXpLRyxJQUNJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEtBQWlCO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNyQjtJQUNMLENBQUM7SUFTRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FB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QUksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRTtnQkFDckYsaUJBQWlCO2dCQUNqQixDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ1o7aUJBQU07Z0JBQ0gsbUNBQW1DO2dCQUNuQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3QjtZQUVELDJDQUEyQztZQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUI7U0FDSjtJQUNMLENBQUM7OzZHQTdLUSxnQkFBZ0I7aUdBQWhCLGdCQUFnQiw0UUNWN0IsdzdDQXlCeUI7MkZEZlosZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNJLDJCQUEyQjs4QkFjakMsSUFBSTtzQkFEUCxLQUFLO2dCQWFHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFNRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdILEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSYW5kb21IZWxwZXIsIFN0cmluZ0hlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd6ZWstc2VsZWN0MixbemVrLXNlbGVjdDJdJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdDIuY29tcG9uZW50LmNzcyddXHJcblxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFNlbGVjdDJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgZmlsdGVyPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIHRleHQ/OiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAgIHJlYWRvbmx5IGVsZW1lbnRJZCA9IFJhbmRvbUhlbHBlci5yYW5kb21IZXgoKTtcclxuXHJcbiAgICBwcml2YXRlIF9kYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGRhdGEoKTogQXJyYXk8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgICB9XHJcbiAgICBzZXQgZGF0YSh2YWx1ZTogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIGlmICh0aGlzLl9kYXRhICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldEl0ZW0oKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZmlsdGVyZWREYXRhOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gICAgQElucHV0KCkgdGV4dEZpZWxkOiBhbnk7XHJcbiAgICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBhbnk7XHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJydcclxuXHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW06IGFueTtcclxuICAgIGdldCBzZWxlY3RlZEl0ZW0oKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKHY6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHY7XHJcbiAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldEl0ZW0oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmaW5kQW5kU2V0SXRlbSgpIHtcclxuICAgICAgICBsZXQgZm91bmRJdGVtID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl92YWx1ZSA9PT0gbnVsbCB8fCAhdGhpcy5kYXRhKSB7XHJcblxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZUZpZWxkID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZUZpZWxkID09PSBudWxsIHx8IHRoaXMudmFsdWVGaWVsZCA9PT0gJycpIHtcclxuICAgICAgICAgICAgZm91bmRJdGVtID0gdGhpcy5kYXRhLmZpbmQoeCA9PiB4ID09PSB0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm91bmRJdGVtID0gdGhpcy5kYXRhLmZpbmQoeCA9PiB4W3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IGZvdW5kSXRlbTtcclxuICAgICAgICB0aGlzLnNldFRleHQoKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICAvLyBwcml2YXRlIF9kcm9wZG93bjogYW55O1xyXG4gICAgLy8gcHVibGljIGdldCBkcm9wZG93bigpOiBhbnkge1xyXG4gICAgLy8gICAgIGlmICghdGhpcy5fZHJvcGRvd24pIHtcclxuICAgIC8vICAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bi0nICsgdGhpcy5lbGVtZW50SWQpO1xyXG4gICAgLy8gICAgICAgICB0aGlzLl9kcm9wZG93biA9IG5ldyBib290c3RyYXAuRHJvcGRvd24oZWwpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5fZHJvcGRvd247XHJcbiAgICAvLyB9XHJcbiAgICAvLyBwdWJsaWMgc2V0IGRyb3Bkb3duKHY6IGFueSkge1xyXG4gICAgLy8gICAgIHRoaXMuX2Ryb3Bkb3duID0gdjtcclxuICAgIC8vIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICAvLyB0aGlzLmRyb3Bkb3duPy5kaXNwb3NlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5kcm9wZG93biA9IG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9uVGV4dENoYW5nZSh0ZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmZpbHRlciA9IFN0cmluZ0hlbHBlci50cnlUcmltKHRleHQpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmlsdGVyRGF0YSgpIHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXIgJiYgdGhpcy5maWx0ZXIgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGxldCBzZWFyY2hTdHJpbmcgPSB0aGlzLmZpbHRlcjtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGV4dEZpZWxkID09PSB1bmRlZmluZWQgfHwgdGhpcy50ZXh0RmllbGQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSAhPT0gLTEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbVt0aGlzLnRleHRGaWVsZF0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSAhPT0gLTEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UvLyBpZiAodGhpcy5maWx0ZXIgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmZpbHRlciA9PT0gbnVsbCB8fCB0aGlzLmZpbHRlciA9PT0gJycpIFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jdXMoZTogRm9jdXNFdmVudCkge1xyXG4gICAgICAgIC8vIGlmICh0aGlzLmRyb3Bkb3duKXtcclxuICAgICAgICAvLyAgIHRoaXMuZHJvcGRvd24uc2hvdygpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBsZXQgZHJvcGRvd24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgZHJvcGRvd24tbWVudS1jb250YWluZXItJHt0aGlzLmVsZW1lbnRJZH1gKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhkcm9wZG93bik7XHJcblxyXG4gICAgICAgIC8vIGlmIChkcm9wZG93bikge1xyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coZHJvcGRvd24uY2xhc3NMaXN0KTtcclxuXHJcbiAgICAgICAgLy8gICBpZiAoIWRyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucygnc2hvdycpKSB7XHJcbiAgICAgICAgLy8gICAgIGxldCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBpbnB1dC0ke3RoaXMuZWxlbWVudElkfWApO1xyXG4gICAgICAgIC8vICAgICBpZiAoZWwpIHtcclxuICAgICAgICAvLyAgICAgICBlbC5jbGljaygpO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfVxyXG5cclxuXHJcblxyXG4gICAgICAgIC8vIGxldCBpbnB1dElkID0gJ2lucHV0LScgKyB0aGlzLmVsZW1lbnRJZDtcclxuICAgICAgICAvLyBsZXQgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbnB1dElkKTtcclxuICAgICAgICAvLyBpZiAoZWwpIHtcclxuXHJcbiAgICAgICAgLy8gICBpZiAoIWVsLmNsYXNzTGlzdC5jb250YWlucygnc2hvdycpKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuZHJvcGRvd24/LnNob3coKTtcclxuICAgICAgICAvLyAgIH1cclxuXHJcbiAgICAgICAgLy8gbGV0IG1lbnVJZCA9ICcjZHJvcGRvd24tbWVudS0nICsgdGhpcy5lbGVtZW50SWQgKyAnICcgKyAnYSc7XHJcbiAgICAgICAgLy8gZWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgLy8gICBpZiAoZS5rZXkgPT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAvLyAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwobWVudUlkKVswXSBhcyBhbnkpLmZvY3VzKCk7XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgaW5wdXRVbmZvY3VzZWQoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0VGV4dCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtID09PSB1bmRlZmluZWQgfHwgdGhpcy5fc2VsZWN0ZWRJdGVtID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMudGV4dEZpZWxkID09PSB1bmRlZmluZWQgfHwgdGhpcy50ZXh0RmllbGQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy5fc2VsZWN0ZWRJdGVtO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMuX3NlbGVjdGVkSXRlbVt0aGlzLnRleHRGaWVsZF07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdEl0ZW0oaXRlbTogYW55KSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW0gIT09IGl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1DaGFuZ2UuZW1pdChpdGVtKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0VGV4dCgpO1xyXG5cclxuICAgICAgICAgICAgLy9zZXQgdmFsdWVcclxuICAgICAgICAgICAgbGV0IHY7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlRmllbGQgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnZhbHVlRmllbGQgPT09IG51bGwgfHwgdGhpcy52YWx1ZUZpZWxkID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy52YWx1ZSA9IHZcclxuICAgICAgICAgICAgICAgIHYgPSBpdGVtO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy52YWx1ZSA9IHZbdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgICAgICAgICAgIHYgPSBpdGVtW3RoaXMudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vaWYgdmFsdWUgbm90IGVxdWFscyB0aGVuIGVtaXQgdmFsdWVDaGFuZ2VcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB2KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHY7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgcG9zaXRpb24tcmVsYXRpdmVcIiBpZD1cImRyb3Bkb3duLW1lbnUtY29udGFpbmVyLXt7ZWxlbWVudElkfX1cIj5cclxuICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGlkPVwiaW5wdXQte3tlbGVtZW50SWR9fVwiIFsobmdNb2RlbCldPVwidGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiIChibHVyKT1cImlucHV0VW5mb2N1c2VkKClcIj5cclxuICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBkcm9wZG93bi10b2dnbGVcIiBpZD1cImJ0bi17e2VsZW1lbnRJZH19XCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBkYXRhLWJzLXJlZmVyZW5jZT1cInBhcmVudFwiPjwvYnV0dG9uPlxyXG4gIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1zdGFydCB3LTEwMCBzY3JvbGxhYmxlLW1lbnVcIiBpZD1cImRyb3Bkb3duLW1lbnUte3tlbGVtZW50SWR9fVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRleHRGaWVsZFwiPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGZpbHRlcmVkRGF0YVwiPlxyXG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwic2VsZWN0SXRlbShlbnRyeSlcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIj57e2VudHJ5W3RleHRGaWVsZF19fTwvYT5cclxuICAgICAgPC9saT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0ZXh0RmllbGRcIj5cclxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBmaWx0ZXJlZERhdGFcIj5cclxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInNlbGVjdEl0ZW0oZW50cnkpXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+e3t0ZXh0RmllbGR9fTwvYT5cclxuICAgICAgPC9saT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG48IS0tIDxrZW5kby1hdXRvY29tcGxldGVcclxuICBbZGF0YV09XCJkYXRhXCJcclxuICBbZmlsdGVyYWJsZV09XCJ0cnVlXCJcclxuICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgKGZpbHRlckNoYW5nZSk9XCJmaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgKG9wZW4pPVwib3BlbigpXCJcclxuICAoY2xvc2UpPVwiY2xvc2UoKVwiXHJcbiAgKGZvY3VzKT1cImZvY3VzKClcIlxyXG4gIChibHVyKT1cImJsdXIoKVwiPlxyXG48L2tlbmRvLWF1dG9jb21wbGV0ZT4gLS0+Il19
@@ -1,28 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { Select2Component } from './select2.component';
5
- import * as i0 from "@angular/core";
6
- export class Select2Module {
7
- }
8
- Select2Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- Select2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: Select2Module, declarations: [Select2Component], imports: [CommonModule,
10
- FormsModule], exports: [Select2Component] });
11
- Select2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2Module, imports: [CommonModule,
12
- FormsModule] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2Module, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- imports: [
17
- CommonModule,
18
- FormsModule
19
- ],
20
- declarations: [
21
- Select2Component
22
- ],
23
- exports: [
24
- Select2Component
25
- ],
26
- }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Mi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDIvc2VsZWN0Mi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQWV2RCxNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQVB0QixnQkFBZ0IsYUFKaEIsWUFBWTtRQUNaLFdBQVcsYUFNWCxnQkFBZ0I7MkdBSVAsYUFBYSxZQVh0QixZQUFZO1FBQ1osV0FBVzsyRkFVRixhQUFhO2tCQWJ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjtxQkFDakI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIgIFxyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2VsZWN0MkNvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0Mi5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBTZWxlY3QyQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTZWxlY3QyQ29tcG9uZW50XHJcbiAgXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3QyTW9kdWxlIHtcclxufSJdfQ==
@@ -1,132 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { RandomHelper, StringHelper } from '../../utils';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- //declare let bootstrap: any;
7
- export class Select2MultipleComponent {
8
- constructor() {
9
- this.elementId = RandomHelper.randomHex();
10
- this._data = [];
11
- this.filteredData = [];
12
- this.placeholder = '';
13
- this.selectedItemChange = new EventEmitter();
14
- this._selectedItems = [];
15
- this.valueChange = new EventEmitter();
16
- }
17
- get data() {
18
- return this._data;
19
- }
20
- set data(value) {
21
- if (this._data !== value) {
22
- this._data = value;
23
- this.findAndSetItems();
24
- this.filterData();
25
- }
26
- }
27
- get selectedItems() {
28
- return this._selectedItems;
29
- }
30
- get value() {
31
- return this._value;
32
- }
33
- set value(v) {
34
- if (this._value !== v) {
35
- this._value = v;
36
- this.findAndSetItems();
37
- }
38
- }
39
- findAndSetItems() {
40
- this._data?.forEach(x => x.selected = false);
41
- this._selectedItems = [];
42
- let foundItems = [];
43
- if (this._value === undefined || this._value === null || !this.data) {
44
- }
45
- else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {
46
- foundItems = this.data.filter(x => this._value?.includes(x));
47
- }
48
- else {
49
- foundItems = this.data.filter(x => this._value?.includes(x[this.valueField]));
50
- }
51
- if (foundItems.length > 0) {
52
- foundItems.forEach(x => x.selected = true);
53
- this._selectedItems = foundItems;
54
- }
55
- this.setText();
56
- }
57
- onTextChange(text) {
58
- this.filter = StringHelper.tryTrim(text);
59
- this.filterData();
60
- }
61
- filterData() {
62
- if (this.filter && this.filter !== '') {
63
- let searchString = this.filter;
64
- if (this.textField === undefined || this.textField === null) {
65
- this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);
66
- }
67
- else {
68
- this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);
69
- }
70
- }
71
- else {
72
- this.filteredData = this.data;
73
- }
74
- }
75
- onFocus(e) {
76
- this.filter = '';
77
- this.text = '';
78
- this.filterData();
79
- }
80
- inputUnfocused() {
81
- this.setText();
82
- }
83
- setText() {
84
- if (this.textField === undefined || this.textField === null) {
85
- this.text = this._selectedItems.join(', ');
86
- }
87
- else {
88
- this.text = this._selectedItems.map(x => x[this.textField]).join(', ');
89
- }
90
- }
91
- selectItem(item) {
92
- item.selected = !item.selected;
93
- if (item.selected) {
94
- this._selectedItems.push(item);
95
- }
96
- else {
97
- this._selectedItems = this._selectedItems.filter(x => x !== item);
98
- }
99
- this.selectedItemChange.emit(item);
100
- this.setText();
101
- let v;
102
- if (this.valueField === undefined || this.valueField === null || this.valueField === '') {
103
- v = this._selectedItems ? this._selectedItems : null;
104
- }
105
- else {
106
- v = this._selectedItems ? this._selectedItems.map(x => x[this.valueField]) : null;
107
- }
108
- this._value = v;
109
- this.valueChange.emit(v);
110
- }
111
- }
112
- Select2MultipleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2MultipleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
113
- Select2MultipleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: Select2MultipleComponent, selector: "zek-select2-multiple,[zek-select2-multiple]", inputs: { data: "data", textField: "textField", valueField: "valueField", placeholder: "placeholder", value: "value" }, outputs: { selectedItemChange: "selectedItemChange", valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let item of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n <span *ngIf=\"item.selected\"><i class=\"far fa-check-square\"></i></span>\r\n <span *ngIf=\"!item.selected\"><i class=\"far fa-square\"></i></span>\r\n {{item[textField]}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let item of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n <span *ngIf=\"item.selected\"><i class=\"far fa-check-square\"></i></span>\r\n <span *ngIf=\"!item.selected\"><i class=\"far fa-square\"></i></span>\r\n {{item}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2MultipleComponent, decorators: [{
115
- type: Component,
116
- args: [{ selector: 'zek-select2-multiple,[zek-select2-multiple]', template: "<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let item of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n <span *ngIf=\"item.selected\"><i class=\"far fa-check-square\"></i></span>\r\n <span *ngIf=\"!item.selected\"><i class=\"far fa-square\"></i></span>\r\n {{item[textField]}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let item of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n <span *ngIf=\"item.selected\"><i class=\"far fa-check-square\"></i></span>\r\n <span *ngIf=\"!item.selected\"><i class=\"far fa-square\"></i></span>\r\n {{item}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>" }]
117
- }], propDecorators: { data: [{
118
- type: Input
119
- }], textField: [{
120
- type: Input
121
- }], valueField: [{
122
- type: Input
123
- }], placeholder: [{
124
- type: Input
125
- }], selectedItemChange: [{
126
- type: Output
127
- }], valueChange: [{
128
- type: Output
129
- }], value: [{
130
- type: Input
131
- }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Mi1tdWx0aXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDItbXVsdGlwbGUvc2VsZWN0Mi1tdWx0aXBsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDItbXVsdGlwbGUvc2VsZWN0Mi1tdWx0aXBsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUN6RCw2QkFBNkI7QUFRN0IsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQVNhLGNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdEMsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQVkvQixpQkFBWSxHQUFlLEVBQUUsQ0FBQztRQUlyQixnQkFBVyxHQUFXLEVBQUUsQ0FBQTtRQUV2Qix1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9DLG1CQUFjLEdBQWUsRUFBRSxDQUFDO1FBSzlCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztLQThGbkQ7SUFySEcsSUFDSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFpQjtRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBU0QsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFJRCxJQUNJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLENBQU07UUFDWixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLFVBQVUsR0FBZSxFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7U0FFcEU7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFO1lBQzVGLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEU7YUFBTTtZQUNILFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBRUQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBSUQsWUFBWSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUNuQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0c7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0g7U0FDSjthQUNJO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFhO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxPQUFPO1FBQ1gsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxRTtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUUvQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQzthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztTQUNyRTtRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFvQixDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7WUFDckYsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN4RDthQUFNO1lBQ0gsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDckY7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDOztxSEF6SFEsd0JBQXdCO3lHQUF4Qix3QkFBd0IsOFJDVnJDLHFqREF1Qk07MkZEYk8sd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLDZDQUE2Qzs4QkFZbkQsSUFBSTtzQkFEUCxLQUFLO2dCQWFHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFNRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdILEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSYW5kb21IZWxwZXIsIFN0cmluZ0hlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuLy9kZWNsYXJlIGxldCBib290c3RyYXA6IGFueTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnemVrLXNlbGVjdDItbXVsdGlwbGUsW3play1zZWxlY3QyLW11bHRpcGxlXScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0Mi1tdWx0aXBsZS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3QyTXVsdGlwbGVDb21wb25lbnQge1xyXG4gICAgZmlsdGVyPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIHRleHQ/OiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAgIHJlYWRvbmx5IGVsZW1lbnRJZCA9IFJhbmRvbUhlbHBlci5yYW5kb21IZXgoKTtcclxuXHJcbiAgICBwcml2YXRlIF9kYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGRhdGEoKTogQXJyYXk8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgICB9XHJcbiAgICBzZXQgZGF0YSh2YWx1ZTogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIGlmICh0aGlzLl9kYXRhICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldEl0ZW1zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZpbHRlcmVkRGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHRleHRGaWVsZDogYW55O1xyXG4gICAgQElucHV0KCkgdmFsdWVGaWVsZDogYW55O1xyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnXHJcblxyXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogQXJyYXk8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBwcml2YXRlIF92YWx1ZT86IEFycmF5PGFueT4gfCBudWxsO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZXQgdmFsdWUodjogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0SXRlbXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmaW5kQW5kU2V0SXRlbXMoKSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YT8uZm9yRWFjaCh4ID0+IHguc2VsZWN0ZWQgPSBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgIGxldCBmb3VuZEl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fdmFsdWUgPT09IG51bGwgfHwgIXRoaXMuZGF0YSkge1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWVGaWVsZCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudmFsdWVGaWVsZCA9PT0gbnVsbCB8fCB0aGlzLnZhbHVlRmllbGQgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIGZvdW5kSXRlbXMgPSB0aGlzLmRhdGEuZmlsdGVyKHggPT4gdGhpcy5fdmFsdWU/LmluY2x1ZGVzKHgpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3VuZEl0ZW1zID0gdGhpcy5kYXRhLmZpbHRlcih4ID0+IHRoaXMuX3ZhbHVlPy5pbmNsdWRlcyh4W3RoaXMudmFsdWVGaWVsZF0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmb3VuZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm91bmRJdGVtcy5mb3JFYWNoKHggPT4geC5zZWxlY3RlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gZm91bmRJdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRUZXh0KCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBvblRleHRDaGFuZ2UodGV4dDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBTdHJpbmdIZWxwZXIudHJ5VHJpbSh0ZXh0KTtcclxuICAgICAgICB0aGlzLmZpbHRlckRhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbHRlckRhdGEoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyICYmIHRoaXMuZmlsdGVyICE9PSAnJykge1xyXG4gICAgICAgICAgICBsZXQgc2VhcmNoU3RyaW5nID0gdGhpcy5maWx0ZXI7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHRGaWVsZCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudGV4dEZpZWxkID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkgIT09IC0xKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhLmZpbHRlcihpdGVtID0+IGl0ZW1bdGhpcy50ZXh0RmllbGRdLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKSkgIT09IC0xKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jdXMoZTogRm9jdXNFdmVudCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyID0gJyc7XHJcbiAgICAgICAgdGhpcy50ZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpbnB1dFVuZm9jdXNlZCgpIHtcclxuICAgICAgICB0aGlzLnNldFRleHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFRleHQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGV4dEZpZWxkID09PSB1bmRlZmluZWQgfHwgdGhpcy50ZXh0RmllbGQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5qb2luKCcsICcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKHggPT4geFt0aGlzLnRleHRGaWVsZF0pLmpvaW4oJywgJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdEl0ZW0oaXRlbTogYW55KSB7XHJcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkO1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuZmlsdGVyKHggPT4geCAhPT0gaXRlbSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNoYW5nZS5lbWl0KGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuc2V0VGV4dCgpO1xyXG5cclxuICAgICAgICBsZXQgdjogQXJyYXk8YW55PiB8IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMudmFsdWVGaWVsZCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudmFsdWVGaWVsZCA9PT0gbnVsbCB8fCB0aGlzLnZhbHVlRmllbGQgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHYgPSB0aGlzLl9zZWxlY3RlZEl0ZW1zID8gdGhpcy5fc2VsZWN0ZWRJdGVtcyA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdiA9IHRoaXMuX3NlbGVjdGVkSXRlbXMgPyB0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcCh4ID0+IHhbdGhpcy52YWx1ZUZpZWxkXSkgOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBwb3NpdGlvbi1yZWxhdGl2ZVwiIGlkPVwiZHJvcGRvd24tbWVudS1jb250YWluZXIte3tlbGVtZW50SWR9fVwiPlxyXG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgZGF0YS1icy1hdXRvLWNsb3NlPVwib3V0c2lkZVwiIGlkPVwiaW5wdXQte3tlbGVtZW50SWR9fVwiIFsobmdNb2RlbCldPVwidGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiIChibHVyKT1cImlucHV0VW5mb2N1c2VkKClcIj5cclxuICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBkcm9wZG93bi10b2dnbGVcIiBpZD1cImJ0bi17e2VsZW1lbnRJZH19XCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBkYXRhLWJzLXJlZmVyZW5jZT1cInBhcmVudFwiPjwvYnV0dG9uPlxyXG4gIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1zdGFydCB3LTEwMCBzY3JvbGxhYmxlLW1lbnVcIiBpZD1cImRyb3Bkb3duLW1lbnUte3tlbGVtZW50SWR9fVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRleHRGaWVsZFwiPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWREYXRhXCI+XHJcbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc2VsZWN0ZWRcIj48aSBjbGFzcz1cImZhciBmYS1jaGVjay1zcXVhcmVcIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5zZWxlY3RlZFwiPjxpIGNsYXNzPVwiZmFyIGZhLXNxdWFyZVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICB7e2l0ZW1bdGV4dEZpZWxkXX19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2xpPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRleHRGaWVsZFwiPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWREYXRhXCI+XHJcbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc2VsZWN0ZWRcIj48aSBjbGFzcz1cImZhciBmYS1jaGVjay1zcXVhcmVcIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5zZWxlY3RlZFwiPjxpIGNsYXNzPVwiZmFyIGZhLXNxdWFyZVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICB7e2l0ZW19fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9saT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvdWw+XHJcbjwvZGl2PiJdfQ==
@@ -1,28 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { Select2MultipleComponent } from './select2-multiple.component';
5
- import * as i0 from "@angular/core";
6
- export class Select2MultipleModule {
7
- }
8
- Select2MultipleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2MultipleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- Select2MultipleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: Select2MultipleModule, declarations: [Select2MultipleComponent], imports: [CommonModule,
10
- FormsModule], exports: [Select2MultipleComponent] });
11
- Select2MultipleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2MultipleModule, imports: [CommonModule,
12
- FormsModule] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: Select2MultipleModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- imports: [
17
- CommonModule,
18
- FormsModule
19
- ],
20
- declarations: [
21
- Select2MultipleComponent
22
- ],
23
- exports: [
24
- Select2MultipleComponent
25
- ],
26
- }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Mi1tdWx0aXBsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdDItbXVsdGlwbGUvc2VsZWN0Mi1tdWx0aXBsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQWV4RSxNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsaUJBUDlCLHdCQUF3QixhQUp4QixZQUFZO1FBQ1osV0FBVyxhQU1YLHdCQUF3QjttSEFJZixxQkFBcUIsWUFYOUIsWUFBWTtRQUNaLFdBQVc7MkZBVUYscUJBQXFCO2tCQWJqQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLHdCQUF3QjtxQkFDekI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIgIFxyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2VsZWN0Mk11bHRpcGxlQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QyLW11bHRpcGxlLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNlbGVjdDJNdWx0aXBsZUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgU2VsZWN0Mk11bHRpcGxlQ29tcG9uZW50XHJcbiAgXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3QyTXVsdGlwbGVNb2R1bGUge1xyXG59Il19
@@ -1,79 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { RandomHelper } from '../../../utils';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@ngx-translate/core";
6
- export class SortButtonGroupComponent {
7
- /**
8
- * Default constructor
9
- */
10
- constructor() {
11
- this.elementName = '';
12
- /**
13
- * Executes after 'sort' input changed
14
- */
15
- this.sortChange = new EventEmitter();
16
- /**
17
- * Executes after 'asc' input changed
18
- */
19
- this.ascChange = new EventEmitter();
20
- /**
21
- * Executes after click on column
22
- */
23
- this.onChange = new EventEmitter();
24
- this._sort = null;
25
- this._asc = false;
26
- this.sortFields = null;
27
- this.elementName = 'sort-button-group-' + RandomHelper.randomHex();
28
- }
29
- get sort() {
30
- return this._sort;
31
- }
32
- set sort(value) {
33
- if (this._sort !== value) {
34
- this._sort = value;
35
- }
36
- }
37
- get asc() {
38
- return this._asc;
39
- }
40
- set asc(value) {
41
- if (this._asc !== value) {
42
- this._asc = value;
43
- }
44
- }
45
- sortFieldClick(item) {
46
- if (!item || !item.key)
47
- return;
48
- this.sortField = item;
49
- if (this.sort !== item.key) {
50
- this.sort = item.key;
51
- this.sortChange.emit(this.sort);
52
- this.onChange.emit();
53
- }
54
- }
55
- ascDescClick() {
56
- this.asc = !this.asc;
57
- this.ascChange.emit(this.asc);
58
- this.onChange.emit();
59
- }
60
- }
61
- SortButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SortButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
- SortButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SortButtonGroupComponent, selector: "zek-sort-button-group", inputs: { sort: "sort", asc: "asc", sortFields: "sortFields" }, outputs: { sortChange: "sortChange", ascChange: "ascChange", onChange: "onChange" }, ngImport: i0, template: "<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fas fa-sort-alt fa-fw\"></i></span>\r\n <span *ngIf=\"asc === true\"><i class=\"fas fa-sort-alpha-down fa-fw\"></i></span>\r\n <span *ngIf=\"asc === false\"><i class=\"fas fa-sort-alpha-up fa-fw\"></i></span>\r\n </button>\r\n <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n </button>\r\n <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n </ul>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SortButtonGroupComponent, decorators: [{
64
- type: Component,
65
- args: [{ selector: 'zek-sort-button-group', template: "<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fas fa-sort-alt fa-fw\"></i></span>\r\n <span *ngIf=\"asc === true\"><i class=\"fas fa-sort-alpha-down fa-fw\"></i></span>\r\n <span *ngIf=\"asc === false\"><i class=\"fas fa-sort-alpha-up fa-fw\"></i></span>\r\n </button>\r\n <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n </button>\r\n <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n </ul>\r\n</div>" }]
66
- }], ctorParameters: function () { return []; }, propDecorators: { sortChange: [{
67
- type: Output
68
- }], ascChange: [{
69
- type: Output
70
- }], onChange: [{
71
- type: Output
72
- }], sort: [{
73
- type: Input
74
- }], asc: [{
75
- type: Input
76
- }], sortFields: [{
77
- type: Input
78
- }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1idXR0b24tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9zb3J0L3NvcnQtYnV0dG9uLWdyb3VwL3NvcnQtYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL21vZHVsZXMvc29ydC9zb3J0LWJ1dHRvbi1ncm91cC9zb3J0LWJ1dHRvbi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU05QyxNQUFNLE9BQU8sd0JBQXdCO0lBNENqQzs7T0FFRztJQUNIO1FBOUNBLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCOztXQUVHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRXpEOztXQUVHO1FBQ08sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFbEQ7O1dBRUc7UUFDTyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdoQyxVQUFLLEdBQWtCLElBQUksQ0FBQztRQVk1QixTQUFJLEdBQVksS0FBSyxDQUFDO1FBV3JCLGVBQVUsR0FBcUIsSUFBSSxDQUFDO1FBTXpDLElBQUksQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUE3QkQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUNJLElBQUksQ0FBQyxLQUFvQjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUlELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFDSSxHQUFHLENBQUMsS0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQVdELGNBQWMsQ0FBQyxJQUFTO1FBQ3BCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU87UUFFL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDOztxSEFsRVEsd0JBQXdCO3lHQUF4Qix3QkFBd0Isa05DUnJDLGdyQ0FhTTsyRkRMTyx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0ksdUJBQXVCOzBFQVN2QixVQUFVO3NCQUFuQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFRSCxJQUFJO3NCQURQLEtBQUs7Z0JBYUYsR0FBRztzQkFETixLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2tleS1wYWlyLm1vZGVsJztcclxuaW1wb3J0IHsgUmFuZG9tSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3play1zb3J0LWJ1dHRvbi1ncm91cCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc29ydC1idXR0b24tZ3JvdXAuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTb3J0QnV0dG9uR3JvdXBDb21wb25lbnQge1xyXG4gICAgZWxlbWVudE5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXhlY3V0ZXMgYWZ0ZXIgJ3NvcnQnIGlucHV0IGNoYW5nZWRcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeGVjdXRlcyBhZnRlciAnYXNjJyBpbnB1dCBjaGFuZ2VkXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBhc2NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAgRXhlY3V0ZXMgYWZ0ZXIgY2xpY2sgb24gY29sdW1uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBzb3J0RmllbGQ6IGFueTtcclxuICAgIHByaXZhdGUgX3NvcnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgZ2V0IHNvcnQoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnQ7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHNvcnQodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fc29ydCAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fc29ydCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfYXNjOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBnZXQgYXNjKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hc2M7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGFzYyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICh0aGlzLl9hc2MgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FzYyA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBzb3J0RmllbGRzOiBLZXlQYWlyW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmF1bHQgY29uc3RydWN0b3JcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50TmFtZSA9ICdzb3J0LWJ1dHRvbi1ncm91cC0nICsgUmFuZG9tSGVscGVyLnJhbmRvbUhleCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnRGaWVsZENsaWNrKGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICghaXRlbSB8fCAhaXRlbS5rZXkpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5zb3J0RmllbGQgPSBpdGVtO1xyXG4gICAgICAgIGlmICh0aGlzLnNvcnQgIT09IGl0ZW0ua2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29ydCA9IGl0ZW0ua2V5O1xyXG4gICAgICAgICAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdCh0aGlzLnNvcnQpO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXNjRGVzY0NsaWNrKCkge1xyXG4gICAgICAgIHRoaXMuYXNjID0gIXRoaXMuYXNjO1xyXG4gICAgICAgIHRoaXMuYXNjQ2hhbmdlLmVtaXQodGhpcy5hc2MpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbWUtM1wiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJTb3J0IGdyb3VwXCI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHRcIiAoY2xpY2spPVwiYXNjRGVzY0NsaWNrKClcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImFzYyA9PT0gdW5kZWZpbmVkIHx8IGFzYyA9PT0gbnVsbFwiPjxpIGNsYXNzPVwiZmFzIGZhLXNvcnQtYWx0IGZhLWZ3XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImFzYyA9PT0gdHJ1ZVwiPjxpIGNsYXNzPVwiZmFzIGZhLXNvcnQtYWxwaGEtZG93biBmYS1md1wiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJhc2MgPT09IGZhbHNlXCI+PGkgY2xhc3M9XCJmYXMgZmEtc29ydC1hbHBoYS11cCBmYS1md1wiPjwvaT48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJzb3J0RmllbGRzICYmIHNvcnRGaWVsZHMubGVuZ3RoID4gMFwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBkcm9wZG93bi10b2dnbGVcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ7e2VsZW1lbnROYW1lfX1cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvcnRGaWVsZDsgZWxzZSBlbHNlRmllbGRCbG9ja1wiPnt7IHNvcnRGaWVsZC52YWx1ZSB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUZpZWxkQmxvY2s+e3sgJ0FjdGlvbi5Tb3J0JyB8IHRyYW5zbGF0ZSB9fTwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDx1bCAqbmdJZj1cInNvcnRGaWVsZHMgJiYgc29ydEZpZWxkcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImVsZW1lbnROYW1lXCI+XHJcbiAgICAgICAgPGxpPjxhICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNvcnRGaWVsZHNcIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInNvcnRGaWVsZENsaWNrKGl0ZW0pXCI+e3sgKGl0ZW0udmFsdWUpIHwgdHJhbnNsYXRlIH19PC9hPjwvbGk+XHJcbiAgICA8L3VsPlxyXG48L2Rpdj4iXX0=