@yelon/util 12.0.13 → 12.0.17
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 +2 -2
- package/array/array-type.service.d.ts +68 -68
- package/array/array.service.d.ts +75 -75
- package/array/index.d.ts +2 -2
- package/array/yelon-util-array.d.ts +4 -4
- package/array/yelon-util-array.metadata.json +1 -1
- package/browser/browser.d.ts +4 -4
- package/browser/cookie.service.d.ts +64 -64
- 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 +34 -34
- package/browser/style.d.ts +21 -21
- package/bundles/browser.umd.js +275 -275
- package/bundles/yelon-util-array.umd.js +606 -606
- package/bundles/yelon-util-array.umd.js.map +1 -1
- package/bundles/yelon-util-config.umd.js +366 -366
- package/bundles/yelon-util-date-time.umd.js +216 -216
- package/bundles/yelon-util-decorator.umd.js +437 -437
- package/bundles/yelon-util-form.umd.js +116 -116
- package/bundles/yelon-util-format.umd.js +726 -726
- package/bundles/yelon-util-math.umd.js +83 -83
- package/bundles/yelon-util-other.umd.js +652 -656
- package/bundles/yelon-util-other.umd.js.map +1 -1
- package/bundles/yelon-util-pipes-currency.umd.js +83 -83
- package/bundles/yelon-util-pipes-filter.umd.js +353 -353
- package/bundles/yelon-util-pipes-format.umd.js +47 -47
- package/bundles/yelon-util-pipes.umd.js +7 -7
- package/bundles/yelon-util-token.umd.js +30 -30
- package/bundles/yelon-util.umd.js +7 -7
- package/config/abc/date-picker.type.d.ts +52 -52
- package/config/abc/error-collect.type.d.ts +10 -10
- package/config/abc/image.type.d.ts +15 -15
- package/config/abc/index.d.ts +16 -16
- 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 +427 -431
- 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 +10 -10
- package/config/config.types.d.ts +49 -49
- package/config/index.d.ts +14 -14
- package/config/mock/mock.type.d.ts +18 -18
- package/config/sf/sf.type.d.ts +127 -127
- package/config/stomp/stomp.type.d.ts +2 -2
- package/config/theme/http.type.d.ts +14 -14
- package/config/theme/i18n.type.d.ts +8 -8
- 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/config/yelon-util-config.d.ts +4 -4
- package/date-time/index.d.ts +2 -2
- package/date-time/picker.d.ts +68 -68
- package/date-time/time.d.ts +26 -26
- package/date-time/yelon-util-date-time.d.ts +4 -4
- package/decorator/convert.d.ts +24 -24
- package/decorator/index.d.ts +2 -2
- package/decorator/yelon-util-decorator.d.ts +4 -4
- package/decorator/zone-outside.d.ts +35 -35
- package/esm2015/array/array-type.service.js +1 -1
- package/esm2015/array/array.service.js +250 -250
- package/esm2015/array/index.js +2 -2
- package/esm2015/array/yelon-util-array.js +4 -4
- package/esm2015/browser/browser.js +4 -4
- package/esm2015/browser/cookie.service.js +103 -103
- package/esm2015/browser/copy.js +26 -26
- package/esm2015/browser/index.js +5 -5
- package/esm2015/browser/is-empty.js +18 -18
- package/esm2015/browser/scroll.service.js +88 -88
- package/esm2015/browser/style.js +37 -37
- package/esm2015/config/abc/date-picker.type.js +1 -1
- package/esm2015/config/abc/error-collect.type.js +1 -1
- package/esm2015/config/abc/image.type.js +1 -1
- package/esm2015/config/abc/index.js +16 -16
- package/esm2015/config/abc/loading.type.js +1 -1
- package/esm2015/config/abc/lodop.type.js +1 -1
- package/esm2015/config/abc/media.type.js +1 -1
- package/esm2015/config/abc/onboarding.type.js +1 -1
- package/esm2015/config/abc/page-header.type.js +1 -1
- package/esm2015/config/abc/pdf.type.js +1 -1
- package/esm2015/config/abc/qr.type.js +1 -1
- package/esm2015/config/abc/se.type.js +1 -1
- package/esm2015/config/abc/sg.type.js +1 -1
- package/esm2015/config/abc/st.type.js +2 -2
- package/esm2015/config/abc/sv.type.js +2 -2
- package/esm2015/config/abc/xlsx.type.js +1 -1
- package/esm2015/config/abc/zip.type.js +1 -1
- package/esm2015/config/acl/acl.type.js +1 -1
- package/esm2015/config/auth/auth.type.js +1 -1
- package/esm2015/config/bis/bis.type.js +1 -1
- package/esm2015/config/cache/cache.type.js +1 -1
- package/esm2015/config/chart/chart.type.js +1 -1
- package/esm2015/config/config.service.js +33 -33
- package/esm2015/config/config.types.js +8 -8
- package/esm2015/config/index.js +14 -14
- package/esm2015/config/mock/mock.type.js +1 -1
- package/esm2015/config/sf/sf.type.js +1 -1
- package/esm2015/config/stomp/stomp.type.js +1 -1
- package/esm2015/config/theme/http.type.js +1 -1
- package/esm2015/config/theme/i18n.type.js +1 -1
- package/esm2015/config/theme/index.js +3 -3
- package/esm2015/config/theme/responsive.type.js +1 -1
- package/esm2015/config/util/array.type.js +1 -1
- package/esm2015/config/util/currency.type.js +1 -1
- package/esm2015/config/yelon-util-config.js +4 -4
- package/esm2015/date-time/index.js +2 -2
- package/esm2015/date-time/picker.js +115 -115
- package/esm2015/date-time/time.js +83 -83
- package/esm2015/date-time/yelon-util-date-time.js +4 -4
- package/esm2015/decorator/convert.js +55 -55
- package/esm2015/decorator/index.js +2 -2
- package/esm2015/decorator/yelon-util-decorator.js +4 -4
- package/esm2015/decorator/zone-outside.js +54 -54
- package/esm2015/form/index.js +2 -2
- package/esm2015/form/match-control.js +29 -29
- package/esm2015/form/validators.js +80 -80
- package/esm2015/form/yelon-util-form.js +4 -4
- package/esm2015/format/currency.service.js +224 -224
- package/esm2015/format/currency.types.js +7 -7
- package/esm2015/format/index.js +4 -4
- package/esm2015/format/string.js +75 -75
- package/esm2015/format/validate.js +93 -93
- package/esm2015/format/yelon-util-format.js +4 -4
- package/esm2015/index.js +11 -11
- package/esm2015/math/in-range.js +24 -24
- package/esm2015/math/index.js +2 -2
- package/esm2015/math/round.js +52 -52
- package/esm2015/math/yelon-util-math.js +4 -4
- package/esm2015/other/assert.js +66 -66
- package/esm2015/other/deep.js +76 -76
- package/esm2015/other/index.js +4 -4
- package/esm2015/other/lazy.service.js +118 -118
- package/esm2015/other/logger.js +33 -36
- package/esm2015/other/yelon-util-other.js +4 -4
- package/esm2015/pipes/currency/cny.pipe.js +21 -21
- package/esm2015/pipes/currency/index.js +3 -3
- package/esm2015/pipes/currency/mega.pipe.js +25 -25
- package/esm2015/pipes/currency/module.js +13 -13
- package/esm2015/pipes/currency/price.pipe.js +25 -25
- package/esm2015/pipes/currency/yelon-util-pipes-currency.js +5 -5
- package/esm2015/pipes/filter/filter.pipe.js +14 -14
- package/esm2015/pipes/filter/index.js +2 -2
- package/esm2015/pipes/filter/module.js +11 -11
- package/esm2015/pipes/filter/yelon-util-pipes-filter.js +4 -4
- package/esm2015/pipes/format/index.js +2 -2
- package/esm2015/pipes/format/mask.pipe.js +29 -29
- package/esm2015/pipes/format/module.js +11 -11
- package/esm2015/pipes/format/yelon-util-pipes-format.js +4 -4
- package/esm2015/pipes/index.js +3 -3
- package/esm2015/pipes/yelon-util-pipes.js +4 -4
- package/esm2015/token/index.js +2 -2
- package/esm2015/token/page-visibility.js +15 -15
- package/esm2015/token/window.js +16 -16
- package/esm2015/token/yelon-util-token.js +4 -4
- package/esm2015/yelon-util.js +4 -4
- package/fesm2015/browser.js +257 -257
- package/fesm2015/yelon-util-array.js +246 -246
- package/fesm2015/yelon-util-array.js.map +1 -1
- package/fesm2015/yelon-util-config.js +36 -36
- package/fesm2015/yelon-util-date-time.js +196 -196
- package/fesm2015/yelon-util-decorator.js +107 -107
- package/fesm2015/yelon-util-form.js +108 -108
- package/fesm2015/yelon-util-format.js +390 -390
- package/fesm2015/yelon-util-math.js +75 -75
- package/fesm2015/yelon-util-other.js +281 -284
- package/fesm2015/yelon-util-other.js.map +1 -1
- package/fesm2015/yelon-util-pipes-currency.js +72 -72
- package/fesm2015/yelon-util-pipes-filter.js +22 -22
- package/fesm2015/yelon-util-pipes-format.js +36 -36
- package/fesm2015/yelon-util-pipes.js +2 -2
- package/fesm2015/yelon-util-token.js +25 -25
- package/fesm2015/yelon-util.js +2 -2
- package/form/index.d.ts +2 -2
- package/form/match-control.d.ts +15 -15
- package/form/validators.d.ts +62 -62
- package/form/yelon-util-form.d.ts +4 -4
- package/format/currency.service.d.ts +34 -34
- 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/format/yelon-util-format.d.ts +4 -4
- package/index.d.ts +11 -11
- package/math/in-range.d.ts +14 -14
- package/math/index.d.ts +2 -2
- package/math/round.d.ts +33 -33
- package/math/yelon-util-math.d.ts +4 -4
- package/other/assert.d.ts +36 -36
- package/other/deep.d.ts +33 -33
- package/other/index.d.ts +4 -4
- package/other/lazy.service.d.ts +22 -22
- package/other/logger.d.ts +5 -6
- package/other/yelon-util-other.d.ts +4 -4
- package/other/yelon-util-other.metadata.json +1 -1
- package/package.json +1 -1
- package/pipes/currency/cny.pipe.d.ts +12 -12
- package/pipes/currency/index.d.ts +3 -3
- package/pipes/currency/mega.pipe.d.ts +13 -13
- package/pipes/currency/module.d.ts +2 -2
- package/pipes/currency/price.pipe.d.ts +16 -16
- package/pipes/currency/yelon-util-pipes-currency.d.ts +5 -5
- package/pipes/filter/filter.pipe.d.ts +10 -10
- package/pipes/filter/index.d.ts +2 -2
- package/pipes/filter/module.d.ts +2 -2
- package/pipes/filter/yelon-util-pipes-filter.d.ts +4 -4
- package/pipes/format/index.d.ts +2 -2
- package/pipes/format/mask.pipe.d.ts +24 -24
- package/pipes/format/module.d.ts +2 -2
- package/pipes/format/yelon-util-pipes-format.d.ts +4 -4
- package/pipes/index.d.ts +3 -3
- package/pipes/yelon-util-pipes.d.ts +4 -4
- package/token/index.d.ts +2 -2
- package/token/page-visibility.d.ts +8 -8
- package/token/window.d.ts +7 -7
- package/token/yelon-util-token.d.ts +4 -4
- package/yelon-util.d.ts +4 -4
package/fesm2015/browser.js
CHANGED
|
@@ -5,273 +5,273 @@ import { DOCUMENT } from '@angular/common';
|
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
6
|
import { Injectable, Inject } from '@angular/core';
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* A set of simple Cookie manipulation classes.
|
|
10
|
-
*
|
|
11
|
-
* 一组简单的 Cookie 操作类。
|
|
12
|
-
*/
|
|
13
|
-
class CookieService {
|
|
14
|
-
constructor(_doc, platform) {
|
|
15
|
-
this._doc = _doc;
|
|
16
|
-
this.platform = platform;
|
|
17
|
-
}
|
|
18
|
-
get doc() {
|
|
19
|
-
return this._doc || document;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Original cookie value
|
|
23
|
-
*
|
|
24
|
-
* 原始Cookie值
|
|
25
|
-
*/
|
|
26
|
-
get cookie() {
|
|
27
|
-
return this.platform.isBrowser ? this.doc.cookie : '';
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get all cookie key-value pairs
|
|
31
|
-
*
|
|
32
|
-
* 获取所有Cookie键值对
|
|
33
|
-
*/
|
|
34
|
-
getAll() {
|
|
35
|
-
const ret = {};
|
|
36
|
-
const arr = this.cookie.split('; ');
|
|
37
|
-
for (let i = 0; i < arr.length; i++) {
|
|
38
|
-
const cookie = arr[i];
|
|
39
|
-
const index = cookie.indexOf('=');
|
|
40
|
-
if (index > 0) {
|
|
41
|
-
const name = decodeURIComponent(cookie.substring(0, index));
|
|
42
|
-
if (ret[name] == null) {
|
|
43
|
-
ret[name] = decodeURIComponent(cookie.substring(index + 1));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return ret;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get the value of given cookie `key`
|
|
51
|
-
*
|
|
52
|
-
* 获取指定 `key` 的值
|
|
53
|
-
*/
|
|
54
|
-
get(key) {
|
|
55
|
-
return this.getAll()[key];
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Sets a value for given cookie key
|
|
59
|
-
*
|
|
60
|
-
* 设置指定 Cookie 键的值
|
|
61
|
-
*/
|
|
62
|
-
put(key, value, options) {
|
|
63
|
-
if (!this.platform.isBrowser) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const opt = Object.assign({ path: '/' }, options);
|
|
67
|
-
if (typeof opt.expires === 'number') {
|
|
68
|
-
opt.expires = new Date(+new Date() + opt.expires * 1e3);
|
|
69
|
-
}
|
|
70
|
-
if (typeof opt.expires !== 'string') {
|
|
71
|
-
opt.expires = opt.expires ? opt.expires.toUTCString() : '';
|
|
72
|
-
}
|
|
73
|
-
const optStr = opt;
|
|
74
|
-
const attributes = Object.keys(optStr)
|
|
75
|
-
.filter(k => optStr[k] && optStr[k] !== true)
|
|
76
|
-
.map(k => `${k}=${optStr[k].split(';')[0]}`)
|
|
77
|
-
.join(';');
|
|
78
|
-
this.doc.cookie = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}${attributes ? `; ${attributes}` : ''}`;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Remove given cookie
|
|
82
|
-
*
|
|
83
|
-
* 移除指定 Cookie
|
|
84
|
-
*/
|
|
85
|
-
remove(key, options) {
|
|
86
|
-
this.put(key, undefined, options);
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Remove all cookies
|
|
90
|
-
*
|
|
91
|
-
* 移除所有 Cookies
|
|
92
|
-
*/
|
|
93
|
-
removeAll() {
|
|
94
|
-
this.doc.cookie = '';
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
CookieService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CookieService_Factory() { return new CookieService(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i2.Platform)); }, token: CookieService, providedIn: "root" });
|
|
98
|
-
CookieService.decorators = [
|
|
99
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
100
|
-
];
|
|
101
|
-
CookieService.ctorParameters = () => [
|
|
102
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
103
|
-
{ type: Platform }
|
|
8
|
+
/**
|
|
9
|
+
* A set of simple Cookie manipulation classes.
|
|
10
|
+
*
|
|
11
|
+
* 一组简单的 Cookie 操作类。
|
|
12
|
+
*/
|
|
13
|
+
class CookieService {
|
|
14
|
+
constructor(_doc, platform) {
|
|
15
|
+
this._doc = _doc;
|
|
16
|
+
this.platform = platform;
|
|
17
|
+
}
|
|
18
|
+
get doc() {
|
|
19
|
+
return this._doc || document;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Original cookie value
|
|
23
|
+
*
|
|
24
|
+
* 原始Cookie值
|
|
25
|
+
*/
|
|
26
|
+
get cookie() {
|
|
27
|
+
return this.platform.isBrowser ? this.doc.cookie : '';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get all cookie key-value pairs
|
|
31
|
+
*
|
|
32
|
+
* 获取所有Cookie键值对
|
|
33
|
+
*/
|
|
34
|
+
getAll() {
|
|
35
|
+
const ret = {};
|
|
36
|
+
const arr = this.cookie.split('; ');
|
|
37
|
+
for (let i = 0; i < arr.length; i++) {
|
|
38
|
+
const cookie = arr[i];
|
|
39
|
+
const index = cookie.indexOf('=');
|
|
40
|
+
if (index > 0) {
|
|
41
|
+
const name = decodeURIComponent(cookie.substring(0, index));
|
|
42
|
+
if (ret[name] == null) {
|
|
43
|
+
ret[name] = decodeURIComponent(cookie.substring(index + 1));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return ret;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the value of given cookie `key`
|
|
51
|
+
*
|
|
52
|
+
* 获取指定 `key` 的值
|
|
53
|
+
*/
|
|
54
|
+
get(key) {
|
|
55
|
+
return this.getAll()[key];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Sets a value for given cookie key
|
|
59
|
+
*
|
|
60
|
+
* 设置指定 Cookie 键的值
|
|
61
|
+
*/
|
|
62
|
+
put(key, value, options) {
|
|
63
|
+
if (!this.platform.isBrowser) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const opt = Object.assign({ path: '/' }, options);
|
|
67
|
+
if (typeof opt.expires === 'number') {
|
|
68
|
+
opt.expires = new Date(+new Date() + opt.expires * 1e3);
|
|
69
|
+
}
|
|
70
|
+
if (typeof opt.expires !== 'string') {
|
|
71
|
+
opt.expires = opt.expires ? opt.expires.toUTCString() : '';
|
|
72
|
+
}
|
|
73
|
+
const optStr = opt;
|
|
74
|
+
const attributes = Object.keys(optStr)
|
|
75
|
+
.filter(k => optStr[k] && optStr[k] !== true)
|
|
76
|
+
.map(k => `${k}=${optStr[k].split(';')[0]}`)
|
|
77
|
+
.join(';');
|
|
78
|
+
this.doc.cookie = `${encodeURIComponent(String(key))}=${encodeURIComponent(String(value))}${attributes ? `; ${attributes}` : ''}`;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Remove given cookie
|
|
82
|
+
*
|
|
83
|
+
* 移除指定 Cookie
|
|
84
|
+
*/
|
|
85
|
+
remove(key, options) {
|
|
86
|
+
this.put(key, undefined, options);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Remove all cookies
|
|
90
|
+
*
|
|
91
|
+
* 移除所有 Cookies
|
|
92
|
+
*/
|
|
93
|
+
removeAll() {
|
|
94
|
+
this.doc.cookie = '';
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
CookieService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CookieService_Factory() { return new CookieService(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i2.Platform)); }, token: CookieService, providedIn: "root" });
|
|
98
|
+
CookieService.decorators = [
|
|
99
|
+
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
100
|
+
];
|
|
101
|
+
CookieService.ctorParameters = () => [
|
|
102
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
103
|
+
{ type: Platform }
|
|
104
104
|
];
|
|
105
105
|
|
|
106
|
-
/**
|
|
107
|
-
* Copy text to clipboard
|
|
108
|
-
*
|
|
109
|
-
* 复制字符串文档至剪贴板
|
|
110
|
-
*/
|
|
111
|
-
function copy(value) {
|
|
112
|
-
return new Promise((resolve) => {
|
|
113
|
-
let copyTextArea = null;
|
|
114
|
-
try {
|
|
115
|
-
copyTextArea = document.createElement('textarea');
|
|
116
|
-
copyTextArea.style.height = '0px';
|
|
117
|
-
copyTextArea.style.opacity = '0';
|
|
118
|
-
copyTextArea.style.width = '0px';
|
|
119
|
-
document.body.appendChild(copyTextArea);
|
|
120
|
-
copyTextArea.value = value;
|
|
121
|
-
copyTextArea.select();
|
|
122
|
-
document.execCommand('copy');
|
|
123
|
-
resolve(value);
|
|
124
|
-
}
|
|
125
|
-
finally {
|
|
126
|
-
if (copyTextArea && copyTextArea.parentNode) {
|
|
127
|
-
copyTextArea.parentNode.removeChild(copyTextArea);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
});
|
|
106
|
+
/**
|
|
107
|
+
* Copy text to clipboard
|
|
108
|
+
*
|
|
109
|
+
* 复制字符串文档至剪贴板
|
|
110
|
+
*/
|
|
111
|
+
function copy(value) {
|
|
112
|
+
return new Promise((resolve) => {
|
|
113
|
+
let copyTextArea = null;
|
|
114
|
+
try {
|
|
115
|
+
copyTextArea = document.createElement('textarea');
|
|
116
|
+
copyTextArea.style.height = '0px';
|
|
117
|
+
copyTextArea.style.opacity = '0';
|
|
118
|
+
copyTextArea.style.width = '0px';
|
|
119
|
+
document.body.appendChild(copyTextArea);
|
|
120
|
+
copyTextArea.value = value;
|
|
121
|
+
copyTextArea.select();
|
|
122
|
+
document.execCommand('copy');
|
|
123
|
+
resolve(value);
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
if (copyTextArea && copyTextArea.parentNode) {
|
|
127
|
+
copyTextArea.parentNode.removeChild(copyTextArea);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
/**
|
|
134
|
-
* Used to verify `<ng-content></ng-content>` is empty, useful for custom components.
|
|
135
|
-
*
|
|
136
|
-
* 用于校验 `<ng-content></ng-content>` 是否为空,自定义组件时蛮有用。
|
|
137
|
-
*/
|
|
138
|
-
function isEmpty(element) {
|
|
139
|
-
const nodes = element.childNodes;
|
|
140
|
-
for (let i = 0; i < nodes.length; i++) {
|
|
141
|
-
const node = nodes.item(i);
|
|
142
|
-
if (node.nodeType === 1 && node.outerHTML.toString().trim().length !== 0) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
else if (node.nodeType === 3 && node.textContent.toString().trim().length !== 0) {
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
return true;
|
|
133
|
+
/**
|
|
134
|
+
* Used to verify `<ng-content></ng-content>` is empty, useful for custom components.
|
|
135
|
+
*
|
|
136
|
+
* 用于校验 `<ng-content></ng-content>` 是否为空,自定义组件时蛮有用。
|
|
137
|
+
*/
|
|
138
|
+
function isEmpty(element) {
|
|
139
|
+
const nodes = element.childNodes;
|
|
140
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
141
|
+
const node = nodes.item(i);
|
|
142
|
+
if (node.nodeType === 1 && node.outerHTML.toString().trim().length !== 0) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
else if (node.nodeType === 3 && node.textContent.toString().trim().length !== 0) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return true;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
class ScrollService {
|
|
153
|
-
constructor(_doc, platform) {
|
|
154
|
-
this._doc = _doc;
|
|
155
|
-
this.platform = platform;
|
|
156
|
-
}
|
|
157
|
-
_getDoc() {
|
|
158
|
-
return this._doc || document;
|
|
159
|
-
}
|
|
160
|
-
_getWin() {
|
|
161
|
-
const doc = this._getDoc();
|
|
162
|
-
return doc.defaultView || window;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* 获取滚动条位置
|
|
166
|
-
*
|
|
167
|
-
* @param element 指定元素,默认 `window`
|
|
168
|
-
*/
|
|
169
|
-
getScrollPosition(element) {
|
|
170
|
-
if (!this.platform.isBrowser) {
|
|
171
|
-
return [0, 0];
|
|
172
|
-
}
|
|
173
|
-
const win = this._getWin();
|
|
174
|
-
if (element && element !== win) {
|
|
175
|
-
return [element.scrollLeft, element.scrollTop];
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
return [win.pageXOffset, win.pageYOffset];
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* 设置滚动条位置
|
|
183
|
-
*
|
|
184
|
-
* @param element 指定元素
|
|
185
|
-
*/
|
|
186
|
-
scrollToPosition(element, position) {
|
|
187
|
-
if (!this.platform.isBrowser) {
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
(element || this._getWin()).scrollTo(position[0], position[1]);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* 设置滚动条至指定元素
|
|
194
|
-
*
|
|
195
|
-
* @param element 指定元素,默认 `document.body`
|
|
196
|
-
* @param topOffset 偏移值,默认 `0`
|
|
197
|
-
*/
|
|
198
|
-
scrollToElement(element, topOffset = 0) {
|
|
199
|
-
if (!this.platform.isBrowser) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
if (!element) {
|
|
203
|
-
element = this._getDoc().body;
|
|
204
|
-
}
|
|
205
|
-
element.scrollIntoView();
|
|
206
|
-
const win = this._getWin();
|
|
207
|
-
if (win && win.scrollBy) {
|
|
208
|
-
win.scrollBy(0, element.getBoundingClientRect().top - topOffset);
|
|
209
|
-
if (win.pageYOffset < 20) {
|
|
210
|
-
win.scrollBy(0, -win.pageYOffset);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* 滚动至顶部
|
|
216
|
-
*
|
|
217
|
-
* @param topOffset 偏移值,默认 `0`
|
|
218
|
-
*/
|
|
219
|
-
scrollToTop(topOffset = 0) {
|
|
220
|
-
if (!this.platform.isBrowser) {
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
this.scrollToElement(this._getDoc().body, topOffset);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
ScrollService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScrollService_Factory() { return new ScrollService(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i2.Platform)); }, token: ScrollService, providedIn: "root" });
|
|
227
|
-
ScrollService.decorators = [
|
|
228
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
229
|
-
];
|
|
230
|
-
ScrollService.ctorParameters = () => [
|
|
231
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
232
|
-
{ type: Platform }
|
|
152
|
+
class ScrollService {
|
|
153
|
+
constructor(_doc, platform) {
|
|
154
|
+
this._doc = _doc;
|
|
155
|
+
this.platform = platform;
|
|
156
|
+
}
|
|
157
|
+
_getDoc() {
|
|
158
|
+
return this._doc || document;
|
|
159
|
+
}
|
|
160
|
+
_getWin() {
|
|
161
|
+
const doc = this._getDoc();
|
|
162
|
+
return doc.defaultView || window;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* 获取滚动条位置
|
|
166
|
+
*
|
|
167
|
+
* @param element 指定元素,默认 `window`
|
|
168
|
+
*/
|
|
169
|
+
getScrollPosition(element) {
|
|
170
|
+
if (!this.platform.isBrowser) {
|
|
171
|
+
return [0, 0];
|
|
172
|
+
}
|
|
173
|
+
const win = this._getWin();
|
|
174
|
+
if (element && element !== win) {
|
|
175
|
+
return [element.scrollLeft, element.scrollTop];
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
return [win.pageXOffset, win.pageYOffset];
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* 设置滚动条位置
|
|
183
|
+
*
|
|
184
|
+
* @param element 指定元素
|
|
185
|
+
*/
|
|
186
|
+
scrollToPosition(element, position) {
|
|
187
|
+
if (!this.platform.isBrowser) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
(element || this._getWin()).scrollTo(position[0], position[1]);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* 设置滚动条至指定元素
|
|
194
|
+
*
|
|
195
|
+
* @param element 指定元素,默认 `document.body`
|
|
196
|
+
* @param topOffset 偏移值,默认 `0`
|
|
197
|
+
*/
|
|
198
|
+
scrollToElement(element, topOffset = 0) {
|
|
199
|
+
if (!this.platform.isBrowser) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (!element) {
|
|
203
|
+
element = this._getDoc().body;
|
|
204
|
+
}
|
|
205
|
+
element.scrollIntoView();
|
|
206
|
+
const win = this._getWin();
|
|
207
|
+
if (win && win.scrollBy) {
|
|
208
|
+
win.scrollBy(0, element.getBoundingClientRect().top - topOffset);
|
|
209
|
+
if (win.pageYOffset < 20) {
|
|
210
|
+
win.scrollBy(0, -win.pageYOffset);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* 滚动至顶部
|
|
216
|
+
*
|
|
217
|
+
* @param topOffset 偏移值,默认 `0`
|
|
218
|
+
*/
|
|
219
|
+
scrollToTop(topOffset = 0) {
|
|
220
|
+
if (!this.platform.isBrowser) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
this.scrollToElement(this._getDoc().body, topOffset);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
ScrollService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScrollService_Factory() { return new ScrollService(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i2.Platform)); }, token: ScrollService, providedIn: "root" });
|
|
227
|
+
ScrollService.decorators = [
|
|
228
|
+
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
229
|
+
];
|
|
230
|
+
ScrollService.ctorParameters = () => [
|
|
231
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
232
|
+
{ type: Platform }
|
|
233
233
|
];
|
|
234
234
|
|
|
235
|
-
function removeClass(el, classMap, renderer) {
|
|
236
|
-
Object.keys(classMap).forEach(key => renderer.removeClass(el, key));
|
|
237
|
-
}
|
|
238
|
-
function addClass(el, classMap, renderer) {
|
|
239
|
-
for (const i in classMap) {
|
|
240
|
-
if (classMap[i]) {
|
|
241
|
-
renderer.addClass(el, i);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Update host component style `class`
|
|
247
|
-
*
|
|
248
|
-
* 更新宿主组件样式 `class`
|
|
249
|
-
*
|
|
250
|
-
* ```ts
|
|
251
|
-
* updateHostClass(
|
|
252
|
-
* this.el.nativeElement,
|
|
253
|
-
* this.renderer,
|
|
254
|
-
* {
|
|
255
|
-
* [ 'classname' ]: true,
|
|
256
|
-
* [ 'classname' ]: this.type === '1',
|
|
257
|
-
* [ this.cls ]: true,
|
|
258
|
-
* [ `a-${this.cls}` ]: true
|
|
259
|
-
* })
|
|
260
|
-
* ```
|
|
261
|
-
*/
|
|
262
|
-
function updateHostClass(el, renderer, classMap, preClean = false) {
|
|
263
|
-
if (preClean === true) {
|
|
264
|
-
renderer.removeAttribute(el, 'class');
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
removeClass(el, classMap, renderer);
|
|
268
|
-
}
|
|
269
|
-
classMap = Object.assign({}, classMap);
|
|
270
|
-
addClass(el, classMap, renderer);
|
|
235
|
+
function removeClass(el, classMap, renderer) {
|
|
236
|
+
Object.keys(classMap).forEach(key => renderer.removeClass(el, key));
|
|
237
|
+
}
|
|
238
|
+
function addClass(el, classMap, renderer) {
|
|
239
|
+
for (const i in classMap) {
|
|
240
|
+
if (classMap[i]) {
|
|
241
|
+
renderer.addClass(el, i);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Update host component style `class`
|
|
247
|
+
*
|
|
248
|
+
* 更新宿主组件样式 `class`
|
|
249
|
+
*
|
|
250
|
+
* ```ts
|
|
251
|
+
* updateHostClass(
|
|
252
|
+
* this.el.nativeElement,
|
|
253
|
+
* this.renderer,
|
|
254
|
+
* {
|
|
255
|
+
* [ 'classname' ]: true,
|
|
256
|
+
* [ 'classname' ]: this.type === '1',
|
|
257
|
+
* [ this.cls ]: true,
|
|
258
|
+
* [ `a-${this.cls}` ]: true
|
|
259
|
+
* })
|
|
260
|
+
* ```
|
|
261
|
+
*/
|
|
262
|
+
function updateHostClass(el, renderer, classMap, preClean = false) {
|
|
263
|
+
if (preClean === true) {
|
|
264
|
+
renderer.removeAttribute(el, 'class');
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
removeClass(el, classMap, renderer);
|
|
268
|
+
}
|
|
269
|
+
classMap = Object.assign({}, classMap);
|
|
270
|
+
addClass(el, classMap, renderer);
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
-
/**
|
|
274
|
-
* Generated bundle index. Do not edit.
|
|
273
|
+
/**
|
|
274
|
+
* Generated bundle index. Do not edit.
|
|
275
275
|
*/
|
|
276
276
|
|
|
277
277
|
export { CookieService, ScrollService, copy, isEmpty, updateHostClass };
|