taro-react-uilib 1.3.4-9 → 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.
Files changed (58) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/components/AmountKeyboard/index.js +1 -1
  3. package/dist/components/AmountKeyboard/index.js.map +1 -1
  4. package/dist/components/Checkbox/index.js +1 -1
  5. package/dist/components/Checkbox/index.js.map +1 -1
  6. package/dist/components/LinkMan/index.js +1 -1
  7. package/dist/components/LinkMan/index.js.map +1 -1
  8. package/dist/components/Progress/index.js +1 -1
  9. package/dist/components/Progress/index.js.map +1 -1
  10. package/dist/components/Result/index.js +1 -1
  11. package/dist/components/Result/index.js.map +1 -1
  12. package/dist/components/Tabbar/tabbar/Tabbar.js +1 -1
  13. package/dist/components/Tabbar/tabbar/Tabbar.js.map +1 -1
  14. package/dist/index.js +6 -6
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.umd.js +6 -6
  17. package/dist/index.umd.js.map +1 -1
  18. package/dist/styles/components/amountinput.scss +1 -1
  19. package/dist/styles/components/button.scss +5 -2
  20. package/dist/styles/components/captcha.scss +1 -0
  21. package/dist/styles/components/icon.scss +1 -1
  22. package/dist/styles/components/linkman.scss +10 -0
  23. package/dist/styles/components/list.scss +1 -1
  24. package/dist/styles/components/progress.scss +13 -1
  25. package/dist/styles/components/step.scss +2 -2
  26. package/lib/components/AmountKeyboard/index.js +1 -1
  27. package/lib/components/AmountKeyboard/index.js.map +1 -1
  28. package/lib/components/Checkbox/index.js +1 -1
  29. package/lib/components/Checkbox/index.js.map +1 -1
  30. package/lib/components/LinkMan/index.js +5 -1
  31. package/lib/components/LinkMan/index.js.map +1 -1
  32. package/lib/components/Progress/index.js +4 -2
  33. package/lib/components/Progress/index.js.map +1 -1
  34. package/lib/components/Result/index.js +8 -1
  35. package/lib/components/Result/index.js.map +1 -1
  36. package/lib/components/Tabbar/tabbar/Tabbar.js +7 -5
  37. package/lib/components/Tabbar/tabbar/Tabbar.js.map +1 -1
  38. package/package.json +1 -1
  39. package/types/components/AmountKeyboard/index.d.ts +7 -1
  40. package/types/components/Result/index.d.ts +8 -1
  41. package/types/components/Tabbar/tabbar/Tabbar.d.ts +1 -1
  42. package/dist/components/Result/images/result-empty.png.js +0 -2
  43. package/dist/components/Result/images/result-empty.png.js.map +0 -1
  44. package/dist/components/Result/images/result-fail.png.js +0 -2
  45. package/dist/components/Result/images/result-fail.png.js.map +0 -1
  46. package/dist/components/Result/images/result-networkErr.png.js +0 -2
  47. package/dist/components/Result/images/result-networkErr.png.js.map +0 -1
  48. package/dist/components/Result/images/result-submitted.png.js +0 -2
  49. package/dist/components/Result/images/result-submitted.png.js.map +0 -1
  50. package/dist/components/Result/images/result-success.png.js +0 -2
  51. package/dist/components/Result/images/result-success.png.js.map +0 -1
  52. package/dist/components/Result/images/result-wait.png.js +0 -2
  53. package/dist/components/Result/images/result-wait.png.js.map +0 -1
  54. package/dist/components/Result/statusMap.js +0 -2
  55. package/dist/components/Result/statusMap.js.map +0 -1
  56. package/lib/components/Result/statusMap.js +0 -15
  57. package/lib/components/Result/statusMap.js.map +0 -1
  58. /package/{README.md → readme.md} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,76 @@
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
+
1
74
  ## [1.3.4-9](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.4-8...v1.3.4-9) (2023-08-04)
2
75
 
3
76
 
