@yelon/util 15.2.4 → 16.0.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/LICENSE +21 -21
- package/README.md +22 -22
- package/analysis/global-event.subject.d.ts +7 -7
- package/analysis/index.d.ts +1 -1
- package/array/array-type.service.d.ts +68 -68
- package/array/array.service.d.ts +78 -78
- package/array/index.d.ts +2 -2
- package/browser/cookie.service.d.ts +67 -67
- package/browser/copy.d.ts +6 -6
- package/browser/index.d.ts +5 -5
- package/browser/is-empty.d.ts +6 -6
- package/browser/scroll.service.d.ts +37 -37
- package/browser/style.d.ts +21 -21
- package/config/abc/date-picker.type.d.ts +52 -52
- package/config/abc/error-collect.type.d.ts +10 -10
- package/config/abc/exception.type.d.ts +9 -9
- package/config/abc/image.type.d.ts +15 -15
- package/config/abc/index.d.ts +17 -17
- package/config/abc/loading.type.d.ts +31 -31
- package/config/abc/lodop.type.d.ts +33 -33
- package/config/abc/media.type.d.ts +11 -11
- package/config/abc/onboarding.type.d.ts +4 -4
- package/config/abc/page-header.type.d.ts +39 -39
- package/config/abc/pdf.type.d.ts +35 -35
- package/config/abc/qr.type.d.ts +25 -25
- package/config/abc/se.type.d.ts +32 -32
- package/config/abc/sg.type.d.ts +10 -10
- package/config/abc/st.type.d.ts +465 -465
- package/config/abc/sv.type.d.ts +14 -14
- package/config/abc/xlsx.type.d.ts +12 -12
- package/config/abc/zip.type.d.ts +10 -10
- package/config/acl/acl.type.d.ts +32 -32
- package/config/auth/auth.type.d.ts +55 -55
- package/config/bis/bis.type.d.ts +7 -7
- package/config/cache/cache.type.d.ts +40 -40
- package/config/chart/chart.type.d.ts +33 -33
- package/config/config.service.d.ts +13 -13
- package/config/config.types.d.ts +48 -48
- package/config/index.d.ts +14 -14
- package/config/mock/mock.type.d.ts +18 -18
- package/config/sf/sf.type.d.ts +133 -133
- package/config/socket/socket.type.d.ts +4 -4
- package/config/theme/http.type.d.ts +14 -14
- package/config/theme/i18n.type.d.ts +14 -14
- package/config/theme/index.d.ts +3 -3
- package/config/theme/responsive.type.d.ts +12 -12
- package/config/util/array.type.d.ts +22 -22
- package/config/util/currency.type.d.ts +39 -39
- package/date-time/index.d.ts +2 -2
- package/date-time/picker.d.ts +68 -68
- package/date-time/time.d.ts +29 -29
- package/decorator/convert.d.ts +24 -24
- package/decorator/index.d.ts +2 -2
- package/decorator/zone-outside.d.ts +35 -35
- package/{esm2020 → esm2022}/analysis/analysis.mjs +4 -4
- package/esm2022/analysis/global-event.subject.mjs +18 -0
- package/{esm2020 → esm2022}/analysis/index.mjs +2 -2
- package/{esm2020 → esm2022}/array/array-type.service.mjs +1 -1
- package/{esm2020 → esm2022}/array/array.mjs +4 -4
- package/esm2022/array/array.service.mjs +278 -0
- package/{esm2020 → esm2022}/array/index.mjs +2 -2
- package/{esm2020 → esm2022}/browser/browser.mjs +4 -4
- package/esm2022/browser/cookie.service.mjs +104 -0
- package/{esm2020 → esm2022}/browser/copy.mjs +27 -27
- package/{esm2020 → esm2022}/browser/index.mjs +5 -5
- package/{esm2020 → esm2022}/browser/is-empty.mjs +18 -18
- package/esm2022/browser/scroll.service.mjs +89 -0
- package/{esm2020 → esm2022}/browser/style.mjs +37 -37
- package/{esm2020 → esm2022}/config/abc/date-picker.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/error-collect.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/exception.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/image.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/index.mjs +17 -17
- package/{esm2020 → esm2022}/config/abc/loading.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/lodop.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/media.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/onboarding.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/page-header.type.mjs +1 -1
- package/esm2022/config/abc/pdf.type.mjs +2 -0
- package/{esm2020 → esm2022}/config/abc/qr.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/se.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/sg.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/st.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/sv.type.mjs +2 -2
- package/{esm2020 → esm2022}/config/abc/xlsx.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/abc/zip.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/acl/acl.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/auth/auth.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/bis/bis.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/cache/cache.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/chart/chart.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/config.mjs +4 -4
- package/esm2022/config/config.service.mjs +38 -0
- package/{esm2020 → esm2022}/config/config.types.mjs +8 -8
- package/{esm2020 → esm2022}/config/index.mjs +14 -14
- package/{esm2020 → esm2022}/config/mock/mock.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/sf/sf.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/socket/socket.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/theme/http.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/theme/i18n.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/theme/index.mjs +3 -3
- package/{esm2020 → esm2022}/config/theme/responsive.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/util/array.type.mjs +1 -1
- package/{esm2020 → esm2022}/config/util/currency.type.mjs +1 -1
- package/{esm2020 → esm2022}/date-time/date-time.mjs +4 -4
- package/{esm2020 → esm2022}/date-time/index.mjs +2 -2
- package/{esm2020 → esm2022}/date-time/picker.mjs +115 -115
- package/{esm2020 → esm2022}/date-time/time.mjs +88 -88
- package/{esm2020 → esm2022}/decorator/convert.mjs +57 -57
- package/{esm2020 → esm2022}/decorator/decorator.mjs +4 -4
- package/{esm2020 → esm2022}/decorator/index.mjs +2 -2
- package/{esm2020 → esm2022}/decorator/zone-outside.mjs +56 -56
- package/{esm2020 → esm2022}/form/form.mjs +4 -4
- package/{esm2020 → esm2022}/form/index.mjs +2 -2
- package/{esm2020 → esm2022}/form/match-control.mjs +29 -29
- package/{esm2020 → esm2022}/form/validators.mjs +80 -80
- package/esm2022/format/currency.service.mjs +239 -0
- package/{esm2020 → esm2022}/format/currency.types.mjs +7 -7
- package/{esm2020 → esm2022}/format/format.mjs +4 -4
- package/{esm2020 → esm2022}/format/index.mjs +4 -4
- package/{esm2020 → esm2022}/format/string.mjs +84 -84
- package/{esm2020 → esm2022}/format/validate.mjs +93 -93
- package/{esm2020 → esm2022}/index.mjs +12 -12
- package/{esm2020 → esm2022}/math/in-range.mjs +24 -24
- package/{esm2020 → esm2022}/math/index.mjs +2 -2
- package/{esm2020 → esm2022}/math/math.mjs +4 -4
- package/{esm2020 → esm2022}/math/round.mjs +52 -52
- package/{esm2020 → esm2022}/other/assert.mjs +66 -66
- package/{esm2020 → esm2022}/other/deep.mjs +77 -77
- package/{esm2020 → esm2022}/other/favicon.mjs +28 -28
- package/{esm2020 → esm2022}/other/index.mjs +7 -7
- package/esm2022/other/lazy.service.mjs +133 -0
- package/{esm2020 → esm2022}/other/logger.mjs +32 -32
- package/{esm2020 → esm2022}/other/other.mjs +4 -4
- package/esm2022/other/path-to-regexp.service.mjs +240 -0
- package/{esm2020 → esm2022}/other/resize.mjs +3 -3
- package/esm2022/pipes/currency/cny.pipe.mjs +24 -0
- package/{esm2020 → esm2022}/pipes/currency/index.mjs +4 -4
- package/esm2022/pipes/currency/mega.pipe.mjs +30 -0
- package/esm2022/pipes/currency/module.mjs +20 -0
- package/{esm2020 → esm2022}/pipes/currency/pipe-currency.mjs +4 -4
- package/esm2022/pipes/currency/price.pipe.mjs +28 -0
- package/esm2022/pipes/filter/filter.pipe.mjs +20 -0
- package/{esm2020 → esm2022}/pipes/filter/index.mjs +2 -2
- package/esm2022/pipes/filter/module.mjs +18 -0
- package/{esm2020 → esm2022}/pipes/filter/pipe-filter.mjs +4 -4
- package/{esm2020 → esm2022}/pipes/format/index.mjs +2 -2
- package/esm2022/pipes/format/mask.pipe.mjs +35 -0
- package/esm2022/pipes/format/module.mjs +18 -0
- package/{esm2020 → esm2022}/pipes/format/pipe-format.mjs +4 -4
- package/{esm2020 → esm2022}/pipes/index.mjs +3 -3
- package/{esm2020 → esm2022}/pipes/pipes.mjs +4 -4
- package/{esm2020 → esm2022}/token/index.mjs +2 -2
- package/{esm2020 → esm2022}/token/page-visibility.mjs +14 -14
- package/{esm2020 → esm2022}/token/token.mjs +4 -4
- package/{esm2020 → esm2022}/token/window.mjs +16 -16
- package/{esm2020 → esm2022}/yelon-util.mjs +4 -4
- package/{fesm2020 → fesm2022}/analysis.mjs +24 -24
- package/fesm2022/analysis.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/array.mjs +284 -284
- package/{fesm2015 → fesm2022}/array.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/browser.mjs +279 -279
- package/{fesm2020 → fesm2022}/browser.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/config.mjs +54 -54
- package/{fesm2020 → fesm2022}/config.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/date-time.mjs +211 -211
- package/{fesm2020 → fesm2022}/decorator.mjs +121 -121
- package/{fesm2020 → fesm2022}/form.mjs +118 -118
- package/{fesm2020 → fesm2022}/format.mjs +431 -431
- package/{fesm2020 → fesm2022}/format.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/math.mjs +85 -85
- package/{fesm2020 → fesm2022}/other.mjs +586 -586
- package/{fesm2020 → fesm2022}/other.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pipe-currency.mjs +94 -94
- package/{fesm2020 → fesm2022}/pipe-currency.mjs.map +1 -1
- package/fesm2022/pipe-filter.mjs +40 -0
- package/{fesm2015 → fesm2022}/pipe-filter.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pipe-format.mjs +55 -55
- package/{fesm2015 → fesm2022}/pipe-format.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/pipes.mjs +8 -8
- package/{fesm2020 → fesm2022}/token.mjs +37 -37
- package/{fesm2015 → fesm2022}/yelon-util.mjs +17 -17
- package/form/index.d.ts +2 -2
- package/form/match-control.d.ts +15 -15
- package/form/validators.d.ts +62 -62
- package/format/currency.service.d.ts +37 -37
- package/format/currency.types.d.ts +77 -77
- package/format/index.d.ts +4 -4
- package/format/string.d.ts +44 -44
- package/format/validate.d.ts +72 -72
- package/index.d.ts +12 -12
- package/math/in-range.d.ts +14 -14
- package/math/index.d.ts +2 -2
- package/math/round.d.ts +33 -33
- package/other/assert.d.ts +36 -36
- package/other/deep.d.ts +35 -35
- package/other/favicon.d.ts +2 -2
- package/other/index.d.ts +7 -7
- package/other/lazy.service.d.ts +48 -48
- package/other/logger.d.ts +5 -5
- package/other/path-to-regexp.service.d.ts +26 -26
- package/other/resize.d.ts +1 -1
- package/package.json +129 -165
- package/pipes/currency/cny.pipe.d.ts +15 -15
- package/pipes/currency/index.d.ts +4 -4
- package/pipes/currency/mega.pipe.d.ts +16 -16
- package/pipes/currency/module.d.ts +9 -9
- package/pipes/currency/price.pipe.d.ts +19 -19
- package/pipes/filter/filter.pipe.d.ts +13 -13
- package/pipes/filter/index.d.ts +2 -2
- package/pipes/filter/module.d.ts +7 -7
- package/pipes/format/index.d.ts +2 -2
- package/pipes/format/mask.pipe.d.ts +27 -27
- package/pipes/format/module.d.ts +7 -7
- package/pipes/index.d.ts +3 -3
- package/token/index.d.ts +2 -2
- package/token/page-visibility.d.ts +8 -8
- package/token/window.d.ts +7 -7
- package/esm2020/analysis/global-event.subject.mjs +0 -17
- package/esm2020/array/array.service.mjs +0 -277
- package/esm2020/browser/cookie.service.mjs +0 -103
- package/esm2020/browser/scroll.service.mjs +0 -88
- package/esm2020/config/abc/pdf.type.mjs +0 -2
- package/esm2020/config/config.service.mjs +0 -37
- package/esm2020/format/currency.service.mjs +0 -238
- package/esm2020/other/lazy.service.mjs +0 -132
- package/esm2020/other/path-to-regexp.service.mjs +0 -239
- package/esm2020/pipes/currency/cny.pipe.mjs +0 -23
- package/esm2020/pipes/currency/mega.pipe.mjs +0 -29
- package/esm2020/pipes/currency/module.mjs +0 -19
- package/esm2020/pipes/currency/price.pipe.mjs +0 -27
- package/esm2020/pipes/filter/filter.pipe.mjs +0 -19
- package/esm2020/pipes/filter/module.mjs +0 -17
- package/esm2020/pipes/format/mask.pipe.mjs +0 -34
- package/esm2020/pipes/format/module.mjs +0 -17
- package/fesm2015/analysis.mjs +0 -24
- package/fesm2015/analysis.mjs.map +0 -1
- package/fesm2015/array.mjs +0 -254
- package/fesm2015/browser.mjs +0 -283
- package/fesm2015/browser.mjs.map +0 -1
- package/fesm2015/config.mjs +0 -56
- package/fesm2015/config.mjs.map +0 -1
- package/fesm2015/date-time.mjs +0 -207
- package/fesm2015/date-time.mjs.map +0 -1
- package/fesm2015/decorator.mjs +0 -121
- package/fesm2015/decorator.mjs.map +0 -1
- package/fesm2015/form.mjs +0 -118
- package/fesm2015/format.mjs +0 -413
- package/fesm2015/format.mjs.map +0 -1
- package/fesm2015/math.mjs +0 -85
- package/fesm2015/other.mjs +0 -589
- package/fesm2015/other.mjs.map +0 -1
- package/fesm2015/pipe-currency.mjs +0 -96
- package/fesm2015/pipe-currency.mjs.map +0 -1
- package/fesm2015/pipe-filter.mjs +0 -40
- package/fesm2015/pipe-format.mjs +0 -55
- package/fesm2015/token.mjs +0 -37
- package/fesm2020/analysis.mjs.map +0 -1
- package/fesm2020/array.mjs.map +0 -1
- package/fesm2020/form.mjs.map +0 -1
- package/fesm2020/math.mjs.map +0 -1
- package/fesm2020/pipe-filter.mjs +0 -40
- package/fesm2020/pipe-filter.mjs.map +0 -1
- package/fesm2020/pipe-format.mjs.map +0 -1
- package/fesm2020/pipes.mjs +0 -8
- package/fesm2020/pipes.mjs.map +0 -1
- package/fesm2020/token.mjs.map +0 -1
- package/fesm2020/yelon-util.mjs +0 -17
- package/fesm2020/yelon-util.mjs.map +0 -1
- /package/{fesm2020 → fesm2022}/date-time.mjs.map +0 -0
- /package/{fesm2020 → fesm2022}/decorator.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/form.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/math.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/pipes.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/token.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/yelon-util.mjs.map +0 -0
package/fesm2015/date-time.mjs
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { parse, addDays, startOfYear, subYears, endOfYear, startOfMonth, subMonths, endOfMonth, startOfWeek, subWeeks, endOfWeek, startOfDay, endOfDay, parseISO, format, differenceInCalendarDays, addSeconds } from 'date-fns';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Get the time range, return `[ Date, Date]` for the start and end dates
|
|
5
|
-
*
|
|
6
|
-
* 获取时间范围
|
|
7
|
-
*
|
|
8
|
-
* @param type 类型,带 `-` 表示过去一个时间,若指定 `number` 表示天数
|
|
9
|
-
* @param time 开始时间
|
|
10
|
-
* @param ignoreMaxTime 忽略追加结束日期的最大时间值
|
|
11
|
-
*/
|
|
12
|
-
function getTimeDistance(type, time, options) {
|
|
13
|
-
time = time
|
|
14
|
-
? typeof time === 'string'
|
|
15
|
-
? parse(time, 'yyyy-MM-dd HH:mm:ss', new Date())
|
|
16
|
-
: new Date(time)
|
|
17
|
-
: new Date();
|
|
18
|
-
const opt = { weekStartsOn: 1 };
|
|
19
|
-
let res;
|
|
20
|
-
switch (type) {
|
|
21
|
-
case 'today':
|
|
22
|
-
res = [time, time];
|
|
23
|
-
break;
|
|
24
|
-
case '-today':
|
|
25
|
-
res = [addDays(time, -1), time];
|
|
26
|
-
break;
|
|
27
|
-
case 'yesterday':
|
|
28
|
-
res = [addDays(time, -1), addDays(time, -1)];
|
|
29
|
-
break;
|
|
30
|
-
case 'week':
|
|
31
|
-
res = [startOfWeek(time, opt), endOfWeek(time, opt)];
|
|
32
|
-
break;
|
|
33
|
-
case '-week':
|
|
34
|
-
res = [startOfWeek(subWeeks(time, 1), opt), endOfWeek(subWeeks(time, 1), opt)];
|
|
35
|
-
break;
|
|
36
|
-
case 'month':
|
|
37
|
-
res = [startOfMonth(time), endOfMonth(time)];
|
|
38
|
-
break;
|
|
39
|
-
case '-month':
|
|
40
|
-
res = [startOfMonth(subMonths(time, 1)), endOfMonth(subMonths(time, 1))];
|
|
41
|
-
break;
|
|
42
|
-
case 'year':
|
|
43
|
-
res = [startOfYear(time), endOfYear(time)];
|
|
44
|
-
break;
|
|
45
|
-
case '-year':
|
|
46
|
-
res = [startOfYear(subYears(time, 1)), endOfYear(subYears(time, 1))];
|
|
47
|
-
break;
|
|
48
|
-
default:
|
|
49
|
-
res = type > 0 ? [time, addDays(time, type)] : [addDays(time, type), time];
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
return (options === null || options === void 0 ? void 0 : options.ignoreMaxTime) ? res : fixEndTimeOfRange(res);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* fix time is the most, big value
|
|
56
|
-
*/
|
|
57
|
-
function fixEndTimeOfRange(dates) {
|
|
58
|
-
return [startOfDay(dates[0]), endOfDay(dates[1])];
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Return the date parsed from string using the given format string
|
|
62
|
-
* - If the argument is a number, it is treated as a timestamp.
|
|
63
|
-
*
|
|
64
|
-
* @param formatString If parsing fails try to parse the date by pressing `formatString`
|
|
65
|
-
* @param defaultValue If parsing fails returned default value, default: `new Date(NaN)`
|
|
66
|
-
*/
|
|
67
|
-
function toDate(value, options) {
|
|
68
|
-
if (typeof options === 'string')
|
|
69
|
-
options = { formatString: options };
|
|
70
|
-
const { formatString, defaultValue } = Object.assign({ formatString: 'yyyy-MM-dd HH:mm:ss', defaultValue: new Date(NaN) }, options);
|
|
71
|
-
if (value == null) {
|
|
72
|
-
return defaultValue;
|
|
73
|
-
}
|
|
74
|
-
if (value instanceof Date) {
|
|
75
|
-
return value;
|
|
76
|
-
}
|
|
77
|
-
if (typeof value === 'number' || (typeof value === 'string' && /[0-9]{10,13}/.test(value))) {
|
|
78
|
-
return new Date(+value);
|
|
79
|
-
}
|
|
80
|
-
let tryDate = parseISO(value);
|
|
81
|
-
if (isNaN(tryDate)) {
|
|
82
|
-
tryDate = parse(value, formatString, new Date());
|
|
83
|
-
}
|
|
84
|
-
return isNaN(tryDate) ? defaultValue : tryDate;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// TODO: timezone process
|
|
88
|
-
class DateTimePickerUtil {
|
|
89
|
-
/**
|
|
90
|
-
* Current local time
|
|
91
|
-
*
|
|
92
|
-
* 当前本地时间
|
|
93
|
-
*/
|
|
94
|
-
get now() {
|
|
95
|
-
return new Date();
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Current local date (not including time part)
|
|
99
|
-
*
|
|
100
|
-
* 当前本地日期(不包含时间部分)
|
|
101
|
-
*/
|
|
102
|
-
get date() {
|
|
103
|
-
return this.removeTime(this.now);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Remove the time part of the date
|
|
107
|
-
*
|
|
108
|
-
* 移除日期的时间部分
|
|
109
|
-
*/
|
|
110
|
-
removeTime(d) {
|
|
111
|
-
return new Date(d.toDateString());
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Format date-time
|
|
115
|
-
*
|
|
116
|
-
* 格式化日期
|
|
117
|
-
*/
|
|
118
|
-
format(d, formatString = 'yyyy-MM-dd HH:mm:ss') {
|
|
119
|
-
return format(d, formatString);
|
|
120
|
-
}
|
|
121
|
-
genTick(count) {
|
|
122
|
-
return new Array(count).fill(0).map((_, idx) => idx);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Calculate the number of days between two dates, `0` means the same day
|
|
126
|
-
*
|
|
127
|
-
* 计算两个日期相差天数,`0` 表示同一天
|
|
128
|
-
*/
|
|
129
|
-
getDiffDays(dateLeft, dateRight) {
|
|
130
|
-
return differenceInCalendarDays(dateLeft, typeof dateRight === 'number' ? addDays(this.date, dateRight) : dateRight || this.date);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Disabled Before date (Default: today), Generally serves `nzDisabledDate`
|
|
134
|
-
*
|
|
135
|
-
* 禁用之前日期(默认:今天),一般服务于 `nzDisabledDate`
|
|
136
|
-
*/
|
|
137
|
-
disabledBeforeDate(options) {
|
|
138
|
-
return (d) => this.getDiffDays(d, options === null || options === void 0 ? void 0 : options.offsetDays) < 0;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Disabled After date (Default: today), Generally serves `nzDisabledDate`
|
|
142
|
-
*
|
|
143
|
-
* 禁用之后日期(默认:今天),一般服务于 `nzDisabledDate`
|
|
144
|
-
*/
|
|
145
|
-
disabledAfterDate(options) {
|
|
146
|
-
return (d) => this.getDiffDays(d, options === null || options === void 0 ? void 0 : options.offsetDays) > 0;
|
|
147
|
-
}
|
|
148
|
-
baseDisabledTime(type, offsetSeconds) {
|
|
149
|
-
const tick24 = this.genTick(24);
|
|
150
|
-
const tick60 = this.genTick(60);
|
|
151
|
-
return (current) => {
|
|
152
|
-
const cur = current;
|
|
153
|
-
if (cur == null) {
|
|
154
|
-
return {};
|
|
155
|
-
}
|
|
156
|
-
const now = addSeconds(this.now, offsetSeconds || 0);
|
|
157
|
-
const nowHours = now.getHours();
|
|
158
|
-
const nowMinutes = now.getMinutes();
|
|
159
|
-
const curHours = cur.getHours();
|
|
160
|
-
const isToday = this.getDiffDays(this.removeTime(cur)) === 0;
|
|
161
|
-
return {
|
|
162
|
-
nzDisabledHours: () => {
|
|
163
|
-
if (!isToday)
|
|
164
|
-
return [];
|
|
165
|
-
return type === 'before' ? tick24.slice(0, nowHours) : tick24.slice(nowHours + 1);
|
|
166
|
-
},
|
|
167
|
-
nzDisabledMinutes: () => {
|
|
168
|
-
if (isToday && curHours === nowHours) {
|
|
169
|
-
return type === 'before' ? tick60.slice(0, nowMinutes) : tick60.slice(nowMinutes + 1);
|
|
170
|
-
}
|
|
171
|
-
return [];
|
|
172
|
-
},
|
|
173
|
-
nzDisabledSeconds: () => {
|
|
174
|
-
if (isToday && curHours === nowHours && cur.getMinutes() === nowMinutes) {
|
|
175
|
-
const nowSeconds = now.getSeconds();
|
|
176
|
-
return type === 'before' ? tick60.slice(0, nowSeconds) : tick60.slice(nowSeconds + 1);
|
|
177
|
-
}
|
|
178
|
-
return [];
|
|
179
|
-
}
|
|
180
|
-
};
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Disabled Before time (Default: now), Generally serves `nzDisabledTime`
|
|
185
|
-
*
|
|
186
|
-
* 禁用之前时间(默认:现在),一般服务于 `nzDisabledTime`
|
|
187
|
-
*/
|
|
188
|
-
disabledBeforeTime(options) {
|
|
189
|
-
return this.baseDisabledTime('before', options === null || options === void 0 ? void 0 : options.offsetSeconds);
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Disabled After time (Default: now), Generally serves `nzDisabledTime`
|
|
193
|
-
*
|
|
194
|
-
* 禁用之后时间(默认:现在),一般服务于 `nzDisabledTime`
|
|
195
|
-
*/
|
|
196
|
-
disabledAfterTime(options) {
|
|
197
|
-
return this.baseDisabledTime('after', options === null || options === void 0 ? void 0 : options.offsetSeconds);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
const dateTimePickerUtil = new DateTimePickerUtil();
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Generated bundle index. Do not edit.
|
|
204
|
-
*/
|
|
205
|
-
|
|
206
|
-
export { DateTimePickerUtil, dateTimePickerUtil, fixEndTimeOfRange, getTimeDistance, toDate };
|
|
207
|
-
//# sourceMappingURL=date-time.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-time.mjs","sources":["../../../../packages/util/date-time/time.ts","../../../../packages/util/date-time/picker.ts","../../../../packages/util/date-time/date-time.ts"],"sourcesContent":["import {\n addDays,\n endOfDay,\n endOfMonth,\n endOfWeek,\n endOfYear,\n parse,\n parseISO,\n startOfDay,\n startOfMonth,\n startOfWeek,\n startOfYear,\n subMonths,\n subWeeks,\n subYears\n} from 'date-fns';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n/**\n * Get the time range, return `[ Date, Date]` for the start and end dates\n *\n * 获取时间范围\n *\n * @param type 类型,带 `-` 表示过去一个时间,若指定 `number` 表示天数\n * @param time 开始时间\n * @param ignoreMaxTime 忽略追加结束日期的最大时间值\n */\nexport function getTimeDistance(\n type: 'today' | '-today' | 'yesterday' | 'week' | '-week' | 'month' | '-month' | 'year' | '-year' | number,\n time?: Date | string | number,\n options?: { ignoreMaxTime?: boolean }\n): [Date, Date] {\n time = time\n ? typeof time === 'string'\n ? parse(time, 'yyyy-MM-dd HH:mm:ss', new Date())\n : new Date(time)\n : new Date();\n const opt: { weekStartsOn: 1 } = { weekStartsOn: 1 };\n\n let res: [Date, Date];\n switch (type) {\n case 'today':\n res = [time, time];\n break;\n case '-today':\n res = [addDays(time, -1), time];\n break;\n case 'yesterday':\n res = [addDays(time, -1), addDays(time, -1)];\n break;\n case 'week':\n res = [startOfWeek(time, opt), endOfWeek(time, opt)];\n break;\n case '-week':\n res = [startOfWeek(subWeeks(time, 1), opt), endOfWeek(subWeeks(time, 1), opt)];\n break;\n case 'month':\n res = [startOfMonth(time), endOfMonth(time)];\n break;\n case '-month':\n res = [startOfMonth(subMonths(time, 1)), endOfMonth(subMonths(time, 1))];\n break;\n case 'year':\n res = [startOfYear(time), endOfYear(time)];\n break;\n case '-year':\n res = [startOfYear(subYears(time, 1)), endOfYear(subYears(time, 1))];\n break;\n default:\n res = type > 0 ? [time, addDays(time, type)] : [addDays(time, type), time];\n break;\n }\n return options?.ignoreMaxTime ? res : fixEndTimeOfRange(res);\n}\n\n/**\n * fix time is the most, big value\n */\nexport function fixEndTimeOfRange(dates: [Date, Date]): [Date, Date] {\n return [startOfDay(dates[0]), endOfDay(dates[1])];\n}\n\nexport type ToDateOptions = string | { formatString?: string; defaultValue?: NzSafeAny };\n\n/**\n * Return the date parsed from string using the given format string\n * - If the argument is a number, it is treated as a timestamp.\n *\n * @param formatString If parsing fails try to parse the date by pressing `formatString`\n * @param defaultValue If parsing fails returned default value, default: `new Date(NaN)`\n */\nexport function toDate(value?: Date | string | number | null, options?: ToDateOptions): Date {\n if (typeof options === 'string') options = { formatString: options };\n const { formatString, defaultValue } = {\n formatString: 'yyyy-MM-dd HH:mm:ss',\n defaultValue: new Date(NaN),\n ...options\n };\n if (value == null) {\n return defaultValue;\n }\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'number' || (typeof value === 'string' && /[0-9]{10,13}/.test(value))) {\n return new Date(+value);\n }\n let tryDate = parseISO(value);\n if (isNaN(tryDate as NzSafeAny)) {\n tryDate = parse(value, formatString!, new Date());\n }\n\n return isNaN(tryDate as NzSafeAny) ? defaultValue : tryDate;\n}\n","import { addDays, addSeconds, differenceInCalendarDays, format } from 'date-fns';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport type { DisabledDateFn, DisabledTimeConfig, DisabledTimeFn } from 'ng-zorro-antd/date-picker';\n\n// TODO: timezone process\nexport class DateTimePickerUtil {\n /**\n * Current local time\n *\n * 当前本地时间\n */\n get now(): Date {\n return new Date();\n }\n /**\n * Current local date (not including time part)\n *\n * 当前本地日期(不包含时间部分)\n */\n get date(): Date {\n return this.removeTime(this.now);\n }\n /**\n * Remove the time part of the date\n *\n * 移除日期的时间部分\n */\n removeTime(d: Date): Date {\n return new Date(d.toDateString());\n }\n /**\n * Format date-time\n *\n * 格式化日期\n */\n format(d: number | Date, formatString: string = 'yyyy-MM-dd HH:mm:ss'): string {\n return format(d, formatString);\n }\n private genTick(count: number): number[] {\n return new Array(count).fill(0).map((_, idx) => idx);\n }\n /**\n * Calculate the number of days between two dates, `0` means the same day\n *\n * 计算两个日期相差天数,`0` 表示同一天\n */\n getDiffDays(dateLeft: Date | number, dateRight?: Date | number): number {\n return differenceInCalendarDays(\n dateLeft,\n typeof dateRight === 'number' ? addDays(this.date, dateRight) : dateRight || this.date\n );\n }\n /**\n * Disabled Before date (Default: today), Generally serves `nzDisabledDate`\n *\n * 禁用之前日期(默认:今天),一般服务于 `nzDisabledDate`\n */\n disabledBeforeDate(options?: { offsetDays?: Date | number }): DisabledDateFn {\n return (d): boolean => this.getDiffDays(d, options?.offsetDays) < 0;\n }\n /**\n * Disabled After date (Default: today), Generally serves `nzDisabledDate`\n *\n * 禁用之后日期(默认:今天),一般服务于 `nzDisabledDate`\n */\n disabledAfterDate(options?: { offsetDays?: Date | number }): DisabledDateFn {\n return (d): boolean => this.getDiffDays(d, options?.offsetDays) > 0;\n }\n private baseDisabledTime(type: 'before' | 'after', offsetSeconds?: number): DisabledTimeFn {\n const tick24 = this.genTick(24);\n const tick60 = this.genTick(60);\n return (current): DisabledTimeConfig => {\n const cur = current as Date;\n if (cur == null) {\n return {} as NzSafeAny;\n }\n const now = addSeconds(this.now, offsetSeconds || 0);\n const nowHours = now.getHours();\n const nowMinutes = now.getMinutes();\n const curHours = cur.getHours();\n const isToday = this.getDiffDays(this.removeTime(cur)) === 0;\n return {\n nzDisabledHours: () => {\n if (!isToday) return [];\n return type === 'before' ? tick24.slice(0, nowHours) : tick24.slice(nowHours + 1);\n },\n nzDisabledMinutes: () => {\n if (isToday && curHours === nowHours) {\n return type === 'before' ? tick60.slice(0, nowMinutes) : tick60.slice(nowMinutes + 1);\n }\n return [];\n },\n nzDisabledSeconds: () => {\n if (isToday && curHours === nowHours && cur.getMinutes() === nowMinutes) {\n const nowSeconds = now.getSeconds();\n return type === 'before' ? tick60.slice(0, nowSeconds) : tick60.slice(nowSeconds + 1);\n }\n return [];\n }\n };\n };\n }\n /**\n * Disabled Before time (Default: now), Generally serves `nzDisabledTime`\n *\n * 禁用之前时间(默认:现在),一般服务于 `nzDisabledTime`\n */\n disabledBeforeTime(options?: { offsetSeconds?: number }): DisabledTimeFn {\n return this.baseDisabledTime('before', options?.offsetSeconds);\n }\n /**\n * Disabled After time (Default: now), Generally serves `nzDisabledTime`\n *\n * 禁用之后时间(默认:现在),一般服务于 `nzDisabledTime`\n */\n disabledAfterTime(options?: { offsetSeconds?: number }): DisabledTimeFn {\n return this.baseDisabledTime('after', options?.offsetSeconds);\n }\n}\n\nexport const dateTimePickerUtil = new DateTimePickerUtil();\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/fesm2015/decorator.mjs
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.mjs","sources":["../../../../packages/util/decorator/convert.ts","../../../../packages/util/decorator/zone-outside.ts","../../../../packages/util/decorator/decorator.ts"],"sourcesContent":["import { warn } from '@yelon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport type BooleanInput = boolean | string | undefined | null;\nexport type NumberInput = number | string | undefined | null;\n\nfunction propDecoratorFactory<T, D>(\n name: string,\n fallback: (v: T, defaultValue: D) => D,\n defaultValue: NzSafeAny\n): (target: NzSafeAny, propName: string) => void {\n function propDecorator(\n target: NzSafeAny,\n propName: string,\n originalDescriptor?: TypedPropertyDescriptor<NzSafeAny>\n ): NzSafeAny {\n const privatePropName = `$$__${propName}`;\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {\n warn(`The prop \"${privatePropName}\" is already exist, it will be overrided by ${name} decorator.`);\n }\n }\n\n Object.defineProperty(target, privatePropName, {\n configurable: true,\n writable: true\n });\n\n return {\n get(): string {\n return originalDescriptor && originalDescriptor.get\n ? originalDescriptor.get.bind(this)()\n : this[privatePropName];\n },\n set(value: T): void {\n if (originalDescriptor && originalDescriptor.set) {\n originalDescriptor.set.bind(this)(fallback(value, defaultValue));\n }\n this[privatePropName] = fallback(value, defaultValue);\n }\n };\n }\n\n return propDecorator;\n}\n\nexport function toBoolean(\n value: unknown,\n defaultValue: boolean | null | undefined = false\n): boolean | null | undefined {\n return value == null ? defaultValue : `${value}` !== 'false';\n}\n\n/**\n * Input decorator that handle a prop to do get/set automatically with toBoolean\n *\n * ```ts\n * {AT}Input() {AT}InputBoolean() visible: boolean = false;\n * {AT}Input() {AT}InputBoolean(null) visible: boolean = false;\n * ```\n */\nexport function InputBoolean(defaultValue: boolean | null = false): NzSafeAny {\n return propDecoratorFactory('InputBoolean', toBoolean, defaultValue);\n}\n\nexport function toNumber(value: unknown): number;\nexport function toNumber<D>(value: unknown, fallback: D): number | D;\nexport function toNumber(value: unknown, fallbackValue: number = 0): number {\n return !isNaN(parseFloat(value as NzSafeAny)) && !isNaN(Number(value)) ? Number(value) : fallbackValue;\n}\n\n/**\n * Input decorator that handle a prop to do get/set automatically with toNumber\n *\n * ```ts\n * {AT}Input() {AT}InputNumber() visible: number = 1;\n * {AT}Input() {AT}InputNumber(null) visible: number = 2;\n * ```\n */\nexport function InputNumber(defaultValue: number | null = 0): NzSafeAny {\n return propDecoratorFactory('InputNumber', toNumber, defaultValue);\n}\n","import { warn } from '@yelon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport interface ZoneOptions {\n ngZoneName?: string;\n}\n\ntype DecoratorType = (target: unknown, fn: string, descriptor: PropertyDescriptor) => PropertyDescriptor;\n\nfunction makeFn(type: 'runOutsideAngular' | 'run', options?: ZoneOptions): DecoratorType {\n return (_, __, descriptor) => {\n const source = descriptor.value;\n descriptor.value = function (...data: NzSafeAny[]): () => void {\n const that = this as NzSafeAny;\n const ngZone = that[options?.ngZoneName || 'ngZone'];\n if (!ngZone) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warn(`ZoneOutside: Decorator should have 'ngZone' property with 'NgZone' class.`);\n }\n return source.call(this, ...data);\n }\n let res: NzSafeAny;\n ngZone[type](() => {\n res = source.call(this, ...data);\n });\n return res;\n };\n\n return descriptor;\n };\n}\n\n/**\n * The decoration method runs in `runOutsideAngular`\n *\n * 装饰方法运行在 `runOutsideAngular` 内\n *\n * ```ts\n * class MockClass {\n * constructor(public ngZone: NgZone) {}\n *\n * {AT}ZoneOutside()\n * runOutsideAngular(): void {}\n * }\n * ```\n */\nexport function ZoneOutside(options?: ZoneOptions): DecoratorType {\n return makeFn('runOutsideAngular', options);\n}\n\n/**\n * The decoration method runs in `run`\n *\n * 装饰方法运行在 `run` 内\n *\n * ```ts\n * class MockClass {\n * constructor(public ngZone: NgZone) {}\n *\n * {AT}ZoneRun()\n * run(): void {}\n * }\n * ```\n */\nexport function ZoneRun(options?: ZoneOptions): DecoratorType {\n return makeFn('run', options);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/fesm2015/form.mjs
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
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
|