taro-react-uilib 1.3.0-2 → 1.3.0-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 (41) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/components/AmountInput/index.js.map +1 -1
  3. package/dist/components/AmountKeyboard/index.js +1 -1
  4. package/dist/components/AmountKeyboard/index.js.map +1 -1
  5. package/dist/components/Badge/index.js.map +1 -1
  6. package/dist/components/Checkbox/index.js.map +1 -1
  7. package/dist/components/Collapse/index.js.map +1 -1
  8. package/dist/components/Picker/PickerSlot.js +1 -1
  9. package/dist/components/Picker/PickerSlot.js.map +1 -1
  10. package/dist/components/Popup/index.js +1 -1
  11. package/dist/components/Popup/index.js.map +1 -1
  12. package/dist/components/Radio/index.js.map +1 -1
  13. package/dist/components/Space/index.js.map +1 -1
  14. package/dist/components/Step/Steps/index.js.map +1 -1
  15. package/dist/components/Step/index.js.map +1 -1
  16. package/dist/index.js +3 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.umd.js +2 -2
  19. package/dist/index.umd.js.map +1 -1
  20. package/dist/styles/components/picker.scss +16 -12
  21. package/lib/components/AmountInput/index.js.map +1 -1
  22. package/lib/components/AmountKeyboard/index.js +4 -2
  23. package/lib/components/AmountKeyboard/index.js.map +1 -1
  24. package/lib/components/Badge/index.js.map +1 -1
  25. package/lib/components/Checkbox/index.js.map +1 -1
  26. package/lib/components/Collapse/index.js.map +1 -1
  27. package/lib/components/Picker/PickerSlot.js +2 -2
  28. package/lib/components/Popup/index.js +7 -8
  29. package/lib/components/Popup/index.js.map +1 -1
  30. package/lib/components/Radio/index.js.map +1 -1
  31. package/lib/components/Space/index.js.map +1 -1
  32. package/package.json +1 -1
  33. package/types/components/AmountInput/index.d.ts +1 -1
  34. package/types/components/AmountKeyboard/index.d.ts +1 -0
  35. package/types/components/Badge/index.d.ts +1 -1
  36. package/types/components/Checkbox/index.d.ts +1 -1
  37. package/types/components/Collapse/index.d.ts +1 -1
  38. package/types/components/Radio/index.d.ts +1 -1
  39. package/types/components/Space/index.d.ts +1 -1
  40. package/types/components/Step/Steps/index.d.ts +1 -1
  41. package/types/components/Step/index.d.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # [1.3.0-4](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.0-3...v1.3.0-4) (2023-05-23)
