funda-ui 4.5.657 → 4.5.671

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 (73) hide show
  1. package/ColorPicker/index.js +3 -1
  2. package/Date/index.d.ts +1 -0
  3. package/Date/index.js +17 -2
  4. package/DragDropList/index.css +188 -0
  5. package/DragDropList/index.d.ts +44 -0
  6. package/DragDropList/index.js +1587 -0
  7. package/Input/index.d.ts +2 -0
  8. package/Input/index.js +14 -1
  9. package/LICENSE +21 -0
  10. package/MasonryLayout/index.d.ts +2 -0
  11. package/MasonryLayout/index.js +115 -5
  12. package/MultipleSelect/index.css +237 -144
  13. package/MultipleSelect/index.d.ts +24 -10
  14. package/MultipleSelect/index.js +2240 -1225
  15. package/README.md +3 -1
  16. package/RangeSlider/index.js +14 -1
  17. package/Textarea/index.d.ts +2 -0
  18. package/Textarea/index.js +14 -1
  19. package/Tree/index.d.ts +1 -0
  20. package/Tree/index.js +29 -0
  21. package/Utils/useBoundedDrag.d.ts +125 -0
  22. package/Utils/useBoundedDrag.js +380 -0
  23. package/Utils/useDragDropPosition.d.ts +169 -0
  24. package/Utils/useDragDropPosition.js +456 -0
  25. package/Utils/useIsMobile.d.ts +2 -0
  26. package/Utils/useIsMobile.js +168 -0
  27. package/all.d.ts +1 -0
  28. package/all.js +1 -1
  29. package/lib/cjs/ColorPicker/index.js +3 -1
  30. package/lib/cjs/Date/index.d.ts +1 -0
  31. package/lib/cjs/Date/index.js +17 -2
  32. package/lib/cjs/DragDropList/index.d.ts +44 -0
  33. package/lib/cjs/DragDropList/index.js +1587 -0
  34. package/lib/cjs/Input/index.d.ts +2 -0
  35. package/lib/cjs/Input/index.js +14 -1
  36. package/lib/cjs/MasonryLayout/index.d.ts +2 -0
  37. package/lib/cjs/MasonryLayout/index.js +115 -5
  38. package/lib/cjs/MultipleSelect/index.d.ts +24 -10
  39. package/lib/cjs/MultipleSelect/index.js +2240 -1225
  40. package/lib/cjs/RangeSlider/index.js +14 -1
  41. package/lib/cjs/Textarea/index.d.ts +2 -0
  42. package/lib/cjs/Textarea/index.js +14 -1
  43. package/lib/cjs/Tree/index.d.ts +1 -0
  44. package/lib/cjs/Tree/index.js +29 -0
  45. package/lib/cjs/Utils/useBoundedDrag.d.ts +125 -0
  46. package/lib/cjs/Utils/useBoundedDrag.js +380 -0
  47. package/lib/cjs/Utils/useDragDropPosition.d.ts +169 -0
  48. package/lib/cjs/Utils/useDragDropPosition.js +456 -0
  49. package/lib/cjs/Utils/useIsMobile.d.ts +2 -0
  50. package/lib/cjs/Utils/useIsMobile.js +168 -0
  51. package/lib/cjs/index.d.ts +1 -0
  52. package/lib/cjs/index.js +1 -1
  53. package/lib/css/DragDropList/index.css +188 -0
  54. package/lib/css/MultipleSelect/index.css +237 -144
  55. package/lib/esm/ColorPicker/index.tsx +53 -49
  56. package/lib/esm/Date/index.tsx +3 -0
  57. package/lib/esm/DragDropList/index.scss +245 -0
  58. package/lib/esm/DragDropList/index.tsx +494 -0
  59. package/lib/esm/Input/index.tsx +17 -3
  60. package/lib/esm/MasonryLayout/index.tsx +125 -7
  61. package/lib/esm/MultipleSelect/index.scss +288 -183
  62. package/lib/esm/MultipleSelect/index.tsx +305 -166
  63. package/lib/esm/MultipleSelect/utils/func.ts +21 -1
  64. package/lib/esm/Tabs/Tabs.tsx +1 -1
  65. package/lib/esm/Textarea/index.tsx +18 -1
  66. package/lib/esm/Tree/TreeList.tsx +32 -0
  67. package/lib/esm/Tree/index.tsx +3 -0
  68. package/lib/esm/Utils/hooks/useBoundedDrag.tsx +301 -0
  69. package/lib/esm/Utils/hooks/useDragDropPosition.tsx +420 -0
  70. package/lib/esm/Utils/hooks/useIsMobile.tsx +56 -0
  71. package/lib/esm/index.js +1 -0
  72. package/package.json +1 -1
  73. package/lib/esm/MultipleSelect/ItemList.tsx +0 -323
