@neatui/nuxt 0.1.0 → 1.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 (84) hide show
  1. package/BUILD.md +128 -0
  2. package/README.md +98 -1
  3. package/SSR_COMPATIBILITY.md +201 -0
  4. package/USAGE.md +260 -0
  5. package/nuxt.config.example.ts +37 -0
  6. package/package.json +29 -11
  7. package/src/components/basic/IDraggable.vue +87 -65
  8. package/src/components/basic/IFollowView.vue +32 -23
  9. package/src/components/basic/IRouterView.vue +38 -23
  10. package/src/components/basic/IScrollView.vue +11 -7
  11. package/src/components/basic/Icon.vue +17 -17
  12. package/src/components/basic/LayerView/Layer.vue +33 -106
  13. package/src/components/basic/follow.ts +133 -0
  14. package/src/components/display/Calendar.vue +14 -14
  15. package/src/components/display/CalendarReg.vue +14 -14
  16. package/src/components/display/Image.vue +8 -8
  17. package/src/components/display/PhotoEditor.vue +36 -36
  18. package/src/components/display/PhotoViewer.vue +8 -8
  19. package/src/components/display/Tree.vue +6 -6
  20. package/src/components/display/TreeView.vue +4 -4
  21. package/src/components/display/index.ts +2 -2
  22. package/src/components/form/Cascader.vue +19 -19
  23. package/src/components/form/Checkbox.vue +64 -0
  24. package/src/components/form/DatePicker.vue +6 -7
  25. package/src/components/form/DateRangePicker@v3.vue +4 -4
  26. package/src/components/form/DateRangeView@v3.vue +18 -19
  27. package/src/components/form/DateView.vue +14 -14
  28. package/src/components/form/DateView@v2.vue +14 -14
  29. package/src/components/form/DateView@v3.vue +331 -318
  30. package/src/components/form/ImgUpload.vue +7 -7
  31. package/src/components/form/Input@v3.vue +11 -11
  32. package/src/components/form/MoreSelect@v3.vue +87 -17
  33. package/src/components/form/MoreSelectList.vue +8 -8
  34. package/src/components/form/MoreSelectPanel@v3.vue +3 -3
  35. package/src/components/form/MoreSelectPicker.vue +7 -7
  36. package/src/components/form/MoreSelectTags.vue +8 -8
  37. package/src/components/form/PageMoreSelect.vue +14 -14
  38. package/src/components/form/PageSelect.vue +16 -16
  39. package/src/components/form/SearchMoreSelect.vue +12 -12
  40. package/src/components/form/SearchSelect@v3.vue +3 -3
  41. package/src/components/form/Select@v3.vue +229 -23
  42. package/src/components/form/SelectList.vue +8 -8
  43. package/src/components/form/SelectPicker.vue +6 -6
  44. package/src/components/form/SelectTags.vue +7 -7
  45. package/src/components/form/SelectTree/SelectTree@v1.vue +5 -5
  46. package/src/components/form/Switch.vue +38 -103
  47. package/src/components/form/TextArea.vue +18 -18
  48. package/src/components/form/Textarea@v2.vue +275 -0
  49. package/src/components/form/TimeView.vue +14 -14
  50. package/src/components/form/Upload.vue +806 -297
  51. package/src/components/form/date.ts +321 -0
  52. package/src/components/form/index.ts +7 -5
  53. package/src/components/form/number.ts +3 -0
  54. package/src/components/form/type.ts +224 -0
  55. package/src/components/icon/OrderIcon.vue +113 -0
  56. package/src/components/loader/FormLoader/FormLoader@v2.vue +193 -195
  57. package/src/components/loader/FormLoader/FormLoader@v3.vue.backup +372 -291
  58. package/src/components/loader/FormLoader/FormRender@v3.vue.backup +4 -0
  59. package/src/components/loader/FormLoader/NodeLoader.vue +85 -0
  60. package/src/components/loader/FormLoader@v1/FormLoader.vue +1 -1
  61. package/src/components/loader/FormLoader@v1/FormRender.vue +49 -24
  62. package/src/components/loader/LayerLoader/LayerLoader.vue +318 -0
  63. package/src/components/loader/LayerLoader/index.ts +2 -0
  64. package/src/components/loader/LayerLoader/style.scss +77 -0
  65. package/src/components/loader/LimitLoader/LimitLoader@v3.vue +39 -28
  66. package/src/components/loader/MoveLoader/MoveLoader.vue +628 -0
  67. package/src/components/loader/MoveLoader/index.ts +2 -0
  68. package/src/components/loader/MoveLoader/style.scss +77 -0
  69. package/src/components/loader/TableLoader/TableLoader.vue +227 -195
  70. package/src/components/loader/TableLoader/TableRender.vue +141 -0
  71. package/src/components/loader/TableLoader/index.ts +47 -0
  72. package/src/components/loader/index.ts +3 -2
  73. package/src/components/tools/Pagination@a.vue +17 -18
  74. package/src/components/tools/Pagination@b.vue +16 -16
  75. package/src/index.ts +2 -1
  76. package/src/module.ts +169 -0
  77. package/src/runtime/types.d.ts +36 -0
  78. package/src/store/{myui.ts → frame.ts} +4 -4
  79. package/src/utils/theme.ts +14 -0
  80. package/tsconfig.json +1 -1
  81. package/src/components/loader/FormLoader/index.ts +0 -2
  82. package/src/components/loader/LimitLoader/LimitLoader.vue.backup +0 -131
  83. package/src/components/loader/LimitLoader/LimitLoader@v2.vue.backup +0 -174
  84. package/src/components/loader/TableLoader/TableColView.vue +0 -115
