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.
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 -1956
  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 -39
  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 +318 -413
  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 -107
  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.4db6930d.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.db13c724.js +0 -2
  134. package/docs/js/app.db13c724.js.map +0 -1
  135. package/docs/js/chunk-vendors.cc40aa28.js +0 -28
  136. package/docs/js/chunk-vendors.cc40aa28.js.map +0 -1
  137. package/docs/js/home.8bcb44fd.js +0 -2
  138. package/docs/js/home.8bcb44fd.js.map +0 -1
  139. package/docs/js/install.02f31028.js +0 -2
  140. package/docs/js/install.02f31028.js.map +0 -1
  141. package/docs/js/methods.1b31e988.js +0 -11
  142. package/docs/js/methods.1b31e988.js.map +0 -1
  143. package/docs/js/options.39fe1005.js +0 -2
  144. package/docs/js/options.39fe1005.js.map +0 -1
  145. package/docs/js/selects.f4d0b859.js +0 -2
  146. package/docs/js/selects.f4d0b859.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 -770
  154. package/tslint.json +0 -26
  155. package/vue.config.js +0 -23
@@ -1,285 +1,257 @@
1
- $height: 30px !default;
2
- $white: #ffffff !default;
3
- $font-color: #666666 !default;
4
- $font-placeholder-color: #8a8a8a !default;
5
- $font-disabled-color: #dedede !default;
6
- $primary-color: #5897fb !default;
7
- $border-color: #dcdee2 !default;
8
- $search-highlight-color: #fffb8c !default;
9
- $border-radius: 4px !default;
10
- $spacing-l: 8px !default;
11
- $spacing-m: 6px !default;
12
- $spacing-s: 4px !default;
1
+ :root {
2
+ // Colors
3
+ --ss-primary-color: #5897fb;
4
+ --ss-bg-color: #ffffff;
5
+ --ss-font-color: #4d4d4d;
6
+ --ss-font-placeholder-color: #8d8d8d;
7
+ --ss-disabled-color: #8a8a8a;
8
+ --ss-border-color: #dcdee2;
9
+ --ss-highlight-color: #fffb8c;
10
+ --ss-error-color: #dc3545;
11
+
12
+ // Heights
13
+ --ss-main-height: 30px;
14
+ --ss-content-height: 300px;
15
+
16
+ // Spacing
17
+ --ss-spacing-l: 7px;
18
+ --ss-spacing-m: 5px;
19
+ --ss-spacing-s: 3px;
20
+
21
+ // Misc
22
+ --ss-animation-timing: 0.2s;
23
+ --ss-border-radius: 4px;
24
+ }
13
25
 
