@neatui/nuxt 0.1.0 → 1.0.1

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 (85) hide show
  1. package/BUILD.md +128 -0
  2. package/IMPORT_GUIDE.md +142 -0
  3. package/README.md +98 -1
  4. package/SSR_COMPATIBILITY.md +201 -0
  5. package/USAGE.md +291 -0
  6. package/nuxt.config.example.ts +37 -0
  7. package/package.json +34 -11
  8. package/src/components/basic/IDraggable.vue +87 -65
  9. package/src/components/basic/IFollowView.vue +32 -23
  10. package/src/components/basic/IRouterView.vue +38 -23
  11. package/src/components/basic/IScrollView.vue +11 -7
  12. package/src/components/basic/Icon.vue +17 -17
  13. package/src/components/basic/LayerView/Layer.vue +33 -106
  14. package/src/components/basic/follow.ts +133 -0
  15. package/src/components/display/Calendar.vue +14 -14
  16. package/src/components/display/CalendarReg.vue +14 -14
  17. package/src/components/display/Image.vue +8 -8
  18. package/src/components/display/PhotoEditor.vue +36 -36
  19. package/src/components/display/PhotoViewer.vue +8 -8
  20. package/src/components/display/Tree.vue +6 -6
  21. package/src/components/display/TreeView.vue +4 -4
  22. package/src/components/display/index.ts +2 -2
  23. package/src/components/form/Cascader.vue +19 -19
  24. package/src/components/form/Checkbox.vue +64 -0
  25. package/src/components/form/DatePicker.vue +6 -7
  26. package/src/components/form/DateRangePicker@v3.vue +4 -4
  27. package/src/components/form/DateRangeView@v3.vue +18 -19
  28. package/src/components/form/DateView.vue +14 -14
  29. package/src/components/form/DateView@v2.vue +14 -14
  30. package/src/components/form/DateView@v3.vue +331 -318
  31. package/src/components/form/ImgUpload.vue +7 -7
  32. package/src/components/form/Input@v3.vue +11 -11
  33. package/src/components/form/MoreSelect@v3.vue +87 -17
  34. package/src/components/form/MoreSelectList.vue +8 -8
  35. package/src/components/form/MoreSelectPanel@v3.vue +3 -3
  36. package/src/components/form/MoreSelectPicker.vue +7 -7
  37. package/src/components/form/MoreSelectTags.vue +8 -8
  38. package/src/components/form/PageMoreSelect.vue +14 -14
  39. package/src/components/form/PageSelect.vue +16 -16
  40. package/src/components/form/SearchMoreSelect.vue +12 -12
  41. package/src/components/form/SearchSelect@v3.vue +3 -3
  42. package/src/components/form/Select@v3.vue +229 -23
  43. package/src/components/form/SelectList.vue +8 -8
  44. package/src/components/form/SelectPicker.vue +6 -6
  45. package/src/components/form/SelectTags.vue +7 -7
  46. package/src/components/form/SelectTree/SelectTree@v1.vue +5 -5
  47. package/src/components/form/Switch.vue +38 -103
  48. package/src/components/form/TextArea.vue +18 -18
  49. package/src/components/form/Textarea@v2.vue +275 -0
  50. package/src/components/form/TimeView.vue +14 -14
  51. package/src/components/form/Upload.vue +806 -297
  52. package/src/components/form/date.ts +321 -0
  53. package/src/components/form/index.ts +7 -5
  54. package/src/components/form/number.ts +3 -0
  55. package/src/components/form/type.ts +224 -0
  56. package/src/components/icon/OrderIcon.vue +113 -0
  57. package/src/components/loader/FormLoader/FormLoader@v2.vue +193 -195
  58. package/src/components/loader/FormLoader/FormLoader@v3.vue.backup +372 -291
  59. package/src/components/loader/FormLoader/FormRender@v3.vue.backup +4 -0
  60. package/src/components/loader/FormLoader/NodeLoader.vue +85 -0
  61. package/src/components/loader/FormLoader@v1/FormLoader.vue +1 -1
  62. package/src/components/loader/FormLoader@v1/FormRender.vue +49 -24
  63. package/src/components/loader/LayerLoader/LayerLoader.vue +318 -0
  64. package/src/components/loader/LayerLoader/index.ts +2 -0
  65. package/src/components/loader/LayerLoader/style.scss +77 -0
  66. package/src/components/loader/LimitLoader/LimitLoader@v3.vue +39 -28
  67. package/src/components/loader/MoveLoader/MoveLoader.vue +628 -0
  68. package/src/components/loader/MoveLoader/index.ts +2 -0
  69. package/src/components/loader/MoveLoader/style.scss +77 -0
  70. package/src/components/loader/TableLoader/TableLoader.vue +227 -195
  71. package/src/components/loader/TableLoader/TableRender.vue +141 -0
  72. package/src/components/loader/TableLoader/index.ts +47 -0
  73. package/src/components/loader/index.ts +3 -2
  74. package/src/components/tools/Pagination@a.vue +17 -18
  75. package/src/components/tools/Pagination@b.vue +16 -16
  76. package/src/index.ts +2 -1
  77. package/src/module.ts +169 -0
  78. package/src/runtime/types.d.ts +36 -0
  79. package/src/store/{myui.ts → frame.ts} +4 -4
  80. package/src/utils/theme.ts +14 -0
  81. package/tsconfig.json +1 -1
  82. package/src/components/loader/FormLoader/index.ts +0 -2
  83. package/src/components/loader/LimitLoader/LimitLoader.vue.backup +0 -131
  84. package/src/components/loader/LimitLoader/LimitLoader@v2.vue.backup +0 -174
  85. package/src/components/loader/TableLoader/TableColView.vue +0 -115
