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
@@ -89,17 +89,28 @@ export default class Render {
89
89
  addable: 'ss-addable',
90
90
  addablePath: 'M50,10 L50,90 M10,50 L90,50', // Not a class but whatever
91
91
 
92
- // List options
92
+ // List optgroups/options
93
93
  list: 'ss-list',
94
+
95
+ // Optgroup
94
96
  optgroup: 'ss-optgroup',
95
97
  optgroupLabel: 'ss-optgroup-label',
96
- optgroupSelectable: 'ss-optgroup-selectable',
98
+ optgroupLabelText: 'ss-optgroup-label-text',
99
+ optgroupActions: 'ss-optgroup-actions',
100
+ optgroupSelectAll: 'ss-selectall', // optgroup select all
101
+ optgroupSelectAllBox: 'M60,10 L10,10 L10,90 L90,90 L90,50', // Not a class but whatever
102
+ optgroupSelectAllCheck: 'M30,45 L50,70 L90,10', // Not a class but whatever
103
+ optgroupClosable: 'ss-closable',
104
+
105
+ // Option
97
106
  option: 'ss-option',
98
- optionSelected: 'ss-option-selected',
99
107
  optionDelete: 'M10,10 L90,90 M10,90 L90,10', // Not a class but whatever
100
108
  highlighted: 'ss-highlighted',
101
109
 
102
110
  // Misc
111
+ open: 'ss-open',
112
+ close: 'ss-close',
113
+ selected: 'ss-selected',
103
114
  error: 'ss-error',
104
115
  disabled: 'ss-disabled',
105
116
  hide: 'ss-hide',
@@ -113,12 +124,6 @@ export default class Render {
113
124
  this.main = this.mainDiv()
114
125
  this.content = this.contentDiv()
115
126
 
116
- // Render the values
117
- this.renderValues()
118
-
119
- // Render the options
120
- this.renderOptions(this.store.getData())
121
-
122
127
  // Add content to the content location settings
123
128
  this.settings.contentLocation.appendChild(this.content.main)
124
129
  }
@@ -826,25 +831,31 @@ export default class Render {
826
831
  // Loop through options and find the highlighted one
827
832
  for (let i = 0; i < options.length; i++) {
828
833
  if (options[i].classList.contains(this.classes.highlighted)) {
834
+ const prevOption = options[i]
829
835
  // Remove highlighted class from current one
830
- options[i].classList.remove(this.classes.highlighted)
836
+ prevOption.classList.remove(this.classes.highlighted)
837
+
838
+ // If previous option has parent classes ss-optgroup with ss-open then click it
839
+ const prevParent = prevOption.parentElement
840
+ if (prevParent && prevParent.classList.contains(this.classes.open)) {
841
+ const optgroupLabel = prevParent.querySelector('.' + this.classes.optgroupLabel) as HTMLDivElement
842
+ if (optgroupLabel) {
843
+ optgroupLabel.click()
844
+ }
845
+ }
831
846
 
832
847
  // Highlight the next one
833
- if (dir === 'down') {
834
- if (i + 1 < options.length) {
835
- options[i + 1].classList.add(this.classes.highlighted)
836
- this.ensureElementInView(this.content.list, options[i + 1])
837
- } else {
838
- options[0].classList.add(this.classes.highlighted)
839
- this.ensureElementInView(this.content.list, options[0])
840
- }
841
- } else {
842
- if (i - 1 >= 0) {
843
- options[i - 1].classList.add(this.classes.highlighted)
844
- this.ensureElementInView(this.content.list, options[i - 1])
845
- } else {
846
- options[options.length - 1].classList.add(this.classes.highlighted)
847
- this.ensureElementInView(this.content.list, options[options.length - 1])
848
+ let selectOption =
849
+ options[dir === 'down' ? (i + 1 < options.length ? i + 1 : 0) : i - 1 >= 0 ? i - 1 : options.length - 1]
850
+ selectOption.classList.add(this.classes.highlighted)
851
+ this.ensureElementInView(this.content.list, selectOption)
852
+
853
+ // If selected option has parent classes ss-optgroup with ss-close then click it
854
+ const selectParent = selectOption.parentElement
855
+ if (selectParent && selectParent.classList.contains(this.classes.close)) {
856
+ const optgroupLabel = selectParent.querySelector('.' + this.classes.optgroupLabel) as HTMLDivElement
857
+ if (optgroupLabel) {
858
+ optgroupLabel.click()
848
859
  }
849
860
  }
850
861
 
@@ -915,21 +926,143 @@ export default class Render {
915
926
  // Create label
916
927
  const optgroupLabel = document.createElement('div')
917
928
  optgroupLabel.classList.add(this.classes.optgroupLabel)
918
- optgroupLabel.innerHTML = d.label
929
+ optgroupEl.appendChild(optgroupLabel)
930
+
931
+ // Create label text div element
932
+ const optgroupLabelText = document.createElement('div')
933
+ optgroupLabelText.classList.add(this.classes.optgroupLabelText)
934
+ optgroupLabelText.textContent = d.label
935
+ optgroupLabel.appendChild(optgroupLabelText)
936
+
937
+ // Create options container
938
+ const optgroupActions = document.createElement('div')
939
+ optgroupActions.classList.add(this.classes.optgroupActions)
940
+ optgroupLabel.appendChild(optgroupActions)
919
941
 
920
942
  // If selectByGroup is true and isMultiple then add click event to label
921
- if (this.settings.selectByGroup && this.settings.isMultiple) {
922
- optgroupLabel.classList.add(this.classes.optgroupSelectable)
943
+ if (this.settings.isMultiple && d.selectAll) {
944
+ // Create new div to hold a checkbox svg
945
+ const selectAll = document.createElement('div')
946
+ selectAll.classList.add(this.classes.optgroupSelectAll)
947
+
948
+ // Check options and if all are selected, if so add class selected
949
+ let allSelected = true
950
+ for (const o of d.options) {
951
+ if (!o.selected) {
952
+ allSelected = false
953
+ break
954
+ }
955
+ }
956
+
957
+ // Add class if all selected
958
+ if (allSelected) {
959
+ selectAll.classList.add(this.classes.selected)
960
+ }
961
+
962
+ // Add select all text span
963
+ const selectAllText = document.createElement('span')
964
+ selectAllText.textContent = 'Select All'
965
+ selectAll.appendChild(selectAllText)
966
+
967
+ // Create new svg for checkbox
968
+ const selectAllSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
969
+ selectAllSvg.setAttribute('viewBox', '0 0 100 100')
970
+ selectAll.appendChild(selectAllSvg)
971
+
972
+ // Create new path for box
973
+ const selectAllBox = document.createElementNS('http://www.w3.org/2000/svg', 'path')
974
+ selectAllBox.setAttribute('d', this.classes.optgroupSelectAllBox)
975
+ selectAllSvg.appendChild(selectAllBox)
976
+
977
+ // Create new path for check
978
+ const selectAllCheck = document.createElementNS('http://www.w3.org/2000/svg', 'path')
979
+ selectAllCheck.setAttribute('d', this.classes.optgroupSelectAllCheck)
980
+ selectAllSvg.appendChild(selectAllCheck)
981
+
982
+ // Add click event listener to select all
983
+ selectAll.addEventListener('click', (e: MouseEvent) => {
984
+ e.preventDefault()
985
+ e.stopPropagation()
986
+
987
+ // Get the store current selected values
988
+ const currentSelected = this.store.getSelected()
989
+
990
+ // If all selected, remove all options from selected
991
+ // call setSelected and return
992
+ if (allSelected) {
993
+ // Put together new list minus all options in this optgroup
994
+ const newSelected = currentSelected.filter((s) => {
995
+ for (const o of d.options) {
996
+ if (s === o.value) {
997
+ return false
998
+ }
999
+ }
1000
+
1001
+ return true
1002
+ })
1003
+
1004
+ this.callbacks.setSelected(newSelected)
1005
+ return
1006
+ } else {
1007
+ // Put together new list with all options in this optgroup
1008
+ const newSelected = currentSelected.concat(d.options.map((o) => o.value))
1009
+
1010
+ this.callbacks.setSelected(newSelected)
1011
+ }
1012
+ })
1013
+
1014
+ // Append select all to label
1015
+ optgroupActions.appendChild(selectAll)
1016
+ }
1017
+
1018
+ // If optgroup has collapsable
1019
+ if (d.closable !== 'off') {
1020
+ // Create new div to hold a checkbox svg
1021
+ const optgroupClosable = document.createElement('div')
1022
+ optgroupClosable.classList.add(this.classes.optgroupClosable)
1023
+
1024
+ // Create svg arrow
1025
+ const optgroupClosableSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
1026
+ optgroupClosableSvg.setAttribute('viewBox', '0 0 100 100')
1027
+ optgroupClosableSvg.classList.add(this.classes.arrow)
1028
+ optgroupClosable.appendChild(optgroupClosableSvg)
1029
+
1030
+ // Create new path for arrow
1031
+ const optgroupClosableArrow = document.createElementNS('http://www.w3.org/2000/svg', 'path')
1032
+ optgroupClosableArrow.setAttribute('d', this.classes.arrow)
1033
+ optgroupClosableSvg.appendChild(optgroupClosableArrow)
1034
+
1035
+ // If any options are selected, set optgroup to open
1036
+ if (d.options.some((o) => o.selected)) {
1037
+ optgroupClosable.classList.add(this.classes.open)
1038
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen)
1039
+ } else if (d.closable === 'open') {
1040
+ optgroupEl.classList.add(this.classes.open)
1041
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen)
1042
+ } else if (d.closable === 'close') {
1043
+ optgroupEl.classList.add(this.classes.close)
1044
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowClose)
1045
+ }
1046
+
1047
+ // Add click event listener to close
923
1048
  optgroupLabel.addEventListener('click', (e: MouseEvent) => {
924
1049
  e.preventDefault()
925
1050
  e.stopPropagation()
926
1051
 
927
- for (const childEl of optgroupEl.children as any as HTMLDivElement[]) {
928
- if (childEl.className.indexOf(this.classes.option) !== -1) {
929
- childEl.click()
930
- }
1052
+ // If optgroup is closed, open it
1053
+ if (optgroupEl.classList.contains(this.classes.close)) {
1054
+ optgroupEl.classList.remove(this.classes.close)
1055
+ optgroupEl.classList.add(this.classes.open)
1056
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen)
1057
+ } else {
1058
+ optgroupEl.classList.remove(this.classes.open)
1059
+ optgroupEl.classList.add(this.classes.close)
1060
+ optgroupClosableArrow.setAttribute('d', this.classes.arrowClose)
931
1061
  }
932
1062
  })
1063
+
1064
+ // Append close to label
1065
+ optgroupActions.appendChild(optgroupClosable)
933
1066
  }
934
1067
 
935
1068
  // Add optgroup label
@@ -1006,9 +1139,9 @@ export default class Render {
1006
1139
 
1007
1140
  // If option is selected
1008
1141
  if (option.selected) {
1009
- optionEl.classList.add(this.classes.optionSelected)
1142
+ optionEl.classList.add(this.classes.selected)
1010
1143
  } else {
1011
- optionEl.classList.remove(this.classes.optionSelected)
1144
+ optionEl.classList.remove(this.classes.selected)
1012
1145
  }
1013
1146
 
1014
1147
  // Add click event listener
@@ -1,12 +1,12 @@
1
1
  import { generateID, kebabCase } from './helpers'
2
- import { DataArray, Optgroup, Option } from './store'
2
+ import { DataArray, DataArrayPartial, Optgroup, OptgroupOptional, Option } from './store'
3
3
 
4
4
  export default class Select {
5
5
  public select: HTMLSelectElement
6
6
  public listen: boolean = false
7
7
 
8
8
  // Mutation observer fields
9
- public onSelectChange?: (data: DataArray) => void
9
+ public onSelectChange?: (data: DataArrayPartial) => void
10
10
  public onValueChange?: (value: string[]) => void
11
11
  private observer: MutationObserver | null = null
12
12
 
@@ -55,7 +55,7 @@ export default class Select {
55
55
  }
56
56
 
57
57
  // Add change listener to original select
58
- public addSelectChangeListener(func: (data: DataArray) => void): void {
58
+ public addSelectChangeListener(func: (data: DataArrayPartial) => void): void {
59
59
  this.onSelectChange = func
60
60
  this.addObserver()
61
61
  this.connectObserver()
@@ -129,8 +129,8 @@ export default class Select {
129
129
  }
130
130
 
131
131
  // From the select element pull optgroup and options into data
132
- public getData(): DataArray {
133
- let data = []
132
+ public getData(): DataArrayPartial {
133
+ let data = [] as DataArrayPartial
134
134
 
135
135
  // Loop through nodes and get data
136
136
  const nodes = this.select.childNodes as any as HTMLOptGroupElement[] | HTMLOptionElement[]
@@ -149,23 +149,43 @@ export default class Select {
149
149
  return data
150
150
  }
151
151
 
152
- public getDataFromOptgroup(optgroup: HTMLOptGroupElement): Optgroup {
152
+ public getDataFromOptgroup(optgroup: HTMLOptGroupElement): OptgroupOptional {
153
153
  let data = {
154
- id: '',
154
+ id: (optgroup.dataset ? optgroup.dataset.id : false) || '',
155
155
  label: optgroup.label,
156
+ selectAll: optgroup.dataset ? optgroup.dataset.selectall === 'true' : false,
157
+ closable: optgroup.dataset ? optgroup.dataset.closable : 'off',
156
158
  options: [],
157
- } as Optgroup
159
+ } as OptgroupOptional
158
160
 
159
161
  const options = optgroup.childNodes as any as HTMLOptionElement[]
160
162
  for (const o of options) {
161
163
  if (o.nodeName === 'OPTION') {
162
- data.options.push(this.getDataFromOption(o as HTMLOptionElement))
164
+ data.options!.push(this.getDataFromOption(o as HTMLOptionElement))
163
165
  }
164
166
  }
165
167
 
166
168
  return data
167
169
  }
168
170
 
171
+ // From passed in option pull pieces of usable information
172
+ public getDataFromOption(option: HTMLOptionElement): Option {
173
+ return {
174
+ id: (option.dataset ? option.dataset.id : false) || '',
175
+ value: option.value,
176
+ text: option.text,
177
+ html: option.innerHTML,
178
+ selected: option.selected,
179
+ display: option.style.display === 'none' ? false : true,
180
+ disabled: option.disabled,
181
+ mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,
182
+ placeholder: option.dataset.placeholder === 'true',
183
+ class: option.className,
184
+ style: option.style.cssText,
185
+ data: option.dataset,
186
+ } as Option
187
+ }
188
+
169
189
  public getSelectedValues(): string[] {
170
190
  let values = []
171
191
 
@@ -195,24 +215,6 @@ export default class Select {
195
215
  return values
196
216
  }
197
217
 
198
- // From passed in option pull pieces of usable information
199
- public getDataFromOption(option: HTMLOptionElement): Option {
200
- return {
201
- id: (option.dataset ? option.dataset.id : false) || generateID(),
202
- value: option.value,
203
- text: option.text,
204
- html: option.innerHTML,
205
- selected: option.selected,
206
- display: option.style.display === 'none' ? false : true,
207
- disabled: option.disabled,
208
- mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,
209
- placeholder: option.dataset.placeholder === 'true',
210
- class: option.className,
211
- style: option.style.cssText,
212
- data: option.dataset,
213
- } as Option
214
- }
215
-
216
218
  public setSelected(value: string[]): void {
217
219
  // Loop through options and set selected
218
220
  const options = this.select.childNodes as any as (HTMLOptGroupElement | HTMLOptionElement)[]
@@ -288,6 +290,12 @@ export default class Select {
288
290
  const optgroupEl = document.createElement('optgroup')
289
291
  optgroupEl.id = optgroup.id
290
292
  optgroupEl.label = optgroup.label
293
+ if (optgroup.selectAll) {
294
+ optgroupEl.dataset.selectAll = 'true'
295
+ }
296
+ if (optgroup.closable !== 'off') {
297
+ optgroupEl.dataset.closable = optgroup.closable
298
+ }
291
299
  if (optgroup.options) {
292
300
  for (const o of optgroup.options) {
293
301
  optgroupEl.appendChild(this.createOption(o))
@@ -14,8 +14,6 @@ export default class Settings {
14
14
  public intervalMove: NodeJS.Timeout | null = null
15
15
 
16
16
  // Fields set from constructor
17
- public mainHeight: number = 30
18
- public contentHeight: number = 0
19
17
  public isEnabled: boolean
20
18
  public alwaysOpen: boolean
21
19
  public showSearch: boolean
@@ -31,7 +29,6 @@ export default class Settings {
31
29
  public allowDeselect: boolean
32
30
  public hideSelected: boolean
33
31
  public showOptionTooltips: boolean
34
- public selectByGroup: boolean
35
32
  public minSelected: number
36
33
  public maxSelected: number
37
34
  public timeoutDelay: number
@@ -60,7 +57,6 @@ export default class Settings {
60
57
  this.allowDeselect = settings.allowDeselect !== undefined ? settings.allowDeselect : false
61
58
  this.hideSelected = settings.hideSelected !== undefined ? settings.hideSelected : false
62
59
  this.showOptionTooltips = settings.showOptionTooltips !== undefined ? settings.showOptionTooltips : false
63
- this.selectByGroup = settings.selectByGroup !== undefined ? settings.selectByGroup : false
64
60
  this.minSelected = settings.minSelected || 0
65
61
  this.maxSelected = settings.maxSelected || 1000
66
62
  this.timeoutDelay = settings.timeoutDelay || 200
@@ -7,6 +7,7 @@
7
7
  --ss-disabled-color: #8a8a8a;
8
8
  --ss-border-color: #dcdee2;
9
9
  --ss-highlight-color: #fffb8c;
10
+ --ss-success-color: #00b755;
10
11
  --ss-error-color: #dc3545;
11
12
 
12
13
  // Heights
@@ -334,9 +335,117 @@
334
335
  }
335
336
 
336
337
  .ss-optgroup {
338
+ // If optgroup is open, show the options
339
+ &.ss-open {
340
+ .ss-option {
341
+ }
342
+ }
343
+
344
+ // If optgroup has close, hide all options
345
+ &.ss-close {
346
+ .ss-option {
347
+ display: none !important;
348
+ }
349
+ }
350
+
337
351
  .ss-optgroup-label {
352
+ display: flex;
353
+ flex-direction: row;
354
+ align-items: center;
355
+ justify-content: space-between;
338
356
  padding: var(--ss-spacing-m) var(--ss-spacing-l) var(--ss-spacing-m) var(--ss-spacing-l);
339
- font-weight: bold;
357
+
358
+ .ss-optgroup-label-text {
359
+ flex: 1 1 auto;
360
+ font-weight: bold;
361
+ color: var(--ss-font-color);
362
+ }
363
+
364
+ // If optgroup has arrow, make label clickable
365
+ &:has(.ss-arrow) {
366
+ cursor: pointer;
367
+ }
368
+
369
+ .ss-optgroup-actions {
370
+ flex: 0 1 auto;
371
+ display: flex;
372
+ flex-direction: row;
373
+ align-items: center;
374
+ justify-content: center;
375
+ gap: var(--ss-spacing-m);
376
+
377
+ .ss-selectall {
378
+ flex: 0 0 auto;
379
+ display: flex;
380
+ flex-direction: row;
381
+ cursor: pointer;
382
+
383
+ &:hover {
384
+ opacity: 0.5;
385
+ }
386
+
387
+ &.ss-selected {
388
+ svg {
389
+ path {
390
+ stroke: var(--ss-error-color);
391
+ }
392
+ }
393
+ }
394
+
395
+ span {
396
+ flex: 0 1 auto;
397
+ display: flex;
398
+ align-items: center;
399
+ justify-content: center;
400
+ font-size: calc(100% * 0.6);
401
+ text-align: center;
402
+ padding: 0 var(--ss-spacing-s) 0 0;
403
+ }
404
+
405
+ svg {
406
+ flex: 0 1 auto;
407
+ width: 13px;
408
+ height: 13px;
409
+
410
+ path {
411
+ fill: none;
412
+ stroke: var(--ss-success-color);
413
+ stroke-linecap: round;
414
+ stroke-linejoin: round;
415
+ }
416
+
417
+ &:first-child {
418
+ stroke-width: 5;
419
+ }
420
+ &:last-child {
421
+ stroke-width: 11;
422
+ }
423
+ }
424
+ }
425
+
426
+ .ss-closable {
427
+ flex: 0 1 auto;
428
+ display: flex;
429
+ flex-direction: row;
430
+ cursor: pointer;
431
+
432
+ .ss-arrow {
433
+ flex: 1 1 auto;
434
+ width: 10px;
435
+ height: 10px;
436
+
437
+ path {
438
+ fill: none;
439
+ stroke: var(--ss-font-color);
440
+ stroke-width: 18;
441
+ stroke-linecap: round;
442
+ stroke-linejoin: round;
443
+ transition-timing-function: ease-out;
444
+ transition: var(--ss-animation-timing);
445
+ }
446
+ }
447
+ }
448
+ }
340
449
  }
341
450
 
342
451
  .ss-option {
@@ -344,16 +453,8 @@
344
453
  }
345
454
  }
346
455
 
347
- .ss-optgroup-selectable {
348
- cursor: pointer;
349
-
350
- &:hover {
351
- color: var(--ss-bg-color);
352
- background-color: var(--ss-primary-color);
353
- }
354
- }
355
-
356
456
  .ss-option {
457
+ display: flex;
357
458
  padding: var(--ss-spacing-m) var(--ss-spacing-l) var(--ss-spacing-m) var(--ss-spacing-l);
358
459
  cursor: pointer;
359
460
  user-select: none;
@@ -370,7 +471,7 @@
370
471
  background-color: var(--ss-bg-color);
371
472
  }
372
473
 
373
- &:not(.ss-disabled).ss-option-selected {
474
+ &:not(.ss-disabled).ss-selected {
374
475
  color: var(--ss-font-color);
375
476
  background-color: var(--ss-highlight-color);
376
477
  }
@@ -11,17 +11,23 @@ type selectType = 'single' | 'multiple'
11
11
  export interface OptgroupOptional {
12
12
  id?: string
13
13
  label: string // Required
14
+ selectAll?: boolean
15
+ closable?: 'off' | 'open' | 'close'
14
16
  options?: OptionOptional[]
15
17
  }
16
18
 
17
19
  export class Optgroup {
18
20
  public id: string
19
21
  public label: string
22
+ public selectAll: boolean
23
+ public closable: 'off' | 'open' | 'close'
20
24
  public options: Option[]
21
25
 
22
26
  constructor(optgroup: OptgroupOptional) {
23
27
  this.id = !optgroup.id || optgroup.id === '' ? generateID() : optgroup.id
24
28
  this.label = optgroup.label || ''
29
+ this.selectAll = optgroup.selectAll === undefined ? false : optgroup.selectAll
30
+ this.closable = optgroup.closable || 'off'
25
31
 
26
32
  // If options exist, loop through options and create new option class
27
33
  // and set the options to the optgroup options field
@@ -255,6 +261,18 @@ export default class Store {
255
261
  return selectedIDs
256
262
  }
257
263
 
264
+ public getOptgroupByID(id: string): Optgroup | null {
265
+ // Loop through each data object
266
+ // and if optgroup is found, return it
267
+ for (let dataObj of this.data) {
268
+ if (dataObj instanceof Optgroup && dataObj.id === id) {
269
+ return dataObj
270
+ }
271
+ }
272
+
273
+ return null
274
+ }
275
+
258
276
  public getOptionByID(id: string): Option | null {
259
277
  let options = this.filter((opt: Option) => {
260
278
  return opt.id === id
@@ -302,7 +320,7 @@ export default class Store {
302
320
  })
303
321
 
304
322
  if (optOptions.length > 0) {
305
- dataSearch.push(new Optgroup({ id: dataObj.id, label: dataObj.label, options: optOptions }))
323
+ dataSearch.push(new Optgroup(dataObj))
306
324
  }
307
325
  }
308
326
  }
@@ -0,0 +1,48 @@
1
+ # Slim Select Vue
2
+
3
+ ## slimselectjs.com
4
+
5
+ Vue integration for the SlimSelect
6
+
7
+ See the website for the best details on how to use the vue integration
8
+
9
+ [![NPM Downloads](https://img.shields.io/npm/dt/@slim-select/vue)](https://www.npmjs.com/package/@slim-select/vue)
10
+
11
+ ## Support
12
+
13
+ [![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/brianvoe)
14
+
15
+ <a href="https://www.buymeacoffee.com/brianvoe" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install @slim-select/vue
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ```javascript
26
+ import { defineComponent } from 'vue'
27
+ import SlimSelect from '@slim-select/vue'
28
+
29
+ export default defineComponent({
30
+ components: {
31
+ SlimSelect,
32
+ },
33
+ })
34
+ ```
35
+
36
+ ```html
37
+ <SlimSelect>
38
+ <option value="1">Option 1</option>
39
+ <option value="2">Option 2</option>
40
+ <option value="3">Option 3</option>
41
+ </SlimSelect>
42
+
43
+ <SlimSelect multiple>
44
+ <option value="1">Option 1</option>
45
+ <option value="2">Option 2</option>
46
+ <option value="3">Option 3</option>
47
+ </SlimSelect>
48
+ ```
@@ -0,0 +1,4 @@
1
+ export declare function generateID(): string;
2
+ export declare function hasClassInTree(element: HTMLElement, className: string): any;
3
+ export declare function debounce(func: (...params: any[]) => void, wait?: number, immediate?: boolean): () => void;
4
+ export declare function kebabCase(str: string): string;