@reviewpush/rp-treeselect 0.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 (64) hide show
  1. package/README.md +172 -0
  2. package/dist/rp-treeselect.cjs.js +3656 -0
  3. package/dist/rp-treeselect.cjs.js.map +1 -0
  4. package/dist/rp-treeselect.cjs.min.js +2 -0
  5. package/dist/rp-treeselect.cjs.min.js.map +1 -0
  6. package/dist/rp-treeselect.css +947 -0
  7. package/dist/rp-treeselect.css.map +1 -0
  8. package/dist/rp-treeselect.min.css +1 -0
  9. package/dist/rp-treeselect.umd.js +4837 -0
  10. package/dist/rp-treeselect.umd.js.map +1 -0
  11. package/dist/rp-treeselect.umd.min.js +2 -0
  12. package/dist/rp-treeselect.umd.min.js.map +1 -0
  13. package/package.json +140 -0
  14. package/src/assets/checkbox-checked-disabled.png +0 -0
  15. package/src/assets/checkbox-checked-disabled@2x.png +0 -0
  16. package/src/assets/checkbox-checked-disabled@3x.png +0 -0
  17. package/src/assets/checkbox-checked.png +0 -0
  18. package/src/assets/checkbox-checked@2x.png +0 -0
  19. package/src/assets/checkbox-checked@3x.png +0 -0
  20. package/src/assets/checkbox-indeterminate-disabled.png +0 -0
  21. package/src/assets/checkbox-indeterminate-disabled@2x.png +0 -0
  22. package/src/assets/checkbox-indeterminate-disabled@3x.png +0 -0
  23. package/src/assets/checkbox-indeterminate.png +0 -0
  24. package/src/assets/checkbox-indeterminate@2x.png +0 -0
  25. package/src/assets/checkbox-indeterminate@3x.png +0 -0
  26. package/src/components/Control.vue +153 -0
  27. package/src/components/HiddenFields.vue +37 -0
  28. package/src/components/Input.vue +295 -0
  29. package/src/components/Menu.vue +313 -0
  30. package/src/components/MenuPortal.vue +179 -0
  31. package/src/components/MultiValue.vue +56 -0
  32. package/src/components/MultiValueItem.vue +45 -0
  33. package/src/components/Option.vue +300 -0
  34. package/src/components/Placeholder.vue +21 -0
  35. package/src/components/SingleValue.vue +34 -0
  36. package/src/components/Tip.vue +32 -0
  37. package/src/components/Treeselect.vue +42 -0
  38. package/src/components/icons/Arrow.vue +11 -0
  39. package/src/components/icons/Delete.vue +11 -0
  40. package/src/constants.js +50 -0
  41. package/src/index.js +14 -0
  42. package/src/mixins/treeselectMixin.js +1949 -0
  43. package/src/style.less +1147 -0
  44. package/src/utils/.eslintrc.js +6 -0
  45. package/src/utils/constant.js +1 -0
  46. package/src/utils/createMap.js +1 -0
  47. package/src/utils/debounce.js +1 -0
  48. package/src/utils/deepExtend.js +25 -0
  49. package/src/utils/find.js +6 -0
  50. package/src/utils/identity.js +1 -0
  51. package/src/utils/includes.js +3 -0
  52. package/src/utils/index.js +38 -0
  53. package/src/utils/isNaN.js +3 -0
  54. package/src/utils/isPromise.js +1 -0
  55. package/src/utils/last.js +1 -0
  56. package/src/utils/noop.js +1 -0
  57. package/src/utils/onLeftClick.js +7 -0
  58. package/src/utils/once.js +1 -0
  59. package/src/utils/quickDiff.js +9 -0
  60. package/src/utils/removeFromArray.js +4 -0
  61. package/src/utils/scrollIntoView.js +15 -0
  62. package/src/utils/setupResizeAndScrollEventListeners.js +34 -0
  63. package/src/utils/warning.js +11 -0
  64. package/src/utils/watchSize.js +67 -0
