slim-select 1.27.1 → 2.0.0

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 (155) hide show
  1. package/.nvmrc +1 -0
  2. package/.prettierrc +6 -0
  3. package/.vscode/extensions.json +3 -0
  4. package/.vscode/settings.json +15 -5
  5. package/README.md +2 -1
  6. package/dist/helper.d.ts +1 -4
  7. package/dist/index.d.ts +38 -58
  8. package/dist/render.d.ts +109 -0
  9. package/dist/select.d.ts +31 -20
  10. package/dist/settings.d.ts +33 -0
  11. package/dist/slimselect.cjs.js +2 -0
  12. package/dist/slimselect.cjs.js.map +1 -0
  13. package/dist/slimselect.css +1 -2
  14. package/dist/slimselect.css.map +1 -0
  15. package/dist/slimselect.es.js +2 -0
  16. package/dist/slimselect.es.js.map +1 -0
  17. package/dist/slimselect.global.js +2 -0
  18. package/dist/slimselect.global.js.map +1 -0
  19. package/dist/slimselect.js +2 -1970
  20. package/dist/slimselect.js.map +1 -0
  21. package/dist/slimselect.umd.js +2 -0
  22. package/dist/slimselect.umd.js.map +1 -0
  23. package/dist/store.d.ts +71 -0
  24. package/docs/assets/check-mark.svg +6 -0
  25. package/docs/assets/data.js +59 -0
  26. package/docs/assets/home.css +1 -0
  27. package/docs/assets/home.js +1 -0
  28. package/docs/assets/index.css +1 -0
  29. package/docs/assets/index.js +16 -0
  30. package/docs/assets/index2.js +274 -0
  31. package/docs/assets/index3.js +126 -0
  32. package/docs/assets/index4.js +60 -0
  33. package/docs/assets/install.js +34 -0
  34. package/docs/assets/selects.js +55 -0
  35. package/docs/index.html +18 -5
  36. package/docs.go +3 -1
  37. package/index.html +16 -0
  38. package/jest.config.js +7 -0
  39. package/package.json +39 -35
  40. package/src/docs/app.vue +185 -76
  41. package/src/docs/assets/scss/_variables.scss +26 -10
  42. package/src/docs/assets/scss/alert.scss +12 -0
  43. package/src/docs/assets/scss/animations.scss +5 -3
  44. package/src/docs/assets/scss/button.scss +21 -0
  45. package/src/docs/assets/scss/index.scss +8 -6
  46. package/src/docs/assets/scss/input.scss +2 -2
  47. package/src/docs/assets/scss/layout.scss +195 -65
  48. package/src/docs/assets/scss/misc.scss +144 -34
  49. package/src/docs/assets/scss/prism.scss +155 -153
  50. package/src/docs/env.d.ts +12 -0
  51. package/src/docs/images/check-mark.svg +6 -0
  52. package/src/docs/images/chrome.svg +22 -0
  53. package/src/docs/images/firefox.svg +58 -0
  54. package/src/docs/images/github.png +0 -0
  55. package/src/docs/images/ie.svg +11 -0
  56. package/src/docs/images/npm.png +0 -0
  57. package/src/docs/images/opera.svg +15 -0
  58. package/src/docs/images/safari.svg +22 -0
  59. package/src/docs/main.ts +27 -0
  60. package/src/docs/pages/data.vue +130 -0
  61. package/src/docs/pages/events/addable.vue +79 -0
  62. package/src/docs/pages/events/before_after_change.vue +140 -0
  63. package/src/docs/pages/events/before_after_open_close.vue +122 -0
  64. package/src/docs/pages/events/error.vue +59 -0
  65. package/src/docs/pages/events/index.vue +33 -0
  66. package/src/docs/pages/events/search.vue +154 -0
  67. package/src/docs/pages/events/search_filter.vue +45 -0
  68. package/src/docs/pages/home.vue +96 -116
  69. package/src/docs/pages/install.vue +47 -74
  70. package/src/docs/pages/methods/destroy.vue +66 -0
  71. package/src/docs/pages/methods/enable_disable.vue +70 -0
  72. package/src/docs/pages/methods/get_data.vue +81 -0
  73. package/src/docs/pages/methods/get_selected.vue +78 -0
  74. package/src/docs/pages/methods/index.vue +36 -0
  75. package/src/docs/pages/methods/open_close.vue +63 -0
  76. package/src/docs/pages/methods/search.vue +62 -0
  77. package/src/docs/pages/methods/set_data.vue +106 -0
  78. package/src/docs/pages/methods/set_selected.vue +70 -0
  79. package/src/docs/pages/selects.vue +108 -114
  80. package/src/docs/pages/settings/always_open.vue +88 -0
  81. package/src/docs/pages/settings/close_on_select.vue +69 -0
  82. package/src/docs/pages/settings/content_location.vue +64 -0
  83. package/src/docs/pages/settings/content_position.vue +86 -0
  84. package/src/docs/pages/settings/css.vue +73 -0
  85. package/src/docs/pages/settings/data_attributes.vue +39 -0
  86. package/src/docs/pages/settings/deselect.vue +69 -0
  87. package/src/docs/pages/settings/display.vue +88 -0
  88. package/src/docs/pages/settings/hide_selected.vue +73 -0
  89. package/src/docs/pages/settings/html.vue +86 -0
  90. package/src/docs/pages/settings/index.vue +73 -0
  91. package/src/docs/pages/settings/mandatory.vue +91 -0
  92. package/src/docs/pages/settings/min_max.vue +61 -0
  93. package/src/docs/pages/settings/open_position.vue +60 -0
  94. package/src/docs/pages/settings/placeholder.vue +72 -0
  95. package/src/docs/pages/settings/search.vue +140 -0
  96. package/src/docs/pages/settings/select.vue +32 -0
  97. package/src/docs/pages/settings/select_by_group.vue +46 -0
  98. package/src/docs/pages/settings/show_tooltip.vue +44 -0
  99. package/src/docs/pages/settings/styles.vue +51 -0
  100. package/src/docs/router.ts +41 -13
  101. package/src/slim-select/helper.ts +25 -86
  102. package/src/slim-select/index.ts +317 -420
  103. package/src/slim-select/render.test.ts +39 -0
  104. package/src/slim-select/render.ts +1129 -0
  105. package/src/slim-select/rollup.config.mjs +39 -0
  106. package/src/slim-select/select.test.ts +155 -0
  107. package/src/slim-select/select.ts +280 -108
  108. package/src/slim-select/settings.ts +68 -0
  109. package/src/slim-select/slimselect.scss +263 -278
  110. package/src/slim-select/store.test.ts +220 -0
  111. package/src/slim-select/store.ts +320 -0
  112. package/src/slim-select/tsconfig.json +11 -5
  113. package/src/vue/slimselect.vue +61 -0
  114. package/tsconfig.json +10 -29
  115. package/vite.config.ts +18 -0
  116. package/.browserslistrc +0 -4
  117. package/.postcssrc.js +0 -5
  118. package/.travis.yml +0 -22
  119. package/babel.config.js +0 -5
  120. package/dist/config.d.ts +0 -83
  121. package/dist/data.d.ts +0 -50
  122. package/dist/slim.d.ts +0 -50
  123. package/dist/slimselect.min.css +0 -1
  124. package/dist/slimselect.min.js +0 -1
  125. package/dist/slimselect.min.mjs +0 -1
  126. package/docs/css/app.d5840d21.css +0 -1
  127. package/docs/css/chunk-vendors.fa8199af.css +0 -1
  128. package/docs/css/home.57020178.css +0 -1
  129. package/docs/css/install.baa5d3fb.css +0 -1
  130. package/docs/css/methods.728c742a.css +0 -1
  131. package/docs/css/options.b28a32ef.css +0 -1
  132. package/docs/css/selects.1a7e1e6a.css +0 -1
  133. package/docs/js/app.238ee382.js +0 -2
  134. package/docs/js/app.238ee382.js.map +0 -1
  135. package/docs/js/chunk-vendors.5125e3d8.js +0 -21
  136. package/docs/js/chunk-vendors.5125e3d8.js.map +0 -1
  137. package/docs/js/home.e7b28581.js +0 -2
  138. package/docs/js/home.e7b28581.js.map +0 -1
  139. package/docs/js/install.d4300783.js +0 -2
  140. package/docs/js/install.d4300783.js.map +0 -1
  141. package/docs/js/methods.fa1608f1.js +0 -11
  142. package/docs/js/methods.fa1608f1.js.map +0 -1
  143. package/docs/js/options.2c4ceb87.js +0 -2
  144. package/docs/js/options.2c4ceb87.js.map +0 -1
  145. package/docs/js/selects.1eeba693.js +0 -2
  146. package/docs/js/selects.1eeba693.js.map +0 -1
  147. package/src/docs/pages/methods.vue +0 -427
  148. package/src/docs/pages/options.vue +0 -1480
  149. package/src/main.ts +0 -29
  150. package/src/shims-vue.d.ts +0 -8
  151. package/src/slim-select/config.ts +0 -118
  152. package/src/slim-select/data.ts +0 -377
  153. package/src/slim-select/slim.ts +0 -775
  154. package/tslint.json +0 -26
  155. package/vue.config.js +0 -23