2
+
3
+
4
+ ### Features
5
+
6
+ * types导出的问题修复 ([1282aa4](https://code.xhdev.xyz/h5group/taro-uilib/commits/1282aa4f480bf2991706e0042f5f465f5210285c))
7
+ * 键盘增加disable功能 ([737cd2e](https://code.xhdev.xyz/h5group/taro-uilib/commits/737cd2eed599aea12e2bc9ff1598c518b9cd2116))
8
+
9
+
10
+
11
+ # [1.3.0-3](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.0-2...v1.3.0-3) (2023-05-17)
12
+
13
+
14
+ ### Performance Improvements
15
+
16
+ * pickeicker优化 ([1c2ea74](https://code.xhdev.xyz/h5group/taro-uilib/commits/1c2ea74764257a42608b0c73e6428879d710c641))
17
+
18
+
19
+
1
20
  # [1.3.0-2](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.0-1...v1.3.0-2) (2023-05-11)
2
21
 
3
22
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/AmountInput/index.tsx"],"sourcesContent":["import React, { ReactNode } from \"react\";\nimport { XHComponentCommonProps } from \"@/types\";\nimport { ITouchEvent, View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport \"./index.scss\";\n\nexport type AmountInputProps = {\n space?: number;\n value: string;\n maxlength: number;\n onFocus?: (e) => void;\n unit?: string;\n slot?: ReactNode;\n shortcut?: string;\n errTip?: string;\n maxAmount?: number | string;\n minAmount?: number | string;\n onUpgrade?: () => void;\n loanOnekey?: () => void;\n placeholder?: string;\n focus?: boolean;\n /** 借款步长 */\n step?: number;\n} & XHComponentCommonProps;\n\nconst AmountInput: React.FC<AmountInputProps> = props => {\n const {\n value,\n maxlength = value.length,\n onFocus,\n className,\n focus = false,\n shortcut = \"借全部\",\n step = 100,\n errTip = \"\",\n onUpgrade,\n minAmount,\n maxAmount,\n loanOnekey = () => {},\n placeholder = `单笔${minAmount}-${maxAmount}元,${step}的整数倍`,\n } = props;\n\n function renderInputs(): ReactNode {\n const Inputs: any = [\"\"];\n\n if (value === \"\")\n return (\n <View className=\"xh-amount-input-top-amount-num-placeholder\">\n {placeholder}\n </View>\n );\n for (let i = 0; i < maxlength; i++) {\n const char = value[i];\n Inputs.push(\n <View key={i} className=\"xh-amount-input-top-amount-num-key\">\n {char}\n </View>\n );\n }\n return Inputs;\n }\n\n function handlerClick(e: ITouchEvent): void {\n e.stopPropagation();\n onFocus && onFocus(e);\n }\n const cls = classNames(\"xh-amount-input\", className);\n\n const handleUpgrade = (e: ITouchEvent) => {\n e.stopPropagation();\n onUpgrade?.();\n };\n\n return (\n <View className={cls}>\n <View className=\"xh-amount-input-top\">\n <View className=\"xh-amount-input-top-unit\">&yen;</View>\n <View className=\"xh-amount-input-top-amount\" onClick={handlerClick}>\n <View className=\"xh-amount-input-top-amount-num\">\n <View className=\"xh-amount-input-top-amount-num-key\">&nbsp;</View>\n {renderInputs()}\n <View\n className={classNames(\"xh-amount-input-top-amount-num-cursor\", {\n focus,\n })}\n ></View>\n </View>\n <View\n className=\"xh-amount-input-top-amount-shortcut\"\n onClick={loanOnekey}\n >\n {shortcut}\n </View>\n </View>\n </View>\n <View className=\"xh-amount-input-error\">{errTip && errTip}</View>\n <View className=\"xh-amount-input-bottom\">\n <View className=\"xh-amount-input-bottom-range\">\n 单笔可借:\n <View className=\"xh-amount-input-bottom-range-number\">\n {minAmount}-{maxAmount}元\n </View>\n </View>\n <View className=\"xh-amount-input-bottom-tip\">\n 额度不满意?\n <View\n className=\"xh-amount-input-bottom-tip-update\"\n onClick={handleUpgrade}\n >\n 立即提额\n </View>\n </View>\n </View>\n </View>\n );\n};\n\nexport default AmountInput;\n"],"names":["AmountInput","props","value","_a","maxlength","length","onFocus","className","_b","focus","_c","shortcut","_d","step","_e","errTip","onUpgrade","minAmount","maxAmount","_f","loanOnekey","_g","placeholder","concat","cls","classNames","React","createElement","View","onClick","e","stopPropagation","Inputs","i","char","push","key","renderInputs"],"mappings":"yFAyBM,IAAAA,EAA0C,SAAAC,GAE5C,IAAAC,EAaED,EAAKC,MAZPC,EAYEF,EAZsBG,UAAxBA,OAAS,IAAAD,EAAGD,EAAMG,SAClBC,EAWEL,EAAKK,QAVPC,EAUEN,YATFO,EASEP,EATWQ,MAAbA,OAAQ,IAAAD,GAAKA,EACbE,EAQET,WARFU,aAAW,MAAKD,EAChBE,EAOEX,EAPQY,KAAVA,OAAI,IAAAD,EAAG,IAAGA,EACVE,EAMEb,EAAKc,OANPA,OAAM,IAAAD,EAAG,GAAEA,EACXE,EAKEf,EAAKe,UAJPC,EAIEhB,EAJOgB,UACTC,EAGEjB,EAAKiB,UAFPC,EAEElB,aAFFmB,aAAa,WAAQ,EAAAD,EACrBE,EACEpB,cADFqB,OAAc,IAAAD,EAAA,KAAAE,OAAKN,EAAS,KAAAM,OAAIL,EAAc,MAAAK,OAAAV,EAAU,QAAAQ,EA2B1D,IAAMG,EAAMC,EAAW,kBAAmBlB,GAO1C,OACEmB,EAACC,cAAAC,EAAK,CAAArB,UAAWiB,GACfE,EAAAC,cAACC,EAAI,CAACrB,UAAU,uBACdmB,EAAAC,cAACC,EAAI,CAACrB,UAAU,4BAAuC,KACvDmB,EAACC,cAAAC,GAAKrB,UAAU,6BAA6BsB,QAfnD,SAAsBC,GACpBA,EAAEC,kBACFzB,GAAWA,EAAQwB,EACpB,GAaOJ,EAAAC,cAACC,EAAI,CAACrB,UAAU,kCACdmB,EAAAC,cAACC,EAAI,CAACrB,UAAU,sCAAkD,KArC5E,WACE,IAAMyB,EAAc,CAAC,IAErB,GAAc,KAAV9B,EACF,OACEwB,EAACC,cAAAC,EAAK,CAAArB,UAAU,8CACbe,GAGP,IAAK,IAAIW,EAAI,EAAGA,EAAI7B,EAAW6B,IAAK,CAClC,IAAMC,EAAOhC,EAAM+B,GACnBD,EAAOG,KACLT,EAACC,cAAAC,GAAKQ,IAAKH,EAAG1B,UAAU,sCACrB2B,GAGN,CACD,OAAOF,CACR,CAoBUK,GACDX,EAAAC,cAACC,EACC,CAAArB,UAAWkB,EAAW,wCAAyC,CAC7DhB,MAAKA,OAIXiB,EAAAC,cAACC,EAAI,CACHrB,UAAU,sCACVsB,QAAST,GAERT,KAIPe,EAACC,cAAAC,GAAKrB,UAAU,yBAAyBQ,GAAUA,GACnDW,EAAAC,cAACC,EAAI,CAACrB,UAAU,0BACdmB,EAAAC,cAACC,EAAI,CAACrB,UAAU,wCAEdmB,EAAAC,cAACC,EAAI,CAACrB,UAAU,uCACbU,MAAYC,QAGjBQ,EAAAC,cAACC,EAAI,CAACrB,UAAU,uCAEdmB,EAAAC,cAACC,EAAI,CACHrB,UAAU,oCACVsB,QAvCY,SAACC,GACrBA,EAAEC,kBACFf,SAAAA,GACF,GAuCe,UAKjB"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/AmountInput/index.tsx"],"sourcesContent":["import React, { ReactNode } from \"react\";\nimport { ITouchEvent, View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type AmountInputProps = {\n space?: number;\n value: string;\n maxlength: number;\n onFocus?: (e) => void;\n unit?: string;\n slot?: ReactNode;\n shortcut?: string;\n errTip?: string;\n maxAmount?: number | string;\n minAmount?: number | string;\n onUpgrade?: () => void;\n loanOnekey?: () => void;\n placeholder?: string;\n focus?: boolean;\n /** 借款步长 */\n step?: number;\n} & XHComponentCommonProps;\n\nconst AmountInput: React.FC<AmountInputProps> = props => {\n const {\n value,\n maxlength = value.length,\n onFocus,\n className,\n focus = false,\n shortcut = \"借全部\",\n step = 100,\n errTip = \"\",\n onUpgrade,\n minAmount,\n maxAmount,\n loanOnekey = () => {},\n placeholder = `单笔${minAmount}-${maxAmount}元,${step}的整数倍`,\n } = props;\n\n function renderInputs(): ReactNode {\n const Inputs: any = [\"\"];\n\n if (value === \"\")\n return (\n <View className=\"xh-amount-input-top-amount-num-placeholder\">\n {placeholder}\n </View>\n );\n for (let i = 0; i < maxlength; i++) {\n const char = value[i];\n Inputs.push(\n <View key={i} className=\"xh-amount-input-top-amount-num-key\">\n {char}\n </View>\n );\n }\n return Inputs;\n }\n\n function handlerClick(e: ITouchEvent): void {\n e.stopPropagation();\n onFocus && onFocus(e);\n }\n const cls = classNames(\"xh-amount-input\", className);\n\n const handleUpgrade = (e: ITouchEvent) => {\n e.stopPropagation();\n onUpgrade?.();\n };\n\n return (\n <View className={cls}>\n <View className=\"xh-amount-input-top\">\n <View className=\"xh-amount-input-top-unit\">&yen;</View>\n <View className=\"xh-amount-input-top-amount\" onClick={handlerClick}>\n <View className=\"xh-amount-input-top-amount-num\">\n <View className=\"xh-amount-input-top-amount-num-key\">&nbsp;</View>\n {renderInputs()}\n <View\n className={classNames(\"xh-amount-input-top-amount-num-cursor\", {\n focus,\n })}\n ></View>\n </View>\n <View\n className=\"xh-amount-input-top-amount-shortcut\"\n onClick={loanOnekey}\n >\n {shortcut}\n </View>\n </View>\n </View>\n <View className=\"xh-amount-input-error\">{errTip && errTip}</View>\n <View className=\"xh-amount-input-bottom\">\n <View className=\"xh-amount-input-bottom-range\">\n 单笔可借:\n <View className=\"xh-amount-input-bottom-range-number\">\n {minAmount}-{maxAmount}元\n </View>\n </View>\n <View className=\"xh-amount-input-bottom-tip\">\n 额度不满意?\n <View\n className=\"xh-amount-input-bottom-tip-update\"\n onClick={handleUpgrade}\n >\n 立即提额\n </View>\n </View>\n </View>\n </View>\n );\n};\n\nexport default AmountInput;\n"],"names":["AmountInput","props","value","_a","maxlength","length","onFocus","className","_b","focus","_c","shortcut","_d","step","_e","errTip","onUpgrade","minAmount","maxAmount","_f","loanOnekey","_g","placeholder","concat","cls","classNames","React","createElement","View","onClick","e","stopPropagation","Inputs","i","char","push","key","renderInputs"],"mappings":"yFAyBM,IAAAA,EAA0C,SAAAC,GAE5C,IAAAC,EAaED,EAAKC,MAZPC,EAYEF,EAZsBG,UAAxBA,OAAS,IAAAD,EAAGD,EAAMG,SAClBC,EAWEL,EAAKK,QAVPC,EAUEN,YATFO,EASEP,EATWQ,MAAbA,OAAQ,IAAAD,GAAKA,EACbE,EAQET,WARFU,aAAW,MAAKD,EAChBE,EAOEX,EAPQY,KAAVA,OAAI,IAAAD,EAAG,IAAGA,EACVE,EAMEb,EAAKc,OANPA,OAAM,IAAAD,EAAG,GAAEA,EACXE,EAKEf,EAAKe,UAJPC,EAIEhB,EAJOgB,UACTC,EAGEjB,EAAKiB,UAFPC,EAEElB,aAFFmB,aAAa,WAAQ,EAAAD,EACrBE,EACEpB,cADFqB,OAAc,IAAAD,EAAA,KAAAE,OAAKN,EAAS,KAAAM,OAAIL,EAAc,MAAAK,OAAAV,EAAU,QAAAQ,EA2B1D,IAAMG,EAAMC,EAAW,kBAAmBlB,GAO1C,OACEmB,EAACC,cAAAC,EAAK,CAAArB,UAAWiB,GACfE,EAAAC,cAACC,EAAI,CAACrB,UAAU,uBACdmB,EAAAC,cAACC,EAAI,CAACrB,UAAU,4BAAuC,KACvDmB,EAACC,cAAAC,GAAKrB,UAAU,6BAA6BsB,QAfnD,SAAsBC,GACpBA,EAAEC,kBACFzB,GAAWA,EAAQwB,EACpB,GAaOJ,EAAAC,cAACC,EAAI,CAACrB,UAAU,kCACdmB,EAAAC,cAACC,EAAI,CAACrB,UAAU,sCAAkD,KArC5E,WACE,IAAMyB,EAAc,CAAC,IAErB,GAAc,KAAV9B,EACF,OACEwB,EAACC,cAAAC,EAAK,CAAArB,UAAU,8CACbe,GAGP,IAAK,IAAIW,EAAI,EAAGA,EAAI7B,EAAW6B,IAAK,CAClC,IAAMC,EAAOhC,EAAM+B,GACnBD,EAAOG,KACLT,EAACC,cAAAC,GAAKQ,IAAKH,EAAG1B,UAAU,sCACrB2B,GAGN,CACD,OAAOF,CACR,CAoBUK,GACDX,EAAAC,cAACC,EACC,CAAArB,UAAWkB,EAAW,wCAAyC,CAC7DhB,MAAKA,OAIXiB,EAAAC,cAACC,EAAI,CACHrB,UAAU,sCACVsB,QAAST,GAERT,KAIPe,EAACC,cAAAC,GAAKrB,UAAU,yBAAyBQ,GAAUA,GACnDW,EAAAC,cAACC,EAAI,CAACrB,UAAU,0BACdmB,EAAAC,cAACC,EAAI,CAACrB,UAAU,wCAEdmB,EAAAC,cAACC,EAAI,CAACrB,UAAU,uCACbU,MAAYC,QAGjBQ,EAAAC,cAACC,EAAI,CAACrB,UAAU,uCAEdmB,EAAAC,cAACC,EAAI,CACHrB,UAAU,oCACVsB,QAvCY,SAACC,GACrBA,EAAEC,kBACFf,SAAAA,GACF,GAuCe,UAKjB"}
@@ -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 s from"../node_modules/react-transition-group/esm/CSSTransition.js";var i=[{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,_=e(n(E),2),L=_[0],w=_[1];function A(e){k&&k(e),d&&d(e)}a((function(){return b&&document.addEventListener("click",A),function(){document.removeEventListener("click",A)}}),[]),a((function(){w(E)}),[E]);var O=o((function(e,t){var n=t.type,a=t.value;if("h5"===process.env.TARO_ENV&&e.stopImmediatePropagation(),"none"!==n)if("close"!==n){var o=L;"delete"===n?o=L.slice(0,L.length-1):o.replace(/^0+/g,"").length<x&&(o=L+a),o!==L&&(w(o),null==h||h(o))}else A(e)}),[L]),P=r("xh-amount-keyboard",g);return t.createElement(s,{classNames:"slide-up",in:y,unmountOnExit:!0,timeout:200},t.createElement(l,{className:P},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}))})))))),t.createElement(l,{className:"xh-amount-keyboard-body"},i.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){O(t,e)}},e.text)})),t.createElement(l,{className:"xh-amount-keyboard-body-key confirm-fake",onClick:function(e){e.stopPropagation(),null==N||N(L)}},"确定"))))};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 s from"../node_modules/react-transition-group/esm/CSSTransition.js";var i=[{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=e(n(E),2),A=w[0],O=w[1];function P(e){k&&k(e),d&&d(e)}a((function(){return b&&document.addEventListener("click",P),function(){document.removeEventListener("click",P)}}),[]),a((function(){O(E)}),[E]);var T=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=A;"delete"===n?o=A.slice(0,A.length-1):o.replace(/^0+/g,"").length<x&&(o=A+a),o!==A&&(O(o),null==h||h(o))}else P(e)}),[A,L]),B=r("xh-amount-keyboard",g);return t.createElement(s,{classNames:"slide-up",in:y,unmountOnExit:!0,timeout:200},t.createElement(l,{className:B},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}))})))))),t.createElement(l,{className:"xh-amount-keyboard-body"},i.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){T(t,e)}},e.text)})),t.createElement(l,{className:"xh-amount-keyboard-body-key confirm-fake",onClick:function(e){e.stopPropagation(),null==N||N(A)}},"确定"))))};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} & 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 } = 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 (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]\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 </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","__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 onConfirm?: (value: string) => void;\n recommend?: Array<number | string>;\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 } = 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 </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","_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 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Badge/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { XHComponentCommonProps } from \"@/types\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport \"./index.scss\";\n\nexport type BadgeProps = {\n content?: string;\n} & XHComponentCommonProps;\n\nconst Badge: React.FC<BadgeProps> = props => {\n const { content, children } = props;\n const cls = classNames(\"xh-badge\", classNames);\n\n return <View className={cls}>{!!children ? children : content}</View>;\n};\n\nexport default Badge;\n"],"names":["Badge","props","content","children","cls","classNames","React","View","className"],"mappings":"yFAWM,IAAAA,EAA8B,SAAAC,GAC1B,IAAAC,EAAsBD,EAAKC,QAAlBC,EAAaF,EAAKE,SAC7BC,EAAMC,EAAW,WAAYA,GAEnC,OAAOC,gBAACC,EAAI,CAACC,UAAWJ,GAAQD,GAAsBD,EACxD"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Badge/index.tsx"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\nexport type BadgeProps = {\n content?: string;\n} & XHComponentCommonProps;\n\nconst Badge: React.FC<BadgeProps> = props => {\n const { content, children } = props;\n const cls = classNames(\"xh-badge\", classNames);\n\n return <View className={cls}>{!!children ? children : content}</View>;\n};\n\nexport default Badge;\n"],"names":["Badge","props","content","children","cls","classNames","React","View","className"],"mappings":"yFAYM,IAAAA,EAA8B,SAAAC,GAC1B,IAAAC,EAAsBD,EAAKC,QAAlBC,EAAaF,EAAKE,SAC7BC,EAAMC,EAAW,WAAYA,GAEnC,OAAOC,gBAACC,EAAI,CAACC,UAAWJ,GAAQD,GAAsBD,EACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["import { XHComponentCommonProps } from \"@/types\";\nimport React, { FC, ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport { CheckboxGroup } from \"@tarojs/components\";\nimport useGenerateId from \"@/hooks/useGenerateId\";\nimport Group from \"./Group\";\nimport \"./index.scss\";\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 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 ></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 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","color","finalId","useGenerateId","handleOnchange","e","finalchecked","process","env","TARO_ENV","target","detail","length","cls","classNames","h5","React","createElement","CheckboxGroup","htmlFor","type","tt","defaultChecked","Group"],"mappings":"+KAmCA,IAqFMA,EArFkC,SAAAC,GAEpC,IAAAC,EAcED,EAAKC,UAbPC,EAaEF,EAAKE,KAZPC,EAYEH,EAAKG,MAXPC,EAWEJ,EAAKI,GAVPC,EAUEL,SATFM,EASEN,WARFO,EAQEP,QAPFQ,EAOER,EAPOQ,UACTC,EAMET,EANKS,QACPC,EAKEV,EALKU,QACPC,EAIEX,EAJMW,SACRC,EAGEZ,EAHGY,MACLC,EAEEb,EAFGa,MACLC,EACEd,QADFe,OAAQ,IAAAD,EAAA,YAGJE,EAAUC,EAAcb,EAAI,kBAE5Bc,EAAiB,SAAAC,GACrB,IAAIC,EAAeV,IAAW,EAC1BE,EAAQ,GACiB,OAAzBS,QAAQC,IAAIC,UACdH,EAAeD,EAAEK,OAAOd,QACxBE,EAAQO,EAAEK,OAAOZ,QAEjBQ,EAAeD,EAAEM,OAAOb,MAAMc,OAAS,EACvCd,EAAQO,EAAEM,OAAOb,MAAM,IAEzBN,GAAYA,EAASc,EAAcR,EACrC,EAEMe,EAAMC,EAAW,cAAe3B,EAAWM,EAAOC,EAAWC,EAAS,CAC1EoB,GAA6B,OAAzBR,QAAQC,IAAIC,WAElB,MAA6B,OAAzBF,QAAQC,IAAIC,SAEZO,EAACC,cAAAC,EAAc,CAAA1B,SAAUY,GACvBY,EAAOC,cAAA,QAAA,CAAAE,QAASjB,EAASf,UAAW0B,EAAKd,MAAOA,GAC9CiB,EAAAC,cAAA,QAAA,CACEG,KAAK,WACL9B,GAAIY,EACJd,KAAMA,EACND,UAAW2B,EAAW,oBAAqB,CACzCO,GAA6B,OAAzBd,QAAQC,IAAIC,WAElBjB,SAAUY,EACVP,SAAUA,EACVC,MAAOA,EACPF,QAASA,EACTK,MAAOA,IAETe,EACEC,cAAA,OAAA,CAAA9B,UAAW2B,EACT,yBACAvB,GAAU,SACV,CAAE8B,GAA6B,OAAzBd,QAAQC,IAAIC,aAGtBO,EAAMC,cAAA,OAAA,CAAA9B,UAAU,qBAAqBE,KAO3C2B,EAAAC,cAAA,QAAA,CAAOE,QAASjB,EAASf,UAAW0B,EAAKd,MAAOA,GAC9CiB,EACEC,cAAA,QAAA,CAAAG,KAAK,WACL9B,GAAIY,EACJd,KAAMA,EACND,UAAU,oBACVK,SAAUY,EACVN,MAAOA,EACPwB,eAAgB1B,IAElBoB,EACEC,cAAA,OAAA,CAAA9B,UAAW2B,EAAW,yBAA0BvB,GAAU,YAE5DyB,EAAMC,cAAA,OAAA,CAAA9B,UAAU,qBAAqBE,GAG3C,EAGAJ,EAASsC,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 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 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 ></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 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","color","finalId","useGenerateId","handleOnchange","e","finalchecked","process","env","TARO_ENV","target","detail","length","cls","classNames","h5","React","createElement","CheckboxGroup","htmlFor","type","tt","defaultChecked","Group"],"mappings":"+KAmCA,IAqFMA,EArFkC,SAAAC,GAEpC,IAAAC,EAcED,EAAKC,UAbPC,EAaEF,EAAKE,KAZPC,EAYEH,EAAKG,MAXPC,EAWEJ,EAAKI,GAVPC,EAUEL,SATFM,EASEN,WARFO,EAQEP,QAPFQ,EAOER,EAPOQ,UACTC,EAMET,EANKS,QACPC,EAKEV,EALKU,QACPC,EAIEX,EAJMW,SACRC,EAGEZ,EAHGY,MACLC,EAEEb,EAFGa,MACLC,EACEd,QADFe,OAAQ,IAAAD,EAAA,YAGJE,EAAUC,EAAcb,EAAI,kBAE5Bc,EAAiB,SAAAC,GACrB,IAAIC,EAAeV,IAAW,EAC1BE,EAAQ,GACiB,OAAzBS,QAAQC,IAAIC,UACdH,EAAeD,EAAEK,OAAOd,QACxBE,EAAQO,EAAEK,OAAOZ,QAEjBQ,EAAeD,EAAEM,OAAOb,MAAMc,OAAS,EACvCd,EAAQO,EAAEM,OAAOb,MAAM,IAEzBN,GAAYA,EAASc,EAAcR,EACrC,EAEMe,EAAMC,EAAW,cAAe3B,EAAWM,EAAOC,EAAWC,EAAS,CAC1EoB,GAA6B,OAAzBR,QAAQC,IAAIC,WAElB,MAA6B,OAAzBF,QAAQC,IAAIC,SAEZO,EAACC,cAAAC,EAAc,CAAA1B,SAAUY,GACvBY,EAAOC,cAAA,QAAA,CAAAE,QAASjB,EAASf,UAAW0B,EAAKd,MAAOA,GAC9CiB,EAAAC,cAAA,QAAA,CACEG,KAAK,WACL9B,GAAIY,EACJd,KAAMA,EACND,UAAW2B,EAAW,oBAAqB,CACzCO,GAA6B,OAAzBd,QAAQC,IAAIC,WAElBjB,SAAUY,EACVP,SAAUA,EACVC,MAAOA,EACPF,QAASA,EACTK,MAAOA,IAETe,EACEC,cAAA,OAAA,CAAA9B,UAAW2B,EACT,yBACAvB,GAAU,SACV,CAAE8B,GAA6B,OAAzBd,QAAQC,IAAIC,aAGtBO,EAAMC,cAAA,OAAA,CAAA9B,UAAU,qBAAqBE,KAO3C2B,EAAAC,cAAA,QAAA,CAAOE,QAASjB,EAASf,UAAW0B,EAAKd,MAAOA,GAC9CiB,EACEC,cAAA,QAAA,CAAAG,KAAK,WACL9B,GAAIY,EACJd,KAAMA,EACND,UAAU,oBACVK,SAAUY,EACVN,MAAOA,EACPwB,eAAgB1B,IAElBoB,EACEC,cAAA,OAAA,CAAA9B,UAAW2B,EAAW,yBAA0BvB,GAAU,YAE5DyB,EAAMC,cAAA,OAAA,CAAA9B,UAAU,qBAAqBE,GAG3C,EAGAJ,EAASsC,MAAQA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Collapse/index.tsx"],"sourcesContent":["import React, { ReactNode, useMemo, useRef, useState } from \"react\";\nimport List, { XHListProps } from \"@/components/List\";\nimport { View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\n\nimport \"./index.scss\";\n\nexport type CollapseProps = {\n summary?: string | ReactNode;\n open?: boolean;\n style?: React.CSSProperties;\n onToggle?: (open: boolean) => void;\n} & XHListProps;\n\nconst Collapse: React.FC<CollapseProps> = props => {\n const {\n summary = \"\",\n children,\n open = false,\n arrow,\n className,\n style,\n onToggle,\n ...rest\n } = props;\n const detailRef = useRef<HTMLDivElement>(null);\n const [innerOpen, setInneropen] = useState(open);\n const handleOnchange = () => {\n setInneropen(old => !old);\n };\n\n const detailStyle = useMemo(() => {\n const style: React.CSSProperties = { height: 0 };\n if (innerOpen)\n style.height =\n process.env.TARO_ENV === \"h5\"\n ? `${detailRef.current?.scrollHeight}px`\n : \"auto\";\n process.env.TARO_ENV === \"h5\" &&\n innerOpen &&\n detailRef.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\",\n });\n onToggle?.(innerOpen);\n return style;\n }, [innerOpen]);\n\n return (\n <View className={classNames(\"xh-collapse\", className)} style={style}>\n <View\n className={classNames(\"xh-collapse-summary\", { open: innerOpen })}\n onClick={handleOnchange}\n >\n {summary || <List {...rest} arrow />}\n </View>\n <View\n className={classNames(\"xh-collapse-detail\")}\n ref={detailRef}\n style={detailStyle}\n >\n {children}\n </View>\n </View>\n );\n};\n\nexport default Collapse;\n"],"names":["Collapse","props","_a","summary","children","_b","open","arrow","className","style","onToggle","rest","detailRef","useRef","_c","__read","useState","innerOpen","setInneropen","detailStyle","useMemo","height","process","env","TARO_ENV","current","scrollHeight","scrollIntoView","behavior","block","inline","React","createElement","View","classNames","onClick","old","List","__assign","ref"],"mappings":"uPAcM,IAAAA,EAAoC,SAAAC,GAEtC,IAAAC,EAQED,EARUE,QAAZA,OAAU,IAAAD,EAAA,GAAEA,EACZE,EAOEH,EAPMG,SACRC,EAMEJ,EAAKK,KANPA,OAAI,IAAAD,GAAQA,EAMVJ,EAAKM,MAJP,IAAAC,EAIEP,EAJOO,UACTC,EAGER,EAAKQ,MAFPC,EAEET,EAAKS,SADJC,IACDV,EATE,CASL,UAAA,WAAA,OAAA,QAAA,YAAA,QAAA,aACKW,EAAYC,EAAuB,MACnCC,EAAAC,EAA4BC,EAASV,GAAK,GAAzCW,EAASH,EAAA,GAAEI,OAKZC,EAAcC,GAAQ,mBACpBX,EAA6B,CAAEY,OAAQ,GAc7C,OAbIJ,IACFR,EAAMY,OACqB,OAAzBC,QAAQC,IAAIC,SACR,UAAoB,QAAjBtB,EAAAU,EAAUa,eAAO,IAAAvB,OAAA,EAAAA,EAAEwB,aAAgB,MACtC,QACiB,OAAzBJ,QAAQC,IAAIC,UACVP,IACiB,QAAjBZ,EAAAO,EAAUa,eAAO,IAAApB,GAAAA,EAAEsB,eAAe,CAChCC,SAAU,SACVC,MAAO,MACPC,OAAQ,aAEZpB,SAAAA,EAAWO,GACJR,CACT,GAAG,CAACQ,IAEJ,OACEc,EAAAC,cAACC,EAAI,CAACzB,UAAW0B,EAAW,cAAe1B,GAAYC,MAAOA,GAC5DsB,EAAAC,cAACC,EAAI,CACHzB,UAAW0B,EAAW,sBAAuB,CAAE5B,KAAMW,IACrDkB,QA1BiB,WACrBjB,GAAa,SAAAkB,GAAO,OAACA,CAAG,GAC1B,GA0BOjC,GAAW4B,EAAAC,cAACK,EAAIC,EAAA,GAAK3B,EAAI,CAAEJ,OAAK,MAEnCwB,EAACC,cAAAC,GACCzB,UAAW0B,EAAW,sBACtBK,IAAK3B,EACLH,MAAOU,GAENf,GAIT"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Collapse/index.tsx"],"sourcesContent":["import React, { ReactNode, useMemo, useRef, useState } from \"react\";\nimport List from \"@/components/List\";\nimport { View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport type { XHListProps } from \"../List\";\n\nimport \"./index.scss\";\n\nexport type CollapseProps = {\n summary?: string | ReactNode;\n open?: boolean;\n style?: React.CSSProperties;\n onToggle?: (open: boolean) => void;\n} & XHListProps;\n\nconst Collapse: React.FC<CollapseProps> = props => {\n const {\n summary = \"\",\n children,\n open = false,\n arrow,\n className,\n style,\n onToggle,\n ...rest\n } = props;\n const detailRef = useRef<HTMLDivElement>(null);\n const [innerOpen, setInneropen] = useState(open);\n const handleOnchange = () => {\n setInneropen(old => !old);\n };\n\n const detailStyle = useMemo(() => {\n const style: React.CSSProperties = { height: 0 };\n if (innerOpen)\n style.height =\n process.env.TARO_ENV === \"h5\"\n ? `${detailRef.current?.scrollHeight}px`\n : \"auto\";\n process.env.TARO_ENV === \"h5\" &&\n innerOpen &&\n detailRef.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n inline: \"nearest\",\n });\n onToggle?.(innerOpen);\n return style;\n }, [innerOpen]);\n\n return (\n <View className={classNames(\"xh-collapse\", className)} style={style}>\n <View\n className={classNames(\"xh-collapse-summary\", { open: innerOpen })}\n onClick={handleOnchange}\n >\n {summary || <List {...rest} arrow />}\n </View>\n <View\n className={classNames(\"xh-collapse-detail\")}\n ref={detailRef}\n style={detailStyle}\n >\n {children}\n </View>\n </View>\n );\n};\n\nexport default Collapse;\n"],"names":["Collapse","props","_a","summary","children","_b","open","arrow","className","style","onToggle","rest","detailRef","useRef","_c","__read","useState","innerOpen","setInneropen","detailStyle","useMemo","height","process","env","TARO_ENV","current","scrollHeight","scrollIntoView","behavior","block","inline","React","createElement","View","classNames","onClick","old","List","__assign","ref"],"mappings":"uPAeM,IAAAA,EAAoC,SAAAC,GAEtC,IAAAC,EAQED,EARUE,QAAZA,OAAU,IAAAD,EAAA,GAAEA,EACZE,EAOEH,EAPMG,SACRC,EAMEJ,EAAKK,KANPA,OAAI,IAAAD,GAAQA,EAMVJ,EAAKM,MAJP,IAAAC,EAIEP,EAJOO,UACTC,EAGER,EAAKQ,MAFPC,EAEET,EAAKS,SADJC,IACDV,EATE,CASL,UAAA,WAAA,OAAA,QAAA,YAAA,QAAA,aACKW,EAAYC,EAAuB,MACnCC,EAAAC,EAA4BC,EAASV,GAAK,GAAzCW,EAASH,EAAA,GAAEI,OAKZC,EAAcC,GAAQ,mBACpBX,EAA6B,CAAEY,OAAQ,GAc7C,OAbIJ,IACFR,EAAMY,OACqB,OAAzBC,QAAQC,IAAIC,SACR,UAAoB,QAAjBtB,EAAAU,EAAUa,eAAO,IAAAvB,OAAA,EAAAA,EAAEwB,aAAgB,MACtC,QACiB,OAAzBJ,QAAQC,IAAIC,UACVP,IACiB,QAAjBZ,EAAAO,EAAUa,eAAO,IAAApB,GAAAA,EAAEsB,eAAe,CAChCC,SAAU,SACVC,MAAO,MACPC,OAAQ,aAEZpB,SAAAA,EAAWO,GACJR,CACT,GAAG,CAACQ,IAEJ,OACEc,EAAAC,cAACC,EAAI,CAACzB,UAAW0B,EAAW,cAAe1B,GAAYC,MAAOA,GAC5DsB,EAAAC,cAACC,EAAI,CACHzB,UAAW0B,EAAW,sBAAuB,CAAE5B,KAAMW,IACrDkB,QA1BiB,WACrBjB,GAAa,SAAAkB,GAAO,OAACA,CAAG,GAC1B,GA0BOjC,GAAW4B,EAAAC,cAACK,EAAIC,EAAA,GAAK3B,EAAI,CAAEJ,OAAK,MAEnCwB,EAACC,cAAAC,GACCzB,UAAW0B,EAAW,sBACtBK,IAAK3B,EACLH,MAAOU,GAENf,GAIT"}
@@ -1,2 +1,2 @@
1
- import{__read as e,__awaiter as t,__generator as n}from"../node_modules/tslib/tslib.es6.js";import r,{useState as o,useRef as a,useEffect as c,useImperativeHandle as i}from"react";import{View as u}from"@tarojs/components";import{useTouch as l}from"../src/hooks/useTouch.js";var s=r.forwardRef((function(s,f){var m=s.keyIndex,d=void 0===m?0:m,h=s.defaultValue,p=s.data,v=void 0===p?[]:p,b=s.mode,x=void 0===b?"normal":b,g=s.swipeDuration,M=void 0===g?1e3:g,y=s.visible,k=void 0!==y&&y,E=s.onConfirm,j=l(),T=e(o(1),2),D=T[0],N=T[1],w=a(36),Y=e(o(0),2),z=Y[0],F=Y[1],H=e(o("0deg"),2),V=H[0],C=H[1],I=a(!1),P=a(null),R=a(null),S=a(null),_=e(o(0),2),q=_[0],A=_[1],B=e(o(0),2),G=B[0],J=B[1],K=a(0),L=e(o(0),2),O=L[0],Q=L[1],U=function(e){return e>=D+8||e<=D-8},W=function(e,t,n,r){void 0===e&&(e=0),void 0===n&&(n=200);var o=n;"end"!==t&&(o=0),F(o),C(r),Q(e)},X=function(e,t,n){var r=e+K.current;if("end"===t){r>0&&(r=0),r<-(v.length-1)*w.current&&(r=-(v.length-1)*w.current);var o=Math.round(r/w.current)*w.current,a="".concat(20*(Math.abs(Math.round(o/w.current))+1),"deg");W(o,t,n,a),N(Math.abs(Math.round(o/w.current))+1)}else{a=0;var c=20*(-r/w.current+1),i=20*(v.length+1);0<(a=Math.min(Math.max(c,0),i))&&a<i&&(W(r,"",void 0,"".concat(a,"deg")),N(Math.abs(Math.round(r/w.current))+1))}},Z=function(e){var t=Math.round(-e/w.current);E&&E(v[t],d)},$=function(e,t){var n=e;return n=Math.abs(n/t)/.003*(n<0?-1:1)},ee=function(e,t){var n=t||h,r=-1;n?v.forEach((function(e,t){return("object"==typeof e?e.value===n:e===n)&&(r=t,!0)})):v.forEach((function(e,t){("object"==typeof e?e.value===h:e===h)&&(r=t)})),N(-1===r?1:r+1);var o=-1===r?0:r*w.current;e&&Z(-o),X(-o)},te=function(){I.current=!1,F(0),Z(O)},ne=function(e,t){("boolean"!=typeof e.cancelable||e.cancelable)&&e.preventDefault(),t&&e.stopPropagation()};return c((function(){return Q(0),K.current=0,ee(!1),function(){clearTimeout(undefined)}}),[v]),c((function(){k&&setTimeout((function(){t(void 0,void 0,void 0,(function(){return n(this,(function(e){return ee(!0),[2]}))}))}),200)}),[k]),i(f,(function(){return{stopMomentum:te,moving:I.current}})),r.createElement(u,{className:"xh-picker-list",ref:S,onTouchStart:function(e){j.start(e),J(j.deltaY),A(Date.now()),K.current=O},onTouchMove:function(e){j.move(e),j.isVertical()&&(I.current=!0,ne(e,!0));var t=j.deltaY-G;X(t)},onTouchEnd:function(){if(I.current){var e=j.deltaY-G,t=Date.now()-q;if(t<=300&&Math.abs(e)>15){var n=$(e,t);X(n,"end",+M)}else X(e,"end");setTimeout((function(){j.reset()}),0)}}},r.createElement(u,{className:"xh-picker-roller",ref:R,style:"3D"===x?{transition:"transform ".concat(z,"ms cubic-bezier(0.17, 0.89, 0.45, 1)"),transform:"rotate3d(1, 0, 0, ".concat(V,")")}:{transition:"transform ".concat(z,"ms cubic-bezier(0.17, 0.89, 0.45, 1)"),transform:"translate3d(0, ".concat(O,"px, 0)")},onTransitionEnd:te},"3D"===x&&v.map((function(e,t){return r.createElement(u,{className:"xh-picker-roller-item ".concat(U(t+1)&&"nut-picker-roller-item-hidden"),style:{transform:"rotate3d(1, 0, 0, ".concat(-20*(t+1),"deg) translate3d(0px, 0px, 104px)"),height:"".concat(w.current,"px"),lineHeight:"".concat(w.current,"px")},key:"string"==typeof e?t:e.value?e.value:t},r.createElement(r.Fragment,null,"object"==typeof e?e.text:e))})),"normal"===x&&v.map((function(e,t){return r.createElement(u,{className:"xh-picker-roller-item-title",key:"object"==typeof e?e.value:e||t,style:{height:"".concat(w.current,"px"),lineHeight:"".concat(w.current,"px")}},r.createElement(r.Fragment,null,"object"==typeof e?e.text:e))}))),r.createElement(u,{className:"xh-picker-mask"}),r.createElement(u,{className:"xh-picker-indicator",ref:P}))}));export{s as default};
1
+ import{__read as e,__awaiter as t,__generator as n}from"../node_modules/tslib/tslib.es6.js";import r,{useState as o,useRef as a,useEffect as c,useImperativeHandle as i}from"react";import{View as u}from"@tarojs/components";import{useTouch as l}from"../src/hooks/useTouch.js";var s=r.forwardRef((function(s,f){var m=s.keyIndex,d=void 0===m?0:m,h=s.defaultValue,p=s.data,v=void 0===p?[]:p,b=s.mode,x=void 0===b?"normal":b,g=s.swipeDuration,M=void 0===g?1e3:g,y=s.visible,k=void 0!==y&&y,E=s.onConfirm,j=l(),T=e(o(1),2),D=T[0],N=T[1],w=a(48),Y=e(o(0),2),z=Y[0],F=Y[1],H=e(o("0deg"),2),V=H[0],C=H[1],I=a(!1),P=a(null),R=a(null),S=a(null),_=e(o(0),2),q=_[0],A=_[1],B=e(o(0),2),G=B[0],J=B[1],K=a(0),L=e(o(0),2),O=L[0],Q=L[1],U=function(e){return e>=D+8||e<=D-8},W=function(e,t,n,r){void 0===e&&(e=0),void 0===n&&(n=200);var o=n;"end"!==t&&(o=0),F(o),C(r),Q(e)},X=function(e,t,n){var r=e+K.current;if("end"===t){r>0&&(r=0),r<-(v.length-1)*w.current&&(r=-(v.length-1)*w.current);var o=Math.round(r/w.current)*w.current,a="".concat(22*(Math.abs(Math.round(o/w.current))+1),"deg");W(o,t,n,a),N(Math.abs(Math.round(o/w.current))+1)}else{a=0;var c=22*(-r/w.current+1),i=22*(v.length+1);0<(a=Math.min(Math.max(c,0),i))&&a<i&&(W(r,"",void 0,"".concat(a,"deg")),N(Math.abs(Math.round(r/w.current))+1))}},Z=function(e){var t=Math.round(-e/w.current);E&&E(v[t],d)},$=function(e,t){var n=e;return n=Math.abs(n/t)/.003*(n<0?-1:1)},ee=function(e,t){var n=t||h,r=-1;n?v.forEach((function(e,t){return("object"==typeof e?e.value===n:e===n)&&(r=t,!0)})):v.forEach((function(e,t){("object"==typeof e?e.value===h:e===h)&&(r=t)})),N(-1===r?1:r+1);var o=-1===r?0:r*w.current;e&&Z(-o),X(-o)},te=function(){I.current=!1,F(0),Z(O)},ne=function(e,t){("boolean"!=typeof e.cancelable||e.cancelable)&&e.preventDefault(),t&&e.stopPropagation()};return c((function(){return Q(0),K.current=0,ee(!1),function(){clearTimeout(undefined)}}),[v]),c((function(){k&&setTimeout((function(){t(void 0,void 0,void 0,(function(){return n(this,(function(e){return ee(!0),[2]}))}))}),200)}),[k]),i(f,(function(){return{stopMomentum:te,moving:I.current}})),r.createElement(u,{className:"xh-picker-list",ref:S,onTouchStart:function(e){j.start(e),J(j.deltaY),A(Date.now()),K.current=O},onTouchMove:function(e){j.move(e),j.isVertical()&&(I.current=!0,ne(e,!0));var t=j.deltaY-G;X(t)},onTouchEnd:function(){if(I.current){var e=j.deltaY-G,t=Date.now()-q;if(t<=300&&Math.abs(e)>15){var n=$(e,t);X(n,"end",+M)}else X(e,"end");setTimeout((function(){j.reset()}),0)}}},r.createElement(u,{className:"xh-picker-roller",ref:R,style:"3D"===x?{transition:"transform ".concat(z,"ms cubic-bezier(0.17, 0.89, 0.45, 1)"),transform:"rotate3d(1, 0, 0, ".concat(V,")")}:{transition:"transform ".concat(z,"ms cubic-bezier(0.17, 0.89, 0.45, 1)"),transform:"translate3d(0, ".concat(O,"px, 0)")},onTransitionEnd:te},"3D"===x&&v.map((function(e,t){return r.createElement(u,{className:"xh-picker-roller-item ".concat(U(t+1)&&"nut-picker-roller-item-hidden"),style:{transform:"rotate3d(1, 0, 0, ".concat(-22*(t+1),"deg) translate3d(0px, 0px, 104px)"),height:"".concat(w.current,"px"),lineHeight:"".concat(w.current,"px")},key:"string"==typeof e?t:e.value?e.value:t},r.createElement(r.Fragment,null,"object"==typeof e?e.text:e))})),"normal"===x&&v.map((function(e,t){return r.createElement(u,{className:"xh-picker-roller-item-title",key:"object"==typeof e?e.value:e||t,style:{height:"".concat(w.current,"px"),lineHeight:"".concat(w.current,"px")}},r.createElement(r.Fragment,null,"object"==typeof e?e.text:e))}))),r.createElement(u,{className:"xh-picker-mask"}),r.createElement(u,{className:"xh-picker-indicator",ref:P}))}));export{s as default};
2
2
  //# sourceMappingURL=PickerSlot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PickerSlot.js","sources":["../../../src/components/Picker/PickerSlot.tsx"],"sourcesContent":["import React, {\n useState,\n useEffect,\n useRef,\n ForwardRefRenderFunction,\n useImperativeHandle,\n MouseEventHandler,\n} from \"react\";\nimport { View } from \"@tarojs/components\";\nimport { useTouch } from \"../../hooks/useTouch\";\nimport \"./index.scss\";\n\ninterface PickerObjectValue {\n text: string | number;\n value: string | number;\n [key: string]: any;\n}\nexport type PickerValue = string | PickerObjectValue;\n\ninterface PickerSlotProps<T extends PickerValue = PickerObjectValue> {\n defaultValue?: string | number;\n data: T[];\n mode?: \"normal\" | \"3D\";\n swipeDuration?: number | string;\n onConfirm?: (value: T, index: number) => void;\n onCancel?: MouseEventHandler;\n onClose?: MouseEventHandler;\n keyIndex: number;\n visible: boolean;\n}\n\nconst InternalPickerSlot: ForwardRefRenderFunction<\n { stopMomentum: () => void; moving: boolean },\n Partial<PickerSlotProps>\n> = (props, ref) => {\n const {\n keyIndex = 0,\n defaultValue,\n data = [],\n mode = \"normal\",\n swipeDuration = 1000,\n visible = false,\n onConfirm,\n } = props;\n\n const touch = useTouch();\n\n const DEFAULT_DURATION = 200;\n // 触发惯性滑动条件:\n // 在手指离开屏幕时,如果和上一次 move 时的间隔小于 `MOMENTUM_TIME` 且 move\n // 距离大于 `MOMENTUM_DISTANCE` 时,执行惯性滑动\n const INERTIA_TIME = 300;\n const INERTIA_DISTANCE = 15;\n const [currIndex, setCurrIndex] = useState(1);\n const lineSpacing = useRef(36);\n\n const [touchTime, setTouchTime] = useState(0);\n const [touchDeg, setTouchDeg] = useState(\"0deg\");\n const rotation = 20;\n const moving = useRef(false);\n let timer: number | undefined;\n\n const listbox = useRef<any>(null);\n const rollerRef = useRef<any>(null);\n const pickerSlotRef = useRef<any>(null);\n\n const [startTime, setStartTime] = useState(0);\n const [startY, setStartY] = useState(0);\n\n const transformY = useRef(0);\n const [scrollDistance, setScrollDistance] = useState(0);\n\n const isHidden = (index: number) => {\n if (index >= currIndex + 8 || index <= currIndex - 8) {\n return true;\n }\n return false;\n };\n\n const setTransform = (\n translateY = 0,\n type: string,\n time = DEFAULT_DURATION,\n deg: string\n ) => {\n let nTime = time;\n if (type !== \"end\") {\n nTime = 0;\n }\n\n setTouchTime(nTime);\n setTouchDeg(deg);\n\n setScrollDistance(translateY);\n };\n\n const setMove = (move: number, type?: string, time?: number) => {\n let updateMove = move + transformY.current;\n if (type === \"end\") {\n // 限定滚动距离\n if (updateMove > 0) {\n updateMove = 0;\n }\n if (updateMove < -(data.length - 1) * lineSpacing.current) {\n updateMove = -(data.length - 1) * lineSpacing.current;\n }\n\n // 设置滚动距离为lineSpacing的倍数值\n const endMove =\n Math.round(updateMove / lineSpacing.current) * lineSpacing.current;\n const deg = `${\n (Math.abs(Math.round(endMove / lineSpacing.current)) + 1) * rotation\n }deg`;\n\n setTransform(endMove, type, time, deg);\n\n setCurrIndex(Math.abs(Math.round(endMove / lineSpacing.current)) + 1);\n } else {\n let deg = 0;\n const currentDeg = (-updateMove / lineSpacing.current + 1) * rotation;\n\n // picker 滚动的最大角度\n const maxDeg = (data.length + 1) * rotation;\n const minDeg = 0;\n\n deg = Math.min(Math.max(currentDeg, minDeg), maxDeg);\n\n if (minDeg < deg && deg < maxDeg) {\n setTransform(updateMove, \"\", undefined, `${deg}deg`);\n setCurrIndex(\n Math.abs(Math.round(updateMove / lineSpacing.current)) + 1\n );\n }\n }\n };\n\n const setChooseValue = (move: number) => {\n const index = Math.round(-move / lineSpacing.current);\n onConfirm && onConfirm(data[index], keyIndex);\n };\n\n // 开始滚动\n const touchStart = event => {\n touch.start(event);\n setStartY(touch.deltaY);\n setStartTime(Date.now());\n transformY.current = scrollDistance;\n };\n\n const touchMove = event => {\n touch.move(event);\n if (touch.isVertical()) {\n moving.current = true;\n preventDefault(event, true);\n }\n const move = touch.deltaY - startY;\n setMove(move);\n };\n\n const touchEnd = () => {\n if (!moving.current) return;\n const move = touch.deltaY - startY;\n const moveTime = Date.now() - startTime;\n // 区分是否为惯性滚动\n if (moveTime <= INERTIA_TIME && Math.abs(move) > INERTIA_DISTANCE) {\n // 惯性滚动\n const distance = momentum(move, moveTime);\n setMove(distance, \"end\", +swipeDuration);\n } else {\n setMove(move, \"end\");\n }\n\n setTimeout(() => {\n touch.reset();\n }, 0);\n };\n\n // 惯性滚动 距离\n const momentum = (distance: number, duration: number) => {\n let nDistance = distance;\n // 惯性滚动的速度\n const speed = Math.abs(nDistance / duration);\n // 惯性滚动的距离\n nDistance = (speed / 0.003) * (nDistance < 0 ? -1 : 1);\n return nDistance;\n };\n\n const modifyStatus = (type?: boolean, val?: string | number) => {\n const value = val || defaultValue;\n let index = -1;\n if (value) {\n data.forEach((item, idx) => {\n if (typeof item === \"object\" ? item.value === value : item === value) {\n index = idx;\n return true;\n }\n return false;\n });\n } else {\n data.forEach((item, i) => {\n if (\n typeof item === \"object\"\n ? item.value === defaultValue\n : item === defaultValue\n ) {\n index = i;\n }\n });\n }\n\n setCurrIndex(index === -1 ? 1 : index + 1);\n const move = index === -1 ? 0 : index * lineSpacing.current;\n type && setChooseValue(-move);\n setMove(-move);\n };\n\n // 惯性滚动结束\n const stopMomentum = () => {\n moving.current = false;\n setTouchTime(0);\n setChooseValue(scrollDistance);\n };\n // 阻止默认事件\n const preventDefault = (\n event: React.TouchEvent<HTMLElement>,\n isStopPropagation?: boolean\n ) => {\n /* istanbul ignore else */\n if (typeof event.cancelable !== \"boolean\" || event.cancelable) {\n event.preventDefault();\n }\n\n if (isStopPropagation) {\n event.stopPropagation();\n }\n };\n\n const getReference = async () => {\n // const refe = await getRectByTaro(listbox?.current)\n // lineSpacing.current = refe.height ? refe.height : 36\n // lineSpacing.current = 36\n modifyStatus(true);\n };\n\n const touchRollerStyle = () => {\n return {\n transition: `transform ${touchTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`,\n transform: `rotate3d(1, 0, 0, ${touchDeg})`,\n };\n };\n const touchTileStyle = () => {\n return {\n transition: `transform ${touchTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`,\n transform: `translate3d(0, ${scrollDistance}px, 0)`,\n };\n };\n\n useEffect(() => {\n setScrollDistance(0);\n transformY.current = 0;\n modifyStatus(false);\n return () => {\n clearTimeout(timer);\n };\n }, [data]);\n\n useEffect(() => {\n if (visible) {\n setTimeout(() => {\n getReference();\n }, 200);\n }\n }, [visible]);\n\n useImperativeHandle(ref, () => ({\n stopMomentum,\n moving: moving.current,\n }));\n\n return (\n <View\n className=\"xh-picker-list\"\n ref={pickerSlotRef}\n onTouchStart={touchStart}\n onTouchMove={touchMove}\n onTouchEnd={touchEnd}\n >\n <View\n className=\"xh-picker-roller\"\n ref={rollerRef}\n style={mode === \"3D\" ? touchRollerStyle() : touchTileStyle()}\n onTransitionEnd={stopMomentum}\n >\n {/* 3D 效果 */}\n {mode === \"3D\" &&\n data.map((item, index) => {\n return (\n <View\n className={`xh-picker-roller-item ${\n isHidden(index + 1) && \"nut-picker-roller-item-hidden\"\n }`}\n style={{\n transform: `rotate3d(1, 0, 0, ${\n -rotation * (index + 1)\n }deg) translate3d(0px, 0px, 104px)`,\n height: `${lineSpacing.current}px`,\n lineHeight: `${lineSpacing.current}px`,\n }}\n key={\n typeof item === \"string\"\n ? index\n : item.value\n ? item.value\n : index\n }\n >\n <React.Fragment>\n {typeof item === \"object\" ? item.text : item}\n </React.Fragment>\n </View>\n );\n })}\n {/* 平铺 */}\n {mode === \"normal\" &&\n data.map((item, index) => {\n return (\n <View\n className=\"xh-picker-roller-item-title\"\n key={\n typeof item === \"object\" ? item.value : item ? item : index\n }\n style={{\n height: `${lineSpacing.current}px`,\n lineHeight: `${lineSpacing.current}px`,\n }}\n >\n <React.Fragment>\n {typeof item === \"object\" ? item.text : item}\n </React.Fragment>\n </View>\n );\n })}\n </View>\n\n <View className=\"xh-picker-mask\" />\n <View className=\"xh-picker-indicator\" ref={listbox} />\n </View>\n );\n};\nconst PickerSlot = React.forwardRef<\n { stopMomentum: () => void; moving: boolean },\n Partial<PickerSlotProps>\n>(InternalPickerSlot);\nexport default PickerSlot;\n"],"names":["PickerSlot","React","forwardRef","props","ref","_a","keyIndex","defaultValue","_b","data","_c","mode","_d","swipeDuration","_e","visible","onConfirm","touch","useTouch","_f","__read","useState","currIndex","setCurrIndex","lineSpacing","useRef","_g","touchTime","setTouchTime","_h","touchDeg","setTouchDeg","moving","listbox","rollerRef","pickerSlotRef","_j","startTime","setStartTime","_k","startY","setStartY","transformY","_l","scrollDistance","setScrollDistance","isHidden","index","setTransform","translateY","type","time","deg","nTime","setMove","move","updateMove","current","length","endMove","Math","round","concat","abs","currentDeg","maxDeg","min","max","undefined","setChooseValue","momentum","distance","duration","nDistance","modifyStatus","val","value","forEach","item","idx","i","stopMomentum","preventDefault","event","isStopPropagation","cancelable","stopPropagation","useEffect","clearTimeout","timer","setTimeout","__awaiter","useImperativeHandle","View","className","onTouchStart","start","deltaY","Date","now","onTouchMove","isVertical","onTouchEnd","moveTime","reset","createElement","style","transition","transform","onTransitionEnd","map","height","lineHeight","key","Fragment","text"],"mappings":"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"}
