@yelon/util 15.2.6 → 16.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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":";;AAMA,SAAS,oBAAoB,CAC3B,IAAY,EACZ,QAAsC,EACtC,YAAuB,EAAA;AAEvB,IAAA,SAAS,aAAa,CACpB,MAAiB,EACjB,QAAgB,EAChB,kBAAuD,EAAA;AAEvD,QAAA,MAAM,eAAe,GAAG,CAAO,IAAA,EAAA,QAAQ,EAAE,CAAC;AAE1C,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE;AACjE,gBAAA,IAAI,CAAC,CAAa,UAAA,EAAA,eAAe,+CAA+C,IAAI,CAAA,WAAA,CAAa,CAAC,CAAC;AACpG,aAAA;AACF,SAAA;AAED,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE;AAC7C,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,GAAA;AACD,gBAAA,OAAO,kBAAkB,IAAI,kBAAkB,CAAC,GAAG;sBAC/C,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrC,sBAAE,IAAI,CAAC,eAAe,CAAC,CAAC;aAC3B;AACD,YAAA,GAAG,CAAC,KAAQ,EAAA;AACV,gBAAA,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,GAAG,EAAE;AAChD,oBAAA,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;AAClE,iBAAA;gBACD,IAAI,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;aACvD;SACF,CAAC;KACH;AAED,IAAA,OAAO,aAAa,CAAC;AACvB,CAAC;SAEe,SAAS,CACvB,KAAc,EACd,eAA2C,KAAK,EAAA;AAEhD,IAAA,OAAO,KAAK,IAAI,IAAI,GAAG,YAAY,GAAG,CAAG,EAAA,KAAK,CAAE,CAAA,KAAK,OAAO,CAAC;AAC/D,CAAC;AAED;;;;;;;AAOG;AACa,SAAA,YAAY,CAAC,YAAA,GAA+B,KAAK,EAAA;IAC/D,OAAO,oBAAoB,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AACvE,CAAC;SAIe,QAAQ,CAAC,KAAc,EAAE,gBAAwB,CAAC,EAAA;AAChE,IAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;AACzG,CAAC;AAED;;;;;;;AAOG;AACa,SAAA,WAAW,CAAC,YAAA,GAA8B,CAAC,EAAA;IACzD,OAAO,oBAAoB,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrE;;ACzEA,SAAS,MAAM,CAAC,IAAiC,EAAE,OAAqB,EAAA;AACtE,IAAA,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,KAAI;AAC3B,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;AAChC,QAAA,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAiB,EAAA;YAC/C,MAAM,IAAI,GAAG,IAAiB,CAAC;AAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,UAAU,KAAI,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;oBACjD,IAAI,CAAC,CAA2E,yEAAA,CAAA,CAAC,CAAC;AACnF,iBAAA;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,GAAc,CAAC;AACnB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,MAAK;gBAChB,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACnC,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC;AAEF,QAAA,OAAO,UAAU,CAAC;AACpB,KAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;AAaG;AACG,SAAU,WAAW,CAAC,OAAqB,EAAA;AAC/C,IAAA,OAAO,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;AAaG;AACG,SAAU,OAAO,CAAC,OAAqB,EAAA;AAC3C,IAAA,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChC;;AClEA;;AAEG;;;;"}
|
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
|