@@ -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}`);\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
+ {"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 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,f=s.size,E=void 0===f?0:f,N=s.color,g=void 0===N?"#f6ab00":N,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:E>0?{width:l(E),height:l(E)}:{}}),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:E>0?{width:l(E),height:l(E)}:{},className:a("xh-checkbox-input-fake",i&&"circle")}),e.createElement("span",{className:"xh-checkbox-label"},n))};o.Group=s;export{o as default};
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 = \"#f6ab00\",\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,EADeiB,MAAjBA,OAAQ,IAAAD,EAAA,YAGJE,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
+ {"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 k=["一","二","三","四","五","六","七","八","九","十"],p={linkmanName:"请输入联系人姓名",linkmanPhone:"请输入正确的手机号",relationType:"请选择与联系人关系"},f=[{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:"其他"}],N="h5"!==process.env.TARO_ENV||window.navigator.userAgent.includes("xhqb"),x=i((function(i,x){var E=i.linkManNum,v=i.relations,P=void 0===v?f:v,T=i.onChange,d=i.onGetContacts,g=i.showImportIcon,y=void 0===g?N:g,V=i.onBlur,A=i.onCheckRelation,b=i.onInputChange,R=n(m([]),2),C=R[0],I=R[1],O=n(m([]),2),L=O[0],_=O[1];r((function(){I(Array(E).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:"",relationValue:""}}))),_(Array(E).fill(1).map((function(){return{linkmanName:"",linkmanPhone:"",relationType:""}})))}),[E]);var B=o((function(n){return!!/1\d{10}/.test(n)}),[]),F=o((function(n,e){return"linkmanName"===n?!(!e||!e.replace(/^\s+|\s+$/gm,""))&&!(e.length>20):"linkmanPhone"===n?!(!e||!B(e)):"relationType"===n&&!!e}),[]),M=u((function(){for(var n=C,e=n.length,a={linkmanName:[],linkmanPhone:[],relationValue:[]},t=!0,l=0;l<e;l++){if(!F("linkmanName",n[l].linkmanName)){t=!1;break}if(!F("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),!F("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}),[C]);r((function(){null==T||T(C,M)}),[C,M]),c(x,(function(){return{canSubmit:M,setContacts:function(a,t){I((function(l){return l[t].linkmanName=a.linkmanName,l[t].linkmanPhone=a.linkmanPhone,e([],n(l),!1)})),H("linkmanName",t),H("linkmanPhone",t)}}}),[M]);var S=function(n,e){for(var a=C[e],t=0,l=C.length;t<l;t++)if(t!==e){var i=C[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:""}},j=o((function(a,t){var l="h5"===process.env.TARO_ENV?a.target.value:a.detail.value,i=s(l);I((function(a){return a[t].linkmanName=i,e([],n(a),!1)})),null==b||b("linkmanName",t)}),[]),w=o((function(a,t){var l="h5"===process.env.TARO_ENV?a.target.value:a.detail.value,i=s(l);I((function(a){return a[t].linkmanPhone=i,e([],n(a),!1)})),null==b||b("linkmanPhone",t)}),[]),H=o((function(a,t){if(F(a,C[t][a])){var l=S(a,t),i=l.pass,m=l.message;i||_((function(l){return l[t][a]=m,e([],n(l),!1)})),null==V||V(a,t)}else _((function(l){return l[t][a]=p[a],e([],n(l),!1)}))}),[C]),G=o((function(a,t){_((function(l){return l[t][a]="",e([],n(l),!1)}))}),[]);return l.createElement(a,{className:"xh-linkman"},C.map((function(i,m){return l.createElement(a,{key:m,className:"xh-linkman-item"},l.createElement(a,{className:"xh-linkman-title"},"第",k[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 j(n,m)},value:i.linkmanName,onBlur:function(){return H("linkmanName",m)},onFocus:function(){return G("linkmanName",m)}}):l.createElement(t,{placeholder:"紧急联系人姓名",className:"xh-linkman-main-input-main-input",onBlur:function(){return H("linkmanName",m)},value:i.linkmanName,type:"text",onInput:function(n){return j(n,m)},onFocus:function(){return G("linkmanName",m)}}),L[m].linkmanName&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},L[m].linkmanName)),y&&l.createElement(a,{className:"xh-linkman-main-input-contacts",onClick:function(){return null==d?void 0:d(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 H("linkmanPhone",m)},maxLength:11,onChange:function(n){return w(n,m)},value:i.linkmanPhone,onFocus:function(){return G("linkmanPhone",m)}}):l.createElement(t,{placeholder:"紧急联系人手机号",className:"xh-linkman-main-input-main-input",type:"number",maxlength:11,onBlur:function(){return H("linkmanPhone",m)},value:i.linkmanPhone,onInput:function(n){return w(n,m)},onFocus:function(){return G("linkmanPhone",m)}}),L[m].linkmanPhone&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},L[m].linkmanPhone)))),l.createElement(h,{data:P,title:"选择与联系人的关系",onConfirm:function(a){_((function(a){return a[m].relationType="",e([],n(a),!1)})),I((function(t){return t[m].relationType=a.text,t[m].relationValue=a.value,e([],n(t),!1)})),Promise.resolve().then((function(){var t=S("relationValue",m),l=t.pass,i=t.message;l||_((function(a){return a[m].relationType=i,e([],n(a),!1)})),null==A||A(a,m)}))},onCancel:function(){return H("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"},"h5"===process.env.TARO_ENV?l.createElement("input",{type:"text",maxLength:11,className:"xh-linkman-main-input-main-input",readOnly:!0,placeholder:"选择与联系人关系",value:i.relationType}):l.createElement(t,{placeholder:"选择与联系人关系",className:"xh-linkman-main-input-main-input",type:"digit",maxlength:11,value:i.relationType,disabled:!0}),L[m].relationType&&l.createElement(a,{className:"xh-linkman-main-input-main-err"},L[m].relationType)),l.createElement(a,{className:"xh-linkman-main-input-arrow"})))))})))}));export{x as default};
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":"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"}
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 from"react";import t from"classnames";import{View as r}from"@tarojs/components";import{pxTransform as o}from"@tarojs/taro";var a=function(a){var s=a.percent,c=void 0===s?88:s,n=a.className,l=a.showPercent,m=void 0!==l&&l,i=a.doneColor,p=void 0===i?"":i,d=a.percentColor,g=void 0===d?"":d,h=a.height,v=a.dots,f=void 0===v?[]:v,u=t("xh-progress",n,{dots:f.length>0}),E=t("progress-bar",{dots:f.length>0}),N=t("progress-bar-percent");return e.createElement(r,{className:u},e.createElement(r,{className:"progress",style:{height:h&&"".concat(o(h))}},f.length>0?e.createElement(e.Fragment,null,f.map((function(t){return e.createElement(r,{style:{width:"".concat(t,"%")},key:t,"data-progress":t,className:E})})),e.createElement(r,{className:"progress-cover",style:{width:"".concat(c,"%")}})):e.createElement(r,{style:{width:"".concat(c,"%"),backgroundColor:p,color:g},className:E},m&&e.createElement(r,{className:N},"".concat(c,"%")))))};export{a as default};
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\", { dots: dots.length > 0 });\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 ))}\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","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,EAAW,eAAgB,CAAEF,KAAMA,EAAKG,OAAS,IAClEE,EAAoBH,EAAW,wBACrC,OACEI,EAACC,cAAAC,EAAK,CAAAjB,UAAWU,GACfK,EAAAC,cAACC,EAAI,CACHjB,UAAU,WACVkB,MAAO,CAAEX,OAAQA,GAAU,UAAGY,EAAYZ,MAEzCE,EAAKG,OAAS,EACbG,EAACC,cAAAD,EAAMK,SAAQ,KACZX,EAAKY,KAAI,SAAAC,GAAQ,OAChBP,EAACC,cAAAC,EACC,CAAAC,MAAO,CACLK,MAAO,GAAGC,OAAAF,EAAO,MAEnBG,IAAKH,EAAI,gBACMA,EACftB,UAAWa,OAGfE,EAACC,cAAAC,EAAK,CAAAjB,UAAU,iBAAiBkB,MAAO,CAAEK,MAAO,GAAGC,OAAAzB,WAGtDgB,EAACC,cAAAC,EACC,CAAAC,MAAO,CACLK,MAAO,GAAGC,OAAAzB,EAAU,KACpB2B,gBAAiBtB,EACjBuB,MAAOrB,GAETN,UAAWa,GAEVX,GACCa,EAAAC,cAACC,EAAI,CAACjB,UAAWc,GAAoB,GAAAU,OAAGzB,EAAO,QAO7D"}
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 t,Image as s}from"@tarojs/components";import l from"classnames";import a from"../Button/index.js";import r from"./statusMap.js";var c=function(c){var m=c.className,o=c.status,n=c.title,u=c.desc,i=c.slot,f=c.action,h=c.onAction,p=c.full,x=l("xh-result",m,{full:void 0===p||p});return e.createElement(t,{className:x},"h5"===process.env.TARO_ENV?e.createElement("img",{src:r[o],alt:"",className:"xh-result-status"}):e.createElement(s,{src:r[o],className:"xh-result-status"}),e.createElement(t,{className:"xh-result-title"},n),e.createElement(t,{className:"xh-result-desc"},u),e.createElement(t,{className:"xh-result-slot"},i),f&&e.createElement(t,{className:l("xh-result-action",{hasSlot:i})},e.createElement(a,{onClick:function(){null==h||h()},hollow:!0,size:"full"},f)))};export{c as default};
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 from \"./statusMap\";\n\nimport \"./index.scss\";\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":["Result","props","className","status","title","desc","slot","action","onAction","_a","full","resultCls","classNames","React","createElement","View","process","env","TARO_ENV","src","ImageMap","alt","Image","hasSlot","Button","onClick","hollow","size"],"mappings":"oKAqBM,IAAAA,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,IAAKC,EAASjB,GAASkB,IAAI,GAAGnB,UAAU,qBAE7CW,EAACC,cAAAQ,EAAM,CAAAH,IAAKC,EAASjB,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,CAAEW,QAASjB,KACzDO,EAAAC,cAACU,EAAO,CAAAC,QAZK,WACnBjB,SAAAA,GACF,EAUuCkB,QAAO,EAAAC,KAAK,QACxCpB,IAMb"}
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.initIndex,p=void 0===h?0:h,u=i.lineColor,v=void 0===u?"#F6AB00":u,d=i.titleActiveColor,x=void 0===d?"#333":d,f=i.titleInctiveColor,g=void 0===f?"#999":f,C=i.onChange,y=i.content,A=t(a(p),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],w=t(a(0),2),B=w[0],F=w[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][E]){var a=e[0][E].width;k(a),e[1][E]&&(X(e[1][E].height),e[2][E]&&(F(e[2][E].height),clearTimeout(t)))}}))}),300)}),[E,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:E===a?x:g},onClick:function(){return function(t){N(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;X(a),e[1][E]&&F(e[1][E].height)}})),C&&C(t)}(a)}},t.props.TabItemComponent?t.props.TabItemComponent:t.props.title)})),(W=T/2+E*T,e.createElement("div",{className:c("xh-tabbar-nav-line",{"xh-tabbar-nav-line-active":b}),style:{background:"".concat(v),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:j+B?"".concat(j+B,"px"):"auto"}},y&&e.createElement(r,{className:"xh-tabbar-content-slot"},y),s.map((function(t,a){return e.createElement(r,{key:a,className:c("xh-tabbar-content-item",{"xh-tabbar-content-item-dispaly":E!==a&&!b,"xh-tabbar-content-item-active":E===a}),style:{transform:b?"translateX(-".concat(100*E,"%)"):""}},t.props.children)}))))};l.Item=i;export{l as default};
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
@@ -1 +1 @@
1
- {"version":3,"file":"Tabbar.js","sources":["../../../../src/components/Tabbar/tabbar/Tabbar.tsx"],"sourcesContent":["import React, { FC, ReactElement, useEffect, useState, ReactNode } from \"react\";\nimport { createSelectorQuery } from \"@tarojs/taro\";\nimport { View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport Item from \"./TabItem\";\n\n/**\n * Tab切换\n *\n * @param children //子组件\n * @param animated //是否开启转场动画\n * @param selectIndex //默认选中第几个\n * @param lineColor //下划线颜色\n * @param titleActiveColor //标题选中态颜色\n * @param titleInctiveColor //标题默认态颜色\n * @param onChange //切换回调事件\n * @param content //item公共节点\n *\n */\n\nexport interface TabProps {\n children: ReactElement[];\n animated?: boolean;\n initIndex?: number;\n lineColor?: string;\n titleActiveColor?: string;\n titleInctiveColor?: string;\n onChange?: (index: number) => void;\n content?: string | ReactNode;\n}\n\nexport interface TabsComponent<P = {}> extends FC<P> {\n Item: typeof Item;\n}\n\nconst XHTabs: TabsComponent<TabProps> = props => {\n const {\n children = [],\n animated = false,\n initIndex = 0,\n lineColor = \"#F6AB00\",\n titleActiveColor = \"#333\",\n titleInctiveColor = \"#999\",\n onChange,\n content,\n } = props;\n\n const [selectIndex, setSelectIndex] = useState(initIndex);\n const [tabWdith, setTabWdith] = useState(0);\n const [tabContentHeight, setTabContentHeight] = useState(0);\n const [tabSlotHeight, setTabSlotHeight] = useState(0);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n const query = createSelectorQuery();\n query.selectAll(\".xh-tabbar-nav-item\").boundingClientRect();\n query.selectAll(\".xh-tabbar-content-item\").boundingClientRect();\n query.selectAll(\".xh-tabbar-content-slot\").boundingClientRect();\n\n query.exec(res => {\n if (!res[0][selectIndex]) return;\n const width: number = res[0][selectIndex].width;\n setTabWdith(width);\n\n if (!res[1][selectIndex]) return;\n setTabContentHeight(res[1][selectIndex].height);\n\n if (!res[2][selectIndex]) return;\n setTabSlotHeight(res[2][selectIndex].height);\n clearTimeout(timer);\n });\n }, 300);\n console.log(children.length);\n }, [selectIndex, children]);\n\n const handleClick = (index: number): void => {\n setSelectIndex(index);\n const query = createSelectorQuery();\n query.selectAll(\".xh-tabbar-content-item\").boundingClientRect();\n query.selectAll(\".xh-tabbar-content-slot\").boundingClientRect();\n query.exec(res => {\n if (!res[0][index]) return;\n const height: number = res[0][index].height;\n setTabContentHeight(height);\n if (!res[1][selectIndex]) return;\n setTabSlotHeight(res[1][selectIndex].height);\n });\n\n onChange && onChange(index);\n };\n\n function renderLine(): ReactElement | null {\n const left: number = tabWdith / 2 + selectIndex * tabWdith;\n return (\n <div\n className={classNames(\"xh-tabbar-nav-line\", {\n \"xh-tabbar-nav-line-active\": animated,\n })}\n style={{\n background: `${lineColor}`,\n transform: `translateX(${left}px) translate(-50%, -50%)`,\n WebkitTransform: `translateX(${left}px) translate(-50%, -50%)`,\n }}\n />\n );\n }\n\n return (\n <View className=\"xh-tabbar\">\n <View className=\"xh-tabbar-nav\">\n {children.map((child, index) => (\n <View\n key={index}\n className=\"xh-tabbar-nav-item\"\n style={{\n color:\n selectIndex === index ? titleActiveColor : titleInctiveColor,\n }}\n onClick={() => handleClick(index)}\n >\n {child.props.TabItemComponent\n ? child.props.TabItemComponent\n : child.props.title}\n </View>\n ))}\n {renderLine()}\n </View>\n <View\n className=\"xh-tabbar-content\"\n style={{\n width: `${children.length * 100}%`,\n height:\n tabContentHeight + tabSlotHeight\n ? `${tabContentHeight + tabSlotHeight}px`\n : \"auto\",\n }}\n >\n {content && <View className=\"xh-tabbar-content-slot\">{content}</View>}\n {children.map((child, index) => (\n <View\n key={index}\n className={classNames(\"xh-tabbar-content-item\", {\n \"xh-tabbar-content-item-dispaly\":\n selectIndex !== index && !animated,\n \"xh-tabbar-content-item-active\": selectIndex === index,\n })}\n style={{\n transform: animated ? `translateX(-${selectIndex * 100}%)` : \"\",\n }}\n >\n {child.props.children}\n </View>\n ))}\n </View>\n </View>\n );\n};\n\nXHTabs.Item = Item;\n\nexport default XHTabs;\nexport const TabItem = Item;\n"],"names":["XHTabs","props","_a","children","_b","animated","_c","initIndex","_d","lineColor","_e","titleActiveColor","_f","titleInctiveColor","onChange","content","_g","__read","useState","selectIndex","setSelectIndex","_h","tabWdith","setTabWdith","_j","tabContentHeight","setTabContentHeight","_k","tabSlotHeight","setTabSlotHeight","useEffect","timer","setTimeout","query","createSelectorQuery","selectAll","boundingClientRect","exec","res","width","height","clearTimeout","left","React","createElement","View","className","map","child","index","key","style","color","onClick","handleClick","TabItemComponent","title","classNames","background","concat","transform","WebkitTransform","length","Item"],"mappings":"qQAmCM,IAAAA,EAAkC,SAAAC,GAEpC,IAAAC,EAQED,EARWE,SAAbA,OAAQ,IAAAD,EAAG,GAAEA,EACbE,EAOEH,EAAKI,SAPPA,OAAW,IAAAD,GAAKA,EAChBE,EAMEL,EANWM,UAAbA,OAAS,IAAAD,EAAG,EAACA,EACbE,EAKEP,EALmBQ,UAArBA,OAAS,IAAAD,EAAG,UAASA,EACrBE,EAIET,EAAKU,iBAJPA,OAAmB,IAAAD,EAAA,OAAMA,EACzBE,EAGEX,EAAKY,kBAHPA,OAAoB,IAAAD,EAAA,OAAMA,EAC1BE,EAEEb,EAAKa,SADPC,EACEd,UAEEe,EAAAC,EAAgCC,EAASX,GAAU,GAAlDY,EAAWH,EAAA,GAAEI,OACdC,EAAAJ,EAA0BC,EAAS,GAAE,GAApCI,EAAQD,EAAA,GAAEE,OACXC,EAAAP,EAA0CC,EAAS,GAAE,GAApDO,EAAgBD,EAAA,GAAEE,OACnBC,EAAAV,EAAoCC,EAAS,GAAE,GAA9CU,EAAaD,EAAA,GAAEE,OAEtBC,GAAU,WACR,IAAMC,EAAQC,YAAW,WACvB,IAAMC,EAAQC,IACdD,EAAME,UAAU,uBAAuBC,qBACvCH,EAAME,UAAU,2BAA2BC,qBAC3CH,EAAME,UAAU,2BAA2BC,qBAE3CH,EAAMI,MAAK,SAAAC,GACT,GAAKA,EAAI,GAAGnB,GAAZ,CACA,IAAMoB,EAAgBD,EAAI,GAAGnB,GAAaoB,MAC1ChB,EAAYgB,GAEPD,EAAI,GAAGnB,KACZO,EAAoBY,EAAI,GAAGnB,GAAaqB,QAEnCF,EAAI,GAAGnB,KACZU,EAAiBS,EAAI,GAAGnB,GAAaqB,QACrCC,aAAaV,IAToB,CAUnC,GACD,GAAE,IAEL,GAAG,CAACZ,EAAahB,IAEjB,IAiBQuC,EAeR,OACEC,EAACC,cAAAC,EAAK,CAAAC,UAAU,aACdH,EAAAC,cAACC,EAAI,CAACC,UAAU,iBACb3C,EAAS4C,KAAI,SAACC,EAAOC,GAAU,OAC9BN,EAAAC,cAACC,EACC,CAAAK,IAAKD,EACLH,UAAU,qBACVK,MAAO,CACLC,MACEjC,IAAgB8B,EAAQtC,EAAmBE,GAE/CwC,QAAS,WAAM,OA3CL,SAACJ,GACnB7B,EAAe6B,GACf,IAAMhB,EAAQC,IACdD,EAAME,UAAU,2BAA2BC,qBAC3CH,EAAME,UAAU,2BAA2BC,qBAC3CH,EAAMI,MAAK,SAAAC,GACT,GAAKA,EAAI,GAAGW,GAAZ,CACA,IAAMT,EAAiBF,EAAI,GAAGW,GAAOT,OACrCd,EAAoBc,GACfF,EAAI,GAAGnB,IACZU,EAAiBS,EAAI,GAAGnB,GAAaqB,OAJV,CAK7B,IAEA1B,GAAYA,EAASmC,EACvB,CA6ByBK,CAAYL,KAE1BD,EAAM/C,MAAMsD,iBACTP,EAAM/C,MAAMsD,iBACZP,EAAM/C,MAAMuD,WA9BlBd,EAAepB,EAAW,EAAIH,EAAcG,EAEhDqB,EACEC,cAAA,MAAA,CAAAE,UAAWW,EAAW,qBAAsB,CAC1C,4BAA6BpD,IAE/B8C,MAAO,CACLO,WAAY,GAAGC,OAAAlD,GACfmD,UAAW,cAAcD,OAAAjB,EAA+B,6BACxDmB,gBAAiB,cAAcF,OAAAjB,EAA+B,kCA0BlEC,EAAAC,cAACC,EACC,CAAAC,UAAU,oBACVK,MAAO,CACLZ,MAAO,GAAGoB,OAAkB,IAAlBxD,EAAS2D,OAAe,KAClCtB,OACEf,EAAmBG,EACf,GAAA+B,OAAGlC,EAAmBG,EAAiB,MACvC,SAGPb,GAAW4B,gBAACE,EAAI,CAACC,UAAU,0BAA0B/B,GACrDZ,EAAS4C,KAAI,SAACC,EAAOC,GAAU,OAC9BN,EAAAC,cAACC,EACC,CAAAK,IAAKD,EACLH,UAAWW,EAAW,yBAA0B,CAC9C,iCACEtC,IAAgB8B,IAAU5C,EAC5B,gCAAiCc,IAAgB8B,IAEnDE,MAAO,CACLS,UAAWvD,EAAW,eAAAsD,OAA6B,IAAdxC,EAAiB,MAAO,KAG9D6B,EAAM/C,MAAME,SAEhB,KAIT,EAEAH,EAAO+D,KAAOA"}
1
+ {"version":3,"file":"Tabbar.js","sources":["../../../../src/components/Tabbar/tabbar/Tabbar.tsx"],"sourcesContent":["import React, { FC, ReactElement, useEffect, useState, ReactNode } from \"react\";\nimport { createSelectorQuery } from \"@tarojs/taro\";\nimport { View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport Item from \"./TabItem\";\n\n/**\n * Tab切换\n *\n * @param children //子组件\n * @param animated //是否开启转场动画\n * @param selectIndex //默认选中第几个\n * @param lineColor //下划线颜色\n * @param titleActiveColor //标题选中态颜色\n * @param titleInctiveColor //标题默认态颜色\n * @param onChange //切换回调事件\n * @param content //item公共节点\n *\n */\n\nexport interface TabProps {\n children: ReactElement[];\n animated?: boolean;\n // initIndex?: number;\n lineColor?: string;\n titleActiveColor?: string;\n titleInctiveColor?: string;\n onChange?: (index: number) => void;\n content?: string | ReactNode;\n selectIndex: number;\n}\n\nexport interface TabsComponent<P = {}> extends FC<P> {\n Item: typeof Item;\n}\n\nconst XHTabs: TabsComponent<TabProps> = props => {\n const {\n children = [],\n animated = false,\n // initIndex = 0,\n lineColor = \"#F6AB00\",\n titleActiveColor = \"#333\",\n titleInctiveColor = \"#999\",\n onChange,\n content,\n selectIndex = 0,\n } = props;\n\n // const [selectIndex, setSelectIndex] = useState(initIndex);\n const [tabWdith, setTabWdith] = useState(0);\n const [tabContentHeight, setTabContentHeight] = useState(0);\n const [tabSlotHeight, setTabSlotHeight] = useState(0);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n const query = createSelectorQuery();\n query.selectAll(\".xh-tabbar-nav-item\").boundingClientRect();\n query.selectAll(\".xh-tabbar-content-item\").boundingClientRect();\n query.selectAll(\".xh-tabbar-content-slot\").boundingClientRect();\n\n query.exec(res => {\n if (!res[0][selectIndex]) return;\n const width: number = res[0][selectIndex].width;\n setTabWdith(width);\n\n if (!res[1][selectIndex]) return;\n setTabContentHeight(res[1][selectIndex].height);\n\n if (!res[2][selectIndex]) return;\n setTabSlotHeight(res[2][selectIndex].height);\n clearTimeout(timer);\n });\n }, 300);\n console.log(children.length);\n }, [selectIndex, children]);\n\n const handleClick = (index: number): void => {\n // setSelectIndex(index);\n const query = createSelectorQuery();\n query.selectAll(\".xh-tabbar-content-item\").boundingClientRect();\n query.selectAll(\".xh-tabbar-content-slot\").boundingClientRect();\n query.exec(res => {\n if (!res[0][index]) return;\n const height: number = res[0][index].height;\n setTabContentHeight(height);\n if (!res[1][index]) return;\n setTabSlotHeight(res[1][index].height);\n });\n\n onChange && onChange(index);\n };\n\n function renderLine(): ReactElement | null {\n const left: number = tabWdith / 2 + selectIndex * tabWdith;\n return (\n <div\n className={classNames(\"xh-tabbar-nav-line\", {\n \"xh-tabbar-nav-line-active\": animated,\n })}\n style={{\n background: `${lineColor}`,\n transform: `translateX(${left}px) translate(-50%, -50%)`,\n WebkitTransform: `translateX(${left}px) translate(-50%, -50%)`,\n }}\n />\n );\n }\n\n return (\n <View className=\"xh-tabbar\">\n <View className=\"xh-tabbar-nav\">\n {children.map((child, index) => (\n <View\n key={index}\n className=\"xh-tabbar-nav-item\"\n style={{\n color:\n selectIndex === index ? titleActiveColor : titleInctiveColor,\n }}\n onClick={() => handleClick(index)}\n >\n {child.props.TabItemComponent\n ? child.props.TabItemComponent\n : child.props.title}\n </View>\n ))}\n {renderLine()}\n </View>\n <View\n className=\"xh-tabbar-content\"\n style={{\n width: `${children.length * 100}%`,\n height:\n tabContentHeight + tabSlotHeight\n ? `${tabContentHeight + tabSlotHeight}px`\n : \"auto\",\n }}\n >\n {content && <View className=\"xh-tabbar-content-slot\">{content}</View>}\n {children.map((child, index) => (\n <View\n key={index}\n className={classNames(\"xh-tabbar-content-item\", {\n \"xh-tabbar-content-item-dispaly\":\n selectIndex !== index && !animated,\n \"xh-tabbar-content-item-active\": selectIndex === index,\n })}\n style={{\n transform: animated ? `translateX(-${selectIndex * 100}%)` : \"\",\n }}\n >\n {child.props.children}\n </View>\n ))}\n </View>\n </View>\n );\n};\n\nXHTabs.Item = Item;\n\nexport default XHTabs;\nexport const TabItem = Item;\n"],"names":["XHTabs","props","_a","children","_b","animated","_c","lineColor","_d","titleActiveColor","_e","titleInctiveColor","onChange","content","_f","selectIndex","_g","__read","useState","tabWdith","setTabWdith","_h","tabContentHeight","setTabContentHeight","_j","tabSlotHeight","setTabSlotHeight","useEffect","timer","setTimeout","query","createSelectorQuery","selectAll","boundingClientRect","exec","res","width","height","clearTimeout","left","React","createElement","View","className","map","child","index","key","style","color","onClick","handleClick","TabItemComponent","title","classNames","background","concat","transform","WebkitTransform","length","Item"],"mappings":"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"}