1
+ {"version":3,"file":"PickerSlot.js","sources":["../../../src/components/Picker/PickerSlot.tsx"],"sourcesContent":["import React, {\n useState,\n useEffect,\n useRef,\n ForwardRefRenderFunction,\n useImperativeHandle,\n MouseEventHandler,\n} from \"react\";\nimport { View } from \"@tarojs/components\";\nimport { useTouch } from \"../../hooks/useTouch\";\nimport \"./index.scss\";\n\ninterface PickerObjectValue {\n text: string | number;\n value: string | number;\n [key: string]: any;\n}\nexport type PickerValue = string | PickerObjectValue;\n\ninterface PickerSlotProps<T extends PickerValue = PickerObjectValue> {\n defaultValue?: string | number;\n data: T[];\n mode?: \"normal\" | \"3D\";\n swipeDuration?: number | string;\n onConfirm?: (value: T, index: number) => void;\n onCancel?: MouseEventHandler;\n onClose?: MouseEventHandler;\n keyIndex: number;\n visible: boolean;\n}\n\nconst InternalPickerSlot: ForwardRefRenderFunction<\n { stopMomentum: () => void; moving: boolean },\n Partial<PickerSlotProps>\n> = (props, ref) => {\n const {\n keyIndex = 0,\n defaultValue,\n data = [],\n mode = \"normal\",\n swipeDuration = 1000,\n visible = false,\n onConfirm,\n } = props;\n\n const touch = useTouch();\n\n const DEFAULT_DURATION = 200;\n // 触发惯性滑动条件:\n // 在手指离开屏幕时,如果和上一次 move 时的间隔小于 `MOMENTUM_TIME` 且 move\n // 距离大于 `MOMENTUM_DISTANCE` 时,执行惯性滑动\n const INERTIA_TIME = 300;\n const INERTIA_DISTANCE = 15;\n const [currIndex, setCurrIndex] = useState(1);\n const lineSpacing = useRef(48);\n\n const [touchTime, setTouchTime] = useState(0);\n const [touchDeg, setTouchDeg] = useState(\"0deg\");\n const rotation = 22;\n const moving = useRef(false);\n let timer: number | undefined;\n\n const listbox = useRef<any>(null);\n const rollerRef = useRef<any>(null);\n const pickerSlotRef = useRef<any>(null);\n\n const [startTime, setStartTime] = useState(0);\n const [startY, setStartY] = useState(0);\n\n const transformY = useRef(0);\n const [scrollDistance, setScrollDistance] = useState(0);\n\n const isHidden = (index: number) => {\n if (index >= currIndex + 8 || index <= currIndex - 8) {\n return true;\n }\n return false;\n };\n\n const setTransform = (\n translateY = 0,\n type: string,\n time = DEFAULT_DURATION,\n deg: string\n ) => {\n let nTime = time;\n if (type !== \"end\") {\n nTime = 0;\n }\n\n setTouchTime(nTime);\n setTouchDeg(deg);\n\n setScrollDistance(translateY);\n };\n\n const setMove = (move: number, type?: string, time?: number) => {\n let updateMove = move + transformY.current;\n if (type === \"end\") {\n // 限定滚动距离\n if (updateMove > 0) {\n updateMove = 0;\n }\n if (updateMove < -(data.length - 1) * lineSpacing.current) {\n updateMove = -(data.length - 1) * lineSpacing.current;\n }\n\n // 设置滚动距离为lineSpacing的倍数值\n const endMove =\n Math.round(updateMove / lineSpacing.current) * lineSpacing.current;\n const deg = `${\n (Math.abs(Math.round(endMove / lineSpacing.current)) + 1) * rotation\n }deg`;\n\n setTransform(endMove, type, time, deg);\n\n setCurrIndex(Math.abs(Math.round(endMove / lineSpacing.current)) + 1);\n } else {\n let deg = 0;\n const currentDeg = (-updateMove / lineSpacing.current + 1) * rotation;\n\n // picker 滚动的最大角度\n const maxDeg = (data.length + 1) * rotation;\n const minDeg = 0;\n\n deg = Math.min(Math.max(currentDeg, minDeg), maxDeg);\n\n if (minDeg < deg && deg < maxDeg) {\n setTransform(updateMove, \"\", undefined, `${deg}deg`);\n setCurrIndex(\n Math.abs(Math.round(updateMove / lineSpacing.current)) + 1\n );\n }\n }\n };\n\n const setChooseValue = (move: number) => {\n const index = Math.round(-move / lineSpacing.current);\n onConfirm && onConfirm(data[index], keyIndex);\n };\n\n // 开始滚动\n const touchStart = event => {\n touch.start(event);\n setStartY(touch.deltaY);\n setStartTime(Date.now());\n transformY.current = scrollDistance;\n };\n\n const touchMove = event => {\n touch.move(event);\n if (touch.isVertical()) {\n moving.current = true;\n preventDefault(event, true);\n }\n const move = touch.deltaY - startY;\n setMove(move);\n };\n\n const touchEnd = () => {\n if (!moving.current) return;\n const move = touch.deltaY - startY;\n const moveTime = Date.now() - startTime;\n // 区分是否为惯性滚动\n if (moveTime <= INERTIA_TIME && Math.abs(move) > INERTIA_DISTANCE) {\n // 惯性滚动\n const distance = momentum(move, moveTime);\n setMove(distance, \"end\", +swipeDuration);\n } else {\n setMove(move, \"end\");\n }\n\n setTimeout(() => {\n touch.reset();\n }, 0);\n };\n\n // 惯性滚动 距离\n const momentum = (distance: number, duration: number) => {\n let nDistance = distance;\n // 惯性滚动的速度\n const speed = Math.abs(nDistance / duration);\n // 惯性滚动的距离\n nDistance = (speed / 0.003) * (nDistance < 0 ? -1 : 1);\n return nDistance;\n };\n\n const modifyStatus = (type?: boolean, val?: string | number) => {\n const value = val || defaultValue;\n let index = -1;\n if (value) {\n data.forEach((item, idx) => {\n if (typeof item === \"object\" ? item.value === value : item === value) {\n index = idx;\n return true;\n }\n return false;\n });\n } else {\n data.forEach((item, i) => {\n if (\n typeof item === \"object\"\n ? item.value === defaultValue\n : item === defaultValue\n ) {\n index = i;\n }\n });\n }\n\n setCurrIndex(index === -1 ? 1 : index + 1);\n const move = index === -1 ? 0 : index * lineSpacing.current;\n type && setChooseValue(-move);\n setMove(-move);\n };\n\n // 惯性滚动结束\n const stopMomentum = () => {\n moving.current = false;\n setTouchTime(0);\n setChooseValue(scrollDistance);\n };\n // 阻止默认事件\n const preventDefault = (\n event: React.TouchEvent<HTMLElement>,\n isStopPropagation?: boolean\n ) => {\n /* istanbul ignore else */\n if (typeof event.cancelable !== \"boolean\" || event.cancelable) {\n event.preventDefault();\n }\n\n if (isStopPropagation) {\n event.stopPropagation();\n }\n };\n\n const getReference = async () => {\n // const refe = await getRectByTaro(listbox?.current)\n // lineSpacing.current = refe.height ? refe.height : 36\n // lineSpacing.current = 36\n modifyStatus(true);\n };\n\n const touchRollerStyle = () => {\n return {\n transition: `transform ${touchTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`,\n transform: `rotate3d(1, 0, 0, ${touchDeg})`,\n };\n };\n const touchTileStyle = () => {\n return {\n transition: `transform ${touchTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`,\n transform: `translate3d(0, ${scrollDistance}px, 0)`,\n };\n };\n\n useEffect(() => {\n setScrollDistance(0);\n transformY.current = 0;\n modifyStatus(false);\n return () => {\n clearTimeout(timer);\n };\n }, [data]);\n\n useEffect(() => {\n if (visible) {\n setTimeout(() => {\n getReference();\n }, 200);\n }\n }, [visible]);\n\n useImperativeHandle(ref, () => ({\n stopMomentum,\n moving: moving.current,\n }));\n\n return (\n <View\n className=\"xh-picker-list\"\n ref={pickerSlotRef}\n onTouchStart={touchStart}\n onTouchMove={touchMove}\n onTouchEnd={touchEnd}\n >\n <View\n className=\"xh-picker-roller\"\n ref={rollerRef}\n style={mode === \"3D\" ? touchRollerStyle() : touchTileStyle()}\n onTransitionEnd={stopMomentum}\n >\n {/* 3D 效果 */}\n {mode === \"3D\" &&\n data.map((item, index) => {\n return (\n <View\n className={`xh-picker-roller-item ${\n isHidden(index + 1) && \"nut-picker-roller-item-hidden\"\n }`}\n style={{\n transform: `rotate3d(1, 0, 0, ${\n -rotation * (index + 1)\n }deg) translate3d(0px, 0px, 104px)`,\n height: `${lineSpacing.current}px`,\n lineHeight: `${lineSpacing.current}px`,\n }}\n key={\n typeof item === \"string\"\n ? index\n : item.value\n ? item.value\n : index\n }\n >\n <React.Fragment>\n {typeof item === \"object\" ? item.text : item}\n </React.Fragment>\n </View>\n );\n })}\n {/* 平铺 */}\n {mode === \"normal\" &&\n data.map((item, index) => {\n return (\n <View\n className=\"xh-picker-roller-item-title\"\n key={\n typeof item === \"object\" ? item.value : item ? item : index\n }\n style={{\n height: `${lineSpacing.current}px`,\n lineHeight: `${lineSpacing.current}px`,\n }}\n >\n <React.Fragment>\n {typeof item === \"object\" ? item.text : item}\n </React.Fragment>\n </View>\n );\n })}\n </View>\n\n <View className=\"xh-picker-mask\" />\n <View className=\"xh-picker-indicator\" ref={listbox} />\n </View>\n );\n};\nconst PickerSlot = React.forwardRef<\n { stopMomentum: () => void; moving: boolean },\n Partial<PickerSlotProps>\n>(InternalPickerSlot);\nexport default PickerSlot;\n"],"names":["PickerSlot","React","forwardRef","props","ref","_a","keyIndex","defaultValue","_b","data","_c","mode","_d","swipeDuration","_e","visible","onConfirm","touch","useTouch","_f","__read","useState","currIndex","setCurrIndex","lineSpacing","useRef","_g","touchTime","setTouchTime","_h","touchDeg","setTouchDeg","moving","listbox","rollerRef","pickerSlotRef","_j","startTime","setStartTime","_k","startY","setStartY","transformY","_l","scrollDistance","setScrollDistance","isHidden","index","setTransform","translateY","type","time","deg","nTime","setMove","move","updateMove","current","length","endMove","Math","round","concat","abs","currentDeg","maxDeg","min","max","undefined","setChooseValue","momentum","distance","duration","nDistance","modifyStatus","val","value","forEach","item","idx","i","stopMomentum","preventDefault","event","isStopPropagation","cancelable","stopPropagation","useEffect","clearTimeout","timer","setTimeout","__awaiter","useImperativeHandle","View","className","onTouchStart","start","deltaY","Date","now","onTouchMove","isVertical","onTouchEnd","moveTime","reset","createElement","style","transition","transform","onTransitionEnd","map","height","lineHeight","key","Fragment","text"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import t,{useEffect as e}from"react";import o from"react-dom";import n from"classnames";import{View as r}from"@tarojs/components";import c from"../Animated/Slide/index.js";import i from"../Animated/Fade/index.js";import m from"../Mask/index.js";var p={top:"down",bottom:"up",left:"right",right:"left"},a=function(a){var d=a.visible,l=a.position,u=void 0===l?"bottom":l,s=a.children,f=a.onClose,h=p[u],v=n("xh-popup-content",{"xh-popup-content-left":"left"===u,"xh-popup-content-right":"right"===u,"xh-popup-content-top":"top"===u,"xh-popup-content-bottom":"bottom"===u});function b(){f&&f()}if(e((function(){return d?(document.body.style.touchAction="none",document.body.addEventListener("touchmove",(function(t){t.stopPropagation(),t.preventDefault()})),document.body.style.overflowY="hidden"):(document.body.style.touchAction="",document.body.removeEventListener("touchmove",(function(t){t.stopPropagation(),t.preventDefault()})),document.body.style.overflowY="auto"),function(){document.body.style.touchAction="",document.body.style.overflowY="auto"}}),[d]),"h5"!==process.env.TARO_ENV){var y=n("xh-popup",d?"visible":"hidden");return t.createElement(r,{className:y},t.createElement(m,{onClick:b}),t.createElement(r,{className:v},s))}return o.createPortal(t.createElement(i,{in:d},t.createElement("div",{className:"xh-popup"},t.createElement(m,{onClick:b}),t.createElement(c,{direction:h,in:d},t.createElement("div",{className:v},s)))),document.body)};export{a as default};
1
+ import e,{useEffect as t}from"react";import o from"react-dom";import n from"classnames";import{View as r}from"@tarojs/components";import c from"../Animated/Slide/index.js";import m from"../Animated/Fade/index.js";import i from"../Mask/index.js";var d={top:"down",bottom:"up",left:"right",right:"left"},p=function(p){var a=p.visible,l=p.position,u=void 0===l?"bottom":l,s=p.children,f=p.onClose,h=d[u],v=n("xh-popup-content",{"xh-popup-content-left":"left"===u,"xh-popup-content-right":"right"===u,"xh-popup-content-top":"top"===u,"xh-popup-content-bottom":"bottom"===u}),b=function(e){e.stopPropagation(),e.preventDefault()};function y(){f&&f()}if(t((function(){return a?(document.body.style.touchAction="none",document.body.addEventListener("touchmove",b),document.body.style.overflowY="hidden"):(document.body.style.touchAction="",document.body.removeEventListener("touchmove",b),document.body.style.overflowY="auto"),function(){document.body.style.touchAction="",document.body.style.overflowY="auto",document.body.removeEventListener("touchmove",b)}}),[a]),"h5"!==process.env.TARO_ENV){var E=n("xh-popup",a?"visible":"hidden");return e.createElement(r,{className:E},e.createElement(i,{onClick:y}),e.createElement(r,{className:v},s))}return o.createPortal(e.createElement(m,{in:a},e.createElement("div",{className:"xh-popup"},e.createElement(i,{onClick:y}),e.createElement(c,{direction:h,in:a},e.createElement("div",{className:v},s)))),document.body)};export{p as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Popup/index.tsx"],"sourcesContent":["import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport { Fade, Slide } from \"../Animated\";\nimport { SlideDirection } from \"../Animated/Slide\";\nimport Mask from \"../Mask\";\n\nimport \"./index.scss\";\n\nexport type PopupPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface PopupProps extends PropsWithChildren<{}> {\n visible: boolean;\n position?: PopupPosition;\n onClose?: () => void;\n}\n\nconst positionMap = {\n top: \"down\",\n bottom: \"up\",\n left: \"right\",\n right: \"left\",\n};\n\nconst Popup: FC<PopupProps> = props => {\n const { visible, position = \"bottom\", children, onClose } = props;\n const direction = positionMap[position] as SlideDirection;\n const cls = classNames(\"xh-popup-content\", {\n \"xh-popup-content-left\": position === \"left\",\n \"xh-popup-content-right\": position === \"right\",\n \"xh-popup-content-top\": position === \"top\",\n \"xh-popup-content-bottom\": position === \"bottom\",\n });\n\n useEffect(() => {\n if (visible) {\n document.body.style.touchAction = \"none\";\n document.body.addEventListener(\"touchmove\", e => {\n e.stopPropagation();\n e.preventDefault();\n });\n document.body.style.overflowY = \"hidden\";\n } else {\n document.body.style.touchAction = \"\";\n document.body.removeEventListener(\"touchmove\", e => {\n e.stopPropagation();\n e.preventDefault();\n });\n document.body.style.overflowY = \"auto\";\n }\n\n return () => {\n document.body.style.touchAction = \"\";\n document.body.style.overflowY = \"auto\";\n };\n }, [visible]);\n\n function handleClickOnMask(): void {\n onClose && onClose();\n }\n if (process.env.TARO_ENV !== \"h5\") {\n const minicls = classNames(\"xh-popup\", visible ? \"visible\" : \"hidden\");\n return (\n <View className={minicls}>\n <Mask onClick={handleClickOnMask} />\n <View className={cls}>{children}</View>\n </View>\n );\n }\n return ReactDOM.createPortal(\n <Fade in={visible}>\n <div className=\"xh-popup\">\n <Mask onClick={handleClickOnMask} />\n <Slide direction={direction} in={visible}>\n <div className={cls}>{children}</div>\n </Slide>\n </div>\n </Fade>,\n document.body\n );\n};\n\nexport default Popup;\n"],"names":["positionMap","top","bottom","left","right","Popup","props","visible","_a","position","children","onClose","direction","cls","classNames","handleClickOnMask","useEffect","document","body","style","touchAction","addEventListener","e","stopPropagation","preventDefault","overflowY","removeEventListener","process","env","TARO_ENV","minicls","React","createElement","View","className","Mask","onClick","ReactDOM","createPortal","Fade","in","Slide"],"mappings":"qPAmBA,IAAMA,EAAc,CAClBC,IAAK,OACLC,OAAQ,KACRC,KAAM,QACNC,MAAO,QAGHC,EAAwB,SAAAC,GACpB,IAAAC,EAAoDD,EAAKC,QAAhDC,EAA2CF,EAAxBG,SAAnBA,OAAQ,IAAAD,EAAG,SAAQA,EAAEE,EAAsBJ,EAAKI,SAAjBC,EAAYL,EAAKK,QAC3DC,EAAYZ,EAAYS,GACxBI,EAAMC,EAAW,mBAAoB,CACzC,wBAAsC,SAAbL,EACzB,yBAAuC,UAAbA,EAC1B,uBAAqC,QAAbA,EACxB,0BAAwC,WAAbA,IA0B7B,SAASM,IACPJ,GAAWA,GACZ,CACD,GA1BAK,GAAU,WAiBR,OAhBIT,GACFU,SAASC,KAAKC,MAAMC,YAAc,OAClCH,SAASC,KAAKG,iBAAiB,aAAa,SAAAC,GAC1CA,EAAEC,kBACFD,EAAEE,gBACJ,IACAP,SAASC,KAAKC,MAAMM,UAAY,WAEhCR,SAASC,KAAKC,MAAMC,YAAc,GAClCH,SAASC,KAAKQ,oBAAoB,aAAa,SAAAJ,GAC7CA,EAAEC,kBACFD,EAAEE,gBACJ,IACAP,SAASC,KAAKC,MAAMM,UAAY,QAG3B,WACLR,SAASC,KAAKC,MAAMC,YAAc,GAClCH,SAASC,KAAKC,MAAMM,UAAY,MAClC,CACF,GAAG,CAAClB,IAKyB,OAAzBoB,QAAQC,IAAIC,SAAmB,CACjC,IAAMC,EAAUhB,EAAW,WAAYP,EAAU,UAAY,UAC7D,OACEwB,EAACC,cAAAC,EAAK,CAAAC,UAAWJ,GACfC,EAAAC,cAACG,EAAI,CAACC,QAASrB,IACfgB,EAACC,cAAAC,EAAK,CAAAC,UAAWrB,GAAMH,GAG5B,CACD,OAAO2B,EAASC,aACdP,gBAACQ,EAAI,CAACC,GAAIjC,GACRwB,EAAKC,cAAA,MAAA,CAAAE,UAAU,YACbH,EAAAC,cAACG,EAAI,CAACC,QAASrB,IACfgB,EAACC,cAAAS,GAAM7B,UAAWA,EAAW4B,GAAIjC,GAC/BwB,EAAAC,cAAA,MAAA,CAAKE,UAAWrB,GAAMH,MAI5BO,SAASC,KAEb"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Popup/index.tsx"],"sourcesContent":["import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport { Fade, Slide } from \"../Animated\";\nimport { SlideDirection } from \"../Animated/Slide\";\nimport Mask from \"../Mask\";\n\nimport \"./index.scss\";\n\nexport type PopupPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface PopupProps extends PropsWithChildren<{}> {\n visible: boolean;\n position?: PopupPosition;\n onClose?: () => void;\n}\n\nconst positionMap = {\n top: \"down\",\n bottom: \"up\",\n left: \"right\",\n right: \"left\",\n};\n\nconst Popup: FC<PopupProps> = props => {\n const { visible, position = \"bottom\", children, onClose } = props;\n const direction = positionMap[position] as SlideDirection;\n const cls = classNames(\"xh-popup-content\", {\n \"xh-popup-content-left\": position === \"left\",\n \"xh-popup-content-right\": position === \"right\",\n \"xh-popup-content-top\": position === \"top\",\n \"xh-popup-content-bottom\": position === \"bottom\",\n });\n\n const preventSTH = (e: TouchEvent) => {\n e.stopPropagation();\n e.preventDefault();\n };\n\n useEffect(() => {\n if (visible) {\n document.body.style.touchAction = \"none\";\n document.body.addEventListener(\"touchmove\", preventSTH);\n document.body.style.overflowY = \"hidden\";\n } else {\n document.body.style.touchAction = \"\";\n document.body.removeEventListener(\"touchmove\", preventSTH);\n document.body.style.overflowY = \"auto\";\n }\n\n return () => {\n document.body.style.touchAction = \"\";\n document.body.style.overflowY = \"auto\";\n document.body.removeEventListener(\"touchmove\", preventSTH);\n };\n }, [visible]);\n\n function handleClickOnMask(): void {\n onClose && onClose();\n }\n if (process.env.TARO_ENV !== \"h5\") {\n const minicls = classNames(\"xh-popup\", visible ? \"visible\" : \"hidden\");\n return (\n <View className={minicls}>\n <Mask onClick={handleClickOnMask} />\n <View className={cls}>{children}</View>\n </View>\n );\n }\n return ReactDOM.createPortal(\n <Fade in={visible}>\n <div className=\"xh-popup\">\n <Mask onClick={handleClickOnMask} />\n <Slide direction={direction} in={visible}>\n <div className={cls}>{children}</div>\n </Slide>\n </div>\n </Fade>,\n document.body\n );\n};\n\nexport default Popup;\n"],"names":["positionMap","top","bottom","left","right","Popup","props","visible","_a","position","children","onClose","direction","cls","classNames","preventSTH","e","stopPropagation","preventDefault","handleClickOnMask","useEffect","document","body","style","touchAction","addEventListener","overflowY","removeEventListener","process","env","TARO_ENV","minicls","React","createElement","View","className","Mask","onClick","ReactDOM","createPortal","Fade","in","Slide"],"mappings":"qPAmBA,IAAMA,EAAc,CAClBC,IAAK,OACLC,OAAQ,KACRC,KAAM,QACNC,MAAO,QAGHC,EAAwB,SAAAC,GACpB,IAAAC,EAAoDD,EAAKC,QAAhDC,EAA2CF,EAAxBG,SAAnBA,OAAQ,IAAAD,EAAG,SAAQA,EAAEE,EAAsBJ,EAAKI,SAAjBC,EAAYL,EAAKK,QAC3DC,EAAYZ,EAAYS,GACxBI,EAAMC,EAAW,mBAAoB,CACzC,wBAAsC,SAAbL,EACzB,yBAAuC,UAAbA,EAC1B,uBAAqC,QAAbA,EACxB,0BAAwC,WAAbA,IAGvBM,EAAa,SAACC,GAClBA,EAAEC,kBACFD,EAAEE,gBACJ,EAoBA,SAASC,IACPR,GAAWA,GACZ,CACD,GArBAS,GAAU,WAWR,OAVIb,GACFc,SAASC,KAAKC,MAAMC,YAAc,OAClCH,SAASC,KAAKG,iBAAiB,YAAaV,GAC5CM,SAASC,KAAKC,MAAMG,UAAY,WAEhCL,SAASC,KAAKC,MAAMC,YAAc,GAClCH,SAASC,KAAKK,oBAAoB,YAAaZ,GAC/CM,SAASC,KAAKC,MAAMG,UAAY,QAG3B,WACLL,SAASC,KAAKC,MAAMC,YAAc,GAClCH,SAASC,KAAKC,MAAMG,UAAY,OAChCL,SAASC,KAAKK,oBAAoB,YAAaZ,EACjD,CACF,GAAG,CAACR,IAKyB,OAAzBqB,QAAQC,IAAIC,SAAmB,CACjC,IAAMC,EAAUjB,EAAW,WAAYP,EAAU,UAAY,UAC7D,OACEyB,EAACC,cAAAC,EAAK,CAAAC,UAAWJ,GACfC,EAAAC,cAACG,EAAI,CAACC,QAASlB,IACfa,EAACC,cAAAC,EAAK,CAAAC,UAAWtB,GAAMH,GAG5B,CACD,OAAO4B,EAASC,aACdP,gBAACQ,EAAI,CAACC,GAAIlC,GACRyB,EAAKC,cAAA,MAAA,CAAAE,UAAU,YACbH,EAAAC,cAACG,EAAI,CAACC,QAASlB,IACfa,EAACC,cAAAS,GAAM9B,UAAWA,EAAW6B,GAAIlC,GAC/ByB,EAAAC,cAAA,MAAA,CAAKE,UAAWtB,GAAMH,MAI5BW,SAASC,KAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Radio/index.tsx"],"sourcesContent":["import { XHComponentCommonProps } from \"@/types\";\nimport React, { FC, ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport { RadioGroup } from \"@tarojs/components\";\nimport useGenerateId from \"@/hooks/useGenerateId\";\n\nimport Group from \"./Group\";\nimport \"./index.scss\";\n\ntype CompoundedComponent = React.ForwardRefExoticComponent<\n XHRadioProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof Group;\n};\n\nexport type XHRadioProps = {\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 XHRadio: FC<XHRadioProps> = 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 color = \"#f6ab00\",\n } = props;\n\n const finalId = useGenerateId(id, \"xh-radio-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;\n }\n onChange?.(finalchecked, value);\n };\n\n const cls = classNames(\"xh-radio\", className, align, direction, justify);\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <RadioGroup onChange={handleOnchange}>\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"radio\"\n id={finalId}\n name={name}\n className={classNames(\"xh-radio-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(\"xh-radio-input-fake\", circle && \"circle\", {\n tt: process.env.TARO_ENV === \"tt\",\n })}\n ></span>\n <span className=\"xh-radio-label\">{label}</span>\n </label>\n </RadioGroup>\n );\n }\n\n return (\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"radio\"\n id={finalId}\n name={name}\n className=\"xh-radio-input\"\n onChange={handleOnchange}\n value={value}\n disabled={disabled}\n defaultChecked={checked}\n />\n <span\n className={classNames(\"xh-radio-input-fake\", circle && \"circle\")}\n ></span>\n <span className=\"xh-radio-label\">{label}</span>\n </label>\n );\n};\n\nconst Radio = XHRadio as CompoundedComponent;\nRadio.Group = Group;\n\nexport default Radio;\n"],"names":["Radio","props","className","name","label","id","circle","onChange","align","direction","justify","checked","disabled","value","style","_a","color","finalId","useGenerateId","handleOnchange","e","finalchecked","process","env","TARO_ENV","target","detail","length","cls","classNames","React","createElement","RadioGroup","htmlFor","type","tt","defaultChecked","Group"],"mappings":"4KAoCA,IAkFMA,EAlF4B,SAAAC,GAE9B,IAAAC,EAcED,EAAKC,UAbPC,EAaEF,EAAKE,KAZPC,EAYEH,EAAKG,MAXPC,EAWEJ,EAAKI,GAVPC,EAUEL,SATFM,EASEN,WARFO,EAQEP,QAPFQ,EAOER,EAPOQ,UACTC,EAMET,EANKS,QACPC,EAKEV,EALKU,QACPC,EAIEX,EAJMW,SACRC,EAGEZ,EAHGY,MACLC,EAEEb,EAFGa,MACLC,EACEd,QADFe,OAAQ,IAAAD,EAAA,YAGJE,EAAUC,EAAcb,EAAI,eAE5Bc,EAAiB,SAAAC,GACrB,IAAIC,EAAeV,IAAW,EAC1BE,EAAQ,GACiB,OAAzBS,QAAQC,IAAIC,UACdH,EAAeD,EAAEK,OAAOd,QACxBE,EAAQO,EAAEK,OAAOZ,QAEjBQ,EAAeD,EAAEM,OAAOb,MAAMc,OAAS,EACvCd,EAAQO,EAAEM,OAAOb,OAEnBN,SAAAA,EAAWc,EAAcR,EAC3B,EAEMe,EAAMC,EAAW,WAAY3B,EAAWM,EAAOC,EAAWC,GAChE,MAA6B,OAAzBY,QAAQC,IAAIC,SAEZM,EAACC,cAAAC,EAAW,CAAAzB,SAAUY,GACpBW,EAAOC,cAAA,QAAA,CAAAE,QAAShB,EAASf,UAAW0B,EAAKd,MAAOA,GAC9CgB,EAAAC,cAAA,QAAA,CACEG,KAAK,QACL7B,GAAIY,EACJd,KAAMA,EACND,UAAW2B,EAAW,iBAAkB,CACtCM,GAA6B,OAAzBb,QAAQC,IAAIC,WAElBjB,SAAUY,EACVP,SAAUA,EACVC,MAAOA,EACPF,QAASA,EACTK,MAAOA,IAETc,EACEC,cAAA,OAAA,CAAA7B,UAAW2B,EAAW,sBAAuBvB,GAAU,SAAU,CAC/D6B,GAA6B,OAAzBb,QAAQC,IAAIC,aAGpBM,EAAMC,cAAA,OAAA,CAAA7B,UAAU,kBAAkBE,KAOxC0B,EAAAC,cAAA,QAAA,CAAOE,QAAShB,EAASf,UAAW0B,EAAKd,MAAOA,GAC9CgB,EAAAC,cAAA,QAAA,CACEG,KAAK,QACL7B,GAAIY,EACJd,KAAMA,EACND,UAAU,iBACVK,SAAUY,EACVN,MAAOA,EACPD,SAAUA,EACVwB,eAAgBzB,IAElBmB,EACEC,cAAA,OAAA,CAAA7B,UAAW2B,EAAW,sBAAuBvB,GAAU,YAEzDwB,EAAMC,cAAA,OAAA,CAAA7B,UAAU,kBAAkBE,GAGxC,EAGAJ,EAAMqC,MAAQA"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Radio/index.tsx"],"sourcesContent":["import React, { FC, ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport { RadioGroup } from \"@tarojs/components\";\nimport useGenerateId from \"@/hooks/useGenerateId\";\n\nimport Group from \"./Group\";\nimport type { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\ntype CompoundedComponent = React.ForwardRefExoticComponent<\n XHRadioProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof Group;\n};\n\nexport type XHRadioProps = {\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 XHRadio: FC<XHRadioProps> = 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 color = \"#f6ab00\",\n } = props;\n\n const finalId = useGenerateId(id, \"xh-radio-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;\n }\n onChange?.(finalchecked, value);\n };\n\n const cls = classNames(\"xh-radio\", className, align, direction, justify);\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <RadioGroup onChange={handleOnchange}>\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"radio\"\n id={finalId}\n name={name}\n className={classNames(\"xh-radio-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(\"xh-radio-input-fake\", circle && \"circle\", {\n tt: process.env.TARO_ENV === \"tt\",\n })}\n ></span>\n <span className=\"xh-radio-label\">{label}</span>\n </label>\n </RadioGroup>\n );\n }\n\n return (\n <label htmlFor={finalId} className={cls} style={style}>\n <input\n type=\"radio\"\n id={finalId}\n name={name}\n className=\"xh-radio-input\"\n onChange={handleOnchange}\n value={value}\n disabled={disabled}\n defaultChecked={checked}\n />\n <span\n className={classNames(\"xh-radio-input-fake\", circle && \"circle\")}\n ></span>\n <span className=\"xh-radio-label\">{label}</span>\n </label>\n );\n};\n\nconst Radio = XHRadio as CompoundedComponent;\nRadio.Group = Group;\n\nexport default Radio;\n"],"names":["Radio","props","className","name","label","id","circle","onChange","align","direction","justify","checked","disabled","value","style","_a","color","finalId","useGenerateId","handleOnchange","e","finalchecked","process","env","TARO_ENV","target","detail","length","cls","classNames","React","createElement","RadioGroup","htmlFor","type","tt","defaultChecked","Group"],"mappings":"4KAqCA,IAkFMA,EAlF4B,SAAAC,GAE9B,IAAAC,EAcED,EAAKC,UAbPC,EAaEF,EAAKE,KAZPC,EAYEH,EAAKG,MAXPC,EAWEJ,EAAKI,GAVPC,EAUEL,SATFM,EASEN,WARFO,EAQEP,QAPFQ,EAOER,EAPOQ,UACTC,EAMET,EANKS,QACPC,EAKEV,EALKU,QACPC,EAIEX,EAJMW,SACRC,EAGEZ,EAHGY,MACLC,EAEEb,EAFGa,MACLC,EACEd,QADFe,OAAQ,IAAAD,EAAA,YAGJE,EAAUC,EAAcb,EAAI,eAE5Bc,EAAiB,SAAAC,GACrB,IAAIC,EAAeV,IAAW,EAC1BE,EAAQ,GACiB,OAAzBS,QAAQC,IAAIC,UACdH,EAAeD,EAAEK,OAAOd,QACxBE,EAAQO,EAAEK,OAAOZ,QAEjBQ,EAAeD,EAAEM,OAAOb,MAAMc,OAAS,EACvCd,EAAQO,EAAEM,OAAOb,OAEnBN,SAAAA,EAAWc,EAAcR,EAC3B,EAEMe,EAAMC,EAAW,WAAY3B,EAAWM,EAAOC,EAAWC,GAChE,MAA6B,OAAzBY,QAAQC,IAAIC,SAEZM,EAACC,cAAAC,EAAW,CAAAzB,SAAUY,GACpBW,EAAOC,cAAA,QAAA,CAAAE,QAAShB,EAASf,UAAW0B,EAAKd,MAAOA,GAC9CgB,EAAAC,cAAA,QAAA,CACEG,KAAK,QACL7B,GAAIY,EACJd,KAAMA,EACND,UAAW2B,EAAW,iBAAkB,CACtCM,GAA6B,OAAzBb,QAAQC,IAAIC,WAElBjB,SAAUY,EACVP,SAAUA,EACVC,MAAOA,EACPF,QAASA,EACTK,MAAOA,IAETc,EACEC,cAAA,OAAA,CAAA7B,UAAW2B,EAAW,sBAAuBvB,GAAU,SAAU,CAC/D6B,GAA6B,OAAzBb,QAAQC,IAAIC,aAGpBM,EAAMC,cAAA,OAAA,CAAA7B,UAAU,kBAAkBE,KAOxC0B,EAAAC,cAAA,QAAA,CAAOE,QAAShB,EAASf,UAAW0B,EAAKd,MAAOA,GAC9CgB,EAAAC,cAAA,QAAA,CACEG,KAAK,QACL7B,GAAIY,EACJd,KAAMA,EACND,UAAU,iBACVK,SAAUY,EACVN,MAAOA,EACPD,SAAUA,EACVwB,eAAgBzB,IAElBmB,EACEC,cAAA,OAAA,CAAA7B,UAAW2B,EAAW,sBAAuBvB,GAAU,YAEzDwB,EAAMC,cAAA,OAAA,CAAA7B,UAAU,kBAAkBE,GAGxC,EAGAJ,EAAMqC,MAAQA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Space/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { XHComponentCommonProps } from \"@/types\";\nimport useFlexGapSupport from \"@/hooks/useFlexGapSupport\";\nimport { toArray } from \"@/utils\";\nimport { ConfigContext, SizeType } from \"./config-provider\";\nimport Item from \"./Item\";\n\nimport \"./index.scss\";\n\nexport const SpaceConfigContext = ConfigContext;\nexport type SpaceProps = {\n direction?: \"horizontal\" | \"vertical\";\n align?: \"start\" | \"end\" | \"center\" | \"baseline\";\n size?: SizeType | [SizeType, SizeType];\n style?: React.CSSProperties;\n split?: React.ReactNode;\n wrap?: boolean;\n} & XHComponentCommonProps;\n\nexport const SpaceContext = React.createContext({\n latestIndex: 0,\n horizontalSize: 0,\n verticalSize: 0,\n supportFlexGap: false,\n});\n\nconst spaceSize = {\n small: 8,\n normal: 16,\n large: 24,\n};\n\nfunction getNumberSize(size: SizeType) {\n return typeof size === \"string\" ? spaceSize[size] : size || 0;\n}\n\nconst XHSpace: React.FC<SpaceProps> = props => {\n const {\n getPrefixCls,\n space,\n direction: directionConfig,\n } = React.useContext(ConfigContext);\n\n const {\n size = space?.size || \"small\",\n align,\n className,\n children,\n direction = \"horizontal\",\n split,\n style,\n wrap = false,\n ...otherProps\n } = props;\n\n const supportFlexGap = useFlexGapSupport();\n\n const [horizontalSize, verticalSize] = React.useMemo(\n () =>\n ((Array.isArray(size) ? size : [size, size]) as [SizeType, SizeType]).map(\n item => getNumberSize(item)\n ),\n [size]\n );\n\n const childNodes = toArray(children, { keepEmpty: true });\n\n const mergedAlign =\n align === undefined && direction === \"horizontal\" ? \"center\" : align;\n const prefixCls = getPrefixCls(\"space\");\n const cn = classNames(\n prefixCls,\n `${prefixCls}-${direction}`,\n {\n [`${prefixCls}-rtl`]: directionConfig === \"rtl\",\n [`${prefixCls}-align-${mergedAlign}`]: mergedAlign,\n },\n className\n );\n\n const itemClassName = `${prefixCls}-item`;\n\n const marginDirection =\n directionConfig === \"rtl\" ? \"marginLeft\" : \"marginRight\";\n\n // Calculate latest one\n let latestIndex = 0;\n const nodes = childNodes.map((child: any, i) => {\n if (child !== null && child !== undefined) {\n latestIndex = i;\n }\n\n const key = (child && child.key) || `${itemClassName}-${i}`;\n\n return (\n <Item\n className={itemClassName}\n key={key}\n direction={direction}\n index={i}\n marginDirection={marginDirection}\n split={split}\n wrap={wrap}\n >\n {child}\n </Item>\n );\n });\n\n const spaceContext = React.useMemo(\n () => ({ horizontalSize, verticalSize, latestIndex, supportFlexGap }),\n [horizontalSize, verticalSize, latestIndex, supportFlexGap]\n );\n\n if (childNodes.length === 0) {\n return null;\n }\n\n const gapStyle: React.CSSProperties = {};\n\n if (wrap) {\n gapStyle.flexWrap = \"wrap\";\n\n if (!supportFlexGap) {\n gapStyle.marginBottom = `-${verticalSize}px`;\n }\n }\n\n if (supportFlexGap) {\n gapStyle.columnGap = `${horizontalSize}px`;\n gapStyle.rowGap = `${verticalSize}px`;\n }\n\n return (\n <View\n className={cn}\n style={{\n ...gapStyle,\n ...style,\n }}\n {...otherProps}\n >\n <SpaceContext.Provider value={spaceContext}>\n {nodes}\n </SpaceContext.Provider>\n </View>\n );\n};\n\nexport default XHSpace;\n"],"names":["SpaceContext","React","createContext","latestIndex","horizontalSize","verticalSize","supportFlexGap","spaceSize","small","normal","large","XHSpace","props","_b","useContext","ConfigContext","getPrefixCls","space","directionConfig","_c","size","align","className","children","_d","direction","split","style","_e","wrap","otherProps","__rest","useFlexGapSupport","_f","__read","useMemo","Array","isArray","map","item","getNumberSize","childNodes","toArray","keepEmpty","mergedAlign","undefined","prefixCls","cn","classNames","concat","_a","itemClassName","marginDirection","nodes","child","i","key","createElement","Item","index","spaceContext","length","gapStyle","flexWrap","marginBottom","columnGap","rowGap","View","__assign","Provider","value"],"mappings":"8VAqBa,IAAAA,EAAeC,EAAMC,cAAc,CAC9CC,YAAa,EACbC,eAAgB,EAChBC,aAAc,EACdC,gBAAgB,IAGZC,EAAY,CAChBC,MAAO,EACPC,OAAQ,GACRC,MAAO,IAOH,IAAAC,EAAgC,SAAAC,SAC9BC,EAIFZ,EAAMa,WAAWC,GAHnBC,EAAYH,EAAAG,aACZC,EAAKJ,EAAAI,MACMC,cAIXC,EASEP,EAT2BQ,KAA7BA,OAAI,IAAAD,GAAGF,aAAA,EAAAA,EAAOG,OAAQ,QAAOD,EAC7BE,EAQET,QAPFU,EAOEV,EAPOU,UACTC,EAMEX,EANMW,SACRC,EAKEZ,EALsBa,UAAxBA,OAAS,IAAAD,EAAG,aAAYA,EACxBE,EAIEd,EAAKc,MAHPC,EAGEf,EAAKe,MAFPC,EAEEhB,EAAKiB,KAFPA,cAAYD,EACTE,EACDC,EAAAnB,EAVE,CAAA,OAAA,QAAA,YAAA,WAAA,YAAA,QAAA,QAAA,SAYAN,EAAiB0B,IAEjBC,EAAAC,EAAiCjC,EAAMkC,SAC3C,WACE,OAAEC,MAAMC,QAAQjB,GAAQA,EAAO,CAACA,EAAMA,IAAgCkB,KACpE,SAAAC,GAAQ,OA5BhB,SAAuBnB,GACrB,MAAuB,iBAATA,EAAoBb,EAAUa,GAAQA,GAAQ,CAC9D,CA0BgBoB,CAAcD,EAAK,GAC5B,GACH,CAACnB,IACF,GANMhB,EAAc6B,EAAA,GAAE5B,EAAY4B,EAAA,GAQ7BQ,EAAaC,EAAQnB,EAAU,CAAEoB,WAAW,IAE5CC,OACMC,IAAVxB,GAAqC,eAAdI,EAA6B,SAAWJ,EAC3DyB,EAAY9B,EAAa,SACzB+B,EAAKC,EACTF,EACA,GAAGG,OAAAH,EAAa,KAAAG,OAAAxB,KAAWyB,EAAA,CAAA,GAExB,UAAGJ,EAAS,SAA6B,QAApB5B,EACtBgC,EAAC,UAAGJ,EAAS,WAAAG,OAAUL,IAAgBA,EAEzCM,GAAA5B,GAGI6B,EAAgB,GAAGF,OAAAH,WAEnBM,EACgB,QAApBlC,EAA4B,aAAe,cAGzCf,EAAc,EACZkD,EAAQZ,EAAWH,KAAI,SAACgB,EAAYC,GACpCD,UACFnD,EAAcoD,GAGhB,IAAMC,EAAOF,GAASA,EAAME,KAAQ,GAAGP,OAAAE,EAAiB,KAAAF,OAAAM,GAExD,OACEtD,EAAAwD,cAACC,EAAI,CACHpC,UAAW6B,EACXK,IAAKA,EACL/B,UAAWA,EACXkC,MAAOJ,EACPH,gBAAiBA,EACjB1B,MAAOA,EACPG,KAAMA,GAELyB,EAGP,IAEMM,EAAe3D,EAAMkC,SACzB,WAAM,MAAC,CAAE/B,eAAcA,EAAEC,aAAYA,EAAEF,YAAWA,EAAEG,oBACpD,CAACF,EAAgBC,EAAcF,EAAaG,IAG9C,GAA0B,IAAtBmC,EAAWoB,OACb,OAAO,KAGT,IAAMC,EAAgC,CAAA,EAetC,OAbIjC,IACFiC,EAASC,SAAW,OAEfzD,IACHwD,EAASE,aAAe,IAAIf,OAAA5C,UAI5BC,IACFwD,EAASG,UAAY,GAAGhB,OAAA7C,QACxB0D,EAASI,OAAS,GAAGjB,OAAA5C,SAIrBJ,EAAAwD,cAACU,EAAIC,EAAA,CACH9C,UAAWyB,EACXpB,MACKyC,EAAAA,EAAA,CAAA,EAAAN,GACAnC,IAEDG,GAEJ7B,EAAAwD,cAACzD,EAAaqE,SAAQ,CAACC,MAAOV,GAC3BP,GAIT"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Space/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { View } from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport useFlexGapSupport from \"@/hooks/useFlexGapSupport\";\nimport { toArray } from \"@/utils\";\nimport { ConfigContext, SizeType } from \"./config-provider\";\nimport Item from \"./Item\";\nimport type { XHComponentCommonProps } from \"../../types\";\n\nimport \"./index.scss\";\n\nexport const SpaceConfigContext = ConfigContext;\nexport type SpaceProps = {\n direction?: \"horizontal\" | \"vertical\";\n align?: \"start\" | \"end\" | \"center\" | \"baseline\";\n size?: SizeType | [SizeType, SizeType];\n style?: React.CSSProperties;\n split?: React.ReactNode;\n wrap?: boolean;\n} & XHComponentCommonProps;\n\nexport const SpaceContext = React.createContext({\n latestIndex: 0,\n horizontalSize: 0,\n verticalSize: 0,\n supportFlexGap: false,\n});\n\nconst spaceSize = {\n small: 8,\n normal: 16,\n large: 24,\n};\n\nfunction getNumberSize(size: SizeType) {\n return typeof size === \"string\" ? spaceSize[size] : size || 0;\n}\n\nconst XHSpace: React.FC<SpaceProps> = props => {\n const {\n getPrefixCls,\n space,\n direction: directionConfig,\n } = React.useContext(ConfigContext);\n\n const {\n size = space?.size || \"small\",\n align,\n className,\n children,\n direction = \"horizontal\",\n split,\n style,\n wrap = false,\n ...otherProps\n } = props;\n\n const supportFlexGap = useFlexGapSupport();\n\n const [horizontalSize, verticalSize] = React.useMemo(\n () =>\n ((Array.isArray(size) ? size : [size, size]) as [SizeType, SizeType]).map(\n item => getNumberSize(item)\n ),\n [size]\n );\n\n const childNodes = toArray(children, { keepEmpty: true });\n\n const mergedAlign =\n align === undefined && direction === \"horizontal\" ? \"center\" : align;\n const prefixCls = getPrefixCls(\"space\");\n const cn = classNames(\n prefixCls,\n `${prefixCls}-${direction}`,\n {\n [`${prefixCls}-rtl`]: directionConfig === \"rtl\",\n [`${prefixCls}-align-${mergedAlign}`]: mergedAlign,\n },\n className\n );\n\n const itemClassName = `${prefixCls}-item`;\n\n const marginDirection =\n directionConfig === \"rtl\" ? \"marginLeft\" : \"marginRight\";\n\n // Calculate latest one\n let latestIndex = 0;\n const nodes = childNodes.map((child: any, i) => {\n if (child !== null && child !== undefined) {\n latestIndex = i;\n }\n\n const key = (child && child.key) || `${itemClassName}-${i}`;\n\n return (\n <Item\n className={itemClassName}\n key={key}\n direction={direction}\n index={i}\n marginDirection={marginDirection}\n split={split}\n wrap={wrap}\n >\n {child}\n </Item>\n );\n });\n\n const spaceContext = React.useMemo(\n () => ({ horizontalSize, verticalSize, latestIndex, supportFlexGap }),\n [horizontalSize, verticalSize, latestIndex, supportFlexGap]\n );\n\n if (childNodes.length === 0) {\n return null;\n }\n\n const gapStyle: React.CSSProperties = {};\n\n if (wrap) {\n gapStyle.flexWrap = \"wrap\";\n\n if (!supportFlexGap) {\n gapStyle.marginBottom = `-${verticalSize}px`;\n }\n }\n\n if (supportFlexGap) {\n gapStyle.columnGap = `${horizontalSize}px`;\n gapStyle.rowGap = `${verticalSize}px`;\n }\n\n return (\n <View\n className={cn}\n style={{\n ...gapStyle,\n ...style,\n }}\n {...otherProps}\n >\n <SpaceContext.Provider value={spaceContext}>\n {nodes}\n </SpaceContext.Provider>\n </View>\n );\n};\n\nexport default XHSpace;\n"],"names":["SpaceContext","React","createContext","latestIndex","horizontalSize","verticalSize","supportFlexGap","spaceSize","small","normal","large","XHSpace","props","_b","useContext","ConfigContext","getPrefixCls","space","directionConfig","_c","size","align","className","children","_d","direction","split","style","_e","wrap","otherProps","__rest","useFlexGapSupport","_f","__read","useMemo","Array","isArray","map","item","getNumberSize","childNodes","toArray","keepEmpty","mergedAlign","undefined","prefixCls","cn","classNames","concat","_a","itemClassName","marginDirection","nodes","child","i","key","createElement","Item","index","spaceContext","length","gapStyle","flexWrap","marginBottom","columnGap","rowGap","View","__assign","Provider","value"],"mappings":"8VAqBa,IAAAA,EAAeC,EAAMC,cAAc,CAC9CC,YAAa,EACbC,eAAgB,EAChBC,aAAc,EACdC,gBAAgB,IAGZC,EAAY,CAChBC,MAAO,EACPC,OAAQ,GACRC,MAAO,IAOH,IAAAC,EAAgC,SAAAC,SAC9BC,EAIFZ,EAAMa,WAAWC,GAHnBC,EAAYH,EAAAG,aACZC,EAAKJ,EAAAI,MACMC,cAIXC,EASEP,EAT2BQ,KAA7BA,OAAI,IAAAD,GAAGF,aAAA,EAAAA,EAAOG,OAAQ,QAAOD,EAC7BE,EAQET,QAPFU,EAOEV,EAPOU,UACTC,EAMEX,EANMW,SACRC,EAKEZ,EALsBa,UAAxBA,OAAS,IAAAD,EAAG,aAAYA,EACxBE,EAIEd,EAAKc,MAHPC,EAGEf,EAAKe,MAFPC,EAEEhB,EAAKiB,KAFPA,cAAYD,EACTE,EACDC,EAAAnB,EAVE,CAAA,OAAA,QAAA,YAAA,WAAA,YAAA,QAAA,QAAA,SAYAN,EAAiB0B,IAEjBC,EAAAC,EAAiCjC,EAAMkC,SAC3C,WACE,OAAEC,MAAMC,QAAQjB,GAAQA,EAAO,CAACA,EAAMA,IAAgCkB,KACpE,SAAAC,GAAQ,OA5BhB,SAAuBnB,GACrB,MAAuB,iBAATA,EAAoBb,EAAUa,GAAQA,GAAQ,CAC9D,CA0BgBoB,CAAcD,EAAK,GAC5B,GACH,CAACnB,IACF,GANMhB,EAAc6B,EAAA,GAAE5B,EAAY4B,EAAA,GAQ7BQ,EAAaC,EAAQnB,EAAU,CAAEoB,WAAW,IAE5CC,OACMC,IAAVxB,GAAqC,eAAdI,EAA6B,SAAWJ,EAC3DyB,EAAY9B,EAAa,SACzB+B,EAAKC,EACTF,EACA,GAAGG,OAAAH,EAAa,KAAAG,OAAAxB,KAAWyB,EAAA,CAAA,GAExB,UAAGJ,EAAS,SAA6B,QAApB5B,EACtBgC,EAAC,UAAGJ,EAAS,WAAAG,OAAUL,IAAgBA,EAEzCM,GAAA5B,GAGI6B,EAAgB,GAAGF,OAAAH,WAEnBM,EACgB,QAApBlC,EAA4B,aAAe,cAGzCf,EAAc,EACZkD,EAAQZ,EAAWH,KAAI,SAACgB,EAAYC,GACpCD,UACFnD,EAAcoD,GAGhB,IAAMC,EAAOF,GAASA,EAAME,KAAQ,GAAGP,OAAAE,EAAiB,KAAAF,OAAAM,GAExD,OACEtD,EAAAwD,cAACC,EAAI,CACHpC,UAAW6B,EACXK,IAAKA,EACL/B,UAAWA,EACXkC,MAAOJ,EACPH,gBAAiBA,EACjB1B,MAAOA,EACPG,KAAMA,GAELyB,EAGP,IAEMM,EAAe3D,EAAMkC,SACzB,WAAM,MAAC,CAAE/B,eAAcA,EAAEC,aAAYA,EAAEF,YAAWA,EAAEG,oBACpD,CAACF,EAAgBC,EAAcF,EAAaG,IAG9C,GAA0B,IAAtBmC,EAAWoB,OACb,OAAO,KAGT,IAAMC,EAAgC,CAAA,EAetC,OAbIjC,IACFiC,EAASC,SAAW,OAEfzD,IACHwD,EAASE,aAAe,IAAIf,OAAA5C,UAI5BC,IACFwD,EAASG,UAAY,GAAGhB,OAAA7C,QACxB0D,EAASI,OAAS,GAAGjB,OAAA5C,SAIrBJ,EAAAwD,cAACU,EAAIC,EAAA,CACH9C,UAAWyB,EACXpB,MACKyC,EAAAA,EAAA,CAAA,EAAAN,GACAnC,IAEDG,GAEJ7B,EAAAwD,cAACzD,EAAaqE,SAAQ,CAACC,MAAOV,GAC3BP,GAIT"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Step/Steps/index.tsx"],"sourcesContent":["import React, { FC, ReactElement } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { XHComponentCommonProps } from \"@/types\";\n\nimport { StepProps } from \"..\";\n\nconst classPrefix = `xh-steps`;\nconst stepClassPrefix = `xh-step`;\n\nconst defaultIcon = <span className={`${stepClassPrefix}-icon-dot`} />;\n\nexport type StepsProps = {\n current?: number;\n direction?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n style?: React.CSSProperties & {\n \"--line-to-next-color\"?: string;\n \"--color-primary\"?: string;\n };\n} & XHComponentCommonProps;\n\nconst Steps: FC<StepsProps> = props => {\n const { direction = \"horizontal\", current = 0, style, className } = props;\n const classString = classNames(\n classPrefix,\n `${classPrefix}-${direction}`,\n className\n );\n\n return (\n <View className={classString} style={style}>\n {React.Children.map(\n props.children,\n (child: ReactElement<StepProps>, index) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n const props = child.props;\n let status = props.status || \"wait\";\n\n if (index < current) {\n status = props.status || \"finish\";\n } else if (index === current) {\n status = props.status || \"process\";\n }\n\n const icon = props.icon ?? defaultIcon;\n\n return React.cloneElement(child, {\n status,\n icon,\n });\n }\n )}\n </View>\n );\n};\n\nexport default Steps;\n"],"names":["defaultIcon","React","createElement","className","concat","Steps","props","_a","direction","_b","current","style","classString","classNames","View","Children","map","children","child","index","isValidElement","status","icon","cloneElement"],"mappings":"yFAOA,IAGMA,EAAcC,EAAMC,cAAA,OAAA,CAAAC,UAAW,GAAGC,OAFhB,UAE0C,eAY5DC,EAAwB,SAAAC,GACpB,IAAAC,EAA4DD,EAAKE,UAAjEA,OAAY,IAAAD,EAAA,aAAYA,EAAEE,EAAkCH,EAAvBI,QAAXA,OAAO,IAAAD,EAAG,EAACA,EAAEE,EAAqBL,EAAhBK,MAAER,EAAcG,EAAKH,UACnES,EAAcC,EAjBF,WAmBhB,GAAAT,OAnBgB,WAmBF,KAAAA,OAAII,GAClBL,GAGF,OACEF,EAACC,cAAAY,EAAK,CAAAX,UAAWS,EAAaD,MAAOA,GAClCV,EAAMc,SAASC,IACdV,EAAMW,UACN,SAACC,EAAgCC,SAC/B,IAAKlB,EAAMmB,eAAeF,GACxB,OAAOA,EAET,IAAMZ,EAAQY,EAAMZ,MAChBe,EAASf,EAAMe,QAAU,OAEzBF,EAAQT,EACVW,EAASf,EAAMe,QAAU,SAChBF,IAAUT,IACnBW,EAASf,EAAMe,QAAU,WAG3B,IAAMC,EAAiB,QAAVf,EAAAD,EAAMgB,YAAI,IAAAf,EAAAA,EAAIP,EAE3B,OAAOC,EAAMsB,aAAaL,EAAO,CAC/BG,OAAMA,EACNC,KAAIA,GAEP,IAIT"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Step/Steps/index.tsx"],"sourcesContent":["import React, { FC, ReactElement } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport type { XHComponentCommonProps } from \"../../../types\";\n\nimport { StepProps } from \"..\";\n\nconst classPrefix = `xh-steps`;\nconst stepClassPrefix = `xh-step`;\n\nconst defaultIcon = <span className={`${stepClassPrefix}-icon-dot`} />;\n\nexport type StepsProps = {\n current?: number;\n direction?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n style?: React.CSSProperties & {\n \"--line-to-next-color\"?: string;\n \"--color-primary\"?: string;\n };\n} & XHComponentCommonProps;\n\nconst Steps: FC<StepsProps> = props => {\n const { direction = \"horizontal\", current = 0, style, className } = props;\n const classString = classNames(\n classPrefix,\n `${classPrefix}-${direction}`,\n className\n );\n\n return (\n <View className={classString} style={style}>\n {React.Children.map(\n props.children,\n (child: ReactElement<StepProps>, index) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n const props = child.props;\n let status = props.status || \"wait\";\n\n if (index < current) {\n status = props.status || \"finish\";\n } else if (index === current) {\n status = props.status || \"process\";\n }\n\n const icon = props.icon ?? defaultIcon;\n\n return React.cloneElement(child, {\n status,\n icon,\n });\n }\n )}\n </View>\n );\n};\n\nexport default Steps;\n"],"names":["defaultIcon","React","createElement","className","concat","Steps","props","_a","direction","_b","current","style","classString","classNames","View","Children","map","children","child","index","isValidElement","status","icon","cloneElement"],"mappings":"yFAOA,IAGMA,EAAcC,EAAMC,cAAA,OAAA,CAAAC,UAAW,GAAGC,OAFhB,UAE0C,eAY5DC,EAAwB,SAAAC,GACpB,IAAAC,EAA4DD,EAAKE,UAAjEA,OAAY,IAAAD,EAAA,aAAYA,EAAEE,EAAkCH,EAAvBI,QAAXA,OAAO,IAAAD,EAAG,EAACA,EAAEE,EAAqBL,EAAhBK,MAAER,EAAcG,EAAKH,UACnES,EAAcC,EAjBF,WAmBhB,GAAAT,OAnBgB,WAmBF,KAAAA,OAAII,GAClBL,GAGF,OACEF,EAACC,cAAAY,EAAK,CAAAX,UAAWS,EAAaD,MAAOA,GAClCV,EAAMc,SAASC,IACdV,EAAMW,UACN,SAACC,EAAgCC,SAC/B,IAAKlB,EAAMmB,eAAeF,GACxB,OAAOA,EAET,IAAMZ,EAAQY,EAAMZ,MAChBe,EAASf,EAAMe,QAAU,OAEzBF,EAAQT,EACVW,EAASf,EAAMe,QAAU,SAChBF,IAAUT,IACnBW,EAASf,EAAMe,QAAU,WAG3B,IAAMC,EAAiB,QAAVf,EAAAD,EAAMgB,YAAI,IAAAf,EAAAA,EAAIP,EAE3B,OAAOC,EAAMsB,aAAaL,EAAO,CAC/BG,OAAMA,EACNC,KAAIA,GAEP,IAIT"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Step/index.tsx"],"sourcesContent":["import React, { ReactNode, ForwardRefExoticComponent } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { XHComponentCommonProps } from \"@/types\";\n\nimport Steps from \"./Steps\";\nimport \"./index.scss\";\n\nexport type StepProps = {\n icon?: string | ReactNode;\n title: string | ReactNode;\n description?: string | ReactNode;\n direction?: \"horizontal\" | \"vertical\";\n status?: \"wait\" | \"process\" | \"finish\" | \"error\";\n fancy?: boolean;\n style?: React.CSSProperties;\n} & XHComponentCommonProps;\n\nconst classPrefix = \"xh-step\";\n\nconst Step: React.FC<StepProps> = props => {\n const {\n title,\n description,\n icon,\n status = \"wait\",\n fancy,\n style,\n className,\n } = props;\n\n return (\n <View\n className={classNames(\n `${classPrefix}`,\n `${classPrefix}-status-${status}`,\n className\n )}\n style={style}\n >\n <View className={`${classPrefix}-indicator`}>\n <View\n className={classNames(`${classPrefix}-icon-container`, { fancy })}\n >\n {icon}\n </View>\n </View>\n <View className={`${classPrefix}-content`}>\n <View className={`${classPrefix}-title`}>{title}</View>\n {!!description && (\n <View className={`${classPrefix}-description`}>{description}</View>\n )}\n </View>\n </View>\n );\n};\n\nexport type HybridComponent = ForwardRefExoticComponent<StepProps> & {\n Steps: typeof Steps;\n};\n\nconst XHStep = Step as HybridComponent;\nXHStep.Steps = Steps;\n\nexport default XHStep;\n"],"names":["XHStep","props","title","description","icon","_a","status","fancy","style","className","React","View","classNames","concat","createElement","Steps"],"mappings":"yHAkBA,IA2CMA,EAzC4B,SAAAC,GAE9B,IAAAC,EAOED,EAPGC,MACLC,EAMEF,EANSE,YACXC,EAKEH,OAJFI,EAIEJ,EAJaK,OAAfA,OAAM,IAAAD,EAAG,OAAMA,EACfE,EAGEN,EAHGM,MACLC,EAEEP,EAFGO,MACLC,EACER,YAEJ,OACES,gBAACC,EAAI,CACHF,UAAWG,EACT,GAAAC,OAhBY,WAiBZ,GAAGA,OAjBS,UAiBa,YAAAA,OAAAP,GACzBG,GAEFD,MAAOA,GAEPE,EAAAI,cAACH,EAAK,CAAAF,UAAW,GAAAI,OAtBH,UAsB6B,eACzCH,EAAAI,cAACH,EACC,CAAAF,UAAWG,EAAW,UAxBZ,UAwB0B,mBAAmB,CAAEL,MAAKA,KAE7DH,IAGLM,EAAAI,cAACH,EAAK,CAAAF,UAAW,GAAAI,OA7BH,UA6B2B,aACvCH,EAACI,cAAAH,GAAKF,UAAW,UA9BL,UA8BmB,WAAWP,KACvCC,GACDO,EAACI,cAAAH,GAAKF,UAAW,UAhCP,UAgCqB,iBAAiBN,IAK1D,EAOAH,EAAOe,MAAQA"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Step/index.tsx"],"sourcesContent":["import React, { ReactNode, ForwardRefExoticComponent } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport type { XHComponentCommonProps } from \"../../types\";\n\nimport Steps from \"./Steps\";\nimport \"./index.scss\";\n\nexport type StepProps = {\n icon?: string | ReactNode;\n title: string | ReactNode;\n description?: string | ReactNode;\n direction?: \"horizontal\" | \"vertical\";\n status?: \"wait\" | \"process\" | \"finish\" | \"error\";\n fancy?: boolean;\n style?: React.CSSProperties;\n} & XHComponentCommonProps;\n\nconst classPrefix = \"xh-step\";\n\nconst Step: React.FC<StepProps> = props => {\n const {\n title,\n description,\n icon,\n status = \"wait\",\n fancy,\n style,\n className,\n } = props;\n\n return (\n <View\n className={classNames(\n `${classPrefix}`,\n `${classPrefix}-status-${status}`,\n className\n )}\n style={style}\n >\n <View className={`${classPrefix}-indicator`}>\n <View\n className={classNames(`${classPrefix}-icon-container`, { fancy })}\n >\n {icon}\n </View>\n </View>\n <View className={`${classPrefix}-content`}>\n <View className={`${classPrefix}-title`}>{title}</View>\n {!!description && (\n <View className={`${classPrefix}-description`}>{description}</View>\n )}\n </View>\n </View>\n );\n};\n\nexport type HybridComponent = ForwardRefExoticComponent<StepProps> & {\n Steps: typeof Steps;\n};\n\nconst XHStep = Step as HybridComponent;\nXHStep.Steps = Steps;\n\nexport default XHStep;\n"],"names":["XHStep","props","title","description","icon","_a","status","fancy","style","className","React","View","classNames","concat","createElement","Steps"],"mappings":"yHAkBA,IA2CMA,EAzC4B,SAAAC,GAE9B,IAAAC,EAOED,EAPGC,MACLC,EAMEF,EANSE,YACXC,EAKEH,OAJFI,EAIEJ,EAJaK,OAAfA,OAAM,IAAAD,EAAG,OAAMA,EACfE,EAGEN,EAHGM,MACLC,EAEEP,EAFGO,MACLC,EACER,YAEJ,OACES,gBAACC,EAAI,CACHF,UAAWG,EACT,GAAAC,OAhBY,WAiBZ,GAAGA,OAjBS,UAiBa,YAAAA,OAAAP,GACzBG,GAEFD,MAAOA,GAEPE,EAAAI,cAACH,EAAK,CAAAF,UAAW,GAAAI,OAtBH,UAsB6B,eACzCH,EAAAI,cAACH,EACC,CAAAF,UAAWG,EAAW,UAxBZ,UAwB0B,mBAAmB,CAAEL,MAAKA,KAE7DH,IAGLM,EAAAI,cAACH,EAAK,CAAAF,UAAW,GAAAI,OA7BH,UA6B2B,aACvCH,EAACI,cAAAH,GAAKF,UAAW,UA9BL,UA8BmB,WAAWP,KACvCC,GACDO,EAACI,cAAAH,GAAKF,UAAW,UAhCP,UAgCqB,iBAAiBN,IAK1D,EAOAH,EAAOe,MAAQA"}