@neatui/nuxt 0.1.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 (102) hide show
  1. package/README.md +3 -0
  2. package/package.json +43 -0
  3. package/rollup.config.js +35 -0
  4. package/src/components/basic/IDraggable.vue +84 -0
  5. package/src/components/basic/IDraggable@b.vue +80 -0
  6. package/src/components/basic/IFollowView.vue +211 -0
  7. package/src/components/basic/IPickerView.vue +351 -0
  8. package/src/components/basic/IRouterView.vue +360 -0
  9. package/src/components/basic/IScrollView.vue +127 -0
  10. package/src/components/basic/Icon.vue +54 -0
  11. package/src/components/basic/LayerView/Layer.vue +339 -0
  12. package/src/components/basic/LayerView/index.ts +5 -0
  13. package/src/components/basic/index.ts +7 -0
  14. package/src/components/display/Avatar.vue +1 -0
  15. package/src/components/display/Badge.vue +1 -0
  16. package/src/components/display/Calendar.vue +245 -0
  17. package/src/components/display/CalendarReg.vue +245 -0
  18. package/src/components/display/Card.vue +1 -0
  19. package/src/components/display/Carousel.vue +1 -0
  20. package/src/components/display/ChartView.vue +123 -0
  21. package/src/components/display/Collapse.vue +1 -0
  22. package/src/components/display/Desriptions.vue +1 -0
  23. package/src/components/display/Empty.vue +1 -0
  24. package/src/components/display/Image.vue +112 -0
  25. package/src/components/display/List.vue +1 -0
  26. package/src/components/display/PhotoEditor.vue +181 -0
  27. package/src/components/display/PhotoViewer.vue +50 -0
  28. package/src/components/display/Popover.vue +1 -0
  29. package/src/components/display/QRCode.vue +1 -0
  30. package/src/components/display/Segmented.vue +1 -0
  31. package/src/components/display/Statistic.vue +1 -0
  32. package/src/components/display/Table.vue +1 -0
  33. package/src/components/display/Tabs.vue +1 -0
  34. package/src/components/display/Tag.vue +1 -0
  35. package/src/components/display/Timeline.vue +1 -0
  36. package/src/components/display/Tooltip.vue +1 -0
  37. package/src/components/display/Tour.vue +1 -0
  38. package/src/components/display/Tree.vue +431 -0
  39. package/src/components/display/TreeView.vue +225 -0
  40. package/src/components/display/index.ts +8 -0
  41. package/src/components/form/Cascader.vue +435 -0
  42. package/src/components/form/DatePicker.vue +124 -0
  43. package/src/components/form/DateRangePicker@v2.vue.backup +224 -0
  44. package/src/components/form/DateRangePicker@v3.vue +116 -0
  45. package/src/components/form/DateRangeView@v3.vue +386 -0
  46. package/src/components/form/DateView.vue +229 -0
  47. package/src/components/form/DateView@v2.vue +386 -0
  48. package/src/components/form/DateView@v3.vue +471 -0
  49. package/src/components/form/EditUpload.vue +4 -0
  50. package/src/components/form/ImgUpload.vue +174 -0
  51. package/src/components/form/Input.vue.backup +230 -0
  52. package/src/components/form/Input@v3.vue +267 -0
  53. package/src/components/form/InputNumber.vue +200 -0
  54. package/src/components/form/InputRange.vue +235 -0
  55. package/src/components/form/MoreSelect.vue.backup +144 -0
  56. package/src/components/form/MoreSelect@v3.vue +195 -0
  57. package/src/components/form/MoreSelectList.vue +125 -0
  58. package/src/components/form/MoreSelectPanel@v3.vue +190 -0
  59. package/src/components/form/MoreSelectPicker.vue +124 -0
  60. package/src/components/form/MoreSelectTags.vue +124 -0
  61. package/src/components/form/PageMoreSelect.vue +187 -0
  62. package/src/components/form/PageSelect.vue +189 -0
  63. package/src/components/form/SearchMoreSelect.vue +173 -0
  64. package/src/components/form/SearchSelect.vue.backup +194 -0
  65. package/src/components/form/SearchSelect@v3.vue +202 -0
  66. package/src/components/form/Select@v3.vue +201 -0
  67. package/src/components/form/SelectList.vue +58 -0
  68. package/src/components/form/SelectPicker.vue +97 -0
  69. package/src/components/form/SelectTags.vue +52 -0
  70. package/src/components/form/SelectTree/SelectTree@v1.vue +227 -0
  71. package/src/components/form/Switch.vue +135 -0
  72. package/src/components/form/TextArea.vue +193 -0
  73. package/src/components/form/TimePicker.vue +11 -0
  74. package/src/components/form/TimeView.vue +244 -0
  75. package/src/components/form/Upload.vue +346 -0
  76. package/src/components/form/index.ts +82 -0
  77. package/src/components/loader/FormLoader/FormLoader@v2.vue +422 -0
  78. package/src/components/loader/FormLoader/FormLoader@v3.vue.backup +318 -0
  79. package/src/components/loader/FormLoader/index.ts +2 -0
  80. package/src/components/loader/FormLoader@v1/FormLoader.vue +506 -0
  81. package/src/components/loader/FormLoader@v1/FormRender.vue +277 -0
  82. package/src/components/loader/LimitLoader/LimitLoader.vue.backup +131 -0
  83. package/src/components/loader/LimitLoader/LimitLoader@v2.vue.backup +174 -0
  84. package/src/components/loader/LimitLoader/LimitLoader@v3.vue +183 -0
  85. package/src/components/loader/LimitLoader/index.ts +2 -0
  86. package/src/components/loader/TableLoader/TableColView.vue +115 -0
  87. package/src/components/loader/TableLoader/TableLoader.vue +360 -0
  88. package/src/components/loader/TableLoader/index.ts +2 -0
  89. package/src/components/loader/ViewLoader/ViewLoader@v1.vue +256 -0
  90. package/src/components/loader/ViewLoader/index.ts +2 -0
  91. package/src/components/loader/index.ts +5 -0
  92. package/src/components/tools/FormDraftsView.vue +330 -0
  93. package/src/components/tools/FormVerifyView.vue +206 -0
  94. package/src/components/tools/MoreTools.vue +74 -0
  95. package/src/components/tools/MoreTools@v2.vue +74 -0
  96. package/src/components/tools/Pagination@a.vue +222 -0
  97. package/src/components/tools/Pagination@b.vue +221 -0
  98. package/src/components/tools/index.ts +5 -0
  99. package/src/index.ts +9 -0
  100. package/src/shims-vue.d.ts +5 -0
  101. package/src/store/myui.ts +50 -0
  102. package/tsconfig.json +24 -0
