slim-select 1.27.1 → 2.0.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 (157) hide show
  1. package/.github/ISSUE_TEMPLATE/issue-report.md +3 -3
  2. package/.nvmrc +1 -0
  3. package/.prettierrc +6 -0
  4. package/.vscode/extensions.json +3 -0
  5. package/.vscode/settings.json +15 -5
  6. package/README.md +17 -19
  7. package/dist/helper.d.ts +1 -4
  8. package/dist/index.d.ts +38 -58
  9. package/dist/render.d.ts +109 -0
  10. package/dist/select.d.ts +31 -20
  11. package/dist/settings.d.ts +33 -0
  12. package/dist/slimselect.cjs.js +2 -0
  13. package/dist/slimselect.cjs.js.map +1 -0
  14. package/dist/slimselect.css +1 -2
  15. package/dist/slimselect.css.map +1 -0
  16. package/dist/slimselect.es.js +2 -0
  17. package/dist/slimselect.es.js.map +1 -0
  18. package/dist/slimselect.global.js +2 -0
  19. package/dist/slimselect.global.js.map +1 -0
  20. package/dist/slimselect.js +2 -1970
  21. package/dist/slimselect.js.map +1 -0
  22. package/dist/slimselect.umd.js +2 -0
  23. package/dist/slimselect.umd.js.map +1 -0
  24. package/dist/store.d.ts +71 -0
  25. package/docs/assets/check-mark.svg +6 -0
  26. package/docs/assets/data.js +59 -0
  27. package/docs/assets/home.css +1 -0
  28. package/docs/assets/home.js +1 -0
  29. package/docs/assets/index.css +1 -0
  30. package/docs/assets/index.js +16 -0
  31. package/docs/assets/index2.js +274 -0
  32. package/docs/assets/index3.js +126 -0
  33. package/docs/assets/index4.js +60 -0
  34. package/docs/assets/install.js +34 -0
  35. package/docs/assets/selects.js +55 -0
  36. package/docs/index.html +18 -5
  37. package/docs.go +3 -1
  38. package/index.html +16 -0
  39. package/jest.config.js +7 -0
  40. package/package.json +39 -35
  41. package/src/docs/app.vue +196 -73
  42. package/src/docs/assets/scss/_variables.scss +26 -10
  43. package/src/docs/assets/scss/alert.scss +12 -0
  44. package/src/docs/assets/scss/animations.scss +5 -3
  45. package/src/docs/assets/scss/button.scss +21 -0
  46. package/src/docs/assets/scss/index.scss +8 -6
  47. package/src/docs/assets/scss/input.scss +2 -2
  48. package/src/docs/assets/scss/layout.scss +195 -65
  49. package/src/docs/assets/scss/misc.scss +144 -34
  50. package/src/docs/assets/scss/prism.scss +155 -153
  51. package/src/docs/env.d.ts +12 -0
  52. package/src/docs/images/check-mark.svg +6 -0
  53. package/src/docs/images/chrome.svg +22 -0
  54. package/src/docs/images/firefox.svg +58 -0
  55. package/src/docs/images/github.png +0 -0
  56. package/src/docs/images/ie.svg +11 -0
  57. package/src/docs/images/npm.png +0 -0
  58. package/src/docs/images/opera.svg +15 -0
  59. package/src/docs/images/safari.svg +22 -0
  60. package/src/docs/main.ts +27 -0
  61. package/src/docs/pages/data.vue +130 -0
  62. package/src/docs/pages/events/addable.vue +79 -0
  63. package/src/docs/pages/events/before_after_change.vue +140 -0
  64. package/src/docs/pages/events/before_after_open_close.vue +122 -0
  65. package/src/docs/pages/events/error.vue +59 -0
  66. package/src/docs/pages/events/index.vue +33 -0
  67. package/src/docs/pages/events/search.vue +154 -0
  68. package/src/docs/pages/events/search_filter.vue +45 -0
  69. package/src/docs/pages/home.vue +131 -117
  70. package/src/docs/pages/install.vue +51 -74
  71. package/src/docs/pages/methods/destroy.vue +66 -0
  72. package/src/docs/pages/methods/enable_disable.vue +70 -0
  73. package/src/docs/pages/methods/get_data.vue +81 -0
  74. package/src/docs/pages/methods/get_selected.vue +78 -0
  75. package/src/docs/pages/methods/index.vue +36 -0
  76. package/src/docs/pages/methods/open_close.vue +63 -0
  77. package/src/docs/pages/methods/search.vue +62 -0
  78. package/src/docs/pages/methods/set_data.vue +106 -0
  79. package/src/docs/pages/methods/set_selected.vue +70 -0
  80. package/src/docs/pages/selects.vue +108 -114
  81. package/src/docs/pages/settings/always_open.vue +88 -0
  82. package/src/docs/pages/settings/close_on_select.vue +69 -0
  83. package/src/docs/pages/settings/content_location.vue +64 -0
  84. package/src/docs/pages/settings/content_position.vue +86 -0
  85. package/src/docs/pages/settings/css.vue +73 -0
  86. package/src/docs/pages/settings/data_attributes.vue +39 -0
  87. package/src/docs/pages/settings/deselect.vue +69 -0
  88. package/src/docs/pages/settings/display.vue +88 -0
  89. package/src/docs/pages/settings/hide_selected.vue +73 -0
  90. package/src/docs/pages/settings/html.vue +86 -0
  91. package/src/docs/pages/settings/index.vue +73 -0
  92. package/src/docs/pages/settings/mandatory.vue +91 -0
  93. package/src/docs/pages/settings/min_max.vue +61 -0
  94. package/src/docs/pages/settings/open_position.vue +60 -0
  95. package/src/docs/pages/settings/placeholder.vue +72 -0
  96. package/src/docs/pages/settings/search.vue +140 -0
  97. package/src/docs/pages/settings/select.vue +32 -0
  98. package/src/docs/pages/settings/select_by_group.vue +46 -0
  99. package/src/docs/pages/settings/show_tooltip.vue +44 -0
  100. package/src/docs/pages/settings/styles.vue +51 -0
  101. package/src/docs/router.ts +41 -13
  102. package/src/slim-select/helper.ts +25 -86
  103. package/src/slim-select/index.ts +317 -420
  104. package/src/slim-select/render.test.ts +39 -0
  105. package/src/slim-select/render.ts +1129 -0
  106. package/src/slim-select/rollup.config.mjs +40 -0
  107. package/src/slim-select/select.test.ts +155 -0
  108. package/src/slim-select/select.ts +280 -108
  109. package/src/slim-select/settings.ts +68 -0
  110. package/src/slim-select/slimselect.scss +263 -278
  111. package/src/slim-select/store.test.ts +220 -0
  112. package/src/slim-select/store.ts +320 -0
  113. package/src/slim-select/tsconfig.json +11 -5
  114. package/src/vue/slimselect.vue +61 -0
  115. package/tsconfig.json +10 -29
  116. package/vite.config.ts +18 -0
  117. package/.browserslistrc +0 -4
  118. package/.postcssrc.js +0 -5
  119. package/.travis.yml +0 -22
  120. package/babel.config.js +0 -5
  121. package/dist/config.d.ts +0 -83
  122. package/dist/data.d.ts +0 -50
  123. package/dist/slim.d.ts +0 -50
  124. package/dist/slimselect.min.css +0 -1
  125. package/dist/slimselect.min.js +0 -1
  126. package/dist/slimselect.min.mjs +0 -1
  127. package/docs/css/app.d5840d21.css +0 -1
  128. package/docs/css/chunk-vendors.fa8199af.css +0 -1
  129. package/docs/css/home.57020178.css +0 -1
  130. package/docs/css/install.baa5d3fb.css +0 -1
  131. package/docs/css/methods.728c742a.css +0 -1
  132. package/docs/css/options.b28a32ef.css +0 -1
  133. package/docs/css/selects.1a7e1e6a.css +0 -1
  134. package/docs/js/app.238ee382.js +0 -2
  135. package/docs/js/app.238ee382.js.map +0 -1
  136. package/docs/js/chunk-vendors.5125e3d8.js +0 -21
  137. package/docs/js/chunk-vendors.5125e3d8.js.map +0 -1
  138. package/docs/js/home.e7b28581.js +0 -2
  139. package/docs/js/home.e7b28581.js.map +0 -1
  140. package/docs/js/install.d4300783.js +0 -2
  141. package/docs/js/install.d4300783.js.map +0 -1
  142. package/docs/js/methods.fa1608f1.js +0 -11
  143. package/docs/js/methods.fa1608f1.js.map +0 -1
  144. package/docs/js/options.2c4ceb87.js +0 -2
  145. package/docs/js/options.2c4ceb87.js.map +0 -1
  146. package/docs/js/selects.1eeba693.js +0 -2
  147. package/docs/js/selects.1eeba693.js.map +0 -1
  148. package/src/docs/pages/methods.vue +0 -427
  149. package/src/docs/pages/options.vue +0 -1480
  150. package/src/main.ts +0 -29
  151. package/src/shims-vue.d.ts +0 -8
  152. package/src/slim-select/config.ts +0 -118
  153. package/src/slim-select/data.ts +0 -377
  154. package/src/slim-select/slim.ts +0 -775
  155. package/src/slim-select/webpack.config.js +0 -73
  156. package/tslint.json +0 -26
  157. package/vue.config.js +0 -23