package/package.json CHANGED
@@ -1,33 +1,51 @@
1
1
  {
2
2
  "name": "@neatui/nuxt",
3
- "version": "0.1.0",
4
- "description": "basic component ui",
5
- "main": "./src/index.ts",
3
+ "version": "1.0.0",
4
+ "description": "NeatUI component library for Nuxt 3",
5
+ "main": "./src/module.ts",
6
+ "types": "./src/module.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./src/module.ts",
10
+ "import": "./src/module.ts",
11
+ "require": "./src/module.ts"
12
+ }
13
+ },
6
14
  "license": "MIT",
7
15
  "author": "xiaojunbo",
16
+ "keywords": ["nuxt", "nuxt-module", "vue", "ui", "components"],
8
17
  "peerDependencies": {
18
+ "@nuxt/kit": "^3.0.0",
19
+ "nuxt": "^3.0.0",
9
20
  "vue": "^3.2.0"
10
21
  },
11
22
  "scripts": {
12
- "build": "rollup -c rollup.config.js"
23
+ "dev": "nuxi dev playground",
24
+ "dev:prepare": "nuxi prepare playground",
25
+ "release": "npm publish",
26
+ "lint": "echo 'No lint configured'",
27
+ "test": "echo 'No tests configured'"
13
28
  },
14
29
  "devDependencies": {
30
+ "@nuxt/kit": "^3.0.0",
31
+ "@nuxt/schema": "^3.0.0",
15
32
  "@rollup/plugin-typescript": "^11.1.6",
33
+ "@types/sortablejs": "^1.15.8",
34
+ "nuxt": "^3.0.0",
16
35
  "postcss-scss": "^4.0.9",
17
36
  "rollup-plugin-scss": "^4.0.0",
18
37
  "rollup-plugin-terser": "^7.0.2",
19
38
  "typescript": "^5.1.6"
20
39
  },
