@ajaxjs/ui 1.1.3 → 1.1.4

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.
@@ -1,283 +1,282 @@
1
- namespace aj.form {
1
+ /**
2
+ * 错误的元素
3
+ */
4
+ interface ErrorElement {
2
5
  /**
3
- * 错误的元素
6
+ * DOM 元素
4
7
  */
5
- interface ErrorElement {
6
- /**
7
- * DOM 元素
8
- */
9
- el: HTMLFormControl;
10
-
11
- /**
12
- * 错误的讯息
13
- */
14
- msg: string;
15
- }
8
+ el: HTMLFormControl;
16
9
 
17
10
  /**
18
- * 通常是表单里面的 input 元素,但是 ts 没有对应的类型
11
+ * 错误的讯息
19
12
  */
20
- export interface HTMLFormControl extends HTMLElement {
21
- type: string;
22
- disabled: boolean;
23
- validity: ValidityState;
24
- name: string;
25
- value: string;
26
- form: HTMLFormElement;
13
+ msg: string;
14
+ }
15
+
16
+ /**
17
+ * 通常是表单里面的 input 元素,但是 ts 没有对应的类型
18
+ */
19
+ export interface HTMLFormControl extends HTMLElement {
20
+ type: string;
21
+ disabled: boolean;
22
+ validity: ValidityState;
23
+ name: string;
24
+ value: string;
25
+ form: HTMLFormElement;
26
+ }
27
+
28
+ if (!('validity' in document.createElement('input')))
29
+ window.alert("不支持 HTML5 表单验证");
30
+
31
+ /**
32
+ * 表单验证器
33
+ */
34
+ export class Validator {
35
+ constructor(el: HTMLFormElement) {
36
+ // let isMsgNewLine: boolean = el.dataset.msgNewline === "true";
37
+ el.setAttribute('novalidate', 'true');// 禁止浏览器原生的错误提示
38
+ this.el = el;
39
+ this.checkEveryField();
27
40
  }
28
41
 
29
- if (!('validity' in document.createElement('input')))
30
- window.alert("不支持 HTML5 表单验证");
42
+ /**
43
+ * 表单元素
44
+ */
45
+ private el: HTMLFormElement;
46
+
47
+ private errorElements: ErrorElement[] = [];
31
48
 
32
49
  /**
33
- * 表单验证器
50
+ * 对每一个表单元素监听事件,一失去焦点就触发表单验证
34
51
  */
35
- export class Validator {
36
- constructor(el: HTMLFormElement) {
37
- // let isMsgNewLine: boolean = el.dataset.msgNewline === "true";
38
- el.setAttribute('novalidate', 'true');// 禁止浏览器原生的错误提示
39
- this.el = el;
40
- this.checkEveryField();
41
- }
52
+ private checkEveryField(): void {
53
+ let arr: NodeListOf<HTMLInputElement> = this.el.querySelectorAll('input');
54
+ arr.forEach((input: HTMLInputElement) => {
55
+ input.addEventListener('blur', (ev: Event) => {
56
+ let el: HTMLFormControl = <HTMLFormControl>ev.target;
57
+
58
+ if (el.tagName == "A" || Validator.isIgnoreEl(el))// 忽略部分元素;a 元素也有 blur 事件,忽略之
59
+ return;
60
+
61
+ let result: ErrorElement | null = Validator.check(el);
62
+
63
+ if (result) { // 如果有错误,就把它显示出来
64
+ this.errorElements.push(result);
65
+ this.showError(result);
66
+ } else
67
+ this.removeError(el); // 否则, 移除所有存在的错误信息
68
+ }, true);
69
+ });
70
+ }
42
71
 
43
- /**
44
- * 表单元素
45
- */
46
- private el: HTMLFormElement;
47
-
48
- private errorElements: ErrorElement[] = [];
49
-
50
- /**
51
- * 对每一个表单元素监听事件,一失去焦点就触发表单验证
52
- */
53
- private checkEveryField(): void {
54
- this.el.$('input', (input: HTMLInputElement) => {
55
- input.addEventListener('blur', (ev: Event) => {
56
- let el: HTMLFormControl = <HTMLFormControl>ev.target;
57
-
58
- if (el.tagName == "A" || Validator.isIgnoreEl(el))// 忽略部分元素;a 元素也有 blur 事件,忽略之
59
- return;
60
-
61
- let result: ErrorElement | null = Validator.check(el);
62
-
63
- if (result) { // 如果有错误,就把它显示出来
64
- this.errorElements.push(result);
65
- this.showError(result);
66
- } else
67
- this.removeError(el); // 否则, 移除所有存在的错误信息
68
- }, true);
69
- });
72
+ /**
73
+ *
74
+ * @param err
75
+ */
76
+ private showError(err: ErrorElement): void {
77
+ let el = err.el,
78
+ id: string = el.id || el.name; // 获取字段 id 或者 name
79
+
80
+ if (!id)
81
+ return;
82
+
83
+ err.el.classList.add('error'); // 将错误类添加到字段
84
+
85
+ // 检查错误消息字段是否已经存在 如果没有, 就创建一个
86
+ let message = err.el.form.querySelector(`.error-message#error-for-${id}`);
87
+ if (!message) {
88
+ message = document.createElement('div');
89
+ message.className = 'error-message';
90
+ message.id = 'error-for-' + id;
91
+ el.parentNode?.insertBefore(message, el.nextSibling);
70
92
  }
71
93
 
72
- /**
73
- *
74
- * @param err
75
- */
76
- private showError(err: ErrorElement): void {
77
- let el = err.el,
78
- id: string = el.id || el.name; // 获取字段 id 或者 name
79
-
80
- if (!id)
81
- return;
82
-
83
- err.el.classList.add('error'); // 将错误类添加到字段
84
-
85
- // 检查错误消息字段是否已经存在 如果没有, 就创建一个
86
- let message = err.el.form.$(`.error-message#error-for-${id}`);
87
- if (!message) {
88
- message = document.createElement('div');
89
- message.className = 'error-message';
90
- message.id = 'error-for-' + id;
91
- el.parentNode?.insertBefore(message, el.nextSibling);
92
- }
94
+ el.setAttribute('aria-describedby', 'error-for-' + id);// 添加 ARIA role 到字段
95
+ (<HTMLElement>message).innerHTML = err.msg;// 更新错误信息
93
96
 
94
- el.setAttribute('aria-describedby', 'error-for-' + id);// 添加 ARIA role 到字段
95
- (<HTMLElement>message).innerHTML = err.msg;// 更新错误信息
97
+ // if (!isNewLine)// 显示错误信息
98
+ // message.style.display = 'inline-block';
96
99
 
97
- // if (!isNewLine)// 显示错误信息
98
- // message.style.display = 'inline-block';
100
+ (<HTMLElement>message).classList.remove('hide');
101
+ }
99
102
 
100
- (<HTMLElement>message).classList.remove('hide');
103
+ /**
104
+ * 移除所有的错误信息
105
+ *
106
+ * @param el
107
+ */
108
+ private removeError(el: HTMLFormControl): void {
109
+ let id: string = el.id || el.name;// 获取字段的 id 或者 name
110
+ if (!id)
111
+ return;
112
+
113
+ el.classList.remove('error'); // 删除字段的错误类
114
+ el.removeAttribute('aria-describedby'); // 移除字段的 ARIA role
115
+
116
+ let message: HTMLElement | null = <HTMLElement | null>el.form.querySelector(`.error-message#error-for-${id}`); // 检查 DOM 中是否有错误消息
117
+ if (message) {
118
+ message.innerHTML = ''; // 如果有错误消息就隐藏它
119
+ message.classList.add('hide');
101
120
  }
121
+ }
122
+
123
+ /**
124
+ * 是否忽略的表单元素
125
+ *
126
+ * @param el
127
+ */
128
+ private static isIgnoreEl(el: HTMLFormControl): boolean {
129
+ return el.disabled || el.type === 'file' || el.type === 'reset' || el.type === 'submit' || el.type === 'button';
130
+ }
102
131
 
103
- /**
104
- * 移除所有的错误信息
105
- *
106
- * @param el
107
- */
108
- private removeError(el: HTMLFormControl): void {
109
- let id: string = el.id || el.name;// 获取字段的 id 或者 name
110
- if (!id)
111
- return;
112
-
113
- el.classList.remove('error'); // 删除字段的错误类
114
- el.removeAttribute('aria-describedby'); // 移除字段的 ARIA role
115
-
116
- let message: HTMLElement | null = <HTMLElement | null>el.form.$(`.error-message#error-for-${id}`); // 检查 DOM 中是否有错误消息
117
- if (message) {
118
- message.innerHTML = ''; // 如果有错误消息就隐藏它
119
- message.classList.add('hide');
132
+ /**
133
+ * 验证字段
134
+ *
135
+ * @param field 表单字段元素
136
+ * @returns 若验证通过返回 null,否则返回 ErrorElement
137
+ */
138
+ public static check(field: HTMLFormControl): ErrorElement | null {
139
+ // if (!field || !field.getAttribute)
140
+ // console.log(field);
141
+
142
+ let validity: ValidityState = field.validity; // 获取 validity
143
+
144
+ if (!validity)
145
+ throw '浏览器不支持 HTML5 表单验证';
146
+
147
+ if (validity.valid) // 通过验证
148
+ return null;
149
+ else {
150
+ let result: ErrorElement = {
151
+ el: field,
152
+ msg: "无效输入" // 通用错误讯息 The value you entered for this field is invalid.
153
+ };
154
+
155
+ if (validity.valueMissing) // 如果是必填字段但是字段为空时
156
+ result.msg = '该项是必填项';
157
+
158
+ if (validity.typeMismatch) { // 如果类型不正确
159
+ if (field.type === 'email')
160
+ result.msg = '请输入有效的邮件地址';
161
+ else if (field.type === 'url')
162
+ result.msg = '请输入一个有效的网址';
163
+ else
164
+ result.msg = '请输入正确的类型';
120
165
  }
121
- }
122
166
 
123
- /**
124
- * 是否忽略的表单元素
125
- *
126
- * @param el
127
- */
128
- private static isIgnoreEl(el: HTMLFormControl): boolean {
129
- return el.disabled || el.type === 'file' || el.type === 'reset' || el.type === 'submit' || el.type === 'button';
130
- }
167
+ if (validity.tooShort)
168
+ result.msg = `请输入至少${field.getAttribute('minLength')}个字符。当前你输入了${field.value.length}个字符。`;
169
+ // 'Please lengthen this text to ' + field.getAttribute('minLength') + ' characters or more. You are currently using ' + field.value.length + ' characters.'
131
170
 
132
- /**
133
- * 验证字段
134
- *
135
- * @param field 表单字段元素
136
- * @returns 若验证通过返回 null,否则返回 ErrorElement
137
- */
138
- public static check(field: HTMLFormControl): ErrorElement | null {
139
- // if (!field || !field.getAttribute)
140
- // console.log(field);
141
-
142
- let validity: ValidityState = field.validity; // 获取 validity
143
-
144
- if (!validity)
145
- throw '浏览器不支持 HTML5 表单验证';
146
-
147
- if (validity.valid) // 通过验证
148
- return null;
149
- else {
150
- let result: ErrorElement = {
151
- el: field,
152
- msg: "无效输入" // 通用错误讯息 The value you entered for this field is invalid.
153
- };
154
-
155
- if (validity.valueMissing) // 如果是必填字段但是字段为空时
156
- result.msg = '该项是必填项';
157
-
158
- if (validity.typeMismatch) { // 如果类型不正确
159
- if (field.type === 'email')
160
- result.msg = '请输入有效的邮件地址';
161
- else if (field.type === 'url')
162
- result.msg = '请输入一个有效的网址';
163
- else
164
- result.msg = '请输入正确的类型';
165
- }
166
-
167
- if (validity.tooShort)
168
- result.msg = `请输入至少${field.getAttribute('minLength')}个字符。当前你输入了${field.value.length}个字符。`;
169
- // 'Please lengthen this text to ' + field.getAttribute('minLength') + ' characters or more. You are currently using ' + field.value.length + ' characters.'
170
-
171
- if (validity.tooLong)
172
- result.msg = `你只能输入最多${field.getAttribute('maxLength')}个字符。当前你输入了${field.value.length}个字符。`;
173
- // 'Please shorten this text to no more than ' + field.getAttribute('maxLength') + ' characters. You are currently using ' + field.value.length + ' characters.';
174
-
175
- if (validity.badInput)
176
- result.msg = '请输入数字';
177
-
178
- if (validity.stepMismatch) // 如果数字值与步进间隔不匹配
179
- result.msg = '请选择一个有效值';
180
-
181
- if (validity.rangeOverflow) // 如果数字字段的值大于 max 的值
182
- result.msg = `请选择小于 ${field.getAttribute('max')} 的值`;
183
- // return 'Please select a value that is no more than ' + field.getAttribute('max') + '.';
184
-
185
- if (validity.rangeUnderflow)
186
- result.msg = `请选择大于 ${field.getAttribute('min')} 的值`;
187
- // return 'Please select a value that is no less than ' + field.getAttribute('min') + '.';
188
-
189
- if (validity.patternMismatch)
190
- result.msg = field.getAttribute('title') || '格式要求不正确';
191
-
192
- return result;
193
- }
171
+ if (validity.tooLong)
172
+ result.msg = `你只能输入最多${field.getAttribute('maxLength')}个字符。当前你输入了${field.value.length}个字符。`;
173
+ // 'Please shorten this text to no more than ' + field.getAttribute('maxLength') + ' characters. You are currently using ' + field.value.length + ' characters.';
174
+
175
+ if (validity.badInput)
176
+ result.msg = '请输入数字';
177
+
178
+ if (validity.stepMismatch) // 如果数字值与步进间隔不匹配
179
+ result.msg = '请选择一个有效值';
180
+
181
+ if (validity.rangeOverflow) // 如果数字字段的值大于 max 的值
182
+ result.msg = `请选择小于 ${field.getAttribute('max')} 的值`;
183
+ // return 'Please select a value that is no more than ' + field.getAttribute('max') + '.';
184
+
185
+ if (validity.rangeUnderflow)
186
+ result.msg = `请选择大于 ${field.getAttribute('min')} 的值`;
187
+ // return 'Please select a value that is no less than ' + field.getAttribute('min') + '.';
188
+
189
+ if (validity.patternMismatch)
190
+ result.msg = field.getAttribute('title') || '格式要求不正确';
191
+
192
+ return result;
194
193
  }
194
+ }
195
195
 
196
- /**
197
- * 是否通过验证
198
- *
199
- * @param form
200
- */
201
- public static onSubmit(form: HTMLFormElement): boolean {
202
- let fields: HTMLFormControlsCollection = form.elements;// 获取所有的表单元素
203
-
204
- // 验证每一个字段
205
- // 将具有错误的第一个字段存储到变量中以便稍后我们将其默认获得焦点
206
- let error: ErrorElement | null, hasErrors: HTMLElement | null = null;
207
-
208
- for (let i = 0, j = fields.length; i < j; i++) {
209
- let el: HTMLFormControl = <HTMLFormControl>fields[i];
210
- error = this.check(el);
211
-
212
- if (error) {
213
- // showError(el);
214
- if (!hasErrors) // 如果有错误,停止提交表单并使出现错误的第一个元素获得焦点
215
- hasErrors = <HTMLElement>el;
216
- }
217
- }
196
+ /**
197
+ * 是否通过验证
198
+ *
199
+ * @param form
200
+ */
201
+ public static onSubmit(form: HTMLFormElement): boolean {
202
+ let fields: HTMLFormControlsCollection = form.elements;// 获取所有的表单元素
203
+
204
+ // 验证每一个字段
205
+ // 将具有错误的第一个字段存储到变量中以便稍后我们将其默认获得焦点
206
+ let error: ErrorElement | null, hasErrors: HTMLElement | null = null;
207
+
208
+ for (let i = 0, j = fields.length; i < j; i++) {
209
+ let el: HTMLFormControl = <HTMLFormControl>fields[i];
210
+ error = this.check(el);
218
211
 
219
- if (hasErrors) {
220
- hasErrors.focus();
221
- return false;
212
+ if (error) {
213
+ // showError(el);
214
+ if (!hasErrors) // 如果有错误,停止提交表单并使出现错误的第一个元素获得焦点
215
+ hasErrors = <HTMLElement>el;
222
216
  }
217
+ }
223
218
 
224
- return true;
219
+ if (hasErrors) {
220
+ hasErrors.focus();
221
+ return false;
225
222
  }
223
+
224
+ return true;
226
225
  }
227
226
  }
228
227
 
229
228
 
230
- // ; (function (window, document, undefined) { // 确保 ValidityState 全部被支持 (所有的功能)
229
+ // ; (function (window, document, undefined) { // 确保 ValidityState 全部被支持 (所有的功能)
231
230
  // var supported = function () {
232
231
  // var input = document.createElement('input');
233
232
  // return ('validity' in input && 'badInput' in input.validity && 'patternMismatch' in input.validity && 'rangeOverflow' in input.validity && 'rangeUnderflow' in input.validity && 'stepMismatch' in input.validity && 'tooLong' in input.validity && 'tooShort' in input.validity && 'typeMismatch' in input.validity && 'valid' in input.validity && 'valueMissing' in input.validity);
234
233
  // };
235
234
 
236
- // /**
235
+ // /**
237
236
  // * Generate the field validity object
238
- // * @param {Node]} field The field to validate
239
- // * @return {Object} The validity object
237
+ // * @param {Node]} field The field to validate
238
+ // * @return {Object} The validity object
240
239
  // **/
241
240
  // var getValidityState = function (field) {
242
- // // 变量
243
- // var type = field.getAttribute('type') || input.nodeName.toLowerCase();
244
- // var isNum = type === 'number' || type === 'range';
245
- // var length = field.value.length; var valid = true;
241
+ // // 变量
242
+ // var type = field.getAttribute('type') || input.nodeName.toLowerCase();
243
+ // var isNum = type === 'number' || type === 'range';
244
+ // var length = field.value.length; var valid = true;
246
245
  // //检测支持性
247
246
  // var checkValidity = {
248
247
  // badInput: (isNum && length > 0 && !/[-+]?[0-9]/.test(field.value)),
249
- // // 数字字段的值不是数字
248
+ // // 数字字段的值不是数字
250
249
  // patternMismatch: (field.hasAttribute('pattern') && length > 0 && new RegExp(field.getAttribute('pattern')).test(field.value) === false),
251
- // // 输入的值不符合模式
250
+ // // 输入的值不符合模式
252
251
  // rangeOverflow: (field.hasAttribute('max') && isNum && field.value > 1 && parseInt(field.value, 10) > parseInt(field.getAttribute('max'), 10)),
253
- // // 数字字段的值大于max属性值
252
+ // // 数字字段的值大于max属性值
254
253
  // rangeUnderflow: (field.hasAttribute('min') && isNum && field.value > 1 && parseInt(field.value, 10) < parseInt(field.getAttribute('min'), 10)),
255
254
  // // 数字字段的值小于min属性值
256
255
  // stepMismatch: (field.hasAttribute('step') && field.getAttribute('step') !== 'any' && isNum && Number(field.value) % parseFloat(field.getAttribute('step')) !== 0),
257
- // // 数字字段的值不符合 stepattribute
256
+ // // 数字字段的值不符合 stepattribute
258
257
  // tooLong: (field.hasAttribute('maxLength') && field.getAttribute('maxLength') > 0 && length > parseInt(field.getAttribute('maxLength'), 10)),
259
258
  // // 用户在具有maxLength属性的字段中输入的值的长度大于属性值
260
259
  // tooShort: (field.hasAttribute('minLength') && field.getAttribute('minLength') > 0 && length > 0 && length < parseInt(field.getAttribute('minLength'), 10)),
261
- // // 用户在具有minLength属性的字段中输入的值的长度小于属性值
260
+ // // 用户在具有minLength属性的字段中输入的值的长度小于属性值
262
261
  // typeMismatch: (length > 0 && ((type === 'email' && !/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/.test(field.value)) || (type === 'url' && !/^(?:(?:https?|HTTPS?|ftp|FTP):\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-zA-Z\u00a1-\uffff0-9]-*)*[a-zA-Z\u00a1-\uffff0-9]+)(?:\.(?:[a-zA-Z\u00a1-\uffff0-9]-*)*[a-zA-Z\u00a1-\uffff0-9]+)*)(?::\d{2,5})?(?:[\/?#]\S*)?$/.test(field.value)))),
263
- // // email 或者 URL 字段的值不是一个 email地址或者 URL
264
- // valueMissing: (field.hasAttribute('required') && (((type === 'checkbox' || type === 'radio') && !field.checked) || (type === 'select' && field.options[field.selectedIndex].value < 1) || (type !== 'checkbox' && type !== 'radio' && type !== 'select' && length < 1))) // 必填字段没有值
262
+ // // email 或者 URL 字段的值不是一个 email地址或者 URL
263
+ // valueMissing: (field.hasAttribute('required') && (((type === 'checkbox' || type === 'radio') && !field.checked) || (type === 'select' && field.options[field.selectedIndex].value < 1) || (type !== 'checkbox' && type !== 'radio' && type !== 'select' && length < 1))) // 必填字段没有值
265
264
  // };
266
265
 
267
- // // 检查是否有错误
266
+ // // 检查是否有错误
268
267
  // for (var key in checkValidity) {
269
268
  // if (checkValidity.hasOwnProperty(key)) {
270
- // // If there's an error, change valid value
269
+ // // If there's an error, change valid value
271
270
  // if (checkValidity[key]) { valid = false; break; }
272
271
  // }
273
272
  // }
274
273
  // // 给 validity 对象添加 valid 属性
275
274
  // checkValidity.valid = valid;
276
- // // 返回对象
275
+ // // 返回对象
277
276
  // return checkValidity;
278
277
  // };
279
278
 
280
- // // 如果不支持完整的 ValidityState 功能,则可以使用polyfill
279
+ // // 如果不支持完整的 ValidityState 功能,则可以使用polyfill
281
280
  // if (!supported()) {
282
281
  // Object.defineProperty(HTMLInputElement.prototype, 'validity', {
283
282
  // get: function ValidityState() {
package/package.json CHANGED
@@ -1,11 +1,18 @@
1
1
  {
2
2
  "name": "@ajaxjs/ui",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "real ajaxjs ui library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/libs/common.d.ts",
7
+ "homepage": "https://framework.ajaxjs.com/",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/sp42/ajaxjs.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/sp42/ajaxjs/issues"
14
+ },
7
15
  "scripts": {
8
- "test": "echo \"Error: no test specified\" && exit 1",
9
16
  "dev": "vue-cli-service serve",
10
17
  "build": "vue-cli-service build",
11
18
  "release": "tsc && xcopy src\\widget dist\\widget /s /y /d && copy src\\*.d.ts dist\\ && npm publish",
@@ -14,7 +21,7 @@
14
21
  "keywords": [
15
22
  "ajaxjs"
16
23
  ],
17
- "author": "sp42",
24
+ "author": "sp42 <sp42@qq.com>",
18
25
  "license": "Apache License 2.0",
19
26
  "files": [
20
27
  "dist/"
@@ -1 +0,0 @@
1
- @import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css);[data-v-b8542384]:root{--admin-main-color:#1e6bb8}.aj-text-title[data-v-b8542384]{letter-spacing:2px;margin:10px}.aj-table[data-v-b8542384]{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th[data-v-b8542384]{background-color:#efefef;letter-spacing:3px}.aj-table td[data-v-b8542384],.aj-table th[data-v-b8542384]{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr[data-v-b8542384]{transition:background-color .4s ease-out}.aj-table tr[data-v-b8542384]:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr[data-v-b8542384]:hover{background-color:#fbf8e9}.aj-opacity-banner[data-v-b8542384]{position:relative;min-height:90px}.aj-opacity-banner li[data-v-b8542384]{position:absolute;top:0;left:0;opacity:0;width:100%}.aj-opacity-banner img[data-v-b8542384]{width:100%}[data-v-4fbea9da]:root{--admin-main-color:#1e6bb8}.aj-text-title[data-v-4fbea9da]{letter-spacing:2px;margin:10px}.aj-table[data-v-4fbea9da]{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th[data-v-4fbea9da]{background-color:#efefef;letter-spacing:3px}.aj-table td[data-v-4fbea9da],.aj-table th[data-v-4fbea9da]{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr[data-v-4fbea9da]{transition:background-color .4s ease-out}.aj-table tr[data-v-4fbea9da]:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr[data-v-4fbea9da]:hover{background-color:#fbf8e9}.aj-process-line[data-v-4fbea9da]{display:flex;padding:5%;justify-content:center}.aj-process-line .process-line[data-v-4fbea9da]{font-size:18px;color:#d3d3d3;font-weight:700}.aj-process-line .process-line>div[data-v-4fbea9da]{float:left;width:156px;text-align:center;position:relative}.aj-process-line .process-line>div.current[data-v-4fbea9da]{color:#000}.aj-process-line .process-line>div.current span[data-v-4fbea9da]{background-color:grey}.aj-process-line .process-line>div p[data-v-4fbea9da]{font-size:1rem;letter-spacing:3px;padding-top:5%}.aj-process-line .process-line>div span[data-v-4fbea9da]{display:inline-block;width:32px;height:32px;border-radius:50%;color:#fff;line-height:32px;font-size:16px;background-color:#d3d3d3;position:relative;z-index:1}.aj-process-line .process-line>div[data-v-4fbea9da]:last-child:after{display:none}.aj-process-line .process-line>div[data-v-4fbea9da]:after{content:"";position:absolute;top:14px;left:94px;width:124px;height:4px;background-color:#d3d3d3}[data-v-a9e9eb02]:root{--admin-main-color:#1e6bb8}.aj-text-title[data-v-a9e9eb02]{letter-spacing:2px;margin:10px}.aj-table[data-v-a9e9eb02]{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th[data-v-a9e9eb02]{background-color:#efefef;letter-spacing:3px}.aj-table td[data-v-a9e9eb02],.aj-table th[data-v-a9e9eb02]{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr[data-v-a9e9eb02]{transition:background-color .4s ease-out}.aj-table tr[data-v-a9e9eb02]:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr[data-v-a9e9eb02]:hover{background-color:#fbf8e9}.aj-accordion>li h3[data-v-a9e9eb02]{cursor:pointer}.aj-accordion .pressed h3[data-v-a9e9eb02]{color:#000}.aj-accordion>li>ul[data-v-a9e9eb02]{transition:height .5s cubic-bezier(0,1,.5,1);overflow:hidden}.aj-accordion ul[data-v-a9e9eb02]{height:0}.aj-accordion-menu[data-v-a9e9eb02]{overflow:hidden}.aj-accordion-menu>li h3[data-v-a9e9eb02]{cursor:pointer}.aj-accordion-menu .pressed h3[data-v-a9e9eb02]{color:#000}.aj-accordion-menu>li>ul[data-v-a9e9eb02]{transition:height .5s cubic-bezier(0,1,.5,1);overflow:hidden}.aj-accordion-menu ul[data-v-a9e9eb02]{height:0}.aj-accordion-menu>li[data-v-a9e9eb02]{border-top:1px solid #fff;border-bottom:1px solid #d3d3d3}.aj-accordion-menu>li.pressed[data-v-a9e9eb02]{border-top:0;border-bottom:1px solid #d3d3d3;box-shadow:inset 0 10px 15px -15px grey}.aj-accordion-menu>li.pressed h3[data-v-a9e9eb02]{font-weight:700}.aj-accordion-menu>li ul li[data-v-a9e9eb02]{padding-left:15%}.aj-accordion-menu>li ul li a[data-v-a9e9eb02]{width:100%;display:block}.aj-accordion-menu>li ul li.selected a[data-v-a9e9eb02]{color:#000;font-weight:700}.aj-accordion-menu>li h3[data-v-a9e9eb02],.aj-accordion-menu>li li[data-v-a9e9eb02]{padding:5px 0 5px 15px;letter-spacing:2px;line-height:20px;color:#939da8;font-size:12px}.aj-accordion-menu>li h3 a[data-v-a9e9eb02]:hover,.aj-accordion-menu>li h3[data-v-a9e9eb02]:hover,.aj-accordion-menu>li li[data-v-a9e9eb02]:hover,.aj-accordion-menu>li li a[data-v-a9e9eb02]:hover{color:#000}[data-v-52984f04]:root{--admin-main-color:#1e6bb8}.aj-text-title[data-v-52984f04]{letter-spacing:2px;margin:10px}.aj-table[data-v-52984f04]{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th[data-v-52984f04]{background-color:#efefef;letter-spacing:3px}.aj-table td[data-v-52984f04],.aj-table th[data-v-52984f04]{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr[data-v-52984f04]{transition:background-color .4s ease-out}.aj-table tr[data-v-52984f04]:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr[data-v-52984f04]:hover{background-color:#fbf8e9}.aj-expander[data-v-52984f04]{overflow:hidden;position:relative;clear:both;transition:height .2s ease 0s}.aj-expander .mask-layer[data-v-52984f04]{position:absolute;bottom:0;left:0;height:23px;width:100%;background:-webkit-gradient(linear,center top,center bottom,from(transparent),to(#fff))}.aj-expander .openBtn[data-v-52984f04]{background:url(https://ajaxjs.nos-eastchina1.126.net/images/openBtn.png)}.aj-expander .closeBtn[data-v-52984f04]{background:url(https://ajaxjs.nos-eastchina1.126.net/images/closeBtn.png)}.aj-expander .closeBtn[data-v-52984f04],.aj-expander .openBtn[data-v-52984f04]{width:45px;height:32px;position:absolute;cursor:pointer;top:0;right:0}[data-v-6ca070a5]:root{--admin-main-color:#1e6bb8}.aj-text-title[data-v-6ca070a5]{letter-spacing:2px;margin:10px}.aj-table[data-v-6ca070a5]{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th[data-v-6ca070a5]{background-color:#efefef;letter-spacing:3px}.aj-table td[data-v-6ca070a5],.aj-table th[data-v-6ca070a5]{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr[data-v-6ca070a5]{transition:background-color .4s ease-out}.aj-table tr[data-v-6ca070a5]:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr[data-v-6ca070a5]:hover{background-color:#fbf8e9}.aj-widget-baidu-search[data-v-6ca070a5]{padding:0;margin:0}.aj-widget-baidu-search input[type=text][data-v-6ca070a5]{border-radius:5px;border:1px solid grey;padding:0 2px;height:22px}.aj-widget-baidu-search .searchBtn[data-v-6ca070a5]{background:url("data:image/gif;base64,R0lGODlhEAAQAGYAACH5BAEAAAAALAAAAAAQABAApgEAAOD3//n9/+3//936/xt7uX+x1KAQCyeHwsj1/6QcGZDd+fX+/+oOAFW05FCUxMXs+9P0/+T0+7fv/5rm/6fn/bHr/jCBugt0t0CKv47e+4fW9CaEv6fb8w9/weteSfkEAOsJC8xBKehVP+FZPxF1thZ4uMHx/1FBZQdssQ51uLrk9zlumyB3tDBRir3x/7nm+WK75DKb0z2k2XTG6mXD7Gq/6Euq20yk1EWp20ay5Umv4liw3dUcAKowMBqJycEzB8EqANoZACOa2KQNCp4NCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeWgACCDwUIhgaCiYoFNBQWFQs4F4qJBQsRAZkBFTwZlBcbEQMCpAMDCwiUBRQEpCcTCQEwN4iJHBYSAgmwBAEQObWCBRoBAi8JvQMdMsEAGTEQAQTJAw4qlAAmNSsM3RIOPyzYACUzOjY7Qx4uIQfjDykYGC0oHyAN7uOKCiMNQvn6BCkg0SNIkYCJFIgAAhChDyII9QUCADs=") no-repeat 50%;width:25px;height:25px;cursor:pointer;display:inline-block;vertical-align:bottom}.aj-img-thumb img{max-width:50px;max-height:60px;vertical-align:middle}.aj-image-large-view{position:fixed;max-width:400px;transition:top .2s ease-in,left .2s ease-in}.aj-image-large-view img{width:100%}[data-v-cc850222]:root{--admin-main-color:#1e6bb8}.aj-text-title[data-v-cc850222]{letter-spacing:2px;margin:10px}.aj-table[data-v-cc850222]{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th[data-v-cc850222]{background-color:#efefef;letter-spacing:3px}.aj-table td[data-v-cc850222],.aj-table th[data-v-cc850222]{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr[data-v-cc850222]{transition:background-color .4s ease-out}.aj-table tr[data-v-cc850222]:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr[data-v-cc850222]:hover{background-color:#fbf8e9}p[data-v-cc850222]{width:500px;margin:20px auto;text-indent:2em}h2[data-v-cc850222]{margin:20px auto}.aj-file-uploader{width:360px}.aj-file-uploader>*{display:inline-block;vertical-align:middle}.aj-file-uploader label{margin-right:2%}.aj-file-uploader label>div{border:1px solid #d3d3d3;border-radius:5px;text-align:center;color:grey;cursor:pointer;font-size:.8rem;padding:10px;padding-bottom:25px;width:100px;height:70px;transition:border-color .3s linear,color .3s linear}.aj-file-uploader label>div:hover{border-color:grey;color:#000}.aj-file-uploader label>div>div{font-size:2rem}.aj-file-uploader button{min-width:110px}.aj-file-uploader input[type=file]{display:none}.aj-file-uploader .msg{font-size:.8rem;color:grey;max-width:50%;word-break:break-word;text-overflow:ellipsis}.aj-file-uploader .msg>div{font-size:.75rem}.aj-file-uploader .perviewImg{max-width:260px}.aj-file-uploader .fileName{text-overflow:ellipsis;white-space:nowrap;max-width:120px;max-height:20px;overflow:hidden}.aj-form-html-editor ul.toolbar{border:1px solid #c5c5c5;border-radius:4px 4px 0 0;border-bottom:0;background-color:#e8e7e4;width:100%;min-height:30px;margin:0;box-sizing:border-box;padding:3px 4px}.aj-form-html-editor ul.toolbar>li{list-style:none;float:left;cursor:pointer}.aj-form-html-editor ul.toolbar>li>i{border:1px solid transparent;min-width:25px;height:20px;line-height:20px;text-align:center;display:block}.aj-form-html-editor ul.toolbar>li>i.text-icon{font-family:Times New Roman;font-weight:700;font-style:normal}.aj-form-html-editor ul.toolbar>li>i.fontAwesome{padding-top:2px;font:normal normal normal 18px/1 FontAwesome}.aj-form-html-editor ul.toolbar>li>i:hover{border-right-color:#aaa;border-bottom-color:#aaa;border-top-color:#fff;border-left-color:#fff}.aj-form-html-editor ul.toolbar>li>i:active{border-right-color:#f3f8fc;border-bottom-color:#f3f8fc;border-top-color:#ccc;border-left-color:#ccc}.aj-form-html-editor ul.toolbar>li ul li{padding:3px;cursor:pointer}.aj-form-html-editor ul.toolbar>li ul li:hover{background-color:#d3d3d3}.aj-form-html-editor ul.toolbar>li .cleanHTML{background-size:16px 16px}.aj-form-html-editor ul.toolbar>li .noBg{background-image:none}.aj-form-html-editor .editorBody iframe,.aj-form-html-editor .editorBody textarea{border:1px solid #c5c5c5;border-radius:0 0 4px 4px;border-top-width:0;box-sizing:border-box;background-color:#fff;min-height:300px;width:100%}.aj-form-html-editor .editorBody iframe.hide{display:none}.aj-form-html-editor .editorBody textarea{resize:none;display:none}.aj-form-html-editor .editorBody textarea.show{display:block}.aj-form-html-editor .colorPicker{width:210px;border:1px solid #d3d3d3;position:absolute}.aj-form-html-editor .colorPicker table{border-collapse:collapse}.aj-form-html-editor .colorPicker .colorhead{height:23px;line-height:23px;font-weight:700;width:100%}.aj-form-html-editor .colorPicker .colortitle{margin-left:6px;font-size:12px}.aj-form-html-editor .colorPicker .colorpanel td{border:1px solid #000;height:10px;width:10px;overflow:hidden;font-size:1px;cursor:pointer}.aj-form-html-editor .fontfamilyChoser a,.aj-form-html-editor .fontsizeChoser a{padding-right:2px;display:block;padding-left:2px;padding-bottom:2px;color:#000;line-height:120%;padding-top:2px;text-decoration:none}.aj-form-html-editor .fontfamilyChoser a:hover,.aj-form-html-editor .fontsizeChoser a:hover{background:#e5e5e5}.aj-form-html-editor .dorpdown{position:relative}.aj-form-html-editor .dorpdown .colorPicker:hover,.aj-form-html-editor .dorpdown .fontfamilyChoser:hover,.aj-form-html-editor .dorpdown .fontsizeChoser:hover,.aj-form-html-editor .dorpdown:hover .colorPicker,.aj-form-html-editor .dorpdown:hover .fontfamilyChoser,.aj-form-html-editor .dorpdown:hover .fontsizeChoser{display:block}.aj-form-html-editor .dorpdown>div{display:none;position:absolute;top:22px;left:0;background-color:#f5f5f5;border:1px solid #d3d3d3;border-top:0;padding:5px;width:230px}.aj-form-html-editor .dorpdown .fontsizeChoser{top:inherit;right:0}[data-v-09434b3b]:root{--admin-main-color:#1e6bb8}.aj-text-title[data-v-09434b3b]{letter-spacing:2px;margin:10px}.aj-table[data-v-09434b3b]{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th[data-v-09434b3b]{background-color:#efefef;letter-spacing:3px}.aj-table td[data-v-09434b3b],.aj-table th[data-v-09434b3b]{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr[data-v-09434b3b]{transition:background-color .4s ease-out}.aj-table tr[data-v-09434b3b]:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr[data-v-09434b3b]:hover{background-color:#fbf8e9}.rDown[data-v-09434b3b],.rLeft[data-v-09434b3b],.rLeftDown[data-v-09434b3b],.rLeftUp[data-v-09434b3b],.rRight[data-v-09434b3b],.rRightDown[data-v-09434b3b],.rRightUp[data-v-09434b3b],.rUp[data-v-09434b3b]{position:absolute;background:#c00;width:7px;height:7px;z-index:5;font-size:0}.rLeftDown[data-v-09434b3b],.rRightUp[data-v-09434b3b]{cursor:ne-resize}.rLeftUp[data-v-09434b3b],.rRightDown[data-v-09434b3b]{cursor:nw-resize}.rLeft[data-v-09434b3b],.rRight[data-v-09434b3b]{cursor:e-resize}.rDown[data-v-09434b3b],.rUp[data-v-09434b3b]{cursor:n-resize}.rLeftDown[data-v-09434b3b]{left:-4px;bottom:-4px}.rRightUp[data-v-09434b3b]{right:-4px;top:-4px}.rRightDown[data-v-09434b3b]{right:-4px;bottom:-4px;background-color:0f}.rLeftUp[data-v-09434b3b]{left:-4px;top:-4px}.rRight[data-v-09434b3b]{right:-4px;top:50%;margin-top:-4px}.rLeft[data-v-09434b3b]{left:-4px;top:50%;margin-top:-4px}.rUp[data-v-09434b3b]{top:-4px;left:50%;margin-left:-4px}.rDown[data-v-09434b3b]{bottom:-4px;left:50%;margin-left:-4px}.resize-box[data-v-09434b3b]{border:1px solid grey;width:100px;height:60px;top:150px;left:550px;background:#fff;position:absolute}a{color:grey}a:hover{color:#000}.demo{font-size:11pt}.demo menu{margin:0;padding:0;line-height:40px;height:40px;text-align:center;border-bottom:1px solid #d3d3d3}table.all-center{width:100%;font-size:11pt}table.all-center td{vertical-align:middle;text-align:center}h1{margin:20px}.home>h2{margin:30px auto}.home>h2,.home>p{margin:20px auto;width:600px;text-align:justify}[data-v-6fd22572]:root{--admin-main-color:#1e6bb8}.aj-text-title[data-v-6fd22572]{letter-spacing:2px;margin:10px}.aj-table[data-v-6fd22572]{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th[data-v-6fd22572]{background-color:#efefef;letter-spacing:3px}.aj-table td[data-v-6fd22572],.aj-table th[data-v-6fd22572]{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr[data-v-6fd22572]{transition:background-color .4s ease-out}.aj-table tr[data-v-6fd22572]:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr[data-v-6fd22572]:hover{background-color:#fbf8e9}ul[data-v-6fd22572]{width:500px;margin:0 auto;color:grey}ul li[data-v-6fd22572]{text-align:left;list-style-type:disc}:root{--admin-main-color:#1e6bb8}.aj-text-title{letter-spacing:2px;margin:10px}.aj-table{border:1px solid #d3d3d3;border-collapse:collapse;border-spacing:0}.aj-table th{background-color:#efefef;letter-spacing:3px}.aj-table td,.aj-table th{border:1px solid #d3d3d3;line-height:160%;height:120%;padding:6px}.aj-table tr{transition:background-color .4s ease-out}.aj-table tr:nth-child(odd){background:#f5f5f5;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.aj-table tr:hover{background-color:#fbf8e9}blockquote,body,dd,dl,dt,fieldset,form,h1,h2,h3,h4,h5,input,li,p,pre,td,th,ul{margin:0;padding:0}h1,h2,h3,h4,h5{font-weight:400}img{border:0}ul li{list-style-type:none}.hide{display:none}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Lantinghei SC,Open Sans,Arial,Hiragino Sans GB,Microsoft YaHei,微软雅黑,STHeiti,WenQuanYi Micro Hei,SimSun,sans-serif}@media screen and (max-width:480px){*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}}