@@ -1,53 +1,115 @@
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',
8
+ data() {
9
+ return {
10
+ single: null as SlimSelect | null,
11
+ multiple: null as SlimSelect | null,
12
+ }
13
+ },
6
14
  mounted() {
7
- new SlimSelect({
8
- select: '#slim-single-select'
15
+ this.single = new SlimSelect({
16
+ select: this.$refs.slimSingle as HTMLSelectElement,
9
17
  })
10
- new SlimSelect({
11
- select: '#slim-multi-select'
18
+ this.multiple = new SlimSelect({
19
+ select: this.$refs.slimMulti as HTMLSelectElement,
12
20
  })
13
- }
14
- })
15
- </script>
16
21
 
17
- <style lang="scss">
18
- #home-content {
19
- .samples {
20
- display: flex;
21
- justify-content: space-between;
22
-
23
- @media screen and (max-width: 600px) {
24
- flex-direction: column;
22
+ setTimeout(() => {
23
+ if (this.single) {
24
+ this.single.open()
25
25
  }
26
- .single {
27
- flex: 1 1 50%;
28
- padding: 0 10px 0 0;
29
-
30
- @media screen and (max-width: 600px) {
31
- padding: 0 0 10px 0;
26
+ setTimeout(() => {
27
+ if (this.single) {
28
+ this.single.setSelected('best')
32
29
  }
33
- }
34
- .multi {
35
- flex: 1 1 50%;
36
- padding: 0 0 0 10px;
37
-
38
- @media screen and (max-width: 600px) {
39
- padding: 0 0 0 0;
30
+ }, 500)
31
+ setTimeout(() => {
32
+ if (this.single) {
33
+ this.single.setSelected('select')
40
34
  }
35
+ }, 1000)
36
+ setTimeout(() => {
37
+ if (this.single) {
38
+ this.single.setSelected('ever')
39
+ }
40
+ }, 1500)
41
+ setTimeout(() => {
42
+ if (this.single) {
43
+ this.single.close()
44
+ }
45
+ }, 2000)
46
+
47
+ if (this.multiple) {
48
+ this.multiple.open()
41
49
  }
50
+ setTimeout(() => {
51
+ if (this.multiple) {
52
+ this.multiple.setSelected(['best'])
53
+ }
54
+ }, 500)
55
+ setTimeout(() => {
56
+ if (this.multiple) {
57
+ this.multiple.setSelected(['best', 'select'])
58
+ }
59
+ }, 1000)
60
+ setTimeout(() => {
61
+ if (this.multiple) {
62
+ this.multiple.setSelected(['best', 'select', 'ever'])
63
+ }
64
+ }, 1500)
65
+ setTimeout(() => {
66
+ if (this.multiple) {
67
+ this.multiple.close()
68
+ }
69
+ }, 2000)
70
+ }, 500)
71
+ },
72
+ unmounted() {
73
+ if (this.single) {
74
+ this.single.destroy()
75
+ }
76
+ if (this.multiple) {
77
+ this.multiple.destroy()
78
+ }
79
+ },
80
+ })
81
+ </script>
82
+
83
+ <style lang="scss">
84
+ #home {
85
+ .samples {
86
+ display: flex;
87
+ justify-content: space-between;
88
+ gap: var(--spacing);
89
+
90
+ .single {
91
+ flex: 1 1 50%;
92
+ }
93
+ .multi {
94
+ flex: 1 1 50%;
42
95
  }
96
+ }
97
+
98
+ .callouts {
99
+ display: flex;
100
+ padding: 20px 0 0 0;
43
101
 
44
- .callouts {
45
- padding: 20px 0 0 0;
102
+ .features {
103
+ flex: 1 1 auto;
46
104
  display: flex;
47
- justify-content: space-around;
105
+ flex-direction: column;
48
106
 
49
- .features {
50
- flex: 0 1 50%;
107
+ .header {
108
+ padding: 0 0 var(--spacing) 0;
109
+ }
110
+
111
+ .row {
112
+ justify-content: space-around;
51
113
 
52
114
  .list {
53
115
  display: flex;
@@ -62,7 +124,7 @@ export default Vue.extend({
62
124
  align-items: center;
63
125
  padding: 0 0 5px 0;
64
126
  font-weight: bold;
65
- font-size: 16px;
127
+ font-size: 20px;
66
128
 
67
129
  img {
68
130
  width: 20px;
@@ -71,56 +133,28 @@ export default Vue.extend({
71
133
  }
72
134
  }
73
135
  }
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
136
  }
105
137
  }
138
+ }
106
139
  </style>
107
140
 
108
141
  <template>
109
- <div id="home-content" class="content">
110
- <div class="samples">
142
+ <div id="home" class="content">
143
+ <div class="samples row">
111
144
  <div class="single">
112
- <h2>Single Select</h2>
113
- <select id="slim-single-select">
145
+ <h2>Single Select 2</h2>
146
+ <select ref="slimSingle">
147
+ <option data-placeholder="true"></option>
114
148
  <option value="best">Best</option>
115
- <option value="select" selected="true">Select</option>
149
+ <option value="select">Select</option>
116
150
  <option value="ever">Ever</option>
117
151
  </select>
118
152
  </div>
119
153
  <div class="multi">
120
154
  <h2>Multi Select</h2>
121
- <select id="slim-multi-select" multiple>
155
+ <select ref="slimMulti" multiple>
122
156
  <option value="best">Best</option>
123
- <option value="select" selected="true">Select</option>
157
+ <option value="select">Select</option>
124
158
  <option value="ever">Ever</option>
125
159
  </select>
126
160
  </div>
@@ -129,52 +163,32 @@ export default Vue.extend({
129
163
  <div class="callouts">
130
164
  <div class="features">
131
165
  <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
166
 
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>
167
+ <div class="row">
168
+ <ul class="list">
169
+ <li><img src="../images/check-mark.svg" /> No Dependencies</li>
170
+ <li><img src="../images/check-mark.svg" /> ~30kb - ~5kb gzip</li>
171
+ <li><img src="../images/check-mark.svg" /> Single Select</li>
172
+ <li><img src="../images/check-mark.svg" /> Multiple Select</li>
173
+ <li><img src="../images/check-mark.svg" /> Addable Options</li>
174
+ <li><img src="../images/check-mark.svg" /> Html Options</li>
175
+ <li><img src="../images/check-mark.svg" /> Settable Data</li>
176
+ <li><img src="../images/check-mark.svg" /> Callback Events</li>
177
+ <li><img src="../images/check-mark.svg" /> Placeholders</li>
178
+ </ul>
179
+ <ul class="list">
180
+ <li><img src="../images/check-mark.svg" /> Advanced Search</li>
181
+ <li><img src="../images/check-mark.svg" /> Tabbable</li>
182
+ <li><img src="../images/check-mark.svg" /> Disable Options</li>
183
+ <li><img src="../images/check-mark.svg" /> Light Css</li>
184
+ <li><img src="../images/check-mark.svg" /> Light Color Scheme</li>
185
+ <li><img src="../images/check-mark.svg" /> Style Inheritance</li>
186
+ <li><img src="../images/check-mark.svg" /> Clean Animations</li>
187
+ <li><img src="../images/check-mark.svg" /> Performant</li>
188
+ <li><img src="../images/check-mark.svg" /> Typescript</li>
189
+ </ul>
175
190
  </div>
176
191
  </div>
177
192
  </div>
178
-
179
193
  </div>
180
194
  </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,50 @@
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
+ <p>
48
+ See full list of available options.
49
+ <a target="_blank" href="https://cdnjs.com/libraries/slim-select">cdnjs.com/libraries/slim-select</a>
50
+ </p>
51
+ <div class="alert info">New releases may be delayed until the next time its indexed</div>
52
+
85
53
  <pre class="install-code">
86
54
  <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
- })
55
+ &lt;html&gt;
56
+ &lt;head&gt;
57
+ &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/slim-select/{{version}}/slimselect.js"&gt;&lt;/script&gt;
58
+ &lt;link href="https://cdnjs.cloudflare.com/ajax/libs/slim-select/{{version}}/slimselect.css" rel="stylesheet"&gt;&lt;/link&gt;
59
+
60
+ &lt;script&gt;
61
+ new SlimSelect({
62
+ select: '#selectElement'
63
+ })
64
+ &lt;script&gt;
65
+ &lt;/head&gt;
66
+ &lt;body&gt;
67
+ &lt;select id="selectElement"&gt;
68
+ &lt;option&gt;Option 1&lt;/option&gt;
69
+ &lt;option&gt;Option 2&lt;/option&gt;
70
+ &lt;option&gt;Option 3&lt;/option&gt;
71
+ &lt;/select&gt;
72
+ &lt;/body&gt;
73
+ &lt;/html&gt;
97
74
  </code>
98
75
  </pre>
99
76
  </div>
100
77
 
101
- <div class="download-content">
78
+ <div id="download" class="content">
102
79
  <h2>Download</h2>
103
- <div class="btn" @click="download">Click Here To Download</div>
80
+ <p>Download the latest minified version of slim select</p>
81
+ <div class="btn" @click="downloadLink()">Click Here To Download</div>
104
82
  </div>
105
-
106
83
  </div>
107
84
  </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>