solid-ui 3.1.3-6 → 3.1.3-8

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 (552) hide show
  1. package/dist/_virtual/~icons/app/solid-emblem.cjs.js +3 -0
  2. package/dist/_virtual/~icons/app/solid-emblem.cjs.js.map +1 -0
  3. package/dist/_virtual/~icons/app/solid-emblem.esm.js +11 -0
  4. package/dist/_virtual/~icons/app/solid-emblem.esm.js.map +1 -0
  5. package/dist/_virtual/~icons/lucide/chevron-down.cjs.js +1 -1
  6. package/dist/_virtual/~icons/lucide/chevron-down.esm.js +1 -0
  7. package/dist/_virtual/~icons/lucide/circle-user.cjs.js +1 -1
  8. package/dist/_virtual/~icons/lucide/circle-user.esm.js +1 -0
  9. package/dist/_virtual/~icons/lucide/log-in.cjs.js +1 -1
  10. package/dist/_virtual/~icons/lucide/log-in.esm.js +1 -0
  11. package/dist/_virtual/~icons/lucide/log-out.cjs.js +1 -1
  12. package/dist/_virtual/~icons/lucide/log-out.esm.js +1 -0
  13. package/dist/_virtual/~icons/lucide/user.cjs.js +1 -1
  14. package/dist/_virtual/~icons/lucide/user.esm.js +1 -0
  15. package/dist/_virtual/~icons/lucide/x.cjs.js +1 -1
  16. package/dist/_virtual/~icons/lucide/x.esm.js +1 -0
  17. package/dist/_virtual/~icons/svg-spinners/180-ring.cjs.js +1 -1
  18. package/dist/_virtual/~icons/svg-spinners/180-ring.esm.js +1 -0
  19. package/dist/acl/access-controller.cjs.js +1 -1
  20. package/dist/acl/access-controller.cjs.js.map +1 -1
  21. package/dist/acl/access-controller.esm.js.map +1 -1
  22. package/dist/acl/access-groups.cjs.js.map +1 -1
  23. package/dist/acl/access-groups.esm.js.map +1 -1
  24. package/dist/acl/acl-control.cjs.js +1 -1
  25. package/dist/acl/acl-control.cjs.js.map +1 -1
  26. package/dist/acl/acl-control.esm.js +1 -1
  27. package/dist/acl/acl-control.esm.js.map +1 -1
  28. package/dist/acl/acl.cjs.js.map +1 -1
  29. package/dist/acl/acl.esm.js.map +1 -1
  30. package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
  31. package/dist/acl/add-agent-buttons.esm.js.map +1 -1
  32. package/dist/breakpoints.css +1 -0
  33. package/dist/breakpoints.css.d.ts +1 -0
  34. package/dist/chat/bookmarks.cjs.js +1 -1
  35. package/dist/chat/bookmarks.cjs.js.map +1 -1
  36. package/dist/chat/bookmarks.esm.js +1 -1
  37. package/dist/chat/bookmarks.esm.js.map +1 -1
  38. package/dist/chat/chatLogic.cjs.js.map +1 -1
  39. package/dist/chat/chatLogic.esm.js.map +1 -1
  40. package/dist/chat/dateFolder.cjs.js +1 -1
  41. package/dist/chat/dateFolder.cjs.js.map +1 -1
  42. package/dist/chat/dateFolder.esm.js +1 -1
  43. package/dist/chat/dateFolder.esm.js.map +1 -1
  44. package/dist/chat/infinite.cjs.js +1 -1
  45. package/dist/chat/infinite.cjs.js.map +1 -1
  46. package/dist/chat/infinite.esm.js +1 -1
  47. package/dist/chat/infinite.esm.js.map +1 -1
  48. package/dist/chat/keys.cjs.js +1 -1
  49. package/dist/chat/keys.cjs.js.map +1 -1
  50. package/dist/chat/keys.esm.js +1 -1
  51. package/dist/chat/keys.esm.js.map +1 -1
  52. package/dist/chat/message.cjs.js +1 -1
  53. package/dist/chat/message.cjs.js.map +1 -1
  54. package/dist/chat/message.esm.js +24 -24
  55. package/dist/chat/message.esm.js.map +1 -1
  56. package/dist/chat/messageTools.cjs.js.map +1 -1
  57. package/dist/chat/messageTools.esm.js.map +1 -1
  58. package/dist/chat/signature.cjs.js +1 -1
  59. package/dist/chat/signature.cjs.js.map +1 -1
  60. package/dist/chat/signature.esm.js +1 -1
  61. package/dist/chunks/{DialogProvider-DphduSXG.js → DialogProvider-Bt65G0Tk.js} +4 -4
  62. package/dist/chunks/DialogProvider-Bt65G0Tk.js.map +1 -0
  63. package/dist/chunks/{account-CFhrB0LO.js → account-jSZP2tZ5.js} +76 -60
  64. package/dist/chunks/account-jSZP2tZ5.js.map +1 -0
  65. package/dist/chunks/{auth-Cpf3HYqF.js → auth-CZOEEeJ8.js} +23 -23
  66. package/dist/chunks/{auth-Cpf3HYqF.js.map → auth-CZOEEeJ8.js.map} +1 -1
  67. package/dist/chunks/{avatar-D281qln0.js → avatar-BugsRJZg.js} +5 -5
  68. package/dist/chunks/avatar-BugsRJZg.js.map +1 -0
  69. package/dist/chunks/{button-DbKYu6-r.js → button-0s0lZdxm.js} +2 -2
  70. package/dist/chunks/{button-DbKYu6-r.js.map → button-0s0lZdxm.js.map} +1 -1
  71. package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js +1516 -0
  72. package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js.map +1 -0
  73. package/dist/chunks/combobox-Cxi8xUMn.js +473 -0
  74. package/dist/chunks/combobox-Cxi8xUMn.js.map +1 -0
  75. package/dist/chunks/{combobox-option-Ck0mu4Gc.js → combobox-option-DiR3VpyT.js} +2 -2
  76. package/dist/chunks/{combobox-option-Ck0mu4Gc.js.map → combobox-option-DiR3VpyT.js.map} +1 -1
  77. package/dist/chunks/{components-BlEGdx4i.js → components-C1LEhsaK.js} +5 -9
  78. package/dist/chunks/components-C1LEhsaK.js.map +1 -0
  79. package/dist/chunks/{context-DJ_8r7Oc.js → context-uE5jJlS0.js} +2 -2
  80. package/dist/chunks/{context-DJ_8r7Oc.js.map → context-uE5jJlS0.js.map} +1 -1
  81. package/dist/chunks/decorators-BiCkPd_3.js.map +1 -1
  82. package/dist/chunks/{dialog-DlBtmOm6.js → dialog-BAzrHJ8w.js} +6 -6
  83. package/dist/chunks/dialog-BAzrHJ8w.js.map +1 -0
  84. package/dist/chunks/{dialog-content-CMeH_BD7.js → dialog-content-fdJrkCyB.js} +2 -2
  85. package/dist/chunks/{dialog-content-CMeH_BD7.js.map → dialog-content-fdJrkCyB.js.map} +1 -1
  86. package/dist/chunks/{dialog-footer-D0zzIMlx.js → dialog-footer-Bs_p2Nn9.js} +2 -2
  87. package/dist/chunks/{dialog-footer-D0zzIMlx.js.map → dialog-footer-Bs_p2Nn9.js.map} +1 -1
  88. package/dist/chunks/{dialog-header-DeC1iiLD.js → dialog-header-CWIAAoDo.js} +2 -2
  89. package/dist/chunks/{dialog-header-DeC1iiLD.js.map → dialog-header-CWIAAoDo.js.map} +1 -1
  90. package/dist/chunks/{dialogs-root-BcUcRuAt.js → dialogs-root-Cv932Aqm.js} +3 -3
  91. package/dist/chunks/{dialogs-root-BcUcRuAt.js.map → dialogs-root-Cv932Aqm.js.map} +1 -1
  92. package/dist/chunks/{footer-Bxe4WPgl.js → footer-kVa_uMeQ.js} +3 -3
  93. package/dist/chunks/{footer-Bxe4WPgl.js.map → footer-kVa_uMeQ.js.map} +1 -1
  94. package/dist/chunks/{guard-Da3znlJI.js → guard-Cml6dHTv.js} +4 -4
  95. package/dist/chunks/{guard-Da3znlJI.js.map → guard-Cml6dHTv.js.map} +1 -1
  96. package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js → headerFooterHelpers-BiZ6X10e.js} +15 -15
  97. package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js.map → headerFooterHelpers-BiZ6X10e.js.map} +1 -1
  98. package/dist/chunks/{input-Bkzi4zSV.js → input-BF224Jid.js} +2 -2
  99. package/dist/chunks/{input-Bkzi4zSV.js.map → input-BF224Jid.js.map} +1 -1
  100. package/dist/chunks/{jsonld-DZG2v1pE.js → jsonld-Cd-ZhJmZ.js} +54 -54
  101. package/dist/chunks/{jsonld-DZG2v1pE.js.map → jsonld-Cd-ZhJmZ.js.map} +1 -1
  102. package/dist/chunks/lit-C4H1jI4q.js.map +1 -1
  103. package/dist/chunks/{login-button-C603hM0G.js → login-button-pe1-DVNZ.js} +5 -5
  104. package/dist/chunks/{login-button-C603hM0G.js.map → login-button-pe1-DVNZ.js.map} +1 -1
  105. package/dist/chunks/{logout-button-Cxzpq-C3.js → logout-button-C5dtQiBB.js} +5 -5
  106. package/dist/chunks/{logout-button-Cxzpq-C3.js.map → logout-button-C5dtQiBB.js.map} +1 -1
  107. package/dist/chunks/{menu-aQiqq1ET.js → menu-DNcuV-1J.js} +183 -1693
  108. package/dist/chunks/menu-DNcuV-1J.js.map +1 -0
  109. package/dist/chunks/{menu-item-DBy4o-M4.js → menu-item-CWg-eS4V.js} +8 -6
  110. package/dist/chunks/menu-item-CWg-eS4V.js.map +1 -0
  111. package/dist/chunks/photo-capture-tiBsdSbA.js.map +1 -1
  112. package/dist/chunks/{provider-DZmdgerD.js → provider-DRxSExO6.js} +5 -5
  113. package/dist/chunks/{provider-DZmdgerD.js.map → provider-DRxSExO6.js.map} +1 -1
  114. package/dist/chunks/{select-wczAzbZF.js → select-D8dW53pr.js} +2 -2
  115. package/dist/chunks/{select-wczAzbZF.js.map → select-D8dW53pr.js.map} +1 -1
  116. package/dist/chunks/{select-option-hd_d1RNj.js → select-option-B-6ULCpQ.js} +2 -2
  117. package/dist/chunks/{select-option-hd_d1RNj.js.map → select-option-B-6ULCpQ.js.map} +1 -1
  118. package/dist/chunks/{signup-button-CsRaOUI4.js → signup-button-QvYELqb6.js} +5 -5
  119. package/dist/chunks/{signup-button-CsRaOUI4.js.map → signup-button-QvYELqb6.js.map} +1 -1
  120. package/dist/chunks/solid-emblem-BDzhMTjL.js +185 -0
  121. package/dist/chunks/solid-emblem-BDzhMTjL.js.map +1 -0
  122. package/dist/chunks/{solid-logic.esm-7q6hmfIF.js → solid-logic.esm-BhVcNu8u.js} +2517 -2521
  123. package/dist/chunks/solid-logic.esm-BhVcNu8u.js.map +1 -0
  124. package/dist/chunks/{src-BOU-JwWx.js → src-DYvSns7X.js} +2378 -2354
  125. package/dist/chunks/src-DYvSns7X.js.map +1 -0
  126. package/dist/components/account/Account.cjs.js +7 -2
  127. package/dist/components/account/Account.cjs.js.map +1 -1
  128. package/dist/components/account/Account.d.ts +8 -1
  129. package/dist/components/account/Account.d.ts.map +1 -1
  130. package/dist/components/account/Account.esm.js +64 -48
  131. package/dist/components/account/Account.esm.js.map +1 -1
  132. package/dist/components/account/Account.stories.d.ts +3 -8
  133. package/dist/components/account/Account.stories.d.ts.map +1 -1
  134. package/dist/components/account/Account.styles.cjs.js +1 -1
  135. package/dist/components/account/Account.styles.cjs.js.map +1 -1
  136. package/dist/components/account/Account.styles.esm.js +1 -1
  137. package/dist/components/account/Account.styles.esm.js.map +1 -1
  138. package/dist/components/account/index.cjs.js +1 -1
  139. package/dist/components/account/index.cjs.js.map +1 -1
  140. package/dist/components/account/index.d.ts +2 -2
  141. package/dist/components/account/index.d.ts.map +1 -1
  142. package/dist/components/account/index.esm.js +1 -1
  143. package/dist/components/account/index.esm.js.map +1 -1
  144. package/dist/components/account.js +1 -1
  145. package/dist/components/avatar/Avatar.cjs.js +1 -1
  146. package/dist/components/avatar/Avatar.cjs.js.map +1 -1
  147. package/dist/components/avatar/Avatar.esm.js +1 -1
  148. package/dist/components/avatar/Avatar.styles.cjs.js +1 -1
  149. package/dist/components/avatar/Avatar.styles.cjs.js.map +1 -1
  150. package/dist/components/avatar/Avatar.styles.esm.js +1 -1
  151. package/dist/components/avatar/Avatar.styles.esm.js.map +1 -1
  152. package/dist/components/avatar/index.cjs.js +1 -1
  153. package/dist/components/avatar/index.esm.js +1 -1
  154. package/dist/components/avatar.js +1 -1
  155. package/dist/components/button/Button.cjs.js +1 -1
  156. package/dist/components/button/Button.cjs.js.map +1 -1
  157. package/dist/components/button/Button.esm.js +1 -1
  158. package/dist/components/button/Button.esm.js.map +1 -1
  159. package/dist/components/button/index.cjs.js +1 -1
  160. package/dist/components/button/index.esm.js +3 -3
  161. package/dist/components/button.js +1 -1
  162. package/dist/components/combobox/Combobox.cjs.js +57 -25
  163. package/dist/components/combobox/Combobox.cjs.js.map +1 -1
  164. package/dist/components/combobox/Combobox.d.ts +22 -3
  165. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  166. package/dist/components/combobox/Combobox.esm.js +220 -101
  167. package/dist/components/combobox/Combobox.esm.js.map +1 -1
  168. package/dist/components/combobox/Combobox.styles.cjs.js +1 -1
  169. package/dist/components/combobox/Combobox.styles.cjs.js.map +1 -1
  170. package/dist/components/combobox/Combobox.styles.esm.js +1 -1
  171. package/dist/components/combobox/Combobox.styles.esm.js.map +1 -1
  172. package/dist/components/combobox/index.cjs.js +1 -1
  173. package/dist/components/combobox/index.esm.js +1 -1
  174. package/dist/components/combobox-option/ComboboxOption.cjs.js +1 -1
  175. package/dist/components/combobox-option/ComboboxOption.cjs.js.map +1 -1
  176. package/dist/components/combobox-option/ComboboxOption.esm.js +1 -1
  177. package/dist/components/combobox-option/index.cjs.js +1 -1
  178. package/dist/components/combobox-option/index.esm.js +1 -1
  179. package/dist/components/combobox-option.js +1 -1
  180. package/dist/components/combobox.js +1 -1
  181. package/dist/components/dialog/Dialog.cjs.js +2 -2
  182. package/dist/components/dialog/Dialog.cjs.js.map +1 -1
  183. package/dist/components/dialog/Dialog.d.ts.map +1 -1
  184. package/dist/components/dialog/Dialog.esm.js +2 -2
  185. package/dist/components/dialog/Dialog.esm.js.map +1 -1
  186. package/dist/components/dialog/index.cjs.js +1 -1
  187. package/dist/components/dialog/index.esm.js +1 -1
  188. package/dist/components/dialog-content/DialogContent.cjs.js +1 -1
  189. package/dist/components/dialog-content/DialogContent.cjs.js.map +1 -1
  190. package/dist/components/dialog-content/DialogContent.esm.js +1 -1
  191. package/dist/components/dialog-content/DialogContent.esm.js.map +1 -1
  192. package/dist/components/dialog-content/index.cjs.js +1 -1
  193. package/dist/components/dialog-content/index.esm.js +1 -1
  194. package/dist/components/dialog-content.js +1 -1
  195. package/dist/components/dialog-footer/DialogFooter.cjs.js +1 -1
  196. package/dist/components/dialog-footer/DialogFooter.cjs.js.map +1 -1
  197. package/dist/components/dialog-footer/DialogFooter.esm.js +1 -1
  198. package/dist/components/dialog-footer/DialogFooter.esm.js.map +1 -1
  199. package/dist/components/dialog-footer/index.cjs.js +1 -1
  200. package/dist/components/dialog-footer/index.esm.js +1 -1
  201. package/dist/components/dialog-footer.js +1 -1
  202. package/dist/components/dialog-header/DialogHeader.cjs.js +1 -1
  203. package/dist/components/dialog-header/DialogHeader.cjs.js.map +1 -1
  204. package/dist/components/dialog-header/DialogHeader.esm.js +1 -1
  205. package/dist/components/dialog-header/DialogHeader.esm.js.map +1 -1
  206. package/dist/components/dialog-header/index.cjs.js +1 -1
  207. package/dist/components/dialog-header/index.esm.js +1 -1
  208. package/dist/components/dialog-header.js +1 -1
  209. package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
  210. package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
  211. package/dist/components/dialog-provider/DialogProvider.esm.js +2 -2
  212. package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -1
  213. package/dist/components/dialog-provider/index.cjs.js +1 -1
  214. package/dist/components/dialog-provider/index.esm.js +1 -1
  215. package/dist/components/dialog-provider.js +1 -1
  216. package/dist/components/dialog.js +1 -1
  217. package/dist/components/dialogs-root/DialogsRoot.cjs.js +1 -1
  218. package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
  219. package/dist/components/dialogs-root/DialogsRoot.esm.js +1 -1
  220. package/dist/components/dialogs-root/index.cjs.js +1 -1
  221. package/dist/components/dialogs-root/index.esm.js +1 -1
  222. package/dist/components/dialogs-root.js +1 -1
  223. package/dist/components/footer.js +1 -1
  224. package/dist/components/guard/Guard.cjs.js +1 -1
  225. package/dist/components/guard/Guard.cjs.js.map +1 -1
  226. package/dist/components/guard/Guard.esm.js +1 -1
  227. package/dist/components/guard/index.cjs.js +1 -1
  228. package/dist/components/guard/index.esm.js +1 -1
  229. package/dist/components/guard.js +1 -1
  230. package/dist/components/index.cjs.js +1 -1
  231. package/dist/components/index.esm.js +2 -2
  232. package/dist/components/input/Input.cjs.js +1 -1
  233. package/dist/components/input/Input.cjs.js.map +1 -1
  234. package/dist/components/input/Input.esm.js +1 -1
  235. package/dist/components/input/index.cjs.js +1 -1
  236. package/dist/components/input/index.esm.js +1 -1
  237. package/dist/components/input.js +1 -1
  238. package/dist/components/login-button/LoginButton.cjs.js +1 -1
  239. package/dist/components/login-button/LoginButton.cjs.js.map +1 -1
  240. package/dist/components/login-button/LoginButton.esm.js +1 -1
  241. package/dist/components/login-button/index.cjs.js +1 -1
  242. package/dist/components/login-button/index.esm.js +1 -1
  243. package/dist/components/login-button.js +1 -1
  244. package/dist/components/login-modal/LoginModal.cjs.js +1 -1
  245. package/dist/components/login-modal/LoginModal.cjs.js.map +1 -1
  246. package/dist/components/login-modal/LoginModal.esm.js +1 -1
  247. package/dist/components/login-modal/index.cjs.js +1 -1
  248. package/dist/components/login-modal/index.esm.js +1 -1
  249. package/dist/components/login-modal.js +1 -1
  250. package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
  251. package/dist/components/logout-button/LogoutButton.cjs.js.map +1 -1
  252. package/dist/components/logout-button/LogoutButton.esm.js +1 -1
  253. package/dist/components/logout-button/index.cjs.js +1 -1
  254. package/dist/components/logout-button/index.esm.js +1 -1
  255. package/dist/components/logout-button.js +1 -1
  256. package/dist/components/menu/Menu.cjs.js +1 -1
  257. package/dist/components/menu/Menu.cjs.js.map +1 -1
  258. package/dist/components/menu/Menu.esm.js +1 -1
  259. package/dist/components/menu/Menu.esm.js.map +1 -1
  260. package/dist/components/menu/index.cjs.js +1 -1
  261. package/dist/components/menu/index.esm.js +1 -1
  262. package/dist/components/menu-item/MenuItem.cjs.js +6 -4
  263. package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
  264. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  265. package/dist/components/menu-item/MenuItem.esm.js +6 -4
  266. package/dist/components/menu-item/MenuItem.esm.js.map +1 -1
  267. package/dist/components/menu-item/MenuItem.styles.cjs.js +1 -1
  268. package/dist/components/menu-item/MenuItem.styles.cjs.js.map +1 -1
  269. package/dist/components/menu-item/MenuItem.styles.esm.js +1 -1
  270. package/dist/components/menu-item/MenuItem.styles.esm.js.map +1 -1
  271. package/dist/components/menu-item/index.cjs.js +1 -1
  272. package/dist/components/menu-item/index.esm.js +1 -1
  273. package/dist/components/menu-item.js +1 -1
  274. package/dist/components/menu.js +1 -1
  275. package/dist/components/provider/Provider.cjs.js +1 -1
  276. package/dist/components/provider/Provider.cjs.js.map +1 -1
  277. package/dist/components/provider/Provider.esm.js +1 -1
  278. package/dist/components/provider/index.cjs.js +1 -1
  279. package/dist/components/provider/index.esm.js +1 -1
  280. package/dist/components/provider.js +1 -1
  281. package/dist/components/select/Select.cjs.js +1 -1
  282. package/dist/components/select/Select.cjs.js.map +1 -1
  283. package/dist/components/select/Select.esm.js +1 -1
  284. package/dist/components/select/Select.esm.js.map +1 -1
  285. package/dist/components/select/index.cjs.js +1 -1
  286. package/dist/components/select/index.esm.js +1 -1
  287. package/dist/components/select-option/SelectOption.cjs.js +1 -1
  288. package/dist/components/select-option/SelectOption.cjs.js.map +1 -1
  289. package/dist/components/select-option/SelectOption.esm.js +1 -1
  290. package/dist/components/select-option/index.cjs.js +1 -1
  291. package/dist/components/select-option/index.esm.js +1 -1
  292. package/dist/components/select-option.js +1 -1
  293. package/dist/components/select.js +1 -1
  294. package/dist/components/signup-button/SignupButton.cjs.js +1 -1
  295. package/dist/components/signup-button/SignupButton.cjs.js.map +1 -1
  296. package/dist/components/signup-button/SignupButton.esm.js +1 -1
  297. package/dist/components/signup-button/index.cjs.js +1 -1
  298. package/dist/components/signup-button/index.esm.js +1 -1
  299. package/dist/components/signup-button.js +1 -1
  300. package/dist/components/solid-emblem/SolidEmblem.cjs.js +2 -0
  301. package/dist/components/solid-emblem/SolidEmblem.cjs.js.map +1 -0
  302. package/dist/components/solid-emblem/SolidEmblem.d.ts +6 -0
  303. package/dist/components/solid-emblem/SolidEmblem.d.ts.map +1 -0
  304. package/dist/components/solid-emblem/SolidEmblem.esm.js +178 -0
  305. package/dist/components/solid-emblem/SolidEmblem.esm.js.map +1 -0
  306. package/dist/components/solid-emblem/SolidEmblem.styles.cjs.js +2 -0
  307. package/dist/components/solid-emblem/SolidEmblem.styles.cjs.js.map +1 -0
  308. package/dist/components/solid-emblem/SolidEmblem.styles.esm.js +7 -0
  309. package/dist/components/solid-emblem/SolidEmblem.styles.esm.js.map +1 -0
  310. package/dist/components/solid-emblem/index.cjs.js +2 -0
  311. package/dist/components/solid-emblem/index.cjs.js.map +1 -0
  312. package/dist/components/solid-emblem/index.d.ts +4 -0
  313. package/dist/components/solid-emblem/index.d.ts.map +1 -0
  314. package/dist/components/solid-emblem/index.esm.js +7 -0
  315. package/dist/components/solid-emblem/index.esm.js.map +1 -0
  316. package/dist/components/solid-emblem.js +2 -0
  317. package/dist/components.js +23 -23
  318. package/dist/create/create.cjs.js.map +1 -1
  319. package/dist/create/create.esm.js.map +1 -1
  320. package/dist/create/index.cjs.js.map +1 -1
  321. package/dist/footer/index.cjs.js +1 -1
  322. package/dist/footer/index.esm.js +1 -1
  323. package/dist/header/index.cjs.js +1 -1
  324. package/dist/header/index.cjs.js.map +1 -1
  325. package/dist/header/index.esm.js +1 -1
  326. package/dist/header/index.esm.js.map +1 -1
  327. package/dist/index.js +6 -7
  328. package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
  329. package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
  330. package/dist/lib/auth/context.cjs.js.map +1 -1
  331. package/dist/lib/auth/index.cjs.js +1 -1
  332. package/dist/lib/auth/index.esm.js +5 -4
  333. package/dist/lib/components/ids.cjs.js.map +1 -1
  334. package/dist/lib/components/ids.esm.js.map +1 -1
  335. package/dist/lib/components/index.cjs.js +1 -1
  336. package/dist/lib/components/index.esm.js +6 -5
  337. package/dist/lib/components/traits/DialogTrait.cjs.js.map +1 -1
  338. package/dist/lib/components/traits/DialogTrait.esm.js.map +1 -1
  339. package/dist/lib/components/traits/InputTrait.cjs.js +1 -1
  340. package/dist/lib/components/traits/InputTrait.cjs.js.map +1 -1
  341. package/dist/lib/components/traits/InputTrait.d.ts +1 -0
  342. package/dist/lib/components/traits/InputTrait.d.ts.map +1 -1
  343. package/dist/lib/components/traits/InputTrait.esm.js +3 -2
  344. package/dist/lib/components/traits/InputTrait.esm.js.map +1 -1
  345. package/dist/lib/components/traits/index.cjs.js +1 -1
  346. package/dist/lib/components/traits/index.esm.js +3 -2
  347. package/dist/lib/components/web-component/WebComponent.cjs.js +1 -1
  348. package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -1
  349. package/dist/lib/components/web-component/WebComponent.d.ts.map +1 -1
  350. package/dist/lib/components/web-component/WebComponent.esm.js +1 -6
  351. package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -1
  352. package/dist/lib/components/web-component/WebComponent.styles.cjs.js.map +1 -1
  353. package/dist/lib/components/web-component/WebComponent.styles.esm.js.map +1 -1
  354. package/dist/lib/components/web-component/index.cjs.js +1 -1
  355. package/dist/lib/components/web-component/index.esm.js +2 -1
  356. package/dist/lib/dialogs/context.cjs.js.map +1 -1
  357. package/dist/lib/dialogs/index.cjs.js +1 -1
  358. package/dist/lib/dialogs/index.esm.js +6 -5
  359. package/dist/lib/forms/rdfHelper.d.ts +4 -0
  360. package/dist/lib/forms/rdfHelper.d.ts.map +1 -0
  361. package/dist/lib/log.cjs.js +1 -1
  362. package/dist/lib/log.cjs.js.map +1 -1
  363. package/dist/lib/log.esm.js +1 -1
  364. package/dist/lib/log.esm.js.map +1 -1
  365. package/dist/lib/messageArea.cjs.js.map +1 -1
  366. package/dist/lib/messageArea.esm.js.map +1 -1
  367. package/dist/lib/ns.cjs.js.map +1 -1
  368. package/dist/lib/pad.cjs.js +1 -1
  369. package/dist/lib/pad.cjs.js.map +1 -1
  370. package/dist/lib/pad.esm.js +1 -1
  371. package/dist/lib/pad.esm.js.map +1 -1
  372. package/dist/lib/participation.cjs.js.map +1 -1
  373. package/dist/lib/participation.esm.js.map +1 -1
  374. package/dist/lib/preferences.cjs.js +1 -1
  375. package/dist/lib/preferences.cjs.js.map +1 -1
  376. package/dist/lib/preferences.esm.js +1 -1
  377. package/dist/lib/preferences.esm.js.map +1 -1
  378. package/dist/lib/table.cjs.js.map +1 -1
  379. package/dist/lib/table.esm.js.map +1 -1
  380. package/dist/lib/tabs.cjs.js +1 -1
  381. package/dist/lib/tabs.cjs.js.map +1 -1
  382. package/dist/lib/tabs.esm.js +1 -1
  383. package/dist/lib/tabs.esm.js.map +1 -1
  384. package/dist/loader.js +6 -7
  385. package/dist/login/login.cjs.js +1 -1
  386. package/dist/login/login.cjs.js.map +1 -1
  387. package/dist/login/login.esm.js +1 -1
  388. package/dist/login/login.esm.js.map +1 -1
  389. package/dist/matrix/index.cjs.js.map +1 -1
  390. package/dist/matrix/matrix.cjs.js.map +1 -1
  391. package/dist/matrix/matrix.esm.js.map +1 -1
  392. package/dist/media/media-capture.cjs.js.map +1 -1
  393. package/dist/media/media-capture.esm.js.map +1 -1
  394. package/dist/signup/signup.cjs.js.map +1 -1
  395. package/dist/signup/signup.esm.js.map +1 -1
  396. package/dist/solid-ui.js +321 -1380
  397. package/dist/solid-ui.min.js +321 -1380
  398. package/dist/solid-ui.min.js.map +1 -1
  399. package/dist/theme.css +1 -1
  400. package/dist/utils/headerFooterHelpers.cjs.js.map +1 -1
  401. package/dist/utils/headerFooterHelpers.esm.js.map +1 -1
  402. package/dist/utils/index.cjs.js +2 -2
  403. package/dist/utils/index.cjs.js.map +1 -1
  404. package/dist/utils/index.esm.js +1 -1
  405. package/dist/utils/index.esm.js.map +1 -1
  406. package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
  407. package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
  408. package/dist/utils/keyHelpers/accessData.esm.js +1 -1
  409. package/dist/utils/keyHelpers/accessData.esm.js.map +1 -1
  410. package/dist/utils/keyHelpers/acl.cjs.js.map +1 -1
  411. package/dist/utils/keyHelpers/acl.esm.js.map +1 -1
  412. package/dist/utils/keyHelpers/otherHelpers.cjs.js.map +1 -1
  413. package/dist/utils/keyHelpers/otherHelpers.esm.js.map +1 -1
  414. package/dist/utils/label.cjs.js.map +1 -1
  415. package/dist/utils/label.esm.js.map +1 -1
  416. package/dist/v2/components/layout/footer/index.cjs.js +1 -1
  417. package/dist/v2/components/layout/footer/index.esm.js +1 -0
  418. package/dist/v2/components/media/photoCapture/PhotoCapture.cjs.js.map +1 -1
  419. package/dist/v2/components/media/photoCapture/PhotoCapture.esm.js.map +1 -1
  420. package/dist/v2/components/media/photoCapture/index.cjs.js +1 -1
  421. package/dist/v2/components/media/photoCapture/index.esm.js +1 -0
  422. package/dist/widgets/buttons/iconLinks.cjs.js.map +1 -1
  423. package/dist/widgets/buttons/iconLinks.esm.js.map +1 -1
  424. package/dist/widgets/buttons.cjs.js.map +1 -1
  425. package/dist/widgets/buttons.esm.js.map +1 -1
  426. package/dist/widgets/dragAndDrop.cjs.js.map +1 -1
  427. package/dist/widgets/dragAndDrop.esm.js.map +1 -1
  428. package/dist/widgets/error.cjs.js.map +1 -1
  429. package/dist/widgets/error.esm.js.map +1 -1
  430. package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
  431. package/dist/widgets/forms/autocomplete/autocompleteField.esm.js.map +1 -1
  432. package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
  433. package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js.map +1 -1
  434. package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
  435. package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
  436. package/dist/widgets/forms/autocomplete/language.esm.js +1 -1
  437. package/dist/widgets/forms/autocomplete/language.esm.js.map +1 -1
  438. package/dist/widgets/forms/autocomplete/publicData.cjs.js +1 -1
  439. package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
  440. package/dist/widgets/forms/autocomplete/publicData.esm.js +1 -1
  441. package/dist/widgets/forms/autocomplete/publicData.esm.js.map +1 -1
  442. package/dist/widgets/forms/basic.cjs.js.map +1 -1
  443. package/dist/widgets/forms/basic.esm.js.map +1 -1
  444. package/dist/widgets/forms/fieldFunction.cjs.js.map +1 -1
  445. package/dist/widgets/forms/fieldParams.cjs.js.map +1 -1
  446. package/dist/widgets/forms/fieldParams.esm.js.map +1 -1
  447. package/dist/widgets/forms/formStyle.cjs.js.map +1 -1
  448. package/dist/widgets/forms/formStyle.esm.js.map +1 -1
  449. package/dist/widgets/forms.cjs.js +1 -1
  450. package/dist/widgets/forms.cjs.js.map +1 -1
  451. package/dist/widgets/forms.esm.js +1 -1
  452. package/dist/widgets/forms.esm.js.map +1 -1
  453. package/dist/widgets/index.cjs.js +1 -1
  454. package/dist/widgets/index.esm.js +65 -65
  455. package/dist/widgets/multiSelect.cjs.js.map +1 -1
  456. package/dist/widgets/multiSelect.esm.js.map +1 -1
  457. package/dist/widgets/peoplePicker.cjs.js.map +1 -1
  458. package/dist/widgets/peoplePicker.esm.js.map +1 -1
  459. package/dist/widgets/widgetHelpers.cjs.js.map +1 -1
  460. package/dist/widgets/widgetHelpers.esm.js.map +1 -1
  461. package/package.json +14 -11
  462. package/dist/chunks/DialogProvider-DphduSXG.js.map +0 -1
  463. package/dist/chunks/account-CFhrB0LO.js.map +0 -1
  464. package/dist/chunks/avatar-D281qln0.js.map +0 -1
  465. package/dist/chunks/combobox-Dtgc8qqO.js +0 -354
  466. package/dist/chunks/combobox-Dtgc8qqO.js.map +0 -1
  467. package/dist/chunks/components-BlEGdx4i.js.map +0 -1
  468. package/dist/chunks/dialog-DlBtmOm6.js.map +0 -1
  469. package/dist/chunks/header-Bqd2CEK3.js +0 -1486
  470. package/dist/chunks/header-Bqd2CEK3.js.map +0 -1
  471. package/dist/chunks/iconBase-DJ0zbNSL.js +0 -31
  472. package/dist/chunks/iconBase-DJ0zbNSL.js.map +0 -1
  473. package/dist/chunks/menu-aQiqq1ET.js.map +0 -1
  474. package/dist/chunks/menu-item-DBy4o-M4.js.map +0 -1
  475. package/dist/chunks/solid-logic.esm-7q6hmfIF.js.map +0 -1
  476. package/dist/chunks/src-BOU-JwWx.js.map +0 -1
  477. package/dist/components/header/index.cjs.js +0 -1
  478. package/dist/components/header/index.d.ts +0 -2
  479. package/dist/components/header/index.d.ts.map +0 -1
  480. package/dist/components/header/index.esm.js +0 -3
  481. package/dist/components/header.js +0 -2
  482. package/dist/lib/features.cjs.js +0 -2
  483. package/dist/lib/features.cjs.js.map +0 -1
  484. package/dist/lib/features.d.ts +0 -8
  485. package/dist/lib/features.d.ts.map +0 -1
  486. package/dist/lib/features.esm.js +0 -6
  487. package/dist/lib/features.esm.js.map +0 -1
  488. package/dist/solid-ui.js.map +0 -1
  489. package/dist/v2/components/actions/button/Button.d.ts +0 -97
  490. package/dist/v2/components/actions/button/Button.d.ts.map +0 -1
  491. package/dist/v2/components/actions/button/Button.test.d.ts +0 -1
  492. package/dist/v2/components/actions/button/Button.test.d.ts.map +0 -1
  493. package/dist/v2/components/actions/button/index.d.ts +0 -8
  494. package/dist/v2/components/actions/button/index.d.ts.map +0 -1
  495. package/dist/v2/components/auth/loginButton/LoginButton.cjs.js +0 -414
  496. package/dist/v2/components/auth/loginButton/LoginButton.cjs.js.map +0 -1
  497. package/dist/v2/components/auth/loginButton/LoginButton.esm.js +0 -519
  498. package/dist/v2/components/auth/loginButton/LoginButton.esm.js.map +0 -1
  499. package/dist/v2/components/auth/loginButton/downArrow.cjs.js +0 -9
  500. package/dist/v2/components/auth/loginButton/downArrow.cjs.js.map +0 -1
  501. package/dist/v2/components/auth/loginButton/downArrow.esm.js +0 -14
  502. package/dist/v2/components/auth/loginButton/downArrow.esm.js.map +0 -1
  503. package/dist/v2/components/auth/loginButton/index.cjs.js +0 -2
  504. package/dist/v2/components/auth/loginButton/index.cjs.js.map +0 -1
  505. package/dist/v2/components/auth/loginButton/index.esm.js +0 -7
  506. package/dist/v2/components/auth/loginButton/index.esm.js.map +0 -1
  507. package/dist/v2/components/auth/signupButton/SignupButton.cjs.js +0 -59
  508. package/dist/v2/components/auth/signupButton/SignupButton.cjs.js.map +0 -1
  509. package/dist/v2/components/auth/signupButton/SignupButton.esm.js +0 -98
  510. package/dist/v2/components/auth/signupButton/SignupButton.esm.js.map +0 -1
  511. package/dist/v2/components/auth/signupButton/index.cjs.js +0 -2
  512. package/dist/v2/components/auth/signupButton/index.cjs.js.map +0 -1
  513. package/dist/v2/components/auth/signupButton/index.esm.js +0 -7
  514. package/dist/v2/components/auth/signupButton/index.esm.js.map +0 -1
  515. package/dist/v2/components/forms/combobox/Combobox.d.ts +0 -82
  516. package/dist/v2/components/forms/combobox/Combobox.d.ts.map +0 -1
  517. package/dist/v2/components/forms/combobox/Combobox.test.d.ts +0 -1
  518. package/dist/v2/components/forms/combobox/Combobox.test.d.ts.map +0 -1
  519. package/dist/v2/components/forms/combobox/comboboxTypes.d.ts +0 -6
  520. package/dist/v2/components/forms/combobox/comboboxTypes.d.ts.map +0 -1
  521. package/dist/v2/components/forms/combobox/index.d.ts +0 -3
  522. package/dist/v2/components/forms/combobox/index.d.ts.map +0 -1
  523. package/dist/v2/components/forms/select/Select.d.ts +0 -68
  524. package/dist/v2/components/forms/select/Select.d.ts.map +0 -1
  525. package/dist/v2/components/forms/select/Select.test.d.ts +0 -1
  526. package/dist/v2/components/forms/select/Select.test.d.ts.map +0 -1
  527. package/dist/v2/components/forms/select/index.d.ts +0 -3
  528. package/dist/v2/components/forms/select/index.d.ts.map +0 -1
  529. package/dist/v2/components/forms/shared/downArrow.d.ts +0 -2
  530. package/dist/v2/components/forms/shared/downArrow.d.ts.map +0 -1
  531. package/dist/v2/components/forms/shared/keyboard.d.ts +0 -7
  532. package/dist/v2/components/forms/shared/keyboard.d.ts.map +0 -1
  533. package/dist/v2/components/forms/shared/listboxStyles.d.ts +0 -2
  534. package/dist/v2/components/forms/shared/listboxStyles.d.ts.map +0 -1
  535. package/dist/v2/components/forms/shared/listboxTemplate.d.ts +0 -11
  536. package/dist/v2/components/forms/shared/listboxTemplate.d.ts.map +0 -1
  537. package/dist/v2/components/forms/shared/optionTypes.d.ts +0 -6
  538. package/dist/v2/components/forms/shared/optionTypes.d.ts.map +0 -1
  539. package/dist/v2/components/layout/header/Header.cjs.js +0 -625
  540. package/dist/v2/components/layout/header/Header.cjs.js.map +0 -1
  541. package/dist/v2/components/layout/header/Header.d.ts +0 -160
  542. package/dist/v2/components/layout/header/Header.d.ts.map +0 -1
  543. package/dist/v2/components/layout/header/Header.esm.js +0 -873
  544. package/dist/v2/components/layout/header/Header.esm.js.map +0 -1
  545. package/dist/v2/components/layout/header/header.test.d.ts +0 -1
  546. package/dist/v2/components/layout/header/header.test.d.ts.map +0 -1
  547. package/dist/v2/components/layout/header/index.cjs.js +0 -2
  548. package/dist/v2/components/layout/header/index.cjs.js.map +0 -1
  549. package/dist/v2/components/layout/header/index.d.ts +0 -4
  550. package/dist/v2/components/layout/header/index.d.ts.map +0 -1
  551. package/dist/v2/components/layout/header/index.esm.js +0 -7
  552. package/dist/v2/components/layout/header/index.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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"}