slim-select 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/README.md +8 -0
  2. package/dist/render.d.ts +9 -2
  3. package/dist/select.d.ts +6 -6
  4. package/dist/settings.d.ts +0 -3
  5. package/dist/slimselect.cjs.js +152 -51
  6. package/dist/slimselect.css +1 -1
  7. package/dist/slimselect.css.map +1 -1
  8. package/dist/slimselect.es.js +152 -51
  9. package/dist/slimselect.global.js +152 -51
  10. package/dist/slimselect.js +152 -51
  11. package/dist/slimselect.min.js +1 -1
  12. package/dist/slimselect.umd.js +152 -51
  13. package/dist/slimselect.umd.min.js +1 -1
  14. package/dist/store.d.ts +5 -0
  15. package/package.json +1 -3
  16. package/src/slim-select/index.ts +3 -1
  17. package/src/slim-select/render.ts +167 -34
  18. package/src/slim-select/select.ts +35 -27
  19. package/src/slim-select/settings.ts +0 -4
  20. package/src/slim-select/slimselect.scss +112 -11
  21. package/src/slim-select/store.ts +19 -1
  22. package/src/vue/README.md +48 -0
  23. package/src/vue/dist/slim-select/helpers.d.ts +4 -0
  24. package/src/vue/dist/slim-select/index.d.ts +45 -0
  25. package/src/vue/dist/slim-select/render.d.ts +116 -0
  26. package/src/vue/dist/slim-select/select.d.ts +33 -0
  27. package/src/vue/dist/slim-select/settings.d.ts +30 -0
  28. package/src/vue/dist/slim-select/store.d.ts +76 -0
  29. package/src/vue/dist/slimselectvue.es.js +152 -51
  30. package/src/vue/dist/slimselectvue.global.js +152 -51
  31. package/src/vue/dist/slimselectvue.ssr.js +152 -51
  32. package/src/vue/dist/vue/hello.d.ts +2 -0
  33. package/src/vue/dist/vue/slimselect.vue.d.ts +286 -0
  34. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/code/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  35. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/code/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  36. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/code/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  37. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/code/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  38. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/code/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  39. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/code/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  40. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/code/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  41. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/semanticDiagnostics/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  42. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/semanticDiagnostics/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  43. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/semanticDiagnostics/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  44. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/semanticDiagnostics/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  45. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/semanticDiagnostics/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  46. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/semanticDiagnostics/cache/a8a4a8a1b06b6c8069e965f4a30a4b42013b830a +1 -0
  47. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/semanticDiagnostics/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  48. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/semanticDiagnostics/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  49. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/syntacticDiagnostics/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  50. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/syntacticDiagnostics/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  51. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/syntacticDiagnostics/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  52. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/syntacticDiagnostics/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  53. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/syntacticDiagnostics/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  54. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/syntacticDiagnostics/cache/a8a4a8a1b06b6c8069e965f4a30a4b42013b830a +1 -0
  55. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/syntacticDiagnostics/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  56. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/syntacticDiagnostics/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  57. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/068e7904209e205518dbc9726d632bbaf28bfc55 +0 -0
  58. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/06b75ecfe63fda3fcfaa42593fa1f22167f3a9f8 +0 -0
  59. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/2aa9d56fc4a9661ee8e3de277da5ee3f960713de +0 -0
  60. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/2c58b356be1a9572c64469d50a7a25c46f94aaeb +0 -0
  61. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/36d3fb579feb4cad7a15b7a2f509f338caf72fa0 +0 -0
  62. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/388b297c3f73fcba25b8174fda975235e5d12b5a +0 -0
  63. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/40e43895ec63e1e25aa7e278ca1e8c3adefc815d +0 -0
  64. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/645e188194be07518ebbb0a5b4304f5170fee599 +0 -0
  65. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/65515bf3a44aaf1306f589073f1c8b98be747f5f +0 -0
  66. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/6a357fe7542e07f7919ea9b22401027dd1e8a0c1 +0 -0
  67. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/72087cac150d02ed6d19e37d6f1436566d5ac798 +0 -0
  68. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/9ff120b6426a4c7a03236428f26a92772586c3e5 +0 -0
  69. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/a6917de673fc74a6cfca5133913982e54e58a7fb +0 -0
  70. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/aa4aee440d13b06b4bb05c36eee326513aa6c040 +0 -0
  71. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/b02a4d0c40fac4c7f9ea7acd7944ee8844afcedf +0 -0
  72. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/b21a02b948881426bc4dcff649fc4fba07ca34d2 +0 -0
  73. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/c10c11f9c426095ab3f504dd8b7622ad7ba7c8ed +0 -0
  74. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_1e8d68e0803222688213218fda500c83f6c6476e/types/cache/dc186595636217ded2d4a4cfbb789d68ea485b6b +0 -0
  75. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/code/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  76. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/code/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  77. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/code/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  78. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/code/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  79. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/code/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  80. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/code/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  81. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/code/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  82. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/semanticDiagnostics/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  83. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/semanticDiagnostics/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  84. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/semanticDiagnostics/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  85. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/semanticDiagnostics/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  86. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/semanticDiagnostics/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  87. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/semanticDiagnostics/cache/a8a4a8a1b06b6c8069e965f4a30a4b42013b830a +1 -0
  88. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/semanticDiagnostics/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  89. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/semanticDiagnostics/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  90. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/syntacticDiagnostics/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  91. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/syntacticDiagnostics/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  92. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/syntacticDiagnostics/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  93. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/syntacticDiagnostics/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  94. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/syntacticDiagnostics/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  95. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/syntacticDiagnostics/cache/a8a4a8a1b06b6c8069e965f4a30a4b42013b830a +1 -0
  96. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/syntacticDiagnostics/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  97. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/syntacticDiagnostics/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  98. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/068e7904209e205518dbc9726d632bbaf28bfc55 +0 -0
  99. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/06b75ecfe63fda3fcfaa42593fa1f22167f3a9f8 +0 -0
  100. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/2aa9d56fc4a9661ee8e3de277da5ee3f960713de +0 -0
  101. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/2c58b356be1a9572c64469d50a7a25c46f94aaeb +0 -0
  102. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/36d3fb579feb4cad7a15b7a2f509f338caf72fa0 +0 -0
  103. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/388b297c3f73fcba25b8174fda975235e5d12b5a +0 -0
  104. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/40e43895ec63e1e25aa7e278ca1e8c3adefc815d +0 -0
  105. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/645e188194be07518ebbb0a5b4304f5170fee599 +0 -0
  106. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/65515bf3a44aaf1306f589073f1c8b98be747f5f +0 -0
  107. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/6a357fe7542e07f7919ea9b22401027dd1e8a0c1 +0 -0
  108. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/72087cac150d02ed6d19e37d6f1436566d5ac798 +0 -0
  109. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/9ff120b6426a4c7a03236428f26a92772586c3e5 +0 -0
  110. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/a6917de673fc74a6cfca5133913982e54e58a7fb +0 -0
  111. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/aa4aee440d13b06b4bb05c36eee326513aa6c040 +0 -0
  112. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/b02a4d0c40fac4c7f9ea7acd7944ee8844afcedf +0 -0
  113. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/b21a02b948881426bc4dcff649fc4fba07ca34d2 +0 -0
  114. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/c10c11f9c426095ab3f504dd8b7622ad7ba7c8ed +0 -0
  115. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_2e1b3e4caed5e16ec3a087e96a7fe6e4f5ea8a82/types/cache/dc186595636217ded2d4a4cfbb789d68ea485b6b +0 -0
  116. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/code/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  117. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/code/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  118. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/code/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  119. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/code/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  120. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/code/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  121. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/code/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  122. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/code/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  123. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/semanticDiagnostics/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  124. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/semanticDiagnostics/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  125. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/semanticDiagnostics/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  126. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/semanticDiagnostics/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  127. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/semanticDiagnostics/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  128. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/semanticDiagnostics/cache/a8a4a8a1b06b6c8069e965f4a30a4b42013b830a +1 -0
  129. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/semanticDiagnostics/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  130. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/semanticDiagnostics/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  131. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/syntacticDiagnostics/cache/05b27cf262de47962f4beeba3d4b4f67616bdf24 +1 -0
  132. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/syntacticDiagnostics/cache/26c90bc22e366b540ff134ba7de2ab3715155a20 +1 -0
  133. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/syntacticDiagnostics/cache/7a2b654bed9256f52421aec7d04cd8553486335b +1 -0
  134. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/syntacticDiagnostics/cache/80fdd1aafff88316e6a7f63509fb7304c94ae6d3 +1 -0
  135. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/syntacticDiagnostics/cache/88c6c8bf5346a961efcdff848fba6e3f2d24b26c +1 -0
  136. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/syntacticDiagnostics/cache/a8a4a8a1b06b6c8069e965f4a30a4b42013b830a +1 -0
  137. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/syntacticDiagnostics/cache/b2f217f16a7744eb13543dc90442443538b724b8 +1 -0
  138. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/syntacticDiagnostics/cache/be60813c21c2fbc627fcf99127ca2a96a3065fba +1 -0
  139. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/068e7904209e205518dbc9726d632bbaf28bfc55 +0 -0
  140. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/06b75ecfe63fda3fcfaa42593fa1f22167f3a9f8 +0 -0
  141. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/2aa9d56fc4a9661ee8e3de277da5ee3f960713de +0 -0
  142. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/2c58b356be1a9572c64469d50a7a25c46f94aaeb +0 -0
  143. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/36d3fb579feb4cad7a15b7a2f509f338caf72fa0 +0 -0
  144. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/388b297c3f73fcba25b8174fda975235e5d12b5a +0 -0
  145. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/40e43895ec63e1e25aa7e278ca1e8c3adefc815d +0 -0
  146. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/645e188194be07518ebbb0a5b4304f5170fee599 +0 -0
  147. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/65515bf3a44aaf1306f589073f1c8b98be747f5f +0 -0
  148. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/6a357fe7542e07f7919ea9b22401027dd1e8a0c1 +0 -0
  149. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/72087cac150d02ed6d19e37d6f1436566d5ac798 +0 -0
  150. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/9ff120b6426a4c7a03236428f26a92772586c3e5 +0 -0
  151. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/a6917de673fc74a6cfca5133913982e54e58a7fb +0 -0
  152. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/aa4aee440d13b06b4bb05c36eee326513aa6c040 +0 -0
  153. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/b02a4d0c40fac4c7f9ea7acd7944ee8844afcedf +0 -0
  154. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/b21a02b948881426bc4dcff649fc4fba07ca34d2 +0 -0
  155. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/c10c11f9c426095ab3f504dd8b7622ad7ba7c8ed +0 -0
  156. package/src/vue/node_modules/.cache/rollup-plugin-typescript2/rpt2_6eed9deea87cc005768ee2b80168901d42458ef9/types/cache/dc186595636217ded2d4a4cfbb789d68ea485b6b +0 -0
  157. package/src/vue/package.json +4 -4
  158. package/src/vue/rollup.config.mjs +3 -3
  159. package/src/vue/tsconfig.json +3 -3
  160. package/tsconfig.json +9 -2
  161. package/.github/FUNDING.yml +0 -12
  162. package/.github/ISSUE_TEMPLATE/issue-report.md +0 -14
  163. package/.vscode/extensions.json +0 -3
  164. package/.vscode/settings.json +0 -17
  165. package/docs/404.html +0 -42
  166. package/docs/CNAME +0 -1
  167. package/docs/assets/check-mark.svg +0 -6
  168. package/docs/assets/data.js +0 -59
  169. package/docs/assets/home.css +0 -1
  170. package/docs/assets/home.js +0 -1
  171. package/docs/assets/index.css +0 -1
  172. package/docs/assets/index.js +0 -16
  173. package/docs/assets/index2.js +0 -274
  174. package/docs/assets/index3.js +0 -135
  175. package/docs/assets/index4.js +0 -60
  176. package/docs/assets/index5.js +0 -147
  177. package/docs/assets/install.js +0 -34
  178. package/docs/assets/selects.js +0 -55
  179. package/docs/favicon.ico +0 -0
  180. package/docs/index.html +0 -36
  181. package/public/404.html +0 -42
  182. package/public/CNAME +0 -1
  183. package/public/favicon.ico +0 -0
  184. package/slimselect.gif +0 -0
  185. package/src/docs/app.vue +0 -227
  186. package/src/docs/assets/images/check-mark.svg +0 -6
  187. package/src/docs/assets/images/chrome.svg +0 -22
  188. package/src/docs/assets/images/firefox.svg +0 -58
  189. package/src/docs/assets/images/github.png +0 -0
  190. package/src/docs/assets/images/ie.svg +0 -11
  191. package/src/docs/assets/images/npm.png +0 -0
  192. package/src/docs/assets/images/opera.svg +0 -15
  193. package/src/docs/assets/images/safari.svg +0 -22
  194. package/src/docs/assets/scss/_variables.scss +0 -26
  195. package/src/docs/assets/scss/alert.scss +0 -12
  196. package/src/docs/assets/scss/animations.scss +0 -8
  197. package/src/docs/assets/scss/button.scss +0 -21
  198. package/src/docs/assets/scss/index.scss +0 -8
  199. package/src/docs/assets/scss/input.scss +0 -3
  200. package/src/docs/assets/scss/layout.scss +0 -250
  201. package/src/docs/assets/scss/misc.scss +0 -162
  202. package/src/docs/assets/scss/prism.scss +0 -157
  203. package/src/docs/env.d.ts +0 -13
  204. package/src/docs/main.ts +0 -27
  205. package/src/docs/pages/data.vue +0 -130
  206. package/src/docs/pages/events/addable.vue +0 -95
  207. package/src/docs/pages/events/before_after_change.vue +0 -154
  208. package/src/docs/pages/events/before_after_open_close.vue +0 -122
  209. package/src/docs/pages/events/error.vue +0 -59
  210. package/src/docs/pages/events/index.vue +0 -33
  211. package/src/docs/pages/events/search.vue +0 -155
  212. package/src/docs/pages/events/search_filter.vue +0 -45
  213. package/src/docs/pages/frameworks/index.vue +0 -18
  214. package/src/docs/pages/frameworks/vue.vue +0 -405
  215. package/src/docs/pages/home.vue +0 -194
  216. package/src/docs/pages/install.vue +0 -105
  217. package/src/docs/pages/methods/destroy.vue +0 -66
  218. package/src/docs/pages/methods/enable_disable.vue +0 -70
  219. package/src/docs/pages/methods/get_data.vue +0 -82
  220. package/src/docs/pages/methods/get_selected.vue +0 -78
  221. package/src/docs/pages/methods/index.vue +0 -36
  222. package/src/docs/pages/methods/open_close.vue +0 -63
  223. package/src/docs/pages/methods/search.vue +0 -62
  224. package/src/docs/pages/methods/set_data.vue +0 -106
  225. package/src/docs/pages/methods/set_selected.vue +0 -70
  226. package/src/docs/pages/selects.vue +0 -213
  227. package/src/docs/pages/settings/always_open.vue +0 -88
  228. package/src/docs/pages/settings/close_on_select.vue +0 -69
  229. package/src/docs/pages/settings/content_location.vue +0 -64
  230. package/src/docs/pages/settings/content_position.vue +0 -86
  231. package/src/docs/pages/settings/css.vue +0 -73
  232. package/src/docs/pages/settings/data_attributes.vue +0 -39
  233. package/src/docs/pages/settings/deselect.vue +0 -69
  234. package/src/docs/pages/settings/display.vue +0 -88
  235. package/src/docs/pages/settings/hide_selected.vue +0 -73
  236. package/src/docs/pages/settings/html.vue +0 -86
  237. package/src/docs/pages/settings/index.vue +0 -73
  238. package/src/docs/pages/settings/mandatory.vue +0 -91
  239. package/src/docs/pages/settings/min_max.vue +0 -61
  240. package/src/docs/pages/settings/open_position.vue +0 -60
  241. package/src/docs/pages/settings/placeholder.vue +0 -72
  242. package/src/docs/pages/settings/search.vue +0 -140
  243. package/src/docs/pages/settings/select.vue +0 -32
  244. package/src/docs/pages/settings/select_by_group.vue +0 -46
  245. package/src/docs/pages/settings/show_tooltip.vue +0 -44
  246. package/src/docs/pages/settings/styles.vue +0 -51
  247. package/src/docs/router.ts +0 -50
