@yelon/util 15.2.0 → 15.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +22 -22
  3. package/array/array-type.service.d.ts +68 -68
  4. package/array/array.service.d.ts +78 -78
  5. package/array/index.d.ts +2 -2
  6. package/browser/cookie.service.d.ts +67 -67
  7. package/browser/copy.d.ts +6 -6
  8. package/browser/index.d.ts +5 -5
  9. package/browser/is-empty.d.ts +6 -6
  10. package/browser/scroll.service.d.ts +37 -37
  11. package/browser/style.d.ts +21 -21
  12. package/config/abc/date-picker.type.d.ts +52 -52
  13. package/config/abc/error-collect.type.d.ts +10 -10
  14. package/config/abc/exception.type.d.ts +9 -9
  15. package/config/abc/image.type.d.ts +15 -15
  16. package/config/abc/index.d.ts +17 -17
  17. package/config/abc/loading.type.d.ts +31 -31
  18. package/config/abc/lodop.type.d.ts +33 -33
  19. package/config/abc/media.type.d.ts +11 -11
  20. package/config/abc/onboarding.type.d.ts +4 -4
  21. package/config/abc/page-header.type.d.ts +39 -39
  22. package/config/abc/pdf.type.d.ts +35 -35
  23. package/config/abc/qr.type.d.ts +25 -25
  24. package/config/abc/se.type.d.ts +32 -32
  25. package/config/abc/sg.type.d.ts +10 -10
  26. package/config/abc/st.type.d.ts +465 -465
  27. package/config/abc/sv.type.d.ts +14 -14
  28. package/config/abc/xlsx.type.d.ts +12 -12
  29. package/config/abc/zip.type.d.ts +10 -10
  30. package/config/acl/acl.type.d.ts +32 -32
  31. package/config/auth/auth.type.d.ts +55 -55
  32. package/config/bis/bis.type.d.ts +7 -7
  33. package/config/cache/cache.type.d.ts +40 -40
  34. package/config/chart/chart.type.d.ts +33 -33
  35. package/config/config.service.d.ts +13 -13
  36. package/config/config.types.d.ts +48 -48
  37. package/config/index.d.ts +14 -14
  38. package/config/mock/mock.type.d.ts +18 -18
  39. package/config/sf/sf.type.d.ts +133 -133
  40. package/config/socket/socket.type.d.ts +4 -4
  41. package/config/theme/http.type.d.ts +14 -14
  42. package/config/theme/i18n.type.d.ts +14 -14
  43. package/config/theme/index.d.ts +3 -3
  44. package/config/theme/responsive.type.d.ts +12 -12
  45. package/config/util/array.type.d.ts +22 -22
  46. package/config/util/currency.type.d.ts +39 -39
  47. package/date-time/index.d.ts +2 -2
  48. package/date-time/picker.d.ts +68 -68
  49. package/date-time/time.d.ts +29 -29
  50. package/decorator/convert.d.ts +24 -24
  51. package/decorator/index.d.ts +2 -2
  52. package/decorator/zone-outside.d.ts +35 -35
  53. package/esm2020/array/array-type.service.mjs +1 -1
  54. package/esm2020/array/array.mjs +4 -4
  55. package/esm2020/array/array.service.mjs +276 -276
  56. package/esm2020/array/index.mjs +2 -2
  57. package/esm2020/browser/browser.mjs +4 -4
  58. package/esm2020/browser/cookie.service.mjs +102 -102
  59. package/esm2020/browser/copy.mjs +27 -27
  60. package/esm2020/browser/index.mjs +5 -5
  61. package/esm2020/browser/is-empty.mjs +18 -18
  62. package/esm2020/browser/scroll.service.mjs +87 -87
  63. package/esm2020/browser/style.mjs +37 -37
  64. package/esm2020/config/abc/date-picker.type.mjs +1 -1
  65. package/esm2020/config/abc/error-collect.type.mjs +1 -1
  66. package/esm2020/config/abc/exception.type.mjs +1 -1
  67. package/esm2020/config/abc/image.type.mjs +1 -1
  68. package/esm2020/config/abc/index.mjs +17 -17
  69. package/esm2020/config/abc/loading.type.mjs +1 -1
  70. package/esm2020/config/abc/lodop.type.mjs +1 -1
  71. package/esm2020/config/abc/media.type.mjs +1 -1
  72. package/esm2020/config/abc/onboarding.type.mjs +1 -1
  73. package/esm2020/config/abc/page-header.type.mjs +1 -1
  74. package/esm2020/config/abc/pdf.type.mjs +1 -1
  75. package/esm2020/config/abc/qr.type.mjs +1 -1
  76. package/esm2020/config/abc/se.type.mjs +1 -1
  77. package/esm2020/config/abc/sg.type.mjs +1 -1
  78. package/esm2020/config/abc/st.type.mjs +1 -1
  79. package/esm2020/config/abc/sv.type.mjs +2 -2
  80. package/esm2020/config/abc/xlsx.type.mjs +1 -1
  81. package/esm2020/config/abc/zip.type.mjs +1 -1
  82. package/esm2020/config/acl/acl.type.mjs +1 -1
  83. package/esm2020/config/auth/auth.type.mjs +1 -1
  84. package/esm2020/config/bis/bis.type.mjs +1 -1
  85. package/esm2020/config/cache/cache.type.mjs +1 -1
  86. package/esm2020/config/chart/chart.type.mjs +1 -1
  87. package/esm2020/config/config.mjs +4 -4
  88. package/esm2020/config/config.service.mjs +36 -36
  89. package/esm2020/config/config.types.mjs +8 -8
  90. package/esm2020/config/index.mjs +14 -14
  91. package/esm2020/config/mock/mock.type.mjs +1 -1
  92. package/esm2020/config/sf/sf.type.mjs +1 -1
  93. package/esm2020/config/socket/socket.type.mjs +1 -1
  94. package/esm2020/config/theme/http.type.mjs +1 -1
  95. package/esm2020/config/theme/i18n.type.mjs +1 -1
  96. package/esm2020/config/theme/index.mjs +3 -3
  97. package/esm2020/config/theme/responsive.type.mjs +1 -1
  98. package/esm2020/config/util/array.type.mjs +1 -1
  99. package/esm2020/config/util/currency.type.mjs +1 -1
  100. package/esm2020/date-time/date-time.mjs +4 -4
  101. package/esm2020/date-time/index.mjs +2 -2
  102. package/esm2020/date-time/picker.mjs +115 -115
  103. package/esm2020/date-time/time.mjs +88 -88
  104. package/esm2020/decorator/convert.mjs +57 -57
  105. package/esm2020/decorator/decorator.mjs +4 -4
  106. package/esm2020/decorator/index.mjs +2 -2
  107. package/esm2020/decorator/zone-outside.mjs +56 -56
  108. package/esm2020/form/form.mjs +4 -4
  109. package/esm2020/form/index.mjs +2 -2
  110. package/esm2020/form/match-control.mjs +29 -29
  111. package/esm2020/form/validators.mjs +80 -80
  112. package/esm2020/format/currency.service.mjs +237 -237
  113. package/esm2020/format/currency.types.mjs +7 -7
  114. package/esm2020/format/format.mjs +4 -4
  115. package/esm2020/format/index.mjs +4 -4
  116. package/esm2020/format/string.mjs +84 -84
  117. package/esm2020/format/validate.mjs +93 -93
  118. package/esm2020/index.mjs +11 -11
  119. package/esm2020/math/in-range.mjs +24 -24
  120. package/esm2020/math/index.mjs +2 -2
  121. package/esm2020/math/math.mjs +4 -4
  122. package/esm2020/math/round.mjs +52 -52
  123. package/esm2020/other/assert.mjs +66 -66
  124. package/esm2020/other/deep.mjs +77 -77
  125. package/esm2020/other/favicon.mjs +28 -28
  126. package/esm2020/other/index.mjs +7 -7
  127. package/esm2020/other/lazy.service.mjs +131 -131
  128. package/esm2020/other/logger.mjs +32 -32
  129. package/esm2020/other/other.mjs +4 -4
  130. package/esm2020/other/path-to-regexp.service.mjs +238 -238
  131. package/esm2020/other/resize.mjs +3 -3
  132. package/esm2020/pipes/currency/cny.pipe.mjs +22 -22
  133. package/esm2020/pipes/currency/index.mjs +4 -4
  134. package/esm2020/pipes/currency/mega.pipe.mjs +28 -28
  135. package/esm2020/pipes/currency/module.mjs +18 -18
  136. package/esm2020/pipes/currency/pipe-currency.mjs +4 -4
  137. package/esm2020/pipes/currency/price.pipe.mjs +26 -26
  138. package/esm2020/pipes/filter/filter.pipe.mjs +18 -18
  139. package/esm2020/pipes/filter/index.mjs +2 -2
  140. package/esm2020/pipes/filter/module.mjs +16 -16
  141. package/esm2020/pipes/filter/pipe-filter.mjs +4 -4
  142. package/esm2020/pipes/format/index.mjs +2 -2
  143. package/esm2020/pipes/format/mask.pipe.mjs +33 -33
  144. package/esm2020/pipes/format/module.mjs +16 -16
  145. package/esm2020/pipes/format/pipe-format.mjs +4 -4
  146. package/esm2020/pipes/index.mjs +3 -3
  147. package/esm2020/pipes/pipes.mjs +4 -4
  148. package/esm2020/token/index.mjs +2 -2
  149. package/esm2020/token/page-visibility.mjs +14 -14
  150. package/esm2020/token/token.mjs +4 -4
  151. package/esm2020/token/window.mjs +16 -16
  152. package/esm2020/yelon-util.mjs +4 -4
  153. package/fesm2015/array.mjs +254 -254
  154. package/fesm2015/browser.mjs +283 -283
  155. package/fesm2015/config.mjs +56 -56
  156. package/fesm2015/date-time.mjs +207 -207
  157. package/fesm2015/decorator.mjs +121 -121
  158. package/fesm2015/form.mjs +118 -118
  159. package/fesm2015/format.mjs +413 -413
  160. package/fesm2015/math.mjs +85 -85
  161. package/fesm2015/other.mjs +589 -589
  162. package/fesm2015/pipe-currency.mjs +96 -96
  163. package/fesm2015/pipe-filter.mjs +40 -40
  164. package/fesm2015/pipe-format.mjs +55 -55
  165. package/fesm2015/pipes.mjs +8 -8
  166. package/fesm2015/token.mjs +37 -37
  167. package/fesm2015/yelon-util.mjs +16 -16
  168. package/fesm2020/array.mjs +284 -284
  169. package/fesm2020/browser.mjs +279 -279
  170. package/fesm2020/config.mjs +54 -54
  171. package/fesm2020/date-time.mjs +211 -211
  172. package/fesm2020/decorator.mjs +121 -121
  173. package/fesm2020/form.mjs +118 -118
  174. package/fesm2020/format.mjs +431 -431
  175. package/fesm2020/math.mjs +85 -85
  176. package/fesm2020/other.mjs +586 -586
  177. package/fesm2020/pipe-currency.mjs +94 -94
  178. package/fesm2020/pipe-filter.mjs +40 -40
  179. package/fesm2020/pipe-format.mjs +55 -55
  180. package/fesm2020/pipes.mjs +8 -8
  181. package/fesm2020/token.mjs +37 -37
  182. package/fesm2020/yelon-util.mjs +16 -16
  183. package/form/index.d.ts +2 -2
  184. package/form/match-control.d.ts +15 -15
  185. package/form/validators.d.ts +62 -62
  186. package/format/currency.service.d.ts +37 -37
  187. package/format/currency.types.d.ts +77 -77
  188. package/format/index.d.ts +4 -4
  189. package/format/string.d.ts +44 -44
  190. package/format/validate.d.ts +72 -72
  191. package/index.d.ts +11 -11
  192. package/math/in-range.d.ts +14 -14
  193. package/math/index.d.ts +2 -2
  194. package/math/round.d.ts +33 -33
  195. package/other/assert.d.ts +36 -36
  196. package/other/deep.d.ts +35 -35
  197. package/other/favicon.d.ts +2 -2
  198. package/other/index.d.ts +7 -7
  199. package/other/lazy.service.d.ts +48 -48
  200. package/other/logger.d.ts +5 -5
  201. package/other/path-to-regexp.service.d.ts +26 -26
  202. package/other/resize.d.ts +1 -1
  203. package/package.json +157 -157
  204. package/pipes/currency/cny.pipe.d.ts +15 -15
  205. package/pipes/currency/index.d.ts +4 -4
  206. package/pipes/currency/mega.pipe.d.ts +16 -16
  207. package/pipes/currency/module.d.ts +9 -9
  208. package/pipes/currency/price.pipe.d.ts +19 -19
  209. package/pipes/filter/filter.pipe.d.ts +13 -13
  210. package/pipes/filter/index.d.ts +2 -2
  211. package/pipes/filter/module.d.ts +7 -7
  212. package/pipes/format/index.d.ts +2 -2
  213. package/pipes/format/mask.pipe.d.ts +27 -27
  214. package/pipes/format/module.d.ts +7 -7
  215. package/pipes/index.d.ts +3 -3
  216. package/token/index.d.ts +2 -2
  217. package/token/page-visibility.d.ts +8 -8
  218. package/token/window.d.ts +7 -7