@@ -5,7 +5,7 @@
5
5
  </div>
6
6
  <div :class="itemClass" :style="itemStyle" am-view-item="item" ref="itemRef" v-if="view === 'iteming' || view === 'listing' || view === 'item'">
7
7
  <div class="iroute-view-dark" @click="cancel"></div>
8
- <div class="iroute-view-body" :style="mode === 'preview' || mode === 'pop-up' ? 'box-shadow: rgba(0, 0, 0, 0.08) -5px 0px 10px 0px;' : 'width: 100%;'">
8
+ <div class="iroute-view-body" :style="mode === 'preview' || mode === 'pop-up' ? '' : 'width: 100%;'">
9
9
  <slot name="item" :mode="mode"></slot>
10
10
  </div>
11
11
  </div>
@@ -36,12 +36,12 @@
36
36
  listClass: 'full',
37
37
  listStyle: '',
38
38
  itemClass: 'full',
39
- itemStyle: ''
39
+ itemStyle: '',
40
40
  });
41
41
  const state: any = reactive({
42
42
  first: 1,
43
43
  list: null,
44
- item: null
44
+ item: null,
45
45
  });
46
46
 
47
47
  const evs = (v: any = 'list', p: any = 'item') => {
@@ -60,7 +60,7 @@
60
60
  }
61
61
  }
62
62
  },
63
- { deep: true, immediate: true }
63
+ { deep: true, immediate: true },
64
64
  );
65
65
  };
66
66
  };
@@ -106,6 +106,7 @@
106
106
 
107
107
  <style lang="scss">
108
108
  .iroute-view-dark {
109
+ pointer-events: auto;
109
110
  position: absolute;
110
111
  width: 100%;
111
112
  height: 100%;
@@ -113,14 +114,19 @@
113
114
  top: 0;
114
115
  }
115
116
  .iroute-view-body {
117
+ pointer-events: none;
118
+ position: relative;
119
+ display: flex;
116
120
  z-index: 1;
117
121
  flex: 1;
118
122
  overflow: hidden;
119
- }
120
-
121
- [am-mode='preview'] {
122
- .iroute-view-body > * {
123
- height: 100%;
123
+ width: 100%;
124
+ height: 100%;
125
+ & > * {
126
+ pointer-events: none;
127
+ & > * {
128
+ pointer-events: auto;
129
+ }
124
130
  }
125
131
  }
126
132
 
@@ -166,27 +172,27 @@
166
172
  }
167
173
  }