21
40
  "dependencies": {
22
- "@fekit/floor": "^2.2.2",
23
- "@fekit/follow": "^1.0.10",
41
+ "@fekit/floor": "^3.0.1",
42
+ "@fekit/follow": "^1.7.0",
24
43
  "@fekit/itable": "^1.1.6",
25
44
  "@fekit/pullload": "^1.3.5",
26
45
  "@fekit/scale": "^2.0.1",
27
46
  "@fekit/scrollto": "^3.0.3",
28
- "@fekit/toast": "^2.2.3",
29
- "@fekit/url": "^2.0.1",
30
- "@fekit/utils": "^2.10.21",
47
+ "@fekit/toast": "^2.7.2",
48
+ "@fekit/utils": "^4.3.1",
31
49
  "@rollup/plugin-commonjs": "^26.0.1",
32
50
  "@rollup/plugin-node-resolve": "^15.2.3",
33
51
  "@vue/compiler-sfc": "^3.4.30",
@@ -36,8 +54,8 @@
36
54
  "rollup": "^4.18.0",
37
55
  "rollup-plugin-postcss": "^4.0.2",
38
56
  "rollup-plugin-vue": "^6.0.0",
57
+ "sortablejs": "^1.15.6",
39
58
  "swiper": "^11.0.4",
40
- "vue-cropper": "^0.6.4",
41
- "vuedraggable": "^4.1.0"
59
+ "vue-cropper": "^0.6.4"
42
60
  }
43
61
  }
@@ -1,84 +1,106 @@
1
1
  <template>
2
- <ul>
3
- <li
4
- v-for="(item, idx) in list || []"
5
- :key="idx"
6
- class="pr drag-page-move n-sm"
7
- draggable="true"
8
- @dragstart.self="fMoveSta($event, list, idx)"
9
- @dragend.self="fMoveEnd($event, list, idx)"
10
- @dragenter.self="fMoveInt($event, list, idx)"
11
- @dragover.prevent="fMoveIng($event)"
12
- @dragleave="fMoveOut($event)"
13
- >
2
+ <ul ref="listRef" class="drag-list">
3
+ <li v-for="(item, idx) in props.lists" :key="item.id ?? item.field ?? idx" class="pr drag-page-move">
14
4
  <slot :item="item" :idx="idx">{{ item.label }}</slot>
15
5
  </li>
16
6
  </ul>
17
7
  </template>
18
8
 
19
9
  <script setup lang="ts">
20
- import { reactive, PropType } from 'vue';
10
+ import { ref, PropType, onMounted, onBeforeUnmount, nextTick, watch } from 'vue';
11
+ import Sortable, { SortableEvent } from 'sortablejs';
12
+
21
13
  const props = defineProps({
22
- list: {
14
+ lists: {
23
15
  type: Array as PropType<any[]>,
24
- default: () => []
25
- }
16
+ default: () => [],
17
+ },
26
18
  });
27
- const state: any = reactive({});
19
+ const emit = defineEmits(['update:lists']);
28
20
 
