solid-ui 3.1.3-5 → 3.1.3-7

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 (621) hide show
  1. package/dist/_virtual/~icons/lucide/chevron-down.cjs.js +1 -1
  2. package/dist/_virtual/~icons/lucide/chevron-down.esm.js +1 -0
  3. package/dist/_virtual/~icons/lucide/circle-user.cjs.js +1 -1
  4. package/dist/_virtual/~icons/lucide/circle-user.esm.js +1 -0
  5. package/dist/_virtual/~icons/lucide/log-in.cjs.js +1 -1
  6. package/dist/_virtual/~icons/lucide/log-in.esm.js +1 -0
  7. package/dist/_virtual/~icons/lucide/log-out.cjs.js +1 -1
  8. package/dist/_virtual/~icons/lucide/log-out.esm.js +1 -0
  9. package/dist/_virtual/~icons/lucide/user.cjs.js +1 -1
  10. package/dist/_virtual/~icons/lucide/user.esm.js +1 -0
  11. package/dist/_virtual/~icons/lucide/x.cjs.js +1 -1
  12. package/dist/_virtual/~icons/lucide/x.esm.js +1 -0
  13. package/dist/_virtual/~icons/svg-spinners/180-ring.cjs.js +1 -1
  14. package/dist/_virtual/~icons/svg-spinners/180-ring.esm.js +1 -0
  15. package/dist/acl/access-controller.cjs.js +1 -1
  16. package/dist/acl/access-controller.cjs.js.map +1 -1
  17. package/dist/acl/access-controller.esm.js.map +1 -1
  18. package/dist/acl/access-groups.cjs.js.map +1 -1
  19. package/dist/acl/access-groups.esm.js.map +1 -1
  20. package/dist/acl/acl-control.cjs.js +1 -1
  21. package/dist/acl/acl-control.cjs.js.map +1 -1
  22. package/dist/acl/acl-control.esm.js +1 -1
  23. package/dist/acl/acl-control.esm.js.map +1 -1
  24. package/dist/acl/acl.cjs.js.map +1 -1
  25. package/dist/acl/acl.esm.js.map +1 -1
  26. package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
  27. package/dist/acl/add-agent-buttons.esm.js.map +1 -1
  28. package/dist/chat/bookmarks.cjs.js +1 -1
  29. package/dist/chat/bookmarks.cjs.js.map +1 -1
  30. package/dist/chat/bookmarks.esm.js +1 -1
  31. package/dist/chat/bookmarks.esm.js.map +1 -1
  32. package/dist/chat/chatLogic.cjs.js.map +1 -1
  33. package/dist/chat/chatLogic.esm.js.map +1 -1
  34. package/dist/chat/dateFolder.cjs.js +1 -1
  35. package/dist/chat/dateFolder.cjs.js.map +1 -1
  36. package/dist/chat/dateFolder.esm.js +1 -1
  37. package/dist/chat/dateFolder.esm.js.map +1 -1
  38. package/dist/chat/infinite.cjs.js +1 -1
  39. package/dist/chat/infinite.cjs.js.map +1 -1
  40. package/dist/chat/infinite.esm.js +1 -1
  41. package/dist/chat/infinite.esm.js.map +1 -1
  42. package/dist/chat/keys.cjs.js +1 -1
  43. package/dist/chat/keys.cjs.js.map +1 -1
  44. package/dist/chat/keys.esm.js +1 -1
  45. package/dist/chat/keys.esm.js.map +1 -1
  46. package/dist/chat/message.cjs.js +1 -1
  47. package/dist/chat/message.cjs.js.map +1 -1
  48. package/dist/chat/message.esm.js +24 -24
  49. package/dist/chat/message.esm.js.map +1 -1
  50. package/dist/chat/messageTools.cjs.js.map +1 -1
  51. package/dist/chat/messageTools.esm.js.map +1 -1
  52. package/dist/chat/signature.cjs.js +1 -1
  53. package/dist/chat/signature.cjs.js.map +1 -1
  54. package/dist/chat/signature.esm.js +1 -1
  55. package/dist/chunks/{menu-items-DKKcQrb6.js → DialogProvider-Bt65G0Tk.js} +157 -56
  56. package/dist/chunks/DialogProvider-Bt65G0Tk.js.map +1 -0
  57. package/dist/chunks/{account-B4BktCv0.js → account-BZ2rYQhV.js} +23 -26
  58. package/dist/chunks/account-BZ2rYQhV.js.map +1 -0
  59. package/dist/chunks/{auth-BPQUXz9Q.js → auth-RHyQ2iIl.js} +32 -29
  60. package/dist/chunks/auth-RHyQ2iIl.js.map +1 -0
  61. package/dist/chunks/{avatar-B5DCduCy.js → avatar-Jx8xm2Op.js} +8 -8
  62. package/dist/chunks/avatar-Jx8xm2Op.js.map +1 -0
  63. package/dist/chunks/{button-GHRF3psH.js → button-0s0lZdxm.js} +7 -7
  64. package/dist/chunks/{button-GHRF3psH.js.map → button-0s0lZdxm.js.map} +1 -1
  65. package/dist/chunks/chevron-down-ujxRg3MD.js +10 -0
  66. package/dist/chunks/chevron-down-ujxRg3MD.js.map +1 -0
  67. package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js +1516 -0
  68. package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js.map +1 -0
  69. package/dist/chunks/combobox-Cxi8xUMn.js +473 -0
  70. package/dist/chunks/combobox-Cxi8xUMn.js.map +1 -0
  71. package/dist/chunks/{combobox-option-CW1ZwMC7.js → combobox-option-DiR3VpyT.js} +4 -4
  72. package/dist/chunks/{combobox-option-CW1ZwMC7.js.map → combobox-option-DiR3VpyT.js.map} +1 -1
  73. package/dist/chunks/{components-Dlw2zOvI.js → components-C1LEhsaK.js} +85 -21
  74. package/dist/chunks/components-C1LEhsaK.js.map +1 -0
  75. package/dist/chunks/{create-context-IPEkU7ze.js → context-uE5jJlS0.js} +8 -4
  76. package/dist/chunks/context-uE5jJlS0.js.map +1 -0
  77. package/dist/chunks/{decorators-CJJL4XBH.js → decorators-BiCkPd_3.js} +28 -35
  78. package/dist/chunks/decorators-BiCkPd_3.js.map +1 -0
  79. package/dist/chunks/{dialog-DmDA1aY8.js → dialog-BAzrHJ8w.js} +106 -64
  80. package/dist/chunks/dialog-BAzrHJ8w.js.map +1 -0
  81. package/dist/chunks/{dialog-content-C8VhHg5G.js → dialog-content-fdJrkCyB.js} +3 -3
  82. package/dist/chunks/{dialog-content-C8VhHg5G.js.map → dialog-content-fdJrkCyB.js.map} +1 -1
  83. package/dist/chunks/{dialog-footer-CtHFoTZS.js → dialog-footer-Bs_p2Nn9.js} +3 -3
  84. package/dist/chunks/{dialog-footer-CtHFoTZS.js.map → dialog-footer-Bs_p2Nn9.js.map} +1 -1
  85. package/dist/chunks/{dialog-header-D9jjujFf.js → dialog-header-CWIAAoDo.js} +3 -3
  86. package/dist/chunks/{dialog-header-D9jjujFf.js.map → dialog-header-CWIAAoDo.js.map} +1 -1
  87. package/dist/chunks/{dialogs-root-C4igEIk0.js → dialogs-root-Cv932Aqm.js} +10 -9
  88. package/dist/chunks/dialogs-root-Cv932Aqm.js.map +1 -0
  89. package/dist/chunks/{footer-CS8u8ycB.js → footer-D64T6XLO.js} +8 -8
  90. package/dist/chunks/{footer-CS8u8ycB.js.map → footer-D64T6XLO.js.map} +1 -1
  91. package/dist/chunks/{guard-BIc50Lps.js → guard-CjUBGVDk.js} +5 -5
  92. package/dist/chunks/{guard-BIc50Lps.js.map → guard-CjUBGVDk.js.map} +1 -1
  93. package/dist/chunks/{header-0TLBh_PG.js → header-COBaJDdB.js} +41 -41
  94. package/dist/chunks/{header-0TLBh_PG.js.map → header-COBaJDdB.js.map} +1 -1
  95. package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js → headerFooterHelpers-7O_ln1QD.js} +2 -2
  96. package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js.map → headerFooterHelpers-7O_ln1QD.js.map} +1 -1
  97. package/dist/chunks/{combobox-eju-wypA.js → input-BF224Jid.js} +114 -113
  98. package/dist/chunks/input-BF224Jid.js.map +1 -0
  99. package/dist/chunks/{jsonld-DZG2v1pE.js → jsonld-DRZuoyoU.js} +54 -54
  100. package/dist/chunks/{jsonld-DZG2v1pE.js.map → jsonld-DRZuoyoU.js.map} +1 -1
  101. package/dist/chunks/{lit-CC2G_f_C.js → lit-C4H1jI4q.js} +110 -95
  102. package/dist/chunks/lit-C4H1jI4q.js.map +1 -0
  103. package/dist/chunks/{login-button-BKp1-O2q.js → login-button-DPeMi00d.js} +10 -7
  104. package/dist/chunks/login-button-DPeMi00d.js.map +1 -0
  105. package/dist/chunks/{logout-button-DlU-q-o5.js → logout-button-CbiLE7jO.js} +10 -7
  106. package/dist/chunks/logout-button-CbiLE7jO.js.map +1 -0
  107. package/dist/chunks/menu-DNcuV-1J.js +1741 -0
  108. package/dist/chunks/menu-DNcuV-1J.js.map +1 -0
  109. package/dist/chunks/{menu-item-DoTy3MUu.js → menu-item-Ck0l-uEI.js} +69 -55
  110. package/dist/chunks/menu-item-Ck0l-uEI.js.map +1 -0
  111. package/dist/chunks/{photo-capture-COoxZRW_.js → photo-capture-tiBsdSbA.js} +20 -20
  112. package/dist/chunks/{photo-capture-COoxZRW_.js.map → photo-capture-tiBsdSbA.js.map} +1 -1
  113. package/dist/chunks/{provider-uRz_fGWb.js → provider-C4eSzopG.js} +7 -7
  114. package/dist/chunks/{provider-uRz_fGWb.js.map → provider-C4eSzopG.js.map} +1 -1
  115. package/dist/chunks/select-D8dW53pr.js +292 -0
  116. package/dist/chunks/select-D8dW53pr.js.map +1 -0
  117. package/dist/chunks/select-option-B-6ULCpQ.js +195 -0
  118. package/dist/chunks/select-option-B-6ULCpQ.js.map +1 -0
  119. package/dist/chunks/{signup-button-BC4LmOXx.js → signup-button-BfIxbpwa.js} +10 -7
  120. package/dist/chunks/signup-button-BfIxbpwa.js.map +1 -0
  121. package/dist/chunks/{solid-logic.esm-7q6hmfIF.js → solid-logic.esm-T70qfHAr.js} +2521 -2504
  122. package/dist/chunks/solid-logic.esm-T70qfHAr.js.map +1 -0
  123. package/dist/chunks/{src-f1UXhE9W.js → src-Bx4GAnWq.js} +16 -17
  124. package/dist/chunks/{src-f1UXhE9W.js.map → src-Bx4GAnWq.js.map} +1 -1
  125. package/dist/components/account/Account.cjs.js +9 -11
  126. package/dist/components/account/Account.cjs.js.map +1 -1
  127. package/dist/components/account/Account.d.ts.map +1 -1
  128. package/dist/components/account/Account.esm.js +8 -11
  129. package/dist/components/account/Account.esm.js.map +1 -1
  130. package/dist/components/account/Account.styles.cjs.js +1 -1
  131. package/dist/components/account/Account.styles.cjs.js.map +1 -1
  132. package/dist/components/account/Account.styles.esm.js +1 -1
  133. package/dist/components/account/Account.styles.esm.js.map +1 -1
  134. package/dist/components/account/index.cjs.js +1 -1
  135. package/dist/components/account/index.esm.js +1 -1
  136. package/dist/components/account.js +1 -1
  137. package/dist/components/avatar/Avatar.cjs.js +1 -1
  138. package/dist/components/avatar/Avatar.cjs.js.map +1 -1
  139. package/dist/components/avatar/Avatar.esm.js +1 -1
  140. package/dist/components/avatar/Avatar.styles.cjs.js +1 -1
  141. package/dist/components/avatar/Avatar.styles.cjs.js.map +1 -1
  142. package/dist/components/avatar/Avatar.styles.esm.js +1 -1
  143. package/dist/components/avatar/Avatar.styles.esm.js.map +1 -1
  144. package/dist/components/avatar/index.cjs.js +1 -1
  145. package/dist/components/avatar/index.esm.js +1 -1
  146. package/dist/components/avatar.js +1 -1
  147. package/dist/components/button/Button.cjs.js +1 -1
  148. package/dist/components/button/Button.cjs.js.map +1 -1
  149. package/dist/components/button/Button.esm.js +1 -1
  150. package/dist/components/button/Button.esm.js.map +1 -1
  151. package/dist/components/button/index.cjs.js +1 -1
  152. package/dist/components/button/index.esm.js +3 -3
  153. package/dist/components/button.js +1 -1
  154. package/dist/components/combobox/Combobox.cjs.js +56 -15
  155. package/dist/components/combobox/Combobox.cjs.js.map +1 -1
  156. package/dist/components/combobox/Combobox.d.ts +27 -6
  157. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  158. package/dist/components/combobox/Combobox.esm.js +257 -87
  159. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  160. package/dist/components/combobox/Combobox.styles.cjs.js +1 -1
  161. package/dist/components/combobox/Combobox.styles.cjs.js.map +1 -1
  162. package/dist/components/combobox/Combobox.styles.esm.js +1 -1
  163. package/dist/components/combobox/Combobox.styles.esm.js.map +1 -1
  164. package/dist/components/combobox/index.cjs.js +1 -1
  165. package/dist/components/combobox/index.esm.js +1 -1
  166. package/dist/components/combobox-option/ComboboxOption.cjs.js +1 -1
  167. package/dist/components/combobox-option/ComboboxOption.cjs.js.map +1 -1
  168. package/dist/components/combobox-option/ComboboxOption.esm.js +1 -1
  169. package/dist/components/combobox-option/index.cjs.js +1 -1
  170. package/dist/components/combobox-option/index.esm.js +1 -1
  171. package/dist/components/combobox-option.js +1 -1
  172. package/dist/components/combobox.js +1 -1
  173. package/dist/components/dialog/Dialog.cjs.js +2 -2
  174. package/dist/components/dialog/Dialog.cjs.js.map +1 -1
  175. package/dist/components/dialog/Dialog.d.ts +3 -1
  176. package/dist/components/dialog/Dialog.d.ts.map +1 -1
  177. package/dist/components/dialog/Dialog.esm.js +60 -61
  178. package/dist/components/dialog/Dialog.esm.js.map +1 -1
  179. package/dist/components/dialog/index.cjs.js +1 -1
  180. package/dist/components/dialog/index.esm.js +1 -1
  181. package/dist/components/dialog-content/DialogContent.cjs.js +1 -1
  182. package/dist/components/dialog-content/DialogContent.cjs.js.map +1 -1
  183. package/dist/components/dialog-content/DialogContent.esm.js +1 -1
  184. package/dist/components/dialog-content/DialogContent.esm.js.map +1 -1
  185. package/dist/components/dialog-content/index.cjs.js +1 -1
  186. package/dist/components/dialog-content/index.esm.js +1 -1
  187. package/dist/components/dialog-content.js +1 -1
  188. package/dist/components/dialog-footer/DialogFooter.cjs.js +1 -1
  189. package/dist/components/dialog-footer/DialogFooter.cjs.js.map +1 -1
  190. package/dist/components/dialog-footer/DialogFooter.esm.js +1 -1
  191. package/dist/components/dialog-footer/DialogFooter.esm.js.map +1 -1
  192. package/dist/components/dialog-footer/index.cjs.js +1 -1
  193. package/dist/components/dialog-footer/index.esm.js +1 -1
  194. package/dist/components/dialog-footer.js +1 -1
  195. package/dist/components/dialog-header/DialogHeader.cjs.js +1 -1
  196. package/dist/components/dialog-header/DialogHeader.cjs.js.map +1 -1
  197. package/dist/components/dialog-header/DialogHeader.esm.js +1 -1
  198. package/dist/components/dialog-header/DialogHeader.esm.js.map +1 -1
  199. package/dist/components/dialog-header/index.cjs.js +1 -1
  200. package/dist/components/dialog-header/index.esm.js +1 -1
  201. package/dist/components/dialog-header.js +1 -1
  202. package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
  203. package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
  204. package/dist/components/dialog-provider/DialogProvider.esm.js +2 -2
  205. package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -1
  206. package/dist/components/dialog-provider/index.cjs.js +1 -1
  207. package/dist/components/dialog-provider/index.esm.js +1 -1
  208. package/dist/components/dialog-provider.js +1 -1
  209. package/dist/components/dialog.js +1 -1
  210. package/dist/components/dialogs-root/DialogsRoot.cjs.js +2 -2
  211. package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
  212. package/dist/components/dialogs-root/DialogsRoot.d.ts.map +1 -1
  213. package/dist/components/dialogs-root/DialogsRoot.esm.js +5 -3
  214. package/dist/components/dialogs-root/DialogsRoot.esm.js.map +1 -1
  215. package/dist/components/dialogs-root/index.cjs.js +1 -1
  216. package/dist/components/dialogs-root/index.esm.js +1 -1
  217. package/dist/components/dialogs-root.js +1 -1
  218. package/dist/components/footer.js +1 -1
  219. package/dist/components/guard/Guard.cjs.js +1 -1
  220. package/dist/components/guard/Guard.cjs.js.map +1 -1
  221. package/dist/components/guard/Guard.esm.js +1 -1
  222. package/dist/components/guard/index.cjs.js +1 -1
  223. package/dist/components/guard/index.esm.js +1 -1
  224. package/dist/components/guard.js +1 -1
  225. package/dist/components/header.js +1 -1
  226. package/dist/components/index.cjs.js +1 -1
  227. package/dist/components/index.esm.js +2 -1
  228. package/dist/components/input/Input.cjs.js +17 -0
  229. package/dist/components/input/Input.cjs.js.map +1 -0
  230. package/dist/components/input/Input.d.ts +17 -0
  231. package/dist/components/input/Input.d.ts.map +1 -0
  232. package/dist/{chunks/menu-DCsLCND4.js → components/input/Input.esm.js} +157 -96
  233. package/dist/components/input/Input.esm.js.map +1 -0
  234. package/dist/components/input/Input.stories.d.ts +43 -0
  235. package/dist/components/input/Input.stories.d.ts.map +1 -0
  236. package/dist/components/input/Input.styles.cjs.js +2 -0
  237. package/dist/components/input/Input.styles.cjs.js.map +1 -0
  238. package/dist/components/input/Input.styles.esm.js +7 -0
  239. package/dist/components/input/Input.styles.esm.js.map +1 -0
  240. package/dist/components/input/index.cjs.js +2 -0
  241. package/dist/components/input/index.cjs.js.map +1 -0
  242. package/dist/components/input/index.d.ts +4 -0
  243. package/dist/components/input/index.d.ts.map +1 -0
  244. package/dist/components/input/index.esm.js +7 -0
  245. package/dist/components/input/index.esm.js.map +1 -0
  246. package/dist/components/input.js +2 -0
  247. package/dist/components/login-button/LoginButton.cjs.js +1 -1
  248. package/dist/components/login-button/LoginButton.cjs.js.map +1 -1
  249. package/dist/components/login-button/LoginButton.d.ts +1 -0
  250. package/dist/components/login-button/LoginButton.d.ts.map +1 -1
  251. package/dist/components/login-button/LoginButton.esm.js +5 -2
  252. package/dist/components/login-button/LoginButton.esm.js.map +1 -1
  253. package/dist/components/login-button/index.cjs.js +1 -1
  254. package/dist/components/login-button/index.esm.js +1 -1
  255. package/dist/components/login-button.js +1 -1
  256. package/dist/components/login-modal/LoginModal.cjs.js +1 -1
  257. package/dist/components/login-modal/LoginModal.cjs.js.map +1 -1
  258. package/dist/components/login-modal/LoginModal.esm.js +1 -1
  259. package/dist/components/login-modal/index.cjs.js +1 -1
  260. package/dist/components/login-modal/index.esm.js +1 -1
  261. package/dist/components/login-modal.js +1 -1
  262. package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
  263. package/dist/components/logout-button/LogoutButton.cjs.js.map +1 -1
  264. package/dist/components/logout-button/LogoutButton.d.ts +1 -0
  265. package/dist/components/logout-button/LogoutButton.d.ts.map +1 -1
  266. package/dist/components/logout-button/LogoutButton.esm.js +5 -2
  267. package/dist/components/logout-button/LogoutButton.esm.js.map +1 -1
  268. package/dist/components/logout-button/index.cjs.js +1 -1
  269. package/dist/components/logout-button/index.esm.js +1 -1
  270. package/dist/components/logout-button.js +1 -1
  271. package/dist/components/menu/Menu.cjs.js +13 -8
  272. package/dist/components/menu/Menu.cjs.js.map +1 -1
  273. package/dist/components/menu/Menu.d.ts +13 -8
  274. package/dist/components/menu/Menu.d.ts.map +1 -1
  275. package/dist/components/menu/Menu.esm.js +132 -88
  276. package/dist/components/menu/Menu.esm.js.map +1 -1
  277. package/dist/components/menu/Menu.stories.d.ts.map +1 -1
  278. package/dist/components/menu/Menu.styles.cjs.js +2 -0
  279. package/dist/components/menu/Menu.styles.cjs.js.map +1 -0
  280. package/dist/components/menu/Menu.styles.esm.js +7 -0
  281. package/dist/components/menu/Menu.styles.esm.js.map +1 -0
  282. package/dist/components/menu/index.cjs.js +1 -1
  283. package/dist/components/menu/index.esm.js +1 -1
  284. package/dist/components/menu-item/MenuItem.cjs.js +5 -7
  285. package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
  286. package/dist/components/menu-item/MenuItem.d.ts +2 -0
  287. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  288. package/dist/components/menu-item/MenuItem.esm.js +61 -47
  289. package/dist/components/menu-item/MenuItem.esm.js.map +1 -1
  290. package/dist/components/menu-item/MenuItem.styles.cjs.js +1 -1
  291. package/dist/components/menu-item/MenuItem.styles.cjs.js.map +1 -1
  292. package/dist/components/menu-item/MenuItem.styles.esm.js +1 -1
  293. package/dist/components/menu-item/MenuItem.styles.esm.js.map +1 -1
  294. package/dist/components/menu-item/index.cjs.js +1 -1
  295. package/dist/components/menu-item/index.esm.js +1 -1
  296. package/dist/components/menu-item.js +1 -1
  297. package/dist/components/menu.js +1 -1
  298. package/dist/components/photo-capture.js +1 -1
  299. package/dist/components/provider/Provider.cjs.js +1 -1
  300. package/dist/components/provider/Provider.cjs.js.map +1 -1
  301. package/dist/components/provider/Provider.esm.js +1 -1
  302. package/dist/components/provider/index.cjs.js +1 -1
  303. package/dist/components/provider/index.esm.js +1 -1
  304. package/dist/components/provider.js +1 -1
  305. package/dist/components/select/Select.cjs.js +21 -0
  306. package/dist/components/select/Select.cjs.js.map +1 -0
  307. package/dist/components/select/Select.d.ts +15 -0
  308. package/dist/components/select/Select.d.ts.map +1 -0
  309. package/dist/components/{menu-items/MenuItems.esm.js → select/Select.esm.js} +140 -65
  310. package/dist/components/select/Select.esm.js.map +1 -0
  311. package/dist/components/select/Select.stories.d.ts +27 -0
  312. package/dist/components/select/Select.stories.d.ts.map +1 -0
  313. package/dist/components/select/Select.styles.cjs.js +2 -0
  314. package/dist/components/select/Select.styles.cjs.js.map +1 -0
  315. package/dist/components/select/Select.styles.esm.js +7 -0
  316. package/dist/components/select/Select.styles.esm.js.map +1 -0
  317. package/dist/components/select/index.cjs.js +2 -1
  318. package/dist/components/select/index.cjs.js.map +1 -0
  319. package/dist/components/select/index.d.ts +3 -1
  320. package/dist/components/select/index.d.ts.map +1 -1
  321. package/dist/components/select/index.esm.js +7 -3
  322. package/dist/components/select/index.esm.js.map +1 -0
  323. package/dist/components/select-option/SelectOption.cjs.js +2 -0
  324. package/dist/components/select-option/SelectOption.cjs.js.map +1 -0
  325. package/dist/components/select-option/SelectOption.d.ts +6 -0
  326. package/dist/components/select-option/SelectOption.d.ts.map +1 -0
  327. package/dist/components/select-option/SelectOption.esm.js +194 -0
  328. package/dist/components/select-option/SelectOption.esm.js.map +1 -0
  329. package/dist/components/select-option/index.cjs.js +2 -0
  330. package/dist/components/select-option/index.cjs.js.map +1 -0
  331. package/dist/components/select-option/index.d.ts +4 -0
  332. package/dist/components/select-option/index.d.ts.map +1 -0
  333. package/dist/components/select-option/index.esm.js +7 -0
  334. package/dist/components/select-option/index.esm.js.map +1 -0
  335. package/dist/components/select-option.js +2 -0
  336. package/dist/components/select.js +2 -2
  337. package/dist/components/signup-button/SignupButton.cjs.js +1 -1
  338. package/dist/components/signup-button/SignupButton.cjs.js.map +1 -1
  339. package/dist/components/signup-button/SignupButton.d.ts +1 -0
  340. package/dist/components/signup-button/SignupButton.d.ts.map +1 -1
  341. package/dist/components/signup-button/SignupButton.esm.js +5 -2
  342. package/dist/components/signup-button/SignupButton.esm.js.map +1 -1
  343. package/dist/components/signup-button/index.cjs.js +1 -1
  344. package/dist/components/signup-button/index.esm.js +1 -1
  345. package/dist/components/signup-button.js +1 -1
  346. package/dist/components.js +24 -23
  347. package/dist/create/create.cjs.js.map +1 -1
  348. package/dist/create/create.esm.js.map +1 -1
  349. package/dist/create/index.cjs.js.map +1 -1
  350. package/dist/footer/index.cjs.js +1 -1
  351. package/dist/footer/index.esm.js +1 -1
  352. package/dist/header/index.cjs.js +1 -1
  353. package/dist/header/index.cjs.js.map +1 -1
  354. package/dist/header/index.esm.js +1 -1
  355. package/dist/header/index.esm.js.map +1 -1
  356. package/dist/index.cjs.js +1 -1
  357. package/dist/index.cjs.js.map +1 -1
  358. package/dist/index.d.ts +0 -1
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.esm.js +13 -13
  361. package/dist/index.esm.js.map +1 -1
  362. package/dist/index.js +7 -9
  363. package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
  364. package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
  365. package/dist/lib/auth/context.cjs.js.map +1 -1
  366. package/dist/lib/auth/index.cjs.js +1 -1
  367. package/dist/lib/auth/index.esm.js +5 -4
  368. package/dist/lib/components/ids.cjs.js.map +1 -1
  369. package/dist/lib/components/ids.esm.js.map +1 -1
  370. package/dist/lib/components/index.cjs.js +1 -1
  371. package/dist/lib/components/index.d.ts +1 -0
  372. package/dist/lib/components/index.d.ts.map +1 -1
  373. package/dist/lib/components/index.esm.js +7 -3
  374. package/dist/lib/components/traits/DialogTrait.cjs.js +2 -0
  375. package/dist/lib/components/traits/DialogTrait.cjs.js.map +1 -0
  376. package/dist/lib/components/traits/DialogTrait.d.ts +13 -0
  377. package/dist/lib/components/traits/DialogTrait.d.ts.map +1 -0
  378. package/dist/lib/components/traits/DialogTrait.esm.js +16 -0
  379. package/dist/lib/components/traits/DialogTrait.esm.js.map +1 -0
  380. package/dist/lib/components/traits/InputTrait.cjs.js +2 -0
  381. package/dist/lib/components/traits/InputTrait.cjs.js.map +1 -0
  382. package/dist/lib/components/traits/InputTrait.d.ts +30 -0
  383. package/dist/lib/components/traits/InputTrait.d.ts.map +1 -0
  384. package/dist/lib/components/traits/InputTrait.esm.js +45 -0
  385. package/dist/lib/components/traits/InputTrait.esm.js.map +1 -0
  386. package/dist/lib/components/traits/WebComponentTrait.d.ts +11 -0
  387. package/dist/lib/components/traits/WebComponentTrait.d.ts.map +1 -0
  388. package/dist/lib/components/traits/index.cjs.js +1 -0
  389. package/dist/lib/components/traits/index.d.ts +6 -0
  390. package/dist/lib/components/traits/index.d.ts.map +1 -0
  391. package/dist/lib/components/traits/index.esm.js +3 -0
  392. package/dist/lib/components/web-component/WebComponent.cjs.js +1 -1
  393. package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -1
  394. package/dist/lib/components/web-component/WebComponent.d.ts +7 -0
  395. package/dist/lib/components/web-component/WebComponent.d.ts.map +1 -1
  396. package/dist/lib/components/web-component/WebComponent.esm.js +17 -6
  397. package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -1
  398. package/dist/lib/components/web-component/WebComponent.styles.cjs.js.map +1 -1
  399. package/dist/lib/components/web-component/WebComponent.styles.esm.js.map +1 -1
  400. package/dist/lib/components/web-component/index.cjs.js +1 -1
  401. package/dist/lib/components/web-component/index.esm.js +2 -1
  402. package/dist/lib/dialogs/Dialog.cjs.js +1 -1
  403. package/dist/lib/dialogs/Dialog.cjs.js.map +1 -1
  404. package/dist/lib/dialogs/Dialog.d.ts +6 -1
  405. package/dist/lib/dialogs/Dialog.d.ts.map +1 -1
  406. package/dist/lib/dialogs/Dialog.esm.js +6 -2
  407. package/dist/lib/dialogs/Dialog.esm.js.map +1 -1
  408. package/dist/lib/dialogs/context.cjs.js +1 -1
  409. package/dist/lib/dialogs/context.cjs.js.map +1 -1
  410. package/dist/lib/dialogs/context.d.ts +3 -0
  411. package/dist/lib/dialogs/context.d.ts.map +1 -1
  412. package/dist/lib/dialogs/context.esm.js +4 -3
  413. package/dist/lib/dialogs/context.esm.js.map +1 -1
  414. package/dist/lib/dialogs/events/close-dialog.cjs.js +1 -1
  415. package/dist/lib/dialogs/events/close-dialog.cjs.js.map +1 -1
  416. package/dist/lib/dialogs/events/close-dialog.d.ts +2 -1
  417. package/dist/lib/dialogs/events/close-dialog.d.ts.map +1 -1
  418. package/dist/lib/dialogs/events/close-dialog.esm.js +3 -2
  419. package/dist/lib/dialogs/events/close-dialog.esm.js.map +1 -1
  420. package/dist/lib/dialogs/helpers.cjs.js +1 -1
  421. package/dist/lib/dialogs/helpers.cjs.js.map +1 -1
  422. package/dist/lib/dialogs/helpers.d.ts +2 -1
  423. package/dist/lib/dialogs/helpers.d.ts.map +1 -1
  424. package/dist/lib/dialogs/helpers.esm.js +3 -3
  425. package/dist/lib/dialogs/helpers.esm.js.map +1 -1
  426. package/dist/lib/dialogs/index.cjs.js +1 -1
  427. package/dist/lib/dialogs/index.esm.js +6 -5
  428. package/dist/lib/log.cjs.js +1 -1
  429. package/dist/lib/log.cjs.js.map +1 -1
  430. package/dist/lib/log.esm.js +1 -1
  431. package/dist/lib/log.esm.js.map +1 -1
  432. package/dist/lib/messageArea.cjs.js.map +1 -1
  433. package/dist/lib/messageArea.esm.js.map +1 -1
  434. package/dist/lib/ns.cjs.js.map +1 -1
  435. package/dist/lib/pad.cjs.js +1 -1
  436. package/dist/lib/pad.cjs.js.map +1 -1
  437. package/dist/lib/pad.esm.js +1 -1
  438. package/dist/lib/pad.esm.js.map +1 -1
  439. package/dist/lib/participation.cjs.js.map +1 -1
  440. package/dist/lib/participation.esm.js.map +1 -1
  441. package/dist/lib/preferences.cjs.js +1 -1
  442. package/dist/lib/preferences.cjs.js.map +1 -1
  443. package/dist/lib/preferences.esm.js +1 -1
  444. package/dist/lib/preferences.esm.js.map +1 -1
  445. package/dist/lib/table.cjs.js.map +1 -1
  446. package/dist/lib/table.esm.js.map +1 -1
  447. package/dist/lib/tabs.cjs.js +1 -1
  448. package/dist/lib/tabs.cjs.js.map +1 -1
  449. package/dist/lib/tabs.esm.js +1 -1
  450. package/dist/lib/tabs.esm.js.map +1 -1
  451. package/dist/loader.js +7 -9
  452. package/dist/login/login.cjs.js +1 -1
  453. package/dist/login/login.cjs.js.map +1 -1
  454. package/dist/login/login.esm.js +1 -1
  455. package/dist/login/login.esm.js.map +1 -1
  456. package/dist/matrix/index.cjs.js.map +1 -1
  457. package/dist/matrix/matrix.cjs.js.map +1 -1
  458. package/dist/matrix/matrix.esm.js.map +1 -1
  459. package/dist/media/media-capture.cjs.js.map +1 -1
  460. package/dist/media/media-capture.esm.js.map +1 -1
  461. package/dist/signup/signup.cjs.js.map +1 -1
  462. package/dist/signup/signup.esm.js.map +1 -1
  463. package/dist/solid-ui.js +1053 -446
  464. package/dist/solid-ui.min.js +1053 -446
  465. package/dist/solid-ui.min.js.map +1 -1
  466. package/dist/theme.css +1 -1
  467. package/dist/utils/headerFooterHelpers.cjs.js.map +1 -1
  468. package/dist/utils/headerFooterHelpers.esm.js.map +1 -1
  469. package/dist/utils/index.cjs.js +2 -2
  470. package/dist/utils/index.cjs.js.map +1 -1
  471. package/dist/utils/index.esm.js +1 -1
  472. package/dist/utils/index.esm.js.map +1 -1
  473. package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
  474. package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
  475. package/dist/utils/keyHelpers/accessData.esm.js +1 -1
  476. package/dist/utils/keyHelpers/accessData.esm.js.map +1 -1
  477. package/dist/utils/keyHelpers/acl.cjs.js.map +1 -1
  478. package/dist/utils/keyHelpers/acl.esm.js.map +1 -1
  479. package/dist/utils/keyHelpers/otherHelpers.cjs.js.map +1 -1
  480. package/dist/utils/keyHelpers/otherHelpers.esm.js.map +1 -1
  481. package/dist/utils/label.cjs.js.map +1 -1
  482. package/dist/utils/label.esm.js.map +1 -1
  483. package/dist/v2/components/auth/loginButton/LoginButton.cjs.js.map +1 -1
  484. package/dist/v2/components/auth/loginButton/LoginButton.esm.js.map +1 -1
  485. package/dist/v2/components/auth/loginButton/downArrow.cjs.js.map +1 -1
  486. package/dist/v2/components/auth/loginButton/index.cjs.js +1 -1
  487. package/dist/v2/components/auth/loginButton/index.esm.js +1 -0
  488. package/dist/v2/components/auth/signupButton/index.cjs.js +1 -1
  489. package/dist/v2/components/auth/signupButton/index.esm.js +1 -0
  490. package/dist/v2/components/layout/footer/index.cjs.js +1 -1
  491. package/dist/v2/components/layout/footer/index.esm.js +1 -0
  492. package/dist/v2/components/layout/header/Header.cjs.js.map +1 -1
  493. package/dist/v2/components/layout/header/Header.esm.js.map +1 -1
  494. package/dist/v2/components/layout/header/index.cjs.js +1 -1
  495. package/dist/v2/components/layout/header/index.esm.js +1 -0
  496. package/dist/v2/components/media/photoCapture/PhotoCapture.cjs.js.map +1 -1
  497. package/dist/v2/components/media/photoCapture/PhotoCapture.esm.js.map +1 -1
  498. package/dist/v2/components/media/photoCapture/index.cjs.js +1 -1
  499. package/dist/v2/components/media/photoCapture/index.esm.js +1 -0
  500. package/dist/widgets/buttons/iconLinks.cjs.js.map +1 -1
  501. package/dist/widgets/buttons/iconLinks.esm.js.map +1 -1
  502. package/dist/widgets/buttons.cjs.js.map +1 -1
  503. package/dist/widgets/buttons.esm.js.map +1 -1
  504. package/dist/widgets/dragAndDrop.cjs.js.map +1 -1
  505. package/dist/widgets/dragAndDrop.esm.js.map +1 -1
  506. package/dist/widgets/error.cjs.js.map +1 -1
  507. package/dist/widgets/error.esm.js.map +1 -1
  508. package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
  509. package/dist/widgets/forms/autocomplete/autocompleteField.esm.js.map +1 -1
  510. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
  511. package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js.map +1 -1
  512. package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
  513. package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
  514. package/dist/widgets/forms/autocomplete/language.esm.js +1 -1
  515. package/dist/widgets/forms/autocomplete/language.esm.js.map +1 -1
  516. package/dist/widgets/forms/autocomplete/publicData.cjs.js +1 -1
  517. package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
  518. package/dist/widgets/forms/autocomplete/publicData.esm.js +1 -1
  519. package/dist/widgets/forms/autocomplete/publicData.esm.js.map +1 -1
  520. package/dist/widgets/forms/basic.cjs.js.map +1 -1
  521. package/dist/widgets/forms/basic.esm.js.map +1 -1
  522. package/dist/widgets/forms/fieldFunction.cjs.js.map +1 -1
  523. package/dist/widgets/forms/fieldParams.cjs.js.map +1 -1
  524. package/dist/widgets/forms/fieldParams.esm.js.map +1 -1
  525. package/dist/widgets/forms/formStyle.cjs.js.map +1 -1
  526. package/dist/widgets/forms/formStyle.esm.js.map +1 -1
  527. package/dist/widgets/forms.cjs.js +1 -1
  528. package/dist/widgets/forms.cjs.js.map +1 -1
  529. package/dist/widgets/forms.esm.js +1 -1
  530. package/dist/widgets/forms.esm.js.map +1 -1
  531. package/dist/widgets/index.cjs.js +1 -1
  532. package/dist/widgets/index.esm.js +65 -65
  533. package/dist/widgets/multiSelect.cjs.js.map +1 -1
  534. package/dist/widgets/multiSelect.esm.js.map +1 -1
  535. package/dist/widgets/peoplePicker.cjs.js.map +1 -1
  536. package/dist/widgets/peoplePicker.esm.js.map +1 -1
  537. package/dist/widgets/widgetHelpers.cjs.js.map +1 -1
  538. package/dist/widgets/widgetHelpers.esm.js.map +1 -1
  539. package/package.json +9 -10
  540. package/dist/chunks/DialogProvider-BbWGIFN5.js +0 -211
  541. package/dist/chunks/DialogProvider-BbWGIFN5.js.map +0 -1
  542. package/dist/chunks/account-B4BktCv0.js.map +0 -1
  543. package/dist/chunks/auth-BPQUXz9Q.js.map +0 -1
  544. package/dist/chunks/avatar-B5DCduCy.js.map +0 -1
  545. package/dist/chunks/close-dialog-qpl1X44Q.js +0 -14
  546. package/dist/chunks/close-dialog-qpl1X44Q.js.map +0 -1
  547. package/dist/chunks/combobox-eju-wypA.js.map +0 -1
  548. package/dist/chunks/components-Dlw2zOvI.js.map +0 -1
  549. package/dist/chunks/consume-BefsVEGX.js +0 -49
  550. package/dist/chunks/consume-BefsVEGX.js.map +0 -1
  551. package/dist/chunks/context-ChcZyr30.js +0 -7
  552. package/dist/chunks/context-ChcZyr30.js.map +0 -1
  553. package/dist/chunks/context-ImtIQIYP.js +0 -7
  554. package/dist/chunks/context-ImtIQIYP.js.map +0 -1
  555. package/dist/chunks/create-context-IPEkU7ze.js.map +0 -1
  556. package/dist/chunks/decorators-CJJL4XBH.js.map +0 -1
  557. package/dist/chunks/dialog-DmDA1aY8.js.map +0 -1
  558. package/dist/chunks/dialogs-root-C4igEIk0.js.map +0 -1
  559. package/dist/chunks/lit-CC2G_f_C.js.map +0 -1
  560. package/dist/chunks/login-button-BKp1-O2q.js.map +0 -1
  561. package/dist/chunks/logout-button-DlU-q-o5.js.map +0 -1
  562. package/dist/chunks/menu-DCsLCND4.js.map +0 -1
  563. package/dist/chunks/menu-item-DoTy3MUu.js.map +0 -1
  564. package/dist/chunks/menu-items-DKKcQrb6.js.map +0 -1
  565. package/dist/chunks/provide-CqCWUUfi.js +0 -113
  566. package/dist/chunks/provide-CqCWUUfi.js.map +0 -1
  567. package/dist/chunks/select-bVnWqF4c.js +0 -560
  568. package/dist/chunks/select-bVnWqF4c.js.map +0 -1
  569. package/dist/chunks/signup-button-BC4LmOXx.js.map +0 -1
  570. package/dist/chunks/solid-logic.esm-7q6hmfIF.js.map +0 -1
  571. package/dist/components/menu-items/MenuItems.cjs.js +0 -6
  572. package/dist/components/menu-items/MenuItems.cjs.js.map +0 -1
  573. package/dist/components/menu-items/MenuItems.d.ts +0 -8
  574. package/dist/components/menu-items/MenuItems.d.ts.map +0 -1
  575. package/dist/components/menu-items/MenuItems.esm.js.map +0 -1
  576. package/dist/components/menu-items/MenuItems.styles.cjs.js +0 -2
  577. package/dist/components/menu-items/MenuItems.styles.cjs.js.map +0 -1
  578. package/dist/components/menu-items/MenuItems.styles.esm.js +0 -7
  579. package/dist/components/menu-items/MenuItems.styles.esm.js.map +0 -1
  580. package/dist/components/menu-items/index.cjs.js +0 -2
  581. package/dist/components/menu-items/index.cjs.js.map +0 -1
  582. package/dist/components/menu-items/index.d.ts +0 -4
  583. package/dist/components/menu-items/index.d.ts.map +0 -1
  584. package/dist/components/menu-items/index.esm.js +0 -7
  585. package/dist/components/menu-items/index.esm.js.map +0 -1
  586. package/dist/components/menu-items.js +0 -2
  587. package/dist/lib/menus/context.cjs.js +0 -2
  588. package/dist/lib/menus/context.cjs.js.map +0 -1
  589. package/dist/lib/menus/context.d.ts +0 -7
  590. package/dist/lib/menus/context.d.ts.map +0 -1
  591. package/dist/lib/menus/context.esm.js +0 -7
  592. package/dist/lib/menus/context.esm.js.map +0 -1
  593. package/dist/lib/menus/index.cjs.js +0 -1
  594. package/dist/lib/menus/index.d.ts +0 -2
  595. package/dist/lib/menus/index.d.ts.map +0 -1
  596. package/dist/lib/menus/index.esm.js +0 -1
  597. package/dist/solid-ui.js.map +0 -1
  598. package/dist/v2/components/forms/select/Select.cjs.js +0 -225
  599. package/dist/v2/components/forms/select/Select.cjs.js.map +0 -1
  600. package/dist/v2/components/forms/select/Select.esm.js +0 -394
  601. package/dist/v2/components/forms/select/Select.esm.js.map +0 -1
  602. package/dist/v2/components/forms/select/index.cjs.js +0 -2
  603. package/dist/v2/components/forms/select/index.cjs.js.map +0 -1
  604. package/dist/v2/components/forms/select/index.esm.js +0 -7
  605. package/dist/v2/components/forms/select/index.esm.js.map +0 -1
  606. package/dist/v2/components/forms/shared/downArrow.cjs.js +0 -9
  607. package/dist/v2/components/forms/shared/downArrow.cjs.js.map +0 -1
  608. package/dist/v2/components/forms/shared/downArrow.esm.js +0 -14
  609. package/dist/v2/components/forms/shared/downArrow.esm.js.map +0 -1
  610. package/dist/v2/components/forms/shared/keyboard.cjs.js +0 -2
  611. package/dist/v2/components/forms/shared/keyboard.cjs.js.map +0 -1
  612. package/dist/v2/components/forms/shared/keyboard.esm.js +0 -34
  613. package/dist/v2/components/forms/shared/keyboard.esm.js.map +0 -1
  614. package/dist/v2/components/forms/shared/listboxStyles.cjs.js +0 -95
  615. package/dist/v2/components/forms/shared/listboxStyles.cjs.js.map +0 -1
  616. package/dist/v2/components/forms/shared/listboxStyles.esm.js +0 -100
  617. package/dist/v2/components/forms/shared/listboxStyles.esm.js.map +0 -1
  618. package/dist/v2/components/forms/shared/listboxTemplate.cjs.js +0 -24
  619. package/dist/v2/components/forms/shared/listboxTemplate.cjs.js.map +0 -1
  620. package/dist/v2/components/forms/shared/listboxTemplate.esm.js +0 -37
  621. package/dist/v2/components/forms/shared/listboxTemplate.esm.js.map +0 -1
