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.
- package/.github/ISSUE_TEMPLATE/issue-report.md +3 -3
- package/.nvmrc +1 -0
- package/.prettierrc +6 -0
- package/.vscode/extensions.json +3 -0
- package/.vscode/settings.json +15 -5
- package/README.md +17 -19
- package/dist/helper.d.ts +1 -4
- package/dist/index.d.ts +38 -58
- package/dist/render.d.ts +109 -0
- package/dist/select.d.ts +31 -20
- package/dist/settings.d.ts +33 -0
- package/dist/slimselect.cjs.js +2 -0
- package/dist/slimselect.cjs.js.map +1 -0
- package/dist/slimselect.css +1 -2
- package/dist/slimselect.css.map +1 -0
- package/dist/slimselect.es.js +2 -0
- package/dist/slimselect.es.js.map +1 -0
- package/dist/slimselect.global.js +2 -0
- package/dist/slimselect.global.js.map +1 -0
- package/dist/slimselect.js +2 -1970
- package/dist/slimselect.js.map +1 -0
- package/dist/slimselect.umd.js +2 -0
- package/dist/slimselect.umd.js.map +1 -0
- package/dist/store.d.ts +71 -0
- package/docs/assets/check-mark.svg +6 -0
- package/docs/assets/data.js +59 -0
- package/docs/assets/home.css +1 -0
- package/docs/assets/home.js +1 -0
- package/docs/assets/index.css +1 -0
- package/docs/assets/index.js +16 -0
- package/docs/assets/index2.js +274 -0
- package/docs/assets/index3.js +126 -0
- package/docs/assets/index4.js +60 -0
- package/docs/assets/install.js +34 -0
- package/docs/assets/selects.js +55 -0
- package/docs/index.html +18 -5
- package/docs.go +3 -1
- package/index.html +16 -0
- package/jest.config.js +7 -0
- package/package.json +39 -35
- package/src/docs/app.vue +196 -73
- package/src/docs/assets/scss/_variables.scss +26 -10
- package/src/docs/assets/scss/alert.scss +12 -0
- package/src/docs/assets/scss/animations.scss +5 -3
- package/src/docs/assets/scss/button.scss +21 -0
- package/src/docs/assets/scss/index.scss +8 -6
- package/src/docs/assets/scss/input.scss +2 -2
- package/src/docs/assets/scss/layout.scss +195 -65
- package/src/docs/assets/scss/misc.scss +144 -34
- package/src/docs/assets/scss/prism.scss +155 -153
- package/src/docs/env.d.ts +12 -0
- package/src/docs/images/check-mark.svg +6 -0
- package/src/docs/images/chrome.svg +22 -0
- package/src/docs/images/firefox.svg +58 -0
- package/src/docs/images/github.png +0 -0
- package/src/docs/images/ie.svg +11 -0
- package/src/docs/images/npm.png +0 -0
- package/src/docs/images/opera.svg +15 -0
- package/src/docs/images/safari.svg +22 -0
- package/src/docs/main.ts +27 -0
- package/src/docs/pages/data.vue +130 -0
- package/src/docs/pages/events/addable.vue +79 -0
- package/src/docs/pages/events/before_after_change.vue +140 -0
- package/src/docs/pages/events/before_after_open_close.vue +122 -0
- package/src/docs/pages/events/error.vue +59 -0
- package/src/docs/pages/events/index.vue +33 -0
- package/src/docs/pages/events/search.vue +154 -0
- package/src/docs/pages/events/search_filter.vue +45 -0
- package/src/docs/pages/home.vue +131 -117
- package/src/docs/pages/install.vue +51 -74
- package/src/docs/pages/methods/destroy.vue +66 -0
- package/src/docs/pages/methods/enable_disable.vue +70 -0
- package/src/docs/pages/methods/get_data.vue +81 -0
- package/src/docs/pages/methods/get_selected.vue +78 -0
- package/src/docs/pages/methods/index.vue +36 -0
- package/src/docs/pages/methods/open_close.vue +63 -0
- package/src/docs/pages/methods/search.vue +62 -0
- package/src/docs/pages/methods/set_data.vue +106 -0
- package/src/docs/pages/methods/set_selected.vue +70 -0
- package/src/docs/pages/selects.vue +108 -114
- package/src/docs/pages/settings/always_open.vue +88 -0
- package/src/docs/pages/settings/close_on_select.vue +69 -0
- package/src/docs/pages/settings/content_location.vue +64 -0
- package/src/docs/pages/settings/content_position.vue +86 -0
- package/src/docs/pages/settings/css.vue +73 -0
- package/src/docs/pages/settings/data_attributes.vue +39 -0
- package/src/docs/pages/settings/deselect.vue +69 -0
- package/src/docs/pages/settings/display.vue +88 -0
- package/src/docs/pages/settings/hide_selected.vue +73 -0
- package/src/docs/pages/settings/html.vue +86 -0
- package/src/docs/pages/settings/index.vue +73 -0
- package/src/docs/pages/settings/mandatory.vue +91 -0
- package/src/docs/pages/settings/min_max.vue +61 -0
- package/src/docs/pages/settings/open_position.vue +60 -0
- package/src/docs/pages/settings/placeholder.vue +72 -0
- package/src/docs/pages/settings/search.vue +140 -0
- package/src/docs/pages/settings/select.vue +32 -0
- package/src/docs/pages/settings/select_by_group.vue +46 -0
- package/src/docs/pages/settings/show_tooltip.vue +44 -0
- package/src/docs/pages/settings/styles.vue +51 -0
- package/src/docs/router.ts +41 -13
- package/src/slim-select/helper.ts +25 -86
- package/src/slim-select/index.ts +317 -420
- package/src/slim-select/render.test.ts +39 -0
- package/src/slim-select/render.ts +1129 -0
- package/src/slim-select/rollup.config.mjs +40 -0
- package/src/slim-select/select.test.ts +155 -0
- package/src/slim-select/select.ts +280 -108
- package/src/slim-select/settings.ts +68 -0
- package/src/slim-select/slimselect.scss +263 -278
- package/src/slim-select/store.test.ts +220 -0
- package/src/slim-select/store.ts +320 -0
- package/src/slim-select/tsconfig.json +11 -5
- package/src/vue/slimselect.vue +61 -0
- package/tsconfig.json +10 -29
- package/vite.config.ts +18 -0
- package/.browserslistrc +0 -4
- package/.postcssrc.js +0 -5
- package/.travis.yml +0 -22
- package/babel.config.js +0 -5
- package/dist/config.d.ts +0 -83
- package/dist/data.d.ts +0 -50
- package/dist/slim.d.ts +0 -50
- package/dist/slimselect.min.css +0 -1
- package/dist/slimselect.min.js +0 -1
- package/dist/slimselect.min.mjs +0 -1
- package/docs/css/app.d5840d21.css +0 -1
- package/docs/css/chunk-vendors.fa8199af.css +0 -1
- package/docs/css/home.57020178.css +0 -1
- package/docs/css/install.baa5d3fb.css +0 -1
- package/docs/css/methods.728c742a.css +0 -1
- package/docs/css/options.b28a32ef.css +0 -1
- package/docs/css/selects.1a7e1e6a.css +0 -1
- package/docs/js/app.238ee382.js +0 -2
- package/docs/js/app.238ee382.js.map +0 -1
- package/docs/js/chunk-vendors.5125e3d8.js +0 -21
- package/docs/js/chunk-vendors.5125e3d8.js.map +0 -1
- package/docs/js/home.e7b28581.js +0 -2
- package/docs/js/home.e7b28581.js.map +0 -1
- package/docs/js/install.d4300783.js +0 -2
- package/docs/js/install.d4300783.js.map +0 -1
- package/docs/js/methods.fa1608f1.js +0 -11
- package/docs/js/methods.fa1608f1.js.map +0 -1
- package/docs/js/options.2c4ceb87.js +0 -2
- package/docs/js/options.2c4ceb87.js.map +0 -1
- package/docs/js/selects.1eeba693.js +0 -2
- package/docs/js/selects.1eeba693.js.map +0 -1
- package/src/docs/pages/methods.vue +0 -427
- package/src/docs/pages/options.vue +0 -1480
- package/src/main.ts +0 -29
- package/src/shims-vue.d.ts +0 -8
- package/src/slim-select/config.ts +0 -118
- package/src/slim-select/data.ts +0 -377
- package/src/slim-select/slim.ts +0 -775
- package/src/slim-select/webpack.config.js +0 -73
- package/tslint.json +0 -26
- package/vue.config.js +0 -23
package/src/docs/pages/home.vue
CHANGED
|
@@ -1,53 +1,115 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import
|
|
3
|
-
import SlimSelect from '@/slim-select'
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
4
3
|
|
|
5
|
-
|
|
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:
|
|
15
|
+
this.single = new SlimSelect({
|
|
16
|
+
select: this.$refs.slimSingle as HTMLSelectElement,
|
|
9
17
|
})
|
|
10
|
-
new SlimSelect({
|
|
11
|
-
select:
|
|
18
|
+
this.multiple = new SlimSelect({
|
|
19
|
+
select: this.$refs.slimMulti as HTMLSelectElement,
|
|
12
20
|
})
|
|
13
|
-
}
|
|
14
|
-
})
|
|
15
|
-
</script>
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
.
|
|
45
|
-
|
|
102
|
+
.features {
|
|
103
|
+
flex: 1 1 auto;
|
|
46
104
|
display: flex;
|
|
47
|
-
|
|
105
|
+
flex-direction: column;
|
|
48
106
|
|
|
49
|
-
.
|
|
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:
|
|
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
|
|
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
|
|
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"
|
|
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
|
|
155
|
+
<select ref="slimMulti" multiple>
|
|
122
156
|
<option value="best">Best</option>
|
|
123
|
-
<option value="select"
|
|
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
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
<img src="images/
|
|
157
|
-
<
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
<img src="images/
|
|
161
|
-
<
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
<
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
<img src="images/
|
|
169
|
-
<
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
<img src="images/
|
|
173
|
-
<
|
|
174
|
-
</
|
|
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
|
-
|
|
3
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import download from 'downloadjs'
|
|
3
|
+
import { defineComponent } from 'vue'
|
|
4
|
+
import packageJson from '../../../package.json'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
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: '#
|
|
38
|
+
select: '#selectElement'
|
|
78
39
|
})
|
|
79
40
|
</code>
|
|
80
41
|
</pre>
|
|
81
42
|
</div>
|
|
82
43
|
|
|
83
|
-
<div class="
|
|
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
|
-
<
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
55
|
+
<html>
|
|
56
|
+
<head>
|
|
57
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/slim-select/{{version}}/slimselect.js"></script>
|
|
58
|
+
<link href="https://cdnjs.cloudflare.com/ajax/libs/slim-select/{{version}}/slimselect.css" rel="stylesheet"></link>
|
|
59
|
+
|
|
60
|
+
<script>
|
|
61
|
+
new SlimSelect({
|
|
62
|
+
select: '#selectElement'
|
|
63
|
+
})
|
|
64
|
+
<script>
|
|
65
|
+
</head>
|
|
66
|
+
<body>
|
|
67
|
+
<select id="selectElement">
|
|
68
|
+
<option>Option 1</option>
|
|
69
|
+
<option>Option 2</option>
|
|
70
|
+
<option>Option 3</option>
|
|
71
|
+
</select>
|
|
72
|
+
</body>
|
|
73
|
+
</html>
|
|
97
74
|
</code>
|
|
98
75
|
</pre>
|
|
99
76
|
</div>
|
|
100
77
|
|
|
101
|
-
<div class="
|
|
78
|
+
<div id="download" class="content">
|
|
102
79
|
<h2>Download</h2>
|
|
103
|
-
<
|
|
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>
|