@@ -0,0 +1,221 @@
1
+ <template>
2
+ <div ui-pagination="@a" class="pading" ui-flex="row rm">
3
+ <div class="al mob-ac mr-sm-sub" ui-hide="=mob" ui-flex="row lm">
4
+ <p v-show="state.showTotalPages">
5
+ <span>共</span>
6
+ <code class="nx-ss">{{ data.totalPages || 0 }}</code>
7
+ <span>页</span>
8
+ </p>
9
+ <p v-show="state.showTotal">
10
+ <code class="nx-ss">{{ data.total || 0 }}</code>
11
+ <span>条记录</span>
12
+ </p>
13
+ </div>
14
+ <div class="ml-sl ar mob-ac">
15
+ <div class="fr mob-fn m-ss-sub" ui-flex="row rm">
16
+ <button class="flex-fixed" :ui-btn="`@a s read :border :square ${data.current > 1 ? '' : ':disabled'}`" @click="prev">
17
+ <svg
18
+ style="width: 1em; height: 1em"
19
+ t="1701228540398"
20
+ class="icon co-read"
21
+ viewBox="0 0 1024 1024"
22
+ version="1.1"
23
+ xmlns="http://www.w3.org/2000/svg"
24
+ p-id="2426"
25
+ width="64"
26
+ height="64"
27
+ >
28
+ <path
29
+ d="M683.36932763 159.41593598c-21.03260057-21.03260057-55.13210605-21.03260057-76.16470661 0L340.63067237 425.99156763c-21.03260057 21.03260057-21.03260057 55.13210605 0 76.16470662l266.57479015 266.57563164c21.03260057 21.03260057 55.13210605 21.03260057 76.16470661 1e-8s21.03260057-55.13210605 0-76.16470662L454.8768908 464.07392093l228.49243683-228.49327832C704.40276971 214.54804203 704.40276971 180.44853655 683.36932763 159.41593598z"
30
+ p-id="2427"
31
+ ></path>
32
+ </svg>
33
+ </button>
34
+
35
+ <button class="flex-fixed" v-for="idx in state.list" :key="idx" :ui-btn="`@a s ${idx === data.current ? 'main' : 'read :border'}`" ui-hide="<pad" @click="page(idx)">
36
+ <code>{{ idx }}</code>
37
+ </button>
38
+ <button class="flex-fixed" ui-btn="@a s read :border" ui-hide=">mob">
39
+ <span>当前第</span>
40
+ <code class="nx-ss">{{ data.current || 1 }}</code>
41
+ <span>页</span>
42
+ </button>
43
+ <button class="flex-fixed" :ui-btn="`@a s read :border :square ${data.current < data.totalPages ? '' : ':disabled'}`" @click="next">
44
+ <svg style="width: 1em; height: 1em" class="icon co-read" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2426" width="64" height="64">
45
+ <path
46
+ d="M341.63640988 781.41564784c20.63742578 21.22981847 54.12571728 21.22981847 74.81456101 0l265.95100164-273.75421824c20.62728703-21.26747667 20.62728703-55.75008988 0-76.97556317l-265.95100164-273.74407946c-20.68449855-21.26747667-54.17423844-21.26747667-74.81456101 0-20.67291141 21.23706043-20.67291142 55.71170748 0 76.98497771l228.55639458 235.24869384-228.55567038 235.22117436c-20.67218722 21.26747667-20.67146302 55.74357212 0 77.02263594l0 0z"
47
+ p-id="2427"
48
+ ></path>
49
+ </svg>
50
+ </button>
51
+ <div ui-tips="@a co:well ux:hover">
52
+ <div ui-btn="@a s read :border">
53
+ <code>{{ modelValue.pageSize || 0 }}/页</code>
54
+ <svg
55
+ style="width: 1em; height: 1em"
56
+ t="1701229420486"
57
+ class="icon"
58
+ viewBox="0 0 1024 1024"
59
+ version="1.1"
60
+ xmlns="http://www.w3.org/2000/svg"
61
+ p-id="2426"
62
+ width="64"
63
+ height="64"
64
+ >
65
+ <path
66
+ d="M210.99383545 420.72863834a55.61828615 55.61828615 0 1 1 78.60717773-78.60717774l222.91809082 222.84393313 222.84393312-222.84393313a55.61828615 55.61828615 0 1 1 78.60717772 78.60717774l-263.18572998 263.2598877a55.61828615 55.61828615 0 0 1-86.61621093-10.08544921L210.99383545 420.72863834z"
67
+ p-id="2427"
68
+ ></path>
69
+ </svg>
70
+ </div>
71
+ <div v-if="state.list.length" ui-tips-box="tl" class="ny-sl al">
72
+ <div class="max-h-ls" ui-scroll=":y s">
73
+ <ul class="n-ms nx-ss-sub nowrap">
74
+ <li @click="size(10)" class="ux-hover r-sm"><code :class="`${modelValue.pageSize === 10 ? 'co-main' : ''}`">10条/页</code></li>
75
+ <li @click="size(20)" class="ux-hover r-sm"><code :class="`${modelValue.pageSize === 20 ? 'co-main' : ''}`">20条/页</code></li>
76
+ <li @click="size(50)" class="ux-hover r-sm"><code :class="`${modelValue.pageSize === 50 ? 'co-main' : ''}`">50条/页</code></li>
77
+ <li @click="size(100)" class="ux-hover r-sm"><code :class="`${modelValue.pageSize === 100 ? 'co-main' : ''}`">100条/页</code></li>
78
+ </ul>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ <div v-if="tools" ui-hide="<pad" ui-tips="@a co:well ux:hover">
85
+ <button ui-btn="@a s none :square">
86
+ <svg
87
+ style="width: 1em; height: 1em"
88
+ t="1701229474205"
89
+ class="icon"
90
+ viewBox="0 0 1024 1024"
91
+ version="1.1"
92
+ xmlns="http://www.w3.org/2000/svg"
93
+ p-id="2426"
94
+ width="64"
95
+ height="64"
96
+ >
97
+ <path
98
+ d="M512 604.16c-53.248 0-96.768-43.52-96.768-96.768 0-53.248 43.52-96.768 96.768-96.768 53.248 0 96.768 43.52 96.768 96.768 0 53.248-43.52 96.768-96.768 96.768zM512 274.432c-53.248 0-96.768-43.52-96.768-96.768s43.52-96.768 96.768-96.768c53.248 0 96.768 43.52 96.768 96.768s-43.52 96.768-96.768 96.768zM512 933.888c-53.248 0-96.768-43.52-96.768-96.768s43.52-96.768 96.768-96.768c53.248 0 96.768 43.52 96.768 96.768s-43.52 96.768-96.768 96.768z"
99
+ p-id="2427"
100
+ ></path>
101
+ </svg>
102
+ </button>
103
+ <div ui-tips-box="tl" class="al min-w-ms">
104
+ <slot name="setting">
105
+ <ul class="n-ms mb-sm-sub">
106
+ <li>
107
+ <h6 class="fs-xs o-mm nowrap">显示总页数</h6>
108
+ <label ui-form="@a type:switch">
109
+ <input type="checkbox" v-model="state.showTotalPages" />
110
+ <span>{{ state.showTotalPages ? '' : '' }}</span>
111
+ </label>
112
+ </li>
113
+ <li>
114
+ <h6 class="fs-xs o-mm nowrap">显示总条数</h6>
115
+ <label ui-form="@a type:switch">
116
+ <input type="checkbox" v-model="state.showTotal" />
117
+ <span>{{ state.showTotal ? '' : '' }}</span>
118
+ </label>
119
+ </li>
120
+ </ul>
121
+ </slot>
122
+ </div>
123
+ </div>
124
+ </div>
125
+ </template>
126
+
127
+ <script setup lang="ts">
128
+ import { reactive, computed } from 'vue';
129
+ import { useRoute } from 'vue-router';
130
+ import { Input } from '../form';
131
+
132
+ const route: any = useRoute();
133
+
134
+ interface ModelValueProps {
135
+ pageSize: number;
136
+ current: number;
137
+ }
138
+
139
+ interface DataProps {
140
+ total: number;
141
+ totalPages: number;
142
+ current: number;
143
+ }
144
+ // 类型
145
+ interface Props {
146
+ id?: string;
147
+ words?: object;
148
+ modelValue: ModelValueProps;
149
+ data: DataProps;
150
+ tools: boolean;
151
+ }
152
+ const props: any = withDefaults(defineProps<Props>(), {
153
+ words: () => ({}),
154
+ tools: false,
155
+ id: '',
156
+ modelValue: () => ({
157
+ pageSize: 0,
158
+ current: 0
159
+ }),
160
+ data: () => {
161
+ return {
162
+ total: 0,
163
+ totalPages: 0,
164
+ current: 0
165
+ };
166
+ }
167
+ });
168
+
169
+ const emits = defineEmits(['update:modelValue', 'page', 'size']);
170
+ const state = reactive({
171
+ showTotalPages: true,
172
+ showTotal: true,
173
+ id: computed(() => (props.id || 'PAGINATION' + route.path?.replace(/\//g, '_')).toUpperCase()),
174
+ list: computed(() => {
175
+ const _page = Number(props.data.current || 1);
176
+ const list = [_page];
177
+ if (_page > 1) {
178
+ list.unshift(_page - 1);
179
+ }
180
+ if (_page > 2) {
181
+ list.unshift(_page - 2);
182
+ }
183
+ const _max = 5 - list.length;
184
+ for (let i = 1; i <= _max; i++) {
185
+ if (_page + i <= props.data.totalPages) {
186
+ list.push(_page + i);
187
+ }
188
+ }
189
+ const _min = 5 - list.length;
190
+ for (let i = 1; i <= _min; i++) {
191
+ if (list[0] - 1 > 0) {
192
+ list.unshift(list[0] - 1);
193
+ }
194
+ }
195
+ return list;
196
+ })
197
+ });
198
+
199
+ const prev = () => {
200
+ const _page = Number(props.data.current) - 1 < 1 ? 1 : Number(props.data.current) - 1;
201
+ emits('update:modelValue', { ...props.modelValue, ...{ current: _page } });
202
+ emits('page', _page);
203
+ };
204
+
205
+ const next = () => {
206
+ const _page = Number(props.data.current) + 1 > props.data.totalPages ? props.data.totalPages : Number(props.data.current) + 1;
207
+ emits('update:modelValue', { ...props.modelValue, ...{ current: _page } });
208
+ emits('page', _page);
209
+ };
210
+
211
+ const page = (idx: any) => {
212
+ emits('update:modelValue', { ...props.modelValue, ...{ current: idx } });
213
+ emits('page', idx);
214
+ };
215
+
216
+ const size = (size: any) => {
217
+ emits('update:modelValue', { ...props.modelValue, ...{ pageSize: size } });
218
+ emits('size', size);
219
+ window.localStorage.setItem(state.id, `${size}`);
220
+ };
221
+ </script>
@@ -0,0 +1,5 @@
1
+ import Pagination from './Pagination@a.vue';
2
+ import MoreTools from './MoreTools.vue';
3
+ import FormDraftsView from './FormDraftsView.vue';
4
+ import FormVerifyView from './FormVerifyView.vue';
5
+ export { Pagination, MoreTools, FormDraftsView, FormVerifyView };
package/src/index.ts ADDED
@@ -0,0 +1,9 @@
1
+ // 数据
2
+ export * from './store/myui';
3
+
4
+ // 组件
5
+ export * from './components/basic';
6
+ export * from './components/display';
7
+ export * from './components/form';
8
+ export * from './components/loader';
9
+ export * from './components/tools';
@@ -0,0 +1,5 @@
1
+ declare module '*.vue' {
2
+ import { DefineComponent } from 'vue';
3
+ const component: DefineComponent<{}, {}, any>;
4
+ export default component;
5
+ }
@@ -0,0 +1,50 @@
1
+ import { defineStore } from 'pinia';
2
+
3
+ // 基础数据
4
+ export const useMyuiStore = defineStore('myui', {
5
+ state: () => {
6
+ return {
7
+ full: localStorage.getItem('neatui_full') || 0,
8
+ // 字号
9
+ size: localStorage.getItem('neatui_size') || document?.documentElement?.getAttribute('size') || 'm',
10
+ // 主题
11
+ theme: localStorage.getItem('neatui_theme') || document?.documentElement?.getAttribute('theme') || 'auto',
12
+ // 侧边
13
+ side: 1
14
+ };
15
+ },
16
+ getters: {},
17
+ actions: {
18
+ // 设置全屏显示
19
+ async setfull(then = (res: any) => {}) {
20
+ const full = this.full ? 0 : 1;
21
+ this.full = full;
22
+ localStorage.setItem('neatui_full', `${full}`);
23
+ then(full);
24
+ },
25
+ // 设置系统主题
26
+ async settheme(theme: any = '', then = (res: any) => {}) {
27
+ if (theme) {
28
+ localStorage.setItem('neatui_theme', theme);
29
+ this.theme = theme;
30
+ document.documentElement.setAttribute('theme', theme);
31
+ then(theme);
32
+ } else {
33
+ document.documentElement.setAttribute('theme', this.theme);
34
+ then(this.theme);
35
+ }
36
+ },
37
+ // 设置系统字号
38
+ async setsize(size: any = '', then = (res: any) => {}) {
39
+ if (size) {
40
+ localStorage.setItem('neatui_size', size);
41
+ this.size = size;
42
+ document.documentElement.setAttribute('size', size);
43
+ then(size);
44
+ } else {
45
+ document.documentElement.setAttribute('size', this.size);
46
+ then(this.size);
47
+ }
48
+ }
49
+ }
50
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "esnext",
4
+ "module": "esnext",
5
+ "strict": true,
6
+ "jsx": "preserve",
7
+ "moduleResolution": "node",
8
+ "experimentalDecorators": true,
9
+ "skipLibCheck": true,
10
+ "esModuleInterop": true,
11
+ "allowSyntheticDefaultImports": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "useDefineForClassFields": true,
14
+ "sourceMap": true,
15
+ "baseUrl": ".",
16
+ "types": ["webpack-env"],
17
+ "paths": {
18
+ "@/*": ["src/*"]
19
+ },
20
+ "lib": ["esnext", "dom", "dom.iterable", "scripthost"]
21
+ },
22
+ "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "src/shims-vue.d.ts"],
23
+ "exclude": ["node_modules"]
24
+ }