168
174
  &[am-view='list'] {
169
- [am-view-item~='list'] {
175
+ & > [am-view-item~='list'] {
170
176
  flex-direction: column;
171
177
  display: flex;
172
178
  animation: am-show-default 0.35s ease both;
173
179
  }
174
180
  }
175
181
  &[am-view='listing'] {
176
- [am-view-item~='item'] {
182
+ & > [am-view-item~='item'] {
177
183
  flex-direction: column;
178
184
  display: flex;
179
185
  animation: am-hide-default 0.3s ease-in-out both;
180
186
  }
181
187
  }
182
188
  &[am-view='item'] {
183
- [am-view-item~='item'] {
189
+ & > [am-view-item~='item'] {
184
190
  display: flex;
185
191
  animation: am-show-default 0.35s ease both;
186
192
  }
187
193
  }
188
194
  &[am-view='iteming'] {
189
- [am-view-item~='list'] {
195
+ & > [am-view-item~='list'] {
190
196
  display: flex;
191
197
  animation: am-hide-default 0.3s ease-in-out both;
192
198
  }
@@ -197,6 +203,10 @@
197
203
  [am-view][am-mode~='preview'] {
198
204
  overflow: hidden;
199
205
 
206
+ .iroute-view-body {
207
+ justify-content: end;
208
+ }
209
+
200
210
  @keyframes am-show-preview {
201
211
  0% {
202
212
  opacity: 0;
@@ -245,21 +255,18 @@
245
255
  align-items: stretch;
246
256
  align-content: space-between;
247
257
  pointer-events: none;
248
- & > * {
249
- pointer-events: auto;
250
- }
251
258
  }
252
259
  }
253
260
  &[am-view='list'],
254
261
  &[am-view='listing'] {
255
- [am-view-item~='item'] {
262
+ & > [am-view-item~='item'] {
256
263
  display: flex;
257
264
  animation: am-hide-preview 0.5s ease-in-out both;
258
265
  }
259
266
  }
260
267
  &[am-view='item'],
261
268
  &[am-view='iteming'] {
262
- [am-view-item~='item'] {
269
+ & > [am-view-item~='item'] {
263
270
  display: flex;
264
271
  animation: am-show-preview 0.5s ease both;
265
272
  }
@@ -281,6 +288,16 @@
281
288
  [am-view][am-mode~='pop-up'] {
282
289
  overflow: hidden;
283
290
 
291
+ .iroute-view-body {
292
+ position: relative;
293
+ display: flex;
294
+ flex-direction: column;
295
+ justify-content: center;
296
+ align-items: center;
297
+ align-content: center;
298
+ pointer-events: none;
299
+ }
300
+
284
301
  @keyframes am-show-pop-up {
285
302
  0% {
286
303
  opacity: 0;
@@ -321,6 +338,7 @@
321
338
  }
322
339
  &[am-view-item~='item'] {
323
340
  position: fixed;
341
+ flex-direction: column;
324
342
  top: 0;
325
343
  right: 0;
326
344
  z-index: 100;
@@ -331,14 +349,11 @@
331
349
  pointer-events: none;
332
350
  background-color: rgba(0, 0, 0, 0.5);
333
351
  transition: all 0.35s;
334
- & > * {
335
- pointer-events: auto;
336
- }
337
352
  }
338
353
  }
339
354
  &[am-view='list'],
340
355
  &[am-view='listing'] {
341
- [am-view-item~='item'] {
356
+ & > [am-view-item~='item'] {
342
357
  display: flex;
343
358
  opacity: 0;
344
359
  & > * {
@@ -348,7 +363,7 @@
348
363
  }
349
364
  &[am-view='item'],
350
365
  &[am-view='iteming'] {
351
- [am-view-item~='item'] {
366
+ & > [am-view-item~='item'] {
352
367
  display: flex;
353
368
  opacity: 1;
354
369
  & > * {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="full fekit-ipull-scroll" ui-scroll=":y" ref="root">
2
+ <div class="fekit-ipull-scroll" :ui-scroll="`:y ${stable ? 'stable' : ''}`" ref="root">
3
3
  <div>
4
4
  <div class="fs-xs co-text o-mm" fekit-pullload-head="" v-if="pull">
5
5
  <div v-show="demo.store.pull < 2" ui-flex="row cm">
@@ -36,12 +36,16 @@
36
36
  const props: any = defineProps({
37
37
  pull: {
38
38
  type: Boolean,
39
- default: false
39
+ default: false,
40
40
  },
41
41
  load: {
42
42
  type: Boolean,
43
- default: false
44
- }
43
+ default: false,
44
+ },
45
+ stable: {
46
+ type: Boolean,
47
+ default: false,
48
+ },
45
49
  });
46
50
  const root: any = ref(null);
47
51
  const demo: any = ref(null);
@@ -54,16 +58,16 @@
54
58
  ? {
55
59
  onpull: async () => {
56
60
  emits('onpull', demo.value);
57
- }
61
+ },
58
62
  }
59
63
  : {}),
60
64
  ...(props.pull
61
65
  ? {
62
66
  onload: async () => {
63
67
  emits('onload', demo.value);
64
- }
68
+ },
65
69
  }
66
- : {})
70
+ : {}),
67
71
  });
68
72
 
69
73
  onMounted(() => {
@@ -7,48 +7,48 @@
7
7
  const icons: any = {
8
8
  'arrow-left': {
9
9
  path: [
10
- 'M655.2 844c-12 0-24-4.8-32-13.6L336.8 544c-8.8-8.8-13.6-20-13.6-32s4.8-24 13.6-32l286.4-287.2c8.8-8 20-12.8 32-12.8s24 4.8 32 13.6c8.8 8.8 13.6 20 13.6 32s-4.8 23.2-12.8 32L432.8 512l254.4 254.4c8.8 8.8 13.6 20 13.6 32s-4.8 23.2-13.6 32c-8 8.8-20 13.6-32 13.6z'
11
- ]
10
+ 'M655.2 844c-12 0-24-4.8-32-13.6L336.8 544c-8.8-8.8-13.6-20-13.6-32s4.8-24 13.6-32l286.4-287.2c8.8-8 20-12.8 32-12.8s24 4.8 32 13.6c8.8 8.8 13.6 20 13.6 32s-4.8 23.2-12.8 32L432.8 512l254.4 254.4c8.8 8.8 13.6 20 13.6 32s-4.8 23.2-13.6 32c-8 8.8-20 13.6-32 13.6z',
11
+ ],
12
12
  },
13
13
  'arrow-right': {
14
14
  path: [
15
- 'M368.8 844c-12 0-24-4.8-32-13.6-8.8-8.8-13.6-20-13.6-32s4.8-24 13.6-32L591.2 512 336.8 256.8c-8-8.8-12.8-20-12.8-32s4.8-23.2 13.6-32c8-8 20-13.6 32-13.6s23.2 4.8 32 12.8L688 479.2c8.8 8.8 13.6 20 13.6 32s-4.8 24-13.6 32l-286.4 286.4c-9.6 9.6-20.8 14.4-32.8 14.4z'
16
- ]
15
+ 'M368.8 844c-12 0-24-4.8-32-13.6-8.8-8.8-13.6-20-13.6-32s4.8-24 13.6-32L591.2 512 336.8 256.8c-8-8.8-12.8-20-12.8-32s4.8-23.2 13.6-32c8-8 20-13.6 32-13.6s23.2 4.8 32 12.8L688 479.2c8.8 8.8 13.6 20 13.6 32s-4.8 24-13.6 32l-286.4 286.4c-9.6 9.6-20.8 14.4-32.8 14.4z',
16
+ ],
17
17
  },
18
18
  'double-arrow-left': {
19
19
  path: [
20
20
  'M518.4 836.8c-11.2 0-22.4-4.8-31.2-12.8L205.6 541.6c-8.8-8.8-12.8-20-12.8-32s4.8-23.2 12.8-32l281.6-282.4c8.8-8.8 20-12.8 32-12.8s23.2 4.8 32 12.8c8.8 8.8 12.8 20 12.8 32s-4.8 23.2-12.8 32L300.8 509.6 551.2 760c8 8.8 12.8 20 12.8 32s-4.8 23.2-12.8 31.2-20 13.6-32.8 13.6z',
21
- 'M786.4 840.8c-11.2 0-22.4-4.8-31.2-12.8L473.6 546.4c-8-8-12.8-20-12.8-32s4.8-23.2 12.8-32L755.2 200c8.8-8.8 20-12.8 32-12.8s23.2 4.8 32 12.8c8.8 8.8 12.8 20 12.8 32s-4.8 23.2-12.8 32L568 514.4l250.4 250.4c8 8.8 12.8 20 12.8 32s-4.8 23.2-12.8 31.2c-8.8 8-20 12.8-32 12.8z'
22
- ]
21
+ 'M786.4 840.8c-11.2 0-22.4-4.8-31.2-12.8L473.6 546.4c-8-8-12.8-20-12.8-32s4.8-23.2 12.8-32L755.2 200c8.8-8.8 20-12.8 32-12.8s23.2 4.8 32 12.8c8.8 8.8 12.8 20 12.8 32s-4.8 23.2-12.8 32L568 514.4l250.4 250.4c8 8.8 12.8 20 12.8 32s-4.8 23.2-12.8 31.2c-8.8 8-20 12.8-32 12.8z',
22
+ ],
23
23
  },
24
24
  'double-arrow-right': {
25
25
  path: [
26
26
  'M504.8 836.8c-12 0-23.2-4.8-31.2-12.8s-12.8-19.2-12.8-31.2 4-23.2 12.8-31.2l250.4-250.4-250.4-252c-8.8-8.8-12.8-20-12.8-32s4.8-23.2 12.8-32c8.8-8.8 20-12.8 32-12.8s23.2 4.8 32 12.8l281.6 282.4c8 8 12.8 20 12.8 32s-4.8 23.2-12.8 32L536.8 824c-8.8 8-20 12.8-32 12.8 0.8 0 0 0 0 0z',
27
- 'M237.6 840.8c-12 0-23.2-4.8-31.2-12.8s-12.8-19.2-12.8-31.2 4-23.2 12.8-31.2L456 514.4 205.6 264c-8.8-8.8-12.8-20-12.8-32s4.8-23.2 12.8-32c8.8-8.8 20-12.8 32-12.8s23.2 4.8 32 12.8l281.6 282.4c8.8 8.8 12.8 20 12.8 32s-4.8 23.2-12.8 32l-281.6 282.4c-9.6 8-20 12-32 12z'
28
- ]
27
+ 'M237.6 840.8c-12 0-23.2-4.8-31.2-12.8s-12.8-19.2-12.8-31.2 4-23.2 12.8-31.2L456 514.4 205.6 264c-8.8-8.8-12.8-20-12.8-32s4.8-23.2 12.8-32c8.8-8.8 20-12.8 32-12.8s23.2 4.8 32 12.8l281.6 282.4c8.8 8.8 12.8 20 12.8 32s-4.8 23.2-12.8 32l-281.6 282.4c-9.6 8-20 12-32 12z',
28
+ ],
29
29
  },
30
30
  more: {
31
31
  path: [
32
32
  'M512 512m-116.363636 0a116.363636 116.363636 0 1 0 232.727272 0 116.363636 116.363636 0 1 0-232.727272 0Z',
33
33
  'M116.363636 512m-93.090909 0a93.090909 93.090909 0 1 0 186.181818 0 93.090909 93.090909 0 1 0-186.181818 0Z',
34
- 'M907.636364 512m-93.090909 0a93.090909 93.090909 0 1 0 186.181818 0 93.090909 93.090909 0 1 0-186.181818 0Z'
35
- ]
34
+ 'M907.636364 512m-93.090909 0a93.090909 93.090909 0 1 0 186.181818 0 93.090909 93.090909 0 1 0-186.181818 0Z',
35
+ ],
36
36
  },
37
37
  setting: {
38
38
  path: [
39
- 'M512 998.4c-22.4 0-44.8-3.2-67.2-6.4-35.2-6.4-67.2-32-76.8-64-16-54.4-64-89.6-121.6-89.6-9.6 0-19.2 0-28.8 3.2-6.4 0-12.8 3.2-19.2 3.2-28.8 0-54.4-12.8-73.6-35.2-25.6-35.2-51.2-73.6-67.2-115.2-12.8-35.2-6.4-73.6 19.2-99.2 44.8-48 44.8-121.6 0-172.8-25.6-25.6-32-64-19.2-99.2 19.2-38.4 41.6-76.8 70.4-112 19.2-22.4 44.8-35.2 73.6-35.2 6.4 0 12.8 0 19.2 3.2 9.6 3.2 19.2 3.2 28.8 3.2 54.4 0 102.4-35.2 118.4-89.6 9.6-35.2 41.6-60.8 76.8-64 22.4-3.2 44.8-3.2 67.2-3.2 22.4 0 44.8 0 67.2 3.2 35.2 6.4 67.2 32 76.8 64 9.6 32 28.8 57.6 57.6 70.4 19.2 9.6 41.6 16 64 16 9.6 0 19.2 0 28.8-3.2 6.4 0 12.8-3.2 19.2-3.2 28.8 0 54.4 12.8 73.6 35.2 25.6 35.2 48 76.8 67.2 118.4 12.8 32 6.4 73.6-19.2 99.2-44.8 48-44.8 121.6 0 172.8 25.6 25.6 32 64 19.2 99.2-16 41.6-38.4 80-67.2 115.2-19.2 22.4-44.8 35.2-73.6 35.2-6.4 0-12.8 0-19.2-3.2-9.6-3.2-19.2-3.2-28.8-3.2-54.4 0-102.4 35.2-118.4 89.6-9.6 35.2-41.6 60.8-76.8 64-25.6 3.2-48 3.2-70.4 3.2z m-265.6-236.8c89.6 0 169.6 57.6 198.4 144 3.2 6.4 6.4 9.6 12.8 9.6 19.2 3.2 35.2 3.2 54.4 3.2 12.8 0 25.6 0 38.4-3.2h22.4c6.4-3.2 9.6-6.4 9.6-9.6 16-51.2 48-92.8 92.8-115.2 32-19.2 67.2-25.6 102.4-25.6 16 0 32 3.2 44.8 6.4h3.2c3.2 0 9.6-3.2 12.8-3.2 22.4-28.8 41.6-60.8 57.6-96 3.2-6.4 0-12.8-3.2-16-70.4-80-70.4-198.4 0-275.2 3.2-6.4 3.2-12.8 3.2-19.2-12.8-35.2-32-67.2-57.6-96-6.4-6.4-9.6-9.6-12.8-9.6h-3.2c-16 3.2-28.8 6.4-44.8 6.4-35.2 0-70.4-9.6-102.4-25.6-44.8-25.6-76.8-67.2-92.8-115.2 0-6.4-6.4-9.6-9.6-9.6-19.2-3.2-38.4-3.2-57.6-3.2s-38.4 0-57.6 3.2c-6.4 3.2-9.6 6.4-9.6 9.6-16 51.2-48 92.8-92.8 115.2-32 19.2-67.2 25.6-102.4 25.6-16 0-32-3.2-44.8-6.4h-3.2c-9.6 3.2-12.8 3.2-16 6.4-22.4 28.8-41.6 60.8-57.6 96-3.2 6.4 0 12.8 3.2 16 70.4 80 70.4 198.4 0 275.2-3.2 3.2-3.2 9.6-3.2 16 12.8 35.2 32 67.2 54.4 96 3.2 3.2 9.6 6.4 16 6.4 12.8-3.2 28.8-6.4 44.8-6.4z m256-67.2c-48 0-92.8-19.2-128-54.4S320 560 320 512c0-99.2 83.2-182.4 182.4-182.4 102.4 0 182.4 83.2 182.4 182.4 0 102.4-80 182.4-182.4 182.4z m0-284.8c-57.6 0-102.4 48-102.4 105.6 0 57.6 48 105.6 105.6 105.6 57.6 0 105.6-48 102.4-105.6 0-60.8-48-105.6-105.6-105.6v-3.2 3.2z'
40
- ]
39
+ 'M512 998.4c-22.4 0-44.8-3.2-67.2-6.4-35.2-6.4-67.2-32-76.8-64-16-54.4-64-89.6-121.6-89.6-9.6 0-19.2 0-28.8 3.2-6.4 0-12.8 3.2-19.2 3.2-28.8 0-54.4-12.8-73.6-35.2-25.6-35.2-51.2-73.6-67.2-115.2-12.8-35.2-6.4-73.6 19.2-99.2 44.8-48 44.8-121.6 0-172.8-25.6-25.6-32-64-19.2-99.2 19.2-38.4 41.6-76.8 70.4-112 19.2-22.4 44.8-35.2 73.6-35.2 6.4 0 12.8 0 19.2 3.2 9.6 3.2 19.2 3.2 28.8 3.2 54.4 0 102.4-35.2 118.4-89.6 9.6-35.2 41.6-60.8 76.8-64 22.4-3.2 44.8-3.2 67.2-3.2 22.4 0 44.8 0 67.2 3.2 35.2 6.4 67.2 32 76.8 64 9.6 32 28.8 57.6 57.6 70.4 19.2 9.6 41.6 16 64 16 9.6 0 19.2 0 28.8-3.2 6.4 0 12.8-3.2 19.2-3.2 28.8 0 54.4 12.8 73.6 35.2 25.6 35.2 48 76.8 67.2 118.4 12.8 32 6.4 73.6-19.2 99.2-44.8 48-44.8 121.6 0 172.8 25.6 25.6 32 64 19.2 99.2-16 41.6-38.4 80-67.2 115.2-19.2 22.4-44.8 35.2-73.6 35.2-6.4 0-12.8 0-19.2-3.2-9.6-3.2-19.2-3.2-28.8-3.2-54.4 0-102.4 35.2-118.4 89.6-9.6 35.2-41.6 60.8-76.8 64-25.6 3.2-48 3.2-70.4 3.2z m-265.6-236.8c89.6 0 169.6 57.6 198.4 144 3.2 6.4 6.4 9.6 12.8 9.6 19.2 3.2 35.2 3.2 54.4 3.2 12.8 0 25.6 0 38.4-3.2h22.4c6.4-3.2 9.6-6.4 9.6-9.6 16-51.2 48-92.8 92.8-115.2 32-19.2 67.2-25.6 102.4-25.6 16 0 32 3.2 44.8 6.4h3.2c3.2 0 9.6-3.2 12.8-3.2 22.4-28.8 41.6-60.8 57.6-96 3.2-6.4 0-12.8-3.2-16-70.4-80-70.4-198.4 0-275.2 3.2-6.4 3.2-12.8 3.2-19.2-12.8-35.2-32-67.2-57.6-96-6.4-6.4-9.6-9.6-12.8-9.6h-3.2c-16 3.2-28.8 6.4-44.8 6.4-35.2 0-70.4-9.6-102.4-25.6-44.8-25.6-76.8-67.2-92.8-115.2 0-6.4-6.4-9.6-9.6-9.6-19.2-3.2-38.4-3.2-57.6-3.2s-38.4 0-57.6 3.2c-6.4 3.2-9.6 6.4-9.6 9.6-16 51.2-48 92.8-92.8 115.2-32 19.2-67.2 25.6-102.4 25.6-16 0-32-3.2-44.8-6.4h-3.2c-9.6 3.2-12.8 3.2-16 6.4-22.4 28.8-41.6 60.8-57.6 96-3.2 6.4 0 12.8 3.2 16 70.4 80 70.4 198.4 0 275.2-3.2 3.2-3.2 9.6-3.2 16 12.8 35.2 32 67.2 54.4 96 3.2 3.2 9.6 6.4 16 6.4 12.8-3.2 28.8-6.4 44.8-6.4z m256-67.2c-48 0-92.8-19.2-128-54.4S320 560 320 512c0-99.2 83.2-182.4 182.4-182.4 102.4 0 182.4 83.2 182.4 182.4 0 102.4-80 182.4-182.4 182.4z m0-284.8c-57.6 0-102.4 48-102.4 105.6 0 57.6 48 105.6 105.6 105.6 57.6 0 105.6-48 102.4-105.6 0-60.8-48-105.6-105.6-105.6v-3.2 3.2z',
40
+ ],
41
41
  },
42
42
  'tableloader-setting': {
43
43
  path: [
44
- 'M372 981.6c-80 0-154.4-43.2-195.2-112L35.2 624.8c-40-68.8-40-155.2 0-224.8l141.6-244.8c40-69.6 115.2-112 195.2-112h282.4c80 0 154.4 43.2 195.2 112L991.2 400c40 68.8 40 155.2 0 224.8l-141.6 244.8c-40 69.6-115.2 112-195.2 112H372z m0-825.6c-39.2 0-76.8 21.6-96.8 56L134.4 456c-20 34.4-20 76.8 0 112l140.8 244.8c20 34.4 56.8 55.2 96.8 55.2h282.4c39.2 0 76.8-21.6 96.8-56l140.8-244.8c20-34.4 20-76.8 0-112L751.2 211.2c-20-34.4-56.8-55.2-96.8-55.2H372z m140.8 552.8c-108.8 0-196.8-88-196.8-196.8 0-108.8 88-196.8 196.8-196.8 108.8 0 196.8 88 196.8 196.8 0.8 108.8-88 196.8-196.8 196.8z m0-280c-45.6 0-83.2 37.6-83.2 83.2s37.6 83.2 83.2 83.2c22.4 0 43.2-8.8 59.2-24 16-16 24-36.8 24-59.2 0-45.6-37.6-83.2-83.2-83.2z'
45
- ]
46
- }
44
+ 'M372 981.6c-80 0-154.4-43.2-195.2-112L35.2 624.8c-40-68.8-40-155.2 0-224.8l141.6-244.8c40-69.6 115.2-112 195.2-112h282.4c80 0 154.4 43.2 195.2 112L991.2 400c40 68.8 40 155.2 0 224.8l-141.6 244.8c-40 69.6-115.2 112-195.2 112H372z m0-825.6c-39.2 0-76.8 21.6-96.8 56L134.4 456c-20 34.4-20 76.8 0 112l140.8 244.8c20 34.4 56.8 55.2 96.8 55.2h282.4c39.2 0 76.8-21.6 96.8-56l140.8-244.8c20-34.4 20-76.8 0-112L751.2 211.2c-20-34.4-56.8-55.2-96.8-55.2H372z m140.8 552.8c-108.8 0-196.8-88-196.8-196.8 0-108.8 88-196.8 196.8-196.8 108.8 0 196.8 88 196.8 196.8 0.8 108.8-88 196.8-196.8 196.8z m0-280c-45.6 0-83.2 37.6-83.2 83.2s37.6 83.2 83.2 83.2c22.4 0 43.2-8.8 59.2-24 16-16 24-36.8 24-59.2 0-45.6-37.6-83.2-83.2-83.2z',
45
+ ],
46
+ },
47
47
  };
48
48
  const props: any = defineProps({
49
49
  name: {
50
50
  type: String,
51
- default: ''
52
- }
51
+ default: '',
52
+ },
53
53
  });
54
54
  </script>
@@ -29,35 +29,35 @@
29
29
  const props: any = defineProps({
30
30
  zIndex: {
31
31
  type: [String, Number],
32
- default: ''
32
+ default: '',
33
33
  },
34
34
  area: {
35
35
  type: String,
36
- default: '#fekit'
36
+ default: '#fekit',
37
37
  },
38
38
  id: {
39
- type: String
39
+ type: String,
40
40
  },
41
41
  am: {
42
42
  type: String as PropType<'aa' | 'ab' | 'ac' | 'ad' | 'ae' | 'af' | 'ag' | 'ah' | 'ai' | 'aj' | 'ak' | 'al' | 'am' | 'an' | 'ao' | 'ap' | 'aq' | 'ar' | 'as' | 'at'>,
43
- default: 'as'
43
+ default: 'as',
44
44
  },
45
45
  flex: {
46
46
  type: String as PropType<'lt' | 'ct' | 'rt' | 'lm' | 'cm' | 'rm' | 'lb' | 'cb' | 'rb'>,
47
- default: 'cm'
47
+ default: 'cm',
48
48
  },
49
49
  dark: {
50
50
  type: [String, Number],
51
- default: ''
51
+ default: '',
52
52
  },
53
53
  darkClickClose: {
54
54
  type: Boolean,
55
- default: true
55
+ default: true,
56
56
  },
57
57
  wrapStyle: {
58
58
  type: String,
59
- default: ''
60
- }
59
+ default: '',
60
+ },
61
61
  });
62
62
 
63
63
  const _area: any = document.querySelector(props.area);
@@ -72,7 +72,7 @@
72
72
  const state = reactive({
73
73
  view: 0,
74
74
  params: {},
75
- top: 0
75
+ top: 0,
76
76
  });
77
77
 
78
78
  function disableScroll() {
@@ -101,7 +101,7 @@
101
101
  enableScroll();
102
102
  }
103
103
  },
104
- { deep: true, immediate: true }
104
+ { deep: true, immediate: true },
105
105
  );