29
- // 按下
30
- const fMoveSta = (e: any, arr: any, idx: any) => {
31
- state.__page_moveing = 1;
32
- state.__page_moveStaNode = { e, arr, idx };
33
- };
34
- // 移动
35
- const fMoveIng = (e: any) => {
36
- if (state.__page_moveing) {
37
- const _h = e?.target?.getBoundingClientRect()?.height || 0;
38
- const _v = _h / 2 > 0 ? _h / 2 : 0;
39
- state.__page_moveEndNodeIsNext = e?.layerY > _v ? 1 : 0;
40
- console.log(40, e, _v, e?.layerY > _v ? 'next' : 'prev');
41
- e?.target?.setAttribute('data-ins', e?.layerY > _v ? 'next' : 'prev');
42
- }
43
- };
44
- // 移入
45
- const fMoveInt = (e: any, arr: any, idx: any, page: any = '') => {
46
- if (state.__page_moveing) {
47
- state.__page_moveEndNode = { e, arr, idx, page };
48
- }
49
- };
50
- // 移出
51
- const fMoveOut = (e: any) => {
52
- if (state.__page_moveing) {
53
- e?.target?.removeAttribute('data-ins');
54
- }
55
- };
56
- // 松开
57
- const fMoveEnd = (_e: any, arr: any, i2: any) => {
58
- if (state.__page_moveing) {
59
- if (state.__page_moveEndNode) {
60
- const [item] = arr.splice(i2, 1);
61
- let idx = state.__page_moveEndNode?.idx || 0;
62
- if (state.__page_moveEndNodeIsNext && i2 >= idx) {
63
- idx = idx + 1;
64
- }
65
- if (!state.__page_moveEndNodeIsNext && i2 < idx) {
66
- idx = idx - 1;
67
- }
68
- state.__page_moveEndNode?.arr?.splice(idx, 0, item);
69
- fMoveOut(state.__page_moveEndNode?.e);
21
+ const listRef = ref<HTMLElement | null>(null);
22
+ let sortable: Sortable | null = null;
23
+
24
+ // 添加调试日志
25
+ watch(
26
+ () => props.lists,
27
+ (newVal, oldVal) => {
28
+ // console.log('IDraggable props.lists changed:', {
29
+ // newLength: newVal?.length,
30
+ // oldLength: oldVal?.length,
31
+ // newVal: newVal?.map((item) => item.label || item.field),
32
+ // oldVal: oldVal?.map((item) => item.label || item.field)
33
+ // });
34
+ },
35
+ { deep: true },
36
+ );
37
+
38
+ onMounted(() => {
39
+ nextTick(() => {
40
+ if (listRef.value) {
41
+ sortable = Sortable.create(listRef.value, {
42
+ animation: 200,
43
+ ghostClass: 'drag-ghost',
44
+ chosenClass: 'drag-chosen',
45
+ dragClass: 'drag-dragging',
46
+ onEnd(evt: SortableEvent) {
47
+ console.log('Sortable onEnd:', { oldIndex: evt.oldIndex, newIndex: evt.newIndex });
48
+
49
+ if (evt.oldIndex !== undefined && evt.newIndex !== undefined && evt.oldIndex !== evt.newIndex) {
50
+ // 创建新的数组顺序
51
+ const newList = [...props.lists];
52
+ const moved = newList.splice(evt.oldIndex, 1)[0];
53
+ newList.splice(evt.newIndex, 0, moved);
54
+
55
+ console.log(
56
+ 'Emitting new list:',
57
+ newList.map((item) => item.label || item.field),
58
+ );
59
+
60
+ // 通知父组件更新数据
61
+ emit('update:lists', newList);
62
+ }
63
+ },
64
+ });
70
65
  }
71
- state.__page_moveing = 0;
66
+ });
67
+ });
68
+
69
+ onBeforeUnmount(() => {
70
+ if (sortable) {
71
+ sortable.destroy();
72
+ sortable = null;
72
73
  }
73
- };
74
+ });
74
75
  </script>
76
+
75
77
  <style lang="scss">
78
+ .drag-list {
79
+ list-style: none;
80
+ padding: 0;
81
+ margin: 0;
82
+ }
76
83
  .drag-page-move {
77
- &[data-ins='prev'] {
78
- box-shadow: inset 0 1px 0 0 #000;
79
- }
80
- &[data-ins='next'] {
81
- box-shadow: inset 0 -1px 0 0 #000;
84
+ cursor: move;
85
+ transition: background-color 0.2s ease;
86
+
87
+ &:hover {
88
+ background: rgba(0, 0, 0, 0.02);
82
89
  }
83
90
  }
91
+ .drag-ghost {
92
+ opacity: 0.4;
93
+ background: rgba(0, 0, 0, 0.05);
94
+ border: 2px dashed #ddd;
95
+ }
96
+ .drag-chosen {
97
+ background: rgba(24, 144, 255, 0.08);
98
+ }
99
+ .drag-dragging {
100
+ opacity: 0.8;
101
+ background: #fff;
102
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
103
+ border-radius: 4px;
104
+ z-index: 1000;
105
+ }
84
106
  </style>
@@ -3,23 +3,24 @@
3
3
  <slot>
4
4
  <button ui-btn="@a s case :border"><i class="icon icon-dropdown"></i></button>
5
5
  </slot>
6
- </div>
7
- <Teleport to="#ifollow" v-if="$slots.tips">
8
- <div
9
- ref="tip"
10
- :class="tipClass"
11
- :style="`position: fixed; pointer-events: none; ${tipStyle}`"
12
- ui-tips="@a"
13
- :ui-tips-view="state.show ? 1 : 0"
14
- @mouseover="hovershow"
15
- @mouseout="hoverhide"
16
- >
17
- <div ref="box" :ui-tips-box="state.pos" :class="tipBoxClass" :style="tipBoxStyle" @mousedown="downdom">
18
- <slot name="tips"></slot>
19
- <div v-if="arrow" ui-tips-arrow="" v-bind="arrow"></div>
6
+ <Teleport to="#ifollow" v-if="$slots.tips">
7
+ <div
8
+ ref="tip"
9
+ :class="tipClass"
10
+ :style="`position: fixed; pointer-events: none; ${tipStyle}`"
11
+ ui-tips="@a"
12
+ :ui-tips-view="state.show ? 1 : 0"
13
+ @mouseover="hovershow"
14
+ @mouseout="hoverhide"
15
+ @click="clickhide"
16
+ >
17
+ <div ref="box" :ui-tips-box="state.pos" :class="tipBoxClass" :style="tipBoxStyle" @mousedown="downdom">
18
+ <slot name="tips"></slot>
19
+ <div v-if="arrow" ui-tips-arrow="" v-bind="arrow"></div>
20
+ </div>
20
21
  </div>
21
- </div>
22
- </Teleport>
22
+ </Teleport>
23
+ </div>
23
24
  </template>
24
25
  <script setup lang="ts">
25
26
  import { reactive, ref, onMounted, onUnmounted, watch } from 'vue';
@@ -46,6 +47,7 @@
46
47
  tipBoxClass?: string;
47
48
  tipBoxStyle?: string;
48
49
  arrow?: any;
50
+ clickTipHide?: boolean;
49
51
  }
50
52
 
51
53
  // 入参
@@ -54,12 +56,13 @@
54
56
  pos: 'bl',
55
57
  event: 'click',
56
58
  btnClass: 'dib',
57
- btnStyle: 'dib',
59
+ btnStyle: '',
58
60
  tipClass: '',
59
61
  tipStyle: '',
60
62
  tipBoxClass: '',
61
63
  tipBoxStyle: '',
62
- arrow: {}
64
+ arrow: {},
65
+ clickTipHide: false,
63
66
  });
