slim-select 1.27.0 → 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.
- package/.nvmrc +1 -0
- package/.prettierrc +6 -0
- package/.vscode/extensions.json +3 -0
- package/.vscode/settings.json +15 -5
- package/README.md +2 -1
- 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 -1956
- 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 -39
- package/src/docs/app.vue +185 -76
- 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 +96 -116
- package/src/docs/pages/install.vue +47 -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 +318 -413
- package/src/slim-select/render.test.ts +39 -0
- package/src/slim-select/render.ts +1129 -0
- package/src/slim-select/rollup.config.mjs +39 -0
- package/src/slim-select/select.test.ts +155 -0
- package/src/slim-select/select.ts +280 -107
- 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.4db6930d.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.db13c724.js +0 -2
- package/docs/js/app.db13c724.js.map +0 -1
- package/docs/js/chunk-vendors.cc40aa28.js +0 -28
- package/docs/js/chunk-vendors.cc40aa28.js.map +0 -1
- package/docs/js/home.8bcb44fd.js +0 -2
- package/docs/js/home.8bcb44fd.js.map +0 -1
- package/docs/js/install.02f31028.js +0 -2
- package/docs/js/install.02f31028.js.map +0 -1
- package/docs/js/methods.1b31e988.js +0 -11
- package/docs/js/methods.1b31e988.js.map +0 -1
- package/docs/js/options.39fe1005.js +0 -2
- package/docs/js/options.39fe1005.js.map +0 -1
- package/docs/js/selects.f4d0b859.js +0 -2
- package/docs/js/selects.f4d0b859.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 -770
- package/tslint.json +0 -26
- package/vue.config.js +0 -23
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'AlwaysOpen',
|
|
8
|
+
mounted() {
|
|
9
|
+
new SlimSelect({
|
|
10
|
+
select: this.$refs.alwaysOpenSingle as HTMLSelectElement,
|
|
11
|
+
settings: {
|
|
12
|
+
alwaysOpen: true,
|
|
13
|
+
contentLocation: this.$refs.alwaysOpenSingleContent as HTMLElement,
|
|
14
|
+
contentPosition: 'relative',
|
|
15
|
+
},
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
new SlimSelect({
|
|
19
|
+
select: this.$refs.alwaysOpenMultiple as HTMLSelectElement,
|
|
20
|
+
settings: {
|
|
21
|
+
alwaysOpen: true,
|
|
22
|
+
contentLocation: this.$refs.alwaysOpenMultipleContent as HTMLElement,
|
|
23
|
+
contentPosition: 'relative',
|
|
24
|
+
},
|
|
25
|
+
})
|
|
26
|
+
},
|
|
27
|
+
})
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<div id="alwaysOpen" class="content">
|
|
32
|
+
<h2 class="header">alwaysOpen</h2>
|
|
33
|
+
<p>
|
|
34
|
+
alwaysOpen option is used to keep the select open at all times. This is useful for when you want to display the
|
|
35
|
+
options at all times.
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
<div class="row">
|
|
39
|
+
<div style="height: auto">
|
|
40
|
+
<select ref="alwaysOpenSingle">
|
|
41
|
+
<option value="value1">Value 1</option>
|
|
42
|
+
<option value="value2">Value 2</option>
|
|
43
|
+
<option value="value3">Value 3</option>
|
|
44
|
+
</select>
|
|
45
|
+
<div ref="alwaysOpenSingleContent"></div>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div style="height: auto">
|
|
49
|
+
<select ref="alwaysOpenMultiple" multiple>
|
|
50
|
+
<option value="value1">Value 1</option>
|
|
51
|
+
<option value="value2">Value 2</option>
|
|
52
|
+
<option value="value3">Value 3</option>
|
|
53
|
+
<option value="value4">Value 4</option>
|
|
54
|
+
</select>
|
|
55
|
+
<div ref="alwaysOpenMultipleContent"></div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<pre>
|
|
60
|
+
<code class="language-javascript">
|
|
61
|
+
new SlimSelect({
|
|
62
|
+
select: '#selectElement',
|
|
63
|
+
settings: {
|
|
64
|
+
alwaysOpen: true,
|
|
65
|
+
|
|
66
|
+
// In various situations it may be useful to set the contentLocation
|
|
67
|
+
// to an element that will display best
|
|
68
|
+
contentLocation: document.getElementById('local'), ,
|
|
69
|
+
contentPosition: 'relative',
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
</code>
|
|
73
|
+
</pre>
|
|
74
|
+
|
|
75
|
+
<pre>
|
|
76
|
+
<code class="language-html">
|
|
77
|
+
<select id="selectElement">
|
|
78
|
+
<option value="value1">Value 1</option>
|
|
79
|
+
<option value="value2">Value 2</option>
|
|
80
|
+
<option value="value3">Value 3</option>
|
|
81
|
+
</select>
|
|
82
|
+
|
|
83
|
+
<!-- The content will go in this div -->
|
|
84
|
+
<div id="local"></div>
|
|
85
|
+
</code>
|
|
86
|
+
</pre>
|
|
87
|
+
</div>
|
|
88
|
+
</template>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'CloseOnSelect',
|
|
8
|
+
mounted() {
|
|
9
|
+
new SlimSelect({
|
|
10
|
+
select: this.$refs.closeOnSelectSingle as HTMLSelectElement,
|
|
11
|
+
settings: {
|
|
12
|
+
closeOnSelect: false,
|
|
13
|
+
},
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
new SlimSelect({
|
|
17
|
+
select: this.$refs.closeOnSelectMultiple as HTMLSelectElement,
|
|
18
|
+
settings: {
|
|
19
|
+
closeOnSelect: false,
|
|
20
|
+
selectByGroup: true,
|
|
21
|
+
},
|
|
22
|
+
})
|
|
23
|
+
},
|
|
24
|
+
})
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<template>
|
|
28
|
+
<div id="closeOnSelect" class="content">
|
|
29
|
+
<h2 class="header">closeOnSelect</h2>
|
|
30
|
+
<p>
|
|
31
|
+
closeOnSelect is a boolean value in which determines whether or not to close the content area upon selecting a
|
|
32
|
+
value.
|
|
33
|
+
</p>
|
|
34
|
+
|
|
35
|
+
<div class="row">
|
|
36
|
+
<select ref="closeOnSelectSingle">
|
|
37
|
+
<option value="value1">Value 1</option>
|
|
38
|
+
<option value="value2">Value 2</option>
|
|
39
|
+
<option value="value3">Value 3</option>
|
|
40
|
+
<optgroup label="Super Values">
|
|
41
|
+
<option value="value11">Value 1</option>
|
|
42
|
+
<option value="value22">Value 2</option>
|
|
43
|
+
<option value="value33">Value 3</option>
|
|
44
|
+
</optgroup>
|
|
45
|
+
</select>
|
|
46
|
+
<select ref="closeOnSelectMultiple" multiple>
|
|
47
|
+
<option value="value1">Value 1</option>
|
|
48
|
+
<option value="value2">Value 2</option>
|
|
49
|
+
<option value="value3">Value 3</option>
|
|
50
|
+
<optgroup label="Super Values">
|
|
51
|
+
<option value="value11">Value 1</option>
|
|
52
|
+
<option value="value22">Value 2</option>
|
|
53
|
+
<option value="value33">Value 3</option>
|
|
54
|
+
</optgroup>
|
|
55
|
+
</select>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<pre>
|
|
59
|
+
<code class="language-javascript">
|
|
60
|
+
new SlimSelect({
|
|
61
|
+
select: '#search',
|
|
62
|
+
settings: {
|
|
63
|
+
closeOnSelect: false,
|
|
64
|
+
},
|
|
65
|
+
})
|
|
66
|
+
</code>
|
|
67
|
+
</pre>
|
|
68
|
+
</div>
|
|
69
|
+
</template>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'ContentLocation',
|
|
8
|
+
mounted() {
|
|
9
|
+
new SlimSelect({
|
|
10
|
+
select: this.$refs.contentLocation as HTMLSelectElement,
|
|
11
|
+
settings: {
|
|
12
|
+
contentLocation: this.$refs.local as HTMLElement,
|
|
13
|
+
},
|
|
14
|
+
})
|
|
15
|
+
},
|
|
16
|
+
})
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<div id="contentLocation" class="content">
|
|
21
|
+
<h2 class="header">contentLocation</h2>
|
|
22
|
+
<p>
|
|
23
|
+
contentLocation will allow you to set the location of where the content section of slim select. By default every
|
|
24
|
+
content div is appended to the body.
|
|
25
|
+
</p>
|
|
26
|
+
<p>
|
|
27
|
+
The content container is the bottom half of slim select. This includes the search input field and available
|
|
28
|
+
options
|
|
29
|
+
</p>
|
|
30
|
+
|
|
31
|
+
<div class="row">
|
|
32
|
+
<select ref="contentLocation" style="width: 50%">
|
|
33
|
+
<option value="value1">Value 1</option>
|
|
34
|
+
<option value="value2">Value 2</option>
|
|
35
|
+
<option value="value3">Value 3</option>
|
|
36
|
+
</select>
|
|
37
|
+
<div ref="local"></div>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<pre>
|
|
41
|
+
<code class="language-javascript">
|
|
42
|
+
new SlimSelect({
|
|
43
|
+
select: '#selectElement',
|
|
44
|
+
settings: {
|
|
45
|
+
contentLocation: document.getElementById('local')
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
</code>
|
|
49
|
+
</pre>
|
|
50
|
+
|
|
51
|
+
<pre>
|
|
52
|
+
<code class="language-html">
|
|
53
|
+
<select id="contentLocation">
|
|
54
|
+
<option value="value1">Value 1</option>
|
|
55
|
+
<option value="value2">Value 2</option>
|
|
56
|
+
<option value="value3">Value 3</option>
|
|
57
|
+
</select>
|
|
58
|
+
|
|
59
|
+
<!-- The content will go in this div -->
|
|
60
|
+
<div id="local"></div>
|
|
61
|
+
</code>
|
|
62
|
+
</pre>
|
|
63
|
+
</div>
|
|
64
|
+
</template>
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'ContentPosition',
|
|
8
|
+
mounted() {
|
|
9
|
+
new SlimSelect({
|
|
10
|
+
select: this.$refs.contentPositionRelative as HTMLSelectElement,
|
|
11
|
+
settings: {
|
|
12
|
+
contentPosition: 'relative',
|
|
13
|
+
contentLocation: this.$refs.contentPositionRelativeContent as HTMLElement,
|
|
14
|
+
},
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
new SlimSelect({
|
|
18
|
+
select: this.$refs.contentPositionAbsolute as HTMLSelectElement,
|
|
19
|
+
settings: {
|
|
20
|
+
contentPosition: 'absolute',
|
|
21
|
+
},
|
|
22
|
+
})
|
|
23
|
+
},
|
|
24
|
+
})
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<style lang="scss">
|
|
28
|
+
#contentPosition {
|
|
29
|
+
.row {
|
|
30
|
+
.ss-main {
|
|
31
|
+
height: 30px;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.relative {
|
|
35
|
+
width: 200px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.absolute {
|
|
39
|
+
width: 200px;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
</style>
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
<div id="contentPosition" class="content">
|
|
47
|
+
<h2 class="header">contentPosition</h2>
|
|
48
|
+
<p>contentPosition will set the css position to either relative. Default is <b>'absolute'</b></p>
|
|
49
|
+
|
|
50
|
+
<div class="alert info">
|
|
51
|
+
If you do use relative position be sure to set the contentLocation to an element that will work best for your use
|
|
52
|
+
case. Otherwise SlimSelect will add you content to the body of the html. See example usage below.
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<div class="row">
|
|
56
|
+
<select ref="contentPositionRelative" class="relative">
|
|
57
|
+
<option data-placeholder="true">Relative</option>
|
|
58
|
+
<option value="value1">Value 1</option>
|
|
59
|
+
<option value="value2">Value 2</option>
|
|
60
|
+
<option value="value3">Value 3</option>
|
|
61
|
+
</select>
|
|
62
|
+
<div ref="contentPositionRelativeContent"></div>
|
|
63
|
+
<select ref="contentPositionAbsolute" class="absolute">
|
|
64
|
+
<option data-placeholder="true">Absolute</option>
|
|
65
|
+
<option value="value1">Value 1</option>
|
|
66
|
+
<option value="value2">Value 2</option>
|
|
67
|
+
<option value="value3">Value 3</option>
|
|
68
|
+
</select>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<pre>
|
|
72
|
+
<code class="language-javascript">
|
|
73
|
+
new SlimSelect({
|
|
74
|
+
select: '#selectElement',
|
|
75
|
+
settings: {
|
|
76
|
+
contentPosition: 'relative' // 'absolute' or 'relative'
|
|
77
|
+
|
|
78
|
+
// To help with relative positioning
|
|
79
|
+
// you can set the contentLocation
|
|
80
|
+
contentLocation: document.getElementById('local')
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
</code>
|
|
84
|
+
</pre>
|
|
85
|
+
</div>
|
|
86
|
+
</template>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'Css',
|
|
8
|
+
mounted() {
|
|
9
|
+
new SlimSelect({ select: this.$refs.selectClass as HTMLSelectElement })
|
|
10
|
+
new SlimSelect({ select: this.$refs.optionClass as HTMLSelectElement })
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<style lang="scss">
|
|
16
|
+
.select-class.ss-main {
|
|
17
|
+
background-color: #5897fb;
|
|
18
|
+
color: white;
|
|
19
|
+
border: none;
|
|
20
|
+
|
|
21
|
+
.ss-arrow * {
|
|
22
|
+
border-color: white;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ss-option {
|
|
27
|
+
&.red {
|
|
28
|
+
color: white;
|
|
29
|
+
background-color: red;
|
|
30
|
+
}
|
|
31
|
+
&.green {
|
|
32
|
+
color: white;
|
|
33
|
+
background-color: green;
|
|
34
|
+
}
|
|
35
|
+
&.blue {
|
|
36
|
+
color: white;
|
|
37
|
+
background-color: blue;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
</style>
|
|
41
|
+
|
|
42
|
+
<template>
|
|
43
|
+
<div id="cssClass" class="content">
|
|
44
|
+
<h2 class="header">css class</h2>
|
|
45
|
+
<p>
|
|
46
|
+
Slim select will inherit any classes that were added to the original select element. This includes options as
|
|
47
|
+
well.
|
|
48
|
+
</p>
|
|
49
|
+
|
|
50
|
+
<div class="row">
|
|
51
|
+
<select ref="selectClass" class="select-class">
|
|
52
|
+
<option value="value1">Value 1</option>
|
|
53
|
+
<option value="value2">Value 2</option>
|
|
54
|
+
<option value="value3">Value 3</option>
|
|
55
|
+
</select>
|
|
56
|
+
<select ref="optionClass" class="option-class">
|
|
57
|
+
<option class="red" value="value1">Red</option>
|
|
58
|
+
<option class="green" value="value2">Green</option>
|
|
59
|
+
<option class="blue" value="value3">Blue</option>
|
|
60
|
+
</select>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<pre>
|
|
64
|
+
<code class="language-html">
|
|
65
|
+
<select id="select-class" class="classItems">
|
|
66
|
+
<option class="red" value="value1">Value 1</option>
|
|
67
|
+
<option class="green" value="value2">Value 2</option>
|
|
68
|
+
<option class="blue" value="value3">Value 3</option>
|
|
69
|
+
</select>
|
|
70
|
+
</code>
|
|
71
|
+
</pre>
|
|
72
|
+
</div>
|
|
73
|
+
</template>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'DataAttributes',
|
|
8
|
+
mounted() {
|
|
9
|
+
new SlimSelect({ select: this.$refs.optionsSingle as HTMLSelectElement })
|
|
10
|
+
new SlimSelect({ select: this.$refs.optionsMultiple as HTMLSelectElement })
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<div id="dataAttributes" class="content">
|
|
17
|
+
<h2 class="header">Data Attributes</h2>
|
|
18
|
+
<p>
|
|
19
|
+
Slim select will take on attributes of the original as best as possible. Below are example usages of attributes
|
|
20
|
+
added to the underlining select options that slim select picked up and used
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
<div class="row">
|
|
24
|
+
<select ref="optionsSingle">
|
|
25
|
+
<option data-placeholder="true"></option>
|
|
26
|
+
<option value="value1" data-info="Here is info">Data Attributes</option>
|
|
27
|
+
<option value="value2" disabled>Disabled Option</option>
|
|
28
|
+
<option value="value3" class="green">Class Green</option>
|
|
29
|
+
<option value="value4" style="color: purple">Inline Style</option>
|
|
30
|
+
</select>
|
|
31
|
+
<select ref="optionsMultiple" multiple>
|
|
32
|
+
<option value="value1" data-info="Here is info">Data Attributes</option>
|
|
33
|
+
<option value="value2" disabled>Disabled Option</option>
|
|
34
|
+
<option value="value3" class="green">Class Green</option>
|
|
35
|
+
<option value="value4" style="color: purple">Inline Style</option>
|
|
36
|
+
</select>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</template>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'Deselect',
|
|
8
|
+
mounted() {
|
|
9
|
+
new SlimSelect({
|
|
10
|
+
select: this.$refs.allowDeselectSingle as HTMLSelectElement,
|
|
11
|
+
settings: {
|
|
12
|
+
allowDeselect: true,
|
|
13
|
+
},
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
new SlimSelect({
|
|
17
|
+
select: this.$refs.allowDeselectMultiple as HTMLSelectElement,
|
|
18
|
+
settings: {
|
|
19
|
+
allowDeselect: true,
|
|
20
|
+
},
|
|
21
|
+
})
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<template>
|
|
27
|
+
<div id="allowDeselect" class="content">
|
|
28
|
+
<h2 class="header">allowDeselect</h2>
|
|
29
|
+
<p>This will allow you to deselect a value on a single/multiple select dropdown.</p>
|
|
30
|
+
<p>Be sure to have an empty option data placeholder so slim select has an empty string value to select.</p>
|
|
31
|
+
|
|
32
|
+
<div class="row">
|
|
33
|
+
<select ref="allowDeselectSingle">
|
|
34
|
+
<option data-placeholder="true"></option>
|
|
35
|
+
<option value="value1">Value 1</option>
|
|
36
|
+
<option value="value2">Value 2</option>
|
|
37
|
+
<option value="value3">Value 3</option>
|
|
38
|
+
</select>
|
|
39
|
+
<select ref="allowDeselectMultiple" multiple>
|
|
40
|
+
<option data-placeholder="true"></option>
|
|
41
|
+
<option value="value1">Value 1</option>
|
|
42
|
+
<option value="value2">Value 2</option>
|
|
43
|
+
<option value="value3">Value 3</option>
|
|
44
|
+
</select>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<pre>
|
|
48
|
+
<code class="language-javascript">
|
|
49
|
+
new SlimSelect({
|
|
50
|
+
select: '#selectElement',
|
|
51
|
+
settings: {
|
|
52
|
+
allowDeselect: true
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
</code>
|
|
56
|
+
</pre>
|
|
57
|
+
<pre>
|
|
58
|
+
<code class="language-html">
|
|
59
|
+
<!-- Requires emtpy data-placeholder option -->
|
|
60
|
+
<select id="allowDeselect">
|
|
61
|
+
<option data-placeholder="true"></option>
|
|
62
|
+
<option value="value1">Value 1</option>
|
|
63
|
+
<option value="value2">Value 2</option>
|
|
64
|
+
<option value="value3">Value 3</option>
|
|
65
|
+
</select>
|
|
66
|
+
</code>
|
|
67
|
+
</pre>
|
|
68
|
+
</div>
|
|
69
|
+
</template>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'Display',
|
|
8
|
+
mounted() {
|
|
9
|
+
const displaySelect = new SlimSelect({
|
|
10
|
+
select: this.$refs.selectdisplay as HTMLSelectElement,
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
const displayData = [
|
|
14
|
+
{ value: 'value1', text: 'Value 1', display: false },
|
|
15
|
+
{ value: 'value2', text: 'Value 2' },
|
|
16
|
+
{ value: 'value3', text: 'Value 3' },
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
displaySelect.setData(displayData)
|
|
20
|
+
displaySelect.setSelected(['value1', 'value3'])
|
|
21
|
+
|
|
22
|
+
new SlimSelect({
|
|
23
|
+
select: this.$refs.selectdisplay2 as HTMLSelectElement,
|
|
24
|
+
})
|
|
25
|
+
},
|
|
26
|
+
})
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<template>
|
|
30
|
+
<div id="display" class="content">
|
|
31
|
+
<h2 class="header">display</h2>
|
|
32
|
+
<p>Allows to hide elements of selected values.</p>
|
|
33
|
+
|
|
34
|
+
<div class="row">
|
|
35
|
+
<select ref="selectdisplay" multiple></select>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<pre>
|
|
39
|
+
<code class="language-javascript">
|
|
40
|
+
const displaySelect = new SlimSelect({
|
|
41
|
+
select: '#selectElement'
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
const displayData = [
|
|
45
|
+
{ value: 'value1', text: 'Value 1', display: false },
|
|
46
|
+
{ value: 'value2', text: 'Value 2' },
|
|
47
|
+
{ value: 'value3', text: 'Value 3' },
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
displaySelect.setData(displayData)
|
|
51
|
+
displaySelect.set(['value1', 'value3'])
|
|
52
|
+
</code>
|
|
53
|
+
</pre>
|
|
54
|
+
|
|
55
|
+
<pre>
|
|
56
|
+
<code class="language-html">
|
|
57
|
+
<select id="selectMultiMandatory" multiple></select>
|
|
58
|
+
</code>
|
|
59
|
+
</pre>
|
|
60
|
+
|
|
61
|
+
<p>Or</p>
|
|
62
|
+
<div class="row">
|
|
63
|
+
<select ref="selectdisplay2" multiple>
|
|
64
|
+
<option value="value1" style="display: none" selected>Value 1</option>
|
|
65
|
+
<option value="value2" selected>Value 2</option>
|
|
66
|
+
<option value="value3">Value 3</option>
|
|
67
|
+
</select>
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<pre>
|
|
71
|
+
<code class="language-javascript">
|
|
72
|
+
const slim = new SlimSelect({
|
|
73
|
+
select: '#selectElement'
|
|
74
|
+
});
|
|
75
|
+
</code>
|
|
76
|
+
</pre>
|
|
77
|
+
|
|
78
|
+
<pre>
|
|
79
|
+
<code class="language-html">
|
|
80
|
+
<select id="selectdisplay2" multiple>
|
|
81
|
+
<option value="value1" style="display: none;" selected>Value 1</option>
|
|
82
|
+
<option value="value2" selected>Value 2</option>
|
|
83
|
+
<option value="value3">Value 3</option>
|
|
84
|
+
</select>
|
|
85
|
+
</code>
|
|
86
|
+
</pre>
|
|
87
|
+
</div>
|
|
88
|
+
</template>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
|
|
4
|
+
import SlimSelect from '../../../slim-select'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
name: 'HideSelected',
|
|
8
|
+
mounted() {
|
|
9
|
+
new SlimSelect({
|
|
10
|
+
select: this.$refs.hideSelectedSingle as HTMLSelectElement,
|
|
11
|
+
settings: {
|
|
12
|
+
hideSelected: true,
|
|
13
|
+
},
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
new SlimSelect({
|
|
17
|
+
select: this.$refs.hideSelectedMultiple as HTMLSelectElement,
|
|
18
|
+
settings: {
|
|
19
|
+
hideSelected: true,
|
|
20
|
+
},
|
|
21
|
+
})
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<template>
|
|
27
|
+
<div id="hideSelected" class="content">
|
|
28
|
+
<h2 class="header">hideSelected</h2>
|
|
29
|
+
<p>hideSelected setting is used to hide the current selected option in the options dropdown.</p>
|
|
30
|
+
|
|
31
|
+
<div class="row">
|
|
32
|
+
<select ref="hideSelectedSingle">
|
|
33
|
+
<option data-placeholder="true"></option>
|
|
34
|
+
<option value="value1">Value 1</option>
|
|
35
|
+
<option value="value2">Value 2</option>
|
|
36
|
+
<option value="value3">Value 3</option>
|
|
37
|
+
</select>
|
|
38
|
+
<select ref="hideSelectedMultiple" multiple>
|
|
39
|
+
<option value="value1">Value 1</option>
|
|
40
|
+
<option value="value2">Value 2</option>
|
|
41
|
+
<option value="value3">Value 3</option>
|
|
42
|
+
</select>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<pre>
|
|
46
|
+
<code class="language-javascript">
|
|
47
|
+
new SlimSelect({
|
|
48
|
+
select: '#selectElement',
|
|
49
|
+
settings: {
|
|
50
|
+
hideSelected: true,
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
</code>
|
|
54
|
+
</pre>
|
|
55
|
+
|
|
56
|
+
<pre>
|
|
57
|
+
<code class="language-html">
|
|
58
|
+
<select id="hideSelectedSingle">
|
|
59
|
+
<option data-placeholder="true"></option>
|
|
60
|
+
<option value="value1">Value 1</option>
|
|
61
|
+
<option value="value2">Value 2</option>
|
|
62
|
+
<option value="value3">Value 3</option>
|
|
63
|
+
</select>
|
|
64
|
+
|
|
65
|
+
<select id="hideSelectedMultiple">
|
|
66
|
+
<option value="value1">Value 1</option>
|
|
67
|
+
<option value="value2">Value 2</option>
|
|
68
|
+
<option value="value3">Value 3</option>
|
|
69
|
+
</select>
|
|
70
|
+
</code>
|
|
71
|
+
</pre>
|
|
72
|
+
</div>
|
|
73
|
+
</template>
|