package/src/style.less ADDED
@@ -0,0 +1,1147 @@
1
+ /**
2
+ * Dependencies
3
+ */
4
+
5
+ @import "~material-colors/dist/colors.less";
6
+ @import "~easings-css/easings.less";
7
+
8
+ /**
9
+ * Variables
10
+ */
11
+
12
+ @treeselect-font-size: 1em;
13
+ @treeselect-font-size-sm: 12px;
14
+ @treeselect-padding: 5px;
15
+ @treeselect-border-radius-lg: 5px;
16
+ @treeselect-border-radius-sm: 2px;
17
+ @treeselect-narrow-cell-width: 20px;
18
+ @treeselect-wide-cell-width: 100%;
19
+ @treeselect-icon-size: 12px;
20
+ @treeselect-transition-duration: 200ms;
21
+ @treeselect-transition-duration-slow: 400ms;
22
+ @treeselect-max-level: 8;
23
+
24
+ @treeselect-control-height: 36px;
25
+ @treeselect-control-inner-height: @treeselect-control-height - @treeselect-control-border-width * 2;
26
+ @treeselect-control-border-width: 1px;
27
+ @treeselect-control-border-color: #ddd;
28
+ @treeselect-control-border-color-hover: #cfcfcf;
29
+ @treeselect-control-border-color-active: @treeselect-control-border-color-hover;
30
+ @treeselect-control-border-color-focus: @md-light-blue-600;
31
+ @treeselect-control-border-radius: @treeselect-border-radius-lg;
32
+ @treeselect-control-bg: #fff;
33
+ @treeselect-control-box-shadow-focus: 0 0 0 3px fade(@treeselect-control-border-color-focus, 10%);
34
+ @treeselect-control-bg-disabled: #f9f9f9;
35
+
36
+ @treeselect-placeholder-font-color: @md-grey-400;
37
+ @treeselect-single-value-font-color: #333;
38
+ @treeselect-single-value-font-color-focused: @treeselect-placeholder-font-color;
39
+ @treeselect-multi-value-margin-x: 0;
40
+ @treeselect-multi-value-margin-y: 2px;
41
+ @treeselect-multi-value-padding-x: @treeselect-padding;
42
+ @treeselect-multi-value-padding-y: 0;
43
+ @treeselect-multi-value-font-size: @treeselect-font-size-sm;
44
+ @treeselect-multi-value-font-color: @md-light-blue-600;
45
+ @treeselect-multi-value-item-bg: @md-blue-50;
46
+ @treeselect-multi-value-item-bg-new: @md-green-50;
47
+ @treeselect-multi-value-item-border-width: 1px;
48
+ @treeselect-multi-value-item-border-color: transparent;
49
+ @treeselect-multi-value-font-color-hover: @treeselect-multi-value-font-color;
50
+ @treeselect-multi-value-item-bg-hover: @treeselect-multi-value-item-bg;
51
+ @treeselect-multi-value-item-bg-new-hover: @treeselect-multi-value-item-bg-new;
52
+ @treeselect-multi-value-font-color-disabled: @md-grey-600;
53
+ @treeselect-multi-value-item-bg-disabled: @md-grey-100;
54
+ @treeselect-multi-value-item-font-color-control-disabled: #555;
55
+ @treeselect-multi-value-item-bg-control-disabled: #fff;
56
+ @treeselect-multi-value-item-border-color-control-disabled: #e5e5e5;
57
+ @treeselect-multi-value-remove-color: @treeselect-multi-value-font-color;
58
+ @treeselect-multi-value-remove-color-hover: @md-red-600;
59
+ @treeselect-multi-value-remove-size: 6px;
60
+ @treeselect-multi-value-divider-color: #fff;
61
+ @treeselect-limit-tip-font-color: @md-grey-400;
62
+ @treeselect-limit-tip-font-size: @treeselect-multi-value-font-size;
63
+ @treeselect-limit-tip-font-weight: 600;
64
+ @treeselect-single-input-font-size: inherit;
65
+ @treeselect-multi-input-font-size: @treeselect-multi-value-font-size;
66
+
67
+ @treeselect-menu-bg: #fff;
68
+ @treeselect-menu-padding-y: @treeselect-padding;
69
+ @treeselect-menu-line-height: 180%;
70
+ @treeselect-menu-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06);
71
+ @treeselect-control-menu-divider-color: #f2f2f2;
72
+
73
+ @treeselect-arrow-size: 9px;
74
+ @treeselect-arrow-color: #ccc;
75
+ @treeselect-arrow-color-hover: @md-grey-700;
76
+ @treeselect-arrow-transition-timing-function: @ease-out-expo;
77
+
78
+ @treeselect-x-size: 8px;
79
+ @treeselect-x-color: @treeselect-arrow-color;
80
+ @treeselect-x-color-hover: @md-red-600;
81
+
82
+ @treeselect-option-bg-highlight: @md-grey-100;
83
+ @treeselect-option-selected-bg: @md-blue-50;
84
+ @treeselect-option-selected-bg-hover: @treeselect-option-selected-bg;
85
+ @treeselect-checkbox-size: @treeselect-icon-size;
86
+ @treeselect-checkbox-border-radius: @treeselect-border-radius-sm;
87
+ @treeselect-checkbox-color: @md-grey-300;
88
+ @treeselect-checkbox-color-highlight: @md-light-blue-600;
89
+ @treeselect-checkbox-border-color: @treeselect-checkbox-color;
90
+ @treeselect-checkbox-bg: #fff;
91
+ @treeselect-checkbox-border-color-hover: @treeselect-checkbox-color-highlight;
92
+ @treeselect-checkbox-bg-hover: @treeselect-checkbox-bg;
93
+ @treeselect-checkbox-indeterminate-border-color: @treeselect-checkbox-color-highlight;
94
+ @treeselect-checkbox-indeterminate-bg: @treeselect-checkbox-color-highlight;
95
+ @treeselect-checkbox-indeterminate-icon: "./assets/checkbox-indeterminate.png";
96
+ @treeselect-checkbox-indeterminate-border-color-hover: @treeselect-checkbox-color-highlight;
97
+ @treeselect-checkbox-indeterminate-bg-hover: @treeselect-checkbox-color-highlight;
98
+ @treeselect-checkbox-checked-border-color: @treeselect-checkbox-color-highlight;
99
+ @treeselect-checkbox-checked-bg: @treeselect-checkbox-color-highlight;
100
+ @treeselect-checkbox-checked-icon: "./assets/checkbox-checked.png";
101
+ @treeselect-checkbox-checked-border-color-hover: @treeselect-checkbox-color-highlight;
102
+ @treeselect-checkbox-checked-bg-hover: @treeselect-checkbox-color-highlight;
103
+ @treeselect-checkbox-disabled-border-color: @treeselect-checkbox-border-color;
104
+ @treeselect-checkbox-disabled-bg-color: darken(@treeselect-checkbox-bg, 3%);
105
+ @treeselect-checkbox-disabled-indeterminate-icon: "./assets/checkbox-indeterminate-disabled.png";
106
+ @treeselect-checkbox-disabled-checked-icon: "./assets/checkbox-checked-disabled.png";
107
+ @treeselect-option-label-color: inherit;
108
+ @treeselect-option-label-color-disabled: rgba(0, 0, 0, 0.25);
109
+
110
+ @treeselect-loader-color-dark: @md-light-blue-600;
111
+ @treeselect-loader-color-light: @md-light-blue-100;
112
+ @treeselect-loader-animation-duration: 1.6s;
113
+ @treeselect-warning-icon-bg: @md-orange-600;
114
+ @treeselect-error-icon-bg: @md-red-600;
115
+ @treeselect-tip-color: @md-grey-600;
116
+ @treeselect-tip-font-size: @treeselect-font-size-sm;
117
+ @treeselect-retry-text-color: @md-light-blue-600;
118
+
119
+
120
+ /**
121
+ * Mixins
122
+ */
123
+
124
+ .clickable() {
125
+ cursor: pointer;
126
+ }
127
+
128
+ .inputtable() {
129
+ cursor: text;
130
+ }
131
+
132
+ .forbidden() {
133
+ cursor: not-allowed;
134
+ }
135
+
136
+ .reset-cursor() {
137
+ cursor: default;
138
+ }
139
+
140
+ .rounded() {
141
+ border-radius: 50%;
142
+ }
143
+
144
+ .border-radius-top(@size) {
145
+ border-top-left-radius: @size;
146
+ border-top-right-radius: @size;
147
+ }
148
+
149
+ .border-radius-bottom(@size) {
150
+ border-bottom-left-radius: @size;
151
+ border-bottom-right-radius: @size;
152
+ }
153
+
154
+ .text-truncate() {
155
+ overflow: hidden;
156
+ text-overflow: ellipsis;
157
+ white-space: nowrap;
158
+ }
159
+
160
+ .horizontal-padding(@value) {
161
+ padding-left: @value;
162
+ padding-right: @value;
163
+ }
164
+
165
+ .vertical-padding(@value) {
166
+ padding-top: @value;
167
+ padding-bottom: @value;
168
+ }
169
+
170
+ .icon() {
171
+ display: block;
172
+ margin: auto;
173
+ }
174
+
175
+ .row() {
176
+ .horizontal-padding(@treeselect-padding);
177
+
178
+ display: table;
179
+ table-layout: fixed;
180
+ width: 100%;
181
+ }
182
+
183
+ .cell() {
184
+ display: table-cell;
185
+ vertical-align: middle;
186
+ }
187
+
188
+ .wide-cell() {
189
+ .cell();
190
+ .horizontal-padding(@treeselect-padding);
191
+ .text-truncate();
192
+
193
+ width: @treeselect-wide-cell-width;
194
+ }
195
+
196
+ .narrow-cell() {
197
+ .cell();
198
+
199
+ width: @treeselect-narrow-cell-width;
200
+ text-align: center;
201
+ line-height: 0;
202
+ }
203
+
204
+ // based on: https://github.com/strues/retinajs/blob/master/dist/retina.less
205
+ .retina(@path, @cap: 2) { // stylelint-disable-line selector-class-pattern
206
+ @lowretina: ~"(min-resolution: 1.5dppx)";
207
+ @2xpath: replace(@path, "(\.\w+)$", "@2x$1");
208
+
209
+ background-image: url(@path);
210
+
211
+ @media @lowretina {
212
+ background-image: url(@2xpath);
213
+ }
214
+
215
+ .create-queries() when (@cap >= 2) {
216
+ .loop(@env) when (@env <= @cap) {
217
+ @retinapath: replace(@path, "(\.\w+)$", "@@{env}x$1");
218
+ @media (min-resolution: @env * 96dpi) {
219
+ background-image: url(@retinapath);
220
+ }
221
+
222
+ .loop((@env + 1));
223
+ }
224
+
225
+ .loop(2);
226
+ }
227
+ .create-queries();
228
+ }
229
+
230
+ /**
231
+ * Helpers
232
+ */
233
+
234
+ .rp-treeselect-helper-hide {
235
+ display: none;
236
+ }
237
+
238
+ .rp-treeselect-helper-zoom-effect-off {
239
+ transform: none !important; // stylelint-disable-line declaration-no-important
240
+ }
241
+
242
+
243
+ /**
244
+ * Animations
245
+ */
246
+
247
+ @keyframes rp-treeselect-animation-fade-in {
248
+ 0% {
249
+ opacity: 0;
250
+ }
251
+ }
252
+
253
+ @keyframes rp-treeselect-animation-bounce {
254
+ 0%, 100% {
255
+ transform: scale(0);
256
+ }
257
+ 50% {
258
+ transform: scale(1);
259
+ }
260
+ }
261
+
262
+ @keyframes rp-treeselect-animation-rotate {
263
+ 100% {
264
+ transform: rotate(360deg);
265
+ }
266
+ }
267
+
268
+
269
+ /**
270
+ * Transitions
271
+ */
272
+
273
+ .rp-treeselect__multi-value-item--transition {
274
+ &-enter-active,
275
+ &-leave-active {
276
+ transition-duration: @treeselect-transition-duration;
277
+ transition-property: transform, opacity;
278
+ }
279
+
280
+ &-enter-active {
281
+ transition-timing-function: @ease-out-circ;
282
+ }
283
+
284
+ &-leave-active {
285
+ transition-timing-function: @ease-out-cubic;
286
+ // trigger animation when element is removed
287
+ position: absolute;
288
+ }
289
+
290
+ &-enter,
291
+ &-leave-to {
292
+ transform: scale(0.7);
293
+ opacity: 0;
294
+ }
295
+
296
+ &-move {
297
+ transition: @treeselect-transition-duration transform @ease-out-quart;
298
+ }
299
+ }
300
+
301
+ .rp-treeselect__menu--transition {
302
+ &-enter-active,
303
+ &-leave-active {
304
+ // to be overriden
305
+ }
306
+
307
+ &-enter,
308
+ &-leave-to {
309
+ // to be overriden
310
+ }
311
+ }
312
+
313
+ .rp-treeselect__list--transition {
314
+ &-enter-active,
315
+ &-leave-active {
316
+ // to be overriden
317
+ }
318
+
319
+ &-enter,
320
+ &-leave-to {
321
+ // to be overriden
322
+ }
323
+ }
324
+
325
+
326
+ /**
327
+ * Namespace
328
+ */
329
+
330
+ .rp-treeselect {
331
+ position: relative;
332
+ text-align: left;
333
+
334
+ [dir="rtl"] & {
335
+ text-align: right;
336
+ }
337
+
338
+ div,
339
+ span {
340
+ box-sizing: border-box;
341
+ }
342
+
343
+ svg {
344
+ fill: currentColor;
345
+ }
346
+ }
347
+
348
+
349
+ /**
350
+ * Control
351
+ */
352
+
353
+ .rp-treeselect__control {
354
+ .row();
355
+
356
+ height: @treeselect-control-height;
357
+ border: @treeselect-control-border-width solid @treeselect-control-border-color;
358
+ border-radius: @treeselect-control-border-radius;
359
+ background: @treeselect-control-bg;
360
+ transition-duration: @treeselect-transition-duration;
361
+ transition-property: border-color, box-shadow, width, height, background-color, opacity;
362
+ transition-timing-function: @ease-out-cubic;
363
+
364
+ .rp-treeselect:not(.rp-treeselect--disabled):not(.rp-treeselect--focused) &:hover {
365
+ border-color: @treeselect-control-border-color-hover;
366
+ }
367
+
368
+ .rp-treeselect--focused:not(.rp-treeselect--open) & {
369
+ border-color: @treeselect-control-border-color-focus;
370
+ box-shadow: @treeselect-control-box-shadow-focus;
371
+ }
372
+
373
+ .rp-treeselect--disabled & {
374
+ background-color: @treeselect-control-bg-disabled;
375
+ }
376
+
377
+ .rp-treeselect--open & {
378
+ border-color: @treeselect-control-border-color-active;
379
+ }
380
+
381
+ .rp-treeselect--open.rp-treeselect--open-below & {
382
+ .border-radius-bottom(0);
383
+ }
384
+
385
+ .rp-treeselect--open.rp-treeselect--open-above & {
386
+ .border-radius-top(0);
387
+ }
388
+ }
389
+
390
+ .rp-treeselect__value-container,
391
+ .rp-treeselect__multi-value {
392
+ width: 100%;
393
+ vertical-align: middle;
394
+ }
395
+
396
+ .rp-treeselect__value-container {
397
+ display: table-cell;
398
+ position: relative;
399
+
400
+ .rp-treeselect--searchable:not(.rp-treeselect--disabled) & {
401
+ // The real input is small and not covering the whole control.
402
+ // We show an I-shape cursor to give user a hint that
403
+ // clicking anywhere in the control will make the input focused.
404
+ .inputtable();
405
+ }
406
+ }
407
+
408
+ .rp-treeselect__multi-value {
409
+ display: inline-block;
410
+
411
+ .rp-treeselect--has-value & {
412
+ margin-bottom: @treeselect-padding;
413
+ }
414
+ }
415
+
416
+ .rp-treeselect__placeholder,
417
+ .rp-treeselect__single-value {
418
+ .text-truncate();
419
+ .horizontal-padding(@treeselect-padding);
420
+
421
+ position: absolute;
422
+ top: 0;
423
+ right: 0;
424
+ bottom: 0;
425
+ left: 0;
426
+ line-height: @treeselect-control-inner-height;
427
+ user-select: none;
428
+ pointer-events: none;
429
+ }
430
+
431
+ .rp-treeselect__placeholder {
432
+ color: @treeselect-placeholder-font-color;
433
+ }
434
+
435
+ .rp-treeselect__single-value {
436
+ color: @treeselect-single-value-font-color;
437
+
438
+ .rp-treeselect--focused.rp-treeselect--searchable & {
439
+ color: @treeselect-single-value-font-color-focused;
440
+ }
441
+
442
+ .rp-treeselect--disabled & {
443
+ // #274 Fix for IE
444
+ position: static;
445
+ }
446
+ }
447
+
448
+ .rp-treeselect__multi-value-item-container {
449
+ display: inline-block;
450
+ padding-top: @treeselect-padding;
451
+ padding-right: @treeselect-padding;
452
+ vertical-align: top;
453
+
454
+ [dir="rtl"] & {
455
+ padding-right: 0;
456
+ padding-left: @treeselect-padding;
457
+ }
458
+ }
459
+
460
+ .rp-treeselect__multi-value-item {
461
+ .clickable();
462
+
463
+ display: inline-table;
464
+ background: @treeselect-multi-value-item-bg;
465
+ // Table elements do not have margin, so we set at the container element.
466
+ padding: @treeselect-multi-value-margin-y @treeselect-multi-value-margin-x;
467
+ border: @treeselect-multi-value-item-border-width solid @treeselect-multi-value-item-border-color;
468
+ border-radius: @treeselect-border-radius-sm;
469
+ color: @treeselect-multi-value-font-color;
470
+ font-size: @treeselect-multi-value-font-size;
471
+ vertical-align: top; // stylelint-disable-line plugin/declaration-block-no-ignored-properties
472
+
473
+ .rp-treeselect:not(.rp-treeselect--disabled) &:not(.rp-treeselect__multi-value-item-disabled):hover &:not(.rp-treeselect__multi-value-item-new) &:not(.rp-treeselect__multi-value-item-new):hover {
474
+ .clickable();
475
+
476
+ background: @treeselect-multi-value-item-bg-hover;
477
+ color: @treeselect-multi-value-font-color-hover;
478
+ }
479
+
480
+ &.rp-treeselect__multi-value-item-disabled {
481
+ .reset-cursor();
482
+
483
+ background: @treeselect-multi-value-item-bg-disabled;
484
+ color: @treeselect-multi-value-font-color-disabled;
485
+ }
486
+
487
+ .rp-treeselect--disabled & {
488
+ .reset-cursor();
489
+
490
+ background: @treeselect-multi-value-item-bg-control-disabled;
491
+ border-color: @treeselect-multi-value-item-border-color-control-disabled;
492
+ color: @treeselect-multi-value-item-font-color-control-disabled;
493
+ }
494
+
495
+ &.rp-treeselect__multi-value-item-new {
496
+ background: @treeselect-multi-value-item-bg-new;
497
+ &:hover {
498
+ background: @treeselect-multi-value-item-bg-new;
499
+ }
500
+ }
501
+ }
502
+
503
+ .rp-treeselect__value-remove,
504
+ .rp-treeselect__multi-value-label {
505
+ display: table-cell;
506
+ padding: @treeselect-multi-value-padding-y @treeselect-multi-value-padding-x;
507
+ vertical-align: middle;
508
+ }
509
+
510
+ .rp-treeselect__value-remove {
511
+ color: @treeselect-multi-value-remove-color;
512
+ padding-left: @treeselect-multi-value-padding-x;
513
+ border-left: 1px solid @treeselect-multi-value-divider-color;
514
+ line-height: 0;
515
+
516
+ [dir="rtl"] & {
517
+ border-left: 0 none;
518
+ border-right: 1px solid @treeselect-multi-value-divider-color;
519
+ }
520
+
521
+ .rp-treeselect__multi-value-item:hover & {
522
+ color: @treeselect-multi-value-remove-color-hover;
523
+ }
524
+
525
+ .rp-treeselect--disabled &,
526
+ .rp-treeselect__multi-value-item-disabled & {
527
+ display: none;
528
+ }
529
+
530
+ > svg {
531
+ width: @treeselect-multi-value-remove-size;
532
+ height: @treeselect-multi-value-remove-size;
533
+ }
534
+ }
535
+
536
+ .rp-treeselect__multi-value-label {
537
+ padding-right: @treeselect-multi-value-padding-x;
538
+ white-space: pre-line;
539
+ user-select: none;
540
+ }
541
+
542
+ .rp-treeselect__limit-tip {
543
+ display: inline-block;
544
+ padding-top: @treeselect-padding;
545
+ padding-right: @treeselect-padding;
546
+ vertical-align: top;
547
+
548
+ [dir="rtl"] & {
549
+ padding-right: 0;
550
+ padding-left: @treeselect-padding;
551
+ }
552
+ }
553
+
554
+ .rp-treeselect__limit-tip-text {
555
+ .reset-cursor();
556
+
557
+ display: block;
558
+ margin: @treeselect-multi-value-margin-y @treeselect-multi-value-margin-x;
559
+ padding: (@treeselect-multi-value-padding-y + @treeselect-multi-value-item-border-width) 0;
560
+ color: @treeselect-limit-tip-font-color;
561
+ font-size: @treeselect-limit-tip-font-size;
562
+ font-weight: @treeselect-limit-tip-font-weight;
563
+ }
564
+
565
+ .rp-treeselect__input-container {
566
+ display: block;
567
+ max-width: 100%;
568
+ outline: none;
569
+
570
+ .rp-treeselect--single & {
571
+ font-size: @treeselect-single-input-font-size;
572
+ height: 100%;
573
+ }
574
+
575
+ .rp-treeselect--multi & {
576
+ display: inline-block;
577
+ font-size: @treeselect-multi-input-font-size;
578
+ vertical-align: top;
579
+ }
580
+
581
+ .rp-treeselect--searchable & {
582
+ .horizontal-padding(@treeselect-padding);
583
+ }
584
+
585
+ .rp-treeselect--searchable.rp-treeselect--multi.rp-treeselect--has-value & {
586
+ padding-top: @treeselect-padding;
587
+ padding-left: 0;
588
+
589
+ [dir="rtl"] & {
590
+ padding-left: @treeselect-padding;
591
+ padding-right: 0;
592
+ }
593
+ }
594
+
595
+ .rp-treeselect--disabled & {
596
+ display: none;
597
+ }
598
+ }
599
+
600
+ .rp-treeselect__input,
601
+ .rp-treeselect__sizer {
602
+ margin: 0;
603
+ line-height: inherit;
604
+ font-family: inherit;
605
+ font-size: inherit;
606
+ }
607
+
608
+ .rp-treeselect__input {
609
+ max-width: 100%;
610
+ margin: 0;
611
+ padding: 0;
612
+ border: 0;
613
+ outline: none;
614
+ box-sizing: content-box;
615
+ box-shadow: none;
616
+ background: none transparent;
617
+ line-height: 1;
618
+ vertical-align: middle;
619
+
620
+ &::-ms-clear {
621
+ display: none;
622
+ }
623
+
624
+ .rp-treeselect--single & {
625
+ width: 100%;
626
+ height: 100%;
627
+ }
628
+
629
+ .rp-treeselect--multi & {
630
+ .vertical-padding(@treeselect-multi-value-margin-y + @treeselect-multi-value-item-border-width);
631
+ }
632
+
633
+ .rp-treeselect--has-value & {
634
+ line-height: inherit;
635
+ vertical-align: top;
636
+ }
637
+ }
638
+
639
+ .rp-treeselect__sizer {
640
+ position: absolute;
641
+ top: 0;
642
+ left: 0;
643
+ visibility: hidden;
644
+ height: 0;
645
+ overflow: scroll;
646
+ white-space: pre;
647
+ }
648
+
649
+ .rp-treeselect__x-container {
650
+ .narrow-cell();
651
+ .clickable();
652
+
653
+ color: @treeselect-x-color;
654
+ animation: @treeselect-transition-duration rp-treeselect-animation-fade-in @ease-out-circ;
655
+
656
+ &:hover {
657
+ color: @treeselect-x-color-hover;
658
+ }
659
+ }
660
+
661
+ .rp-treeselect__x {
662
+ width: @treeselect-x-size;
663
+ height: @treeselect-x-size;
664
+ }
665
+
666
+ .rp-treeselect__control-arrow-container {
667
+ .narrow-cell();
668
+ .clickable();
669
+
670
+ .rp-treeselect--disabled & {
671
+ .reset-cursor();
672
+ }
673
+ }
674
+
675
+ .rp-treeselect__control-arrow {
676
+ width: @treeselect-arrow-size;
677
+ height: @treeselect-arrow-size;
678
+ color: @treeselect-arrow-color;
679
+
680
+ .rp-treeselect:not(.rp-treeselect--disabled) .rp-treeselect__control-arrow-container:hover & {
681
+ color: @treeselect-arrow-color-hover;
682
+ }
683
+
684
+ .rp-treeselect--disabled & {
685
+ opacity: 0.35;
686
+ }
687
+ }
688
+
689
+ .rp-treeselect__control-arrow--rotated {
690
+ transform: rotateZ(180deg);
691
+ }
692
+
693
+
694
+ /**
695
+ * Menu
696
+ */
697
+
698
+ .rp-treeselect__menu-container {
699
+ position: absolute;
700
+ left: 0;
701
+ width: 100%;
702
+ overflow: visible;
703
+ transition: 0s;
704
+
705
+ .rp-treeselect--open-below:not(.rp-treeselect--append-to-body) & {
706
+ top: 100%;
707
+ }
708
+
709
+ .rp-treeselect--open-above:not(.rp-treeselect--append-to-body) & {
710
+ bottom: 100%;
711
+ }
712
+ }
713
+
714
+ .rp-treeselect__menu {
715
+ .reset-cursor(); // set to normal cursor since text is unselectable
716
+ .vertical-padding(@treeselect-menu-padding-y);
717
+
718
+ display: block;
719
+ position: absolute;
720
+ overflow-x: hidden;
721
+ overflow-y: auto;
722
+ // IE9 does not properly handle `width: 100%` with scrollbar when `box-sizing: border-box`
723
+ width: auto;
724
+ border: 1px solid @treeselect-control-border-color-active;
725
+ background: @treeselect-menu-bg;
726
+ line-height: @treeselect-menu-line-height;
727
+ // https://css-tricks.com/snippets/css/momentum-scrolling-on-ios-overflow-elements/
728
+ -webkit-overflow-scrolling: touch;
729
+
730
+ .rp-treeselect--open-below & {
731
+ .border-radius-bottom(@treeselect-border-radius-lg);
732
+
733
+ top: 0;
734
+ margin-top: (-@treeselect-control-border-width);
735
+ border-top-color: @treeselect-control-menu-divider-color;
736
+ box-shadow: @treeselect-menu-box-shadow;
737
+ }
738
+
739
+ .rp-treeselect--open-above & {
740
+ .border-radius-top(@treeselect-border-radius-lg);
741
+
742
+ bottom: 0;
743
+ margin-bottom: (-@treeselect-control-border-width);
744
+ border-bottom-color: @treeselect-control-menu-divider-color;
745
+ }
746
+ }
747
+
748
+ .generate-level-indentations(@i) when (@i >= 0) {
749
+ .generate-level-indentations((@i - 1));
750
+
751
+ .rp-treeselect__indent-level-@{i} {
752
+ .rp-treeselect__option {
753
+ padding-left: @treeselect-padding + @i * @treeselect-narrow-cell-width;
754
+
755
+ [dir="rtl"] & {
756
+ padding-left: @treeselect-padding;
757
+ padding-right: @treeselect-padding + @i * @treeselect-narrow-cell-width;
758
+ }
759
+ }
760
+
761
+ .rp-treeselect__tip {
762
+ padding-left: @treeselect-padding + (@i + 1) * @treeselect-narrow-cell-width;
763
+
764
+ [dir="rtl"] & {
765
+ padding-left: @treeselect-padding;
766
+ padding-right: @treeselect-padding + (@i + 1) * @treeselect-narrow-cell-width;
767
+ }
768
+ }
769
+ }
770
+ }
771
+ .generate-level-indentations(@treeselect-max-level);
772
+
773
+ .rp-treeselect__option {
774
+ .row();
775
+ }
776
+
777
+ .rp-treeselect__option--highlight {
778
+ background: @treeselect-option-bg-highlight;
779
+ }
780
+
781
+ .rp-treeselect__option--selected {
782
+ // note that these should override `.rp-treeselect__option--highlight`
783
+ .rp-treeselect--single & {
784
+ background: @treeselect-option-selected-bg;
785
+ font-weight: 600;
786
+
787
+ &:hover {
788
+ background: @treeselect-option-selected-bg-hover;
789
+ }
790
+ }
791
+ }
792
+
793
+ .rp-treeselect__option--hide {
794
+ display: none;
795
+ }
796
+
797
+ .rp-treeselect__option-arrow-container,
798
+ .rp-treeselect__option-arrow-placeholder {
799
+ .narrow-cell();
800
+ }
801
+
802
+ .rp-treeselect__option-arrow-container {
803
+ .clickable();
804
+ }
805
+
806
+ .rp-treeselect__option-arrow {
807
+ display: inline-block;
808
+ width: @treeselect-arrow-size;
809
+ height: @treeselect-arrow-size;
810
+ color: @treeselect-arrow-color;
811
+ vertical-align: middle;
812
+ transition: @treeselect-transition-duration transform @treeselect-arrow-transition-timing-function;
813
+ transform: rotateZ(-90deg);
814
+
815
+ [dir="rtl"] & {
816
+ transform: rotateZ(90deg);
817
+ }
818
+
819
+ .rp-treeselect__option-arrow-container:hover &,
820
+ .rp-treeselect--branch-nodes-disabled .rp-treeselect__option:hover & {
821
+ color: @treeselect-arrow-color-hover;
822
+ }
823
+ }
824
+
825
+ .rp-treeselect__option-arrow--rotated {
826
+ transform: rotateZ(0);
827
+
828
+ [dir="rtl"] & {
829
+ transform: rotateZ(0);
830
+ }
831
+
832
+ &.rp-treeselect__option-arrow--prepare-enter {
833
+ transform: rotateZ(-90deg) !important; // stylelint-disable-line declaration-no-important
834
+
835
+ [dir="rtl"] & {
836
+ transform: rotateZ(90deg) !important; // stylelint-disable-line declaration-no-important
837
+ }
838
+ }
839
+ }
840
+
841
+ .rp-treeselect__label-container {
842
+ .cell();
843
+ .clickable();
844
+
845
+ display: table;
846
+ width: 100%;
847
+ table-layout: fixed;
848
+ color: @treeselect-option-label-color;
849
+
850
+ .rp-treeselect__option--disabled & {
851
+ .forbidden();
852
+
853
+ color: @treeselect-option-label-color-disabled;
854
+ }
855
+ }
856
+
857
+ .rp-treeselect__checkbox-container {
858
+ display: table-cell;
859
+ width: @treeselect-narrow-cell-width;
860
+ min-width: @treeselect-narrow-cell-width;
861
+ height: 100%;
862
+ text-align: center;
863
+ vertical-align: middle;
864
+ }
865
+
866
+ .rp-treeselect__checkbox {
867
+ display: block;
868
+ margin: auto;
869
+ width: @treeselect-checkbox-size;
870
+ height: @treeselect-checkbox-size;
871
+ border-width: 1px;
872
+ border-style: solid;
873
+ border-radius: @treeselect-border-radius-sm;
874
+ position: relative;
875
+ transition: @treeselect-transition-duration all @ease-out-circ;
876
+ }
877
+
878
+ .rp-treeselect__check-mark,
879
+ .rp-treeselect__minus-mark {
880
+ display: block;
881
+ position: absolute;
882
+ left: 1px;
883
+ top: 1px;
884
+ background-repeat: no-repeat;
885
+ opacity: 0;
886
+ transition: @treeselect-transition-duration all ease;
887
+ }
888
+
889
+ .rp-treeselect__minus-mark {
890
+ width: image-width(@treeselect-checkbox-indeterminate-icon);
891
+ height: image-height(@treeselect-checkbox-indeterminate-icon);
892
+ // Svg icons are rendered differently in different browsers thus unacceptable.
893
+ // Png provides the best consistency with a drawback that
894
+ // its color can't be controlled by CSS.
895
+ .retina(@treeselect-checkbox-indeterminate-icon, 3);
896
+ background-size: image-size(@treeselect-checkbox-indeterminate-icon);
897
+
898
+ .rp-treeselect__checkbox--indeterminate > & {
899
+ opacity: 1;
900
+ }
901
+
902
+ .rp-treeselect__checkbox--disabled & {
903
+ .retina(@treeselect-checkbox-disabled-indeterminate-icon, 3);
904
+ }
905
+ }
906
+
907
+ .rp-treeselect__check-mark {
908
+ width: image-width(@treeselect-checkbox-checked-icon);
909
+ height: image-height(@treeselect-checkbox-checked-icon);
910
+ .retina(@treeselect-checkbox-checked-icon, 3);
911
+ background-size: image-size(@treeselect-checkbox-checked-icon);
912
+ // Set initial height to 1px.
913
+ transform: scaleY(1 / unit(image-height(@treeselect-checkbox-checked-icon)));
914
+
915
+ .rp-treeselect__checkbox--checked > & {
916
+ opacity: 1;
917
+ transform: scaleY(1);
918
+ }
919
+
920
+ .rp-treeselect__checkbox--disabled & {
921
+ .retina(@treeselect-checkbox-disabled-checked-icon, 3);
922
+ }
923
+ }
924
+
925
+ .rp-treeselect__checkbox--unchecked {
926
+ border-color: @treeselect-checkbox-border-color;
927
+ background: @treeselect-checkbox-bg;
928
+
929
+ .rp-treeselect__label-container:hover & {
930
+ border-color: @treeselect-checkbox-border-color-hover;
931
+ background: @treeselect-checkbox-bg-hover;
932
+ }
933
+ }
934
+
935
+ .rp-treeselect__checkbox--indeterminate {
936
+ border-color: @treeselect-checkbox-indeterminate-border-color;
937
+ background: @treeselect-checkbox-indeterminate-bg;
938
+
939
+ .rp-treeselect__label-container:hover & {
940
+ border-color: @treeselect-checkbox-indeterminate-border-color-hover;
941
+ background: @treeselect-checkbox-indeterminate-bg-hover;
942
+ }
943
+ }
944
+
945
+ .rp-treeselect__checkbox--checked {
946
+ border-color: @treeselect-checkbox-checked-border-color;
947
+ background: @treeselect-checkbox-checked-bg;
948
+
949
+ .rp-treeselect__label-container:hover & {
950
+ border-color: @treeselect-checkbox-checked-border-color-hover;
951
+ background: @treeselect-checkbox-checked-bg-hover;
952
+ }
953
+ }
954
+
955
+ .rp-treeselect__checkbox--disabled {
956
+ border-color: @treeselect-checkbox-disabled-border-color;
957
+ background-color: @treeselect-checkbox-disabled-bg-color;
958
+
959
+ .rp-treeselect__label-container:hover & {
960
+ border-color: @treeselect-checkbox-disabled-border-color;
961
+ background-color: @treeselect-checkbox-disabled-bg-color;
962
+ }
963
+ }
964
+
965
+
966
+ .rp-treeselect__label {
967
+ .text-truncate();
968
+
969
+ display: table-cell;
970
+ padding-left: @treeselect-padding;
971
+ max-width: 100%;
972
+ vertical-align: middle;
973
+ cursor: inherit; // override user agent style
974
+
975
+ [dir="rtl"] & {
976
+ padding-left: 0;
977
+ padding-right: @treeselect-padding;
978
+ }
979
+ }
980
+
981
+ .rp-treeselect__count {
982
+ margin-left: @treeselect-padding;
983
+ font-weight: 400;
984
+ opacity: 0.6;
985
+
986
+ [dir="rtl"] & {
987
+ margin-left: 0;
988
+ margin-right: @treeselect-padding;
989
+ }
990
+ }
991
+
992
+ .rp-treeselect__tip {
993
+ .row();
994
+
995
+ color: @treeselect-tip-color;
996
+ }
997
+
998
+ .rp-treeselect__tip-text {
999
+ .wide-cell();
1000
+
1001
+ font-size: @treeselect-tip-font-size;
1002
+ }
1003
+
1004
+ .rp-treeselect__retry {
1005
+ .rp-treeselect__error-tip & {
1006
+ .clickable();
1007
+
1008
+ margin-left: @treeselect-padding;
1009
+ font-style: normal;
1010
+ font-weight: 600;
1011
+ text-decoration: none;
1012
+ color: @treeselect-retry-text-color;
1013
+
1014
+ [dir="rtl"] & {
1015
+ margin-left: 0;
1016
+ margin-right: @treeselect-padding;
1017
+ }
1018
+ }
1019
+ }
1020
+
1021
+ .rp-treeselect__icon-container {
1022
+ .narrow-cell();
1023
+
1024
+ .rp-treeselect--single & {
1025
+ padding-left: @treeselect-padding;
1026
+
1027
+ [dir="rtl"] & {
1028
+ padding-left: 0;
1029
+ padding-right: @treeselect-padding;
1030
+ }
1031
+ }
1032
+ }
1033
+
1034
+ .rp-treeselect__icon-warning {
1035
+ .icon();
1036
+ .rounded();
1037
+
1038
+ position: relative;
1039
+ width: @treeselect-icon-size;
1040
+ height: @treeselect-icon-size;
1041
+ background: @treeselect-warning-icon-bg;
1042
+
1043
+ &::after {
1044
+ display: block;
1045
+ position: absolute;
1046
+ content: "";
1047
+ left: 5px;
1048
+ top: 2.5px;
1049
+ width: 2px;
1050
+ height: 1px;
1051
+ border: 0 solid #fff;
1052
+ border-top-width: 5px;
1053
+ border-bottom-width: 1px;
1054
+ }
1055
+ }
1056
+
1057
+ .rp-treeselect__icon-error {
1058
+ .icon();
1059
+ .rounded();
1060
+
1061
+ @stroke-length: 6px;
1062
+
1063
+ position: relative;
1064
+ width: @treeselect-icon-size;
1065
+ height: @treeselect-icon-size;
1066
+ background: @treeselect-error-icon-bg;
1067
+
1068
+ &::before,
1069
+ &::after {
1070
+ display: block;
1071
+ position: absolute;
1072
+ content: "";
1073
+ background: #fff;
1074
+ transform: rotate(45deg);
1075
+ }
1076
+
1077
+ &::before {
1078
+ width: @stroke-length;
1079
+ height: 2px;
1080
+ left: 3px;
1081
+ top: 5px;
1082
+ }
1083
+
1084
+ &::after {
1085
+ width: 2px;
1086
+ height: @stroke-length;
1087
+ left: 5px;
1088
+ top: 3px;
1089
+ }
1090
+ }
1091
+
1092
+ .rp-treeselect__icon-loader {
1093
+ .icon();
1094
+
1095
+ position: relative;
1096
+ width: @treeselect-icon-size;
1097
+ height: @treeselect-icon-size;
1098
+ text-align: center;
1099
+ animation: @treeselect-loader-animation-duration rp-treeselect-animation-rotate linear infinite;
1100
+
1101
+ &::before,
1102
+ &::after {
1103
+ .rounded();
1104
+
1105
+ position: absolute;
1106
+ content: "";
1107
+ left: 0;
1108
+ top: 0;
1109
+ display: block;
1110
+ width: 100%;
1111
+ height: 100%;
1112
+ opacity: 0.6;
1113
+ animation: @treeselect-loader-animation-duration rp-treeselect-animation-bounce ease-in-out infinite;
1114
+ }
1115
+
1116
+ &::before {
1117
+ background: @treeselect-loader-color-dark;
1118
+ }
1119
+
1120
+ &::after {
1121
+ background: @treeselect-loader-color-light;
1122
+ animation-delay: -(@treeselect-loader-animation-duration / 2);
1123
+ }
1124
+ }
1125
+
1126
+
1127
+ /**
1128
+ * Menu Portal
1129
+ */
1130
+
1131
+ .rp-treeselect__menu-placeholder {
1132
+ display: none;
1133
+ }
1134
+
1135
+ .rp-treeselect__portal-target {
1136
+ position: absolute;
1137
+ display: block;
1138
+ left: 0;
1139
+ top: 0;
1140
+ height: 0;
1141
+ width: 0;
1142
+ padding: 0;
1143
+ margin: 0;
1144
+ border: 0;
1145
+ overflow: visible;
1146
+ box-sizing: border-box;
1147
+ }