106
106
 
107
107
  // 回调合集
@@ -109,7 +109,7 @@
109
109
  show: [],
110
110
  hide: [],
111
111
  open: [],
112
- none: []
112
+ none: [],
113
113
  };
114
114
 
115
115
  // 注入参数
@@ -167,7 +167,6 @@
167
167
  if (state.view === 1) {
168
168
  state.view = 0;
169
169
  on.hide.forEach((fun: any) => {
170
- // isFunction(fun) && fun();
171
170
  if (isFunction(fun)) {
172
171
  fun();
173
172
  }
@@ -176,7 +175,6 @@
176
175
  if (state.view === 2) {
177
176
  state.view = 3;
178
177
  on.show.forEach((fun: any) => {
179
- // isFunction(fun) && fun();
180
178
  if (isFunction(fun)) {
181
179
  fun();
182
180
  }
@@ -200,11 +198,6 @@
200
198
  delete _tasks[id];
201
199
  });
202
200
  </script>
203
- <!-- <script lang="ts">
204
- export const LayerById = (id: any) => {
205
- return (window as any)._FEKIT_LAYER_TASKS[id];
206
- };
207
- </script> -->
208
201
 
209
202
  <style lang="scss">
210
203
  // 弹层
@@ -234,106 +227,40 @@
234
227
  }
235
228
 
236
229
  &-close {
230
+ cursor: pointer;
237
231
  position: absolute;
238
- width: 1.5em;
239
- height: 1.5em;
240
- left: 50%;
241
- bottom: -2.5rem;
242
- margin-left: -1rem;
232
+ width: 2em;
233
+ height: 2em;
234
+
235
+ color: var(--co-read);
236
+ bottom: auto;
237
+ top: 0.5em;
238
+ right: 0.5em;
239
+ left: auto;
240
+ box-shadow: none;
241
+
243
242
  padding: 0.25em;
243
+ margin-left: -1rem;
244
244
  text-align: center;
245
- transform: scale(1) translate3d(0, -100%, 0);
245
+ transform: scale(0.8);
246
246
  transition: all 0.2s;
247
- color: #fff;
248
- box-shadow: 0 0 0 2px currentColor;
249
247
  border-radius: 50%;
250
- opacity: 0;
251
248
  background:
252
- linear-gradient(45deg, transparent 44%, currentColor 45%, currentColor 56%, transparent 57%) no-repeat center / 50% 50%,
253
- linear-gradient(-45deg, transparent 44%, currentColor 45%, currentColor 56%, transparent 57%) no-repeat center / 50% 50%;
249
+ linear-gradient(45deg, transparent 44%, currentColor 45%, currentColor 55%, transparent 56%) no-repeat center / 50% 50%,
250
+ linear-gradient(-45deg, transparent 44%, currentColor 45%, currentColor 55%, transparent 56%) no-repeat center / 50% 50%;
254
251
 
255
252
  &:active {
256
253
  transform: scale(0.9);
257
254
  }
258
255
  }
259
256
 
260
- &[view='3'] {
261
- .fekit-layer-close {
262
- opacity: 0.85;
263
- transform: translate3d(0, 0, 0);
257
+ .fekit-layer-close {
258
+ &:hover {
259
+ transform: scale(0.8) rotate(90deg);
260
+ }
261
+ &:active {
262
+ transform: scale(0.7) rotate(90deg);
264
263
  }
265
264
  }
266
-
267
- // &-close {
268
- // position: absolute;
269
- // width: 2rem;
270
- // height: 2rem;
271
- // line-height: 2rem;
272
- // right: 0.5rem;
273
- // top: 0.5rem;
274
- // text-align: center;
275
- // transform: rotate(0deg);
276
- // transition: all 0.2s;
277
-
278
- // &:hover {
279
- // transform: rotate(-90deg);
280
- // }
281
- // }
282
-
283
- // &-close {
284
- // position: absolute;
285
- // width: 18px;
286
- // height: 18px;
287
- // right: 0.5em;
288
- // top: 0.5em;
289
- // padding: 0.25em;
290
- // text-align: center;
291
- // transition: all 0.2s;
292
- // // box-shadow: 0 0 0 1px currentColor;
293
- // border-radius: 50%;
294
- // background: linear-gradient(45deg, transparent 44%, currentColor 46%, currentColor 54%, transparent 56%) no-repeat center / 50% 50%,
295
- // linear-gradient(-45deg, transparent 44%, currentColor 46%, currentColor 54%, transparent 56%) no-repeat center / 50% 50%;
296
- // transform: scale(1) rotate(0deg);
297
- // opacity: 0.8;
298
- // transition: all 0.25s;
299
-
300
- // &:hover {
301
- // transform: scale(1) rotate(-90deg);
302
- // }
303
-
304
- // &:active {
305
- // transform: scale(0.8) rotate(-90deg);
306
- // }
307
-
308
- // &::before {
309
- // position: absolute;
310
- // content: '';
311
- // width: 200%;
312
- // height: 200%;
313
- // left: -50%;
314
- // top: -50%;
315
- // }
316
- // }
317
265
  }
318
-
319
- // html {
320
- // &[size='xs'] {
321
- // .fekit-layer-close {
322
- // width: 16px;
323
- // height: 16px;
324
- // }
325
- // }
326
- // &[size='l'] {
327
- // .fekit-layer-close {
328
- // width: 20px;
329
- // height: 20px;
330
- // }
331
- // }
332
- // &[size='xl'] {
333
- // .fekit-layer-close {
334
- // width: 22px;
335
- // height: 22px;
336
- // }
337
- // }
338
- // }
339
266
  </style>
@@ -0,0 +1,133 @@
1
+ import ResizeObserver from 'resize-observer-polyfill';
2
+ import raf from 'raf';
3
+
4
+ class Follow {
5
+ box: any[];
6
+ dom: any;
7
+ tip: any;
8
+ ing: any;
9
+ sub: any;
10
+ obs: any;
11
+ fun: (status: any) => void;
12
+ private css: () => void;
13
+ z: number;
14
+ constructor(dom: any, tip: any, fun = (_status: any) => {}) {
15
+ this.dom = dom;
16
+ this.tip = tip;
17
+ this.box = [];
18
+ this.css = this.setcss.bind(this);
19
+ this.fun = fun;
20
+ this.sub = this.tip.firstElementChild;
21
+ this.z = 0;
22
+ }
23
+ setcss() {
24
+ if (!this.ing) {
25
+ raf(() => {
26
+ this.ing = false;
27
+ const dr = this.dom?.getBoundingClientRect() || { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };
28
+ const sr = this.sub?.getBoundingClientRect() || { height: 0 };
29
+ this.tip.style.inset = `${dr.top}px auto auto ${dr.left}px`;
30
+ this.tip.style.width = dr.width + 'px';
31
+ this.tip.style.height = dr.height + 'px';
32
+ this.fun('');
33
+ this.box.forEach((e: any) => {
34
+ const _ar = { top: 0, bottom: window.innerHeight, left: 0, right: window.innerWidth };
35
+ const ar = e === window ? _ar : e?.getBoundingClientRect() || _ar;
36
+ if (dr.bottom < ar.top || dr.top > ar.bottom || dr.right < ar.left || dr.left > ar.right) {
37
+ this.tip.style.opacity = '0';
38
+ this.sub.style.pointerEvents = 'none';
39
+ } else {
40
+ this.tip.style.opacity = '';
41
+ this.sub.style.pointerEvents = '';
42
+ }
43
+ if (dr.bottom + sr.height + 10 > ar.bottom) {
44
+ this.fun('b');
45
+ }
46
+ });
47
+ const tr = this.tip?.getBoundingClientRect() || { left: 0 };
48
+ const x = this.sub.offsetLeft + tr.left;
49
+ const arrow = this.sub.querySelector('[ui-tips-arrow]');
50
+ if (x < 0) {
51
+ this.sub.style.transform = `translate3d(${-x}px,0,0)`;
52
+ if (arrow && arrow.style) {
53
+ arrow.style.transform = `translateX(${x}px) rotate(45deg)`;
54
+ }
55
+ } else {
56
+ this.sub.style.transform = '';
57
+ if (arrow && arrow.style) {
58
+ arrow.style.transform = '';
59
+ }
60
+ }
61
+ });
62
+ this.ing = true;
63
+ }
64
+ }
65
+ listen() {
66
+ // 向上查询有滚动条的元素
67
+ const _find = (e: any) => {
68
+ // 判断是否为DOM节点
69
+ if (e) {
70
+ if (e.nodeType === 1) {
71
+ const css: any = window.getComputedStyle(e);
72
+ // 查询所有父组节点的最高层级
73
+ if (!isNaN(css.zIndex) && css.zIndex >= this.z) {
74
+ this.z = Number(css.zIndex) + 10;
75
+ } else {
76
+ this.z += 1;
77
+ }
78
+ // 节点是否有滚动条
79
+ if (
80
+ (css.overflowY === 'auto' || css.overflowY === 'scroll' || css.overflowX === 'auto' || css.overflowX === 'scroll') &&
81
+ (e.scrollHeight > e.clientHeight || e.scrollWidth > e.clientWidth)
82
+ ) {
83
+ this.box.push(e);
84
+ }
85
+ _find(e.parentNode);
86
+ } else if (e.nodeType === 9) {
87
+ console.log(42, e, e.nodeType);
88
+ this.box.push(window);
89
+ }
90
+ }
91
+ };
92
+ _find(this.dom);
93
+
94
+ // 自动层级
95
+ if (window.getComputedStyle(this.tip).zIndex) {
96
+ this.tip.style.zIndex = `${this.z}`;
97
+ }
98
+
99
+ this.css();
100
+ // 监听窗口尺寸变化
101
+ window.addEventListener('resize', this.css);
102
+ window.addEventListener('click', this.css);
103
+ // 监听滚动条的元素
104
+ this.box.forEach((e: any) => {
105
+ e.addEventListener('scroll', this.css);
106
+ });
107
+ // 监听移入事件
108
+ this.dom?.addEventListener('mouseenter', this.css);
109
+ // 监听参考元素变化
110
+ this.obs = new ResizeObserver(this.css);
111
+ if (this.dom) {
112
+ this.obs?.observe(this.dom);
113
+ }
114
+ if (this.sub) {
115
+ this.obs?.observe(this.sub);
116
+ }
117
+ }
118
+ remove() {
119
+ // console.log('移除监听');
120
+ // 清除窗口尺寸变化事件监听器
121
+ window.removeEventListener('resize', this.css);
122
+ window.removeEventListener('click', this.css);
123
+ // 清除滚动条元素的事件监听器
124
+ this.box.forEach((e: any) => {
125
+ e.removeEventListener('scroll', this.css);
126
+ });
127
+ // 清除鼠标移入事件监听器
128
+ this.dom?.removeEventListener('mouseenter', this.css);
129
+ // 清除监听参考元素变化
130
+ this.obs?.disconnect();
131
+ }
132
+ }
133
+ export default Follow;