@keenmate/web-multiselect 1.5.1 → 1.6.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/README.md +33 -14
- package/dist/multiselect.js +1097 -1053
- package/dist/multiselect.umd.js +22 -22
- package/dist/style.css +1 -1
- package/package.json +4 -5
- package/src/css/_badges-display.css +251 -0
- package/src/css/_base.css +43 -0
- package/src/css/_debug.css +57 -0
- package/src/css/_input-dropdown.css +263 -0
- package/src/css/_modifiers.css +32 -0
- package/src/css/_options.css +365 -0
- package/src/css/_rtl.css +150 -0
- package/src/css/_tooltips-popover.css +173 -0
- package/src/css/_variables.css +588 -0
- package/src/css/main.css +27 -0
- package/src/scss/_badges-display.scss +0 -247
- package/src/scss/_base.scss +0 -42
- package/src/scss/_css-variables.scss +0 -612
- package/src/scss/_debug.scss +0 -60
- package/src/scss/_input-dropdown.scss +0 -259
- package/src/scss/_modifiers.scss +0 -36
- package/src/scss/_options.scss +0 -358
- package/src/scss/_rtl.scss +0 -144
- package/src/scss/_tooltips-popover.scss +0 -172
- package/src/scss/_variables.scss +0 -520
- package/src/scss/main.scss +0 -28
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
// ==============================================================================
|
|
2
|
-
// BADGES & DISPLAY MODES
|
|
3
|
-
// ==============================================================================
|
|
4
|
-
// Badges container, count display, individual badges, and remove buttons
|
|
5
|
-
|
|
6
|
-
@use 'variables' as *;
|
|
7
|
-
|
|
8
|
-
// ==============================================================================
|
|
9
|
-
// BADGES CONTAINER
|
|
10
|
-
// ==============================================================================
|
|
11
|
-
|
|
12
|
-
// Selected badges container
|
|
13
|
-
.ms__badges {
|
|
14
|
-
display: flex;
|
|
15
|
-
flex-wrap: wrap;
|
|
16
|
-
gap: var(--ms-badges-gap, $ms-badges-gap);
|
|
17
|
-
padding: 0;
|
|
18
|
-
|
|
19
|
-
&:empty {
|
|
20
|
-
display: none;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Position variants
|
|
24
|
-
&--bottom {
|
|
25
|
-
margin-top: var(--ms-badges-margin-bottom, $ms-badges-margin-bottom);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
&--top {
|
|
29
|
-
margin-bottom: var(--ms-badges-margin-top, $ms-badges-margin-top);
|
|
30
|
-
order: var(--ms-order-first, $ms-order-first); // Place before multiselect in flex container
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
&--left {
|
|
34
|
-
order: var(--ms-order-first, $ms-order-first); // Place before multiselect
|
|
35
|
-
margin-right: var(--ms-badges-margin-left, $ms-badges-margin-left);
|
|
36
|
-
justify-content: flex-end; // Badges at right edge of container, close to input
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
&--right {
|
|
40
|
-
margin-left: var(--ms-badges-margin-right, $ms-badges-margin-right);
|
|
41
|
-
justify-content: flex-start; // Badges at left edge of container, close to input
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// ==============================================================================
|
|
46
|
-
// COUNT DISPLAY MODE
|
|
47
|
-
// ==============================================================================
|
|
48
|
-
|
|
49
|
-
// Count display (alternative to badges)
|
|
50
|
-
.ms__count-display {
|
|
51
|
-
display: flex;
|
|
52
|
-
align-items: center;
|
|
53
|
-
|
|
54
|
-
&:empty {
|
|
55
|
-
display: none;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Position variants
|
|
59
|
-
&--bottom {
|
|
60
|
-
margin-top: var(--ms-count-display-margin-bottom, $ms-count-display-margin-bottom);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
&--top {
|
|
64
|
-
margin-bottom: var(--ms-count-display-margin-top, $ms-count-display-margin-top);
|
|
65
|
-
order: var(--ms-order-first, $ms-order-first); // Place before multiselect in flex container
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
&--left {
|
|
69
|
-
order: var(--ms-order-first, $ms-order-first); // Place before multiselect
|
|
70
|
-
margin-right: var(--ms-count-display-margin-left, $ms-count-display-margin-left);
|
|
71
|
-
justify-content: flex-start;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
&--right {
|
|
75
|
-
margin-left: var(--ms-count-display-margin-right, $ms-count-display-margin-right);
|
|
76
|
-
justify-content: flex-end;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// Wrapper containing count text and clear button
|
|
81
|
-
.ms__counter-wrapper {
|
|
82
|
-
display: inline-flex;
|
|
83
|
-
align-items: center;
|
|
84
|
-
gap: var(--ms-counter-wrapper-gap, $ms-counter-wrapper-gap);
|
|
85
|
-
background: var(--ms-counter-wrapper-background, $ms-counter-wrapper-bg);
|
|
86
|
-
border: var(--ms-counter-wrapper-border, $ms-counter-wrapper-border);
|
|
87
|
-
border-radius: var(--ms-counter-wrapper-border-radius, $ms-counter-wrapper-border-radius);
|
|
88
|
-
padding: var(--ms-counter-wrapper-padding, $ms-counter-wrapper-padding);
|
|
89
|
-
transition: all var(--ms-transition-fast, $ms-transition-fast) var(--ms-easing-snappy, $ms-easing-snappy);
|
|
90
|
-
|
|
91
|
-
&:hover {
|
|
92
|
-
background: var(--ms-counter-wrapper-background-hover, $ms-counter-wrapper-bg-hover);
|
|
93
|
-
border-color: var(--ms-counter-wrapper-border-color-hover, $ms-counter-wrapper-border-color-hover);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.ms__count-text {
|
|
98
|
-
display: inline-flex;
|
|
99
|
-
align-items: center;
|
|
100
|
-
background: var(--ms-count-text-bg, $ms-count-text-bg);
|
|
101
|
-
border: var(--ms-count-text-border, $ms-count-text-border);
|
|
102
|
-
padding: 0;
|
|
103
|
-
font-size: var(--ms-count-text-font-size, $ms-count-text-font-size);
|
|
104
|
-
color: var(--ms-count-text-color, $ms-count-text-color);
|
|
105
|
-
cursor: pointer;
|
|
106
|
-
transition: color var(--ms-transition-fast, $ms-transition-fast) var(--ms-easing-snappy, $ms-easing-snappy);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.ms__count-clear {
|
|
110
|
-
flex-shrink: 0;
|
|
111
|
-
display: flex;
|
|
112
|
-
align-items: center;
|
|
113
|
-
justify-content: center;
|
|
114
|
-
width: var(--ms-count-clear-size, $ms-count-clear-size);
|
|
115
|
-
height: var(--ms-count-clear-size, $ms-count-clear-size);
|
|
116
|
-
padding: 0;
|
|
117
|
-
border: none;
|
|
118
|
-
background: var(--ms-count-clear-background, $ms-count-clear-bg);
|
|
119
|
-
color: var(--ms-count-clear-color, $ms-count-clear-color);
|
|
120
|
-
font-size: var(--ms-count-clear-font-size, $ms-count-clear-font-size);
|
|
121
|
-
line-height: var(--ms-line-height-none, $ms-line-height-none);
|
|
122
|
-
cursor: pointer;
|
|
123
|
-
border-radius: var(--ms-count-clear-border-radius, $ms-count-clear-border-radius);
|
|
124
|
-
transition: all var(--ms-transition-fast, $ms-transition-fast) var(--ms-easing-snappy, $ms-easing-snappy);
|
|
125
|
-
|
|
126
|
-
&:hover {
|
|
127
|
-
background: var(--ms-count-clear-background-hover, $ms-count-clear-bg-hover);
|
|
128
|
-
color: var(--ms-count-clear-color-hover, $ms-count-clear-color-hover);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
&::before {
|
|
132
|
-
content: var(--ms-icon-clear, $ms-icon-clear);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// ==============================================================================
|
|
137
|
-
// INDIVIDUAL BADGES
|
|
138
|
-
// ==============================================================================
|
|
139
|
-
|
|
140
|
-
// Individual badge (styled like Pure Admin composite badge)
|
|
141
|
-
.ms__badge {
|
|
142
|
-
display: inline-flex;
|
|
143
|
-
align-items: center;
|
|
144
|
-
height: var(--ms-badge-height, $ms-badge-height); // Match composite badge height
|
|
145
|
-
font-size: var(--ms-badge-font-size, $ms-badge-font-size);
|
|
146
|
-
font-weight: var(--ms-badge-font-weight, $ms-badge-font-weight);
|
|
147
|
-
line-height: var(--ms-line-height-none, $ms-line-height-none);
|
|
148
|
-
border-radius: var(--ms-badge-border-radius, $ms-badge-border-radius);
|
|
149
|
-
overflow: hidden;
|
|
150
|
-
max-width: 100%;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Badge text (like composite badge label)
|
|
154
|
-
.ms__badge-text {
|
|
155
|
-
display: flex;
|
|
156
|
-
align-items: center;
|
|
157
|
-
height: 100%;
|
|
158
|
-
padding: var(--ms-badge-text-padding, $ms-badge-text-padding);
|
|
159
|
-
background: var(--ms-badge-text-background, $ms-badge-text-bg);
|
|
160
|
-
color: var(--ms-badge-text-color, $ms-badge-text-color);
|
|
161
|
-
border: var(--ms-badge-text-border, $ms-badge-text-border);
|
|
162
|
-
border-right: none; // No double border between text and button
|
|
163
|
-
border-radius: var(--ms-badge-border-radius, $ms-badge-border-radius) 0 0 var(--ms-badge-border-radius, $ms-badge-border-radius);
|
|
164
|
-
overflow: hidden;
|
|
165
|
-
text-overflow: ellipsis;
|
|
166
|
-
white-space: nowrap;
|
|
167
|
-
transition: background-color var(--ms-transition-normal, $ms-transition-normal) ease,
|
|
168
|
-
color var(--ms-transition-normal, $ms-transition-normal) ease;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Badge hover state
|
|
172
|
-
.ms__badge:hover {
|
|
173
|
-
.ms__badge-text {
|
|
174
|
-
background: var(--ms-badge-text-background-hover, var(--ms-badge-text-background, $ms-badge-text-bg));
|
|
175
|
-
color: var(--ms-badge-text-color-hover, var(--ms-badge-text-color, $ms-badge-text-color));
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
// Badge remove button (like composite badge button)
|
|
180
|
-
.ms__badge-remove {
|
|
181
|
-
display: flex;
|
|
182
|
-
align-items: center;
|
|
183
|
-
justify-content: center;
|
|
184
|
-
font-family: inherit; // Form elements don't inherit font by default
|
|
185
|
-
width: var(--ms-badge-remove-width, $ms-badge-remove-width);
|
|
186
|
-
height: 100%;
|
|
187
|
-
flex-shrink: 0;
|
|
188
|
-
background: var(--ms-badge-remove-background, $ms-badge-remove-bg);
|
|
189
|
-
color: var(--ms-badge-remove-color, $ms-badge-remove-color);
|
|
190
|
-
border: var(--ms-badge-remove-border, $ms-badge-remove-border);
|
|
191
|
-
border-left: none; // No double border between text and button
|
|
192
|
-
border-radius: 0 var(--ms-badge-border-radius, $ms-badge-border-radius) var(--ms-badge-border-radius, $ms-badge-border-radius) 0;
|
|
193
|
-
cursor: pointer;
|
|
194
|
-
transition: background-color var(--ms-transition-normal, $ms-transition-normal) ease;
|
|
195
|
-
font-size: var(--ms-badge-remove-font-size, $ms-badge-remove-font-size);
|
|
196
|
-
|
|
197
|
-
&:hover {
|
|
198
|
-
background: var(--ms-badge-remove-background-hover, $ms-badge-remove-bg-hover);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
&:focus {
|
|
202
|
-
outline: none;
|
|
203
|
-
box-shadow: var(--ms-badge-remove-box-shadow-focus, $ms-badge-remove-box-shadow-focus);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
&::before {
|
|
207
|
-
content: var(--ms-icon-remove, $ms-icon-remove);
|
|
208
|
-
font-size: var(--ms-font-size-base, $ms-font-size-base);
|
|
209
|
-
line-height: var(--ms-line-height-none, $ms-line-height-none);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// ==============================================================================
|
|
214
|
-
// INDICATOR BADGE VARIANT (for "+ X more", "3 selected", compact mode)
|
|
215
|
-
// ==============================================================================
|
|
216
|
-
// Gray/neutral styling to distinguish from regular blue badges
|
|
217
|
-
.ms__badge--counter {
|
|
218
|
-
cursor: pointer;
|
|
219
|
-
|
|
220
|
-
.ms__badge-text {
|
|
221
|
-
background: var(--ms-badge-counter-text-background, $ms-badge-counter-text-bg);
|
|
222
|
-
color: var(--ms-badge-counter-text-color, $ms-badge-counter-text-color);
|
|
223
|
-
border: var(--ms-badge-counter-border, $ms-badge-counter-border);
|
|
224
|
-
border-right: none;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
.ms__badge-remove {
|
|
228
|
-
background: var(--ms-badge-counter-remove-background, $ms-badge-counter-remove-bg);
|
|
229
|
-
color: var(--ms-badge-counter-remove-color, $ms-badge-counter-remove-color);
|
|
230
|
-
border: var(--ms-badge-counter-border, $ms-badge-counter-border);
|
|
231
|
-
border-left: none;
|
|
232
|
-
|
|
233
|
-
&:hover {
|
|
234
|
-
background: var(--ms-badge-counter-remove-background-hover, $ms-badge-counter-remove-bg-hover);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
// ==============================================================================
|
|
240
|
-
// "+X MORE" BADGE VARIANT
|
|
241
|
-
// ==============================================================================
|
|
242
|
-
|
|
243
|
-
// "+X more" badge variant (partial mode)
|
|
244
|
-
// Now uses .ms__badge--counter for styling, this just adds cursor
|
|
245
|
-
.ms__badge--more {
|
|
246
|
-
cursor: pointer;
|
|
247
|
-
}
|
package/src/scss/_base.scss
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
// ==============================================================================
|
|
2
|
-
// BASE STYLES
|
|
3
|
-
// ==============================================================================
|
|
4
|
-
// Foundation styles: FOUC prevention and layout containers
|
|
5
|
-
|
|
6
|
-
@use 'variables' as *;
|
|
7
|
-
|
|
8
|
-
// ==============================================================================
|
|
9
|
-
// FOUC PREVENTION
|
|
10
|
-
// ==============================================================================
|
|
11
|
-
// Prevent Flash of Unstyled Content by hiding undefined custom elements
|
|
12
|
-
// Keep element visible to prevent layout shift, but hide any text content
|
|
13
|
-
multi-select:not(:defined) {
|
|
14
|
-
display: block;
|
|
15
|
-
min-height: calc(3.5 * var(--ms-rem)); // 35px (md size)
|
|
16
|
-
color: transparent !important;
|
|
17
|
-
background: transparent;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// ==============================================================================
|
|
21
|
-
// LAYOUT CONTAINERS
|
|
22
|
-
// ==============================================================================
|
|
23
|
-
|
|
24
|
-
// Wrapper (contains multiselect + badges)
|
|
25
|
-
.ms-wrapper {
|
|
26
|
-
display: flex;
|
|
27
|
-
flex-direction: column; // Default: badges above/below input
|
|
28
|
-
align-items: stretch;
|
|
29
|
-
|
|
30
|
-
// Inline layout for left/right positioning
|
|
31
|
-
&--inline {
|
|
32
|
-
flex-direction: row;
|
|
33
|
-
align-items: flex-start;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Main container
|
|
38
|
-
// Note: font-family is set on :host in _css-variables.scss so all shadow DOM content inherits
|
|
39
|
-
.ms {
|
|
40
|
-
position: relative;
|
|
41
|
-
width: 100%;
|
|
42
|
-
}
|