64
67
 
65
68
  const dom: any = ref(null);
@@ -70,7 +73,7 @@
70
73
  show: 0,
71
74
  pos: props.pos,
72
75
  hover: 0,
73
- tipdom: false
76
+ tipdom: false,
74
77
  });
75
78
 
76
79
  const showTimer: any = ref(null);
@@ -89,7 +92,7 @@
89
92
  state.show = 0;
90
93
  }, 100);
91
94
  }
92
- }
95
+ },
93
96
  );
94
97
 
95
98
  // 开关
@@ -109,7 +112,7 @@
109
112
  }
110
113
  emits('update:modelValue', state.show);
111
114
  },
112
- { deep: true }
115
+ { deep: true },
113
116
  );
114
117
 
115
118
  const hovershow = () => {
@@ -124,6 +127,12 @@
124
127
  }
125
128
  };
126
129
 
130
+ const clickhide = () => {
131
+ if (props.clickTipHide) {
132
+ state.show = 0;
133
+ }
134
+ };
135
+
127
136
  const show = () => {
128
137
  state.show = 1;
129
138
  };
@@ -199,13 +208,13 @@
199
208
  ex.value.remove();
200
209
  }
201
210
  }
202
- }
211
+ },
203
212
  );
204
213
 
205
214
  defineExpose({
206
215
  toggle,
207
216
  show,
208
217
  hide,
209
- cancel
218
+ cancel,
210
219
  });
211
220
  </script>
@@ -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>