@@ -1,221 +1,137 @@
1
1
  /* ======================================================
2
2
  <!-- Multiple Select -->
3
3
  /* ====================================================== */
4
- .m-select__wrapper {
5
-
6
-
7
- --m-select-wrapper-min-w: 350px;
8
- --m-select-wrapper-min-h: 315px;
9
- --m-select-header-font-size: 0.75rem;
10
- --m-select-body-font-size: 0.75rem;
11
- --m-select-scrollbar-color: rgba(0, 0, 0, 0.2);
12
- --m-select-scrollbar-track: rgba(0, 0, 0, 0);
13
- --m-select-scrollbar-w: 10px;
14
- --m-select-search-icon-color: #333;
15
- --m-select-body-bg: #fff;
16
- --m-select-header-bg: #dee2e6;
17
- --m-select-border-color: #dee2e6;
18
- --m-select-options-item-bg: #f6f6f6;
19
- --m-select-options-item-icon-color: #000;
20
- --m-select-options-item-selected-bg: #0b5ed7;
21
- --m-select-options-item-selected-icon-color: #fff;
22
- --m-select-options-item-selected-text-color: #fff;
23
- --m-select-options-item-dividingline-color: rgba(255, 255, 255, 1);
24
- --m-select-search-input-w: 100px;
25
- --m-select-search-input-bg: #fff;
26
- --m-select-search-input-text-color: #333;
27
-
28
-
29
-
30
- min-width: var(--m-select-wrapper-min-w);
31
- min-height: var(--m-select-wrapper-min-h);
4
+ .m-select-v2__wrapper {
5
+
6
+ --m-select-v2-wrapper-min-w: 350px;
7
+ --m-select-v2-wrapper-min-h: 315px;
8
+ --m-select-v2-header-font-size: 0.75rem;
9
+ --m-select-v2-body-font-size: 0.75rem;
10
+ --m-select-v2-scrollbar-color: rgba(0, 0, 0, 0.2);
11
+ --m-select-v2-scrollbar-track: rgba(0, 0, 0, 0);
12
+ --m-select-v2-scrollbar-w: 10px;
13
+ --m-select-v2-search-icon-color: #333;
14
+ --m-select-v2-body-bg: #fff;
15
+ --m-select-v2-header-bg: #dee2e6;
16
+ --m-select-v2-border-color: #dee2e6;
17
+ --m-select-v2-search-input-w: 100px;
18
+ --m-select-v2-search-input-bg: #fff;
19
+ --m-select-v2-search-input-text-color: #333;
20
+
21
+
22
+ min-width: var(--m-select-v2-wrapper-min-w);
23
+ min-height: var(--m-select-v2-wrapper-min-h);
32
24
  width: 100%;
33
25
  height: 100%;
34
- border: solid 1px var(--m-select-border-color);
26
+ border: solid 1px var(--m-select-v2-border-color);
35
27
  border-radius: 0.35rem;
36
28
  position: relative;
37
- background: var(--m-select-body-bg);
29
+ background: var(--m-select-v2-body-bg);
38
30
 
39
31
 
40
- .m-select-diving-line {
32
+ .m-select-v2-diving-line {
41
33
  width: 1px;
42
- background-color: var(--m-select-border-color);
34
+ background-color: var(--m-select-v2-border-color);
43
35
  left: 50%;
44
36
  top: 0;
45
37
  position: absolute;
46
38
  height: 100%;
47
39
  z-index: 1;
48
40
  }
49
-
50
- .m-select-inner {
41
+
42
+ .m-select-v2-inner {
51
43
  display: flex;
52
44
  font-size: 0.8em;
53
45
  height: 100%;
54
46
 
55
-
56
- ul,
57
- li {
58
- margin: 0;
59
- padding: 0;
60
- list-style: none;
61
- }
62
- div.m-select__selected__container,
63
- div.m-select__available__container {
47
+ div.m-select-v2__selected__container,
48
+ div.m-select-v2__available__container {
64
49
  position: relative;
65
50
  flex: 1;
66
51
  }
67
- ul.m-select__selected,
68
- ul.m-select__available {
69
- position: relative;
70
- overflow: auto;
71
- overflow-x: hidden;
72
- border: none;
73
- position: relative;
74
- width: 100%;
75
- }
76
52
 
77
53
 
78
- ul {
79
- user-select: none;
80
- &.m-select__selected {
81
- li {
82
-
54
+ /* Main */
55
+ div {
56
+ &.m-select-v2__selected__container {
57
+ .m-select-v2__header {
58
+ border-radius: 0 0.35rem 0 0;
83
59
  }
84
60
  }
85
- }
86
- li {
87
- cursor: default;
88
- position: relative;
89
- font-size: var(--m-select-body-font-size);
90
- display: block;
91
- background: var(--m-select-options-item-bg);
92
- border-bottom: 1px solid var(--m-select-options-item-dividingline-color);
93
-
94
- &.disabled {
95
- pointer-events: none;
96
- opacity: .4;
61
+ &.m-select-v2__available__container {
62
+ .m-select-v2__header {
63
+ border-radius: 0.35rem 0 0 0;
64
+ }
97
65
  }
66
+ }
98
67
 
68
+ /* List */
69
+ .m-select-v2-draggable-list {
70
+ font-size: var(--m-select-v2-body-font-size);
99
71
 
100
- &.hide {
101
- display: none;
102
- }
103
-
104
- &:hover {
105
- opacity: .8;
72
+ overflow: hidden;
73
+ overflow-y: auto;
74
+ max-height: calc(var(--m-select-v2-wrapper-min-h) - 1.75rem);
75
+ &::-webkit-scrollbar {
76
+ width: var(--m-select-v2-scrollbar-w);
106
77
  }
107
- &.selected {
108
- background: var(--m-select-options-item-selected-bg);
109
- color: var(--m-select-options-item-selected-text-color);
110
- & > i {
111
- svg {
112
- path {
113
- fill: var(--m-select-options-item-selected-icon-color);
114
- }
115
- }
116
- }
78
+ &::-webkit-scrollbar-thumb {
79
+ background: var(--m-select-v2-scrollbar-color);
117
80
  }
118
- &:last-child {
119
- border-bottom: none;
81
+ &::-webkit-scrollbar-track {
82
+ background: var(--m-select-v2-scrollbar-track);
120
83
  }
121
- > div {
122
- padding: .35rem .75rem;
123
- display: flex;
124
- justify-content: space-between;
125
- width: 100%;
126
- overflow: hidden;
127
- text-overflow: ellipsis;
128
- word-wrap: break-word;
129
- word-break: break-word;
130
-
131
-
132
- > strong {
133
- font-weight: normal;
134
- display: flex;
135
- align-items: center;
136
84
 
137
- .arrow {
138
- display: inline-block;
139
- margin-left: .2rem;
140
- }
141
-
142
- }
143
-
144
- &.active {
145
- .arrow {
146
- transform: rotate(90deg);
147
- }
148
- }
149
-
150
-
151
- > i {
152
- display: inline-block;
153
- cursor: pointer;
154
-
155
- svg {
156
- path {
157
- fill: var(--m-select-options-item-icon-color);
158
- }
159
- }
160
- }
161
85
 
86
+ /* Search Result */
87
+ .m-select-v2-draggable-list__item.hide {
88
+ display: none;
162
89
  }
163
-
164
90
  }
165
91
 
166
- div {
167
- &.m-select__selected__container {
168
- .m-select__header {
169
- border-radius: 0 0.35rem 0 0;
170
- }
171
- }
172
- &.m-select__available__container {
173
- .m-select__header {
174
- border-radius: 0.35rem 0 0 0;
175
- }
176
- }
177
- }
178
- .m-select__header {
92
+
93
+ /* Header */
94
+ .m-select-v2__header {
179
95
  border: none;
180
- font-size: var(--m-select-header-font-size);
96
+ font-size: var(--m-select-v2-header-font-size);
181
97
  margin-bottom: 1px;
182
- background: var(--m-select-header-bg);
98
+ background: var(--m-select-v2-header-bg);
183
99
  display: flex;
184
100
  justify-content: space-between;
185
101
  align-items: center;
186
102
  height: 1.625rem;
187
103
  }
188
- .m-select__btn--add-all {
104
+ .m-select-v2__btn--add-all {
189
105
  padding: 0.2rem;
190
106
  }
191
- .m-select__btn--remove-all {
107
+ .m-select-v2__btn--remove-all {
192
108
  padding: 0.2rem;
193
109
  }
194
- .m-select__count {
110
+ .m-select-v2__count {
195
111
  padding: 0.2rem;
196
112
  }
197
- .m-select__title {
113
+ .m-select-v2__title {
198
114
  padding: 0.2rem;
199
115
  font-weight: bold;
200
116
  }
201
117
 
202
118
 
203
119
  /* Search */
204
- .m-select__search__container {
120
+ .m-select-v2__search__container {
205
121
  position: relative;
206
122
 
207
123
  /* required */
208
124
  align-items: center;
209
125
  display: flex;
210
126
 
211
- input.m-select__search {
127
+ input.m-select-v2__search {
212
128
  height: 14px;
213
129
  padding: .1rem .5rem;
214
130
  opacity: 0.5;
215
131
  margin: 4px;
216
- width: var(--m-select-search-input-w);
217
- background-color: var(--m-select-search-input-bg);
218
- color: var(--m-select-search-input-text-color);
132
+ width: var(--m-select-v2-search-input-w);
133
+ background-color: var(--m-select-v2-search-input-bg);
134
+ color: var(--m-select-v2-search-input-text-color);
219
135
  border-radius: 25px;
220
136
  border: none;
221
137
  outline: none;
@@ -227,67 +143,256 @@
227
143
  right: .6em;
228
144
 
229
145
  svg {
230
- fill: var(--m-select-search-icon-color);
146
+ fill: var(--m-select-v2-search-icon-color);
231
147
  }
232
148
  }
233
149
  }
234
150
 
235
151
  }
152
+ }
236
153
 
237
154
 
238
- /*-------- Multilevel --------*/
239
- ul.m-select__options-contentlist {
240
155
 
241
- > li {
156
+ /*
157
+ ///////////////////////////////////////////////////////////
158
+ //////////////////// DragDrop List //////////////////
159
+ ///////////////////////////////////////////////////////////
160
+ */
242
161
 
243
- ul {
244
- transition: max-height 0.25s ease;
245
- overflow: hidden;
246
- position: relative;
247
- padding-left: 1rem;
162
+ .m-select-v2-draggable-list {
163
+
164
+ --m-select-v2-draggable-content-bg: transparent;
165
+ --m-select-v2-draggable-content-color: inherit;
166
+ --m-select-v2-draggable-border-color: #ddd;
167
+ --m-select-v2-draggable-wrapper-radius: 0.25rem;
168
+ --m-select-v2-draggable-control-radius: 0.25rem;
169
+ --m-select-v2-draggable-primary-color: #ffa940;
170
+ --m-select-v2-draggable-content-diff-bg: #fafafa;
171
+ --m-select-v2-draggable-content-diff-border-color: #d9d9d9;
172
+ --m-select-v2-draggable-control-fs: 0.75rem;
173
+ --m-select-v2-draggable-control-w: 100px;
174
+ --m-select-v2-draggable-btn-confirm-bg: #52c41a;
175
+ --m-select-v2-draggable-btn-cancel-bg: #ff4d4f;
176
+ --m-select-v2-draggable-btn-color: #fff;
177
+
178
+
179
+ list-style: none;
180
+ padding: 0;
181
+ margin: 0;
182
+ width: 100%;
183
+ position: relative;
184
+
185
+ /* hide wrapper border */
186
+ border-width: 0;
187
+ border-radius: 0;
188
+
189
+ li {
190
+ margin: 0;
191
+ padding: 0;
192
+ }
193
+
194
+ .m-select-v2-draggable-list__item {
195
+ padding: 0;
196
+ position: relative;
197
+ transition: transform 0.15s ease;
198
+ position: relative;
199
+
200
+ .m-select-v2-draggable-list__itemcontent {
201
+ padding: 5px 15px;
202
+ background: var(--m-select-v2-draggable-content-bg);
203
+ color: var(--m-select-v2-draggable-content-color);
204
+ border-bottom: 1px solid var(--m-select-v2-draggable-border-color);
205
+ display: flex;
206
+ align-items: center;
207
+ user-select: none;
208
+ transition: all 0.15s ease;
209
+
210
+ .m-select-v2-draggable-list__itemcontent-inner {
211
+ display: flex;
212
+ align-items: center;
213
+ justify-content: space-between;
214
+ width: 100%;
215
+
248
216
  }
249
217
  }
250
218
 
251
- > li:not(.active) {
219
+ &.disabled {
220
+ pointer-events: none !important;
221
+ opacity: .4 !important;
222
+ }
223
+ }
252
224
 
253
- ul {
254
- max-height: 0;
225
+ &.alternate-collapse {
226
+ .m-select-v2-draggable-list__collapse-arrow {
227
+ cursor: pointer;
228
+ display: inline-block;
229
+ width: 20px;
230
+ text-align: center;
231
+ user-select: none;
232
+ margin-left: .2rem;
233
+
234
+ svg {
235
+ transition: all 0.15s ease;
236
+ }
237
+
238
+ &:hover {
239
+ opacity: 0.7;
255
240
  }
256
241
  }
257
242
 
243
+ .m-select-v2-draggable-list__item {
244
+ &.has-children {
245
+ position: relative;
246
+ }
258
247
 
259
- > li ul ul {
260
- margin-top: auto;
248
+ &.collapsed {
249
+ .m-select-v2-draggable-list__collapse-arrow svg {
250
+ transform: rotate(-90deg);
251
+ }
252
+ }
261
253
  }
254
+ }
262
255
 
256
+ .m-select-v2-draggable-list__item.draggable .m-select-v2-draggable-list__itemcontent {
257
+ padding-left: 1.5em;
263
258
  }
264
259
 
265
260
 
266
- /*-------- List --------*/
267
- ul.m-select__options-contentlist {
268
- position: relative;
269
- width: 100%;
270
- overflow: hidden;
271
- overflow-y: auto;
272
- max-height: calc(315px - 1.75rem);
273
- &::-webkit-scrollbar {
274
- width: var(--m-select-scrollbar-w);
261
+ &.handle-pos-right .m-select-v2-draggable-list__item.draggable .m-select-v2-draggable-list__itemcontent,
262
+ &.icon-hide .m-select-v2-draggable-list__item.draggable .m-select-v2-draggable-list__itemcontent {
263
+ padding-left: .5rem;
264
+ }
265
+
266
+
267
+ .m-select-v2-draggable-list__item {
268
+ &.block.draggable {
269
+ cursor: move;
270
+ }
271
+
272
+ &.dragging .m-select-v2-draggable-list__itemcontent {
273
+ background: #fff9e6;
274
+ border: 1px dashed #ffd591;
275
+ opacity: 0.8;
276
+ }
277
+
278
+ &.drag-over .m-select-v2-draggable-list__itemcontent {
279
+ background: #fff9e6;
280
+ border: 2px solid #ffd591;
281
+ }
282
+
283
+ &.drag-over-top::before {
284
+ content: '';
285
+ position: absolute;
286
+ top: -3px;
287
+ left: 0;
288
+ right: 0;
289
+ height: 2px;
290
+ background: var(--m-select-v2-draggable-primary-color);
291
+ border-radius: 1px;
292
+ }
293
+
294
+ &.drag-over-bottom::after {
295
+ content: '';
296
+ position: absolute;
297
+ bottom: -3px;
298
+ left: 0;
299
+ right: 0;
300
+ height: 2px;
301
+ background: var(--m-select-v2-draggable-primary-color);
302
+ border-radius: 1px;
303
+ }
304
+ }
305
+
306
+ /* Fix the problem that mobile terminals cannot be touched, DO NOT USE "<svg>" */
307
+ .m-select-v2-draggable-list__handle {
308
+ color: #999;
309
+ padding: 5px;
310
+ cursor: move;
311
+ transition: color 0.15s ease;
312
+ position: absolute;
313
+ width: 1em;
314
+ height: 1em;
315
+ top: 50%;
316
+ transform: translateY(-50%);
317
+ z-index: 1;
318
+ display: flex;
319
+ align-items: center;
320
+ font-size: 0.75rem;
321
+
322
+ &.left {
323
+ left: 0;
275
324
  }
276
- &::-webkit-scrollbar-thumb {
277
- background: var(--m-select-scrollbar-color);
325
+
326
+ &.right {
327
+ right: 1em;
278
328
  }
279
- &::-webkit-scrollbar-track {
280
- background: var(--m-select-scrollbar-track);
329
+ }
330
+
331
+ .m-select-v2-draggable-list__item,
332
+ .m-select-v2-draggable-list__itemcontent {
333
+ transition: all 0.15s ease;
334
+ }
335
+
336
+
337
+ .m-select-v2-draggable-list__item {
338
+ &.editing .m-select-v2-draggable-list__itemcontent,
339
+ &:hover .m-select-v2-draggable-list__itemcontent {
340
+ background: var(--m-select-v2-draggable-content-diff-bg);
341
+ border-color: var(--m-select-v2-draggable-content-diff-border-color);
281
342
  }
282
- &.dragging {
283
- cursor: grab;
343
+
344
+
345
+ &.block:hover .m-select-v2-draggable-list__handle {
346
+ color: var(--m-select-v2-draggable-primary-color);
284
347
  }
348
+
349
+ }
350
+
351
+ &.handle .m-select-v2-draggable-list__handle:hover {
352
+ color: var(--m-select-v2-draggable-primary-color);
285
353
  }
286
- ul.m-select__options-contentlist--hide {
287
- overflow: hidden;
288
- height: auto;
354
+
355
+ /* FORM */
356
+ .m-select-v2-draggable-list__edit-form {
357
+ display: flex;
358
+ flex: 1;
359
+ gap: 10px;
360
+ align-items: center;
361
+
362
+ input {
363
+ padding: 4px 8px;
364
+ border: 1px solid var(--m-select-v2-draggable-border-color);
365
+ border-radius: var(--m-select-v2-draggable-control-radius);
366
+ font-size: var(--m-select-v2-draggable-control-fs);
367
+ width: var(--m-select-v2-draggable-control-w);
368
+ }
289
369
  }
290
370
 
371
+ .m-select-v2-draggable-list__edit-buttons {
372
+ display: flex;
373
+ gap: 5px;
374
+
375
+ button {
376
+ padding: .2rem .5rem;
377
+ border: none;
378
+ font-size: 0.75rem;
379
+ border-radius: var(--m-select-v2-draggable-control-radius);
380
+ cursor: pointer;
381
+
382
+ &:first-child {
383
+ background: var(--m-select-v2-draggable-btn-confirm-bg);
384
+ color: var(--m-select-v2-draggable-btn-color);
385
+ }
291
386
 
387
+ &:last-child {
388
+ background: var(--m-select-v2-draggable-btn-cancel-bg);
389
+ color: var(--m-select-v2-draggable-btn-color);
390
+ }
391
+
392
+ &:hover {
393
+ opacity: 0.8;
394
+ }
395
+ }
396
+ }
292
397
 
293
398
  }