@@ -1,100 +1,100 @@
1
- import { __exportAll as e } from "../_virtual/_rolldown/runtime.esm.js";
2
- import { makeDraggable as t, makeDropTarget as n, uploadFiles as r } from "./dragAndDrop.esm.js";
3
- import { errorMessageBlock as i } from "./error.esm.js";
4
- import { Group as a, GroupBuilder as o, GroupPicker as s, PeoplePicker as c, Person as l } from "./peoplePicker.esm.js";
5
- import { createLinkForURI as u, linkIcon as d } from "./buttons/iconLinks.esm.js";
6
- import { addStyleSheet as f, allClassURIs as p, askName as m, attachmentList as h, button as g, cancelButton as _, clearElement as v, complain as y, continueButton as b, createLinkDiv as x, createNameDiv as S, defaultAnnotationStore as C, deleteButtonWithCheck as w, extractLogURI as T, faviconOrDefault as E, fileUploadButtonDiv as D, findImage as O, findImageFromURI as k, formatDateTime as A, iconForClass as j, imagesOf as M, index as N, isAudio as P, isImage as F, isVideo as I, linkButton as L, openHrefInOutlineMode as R, personTR as z, propertyTriage as B, refreshTree as V, removeButton as H, renderAsDiv as U, renderAsRow as W, selectorPanel as G, selectorPanelRefresh as K, setImage as q, setName as J, shortDate as Y, shortTime as X, timestamp as Z } from "./buttons.esm.js";
7
- import { fieldParams as Q } from "./forms/fieldParams.esm.js";
8
- import { field as $, fieldFunction as ee, mostSpecificClassURI as te } from "./forms/fieldFunction.esm.js";
1
+ import { __exportAll as ee } from "../_virtual/_rolldown/runtime.esm.js";
2
+ import { makeDraggable as e, makeDropTarget as t, uploadFiles as n } from "./dragAndDrop.esm.js";
3
+ import { errorMessageBlock as r } from "./error.esm.js";
4
+ import { Group as i, GroupBuilder as a, GroupPicker as o, PeoplePicker as s, Person as c } from "./peoplePicker.esm.js";
5
+ import { createLinkForURI as l, linkIcon as u } from "./buttons/iconLinks.esm.js";
6
+ import { addStyleSheet as d, allClassURIs as f, askName as p, attachmentList as m, button as h, cancelButton as g, clearElement as _, complain as v, continueButton as y, createLinkDiv as b, createNameDiv as x, defaultAnnotationStore as S, deleteButtonWithCheck as C, extractLogURI as w, faviconOrDefault as T, fileUploadButtonDiv as E, findImage as D, findImageFromURI as O, formatDateTime as k, iconForClass as A, imagesOf as j, index as M, isAudio as N, isImage as P, isVideo as F, linkButton as I, openHrefInOutlineMode as L, personTR as R, propertyTriage as z, refreshTree as B, removeButton as V, renderAsDiv as H, renderAsRow as U, selectorPanel as te, selectorPanelRefresh as W, setImage as G, setName as K, shortDate as q, shortTime as J, timestamp as Y } from "./buttons.esm.js";
7
+ import { fieldParams as X } from "./forms/fieldParams.esm.js";
8
+ import { field as Z, fieldFunction as Q, mostSpecificClassURI as $ } from "./forms/fieldFunction.esm.js";
9
9
  import { basicField as ne, fieldLabel as re, fieldStore as ie, renderNameValuePair as ae } from "./forms/basic.esm.js";