@@ -1,121 +1,121 @@
1
- import { warn } from '@yelon/util/other';
2
-
3
- function propDecoratorFactory(name, fallback, defaultValue) {
4
- function propDecorator(target, propName, originalDescriptor) {
5
- const privatePropName = `$$__${propName}`;
6
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
7
- if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {
8
- warn(`The prop "${privatePropName}" is already exist, it will be overrided by ${name} decorator.`);
9
- }
10
- }
11
- Object.defineProperty(target, privatePropName, {
12
- configurable: true,
13
- writable: true
14
- });
15
- return {
16
- get() {
17
- return originalDescriptor && originalDescriptor.get
18
- ? originalDescriptor.get.bind(this)()
19
- : this[privatePropName];
20
- },
21
- set(value) {
22
- if (originalDescriptor && originalDescriptor.set) {
23
- originalDescriptor.set.bind(this)(fallback(value, defaultValue));
24
- }
25
- this[privatePropName] = fallback(value, defaultValue);
26
- }
27
- };
28
- }
29
- return propDecorator;
30
- }
31
- function toBoolean(value, defaultValue = false) {
32
- return value == null ? defaultValue : `${value}` !== 'false';
33
- }
34
- /**
35
- * Input decorator that handle a prop to do get/set automatically with toBoolean
36
- *
37
- * ```ts
38
- * {AT}Input() {AT}InputBoolean() visible: boolean = false;
39
- * {AT}Input() {AT}InputBoolean(null) visible: boolean = false;
40
- * ```
41
- */
42
- function InputBoolean(defaultValue = false) {
43
- return propDecoratorFactory('InputBoolean', toBoolean, defaultValue);
44
- }
45
- function toNumber(value, fallbackValue = 0) {
46
- return !isNaN(parseFloat(value)) && !isNaN(Number(value)) ? Number(value) : fallbackValue;
47
- }
48
- /**
49
- * Input decorator that handle a prop to do get/set automatically with toNumber
50
- *
51
- * ```ts
52
- * {AT}Input() {AT}InputNumber() visible: number = 1;
53
- * {AT}Input() {AT}InputNumber(null) visible: number = 2;
54
- * ```
55
- */
56
- function InputNumber(defaultValue = 0) {
57
- return propDecoratorFactory('InputNumber', toNumber, defaultValue);
58
- }
59
-
60
- function makeFn(type, options) {
61
- return (_, __, descriptor) => {
62
- const source = descriptor.value;
63
- descriptor.value = function (...data) {
64
- const that = this;
65
- const ngZone = that[(options === null || options === void 0 ? void 0 : options.ngZoneName) || 'ngZone'];
66
- if (!ngZone) {
67
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
68
- warn(`ZoneOutside: Decorator should have 'ngZone' property with 'NgZone' class.`);
69
- }
70
- return source.call(this, ...data);
71
- }
72
- let res;
73
- ngZone[type](() => {
74
- res = source.call(this, ...data);
75
- });
76
- return res;
77
- };
78
- return descriptor;
79
- };
80
- }
81
- /**
82
- * The decoration method runs in `runOutsideAngular`
83
- *
84
- * 装饰方法运行在 `runOutsideAngular` 内
85
- *
86
- * ```ts
87
- * class MockClass {
88
- * constructor(public ngZone: NgZone) {}
89
- *
90
- * {AT}ZoneOutside()
91
- * runOutsideAngular(): void {}
92
- * }
93
- * ```
94
- */
95
- function ZoneOutside(options) {
96
- return makeFn('runOutsideAngular', options);
97
- }
98
- /**
99
- * The decoration method runs in `run`
100
- *
101
- * 装饰方法运行在 `run` 内
102
- *
103
- * ```ts
104
- * class MockClass {
105
- * constructor(public ngZone: NgZone) {}
106
- *
107
- * {AT}ZoneRun()
108
- * run(): void {}
109
- * }
110
- * ```
111
- */
112
- function ZoneRun(options) {
113
- return makeFn('run', options);
114
- }
115
-
116
- /**
117
- * Generated bundle index. Do not edit.
118
- */
119
-
120
- export { InputBoolean, InputNumber, ZoneOutside, ZoneRun, toBoolean, toNumber };
121
- //# sourceMappingURL=decorator.mjs.map
1
+ import { warn } from '@yelon/util/other';
2
+
3
+ function propDecoratorFactory(name, fallback, defaultValue) {
4
+ function propDecorator(target, propName, originalDescriptor) {
5
+ const privatePropName = `$$__${propName}`;
6
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
7
+ if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {
8
+ warn(`The prop "${privatePropName}" is already exist, it will be overrided by ${name} decorator.`);
9
+ }
10
+ }
11
+ Object.defineProperty(target, privatePropName, {
12
+ configurable: true,
13
+ writable: true
14
+ });
15
+ return {
16
+ get() {
17
+ return originalDescriptor && originalDescriptor.get
18
+ ? originalDescriptor.get.bind(this)()
19
+ : this[privatePropName];
20
+ },
21
+ set(value) {
22
+ if (originalDescriptor && originalDescriptor.set) {
23
+ originalDescriptor.set.bind(this)(fallback(value, defaultValue));
24
+ }
25
+ this[privatePropName] = fallback(value, defaultValue);
26
+ }
27
+ };
28
+ }
29
+ return propDecorator;
30
+ }
31
+ function toBoolean(value, defaultValue = false) {
32
+ return value == null ? defaultValue : `${value}` !== 'false';
33
+ }
34
+ /**
35
+ * Input decorator that handle a prop to do get/set automatically with toBoolean
36
+ *
37
+ * ```ts
38
+ * {AT}Input() {AT}InputBoolean() visible: boolean = false;
39
+ * {AT}Input() {AT}InputBoolean(null) visible: boolean = false;
40
+ * ```
41
+ */
42
+ function InputBoolean(defaultValue = false) {
43
+ return propDecoratorFactory('InputBoolean', toBoolean, defaultValue);
44
+ }
45
+ function toNumber(value, fallbackValue = 0) {
46
+ return !isNaN(parseFloat(value)) && !isNaN(Number(value)) ? Number(value) : fallbackValue;
47
+ }
48
+ /**
49
+ * Input decorator that handle a prop to do get/set automatically with toNumber
50
+ *
51
+ * ```ts
52
+ * {AT}Input() {AT}InputNumber() visible: number = 1;
53
+ * {AT}Input() {AT}InputNumber(null) visible: number = 2;
54
+ * ```
55
+ */
56
+ function InputNumber(defaultValue = 0) {
57
+ return propDecoratorFactory('InputNumber', toNumber, defaultValue);
58
+ }
59
+
60
+ function makeFn(type, options) {
61
+ return (_, __, descriptor) => {
62
+ const source = descriptor.value;
63
+ descriptor.value = function (...data) {
64
+ const that = this;
65
+ const ngZone = that[(options === null || options === void 0 ? void 0 : options.ngZoneName) || 'ngZone'];
66
+ if (!ngZone) {
67
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
68
+ warn(`ZoneOutside: Decorator should have 'ngZone' property with 'NgZone' class.`);
69
+ }
70
+ return source.call(this, ...data);
71
+ }
72
+ let res;
73
+ ngZone[type](() => {
74
+ res = source.call(this, ...data);
75
+ });
76
+ return res;
77
+ };
78
+ return descriptor;
79
+ };
80
+ }
81
+ /**
82
+ * The decoration method runs in `runOutsideAngular`
83
+ *
84
+ * 装饰方法运行在 `runOutsideAngular` 内
85
+ *
86
+ * ```ts
87
+ * class MockClass {
88
+ * constructor(public ngZone: NgZone) {}
89
+ *
90
+ * {AT}ZoneOutside()
91
+ * runOutsideAngular(): void {}
92
+ * }
93
+ * ```
94
+ */
95
+ function ZoneOutside(options) {
96
+ return makeFn('runOutsideAngular', options);
97
+ }
98
+ /**
99
+ * The decoration method runs in `run`
100
+ *
101
+ * 装饰方法运行在 `run` 内
102
+ *
103
+ * ```ts
104
+ * class MockClass {
105
+ * constructor(public ngZone: NgZone) {}
106
+ *
107
+ * {AT}ZoneRun()
108
+ * run(): void {}
109
+ * }
110
+ * ```
111
+ */
112
+ function ZoneRun(options) {
113
+ return makeFn('run', options);
114
+ }
115
+
116
+ /**
117
+ * Generated bundle index. Do not edit.
118
+ */
119
+
120
+ export { InputBoolean, InputNumber, ZoneOutside, ZoneRun, toBoolean, toNumber };
121
+ //# sourceMappingURL=decorator.mjs.map
package/fesm2015/form.mjs CHANGED
@@ -1,118 +1,118 @@
1
- import { isNum, isInt, isDecimal, isIdCard, isMobile, isUrl, isIp, isColor, isChinese } from '@yelon/util/format';
2
-
3
- /**
4
- * A set of validators for reactive forms
5
- *
6
- * 一套用于响应式表单的验证器
7
- */
8
- class _Validators {
9
- /**
10
- * Wheter is number
11
- *
12
- * 是否为数字
13
- */
14
- static num(control) {
15
- return isNum(control.value) ? null : { num: true };
16
- }
17
- /**
18
- * Wheter is integer
19
- *
20
- * 是否为整数
21
- */
22
- static int(control) {
23
- return isInt(control.value) ? null : { int: true };
24
- }
25
- /**
26
- * Wheter is decimal
27
- *
28
- * 是否为小数点数值
29
- */
30
- static decimal(control) {
31
- return isDecimal(control.value) ? null : { decimal: true };
32
- }
33
- /**
34
- * Wheter is People's Republic of China identity card
35
- *
36
- * 是否为中华人民共和国居民身份证
37
- */
38
- static idCard(control) {
39
- return isIdCard(control.value) ? null : { idCard: true };
40
- }
41
- /**
42
- * Wheter is china mobile (China)
43
- *
44
- * 是否为手机号(中国)
45
- */
46
- static mobile(control) {
47
- return isMobile(control.value) ? null : { mobile: true };
48
- }
49
- /**
50
- * Wheter is url address
51
- *
52
- * 是否URL地址
53
- */
54
- static url(control) {
55
- return isUrl(control.value) ? null : { url: true };
56
- }
57
- /**
58
- * Wheter is IPv4 address (Support v4, v6)
59
- *
60
- * 是否IP4地址(支持v4、v6)
61
- */
62
- static ip(control) {
63
- return isIp(control.value) ? null : { ip: true };
64
- }
65
- /**
66
- * Wheter is color
67
- *
68
- * 是否颜色代码值
69
- */
70
- static color(control) {
71
- return isColor(control.value) ? null : { color: true };
72
- }
73
- /**
74
- * Wheter is chinese
75
- *
76
- * 是否中文
77
- */
78
- static chinese(control) {
79
- return isChinese(control.value) ? null : { chinese: true };
80
- }
81
- }
82
-
83
- /**
84
- * Match two control values
85
- *
86
- * 匹配两个控件值
87
- * ```ts
88
- * this.form = new FormGroup({
89
- * pwd: new FormControl(''),
90
- * repwd: new FormControl(''),
91
- * }, {
92
- * validators: MatchControl('pwd', 'repwd'),
93
- * });
94
- * ```
95
- */
96
- function MatchControl(controlName, matchingControlName) {
97
- return (formGroup) => {
98
- const control = formGroup.get(controlName);
99
- const matchingControl = formGroup.get(matchingControlName);
100
- if (matchingControl.errors && !matchingControl.errors.matchControl) {
101
- return null;
102
- }
103
- if (control.value !== matchingControl.value) {
104
- matchingControl.setErrors({ matchControl: true });
105
- }
106
- else {
107
- matchingControl.setErrors(null);
108
- }
109
- return null;
110
- };
111
- }
112
-
113
- /**
114
- * Generated bundle index. Do not edit.
115
- */
116
-
117
- export { MatchControl, _Validators };
118
- //# sourceMappingURL=form.mjs.map
1
+ import { isNum, isInt, isDecimal, isIdCard, isMobile, isUrl, isIp, isColor, isChinese } from '@yelon/util/format';
2
+
3
+ /**
4
+ * A set of validators for reactive forms
5
+ *
6
+ * 一套用于响应式表单的验证器
7
+ */
8
+ class _Validators {
9
+ /**
10
+ * Wheter is number
11
+ *
12
+ * 是否为数字
13
+ */
14
+ static num(control) {
15
+ return isNum(control.value) ? null : { num: true };
16
+ }
17
+ /**
18
+ * Wheter is integer
19
+ *
20
+ * 是否为整数
21
+ */
22
+ static int(control) {
23
+ return isInt(control.value) ? null : { int: true };
24
+ }
25
+ /**
26
+ * Wheter is decimal
27
+ *
28
+ * 是否为小数点数值
29
+ */
30
+ static decimal(control) {
31
+ return isDecimal(control.value) ? null : { decimal: true };
32
+ }
33
+ /**
34
+ * Wheter is People's Republic of China identity card
35
+ *
36
+ * 是否为中华人民共和国居民身份证
37
+ */
38
+ static idCard(control) {
39
+ return isIdCard(control.value) ? null : { idCard: true };
40
+ }
41
+ /**
42
+ * Wheter is china mobile (China)
43
+ *
44
+ * 是否为手机号(中国)
45
+ */
46
+ static mobile(control) {
47
+ return isMobile(control.value) ? null : { mobile: true };
48
+ }
49
+ /**
50
+ * Wheter is url address
51
+ *
52
+ * 是否URL地址
53
+ */
54
+ static url(control) {
55
+ return isUrl(control.value) ? null : { url: true };
56
+ }
57
+ /**
58
+ * Wheter is IPv4 address (Support v4, v6)
59
+ *
60
+ * 是否IP4地址(支持v4、v6)
61
+ */
62
+ static ip(control) {
63
+ return isIp(control.value) ? null : { ip: true };
64
+ }
65
+ /**
66
+ * Wheter is color
67
+ *
68
+ * 是否颜色代码值
69
+ */
70
+ static color(control) {
71
+ return isColor(control.value) ? null : { color: true };
72
+ }
73
+ /**
74
+ * Wheter is chinese
75
+ *
76
+ * 是否中文
77
+ */
78
+ static chinese(control) {
79
+ return isChinese(control.value) ? null : { chinese: true };
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Match two control values
85
+ *
86
+ * 匹配两个控件值
87
+ * ```ts
88
+ * this.form = new FormGroup({
89
+ * pwd: new FormControl(''),
90
+ * repwd: new FormControl(''),
91
+ * }, {
92
+ * validators: MatchControl('pwd', 'repwd'),
93
+ * });
94
+ * ```
95
+ */
96
+ function MatchControl(controlName, matchingControlName) {
97
+ return (formGroup) => {
98
+ const control = formGroup.get(controlName);
99
+ const matchingControl = formGroup.get(matchingControlName);
100
+ if (matchingControl.errors && !matchingControl.errors.matchControl) {
101
+ return null;
102
+ }
103
+ if (control.value !== matchingControl.value) {
104
+ matchingControl.setErrors({ matchControl: true });
105
+ }
106
+ else {
107
+ matchingControl.setErrors(null);
108
+ }
109
+ return null;
110
+ };
111
+ }
112
+
113
+ /**
114
+ * Generated bundle index. Do not edit.
115
+ */
116
+
117
+ export { MatchControl, _Validators };
118
+ //# sourceMappingURL=form.mjs.map