taro-react-uilib 1.3.4-8 → 1.3.4
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/CHANGELOG.md +88 -0
- package/dist/components/AmountKeyboard/index.js +1 -1
- package/dist/components/AmountKeyboard/index.js.map +1 -1
- package/dist/components/Cell/index.js +1 -1
- package/dist/components/Cell/index.js.map +1 -1
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/LinkMan/index.js +1 -1
- package/dist/components/LinkMan/index.js.map +1 -1
- package/dist/components/Popup/index.js +1 -1
- package/dist/components/Popup/index.js.map +1 -1
- package/dist/components/Progress/index.js +1 -1
- package/dist/components/Progress/index.js.map +1 -1
- package/dist/components/Result/index.js +1 -1
- package/dist/components/Result/index.js.map +1 -1
- package/dist/components/Tabbar/tabbar/Tabbar.js +1 -1
- package/dist/components/Tabbar/tabbar/Tabbar.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +6 -6
- package/dist/index.umd.js.map +1 -1
- package/dist/styles/components/amountinput.scss +1 -1
- package/dist/styles/components/button.scss +5 -2
- package/dist/styles/components/captcha.scss +1 -0
- package/dist/styles/components/icon.scss +1 -1
- package/dist/styles/components/linkman.scss +10 -0
- package/dist/styles/components/list.scss +1 -1
- package/dist/styles/components/progress.scss +13 -1
- package/dist/styles/components/step.scss +2 -2
- package/lib/components/AmountKeyboard/index.js +1 -1
- package/lib/components/AmountKeyboard/index.js.map +1 -1
- package/lib/components/Cell/index.js +3 -3
- package/lib/components/Checkbox/index.js +1 -1
- package/lib/components/Checkbox/index.js.map +1 -1
- package/lib/components/LinkMan/index.js +5 -1
- package/lib/components/LinkMan/index.js.map +1 -1
- package/lib/components/Popup/index.js +3 -3
- package/lib/components/Popup/index.js.map +1 -1
- package/lib/components/Progress/index.js +4 -2
- package/lib/components/Progress/index.js.map +1 -1
- package/lib/components/Result/index.js +8 -1
- package/lib/components/Result/index.js.map +1 -1
- package/lib/components/Tabbar/tabbar/Tabbar.js +7 -5
- package/lib/components/Tabbar/tabbar/Tabbar.js.map +1 -1
- package/package.json +1 -1
- package/types/components/AmountKeyboard/index.d.ts +7 -1
- package/types/components/Popup/index.d.ts +1 -0
- package/types/components/Result/index.d.ts +8 -1
- package/types/components/Tabbar/tabbar/Tabbar.d.ts +1 -1
- package/dist/components/Result/images/result-empty.png.js +0 -2
- package/dist/components/Result/images/result-empty.png.js.map +0 -1
- package/dist/components/Result/images/result-fail.png.js +0 -2
- package/dist/components/Result/images/result-fail.png.js.map +0 -1
- package/dist/components/Result/images/result-networkErr.png.js +0 -2
- package/dist/components/Result/images/result-networkErr.png.js.map +0 -1
- package/dist/components/Result/images/result-submitted.png.js +0 -2
- package/dist/components/Result/images/result-submitted.png.js.map +0 -1
- package/dist/components/Result/images/result-success.png.js +0 -2
- package/dist/components/Result/images/result-success.png.js.map +0 -1
- package/dist/components/Result/images/result-wait.png.js +0 -2
- package/dist/components/Result/images/result-wait.png.js.map +0 -1
- package/dist/components/Result/statusMap.js +0 -2
- package/dist/components/Result/statusMap.js.map +0 -1
- package/lib/components/Result/statusMap.js +0 -15
- package/lib/components/Result/statusMap.js.map +0 -1
- /package/{README.md → readme.md} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,91 @@
|
|
|
1
|
+
## [1.3.4](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-16-1...v1.3.4) (2023-08-23)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## [1.3.4-16-1](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-16...v1.3.4-16-1) (2023-08-22)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## [1.3.4-16](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-15...v1.3.4-16) (2023-08-18)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* result ([d8d3dd7](https://code.xhdev.xyz/h5group/taro-uilib/commits/d8d3dd7562a6e3b447e55b10523d1ad028692da4))
|
|
15
|
+
* result 图片放cdn ([5ea1bd2](https://code.xhdev.xyz/h5group/taro-uilib/commits/5ea1bd2cdd0e241cf9b2a9f8adf894cd0574a24e))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## [1.3.4-15](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-14...v1.3.4-15) (2023-08-17)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
* 抖音placehoder的问题 ([695ab4d](https://code.xhdev.xyz/h5group/taro-uilib/commits/695ab4d6e718ef0410f9dbfa30e3b424a4bc64c9))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [1.3.4-14](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-13...v1.3.4-14) (2023-08-16)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* weapp button ([538259d](https://code.xhdev.xyz/h5group/taro-uilib/commits/538259d6d8b9653b2334714d76e1f049dfa84b96))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
## [1.3.4-13](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-12...v1.3.4-13) (2023-08-15)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
|
|
42
|
+
* 补充联系人修复 ([a1344fa](https://code.xhdev.xyz/h5group/taro-uilib/commits/a1344fa53171a1b88cb2a955751d145e1dc6d7f6))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## [1.3.4-12](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-11...v1.3.4-12) (2023-08-15)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Bug Fixes
|
|
50
|
+
|
|
51
|
+
* 低端机无法渲染0.02rem ([69f13c9](https://code.xhdev.xyz/h5group/taro-uilib/commits/69f13c99513067471569231b3275d3dad57bb7fb))
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
## [1.3.4-11](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-10...v1.3.4-11) (2023-08-14)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### Bug Fixes
|
|
59
|
+
|
|
60
|
+
* 推荐金额区分、progress在小程序的兼容问题 ([6190b1a](https://code.xhdev.xyz/h5group/taro-uilib/commits/6190b1a91e8cdbd2cdaf9af1b3b3dce1349b6c15))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## [1.3.4-10](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-9...v1.3.4-10) (2023-08-09)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### Bug Fixes
|
|
68
|
+
|
|
69
|
+
* tabbar切换更改 ([29c2dfc](https://code.xhdev.xyz/h5group/taro-uilib/commits/29c2dfc5fe356e92e9f6fb754b913c6fa70e04f9))
|
|
70
|
+
* tabbar切换更改 ([5256011](https://code.xhdev.xyz/h5group/taro-uilib/commits/525601137ed1b9b24511c9f57e00b50e68d1d1d6))
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## [1.3.4-9](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-8...v1.3.4-9) (2023-08-04)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### Bug Fixes
|
|
78
|
+
|
|
79
|
+
* cell ([22dca0c](https://code.xhdev.xyz/h5group/taro-uilib/commits/22dca0cc9506f8e094ca325ea00feb3160a92da9))
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
### Features
|
|
83
|
+
|
|
84
|
+
* page ([82317a9](https://code.xhdev.xyz/h5group/taro-uilib/commits/82317a956784db9394ab9695b6a73d717e0ccb1b))
|
|
85
|
+
* popup classname ([ab9e3d1](https://code.xhdev.xyz/h5group/taro-uilib/commits/ab9e3d1af2c022e01443a35d74e9884cb0f6943f))
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
1
89
|
## [1.3.4-8](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-7...v1.3.4-8) (2023-08-02)
|
|
2
90
|
|
|
3
91
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{useState as n,useEffect as a,useCallback as o}from"react";import r from"classnames";import{View as l}from"@tarojs/components";import{pxTransform as m}from"../src/utils/index.js";import u from"../Badge/index.js";import c from"../Space/index.js";import i from"../node_modules/react-transition-group/esm/CSSTransition.js";var s=[{text:1,value:1,type:"number"},{text:2,value:2,type:"number"},{text:3,value:3,type:"number"},{text:"",value:"",type:"delete"},{text:4,value:4,type:"number"},{text:5,value:5,type:"number"},{text:6,value:6,type:"number"},{text:"",value:"",type:"none"},{text:7,value:7,type:"number"},{text:8,value:8,type:"number"},{text:9,value:9,type:"number"},{text:"",value:"",type:"none"},{text:"00",value:"00",type:"number"},{text:0,value:0,type:"number"},{text:"",value:"",type:"close"},{text:"",value:"",type:"none"}],p=function(p){var d=p.onBlur,y=p.show,v=p.maxLength,x=void 0===v?Number.MAX_SAFE_INTEGER:v,f=p.closeOnClickSpace,b=void 0===f||f,k=p.onClose,h=p.onChange,E=p.value,g=p.className,N=p.onConfirm,C=p.recommend,j=void 0===C?[]:C,S=p.header,_=p.disabled,L=void 0!==_&&_,w=p.tip,A=e(n(E),2),O=A[0],P=A[1];function T(e){k&&k(e),d&&d(e)}a((function(){return b&&document.addEventListener("click",T),function(){document.removeEventListener("click",T)}}),[]),a((function(){P(E)}),[E]);var B=o((function(e,t){var n=t.type,a=t.value;if("h5"===process.env.TARO_ENV&&e.stopImmediatePropagation(),!L&&"none"!==n)if("close"!==n){var o=O;"delete"===n?o=O.slice(0,O.length-1):o.replace(/^0+/g,"").length<x&&(o=O+a),o!==O&&(P(o),null==h||h(o))}else T(e)}),[O,L]),I=r("xh-amount-keyboard",g);return t.createElement(i,{classNames:"slide-up",in:y,unmountOnExit:!0,timeout:200},t.createElement(l,{className:I},t.createElement(l,{className:"xh-amount-keyboard-header"},t.createElement(l,{className:"xh-amount-keyboard-header-wrapper"},S||j.length>0&&t.createElement(l,{className:"xh-amount-keyboard-header-wrapper-text"},"猜您想借"," ",t.createElement(c,{style:{marginLeft:m(24)}},null==j?void 0:j.map((function(e,n){return t.createElement(l,{key:n,onClick:function(t){return function(e,t){e.stopPropagation(),null==N||N("".concat(t))}(t,e)}},t.createElement(u,{content:"¥".concat(e),key:n}))})))),w)),t.createElement(l,{className:"xh-amount-keyboard-body"},s.map((function(e,n){return t.createElement(l,{key:n,className:r("xh-amount-keyboard-body-key",{none:"none"===e.type,delete:"delete"===e.type,close:"close"===e.type}),onClick:function(t){B(t,e)}},e.text)})),t.createElement(l,{className:"xh-amount-keyboard-body-key confirm-fake",onClick:function(e){e.stopPropagation(),null==N||N(O)}},"确定"))))};export{p as default};
|
|
1
|
+
import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{useState as n,useEffect as a,useCallback as o}from"react";import r from"classnames";import{View as l}from"@tarojs/components";import{pxTransform as m}from"../src/utils/index.js";import u from"../Badge/index.js";import c from"../Space/index.js";import i from"../node_modules/react-transition-group/esm/CSSTransition.js";var s=[{text:1,value:1,type:"number"},{text:2,value:2,type:"number"},{text:3,value:3,type:"number"},{text:"",value:"",type:"delete"},{text:4,value:4,type:"number"},{text:5,value:5,type:"number"},{text:6,value:6,type:"number"},{text:"",value:"",type:"none"},{text:7,value:7,type:"number"},{text:8,value:8,type:"number"},{text:9,value:9,type:"number"},{text:"",value:"",type:"none"},{text:"00",value:"00",type:"number"},{text:0,value:0,type:"number"},{text:"",value:"",type:"close"},{text:"",value:"",type:"none"}],p=function(p){var d=p.onBlur,y=p.show,v=p.maxLength,x=void 0===v?Number.MAX_SAFE_INTEGER:v,f=p.closeOnClickSpace,b=void 0===f||f,k=p.onClose,h=p.onChange,E=p.value,g=p.className,N=p.onConfirm,C=p.recommend,j=void 0===C?[]:C,S=p.header,_=p.disabled,L=void 0!==_&&_,w=p.tip,A=e(n(E),2),O=A[0],P=A[1];function T(e){k&&k(e),d&&d(e)}a((function(){return b&&document.addEventListener("click",T),function(){document.removeEventListener("click",T)}}),[]),a((function(){P(E)}),[E]);var B=o((function(e,t){var n=t.type,a=t.value;if("h5"===process.env.TARO_ENV&&e.stopImmediatePropagation(),!L&&"none"!==n)if("close"!==n){var o=O;"delete"===n?o=O.slice(0,O.length-1):o.replace(/^0+/g,"").length<x&&(o=O+a),o!==O&&(P(o),null==h||h(o))}else T(e)}),[O,L]),I=r("xh-amount-keyboard",g);return t.createElement(i,{classNames:"slide-up",in:y,unmountOnExit:!0,timeout:200},t.createElement(l,{className:I},t.createElement(l,{className:"xh-amount-keyboard-header"},t.createElement(l,{className:"xh-amount-keyboard-header-wrapper"},S||j.length>0&&t.createElement(l,{className:"xh-amount-keyboard-header-wrapper-text"},"猜您想借"," ",t.createElement(c,{style:{marginLeft:m(24)}},null==j?void 0:j.map((function(e,n){return t.createElement(l,{key:n,onClick:function(t){return function(e,t){e.stopPropagation(),null==N||N("".concat(t),!0)}(t,e)}},t.createElement(u,{content:"¥".concat(e),key:n}))})))),w)),t.createElement(l,{className:"xh-amount-keyboard-body"},s.map((function(e,n){return t.createElement(l,{key:n,className:r("xh-amount-keyboard-body-key",{none:"none"===e.type,delete:"delete"===e.type,close:"close"===e.type}),onClick:function(t){B(t,e)}},e.text)})),t.createElement(l,{className:"xh-amount-keyboard-body-key confirm-fake",onClick:function(e){e.stopPropagation(),null==N||N(O)}},"确定"))))};export{p as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/AmountKeyboard/index.tsx"],"sourcesContent":["import React, {\n FC,\n useState,\n useEffect,\n MouseEvent,\n ReactNode,\n useCallback,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { ITouchEvent, View } from \"@tarojs/components\";\nimport { pxTransform } from \"@/utils\";\n\nimport Badge from \"../Badge\";\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Space from \"../Space\";\n\nexport type NumberKeyboardProps = {\n show: boolean;\n showClose?: boolean;\n closeOnClickSpace?: boolean;\n maxLength?: number;\n onBlur?: (e: MouseEvent | Event) => void;\n onClose?: (e: MouseEvent | Event) => void;\n onChange?: (value: string) => void;\n value: string;\n header?: ReactNode;\n onConfirm?: (value: string) => void;\n recommend?: Array<number | string>;\n tip?: ReactNode;\n disabled?: boolean;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\" | \"close\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n}\n\nconst XHAmountKeys: IKey[] = [\n { text: 1, value: 1, type: \"number\" },\n { text: 2, value: 2, type: \"number\" },\n { text: 3, value: 3, type: \"number\" },\n { text: \"\", value: \"\", type: \"delete\" },\n { text: 4, value: 4, type: \"number\" },\n { text: 5, value: 5, type: \"number\" },\n { text: 6, value: 6, type: \"number\" },\n { text: \"\", value: \"\", type: \"none\" },\n { text: 7, value: 7, type: \"number\" },\n { text: 8, value: 8, type: \"number\" },\n { text: 9, value: 9, type: \"number\" },\n { text: \"\", value: \"\", type: \"none\" },\n { text: \"00\", value: \"00\", type: \"number\" },\n { text: 0, value: 0, type: \"number\" },\n { text: \"\", value: \"\", type: \"close\" },\n { text: \"\", value: \"\", type: \"none\" },\n];\n\nconst AmountKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n maxLength = Number.MAX_SAFE_INTEGER,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n className,\n onConfirm,\n recommend = [],\n header,\n disabled = false,\n tip,\n } = props;\n const [input, setInput] = useState(value);\n\n useEffect(() => {\n if (closeOnClickSpace) {\n document.addEventListener(\"click\", handleClose);\n }\n\n return () => {\n document.removeEventListener(\"click\", handleClose);\n };\n }, []);\n\n useEffect(() => {\n setInput(value);\n }, [value]);\n\n function handleClose(e): void {\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n const handleOnRecommand = (e: ITouchEvent, amount: number | string) => {\n e.stopPropagation();\n onConfirm?.(`${amount}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/AmountKeyboard/index.tsx"],"sourcesContent":["import React, {\n FC,\n useState,\n useEffect,\n MouseEvent,\n ReactNode,\n useCallback,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { ITouchEvent, View } from \"@tarojs/components\";\nimport { pxTransform } from \"@/utils\";\n\nimport Badge from \"../Badge\";\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Space from \"../Space\";\n\nexport type NumberKeyboardProps = {\n show: boolean;\n showClose?: boolean;\n closeOnClickSpace?: boolean;\n maxLength?: number;\n onBlur?: (e: MouseEvent | Event) => void;\n onClose?: (e: MouseEvent | Event) => void;\n onChange?: (value: string) => void;\n value: string;\n header?: ReactNode;\n /**\n *\n * @param value 输入值\n * @param recommend 是否是点击推荐金额触发\n * @returns void\n */\n onConfirm?: (value: string, recommend?: boolean) => void;\n recommend?: Array<number | string>;\n tip?: ReactNode;\n disabled?: boolean;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\" | \"close\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n}\n\nconst XHAmountKeys: IKey[] = [\n { text: 1, value: 1, type: \"number\" },\n { text: 2, value: 2, type: \"number\" },\n { text: 3, value: 3, type: \"number\" },\n { text: \"\", value: \"\", type: \"delete\" },\n { text: 4, value: 4, type: \"number\" },\n { text: 5, value: 5, type: \"number\" },\n { text: 6, value: 6, type: \"number\" },\n { text: \"\", value: \"\", type: \"none\" },\n { text: 7, value: 7, type: \"number\" },\n { text: 8, value: 8, type: \"number\" },\n { text: 9, value: 9, type: \"number\" },\n { text: \"\", value: \"\", type: \"none\" },\n { text: \"00\", value: \"00\", type: \"number\" },\n { text: 0, value: 0, type: \"number\" },\n { text: \"\", value: \"\", type: \"close\" },\n { text: \"\", value: \"\", type: \"none\" },\n];\n\nconst AmountKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n maxLength = Number.MAX_SAFE_INTEGER,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n className,\n onConfirm,\n recommend = [],\n header,\n disabled = false,\n tip,\n } = props;\n const [input, setInput] = useState(value);\n\n useEffect(() => {\n if (closeOnClickSpace) {\n document.addEventListener(\"click\", handleClose);\n }\n\n return () => {\n document.removeEventListener(\"click\", handleClose);\n };\n }, []);\n\n useEffect(() => {\n setInput(value);\n }, [value]);\n\n function handleClose(e): void {\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n const handleOnRecommand = (e: ITouchEvent, amount: number | string) => {\n e.stopPropagation();\n onConfirm?.(`${amount}`, true);\n };\n\n const handleKeyPress = useCallback(\n (e, { type, value }: IKey): void => {\n if (process.env.TARO_ENV === \"h5\") {\n e.stopImmediatePropagation();\n }\n if (disabled) return;\n if (type === \"none\") return;\n\n if (type === \"close\") {\n handleClose(e);\n return;\n }\n let newInput = input;\n\n if (type === \"delete\") {\n newInput = input.slice(0, input.length - 1);\n } else if (newInput.replace(/^0+/g, \"\").length < maxLength) {\n newInput = input + value;\n }\n\n // 前后两个值相等就不触发onchange\n if (newInput === input) return;\n setInput(newInput);\n onChange?.(newInput);\n },\n [input, disabled]\n );\n\n const handleConfirm = (e: ITouchEvent) => {\n e.stopPropagation();\n onConfirm?.(input);\n };\n const keyboardcls = classNames(\"xh-amount-keyboard\", className);\n\n return (\n <CSSTransition classNames=\"slide-up\" in={show} unmountOnExit timeout={200}>\n <View className={keyboardcls}>\n <View className=\"xh-amount-keyboard-header\">\n <View className=\"xh-amount-keyboard-header-wrapper\">\n {header ||\n (recommend.length > 0 && (\n <View className=\"xh-amount-keyboard-header-wrapper-text\">\n 猜您想借{\" \"}\n <Space style={{ marginLeft: pxTransform(24) }}>\n {recommend?.map((amount, index) => (\n <View\n key={index}\n onClick={e => handleOnRecommand(e, amount)}\n >\n <Badge content={`¥${amount}`} key={index} />\n </View>\n ))}\n </Space>\n </View>\n ))}\n {tip}\n </View>\n </View>\n <View className=\"xh-amount-keyboard-body\">\n {XHAmountKeys.map((key, index) => (\n <View\n key={index}\n className={classNames(\"xh-amount-keyboard-body-key\", {\n none: key.type === \"none\",\n delete: key.type === \"delete\",\n close: key.type === \"close\",\n })}\n onClick={e => {\n handleKeyPress(e, key);\n }}\n >\n {key.text}\n </View>\n ))}\n <View\n className=\"xh-amount-keyboard-body-key confirm-fake\"\n onClick={handleConfirm}\n >\n 确定\n </View>\n </View>\n </View>\n </CSSTransition>\n );\n};\n\nexport default AmountKeyboard;\n"],"names":["XHAmountKeys","text","value","type","AmountKeyboard","props","onBlur","show","_a","maxLength","Number","MAX_SAFE_INTEGER","_b","closeOnClickSpace","onClose","onChange","className","onConfirm","_c","recommend","header","_d","disabled","tip","_e","__read","useState","input","setInput","handleClose","e","useEffect","document","addEventListener","removeEventListener","handleKeyPress","useCallback","process","env","TARO_ENV","stopImmediatePropagation","newInput","slice","length","replace","keyboardcls","classNames","React","createElement","CSSTransition","in","unmountOnExit","timeout","View","Space","style","marginLeft","pxTransform","map","amount","index","key","onClick","stopPropagation","concat","handleOnRecommand","Badge","content","none","delete","close"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import{View as l,Text as a}from"@tarojs/components";import c from"classnames";var t=function(t){var o=t.icon,n=t.value,r=t.extraIcon,s=t.arrow,i=t.border,m=void 0===i||i,d=t.paddingHorizontal,p=void 0===d||d,u=t.onClick,v=t.className,h=t.outline,x=void 0===h||h,E=t.descriptionColor,N=void 0===E?"":E,f=t.valueColor,b=t.ellipsis,y=void 0===b||b,C=t.content,g=t.contentDescription,k=t.description,w=t.subDescription,z=t.secondary,D=t.alignItems,H=void 0===D?o?"start":"center":D,I=t.placeholder,j=void 0===I?"":I,q=c("xh-cell",{border:m},{secondary:z},{outline:x},{paddingHorizontal:p},H,v),A=c("xh-cell-main",{ellipsis:y});return e.createElement(l,{className:q,onClick:function(e){u&&u(e)}},o&&e.createElement(l,{className:"xh-cell-icon"},o),e.createElement(l,{className:A},C&&e.createElement(
|
|
1
|
+
import e from"react";import{View as l,Text as a}from"@tarojs/components";import c from"classnames";var t=function(t){var o=t.icon,n=t.value,r=t.extraIcon,s=t.arrow,i=t.border,m=void 0===i||i,d=t.paddingHorizontal,p=void 0===d||d,u=t.onClick,v=t.className,h=t.outline,x=void 0===h||h,E=t.descriptionColor,N=void 0===E?"":E,f=t.valueColor,b=t.ellipsis,y=void 0===b||b,C=t.content,g=t.contentDescription,k=t.description,w=t.subDescription,z=t.secondary,D=t.alignItems,H=void 0===D?o?"start":"center":D,I=t.placeholder,j=void 0===I?"":I,q=c("xh-cell",{border:m},{secondary:z},{outline:x},{paddingHorizontal:p},H,v),A=c("xh-cell-main",{ellipsis:y});return e.createElement(l,{className:q,onClick:function(e){u&&u(e)}},o&&e.createElement(l,{className:"xh-cell-icon"},o),e.createElement(l,{className:A},C&&e.createElement(l,{className:"xh-cell-main-content"},C),g&&e.createElement(l,{className:"xh-cell-main-description"},g)),e.createElement(l,{className:"xh-cell-description",style:{color:N}},k?e.createElement(l,null,k):e.createElement(l,{className:"xh-cell-description-placeholder"},j),e.createElement(a,{className:"xh-cell-description-sub"},w)),e.createElement(l,{className:"xh-cell-value"},e.createElement(l,{className:"xh-cell-value-info",style:{color:f}},n),e.createElement(l,{className:"xh-cell-value-icon"},r||s&&e.createElement(l,{className:"xh-cell-value-icon-arrow"}))))};export{t as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Cell/index.tsx"],"sourcesContent":["import React, { FC, ReactNode } from \"react\";\nimport { View, Text, ITouchEvent } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { StandardLonghandProperties } from \"csstype\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\nexport type XHCellProps = {\n content?: ReactNode;\n contentDescription?: ReactNode;\n description?: ReactNode;\n subDescription?: ReactNode;\n paddingHorizontal?: boolean;\n icon?: ReactNode;\n value?: ReactNode;\n extraIcon?: ReactNode;\n border?: boolean;\n arrow?: boolean;\n outline?: boolean;\n onClick?: (e: ITouchEvent) => void;\n descriptionColor?: StandardLonghandProperties[\"color\"];\n valueColor?: StandardLonghandProperties[\"color\"];\n ellipsis?: boolean;\n placeholder?: string;\n alignItems?: \"start\" | \"center\" | \"end\";\n /**\n * @description 是否是次级列表\n */\n secondary?: boolean;\n} & XHComponentCommonProps;\n\nconst XHCell: FC<XHCellProps> = props => {\n const {\n icon,\n value,\n extraIcon,\n arrow,\n border = true,\n paddingHorizontal = true,\n onClick,\n className,\n outline = true,\n descriptionColor = \"\",\n valueColor,\n ellipsis = true,\n content,\n contentDescription,\n description,\n subDescription,\n secondary,\n alignItems = icon ? \"start\" : \"center\",\n placeholder = \"\",\n } = props;\n\n const cellcls = classNames(\n \"xh-cell\",\n { border },\n { secondary },\n { outline },\n { paddingHorizontal },\n alignItems,\n className\n );\n\n const mainCls = classNames(\"xh-cell-main\", {\n ellipsis,\n });\n\n const handleClick = (e: ITouchEvent) => {\n onClick && onClick(e);\n };\n\n return (\n <View className={cellcls} onClick={handleClick}>\n {icon && <View className=\"xh-cell-icon\">{icon}</View>}\n <View className={mainCls}>\n {content && <
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Cell/index.tsx"],"sourcesContent":["import React, { FC, ReactNode } from \"react\";\nimport { View, Text, ITouchEvent } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { StandardLonghandProperties } from \"csstype\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\nexport type XHCellProps = {\n content?: ReactNode;\n contentDescription?: ReactNode;\n description?: ReactNode;\n subDescription?: ReactNode;\n paddingHorizontal?: boolean;\n icon?: ReactNode;\n value?: ReactNode;\n extraIcon?: ReactNode;\n border?: boolean;\n arrow?: boolean;\n outline?: boolean;\n onClick?: (e: ITouchEvent) => void;\n descriptionColor?: StandardLonghandProperties[\"color\"];\n valueColor?: StandardLonghandProperties[\"color\"];\n ellipsis?: boolean;\n placeholder?: string;\n alignItems?: \"start\" | \"center\" | \"end\";\n /**\n * @description 是否是次级列表\n */\n secondary?: boolean;\n} & XHComponentCommonProps;\n\nconst XHCell: FC<XHCellProps> = props => {\n const {\n icon,\n value,\n extraIcon,\n arrow,\n border = true,\n paddingHorizontal = true,\n onClick,\n className,\n outline = true,\n descriptionColor = \"\",\n valueColor,\n ellipsis = true,\n content,\n contentDescription,\n description,\n subDescription,\n secondary,\n alignItems = icon ? \"start\" : \"center\",\n placeholder = \"\",\n } = props;\n\n const cellcls = classNames(\n \"xh-cell\",\n { border },\n { secondary },\n { outline },\n { paddingHorizontal },\n alignItems,\n className\n );\n\n const mainCls = classNames(\"xh-cell-main\", {\n ellipsis,\n });\n\n const handleClick = (e: ITouchEvent) => {\n onClick && onClick(e);\n };\n\n return (\n <View className={cellcls} onClick={handleClick}>\n {icon && <View className=\"xh-cell-icon\">{icon}</View>}\n <View className={mainCls}>\n {content && <View className=\"xh-cell-main-content\">{content}</View>}\n {contentDescription && (\n <View className=\"xh-cell-main-description\">{contentDescription}</View>\n )}\n </View>\n <View className=\"xh-cell-description\" style={{ color: descriptionColor }}>\n {description ? (\n <View>{description}</View>\n ) : (\n <View className=\"xh-cell-description-placeholder\">{placeholder}</View>\n )}\n <Text className=\"xh-cell-description-sub\">{subDescription}</Text>\n </View>\n <View className=\"xh-cell-value\">\n <View className=\"xh-cell-value-info\" style={{ color: valueColor }}>\n {value}\n </View>\n <View className=\"xh-cell-value-icon\">\n {extraIcon\n ? extraIcon\n : arrow && <View className=\"xh-cell-value-icon-arrow\" />}\n </View>\n </View>\n </View>\n );\n};\nexport default XHCell;\n"],"names":["XHCell","props","icon","value","extraIcon","arrow","_a","border","_b","paddingHorizontal","onClick","className","_c","outline","_d","descriptionColor","valueColor","_e","ellipsis","content","contentDescription","description","subDescription","secondary","_f","alignItems","_g","placeholder","cellcls","classNames","mainCls","React","createElement","View","e","style","color","Text"],"mappings":"mGAgCM,IAAAA,EAA0B,SAAAC,GAE5B,IAAAC,EAmBED,EAAKC,KAlBPC,EAkBEF,EAlBGE,MACLC,EAiBEH,EAAKG,UAhBPC,EAgBEJ,EAhBGI,MACLC,EAeEL,EAfWM,OAAbA,OAAM,IAAAD,GAAOA,EACbE,EAcEP,EAdsBQ,kBAAxBA,OAAiB,IAAAD,GAAOA,EACxBE,EAaET,EAbKS,QACPC,EAYEV,EAZOU,UACTC,EAWEX,EAXYY,QAAdA,OAAO,IAAAD,GAAOA,EACdE,EAUEb,EAAKc,iBAVPA,aAAmB,GAAED,EACrBE,EASEf,EATQe,WACVC,EAQEhB,EARaiB,SAAfA,OAAQ,IAAAD,GAAOA,EACfE,EAOElB,EAPKkB,QACPC,EAMEnB,EAAKmB,mBALPC,EAKEpB,EALSoB,YACXC,EAIErB,EAJYqB,eACdC,EAGEtB,EAAKsB,UAFPC,EAEEvB,EAAKwB,WAFPA,OAAa,IAAAD,EAAAtB,EAAO,QAAU,SAAQsB,EACtCE,EACEzB,EAAK0B,YADPA,OAAc,IAAAD,EAAA,KAGVE,EAAUC,EACd,UACA,CAAEtB,OAAMA,GACR,CAAEgB,UAASA,GACX,CAAEV,QAAOA,GACT,CAAEJ,kBAAiBA,GACnBgB,EACAd,GAGImB,EAAUD,EAAW,eAAgB,CACzCX,SAAQA,IAOV,OACEa,EAACC,cAAAC,EAAK,CAAAtB,UAAWiB,EAASlB,QALR,SAACwB,GACnBxB,GAAWA,EAAQwB,EACrB,GAIKhC,GAAQ6B,gBAACE,EAAI,CAACtB,UAAU,gBAAgBT,GACzC6B,EAAAC,cAACC,EAAI,CAACtB,UAAWmB,GACdX,GAAWY,gBAACE,EAAI,CAACtB,UAAU,wBAAwBQ,GACnDC,GACCW,EAACC,cAAAC,EAAK,CAAAtB,UAAU,4BAA4BS,IAGhDW,EAAAC,cAACC,EAAI,CAACtB,UAAU,sBAAsBwB,MAAO,CAAEC,MAAOrB,IACnDM,EACCU,gBAACE,EAAI,KAAEZ,GAEPU,EAACC,cAAAC,EAAK,CAAAtB,UAAU,mCAAmCgB,GAErDI,EAACC,cAAAK,GAAK1B,UAAU,2BAA2BW,IAE7CS,EAAAC,cAACC,EAAI,CAACtB,UAAU,iBACdoB,EAAAC,cAACC,EAAI,CAACtB,UAAU,qBAAqBwB,MAAO,CAAEC,MAAOpB,IAClDb,GAEH4B,EAAAC,cAACC,EAAK,CAAAtB,UAAU,sBACbP,GAEGC,GAAS0B,EAAAC,cAACC,EAAK,CAAAtB,UAAU,+BAKvC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import a from"classnames";import{CheckboxGroup as t}from"@tarojs/components";import c from"../src/hooks/useGenerateId.js";import{pxTransform as l}from"../src/utils/index.js";import s from"./Group/index.js";var o=function(s){var o=s.className,r=s.name,n=s.label,h=s.id,i=s.circle,m=s.onChange,p=s.align,d=s.direction,u=s.justify,x=s.checked,b=s.disabled,k=s.value,v=s.style,
|
|
1
|
+
import e from"react";import a from"classnames";import{CheckboxGroup as t}from"@tarojs/components";import c from"../src/hooks/useGenerateId.js";import{pxTransform as l}from"../src/utils/index.js";import s from"./Group/index.js";var o=function(s){var o=s.className,r=s.name,n=s.label,h=s.id,i=s.circle,m=s.onChange,p=s.align,d=s.direction,u=s.justify,x=s.checked,b=s.disabled,k=s.value,v=s.style,E=s.size,N=void 0===E?0:E,f=s.color,g=void 0===f?"var(--color-primary)":f,y=c(h,"xh-checkbox-id"),C=function(e){var a=x||!1,t="";"h5"===process.env.TARO_ENV?(a=e.target.checked,t=e.target.value):(a=e.detail.value.length>0,t=e.detail.value[0]),m&&m(a,t)},j=a("xh-checkbox",o,p,d,u,{h5:"h5"===process.env.TARO_ENV});return"h5"!==process.env.TARO_ENV?e.createElement(t,{onChange:C},e.createElement("label",{htmlFor:y,className:j,style:v},e.createElement("input",{type:"checkbox",id:y,name:r,className:a("xh-checkbox-input",{tt:"tt"===process.env.TARO_ENV}),onChange:C,disabled:b,value:k,checked:x,color:g}),e.createElement("span",{className:a("xh-checkbox-input-fake",i&&"circle",{tt:"tt"===process.env.TARO_ENV}),style:N>0?{width:l(N),height:l(N)}:{}}),e.createElement("span",{className:"xh-checkbox-label"},n))):e.createElement("label",{htmlFor:y,className:j,style:v},e.createElement("input",{type:"checkbox",id:y,name:r,className:"xh-checkbox-input",onChange:C,value:k,defaultChecked:x}),e.createElement("span",{style:N>0?{width:l(N),height:l(N)}:{},className:a("xh-checkbox-input-fake",i&&"circle")}),e.createElement("span",{className:"xh-checkbox-label"},n))};o.Group=s;export{o as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { FC, ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport { CheckboxGroup } from \"@tarojs/components\";\nimport useGenerateId from \"@/hooks/useGenerateId\";\nimport { pxTransform } from \"@/utils\";\nimport Group from \"./Group\";\nimport \"./index.scss\";\nimport type { XHComponentCommonProps } from \"../../types\";\n\ntype CompoundedComponent = React.ForwardRefExoticComponent<\n XHCheckboxProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof Group;\n};\n\nexport type XHCheckboxProps = {\n onChange?: (check: boolean, value: string) => void;\n checked?: boolean;\n name?: string;\n label: string | ReactNode;\n size?: number;\n circle?: boolean;\n align?: \"center\" | \"end\";\n direction?: \"rtl\";\n justify?: \"around\" | \"between\";\n value?: string | number;\n id?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n /**\n * 抖音不支持属性选择器\n * @description 主要为抖音支持颜色\n */\n color?: string;\n} & XHComponentCommonProps;\n\nconst XHCheckbox: FC<XHCheckboxProps> = props => {\n const {\n className,\n name,\n label,\n id,\n circle,\n onChange,\n align,\n direction,\n justify,\n checked,\n disabled,\n value,\n style,\n size = 0,\n color = \"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { FC, ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport { CheckboxGroup } from \"@tarojs/components\";\nimport useGenerateId from \"@/hooks/useGenerateId\";\nimport { pxTransform } from \"@/utils\";\nimport Group from \"./Group\";\nimport \"./index.scss\";\nimport type { XHComponentCommonProps } from \"../../types\";\n\ntype CompoundedComponent = React.ForwardRefExoticComponent<\n XHCheckboxProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof Group;\n};\n\nexport type XHCheckboxProps = {\n onChange?: (check: boolean, value: string) => void;\n checked?: boolean;\n name?: string;\n label: string | ReactNode;\n size?: number;\n circle?: boolean;\n align?: \"center\" | \"end\";\n direction?: \"rtl\";\n justify?: \"around\" | \"between\";\n value?: string | number;\n id?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n /**\n * 抖音不支持属性选择器\n * @description 主要为抖音支持颜色\n */\n color?: string;\n} & XHComponentCommonProps;\n\nconst XHCheckbox: FC<XHCheckboxProps> = props => {\n const {\n className,\n name,\n label,\n id,\n circle,\n onChange,\n align,\n direction,\n justify,\n checked,\n disabled,\n value,\n style,\n size = 0,\n color = \"var(--color-primary)\",\n } = props;\n\n const finalId = useGenerateId(id, \"xh-checkbox-id\");\n\n const handleOnchange = e => {\n let finalchecked = checked || false;\n let value = \"\";\n if (process.env.TARO_ENV === \"h5\") {\n finalchecked = e.target.checked;\n value = e.target.value;\n } else {\n finalchecked = e.detail.value.length > 0;\n value = e.detail.value[0];\n }\n onChange && onChange(finalchecked, value);\n };\n\n const cls = classNames(\"xh-checkbox\", className, align, direction, justify, {\n h5: process.env.TARO_ENV === \"h5\",\n });\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <CheckboxGroup onChange={handleOnchange}>\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"checkbox\"\n id={finalId}\n name={name}\n className={classNames(\"xh-checkbox-input\", {\n tt: process.env.TARO_ENV === \"tt\",\n })}\n onChange={handleOnchange}\n disabled={disabled}\n value={value}\n checked={checked}\n color={color}\n />\n <span\n className={classNames(\n \"xh-checkbox-input-fake\",\n circle && \"circle\",\n { tt: process.env.TARO_ENV === \"tt\" }\n )}\n style={\n size > 0\n ? {\n width: pxTransform(size),\n height: pxTransform(size),\n }\n : {}\n }\n ></span>\n <span className=\"xh-checkbox-label\">{label}</span>\n </label>\n </CheckboxGroup>\n );\n }\n\n return (\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"checkbox\"\n id={finalId}\n name={name}\n className=\"xh-checkbox-input\"\n onChange={handleOnchange}\n value={value}\n defaultChecked={checked}\n />\n <span\n style={\n size > 0\n ? {\n width: pxTransform(size),\n height: pxTransform(size),\n }\n : {}\n }\n className={classNames(\"xh-checkbox-input-fake\", circle && \"circle\")}\n ></span>\n <span className=\"xh-checkbox-label\">{label}</span>\n </label>\n );\n};\n\nconst CheckBox = XHCheckbox as CompoundedComponent;\nCheckBox.Group = Group;\n\nexport default CheckBox;\n"],"names":["CheckBox","props","className","name","label","id","circle","onChange","align","direction","justify","checked","disabled","value","style","_a","size","_b","color","finalId","useGenerateId","handleOnchange","e","finalchecked","process","env","TARO_ENV","target","detail","length","cls","classNames","h5","React","createElement","CheckboxGroup","htmlFor","type","tt","width","pxTransform","height","defaultChecked","Group"],"mappings":"mOAoCA,IAsGMA,EAtGkC,SAAAC,GAEpC,IAAAC,EAeED,EAfOC,UACTC,EAcEF,EAdEE,KACJC,EAaEH,QAZFI,EAYEJ,EAAKI,GAXPC,EAWEL,EAAKK,OAVPC,EAUEN,EAVMM,SACRC,EASEP,EATGO,MACLC,EAQER,YAPFS,EAOET,UANFU,EAMEV,UALFW,EAKEX,WAJFY,EAIEZ,EAAKY,MAHPC,EAGEb,EAAKa,MAFPC,EAEEd,OAFFe,aAAO,EAACD,EACRE,EACEhB,EAD4BiB,MAA9BA,OAAQ,IAAAD,EAAA,yBAGJE,EAAUC,EAAcf,EAAI,kBAE5BgB,EAAiB,SAAAC,GACrB,IAAIC,EAAeZ,IAAW,EAC1BE,EAAQ,GACiB,OAAzBW,QAAQC,IAAIC,UACdH,EAAeD,EAAEK,OAAOhB,QACxBE,EAAQS,EAAEK,OAAOd,QAEjBU,EAAeD,EAAEM,OAAOf,MAAMgB,OAAS,EACvChB,EAAQS,EAAEM,OAAOf,MAAM,IAEzBN,GAAYA,EAASgB,EAAcV,EACrC,EAEMiB,EAAMC,EAAW,cAAe7B,EAAWM,EAAOC,EAAWC,EAAS,CAC1EsB,GAA6B,OAAzBR,QAAQC,IAAIC,WAElB,MAA6B,OAAzBF,QAAQC,IAAIC,SAEZO,EAACC,cAAAC,EAAc,CAAA5B,SAAUc,GACvBY,EAAOC,cAAA,QAAA,CAAAE,QAASjB,EAASjB,UAAW4B,EAAKhB,MAAOA,GAC9CmB,EAAAC,cAAA,QAAA,CACEG,KAAK,WACLhC,GAAIc,EACJhB,KAAMA,EACND,UAAW6B,EAAW,oBAAqB,CACzCO,GAA6B,OAAzBd,QAAQC,IAAIC,WAElBnB,SAAUc,EACVT,SAAUA,EACVC,MAAOA,EACPF,QAASA,EACTO,MAAOA,IAETe,EACEC,cAAA,OAAA,CAAAhC,UAAW6B,EACT,yBACAzB,GAAU,SACV,CAAEgC,GAA6B,OAAzBd,QAAQC,IAAIC,WAEpBZ,MACEE,EAAO,EACH,CACEuB,MAAOC,EAAYxB,GACnByB,OAAQD,EAAYxB,IAEtB,CAAA,IAGRiB,EAAMC,cAAA,OAAA,CAAAhC,UAAU,qBAAqBE,KAO3C6B,EAAAC,cAAA,QAAA,CAAOE,QAASjB,EAASjB,UAAW4B,EAAKhB,MAAOA,GAC9CmB,EACEC,cAAA,QAAA,CAAAG,KAAK,WACLhC,GAAIc,EACJhB,KAAMA,EACND,UAAU,oBACVK,SAAUc,EACVR,MAAOA,EACP6B,eAAgB/B,IAElBsB,EAAAC,cAAA,OAAA,CACEpB,MACEE,EAAO,EACH,CACEuB,MAAOC,EAAYxB,GACnByB,OAAQD,EAAYxB,IAEtB,CAAE,EAERd,UAAW6B,EAAW,yBAA0BzB,GAAU,YAE5D2B,EAAMC,cAAA,OAAA,CAAAhC,UAAU,qBAAqBE,GAG3C,EAGAJ,EAAS2C,MAAQA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__read as n,__spreadArray as e}from"../node_modules/tslib/tslib.es6.js";import{View as a,Input as t}from"@tarojs/components";import l,{forwardRef as i,useState as m,useEffect as r,useCallback as o,useMemo as u,useImperativeHandle as c}from"react";import{inputRange as s}from"../src/utils/index.js";import h from"../ActionSheet/index.js";var
|
|
1
|
+
import{__read as n,__spreadArray as e}from"../node_modules/tslib/tslib.es6.js";import{View as a,Input as t}from"@tarojs/components";import l,{forwardRef as i,useState as m,useEffect as r,useCallback as o,useMemo as u,useImperativeHandle as c}from"react";import{inputRange as s}from"../src/utils/index.js";import k from"classnames";import h from"../ActionSheet/index.js";var p=["一","二","三","四","五","六","七","八","九","十"],f={linkmanName:"请输入联系人姓名",linkmanPhone:"请输入正确的手机号",relationType:"请选择与联系人关系"},N=[{value:"FATHER",text:"父亲"},{value:"MOTHER",text:"母亲"},{value:"MATE",text:"配偶"},{value:"CHILDREN",text:"子女"},{value:"SIBLING",text:"兄弟姐妹"},{value:"FRIENDS",text:"朋友"},{value:"COLLEAGUE",text:"同事"},{value:"RELATIVES",text:"亲戚"},{value:"OTHER",text:"其他"}],E="h5"!==process.env.TARO_ENV||window.navigator.userAgent.includes("xhqb"),x=i((function(i,x){var v=i.linkManNum,P=i.relations,T=void 0===P?N:P,d=i.onChange,g=i.onGetContacts,V=i.showImportIcon,y=void 0===V?E:V,A=i.onBlur,R=i.onCheckRelation,b=i.onInputChange,C=n(m([]),2),I=C[0],O=C[1],_=n(m([]),2),B=_[0],F=_[1];r((function(){O(Array(v).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:"",relationValue:""}}))),F(Array(v).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:""}})))}),[v]);var L=o((function(n){return!!/1\d{10}/.test(n)}),[]),M=o((function(n,e){return"linkmanName"===n?!(!e||!e.replace(/^\s+|\s+$/gm,""))&&!(e.length>20):"linkmanPhone"===n?!(!e||!L(e)):"relationType"===n&&!!e}),[]),S=u((function(){for(var n=I,e=n.length,a={linkmanName:[],linkmanPhone:[],relationValue:[]},t=!0,l=0;l<e;l++){if(!M("linkmanName",n[l].linkmanName)){t=!1;break}if(!M("linkmanPhone",n[l].linkmanPhone)){t=!1;break}if(0!==l&&a.linkmanPhone.includes(n[l].linkmanPhone)){t=!1;break}if(a.linkmanPhone.push(n[l].linkmanPhone),!M("relationType",n[l].relationValue)){t=!1;break}a.relationValue.push(n[l].relationValue)}return a.relationValue.filter((function(n){return"MATE"===n})).length>=2&&(t=!1),t}),[I]);r((function(){null==d||d(I,S)}),[I,S]),c(x,(function(){return{canSubmit:S,setContacts:function(a,t){O((function(l){return l[t].linkmanName=a.linkmanName,l[t].linkmanPhone=a.linkmanPhone,e([],n(l),!1)})),G("linkmanName",t),G("linkmanPhone",t)}}}),[S]);var j=function(n,e){for(var a=I[e],t=0,l=I.length;t<l;t++)if(t!==e){var i=I[t];if("linkmanPhone"===n){if(""!==a.linkmanPhone&&""!==i.linkmanPhone&&i.linkmanPhone===a.linkmanPhone)return{pass:!1,message:"手机号与第".concat(t+1,"联系人号码重复,请修改")}}else if("relationValue"===n&&""!==a.relationValue&&"MATE"===i.relationValue&&"MATE"===a.relationValue)return{pass:!1,message:"关系与第".concat(t+1,"联系人关系重复,请修改")}}return{pass:!0,message:""}},w=o((function(a,t){var l="h5"===process.env.TARO_ENV?a.target.value:a.detail.value,i=s(l);O((function(a){return a[t].linkmanName=i,e([],n(a),!1)})),null==b||b("linkmanName",t)}),[]),H=o((function(a,t){var l="h5"===process.env.TARO_ENV?a.target.value:a.detail.value,i=s(l);O((function(a){return a[t].linkmanPhone=i,e([],n(a),!1)})),null==b||b("linkmanPhone",t)}),[]),G=o((function(a,t){if(M(a,I[t][a])){var l=j(a,t),i=l.pass,m=l.message;i||F((function(l){return l[t][a]=m,e([],n(l),!1)})),null==A||A(a,t)}else F((function(l){return l[t][a]=f[a],e([],n(l),!1)}))}),[I]),D=o((function(a,t){F((function(l){return l[t][a]="",e([],n(l),!1)}))}),[]);return l.createElement(a,{className:"xh-linkman"},I.map((function(i,m){return l.createElement(a,{key:m,className:"xh-linkman-item"},l.createElement(a,{className:"xh-linkman-title"},"第",p[m],"联系人"),l.createElement(a,{className:"xh-linkman-main"},l.createElement(a,{className:"xh-linkman-main-input"},l.createElement(a,{className:"xh-linkman-main-input-label"},"姓名"),l.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?l.createElement("input",{className:"xh-linkman-main-input-main-input",type:"text",placeholder:"紧急联系人姓名",onChange:function(n){return w(n,m)},value:i.linkmanName,onBlur:function(){return G("linkmanName",m)},onFocus:function(){return D("linkmanName",m)}}):l.createElement(t,{placeholder:"紧急联系人姓名",className:"xh-linkman-main-input-main-input",onBlur:function(){return G("linkmanName",m)},value:i.linkmanName,type:"text",onInput:function(n){return w(n,m)},onFocus:function(){return D("linkmanName",m)}}),B[m].linkmanName&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},B[m].linkmanName)),y&&l.createElement(a,{className:"xh-linkman-main-input-contacts",onClick:function(){return null==g?void 0:g(m)}}))),l.createElement(a,{className:"xh-linkman-main"},l.createElement(a,{className:"xh-linkman-main-input"},l.createElement(a,{className:"xh-linkman-main-input-label"},"电话"),l.createElement(a,{className:"xh-linkman-main-input-main"},"h5"===process.env.TARO_ENV?l.createElement("input",{className:"xh-linkman-main-input-main-input",type:"tel",placeholder:"紧急联系人手机号",onBlur:function(){return G("linkmanPhone",m)},maxLength:11,onChange:function(n){return H(n,m)},value:i.linkmanPhone,onFocus:function(){return D("linkmanPhone",m)}}):l.createElement(t,{placeholder:"紧急联系人手机号",className:"xh-linkman-main-input-main-input",type:"number",maxlength:11,onBlur:function(){return G("linkmanPhone",m)},value:i.linkmanPhone,onInput:function(n){return H(n,m)},onFocus:function(){return D("linkmanPhone",m)}}),B[m].linkmanPhone&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},B[m].linkmanPhone)))),l.createElement(h,{data:T,title:"选择与联系人的关系",onConfirm:function(a){F((function(a){return a[m].relationType="",e([],n(a),!1)})),O((function(t){return t[m].relationType=a.text,t[m].relationValue=a.value,e([],n(t),!1)})),Promise.resolve().then((function(){var t=j("relationValue",m),l=t.pass,i=t.message;l||F((function(a){return a[m].relationType=i,e([],n(a),!1)})),null==R||R(a,m)}))},onCancel:function(){return G("relationType",m)}},l.createElement(a,{className:"xh-linkman-main"},l.createElement(a,{className:"xh-linkman-main-input"},l.createElement(a,{className:"xh-linkman-main-input-label"},"关系"),l.createElement(a,{className:"xh-linkman-main-input-main"},l.createElement(a,{className:k("xh-linkman-main-input-main-input",{placeholder:!i.relationValue,tt:"tt"===process.env.TARO_ENV})},i.relationType||"选择与联系人关系"),B[m].relationType&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},B[m].relationType)),l.createElement(a,{className:"xh-linkman-main-input-arrow"})))))})))}));export{x as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/LinkMan/index.tsx"],"sourcesContent":["import { View, Input } from \"@tarojs/components\";\nimport React, {\n useCallback,\n useEffect,\n useState,\n forwardRef,\n useImperativeHandle,\n useMemo,\n} from \"react\";\nimport { inputRange } from \"@/utils\";\n\nimport ActionSheet from \"../ActionSheet\";\n\nimport \"./index.scss\";\n\nexport type AddLinkManProps = {\n linkManNum: number;\n onChange?: (data: LinkManItem[], pass: boolean) => void;\n onGetContacts?: (index: number) => void;\n showImportIcon?: boolean;\n onBlur?: (type: keyof LinkManItem, index: number) => void;\n onCheckRelation?: (\n value: { text: string; value: string },\n index: number\n ) => void;\n onInputChange?: (type: \"linkmanName\" | \"linkmanPhone\", index: number) => void;\n /**\n * 可以选择的关系\n */\n relations?: { text: string; value: string }[];\n};\n\nconst LinkManTitleMap = [\n \"一\",\n \"二\",\n \"三\",\n \"四\",\n \"五\",\n \"六\",\n \"七\",\n \"八\",\n \"九\",\n \"十\",\n];\n\n/**\n * 错误信息提示\n */\nconst errorMessageMap = {\n linkmanName: \"请输入联系人姓名\",\n linkmanPhone: \"请输入正确的手机号\",\n relationType: \"请选择与联系人关系\",\n};\n\nconst defaultActionSheet = [\n {\n value: \"FATHER\",\n text: \"父亲\",\n },\n {\n value: \"MOTHER\",\n text: \"母亲\",\n },\n {\n value: \"MATE\",\n text: \"配偶\",\n },\n {\n value: \"CHILDREN\",\n text: \"子女\",\n },\n {\n value: \"SIBLING\",\n text: \"兄弟姐妹\",\n },\n {\n value: \"FRIENDS\",\n text: \"朋友\",\n },\n {\n value: \"COLLEAGUE\",\n text: \"同事\",\n },\n {\n value: \"RELATIVES\",\n text: \"亲戚\",\n },\n {\n value: \"OTHER\",\n text: \"其他\",\n },\n];\n\nexport type LinkManItem = {\n linkmanName: string;\n linkmanPhone: string;\n relationType: string;\n relationValue: string;\n};\n\nexport type LinkManRef = {\n canSubmit: boolean;\n setContacts: (\n item: Pick<LinkManItem, \"linkmanName\" | \"linkmanPhone\">,\n index: number\n ) => void;\n};\n\nconst defaultShowImportIcon =\n process.env.TARO_ENV === \"h5\"\n ? window.navigator.userAgent.includes(\"xhqb\")\n : true;\n\nconst XHAddLinMan = forwardRef<LinkManRef, AddLinkManProps>(\n (props, fromRef) => {\n const {\n linkManNum,\n relations = defaultActionSheet,\n onChange,\n onGetContacts,\n showImportIcon = defaultShowImportIcon,\n onBlur,\n onCheckRelation,\n onInputChange,\n } = props;\n\n // form信息\n const [formData, setFormData] = useState<LinkManItem[]>([]);\n\n // 错误提示语信息\n const [errMessage, setErrMessage] = useState<\n Omit<LinkManItem, \"relationValue\">[]\n >([]);\n\n useEffect(() => {\n setFormData(\n Array(linkManNum)\n .fill(1)\n .map(() => {\n return {\n linkmanName: \"\",\n linkmanPhone: \"\",\n relationType: \"\",\n relationValue: \"\",\n };\n })\n );\n setErrMessage(\n Array(linkManNum)\n .fill(1)\n .map(() => {\n return {\n linkmanName: \"\",\n linkmanPhone: \"\",\n relationType: \"\",\n };\n })\n );\n }, [linkManNum]);\n\n /**\n * 校验手机号\n */\n const validatePhone = useCallback((phone: string) => {\n if (/1\\d{10}/.test(phone)) {\n return true;\n }\n return false;\n }, []);\n\n /**\n * 非空校验\n */\n const validateForm = useCallback(\n (type: keyof LinkManItem, name: string) => {\n if (type === \"linkmanName\") {\n if (!name || !name.replace(/^\\s+|\\s+$/gm, \"\")) return false;\n if (name.length > 20) return false;\n return true;\n } else if (type === \"linkmanPhone\") {\n if (!name || !validatePhone(name)) return false;\n return true;\n } else if (type === \"relationType\") {\n if (!name) return false;\n return true;\n }\n return false;\n },\n []\n );\n\n /**\n * 校验联系人是否合法,默认找到不合法的就退出循环\n */\n const validateCanSubmit = useMemo(() => {\n const finalData = formData;\n const length = finalData.length;\n const map: Record<string, string[]> = {\n linkmanName: [],\n linkmanPhone: [],\n relationValue: [],\n };\n let flag = true;\n\n /**\n * 每次循环formData,不符合直接break,退出循环\n */\n for (let index = 0; index < length; index++) {\n const isNameValid = validateForm(\n \"linkmanName\",\n finalData[index].linkmanName\n );\n if (!isNameValid) {\n flag = false;\n break;\n }\n const isPhoneValid = validateForm(\n \"linkmanPhone\",\n finalData[index].linkmanPhone\n );\n if (!isPhoneValid) {\n flag = false;\n break;\n }\n if (\n index !== 0 &&\n map.linkmanPhone.includes(finalData[index].linkmanPhone)\n ) {\n flag = false;\n break;\n }\n map.linkmanPhone.push(finalData[index].linkmanPhone);\n const isRelationValid = validateForm(\n \"relationType\",\n finalData[index].relationValue\n );\n if (!isRelationValid) {\n flag = false;\n break;\n }\n map.relationValue.push(finalData[index].relationValue);\n }\n if (map.relationValue.filter(item => item === \"MATE\").length >= 2) {\n flag = false;\n }\n\n return flag;\n }, [formData]);\n\n useEffect(() => {\n onChange?.(formData, validateCanSubmit);\n }, [formData, validateCanSubmit]);\n\n useImperativeHandle(\n fromRef,\n () => ({\n canSubmit: validateCanSubmit,\n setContacts(item, index) {\n setFormData(old => {\n old[index].linkmanName = item.linkmanName;\n old[index].linkmanPhone = item.linkmanPhone;\n return [...old];\n });\n onFormBlur(\"linkmanName\", index);\n onFormBlur(\"linkmanPhone\", index);\n },\n }),\n [validateCanSubmit]\n );\n\n /**\n * 重复校验\n */\n const validateDuplicate = (\n type: keyof LinkManItem,\n currentIndex\n ): { pass: boolean; message: string } => {\n const currentItem = formData[currentIndex];\n // const validStub: Record<\n // Exclude<keyof LinkManItem, \"relationType\">,\n // string[]\n // > = {\n // linkmanName: [],\n // linkmanPhone: [],\n // relationValue: [],\n // };\n\n for (let index = 0, length = formData.length; index < length; index++) {\n if (index === currentIndex) continue; // 不能跟自己比较\n const current = formData[index];\n if (type === \"linkmanPhone\") {\n if (\n currentItem.linkmanPhone !== \"\" &&\n current.linkmanPhone !== \"\" &&\n current.linkmanPhone === currentItem.linkmanPhone\n ) {\n // 如果没有重复需要清空错误信息\n return {\n pass: false,\n message: `手机号与第${index + 1}联系人号码重复,请修改`,\n };\n } else {\n // setErrMessage(old => {\n // old[index].linkmanPhone = \"\";\n // old[currentIndex].linkmanPhone = \"\";\n // return [...old];\n // });\n }\n } else if (type === \"relationValue\") {\n if (\n currentItem.relationValue !== \"\" &&\n current.relationValue === \"MATE\" &&\n currentItem.relationValue === \"MATE\"\n ) {\n return {\n pass: false,\n message: `关系与第${index + 1}联系人关系重复,请修改`,\n };\n } else {\n // setErrMessage(old => {\n // old[index].relationType = \"\";\n // old[currentIndex].relationType = \"\";\n // return [...old];\n // });\n }\n }\n }\n return { pass: true, message: \"\" };\n };\n\n /**\n * 联系人姓名改变\n */\n const onNameChange = useCallback((evt, index) => {\n const value =\n process.env.TARO_ENV === \"h5\" ? evt.target.value : evt.detail.value;\n const name = inputRange(value);\n setFormData(old => {\n old[index].linkmanName = name;\n return [...old];\n });\n onInputChange?.(\"linkmanName\", index);\n }, []);\n\n /**\n * 联系人手机号改变\n */\n const onPhoneChange = useCallback((evt, index) => {\n const value =\n process.env.TARO_ENV === \"h5\" ? evt.target.value : evt.detail.value;\n const phone = inputRange(value);\n setFormData(old => {\n old[index].linkmanPhone = phone;\n return [...old];\n });\n onInputChange?.(\"linkmanPhone\", index);\n }, []);\n\n /**\n * 输入框失去焦点做校验\n */\n const onFormBlur = useCallback(\n (type: keyof LinkManItem, index: number) => {\n const flag = validateForm(type, formData[index][type]); // 先做值的校验,再做重复校验\n if (!flag) {\n setErrMessage(old => {\n old[index][type] = errorMessageMap[type];\n return [...old];\n });\n return;\n }\n const { pass, message } = validateDuplicate(type, index);\n if (!pass) {\n setErrMessage(old => {\n old[index][type] = message;\n return [...old];\n });\n }\n onBlur?.(type, index);\n },\n [formData]\n );\n\n /**\n * 聚焦的时候设置错误信息为空\n */\n const onFormFocus = useCallback(\n (type: keyof LinkManItem, index: number) => {\n setErrMessage(old => {\n old[index][type] = \"\";\n return [...old];\n });\n },\n []\n );\n\n return (\n <View className=\"xh-linkman\">\n {formData.map((item, num) => (\n <View key={num} className=\"xh-linkman-item\">\n <View className=\"xh-linkman-title\">\n 第{LinkManTitleMap[num]}联系人\n </View>\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">姓名</View>\n <View className=\"xh-linkman-main-input-main\">\n {process.env.TARO_ENV === \"h5\" ? (\n <input\n className=\"xh-linkman-main-input-main-input\"\n type=\"text\"\n placeholder=\"紧急联系人姓名\"\n onChange={e => onNameChange(e, num)}\n value={item.linkmanName}\n onBlur={() => onFormBlur(\"linkmanName\", num)}\n onFocus={() => onFormFocus(\"linkmanName\", num)}\n />\n ) : (\n <Input\n placeholder=\"紧急联系人姓名\"\n className=\"xh-linkman-main-input-main-input\"\n onBlur={() => onFormBlur(\"linkmanName\", num)}\n value={item.linkmanName}\n type=\"text\"\n onInput={e => onNameChange(e, num)}\n onFocus={() => onFormFocus(\"linkmanName\", num)}\n />\n )}\n {errMessage[num].linkmanName && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].linkmanName}\n </View>\n )}\n </View>\n {showImportIcon && (\n <View\n className=\"xh-linkman-main-input-contacts\"\n onClick={() => onGetContacts?.(num)}\n ></View>\n )}\n </View>\n </View>\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">电话</View>\n <View className=\"xh-linkman-main-input-main\">\n {process.env.TARO_ENV === \"h5\" ? (\n <input\n className=\"xh-linkman-main-input-main-input\"\n type=\"tel\"\n placeholder=\"紧急联系人手机号\"\n onBlur={() => onFormBlur(\"linkmanPhone\", num)}\n maxLength={11}\n onChange={e => onPhoneChange(e, num)}\n value={item.linkmanPhone}\n onFocus={() => onFormFocus(\"linkmanPhone\", num)}\n />\n ) : (\n <Input\n placeholder=\"紧急联系人手机号\"\n className=\"xh-linkman-main-input-main-input\"\n type=\"number\"\n maxlength={11}\n onBlur={() => onFormBlur(\"linkmanPhone\", num)}\n value={item.linkmanPhone}\n onInput={e => onPhoneChange(e, num)}\n onFocus={() => onFormFocus(\"linkmanPhone\", num)}\n />\n )}\n {errMessage[num].linkmanPhone && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].linkmanPhone}\n </View>\n )}\n </View>\n </View>\n </View>\n <ActionSheet\n data={relations}\n title=\"选择与联系人的关系\"\n onConfirm={value => {\n setErrMessage(old => {\n old[num].relationType = \"\";\n return [...old];\n });\n setFormData(old => {\n old[num].relationType = value.text;\n old[num].relationValue = value.value;\n return [...old];\n });\n Promise.resolve().then(() => {\n const { pass, message } = validateDuplicate(\n \"relationValue\",\n num\n );\n if (!pass)\n setErrMessage(old => {\n old[num].relationType = message;\n return [...old];\n });\n onCheckRelation?.(value, num);\n });\n }}\n onCancel={() => onFormBlur(\"relationType\", num)}\n >\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">关系</View>\n <View className=\"xh-linkman-main-input-main\">\n {process.env.TARO_ENV === \"h5\" ? (\n <input\n type=\"text\"\n maxLength={11}\n className=\"xh-linkman-main-input-main-input\"\n readOnly\n placeholder=\"选择与联系人关系\"\n value={item.relationType}\n />\n ) : (\n <Input\n placeholder=\"选择与联系人关系\"\n className=\"xh-linkman-main-input-main-input\"\n type=\"digit\"\n maxlength={11}\n value={item.relationType}\n disabled\n />\n )}\n {errMessage[num].relationType && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].relationType}\n </View>\n )}\n </View>\n <View className=\"xh-linkman-main-input-arrow\"></View>\n </View>\n </View>\n </ActionSheet>\n </View>\n ))}\n </View>\n );\n }\n);\n\nexport default XHAddLinMan;\n"],"names":["LinkManTitleMap","errorMessageMap","linkmanName","linkmanPhone","relationType","defaultActionSheet","value","text","defaultShowImportIcon","process","env","TARO_ENV","window","navigator","userAgent","includes","XHAddLinMan","forwardRef","props","fromRef","linkManNum","_a","relations","onChange","onGetContacts","_b","showImportIcon","onBlur","onCheckRelation","onInputChange","_c","__read","useState","formData","setFormData","_d","errMessage","setErrMessage","useEffect","Array","fill","map","relationValue","validatePhone","useCallback","phone","test","validateForm","type","name","replace","length","validateCanSubmit","useMemo","finalData","flag","index","push","filter","item","useImperativeHandle","canSubmit","setContacts","old","__spreadArray","onFormBlur","validateDuplicate","currentIndex","currentItem","length_1","current","pass","message","concat","onNameChange","evt","target","detail","inputRange","onPhoneChange","onFormFocus","React","createElement","View","className","num","key","placeholder","e","onFocus","Input","onInput","onClick","maxLength","maxlength","ActionSheet","data","title","onConfirm","Promise","resolve","then","onCancel","readOnly","disabled"],"mappings":"wVAgCA,IAAMA,EAAkB,CACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAMIC,EAAkB,CACtBC,YAAa,WACbC,aAAc,YACdC,aAAc,aAGVC,EAAqB,CACzB,CACEC,MAAO,SACPC,KAAM,MAER,CACED,MAAO,SACPC,KAAM,MAER,CACED,MAAO,OACPC,KAAM,MAER,CACED,MAAO,WACPC,KAAM,MAER,CACED,MAAO,UACPC,KAAM,QAER,CACED,MAAO,UACPC,KAAM,MAER,CACED,MAAO,YACPC,KAAM,MAER,CACED,MAAO,YACPC,KAAM,MAER,CACED,MAAO,QACPC,KAAM,OAmBJC,EACqB,OAAzBC,QAAQC,IAAIC,UACRC,OAAOC,UAAUC,UAAUC,SAAS,QAGpCC,EAAcC,GAClB,SAACC,EAAOC,GAEJ,IAAAC,EAQEF,EAAKE,WAPPC,EAOEH,YAPFI,aAAYjB,EAAkBgB,EAC9BE,EAMEL,EANMK,SACRC,EAKEN,EAAKM,cAJPC,EAIEP,iBAJFQ,aAAiBlB,EAAqBiB,EACtCE,EAGET,SAFFU,EAEEV,EAAKU,gBADPC,EACEX,EAAKW,cAGHC,EAAAC,EAA0BC,EAAwB,IAAG,GAApDC,EAAQH,EAAA,GAAEI,OAGXC,EAAAJ,EAA8BC,EAElC,IAAG,GAFEI,EAAUD,EAAA,GAAEE,OAInBC,GAAU,WACRJ,EACEK,MAAMnB,GACHoB,KAAK,GACLC,KAAI,WACH,MAAO,CACLvC,YAAa,GACbC,aAAc,GACdC,aAAc,GACdsC,cAAe,GAElB,KAELL,EACEE,MAAMnB,GACHoB,KAAK,GACLC,KAAI,WACH,MAAO,CACLvC,YAAa,GACbC,aAAc,GACdC,aAAc,GAEjB,IAEP,GAAG,CAACgB,IAKJ,IAAMuB,EAAgBC,GAAY,SAACC,GACjC,QAAI,UAAUC,KAAKD,EAIpB,GAAE,IAKGE,EAAeH,GACnB,SAACI,EAAyBC,GACxB,MAAa,gBAATD,KACGC,IAASA,EAAKC,QAAQ,cAAe,QACtCD,EAAKE,OAAS,IAEA,iBAATH,KACJC,IAASN,EAAcM,IAEV,iBAATD,KACJC,CAIR,GACD,IAMIG,EAAoBC,GAAQ,WAahC,IAZA,IAAMC,EAAYrB,EACZkB,EAASG,EAAUH,OACnBV,EAAgC,CACpCvC,YAAa,GACbC,aAAc,GACduC,cAAe,IAEba,GAAO,EAKFC,EAAQ,EAAGA,EAAQL,EAAQK,IAAS,CAK3C,IAJoBT,EAClB,cACAO,EAAUE,GAAOtD,aAED,CAChBqD,GAAO,EACP,KACD,CAKD,IAJqBR,EACnB,eACAO,EAAUE,GAAOrD,cAEA,CACjBoD,GAAO,EACP,KACD,CACD,GACY,IAAVC,GACAf,EAAItC,aAAaY,SAASuC,EAAUE,GAAOrD,cAC3C,CACAoD,GAAO,EACP,KACD,CAMD,GALAd,EAAItC,aAAasD,KAAKH,EAAUE,GAAOrD,eACf4C,EACtB,eACAO,EAAUE,GAAOd,eAEG,CACpBa,GAAO,EACP,KACD,CACDd,EAAIC,cAAce,KAAKH,EAAUE,GAAOd,cACzC,CAKD,OAJID,EAAIC,cAAcgB,QAAO,SAAAC,GAAQ,MAAS,SAATA,KAAiBR,QAAU,IAC9DI,GAAO,GAGFA,CACT,GAAG,CAACtB,IAEJK,GAAU,WACRf,SAAAA,EAAWU,EAAUmB,EACvB,GAAG,CAACnB,EAAUmB,IAEdQ,EACEzC,GACA,WAAM,MAAC,CACL0C,UAAWT,EACXU,YAAW,SAACH,EAAMH,GAChBtB,GAAY,SAAA6B,GAGV,OAFAA,EAAIP,GAAOtD,YAAcyD,EAAKzD,YAC9B6D,EAAIP,GAAOrD,aAAewD,EAAKxD,aAC/B6D,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,IACAE,EAAW,cAAeT,GAC1BS,EAAW,eAAgBT,EAC5B,EACD,GACF,CAACJ,IAMH,IAAMc,EAAoB,SACxBlB,EACAmB,GAYA,IAVA,IAAMC,EAAcnC,EAASkC,GAUpBX,EAAQ,EAAGa,EAASpC,EAASkB,OAAQK,EAAQa,EAAQb,IAC5D,GAAIA,IAAUW,EAAd,CACA,IAAMG,EAAUrC,EAASuB,GACzB,GAAa,iBAATR,GACF,GAC+B,KAA7BoB,EAAYjE,cACa,KAAzBmE,EAAQnE,cACRmE,EAAQnE,eAAiBiE,EAAYjE,aAGrC,MAAO,CACLoE,MAAM,EACNC,QAAS,QAAAC,OAAQjB,EAAQ,EAAc,qBAStC,GAAa,kBAATR,GAEuB,KAA9BoB,EAAY1B,eACc,SAA1B4B,EAAQ5B,eACsB,SAA9B0B,EAAY1B,cAEZ,MAAO,CACL6B,MAAM,EACNC,QAAS,OAAAC,OAAOjB,EAAQ,EAAc,eA5BP,CAuCvC,MAAO,CAAEe,MAAM,EAAMC,QAAS,GAChC,EAKME,EAAe9B,GAAY,SAAC+B,EAAKnB,GACrC,IAAMlD,EACqB,OAAzBG,QAAQC,IAAIC,SAAoBgE,EAAIC,OAAOtE,MAAQqE,EAAIE,OAAOvE,MAC1D2C,EAAO6B,EAAWxE,GACxB4B,GAAY,SAAA6B,GAEV,OADAA,EAAIP,GAAOtD,YAAc+C,EACzBe,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,IACAlC,SAAAA,EAAgB,cAAe2B,EAChC,GAAE,IAKGuB,EAAgBnC,GAAY,SAAC+B,EAAKnB,GACtC,IAAMlD,EACqB,OAAzBG,QAAQC,IAAIC,SAAoBgE,EAAIC,OAAOtE,MAAQqE,EAAIE,OAAOvE,MAC1DuC,EAAQiC,EAAWxE,GACzB4B,GAAY,SAAA6B,GAEV,OADAA,EAAIP,GAAOrD,aAAe0C,EAC1BmB,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,IACAlC,SAAAA,EAAgB,eAAgB2B,EACjC,GAAE,IAKGS,EAAarB,GACjB,SAACI,EAAyBQ,GAExB,GADaT,EAAaC,EAAMf,EAASuB,GAAOR,IAChD,CAOM,IAAA3B,EAAoB6C,EAAkBlB,EAAMQ,GAA1Ce,EAAIlD,EAAAkD,KAAEC,YACTD,GACHlC,GAAc,SAAA0B,GAEZ,OADAA,EAAIP,GAAOR,GAAQwB,EACnBR,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,IAEFpC,SAAAA,EAASqB,EAAMQ,EARd,MALCnB,GAAc,SAAA0B,GAEZ,OADAA,EAAIP,GAAOR,GAAQ/C,EAAgB+C,GACnCgB,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,GAWJ,GACA,CAAC9B,IAMG+C,EAAcpC,GAClB,SAACI,EAAyBQ,GACxBnB,GAAc,SAAA0B,GAEZ,OADAA,EAAIP,GAAOR,GAAQ,GACnBgB,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,GACD,GACD,IAGF,OACEkB,EAAAC,cAACC,EAAI,CAACC,UAAU,cACbnD,EAASQ,KAAI,SAACkB,EAAM0B,GAAQ,OAC3BJ,EAAAC,cAACC,EAAI,CAACG,IAAKD,EAAKD,UAAU,mBACxBH,EAAAC,cAACC,EAAI,CAACC,UAAU,wBACZpF,EAAgBqF,GACb,OACPJ,EAAAC,cAACC,EAAI,CAACC,UAAU,mBACdH,EAAAC,cAACC,EAAI,CAACC,UAAU,yBACdH,EAAAC,cAACC,EAAI,CAACC,UAAU,+BAAuC,MACvDH,EAAAC,cAACC,EAAI,CAACC,UAAU,8BACY,OAAzB3E,QAAQC,IAAIC,SACXsE,EACEC,cAAA,QAAA,CAAAE,UAAU,mCACVpC,KAAK,OACLuC,YAAY,UACZhE,SAAU,SAAAiE,GAAK,OAAAd,EAAac,EAAGH,EAAhB,EACf/E,MAAOqD,EAAKzD,YACZyB,OAAQ,WAAM,OAAAsC,EAAW,cAAeoB,IACxCI,QAAS,WAAM,OAAAT,EAAY,cAAeK,EAAI,IAGhDJ,EAAAC,cAACQ,EAAK,CACJH,YAAY,UACZH,UAAU,mCACVzD,OAAQ,WAAM,OAAAsC,EAAW,cAAeoB,EAA1B,EACd/E,MAAOqD,EAAKzD,YACZ8C,KAAK,OACL2C,QAAS,SAAAH,GAAK,OAAAd,EAAac,EAAGH,EAAhB,EACdI,QAAS,WAAM,OAAAT,EAAY,cAAeK,EAAI,IAGjDjD,EAAWiD,GAAKnF,aACf+E,EAACC,cAAAC,EAAK,CAAAC,UAAU,kCACbhD,EAAWiD,GAAKnF,cAItBwB,GACCuD,EAAAC,cAACC,EAAI,CACHC,UAAU,iCACVQ,QAAS,WAAM,OAAApE,aAAA,EAAAA,EAAgB6D,EAAI,MAK3CJ,EAAAC,cAACC,EAAI,CAACC,UAAU,mBACdH,EAAAC,cAACC,EAAI,CAACC,UAAU,yBACdH,EAAAC,cAACC,EAAI,CAACC,UAAU,+BAAuC,MACvDH,EAAAC,cAACC,EAAI,CAACC,UAAU,8BACY,OAAzB3E,QAAQC,IAAIC,SACXsE,EAAAC,cAAA,QAAA,CACEE,UAAU,mCACVpC,KAAK,MACLuC,YAAY,WACZ5D,OAAQ,WAAM,OAAAsC,EAAW,eAAgBoB,EAA3B,EACdQ,UAAW,GACXtE,SAAU,SAAAiE,GAAK,OAAAT,EAAcS,EAAGH,EAAI,EACpC/E,MAAOqD,EAAKxD,aACZsF,QAAS,WAAM,OAAAT,EAAY,eAAgBK,EAAI,IAGjDJ,EAACC,cAAAQ,EACC,CAAAH,YAAY,WACZH,UAAU,mCACVpC,KAAK,SACL8C,UAAW,GACXnE,OAAQ,WAAM,OAAAsC,EAAW,eAAgBoB,EAAI,EAC7C/E,MAAOqD,EAAKxD,aACZwF,QAAS,SAAAH,GAAK,OAAAT,EAAcS,EAAGH,IAC/BI,QAAS,WAAM,OAAAT,EAAY,eAAgBK,EAAI,IAGlDjD,EAAWiD,GAAKlF,cACf8E,EAAAC,cAACC,EAAI,CAACC,UAAU,kCACbhD,EAAWiD,GAAKlF,iBAM3B8E,EAAAC,cAACa,EAAW,CACVC,KAAM1E,EACN2E,MAAM,YACNC,UAAW,SAAA5F,GACT+B,GAAc,SAAA0B,GAEZ,OADAA,EAAIsB,GAAKjF,aAAe,GACxB4D,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,IACA7B,GAAY,SAAA6B,GAGV,OAFAA,EAAIsB,GAAKjF,aAAeE,EAAMC,KAC9BwD,EAAIsB,GAAK3C,cAAgBpC,EAAMA,MAC/B0D,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,IACAoC,QAAQC,UAAUC,MAAK,WACf,IAAAhF,EAAoB6C,EACxB,gBACAmB,GAFMd,EAAIlD,EAAAkD,KAAEC,YAITD,GACHlC,GAAc,SAAA0B,GAEZ,OADAA,EAAIsB,GAAKjF,aAAeoE,EACxBR,EAAA,GAAAjC,EAAWgC,IAAK,EAClB,IACFnC,SAAAA,EAAkBtB,EAAO+E,EAC3B,GACF,EACAiB,SAAU,WAAM,OAAArC,EAAW,eAAgBoB,KAE3CJ,EAAAC,cAACC,EAAI,CAACC,UAAU,mBACdH,EAAAC,cAACC,EAAI,CAACC,UAAU,yBACdH,EAAAC,cAACC,EAAI,CAACC,UAAU,+BAAuC,MACvDH,EAAAC,cAACC,EAAI,CAACC,UAAU,8BACY,OAAzB3E,QAAQC,IAAIC,SACXsE,EACEC,cAAA,QAAA,CAAAlC,KAAK,OACL6C,UAAW,GACXT,UAAU,mCACVmB,UACA,EAAAhB,YAAY,WACZjF,MAAOqD,EAAKvD,eAGd6E,EAACC,cAAAQ,EACC,CAAAH,YAAY,WACZH,UAAU,mCACVpC,KAAK,QACL8C,UAAW,GACXxF,MAAOqD,EAAKvD,aACZoG,cAGHpE,EAAWiD,GAAKjF,cACf6E,EAACC,cAAAC,EAAK,CAAAC,UAAU,kCACbhD,EAAWiD,GAAKjF,eAIvB6E,EAAAC,cAACC,EAAK,CAAAC,UAAU,mCAKzB,IAGP"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/LinkMan/index.tsx"],"sourcesContent":["import { View, Input } from \"@tarojs/components\";\nimport React, {\n useCallback,\n useEffect,\n useState,\n forwardRef,\n useImperativeHandle,\n useMemo,\n} from \"react\";\nimport { inputRange } from \"@/utils\";\nimport classNames from \"classnames\";\nimport ActionSheet from \"../ActionSheet\";\n\nimport \"./index.scss\";\n\nexport type AddLinkManProps = {\n linkManNum: number;\n onChange?: (data: LinkManItem[], pass: boolean) => void;\n onGetContacts?: (index: number) => void;\n showImportIcon?: boolean;\n onBlur?: (type: keyof LinkManItem, index: number) => void;\n onCheckRelation?: (\n value: { text: string; value: string },\n index: number\n ) => void;\n onInputChange?: (type: \"linkmanName\" | \"linkmanPhone\", index: number) => void;\n /**\n * 可以选择的关系\n */\n relations?: { text: string; value: string }[];\n};\n\nconst LinkManTitleMap = [\n \"一\",\n \"二\",\n \"三\",\n \"四\",\n \"五\",\n \"六\",\n \"七\",\n \"八\",\n \"九\",\n \"十\",\n];\n\n/**\n * 错误信息提示\n */\nconst errorMessageMap = {\n linkmanName: \"请输入联系人姓名\",\n linkmanPhone: \"请输入正确的手机号\",\n relationType: \"请选择与联系人关系\",\n};\n\nconst defaultActionSheet = [\n {\n value: \"FATHER\",\n text: \"父亲\",\n },\n {\n value: \"MOTHER\",\n text: \"母亲\",\n },\n {\n value: \"MATE\",\n text: \"配偶\",\n },\n {\n value: \"CHILDREN\",\n text: \"子女\",\n },\n {\n value: \"SIBLING\",\n text: \"兄弟姐妹\",\n },\n {\n value: \"FRIENDS\",\n text: \"朋友\",\n },\n {\n value: \"COLLEAGUE\",\n text: \"同事\",\n },\n {\n value: \"RELATIVES\",\n text: \"亲戚\",\n },\n {\n value: \"OTHER\",\n text: \"其他\",\n },\n];\n\nexport type LinkManItem = {\n linkmanName: string;\n linkmanPhone: string;\n relationType: string;\n relationValue: string;\n};\n\nexport type LinkManRef = {\n canSubmit: boolean;\n setContacts: (\n item: Pick<LinkManItem, \"linkmanName\" | \"linkmanPhone\">,\n index: number\n ) => void;\n};\n\nconst defaultShowImportIcon =\n process.env.TARO_ENV === \"h5\"\n ? window.navigator.userAgent.includes(\"xhqb\")\n : true;\n\nconst XHAddLinMan = forwardRef<LinkManRef, AddLinkManProps>(\n (props, fromRef) => {\n const {\n linkManNum,\n relations = defaultActionSheet,\n onChange,\n onGetContacts,\n showImportIcon = defaultShowImportIcon,\n onBlur,\n onCheckRelation,\n onInputChange,\n } = props;\n\n // form信息\n const [formData, setFormData] = useState<LinkManItem[]>([]);\n\n // 错误提示语信息\n const [errMessage, setErrMessage] = useState<\n Omit<LinkManItem, \"relationValue\">[]\n >([]);\n\n useEffect(() => {\n setFormData(\n Array(linkManNum)\n .fill(1)\n .map(() => {\n return {\n linkmanName: \"\",\n linkmanPhone: \"\",\n relationType: \"\",\n relationValue: \"\",\n };\n })\n );\n setErrMessage(\n Array(linkManNum)\n .fill(1)\n .map(() => {\n return {\n linkmanName: \"\",\n linkmanPhone: \"\",\n relationType: \"\",\n };\n })\n );\n }, [linkManNum]);\n\n /**\n * 校验手机号\n */\n const validatePhone = useCallback((phone: string) => {\n if (/1\\d{10}/.test(phone)) {\n return true;\n }\n return false;\n }, []);\n\n /**\n * 非空校验\n */\n const validateForm = useCallback(\n (type: keyof LinkManItem, name: string) => {\n if (type === \"linkmanName\") {\n if (!name || !name.replace(/^\\s+|\\s+$/gm, \"\")) return false;\n if (name.length > 20) return false;\n return true;\n } else if (type === \"linkmanPhone\") {\n if (!name || !validatePhone(name)) return false;\n return true;\n } else if (type === \"relationType\") {\n if (!name) return false;\n return true;\n }\n return false;\n },\n []\n );\n\n /**\n * 校验联系人是否合法,默认找到不合法的就退出循环\n */\n const validateCanSubmit = useMemo(() => {\n const finalData = formData;\n const length = finalData.length;\n const map: Record<string, string[]> = {\n linkmanName: [],\n linkmanPhone: [],\n relationValue: [],\n };\n let flag = true;\n\n /**\n * 每次循环formData,不符合直接break,退出循环\n */\n for (let index = 0; index < length; index++) {\n const isNameValid = validateForm(\n \"linkmanName\",\n finalData[index].linkmanName\n );\n if (!isNameValid) {\n flag = false;\n break;\n }\n const isPhoneValid = validateForm(\n \"linkmanPhone\",\n finalData[index].linkmanPhone\n );\n if (!isPhoneValid) {\n flag = false;\n break;\n }\n if (\n index !== 0 &&\n map.linkmanPhone.includes(finalData[index].linkmanPhone)\n ) {\n flag = false;\n break;\n }\n map.linkmanPhone.push(finalData[index].linkmanPhone);\n const isRelationValid = validateForm(\n \"relationType\",\n finalData[index].relationValue\n );\n if (!isRelationValid) {\n flag = false;\n break;\n }\n map.relationValue.push(finalData[index].relationValue);\n }\n if (map.relationValue.filter(item => item === \"MATE\").length >= 2) {\n flag = false;\n }\n\n return flag;\n }, [formData]);\n\n useEffect(() => {\n onChange?.(formData, validateCanSubmit);\n }, [formData, validateCanSubmit]);\n\n useImperativeHandle(\n fromRef,\n () => ({\n canSubmit: validateCanSubmit,\n setContacts(item, index) {\n setFormData(old => {\n old[index].linkmanName = item.linkmanName;\n old[index].linkmanPhone = item.linkmanPhone;\n return [...old];\n });\n onFormBlur(\"linkmanName\", index);\n onFormBlur(\"linkmanPhone\", index);\n },\n }),\n [validateCanSubmit]\n );\n\n /**\n * 重复校验\n */\n const validateDuplicate = (\n type: keyof LinkManItem,\n currentIndex\n ): { pass: boolean; message: string } => {\n const currentItem = formData[currentIndex];\n // const validStub: Record<\n // Exclude<keyof LinkManItem, \"relationType\">,\n // string[]\n // > = {\n // linkmanName: [],\n // linkmanPhone: [],\n // relationValue: [],\n // };\n\n for (let index = 0, length = formData.length; index < length; index++) {\n if (index === currentIndex) continue; // 不能跟自己比较\n const current = formData[index];\n if (type === \"linkmanPhone\") {\n if (\n currentItem.linkmanPhone !== \"\" &&\n current.linkmanPhone !== \"\" &&\n current.linkmanPhone === currentItem.linkmanPhone\n ) {\n // 如果没有重复需要清空错误信息\n return {\n pass: false,\n message: `手机号与第${index + 1}联系人号码重复,请修改`,\n };\n } else {\n // setErrMessage(old => {\n // old[index].linkmanPhone = \"\";\n // old[currentIndex].linkmanPhone = \"\";\n // return [...old];\n // });\n }\n } else if (type === \"relationValue\") {\n if (\n currentItem.relationValue !== \"\" &&\n current.relationValue === \"MATE\" &&\n currentItem.relationValue === \"MATE\"\n ) {\n return {\n pass: false,\n message: `关系与第${index + 1}联系人关系重复,请修改`,\n };\n } else {\n // setErrMessage(old => {\n // old[index].relationType = \"\";\n // old[currentIndex].relationType = \"\";\n // return [...old];\n // });\n }\n }\n }\n return { pass: true, message: \"\" };\n };\n\n /**\n * 联系人姓名改变\n */\n const onNameChange = useCallback((evt, index) => {\n const value =\n process.env.TARO_ENV === \"h5\" ? evt.target.value : evt.detail.value;\n const name = inputRange(value);\n setFormData(old => {\n old[index].linkmanName = name;\n return [...old];\n });\n onInputChange?.(\"linkmanName\", index);\n }, []);\n\n /**\n * 联系人手机号改变\n */\n const onPhoneChange = useCallback((evt, index) => {\n const value =\n process.env.TARO_ENV === \"h5\" ? evt.target.value : evt.detail.value;\n const phone = inputRange(value);\n setFormData(old => {\n old[index].linkmanPhone = phone;\n return [...old];\n });\n onInputChange?.(\"linkmanPhone\", index);\n }, []);\n\n /**\n * 输入框失去焦点做校验\n */\n const onFormBlur = useCallback(\n (type: keyof LinkManItem, index: number) => {\n const flag = validateForm(type, formData[index][type]); // 先做值的校验,再做重复校验\n if (!flag) {\n setErrMessage(old => {\n old[index][type] = errorMessageMap[type];\n return [...old];\n });\n return;\n }\n const { pass, message } = validateDuplicate(type, index);\n if (!pass) {\n setErrMessage(old => {\n old[index][type] = message;\n return [...old];\n });\n }\n onBlur?.(type, index);\n },\n [formData]\n );\n\n /**\n * 聚焦的时候设置错误信息为空\n */\n const onFormFocus = useCallback(\n (type: keyof LinkManItem, index: number) => {\n setErrMessage(old => {\n old[index][type] = \"\";\n return [...old];\n });\n },\n []\n );\n\n return (\n <View className=\"xh-linkman\">\n {formData.map((item, num) => (\n <View key={num} className=\"xh-linkman-item\">\n <View className=\"xh-linkman-title\">\n 第{LinkManTitleMap[num]}联系人\n </View>\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">姓名</View>\n <View className=\"xh-linkman-main-input-main\">\n {process.env.TARO_ENV === \"h5\" ? (\n <input\n className=\"xh-linkman-main-input-main-input\"\n type=\"text\"\n placeholder=\"紧急联系人姓名\"\n onChange={e => onNameChange(e, num)}\n value={item.linkmanName}\n onBlur={() => onFormBlur(\"linkmanName\", num)}\n onFocus={() => onFormFocus(\"linkmanName\", num)}\n />\n ) : (\n <Input\n placeholder=\"紧急联系人姓名\"\n className=\"xh-linkman-main-input-main-input\"\n onBlur={() => onFormBlur(\"linkmanName\", num)}\n value={item.linkmanName}\n type=\"text\"\n onInput={e => onNameChange(e, num)}\n onFocus={() => onFormFocus(\"linkmanName\", num)}\n />\n )}\n {errMessage[num].linkmanName && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].linkmanName}\n </View>\n )}\n </View>\n {showImportIcon && (\n <View\n className=\"xh-linkman-main-input-contacts\"\n onClick={() => onGetContacts?.(num)}\n ></View>\n )}\n </View>\n </View>\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">电话</View>\n <View className=\"xh-linkman-main-input-main\">\n {process.env.TARO_ENV === \"h5\" ? (\n <input\n className=\"xh-linkman-main-input-main-input\"\n type=\"tel\"\n placeholder=\"紧急联系人手机号\"\n onBlur={() => onFormBlur(\"linkmanPhone\", num)}\n maxLength={11}\n onChange={e => onPhoneChange(e, num)}\n value={item.linkmanPhone}\n onFocus={() => onFormFocus(\"linkmanPhone\", num)}\n />\n ) : (\n <Input\n placeholder=\"紧急联系人手机号\"\n className=\"xh-linkman-main-input-main-input\"\n type=\"number\"\n maxlength={11}\n onBlur={() => onFormBlur(\"linkmanPhone\", num)}\n value={item.linkmanPhone}\n onInput={e => onPhoneChange(e, num)}\n onFocus={() => onFormFocus(\"linkmanPhone\", num)}\n />\n )}\n {errMessage[num].linkmanPhone && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].linkmanPhone}\n </View>\n )}\n </View>\n </View>\n </View>\n <ActionSheet\n data={relations}\n title=\"选择与联系人的关系\"\n onConfirm={value => {\n setErrMessage(old => {\n old[num].relationType = \"\";\n return [...old];\n });\n setFormData(old => {\n old[num].relationType = value.text;\n old[num].relationValue = value.value;\n return [...old];\n });\n Promise.resolve().then(() => {\n const { pass, message } = validateDuplicate(\n \"relationValue\",\n num\n );\n if (!pass)\n setErrMessage(old => {\n old[num].relationType = message;\n return [...old];\n });\n onCheckRelation?.(value, num);\n });\n }}\n onCancel={() => onFormBlur(\"relationType\", num)}\n >\n <View className=\"xh-linkman-main\">\n <View className=\"xh-linkman-main-input\">\n <View className=\"xh-linkman-main-input-label\">关系</View>\n <View className=\"xh-linkman-main-input-main\">\n <View\n className={classNames(\n \"xh-linkman-main-input-main-input\",\n {\n placeholder: !item.relationValue,\n tt: process.env.TARO_ENV === \"tt\",\n }\n )}\n >\n {item.relationType || \"选择与联系人关系\"}\n </View>\n {errMessage[num].relationType && (\n <View className=\"xh-linkman-main-input-main-err\">\n {errMessage[num].relationType}\n </View>\n )}\n </View>\n <View className=\"xh-linkman-main-input-arrow\"></View>\n </View>\n </View>\n </ActionSheet>\n </View>\n ))}\n </View>\n );\n }\n);\n\nexport default XHAddLinMan;\n"],"names":["LinkManTitleMap","errorMessageMap","linkmanName","linkmanPhone","relationType","defaultActionSheet","value","text","defaultShowImportIcon","process","env","TARO_ENV","window","navigator","userAgent","includes","XHAddLinMan","forwardRef","props","fromRef","linkManNum","_a","relations","onChange","onGetContacts","_b","showImportIcon","onBlur","onCheckRelation","onInputChange","_c","__read","useState","formData","setFormData","_d","errMessage","setErrMessage","useEffect","Array","fill","map","relationValue","validatePhone","useCallback","phone","test","validateForm","type","name","replace","length","validateCanSubmit","useMemo","finalData","flag","index","push","filter","item","useImperativeHandle","canSubmit","setContacts","old","__spreadArray","onFormBlur","validateDuplicate","currentIndex","currentItem","length_1","current","pass","message","concat","onNameChange","evt","target","detail","inputRange","onPhoneChange","onFormFocus","React","createElement","View","className","num","key","placeholder","e","onFocus","Input","onInput","onClick","maxLength","maxlength","ActionSheet","data","title","onConfirm","Promise","resolve","then","onCancel","classNames","tt"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{useEffect as t}from"react";import o from"react-dom";import n from"classnames";import{View as r}from"@tarojs/components";import c from"../Animated/Slide/index.js";import m from"../Animated/Fade/index.js";import i from"../Mask/index.js";var d={top:"down",bottom:"up",left:"right",right:"left"},
|
|
1
|
+
import e,{useEffect as t}from"react";import o from"react-dom";import n from"classnames";import{View as r}from"@tarojs/components";import c from"../Animated/Slide/index.js";import m from"../Animated/Fade/index.js";import i from"../Mask/index.js";var d={top:"down",bottom:"up",left:"right",right:"left"},a=function(a){var p=a.visible,l=a.position,s=void 0===l?"bottom":l,u=a.children,f=a.onClose,h=a.className,v=d[s],b=n("xh-popup-content",{"xh-popup-content-left":"left"===s,"xh-popup-content-right":"right"===s,"xh-popup-content-top":"top"===s,"xh-popup-content-bottom":"bottom"===s}),y=function(e){e.stopPropagation(),e.preventDefault()};function E(){f&&f()}if(t((function(){return p?(document.body.style.touchAction="none",document.body.addEventListener("touchmove",y),document.body.style.overflowY="hidden"):(document.body.style.touchAction="",document.body.removeEventListener("touchmove",y),document.body.style.overflowY="auto"),function(){document.body.style.touchAction="",document.body.style.overflowY="auto",document.body.removeEventListener("touchmove",y)}}),[p]),"h5"!==process.env.TARO_ENV){var x=n("xh-popup",h,p?"visible":"hidden");return e.createElement(r,{className:x},e.createElement(i,{onClick:E}),e.createElement(r,{className:b},u))}return o.createPortal(e.createElement(m,{in:p},e.createElement("div",{className:n("xh-popup",h)},e.createElement(i,{onClick:E}),e.createElement(c,{direction:v,in:p},e.createElement("div",{className:b},u)))),document.body)};export{a as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Popup/index.tsx"],"sourcesContent":["import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport { Fade, Slide } from \"../Animated\";\nimport { SlideDirection } from \"../Animated/Slide\";\nimport Mask from \"../Mask\";\n\nimport \"./index.scss\";\n\nexport type PopupPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface PopupProps extends PropsWithChildren<{}> {\n visible: boolean;\n position?: PopupPosition;\n onClose?: () => void;\n}\n\nconst positionMap = {\n top: \"down\",\n bottom: \"up\",\n left: \"right\",\n right: \"left\",\n};\n\nconst Popup: FC<PopupProps> = props => {\n const { visible, position = \"bottom\", children, onClose } = props;\n const direction = positionMap[position] as SlideDirection;\n const cls = classNames(\"xh-popup-content\", {\n \"xh-popup-content-left\": position === \"left\",\n \"xh-popup-content-right\": position === \"right\",\n \"xh-popup-content-top\": position === \"top\",\n \"xh-popup-content-bottom\": position === \"bottom\",\n });\n\n const preventSTH = (e: TouchEvent) => {\n e.stopPropagation();\n e.preventDefault();\n };\n\n useEffect(() => {\n if (visible) {\n document.body.style.touchAction = \"none\";\n document.body.addEventListener(\"touchmove\", preventSTH);\n document.body.style.overflowY = \"hidden\";\n } else {\n document.body.style.touchAction = \"\";\n document.body.removeEventListener(\"touchmove\", preventSTH);\n document.body.style.overflowY = \"auto\";\n }\n\n return () => {\n document.body.style.touchAction = \"\";\n document.body.style.overflowY = \"auto\";\n document.body.removeEventListener(\"touchmove\", preventSTH);\n };\n }, [visible]);\n\n function handleClickOnMask(): void {\n onClose && onClose();\n }\n if (process.env.TARO_ENV !== \"h5\") {\n const minicls = classNames(\"xh-popup\"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Popup/index.tsx"],"sourcesContent":["import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport { Fade, Slide } from \"../Animated\";\nimport { SlideDirection } from \"../Animated/Slide\";\nimport Mask from \"../Mask\";\n\nimport \"./index.scss\";\n\nexport type PopupPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface PopupProps extends PropsWithChildren<{}> {\n visible: boolean;\n position?: PopupPosition;\n className?: string;\n onClose?: () => void;\n}\n\nconst positionMap = {\n top: \"down\",\n bottom: \"up\",\n left: \"right\",\n right: \"left\",\n};\n\nconst Popup: FC<PopupProps> = props => {\n const { visible, position = \"bottom\", children, onClose, className } = props;\n const direction = positionMap[position] as SlideDirection;\n const cls = classNames(\"xh-popup-content\", {\n \"xh-popup-content-left\": position === \"left\",\n \"xh-popup-content-right\": position === \"right\",\n \"xh-popup-content-top\": position === \"top\",\n \"xh-popup-content-bottom\": position === \"bottom\",\n });\n\n const preventSTH = (e: TouchEvent) => {\n e.stopPropagation();\n e.preventDefault();\n };\n\n useEffect(() => {\n if (visible) {\n document.body.style.touchAction = \"none\";\n document.body.addEventListener(\"touchmove\", preventSTH);\n document.body.style.overflowY = \"hidden\";\n } else {\n document.body.style.touchAction = \"\";\n document.body.removeEventListener(\"touchmove\", preventSTH);\n document.body.style.overflowY = \"auto\";\n }\n\n return () => {\n document.body.style.touchAction = \"\";\n document.body.style.overflowY = \"auto\";\n document.body.removeEventListener(\"touchmove\", preventSTH);\n };\n }, [visible]);\n\n function handleClickOnMask(): void {\n onClose && onClose();\n }\n if (process.env.TARO_ENV !== \"h5\") {\n const minicls = classNames(\n \"xh-popup\",\n className,\n visible ? \"visible\" : \"hidden\"\n );\n return (\n <View className={minicls}>\n <Mask onClick={handleClickOnMask} />\n <View className={cls}>{children}</View>\n </View>\n );\n }\n return ReactDOM.createPortal(\n <Fade in={visible}>\n <div className={classNames(\"xh-popup\", className)}>\n <Mask onClick={handleClickOnMask} />\n <Slide direction={direction} in={visible}>\n <div className={cls}>{children}</div>\n </Slide>\n </div>\n </Fade>,\n document.body\n );\n};\n\nexport default Popup;\n"],"names":["positionMap","top","bottom","left","right","Popup","props","visible","_a","position","children","onClose","className","direction","cls","classNames","preventSTH","e","stopPropagation","preventDefault","handleClickOnMask","useEffect","document","body","style","touchAction","addEventListener","overflowY","removeEventListener","process","env","TARO_ENV","minicls","React","createElement","View","Mask","onClick","ReactDOM","createPortal","Fade","in","Slide"],"mappings":"qPAoBA,IAAMA,EAAc,CAClBC,IAAK,OACLC,OAAQ,KACRC,KAAM,QACNC,MAAO,QAGHC,EAAwB,SAAAC,GACpB,IAAAC,EAA+DD,EAAKC,QAA3DC,EAAsDF,EAAKG,SAA3DA,OAAW,IAAAD,EAAA,SAAQA,EAAEE,EAAiCJ,EAAKI,SAA5BC,EAAuBL,EAAhBK,QAAEC,EAAcN,EAAKM,UACtEC,EAAYb,EAAYS,GACxBK,EAAMC,EAAW,mBAAoB,CACzC,wBAAsC,SAAbN,EACzB,yBAAuC,UAAbA,EAC1B,uBAAqC,QAAbA,EACxB,0BAAwC,WAAbA,IAGvBO,EAAa,SAACC,GAClBA,EAAEC,kBACFD,EAAEE,gBACJ,EAoBA,SAASC,IACPT,GAAWA,GACZ,CACD,GArBAU,GAAU,WAWR,OAVId,GACFe,SAASC,KAAKC,MAAMC,YAAc,OAClCH,SAASC,KAAKG,iBAAiB,YAAaV,GAC5CM,SAASC,KAAKC,MAAMG,UAAY,WAEhCL,SAASC,KAAKC,MAAMC,YAAc,GAClCH,SAASC,KAAKK,oBAAoB,YAAaZ,GAC/CM,SAASC,KAAKC,MAAMG,UAAY,QAG3B,WACLL,SAASC,KAAKC,MAAMC,YAAc,GAClCH,SAASC,KAAKC,MAAMG,UAAY,OAChCL,SAASC,KAAKK,oBAAoB,YAAaZ,EACjD,CACF,GAAG,CAACT,IAKyB,OAAzBsB,QAAQC,IAAIC,SAAmB,CACjC,IAAMC,EAAUjB,EACd,WACAH,EACAL,EAAU,UAAY,UAExB,OACE0B,EAACC,cAAAC,EAAK,CAAAvB,UAAWoB,GACfC,EAAAC,cAACE,EAAI,CAACC,QAASjB,IACfa,EAACC,cAAAC,EAAK,CAAAvB,UAAWE,GAAMJ,GAG5B,CACD,OAAO4B,EAASC,aACdN,gBAACO,EAAI,CAACC,GAAIlC,GACR0B,EAAAC,cAAA,MAAA,CAAKtB,UAAWG,EAAW,WAAYH,IACrCqB,EAAAC,cAACE,EAAI,CAACC,QAASjB,IACfa,EAACC,cAAAQ,GAAM7B,UAAWA,EAAW4B,GAAIlC,GAC/B0B,EAAAC,cAAA,MAAA,CAAKtB,UAAWE,GAAMJ,MAI5BY,SAASC,KAEb"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import t from"classnames";import{View as r}from"@tarojs/components";import{pxTransform as o}from"@tarojs/taro";var
|
|
1
|
+
import e from"react";import t from"classnames";import{View as r}from"@tarojs/components";import{pxTransform as o}from"@tarojs/taro";var s=function(s){var a=s.percent,c=void 0===a?88:a,n=s.className,l=s.showPercent,m=void 0!==l&&l,p=s.doneColor,i=void 0===p?"":p,d=s.percentColor,h=void 0===d?"":d,g=s.height,v=s.dots,E=void 0===v?[]:v,N=t("xh-progress",n,{dots:E.length>0}),f=t("progress-bar",{dots:E.length>0},{h5:"h5"===process.env.TARO_ENV}),u=t("progress-bar-percent");return e.createElement(r,{className:N},e.createElement(r,{className:"progress",style:{height:g&&"".concat(o(g))}},E.length>0?e.createElement(e.Fragment,null,E.map((function(t){return e.createElement(r,{style:{width:"".concat(t,"%")},key:t,"data-progress":t,className:f},"h5"!==process.env.TARO_ENV&&e.createElement(r,{className:"progress-bar-text"},t,"%"))})),e.createElement(r,{className:"progress-cover",style:{width:"".concat(c,"%")}})):e.createElement(r,{style:{width:"".concat(c,"%"),backgroundColor:i,color:h},className:f},m&&e.createElement(r,{className:u},"".concat(c,"%")))))};export{s as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Progress/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { pxTransform } from \"@tarojs/taro\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport \"./index.scss\";\n\nexport type ProgressProps = {\n percent: number;\n showPercent?: boolean;\n doneColor?: string;\n percentColor?: string;\n height?: number;\n /**\n * @description 百分比,不要百分号\n */\n dots?: number[];\n} & XHComponentCommonProps;\n\nconst Progress: React.FC<ProgressProps> = props => {\n const {\n percent = 88,\n className,\n showPercent = false,\n doneColor = \"\",\n percentColor = \"\",\n height,\n dots = [],\n } = props;\n const progresslcs = classNames(\"xh-progress\", className, {\n dots: dots.length > 0,\n });\n\n const showPercentcls = classNames(\"progress-bar\"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Progress/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { pxTransform } from \"@tarojs/taro\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport \"./index.scss\";\n\nexport type ProgressProps = {\n percent: number;\n showPercent?: boolean;\n doneColor?: string;\n percentColor?: string;\n height?: number;\n /**\n * @description 百分比,不要百分号\n */\n dots?: number[];\n} & XHComponentCommonProps;\n\nconst Progress: React.FC<ProgressProps> = props => {\n const {\n percent = 88,\n className,\n showPercent = false,\n doneColor = \"\",\n percentColor = \"\",\n height,\n dots = [],\n } = props;\n const progresslcs = classNames(\"xh-progress\", className, {\n dots: dots.length > 0,\n });\n\n const showPercentcls = classNames(\n \"progress-bar\",\n { dots: dots.length > 0 },\n { h5: process.env.TARO_ENV === \"h5\" }\n );\n const showbarPercentcls = classNames(\"progress-bar-percent\");\n return (\n <View className={progresslcs}>\n <View\n className=\"progress\"\n style={{ height: height && `${pxTransform(height)}` }}\n >\n {dots.length > 0 ? (\n <React.Fragment>\n {dots.map(item => (\n <View\n style={{\n width: `${item}%`,\n }}\n key={item}\n data-progress={item}\n className={showPercentcls}\n >\n {process.env.TARO_ENV !== \"h5\" && (\n <View className=\"progress-bar-text\">{item}%</View>\n )}\n </View>\n ))}\n <View className=\"progress-cover\" style={{ width: `${percent}%` }} />\n </React.Fragment>\n ) : (\n <View\n style={{\n width: `${percent}%`,\n backgroundColor: doneColor,\n color: percentColor,\n }}\n className={showPercentcls}\n >\n {showPercent && (\n <View className={showbarPercentcls}>{`${percent}%`}</View>\n )}\n </View>\n )}\n </View>\n </View>\n );\n};\n\nexport default Progress;\n"],"names":["Progress","props","_a","percent","className","_b","showPercent","_c","doneColor","_d","percentColor","height","_e","dots","progresslcs","classNames","length","showPercentcls","h5","process","env","TARO_ENV","showbarPercentcls","React","createElement","View","style","pxTransform","Fragment","map","item","width","concat","key","backgroundColor","color"],"mappings":"oIAmBM,IAAAA,EAAoC,SAAAC,GAEtC,IAAAC,EAOED,EAAKE,QAPPA,aAAU,GAAED,EACZE,EAMEH,YALFI,EAKEJ,EAAKK,YALPA,OAAc,IAAAD,GAAKA,EACnBE,EAIEN,EAJYO,UAAdA,OAAY,IAAAD,EAAA,GAAEA,EACdE,EAGER,eAHFS,OAAe,IAAAD,EAAA,GAAEA,EACjBE,EAEEV,EAFIU,OACNC,EACEX,EADOY,KAATA,OAAI,IAAAD,EAAG,GAAEA,EAELE,EAAcC,EAAW,cAAeX,EAAW,CACvDS,KAAMA,EAAKG,OAAS,IAGhBC,EAAiBF,EACrB,eACA,CAAEF,KAAMA,EAAKG,OAAS,GACtB,CAAEE,GAA6B,OAAzBC,QAAQC,IAAIC,WAEdC,EAAoBP,EAAW,wBACrC,OACEQ,EAACC,cAAAC,EAAK,CAAArB,UAAWU,GACfS,EAAAC,cAACC,EAAI,CACHrB,UAAU,WACVsB,MAAO,CAAEf,OAAQA,GAAU,UAAGgB,EAAYhB,MAEzCE,EAAKG,OAAS,EACbO,EAACC,cAAAD,EAAMK,SAAQ,KACZf,EAAKgB,KAAI,SAAAC,GAAQ,OAChBP,EAACC,cAAAC,EACC,CAAAC,MAAO,CACLK,MAAO,GAAGC,OAAAF,EAAO,MAEnBG,IAAKH,EACU,gBAAAA,EACf1B,UAAWa,GAEe,OAAzBE,QAAQC,IAAIC,UACXE,gBAACE,EAAI,CAACrB,UAAU,qBAAqB0B,EAAa,SAIxDP,EAACC,cAAAC,EAAK,CAAArB,UAAU,iBAAiBsB,MAAO,CAAEK,MAAO,GAAGC,OAAA7B,WAGtDoB,EAACC,cAAAC,EACC,CAAAC,MAAO,CACLK,MAAO,GAAGC,OAAA7B,EAAU,KACpB+B,gBAAiB1B,EACjB2B,MAAOzB,GAETN,UAAWa,GAEVX,GACCiB,EAAAC,cAACC,EAAI,CAACrB,UAAWkB,GAAoB,GAAAU,OAAG7B,EAAO,QAO7D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import{View as
|
|
1
|
+
import e from"react";import{View as s,Image as t}from"@tarojs/components";import c from"classnames";import r from"../Button/index.js";var l={success:"https://s.xh1.cn/resources/images/public/success.png",empty:"https://s.xh1.cn/resources/images/public/empty.png",fail:"https://s.xh1.cn/resources/images/public/failure.png",networkErr:"https://s.xh1.cn/resources/images/public/error.png",wait:"https://s.xh1.cn/resources/images/public/ing.png",submitted:"https://s.xh1.cn/resources/images/public/success-info.png"},a=function(a){var n=a.className,m=a.status,o=a.title,u=a.desc,i=a.slot,p=a.action,h=a.onAction,x=a.full,g=c("xh-result",n,{full:void 0===x||x});return e.createElement(s,{className:g},"h5"===process.env.TARO_ENV?e.createElement("img",{src:l[m],alt:"",className:"xh-result-status"}):e.createElement(t,{src:l[m],className:"xh-result-status"}),e.createElement(s,{className:"xh-result-title"},o),e.createElement(s,{className:"xh-result-desc"},u),e.createElement(s,{className:"xh-result-slot"},i),p&&e.createElement(s,{className:c("xh-result-action",{hasSlot:i})},e.createElement(r,{onClick:function(){null==h||h()},hollow:!0,size:"full"},p)))};export{a as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Result/index.tsx"],"sourcesContent":["import React, { ReactNode } from \"react\";\nimport { Image, View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport Button from \"../Button\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport ImageMap
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Result/index.tsx"],"sourcesContent":["import React, { ReactNode } from \"react\";\nimport { Image, View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport Button from \"../Button\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport \"./index.scss\";\n\nconst ImageMap = {\n success: \"https://s.xh1.cn/resources/images/public/success.png\",\n empty: \"https://s.xh1.cn/resources/images/public/empty.png\",\n fail: \"https://s.xh1.cn/resources/images/public/failure.png\",\n networkErr: \"https://s.xh1.cn/resources/images/public/error.png\",\n wait: \"https://s.xh1.cn/resources/images/public/ing.png\",\n submitted: \"https://s.xh1.cn/resources/images/public/success-info.png\",\n};\n\nexport type ResultStatus = keyof typeof ImageMap;\n\nexport type ResultProps = {\n status: ResultStatus;\n title: ReactNode;\n desc?: ReactNode;\n slot?: ReactNode;\n action?: string;\n full?: boolean;\n onAction?: () => void;\n} & XHComponentCommonProps;\n\nconst Result: React.FC<ResultProps> = props => {\n const {\n className,\n status,\n title,\n desc,\n slot,\n action,\n onAction,\n full = true,\n } = props;\n\n const resultCls = classNames(\"xh-result\", className, { full });\n\n const renderImage = () => {\n if (process.env.TARO_ENV === \"h5\") {\n return <img src={ImageMap[status]} alt=\"\" className=\"xh-result-status\" />;\n } else {\n return <Image src={ImageMap[status]} className=\"xh-result-status\" />;\n }\n };\n\n const handleAction = () => {\n onAction?.();\n };\n\n return (\n <View className={resultCls}>\n {renderImage()}\n <View className=\"xh-result-title\">{title}</View>\n <View className=\"xh-result-desc\">{desc}</View>\n <View className=\"xh-result-slot\">{slot}</View>\n {action && (\n <View className={classNames(\"xh-result-action\", { hasSlot: slot })}>\n <Button onClick={handleAction} hollow size=\"full\">\n {action}\n </Button>\n </View>\n )}\n </View>\n );\n};\n\nexport default Result;\n"],"names":["ImageMap","success","empty","fail","networkErr","wait","submitted","Result","props","className","status","title","desc","slot","action","onAction","_a","full","resultCls","classNames","React","createElement","View","process","env","TARO_ENV","src","alt","Image","hasSlot","Button","onClick","hollow","size"],"mappings":"sIAOA,IAAMA,EAAW,CACfC,QAAS,uDACTC,MAAO,qDACPC,KAAM,uDACNC,WAAY,qDACZC,KAAM,mDACNC,UAAW,6DAePC,EAAgC,SAAAC,GAElC,IAAAC,EAQED,YAPFE,EAOEF,EAAKE,OANPC,EAMEH,EANGG,MACLC,EAKEJ,OAJFK,EAIEL,EAAKK,KAHPC,EAGEN,EAHIM,OACNC,EAEEP,WADFQ,EACER,EADSS,KAGPC,EAAYC,EAAW,YAAaV,EAAW,CAAEQ,UAH9C,IAAAD,OAiBT,OACEI,EAACC,cAAAC,EAAK,CAAAb,UAAWS,GAZY,OAAzBK,QAAQC,IAAIC,SACPL,uBAAKM,IAAK1B,EAASU,GAASiB,IAAI,GAAGlB,UAAU,qBAE7CW,EAACC,cAAAO,EAAM,CAAAF,IAAK1B,EAASU,GAASD,UAAU,qBAW/CW,EAAAC,cAACC,EAAK,CAAAb,UAAU,mBAAmBE,GACnCS,EAAAC,cAACC,EAAK,CAAAb,UAAU,kBAAkBG,GAClCQ,EAAAC,cAACC,EAAK,CAAAb,UAAU,kBAAkBI,GACjCC,GACCM,EAAAC,cAACC,EAAI,CAACb,UAAWU,EAAW,mBAAoB,CAAEU,QAAShB,KACzDO,EAAAC,cAACS,EAAO,CAAAC,QAZK,WACnBhB,SAAAA,GACF,EAUuCiB,QAAO,EAAAC,KAAK,QACxCnB,IAMb"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__read as t}from"../../node_modules/tslib/tslib.es6.js";import e,{useState as a,useEffect as n}from"react";import{createSelectorQuery as o}from"@tarojs/taro";import{View as r}from"@tarojs/components";import c from"classnames";import i from"./TabItem.js";var l=function(i){var l=i.children,s=void 0===l?[]:l,m=i.animated,b=void 0!==m&&m,h=i.
|
|
1
|
+
import{__read as t}from"../../node_modules/tslib/tslib.es6.js";import e,{useState as a,useEffect as n}from"react";import{createSelectorQuery as o}from"@tarojs/taro";import{View as r}from"@tarojs/components";import c from"classnames";import i from"./TabItem.js";var l=function(i){var l=i.children,s=void 0===l?[]:l,m=i.animated,b=void 0!==m&&m,h=i.lineColor,p=void 0===h?"#F6AB00":h,u=i.titleActiveColor,v=void 0===u?"#333":u,d=i.titleInctiveColor,x=void 0===d?"#999":d,f=i.onChange,g=i.content,C=i.selectIndex,y=void 0===C?0:C,A=t(a(0),2),E=A[0],N=A[1],I=t(a(0),2),T=I[0],k=I[1],R=t(a(0),2),j=R[0],X=R[1];n((function(){var t=setTimeout((function(){var e=o();e.selectAll(".xh-tabbar-nav-item").boundingClientRect(),e.selectAll(".xh-tabbar-content-item").boundingClientRect(),e.selectAll(".xh-tabbar-content-slot").boundingClientRect(),e.exec((function(e){if(e[0][y]){var a=e[0][y].width;N(a),e[1][y]&&(k(e[1][y].height),e[2][y]&&(X(e[2][y].height),clearTimeout(t)))}}))}),300)}),[y,s]);var w;return e.createElement(r,{className:"xh-tabbar"},e.createElement(r,{className:"xh-tabbar-nav"},s.map((function(t,a){return e.createElement(r,{key:a,className:"xh-tabbar-nav-item",style:{color:y===a?v:x},onClick:function(){return function(t){var e=o();e.selectAll(".xh-tabbar-content-item").boundingClientRect(),e.selectAll(".xh-tabbar-content-slot").boundingClientRect(),e.exec((function(e){if(e[0][t]){var a=e[0][t].height;k(a),e[1][t]&&X(e[1][t].height)}})),f&&f(t)}(a)}},t.props.TabItemComponent?t.props.TabItemComponent:t.props.title)})),(w=E/2+y*E,e.createElement("div",{className:c("xh-tabbar-nav-line",{"xh-tabbar-nav-line-active":b}),style:{background:"".concat(p),transform:"translateX(".concat(w,"px) translate(-50%, -50%)"),WebkitTransform:"translateX(".concat(w,"px) translate(-50%, -50%)")}}))),e.createElement(r,{className:"xh-tabbar-content",style:{width:"".concat(100*s.length,"%"),height:T+j?"".concat(T+j,"px"):"auto"}},g&&e.createElement(r,{className:"xh-tabbar-content-slot"},g),s.map((function(t,a){return e.createElement(r,{key:a,className:c("xh-tabbar-content-item",{"xh-tabbar-content-item-dispaly":y!==a&&!b,"xh-tabbar-content-item-active":y===a}),style:{transform:b?"translateX(-".concat(100*y,"%)"):""}},t.props.children)}))))};l.Item=i;export{l as default};
|
|
2
2
|
//# sourceMappingURL=Tabbar.js.map
|