10
10
  import { publicData_exports as oe } from "./forms/autocomplete/publicData.esm.js";
11
11
  import { renderAutoComplete as se, setVisible as ce } from "./forms/autocomplete/autocompletePicker.esm.js";
12
12
  import { renderAutocompleteControl as le } from "./forms/autocomplete/autocompleteBar.esm.js";
13
13
  import { appendForm as ue, buildCheckboxForm as de, editFormButton as fe, findClosest as pe, formsFor as me, makeDescription as he, makeSelectForCategory as ge, makeSelectForChoice as _e, makeSelectForClassifierOptions as ve, makeSelectForNestedCategory as ye, makeSelectForOptions as be, newButton as xe, newThing as Se, promptForNew as Ce, propertiesForClass as we, sortByLabel as Te, sortBySequence as Ee } from "./forms.esm.js";
14
14
  //#region src/widgets/index.js
15
- var De = /* @__PURE__ */ e({
16
- Group: () => a,
17
- GroupBuilder: () => o,
18
- GroupPicker: () => s,
19
- PeoplePicker: () => c,
20
- Person: () => l,
21
- addStyleSheet: () => f,
22
- allClassURIs: () => p,
15
+ var De = /* @__PURE__ */ ee({
16
+ Group: () => i,
17
+ GroupBuilder: () => a,
18
+ GroupPicker: () => o,
19
+ PeoplePicker: () => s,
20
+ Person: () => c,
21
+ addStyleSheet: () => d,
22
+ allClassURIs: () => f,
23
23
  appendForm: () => ue,
24
- askName: () => m,
25
- attachmentList: () => h,
24
+ askName: () => p,
25
+ attachmentList: () => m,
26
26
  basicField: () => ne,
27
27
  buildCheckboxForm: () => de,
28
- button: () => g,
29
- cancelButton: () => _,
30
- clearElement: () => v,
31
- complain: () => y,
32
- continueButton: () => b,
33
- createLinkDiv: () => x,
34
- createLinkForURI: () => u,
35
- createNameDiv: () => S,
36
- defaultAnnotationStore: () => C,
37
- deleteButtonWithCheck: () => w,
28
+ button: () => h,
29
+ cancelButton: () => g,
30
+ clearElement: () => _,
31
+ complain: () => v,
32
+ continueButton: () => y,
33
+ createLinkDiv: () => b,
34
+ createLinkForURI: () => l,
35
+ createNameDiv: () => x,
36
+ defaultAnnotationStore: () => S,
37
+ deleteButtonWithCheck: () => C,
38
38
  editFormButton: () => fe,
39
- errorMessageBlock: () => i,
40
- extractLogURI: () => T,
41
- faviconOrDefault: () => E,
42
- field: () => $,
43
- fieldFunction: () => ee,
39
+ errorMessageBlock: () => r,
40
+ extractLogURI: () => w,
41
+ faviconOrDefault: () => T,
42
+ field: () => Z,
43
+ fieldFunction: () => Q,
44
44
  fieldLabel: () => re,
45
- fieldParams: () => Q,
45
+ fieldParams: () => X,
46
46
  fieldStore: () => ie,
47
- fileUploadButtonDiv: () => D,
47
+ fileUploadButtonDiv: () => E,
48
48
  findClosest: () => pe,
49
- findImage: () => O,
50
- findImageFromURI: () => k,
51
- formatDateTime: () => A,
49
+ findImage: () => D,
50
+ findImageFromURI: () => O,
51
+ formatDateTime: () => k,
52
52
  formsFor: () => me,
53
- iconForClass: () => j,
54
- imagesOf: () => M,
55
- index: () => N,
56
- isAudio: () => P,
57
- isImage: () => F,
58
- isVideo: () => I,
59
- linkButton: () => L,
60
- linkIcon: () => d,
53
+ iconForClass: () => A,
54
+ imagesOf: () => j,
55
+ index: () => M,
56
+ isAudio: () => N,
57
+ isImage: () => P,
58
+ isVideo: () => F,
59
+ linkButton: () => I,
60
+ linkIcon: () => u,
61
61
  makeDescription: () => he,
62
- makeDraggable: () => t,
63
- makeDropTarget: () => n,
62
+ makeDraggable: () => e,
63
+ makeDropTarget: () => t,
64
64
  makeSelectForCategory: () => ge,
65
65
  makeSelectForChoice: () => _e,
66
66
  makeSelectForClassifierOptions: () => ve,
67
67
  makeSelectForNestedCategory: () => ye,
68
68
  makeSelectForOptions: () => be,
69
- mostSpecificClassURI: () => te,
69
+ mostSpecificClassURI: () => $,
70
70
  newButton: () => xe,
71
71
  newThing: () => Se,
72
- openHrefInOutlineMode: () => R,
73
- personTR: () => z,
72
+ openHrefInOutlineMode: () => L,
73
+ personTR: () => R,
74
74
  promptForNew: () => Ce,
75
75
  propertiesForClass: () => we,
76
- propertyTriage: () => B,
76
+ propertyTriage: () => z,
77
77
  publicData: () => oe,
78
- refreshTree: () => V,
79
- removeButton: () => H,
80
- renderAsDiv: () => U,
81
- renderAsRow: () => W,
78
+ refreshTree: () => B,
79
+ removeButton: () => V,
80
+ renderAsDiv: () => H,
81
+ renderAsRow: () => U,
82
82
  renderAutoComplete: () => se,
83
83
  renderAutocompleteControl: () => le,
84
84
  renderNameValuePair: () => ae,
85
- selectorPanel: () => G,
86
- selectorPanelRefresh: () => K,
87
- setImage: () => q,
88
- setName: () => J,
85
+ selectorPanel: () => te,
86
+ selectorPanelRefresh: () => W,
87
+ setImage: () => G,
88
+ setName: () => K,
89
89
  setVisible: () => ce,
90
- shortDate: () => Y,
91
- shortTime: () => X,
90
+ shortDate: () => q,
91
+ shortTime: () => J,
92
92
  sortByLabel: () => Te,
93
93
  sortBySequence: () => Ee,
94
- timestamp: () => Z,
95
- uploadFiles: () => r
94
+ timestamp: () => Y,
95
+ uploadFiles: () => n
96
96
  });
97
97
  //#endregion
98
- export { De as widgets_exports };
98
+ export { i as Group, a as GroupBuilder, o as GroupPicker, s as PeoplePicker, c as Person, d as addStyleSheet, f as allClassURIs, ue as appendForm, p as askName, m as attachmentList, ne as basicField, de as buildCheckboxForm, h as button, g as cancelButton, _ as clearElement, v as complain, y as continueButton, b as createLinkDiv, l as createLinkForURI, x as createNameDiv, S as defaultAnnotationStore, C as deleteButtonWithCheck, fe as editFormButton, r as errorMessageBlock, w as extractLogURI, T as faviconOrDefault, Z as field, Q as fieldFunction, re as fieldLabel, X as fieldParams, ie as fieldStore, E as fileUploadButtonDiv, pe as findClosest, D as findImage, O as findImageFromURI, k as formatDateTime, me as formsFor, A as iconForClass, j as imagesOf, M as index, N as isAudio, P as isImage, F as isVideo, I as linkButton, u as linkIcon, he as makeDescription, e as makeDraggable, t as makeDropTarget, ge as makeSelectForCategory, _e as makeSelectForChoice, ve as makeSelectForClassifierOptions, ye as makeSelectForNestedCategory, be as makeSelectForOptions, $ as mostSpecificClassURI, xe as newButton, Se as newThing, L as openHrefInOutlineMode, R as personTR, Ce as promptForNew, we as propertiesForClass, z as propertyTriage, oe as publicData, B as refreshTree, V as removeButton, H as renderAsDiv, U as renderAsRow, se as renderAutoComplete, le as renderAutocompleteControl, ae as renderNameValuePair, te as selectorPanel, W as selectorPanelRefresh, G as setImage, K as setName, ce as setVisible, q as shortDate, J as shortTime, Te as sortByLabel, Ee as sortBySequence, Y as timestamp, n as uploadFiles, De as widgets_exports };
99
99
 
100
100
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiSelect.cjs.js","names":["style"],"sources":["../../src/widgets/multiSelect.js"],"sourcesContent":["/*\n * IconicMultiSelect v0.7.0\n * Licence: MIT\n * (c) 2021 Sidney Wimart.\n * repo & configuration: https://github.com/sidneywm/iconic-multiselect\n */\n\n/**\n * @version IconicMultiSelect v0.7.0\n * @licence MIT\n */\nimport { style } from '../lib/style_multiSelect'\n\nexport class IconicMultiSelect {\n _data\n _domElements\n _event = () => {}\n _itemTemplate\n _multiselect\n _noData\n _noResults\n _options = []\n _placeholder\n _select\n _selectContainer\n _selectedOptions = []\n _tagTemplate\n _textField\n _valueField\n _cross = `\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.2253 4.81108C5.83477 4.42056 5.20161 4.42056 4.81108 4.81108C4.42056 5.20161 4.42056 5.83477 4.81108 6.2253L10.5858 12L4.81114 17.7747C4.42062 18.1652 4.42062 18.7984 4.81114 19.1889C5.20167 19.5794 5.83483 19.5794 6.22535 19.1889L12 13.4142L17.7747 19.1889C18.1652 19.5794 18.7984 19.5794 19.1889 19.1889C19.5794 18.7984 19.5794 18.1652 19.1889 17.7747L13.4142 12L19.189 6.2253C19.5795 5.83477 19.5795 5.20161 19.189 4.81108C18.7985 4.42056 18.1653 4.42056 17.7748 4.81108L12 10.5858L6.2253 4.81108Z\"\n fill=\"currentColor\"\n />\n </svg>\n `\n\n /**\n * Iconic Multiselect constructor.\n * @param { Object[] } data - Array of objects.\n * @param { string } noData - Defines the message when there is no data input.\n * @param { string } noResults - Defines the message when there is no result if options are filtered.\n * @param { string } placeholder - Defines the placeholder's text.\n * @param { string } select - DOM element to be selected. It must be a HTML Select tag - https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select\n * @param { string } textField - Field to select in the object for the text.\n * @param { string } valueField - Field to select in the object for the value.\n */\n constructor ({ data, itemTemplate, noData, noResults, placeholder, select, container, tagTemplate, textField, valueField }) {\n this._data = data ?? []\n this._itemTemplate = itemTemplate ?? null\n this._noData = noData ?? 'No data found.'\n this._noResults = noResults ?? 'No results found.'\n this._placeholder = placeholder ?? 'Select...'\n this._select = select\n // Timea added a container here\n this._selectContainer = container\n this._tagTemplate = tagTemplate ?? null\n this._textField = textField ?? null\n this._valueField = valueField ?? null\n }\n\n /**\n * Initialize the Iconic Multiselect component.\n * @public\n */\n init () {\n // Timea change to use this._select instead of this._selectContainer\n if (this._select && this._select.nodeName === 'SELECT') {\n if (this._itemTemplate && this._data.length === 0) { throw new Error('itemTemplate must be initialized with data from the component settings') }\n if (this._tagTemplate && this._data.length === 0) { throw new Error('tagTemplate must be initialized with data from the component settings') }\n\n this._options = this._data.length > 0 ? this._getDataFromSettings() : this._getDataFromSelectTag()\n\n this._renderMultiselect()\n this._renderOptionsList()\n\n this._domElements = {\n clear: this._multiselect.querySelector('.multiselect__clear-btn'),\n input: this._multiselect.querySelector('.multiselect__input'),\n optionsContainer: this._multiselect.querySelector('.multiselect__options'),\n optionsContainerList: this._multiselect.querySelector('.multiselect__options > ul'),\n options: {\n list: this._multiselect.querySelectorAll('.multiselect__options > ul > li'),\n find: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node)) return node\n }\n return undefined\n },\n some: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node, i)) return true\n }\n return false\n }\n }\n }\n\n this._enableEventListenners()\n this._initSelectedList()\n } else {\n throw new Error(`The selector '${this._select}' did not select any valid select tag.`)\n }\n }\n\n /**\n * Subscribes to the emitted events.\n * @param { Function } callback - Callback function which emits a custom event object.\n * @public\n */\n subscribe (callback) {\n if (typeof callback === 'function') {\n this._event = callback\n } else {\n throw new Error('parameter in the subscribe method is not a function')\n }\n }\n\n /**\n * Add an option to the selection list.\n * @param { Object: { text: string; value: string; }} option\n * @private\n */\n _addOptionToList (option, index) {\n const html = `<span class=\"multiselect__selected\" style=\"${style.multiselect__selected}\" data-value=\"${option.value}\">${\n this._tagTemplate ? this._processTemplate(this._tagTemplate, index) : option.text\n }<span class=\"multiselect__remove-btn\" style=\"${style.multiselect__remove_btn}\">${this._cross}</span></span>`\n\n this._domElements.input.insertAdjacentHTML('beforebegin', html)\n\n const { lastElementChild: removeBtn } = this._multiselect.querySelector(`span[data-value=\"${option.value}\"]`)\n removeBtn.addEventListener('click', () => {\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n this._handleOption(target)\n })\n }\n\n /**\n * Clears all selected options.\n * @private\n */\n _clearSelection () {\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const option = this._selectedOptions[i]\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._removeOptionFromList(target.dataset.value)\n }\n this._selectedOptions = []\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n this._dispatchEvent({\n action: 'CLEAR_ALL_OPTIONS',\n selection: this._selectedOptions\n })\n }\n\n /**\n * Close the options container.\n * @private\n */\n _closeList () {\n this._domElements.input.value = ''\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n this._filterOptions('')\n this._removeAllArrowSelected()\n }\n\n /**\n * Dispatches new events.\n * @param { object : { action: string; selection: { option: string; text: string; }[]; value?: string; } } event\n * @private\n */\n _dispatchEvent (event) {\n this._event(event)\n }\n\n /**\n * Enables all main event listenners.\n * @private\n */\n _enableEventListenners () {\n document.addEventListener('mouseup', ({ target }) => {\n if (!this._multiselect.contains(target)) {\n this._filterOptions('')\n this._closeList()\n this._handlePlaceholder()\n }\n })\n\n this._domElements.clear.addEventListener('click', () => {\n this._clearSelection()\n })\n\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const option = this._domElements.options.list[i]\n option.addEventListener('click', ({ target }) => {\n this._handleOption(target)\n this._closeList()\n })\n }\n\n this._domElements.input.addEventListener('focus', () => {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n })\n\n this._domElements.input.addEventListener('input', ({ target: { value } }) => {\n if (this._domElements.options.list.length > 0) {\n this._filterOptions(value)\n }\n })\n\n this._domElements.input.addEventListener('keydown', (e) => {\n this._handleArrows(e)\n this._handleBackspace(e)\n this._handleEnter(e)\n })\n }\n\n /**\n * Filters user input.\n * @param { string } value\n * @private\n */\n _filterOptions (value) {\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n const valueLowerCase = value.toLowerCase()\n\n if (!isOpen && value.length > 0) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n }\n\n if (this._domElements.options.list.length > 0) {\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const el = this._domElements.options.list[i]\n const text = this._itemTemplate ? this._data[i][this._textField] : el.textContent\n\n if (text.toLowerCase().substring(0, valueLowerCase.length) === valueLowerCase) {\n this._domElements.optionsContainerList.appendChild(el)\n } else {\n el.parentNode && el.parentNode.removeChild(el)\n }\n }\n\n const hasResults = this._domElements.options.some(\n (el, index) =>\n (this._itemTemplate ? this._data[index][this._textField] : el.textContent)\n .toLowerCase()\n .substring(0, valueLowerCase.length) === valueLowerCase\n )\n this._showNoResults(!hasResults)\n }\n }\n\n _generateId (length) {\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n const charactersLength = characters.length\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength))\n }\n return result\n }\n\n /**\n * Gets data from select tag.\n * @private\n */\n _getDataFromSelectTag () {\n const arr = []\n const { options } = this._select\n for (let i = 0; i < options.length; i++) {\n const item = options[i]\n arr.push({\n text: item.text,\n value: item.value,\n selected: item.hasAttribute('selected')\n })\n }\n return arr\n }\n\n /**\n * Gets data from settings.\n * @private\n */\n _getDataFromSettings () {\n if (this._data.length > 0 && this._valueField && this._textField) {\n const isValueFieldValid = typeof this._valueField === 'string'\n const isTextFieldValid = typeof this._textField === 'string'\n const arr = []\n\n if (!isValueFieldValid || !isTextFieldValid) {\n throw new Error('textField and valueField must be of type string')\n }\n\n for (let i = 0; i < this._data.length; i++) {\n const item = this._data[i]\n arr.push({\n value: item[this._valueField],\n text: item[this._textField],\n selected: typeof item.selected === 'boolean' ? item.selected : false\n })\n }\n return arr\n } else {\n return null\n }\n }\n\n /**\n * Handles Arrow up & Down. Selection of an option is also possible with these keys.\n * @param { Event } event\n * @private\n */\n _handleArrows (event) {\n if (event.keyCode === 40 || event.keyCode === 38) {\n event.preventDefault()\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n // An updated view of the container is needed because of the filtering option\n const optionsContainerList = this._multiselect.querySelector('.multiselect__options > ul')\n\n if (!isOpen) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n } else {\n let selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n const action = {\n ArrowUp: 'previous',\n Up: 'previous',\n ArrowDown: 'next',\n Down: 'next'\n }\n\n if (!selected) {\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n return\n }\n\n selected.classList.remove('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li)\n\n selected = selected[action[event.key] + 'ElementSibling']\n\n // Go to start or end of the popup list\n if (!selected) {\n selected =\n optionsContainerList.children[action[event.key] === 'next' ? 0 : optionsContainerList.children.length - 1]\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n return\n }\n\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n }\n }\n }\n\n /**\n * Handles the backspace key event - Deletes the preceding option in the selection list.\n * @param { Event } e\n * @private\n */\n _handleBackspace (e) {\n if (e.keyCode === 8 && e.target.value === '') {\n const lastSelectedOption =\n this._selectedOptions.length > 0 ? this._selectedOptions[this._selectedOptions.length - 1] : null\n\n if (lastSelectedOption) {\n const targetLastSelectedOption = this._multiselect.querySelector(\n `li[data-value=\"${lastSelectedOption.value}\"]`\n )\n this._handleOption(targetLastSelectedOption)\n\n if (this._selectedOptions.length === 0) {\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n }\n }\n }\n }\n\n /**\n * Shows clear selection button if some options are selected.\n * @private\n */\n _handleClearSelectionBtn () {\n if (this._selectedOptions.length > 0) {\n this._domElements.clear.style.display = 'flex'\n } else {\n this._domElements.clear.style.display = 'none'\n }\n }\n\n /**\n * Handles the enter key event.\n * @param { Event } event\n * @private\n */\n _handleEnter (event) {\n if (event.keyCode === 13) {\n const selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n if (selected) {\n this._handleOption(selected)\n this._closeList()\n }\n }\n }\n\n _handleOption (target, dispatchEvent = true) {\n // Remove\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const el = this._selectedOptions[i]\n if (el.value === target.dataset.value) {\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._selectedOptions.splice(i, 1)\n this._removeOptionFromList(target.dataset.value)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'REMOVE_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n\n // Add\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.value === target.dataset.value) {\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'ADD_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n }\n\n /**\n * Shows the placeholder if no options are selected.\n * @private\n */\n _handlePlaceholder () {\n this._domElements.input.placeholder = this._placeholder\n }\n\n _initSelectedList () {\n let hasItemsSelected = false\n\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.selected) {\n hasItemsSelected = true\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n }\n }\n\n if (hasItemsSelected) { this._handleClearSelectionBtn() }\n this._handlePlaceholder()\n }\n\n /**\n * Process the custom template.\n * @param { string } template\n * @private\n */\n _processTemplate (template, index) {\n let processedTemplate = template\n const objAttr = template.match(/\\$\\{(\\w+)\\}/g).map((e) => e.replace(/\\$\\{|\\}/g, ''))\n\n for (let i = 0; i < objAttr.length; i++) {\n const attr = objAttr[i]\n // eslint-disable-next-line no-useless-escape\n processedTemplate = processedTemplate.replace(`\\$\\{${attr}\\}`, this._data[index][attr] ?? '')\n }\n\n return processedTemplate\n }\n\n _removeAllArrowSelected () {\n const className = 'arrow-selected'\n const target = this._domElements.options.find((el) => el.classList.contains(className))\n target && target.classList.remove(className) && target.setAttribute('style', style.multiselect__options_ul_li)\n }\n\n /**\n * Removes an option from the list.\n * @param { string } value\n * @private\n */\n _removeOptionFromList (value) {\n const optionDom = this._multiselect.querySelector(`span[data-value=\"${value}\"]`)\n optionDom && optionDom.parentNode && optionDom.parentNode.removeChild(optionDom)\n }\n\n /**\n * Renders the multiselect options list view.\n * @private\n */\n _renderOptionsList () {\n const html = `\n <div class=\"multiselect__options\" style=\"${style.multiselect__options}\">\n <ul style=\"${style.multiselect__options_ul}\">\n ${\n this._options.length > 0 && !this._itemTemplate\n ? this._options\n .map((option) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${option.text}</li>\n `\n })\n .join('')\n : ''\n }\n\n ${\n this._options.length > 0 && this._itemTemplate\n ? this._options\n .map((option, index) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${this._processTemplate(this._itemTemplate, index)}</li>\n `\n })\n .join('')\n : ''\n }\n ${this._showNoData(this._options.length === 0)}\n </ul>\n </div>\n `\n\n this._multiselect.insertAdjacentHTML('beforeend', html)\n }\n\n /**\n * Renders the multiselect view.\n * @private\n */\n _renderMultiselect () {\n this._select.style.display = 'none'\n const id = 'iconic-' + this._generateId(20)\n // Timea created dedicated div element because previous code was not rendering\n this._multiselect = document.createElement('div')\n this._multiselect.setAttribute('id', id)\n this._multiselect.setAttribute('class', 'multiselect__container')\n this._multiselect.setAttribute('style', style.multiselect__container)\n const html = `\n <div class=\"multiselect__wrapper\" style=\"${style.multiselect__wrapper}\">\n <input class=\"multiselect__input\" style=\"${style.multiselect__input}\" placeholder=\"${this._placeholder}\" />\n </div>\n <span style=\"display: none;\" class=\"multiselect__clear-btn\" style=\"${style.multiselect__clear_btn}\">${this._cross}</span>\n `\n this._multiselect.innerHTML = html\n this._selectContainer.appendChild(this._multiselect)\n }\n\n /**\n * ScrollIntoView - This small utility reproduces the behavior of .scrollIntoView({ block: \"nearest\", inline: \"nearest\" })\n * This is for IE compatibility without a need of a polyfill\n * @private\n */\n _scrollIntoView (parent, child) {\n const rectParent = parent.getBoundingClientRect()\n const rectChild = child.getBoundingClientRect()\n\n // Detect if not visible at top and then scroll to the top\n if (!(rectParent.top < rectChild.bottom - child.offsetHeight)) {\n parent.scrollTop = child.clientHeight + (child.offsetTop - child.offsetHeight)\n }\n\n // Detect if not visible at bottom and then scroll to the bottom\n if (!(rectParent.bottom > rectChild.top + child.offsetHeight)) {\n parent.scrollTop =\n child.clientHeight +\n (child.offsetTop - child.offsetHeight) -\n (parent.offsetHeight - (child.offsetHeight + (child.offsetHeight - child.clientHeight)))\n }\n }\n\n /**\n * Shows a no data message.\n * @param { boolean } condition\n * @private\n */\n _showNoData (condition) {\n return condition ? `<p class=\"multiselect__options--no-data\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_data}\">${this._noData}</p>` : ''\n }\n\n /**\n * Shows a no results message.\n * @param { boolean } condition\n * @private\n */\n _showNoResults (condition) {\n const dom = this._multiselect.querySelector('.multiselect__options--no-results')\n if (condition) {\n const html = `<p class=\"multiselect__options--no-results\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_results}\">${this._noResults}</p>`\n !dom && this._domElements.optionsContainerList.insertAdjacentHTML('beforeend', html)\n } else {\n dom && dom.parentNode && dom.parentNode.removeChild(dom)\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"multiSelect.cjs.js","names":["style"],"sources":["../../src/widgets/multiSelect.js"],"sourcesContent":["/*\n * IconicMultiSelect v0.7.0\n * Licence: MIT\n * (c) 2021 Sidney Wimart.\n * repo & configuration: https://github.com/sidneywm/iconic-multiselect\n */\n\n/**\n * @version IconicMultiSelect v0.7.0\n * @licence MIT\n */\nimport { style } from '../lib/style_multiSelect'\n\nexport class IconicMultiSelect {\n _data\n _domElements\n _event = () => {}\n _itemTemplate\n _multiselect\n _noData\n _noResults\n _options = []\n _placeholder\n _select\n _selectContainer\n _selectedOptions = []\n _tagTemplate\n _textField\n _valueField\n _cross = `\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.2253 4.81108C5.83477 4.42056 5.20161 4.42056 4.81108 4.81108C4.42056 5.20161 4.42056 5.83477 4.81108 6.2253L10.5858 12L4.81114 17.7747C4.42062 18.1652 4.42062 18.7984 4.81114 19.1889C5.20167 19.5794 5.83483 19.5794 6.22535 19.1889L12 13.4142L17.7747 19.1889C18.1652 19.5794 18.7984 19.5794 19.1889 19.1889C19.5794 18.7984 19.5794 18.1652 19.1889 17.7747L13.4142 12L19.189 6.2253C19.5795 5.83477 19.5795 5.20161 19.189 4.81108C18.7985 4.42056 18.1653 4.42056 17.7748 4.81108L12 10.5858L6.2253 4.81108Z\"\n fill=\"currentColor\"\n />\n </svg>\n `\n\n /**\n * Iconic Multiselect constructor.\n * @param { Object[] } data - Array of objects.\n * @param { string } noData - Defines the message when there is no data input.\n * @param { string } noResults - Defines the message when there is no result if options are filtered.\n * @param { string } placeholder - Defines the placeholder's text.\n * @param { string } select - DOM element to be selected. It must be a HTML Select tag - https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select\n * @param { string } textField - Field to select in the object for the text.\n * @param { string } valueField - Field to select in the object for the value.\n */\n constructor ({ data, itemTemplate, noData, noResults, placeholder, select, container, tagTemplate, textField, valueField }) {\n this._data = data ?? []\n this._itemTemplate = itemTemplate ?? null\n this._noData = noData ?? 'No data found.'\n this._noResults = noResults ?? 'No results found.'\n this._placeholder = placeholder ?? 'Select...'\n this._select = select\n // Timea added a container here\n this._selectContainer = container\n this._tagTemplate = tagTemplate ?? null\n this._textField = textField ?? null\n this._valueField = valueField ?? null\n }\n\n /**\n * Initialize the Iconic Multiselect component.\n * @public\n */\n init () {\n // Timea change to use this._select instead of this._selectContainer\n if (this._select && this._select.nodeName === 'SELECT') {\n if (this._itemTemplate && this._data.length === 0) { throw new Error('itemTemplate must be initialized with data from the component settings') }\n if (this._tagTemplate && this._data.length === 0) { throw new Error('tagTemplate must be initialized with data from the component settings') }\n\n this._options = this._data.length > 0 ? this._getDataFromSettings() : this._getDataFromSelectTag()\n\n this._renderMultiselect()\n this._renderOptionsList()\n\n this._domElements = {\n clear: this._multiselect.querySelector('.multiselect__clear-btn'),\n input: this._multiselect.querySelector('.multiselect__input'),\n optionsContainer: this._multiselect.querySelector('.multiselect__options'),\n optionsContainerList: this._multiselect.querySelector('.multiselect__options > ul'),\n options: {\n list: this._multiselect.querySelectorAll('.multiselect__options > ul > li'),\n find: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node)) return node\n }\n return undefined\n },\n some: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node, i)) return true\n }\n return false\n }\n }\n }\n\n this._enableEventListenners()\n this._initSelectedList()\n } else {\n throw new Error(`The selector '${this._select}' did not select any valid select tag.`)\n }\n }\n\n /**\n * Subscribes to the emitted events.\n * @param { Function } callback - Callback function which emits a custom event object.\n * @public\n */\n subscribe (callback) {\n if (typeof callback === 'function') {\n this._event = callback\n } else {\n throw new Error('parameter in the subscribe method is not a function')\n }\n }\n\n /**\n * Add an option to the selection list.\n * @param { Object: { text: string; value: string; }} option\n * @private\n */\n _addOptionToList (option, index) {\n const html = `<span class=\"multiselect__selected\" style=\"${style.multiselect__selected}\" data-value=\"${option.value}\">${\n this._tagTemplate ? this._processTemplate(this._tagTemplate, index) : option.text\n }<span class=\"multiselect__remove-btn\" style=\"${style.multiselect__remove_btn}\">${this._cross}</span></span>`\n\n this._domElements.input.insertAdjacentHTML('beforebegin', html)\n\n const { lastElementChild: removeBtn } = this._multiselect.querySelector(`span[data-value=\"${option.value}\"]`)\n removeBtn.addEventListener('click', () => {\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n this._handleOption(target)\n })\n }\n\n /**\n * Clears all selected options.\n * @private\n */\n _clearSelection () {\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const option = this._selectedOptions[i]\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._removeOptionFromList(target.dataset.value)\n }\n this._selectedOptions = []\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n this._dispatchEvent({\n action: 'CLEAR_ALL_OPTIONS',\n selection: this._selectedOptions\n })\n }\n\n /**\n * Close the options container.\n * @private\n */\n _closeList () {\n this._domElements.input.value = ''\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n this._filterOptions('')\n this._removeAllArrowSelected()\n }\n\n /**\n * Dispatches new events.\n * @param { object : { action: string; selection: { option: string; text: string; }[]; value?: string; } } event\n * @private\n */\n _dispatchEvent (event) {\n this._event(event)\n }\n\n /**\n * Enables all main event listenners.\n * @private\n */\n _enableEventListenners () {\n document.addEventListener('mouseup', ({ target }) => {\n if (!this._multiselect.contains(target)) {\n this._filterOptions('')\n this._closeList()\n this._handlePlaceholder()\n }\n })\n\n this._domElements.clear.addEventListener('click', () => {\n this._clearSelection()\n })\n\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const option = this._domElements.options.list[i]\n option.addEventListener('click', ({ target }) => {\n this._handleOption(target)\n this._closeList()\n })\n }\n\n this._domElements.input.addEventListener('focus', () => {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n })\n\n this._domElements.input.addEventListener('input', ({ target: { value } }) => {\n if (this._domElements.options.list.length > 0) {\n this._filterOptions(value)\n }\n })\n\n this._domElements.input.addEventListener('keydown', (e) => {\n this._handleArrows(e)\n this._handleBackspace(e)\n this._handleEnter(e)\n })\n }\n\n /**\n * Filters user input.\n * @param { string } value\n * @private\n */\n _filterOptions (value) {\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n const valueLowerCase = value.toLowerCase()\n\n if (!isOpen && value.length > 0) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n }\n\n if (this._domElements.options.list.length > 0) {\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const el = this._domElements.options.list[i]\n const text = this._itemTemplate ? this._data[i][this._textField] : el.textContent\n\n if (text.toLowerCase().substring(0, valueLowerCase.length) === valueLowerCase) {\n this._domElements.optionsContainerList.appendChild(el)\n } else {\n el.parentNode && el.parentNode.removeChild(el)\n }\n }\n\n const hasResults = this._domElements.options.some(\n (el, index) =>\n (this._itemTemplate ? this._data[index][this._textField] : el.textContent)\n .toLowerCase()\n .substring(0, valueLowerCase.length) === valueLowerCase\n )\n this._showNoResults(!hasResults)\n }\n }\n\n _generateId (length) {\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n const charactersLength = characters.length\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength))\n }\n return result\n }\n\n /**\n * Gets data from select tag.\n * @private\n */\n _getDataFromSelectTag () {\n const arr = []\n const { options } = this._select\n for (let i = 0; i < options.length; i++) {\n const item = options[i]\n arr.push({\n text: item.text,\n value: item.value,\n selected: item.hasAttribute('selected')\n })\n }\n return arr\n }\n\n /**\n * Gets data from settings.\n * @private\n */\n _getDataFromSettings () {\n if (this._data.length > 0 && this._valueField && this._textField) {\n const isValueFieldValid = typeof this._valueField === 'string'\n const isTextFieldValid = typeof this._textField === 'string'\n const arr = []\n\n if (!isValueFieldValid || !isTextFieldValid) {\n throw new Error('textField and valueField must be of type string')\n }\n\n for (let i = 0; i < this._data.length; i++) {\n const item = this._data[i]\n arr.push({\n value: item[this._valueField],\n text: item[this._textField],\n selected: typeof item.selected === 'boolean' ? item.selected : false\n })\n }\n return arr\n } else {\n return null\n }\n }\n\n /**\n * Handles Arrow up & Down. Selection of an option is also possible with these keys.\n * @param { Event } event\n * @private\n */\n _handleArrows (event) {\n if (event.keyCode === 40 || event.keyCode === 38) {\n event.preventDefault()\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n // An updated view of the container is needed because of the filtering option\n const optionsContainerList = this._multiselect.querySelector('.multiselect__options > ul')\n\n if (!isOpen) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n } else {\n let selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n const action = {\n ArrowUp: 'previous',\n Up: 'previous',\n ArrowDown: 'next',\n Down: 'next'\n }\n\n if (!selected) {\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n return\n }\n\n selected.classList.remove('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li)\n\n selected = selected[action[event.key] + 'ElementSibling']\n\n // Go to start or end of the popup list\n if (!selected) {\n selected =\n optionsContainerList.children[action[event.key] === 'next' ? 0 : optionsContainerList.children.length - 1]\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n return\n }\n\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n }\n }\n }\n\n /**\n * Handles the backspace key event - Deletes the preceding option in the selection list.\n * @param { Event } e\n * @private\n */\n _handleBackspace (e) {\n if (e.keyCode === 8 && e.target.value === '') {\n const lastSelectedOption =\n this._selectedOptions.length > 0 ? this._selectedOptions[this._selectedOptions.length - 1] : null\n\n if (lastSelectedOption) {\n const targetLastSelectedOption = this._multiselect.querySelector(\n `li[data-value=\"${lastSelectedOption.value}\"]`\n )\n this._handleOption(targetLastSelectedOption)\n\n if (this._selectedOptions.length === 0) {\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n }\n }\n }\n }\n\n /**\n * Shows clear selection button if some options are selected.\n * @private\n */\n _handleClearSelectionBtn () {\n if (this._selectedOptions.length > 0) {\n this._domElements.clear.style.display = 'flex'\n } else {\n this._domElements.clear.style.display = 'none'\n }\n }\n\n /**\n * Handles the enter key event.\n * @param { Event } event\n * @private\n */\n _handleEnter (event) {\n if (event.keyCode === 13) {\n const selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n if (selected) {\n this._handleOption(selected)\n this._closeList()\n }\n }\n }\n\n _handleOption (target, dispatchEvent = true) {\n // Remove\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const el = this._selectedOptions[i]\n if (el.value === target.dataset.value) {\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._selectedOptions.splice(i, 1)\n this._removeOptionFromList(target.dataset.value)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'REMOVE_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n\n // Add\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.value === target.dataset.value) {\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'ADD_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n }\n\n /**\n * Shows the placeholder if no options are selected.\n * @private\n */\n _handlePlaceholder () {\n this._domElements.input.placeholder = this._placeholder\n }\n\n _initSelectedList () {\n let hasItemsSelected = false\n\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.selected) {\n hasItemsSelected = true\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n }\n }\n\n if (hasItemsSelected) { this._handleClearSelectionBtn() }\n this._handlePlaceholder()\n }\n\n /**\n * Process the custom template.\n * @param { string } template\n * @private\n */\n _processTemplate (template, index) {\n let processedTemplate = template\n const objAttr = template.match(/\\$\\{(\\w+)\\}/g).map((e) => e.replace(/\\$\\{|\\}/g, ''))\n\n for (let i = 0; i < objAttr.length; i++) {\n const attr = objAttr[i]\n // eslint-disable-next-line no-useless-escape\n processedTemplate = processedTemplate.replace(`\\$\\{${attr}\\}`, this._data[index][attr] ?? '')\n }\n\n return processedTemplate\n }\n\n _removeAllArrowSelected () {\n const className = 'arrow-selected'\n const target = this._domElements.options.find((el) => el.classList.contains(className))\n target && target.classList.remove(className) && target.setAttribute('style', style.multiselect__options_ul_li)\n }\n\n /**\n * Removes an option from the list.\n * @param { string } value\n * @private\n */\n _removeOptionFromList (value) {\n const optionDom = this._multiselect.querySelector(`span[data-value=\"${value}\"]`)\n optionDom && optionDom.parentNode && optionDom.parentNode.removeChild(optionDom)\n }\n\n /**\n * Renders the multiselect options list view.\n * @private\n */\n _renderOptionsList () {\n const html = `\n <div class=\"multiselect__options\" style=\"${style.multiselect__options}\">\n <ul style=\"${style.multiselect__options_ul}\">\n ${\n this._options.length > 0 && !this._itemTemplate\n ? this._options\n .map((option) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${option.text}</li>\n `\n })\n .join('')\n : ''\n }\n\n ${\n this._options.length > 0 && this._itemTemplate\n ? this._options\n .map((option, index) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${this._processTemplate(this._itemTemplate, index)}</li>\n `\n })\n .join('')\n : ''\n }\n ${this._showNoData(this._options.length === 0)}\n </ul>\n </div>\n `\n\n this._multiselect.insertAdjacentHTML('beforeend', html)\n }\n\n /**\n * Renders the multiselect view.\n * @private\n */\n _renderMultiselect () {\n this._select.style.display = 'none'\n const id = 'iconic-' + this._generateId(20)\n // Timea created dedicated div element because previous code was not rendering\n this._multiselect = document.createElement('div')\n this._multiselect.setAttribute('id', id)\n this._multiselect.setAttribute('class', 'multiselect__container')\n this._multiselect.setAttribute('style', style.multiselect__container)\n const html = `\n <div class=\"multiselect__wrapper\" style=\"${style.multiselect__wrapper}\">\n <input class=\"multiselect__input\" style=\"${style.multiselect__input}\" placeholder=\"${this._placeholder}\" />\n </div>\n <span style=\"display: none;\" class=\"multiselect__clear-btn\" style=\"${style.multiselect__clear_btn}\">${this._cross}</span>\n `\n this._multiselect.innerHTML = html\n this._selectContainer.appendChild(this._multiselect)\n }\n\n /**\n * ScrollIntoView - This small utility reproduces the behavior of .scrollIntoView({ block: \"nearest\", inline: \"nearest\" })\n * This is for IE compatibility without a need of a polyfill\n * @private\n */\n _scrollIntoView (parent, child) {\n const rectParent = parent.getBoundingClientRect()\n const rectChild = child.getBoundingClientRect()\n\n // Detect if not visible at top and then scroll to the top\n if (!(rectParent.top < rectChild.bottom - child.offsetHeight)) {\n parent.scrollTop = child.clientHeight + (child.offsetTop - child.offsetHeight)\n }\n\n // Detect if not visible at bottom and then scroll to the bottom\n if (!(rectParent.bottom > rectChild.top + child.offsetHeight)) {\n parent.scrollTop =\n child.clientHeight +\n (child.offsetTop - child.offsetHeight) -\n (parent.offsetHeight - (child.offsetHeight + (child.offsetHeight - child.clientHeight)))\n }\n }\n\n /**\n * Shows a no data message.\n * @param { boolean } condition\n * @private\n */\n _showNoData (condition) {\n return condition ? `<p class=\"multiselect__options--no-data\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_data}\">${this._noData}</p>` : ''\n }\n\n /**\n * Shows a no results message.\n * @param { boolean } condition\n * @private\n */\n _showNoResults (condition) {\n const dom = this._multiselect.querySelector('.multiselect__options--no-results')\n if (condition) {\n const html = `<p class=\"multiselect__options--no-results\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_results}\">${this._noResults}</p>`\n !dom && this._domElements.optionsContainerList.insertAdjacentHTML('beforeend', html)\n } else {\n dom && dom.parentNode && dom.parentNode.removeChild(dom)\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"multiSelect.esm.js","names":[],"sources":["../../src/widgets/multiSelect.js"],"sourcesContent":["/*\n * IconicMultiSelect v0.7.0\n * Licence: MIT\n * (c) 2021 Sidney Wimart.\n * repo & configuration: https://github.com/sidneywm/iconic-multiselect\n */\n\n/**\n * @version IconicMultiSelect v0.7.0\n * @licence MIT\n */\nimport { style } from '../lib/style_multiSelect'\n\nexport class IconicMultiSelect {\n _data\n _domElements\n _event = () => {}\n _itemTemplate\n _multiselect\n _noData\n _noResults\n _options = []\n _placeholder\n _select\n _selectContainer\n _selectedOptions = []\n _tagTemplate\n _textField\n _valueField\n _cross = `\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.2253 4.81108C5.83477 4.42056 5.20161 4.42056 4.81108 4.81108C4.42056 5.20161 4.42056 5.83477 4.81108 6.2253L10.5858 12L4.81114 17.7747C4.42062 18.1652 4.42062 18.7984 4.81114 19.1889C5.20167 19.5794 5.83483 19.5794 6.22535 19.1889L12 13.4142L17.7747 19.1889C18.1652 19.5794 18.7984 19.5794 19.1889 19.1889C19.5794 18.7984 19.5794 18.1652 19.1889 17.7747L13.4142 12L19.189 6.2253C19.5795 5.83477 19.5795 5.20161 19.189 4.81108C18.7985 4.42056 18.1653 4.42056 17.7748 4.81108L12 10.5858L6.2253 4.81108Z\"\n fill=\"currentColor\"\n />\n </svg>\n `\n\n /**\n * Iconic Multiselect constructor.\n * @param { Object[] } data - Array of objects.\n * @param { string } noData - Defines the message when there is no data input.\n * @param { string } noResults - Defines the message when there is no result if options are filtered.\n * @param { string } placeholder - Defines the placeholder's text.\n * @param { string } select - DOM element to be selected. It must be a HTML Select tag - https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select\n * @param { string } textField - Field to select in the object for the text.\n * @param { string } valueField - Field to select in the object for the value.\n */\n constructor ({ data, itemTemplate, noData, noResults, placeholder, select, container, tagTemplate, textField, valueField }) {\n this._data = data ?? []\n this._itemTemplate = itemTemplate ?? null\n this._noData = noData ?? 'No data found.'\n this._noResults = noResults ?? 'No results found.'\n this._placeholder = placeholder ?? 'Select...'\n this._select = select\n // Timea added a container here\n this._selectContainer = container\n this._tagTemplate = tagTemplate ?? null\n this._textField = textField ?? null\n this._valueField = valueField ?? null\n }\n\n /**\n * Initialize the Iconic Multiselect component.\n * @public\n */\n init () {\n // Timea change to use this._select instead of this._selectContainer\n if (this._select && this._select.nodeName === 'SELECT') {\n if (this._itemTemplate && this._data.length === 0) { throw new Error('itemTemplate must be initialized with data from the component settings') }\n if (this._tagTemplate && this._data.length === 0) { throw new Error('tagTemplate must be initialized with data from the component settings') }\n\n this._options = this._data.length > 0 ? this._getDataFromSettings() : this._getDataFromSelectTag()\n\n this._renderMultiselect()\n this._renderOptionsList()\n\n this._domElements = {\n clear: this._multiselect.querySelector('.multiselect__clear-btn'),\n input: this._multiselect.querySelector('.multiselect__input'),\n optionsContainer: this._multiselect.querySelector('.multiselect__options'),\n optionsContainerList: this._multiselect.querySelector('.multiselect__options > ul'),\n options: {\n list: this._multiselect.querySelectorAll('.multiselect__options > ul > li'),\n find: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node)) return node\n }\n return undefined\n },\n some: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node, i)) return true\n }\n return false\n }\n }\n }\n\n this._enableEventListenners()\n this._initSelectedList()\n } else {\n throw new Error(`The selector '${this._select}' did not select any valid select tag.`)\n }\n }\n\n /**\n * Subscribes to the emitted events.\n * @param { Function } callback - Callback function which emits a custom event object.\n * @public\n */\n subscribe (callback) {\n if (typeof callback === 'function') {\n this._event = callback\n } else {\n throw new Error('parameter in the subscribe method is not a function')\n }\n }\n\n /**\n * Add an option to the selection list.\n * @param { Object: { text: string; value: string; }} option\n * @private\n */\n _addOptionToList (option, index) {\n const html = `<span class=\"multiselect__selected\" style=\"${style.multiselect__selected}\" data-value=\"${option.value}\">${\n this._tagTemplate ? this._processTemplate(this._tagTemplate, index) : option.text\n }<span class=\"multiselect__remove-btn\" style=\"${style.multiselect__remove_btn}\">${this._cross}</span></span>`\n\n this._domElements.input.insertAdjacentHTML('beforebegin', html)\n\n const { lastElementChild: removeBtn } = this._multiselect.querySelector(`span[data-value=\"${option.value}\"]`)\n removeBtn.addEventListener('click', () => {\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n this._handleOption(target)\n })\n }\n\n /**\n * Clears all selected options.\n * @private\n */\n _clearSelection () {\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const option = this._selectedOptions[i]\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._removeOptionFromList(target.dataset.value)\n }\n this._selectedOptions = []\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n this._dispatchEvent({\n action: 'CLEAR_ALL_OPTIONS',\n selection: this._selectedOptions\n })\n }\n\n /**\n * Close the options container.\n * @private\n */\n _closeList () {\n this._domElements.input.value = ''\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n this._filterOptions('')\n this._removeAllArrowSelected()\n }\n\n /**\n * Dispatches new events.\n * @param { object : { action: string; selection: { option: string; text: string; }[]; value?: string; } } event\n * @private\n */\n _dispatchEvent (event) {\n this._event(event)\n }\n\n /**\n * Enables all main event listenners.\n * @private\n */\n _enableEventListenners () {\n document.addEventListener('mouseup', ({ target }) => {\n if (!this._multiselect.contains(target)) {\n this._filterOptions('')\n this._closeList()\n this._handlePlaceholder()\n }\n })\n\n this._domElements.clear.addEventListener('click', () => {\n this._clearSelection()\n })\n\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const option = this._domElements.options.list[i]\n option.addEventListener('click', ({ target }) => {\n this._handleOption(target)\n this._closeList()\n })\n }\n\n this._domElements.input.addEventListener('focus', () => {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n })\n\n this._domElements.input.addEventListener('input', ({ target: { value } }) => {\n if (this._domElements.options.list.length > 0) {\n this._filterOptions(value)\n }\n })\n\n this._domElements.input.addEventListener('keydown', (e) => {\n this._handleArrows(e)\n this._handleBackspace(e)\n this._handleEnter(e)\n })\n }\n\n /**\n * Filters user input.\n * @param { string } value\n * @private\n */\n _filterOptions (value) {\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n const valueLowerCase = value.toLowerCase()\n\n if (!isOpen && value.length > 0) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n }\n\n if (this._domElements.options.list.length > 0) {\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const el = this._domElements.options.list[i]\n const text = this._itemTemplate ? this._data[i][this._textField] : el.textContent\n\n if (text.toLowerCase().substring(0, valueLowerCase.length) === valueLowerCase) {\n this._domElements.optionsContainerList.appendChild(el)\n } else {\n el.parentNode && el.parentNode.removeChild(el)\n }\n }\n\n const hasResults = this._domElements.options.some(\n (el, index) =>\n (this._itemTemplate ? this._data[index][this._textField] : el.textContent)\n .toLowerCase()\n .substring(0, valueLowerCase.length) === valueLowerCase\n )\n this._showNoResults(!hasResults)\n }\n }\n\n _generateId (length) {\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n const charactersLength = characters.length\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength))\n }\n return result\n }\n\n /**\n * Gets data from select tag.\n * @private\n */\n _getDataFromSelectTag () {\n const arr = []\n const { options } = this._select\n for (let i = 0; i < options.length; i++) {\n const item = options[i]\n arr.push({\n text: item.text,\n value: item.value,\n selected: item.hasAttribute('selected')\n })\n }\n return arr\n }\n\n /**\n * Gets data from settings.\n * @private\n */\n _getDataFromSettings () {\n if (this._data.length > 0 && this._valueField && this._textField) {\n const isValueFieldValid = typeof this._valueField === 'string'\n const isTextFieldValid = typeof this._textField === 'string'\n const arr = []\n\n if (!isValueFieldValid || !isTextFieldValid) {\n throw new Error('textField and valueField must be of type string')\n }\n\n for (let i = 0; i < this._data.length; i++) {\n const item = this._data[i]\n arr.push({\n value: item[this._valueField],\n text: item[this._textField],\n selected: typeof item.selected === 'boolean' ? item.selected : false\n })\n }\n return arr\n } else {\n return null\n }\n }\n\n /**\n * Handles Arrow up & Down. Selection of an option is also possible with these keys.\n * @param { Event } event\n * @private\n */\n _handleArrows (event) {\n if (event.keyCode === 40 || event.keyCode === 38) {\n event.preventDefault()\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n // An updated view of the container is needed because of the filtering option\n const optionsContainerList = this._multiselect.querySelector('.multiselect__options > ul')\n\n if (!isOpen) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n } else {\n let selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n const action = {\n ArrowUp: 'previous',\n Up: 'previous',\n ArrowDown: 'next',\n Down: 'next'\n }\n\n if (!selected) {\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n return\n }\n\n selected.classList.remove('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li)\n\n selected = selected[action[event.key] + 'ElementSibling']\n\n // Go to start or end of the popup list\n if (!selected) {\n selected =\n optionsContainerList.children[action[event.key] === 'next' ? 0 : optionsContainerList.children.length - 1]\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n return\n }\n\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n }\n }\n }\n\n /**\n * Handles the backspace key event - Deletes the preceding option in the selection list.\n * @param { Event } e\n * @private\n */\n _handleBackspace (e) {\n if (e.keyCode === 8 && e.target.value === '') {\n const lastSelectedOption =\n this._selectedOptions.length > 0 ? this._selectedOptions[this._selectedOptions.length - 1] : null\n\n if (lastSelectedOption) {\n const targetLastSelectedOption = this._multiselect.querySelector(\n `li[data-value=\"${lastSelectedOption.value}\"]`\n )\n this._handleOption(targetLastSelectedOption)\n\n if (this._selectedOptions.length === 0) {\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n }\n }\n }\n }\n\n /**\n * Shows clear selection button if some options are selected.\n * @private\n */\n _handleClearSelectionBtn () {\n if (this._selectedOptions.length > 0) {\n this._domElements.clear.style.display = 'flex'\n } else {\n this._domElements.clear.style.display = 'none'\n }\n }\n\n /**\n * Handles the enter key event.\n * @param { Event } event\n * @private\n */\n _handleEnter (event) {\n if (event.keyCode === 13) {\n const selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n if (selected) {\n this._handleOption(selected)\n this._closeList()\n }\n }\n }\n\n _handleOption (target, dispatchEvent = true) {\n // Remove\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const el = this._selectedOptions[i]\n if (el.value === target.dataset.value) {\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._selectedOptions.splice(i, 1)\n this._removeOptionFromList(target.dataset.value)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'REMOVE_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n\n // Add\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.value === target.dataset.value) {\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'ADD_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n }\n\n /**\n * Shows the placeholder if no options are selected.\n * @private\n */\n _handlePlaceholder () {\n this._domElements.input.placeholder = this._placeholder\n }\n\n _initSelectedList () {\n let hasItemsSelected = false\n\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.selected) {\n hasItemsSelected = true\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n }\n }\n\n if (hasItemsSelected) { this._handleClearSelectionBtn() }\n this._handlePlaceholder()\n }\n\n /**\n * Process the custom template.\n * @param { string } template\n * @private\n */\n _processTemplate (template, index) {\n let processedTemplate = template\n const objAttr = template.match(/\\$\\{(\\w+)\\}/g).map((e) => e.replace(/\\$\\{|\\}/g, ''))\n\n for (let i = 0; i < objAttr.length; i++) {\n const attr = objAttr[i]\n // eslint-disable-next-line no-useless-escape\n processedTemplate = processedTemplate.replace(`\\$\\{${attr}\\}`, this._data[index][attr] ?? '')\n }\n\n return processedTemplate\n }\n\n _removeAllArrowSelected () {\n const className = 'arrow-selected'\n const target = this._domElements.options.find((el) => el.classList.contains(className))\n target && target.classList.remove(className) && target.setAttribute('style', style.multiselect__options_ul_li)\n }\n\n /**\n * Removes an option from the list.\n * @param { string } value\n * @private\n */\n _removeOptionFromList (value) {\n const optionDom = this._multiselect.querySelector(`span[data-value=\"${value}\"]`)\n optionDom && optionDom.parentNode && optionDom.parentNode.removeChild(optionDom)\n }\n\n /**\n * Renders the multiselect options list view.\n * @private\n */\n _renderOptionsList () {\n const html = `\n <div class=\"multiselect__options\" style=\"${style.multiselect__options}\">\n <ul style=\"${style.multiselect__options_ul}\">\n ${\n this._options.length > 0 && !this._itemTemplate\n ? this._options\n .map((option) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${option.text}</li>\n `\n })\n .join('')\n : ''\n }\n\n ${\n this._options.length > 0 && this._itemTemplate\n ? this._options\n .map((option, index) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${this._processTemplate(this._itemTemplate, index)}</li>\n `\n })\n .join('')\n : ''\n }\n ${this._showNoData(this._options.length === 0)}\n </ul>\n </div>\n `\n\n this._multiselect.insertAdjacentHTML('beforeend', html)\n }\n\n /**\n * Renders the multiselect view.\n * @private\n */\n _renderMultiselect () {\n this._select.style.display = 'none'\n const id = 'iconic-' + this._generateId(20)\n // Timea created dedicated div element because previous code was not rendering\n this._multiselect = document.createElement('div')\n this._multiselect.setAttribute('id', id)\n this._multiselect.setAttribute('class', 'multiselect__container')\n this._multiselect.setAttribute('style', style.multiselect__container)\n const html = `\n <div class=\"multiselect__wrapper\" style=\"${style.multiselect__wrapper}\">\n <input class=\"multiselect__input\" style=\"${style.multiselect__input}\" placeholder=\"${this._placeholder}\" />\n </div>\n <span style=\"display: none;\" class=\"multiselect__clear-btn\" style=\"${style.multiselect__clear_btn}\">${this._cross}</span>\n `\n this._multiselect.innerHTML = html\n this._selectContainer.appendChild(this._multiselect)\n }\n\n /**\n * ScrollIntoView - This small utility reproduces the behavior of .scrollIntoView({ block: \"nearest\", inline: \"nearest\" })\n * This is for IE compatibility without a need of a polyfill\n * @private\n */\n _scrollIntoView (parent, child) {\n const rectParent = parent.getBoundingClientRect()\n const rectChild = child.getBoundingClientRect()\n\n // Detect if not visible at top and then scroll to the top\n if (!(rectParent.top < rectChild.bottom - child.offsetHeight)) {\n parent.scrollTop = child.clientHeight + (child.offsetTop - child.offsetHeight)\n }\n\n // Detect if not visible at bottom and then scroll to the bottom\n if (!(rectParent.bottom > rectChild.top + child.offsetHeight)) {\n parent.scrollTop =\n child.clientHeight +\n (child.offsetTop - child.offsetHeight) -\n (parent.offsetHeight - (child.offsetHeight + (child.offsetHeight - child.clientHeight)))\n }\n }\n\n /**\n * Shows a no data message.\n * @param { boolean } condition\n * @private\n */\n _showNoData (condition) {\n return condition ? `<p class=\"multiselect__options--no-data\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_data}\">${this._noData}</p>` : ''\n }\n\n /**\n * Shows a no results message.\n * @param { boolean } condition\n * @private\n */\n _showNoResults (condition) {\n const dom = this._multiselect.querySelector('.multiselect__options--no-results')\n if (condition) {\n const html = `<p class=\"multiselect__options--no-results\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_results}\">${this._noResults}</p>`\n !dom && this._domElements.optionsContainerList.insertAdjacentHTML('beforeend', html)\n } else {\n dom && dom.parentNode && dom.parentNode.removeChild(dom)\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"multiSelect.esm.js","names":[],"sources":["../../src/widgets/multiSelect.js"],"sourcesContent":["/*\n * IconicMultiSelect v0.7.0\n * Licence: MIT\n * (c) 2021 Sidney Wimart.\n * repo & configuration: https://github.com/sidneywm/iconic-multiselect\n */\n\n/**\n * @version IconicMultiSelect v0.7.0\n * @licence MIT\n */\nimport { style } from '../lib/style_multiSelect'\n\nexport class IconicMultiSelect {\n _data\n _domElements\n _event = () => {}\n _itemTemplate\n _multiselect\n _noData\n _noResults\n _options = []\n _placeholder\n _select\n _selectContainer\n _selectedOptions = []\n _tagTemplate\n _textField\n _valueField\n _cross = `\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.2253 4.81108C5.83477 4.42056 5.20161 4.42056 4.81108 4.81108C4.42056 5.20161 4.42056 5.83477 4.81108 6.2253L10.5858 12L4.81114 17.7747C4.42062 18.1652 4.42062 18.7984 4.81114 19.1889C5.20167 19.5794 5.83483 19.5794 6.22535 19.1889L12 13.4142L17.7747 19.1889C18.1652 19.5794 18.7984 19.5794 19.1889 19.1889C19.5794 18.7984 19.5794 18.1652 19.1889 17.7747L13.4142 12L19.189 6.2253C19.5795 5.83477 19.5795 5.20161 19.189 4.81108C18.7985 4.42056 18.1653 4.42056 17.7748 4.81108L12 10.5858L6.2253 4.81108Z\"\n fill=\"currentColor\"\n />\n </svg>\n `\n\n /**\n * Iconic Multiselect constructor.\n * @param { Object[] } data - Array of objects.\n * @param { string } noData - Defines the message when there is no data input.\n * @param { string } noResults - Defines the message when there is no result if options are filtered.\n * @param { string } placeholder - Defines the placeholder's text.\n * @param { string } select - DOM element to be selected. It must be a HTML Select tag - https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select\n * @param { string } textField - Field to select in the object for the text.\n * @param { string } valueField - Field to select in the object for the value.\n */\n constructor ({ data, itemTemplate, noData, noResults, placeholder, select, container, tagTemplate, textField, valueField }) {\n this._data = data ?? []\n this._itemTemplate = itemTemplate ?? null\n this._noData = noData ?? 'No data found.'\n this._noResults = noResults ?? 'No results found.'\n this._placeholder = placeholder ?? 'Select...'\n this._select = select\n // Timea added a container here\n this._selectContainer = container\n this._tagTemplate = tagTemplate ?? null\n this._textField = textField ?? null\n this._valueField = valueField ?? null\n }\n\n /**\n * Initialize the Iconic Multiselect component.\n * @public\n */\n init () {\n // Timea change to use this._select instead of this._selectContainer\n if (this._select && this._select.nodeName === 'SELECT') {\n if (this._itemTemplate && this._data.length === 0) { throw new Error('itemTemplate must be initialized with data from the component settings') }\n if (this._tagTemplate && this._data.length === 0) { throw new Error('tagTemplate must be initialized with data from the component settings') }\n\n this._options = this._data.length > 0 ? this._getDataFromSettings() : this._getDataFromSelectTag()\n\n this._renderMultiselect()\n this._renderOptionsList()\n\n this._domElements = {\n clear: this._multiselect.querySelector('.multiselect__clear-btn'),\n input: this._multiselect.querySelector('.multiselect__input'),\n optionsContainer: this._multiselect.querySelector('.multiselect__options'),\n optionsContainerList: this._multiselect.querySelector('.multiselect__options > ul'),\n options: {\n list: this._multiselect.querySelectorAll('.multiselect__options > ul > li'),\n find: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node)) return node\n }\n return undefined\n },\n some: function (callbackFn) {\n for (let i = 0; i < this.list.length; i++) {\n const node = this.list[i]\n if (callbackFn(node, i)) return true\n }\n return false\n }\n }\n }\n\n this._enableEventListenners()\n this._initSelectedList()\n } else {\n throw new Error(`The selector '${this._select}' did not select any valid select tag.`)\n }\n }\n\n /**\n * Subscribes to the emitted events.\n * @param { Function } callback - Callback function which emits a custom event object.\n * @public\n */\n subscribe (callback) {\n if (typeof callback === 'function') {\n this._event = callback\n } else {\n throw new Error('parameter in the subscribe method is not a function')\n }\n }\n\n /**\n * Add an option to the selection list.\n * @param { Object: { text: string; value: string; }} option\n * @private\n */\n _addOptionToList (option, index) {\n const html = `<span class=\"multiselect__selected\" style=\"${style.multiselect__selected}\" data-value=\"${option.value}\">${\n this._tagTemplate ? this._processTemplate(this._tagTemplate, index) : option.text\n }<span class=\"multiselect__remove-btn\" style=\"${style.multiselect__remove_btn}\">${this._cross}</span></span>`\n\n this._domElements.input.insertAdjacentHTML('beforebegin', html)\n\n const { lastElementChild: removeBtn } = this._multiselect.querySelector(`span[data-value=\"${option.value}\"]`)\n removeBtn.addEventListener('click', () => {\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n this._handleOption(target)\n })\n }\n\n /**\n * Clears all selected options.\n * @private\n */\n _clearSelection () {\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const option = this._selectedOptions[i]\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._removeOptionFromList(target.dataset.value)\n }\n this._selectedOptions = []\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n this._dispatchEvent({\n action: 'CLEAR_ALL_OPTIONS',\n selection: this._selectedOptions\n })\n }\n\n /**\n * Close the options container.\n * @private\n */\n _closeList () {\n this._domElements.input.value = ''\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n this._filterOptions('')\n this._removeAllArrowSelected()\n }\n\n /**\n * Dispatches new events.\n * @param { object : { action: string; selection: { option: string; text: string; }[]; value?: string; } } event\n * @private\n */\n _dispatchEvent (event) {\n this._event(event)\n }\n\n /**\n * Enables all main event listenners.\n * @private\n */\n _enableEventListenners () {\n document.addEventListener('mouseup', ({ target }) => {\n if (!this._multiselect.contains(target)) {\n this._filterOptions('')\n this._closeList()\n this._handlePlaceholder()\n }\n })\n\n this._domElements.clear.addEventListener('click', () => {\n this._clearSelection()\n })\n\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const option = this._domElements.options.list[i]\n option.addEventListener('click', ({ target }) => {\n this._handleOption(target)\n this._closeList()\n })\n }\n\n this._domElements.input.addEventListener('focus', () => {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n })\n\n this._domElements.input.addEventListener('input', ({ target: { value } }) => {\n if (this._domElements.options.list.length > 0) {\n this._filterOptions(value)\n }\n })\n\n this._domElements.input.addEventListener('keydown', (e) => {\n this._handleArrows(e)\n this._handleBackspace(e)\n this._handleEnter(e)\n })\n }\n\n /**\n * Filters user input.\n * @param { string } value\n * @private\n */\n _filterOptions (value) {\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n const valueLowerCase = value.toLowerCase()\n\n if (!isOpen && value.length > 0) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n }\n\n if (this._domElements.options.list.length > 0) {\n for (let i = 0; i < this._domElements.options.list.length; i++) {\n const el = this._domElements.options.list[i]\n const text = this._itemTemplate ? this._data[i][this._textField] : el.textContent\n\n if (text.toLowerCase().substring(0, valueLowerCase.length) === valueLowerCase) {\n this._domElements.optionsContainerList.appendChild(el)\n } else {\n el.parentNode && el.parentNode.removeChild(el)\n }\n }\n\n const hasResults = this._domElements.options.some(\n (el, index) =>\n (this._itemTemplate ? this._data[index][this._textField] : el.textContent)\n .toLowerCase()\n .substring(0, valueLowerCase.length) === valueLowerCase\n )\n this._showNoResults(!hasResults)\n }\n }\n\n _generateId (length) {\n let result = ''\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n const charactersLength = characters.length\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength))\n }\n return result\n }\n\n /**\n * Gets data from select tag.\n * @private\n */\n _getDataFromSelectTag () {\n const arr = []\n const { options } = this._select\n for (let i = 0; i < options.length; i++) {\n const item = options[i]\n arr.push({\n text: item.text,\n value: item.value,\n selected: item.hasAttribute('selected')\n })\n }\n return arr\n }\n\n /**\n * Gets data from settings.\n * @private\n */\n _getDataFromSettings () {\n if (this._data.length > 0 && this._valueField && this._textField) {\n const isValueFieldValid = typeof this._valueField === 'string'\n const isTextFieldValid = typeof this._textField === 'string'\n const arr = []\n\n if (!isValueFieldValid || !isTextFieldValid) {\n throw new Error('textField and valueField must be of type string')\n }\n\n for (let i = 0; i < this._data.length; i++) {\n const item = this._data[i]\n arr.push({\n value: item[this._valueField],\n text: item[this._textField],\n selected: typeof item.selected === 'boolean' ? item.selected : false\n })\n }\n return arr\n } else {\n return null\n }\n }\n\n /**\n * Handles Arrow up & Down. Selection of an option is also possible with these keys.\n * @param { Event } event\n * @private\n */\n _handleArrows (event) {\n if (event.keyCode === 40 || event.keyCode === 38) {\n event.preventDefault()\n const isOpen = this._domElements.optionsContainer.classList.contains('visible')\n // An updated view of the container is needed because of the filtering option\n const optionsContainerList = this._multiselect.querySelector('.multiselect__options > ul')\n\n if (!isOpen) {\n this._domElements.optionsContainer.classList.add('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible)\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n } else {\n let selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n const action = {\n ArrowUp: 'previous',\n Up: 'previous',\n ArrowDown: 'next',\n Down: 'next'\n }\n\n if (!selected) {\n optionsContainerList.firstElementChild.classList.add('arrow-selected')\n optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n optionsContainerList.firstElementChild.scrollIntoView(false)\n return\n }\n\n selected.classList.remove('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li)\n\n selected = selected[action[event.key] + 'ElementSibling']\n\n // Go to start or end of the popup list\n if (!selected) {\n selected =\n optionsContainerList.children[action[event.key] === 'next' ? 0 : optionsContainerList.children.length - 1]\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n return\n }\n\n selected.classList.add('arrow-selected')\n selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected)\n this._scrollIntoView(optionsContainerList, selected)\n }\n }\n }\n\n /**\n * Handles the backspace key event - Deletes the preceding option in the selection list.\n * @param { Event } e\n * @private\n */\n _handleBackspace (e) {\n if (e.keyCode === 8 && e.target.value === '') {\n const lastSelectedOption =\n this._selectedOptions.length > 0 ? this._selectedOptions[this._selectedOptions.length - 1] : null\n\n if (lastSelectedOption) {\n const targetLastSelectedOption = this._multiselect.querySelector(\n `li[data-value=\"${lastSelectedOption.value}\"]`\n )\n this._handleOption(targetLastSelectedOption)\n\n if (this._selectedOptions.length === 0) {\n this._domElements.optionsContainer.classList.remove('visible')\n this._domElements.optionsContainer.setAttribute('style', style.multiselect__options)\n }\n }\n }\n }\n\n /**\n * Shows clear selection button if some options are selected.\n * @private\n */\n _handleClearSelectionBtn () {\n if (this._selectedOptions.length > 0) {\n this._domElements.clear.style.display = 'flex'\n } else {\n this._domElements.clear.style.display = 'none'\n }\n }\n\n /**\n * Handles the enter key event.\n * @param { Event } event\n * @private\n */\n _handleEnter (event) {\n if (event.keyCode === 13) {\n const selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected')\n if (selected) {\n this._handleOption(selected)\n this._closeList()\n }\n }\n }\n\n _handleOption (target, dispatchEvent = true) {\n // Remove\n for (let i = 0; i < this._selectedOptions.length; i++) {\n const el = this._selectedOptions[i]\n if (el.value === target.dataset.value) {\n target.classList.remove('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options)\n this._selectedOptions.splice(i, 1)\n this._removeOptionFromList(target.dataset.value)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'REMOVE_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n\n // Add\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.value === target.dataset.value) {\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n this._handleClearSelectionBtn()\n this._handlePlaceholder()\n\n return (\n dispatchEvent &&\n this._dispatchEvent({\n action: 'ADD_OPTION',\n value: target.dataset.value,\n selection: this._selectedOptions\n })\n )\n }\n }\n }\n\n /**\n * Shows the placeholder if no options are selected.\n * @private\n */\n _handlePlaceholder () {\n this._domElements.input.placeholder = this._placeholder\n }\n\n _initSelectedList () {\n let hasItemsSelected = false\n\n for (let i = 0; i < this._options.length; i++) {\n const option = this._options[i]\n if (option.selected) {\n hasItemsSelected = true\n const target = this._domElements.options.find((el) => el.dataset.value === option.value)\n target.classList.add('multiselect__options--selected')\n target.setAttribute('style', style.multiselect__options_selected)\n this._selectedOptions = [...this._selectedOptions, option]\n this._addOptionToList(option, i)\n }\n }\n\n if (hasItemsSelected) { this._handleClearSelectionBtn() }\n this._handlePlaceholder()\n }\n\n /**\n * Process the custom template.\n * @param { string } template\n * @private\n */\n _processTemplate (template, index) {\n let processedTemplate = template\n const objAttr = template.match(/\\$\\{(\\w+)\\}/g).map((e) => e.replace(/\\$\\{|\\}/g, ''))\n\n for (let i = 0; i < objAttr.length; i++) {\n const attr = objAttr[i]\n // eslint-disable-next-line no-useless-escape\n processedTemplate = processedTemplate.replace(`\\$\\{${attr}\\}`, this._data[index][attr] ?? '')\n }\n\n return processedTemplate\n }\n\n _removeAllArrowSelected () {\n const className = 'arrow-selected'\n const target = this._domElements.options.find((el) => el.classList.contains(className))\n target && target.classList.remove(className) && target.setAttribute('style', style.multiselect__options_ul_li)\n }\n\n /**\n * Removes an option from the list.\n * @param { string } value\n * @private\n */\n _removeOptionFromList (value) {\n const optionDom = this._multiselect.querySelector(`span[data-value=\"${value}\"]`)\n optionDom && optionDom.parentNode && optionDom.parentNode.removeChild(optionDom)\n }\n\n /**\n * Renders the multiselect options list view.\n * @private\n */\n _renderOptionsList () {\n const html = `\n <div class=\"multiselect__options\" style=\"${style.multiselect__options}\">\n <ul style=\"${style.multiselect__options_ul}\">\n ${\n this._options.length > 0 && !this._itemTemplate\n ? this._options\n .map((option) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${option.text}</li>\n `\n })\n .join('')\n : ''\n }\n\n ${\n this._options.length > 0 && this._itemTemplate\n ? this._options\n .map((option, index) => {\n return `\n <li data-value=\"${option.value}\" style=\"${style.multiselect__options_ul_li}\">${this._processTemplate(this._itemTemplate, index)}</li>\n `\n })\n .join('')\n : ''\n }\n ${this._showNoData(this._options.length === 0)}\n </ul>\n </div>\n `\n\n this._multiselect.insertAdjacentHTML('beforeend', html)\n }\n\n /**\n * Renders the multiselect view.\n * @private\n */\n _renderMultiselect () {\n this._select.style.display = 'none'\n const id = 'iconic-' + this._generateId(20)\n // Timea created dedicated div element because previous code was not rendering\n this._multiselect = document.createElement('div')\n this._multiselect.setAttribute('id', id)\n this._multiselect.setAttribute('class', 'multiselect__container')\n this._multiselect.setAttribute('style', style.multiselect__container)\n const html = `\n <div class=\"multiselect__wrapper\" style=\"${style.multiselect__wrapper}\">\n <input class=\"multiselect__input\" style=\"${style.multiselect__input}\" placeholder=\"${this._placeholder}\" />\n </div>\n <span style=\"display: none;\" class=\"multiselect__clear-btn\" style=\"${style.multiselect__clear_btn}\">${this._cross}</span>\n `\n this._multiselect.innerHTML = html\n this._selectContainer.appendChild(this._multiselect)\n }\n\n /**\n * ScrollIntoView - This small utility reproduces the behavior of .scrollIntoView({ block: \"nearest\", inline: \"nearest\" })\n * This is for IE compatibility without a need of a polyfill\n * @private\n */\n _scrollIntoView (parent, child) {\n const rectParent = parent.getBoundingClientRect()\n const rectChild = child.getBoundingClientRect()\n\n // Detect if not visible at top and then scroll to the top\n if (!(rectParent.top < rectChild.bottom - child.offsetHeight)) {\n parent.scrollTop = child.clientHeight + (child.offsetTop - child.offsetHeight)\n }\n\n // Detect if not visible at bottom and then scroll to the bottom\n if (!(rectParent.bottom > rectChild.top + child.offsetHeight)) {\n parent.scrollTop =\n child.clientHeight +\n (child.offsetTop - child.offsetHeight) -\n (parent.offsetHeight - (child.offsetHeight + (child.offsetHeight - child.clientHeight)))\n }\n }\n\n /**\n * Shows a no data message.\n * @param { boolean } condition\n * @private\n */\n _showNoData (condition) {\n return condition ? `<p class=\"multiselect__options--no-data\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_data}\">${this._noData}</p>` : ''\n }\n\n /**\n * Shows a no results message.\n * @param { boolean } condition\n * @private\n */\n _showNoResults (condition) {\n const dom = this._multiselect.querySelector('.multiselect__options--no-results')\n if (condition) {\n const html = `<p class=\"multiselect__options--no-results\" style=\"${style.multiselect__options_ul_p_multiselect__options_no_results}\">${this._noResults}</p>`\n !dom && this._domElements.optionsContainerList.insertAdjacentHTML('beforeend', html)\n } else {\n dom && dom.parentNode && dom.parentNode.removeChild(dom)\n }\n }\n}\n"],"mappings":"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"}