@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
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div class="full-x" ui-flex="row xt">
3
- <div class="mr-mm-sub my-sm-sub" ui-flex="row lm :wrap">
2
+ <div class="w-full" ui-flex="row xt">
3
+ <div class="flex-block mr-mm-sub my-sm-sub" ui-flex="row lm wrap">
4
4
  <template v-for="(item, idx) in state.limit" :key="idx">
5
5
  <div v-if="!item._close" ui-flex="row lm" v-bind="{ ...(item.attrs || {}) }">
6
6
  <span class="nr-sm flex-fixed o-ls">{{ item.label }}{{ item.label ? ':' : '' }}</span>
@@ -22,11 +22,17 @@
22
22
  </div>
23
23
  </template>
24
24
  </div>
25
- <div class="mr-sl-sub my-sm-sub nowrap" ui-hide="<pad">
26
- <IFollowView tipBoxClass="nr-no">
27
- <button ui-btn="@a s case :border"><i class="icon icon-add2 fs-xs"></i>添加条件</button>
25
+ <div class="flex-fixed mr-sl-sub my-sm-sub nowrap" ui-flex="row rm" ui-hide="<pad">
26
+ <IFollowView v-if="tools" tipBoxClass="nr-no">
27
+ <button class="bg-fore" ui-btn="@a s case :border :square">
28
+ <svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" class="co-read fs-ss" style="width: 1em; height: 1em">
29
+ <path
30
+ d="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"
31
+ />
32
+ </svg>
33
+ </button>
28
34
  <template v-if="state.limit.length" #tips>
29
- <div class="w-mm h-ls nr-sl" ui-scroll="x:hidden :y">
35
+ <div class="w-mm max-h-ls n-sl" ui-scroll="x:hidden :y">
30
36
  <div v-for="(item, idx) in state.limit" :key="idx" class="item ux-hover nowrap r-ss">
31
37
  <label class="ny-xs nx-sm" ui-form="@a type:checkbox">
32
38
  <input :checked="!item._close" type="checkbox" @change="item._close = item._close ? 0 : 1" />
@@ -36,25 +42,10 @@
36
42
  </div>
37
43
  </template>
38
44
  </IFollowView>
39
- <button ui-btn="@a s main" @click="fResetLimit">{{ words['common.reset'] || '重置' }}</button>
45
+ <button class="bg-fore" ui-btn="@a s case :border" @click="fResetLimit">{{ words['common.reset'] || '重置' }}</button>
46
+ <button class="bg-fore" ui-btn="@a s case :border" @click="fSearch">{{ words['common.search'] || '搜索' }}</button>
40
47
  </div>
41
48
  </div>
42
- <div class="mr-sl-sub my-sm-sub nowrap" ui-hide=">mob">
43
- <IFollowView tipBoxClass="nr-no">
44
- <button ui-btn="@a s case :border"><i class="icon icon-add2 fs-xs"></i>添加条件</button>
45
- <template v-if="state.limit.length" #tips>
46
- <div class="w-mm h-ls nr-sl" ui-scroll="x:hidden :y">
47
- <div v-for="(item, idx) in state.limit" :key="idx" class="item ux-hover nowrap r-ss">
48
- <label class="ny-xs nx-sm" ui-form="@a type:checkbox">
49
- <input :checked="!item._close" type="checkbox" @change="item._close = item._close ? 0 : 1" />
50
- <span>{{ item.label }}</span>
51
- </label>
52
- </div>
53
- </div>
54
- </template>
55
- </IFollowView>
56
- <button ui-btn="@a s main" @click="fResetLimit">{{ words['common.reset'] || '重置' }}</button>
57
- </div>
58
49
  </template>
59
50
  <script lang="ts" setup>
60
51
  import { computed, reactive, watch } from 'vue';
@@ -91,20 +82,28 @@
91
82
  words?: { [key: string | number]: any };
92
83
  limit: Array<LimitProps>;
93
84
  param: any;
85
+ tools?: boolean;
94
86
  }
95
87
 
96
88
  const props: any = withDefaults(defineProps<Props>(), {
97
89
  words: () => ({}),
98
90
  limit: () => [],
99
- param: () => ({})
91
+ param: () => ({}),
92
+ tools: false,
100
93
  });
101
94
 
95
+ // 定义emit事件
96
+ const emits = defineEmits<{
97
+ search: [param: any];
98
+ }>();
99
+
102
100
  // 内部数据
103
101
  const state: any = reactive({
104
102
  name: computed(() => 'confs' + route.path?.replace(/\//g, '_')),
105
103
  limit: [],
106
- param: {}
104
+ param: {},
107
105
  });
106
+
108
107
  // 监听外部配置
109
108
  watch(
110
109
  () => props.limit,
@@ -144,8 +143,9 @@
144
143
  return item;
145
144
  });
146
145
  },
147
- { deep: true, immediate: true }
146
+ { deep: true, immediate: true },
148
147
  );
148
+
149
149
  // 缓存交互配置
150
150
  watch(
151
151
  [() => state.limit],
@@ -161,7 +161,7 @@
161
161
  });
162
162
  localStorage.setItem(`${state.name}_limit`, JSON.stringify(_limit));
163
163
  },
164
- { deep: true }
164
+ { deep: true },
165
165
  );
166
166
 
167
167
  watch(
@@ -169,7 +169,7 @@
169
169
  () => {
170
170
  state.param = props.param;
171
171
  },
172
- { deep: true, immediate: true }
172
+ { deep: true, immediate: true },
173
173
  );
174
174
 
175
175
  // 重置筛选
@@ -179,5 +179,16 @@
179
179
  delete state.param[key];
180
180
  }
181
181
  }
182
+ // 触发搜索事件
183
+ emits('search', state.param);
184
+ };
185
+
186
+ // 搜索功能
187
+ const fSearch = () => {
188
+ // 重置页码
189
+ if (state.param.page) {
190
+ state.param.page = 1;
191
+ }
192
+ emits('search', state.param);
182
193
  };
183
194
  </script>