ph-utils 0.2.1 → 0.2.5
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/lib/dom.d.ts +15 -2
- package/lib/dom.js +17 -0
- package/lib/index.d.ts +1 -1
- package/lib/index_m.d.ts +1 -1
- package/lib/index_m.js +1 -1
- package/lib/validator.js +10 -5
- package/lib/validator_m.js +9 -5
- package/lib/web.js +1 -1
- package/package.json +3 -3
package/lib/dom.d.ts
CHANGED
@@ -15,6 +15,13 @@ export declare function addClass(elem: HTMLElement, clazz: string): void;
|
|
15
15
|
* @param {string} clazz 需要移除的 class
|
16
16
|
*/
|
17
17
|
export declare function removeClass(elem: HTMLElement, clazz: string): void;
|
18
|
+
/**
|
19
|
+
* 判断节点是否包含某个 class
|
20
|
+
* @param elem 待判断 class 的节点
|
21
|
+
* @param clazz 待判断的 class
|
22
|
+
* @returns
|
23
|
+
*/
|
24
|
+
export declare function hasClass(elem: HTMLElement, clazz: string): boolean;
|
18
25
|
/**
|
19
26
|
* 为节点添加 transition 属性,包括浏览器前缀
|
20
27
|
* @param {HTMLElement} element 需要添加 css Transition 属性的节点
|
@@ -34,7 +41,7 @@ export declare function transform(element: HTMLElement, value: string): void;
|
|
34
41
|
* @param {function} event 事件处理函数
|
35
42
|
* @param {boolean} onceOrConfig 是否是只运行一次的处理函数或者配置,其中 eventFlag 为 string,如果配置该项,则表明为委托事件
|
36
43
|
*/
|
37
|
-
export declare function on(element: HTMLElement, listener: string, fn: (e:
|
44
|
+
export declare function on<T extends Event>(element: HTMLElement, listener: string, fn: (e: T, target?: HTMLElement, flag?: string) => void, once?: boolean | {
|
38
45
|
once?: boolean;
|
39
46
|
eventFlag?: string;
|
40
47
|
eventStop?: boolean;
|
@@ -58,7 +65,7 @@ export declare function text(element: HTMLElement, textstr?: string): string;
|
|
58
65
|
* @param elems
|
59
66
|
* @param fn 遍历到节点时的回调,回调第一个参数为遍历到的节点,第2个参数为 index;如果回调函数返回 true,则会终止遍历(break)
|
60
67
|
*/
|
61
|
-
export declare function iterate(elems: NodeList, fn: (el: HTMLElement, index: number) => any): void;
|
68
|
+
export declare function iterate(elems: NodeList | HTMLElement[], fn: (el: HTMLElement, index: number) => any): void;
|
62
69
|
/**
|
63
70
|
* 设置或获取节点 data-* 属性
|
64
71
|
* @param elem
|
@@ -67,3 +74,9 @@ export declare function iterate(elems: NodeList, fn: (el: HTMLElement, index: nu
|
|
67
74
|
* @returns
|
68
75
|
*/
|
69
76
|
export declare function attr(elem: HTMLElement, key: string, value?: string): string;
|
77
|
+
/**
|
78
|
+
* 获取指定节点的父节点
|
79
|
+
* @param el
|
80
|
+
* @returns
|
81
|
+
*/
|
82
|
+
export declare function parent(el: HTMLElement): HTMLElement;
|
package/lib/dom.js
CHANGED
@@ -32,6 +32,15 @@ export function addClass(elem, clazz) {
|
|
32
32
|
export function removeClass(elem, clazz) {
|
33
33
|
elem.classList.remove(clazz);
|
34
34
|
}
|
35
|
+
/**
|
36
|
+
* 判断节点是否包含某个 class
|
37
|
+
* @param elem 待判断 class 的节点
|
38
|
+
* @param clazz 待判断的 class
|
39
|
+
* @returns
|
40
|
+
*/
|
41
|
+
export function hasClass(elem, clazz) {
|
42
|
+
return elem.classList.contains(clazz);
|
43
|
+
}
|
35
44
|
/**
|
36
45
|
* 为节点添加 transition 属性,包括浏览器前缀
|
37
46
|
* @param {HTMLElement} element 需要添加 css Transition 属性的节点
|
@@ -147,3 +156,11 @@ export function attr(elem, key, value) {
|
|
147
156
|
return elem.getAttribute('data-' + key);
|
148
157
|
}
|
149
158
|
}
|
159
|
+
/**
|
160
|
+
* 获取指定节点的父节点
|
161
|
+
* @param el
|
162
|
+
* @returns
|
163
|
+
*/
|
164
|
+
export function parent(el) {
|
165
|
+
return el.parentNode;
|
166
|
+
}
|
package/lib/index.d.ts
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
* @param str 待验证的字符串
|
7
7
|
* @param ignoreWhitespace 是否忽略空格(包括空白字符串以及[\r\t\n]之类的制表符),默认为true
|
8
8
|
*/
|
9
|
-
export declare function isBlank(str?: string, ignoreWhitespace?: boolean): boolean;
|
9
|
+
export declare function isBlank(str?: string | null, ignoreWhitespace?: boolean): boolean;
|
10
10
|
/**
|
11
11
|
* 屏蔽手机号,中间部分用 * 展示
|
12
12
|
* @param mobile 待屏蔽的手机号
|
package/lib/index_m.d.ts
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
* @param str 待验证的字符串
|
7
7
|
* @param ignoreWhitespace 是否忽略空格(包括空白字符串以及[\r\t\n]之类的制表符),默认为true
|
8
8
|
*/
|
9
|
-
export declare function isBlank(str?: string, ignoreWhitespace?: boolean): boolean;
|
9
|
+
export declare function isBlank(str?: string | null, ignoreWhitespace?: boolean): boolean;
|
10
10
|
/**
|
11
11
|
* 屏蔽手机号,中间部分用 * 展示
|
12
12
|
* @param mobile 待屏蔽的手机号
|
package/lib/index_m.js
CHANGED
@@ -36,7 +36,7 @@ export function shieldMobile(mobile) {
|
|
36
36
|
* @returns true 是数字, false 不是数字
|
37
37
|
*/
|
38
38
|
export function isNumeric(str, numericParam) {
|
39
|
-
numericParam =
|
39
|
+
numericParam = { isPositive: false, isFloat: true, ...(numericParam || {}) };
|
40
40
|
let symbol = numericParam.isPositive ? '[+]?' : '[+-]?';
|
41
41
|
let main = numericParam.isFloat ? '([0-9]*[.])?[0-9]+' : '[0-9]+';
|
42
42
|
return new RegExp('^' + symbol + main + '$').test(str);
|
package/lib/validator.js
CHANGED
@@ -53,9 +53,11 @@ const typeFns = {
|
|
53
53
|
};
|
54
54
|
class ValidateError extends Error {
|
55
55
|
name;
|
56
|
-
|
56
|
+
key;
|
57
|
+
constructor(key, msg) {
|
57
58
|
super(msg);
|
58
59
|
this.name = 'ValidateError';
|
60
|
+
this.key = key;
|
59
61
|
}
|
60
62
|
}
|
61
63
|
/**
|
@@ -95,7 +97,7 @@ class Validator {
|
|
95
97
|
}
|
96
98
|
else {
|
97
99
|
if (typeof ruleItem.rule === 'string') {
|
98
|
-
rules = rules.concat(this._parseStringRule(ruleItem.rule));
|
100
|
+
rules = rules.concat(this._parseStringRule(ruleItem.rule, ruleItem.message));
|
99
101
|
}
|
100
102
|
else {
|
101
103
|
rules.push({ rule: ruleItem.rule, message: ruleItem.message || defaultMsg });
|
@@ -119,6 +121,7 @@ class Validator {
|
|
119
121
|
validate(data) {
|
120
122
|
return new Promise((resolve, reject) => {
|
121
123
|
let errMsg = '';
|
124
|
+
let errKey = '';
|
122
125
|
let resData = {};
|
123
126
|
for (let key in this.rules) {
|
124
127
|
if ({}.hasOwnProperty.call(this.rules, key)) {
|
@@ -127,6 +130,7 @@ class Validator {
|
|
127
130
|
resData[key] = this._conversionType(this.types[key], data[key]);
|
128
131
|
}
|
129
132
|
else {
|
133
|
+
errKey = key;
|
130
134
|
errMsg = errMsg.replace('%s', key);
|
131
135
|
break;
|
132
136
|
}
|
@@ -136,7 +140,7 @@ class Validator {
|
|
136
140
|
resolve(resData);
|
137
141
|
}
|
138
142
|
else {
|
139
|
-
reject(new ValidateError(errMsg));
|
143
|
+
reject(new ValidateError(errKey, errMsg));
|
140
144
|
}
|
141
145
|
});
|
142
146
|
}
|
@@ -154,7 +158,7 @@ class Validator {
|
|
154
158
|
}
|
155
159
|
else {
|
156
160
|
errMsg = errMsg.replace('%s', key);
|
157
|
-
reject(new ValidateError(errMsg));
|
161
|
+
reject(new ValidateError(key, errMsg));
|
158
162
|
}
|
159
163
|
});
|
160
164
|
}
|
@@ -192,7 +196,7 @@ class Validator {
|
|
192
196
|
}
|
193
197
|
return errMsg;
|
194
198
|
}
|
195
|
-
_parseStringRule(rule) {
|
199
|
+
_parseStringRule(rule, ruleErrMsg) {
|
196
200
|
let rules = [];
|
197
201
|
let trule = rule.split('|');
|
198
202
|
for (let r of trule) {
|
@@ -211,6 +215,7 @@ class Validator {
|
|
211
215
|
rrule = ruleRegexs[r];
|
212
216
|
message = defaultMsgs[r] || defaultMsg;
|
213
217
|
}
|
218
|
+
message = ruleErrMsg || message;
|
214
219
|
rules.push({ rule: rrule, message: message, sameKey });
|
215
220
|
}
|
216
221
|
return rules;
|
package/lib/validator_m.js
CHANGED
@@ -51,9 +51,10 @@ const typeFns = {
|
|
51
51
|
},
|
52
52
|
};
|
53
53
|
class ValidateError extends Error {
|
54
|
-
constructor(msg) {
|
54
|
+
constructor(key, msg) {
|
55
55
|
super(msg);
|
56
56
|
this.name = 'ValidateError';
|
57
|
+
this.key = key;
|
57
58
|
}
|
58
59
|
}
|
59
60
|
/**
|
@@ -91,7 +92,7 @@ class Validator {
|
|
91
92
|
}
|
92
93
|
else {
|
93
94
|
if (typeof ruleItem.rule === 'string') {
|
94
|
-
rules = rules.concat(this._parseStringRule(ruleItem.rule));
|
95
|
+
rules = rules.concat(this._parseStringRule(ruleItem.rule, ruleItem.message));
|
95
96
|
}
|
96
97
|
else {
|
97
98
|
rules.push({ rule: ruleItem.rule, message: ruleItem.message || defaultMsg });
|
@@ -115,6 +116,7 @@ class Validator {
|
|
115
116
|
validate(data) {
|
116
117
|
return new Promise((resolve, reject) => {
|
117
118
|
let errMsg = '';
|
119
|
+
let errKey = '';
|
118
120
|
let resData = {};
|
119
121
|
for (let key in this.rules) {
|
120
122
|
if ({}.hasOwnProperty.call(this.rules, key)) {
|
@@ -123,6 +125,7 @@ class Validator {
|
|
123
125
|
resData[key] = this._conversionType(this.types[key], data[key]);
|
124
126
|
}
|
125
127
|
else {
|
128
|
+
errKey = key;
|
126
129
|
errMsg = errMsg.replace('%s', key);
|
127
130
|
break;
|
128
131
|
}
|
@@ -132,7 +135,7 @@ class Validator {
|
|
132
135
|
resolve(resData);
|
133
136
|
}
|
134
137
|
else {
|
135
|
-
reject(new ValidateError(errMsg));
|
138
|
+
reject(new ValidateError(errKey, errMsg));
|
136
139
|
}
|
137
140
|
});
|
138
141
|
}
|
@@ -150,7 +153,7 @@ class Validator {
|
|
150
153
|
}
|
151
154
|
else {
|
152
155
|
errMsg = errMsg.replace('%s', key);
|
153
|
-
reject(new ValidateError(errMsg));
|
156
|
+
reject(new ValidateError(key, errMsg));
|
154
157
|
}
|
155
158
|
});
|
156
159
|
}
|
@@ -188,7 +191,7 @@ class Validator {
|
|
188
191
|
}
|
189
192
|
return errMsg;
|
190
193
|
}
|
191
|
-
_parseStringRule(rule) {
|
194
|
+
_parseStringRule(rule, ruleErrMsg) {
|
192
195
|
let rules = [];
|
193
196
|
let trule = rule.split('|');
|
194
197
|
for (let r of trule) {
|
@@ -207,6 +210,7 @@ class Validator {
|
|
207
210
|
rrule = ruleRegexs[r];
|
208
211
|
message = defaultMsgs[r] || defaultMsg;
|
209
212
|
}
|
213
|
+
message = ruleErrMsg || message;
|
210
214
|
rules.push({ rule: rrule, message: message, sameKey });
|
211
215
|
}
|
212
216
|
return rules;
|
package/lib/web.js
CHANGED
package/package.json
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
"module": "lib/index_m.js",
|
6
6
|
"types": "lib/index.d.ts",
|
7
7
|
"browser": "lib/index_m.js",
|
8
|
-
"version": "0.2.
|
8
|
+
"version": "0.2.5",
|
9
9
|
"repository": {
|
10
10
|
"type": "git",
|
11
11
|
"url": "git+https//gitee.com/towardly/ph.git",
|
@@ -18,8 +18,8 @@
|
|
18
18
|
},
|
19
19
|
"homepage": "https://gitee.com/towardly/ph/tree/master/packages/utils",
|
20
20
|
"devDependencies": {
|
21
|
-
"@types/node": "^
|
22
|
-
"typescript": "^4.
|
21
|
+
"@types/node": "^17.0.21",
|
22
|
+
"typescript": "^4.5.5"
|
23
23
|
},
|
24
24
|
"scripts": {
|
25
25
|
"build": "node scripts/build.js"
|