26
+ // Animation keyframes
27
+ @keyframes ss-valueIn {
28
+ 0% {
29
+ transform: scale(0);
30
+ opacity: 0;
31
+ }
32
+ 100% {
33
+ transform: scale(1);
34
+ opacity: 1;
35
+ }
36
+ }
37
+ @keyframes ss-valueOut {
38
+ 0% {
39
+ transform: scale(1);
40
+ opacity: 1;
41
+ }
42
+ 100% {
43
+ transform: scale(0);
44
+ opacity: 0;
45
+ }
46
+ }
47
+
48
+ // Misc classes
49
+ .ss-hide {
50
+ display: none !important;
51
+ }
52
+
53
+ // Main container
14
54
  .ss-main {
55
+ display: flex;
56
+ flex-direction: row;
15
57
  position: relative;
16
- display: inline-block;
17
58
  user-select: none;
18
- color: $font-color;
59
+ color: var(--ss-font-color);
60
+ min-height: var(--ss-main-height);
19
61
  width: 100%;
62
+ padding: var(--ss-spacing-s);
63
+ cursor: pointer;
64
+ border: 1px solid var(--ss-border-color);
65
+ border-radius: var(--ss-border-radius);
66
+ background-color: var(--ss-bg-color);
67
+ outline: 0;
68
+ box-sizing: border-box;
69
+ transition: background-color var(--ss-animation-timing);
20
70
 
21
- .ss-single-selected {
22
- display: flex;
23
- cursor: pointer;
24
- width: 100%;
25
- height: $height;
26
- padding: $spacing-m;
27
- border: 1px solid $border-color;
28
- border-radius: $border-radius;
29
- background-color: $white;
30
- outline: 0;
31
- box-sizing: border-box;
32
- transition: background-color .2s;
33
-
34
- &.ss-disabled {
35
- background-color: $border-color;
36
- cursor: not-allowed;
37
- }
38
-
39
- &.ss-open-above {
40
- border-top-left-radius: 0px;
41
- border-top-right-radius: 0px;
42
- }
43
- &.ss-open-below {
44
- border-bottom-left-radius: 0px;
45
- border-bottom-right-radius: 0px;
46
- }
47
-
48
- .placeholder {
49
- display: flex;
50
- flex: 1 1 100%;
51
- align-items: center;
52
- overflow: hidden;
53
- text-overflow: ellipsis;
54
- white-space: nowrap;
55
- text-align: left;
56
- width: calc(100% - 30px);
57
- line-height: 1em;
58
- -webkit-user-select: none;
59
- -moz-user-select: none;
60
- -ms-user-select: none;
61
- user-select: none;
71
+ &:focus {
72
+ box-shadow: 0 0 5px var(--ss-primary-color);
73
+ }
62
74
 
63
- * {
64
- display: flex;
65
- align-items: center;
66
- overflow: hidden;
67
- text-overflow: ellipsis;
68
- white-space: nowrap;
69
- width: auto;
70
- }
75
+ &.ss-disabled {
76
+ background-color: var(--ss-border-color);
77
+ cursor: not-allowed;
71
78
 
79
+ .ss-values {
72
80
  .ss-disabled {
73
- color: $font-disabled-color;
81
+ color: var(--ss-font-color);
74
82
  }
75
- }
76
-
77
- .ss-deselect {
78
- display: flex;
79
- align-items: center;
80
- justify-content: flex-end;
81
- flex: 0 1 auto;
82
- margin: 0 $spacing-m 0 $spacing-m;
83
- font-weight: bold;
84
83
 
85
- &.ss-hide {
86
- display: none;
87
- }
88
- }
89
-
90
- .ss-arrow {
91
- display: flex;
92
- align-items: center;
93
- justify-content: flex-end;
94
- flex: 0 1 auto;
95
- margin: 0 $spacing-m 0 $spacing-m;
96
-
97
- span {
98
- border: solid $font-color;
99
- border-width: 0 2px 2px 0;
100
- display: inline-block;
101
- padding: 3px;
102
- transition: transform .2s, margin .2s;
103
-
104
- &.arrow-up {
105
- transform: rotate(-135deg);
106
- margin: 3px 0 0 0;
107
- }
108
- &.arrow-down {
109
- transform: rotate(45deg);
110
- margin: -3px 0 0 0;
84
+ .ss-value {
85
+ .ss-value-delete {
86
+ cursor: not-allowed;
111
87
  }
112
88
  }
113
89
  }
114
90
  }
115
91
 
116
- .ss-multi-selected {
117
- display: flex;
118
- flex-direction: row;
119
- cursor: pointer;
120
- min-height: $height;
121
- width: 100%;
122
- padding: 0 0 0 3px;
123
- border: 1px solid $border-color;
124
- border-radius: $border-radius;
125
- background-color: $white;
126
- outline: 0;
127
- box-sizing: border-box;
128
- transition: background-color .2s;
129
-
130
- &.ss-disabled {
131
- background-color: $border-color;
132
- cursor: not-allowed;
133
-
134
- .ss-values {
135
- .ss-disabled {
136
- color: $font-color;
137
- }
92
+ &.ss-open-above {
93
+ border-top-left-radius: 0px;
94
+ border-top-right-radius: 0px;
95
+ }
96
+ &.ss-open-below {
97
+ border-bottom-left-radius: 0px;
98
+ border-bottom-right-radius: 0px;
99
+ }
138
100
 
139
- .ss-value {
140
- .ss-value-delete {
141
- cursor: not-allowed;
142
- }
143
- }
144
- }
145
- }
101
+ .ss-values {
102
+ display: inline-flex;
103
+ flex-wrap: wrap;
104
+ gap: var(--ss-spacing-m);
105
+ flex: 1 1 100%;
146
106
 
147
- &.ss-open-above {
148
- border-top-left-radius: 0px;
149
- border-top-right-radius: 0px;
150
- }
151
- &.ss-open-below {
152
- border-bottom-left-radius: 0px;
153
- border-bottom-right-radius: 0px;
107
+ .ss-placeholder {
108
+ display: flex;
109
+ padding: var(--ss-spacing-s) var(--ss-spacing-m) var(--ss-spacing-s) var(--ss-spacing-m);
110
+ margin: auto 0px auto 0px;
111
+ line-height: 1em;
112
+ align-items: center;
113
+ width: 100%;
114
+ color: var(--ss-font-placeholder-color);
115
+ overflow: hidden;
116
+ text-overflow: ellipsis;
117
+ white-space: nowrap;
154
118
  }
155
119
 
156
- .ss-values {
120
+ .ss-single {
157
121
  display: flex;
158
- flex-wrap: wrap;
159
- justify-content: flex-start;
160
- flex: 1 1 100%;
161
- width: calc(100% - 30px);
122
+ margin: auto 0px auto var(--ss-spacing-s);
123
+ }
162
124
 
163
- .ss-disabled {
164
- display: flex;
165
- padding: 4px 5px;
166
- margin: 2px 0px;
167
- line-height: 1em;
168
- align-items: center;
169
- width: 100%;
170
- color: $font-disabled-color;
171
- overflow: hidden;
172
- text-overflow: ellipsis;
173
- white-space: nowrap;
125
+ .ss-value {
126
+ display: flex;
127
+ user-select: none;
128
+ align-items: center;
129
+ width: fit-content;
130
+ background-color: var(--ss-primary-color);
131
+ border-radius: var(--ss-border-radius);
132
+ animation-name: ss-valueIn;
133
+ animation-duration: var(--ss-animation-timing);
134
+ animation-timing-function: ease-out;
135
+ animation-fill-mode: both;
136
+
137
+ &.ss-value-out {
138
+ animation-name: ss-valueOut;
139
+ animation-duration: var(--ss-animation-timing);
140
+ animation-timing-function: ease-out;
174
141
  }
175
142
 
176
- @keyframes scaleIn {
177
- 0% {transform: scale(0); opacity: 0;}
178
- 100% {transform: scale(1); opacity: 1;}
179
- }
180
- @keyframes scaleOut {
181
- 0% {transform: scale(1); opacity: 1;}
182
- 100% {transform: scale(0); opacity: 0;}
143
+ .ss-value-text {
144
+ font-size: 12px;
145
+ color: var(--ss-bg-color);
146
+ line-height: 1;
147
+ padding: var(--ss-spacing-s) var(--ss-spacing-m);
183
148
  }
184
149
 
185
- .ss-value {
150
+ .ss-value-delete {
186
151
  display: flex;
187
- user-select: none;
188
152
  align-items: center;
189
- font-size: 12px;
190
- padding: 3px 5px;
191
- margin: 3px 5px 3px 0px;
192
- color: $white;
193
- background-color: $primary-color;
194
- border-radius: $border-radius;
195
- animation-name: scaleIn;
196
- animation-duration: .2s;
197
- animation-timing-function: ease-out;
198
- animation-fill-mode: both;
199
-
200
- &.ss-out {
201
- animation-name: scaleOut;
202
- animation-duration: .2s;
203
- animation-timing-function: ease-out;
204
- }
205
-
206
- .ss-value-delete {
207
- margin: 0 0 0 5px;
208
- cursor: pointer;
153
+ width: var(--ss-spacing-l);
154
+ padding: var(--ss-spacing-s) var(--ss-spacing-m);
155
+ cursor: pointer;
156
+ border-left: solid 1px var(--ss-bg-color);
157
+
158
+ svg {
159
+ path {
160
+ fill: none;
161
+ stroke: var(--ss-bg-color);
162
+ stroke-width: 18;
163
+ stroke-linecap: round;
164
+ stroke-linejoin: round;
165
+ }
209
166
  }
210
167
  }
211
168
  }
169
+ }
212
170
 
213
- .ss-add {
214
- display: flex;
215
- flex: 0 1 3px;
216
- margin: 9px 12px 0 5px;
217
-
218
- .ss-plus {
219
- display: flex;
220
- justify-content: center;
221
- align-items: center;
222
- background: $font-color;
223
- position: relative;
224
- height: 10px;
225
- width: 2px;
226
- transition: transform .2s;
227
-
228
- &:after {
229
- background: $font-color;
230
- content: "";
231
- position: absolute;
232
- height: 2px;
233
- width: 10px;
234
- left: -4px;
235
- top: 4px;
236
- }
237
-
238
- &.ss-cross {
239
- transform: rotate(45deg);
240
- }
171
+ .ss-deselect {
172
+ display: flex;
173
+ align-self: center;
174
+ justify-content: flex-end;
175
+ flex: 0 1 auto;
176
+ width: 8px;
177
+ height: 8px;
178
+ margin: 0 var(--ss-spacing-m) 0 var(--ss-spacing-m);
179
+
180
+ svg {
181
+ path {
182
+ fill: none;
183
+ stroke: var(--ss-font-color);
184
+ stroke-width: 20;
185
+ stroke-linecap: round;
186
+ stroke-linejoin: round;
241
187
  }
242
188
  }
189
+ }
243
190
 
191
+ .ss-arrow {
192
+ display: flex;
193
+ align-items: center;
194
+ justify-content: flex-end;
195
+ flex: 0 1 auto;
196
+ width: 12px;
197
+ height: 12px;
198
+ margin: auto var(--ss-spacing-m) auto var(--ss-spacing-m);
199
+
200
+ path {
201
+ fill: none;
202
+ stroke: var(--ss-font-color);
203
+ stroke-width: 18;
204
+ stroke-linecap: round;
205
+ stroke-linejoin: round;
206
+ transition-timing-function: ease-out;
207
+ transition: var(--ss-animation-timing);
208
+ }
244
209
  }
245
210
  }
211
+
212
+ // Content container
246
213
  .ss-content {
247
- position: absolute;
248
- width: 100%;
249
- margin: -1px 0 0 0;
214
+ position: absolute; // default position
215
+ display: flex;
216
+ height: auto;
217
+ flex-direction: column;
218
+ width: auto;
219
+ max-height: var(--ss-content-height);
250
220
  box-sizing: border-box;
251
- border: solid 1px $border-color;
252
- z-index: 1010;
253
- background-color: $white;
254
- transform-origin: center top;
255
- transition: transform .2s, opacity .2s;
221
+ border: solid 1px var(--ss-border-color);
222
+ background-color: var(--ss-bg-color);
223
+ transition: transform var(--ss-animation-timing), opacity var(--ss-animation-timing);
256
224
  opacity: 0;
257
225
  transform: scaleY(0);
226
+ overflow: hidden;
227
+ z-index: 10000;
258
228
 
259
- &.ss-open {
260
- display: block;
229
+ &.ss-relative {
230
+ position: relative;
231
+ height: 100%;
232
+ }
233
+
234
+ &.ss-open-above {
261
235
  opacity: 1;
262
236
  transform: scaleY(1);
237
+ transform-origin: center bottom;
238
+ border-top-left-radius: var(--ss-border-radius);
239
+ border-top-right-radius: var(--ss-border-radius);
240
+ }
241
+
242
+ &.ss-open-below {
243
+ opacity: 1;
244
+ transform: scaleY(1);
245
+ transform-origin: center top;
246
+ border-bottom-left-radius: var(--ss-border-radius);
247
+ border-bottom-right-radius: var(--ss-border-radius);
263
248
  }
264
249
 
265
250
  .ss-search {
251
+ flex: 0 1 auto;
266
252
  display: flex;
267
253
  flex-direction: row;
268
- padding: $spacing-l $spacing-l $spacing-m $spacing-l;
269
-
270
- &.ss-hide {
271
- height: 0px;
272
- opacity: 0;
273
- padding: 0px 0px 0px 0px;
274
- margin: 0px 0px 0px 0px;
275
-
276
- input {
277
- height: 0px;
278
- opacity: 0;
279
- padding: 0px 0px 0px 0px;
280
- margin: 0px 0px 0px 0px;
281
- }
282
- }
254
+ padding: var(--ss-spacing-l) var(--ss-spacing-l) var(--ss-spacing-m) var(--ss-spacing-l);
283
255
 
284
256
  input {
285
257
  display: inline-flex;
@@ -288,25 +260,22 @@ $spacing-s: 4px !default;
288
260
  flex: 1 1 auto;
289
261
  width: 100%;
290
262
  min-width: 0px;
291
- height: 30px;
292
- padding: $spacing-m $spacing-l;
263
+ padding: var(--ss-spacing-m) var(--ss-spacing-l);
293
264
  margin: 0;
294
- border: 1px solid $border-color;
295
- border-radius: $border-radius;
296
- background-color: $white;
265
+ border: 1px solid var(--ss-border-color);
266
+ border-radius: var(--ss-border-radius);
267
+ background-color: var(--ss-bg-color);
297
268
  outline: 0;
298
269
  text-align: left;
299
270
  box-sizing: border-box;
300
- -webkit-box-sizing: border-box;
301
- -webkit-appearance: textfield;
302
-
271
+
303
272
  &::placeholder {
304
- color: $font-placeholder-color;
273
+ color: var(--ss-font-placeholder-color);
305
274
  vertical-align: middle;
306
275
  }
307
276
 
308
277
  &:focus {
309
- box-shadow: 0 0 5px $primary-color;
278
+ box-shadow: 0 0 5px var(--ss-primary-color);
310
279
  }
311
280
  }
312
281
 
@@ -315,76 +284,92 @@ $spacing-s: 4px !default;
315
284
  justify-content: center;
316
285
  align-items: center;
317
286
  cursor: pointer;
318
- font-size: 22px;
319
- font-weight: bold;
320
- flex: 0 0 30px;
321
- height: 30px;
322
- margin: 0 0 0 8px;
323
- border: 1px solid $border-color;
324
- border-radius: $border-radius;
325
- box-sizing: border-box;
326
- }
327
- }
287
+ flex: 0 0 auto;
288
+ height: auto;
289
+ margin: 0 0 0 var(--ss-spacing-m);
290
+ border: 1px solid var(--ss-border-color);
291
+ border-radius: var(--ss-border-radius);
328
292
 
329
- .ss-addable {
330
- padding-top: 0px;
293
+ svg {
294
+ display: flex;
295
+ align-items: center;
296
+ justify-content: flex-end;
297
+ flex: 0 1 auto;
298
+ width: 12px;
299
+ height: 12px;
300
+ margin: auto var(--ss-spacing-m) auto var(--ss-spacing-m);
301
+
302
+ path {
303
+ fill: none;
304
+ stroke: var(--ss-font-color);
305
+ stroke-width: 18;
306
+ stroke-linecap: round;
307
+ stroke-linejoin: round;
308
+ }
309
+ }
310
+ }
331
311
  }
332
312
 
333
313
  .ss-list {
334
- max-height: 200px;
314
+ flex: 1 1 auto;
315
+ height: auto;
335
316
  overflow-x: hidden;
336
317
  overflow-y: auto;
337
- text-align: left;
318
+
319
+ .ss-error {
320
+ color: var(--ss-error-color);
321
+ padding: var(--ss-spacing-l);
322
+ }
323
+
324
+ .ss-searching {
325
+ color: var(--ss-font-color);
326
+ padding: var(--ss-spacing-l);
327
+ }
338
328
 
339
329
  .ss-optgroup {
340
330
  .ss-optgroup-label {
341
- padding: 6px 10px 6px 10px;
331
+ padding: var(--ss-spacing-m) var(--ss-spacing-l) var(--ss-spacing-m) var(--ss-spacing-l);
342
332
  font-weight: bold;
343
333
  }
344
334
 
345
335
  .ss-option {
346
- padding: 6px 6px 6px 25px;
336
+ padding: var(--ss-spacing-s) var(--ss-spacing-s) var(--ss-spacing-s) calc(var(--ss-spacing-l) * 3);
347
337
  }
348
338
  }
349
339
 
350
- .ss-optgroup-label-selectable {
340
+ .ss-optgroup-selectable {
351
341
  cursor: pointer;
352
-
342
+
353
343
  &:hover {
354
- color: $white;
355
- background-color: $primary-color;
344
+ color: var(--ss-bg-color);
345
+ background-color: var(--ss-primary-color);
356
346
  }
357
347
  }
358
348
 
359
349
  .ss-option {
360
- padding: 6px 10px 6px 10px;
350
+ padding: var(--ss-spacing-m) var(--ss-spacing-l) var(--ss-spacing-m) var(--ss-spacing-l);
361
351
  cursor: pointer;
362
352
  user-select: none;
363
353
 
364
- * {
365
- display: inline-block;
366
- }
367
-
368
- &:hover, &.ss-highlighted {
369
- color: $white;
370
- background-color: $primary-color;
354
+ &:hover,
355
+ &.ss-highlighted {
356
+ color: var(--ss-bg-color);
357
+ background-color: var(--ss-primary-color);
371
358
  }
372
359
 
373
360
  &.ss-disabled {
374
361
  cursor: not-allowed;
375
- color: $font-disabled-color;
376
- background-color: $white;
362
+ color: var(--ss-disabled-color);
363
+ background-color: var(--ss-bg-color);
377
364
  }
378
365
 
379
366
  &:not(.ss-disabled).ss-option-selected {
380
- color: $font-color;
381
- background-color: rgba($primary-color, .1);
367
+ color: var(--ss-font-color);
368
+ background-color: var(--ss-highlight-color);
382
369
  }
383
370
 
384
- &.ss-hide { display: none; }
385
-
386
371
  .ss-search-highlight {
387
- background-color: $search-highlight-color;
372
+ background-color: var(--ss-highlight-color);
388
373
  }
389
374
  }
390
375
  }