taro-react-uilib 1.0.2
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/dist/index.esm.js +437 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +453 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.js +455 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/styles/components/backIcon.scss +10 -0
- package/dist/styles/components/button.scss +99 -0
- package/dist/styles/components/captcha.scss +4 -0
- package/dist/styles/components/formInput.scss +120 -0
- package/dist/styles/components/image.scss +3 -0
- package/dist/styles/components/images/icon-arrow-right.png +0 -0
- package/dist/styles/components/images/loading.png +0 -0
- package/dist/styles/components/index.scss +9 -0
- package/dist/styles/components/list.scss +84 -0
- package/dist/styles/components/loading.scss +55 -0
- package/dist/styles/components/mask.scss +17 -0
- package/dist/styles/components/page.scss +9 -0
- package/dist/styles/index.scss +6 -0
- package/dist/styles/themes/base.scss +162 -0
- package/dist/styles/themes/default.scss +25 -0
- package/dist/styles/themes/variable.scss +20 -0
- package/lib/components/BankIcon/bank.js +33 -0
- package/lib/components/BankIcon/bank.js.map +1 -0
- package/lib/components/BankIcon/index.js +12 -0
- package/lib/components/BankIcon/index.js.map +1 -0
- package/lib/components/Button/index.js +36 -0
- package/lib/components/Button/index.js.map +1 -0
- package/lib/components/Captcha/index.js +60 -0
- package/lib/components/Captcha/index.js.map +1 -0
- package/lib/components/Dialog/Alert/index.js +35 -0
- package/lib/components/Dialog/Alert/index.js.map +1 -0
- package/lib/components/Dialog/Dialog/index.js +31 -0
- package/lib/components/Dialog/Dialog/index.js.map +1 -0
- package/lib/components/Dialog/index.js +6 -0
- package/lib/components/Dialog/index.js.map +1 -0
- package/lib/components/FormInput/index.js +55 -0
- package/lib/components/FormInput/index.js.map +1 -0
- package/lib/components/Image/index.js +33 -0
- package/lib/components/Image/index.js.map +1 -0
- package/lib/components/List/index.js +21 -0
- package/lib/components/List/index.js.map +1 -0
- package/lib/components/Loading/index.js +14 -0
- package/lib/components/Loading/index.js.map +1 -0
- package/lib/components/Mask/index.js +17 -0
- package/lib/components/Mask/index.js.map +1 -0
- package/lib/components/Page/index.js +15 -0
- package/lib/components/Page/index.js.map +1 -0
- package/lib/hooks/index.js +10 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/index.js +10 -0
- package/lib/index.js.map +1 -0
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -0
- package/lib/utils/index.js +51 -0
- package/lib/utils/index.js.map +1 -0
- package/package.json +132 -0
- package/readme.md +25 -0
- package/types/components/BankIcon/bank.d.ts +18 -0
- package/types/components/BankIcon/index.d.ts +11 -0
- package/types/components/Button/index.d.ts +41 -0
- package/types/components/Captcha/index.d.ts +17 -0
- package/types/components/Dialog/Alert/index.d.ts +10 -0
- package/types/components/Dialog/Dialog/index.d.ts +19 -0
- package/types/components/Dialog/index.d.ts +9 -0
- package/types/components/FormInput/index.d.ts +44 -0
- package/types/components/Image/index.d.ts +10 -0
- package/types/components/List/index.d.ts +14 -0
- package/types/components/Loading/index.d.ts +9 -0
- package/types/components/Mask/index.d.ts +10 -0
- package/types/components/Page/index.d.ts +10 -0
- package/types/hooks/index.d.ts +1 -0
- package/types/index.d.ts +9 -0
- package/types/types/index.d.ts +3 -0
- package/types/utils/index.d.ts +6 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.scss';
|
|
3
|
+
import { View, Text } from '@tarojs/components';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
const XHList = (props) => {
|
|
6
|
+
const { title = '', description = '', icon, extra = '', extraIcon = '', arrow, border = true, onClick } = props;
|
|
7
|
+
const listcls = classNames('xh-list', { border });
|
|
8
|
+
const handleClick = () => {
|
|
9
|
+
onClick && onClick();
|
|
10
|
+
};
|
|
11
|
+
return (React.createElement(View, { className: listcls, onClick: handleClick },
|
|
12
|
+
icon && React.createElement(View, { className: 'xh-list-icon' }, icon),
|
|
13
|
+
React.createElement(View, { className: 'xh-list-main' },
|
|
14
|
+
React.createElement(Text, { className: 'xh-list-main-title' }, title),
|
|
15
|
+
React.createElement(Text, { className: 'xh-list-main-description' }, description)),
|
|
16
|
+
React.createElement(View, { className: "xh-list-extra" },
|
|
17
|
+
React.createElement(View, { className: "xh-list-extra-info" }, extra),
|
|
18
|
+
React.createElement(View, { className: "xh-list-extra-icon" }, extraIcon ? extraIcon : (arrow && React.createElement(View, { className: "arrow" }))))));
|
|
19
|
+
};
|
|
20
|
+
export default XHList;
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/List/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAA;AAC5C,OAAO,cAAc,CAAA;AACrB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,UAAU,MAAM,YAAY,CAAA;AAanC,MAAM,MAAM,GAAoB,CAAC,KAAK,EAAE,EAAE;IAExC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAE/G,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAEjD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,OAAO,IAAI,OAAO,EAAE,CAAA;IACtB,CAAC,CAAA;IAED,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW;QAC3C,IAAI,IAAI,oBAAC,IAAI,IAAC,SAAS,EAAC,cAAc,IAAE,IAAI,CAAQ;QACrD,oBAAC,IAAI,IAAC,SAAS,EAAC,cAAc;YAC5B,oBAAC,IAAI,IAAC,SAAS,EAAC,oBAAoB,IAAE,KAAK,CAAQ;YACnD,oBAAC,IAAI,IAAC,SAAS,EAAC,0BAA0B,IAAE,WAAW,CAAQ,CAC1D;QACP,oBAAC,IAAI,IAAC,SAAS,EAAC,eAAe;YAC7B,oBAAC,IAAI,IAAC,SAAS,EAAC,oBAAoB,IAAE,KAAK,CAAQ;YACnD,oBAAC,IAAI,IAAC,SAAS,EAAC,oBAAoB,IAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,oBAAC,IAAI,IAAC,SAAS,EAAC,OAAO,GAAG,CAAC,CAAQ,CACtG,CACF,CACR,CAAA;AACH,CAAC,CAAA;AACD,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { View } from '@tarojs/components';
|
|
4
|
+
import Mask from '../Mask';
|
|
5
|
+
import './index.scss';
|
|
6
|
+
const Loading = ({ mask, className }) => {
|
|
7
|
+
const cls = classNames({ className });
|
|
8
|
+
return (React.createElement(View, { className: "xh-loading" },
|
|
9
|
+
React.createElement(Mask, { className: cls, mask: mask }),
|
|
10
|
+
React.createElement(View, { className: "xh-loading-main" },
|
|
11
|
+
React.createElement(View, { className: "xh-loading-icon" }))));
|
|
12
|
+
};
|
|
13
|
+
export default Loading;
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Loading/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAA;AACjC,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,IAAmB,MAAM,SAAS,CAAA;AAEzC,OAAO,cAAc,CAAA;AAMrB,MAAM,OAAO,GAAqB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IACxD,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAErC,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,EAAC,YAAY;QAC1B,oBAAC,IAAI,IAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG;QACnC,oBAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB;YAC/B,oBAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,GAAG,CAC/B,CACF,CACR,CAAA;AACH,CAAC,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { View } from '@tarojs/components';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
const Mask = (props) => {
|
|
6
|
+
const { closeOnClickMask = true, onClick, mask } = props;
|
|
7
|
+
const cls = classNames('xh-mask', {
|
|
8
|
+
'xh-mask-normal': mask === 'normal',
|
|
9
|
+
'xh-mask-transparent': mask === 'transparent',
|
|
10
|
+
});
|
|
11
|
+
function handleClick(e) {
|
|
12
|
+
closeOnClickMask && onClick && onClick(e);
|
|
13
|
+
}
|
|
14
|
+
return React.createElement(View, { className: cls, onClick: handleClick });
|
|
15
|
+
};
|
|
16
|
+
export default Mask;
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Mask/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyB,MAAM,OAAO,CAAA;AAC7C,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAEzC,OAAO,cAAc,CAAA;AAQrB,MAAM,IAAI,GAAkB,CAAC,KAAK,EAAE,EAAE;IACpC,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAExD,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE;QAChC,gBAAgB,EAAE,IAAI,KAAK,QAAQ;QACnC,qBAAqB,EAAE,IAAI,KAAK,aAAa;KAC9C,CAAC,CAAA;IAEF,SAAS,WAAW,CAAC,CAAM;QACzB,gBAAgB,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,oBAAC,IAAI,IAAC,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAI,CAAA;AACvD,CAAC,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Loading from '../Loading';
|
|
3
|
+
import { View } from '@tarojs/components';
|
|
4
|
+
import classname from "classnames";
|
|
5
|
+
import './index.scss';
|
|
6
|
+
const Page = props => {
|
|
7
|
+
const { children, loading = false, className = "", mask = "normal", } = props;
|
|
8
|
+
const classObj = classname("xh-page", className);
|
|
9
|
+
return (React.createElement(View, { className: classObj },
|
|
10
|
+
loading && (React.createElement(View, { className: "loading-wrapper" },
|
|
11
|
+
React.createElement(Loading, { mask: mask }))),
|
|
12
|
+
children));
|
|
13
|
+
};
|
|
14
|
+
export default Page;
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Page/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAA;AACpD,OAAO,OAAyB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,cAAc,CAAA;AAOrB,MAAM,IAAI,GAAkB,KAAK,CAAC,EAAE;IAClC,MAAM,EACJ,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,SAAS,GAAG,EAAE,EACd,IAAI,GAAG,QAAQ,GAChB,GAAG,KAAK,CAAC;IAEV,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjD,OAAO,CACL,oBAAC,IAAI,IACH,SAAS,EAAE,QAAQ;QAElB,OAAO,IAAI,CACV,oBAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB;YAC/B,oBAAC,OAAO,IAAC,IAAI,EAAE,IAAI,GAAG,CACjB,CACR;QACA,QAAQ,CACJ,CACR,CAAA;AACH,CAAC,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { getEnv } from '@tarojs/taro';
|
|
3
|
+
export const useTaroEnv = () => {
|
|
4
|
+
const [taroEnv, setTaroEnv] = useState("");
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
setTaroEnv(getEnv());
|
|
7
|
+
}, []);
|
|
8
|
+
return taroEnv;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;IACtB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { default as XHButton } from './components/Button';
|
|
2
|
+
export { default as XHPage } from './components/Page';
|
|
3
|
+
export { default as XHLoading } from './components/Loading';
|
|
4
|
+
export { default as XHBankIcon } from './components/BankIcon';
|
|
5
|
+
export { default as XHCaptcha } from './components/Captcha';
|
|
6
|
+
export { default as XHFormInput } from './components/FormInput';
|
|
7
|
+
export { default as XHList } from './components/List';
|
|
8
|
+
export { default as XHMask } from './components/Mask';
|
|
9
|
+
export { default as XHImage } from './components/Image';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 禁止输入emoji表情
|
|
3
|
+
* @param {string} val - 输入内容
|
|
4
|
+
* @returns {boolean} - 校验结果 返回 true || false
|
|
5
|
+
*/
|
|
6
|
+
export const inputRange = (val) => {
|
|
7
|
+
let iconRule1 = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi;
|
|
8
|
+
return val.replace(iconRule1, '');
|
|
9
|
+
};
|
|
10
|
+
// function Handler(fn) {
|
|
11
|
+
// this.handler = fn;
|
|
12
|
+
// this.next = null;
|
|
13
|
+
// }
|
|
14
|
+
// Handler.prototype.setNext = function setNext(h) {
|
|
15
|
+
// this.next = h;
|
|
16
|
+
// return h;
|
|
17
|
+
// };
|
|
18
|
+
// Handler.prototype.passRequest = function () {
|
|
19
|
+
// const ret = this.handler.apply(this, arguments);
|
|
20
|
+
// // 提前结束
|
|
21
|
+
// if (!ret) {
|
|
22
|
+
// return ret;
|
|
23
|
+
// }
|
|
24
|
+
// // 向后传递
|
|
25
|
+
// if (this.next) {
|
|
26
|
+
// return this.next.passRequest.apply(this.next, arguments);
|
|
27
|
+
// }
|
|
28
|
+
// return ret;
|
|
29
|
+
// };
|
|
30
|
+
// export class ChainHander {
|
|
31
|
+
// public hander: (s: string) => boolean
|
|
32
|
+
// public next
|
|
33
|
+
// constructor(fn: (str: string) => boolean) {
|
|
34
|
+
// this.hander = fn
|
|
35
|
+
// }
|
|
36
|
+
// public setNext(callback): () => boolean {
|
|
37
|
+
// this.next = callback
|
|
38
|
+
// return callback
|
|
39
|
+
// }
|
|
40
|
+
// public checkPass(...arg) {
|
|
41
|
+
// const result = this.hander.apply(this, arg)
|
|
42
|
+
// if (!result) {
|
|
43
|
+
// return result
|
|
44
|
+
// }
|
|
45
|
+
// if (this.next != null) {
|
|
46
|
+
// return this.next.checkPass.apply(this.next, arg)
|
|
47
|
+
// }
|
|
48
|
+
// return result
|
|
49
|
+
// }
|
|
50
|
+
// }
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;IAChD,IAAI,SAAS,GACT,4OAA4O,CAAA;IAChP,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,yBAAyB;AACzB,uBAAuB;AACvB,sBAAsB;AACtB,IAAI;AAEJ,oDAAoD;AACpD,mBAAmB;AACnB,cAAc;AACd,KAAK;AAEL,gDAAgD;AAChD,qDAAqD;AACrD,YAAY;AACZ,gBAAgB;AAChB,kBAAkB;AAClB,MAAM;AAEN,WAAW;AACX,qBAAqB;AACrB,gEAAgE;AAChE,MAAM;AACN,gBAAgB;AAChB,KAAK;AAEL,6BAA6B;AAC7B,0CAA0C;AAC1C,gBAAgB;AAChB,gDAAgD;AAChD,uBAAuB;AACvB,MAAM;AACN,8CAA8C;AAC9C,2BAA2B;AAC3B,sBAAsB;AACtB,MAAM;AACN,+BAA+B;AAC/B,sDAAsD;AACtD,qBAAqB;AACrB,sBAAsB;AACtB,QAAQ;AAER,+BAA+B;AAC/B,yDAAyD;AACzD,QAAQ;AAER,oBAAoB;AACpB,MAAM;AACN,IAAI"}
|
package/package.json
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "taro-react-uilib",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "基于taro的跨端组件库",
|
|
5
|
+
"templateInfo": {
|
|
6
|
+
"name": "default",
|
|
7
|
+
"typescript": true,
|
|
8
|
+
"css": "sass"
|
|
9
|
+
},
|
|
10
|
+
"browser": "dist/index.umd.js",
|
|
11
|
+
"module": "dist/index.esm.js",
|
|
12
|
+
"main": "dist/index.js",
|
|
13
|
+
"source": "src/index.ts",
|
|
14
|
+
"types": "types/index.d.ts",
|
|
15
|
+
"files": [
|
|
16
|
+
"lib",
|
|
17
|
+
"dist",
|
|
18
|
+
"types"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build:weapp": "taro build --type weapp",
|
|
22
|
+
"build:h5": "taro build --type h5",
|
|
23
|
+
"build:tt": "taro build --type tt",
|
|
24
|
+
"dev:weapp": "npm run build:weapp -- --watch",
|
|
25
|
+
"dev:h5": "npm run build:h5 -- --watch",
|
|
26
|
+
"dev:tt": "npm run build:tt -- --watch",
|
|
27
|
+
"dev": "yarn run dev:lib",
|
|
28
|
+
"dev:lib": "tsc --project ./tsconfig.build.json --watch --incremental",
|
|
29
|
+
"build": "rimraf dist && yarn run build:rollup && yarn run build:lib",
|
|
30
|
+
"build:lib": "tsc --project ./tsconfig.build.json --declaration --declarationDir types",
|
|
31
|
+
"build:rollup": "rollup --config ./rollup.config.js",
|
|
32
|
+
"prepublishOnly": "yarn run clean && yarn run build",
|
|
33
|
+
"lint": "lint-staged",
|
|
34
|
+
"lint:style": "stylelint \"src/**/*.scss\" --syntax scss",
|
|
35
|
+
"lint:style-fix": "stylelint \"src/**/*.scss\" --syntax scss --fix",
|
|
36
|
+
"test": "cross-env NODE_ENV=test && jest --coverage",
|
|
37
|
+
"test:ci": "yarn run build:h5 && yarn run test",
|
|
38
|
+
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md",
|
|
39
|
+
"clean": "rimraf .temp dist lib coverage",
|
|
40
|
+
"prepare": "husky install"
|
|
41
|
+
},
|
|
42
|
+
"husky": {
|
|
43
|
+
"hooks": {
|
|
44
|
+
"pre-commit": "lint-staged"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"lint-staged": {
|
|
48
|
+
"(src|example)/**/*.{ts,tsx}": [
|
|
49
|
+
"eslint --fix",
|
|
50
|
+
"prettier --write --ignore-unknown"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"keywords": [
|
|
54
|
+
"taro",
|
|
55
|
+
"跨端组件库"
|
|
56
|
+
],
|
|
57
|
+
"author": "xiongshiji",
|
|
58
|
+
"license": "MIT",
|
|
59
|
+
"browserslist": [
|
|
60
|
+
"last 3 versions",
|
|
61
|
+
"Android >= 4.1",
|
|
62
|
+
"ios >= 8"
|
|
63
|
+
],
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@babel/core": "^7.8.0",
|
|
66
|
+
"@babel/runtime": "^7.7.7",
|
|
67
|
+
"@commitlint/cli": "16.3.0",
|
|
68
|
+
"@commitlint/config-conventional": "16.2.4",
|
|
69
|
+
"@rollup/plugin-alias": "^3.1.9",
|
|
70
|
+
"@rollup/plugin-commonjs": "^13.0.0",
|
|
71
|
+
"@rollup/plugin-image": "^2.1.1",
|
|
72
|
+
"@rollup/plugin-json": "^4.1.0",
|
|
73
|
+
"@rollup/plugin-node-resolve": "^8.0.1",
|
|
74
|
+
"@tarojs/components": "3.4.2",
|
|
75
|
+
"@tarojs/mini-runner": "3.4.2",
|
|
76
|
+
"@tarojs/plugin-framework-react": "^3.4.6",
|
|
77
|
+
"@tarojs/react": "3.4.2",
|
|
78
|
+
"@tarojs/runtime": "3.4.2",
|
|
79
|
+
"@tarojs/taro": "3.4.2",
|
|
80
|
+
"@tarojs/webpack-runner": "3.4.2",
|
|
81
|
+
"@types/react": "^17.0.2",
|
|
82
|
+
"@types/webpack-env": "^1.13.6",
|
|
83
|
+
"@typescript-eslint/eslint-plugin": "^5.24.0",
|
|
84
|
+
"@typescript-eslint/parser": "^5.24.0",
|
|
85
|
+
"babel-preset-taro": "3.4.2",
|
|
86
|
+
"commitizen": "^4.2.4",
|
|
87
|
+
"conventional-changelog-cli": "^2.2.2",
|
|
88
|
+
"cross-env": "^7.0.2",
|
|
89
|
+
"cz-conventional-changelog": "3.3.0",
|
|
90
|
+
"eslint": "^7.2.0",
|
|
91
|
+
"eslint-config-taro": "3.4.2",
|
|
92
|
+
"eslint-plugin-import": "^2.21.2",
|
|
93
|
+
"eslint-plugin-react": "^7.20.0",
|
|
94
|
+
"eslint-plugin-react-hooks": "^4.2.0",
|
|
95
|
+
"husky": "7",
|
|
96
|
+
"jest": "26",
|
|
97
|
+
"lint-staged": "^12.4.1",
|
|
98
|
+
"postcss": "^8.4.12",
|
|
99
|
+
"prettier": "^2.6.2",
|
|
100
|
+
"react": "^17.0.0",
|
|
101
|
+
"react-dom": "^17.0.0",
|
|
102
|
+
"rimraf": "3.0.2",
|
|
103
|
+
"rollup": "^2.70.2",
|
|
104
|
+
"rollup-plugin-copy": "^3.3.0",
|
|
105
|
+
"rollup-plugin-ignore-import": "^1.3.2",
|
|
106
|
+
"rollup-plugin-postcss": "^4.0.2",
|
|
107
|
+
"rollup-plugin-serve": "^1.1.0",
|
|
108
|
+
"rollup-plugin-typescript2": "^0.27.1",
|
|
109
|
+
"rollup-plugin-visualizer": "^4.0.4",
|
|
110
|
+
"sass": "^1.50.0",
|
|
111
|
+
"stylelint": "13.6.0",
|
|
112
|
+
"stylelint-config-standard": "20.0.0",
|
|
113
|
+
"stylelint-scss": "3.17.2",
|
|
114
|
+
"ts-jest": "26",
|
|
115
|
+
"typescript": "^4.1.0"
|
|
116
|
+
},
|
|
117
|
+
"peerDependencies": {
|
|
118
|
+
"@tarojs/components": "^3.0.8",
|
|
119
|
+
"@tarojs/react": "^3.0.8",
|
|
120
|
+
"@types/node": "^14.0.13",
|
|
121
|
+
"react": ">=16.13.0",
|
|
122
|
+
"react-dom": ">=16.13.0"
|
|
123
|
+
},
|
|
124
|
+
"config": {
|
|
125
|
+
"commitizen": {
|
|
126
|
+
"path": "./node_modules/cz-conventional-changelog"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"dependencies": {
|
|
130
|
+
"react-transition-group": "^4.4.2"
|
|
131
|
+
}
|
|
132
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# 基于taro的多端UI组件库
|
|
2
|
+
|
|
3
|
+
## 特性
|
|
4
|
+
- 目前只支持h5以及微信小程序,暂不支持其他端
|
|
5
|
+
|
|
6
|
+
## 使用
|
|
7
|
+
```bash
|
|
8
|
+
yarn add taro-uilib --registry http://10.3.209.42:4873
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install taro-uilib --registry http://10.3.209.42:4873
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 配置
|
|
16
|
+
`config/index.js`
|
|
17
|
+
```js
|
|
18
|
+
const config = {
|
|
19
|
+
// 其他配置
|
|
20
|
+
...
|
|
21
|
+
h5.esnextModules: ['taro-uilib']
|
|
22
|
+
// 其他配置
|
|
23
|
+
...
|
|
24
|
+
}
|
|
25
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
'102': any;
|
|
3
|
+
'103': any;
|
|
4
|
+
'104': any;
|
|
5
|
+
'105': any;
|
|
6
|
+
'301': any;
|
|
7
|
+
'302': any;
|
|
8
|
+
'303': any;
|
|
9
|
+
'304': any;
|
|
10
|
+
'305': any;
|
|
11
|
+
'306': any;
|
|
12
|
+
'307': any;
|
|
13
|
+
'308': any;
|
|
14
|
+
'309': any;
|
|
15
|
+
'310': any;
|
|
16
|
+
'403': any;
|
|
17
|
+
};
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import bankImage from './bank';
|
|
3
|
+
import { XHComponentCommonProps } from '../../types';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
export declare type BankIconCode = keyof typeof bankImage;
|
|
6
|
+
export declare type XHListProps = {
|
|
7
|
+
code: BankIconCode;
|
|
8
|
+
size?: 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70;
|
|
9
|
+
} & XHComponentCommonProps;
|
|
10
|
+
declare const XHBankIcon: FC<XHListProps>;
|
|
11
|
+
export default XHBankIcon;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { ButtonProps } from '@tarojs/components/types/Button';
|
|
3
|
+
import { ITouchEvent } from '@tarojs/components/types/common';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
export declare type ButtonType = 'default' | 'secondary' | 'primary' | 'warn';
|
|
6
|
+
export declare type ButtonShape = 'square' | 'round';
|
|
7
|
+
export declare type ButtonSize = 'default' | 'mini' | 'full';
|
|
8
|
+
export declare type WechatOpenType = 'contact'
|
|
9
|
+
/** 触发用户转发,使用前建议先阅读使用指引
|
|
10
|
+
* @see https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%BC%95
|
|
11
|
+
*/
|
|
12
|
+
| 'share'
|
|
13
|
+
/** 获取用户手机号,可以从 bindgetphonenumber 回调中获取到用户信息
|
|
14
|
+
* @see https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
|
|
15
|
+
*/
|
|
16
|
+
| 'getPhoneNumber'
|
|
17
|
+
/** 获取用户信息,可以从 bindgetuserinfo 回调中获取到用户信息 */
|
|
18
|
+
| 'getUserInfo'
|
|
19
|
+
/** 用户实名信息授权,已经弃用 */
|
|
20
|
+
| 'getRealnameAuthInfo'
|
|
21
|
+
/** 打开APP,可以通过app-parameter属性设定向APP传的参数
|
|
22
|
+
* @see https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/launchApp.html
|
|
23
|
+
*/
|
|
24
|
+
| 'launchApp'
|
|
25
|
+
/** 打开授权设置页 */
|
|
26
|
+
| 'openSetting'
|
|
27
|
+
/** 打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容 */
|
|
28
|
+
| 'feedback';
|
|
29
|
+
export declare type XhButtonProps = {
|
|
30
|
+
htmlType?: 'button' | 'submit' | 'reset';
|
|
31
|
+
type?: ButtonType;
|
|
32
|
+
size?: ButtonSize;
|
|
33
|
+
shape?: ButtonShape;
|
|
34
|
+
disabled?: boolean;
|
|
35
|
+
className?: string;
|
|
36
|
+
styleName?: string;
|
|
37
|
+
text?: string;
|
|
38
|
+
onClick?: (e: ITouchEvent | MouseEvent) => void;
|
|
39
|
+
} & Omit<ButtonProps, 'type' | 'size'>;
|
|
40
|
+
declare const XhButton: FC<XhButtonProps>;
|
|
41
|
+
export default XhButton;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React, { Ref } from "react";
|
|
2
|
+
import { XhButtonProps } from "../Button";
|
|
3
|
+
import "./index.scss";
|
|
4
|
+
declare type refMe = {
|
|
5
|
+
reset: () => void;
|
|
6
|
+
};
|
|
7
|
+
export interface CaptchaProps extends XhButtonProps {
|
|
8
|
+
timeout: number;
|
|
9
|
+
className?: string;
|
|
10
|
+
styleName?: string;
|
|
11
|
+
text: string;
|
|
12
|
+
onClick: () => Promise<boolean>;
|
|
13
|
+
ref: Ref<refMe>;
|
|
14
|
+
timeingTemp?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const CountdownButton: React.ForwardRefExoticComponent<Pick<CaptchaProps, "type" | "size" | "plain" | "disabled" | "loading" | "formType" | "openType" | "hoverClass" | "hoverStyle" | "hoverStopPropagation" | "hoverStartTime" | "hoverStayTime" | "lang" | "sessionFrom" | "sendMessageTitle" | "sendMessagePath" | "sendMessageImg" | "appParameter" | "businessId" | "scope" | "showMessageCard" | "onGetUserInfo" | "onGetAuthorize" | "onContact" | "onGetPhoneNumber" | "onGetRealnameAuthInfo" | "onError" | "onOpenSetting" | "onLaunchapp" | "id" | "className" | "style" | "key" | "hidden" | "animation" | "dangerouslySetInnerHTML" | "onTouchStart" | "onTouchMove" | "onTouchCancel" | "onTouchEnd" | "onClick" | "onLongPress" | "onLongClick" | "onTransitionEnd" | "onAnimationStart" | "onAnimationIteration" | "onAnimationEnd" | "onTouchForceChange" | "shape" | "htmlType" | "text" | "timeout" | "styleName" | "timeingTemp"> & React.RefAttributes<refMe>>;
|
|
17
|
+
export default CountdownButton;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import "./index.scss";
|
|
3
|
+
export declare type AlertProps = {
|
|
4
|
+
title?: string | ReactNode;
|
|
5
|
+
header?: string | ReactNode;
|
|
6
|
+
content?: string | ReactNode;
|
|
7
|
+
buttonText?: string | ReactNode;
|
|
8
|
+
};
|
|
9
|
+
declare const Alert: (props: AlertProps) => Promise<void>;
|
|
10
|
+
export default Alert;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { XHComponentCommonProps } from "../../../types";
|
|
3
|
+
import "./index.scss";
|
|
4
|
+
export declare type DialogProps = {
|
|
5
|
+
header?: string | ReactNode;
|
|
6
|
+
content: string | ReactNode;
|
|
7
|
+
footer?: string | ReactNode;
|
|
8
|
+
visible: boolean;
|
|
9
|
+
} & XHComponentCommonProps;
|
|
10
|
+
export declare type DialogRef = {
|
|
11
|
+
close: () => void;
|
|
12
|
+
};
|
|
13
|
+
declare const Dialog: React.ForwardRefExoticComponent<{
|
|
14
|
+
header?: string | ReactNode;
|
|
15
|
+
content: string | ReactNode;
|
|
16
|
+
footer?: string | ReactNode;
|
|
17
|
+
visible: boolean;
|
|
18
|
+
} & XHComponentCommonProps & React.RefAttributes<DialogRef>>;
|
|
19
|
+
export default Dialog;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ForwardRefExoticComponent, RefObject } from "react";
|
|
2
|
+
import { DialogRef, DialogProps } from "./Dialog";
|
|
3
|
+
import { AlertProps } from "./Alert";
|
|
4
|
+
export interface DialogComponent<P = {}> extends ForwardRefExoticComponent<P> {
|
|
5
|
+
ref: RefObject<DialogRef>;
|
|
6
|
+
alert: (options: AlertProps) => Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
declare const Dialog: DialogComponent<DialogProps>;
|
|
9
|
+
export default Dialog;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React, { ReactNode, Ref } from "react";
|
|
2
|
+
import { InputProps } from "@tarojs/components";
|
|
3
|
+
import "./index.scss";
|
|
4
|
+
export declare type HTMLFormType = "tel" | "text" | "number" | "password";
|
|
5
|
+
export declare type FormInputProps = {
|
|
6
|
+
onChange?: (value: string) => void;
|
|
7
|
+
onBlur?: (value: string) => void;
|
|
8
|
+
value: string;
|
|
9
|
+
maxlength?: number;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
type?: HTMLFormType | InputProps["type"];
|
|
12
|
+
pattern?: string;
|
|
13
|
+
RightComponent?: ReactNode;
|
|
14
|
+
label?: string;
|
|
15
|
+
labelHtml?: string;
|
|
16
|
+
LeftComponent?: ReactNode;
|
|
17
|
+
LeftIcon?: ReactNode;
|
|
18
|
+
name?: string;
|
|
19
|
+
readonly?: boolean;
|
|
20
|
+
withArrow?: boolean;
|
|
21
|
+
} & InputProps;
|
|
22
|
+
export declare type InputRef = Ref<{
|
|
23
|
+
focus: () => void;
|
|
24
|
+
}>;
|
|
25
|
+
declare const FormInput: React.ForwardRefExoticComponent<Pick<{
|
|
26
|
+
onChange?: ((value: string) => void) | undefined;
|
|
27
|
+
onBlur?: ((value: string) => void) | undefined;
|
|
28
|
+
value: string;
|
|
29
|
+
maxlength?: number | undefined;
|
|
30
|
+
placeholder?: string | undefined;
|
|
31
|
+
type?: HTMLFormType | InputProps["type"];
|
|
32
|
+
pattern?: string | undefined;
|
|
33
|
+
RightComponent?: ReactNode;
|
|
34
|
+
label?: string | undefined;
|
|
35
|
+
labelHtml?: string | undefined;
|
|
36
|
+
LeftComponent?: ReactNode;
|
|
37
|
+
LeftIcon?: ReactNode;
|
|
38
|
+
name?: string | undefined;
|
|
39
|
+
readonly?: boolean | undefined;
|
|
40
|
+
withArrow?: boolean | undefined;
|
|
41
|
+
} & InputProps, "type" | "disabled" | "id" | "className" | "style" | "key" | "hidden" | "animation" | "dangerouslySetInnerHTML" | "onTouchStart" | "onTouchMove" | "onTouchCancel" | "onTouchEnd" | "onClick" | "onLongPress" | "onLongClick" | "onTransitionEnd" | "onAnimationStart" | "onAnimationIteration" | "onAnimationEnd" | "onTouchForceChange" | "label" | "pattern" | "nativeProps" | "password" | "onChange" | "onBlur" | "value" | "maxlength" | "placeholder" | "RightComponent" | "labelHtml" | "LeftComponent" | "LeftIcon" | "name" | "readonly" | "withArrow" | "placeholderStyle" | "placeholderClass" | "cursorSpacing" | "autoFocus" | "focus" | "confirmType" | "confirmHold" | "cursor" | "selectionStart" | "selectionEnd" | "adjustPosition" | "holdKeyboard" | "alwaysEmbed" | "safePasswordCertPath" | "safePasswordLength" | "safePasswordTimeStamp" | "safePasswordNonce" | "safePasswordSalt" | "safePasswordCustomHash" | "randomNumber" | "controlled" | "onInput" | "onFocus" | "onConfirm" | "onKeyboardHeightChange"> & React.RefAttributes<{
|
|
42
|
+
focus: () => void;
|
|
43
|
+
}>>;
|
|
44
|
+
export default FormInput;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC } from "react";
|
|
2
|
+
import "./index.scss";
|
|
3
|
+
import { XHComponentCommonProps } from "../../types";
|
|
4
|
+
export declare type ImageProps = {
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
src: string;
|
|
8
|
+
} & XHComponentCommonProps;
|
|
9
|
+
declare const XHImage: FC<ImageProps>;
|
|
10
|
+
export default XHImage;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
import './index.scss';
|
|
3
|
+
export declare type XHListProps = {
|
|
4
|
+
title: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
icon?: ReactNode;
|
|
7
|
+
extra?: string | ReactNode;
|
|
8
|
+
extraIcon?: ReactNode;
|
|
9
|
+
border?: boolean;
|
|
10
|
+
arrow?: boolean;
|
|
11
|
+
onClick?: () => void;
|
|
12
|
+
};
|
|
13
|
+
declare const XHList: FC<XHListProps>;
|
|
14
|
+
export default XHList;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MaskProps } from '../Mask';
|
|
3
|
+
import { XHComponentCommonProps } from '../../types';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
export declare type LoadingProps = {
|
|
6
|
+
mask?: MaskProps["mask"];
|
|
7
|
+
} & XHComponentCommonProps;
|
|
8
|
+
declare const Loading: FC<LoadingProps>;
|
|
9
|
+
export default Loading;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC, MouseEvent } from 'react';
|
|
2
|
+
import { XHComponentCommonProps } from '../../types';
|
|
3
|
+
import './index.scss';
|
|
4
|
+
export declare type MaskProps = {
|
|
5
|
+
closeOnClickMask?: boolean;
|
|
6
|
+
onClick?: (e: MouseEvent) => void;
|
|
7
|
+
mask?: 'transparent' | 'normal';
|
|
8
|
+
} & XHComponentCommonProps;
|
|
9
|
+
declare const Mask: FC<MaskProps>;
|
|
10
|
+
export default Mask;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC, PropsWithChildren } from 'react';
|
|
2
|
+
import { LoadingProps } from '../Loading';
|
|
3
|
+
import { XHComponentCommonProps } from '../../types';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
export interface PageProps extends PropsWithChildren<XHComponentCommonProps> {
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
mask?: LoadingProps['mask'];
|
|
8
|
+
}
|
|
9
|
+
declare const Page: FC<PageProps>;
|
|
10
|
+
export default Page;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useTaroEnv: () => string;
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as XHButton } from './components/Button';
|
|
2
|
+
export { default as XHPage } from './components/Page';
|
|
3
|
+
export { default as XHLoading } from './components/Loading';
|
|
4
|
+
export { default as XHBankIcon } from './components/BankIcon';
|
|
5
|
+
export { default as XHCaptcha } from './components/Captcha';
|
|
6
|
+
export { default as XHFormInput } from './components/FormInput';
|
|
7
|
+
export { default as XHList } from './components/List';
|
|
8
|
+
export { default as XHMask } from './components/Mask';
|
|
9
|
+
export { default as XHImage } from './components/Image';
|