@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,224 @@
1
+ <template>
2
+ <div :ui-form="`@a type:select sz:${sz}`" ui-tips="@a co:well" :ui-tips-view="state.show">
3
+ <IFollowView>
4
+ <Input v-bind="$props" :clearable="false" readonly v-model="state.value" @click="toggle">
5
+ <template #suffix><i ui-form-select=""></i></template>
6
+ </Input>
7
+ <template #tips>
8
+ <div ui-calendar="@a" class="w-ll">
9
+ <div ui-calendar-head="">
10
+ <div ui-flex="row lm" class="nx-ss-sub">
11
+ <span class="fw-auto">{{ curr.y }}-{{ curr.m }}</span>
12
+ </div>
13
+ <div ui-flex="row rm">
14
+ <button class="fs-xs mr-ss" ui-btn="@a main s">使用</button>
15
+ </div>
16
+ </div>
17
+ <ul ui-calendar-week="">
18
+ <li><span>日</span></li>
19
+ <li><span>一</span></li>
20
+ <li><span>二</span></li>
21
+ <li><span>三</span></li>
22
+ <li><span>四</span></li>
23
+ <li><span>五</span></li>
24
+ <li><span>六</span></li>
25
+ </ul>
26
+ <div>
27
+ <ul ui-calendar-days="">
28
+ <li
29
+ v-for="(item, idx) in curr.days"
30
+ :key="idx"
31
+ :class="`${item.isToday ? 'today' : item.isLastMonth || item.isNextMonth ? 'o-sl' : item.isHoliday ? 'co-risk' : ''} ${
32
+ state.selected && state.selected === item.date ? 'active' : ''
33
+ }`"
34
+ >
35
+ <div v-if="item.day" @click="change(item)" class="pr">
36
+ <span>{{ item.day }}</span>
37
+ <sup style="font-size: 0.6em; margin-top: -0.3em; position: absolute; left: 100%; top: 0" v-if="item.holiday" class="lh-ss">休</sup>
38
+ </div>
39
+ </li>
40
+ </ul>
41
+ </div>
42
+ <div ui-calendar-foot="">
43
+ <div ui-flex="row lm">
44
+ <div ui-calendar-prev-year="" @click="prev('y')"></div>
45
+ <div ui-calendar-prev="" @click="prev('m')"></div>
46
+ </div>
47
+ <div ui-flex="row cm" class="nx-ss-sub">
48
+ <ul class="fs-xs n-sm-sub" ui-flex="row lm">
49
+ <li ui-btn="@a s none">年</li>
50
+ <li ui-btn="@a s none">月</li>
51
+ <li ui-btn="@a s none">日</li>
52
+ <li ui-btn="@a s none">时</li>
53
+ </ul>
54
+ </div>
55
+ <div ui-flex="row rm">
56
+ <div ui-calendar-next="" @click="next('m')"></div>
57
+ <div ui-calendar-next-year="" @click="next('y')"></div>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </template>
62
+ </IFollowView>
63
+ </div>
64
+ </template>
65
+ <script setup lang="ts">
66
+ import { computed, reactive, toRefs } from 'vue';
67
+ import { idate } from '@fekit/utils';
68
+ import { Input } from '../form';
69
+ import { IFollowView } from '../basic';
70
+
71
+ // 创建日期
72
+ const cDate = (date: any = null) => {
73
+ const _date = new Date(date);
74
+ return date && _date instanceof Date && !isNaN(_date.getTime()) ? _date : new Date();
75
+ };
76
+ // 个位补零
77
+ const numfill = (num: string | number = '') => {
78
+ return Number(num) < 10 ? `0${num}` : num;
79
+ };
80
+ // 外部入参
81
+ const props = defineProps({
82
+ theme: { type: String, default: '@a' },
83
+ sz: { type: String, default: 'm' },
84
+ co: { type: String, default: '' },
85
+ block: { type: Boolean, default: true },
86
+ // 提示文案
87
+ tips: {
88
+ type: String,
89
+ default: ''
90
+ },
91
+ // 提示文案
92
+ placeholder: {
93
+ type: String,
94
+ default: ''
95
+ },
96
+ // 格式
97
+ format: {
98
+ type: String,
99
+ default: ''
100
+ },
101
+ // 值
102
+ value: {
103
+ type: [String, Number],
104
+ default: ''
105
+ },
106
+ // 节假日
107
+ holiday: {
108
+ type: Object,
109
+ default: () => ({})
110
+ },
111
+ // 校验规则
112
+ rules: {
113
+ type: Array,
114
+ default: () => []
115
+ },
116
+ // 是否是示校验图标
117
+ verify: {
118
+ type: Boolean,
119
+ default: false
120
+ }
121
+ });
122
+
123
+ // 内部数据
124
+ const state: any = reactive({
125
+ view: 1,
126
+ show: 0,
127
+ pos: 'bl',
128
+ selected: '',
129
+ date: props.value,
130
+ curr: computed(() => {
131
+ const date = cDate(state.date);
132
+ const calendar = [];
133
+ // 年
134
+ const y: any = date.getFullYear();
135
+ // 月
136
+ const m: any = date.getMonth() + 1;
137
+ // 日
138
+ const d: any = date.getDate();
139
+ // 本月第一天星期几
140
+ const w = new Date(`${y}-${m}-1`).getDay();
141
+ // 当前月份一共几天
142
+ const days = new Date(y, m, 0).getDate();
143
+
144
+ // 当前
145
+ const curr = new Date();
146
+ const curr_y = curr.getFullYear();
147
+ const curr_m = curr.getMonth() + 1;
148
+ const curr_d = curr.getDate();
149
+
150
+ // 上月
151
+ const last = new Date(y, m - 1, 0);
152
+ const last_y = last.getFullYear();
153
+ const last_m = last.getMonth() + 1;
154
+
155
+ // 下月
156
+ const next = new Date(y, m + 1, 0);
157
+ const next_y = next.getFullYear();
158
+ const next_m = next.getMonth() + 1;
159
+ let prevdays = last.getDate();
160
+
161
+ for (let i = 0; i < w; i++) {
162
+ calendar.unshift({
163
+ date: `${last_y}-${numfill(last_m)}-${prevdays}`,
164
+ day: prevdays,
165
+ isLastMonth: 1
166
+ });
167
+ prevdays = prevdays - 1;
168
+ }
169
+ for (let i = 1; i <= days; i++) {
170
+ const _i = numfill(i);
171
+ calendar.push({
172
+ date: `${y}-${numfill(m)}-${_i}`,
173
+ day: _i,
174
+ isToday: curr_y === y && curr_m === m && curr_d === i,
175
+ isHoliday: props.holiday[`${y}-${numfill(m)}-${_i}`]?.name ? 1 : 0,
176
+ holiday: props.holiday[`${y}-${numfill(m)}-${_i}`]?.name
177
+ });
178
+ }
179
+ for (let i = 1; calendar.length < 42; i++) {
180
+ const _i = numfill(i);
181
+ calendar.push({
182
+ date: `${next_y}-${numfill(next_m)}-${_i}`,
183
+ day: _i,
184
+ isNextMonth: 1
185
+ });
186
+ }
187
+ return { days: calendar, y, m, d };
188
+ }),
189
+ value: computed(() => {
190
+ return props.format ? idate(state.selected || props.value).format(props.format) : state.selected || props.value;
191
+ })
192
+ });
193
+ const { curr = {} }: any = toRefs(state);
194
+
195
+ const toggle = () => {
196
+ state.show = state.show ? 0 : 1;
197
+ };
198
+ const upload = (a: any = 'm', b: any = 1) => {
199
+ const date = cDate(state.date);
200
+ if (a === 'm') {
201
+ date.setMonth(date.getMonth() + b);
202
+ } else {
203
+ date.setFullYear(date.getFullYear() + b);
204
+ }
205
+ return date.toISOString().substring(0, 10);
206
+ };
207
+
208
+ // 日期前翻
209
+ const prev = (type: any = 'm') => {
210
+ state.date = upload(type, -1);
211
+ };
212
+ // 日期后翻
213
+ const next = (type: any = 'm') => {
214
+ state.date = upload(type, 1);
215
+ };
216
+
217
+ // 向外通信
218
+ const emits = defineEmits(['change']);
219
+ const change = (item: any) => {
220
+ state.selected = item.date;
221
+ state.date = item.date;
222
+ emits('change', item.date);
223
+ };
224
+ </script>
@@ -0,0 +1,116 @@
1
+ <template>
2
+ <div :ui-form="`@a type:select sz:${sz}`" ui-tips="@a co:well" :ui-tips-view="state.show">
3
+ <IFollowView ref="ifollow">
4
+ <InputRange
5
+ v-bind="{ placeholder, rules, theme, sz, co, block, ready, type, tips, maxlength, minlength, disabled, readonly, clearable, verify, prefix, suffix, interacted }"
6
+ :clearable="false"
7
+ readonly
8
+ v-model="state.value"
9
+ @click="toggle"
10
+ >
11
+ <template #suffix><i ui-form-select=""></i></template>
12
+ </InputRange>
13
+ <template #tips>
14
+ <DateRangeView v-bind="{ frame, tools, format, picker, holiday, shortcuts }" v-model="state.value" @change="state.show = 0" />
15
+ </template>
16
+ </IFollowView>
17
+ </div>
18
+ </template>
19
+ <script setup lang="ts">
20
+ import { reactive, watch, ref } from 'vue';
21
+ import { InputRange, DateRangeView } from '.';
22
+ import { IFollowView } from '../basic';
23
+ const ifollow: any = ref(null);
24
+ // 方法
25
+ const emits: any = defineEmits(['update:modelValue', 'change']);
26
+
27
+ // 类型
28
+ interface Props {
29
+ modelValue?: Array<string | number>;
30
+ // 日期组件入参
31
+ frame?: boolean;
32
+ tools?: boolean;
33
+ format?: string;
34
+ picker?: 'date' | 'week' | 'month' | 'quarter';
35
+ holiday?: object;
36
+ shortcuts?: Array<'yesterday' | 'today' | 'tomorrow'>;
37
+ // 输入组件入参
38
+ placeholder?: string;
39
+ rules?: Array<object>;
40
+ theme?: string;
41
+ sz?: '' | 'xs' | 's' | 'm' | 'l' | 'xl';
42
+ co?: string;
43
+ block?: boolean;
44
+ ready?: boolean;
45
+ type?: string;
46
+ tips?: string;
47
+ maxlength?: null | number;
48
+ minlength?: null | number;
49
+ disabled?: boolean;
50
+ readonly?: boolean;
51
+ clearable?: boolean;
52
+ verify?: boolean;
53
+ prefix?: Array<any>;
54
+ suffix?: Array<any>;
55
+ interacted?: boolean;
56
+ }
57
+ const props: any = withDefaults(defineProps<Props>(), {
58
+ // 值
59
+ modelValue: () => [],
60
+ // 日期组件入参
61
+ frame: false,
62
+ tools: true,
63
+ format: 'YYYY-M-D',
64
+ picker: 'date',
65
+ holiday: () => ({}),
66
+ shortcuts: () => ['yesterday', 'today', 'tomorrow'],
67
+ // 输入组件入参
68
+ placeholder: '',
69
+ rules: () => [],
70
+ theme: '@a',
71
+ sz: '',
72
+ co: '',
73
+ block: true,
74
+ ready: false,
75
+ type: 'text',
76
+ tips: '',
77
+ maxlength: null,
78
+ minlength: null,
79
+ disabled: false,
80
+ readonly: false,
81
+ clearable: true,
82
+ verify: false,
83
+ prefix: () => [],
84
+ suffix: () => [],
85
+ interacted: false
86
+ });
87
+
88
+ const state: any = reactive({
89
+ show: 0,
90
+ value: []
91
+ });
92
+
93
+ watch(
94
+ () => props.modelValue,
95
+ (value: any) => {
96
+ state.value = value;
97
+ },
98
+ { deep: true, immediate: true }
99
+ );
100
+
101
+ watch(
102
+ () => state.value,
103
+ (value: any) => {
104
+ emits('update:modelValue', value);
105
+ if (value[0] && value[1]) {
106
+ ifollow.value?.hide();
107
+ }
108
+ },
109
+ { deep: true, immediate: true }
110
+ );
111
+
112
+ const toggle = () => {
113
+ state.show = state.show ? 0 : 1;
114
+ };
115
+ </script>
116
+ . .