@neatui/vue 2.11.0 → 2.12.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.
- package/package.json +1 -1
- package/src/components/basic/LayerView/Layer.vue +0 -16
- package/src/components/display/Calendar.vue +14 -14
- package/src/components/display/CalendarReg.vue +14 -14
- package/src/components/display/Tree.vue +6 -6
- package/src/components/form/Cascader.vue +20 -20
- package/src/components/form/DatePicker.vue +8 -9
- package/src/components/form/DateRangePicker@v3.vue +5 -5
- package/src/components/form/DateRangeView@v3.vue +9 -9
- package/src/components/form/DateView.vue +14 -14
- package/src/components/form/DateView@v2.vue +14 -14
- package/src/components/form/DateView@v3.vue +17 -15
- package/src/components/form/Input@v3.vue +2 -2
- package/src/components/form/MoreSelect@v3.vue +27 -8
- package/src/components/form/MoreSelectList.vue +1 -1
- package/src/components/form/MoreSelectPanel@v3.vue +4 -4
- package/src/components/form/MoreSelectPicker.vue +1 -1
- package/src/components/form/MoreSelectTags.vue +1 -1
- package/src/components/form/PageMoreSelect.vue +15 -15
- package/src/components/form/PageSelect.vue +17 -17
- package/src/components/form/SearchMoreSelect.vue +1 -1
- package/src/components/form/SearchSelect@v3.vue +4 -4
- package/src/components/form/Select@v3.vue +9 -6
- package/src/components/form/SelectList.vue +8 -8
- package/src/components/form/SelectPicker.vue +7 -7
- package/src/components/form/SelectTags.vue +7 -7
- package/src/components/form/SelectTree/SelectTree@v1.vue +6 -6
- package/src/components/form/Switch.vue +33 -58
- package/src/components/form/Textarea@v2.vue +275 -0
- package/src/components/form/TimeView.vue +14 -14
- package/src/components/form/Upload.vue +52 -9
- package/src/components/form/date.ts +321 -0
- package/src/components/form/index.ts +2 -2
- package/src/components/form/number.ts +3 -0
- package/src/components/form/type.ts +224 -0
- package/src/components/loader/FormLoader/FormLoader@v2.vue +20 -20
- package/src/components/loader/FormLoader/FormLoader@v3.vue.backup +372 -291
- package/src/components/loader/FormLoader/FormRender@v3.vue.backup +4 -0
- package/src/components/loader/FormLoader/NodeLoader.vue +85 -0
- package/src/components/loader/FormLoader@v1/FormLoader.vue +1 -1
- package/src/components/loader/FormLoader@v1/FormRender.vue +49 -24
- package/src/components/loader/LayerLoader/LayerLoader.vue +1 -1
- package/src/components/loader/LimitLoader/LimitLoader@v3.vue +1 -1
- package/src/components/loader/MoveLoader/MoveLoader.vue +8 -8
- package/src/components/loader/TableLoader/TableRender.vue +1 -1
- package/src/components/loader/index.ts +1 -1
- package/src/components/tools/Pagination@a.vue +1 -1
- package/tsconfig.json +1 -1
- package/src/components/loader/FormLoader/index.ts +0 -2
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 对象类型相关判断
|
|
3
|
+
* @module type
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 获取指定对象的类型
|
|
8
|
+
* @param {type} obj 对象
|
|
9
|
+
* @return {string} 对象类型值
|
|
10
|
+
*/
|
|
11
|
+
export function getType(obj: any): string {
|
|
12
|
+
return Object.prototype.toString.call(obj);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 判断是否是function
|
|
17
|
+
* @param {object} obj 对象
|
|
18
|
+
* @return {Boolean}
|
|
19
|
+
*/
|
|
20
|
+
export function isFunction(obj: any): boolean {
|
|
21
|
+
return typeof obj === 'function';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* 判断是否是Object
|
|
26
|
+
* @param {object} obj 对象
|
|
27
|
+
* @return {Boolean}
|
|
28
|
+
*/
|
|
29
|
+
export function isObject(obj: any): boolean {
|
|
30
|
+
return '[object Object]' === getType(obj);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 判断是否是array
|
|
35
|
+
* @param {object} obj 对象
|
|
36
|
+
* @return {Boolean}
|
|
37
|
+
*/
|
|
38
|
+
export function isArray(obj: any): boolean {
|
|
39
|
+
return '[object Array]' === getType(obj);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 判断是否是undefined
|
|
44
|
+
* @param {object} obj 对象
|
|
45
|
+
* @return {Boolean}
|
|
46
|
+
*/
|
|
47
|
+
export function isUndefined(obj: any): boolean {
|
|
48
|
+
return '[object Undefined]' === getType(obj);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* 判断是否是null
|
|
53
|
+
* @param {object} obj 对象
|
|
54
|
+
* @return {Boolean}
|
|
55
|
+
*/
|
|
56
|
+
export function isNull(obj: any): boolean {
|
|
57
|
+
return '[object Null]' === getType(obj);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* 判断是否是字符串
|
|
62
|
+
* @param {object} obj 对象
|
|
63
|
+
* @return {Boolean}
|
|
64
|
+
*/
|
|
65
|
+
export function isString(obj: any): boolean {
|
|
66
|
+
return typeof obj === 'string';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 判断是否是布尔类型
|
|
71
|
+
* @param {object} obj 对象
|
|
72
|
+
* @return {Boolean}
|
|
73
|
+
*/
|
|
74
|
+
export function isBoolean(obj: any): boolean {
|
|
75
|
+
return typeof obj === 'boolean';
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 判断是否是一个数字
|
|
80
|
+
* @param {number} num 数字
|
|
81
|
+
* @return {Boolean}
|
|
82
|
+
*/
|
|
83
|
+
export function isNumber(num: any): boolean {
|
|
84
|
+
return '[object Number]' === getType(num) && !isNaN(num);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* 判断是否是一个日期
|
|
89
|
+
* @param {object} obj 对象
|
|
90
|
+
* @return {Boolean}
|
|
91
|
+
*/
|
|
92
|
+
export function isDate(obj: any): boolean {
|
|
93
|
+
return '[object Date]' === getType(obj);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* 判断是否是一个日期字符串
|
|
98
|
+
* @param {string} str 字符
|
|
99
|
+
* @return {Boolean}
|
|
100
|
+
*/
|
|
101
|
+
export function isDateString(str: any): boolean {
|
|
102
|
+
try {
|
|
103
|
+
return new Date(str?.replace(/-/g, '/')).toString() !== 'Invalid Date';
|
|
104
|
+
} catch (err) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* 判断是否是一个DOM节点
|
|
111
|
+
* @param {object} obj 对象
|
|
112
|
+
* @return {Boolean}
|
|
113
|
+
*/
|
|
114
|
+
export function isElement(obj: any): boolean {
|
|
115
|
+
return /\[object\sHTML\w*Element\]/.test(getType(obj)) || getType(obj) === '[object HTMLDocument]';
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* 判断是否是一个DOM节点列表
|
|
120
|
+
* @param {object} obj 对象
|
|
121
|
+
* @return {Boolean}
|
|
122
|
+
*/
|
|
123
|
+
export function isNodeList(obj: any): boolean {
|
|
124
|
+
return getType(obj) === '[object NodeList]';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* 判断是否为空
|
|
129
|
+
* @param {object} obj 对象
|
|
130
|
+
* @return {Boolean}
|
|
131
|
+
*/
|
|
132
|
+
export function isEmpty(obj: any): boolean {
|
|
133
|
+
if (isArray(obj)) {
|
|
134
|
+
return obj.length === 0;
|
|
135
|
+
} else if (isObject(obj)) {
|
|
136
|
+
return Object.keys(obj).length === 0;
|
|
137
|
+
} else {
|
|
138
|
+
return isUndefined(obj) || isNull(obj) || obj === '';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* 判断是否为Base64字符串
|
|
144
|
+
* @param {string} obj 对象
|
|
145
|
+
* @return {Boolean}
|
|
146
|
+
*/
|
|
147
|
+
export function isBase64(obj: any): boolean {
|
|
148
|
+
return isString(obj) && /data:\w*\/\w*;base64,/.test(obj);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* 判断是否为Blob对象
|
|
153
|
+
* @param {object} obj 对象
|
|
154
|
+
* @return {Boolean}
|
|
155
|
+
*/
|
|
156
|
+
export function isBlob(obj: any): boolean {
|
|
157
|
+
return obj instanceof Blob;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* 判断是不是JSON字符串
|
|
162
|
+
* @param {object} obj 任意类型
|
|
163
|
+
* @return {Boolean}
|
|
164
|
+
*/
|
|
165
|
+
export function isJsonString(obj: any): boolean {
|
|
166
|
+
try {
|
|
167
|
+
JSON.parse(obj);
|
|
168
|
+
return true;
|
|
169
|
+
} catch (e) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* 判断是不是数组字符串
|
|
176
|
+
* @param {object} obj 任意类型
|
|
177
|
+
* @return {Boolean}
|
|
178
|
+
*/
|
|
179
|
+
export function isArrayString(obj: any): boolean {
|
|
180
|
+
try {
|
|
181
|
+
const a = JSON.parse(obj);
|
|
182
|
+
return isArray(a);
|
|
183
|
+
} catch (e) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* 判断是不是对象字符串
|
|
190
|
+
* @param {object} obj 任意类型
|
|
191
|
+
* @return {Boolean}
|
|
192
|
+
*/
|
|
193
|
+
export function isObjectString(obj: any): boolean {
|
|
194
|
+
try {
|
|
195
|
+
const o = JSON.parse(obj);
|
|
196
|
+
return isObject(o);
|
|
197
|
+
} catch (e) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* 判断是不是经过编码的字符串
|
|
204
|
+
* @param {object} str 字符串
|
|
205
|
+
* @return {Boolean}
|
|
206
|
+
*/
|
|
207
|
+
export const isEncoded = (str: any) => {
|
|
208
|
+
try {
|
|
209
|
+
return str !== decodeURIComponent(str);
|
|
210
|
+
} catch (_e) {
|
|
211
|
+
// 如果解码失败,说明字符串未被正确编码
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* 检查对象是否拥有指定的自身属性(不检查原型链)
|
|
218
|
+
* @param obj 要检查的对象
|
|
219
|
+
* @param key 属性名
|
|
220
|
+
* @returns {boolean} 如果对象自身包含该属性则返回 true,否则返回 false
|
|
221
|
+
*/
|
|
222
|
+
export const hasOwnProp = (obj: unknown, key: PropertyKey): boolean => {
|
|
223
|
+
return obj != null && Object.prototype.hasOwnProperty.call(obj, key);
|
|
224
|
+
};
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
</template>
|
|
19
19
|
</p>
|
|
20
20
|
</template>
|
|
21
|
-
<Input v-if="col.model[0] === 'Input'" v-model="col._data[col.field]" :interacted="interacted" :rules="col.rules" class="full
|
|
21
|
+
<Input v-if="col.model[0] === 'Input'" v-model="col._data[col.field]" :interacted="interacted" :rules="col.rules" class="w-full" v-bind="{ ...(col.model[1] || {}) }" />
|
|
22
22
|
<Select
|
|
23
23
|
v-else-if="col.model[0] === 'Select'"
|
|
24
24
|
v-model="col._data[col.field]"
|
|
25
25
|
:interacted="interacted"
|
|
26
26
|
:options="col.enums"
|
|
27
27
|
:rules="col?.rules"
|
|
28
|
-
class="full
|
|
28
|
+
class="w-full"
|
|
29
29
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
30
30
|
></Select>
|
|
31
31
|
<SelectList
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
:interacted="interacted"
|
|
35
35
|
:options="col.enums"
|
|
36
36
|
:rules="col?.rules"
|
|
37
|
-
class="full
|
|
37
|
+
class="w-full"
|
|
38
38
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
39
39
|
/>
|
|
40
40
|
<SelectTags
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
:interacted="interacted"
|
|
44
44
|
:options="col.enums"
|
|
45
45
|
:rules="col?.rules"
|
|
46
|
-
class="full
|
|
46
|
+
class="w-full"
|
|
47
47
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
48
48
|
/>
|
|
49
49
|
<SelectPicker
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
:interacted="interacted"
|
|
53
53
|
:options="col.enums"
|
|
54
54
|
:rules="col?.rules"
|
|
55
|
-
class="full
|
|
55
|
+
class="w-full"
|
|
56
56
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
57
57
|
/>
|
|
58
58
|
<SearchSelect
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
:interacted="interacted"
|
|
62
62
|
:options="col.enums"
|
|
63
63
|
:rules="col.rules"
|
|
64
|
-
class="full
|
|
64
|
+
class="w-full"
|
|
65
65
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
66
66
|
/>
|
|
67
67
|
<MoreSelect
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
:interacted="interacted"
|
|
71
71
|
:options="col.enums"
|
|
72
72
|
:rules="col.rules"
|
|
73
|
-
class="full
|
|
73
|
+
class="w-full"
|
|
74
74
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
75
75
|
/>
|
|
76
76
|
<MoreSelectList
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
:interacted="interacted"
|
|
80
80
|
:options="col.enums"
|
|
81
81
|
:rules="col.rules"
|
|
82
|
-
class="full
|
|
82
|
+
class="w-full"
|
|
83
83
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
84
84
|
/>
|
|
85
85
|
<MoreSelectTags
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
:interacted="interacted"
|
|
89
89
|
:options="col.enums"
|
|
90
90
|
:rules="col.rules"
|
|
91
|
-
class="full
|
|
91
|
+
class="w-full"
|
|
92
92
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
93
93
|
/>
|
|
94
94
|
<MoreSelectPicker
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
:interacted="interacted"
|
|
98
98
|
:options="col.enums"
|
|
99
99
|
:rules="col.rules"
|
|
100
|
-
class="full
|
|
100
|
+
class="w-full"
|
|
101
101
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
102
102
|
/>
|
|
103
103
|
<SearchMoreSelect
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
:interacted="interacted"
|
|
107
107
|
:options="col.enums"
|
|
108
108
|
:rules="col.rules"
|
|
109
|
-
class="full
|
|
109
|
+
class="w-full"
|
|
110
110
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
111
111
|
/>
|
|
112
112
|
<PageSelect
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
:interacted="interacted"
|
|
116
116
|
:options="col.enums"
|
|
117
117
|
:rules="col.rules"
|
|
118
|
-
class="full
|
|
118
|
+
class="w-full"
|
|
119
119
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
120
120
|
/>
|
|
121
121
|
<SelectTree
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
:interacted="interacted"
|
|
125
125
|
:options="col.enums"
|
|
126
126
|
:rules="col.rules"
|
|
127
|
-
class="full
|
|
127
|
+
class="w-full"
|
|
128
128
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
129
129
|
/>
|
|
130
130
|
<DatePicker
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
v-model="col._data[col.field]"
|
|
133
133
|
:interacted="interacted"
|
|
134
134
|
:rules="col.rules"
|
|
135
|
-
class="full
|
|
135
|
+
class="w-full"
|
|
136
136
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
137
137
|
/>
|
|
138
138
|
<DateRangePicker
|
|
@@ -140,18 +140,18 @@
|
|
|
140
140
|
v-model="col._data[col.field]"
|
|
141
141
|
:interacted="interacted"
|
|
142
142
|
:rules="col.rules"
|
|
143
|
-
class="full
|
|
143
|
+
class="w-full"
|
|
144
144
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
145
145
|
/>
|
|
146
146
|
<ImgUpload v-else-if="col.model[0] === 'ImgUpload'" v-model="col._data[col.field]" :interacted="interacted" :rules="col.rules" v-bind="{ ...(col.model[1] || {}) }" />
|
|
147
147
|
<Upload v-else-if="col.model[0] === 'Upload'" v-model="col._data[col.field]" :interacted="interacted" :rules="col.rules" v-bind="{ ...(col.model[1] || {}) }" />
|
|
148
|
-
<
|
|
149
|
-
v-else-if="col.model[0] === '
|
|
148
|
+
<Textarea
|
|
149
|
+
v-else-if="col.model[0] === 'Textarea'"
|
|
150
150
|
v-model="col._data[col.field]"
|
|
151
151
|
:interacted="interacted"
|
|
152
152
|
:rules="col.rules"
|
|
153
153
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
154
|
-
></
|
|
154
|
+
></Textarea>
|
|
155
155
|
<Switch v-else-if="col.model[0] === 'Switch'" v-model="col._data[col.field]" :interacted="interacted" :rules="col.rules" v-bind="{ ...(col.model[1] || {}) }" />
|
|
156
156
|
<Tree v-else-if="col.model[0] === 'Tree'" v-model="col._data[col.field]" :interacted="interacted" :rules="col.rules" class="mt-sm" v-bind="{ ...(col.model[1] || {}) }" />
|
|
157
157
|
<Cascader
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
:interacted="interacted"
|
|
161
161
|
:options="col.enums"
|
|
162
162
|
:rules="col.rules"
|
|
163
|
-
class="full
|
|
163
|
+
class="w-full"
|
|
164
164
|
v-bind="{ ...(col.model[1] || {}) }"
|
|
165
165
|
/>
|
|
166
166
|
<template v-else>
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
import {
|
|
188
188
|
Input,
|
|
189
189
|
Switch,
|
|
190
|
-
|
|
190
|
+
Textarea,
|
|
191
191
|
Select,
|
|
192
192
|
SelectList,
|
|
193
193
|
SelectTags,
|