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.
- package/dist/_virtual/~icons/app/solid-emblem.cjs.js +3 -0
- package/dist/_virtual/~icons/app/solid-emblem.cjs.js.map +1 -0
- package/dist/_virtual/~icons/app/solid-emblem.esm.js +11 -0
- package/dist/_virtual/~icons/app/solid-emblem.esm.js.map +1 -0
- package/dist/_virtual/~icons/lucide/chevron-down.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/chevron-down.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/circle-user.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/circle-user.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/log-in.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/log-in.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/log-out.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/log-out.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/user.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/user.esm.js +1 -0
- package/dist/_virtual/~icons/lucide/x.cjs.js +1 -1
- package/dist/_virtual/~icons/lucide/x.esm.js +1 -0
- package/dist/_virtual/~icons/svg-spinners/180-ring.cjs.js +1 -1
- package/dist/_virtual/~icons/svg-spinners/180-ring.esm.js +1 -0
- package/dist/acl/access-controller.cjs.js +1 -1
- package/dist/acl/access-controller.cjs.js.map +1 -1
- package/dist/acl/access-controller.esm.js.map +1 -1
- package/dist/acl/access-groups.cjs.js.map +1 -1
- package/dist/acl/access-groups.esm.js.map +1 -1
- package/dist/acl/acl-control.cjs.js +1 -1
- package/dist/acl/acl-control.cjs.js.map +1 -1
- package/dist/acl/acl-control.esm.js +1 -1
- package/dist/acl/acl-control.esm.js.map +1 -1
- package/dist/acl/acl.cjs.js.map +1 -1
- package/dist/acl/acl.esm.js.map +1 -1
- package/dist/acl/add-agent-buttons.cjs.js.map +1 -1
- package/dist/acl/add-agent-buttons.esm.js.map +1 -1
- package/dist/breakpoints.css +1 -0
- package/dist/breakpoints.css.d.ts +1 -0
- package/dist/chat/bookmarks.cjs.js +1 -1
- package/dist/chat/bookmarks.cjs.js.map +1 -1
- package/dist/chat/bookmarks.esm.js +1 -1
- package/dist/chat/bookmarks.esm.js.map +1 -1
- package/dist/chat/chatLogic.cjs.js.map +1 -1
- package/dist/chat/chatLogic.esm.js.map +1 -1
- package/dist/chat/dateFolder.cjs.js +1 -1
- package/dist/chat/dateFolder.cjs.js.map +1 -1
- package/dist/chat/dateFolder.esm.js +1 -1
- package/dist/chat/dateFolder.esm.js.map +1 -1
- package/dist/chat/infinite.cjs.js +1 -1
- package/dist/chat/infinite.cjs.js.map +1 -1
- package/dist/chat/infinite.esm.js +1 -1
- package/dist/chat/infinite.esm.js.map +1 -1
- package/dist/chat/keys.cjs.js +1 -1
- package/dist/chat/keys.cjs.js.map +1 -1
- package/dist/chat/keys.esm.js +1 -1
- package/dist/chat/keys.esm.js.map +1 -1
- package/dist/chat/message.cjs.js +1 -1
- package/dist/chat/message.cjs.js.map +1 -1
- package/dist/chat/message.esm.js +24 -24
- package/dist/chat/message.esm.js.map +1 -1
- package/dist/chat/messageTools.cjs.js.map +1 -1
- package/dist/chat/messageTools.esm.js.map +1 -1
- package/dist/chat/signature.cjs.js +1 -1
- package/dist/chat/signature.cjs.js.map +1 -1
- package/dist/chat/signature.esm.js +1 -1
- package/dist/chunks/{DialogProvider-DphduSXG.js → DialogProvider-Bt65G0Tk.js} +4 -4
- package/dist/chunks/DialogProvider-Bt65G0Tk.js.map +1 -0
- package/dist/chunks/{account-CFhrB0LO.js → account-jSZP2tZ5.js} +76 -60
- package/dist/chunks/account-jSZP2tZ5.js.map +1 -0
- package/dist/chunks/{auth-Cpf3HYqF.js → auth-CZOEEeJ8.js} +23 -23
- package/dist/chunks/{auth-Cpf3HYqF.js.map → auth-CZOEEeJ8.js.map} +1 -1
- package/dist/chunks/{avatar-D281qln0.js → avatar-BugsRJZg.js} +5 -5
- package/dist/chunks/avatar-BugsRJZg.js.map +1 -0
- package/dist/chunks/{button-DbKYu6-r.js → button-0s0lZdxm.js} +2 -2
- package/dist/chunks/{button-DbKYu6-r.js.map → button-0s0lZdxm.js.map} +1 -1
- package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js +1516 -0
- package/dist/chunks/chunk.K442ELDU-TtQSV9g1.js.map +1 -0
- package/dist/chunks/combobox-Cxi8xUMn.js +473 -0
- package/dist/chunks/combobox-Cxi8xUMn.js.map +1 -0
- package/dist/chunks/{combobox-option-Ck0mu4Gc.js → combobox-option-DiR3VpyT.js} +2 -2
- package/dist/chunks/{combobox-option-Ck0mu4Gc.js.map → combobox-option-DiR3VpyT.js.map} +1 -1
- package/dist/chunks/{components-BlEGdx4i.js → components-C1LEhsaK.js} +5 -9
- package/dist/chunks/components-C1LEhsaK.js.map +1 -0
- package/dist/chunks/{context-DJ_8r7Oc.js → context-uE5jJlS0.js} +2 -2
- package/dist/chunks/{context-DJ_8r7Oc.js.map → context-uE5jJlS0.js.map} +1 -1
- package/dist/chunks/decorators-BiCkPd_3.js.map +1 -1
- package/dist/chunks/{dialog-DlBtmOm6.js → dialog-BAzrHJ8w.js} +6 -6
- package/dist/chunks/dialog-BAzrHJ8w.js.map +1 -0
- package/dist/chunks/{dialog-content-CMeH_BD7.js → dialog-content-fdJrkCyB.js} +2 -2
- package/dist/chunks/{dialog-content-CMeH_BD7.js.map → dialog-content-fdJrkCyB.js.map} +1 -1
- package/dist/chunks/{dialog-footer-D0zzIMlx.js → dialog-footer-Bs_p2Nn9.js} +2 -2
- package/dist/chunks/{dialog-footer-D0zzIMlx.js.map → dialog-footer-Bs_p2Nn9.js.map} +1 -1
- package/dist/chunks/{dialog-header-DeC1iiLD.js → dialog-header-CWIAAoDo.js} +2 -2
- package/dist/chunks/{dialog-header-DeC1iiLD.js.map → dialog-header-CWIAAoDo.js.map} +1 -1
- package/dist/chunks/{dialogs-root-BcUcRuAt.js → dialogs-root-Cv932Aqm.js} +3 -3
- package/dist/chunks/{dialogs-root-BcUcRuAt.js.map → dialogs-root-Cv932Aqm.js.map} +1 -1
- package/dist/chunks/{footer-Bxe4WPgl.js → footer-kVa_uMeQ.js} +3 -3
- package/dist/chunks/{footer-Bxe4WPgl.js.map → footer-kVa_uMeQ.js.map} +1 -1
- package/dist/chunks/{guard-Da3znlJI.js → guard-Cml6dHTv.js} +4 -4
- package/dist/chunks/{guard-Da3znlJI.js.map → guard-Cml6dHTv.js.map} +1 -1
- package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js → headerFooterHelpers-BiZ6X10e.js} +15 -15
- package/dist/chunks/{headerFooterHelpers-5LYv-0Rt.js.map → headerFooterHelpers-BiZ6X10e.js.map} +1 -1
- package/dist/chunks/{input-Bkzi4zSV.js → input-BF224Jid.js} +2 -2
- package/dist/chunks/{input-Bkzi4zSV.js.map → input-BF224Jid.js.map} +1 -1
- package/dist/chunks/{jsonld-DZG2v1pE.js → jsonld-Cd-ZhJmZ.js} +54 -54
- package/dist/chunks/{jsonld-DZG2v1pE.js.map → jsonld-Cd-ZhJmZ.js.map} +1 -1
- package/dist/chunks/lit-C4H1jI4q.js.map +1 -1
- package/dist/chunks/{login-button-C603hM0G.js → login-button-pe1-DVNZ.js} +5 -5
- package/dist/chunks/{login-button-C603hM0G.js.map → login-button-pe1-DVNZ.js.map} +1 -1
- package/dist/chunks/{logout-button-Cxzpq-C3.js → logout-button-C5dtQiBB.js} +5 -5
- package/dist/chunks/{logout-button-Cxzpq-C3.js.map → logout-button-C5dtQiBB.js.map} +1 -1
- package/dist/chunks/{menu-aQiqq1ET.js → menu-DNcuV-1J.js} +183 -1693
- package/dist/chunks/menu-DNcuV-1J.js.map +1 -0
- package/dist/chunks/{menu-item-DBy4o-M4.js → menu-item-CWg-eS4V.js} +8 -6
- package/dist/chunks/menu-item-CWg-eS4V.js.map +1 -0
- package/dist/chunks/photo-capture-tiBsdSbA.js.map +1 -1
- package/dist/chunks/{provider-DZmdgerD.js → provider-DRxSExO6.js} +5 -5
- package/dist/chunks/{provider-DZmdgerD.js.map → provider-DRxSExO6.js.map} +1 -1
- package/dist/chunks/{select-wczAzbZF.js → select-D8dW53pr.js} +2 -2
- package/dist/chunks/{select-wczAzbZF.js.map → select-D8dW53pr.js.map} +1 -1
- package/dist/chunks/{select-option-hd_d1RNj.js → select-option-B-6ULCpQ.js} +2 -2
- package/dist/chunks/{select-option-hd_d1RNj.js.map → select-option-B-6ULCpQ.js.map} +1 -1
- package/dist/chunks/{signup-button-CsRaOUI4.js → signup-button-QvYELqb6.js} +5 -5
- package/dist/chunks/{signup-button-CsRaOUI4.js.map → signup-button-QvYELqb6.js.map} +1 -1
- package/dist/chunks/solid-emblem-BDzhMTjL.js +185 -0
- package/dist/chunks/solid-emblem-BDzhMTjL.js.map +1 -0
- package/dist/chunks/{solid-logic.esm-7q6hmfIF.js → solid-logic.esm-BhVcNu8u.js} +2517 -2521
- package/dist/chunks/solid-logic.esm-BhVcNu8u.js.map +1 -0
- package/dist/chunks/{src-BOU-JwWx.js → src-DYvSns7X.js} +2378 -2354
- package/dist/chunks/src-DYvSns7X.js.map +1 -0
- package/dist/components/account/Account.cjs.js +7 -2
- package/dist/components/account/Account.cjs.js.map +1 -1
- package/dist/components/account/Account.d.ts +8 -1
- package/dist/components/account/Account.d.ts.map +1 -1
- package/dist/components/account/Account.esm.js +64 -48
- package/dist/components/account/Account.esm.js.map +1 -1
- package/dist/components/account/Account.stories.d.ts +3 -8
- package/dist/components/account/Account.stories.d.ts.map +1 -1
- package/dist/components/account/Account.styles.cjs.js +1 -1
- package/dist/components/account/Account.styles.cjs.js.map +1 -1
- package/dist/components/account/Account.styles.esm.js +1 -1
- package/dist/components/account/Account.styles.esm.js.map +1 -1
- package/dist/components/account/index.cjs.js +1 -1
- package/dist/components/account/index.cjs.js.map +1 -1
- package/dist/components/account/index.d.ts +2 -2
- package/dist/components/account/index.d.ts.map +1 -1
- package/dist/components/account/index.esm.js +1 -1
- package/dist/components/account/index.esm.js.map +1 -1
- package/dist/components/account.js +1 -1
- package/dist/components/avatar/Avatar.cjs.js +1 -1
- package/dist/components/avatar/Avatar.cjs.js.map +1 -1
- package/dist/components/avatar/Avatar.esm.js +1 -1
- package/dist/components/avatar/Avatar.styles.cjs.js +1 -1
- package/dist/components/avatar/Avatar.styles.cjs.js.map +1 -1
- package/dist/components/avatar/Avatar.styles.esm.js +1 -1
- package/dist/components/avatar/Avatar.styles.esm.js.map +1 -1
- package/dist/components/avatar/index.cjs.js +1 -1
- package/dist/components/avatar/index.esm.js +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/button/Button.cjs.js +1 -1
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.esm.js +1 -1
- package/dist/components/button/Button.esm.js.map +1 -1
- package/dist/components/button/index.cjs.js +1 -1
- package/dist/components/button/index.esm.js +3 -3
- package/dist/components/button.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +57 -25
- package/dist/components/combobox/Combobox.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +22 -3
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.esm.js +220 -101
- package/dist/components/combobox/Combobox.esm.js.map +1 -1
- package/dist/components/combobox/Combobox.styles.cjs.js +1 -1
- package/dist/components/combobox/Combobox.styles.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.styles.esm.js +1 -1
- package/dist/components/combobox/Combobox.styles.esm.js.map +1 -1
- package/dist/components/combobox/index.cjs.js +1 -1
- package/dist/components/combobox/index.esm.js +1 -1
- package/dist/components/combobox-option/ComboboxOption.cjs.js +1 -1
- package/dist/components/combobox-option/ComboboxOption.cjs.js.map +1 -1
- package/dist/components/combobox-option/ComboboxOption.esm.js +1 -1
- package/dist/components/combobox-option/index.cjs.js +1 -1
- package/dist/components/combobox-option/index.esm.js +1 -1
- package/dist/components/combobox-option.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/dialog/Dialog.cjs.js +2 -2
- package/dist/components/dialog/Dialog.cjs.js.map +1 -1
- package/dist/components/dialog/Dialog.d.ts.map +1 -1
- package/dist/components/dialog/Dialog.esm.js +2 -2
- package/dist/components/dialog/Dialog.esm.js.map +1 -1
- package/dist/components/dialog/index.cjs.js +1 -1
- package/dist/components/dialog/index.esm.js +1 -1
- package/dist/components/dialog-content/DialogContent.cjs.js +1 -1
- package/dist/components/dialog-content/DialogContent.cjs.js.map +1 -1
- package/dist/components/dialog-content/DialogContent.esm.js +1 -1
- package/dist/components/dialog-content/DialogContent.esm.js.map +1 -1
- package/dist/components/dialog-content/index.cjs.js +1 -1
- package/dist/components/dialog-content/index.esm.js +1 -1
- package/dist/components/dialog-content.js +1 -1
- package/dist/components/dialog-footer/DialogFooter.cjs.js +1 -1
- package/dist/components/dialog-footer/DialogFooter.cjs.js.map +1 -1
- package/dist/components/dialog-footer/DialogFooter.esm.js +1 -1
- package/dist/components/dialog-footer/DialogFooter.esm.js.map +1 -1
- package/dist/components/dialog-footer/index.cjs.js +1 -1
- package/dist/components/dialog-footer/index.esm.js +1 -1
- package/dist/components/dialog-footer.js +1 -1
- package/dist/components/dialog-header/DialogHeader.cjs.js +1 -1
- package/dist/components/dialog-header/DialogHeader.cjs.js.map +1 -1
- package/dist/components/dialog-header/DialogHeader.esm.js +1 -1
- package/dist/components/dialog-header/DialogHeader.esm.js.map +1 -1
- package/dist/components/dialog-header/index.cjs.js +1 -1
- package/dist/components/dialog-header/index.esm.js +1 -1
- package/dist/components/dialog-header.js +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js +1 -1
- package/dist/components/dialog-provider/DialogProvider.cjs.js.map +1 -1
- package/dist/components/dialog-provider/DialogProvider.esm.js +2 -2
- package/dist/components/dialog-provider/DialogProvider.esm.js.map +1 -1
- package/dist/components/dialog-provider/index.cjs.js +1 -1
- package/dist/components/dialog-provider/index.esm.js +1 -1
- package/dist/components/dialog-provider.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialogs-root/DialogsRoot.cjs.js +1 -1
- package/dist/components/dialogs-root/DialogsRoot.cjs.js.map +1 -1
- package/dist/components/dialogs-root/DialogsRoot.esm.js +1 -1
- package/dist/components/dialogs-root/index.cjs.js +1 -1
- package/dist/components/dialogs-root/index.esm.js +1 -1
- package/dist/components/dialogs-root.js +1 -1
- package/dist/components/footer.js +1 -1
- package/dist/components/guard/Guard.cjs.js +1 -1
- package/dist/components/guard/Guard.cjs.js.map +1 -1
- package/dist/components/guard/Guard.esm.js +1 -1
- package/dist/components/guard/index.cjs.js +1 -1
- package/dist/components/guard/index.esm.js +1 -1
- package/dist/components/guard.js +1 -1
- package/dist/components/index.cjs.js +1 -1
- package/dist/components/index.esm.js +2 -2
- package/dist/components/input/Input.cjs.js +1 -1
- package/dist/components/input/Input.cjs.js.map +1 -1
- package/dist/components/input/Input.esm.js +1 -1
- package/dist/components/input/index.cjs.js +1 -1
- package/dist/components/input/index.esm.js +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/login-button/LoginButton.cjs.js +1 -1
- package/dist/components/login-button/LoginButton.cjs.js.map +1 -1
- package/dist/components/login-button/LoginButton.esm.js +1 -1
- package/dist/components/login-button/index.cjs.js +1 -1
- package/dist/components/login-button/index.esm.js +1 -1
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal/LoginModal.cjs.js +1 -1
- package/dist/components/login-modal/LoginModal.cjs.js.map +1 -1
- package/dist/components/login-modal/LoginModal.esm.js +1 -1
- package/dist/components/login-modal/index.cjs.js +1 -1
- package/dist/components/login-modal/index.esm.js +1 -1
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button/LogoutButton.cjs.js +1 -1
- package/dist/components/logout-button/LogoutButton.cjs.js.map +1 -1
- package/dist/components/logout-button/LogoutButton.esm.js +1 -1
- package/dist/components/logout-button/index.cjs.js +1 -1
- package/dist/components/logout-button/index.esm.js +1 -1
- package/dist/components/logout-button.js +1 -1
- package/dist/components/menu/Menu.cjs.js +1 -1
- package/dist/components/menu/Menu.cjs.js.map +1 -1
- package/dist/components/menu/Menu.esm.js +1 -1
- package/dist/components/menu/Menu.esm.js.map +1 -1
- package/dist/components/menu/index.cjs.js +1 -1
- package/dist/components/menu/index.esm.js +1 -1
- package/dist/components/menu-item/MenuItem.cjs.js +6 -4
- package/dist/components/menu-item/MenuItem.cjs.js.map +1 -1
- package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
- package/dist/components/menu-item/MenuItem.esm.js +6 -4
- package/dist/components/menu-item/MenuItem.esm.js.map +1 -1
- package/dist/components/menu-item/MenuItem.styles.cjs.js +1 -1
- package/dist/components/menu-item/MenuItem.styles.cjs.js.map +1 -1
- package/dist/components/menu-item/MenuItem.styles.esm.js +1 -1
- package/dist/components/menu-item/MenuItem.styles.esm.js.map +1 -1
- package/dist/components/menu-item/index.cjs.js +1 -1
- package/dist/components/menu-item/index.esm.js +1 -1
- package/dist/components/menu-item.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/provider/Provider.cjs.js +1 -1
- package/dist/components/provider/Provider.cjs.js.map +1 -1
- package/dist/components/provider/Provider.esm.js +1 -1
- package/dist/components/provider/index.cjs.js +1 -1
- package/dist/components/provider/index.esm.js +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/select/Select.cjs.js +1 -1
- package/dist/components/select/Select.cjs.js.map +1 -1
- package/dist/components/select/Select.esm.js +1 -1
- package/dist/components/select/Select.esm.js.map +1 -1
- package/dist/components/select/index.cjs.js +1 -1
- package/dist/components/select/index.esm.js +1 -1
- package/dist/components/select-option/SelectOption.cjs.js +1 -1
- package/dist/components/select-option/SelectOption.cjs.js.map +1 -1
- package/dist/components/select-option/SelectOption.esm.js +1 -1
- package/dist/components/select-option/index.cjs.js +1 -1
- package/dist/components/select-option/index.esm.js +1 -1
- package/dist/components/select-option.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/signup-button/SignupButton.cjs.js +1 -1
- package/dist/components/signup-button/SignupButton.cjs.js.map +1 -1
- package/dist/components/signup-button/SignupButton.esm.js +1 -1
- package/dist/components/signup-button/index.cjs.js +1 -1
- package/dist/components/signup-button/index.esm.js +1 -1
- package/dist/components/signup-button.js +1 -1
- package/dist/components/solid-emblem/SolidEmblem.cjs.js +2 -0
- package/dist/components/solid-emblem/SolidEmblem.cjs.js.map +1 -0
- package/dist/components/solid-emblem/SolidEmblem.d.ts +6 -0
- package/dist/components/solid-emblem/SolidEmblem.d.ts.map +1 -0
- package/dist/components/solid-emblem/SolidEmblem.esm.js +178 -0
- package/dist/components/solid-emblem/SolidEmblem.esm.js.map +1 -0
- package/dist/components/solid-emblem/SolidEmblem.styles.cjs.js +2 -0
- package/dist/components/solid-emblem/SolidEmblem.styles.cjs.js.map +1 -0
- package/dist/components/solid-emblem/SolidEmblem.styles.esm.js +7 -0
- package/dist/components/solid-emblem/SolidEmblem.styles.esm.js.map +1 -0
- package/dist/components/solid-emblem/index.cjs.js +2 -0
- package/dist/components/solid-emblem/index.cjs.js.map +1 -0
- package/dist/components/solid-emblem/index.d.ts +4 -0
- package/dist/components/solid-emblem/index.d.ts.map +1 -0
- package/dist/components/solid-emblem/index.esm.js +7 -0
- package/dist/components/solid-emblem/index.esm.js.map +1 -0
- package/dist/components/solid-emblem.js +2 -0
- package/dist/components.js +23 -23
- package/dist/create/create.cjs.js.map +1 -1
- package/dist/create/create.esm.js.map +1 -1
- package/dist/create/index.cjs.js.map +1 -1
- package/dist/footer/index.cjs.js +1 -1
- package/dist/footer/index.esm.js +1 -1
- package/dist/header/index.cjs.js +1 -1
- package/dist/header/index.cjs.js.map +1 -1
- package/dist/header/index.esm.js +1 -1
- package/dist/header/index.esm.js.map +1 -1
- package/dist/index.js +6 -7
- package/dist/lib/auth/SolidAuth.cjs.js.map +1 -1
- package/dist/lib/auth/SolidAuth.esm.js.map +1 -1
- package/dist/lib/auth/context.cjs.js.map +1 -1
- package/dist/lib/auth/index.cjs.js +1 -1
- package/dist/lib/auth/index.esm.js +5 -4
- package/dist/lib/components/ids.cjs.js.map +1 -1
- package/dist/lib/components/ids.esm.js.map +1 -1
- package/dist/lib/components/index.cjs.js +1 -1
- package/dist/lib/components/index.esm.js +6 -5
- package/dist/lib/components/traits/DialogTrait.cjs.js.map +1 -1
- package/dist/lib/components/traits/DialogTrait.esm.js.map +1 -1
- package/dist/lib/components/traits/InputTrait.cjs.js +1 -1
- package/dist/lib/components/traits/InputTrait.cjs.js.map +1 -1
- package/dist/lib/components/traits/InputTrait.d.ts +1 -0
- package/dist/lib/components/traits/InputTrait.d.ts.map +1 -1
- package/dist/lib/components/traits/InputTrait.esm.js +3 -2
- package/dist/lib/components/traits/InputTrait.esm.js.map +1 -1
- package/dist/lib/components/traits/index.cjs.js +1 -1
- package/dist/lib/components/traits/index.esm.js +3 -2
- package/dist/lib/components/web-component/WebComponent.cjs.js +1 -1
- package/dist/lib/components/web-component/WebComponent.cjs.js.map +1 -1
- package/dist/lib/components/web-component/WebComponent.d.ts.map +1 -1
- package/dist/lib/components/web-component/WebComponent.esm.js +1 -6
- package/dist/lib/components/web-component/WebComponent.esm.js.map +1 -1
- package/dist/lib/components/web-component/WebComponent.styles.cjs.js.map +1 -1
- package/dist/lib/components/web-component/WebComponent.styles.esm.js.map +1 -1
- package/dist/lib/components/web-component/index.cjs.js +1 -1
- package/dist/lib/components/web-component/index.esm.js +2 -1
- package/dist/lib/dialogs/context.cjs.js.map +1 -1
- package/dist/lib/dialogs/index.cjs.js +1 -1
- package/dist/lib/dialogs/index.esm.js +6 -5
- package/dist/lib/forms/rdfHelper.d.ts +4 -0
- package/dist/lib/forms/rdfHelper.d.ts.map +1 -0
- package/dist/lib/log.cjs.js +1 -1
- package/dist/lib/log.cjs.js.map +1 -1
- package/dist/lib/log.esm.js +1 -1
- package/dist/lib/log.esm.js.map +1 -1
- package/dist/lib/messageArea.cjs.js.map +1 -1
- package/dist/lib/messageArea.esm.js.map +1 -1
- package/dist/lib/ns.cjs.js.map +1 -1
- package/dist/lib/pad.cjs.js +1 -1
- package/dist/lib/pad.cjs.js.map +1 -1
- package/dist/lib/pad.esm.js +1 -1
- package/dist/lib/pad.esm.js.map +1 -1
- package/dist/lib/participation.cjs.js.map +1 -1
- package/dist/lib/participation.esm.js.map +1 -1
- package/dist/lib/preferences.cjs.js +1 -1
- package/dist/lib/preferences.cjs.js.map +1 -1
- package/dist/lib/preferences.esm.js +1 -1
- package/dist/lib/preferences.esm.js.map +1 -1
- package/dist/lib/table.cjs.js.map +1 -1
- package/dist/lib/table.esm.js.map +1 -1
- package/dist/lib/tabs.cjs.js +1 -1
- package/dist/lib/tabs.cjs.js.map +1 -1
- package/dist/lib/tabs.esm.js +1 -1
- package/dist/lib/tabs.esm.js.map +1 -1
- package/dist/loader.js +6 -7
- package/dist/login/login.cjs.js +1 -1
- package/dist/login/login.cjs.js.map +1 -1
- package/dist/login/login.esm.js +1 -1
- package/dist/login/login.esm.js.map +1 -1
- package/dist/matrix/index.cjs.js.map +1 -1
- package/dist/matrix/matrix.cjs.js.map +1 -1
- package/dist/matrix/matrix.esm.js.map +1 -1
- package/dist/media/media-capture.cjs.js.map +1 -1
- package/dist/media/media-capture.esm.js.map +1 -1
- package/dist/signup/signup.cjs.js.map +1 -1
- package/dist/signup/signup.esm.js.map +1 -1
- package/dist/solid-ui.js +321 -1380
- package/dist/solid-ui.min.js +321 -1380
- package/dist/solid-ui.min.js.map +1 -1
- package/dist/theme.css +1 -1
- package/dist/utils/headerFooterHelpers.cjs.js.map +1 -1
- package/dist/utils/headerFooterHelpers.esm.js.map +1 -1
- package/dist/utils/index.cjs.js +2 -2
- package/dist/utils/index.cjs.js.map +1 -1
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js +1 -1
- package/dist/utils/keyHelpers/accessData.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/accessData.esm.js +1 -1
- package/dist/utils/keyHelpers/accessData.esm.js.map +1 -1
- package/dist/utils/keyHelpers/acl.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/acl.esm.js.map +1 -1
- package/dist/utils/keyHelpers/otherHelpers.cjs.js.map +1 -1
- package/dist/utils/keyHelpers/otherHelpers.esm.js.map +1 -1
- package/dist/utils/label.cjs.js.map +1 -1
- package/dist/utils/label.esm.js.map +1 -1
- package/dist/v2/components/layout/footer/index.cjs.js +1 -1
- package/dist/v2/components/layout/footer/index.esm.js +1 -0
- package/dist/v2/components/media/photoCapture/PhotoCapture.cjs.js.map +1 -1
- package/dist/v2/components/media/photoCapture/PhotoCapture.esm.js.map +1 -1
- package/dist/v2/components/media/photoCapture/index.cjs.js +1 -1
- package/dist/v2/components/media/photoCapture/index.esm.js +1 -0
- package/dist/widgets/buttons/iconLinks.cjs.js.map +1 -1
- package/dist/widgets/buttons/iconLinks.esm.js.map +1 -1
- package/dist/widgets/buttons.cjs.js.map +1 -1
- package/dist/widgets/buttons.esm.js.map +1 -1
- package/dist/widgets/dragAndDrop.cjs.js.map +1 -1
- package/dist/widgets/dragAndDrop.esm.js.map +1 -1
- package/dist/widgets/error.cjs.js.map +1 -1
- package/dist/widgets/error.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompleteField.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/autocompletePicker.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/language.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/language.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/language.esm.js +1 -1
- package/dist/widgets/forms/autocomplete/language.esm.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.cjs.js +1 -1
- package/dist/widgets/forms/autocomplete/publicData.cjs.js.map +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js +1 -1
- package/dist/widgets/forms/autocomplete/publicData.esm.js.map +1 -1
- package/dist/widgets/forms/basic.cjs.js.map +1 -1
- package/dist/widgets/forms/basic.esm.js.map +1 -1
- package/dist/widgets/forms/fieldFunction.cjs.js.map +1 -1
- package/dist/widgets/forms/fieldParams.cjs.js.map +1 -1
- package/dist/widgets/forms/fieldParams.esm.js.map +1 -1
- package/dist/widgets/forms/formStyle.cjs.js.map +1 -1
- package/dist/widgets/forms/formStyle.esm.js.map +1 -1
- package/dist/widgets/forms.cjs.js +1 -1
- package/dist/widgets/forms.cjs.js.map +1 -1
- package/dist/widgets/forms.esm.js +1 -1
- package/dist/widgets/forms.esm.js.map +1 -1
- package/dist/widgets/index.cjs.js +1 -1
- package/dist/widgets/index.esm.js +65 -65
- package/dist/widgets/multiSelect.cjs.js.map +1 -1
- package/dist/widgets/multiSelect.esm.js.map +1 -1
- package/dist/widgets/peoplePicker.cjs.js.map +1 -1
- package/dist/widgets/peoplePicker.esm.js.map +1 -1
- package/dist/widgets/widgetHelpers.cjs.js.map +1 -1
- package/dist/widgets/widgetHelpers.esm.js.map +1 -1
- package/package.json +14 -11
- package/dist/chunks/DialogProvider-DphduSXG.js.map +0 -1
- package/dist/chunks/account-CFhrB0LO.js.map +0 -1
- package/dist/chunks/avatar-D281qln0.js.map +0 -1
- package/dist/chunks/combobox-Dtgc8qqO.js +0 -354
- package/dist/chunks/combobox-Dtgc8qqO.js.map +0 -1
- package/dist/chunks/components-BlEGdx4i.js.map +0 -1
- package/dist/chunks/dialog-DlBtmOm6.js.map +0 -1
- package/dist/chunks/header-Bqd2CEK3.js +0 -1486
- package/dist/chunks/header-Bqd2CEK3.js.map +0 -1
- package/dist/chunks/iconBase-DJ0zbNSL.js +0 -31
- package/dist/chunks/iconBase-DJ0zbNSL.js.map +0 -1
- package/dist/chunks/menu-aQiqq1ET.js.map +0 -1
- package/dist/chunks/menu-item-DBy4o-M4.js.map +0 -1
- package/dist/chunks/solid-logic.esm-7q6hmfIF.js.map +0 -1
- package/dist/chunks/src-BOU-JwWx.js.map +0 -1
- package/dist/components/header/index.cjs.js +0 -1
- package/dist/components/header/index.d.ts +0 -2
- package/dist/components/header/index.d.ts.map +0 -1
- package/dist/components/header/index.esm.js +0 -3
- package/dist/components/header.js +0 -2
- package/dist/lib/features.cjs.js +0 -2
- package/dist/lib/features.cjs.js.map +0 -1
- package/dist/lib/features.d.ts +0 -8
- package/dist/lib/features.d.ts.map +0 -1
- package/dist/lib/features.esm.js +0 -6
- package/dist/lib/features.esm.js.map +0 -1
- package/dist/solid-ui.js.map +0 -1
- package/dist/v2/components/actions/button/Button.d.ts +0 -97
- package/dist/v2/components/actions/button/Button.d.ts.map +0 -1
- package/dist/v2/components/actions/button/Button.test.d.ts +0 -1
- package/dist/v2/components/actions/button/Button.test.d.ts.map +0 -1
- package/dist/v2/components/actions/button/index.d.ts +0 -8
- package/dist/v2/components/actions/button/index.d.ts.map +0 -1
- package/dist/v2/components/auth/loginButton/LoginButton.cjs.js +0 -414
- package/dist/v2/components/auth/loginButton/LoginButton.cjs.js.map +0 -1
- package/dist/v2/components/auth/loginButton/LoginButton.esm.js +0 -519
- package/dist/v2/components/auth/loginButton/LoginButton.esm.js.map +0 -1
- package/dist/v2/components/auth/loginButton/downArrow.cjs.js +0 -9
- package/dist/v2/components/auth/loginButton/downArrow.cjs.js.map +0 -1
- package/dist/v2/components/auth/loginButton/downArrow.esm.js +0 -14
- package/dist/v2/components/auth/loginButton/downArrow.esm.js.map +0 -1
- package/dist/v2/components/auth/loginButton/index.cjs.js +0 -2
- package/dist/v2/components/auth/loginButton/index.cjs.js.map +0 -1
- package/dist/v2/components/auth/loginButton/index.esm.js +0 -7
- package/dist/v2/components/auth/loginButton/index.esm.js.map +0 -1
- package/dist/v2/components/auth/signupButton/SignupButton.cjs.js +0 -59
- package/dist/v2/components/auth/signupButton/SignupButton.cjs.js.map +0 -1
- package/dist/v2/components/auth/signupButton/SignupButton.esm.js +0 -98
- package/dist/v2/components/auth/signupButton/SignupButton.esm.js.map +0 -1
- package/dist/v2/components/auth/signupButton/index.cjs.js +0 -2
- package/dist/v2/components/auth/signupButton/index.cjs.js.map +0 -1
- package/dist/v2/components/auth/signupButton/index.esm.js +0 -7
- package/dist/v2/components/auth/signupButton/index.esm.js.map +0 -1
- package/dist/v2/components/forms/combobox/Combobox.d.ts +0 -82
- package/dist/v2/components/forms/combobox/Combobox.d.ts.map +0 -1
- package/dist/v2/components/forms/combobox/Combobox.test.d.ts +0 -1
- package/dist/v2/components/forms/combobox/Combobox.test.d.ts.map +0 -1
- package/dist/v2/components/forms/combobox/comboboxTypes.d.ts +0 -6
- package/dist/v2/components/forms/combobox/comboboxTypes.d.ts.map +0 -1
- package/dist/v2/components/forms/combobox/index.d.ts +0 -3
- package/dist/v2/components/forms/combobox/index.d.ts.map +0 -1
- package/dist/v2/components/forms/select/Select.d.ts +0 -68
- package/dist/v2/components/forms/select/Select.d.ts.map +0 -1
- package/dist/v2/components/forms/select/Select.test.d.ts +0 -1
- package/dist/v2/components/forms/select/Select.test.d.ts.map +0 -1
- package/dist/v2/components/forms/select/index.d.ts +0 -3
- package/dist/v2/components/forms/select/index.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/downArrow.d.ts +0 -2
- package/dist/v2/components/forms/shared/downArrow.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/keyboard.d.ts +0 -7
- package/dist/v2/components/forms/shared/keyboard.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/listboxStyles.d.ts +0 -2
- package/dist/v2/components/forms/shared/listboxStyles.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/listboxTemplate.d.ts +0 -11
- package/dist/v2/components/forms/shared/listboxTemplate.d.ts.map +0 -1
- package/dist/v2/components/forms/shared/optionTypes.d.ts +0 -6
- package/dist/v2/components/forms/shared/optionTypes.d.ts.map +0 -1
- package/dist/v2/components/layout/header/Header.cjs.js +0 -625
- package/dist/v2/components/layout/header/Header.cjs.js.map +0 -1
- package/dist/v2/components/layout/header/Header.d.ts +0 -160
- package/dist/v2/components/layout/header/Header.d.ts.map +0 -1
- package/dist/v2/components/layout/header/Header.esm.js +0 -873
- package/dist/v2/components/layout/header/Header.esm.js.map +0 -1
- package/dist/v2/components/layout/header/header.test.d.ts +0 -1
- package/dist/v2/components/layout/header/header.test.d.ts.map +0 -1
- package/dist/v2/components/layout/header/index.cjs.js +0 -2
- package/dist/v2/components/layout/header/index.cjs.js.map +0 -1
- package/dist/v2/components/layout/header/index.d.ts +0 -4
- package/dist/v2/components/layout/header/index.d.ts.map +0 -1
- package/dist/v2/components/layout/header/index.esm.js +0 -7
- package/dist/v2/components/layout/header/index.esm.js.map +0 -1
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
import { __exportAll as
|
|
2
|
-
import { makeDraggable as
|
|
3
|
-
import { errorMessageBlock as
|
|
4
|
-
import { Group as
|
|
5
|
-
import { createLinkForURI as
|
|
6
|
-
import { addStyleSheet as
|
|
7
|
-
import { fieldParams as
|
|
8
|
-
import { field as
|
|
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__ */
|
|
16
|
-
Group: () =>
|
|
17
|
-
GroupBuilder: () =>
|
|
18
|
-
GroupPicker: () =>
|
|
19
|
-
PeoplePicker: () =>
|
|
20
|
-
Person: () =>
|
|
21
|
-
addStyleSheet: () =>
|
|
22
|
-
allClassURIs: () =>
|
|
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: () =>
|
|
25
|
-
attachmentList: () =>
|
|
24
|
+
askName: () => p,
|
|
25
|
+
attachmentList: () => m,
|
|
26
26
|
basicField: () => ne,
|
|
27
27
|
buildCheckboxForm: () => de,
|
|
28
|
-
button: () =>
|
|
29
|
-
cancelButton: () =>
|
|
30
|
-
clearElement: () =>
|
|
31
|
-
complain: () =>
|
|
32
|
-
continueButton: () =>
|
|
33
|
-
createLinkDiv: () =>
|
|
34
|
-
createLinkForURI: () =>
|
|
35
|
-
createNameDiv: () =>
|
|
36
|
-
defaultAnnotationStore: () =>
|
|
37
|
-
deleteButtonWithCheck: () =>
|
|
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: () =>
|
|
40
|
-
extractLogURI: () =>
|
|
41
|
-
faviconOrDefault: () =>
|
|
42
|
-
field: () =>
|
|
43
|
-
fieldFunction: () =>
|
|
39
|
+
errorMessageBlock: () => r,
|
|
40
|
+
extractLogURI: () => w,
|
|
41
|
+
faviconOrDefault: () => T,
|
|
42
|
+
field: () => Z,
|
|
43
|
+
fieldFunction: () => Q,
|
|
44
44
|
fieldLabel: () => re,
|
|
45
|
-
fieldParams: () =>
|
|
45
|
+
fieldParams: () => X,
|
|
46
46
|
fieldStore: () => ie,
|
|
47
|
-
fileUploadButtonDiv: () =>
|
|
47
|
+
fileUploadButtonDiv: () => E,
|
|
48
48
|
findClosest: () => pe,
|
|
49
|
-
findImage: () =>
|
|
50
|
-
findImageFromURI: () =>
|
|
51
|
-
formatDateTime: () =>
|
|
49
|
+
findImage: () => D,
|
|
50
|
+
findImageFromURI: () => O,
|
|
51
|
+
formatDateTime: () => k,
|
|
52
52
|
formsFor: () => me,
|
|
53
|
-
iconForClass: () =>
|
|
54
|
-
imagesOf: () =>
|
|
55
|
-
index: () =>
|
|
56
|
-
isAudio: () =>
|
|
57
|
-
isImage: () =>
|
|
58
|
-
isVideo: () =>
|
|
59
|
-
linkButton: () =>
|
|
60
|
-
linkIcon: () =>
|
|
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: () =>
|
|
63
|
-
makeDropTarget: () =>
|
|
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: () =>
|
|
69
|
+
mostSpecificClassURI: () => $,
|
|
70
70
|
newButton: () => xe,
|
|
71
71
|
newThing: () => Se,
|
|
72
|
-
openHrefInOutlineMode: () =>
|
|
73
|
-
personTR: () =>
|
|
72
|
+
openHrefInOutlineMode: () => L,
|
|
73
|
+
personTR: () => R,
|
|
74
74
|
promptForNew: () => Ce,
|
|
75
75
|
propertiesForClass: () => we,
|
|
76
|
-
propertyTriage: () =>
|
|
76
|
+
propertyTriage: () => z,
|
|
77
77
|
publicData: () => oe,
|
|
78
|
-
refreshTree: () =>
|
|
79
|
-
removeButton: () =>
|
|
80
|
-
renderAsDiv: () =>
|
|
81
|
-
renderAsRow: () =>
|
|
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: () =>
|
|
86
|
-
selectorPanelRefresh: () =>
|
|
87
|
-
setImage: () =>
|
|
88
|
-
setName: () =>
|
|
85
|
+
selectorPanel: () => te,
|
|
86
|
+
selectorPanelRefresh: () => W,
|
|
87
|
+
setImage: () => G,
|
|
88
|
+
setName: () => K,
|
|
89
89
|
setVisible: () => ce,
|
|
90
|
-
shortDate: () =>
|
|
91
|
-
shortTime: () =>
|
|
90
|
+
shortDate: () => q,
|
|
91
|
+
shortTime: () => J,
|
|
92
92
|
sortByLabel: () => Te,
|
|
93
93
|
sortBySequence: () => Ee,
|
|
94
|
-
timestamp: () =>
|
|
95
|
-
uploadFiles: () =>
|
|
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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"}
|