@@ -51,6 +51,8 @@ class Optgroup {
51
51
  constructor(optgroup) {
52
52
  this.id = !optgroup.id || optgroup.id === '' ? generateID() : optgroup.id;
53
53
  this.label = optgroup.label || '';
54
+ this.selectAll = optgroup.selectAll === undefined ? false : optgroup.selectAll;
55
+ this.closable = optgroup.closable || 'off';
54
56
  this.options = [];
55
57
  if (optgroup.options) {
56
58
  for (const o of optgroup.options) {
@@ -197,6 +199,14 @@ class Store {
197
199
  });
198
200
  return selectedIDs;
199
201
  }
202
+ getOptgroupByID(id) {
203
+ for (let dataObj of this.data) {
204
+ if (dataObj instanceof Optgroup && dataObj.id === id) {
205
+ return dataObj;
206
+ }
207
+ }
208
+ return null;
209
+ }
200
210
  getOptionByID(id) {
201
211
  let options = this.filter((opt) => {
202
212
  return opt.id === id;
@@ -231,7 +241,7 @@ class Store {
231
241
  }
232
242
  });
233
243
  if (optOptions.length > 0) {
234
- dataSearch.push(new Optgroup({ id: dataObj.id, label: dataObj.label, options: optOptions }));
244
+ dataSearch.push(new Optgroup(dataObj));
235
245
  }
236
246
  }
237
247
  }
@@ -272,11 +282,18 @@ class Render {
272
282
  list: 'ss-list',
273
283
  optgroup: 'ss-optgroup',
274
284
  optgroupLabel: 'ss-optgroup-label',
275
- optgroupSelectable: 'ss-optgroup-selectable',
285
+ optgroupLabelText: 'ss-optgroup-label-text',
286
+ optgroupActions: 'ss-optgroup-actions',
287
+ optgroupSelectAll: 'ss-selectall',
288
+ optgroupSelectAllBox: 'M60,10 L10,10 L10,90 L90,90 L90,50',
289
+ optgroupSelectAllCheck: 'M30,45 L50,70 L90,10',
290
+ optgroupClosable: 'ss-closable',
276
291
  option: 'ss-option',
277
- optionSelected: 'ss-option-selected',
278
292
  optionDelete: 'M10,10 L90,90 M10,90 L90,10',
279
293
  highlighted: 'ss-highlighted',
294
+ open: 'ss-open',
295
+ close: 'ss-close',
296
+ selected: 'ss-selected',
280
297
  error: 'ss-error',
281
298
  disabled: 'ss-disabled',
282
299
  hide: 'ss-hide',
@@ -286,8 +303,6 @@ class Render {
286
303
  this.callbacks = callbacks;
287
304
  this.main = this.mainDiv();
288
305
  this.content = this.contentDiv();
289
- this.renderValues();
290
- this.renderOptions(this.store.getData());
291
306
  this.settings.contentLocation.appendChild(this.content.main);
292
307
  }
293
308
  enable() {
@@ -800,25 +815,23 @@ class Render {
800
815
  }
801
816
  for (let i = 0; i < options.length; i++) {
802
817
  if (options[i].classList.contains(this.classes.highlighted)) {
803
- options[i].classList.remove(this.classes.highlighted);
804
- if (dir === 'down') {
805
- if (i + 1 < options.length) {
806
- options[i + 1].classList.add(this.classes.highlighted);
807
- this.ensureElementInView(this.content.list, options[i + 1]);
808
- }
809
- else {
810
- options[0].classList.add(this.classes.highlighted);
811
- this.ensureElementInView(this.content.list, options[0]);
818
+ const prevOption = options[i];
819
+ prevOption.classList.remove(this.classes.highlighted);
820
+ const prevParent = prevOption.parentElement;
821
+ if (prevParent && prevParent.classList.contains(this.classes.open)) {
822
+ const optgroupLabel = prevParent.querySelector('.' + this.classes.optgroupLabel);
823
+ if (optgroupLabel) {
824
+ optgroupLabel.click();
812
825
  }
813
826
  }
814
- else {
815
- if (i - 1 >= 0) {
816
- options[i - 1].classList.add(this.classes.highlighted);
817
- this.ensureElementInView(this.content.list, options[i - 1]);
818
- }
819
- else {
820
- options[options.length - 1].classList.add(this.classes.highlighted);
821
- this.ensureElementInView(this.content.list, options[options.length - 1]);
827
+ let selectOption = options[dir === 'down' ? (i + 1 < options.length ? i + 1 : 0) : i - 1 >= 0 ? i - 1 : options.length - 1];
828
+ selectOption.classList.add(this.classes.highlighted);
829
+ this.ensureElementInView(this.content.list, selectOption);
830
+ const selectParent = selectOption.parentElement;
831
+ if (selectParent && selectParent.classList.contains(this.classes.close)) {
832
+ const optgroupLabel = selectParent.querySelector('.' + this.classes.optgroupLabel);
833
+ if (optgroupLabel) {
834
+ optgroupLabel.click();
822
835
  }
823
836
  }
824
837
  return;
@@ -863,18 +876,99 @@ class Render {
863
876
  optgroupEl.classList.add(this.classes.optgroup);
864
877
  const optgroupLabel = document.createElement('div');
865
878
  optgroupLabel.classList.add(this.classes.optgroupLabel);
866
- optgroupLabel.innerHTML = d.label;
867
- if (this.settings.selectByGroup && this.settings.isMultiple) {
868
- optgroupLabel.classList.add(this.classes.optgroupSelectable);
879
+ optgroupEl.appendChild(optgroupLabel);
880
+ const optgroupLabelText = document.createElement('div');
881
+ optgroupLabelText.classList.add(this.classes.optgroupLabelText);
882
+ optgroupLabelText.textContent = d.label;
883
+ optgroupLabel.appendChild(optgroupLabelText);
884
+ const optgroupActions = document.createElement('div');
885
+ optgroupActions.classList.add(this.classes.optgroupActions);
886
+ optgroupLabel.appendChild(optgroupActions);
887
+ if (this.settings.isMultiple && d.selectAll) {
888
+ const selectAll = document.createElement('div');
889
+ selectAll.classList.add(this.classes.optgroupSelectAll);
890
+ let allSelected = true;
891
+ for (const o of d.options) {
892
+ if (!o.selected) {
893
+ allSelected = false;
894
+ break;
895
+ }
896
+ }
897
+ if (allSelected) {
898
+ selectAll.classList.add(this.classes.selected);
899
+ }
900
+ const selectAllText = document.createElement('span');
901
+ selectAllText.textContent = 'Select All';
902
+ selectAll.appendChild(selectAllText);
903
+ const selectAllSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
904
+ selectAllSvg.setAttribute('viewBox', '0 0 100 100');
905
+ selectAll.appendChild(selectAllSvg);
906
+ const selectAllBox = document.createElementNS('http://www.w3.org/2000/svg', 'path');
907
+ selectAllBox.setAttribute('d', this.classes.optgroupSelectAllBox);
908
+ selectAllSvg.appendChild(selectAllBox);
909
+ const selectAllCheck = document.createElementNS('http://www.w3.org/2000/svg', 'path');
910
+ selectAllCheck.setAttribute('d', this.classes.optgroupSelectAllCheck);
911
+ selectAllSvg.appendChild(selectAllCheck);
912
+ selectAll.addEventListener('click', (e) => {
913
+ e.preventDefault();
914
+ e.stopPropagation();
915
+ const currentSelected = this.store.getSelected();
916
+ if (allSelected) {
917
+ const newSelected = currentSelected.filter((s) => {
918
+ for (const o of d.options) {
919
+ if (s === o.value) {
920
+ return false;
921
+ }
922
+ }
923
+ return true;
924
+ });
925
+ this.callbacks.setSelected(newSelected);
926
+ return;
927
+ }
928
+ else {
929
+ const newSelected = currentSelected.concat(d.options.map((o) => o.value));
930
+ this.callbacks.setSelected(newSelected);
931
+ }
932
+ });
933
+ optgroupActions.appendChild(selectAll);
934
+ }
935
+ if (d.closable !== 'off') {
936
+ const optgroupClosable = document.createElement('div');
937
+ optgroupClosable.classList.add(this.classes.optgroupClosable);
938
+ const optgroupClosableSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
939
+ optgroupClosableSvg.setAttribute('viewBox', '0 0 100 100');
940
+ optgroupClosableSvg.classList.add(this.classes.arrow);
941
+ optgroupClosable.appendChild(optgroupClosableSvg);
942
+ const optgroupClosableArrow = document.createElementNS('http://www.w3.org/2000/svg', 'path');
943
+ optgroupClosableArrow.setAttribute('d', this.classes.arrow);
944
+ optgroupClosableSvg.appendChild(optgroupClosableArrow);
945
+ if (d.options.some((o) => o.selected)) {
946
+ optgroupClosable.classList.add(this.classes.open);
947
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);
948
+ }
949
+ else if (d.closable === 'open') {
950
+ optgroupEl.classList.add(this.classes.open);
951
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);
952
+ }
953
+ else if (d.closable === 'close') {
954
+ optgroupEl.classList.add(this.classes.close);
955
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);
956
+ }
869
957
  optgroupLabel.addEventListener('click', (e) => {
870
958
  e.preventDefault();
871
959
  e.stopPropagation();
872
- for (const childEl of optgroupEl.children) {
873
- if (childEl.className.indexOf(this.classes.option) !== -1) {
874
- childEl.click();
875
- }
960
+ if (optgroupEl.classList.contains(this.classes.close)) {
961
+ optgroupEl.classList.remove(this.classes.close);
962
+ optgroupEl.classList.add(this.classes.open);
963
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);
964
+ }
965
+ else {
966
+ optgroupEl.classList.remove(this.classes.open);
967
+ optgroupEl.classList.add(this.classes.close);
968
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);
876
969
  }
877
970
  });
971
+ optgroupActions.appendChild(optgroupClosable);
878
972
  }
879
973
  optgroupEl.appendChild(optgroupLabel);
880
974
  for (const o of d.options) {
@@ -926,10 +1020,10 @@ class Render {
926
1020
  optionEl.classList.add(this.classes.hide);
927
1021
  }
928
1022
  if (option.selected) {
929
- optionEl.classList.add(this.classes.optionSelected);
1023
+ optionEl.classList.add(this.classes.selected);
930
1024
  }
931
1025
  else {
932
- optionEl.classList.remove(this.classes.optionSelected);
1026
+ optionEl.classList.remove(this.classes.selected);
933
1027
  }
934
1028
  optionEl.addEventListener('click', (e) => {
935
1029
  e.preventDefault();
@@ -1151,8 +1245,10 @@ class Select {
1151
1245
  }
1152
1246
  getDataFromOptgroup(optgroup) {
1153
1247
  let data = {
1154
- id: '',
1248
+ id: (optgroup.dataset ? optgroup.dataset.id : false) || '',
1155
1249
  label: optgroup.label,
1250
+ selectAll: optgroup.dataset ? optgroup.dataset.selectall === 'true' : false,
1251
+ closable: optgroup.dataset ? optgroup.dataset.closable : 'off',
1156
1252
  options: [],
1157
1253
  };
1158
1254
  const options = optgroup.childNodes;
@@ -1163,6 +1259,22 @@ class Select {
1163
1259
  }
1164
1260
  return data;
1165
1261
  }
1262
+ getDataFromOption(option) {
1263
+ return {
1264
+ id: (option.dataset ? option.dataset.id : false) || '',
1265
+ value: option.value,
1266
+ text: option.text,
1267
+ html: option.innerHTML,
1268
+ selected: option.selected,
1269
+ display: option.style.display === 'none' ? false : true,
1270
+ disabled: option.disabled,
1271
+ mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,
1272
+ placeholder: option.dataset.placeholder === 'true',
1273
+ class: option.className,
1274
+ style: option.style.cssText,
1275
+ data: option.dataset,
1276
+ };
1277
+ }
1166
1278
  getSelectedValues() {
1167
1279
  let values = [];
1168
1280
  const options = this.select.childNodes;
@@ -1187,22 +1299,6 @@ class Select {
1187
1299
  }
1188
1300
  return values;
1189
1301
  }
1190
- getDataFromOption(option) {
1191
- return {
1192
- id: (option.dataset ? option.dataset.id : false) || generateID(),
1193
- value: option.value,
1194
- text: option.text,
1195
- html: option.innerHTML,
1196
- selected: option.selected,
1197
- display: option.style.display === 'none' ? false : true,
1198
- disabled: option.disabled,
1199
- mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,
1200
- placeholder: option.dataset.placeholder === 'true',
1201
- class: option.className,
1202
- style: option.style.cssText,
1203
- data: option.dataset,
1204
- };
1205
- }
1206
1302
  setSelected(value) {
1207
1303
  const options = this.select.childNodes;
1208
1304
  for (const o of options) {
@@ -1257,6 +1353,12 @@ class Select {
1257
1353
  const optgroupEl = document.createElement('optgroup');
1258
1354
  optgroupEl.id = optgroup.id;
1259
1355
  optgroupEl.label = optgroup.label;
1356
+ if (optgroup.selectAll) {
1357
+ optgroupEl.dataset.selectAll = 'true';
1358
+ }
1359
+ if (optgroup.closable !== 'off') {
1360
+ optgroupEl.dataset.closable = optgroup.closable;
1361
+ }
1260
1362
  if (optgroup.options) {
1261
1363
  for (const o of optgroup.options) {
1262
1364
  optgroupEl.appendChild(this.createOption(o));
@@ -1313,8 +1415,6 @@ class Settings {
1313
1415
  this.isOpen = false;
1314
1416
  this.triggerFocus = true;
1315
1417
  this.intervalMove = null;
1316
- this.mainHeight = 30;
1317
- this.contentHeight = 0;
1318
1418
  if (!settings) {
1319
1419
  settings = {};
1320
1420
  }
@@ -1336,7 +1436,6 @@ class Settings {
1336
1436
  this.allowDeselect = settings.allowDeselect !== undefined ? settings.allowDeselect : false;
1337
1437
  this.hideSelected = settings.hideSelected !== undefined ? settings.hideSelected : false;
1338
1438
  this.showOptionTooltips = settings.showOptionTooltips !== undefined ? settings.showOptionTooltips : false;
1339
- this.selectByGroup = settings.selectByGroup !== undefined ? settings.selectByGroup : false;
1340
1439
  this.minSelected = settings.minSelected || 0;
1341
1440
  this.maxSelected = settings.maxSelected || 1000;
1342
1441
  this.timeoutDelay = settings.timeoutDelay || 200;
@@ -1443,6 +1542,8 @@ class SlimSelect {
1443
1542
  afterChange: this.events.afterChange,
1444
1543
  };
1445
1544
  this.render = new Render(this.settings, this.store, callbacks);
1545
+ this.render.renderValues();
1546
+ this.render.renderOptions(this.store.getData());
1446
1547
  if (this.selectEl.parentNode) {
1447
1548
  this.selectEl.parentNode.insertBefore(this.render.main.main, this.selectEl.nextSibling);
1448
1549
  }
@@ -54,6 +54,8 @@ var SlimSelect = (function () {
54
54
  constructor(optgroup) {
55
55
  this.id = !optgroup.id || optgroup.id === '' ? generateID() : optgroup.id;
56
56
  this.label = optgroup.label || '';
57
+ this.selectAll = optgroup.selectAll === undefined ? false : optgroup.selectAll;
58
+ this.closable = optgroup.closable || 'off';
57
59
  this.options = [];
58
60
  if (optgroup.options) {
59
61
  for (const o of optgroup.options) {
@@ -200,6 +202,14 @@ var SlimSelect = (function () {
200
202
  });
201
203
  return selectedIDs;
202
204
  }
205
+ getOptgroupByID(id) {
206
+ for (let dataObj of this.data) {
207
+ if (dataObj instanceof Optgroup && dataObj.id === id) {
208
+ return dataObj;
209
+ }
210
+ }
211
+ return null;
212
+ }
203
213
  getOptionByID(id) {
204
214
  let options = this.filter((opt) => {
205
215
  return opt.id === id;
@@ -234,7 +244,7 @@ var SlimSelect = (function () {
234
244
  }
235
245
  });
236
246
  if (optOptions.length > 0) {
237
- dataSearch.push(new Optgroup({ id: dataObj.id, label: dataObj.label, options: optOptions }));
247
+ dataSearch.push(new Optgroup(dataObj));
238
248
  }
239
249
  }
240
250
  }
@@ -275,11 +285,18 @@ var SlimSelect = (function () {
275
285
  list: 'ss-list',
276
286
  optgroup: 'ss-optgroup',
277
287
  optgroupLabel: 'ss-optgroup-label',
278
- optgroupSelectable: 'ss-optgroup-selectable',
288
+ optgroupLabelText: 'ss-optgroup-label-text',
289
+ optgroupActions: 'ss-optgroup-actions',
290
+ optgroupSelectAll: 'ss-selectall',
291
+ optgroupSelectAllBox: 'M60,10 L10,10 L10,90 L90,90 L90,50',
292
+ optgroupSelectAllCheck: 'M30,45 L50,70 L90,10',
293
+ optgroupClosable: 'ss-closable',
279
294
  option: 'ss-option',
280
- optionSelected: 'ss-option-selected',
281
295
  optionDelete: 'M10,10 L90,90 M10,90 L90,10',
282
296
  highlighted: 'ss-highlighted',
297
+ open: 'ss-open',
298
+ close: 'ss-close',
299
+ selected: 'ss-selected',
283
300
  error: 'ss-error',
284
301
  disabled: 'ss-disabled',
285
302
  hide: 'ss-hide',
@@ -289,8 +306,6 @@ var SlimSelect = (function () {
289
306
  this.callbacks = callbacks;
290
307
  this.main = this.mainDiv();
291
308
  this.content = this.contentDiv();
292
- this.renderValues();
293
- this.renderOptions(this.store.getData());
294
309
  this.settings.contentLocation.appendChild(this.content.main);
295
310
  }
296
311
  enable() {
@@ -803,25 +818,23 @@ var SlimSelect = (function () {
803
818
  }
804
819
  for (let i = 0; i < options.length; i++) {
805
820
  if (options[i].classList.contains(this.classes.highlighted)) {
806
- options[i].classList.remove(this.classes.highlighted);
807
- if (dir === 'down') {
808
- if (i + 1 < options.length) {
809
- options[i + 1].classList.add(this.classes.highlighted);
810
- this.ensureElementInView(this.content.list, options[i + 1]);
811
- }
812
- else {
813
- options[0].classList.add(this.classes.highlighted);
814
- this.ensureElementInView(this.content.list, options[0]);
821
+ const prevOption = options[i];
822
+ prevOption.classList.remove(this.classes.highlighted);
823
+ const prevParent = prevOption.parentElement;
824
+ if (prevParent && prevParent.classList.contains(this.classes.open)) {
825
+ const optgroupLabel = prevParent.querySelector('.' + this.classes.optgroupLabel);
826
+ if (optgroupLabel) {
827
+ optgroupLabel.click();
815
828
  }
816
829
  }
817
- else {
818
- if (i - 1 >= 0) {
819
- options[i - 1].classList.add(this.classes.highlighted);
820
- this.ensureElementInView(this.content.list, options[i - 1]);
821
- }
822
- else {
823
- options[options.length - 1].classList.add(this.classes.highlighted);
824
- this.ensureElementInView(this.content.list, options[options.length - 1]);
830
+ let selectOption = options[dir === 'down' ? (i + 1 < options.length ? i + 1 : 0) : i - 1 >= 0 ? i - 1 : options.length - 1];
831
+ selectOption.classList.add(this.classes.highlighted);
832
+ this.ensureElementInView(this.content.list, selectOption);
833
+ const selectParent = selectOption.parentElement;
834
+ if (selectParent && selectParent.classList.contains(this.classes.close)) {
835
+ const optgroupLabel = selectParent.querySelector('.' + this.classes.optgroupLabel);
836
+ if (optgroupLabel) {
837
+ optgroupLabel.click();
825
838
  }
826
839
  }
827
840
  return;
@@ -866,18 +879,99 @@ var SlimSelect = (function () {
866
879
  optgroupEl.classList.add(this.classes.optgroup);
867
880
  const optgroupLabel = document.createElement('div');
868
881
  optgroupLabel.classList.add(this.classes.optgroupLabel);
869
- optgroupLabel.innerHTML = d.label;
870
- if (this.settings.selectByGroup && this.settings.isMultiple) {
871
- optgroupLabel.classList.add(this.classes.optgroupSelectable);
882
+ optgroupEl.appendChild(optgroupLabel);
883
+ const optgroupLabelText = document.createElement('div');
884
+ optgroupLabelText.classList.add(this.classes.optgroupLabelText);
885
+ optgroupLabelText.textContent = d.label;
886
+ optgroupLabel.appendChild(optgroupLabelText);
887
+ const optgroupActions = document.createElement('div');
888
+ optgroupActions.classList.add(this.classes.optgroupActions);
889
+ optgroupLabel.appendChild(optgroupActions);
890
+ if (this.settings.isMultiple && d.selectAll) {
891
+ const selectAll = document.createElement('div');
892
+ selectAll.classList.add(this.classes.optgroupSelectAll);
893
+ let allSelected = true;
894
+ for (const o of d.options) {
895
+ if (!o.selected) {
896
+ allSelected = false;
897
+ break;
898
+ }
899
+ }
900
+ if (allSelected) {
901
+ selectAll.classList.add(this.classes.selected);
902
+ }
903
+ const selectAllText = document.createElement('span');
904
+ selectAllText.textContent = 'Select All';
905
+ selectAll.appendChild(selectAllText);
906
+ const selectAllSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
907
+ selectAllSvg.setAttribute('viewBox', '0 0 100 100');
908
+ selectAll.appendChild(selectAllSvg);
909
+ const selectAllBox = document.createElementNS('http://www.w3.org/2000/svg', 'path');
910
+ selectAllBox.setAttribute('d', this.classes.optgroupSelectAllBox);
911
+ selectAllSvg.appendChild(selectAllBox);
912
+ const selectAllCheck = document.createElementNS('http://www.w3.org/2000/svg', 'path');
913
+ selectAllCheck.setAttribute('d', this.classes.optgroupSelectAllCheck);
914
+ selectAllSvg.appendChild(selectAllCheck);
915
+ selectAll.addEventListener('click', (e) => {
916
+ e.preventDefault();
917
+ e.stopPropagation();
918
+ const currentSelected = this.store.getSelected();
919
+ if (allSelected) {
920
+ const newSelected = currentSelected.filter((s) => {
921
+ for (const o of d.options) {
922
+ if (s === o.value) {
923
+ return false;
924
+ }
925
+ }
926
+ return true;
927
+ });
928
+ this.callbacks.setSelected(newSelected);
929
+ return;
930
+ }
931
+ else {
932
+ const newSelected = currentSelected.concat(d.options.map((o) => o.value));
933
+ this.callbacks.setSelected(newSelected);
934
+ }
935
+ });
936
+ optgroupActions.appendChild(selectAll);
937
+ }
938
+ if (d.closable !== 'off') {
939
+ const optgroupClosable = document.createElement('div');
940
+ optgroupClosable.classList.add(this.classes.optgroupClosable);
941
+ const optgroupClosableSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
942
+ optgroupClosableSvg.setAttribute('viewBox', '0 0 100 100');
943
+ optgroupClosableSvg.classList.add(this.classes.arrow);
944
+ optgroupClosable.appendChild(optgroupClosableSvg);
945
+ const optgroupClosableArrow = document.createElementNS('http://www.w3.org/2000/svg', 'path');
946
+ optgroupClosableArrow.setAttribute('d', this.classes.arrow);
947
+ optgroupClosableSvg.appendChild(optgroupClosableArrow);
948
+ if (d.options.some((o) => o.selected)) {
949
+ optgroupClosable.classList.add(this.classes.open);
950
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);
951
+ }
952
+ else if (d.closable === 'open') {
953
+ optgroupEl.classList.add(this.classes.open);
954
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);
955
+ }
956
+ else if (d.closable === 'close') {
957
+ optgroupEl.classList.add(this.classes.close);
958
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);
959
+ }
872
960
  optgroupLabel.addEventListener('click', (e) => {
873
961
  e.preventDefault();
874
962
  e.stopPropagation();
875
- for (const childEl of optgroupEl.children) {
876
- if (childEl.className.indexOf(this.classes.option) !== -1) {
877
- childEl.click();
878
- }
963
+ if (optgroupEl.classList.contains(this.classes.close)) {
964
+ optgroupEl.classList.remove(this.classes.close);
965
+ optgroupEl.classList.add(this.classes.open);
966
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);
967
+ }
968
+ else {
969
+ optgroupEl.classList.remove(this.classes.open);
970
+ optgroupEl.classList.add(this.classes.close);
971
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);
879
972
  }
880
973
  });
974
+ optgroupActions.appendChild(optgroupClosable);
881
975
  }
882
976
  optgroupEl.appendChild(optgroupLabel);
883
977
  for (const o of d.options) {
@@ -929,10 +1023,10 @@ var SlimSelect = (function () {
929
1023
  optionEl.classList.add(this.classes.hide);
930
1024
  }
931
1025
  if (option.selected) {
932
- optionEl.classList.add(this.classes.optionSelected);
1026
+ optionEl.classList.add(this.classes.selected);
933
1027
  }
934
1028
  else {
935
- optionEl.classList.remove(this.classes.optionSelected);
1029
+ optionEl.classList.remove(this.classes.selected);
936
1030
  }
937
1031
  optionEl.addEventListener('click', (e) => {
938
1032
  e.preventDefault();
@@ -1154,8 +1248,10 @@ var SlimSelect = (function () {
1154
1248
  }
1155
1249
  getDataFromOptgroup(optgroup) {
1156
1250
  let data = {
1157
- id: '',
1251
+ id: (optgroup.dataset ? optgroup.dataset.id : false) || '',
1158
1252
  label: optgroup.label,
1253
+ selectAll: optgroup.dataset ? optgroup.dataset.selectall === 'true' : false,
1254
+ closable: optgroup.dataset ? optgroup.dataset.closable : 'off',
1159
1255
  options: [],
1160
1256
  };
1161
1257
  const options = optgroup.childNodes;
@@ -1166,6 +1262,22 @@ var SlimSelect = (function () {
1166
1262
  }
1167
1263
  return data;
1168
1264
  }
1265
+ getDataFromOption(option) {
1266
+ return {
1267
+ id: (option.dataset ? option.dataset.id : false) || '',
1268
+ value: option.value,
1269
+ text: option.text,
1270
+ html: option.innerHTML,
1271
+ selected: option.selected,
1272
+ display: option.style.display === 'none' ? false : true,
1273
+ disabled: option.disabled,
1274
+ mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,
1275
+ placeholder: option.dataset.placeholder === 'true',
1276
+ class: option.className,
1277
+ style: option.style.cssText,
1278
+ data: option.dataset,
1279
+ };
1280
+ }
1169
1281
  getSelectedValues() {
1170
1282
  let values = [];
1171
1283
  const options = this.select.childNodes;
@@ -1190,22 +1302,6 @@ var SlimSelect = (function () {
1190
1302
  }
1191
1303
  return values;
1192
1304
  }
1193
- getDataFromOption(option) {
1194
- return {
1195
- id: (option.dataset ? option.dataset.id : false) || generateID(),
1196
- value: option.value,
1197
- text: option.text,
1198
- html: option.innerHTML,
1199
- selected: option.selected,
1200
- display: option.style.display === 'none' ? false : true,
1201
- disabled: option.disabled,
1202
- mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,
1203
- placeholder: option.dataset.placeholder === 'true',
1204
- class: option.className,
1205
- style: option.style.cssText,
1206
- data: option.dataset,
1207
- };
1208
- }
1209
1305
  setSelected(value) {
1210
1306
  const options = this.select.childNodes;
1211
1307
  for (const o of options) {
@@ -1260,6 +1356,12 @@ var SlimSelect = (function () {
1260
1356
  const optgroupEl = document.createElement('optgroup');
1261
1357
  optgroupEl.id = optgroup.id;
1262
1358
  optgroupEl.label = optgroup.label;
1359
+ if (optgroup.selectAll) {
1360
+ optgroupEl.dataset.selectAll = 'true';
1361
+ }
1362
+ if (optgroup.closable !== 'off') {
1363
+ optgroupEl.dataset.closable = optgroup.closable;
1364
+ }
1263
1365
  if (optgroup.options) {
1264
1366
  for (const o of optgroup.options) {
1265
1367
  optgroupEl.appendChild(this.createOption(o));
@@ -1316,8 +1418,6 @@ var SlimSelect = (function () {
1316
1418
  this.isOpen = false;
1317
1419
  this.triggerFocus = true;
1318
1420
  this.intervalMove = null;
1319
- this.mainHeight = 30;
1320
- this.contentHeight = 0;
1321
1421
  if (!settings) {
1322
1422
  settings = {};
1323
1423
  }
@@ -1339,7 +1439,6 @@ var SlimSelect = (function () {
1339
1439
  this.allowDeselect = settings.allowDeselect !== undefined ? settings.allowDeselect : false;
1340
1440
  this.hideSelected = settings.hideSelected !== undefined ? settings.hideSelected : false;
1341
1441
  this.showOptionTooltips = settings.showOptionTooltips !== undefined ? settings.showOptionTooltips : false;
1342
- this.selectByGroup = settings.selectByGroup !== undefined ? settings.selectByGroup : false;
1343
1442
  this.minSelected = settings.minSelected || 0;
1344
1443
  this.maxSelected = settings.maxSelected || 1000;
1345
1444
  this.timeoutDelay = settings.timeoutDelay || 200;
@@ -1446,6 +1545,8 @@ var SlimSelect = (function () {
1446
1545
  afterChange: this.events.afterChange,
1447
1546
  };
1448
1547
  this.render = new Render(this.settings, this.store, callbacks);
1548
+ this.render.renderValues();
1549
+ this.render.renderOptions(this.store.getData());
1449
1550
  if (this.selectEl.parentNode) {
1450
1551
  this.selectEl.parentNode.insertBefore(this.render.main.main, this.selectEl.nextSibling);
1451
1552
  }