@@ -1,53 +1,81 @@
1
1
  <script lang="ts">
2
- import Vue from 'vue'
3
- import SlimSelect from '@/slim-select'
2
+ import { defineComponent } from 'vue'
4
3
 
5
- export default Vue.extend({
4
+ import SlimSelect from '../../slim-select'
5
+
6
+ export default defineComponent({
7
+ name: 'Home',
6
8
  mounted() {
7
- new SlimSelect({
8
- select: '#slim-single-select'
9
+ const single = new SlimSelect({
10
+ select: this.$refs.slimSingle as HTMLSelectElement,
9
11
  })
10
- new SlimSelect({
11
- select: '#slim-multi-select'
12
+ const multiple = new SlimSelect({
13
+ select: this.$refs.slimMulti as HTMLSelectElement,
12
14
  })
13
- }
15
+
16
+ setTimeout(() => {
17
+ single.open()
18
+ setTimeout(() => {
19
+ single.setSelected('best')
20
+ }, 500)
21
+ setTimeout(() => {
22
+ single.setSelected('select')
23
+ }, 1000)
24
+ setTimeout(() => {
25
+ single.setSelected('ever')
26
+ }, 1500)
27
+ setTimeout(() => {
28
+ single.close()
29
+ }, 2000)
30
+
31
+ multiple.open()
32
+ setTimeout(() => {
33
+ multiple.setSelected(['best'])
34
+ }, 500)
35
+ setTimeout(() => {
36
+ multiple.setSelected(['best', 'select'])
37
+ }, 1000)
38
+ setTimeout(() => {
39
+ multiple.setSelected(['best', 'select', 'ever'])
40
+ }, 1500)
41
+ setTimeout(() => {
42
+ multiple.close()
43
+ }, 2000)
44
+ }, 500)
45
+ },
14
46
  })
15
47
  </script>
16
48
 
17
49
  <style lang="scss">
18
- #home-content {
19
- .samples {
20
- display: flex;
21
- justify-content: space-between;
50
+ #home {
51
+ .samples {
52
+ display: flex;
53
+ justify-content: space-between;
54
+ gap: var(--spacing);
55
+
56
+ .single {
57
+ flex: 1 1 50%;
58
+ }
59
+ .multi {
60
+ flex: 1 1 50%;
61
+ }
62
+ }
22
63
 
23
- @media screen and (max-width: 600px) {
24
- flex-direction: column;
25
- }
26
- .single {
27
- flex: 1 1 50%;
28
- padding: 0 10px 0 0;
64
+ .callouts {
65
+ display: flex;
66
+ padding: 20px 0 0 0;
29
67
 
30
- @media screen and (max-width: 600px) {
31
- padding: 0 0 10px 0;
32
- }
33
- }
34
- .multi {
35
- flex: 1 1 50%;
36
- padding: 0 0 0 10px;
68
+ .features {
69
+ flex: 1 1 auto;
70
+ display: flex;
71
+ flex-direction: column;
37
72
 
38
- @media screen and (max-width: 600px) {
39
- padding: 0 0 0 0;
40
- }
73
+ .header {
74
+ padding: 0 0 var(--spacing) 0;
41
75
  }
42
- }
43
-
44
- .callouts {
45
- padding: 20px 0 0 0;
46
- display: flex;
47
- justify-content: space-around;
48
76
 
49
- .features {
50
- flex: 0 1 50%;
77
+ .row {
78
+ justify-content: space-around;
51
79
 
52
80
  .list {
53
81
  display: flex;
@@ -62,7 +90,7 @@ export default Vue.extend({
62
90
  align-items: center;
63
91
  padding: 0 0 5px 0;
64
92
  font-weight: bold;
65
- font-size: 16px;
93
+ font-size: 20px;
66
94
 
67
95
  img {
68
96
  width: 20px;
@@ -71,56 +99,28 @@ export default Vue.extend({
71
99
  }
72
100
  }
73
101
  }
74
-
75
- .browsers {
76
- flex: 0 1 50%;
77
-
78
- .list {
79
- display: flex;
80
- flex-direction: row;
81
- flex-wrap: wrap;
82
- justify-content: center;
83
-
84
- .browser {
85
- display: flex;
86
- flex-direction: column;
87
- width: 80px;
88
- padding: 0 16px 0 16px;
89
-
90
- img {
91
- height: 80px;
92
- width: 80px;
93
- margin: 0 auto;
94
- padding: 0 0 8px 0;
95
- }
96
- .version {
97
- text-align: center;
98
- font-size: 22px;
99
- font-weight: bold;
100
- }
101
- }
102
- }
103
- }
104
102
  }
105
103
  }
104
+ }
106
105
  </style>
107
106
 
108
107
  <template>
109
- <div id="home-content" class="content">
110
- <div class="samples">
108
+ <div id="home" class="content">
109
+ <div class="samples row">
111
110
  <div class="single">
112
111
  <h2>Single Select</h2>
113
- <select id="slim-single-select">
112
+ <select ref="slimSingle">
113
+ <option data-placeholder="true"></option>
114
114
  <option value="best">Best</option>
115
- <option value="select" selected="true">Select</option>
115
+ <option value="select">Select</option>
116
116
  <option value="ever">Ever</option>
117
117
  </select>
118
118
  </div>
119
119
  <div class="multi">
120
120
  <h2>Multi Select</h2>
121
- <select id="slim-multi-select" multiple>
121
+ <select ref="slimMulti" multiple>
122
122
  <option value="best">Best</option>
123
- <option value="select" selected="true">Select</option>
123
+ <option value="select">Select</option>
124
124
  <option value="ever">Ever</option>
125
125
  </select>
126
126
  </div>
@@ -129,52 +129,32 @@ export default Vue.extend({
129
129
  <div class="callouts">
130
130
  <div class="features">
131
131
  <div class="header"><h2>Features</h2></div>
132
- <ul class="list">
133
- <li><img src="images/check-mark.svg" /> No Dependencies</li>
134
- <li><img src="images/check-mark.svg" /> 20kb - 5kb gzip</li>
135
- <li><img src="images/check-mark.svg" /> Single Select</li>
136
- <li><img src="images/check-mark.svg" /> Multiple Select</li>
137
- <li><img src="images/check-mark.svg" /> Addable Options</li>
138
- <li><img src="images/check-mark.svg" /> Html Options</li>
139
- <li><img src="images/check-mark.svg" /> Settable Data</li>
140
- <li><img src="images/check-mark.svg" /> Callback Events</li>
141
- <li><img src="images/check-mark.svg" /> Placeholders</li>
142
- <li><img src="images/check-mark.svg" /> Search</li>
143
- <li><img src="images/check-mark.svg" /> Disable Options</li>
144
- <li><img src="images/check-mark.svg" /> Light Css</li>
145
- <li><img src="images/check-mark.svg" /> Light Color Scheme</li>
146
- <li><img src="images/check-mark.svg" /> Style Inheritance</li>
147
- <li><img src="images/check-mark.svg" /> Clean Animations</li>
148
- <li><img src="images/check-mark.svg" /> Performant</li>
149
- </ul>
150
- </div>
151
132
 
152
- <div class="browsers">
153
- <div class="header"><h2>Support</h2></div>
154
- <div class="list">
155
- <div class="browser">
156
- <img src="images/ie.svg" />
157
- <div class="version">11+</div>
158
- </div>
159
- <div class="browser">
160
- <img src="images/chrome.svg" />
161
- <div class="version">30+</div>
162
- </div>
163
- <div class="browser">
164
- <img src="images/firefox.svg" />
165
- <div class="version">25+</div>
166
- </div>
167
- <div class="browser">
168
- <img src="images/opera.svg" />
169
- <div class="version">25+</div>
170
- </div>
171
- <div class="browser">
172
- <img src="images/safari.svg" />
173
- <div class="version">9+</div>
174
- </div>
133
+ <div class="row">
134
+ <ul class="list">
135
+ <li><img src="../images/check-mark.svg" /> No Dependencies</li>
136
+ <li><img src="../images/check-mark.svg" /> ~30kb - ~5kb gzip</li>
137
+ <li><img src="../images/check-mark.svg" /> Single Select</li>
138
+ <li><img src="../images/check-mark.svg" /> Multiple Select</li>
139
+ <li><img src="../images/check-mark.svg" /> Addable Options</li>
140
+ <li><img src="../images/check-mark.svg" /> Html Options</li>
141
+ <li><img src="../images/check-mark.svg" /> Settable Data</li>
142
+ <li><img src="../images/check-mark.svg" /> Callback Events</li>
143
+ <li><img src="../images/check-mark.svg" /> Placeholders</li>
144
+ </ul>
145
+ <ul class="list">
146
+ <li><img src="../images/check-mark.svg" /> Advanced Search</li>
147
+ <li><img src="../images/check-mark.svg" /> Tabbable</li>
148
+ <li><img src="../images/check-mark.svg" /> Disable Options</li>
149
+ <li><img src="../images/check-mark.svg" /> Light Css</li>
150
+ <li><img src="../images/check-mark.svg" /> Light Color Scheme</li>
151
+ <li><img src="../images/check-mark.svg" /> Style Inheritance</li>
152
+ <li><img src="../images/check-mark.svg" /> Clean Animations</li>
153
+ <li><img src="../images/check-mark.svg" /> Performant</li>
154
+ <li><img src="../images/check-mark.svg" /> Typescript</li>
155
+ </ul>
175
156
  </div>
176
157
  </div>
177
158
  </div>
178
-
179
159
  </div>
180
160
  </template>
@@ -1,68 +1,29 @@
1
- <script>
2
- import SlimSelect from '@/slim-select'
3
- import packageJson from '../../../package.json'
1
+ <script lang="ts">
2
+ import download from 'downloadjs'
3
+ import { defineComponent } from 'vue'
4
+ import packageJson from '../../../package.json'
4
5
 
5
- export default {
6
- data: () => {
7
- return {
8
- version: packageJson.version
9
- }
10
- },
11
- methods: {
12
- download() {
13
- function A(blob) {
14
- const a = document.createElement('a')
15
- document.body.appendChild(a)
16
- a.style = 'display: none'
17
-
18
- const url = window.URL.createObjectURL(blob)
19
- a.href = url
20
- a.download = 'slimselect.js'
21
- a.click()
22
- window.URL.revokeObjectURL(url)
23
- }
24
-
25
- const xhr = new XMLHttpRequest()
26
- xhr.open('GET', `https://cdnjs.cloudflare.com/ajax/libs/slim-select/${this.version}/slimselect.min.js`)
27
- xhr.responseType = 'blob'
28
- xhr.onload = () => { A(this.response, 'filename') }
29
- xhr.send()
30
- }
6
+ export default defineComponent({
7
+ name: 'Install',
8
+ data: () => {
9
+ return {
10
+ version: packageJson.version,
31
11
  }
32
- }
12
+ },
13
+ methods: {
14
+ downloadLink() {
15
+ download(`https://cdnjs.cloudflare.com/ajax/libs/slim-select/${this.version}/slimselect.min.js`)
16
+ },
17
+ },
18
+ })
33
19
  </script>
34
20
 
35
- <style lang="scss">
36
- #install-content {
37
- .npm-content {
38
- padding: 0 0 30px 0;
39
-
40
- .install-code {
41
- max-width: 200px;
42
- margin-left: auto;
43
- margin-right: auto;
44
- }
45
- .example-code {
46
- max-width: 310px;
47
- margin: 0 auto;
48
- }
49
- }
50
-
51
- .cdn-content {
52
- .example-code {
53
- max-width: 220px;
54
- margin-left: auto;
55
- margin-right: auto;
56
- }
57
- }
58
- }
59
- </style>
60
-
61
21
  <template>
62
- <div id="install-content" class="content">
63
-
64
- <div class="npm-content">
22
+ <div id="install" class="contents">
23
+ <div id="npm" class="content">
65
24
  <h2>Npm</h2>
25
+ <p>Most common usage is npm</p>
26
+
66
27
  <pre class="install-code">
67
28
  <code class="language-bash">
68
29
  npm install slim-select
@@ -74,34 +35,46 @@
74
35
  import SlimSelect from 'slim-select'
75
36
 
76
37
  new SlimSelect({
77
- select: '#slim-select'
38
+ select: '#selectElement'
78
39
  })
79
40
  </code>
80
41
  </pre>
81
42
  </div>
82
43
 
83
- <div class="cdn-content">
44
+ <div id="cdn" class="content">
84
45
  <h2>Cdn</h2>
46
+ <p>Cdn has a url link you can grab.</p>
47
+ <div class="alert info">New releases may be delayed until the next time its indexed</div>
48
+
85
49
  <pre class="install-code">
86
50
  <code class="language-html">
87
- &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/slim-select/{{version}}/slimselect.min.js"&gt;&lt;/script&gt;
88
- &lt;link href="https://cdnjs.cloudflare.com/ajax/libs/slim-select/{{version}}/slimselect.min.css" rel="stylesheet"&gt;&lt;/link&gt;
89
- </code>
90
- </pre>
91
-
92
- <pre class="example-code">
93
- <code class="language-javascript">
94
- new SlimSelect({
95
- select: '#slim-select'
96
- })
51
+ &lt;html&gt;
52
+ &lt;head&gt;
53
+ &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/slim-select/{{version}}/slimselect.min.js"&gt;&lt;/script&gt;
54
+ &lt;link href="https://cdnjs.cloudflare.com/ajax/libs/slim-select/{{version}}/slimselect.min.css" rel="stylesheet"&gt;&lt;/link&gt;
55
+
56
+ &lt;script&gt;
57
+ new SlimSelect({
58
+ select: '#selectElement'
59
+ })
60
+ &lt;script&gt;
61
+ &lt;/head&gt;
62
+ &lt;body&gt;
63
+ &lt;select id="selectElement"&gt;
64
+ &lt;option&gt;Option 1&lt;/option&gt;
65
+ &lt;option&gt;Option 2&lt;/option&gt;
66
+ &lt;option&gt;Option 3&lt;/option&gt;
67
+ &lt;/select&gt;
68
+ &lt;/body&gt;
69
+ &lt;/html&gt;
97
70
  </code>
98
71
  </pre>
99
72
  </div>
100
73
 
101
- <div class="download-content">
74
+ <div id="download" class="content">
102
75
  <h2>Download</h2>
103
- <div class="btn" @click="download">Click Here To Download</div>
76
+ <p>Download the latest minified version of slim select</p>
77
+ <div class="btn" @click="downloadLink()">Click Here To Download</div>
104
78
  </div>
105
-
106
79
  </div>
107
80
  </template>
@@ -0,0 +1,66 @@
1
+ <script lang="ts">
2
+ import { defineComponent } from 'vue'
3
+
4
+ import SlimSelect from '../../../slim-select'
5
+
6
+ export default defineComponent({
7
+ name: 'Destroy',
8
+ data() {
9
+ return {
10
+ destroySingle: null as SlimSelect | null,
11
+ destroyMultiple: null as SlimSelect | null,
12
+ }
13
+ },
14
+ mounted() {
15
+ this.create()
16
+ },
17
+ methods: {
18
+ create() {
19
+ this.destroySingle = new SlimSelect({
20
+ select: this.$refs.destroySingle as HTMLSelectElement,
21
+ })
22
+
23
+ this.destroyMultiple = new SlimSelect({
24
+ select: this.$refs.destroyMultiple as HTMLSelectElement,
25
+ })
26
+ },
27
+ destroy() {
28
+ this.destroySingle!.destroy()
29
+ this.destroySingle = null
30
+ this.destroyMultiple!.destroy()
31
+ this.destroyMultiple = null
32
+ },
33
+ },
34
+ })
35
+ </script>
36
+
37
+ <template>
38
+ <div id="destroy" class="content">
39
+ <h2 class="header">destroy</h2>
40
+ <p>The destroy method will remove slim-select and display your original select.</p>
41
+
42
+ <div class="row">
43
+ <div class="btn" @click="create" v-if="!destroySingle">Create</div>
44
+ <div class="btn" @click="destroy" v-else>Destroy</div>
45
+ <select ref="destroySingle">
46
+ <option value="value1">Value 1</option>
47
+ <option value="value2">Value 2</option>
48
+ <option value="value3">Value 3</option>
49
+ </select>
50
+ <select ref="destroyMultiple" multiple>
51
+ <option value="value1">Value 1</option>
52
+ <option value="value2">Value 2</option>
53
+ <option value="value3">Value 3</option>
54
+ </select>
55
+ </div>
56
+
57
+ <pre>
58
+ <code class="language-javascript">
59
+ var select = new SlimSelect({
60
+ select: '#selectElement'
61
+ })
62
+ select.destroy()
63
+ </code>
64
+ </pre>
65
+ </div>
66
+ </template>
@@ -0,0 +1,70 @@
1
+ <script lang="ts">
2
+ import { defineComponent } from 'vue'
3
+
4
+ import SlimSelect from '../../../slim-select'
5
+
6
+ export default defineComponent({
7
+ name: 'EnableDisable',
8
+ data() {
9
+ return {
10
+ setEnableSingle: null as SlimSelect | null,
11
+ setEnableMultiple: null as SlimSelect | null,
12
+ }
13
+ },
14
+ mounted() {
15
+ this.setEnableSingle = new SlimSelect({
16
+ select: this.$refs.setEnableSingle as HTMLSelectElement,
17
+ })
18
+ this.setEnableMultiple = new SlimSelect({
19
+ select: this.$refs.setEnableMultiple as HTMLSelectElement,
20
+ })
21
+ },
22
+ methods: {
23
+ setEnable() {
24
+ this.setEnableSingle!.enable()
25
+ this.setEnableMultiple!.enable()
26
+ },
27
+ setDisable() {
28
+ this.setEnableSingle!.disable()
29
+ this.setEnableMultiple!.disable()
30
+ },
31
+ },
32
+ })
33
+ </script>
34
+
35
+ <template>
36
+ <div id="enableDisable" class="content">
37
+ <h2 class="header">enable / disable</h2>
38
+ <p>
39
+ These methods will enable or disable the select dropdown.
40
+ <br />
41
+ You may also set disabled on your original select and slim-select will pick that up.
42
+ </p>
43
+
44
+ <div class="row">
45
+ <div class="btn" @click="setEnable" v-if="setEnableSingle && !setEnableSingle.settings.isEnabled">Enable</div>
46
+ <div class="btn" @click="setDisable" v-else>Disable</div>
47
+
48
+ <select ref="setEnableSingle" disabled>
49
+ <option value="value1">Value 1</option>
50
+ <option value="value2">Value 2</option>
51
+ <option value="value3">Value 3</option>
52
+ </select>
53
+ <select ref="setEnableMultiple" multiple disabled>
54
+ <option value="value1">Value 1</option>
55
+ <option value="value2">Value 2</option>
56
+ <option value="value3">Value 3</option>
57
+ </select>
58
+ </div>
59
+ <pre>
60
+ <code class="language-javascript">
61
+ var select = new SlimSelect({
62
+ select: '#selectElement'
63
+ })
64
+ select.enable()
65
+ // or
66
+ select.disable()
67
+ </code>
68
+ </pre>
69
+ </div>
70
+ </template>
@@ -0,0 +1,81 @@
1
+ <script lang="ts">
2
+ import { defineComponent } from 'vue'
3
+
4
+ import SlimSelect, { DataArray } from '../../../slim-select'
5
+
6
+ export default defineComponent({
7
+ name: 'GetData',
8
+ data() {
9
+ return {
10
+ getDataOptions: null as SlimSelect | null,
11
+ getDataOptionsValue: [] as DataArray,
12
+ getDataOptgroups: null as SlimSelect | null,
13
+ getDataOptgroupsValue: [] as DataArray,
14
+ }
15
+ },
16
+ mounted() {
17
+ this.getDataOptions = new SlimSelect({
18
+ select: this.$refs.getDataOptions as HTMLSelectElement,
19
+ })
20
+ this.getDataOptgroups = new SlimSelect({
21
+ select: this.$refs.getDataOptgroups as HTMLSelectElement,
22
+ })
23
+ },
24
+ methods: {
25
+ getData() {
26
+ this.getDataOptionsValue = this.getDataOptions!.getData()
27
+ this.getDataOptgroupsValue = this.getDataOptgroups!.getData()
28
+ },
29
+ },
30
+ })
31
+ </script>
32
+
33
+ <template>
34
+ <div id="getData" class="content">
35
+ <h2 class="header">getData</h2>
36
+ <p>The getData method will return an array of the full data set.</p>
37
+
38
+ <div class="row">
39
+ <div class="btn" @click="getData">Get Data</div>
40
+
41
+ <div>
42
+ <select ref="getDataOptions">
43
+ <option value="value1">Value 1</option>
44
+ <option value="value2">Value 2</option>
45
+ <option value="value3">Value 3</option>
46
+ </select>
47
+ <div class="pad-t-m pad-b-m" v-if="getDataOptionsValue.length">
48
+ <b>Option Data:</b> {{ getDataOptionsValue }}
49
+ </div>
50
+ </div>
51
+
52
+ <div>
53
+ <select ref="getDataOptgroups" multiple>
54
+ <optgroup label="Group 1">
55
+ <option value="value1">Value 1</option>
56
+ <option value="value2">Value 2</option>
57
+ <option value="value3">Value 3</option>
58
+ </optgroup>
59
+ <optgroup label="Group 2">
60
+ <option value="value4">Value 4</option>
61
+ <option value="value5">Value 5</option>
62
+ <option value="value6">Value 6</option>
63
+ </optgroup>
64
+ </select>
65
+ <div class="pad-t-m pad-b-m" v-if="getDataOptgroupsValue.length">
66
+ <b>Optgroup Data:</b> {{ getDataOptgroupsValue }}
67
+ </div>
68
+ </div>
69
+ </div>
70
+
71
+ <pre>
72
+ <code class="language-javascript">
73
+ var select = new SlimSelect({
74
+ select: '#selectElement'
75
+ })
76
+ var data = select.getData() // Will return an array of options and optgroups
77
+ console.log(data)
78
+ </code>
79
+ </pre>
80
+ </div>
81
+ </template>