taro-react-uilib 1.3.7-3 → 1.3.7-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 (57) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/components/ActionSheet/index.js +1 -1
  3. package/dist/components/ActionSheet/index.js.map +1 -1
  4. package/dist/components/AmountInput/index.js +1 -1
  5. package/dist/components/AmountInput/index.js.map +1 -1
  6. package/dist/components/AmountKeyboard/index.js +1 -1
  7. package/dist/components/AmountKeyboard/index.js.map +1 -1
  8. package/dist/components/BankCardNumberInput/index.js +2 -0
  9. package/dist/components/BankCardNumberInput/index.js.map +1 -0
  10. package/dist/components/DialogRef/index.js +1 -1
  11. package/dist/components/DialogRef/index.js.map +1 -1
  12. package/dist/components/FormInput/index.js +1 -1
  13. package/dist/components/FormInput/index.js.map +1 -1
  14. package/dist/components/IDNumberInput/index.js +2 -0
  15. package/dist/components/IDNumberInput/index.js.map +1 -0
  16. package/dist/components/src/index.js +1 -1
  17. package/dist/components/src/utils/index.js +1 -1
  18. package/dist/components/src/utils/index.js.map +1 -1
  19. package/dist/index.js +6 -6
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.umd.js +6 -6
  22. package/dist/index.umd.js.map +1 -1
  23. package/dist/styles/components/actionsheet.scss +4 -3
  24. package/dist/styles/components/amountinput.scss +12 -10
  25. package/dist/styles/components/bankcardnumberinput.scss +37 -0
  26. package/dist/styles/components/captcha.scss +1 -2
  27. package/dist/styles/components/dialogref.scss +3 -0
  28. package/dist/styles/components/idnumberinput.scss +36 -0
  29. package/dist/styles/components/index.scss +2 -0
  30. package/lib/components/ActionSheet/index.js +11 -4
  31. package/lib/components/ActionSheet/index.js.map +1 -1
  32. package/lib/components/AmountInput/index.js +4 -4
  33. package/lib/components/AmountInput/index.js.map +1 -1
  34. package/lib/components/AmountKeyboard/index.js +35 -2
  35. package/lib/components/AmountKeyboard/index.js.map +1 -1
  36. package/lib/components/BankCardNumberInput/index.js +38 -0
  37. package/lib/components/BankCardNumberInput/index.js.map +1 -0
  38. package/lib/components/DialogRef/index.js +4 -2
  39. package/lib/components/DialogRef/index.js.map +1 -1
  40. package/lib/components/FormInput/index.js +2 -1
  41. package/lib/components/FormInput/index.js.map +1 -1
  42. package/lib/components/IDNumberInput/index.js +36 -0
  43. package/lib/components/IDNumberInput/index.js.map +1 -0
  44. package/lib/index.js +2 -0
  45. package/lib/index.js.map +1 -1
  46. package/lib/utils/index.js +86 -0
  47. package/lib/utils/index.js.map +1 -1
  48. package/package.json +1 -1
  49. package/types/components/ActionSheet/index.d.ts +1 -1
  50. package/types/components/AmountInput/index.d.ts +2 -1
  51. package/types/components/AmountKeyboard/index.d.ts +4 -0
  52. package/types/components/BankCardNumberInput/index.d.ts +42 -0
  53. package/types/components/DialogRef/index.d.ts +2 -0
  54. package/types/components/FormInput/index.d.ts +1 -0
  55. package/types/components/IDNumberInput/index.d.ts +34 -0
  56. package/types/index.d.ts +2 -0
  57. package/types/utils/index.d.ts +18 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## [1.3.7-4](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.7-3...v1.3.7-4) (2023-11-06)
2
+
3
+
4
+ ### Features
5
+
6
+ * actionSheet高亮选中 ([4278bfa](https://code.xhdev.xyz/h5group/taro-uilib/commits/4278bfa57f9dcc4b27239cf5d1674df2ee5728e4))
7
+ * amountInput ([618fe85](https://code.xhdev.xyz/h5group/taro-uilib/commits/618fe8596af2f906dde2771071eb66e4aa47a0fe))
8
+ * AmountInput和AmountKeyboard支持小数 ([52e2409](https://code.xhdev.xyz/h5group/taro-uilib/commits/52e240969cc584ffae0ef65f3e4c959907b611f7))
9
+ * dialog按钮增加纵向 ([12a42a0](https://code.xhdev.xyz/h5group/taro-uilib/commits/12a42a08d469387ad521dd6dbab8c06a07117bbc))
10
+ * 新增银行卡、身份证号输入框业务组件 ([b2ab606](https://code.xhdev.xyz/h5group/taro-uilib/commits/b2ab606d9e383b947f7d1cd7ad49646cc7e5cc75))
11
+ * 新增银行卡、身份证输入组件 ([26376c4](https://code.xhdev.xyz/h5group/taro-uilib/commits/26376c4cc68ce4b1ae9d378bbec160ca67734995))
12
+ * 新增银行卡输入组件 ([0f148f8](https://code.xhdev.xyz/h5group/taro-uilib/commits/0f148f826978990926f3393a4204da181f82a875))
13
+
14
+
15
+
1
16
  ## [1.3.7-3](https://code.xhdev.xyz/h5group/taro-uilib/compare/v1.3.7-2...v1.3.7-3) (2023-10-20)
2
17
 
3
18
 
@@ -1,2 +1,2 @@
1
- import{__read as e}from"../node_modules/tslib/tslib.es6.js";import n,{useState as t,useEffect as a}from"react";import o from"classnames";import{View as i}from"@tarojs/components";import c from"../Popup/index.js";var l=function(l){var r=l.visible,s=void 0!==r&&r,m=l.title,u=l.description,h=l.data,d=void 0===h?[]:h,p=l.onConfirm,f=l.onCancel,E=l.className,x=l.children,v=l.style,N=l.mode,C=l.submitText,k=void 0===C?"提交":C,b=l.cancelText,T=void 0===b?"取消":b,g=l.showCancel,y=void 0!==g&&g,j=l.renderItem,P=l.ItemWrapper,_=l.onSubmit,w=l.onClick,A=l.showClose,I=void 0!==A&&A,O=l.justifyContent,R=void 0===O?"center":O,V=l.inline,F=void 0!==V&&V,M=e(t(s),2),S=M[0],W=M[1],q=function(e){null==f||f(e),null==w||w(!1),W(!1)};a((function(){W(s)}),[s]);var z=function(){null==_||_()},B=function(){return d.map((function(e,t){return j?j(e,t):n.createElement(i,{className:o("xh-action-sheet-main-panel-item",R),key:t,onClick:function(){!function(e,n){null==p||p(e,n),W(!1)}(e,t)}},"string"==typeof e?e:e.text)}))},D=I||"controlled"===N&&!y;return n.createElement(i,{className:o("xh-action-sheet",{inline:F}),onClick:function(){w?w(!s):d.length<=0||W(!0)}},n.createElement(c,{visible:S},n.createElement(i,{className:o("xh-action-sheet-main",E,N),style:v},m&&n.createElement(i,{className:"xh-action-sheet-main-header"},n.createElement(i,{className:"xh-action-sheet-main-header-title"},m),n.createElement(i,{className:"xh-action-sheet-main-header-desc"},u),D&&n.createElement(i,{className:"xh-action-sheet-main-header-close",onClick:function(){return q()}})),n.createElement(i,{className:o("xh-action-sheet-main-panel",{panel:!j},{noTitle:!m}),onClick:function(e){return"h5"!==process.env.TARO_ENV&&e.stopPropagation()}},P?n.createElement(P,null,B()):n.createElement(n.Fragment,null,B())),n.createElement(i,{className:o("xh-action-sheet-main-action",{noMarinTop:"controlled"!==N&&D}),onClick:function(e){return"h5"!==process.env.TARO_ENV&&e.stopPropagation()}},"controlled"===N?n.createElement(i,null,n.createElement(i,{className:"xh-action-sheet-main-action-submit",onClick:z},k),y&&n.createElement(i,{className:"xh-action-sheet-main-action-cancel mode",onClick:function(){return q(!0)}},T)):D?n.createElement("div",null):n.createElement(i,{className:"xh-action-sheet-main-action-cancel",onClick:function(){return q(!0)}},T)))),x)};export{l as default};
1
+ import{__read as e}from"../node_modules/tslib/tslib.es6.js";import n,{useState as t,useEffect as a}from"react";import o from"classnames";import{View as i}from"@tarojs/components";import l from"../Popup/index.js";var c=function(c){var r=c.visible,s=void 0!==r&&r,m=c.title,u=c.description,h=c.data,d=void 0===h?[]:h,f=c.onConfirm,p=c.onCancel,v=c.className,E=c.children,x=c.style,N=c.mode,C=c.submitText,k=void 0===C?"提交":C,g=c.cancelText,y=void 0===g?"取消":g,b=c.showCancel,T=void 0!==b&&b,j=c.renderItem,P=c.ItemWrapper,V=c.onSubmit,_=c.onClick,w=c.showClose,A=void 0!==w&&w,I=c.justifyContent,O=void 0===I?"center":I,R=c.inline,F=void 0!==R&&R,M=c.defaultValue,S=void 0===M?"":M,W=e(t(s),2),q=W[0],z=W[1],B=e(t("string"==typeof S?S:null==S?void 0:S.value),2),D=B[0],G=B[1],H=function(e){null==p||p(e),null==_||_(!1),z(!1)};a((function(){z(s)}),[s]);var J=function(){null==V||V()},K=function(){return d.map((function(e,t){return j?j(e,t):n.createElement(i,{className:o("xh-action-sheet-main-panel-item",O,{active:"string"==typeof e?e===D:e.value===D}),key:t,onClick:function(){!function(e,n){null==f||f(e,n),z(!1);var t="string"==typeof e?e:e.value;G(t)}(e,t)}},"string"==typeof e?e:e.text)}))},L=A||"controlled"===N&&!T;return n.createElement(i,{className:o("xh-action-sheet",{inline:F}),onClick:function(){_?_(!s):d.length<=0||z(!0)}},n.createElement(l,{visible:q},n.createElement(i,{className:o("xh-action-sheet-main",v,N),style:x},m&&n.createElement(i,{className:"xh-action-sheet-main-header"},n.createElement(i,{className:"xh-action-sheet-main-header-title"},m),n.createElement(i,{className:"xh-action-sheet-main-header-desc"},u),L&&n.createElement(i,{className:"xh-action-sheet-main-header-close",onClick:function(){return H()}})),n.createElement(i,{className:o("xh-action-sheet-main-panel",{noTitle:!m}),onClick:function(e){return"h5"!==process.env.TARO_ENV&&e.stopPropagation()}},P?n.createElement(P,null,K()):n.createElement(n.Fragment,null,K())),n.createElement(i,{className:o("xh-action-sheet-main-action",{noMarinTop:"controlled"!==N&&L}),onClick:function(e){return"h5"!==process.env.TARO_ENV&&e.stopPropagation()}},"controlled"===N?n.createElement(i,null,n.createElement(i,{className:"xh-action-sheet-main-action-submit",onClick:J},k),T&&n.createElement(i,{className:"xh-action-sheet-main-action-cancel mode",onClick:function(){return H(!0)}},y)):L?n.createElement("div",null):n.createElement(i,{className:"xh-action-sheet-main-action-cancel",onClick:function(){return H(!0)}},y)))),E)};export{c as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/ActionSheet/index.tsx"],"sourcesContent":["import React, { useState, ReactNode, ReactElement, useEffect } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport Popup from \"../Popup\";\nimport \"./index.scss\";\n\nexport interface ActionSheetOption {\n text: ReactNode;\n value: string | number;\n [key: string]: any;\n}\n\nexport type ActionValue = string | ActionSheetOption;\nexport interface ActionProps<T extends ActionValue = ActionValue> {\n visible?: boolean;\n title?: ReactNode;\n data: T[];\n defaultValueData?: (string | number)[];\n className?: string;\n style?: React.CSSProperties;\n onConfirm?: (selectedValue: T, index: number) => void;\n onCancel?: (bottom?: boolean) => void;\n onClose?: () => void;\n onClick?: (flag: boolean) => void;\n children?: ReactNode;\n description?: ReactNode;\n /**\n * @summary controlled模式下,组件为受控组件,需要外部来显示和隐藏\n * @description submit 模式下会显示提交按钮,可以自定义,也可以显示取消按钮但是得传进来一个Toggle事件用来显示隐藏\n */\n mode?: \"controlled\";\n cancelText?: ReactNode;\n /**\n * submit模式下,默认不展示取消按钮,可以设置\n */\n showCancel?: boolean;\n submitText?: string;\n renderItem?: (item: T, index: number) => ReactNode;\n ItemWrapper?: React.FC<{}>;\n onSubmit?: () => void;\n justifyContent?: \"start\" | \"end\";\n /**\n * 显示右上角的关闭、默认只有不显示下面的取消的时候才出现\n */\n showClose?: boolean;\n inline?: boolean;\n}\n\nconst ActionSheet = <T extends ActionValue>(\n props: ActionProps<T>\n): ReactElement => {\n const {\n visible = false,\n title,\n description,\n data = [],\n onConfirm,\n onCancel,\n className,\n children,\n style,\n mode,\n submitText = \"提交\",\n cancelText = \"取消\",\n showCancel = false,\n renderItem,\n ItemWrapper,\n onSubmit,\n onClick,\n showClose = false,\n justifyContent = \"center\",\n inline = false,\n } = props;\n\n const [innerVisible, setInnerVisible] = useState(visible);\n\n const handleCancel = (bottom?: boolean) => {\n onCancel?.(bottom);\n onClick?.(false);\n setInnerVisible(false);\n };\n\n useEffect(() => {\n setInnerVisible(visible);\n }, [visible]);\n\n const handleClick = () => {\n if (onClick) {\n onClick(!visible);\n return;\n }\n if (data.length <= 0) return;\n setInnerVisible(true);\n };\n\n const handleConfirm = (item: T, index: number) => {\n onConfirm?.(item, index);\n setInnerVisible(false);\n };\n\n const handleSubmit = () => {\n onSubmit?.();\n };\n\n const submitButton = () => {\n return (\n <View>\n <View\n className=\"xh-action-sheet-main-action-submit\"\n onClick={handleSubmit}\n >\n {submitText}\n </View>\n {showCancel && (\n <View\n className=\"xh-action-sheet-main-action-cancel mode\"\n onClick={() => handleCancel(true)}\n >\n {cancelText}\n </View>\n )}\n </View>\n );\n };\n\n const itemRender = () =>\n data.map((item, index) => {\n return renderItem ? (\n renderItem(item, index)\n ) : (\n <View\n className={classNames(\n \"xh-action-sheet-main-panel-item\",\n justifyContent\n )}\n key={index}\n onClick={() => {\n handleConfirm(item, index);\n }}\n >\n {typeof item === \"string\" ? item : item.text}\n </View>\n );\n });\n\n const innerShowClose = showClose || (mode === \"controlled\" && !showCancel);\n\n return (\n <View\n className={classNames(\"xh-action-sheet\", { inline })}\n onClick={handleClick}\n >\n <Popup visible={innerVisible}>\n <View\n className={classNames(\"xh-action-sheet-main\", className, mode)}\n style={style}\n >\n {title && (\n <View className=\"xh-action-sheet-main-header\">\n <View className=\"xh-action-sheet-main-header-title\">{title}</View>\n <View className=\"xh-action-sheet-main-header-desc\">\n {description}\n </View>\n {innerShowClose && (\n <View\n className=\"xh-action-sheet-main-header-close\"\n onClick={() => handleCancel()}\n ></View>\n )}\n </View>\n )}\n <View\n className={classNames(\n \"xh-action-sheet-main-panel\",\n {\n panel: !renderItem,\n },\n { noTitle: !title }\n )}\n onClick={e => process.env.TARO_ENV !== \"h5\" && e.stopPropagation()}\n >\n {ItemWrapper ? (\n <ItemWrapper>{itemRender()}</ItemWrapper>\n ) : (\n <React.Fragment>{itemRender()}</React.Fragment>\n )}\n </View>\n <View\n className={classNames(\"xh-action-sheet-main-action\", {\n noMarinTop: mode !== \"controlled\" && innerShowClose,\n })}\n onClick={e => process.env.TARO_ENV !== \"h5\" && e.stopPropagation()}\n >\n {mode === \"controlled\" ? (\n submitButton()\n ) : !innerShowClose ? (\n <View\n className=\"xh-action-sheet-main-action-cancel\"\n onClick={() => handleCancel(true)}\n >\n {cancelText}\n </View>\n ) : (\n <div></div>\n )}\n </View>\n </View>\n </Popup>\n {children}\n </View>\n );\n};\n\nexport default ActionSheet;\n"],"names":["ActionSheet","props","_a","visible","title","description","_b","data","onConfirm","onCancel","className","children","style","mode","_c","submitText","_d","cancelText","_e","showCancel","renderItem","ItemWrapper","onSubmit","onClick","_f","showClose","_g","justifyContent","_h","inline","_j","__read","useState","innerVisible","setInnerVisible","handleCancel","bottom","useEffect","handleSubmit","itemRender","map","item","index","React","createElement","View","classNames","key","handleConfirm","text","innerShowClose","length","Popup","panel","noTitle","e","process","env","TARO_ENV","stopPropagation","Fragment","noMarinTop"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/ActionSheet/index.tsx"],"sourcesContent":["import React, { useState, ReactNode, ReactElement, useEffect } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport Popup from \"../Popup\";\nimport \"./index.scss\";\n\nexport interface ActionSheetOption {\n text: ReactNode;\n value: string | number;\n [key: string]: any;\n}\n\nexport type ActionValue = string | ActionSheetOption;\nexport interface ActionProps<T extends ActionValue = ActionValue> {\n visible?: boolean;\n title?: ReactNode;\n data: T[];\n defaultValue?: T;\n className?: string;\n style?: React.CSSProperties;\n onConfirm?: (selectedValue: T, index: number) => void;\n onCancel?: (bottom?: boolean) => void;\n onClose?: () => void;\n onClick?: (flag: boolean) => void;\n children?: ReactNode;\n description?: ReactNode;\n /**\n * @summary controlled模式下,组件为受控组件,需要外部来显示和隐藏\n * @description submit 模式下会显示提交按钮,可以自定义,也可以显示取消按钮但是得传进来一个Toggle事件用来显示隐藏\n */\n mode?: \"controlled\";\n cancelText?: ReactNode;\n /**\n * submit模式下,默认不展示取消按钮,可以设置\n */\n showCancel?: boolean;\n submitText?: string;\n renderItem?: (item: T, index: number) => ReactNode;\n ItemWrapper?: React.FC<{}>;\n onSubmit?: () => void;\n justifyContent?: \"start\" | \"end\";\n /**\n * 显示右上角的关闭、默认只有不显示下面的取消的时候才出现\n */\n showClose?: boolean;\n inline?: boolean;\n}\n\nconst ActionSheet = <T extends ActionValue>(\n props: ActionProps<T>\n): ReactElement => {\n const {\n visible = false,\n title,\n description,\n data = [],\n onConfirm,\n onCancel,\n className,\n children,\n style,\n mode,\n submitText = \"提交\",\n cancelText = \"取消\",\n showCancel = false,\n renderItem,\n ItemWrapper,\n onSubmit,\n onClick,\n showClose = false,\n justifyContent = \"center\",\n inline = false,\n defaultValue = \"\",\n } = props;\n\n const [innerVisible, setInnerVisible] = useState(visible);\n const [value, selectedValue] = useState(\n typeof defaultValue === \"string\" ? defaultValue : defaultValue?.value\n );\n\n const handleCancel = (bottom?: boolean) => {\n onCancel?.(bottom);\n onClick?.(false);\n setInnerVisible(false);\n };\n\n useEffect(() => {\n setInnerVisible(visible);\n }, [visible]);\n\n const handleClick = () => {\n if (onClick) {\n onClick(!visible);\n return;\n }\n if (data.length <= 0) return;\n setInnerVisible(true);\n };\n\n const handleConfirm = (item: T, index: number) => {\n onConfirm?.(item, index);\n setInnerVisible(false);\n const checkValue = typeof item === \"string\" ? item : item.value;\n selectedValue(checkValue);\n };\n\n const handleSubmit = () => {\n onSubmit?.();\n };\n\n const submitButton = () => {\n return (\n <View>\n <View\n className=\"xh-action-sheet-main-action-submit\"\n onClick={handleSubmit}\n >\n {submitText}\n </View>\n {showCancel && (\n <View\n className=\"xh-action-sheet-main-action-cancel mode\"\n onClick={() => handleCancel(true)}\n >\n {cancelText}\n </View>\n )}\n </View>\n );\n };\n\n const itemRender = () =>\n data.map((item, index) => {\n return renderItem ? (\n renderItem(item, index)\n ) : (\n <View\n className={classNames(\n \"xh-action-sheet-main-panel-item\",\n justifyContent,\n {\n active:\n typeof item === \"string\"\n ? item === value\n : item.value === value,\n }\n )}\n key={index}\n onClick={() => {\n handleConfirm(item, index);\n }}\n >\n {typeof item === \"string\" ? item : item.text}\n </View>\n );\n });\n\n const innerShowClose = showClose || (mode === \"controlled\" && !showCancel);\n\n return (\n <View\n className={classNames(\"xh-action-sheet\", { inline })}\n onClick={handleClick}\n >\n <Popup visible={innerVisible}>\n <View\n className={classNames(\"xh-action-sheet-main\", className, mode)}\n style={style}\n >\n {title && (\n <View className=\"xh-action-sheet-main-header\">\n <View className=\"xh-action-sheet-main-header-title\">{title}</View>\n <View className=\"xh-action-sheet-main-header-desc\">\n {description}\n </View>\n {innerShowClose && (\n <View\n className=\"xh-action-sheet-main-header-close\"\n onClick={() => handleCancel()}\n ></View>\n )}\n </View>\n )}\n <View\n className={classNames(\"xh-action-sheet-main-panel\", {\n noTitle: !title,\n })}\n onClick={e => process.env.TARO_ENV !== \"h5\" && e.stopPropagation()}\n >\n {ItemWrapper ? (\n <ItemWrapper>{itemRender()}</ItemWrapper>\n ) : (\n <React.Fragment>{itemRender()}</React.Fragment>\n )}\n </View>\n <View\n className={classNames(\"xh-action-sheet-main-action\", {\n noMarinTop: mode !== \"controlled\" && innerShowClose,\n })}\n onClick={e => process.env.TARO_ENV !== \"h5\" && e.stopPropagation()}\n >\n {mode === \"controlled\" ? (\n submitButton()\n ) : !innerShowClose ? (\n <View\n className=\"xh-action-sheet-main-action-cancel\"\n onClick={() => handleCancel(true)}\n >\n {cancelText}\n </View>\n ) : (\n <div></div>\n )}\n </View>\n </View>\n </Popup>\n {children}\n </View>\n );\n};\n\nexport default ActionSheet;\n"],"names":["ActionSheet","props","_a","visible","title","description","_b","data","onConfirm","onCancel","className","children","style","mode","_c","submitText","_d","cancelText","_e","showCancel","renderItem","ItemWrapper","onSubmit","onClick","_f","showClose","_g","justifyContent","_h","inline","_j","defaultValue","_k","__read","useState","innerVisible","setInnerVisible","_l","value","selectedValue","handleCancel","bottom","useEffect","handleSubmit","itemRender","map","item","index","React","createElement","View","classNames","active","key","checkValue","handleConfirm","text","innerShowClose","length","Popup","noTitle","e","process","env","TARO_ENV","stopPropagation","Fragment","noMarinTop"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import t from"react";import{View as e}from"@tarojs/components";import a from"classnames";var n=function(n){var o=n.value,m=n.maxlength,u=void 0===m?o.length:m,c=n.onFocus,r=n.className,s=n.focus,l=void 0!==s&&s,p=n.shortcut,i=void 0===p?"借全部":p,h=n.step,x=void 0===h?100:h,N=n.errTip,E=void 0===N?"":N,v=n.onUpgrade,d=n.minAmount,f=n.maxAmount,g=n.showUpgrade,k=void 0!==g&&g,b=n.loanOnekey,y=void 0===b?function(){}:b,C=n.placeholder,A=void 0===C?"单笔".concat(d,"-").concat(f,"元,").concat(x,"的整数倍"):C,P=n.slot;var U=a("xh-amount-input",r);return t.createElement(e,{className:U},t.createElement(e,{className:"xh-amount-input-top"},t.createElement(e,{className:"xh-amount-input-top-unit"},"¥"),t.createElement(e,{className:"xh-amount-input-top-amount",onClick:function(t){t.stopPropagation(),c&&c(t)}},t.createElement(e,{className:"xh-amount-input-top-amount-num"},t.createElement(e,{className:"xh-amount-input-top-amount-num-key"}," "),function(){var a=[""];if(""===o)return t.createElement(e,{className:"xh-amount-input-top-amount-num-placeholder"},A);for(var n=0;n<u;n++){var m=o[n];a.push(t.createElement(e,{key:n,className:"xh-amount-input-top-amount-num-key"},m))}return a}(),t.createElement(e,{className:a("xh-amount-input-top-amount-num-cursor",{focus:l})})),t.createElement(e,{className:"xh-amount-input-top-amount-shortcut",onClick:y},i)),E&&t.createElement(e,{className:"xh-amount-input-top-error"},E)),P&&t.createElement(e,{className:"xh-amount-input-slot"},P),t.createElement(e,{className:"xh-amount-input-bottom"},t.createElement(e,{className:"xh-amount-input-bottom-range"},"单笔可借:",t.createElement(e,{className:"xh-amount-input-bottom-range-number"},d,"-",f,"元")),k&&t.createElement(e,{className:"xh-amount-input-bottom-tip"},"额度不满意?",t.createElement(e,{className:"xh-amount-input-bottom-tip-update",onClick:function(t){t.stopPropagation(),null==v||v()}},"立即提额"))))};export{n as default};
1
+ import t from"react";import{View as e}from"@tarojs/components";import a from"classnames";var n=function(n){var o=n.value,m=n.maxlength,u=void 0===m?o.length:m,c=n.onFocus,r=n.className,s=n.focus,l=void 0!==s&&s,p=n.shortcut,i=void 0===p?"借全部":p,h=n.step,x=void 0===h?100:h,N=n.errTip,E=void 0===N?"":N,v=n.onUpgrade,d=n.minAmount,f=n.maxAmount,g=n.showUpgrade,k=void 0!==g&&g,b=n.loanOnekey,y=void 0===b?function(){}:b,C=n.placeholder,w=void 0===C?"单笔".concat(d,"-").concat(f,"元,").concat(x,"的整数倍"):C,A=n.slot,P=n.showBottom,U=void 0===P||P;var j=a("xh-amount-input",r);return t.createElement(e,{className:j},t.createElement(e,{className:"xh-amount-input-top"},t.createElement(e,{className:"xh-amount-input-top-unit"},"¥"),t.createElement(e,{className:"xh-amount-input-top-amount",onClick:function(t){t.stopPropagation(),c&&c(t)}},t.createElement(e,{className:"xh-amount-input-top-amount-num"},t.createElement(e,{className:"xh-amount-input-top-amount-num-key"}," "),function(){var a=[""];if(""===o)return t.createElement(e,{className:"xh-amount-input-top-amount-num-placeholder"},w);for(var n=0;n<u;n++){var m=o[n];a.push(t.createElement(e,{key:n,className:"xh-amount-input-top-amount-num-key"},m))}return a}(),t.createElement(e,{className:a("xh-amount-input-top-amount-num-cursor",{focus:l})})),t.createElement(e,{className:"xh-amount-input-top-amount-shortcut",onClick:y},"string"==typeof i?t.createElement(e,{className:"xh-amount-input-top-amount-shortcut-text"},i):i)),E&&t.createElement(e,{className:"xh-amount-input-top-error"},E)),A&&t.createElement(e,{className:"xh-amount-input-slot"},A),U&&t.createElement(e,{className:"xh-amount-input-bottom"},t.createElement(e,{className:"xh-amount-input-bottom-range"},"单笔可借:",t.createElement(e,{className:"xh-amount-input-bottom-range-number"},d,"-",f,"元")),k&&t.createElement(e,{className:"xh-amount-input-bottom-tip"},"额度不满意?",t.createElement(e,{className:"xh-amount-input-bottom-tip-update",onClick:function(t){t.stopPropagation(),null==v||v()}},"立即提额"))))};export{n as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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 showUpgrade?: boolean;\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 showUpgrade = false,\n loanOnekey = () => {},\n placeholder = `单笔${minAmount}-${maxAmount}元,${step}的整数倍`,\n slot,\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 {errTip && <View className=\"xh-amount-input-top-error\">{errTip}</View>}\n </View>\n {slot && <View className=\"xh-amount-input-slot\">{slot}</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 {showUpgrade && (\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 )}\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","showUpgrade","_g","loanOnekey","_h","placeholder","concat","slot","cls","classNames","React","createElement","View","onClick","e","stopPropagation","Inputs","i","char","push","key","renderInputs"],"mappings":"yFA0BM,IAAAA,EAA0C,SAAAC,GAE5C,IAAAC,EAeED,EAfGC,MACLC,EAcEF,EAAKG,UAdPA,OAAY,IAAAD,EAAAD,EAAMG,OAAMF,EACxBG,EAaEL,EAbKK,QACPC,EAYEN,EAAKM,UAXPC,EAWEP,EAXWQ,MAAbA,OAAK,IAAAD,GAAQA,EACbE,EAUET,EAAKU,SAVPA,OAAW,IAAAD,EAAA,QACXE,EASEX,EAAKY,KATPA,OAAO,IAAAD,EAAA,IAAGA,EACVE,EAQEb,EARSc,OAAXA,OAAS,IAAAD,EAAA,GAAEA,EACXE,EAOEf,EAAKe,UANPC,EAMEhB,EANOgB,UACTC,EAKEjB,EALOiB,UACTC,EAIElB,EAJiBmB,YAAnBA,OAAW,IAAAD,GAAQA,EACnBE,EAGEpB,EAHmBqB,WAArBA,OAAU,IAAAD,EAAG,aAAQA,EACrBE,EAEEtB,EAFsDuB,YAAxDA,OAAW,IAAAD,EAAG,YAAKN,EAAS,KAAAQ,OAAIP,EAAS,MAAAO,OAAKZ,EAAI,QAAMU,EACxDG,EACEzB,EAAKyB,KA0BT,IAAMC,EAAMC,EAAW,kBAAmBrB,GAO1C,OACEsB,EAACC,cAAAC,EAAK,CAAAxB,UAAWoB,GACfE,EAAAC,cAACC,EAAI,CAACxB,UAAU,uBACdsB,EAAAC,cAACC,EAAI,CAACxB,UAAU,4BAAuC,KACvDsB,EAACC,cAAAC,GAAKxB,UAAU,6BAA6ByB,QAfnD,SAAsBC,GACpBA,EAAEC,kBACF5B,GAAWA,EAAQ2B,EACpB,GAaOJ,EAAAC,cAACC,EAAI,CAACxB,UAAU,kCACdsB,EAAAC,cAACC,EAAI,CAACxB,UAAU,sCAAkD,KArC5E,WACE,IAAM4B,EAAc,CAAC,IAErB,GAAc,KAAVjC,EACF,OACE2B,EAACC,cAAAC,EAAK,CAAAxB,UAAU,8CACbiB,GAGP,IAAK,IAAIY,EAAI,EAAGA,EAAIhC,EAAWgC,IAAK,CAClC,IAAMC,EAAOnC,EAAMkC,GACnBD,EAAOG,KACLT,EAACC,cAAAC,GAAKQ,IAAKH,EAAG7B,UAAU,sCACrB8B,GAGN,CACD,OAAOF,CACR,CAoBUK,GACDX,EAAAC,cAACC,EACC,CAAAxB,UAAWqB,EAAW,wCAAyC,CAC7DnB,MAAKA,OAIXoB,EAAAC,cAACC,EAAI,CACHxB,UAAU,sCACVyB,QAASV,GAERX,IAGJI,GAAUc,EAACC,cAAAC,EAAK,CAAAxB,UAAU,6BAA6BQ,IAEzDW,GAAQG,gBAACE,EAAI,CAACxB,UAAU,wBAAwBmB,GACjDG,EAAAC,cAACC,EAAI,CAACxB,UAAU,0BACdsB,EAAAC,cAACC,EAAI,CAACxB,UAAU,wCAEdsB,EAAAC,cAACC,EAAI,CAACxB,UAAU,uCACbU,MAAYC,QAGhBE,GACCS,EAAAC,cAACC,EAAK,CAAAxB,UAAU,uCAEdsB,EAAAC,cAACC,EAAI,CACHxB,UAAU,oCACVyB,QAzCU,SAACC,GACrBA,EAAEC,kBACFlB,SAAAA,GACF,aA+CF"}
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?: ReactNode;\n errTip?: string;\n maxAmount?: number | string;\n minAmount?: number | string;\n showUpgrade?: boolean;\n onUpgrade?: () => void;\n loanOnekey?: () => void;\n placeholder?: string;\n focus?: boolean;\n /** 借款步长 */\n step?: number;\n showBottom?: boolean;\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 showUpgrade = false,\n loanOnekey = () => {},\n placeholder = `单笔${minAmount}-${maxAmount}元,${step}的整数倍`,\n slot,\n showBottom = true,\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 {typeof shortcut === \"string\" ? (\n <View className=\"xh-amount-input-top-amount-shortcut-text\">\n {shortcut}\n </View>\n ) : (\n shortcut\n )}\n </View>\n </View>\n {errTip && <View className=\"xh-amount-input-top-error\">{errTip}</View>}\n </View>\n {slot && <View className=\"xh-amount-input-slot\">{slot}</View>}\n {showBottom && (\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 {showUpgrade && (\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 )}\n </View>\n )}\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","showUpgrade","_g","loanOnekey","_h","placeholder","concat","slot","_j","showBottom","cls","classNames","React","createElement","View","onClick","e","stopPropagation","Inputs","i","char","push","key","renderInputs"],"mappings":"yFA2BM,IAAAA,EAA0C,SAAAC,GAE5C,IAAAC,EAgBED,EAAKC,MAfPC,EAeEF,EAAKG,UAfPA,OAAY,IAAAD,EAAAD,EAAMG,OAAMF,EACxBG,EAcEL,EAAKK,QAbPC,EAaEN,EAbOM,UACTC,EAYEP,EAZWQ,MAAbA,OAAK,IAAAD,GAAQA,EACbE,EAWET,EAAKU,SAXPA,OAAW,IAAAD,EAAA,MAAKA,EAChBE,EAUEX,EAVQY,KAAVA,OAAI,IAAAD,EAAG,IAAGA,EACVE,EASEb,EAAKc,OATPA,OAAS,IAAAD,EAAA,GAAEA,EACXE,EAQEf,EAAKe,UAPPC,EAOEhB,EAPOgB,UACTC,EAMEjB,EAAKiB,UALPC,EAKElB,EAAKmB,YALPA,OAAc,IAAAD,GAAKA,EACnBE,EAIEpB,EAJmBqB,WAArBA,OAAU,IAAAD,EAAG,WAAO,EAACA,EACrBE,EAGEtB,EAHsDuB,YAAxDA,OAAW,IAAAD,EAAG,KAAKE,OAAAR,EAAa,KAAAQ,OAAAP,EAAc,MAAAO,OAAAZ,EAAU,QAAAU,EACxDG,EAEEzB,EAFEyB,KACJC,EACE1B,EADe2B,WAAjBA,OAAU,IAAAD,GAAOA,EA2BnB,IAAME,EAAMC,EAAW,kBAAmBvB,GAO1C,OACEwB,EAACC,cAAAC,EAAK,CAAA1B,UAAWsB,GACfE,EAAAC,cAACC,EAAI,CAAC1B,UAAU,uBACdwB,EAAAC,cAACC,EAAI,CAAC1B,UAAU,4BAAuC,KACvDwB,EAACC,cAAAC,GAAK1B,UAAU,6BAA6B2B,QAfnD,SAAsBC,GACpBA,EAAEC,kBACF9B,GAAWA,EAAQ6B,EACpB,GAaOJ,EAAAC,cAACC,EAAI,CAAC1B,UAAU,kCACdwB,EAAAC,cAACC,EAAI,CAAC1B,UAAU,sCAAkD,KArC5E,WACE,IAAM8B,EAAc,CAAC,IAErB,GAAc,KAAVnC,EACF,OACE6B,EAACC,cAAAC,EAAK,CAAA1B,UAAU,8CACbiB,GAGP,IAAK,IAAIc,EAAI,EAAGA,EAAIlC,EAAWkC,IAAK,CAClC,IAAMC,EAAOrC,EAAMoC,GACnBD,EAAOG,KACLT,EAACC,cAAAC,GAAKQ,IAAKH,EAAG/B,UAAU,sCACrBgC,GAGN,CACD,OAAOF,CACR,CAoBUK,GACDX,EAAAC,cAACC,EACC,CAAA1B,UAAWuB,EAAW,wCAAyC,CAC7DrB,MAAKA,OAIXsB,EAAAC,cAACC,EAAI,CACH1B,UAAU,sCACV2B,QAASZ,GAEY,iBAAbX,EACNoB,EAAAC,cAACC,EAAK,CAAA1B,UAAU,4CACbI,OAORI,GAAUgB,EAACC,cAAAC,EAAK,CAAA1B,UAAU,6BAA6BQ,IAEzDW,GAAQK,gBAACE,EAAI,CAAC1B,UAAU,wBAAwBmB,GAChDE,GACCG,EAAAC,cAACC,EAAK,CAAA1B,UAAU,0BACdwB,EAAAC,cAACC,EAAI,CAAC1B,UAAU,wCAEdwB,EAAAC,cAACC,EAAI,CAAC1B,UAAU,uCACbU,MAAYC,QAGhBE,GACCW,EAAAC,cAACC,EAAK,CAAA1B,UAAU,uCAEdwB,EAAAC,cAACC,EACC,CAAA1B,UAAU,oCACV2B,QAhDQ,SAACC,GACrBA,EAAEC,kBACFpB,SAAAA,GACF,GA6CoC,UAUtC"}
@@ -1,2 +1,2 @@
1
- import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{useState as n,useEffect as a,useCallback as o}from"react";import r from"classnames";import{View as l}from"@tarojs/components";import{pxTransform as m}from"../src/utils/index.js";import u from"../Badge/index.js";import c from"../Space/index.js";import i from"../node_modules/react-transition-group/esm/CSSTransition.js";var s=[{text:1,value:1,type:"number"},{text:2,value:2,type:"number"},{text:3,value:3,type:"number"},{text:"",value:"",type:"delete"},{text:4,value:4,type:"number"},{text:5,value:5,type:"number"},{text:6,value:6,type:"number"},{text:"",value:"",type:"none"},{text:7,value:7,type:"number"},{text:8,value:8,type:"number"},{text:9,value:9,type:"number"},{text:"",value:"",type:"none"},{text:"00",value:"00",type:"number"},{text:0,value:0,type:"number"},{text:"",value:"",type:"close"},{text:"",value:"",type:"none"}],p=function(p){var d=p.onBlur,y=p.show,v=p.maxLength,x=void 0===v?Number.MAX_SAFE_INTEGER:v,f=p.closeOnClickSpace,b=void 0===f||f,k=p.onClose,h=p.onChange,E=p.value,g=p.className,N=p.onConfirm,C=p.recommend,j=void 0===C?[]:C,S=p.header,_=p.disabled,L=void 0!==_&&_,w=p.tip,A=e(n(E),2),O=A[0],P=A[1];function T(e){k&&k(e),d&&d(e)}a((function(){return b&&document.addEventListener("click",T),function(){document.removeEventListener("click",T)}}),[]),a((function(){P(E)}),[E]);var B=o((function(e,t){var n=t.type,a=t.value;if("h5"===process.env.TARO_ENV&&e.stopImmediatePropagation(),!L&&"none"!==n)if("close"!==n){var o=O;"delete"===n?o=O.slice(0,O.length-1):o.replace(/^0+/g,"").length<x&&(o=O+a),o!==O&&(P(o),null==h||h(o))}else T(e)}),[O,L]),I=r("xh-amount-keyboard",g);return t.createElement(i,{classNames:"slide-up",in:y,unmountOnExit:!0,timeout:200},t.createElement(l,{className:I},t.createElement(l,{className:"xh-amount-keyboard-header"},t.createElement(l,{className:"xh-amount-keyboard-header-wrapper"},S||j.length>0&&t.createElement(l,{className:"xh-amount-keyboard-header-wrapper-text"},"猜您想借"," ",t.createElement(c,{style:{marginLeft:m(24)}},null==j?void 0:j.map((function(e,n){return t.createElement(l,{key:n,onClick:function(t){return function(e,t){e.stopPropagation(),null==N||N("".concat(t),!0)}(t,e)}},t.createElement(u,{content:"¥".concat(e),key:n}))})))),w)),t.createElement(l,{className:"xh-amount-keyboard-body"},s.map((function(e,n){return t.createElement(l,{key:n,className:r("xh-amount-keyboard-body-key",{none:"none"===e.type,delete:"delete"===e.type,close:"close"===e.type}),onClick:function(t){B(t,e)}},e.text)})),t.createElement(l,{className:"xh-amount-keyboard-body-key confirm-fake",onClick:function(e){e.stopPropagation(),null==N||N(O)}},"确定"))))};export{p as default};
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 u}from"../src/utils/index.js";import m from"../Badge/index.js";import c from"../Space/index.js";import p 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"}],s=[{text:1,value:1,type:"number"},{text:2,value:2,type:"number"},{text:3,value:3,type:"number"},{text:"",value:"",type:"delete"},{text:4,value:4,type:"number"},{text:5,value:5,type:"number"},{text:6,value:6,type:"number"},{text:"",value:"",type:"none"},{text:7,value:7,type:"number"},{text:8,value:8,type:"number"},{text:9,value:9,type:"number"},{text:"",value:"",type:"none"},{text:"·",value:".",type:"number"},{text:0,value:0,type:"number"},{text:"",value:"",type:"close"},{text:"",value:"",type:"none"}],y=function(y){var x=y.onBlur,v=y.show,d=y.maxLength,b=void 0===d?Number.MAX_SAFE_INTEGER:d,f=y.closeOnClickSpace,h=void 0===f||f,k=y.onClose,E=y.onChange,g=y.value,N=y.className,C=y.onConfirm,j=y.recommend,O=void 0===j?[]:j,S=y.header,_=y.disabled,L=void 0!==_&&_,w=y.tip,A=y.decimal,P=e(n(g),2),T=P[0],B=P[1];function I(e){k&&k(e),x&&x(e)}a((function(){return h&&document.addEventListener("click",I),function(){document.removeEventListener("click",I)}}),[]),a((function(){B(g)}),[g]);var R=o((function(e,t){var n=t.type,a=t.value;if("h5"===process.env.TARO_ENV&&e.stopImmediatePropagation(),!L&&"none"!==n&&("."!==a||""!==T))if("close"!==n){var o=T;"delete"===n?o=T.slice(0,T.length-1):o.replace(/^0+/g,"").length<b&&(o=T+a),A&&0===a&&""===T&&(o=a+"."),"."===a&&T.includes(".")||"number"===n&&T.indexOf(".")>-1&&T.length-T.indexOf(".")==3||o!==T&&(B(o),null==E||E(o))}else I(e)}),[T,L]),F=A?s:i,G=r("xh-amount-keyboard",N);return t.createElement(p,{classNames:"slide-up",in:v,unmountOnExit:!0,timeout:200},t.createElement(l,{className:G},t.createElement(l,{className:"xh-amount-keyboard-header"},t.createElement(l,{className:"xh-amount-keyboard-header-wrapper"},S||O.length>0&&t.createElement(l,{className:"xh-amount-keyboard-header-wrapper-text"},"猜您想借"," ",t.createElement(c,{style:{marginLeft:u(24)}},null==O?void 0:O.map((function(e,n){return t.createElement(l,{key:n,onClick:function(t){return function(e,t){e.stopPropagation(),null==C||C("".concat(t),!0)}(t,e)}},t.createElement(m,{content:"¥".concat(e),key:n}))})))),w)),t.createElement(l,{className:"xh-amount-keyboard-body"},F.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){R(t,e)}},e.text)})),t.createElement(l,{className:"xh-amount-keyboard-body-key confirm-fake",onClick:function(e){e.stopPropagation(),null==C||C(T)}},"确定"))))};export{y 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 /**\n *\n * @param value 输入值\n * @param recommend 是否是点击推荐金额触发\n * @returns void\n */\n onConfirm?: (value: string, recommend?: boolean) => void;\n recommend?: Array<number | string>;\n tip?: ReactNode;\n disabled?: boolean;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\" | \"close\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n}\n\nconst XHAmountKeys: IKey[] = [\n { text: 1, value: 1, type: \"number\" },\n { text: 2, value: 2, type: \"number\" },\n { text: 3, value: 3, type: \"number\" },\n { text: \"\", value: \"\", type: \"delete\" },\n { text: 4, value: 4, type: \"number\" },\n { text: 5, value: 5, type: \"number\" },\n { text: 6, value: 6, type: \"number\" },\n { text: \"\", value: \"\", type: \"none\" },\n { text: 7, value: 7, type: \"number\" },\n { text: 8, value: 8, type: \"number\" },\n { text: 9, value: 9, type: \"number\" },\n { text: \"\", value: \"\", type: \"none\" },\n { text: \"00\", value: \"00\", type: \"number\" },\n { text: 0, value: 0, type: \"number\" },\n { text: \"\", value: \"\", type: \"close\" },\n { text: \"\", value: \"\", type: \"none\" },\n];\n\nconst AmountKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n maxLength = Number.MAX_SAFE_INTEGER,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n className,\n onConfirm,\n recommend = [],\n header,\n disabled = false,\n tip,\n } = props;\n const [input, setInput] = useState(value);\n\n useEffect(() => {\n if (closeOnClickSpace) {\n document.addEventListener(\"click\", handleClose);\n }\n\n return () => {\n document.removeEventListener(\"click\", handleClose);\n };\n }, []);\n\n useEffect(() => {\n setInput(value);\n }, [value]);\n\n function handleClose(e): void {\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n const handleOnRecommand = (e: ITouchEvent, amount: number | string) => {\n e.stopPropagation();\n onConfirm?.(`${amount}`, true);\n };\n\n const handleKeyPress = useCallback(\n (e, { type, value }: IKey): void => {\n if (process.env.TARO_ENV === \"h5\") {\n e.stopImmediatePropagation();\n }\n if (disabled) return;\n if (type === \"none\") return;\n\n if (type === \"close\") {\n handleClose(e);\n return;\n }\n let newInput = input;\n\n if (type === \"delete\") {\n newInput = input.slice(0, input.length - 1);\n } else if (newInput.replace(/^0+/g, \"\").length < maxLength) {\n newInput = input + value;\n }\n\n // 前后两个值相等就不触发onchange\n if (newInput === input) return;\n setInput(newInput);\n onChange?.(newInput);\n },\n [input, disabled]\n );\n\n const handleConfirm = (e: ITouchEvent) => {\n e.stopPropagation();\n onConfirm?.(input);\n };\n const keyboardcls = classNames(\"xh-amount-keyboard\", className);\n\n return (\n <CSSTransition classNames=\"slide-up\" in={show} unmountOnExit timeout={200}>\n <View className={keyboardcls}>\n <View className=\"xh-amount-keyboard-header\">\n <View className=\"xh-amount-keyboard-header-wrapper\">\n {header ||\n (recommend.length > 0 && (\n <View className=\"xh-amount-keyboard-header-wrapper-text\">\n 猜您想借{\" \"}\n <Space style={{ marginLeft: pxTransform(24) }}>\n {recommend?.map((amount, index) => (\n <View\n key={index}\n onClick={e => handleOnRecommand(e, amount)}\n >\n <Badge content={`¥${amount}`} key={index} />\n </View>\n ))}\n </Space>\n </View>\n ))}\n {tip}\n </View>\n </View>\n <View className=\"xh-amount-keyboard-body\">\n {XHAmountKeys.map((key, index) => (\n <View\n key={index}\n className={classNames(\"xh-amount-keyboard-body-key\", {\n none: key.type === \"none\",\n delete: key.type === \"delete\",\n close: key.type === \"close\",\n })}\n onClick={e => {\n handleKeyPress(e, key);\n }}\n >\n {key.text}\n </View>\n ))}\n <View\n className=\"xh-amount-keyboard-body-key confirm-fake\"\n onClick={handleConfirm}\n >\n 确定\n </View>\n </View>\n </View>\n </CSSTransition>\n );\n};\n\nexport default AmountKeyboard;\n"],"names":["XHAmountKeys","text","value","type","AmountKeyboard","props","onBlur","show","_a","maxLength","Number","MAX_SAFE_INTEGER","_b","closeOnClickSpace","onClose","onChange","className","onConfirm","_c","recommend","header","_d","disabled","tip","_e","__read","useState","input","setInput","handleClose","e","useEffect","document","addEventListener","removeEventListener","handleKeyPress","useCallback","process","env","TARO_ENV","stopImmediatePropagation","newInput","slice","length","replace","keyboardcls","classNames","React","createElement","CSSTransition","in","unmountOnExit","timeout","View","Space","style","marginLeft","pxTransform","map","amount","index","key","onClick","stopPropagation","concat","handleOnRecommand","Badge","content","none","delete","close"],"mappings":"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"}
1
+ {"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 /**\n * 是否支持小数,小数保留小数点后两位,默认不支持\n */\n decimal?: boolean;\n showClose?: boolean;\n closeOnClickSpace?: boolean;\n maxLength?: number;\n onBlur?: (e: MouseEvent | Event) => void;\n onClose?: (e: MouseEvent | Event) => void;\n onChange?: (value: string) => void;\n value: string;\n header?: ReactNode;\n /**\n *\n * @param value 输入值\n * @param recommend 是否是点击推荐金额触发\n * @returns void\n */\n onConfirm?: (value: string, recommend?: boolean) => void;\n recommend?: Array<number | string>;\n tip?: ReactNode;\n disabled?: boolean;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\" | \"close\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n}\n\nconst XHAmountKeys: IKey[] = [\n { text: 1, value: 1, type: \"number\" },\n { text: 2, value: 2, type: \"number\" },\n { text: 3, value: 3, type: \"number\" },\n { text: \"\", value: \"\", type: \"delete\" },\n { text: 4, value: 4, type: \"number\" },\n { text: 5, value: 5, type: \"number\" },\n { text: 6, value: 6, type: \"number\" },\n { text: \"\", value: \"\", type: \"none\" },\n { text: 7, value: 7, type: \"number\" },\n { text: 8, value: 8, type: \"number\" },\n { text: 9, value: 9, type: \"number\" },\n { text: \"\", value: \"\", type: \"none\" },\n { text: \"00\", value: \"00\", type: \"number\" },\n { text: 0, value: 0, type: \"number\" },\n { text: \"\", value: \"\", type: \"close\" },\n { text: \"\", value: \"\", type: \"none\" },\n];\n\nconst XHAmountKeysWithDot: 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: \"·\", value: \".\", type: \"number\" },\n { text: 0, value: 0, type: \"number\" },\n { text: \"\", value: \"\", type: \"close\" },\n { text: \"\", value: \"\", type: \"none\" },\n];\n\nconst AmountKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n maxLength = Number.MAX_SAFE_INTEGER,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n className,\n onConfirm,\n recommend = [],\n header,\n disabled = false,\n tip,\n decimal,\n } = props;\n const [input, setInput] = useState(value);\n\n useEffect(() => {\n if (closeOnClickSpace) {\n document.addEventListener(\"click\", handleClose);\n }\n\n return () => {\n document.removeEventListener(\"click\", handleClose);\n };\n }, []);\n\n useEffect(() => {\n setInput(value);\n }, [value]);\n\n function handleClose(e): void {\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n const handleOnRecommand = (e: ITouchEvent, amount: number | string) => {\n e.stopPropagation();\n onConfirm?.(`${amount}`, true);\n };\n\n const handleKeyPress = useCallback(\n (e, { type, value }: IKey): void => {\n if (process.env.TARO_ENV === \"h5\") {\n e.stopImmediatePropagation();\n }\n if (disabled) return;\n if (type === \"none\") return;\n // 第一个字符不能是.\n if (value === \".\" && input === \"\") return;\n if (type === \"close\") {\n handleClose(e);\n return;\n }\n let newInput = input;\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 // 支持小数点的情况下,如果第一个是0,自动填充.\n if (decimal && value === 0 && input === \"\") newInput = value + \".\";\n\n // 不能包含多个小数点\n if (value === \".\" && input.includes(\".\")) return;\n // 保留两位小数\n if (\n type === \"number\" &&\n input.indexOf(\".\") > -1 &&\n input.length - input.indexOf(\".\") === 3\n )\n return;\n\n // 前后两个值相等就不触发onchange\n if (newInput === input) return;\n setInput(newInput);\n onChange?.(newInput);\n },\n [input, disabled]\n );\n\n const renderKeys = decimal ? XHAmountKeysWithDot : XHAmountKeys;\n\n const handleConfirm = (e: ITouchEvent) => {\n e.stopPropagation();\n onConfirm?.(input);\n };\n const keyboardcls = classNames(\"xh-amount-keyboard\", className);\n\n return (\n <CSSTransition classNames=\"slide-up\" in={show} unmountOnExit timeout={200}>\n <View className={keyboardcls}>\n <View className=\"xh-amount-keyboard-header\">\n <View className=\"xh-amount-keyboard-header-wrapper\">\n {header ||\n (recommend.length > 0 && (\n <View className=\"xh-amount-keyboard-header-wrapper-text\">\n 猜您想借{\" \"}\n <Space style={{ marginLeft: pxTransform(24) }}>\n {recommend?.map((amount, index) => (\n <View\n key={index}\n onClick={e => handleOnRecommand(e, amount)}\n >\n <Badge content={`¥${amount}`} key={index} />\n </View>\n ))}\n </Space>\n </View>\n ))}\n {tip}\n </View>\n </View>\n <View className=\"xh-amount-keyboard-body\">\n {renderKeys.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","XHAmountKeysWithDot","AmountKeyboard","props","onBlur","show","_a","maxLength","Number","MAX_SAFE_INTEGER","_b","closeOnClickSpace","onClose","onChange","className","onConfirm","_c","recommend","header","_d","disabled","tip","decimal","_e","__read","useState","input","setInput","handleClose","e","useEffect","document","addEventListener","removeEventListener","handleKeyPress","useCallback","process","env","TARO_ENV","stopImmediatePropagation","newInput","slice","length","replace","includes","indexOf","renderKeys","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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"}
@@ -0,0 +1,2 @@
1
+ import e,{forwardRef as n,useImperativeHandle as a}from"react";import r from"classnames";import{View as o}from"@tarojs/components";import t from"../FormInput/index.js";import{checkBankCard as l,creditCard as c}from"../src/utils/index.js";var i=n((function(n,i){var m=n.showScan,u=void 0!==m&&m,s=n.label,d=n.value,p=n.bankName,f=n.readOnly,b=n.direction,h=void 0===b?"column":b,v=n.onScan,x=n.placeholder,g=void 0===x?"请输入卡号":x,E=n.onError,k=n.onChange,N=n.maxlength,j=void 0===N?23:N,y=n.slot,C=n.className,w=n.border;return a(i,(function(){return{isValid:l(d.replace(/\s/g,"")),focus:function(){var e;"object"==typeof i&&(null===(e=null==i?void 0:i.current)||void 0===e||e.focus())}}})),e.createElement(o,{className:r("xh-bankcard-number-input",C)},e.createElement(t,{padding:!0,ref:i,RightComponent:u&&e.createElement(o,{onClick:function(){null==v||v()},className:"xh-bankcard-number-input-scan"}),direction:h,label:s,mainExtra:"row"!==h&&e.createElement(o,{className:"xh-bankcard-number-input-name"},p),maxlength:j,placeholder:g,readonly:f,type:"tel",border:w,value:c(d),onBlur:function(e){l(e)||null==E||E()},onChange:function(e){var n=c(e);null==k||k(n)}}),e.createElement(o,{className:"xh-bankcard-number-input-slot"},y))}));export{i as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/BankCardNumberInput/index.tsx"],"sourcesContent":["import React, { ReactNode, forwardRef, useImperativeHandle } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport XHFormInput from \"../FormInput\";\nimport { checkBankCard, creditCard } from \"../../utils\";\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type PhoneNumberInputProps = {\n showScan?: boolean;\n label?: string;\n /**\n * 只有在direction为column才生效\n */\n bankName?: ReactNode;\n onChange?: (value: string) => void;\n value: string;\n placeholder?: string;\n readOnly?: boolean;\n disabled?: boolean;\n direction?: \"column\" | \"row\";\n onScan?: () => void;\n onError?: () => void;\n maxlength?: number;\n slot?: ReactNode;\n border?: boolean;\n} & XHComponentCommonProps;\n\nconst BankCardNumberInput = forwardRef<any, PhoneNumberInputProps>(\n (props, fromRef) => {\n const {\n showScan = false,\n label,\n value,\n bankName,\n readOnly,\n direction = \"column\",\n onScan,\n placeholder = \"请输入卡号\",\n onError,\n onChange,\n maxlength = 23,\n slot,\n className,\n border,\n } = props;\n\n const handleBlur = value => {\n console.log(\"blur\");\n if (!checkBankCard(value)) onError?.();\n };\n\n const handleChange = value => {\n const formatValue = creditCard(value);\n onChange?.(formatValue);\n };\n\n const handleOnScan = () => {\n console.log(fromRef, \"fromRef...\");\n onScan?.();\n };\n\n useImperativeHandle(fromRef, () => {\n return {\n isValid: checkBankCard(value.replace(/\\s/g, \"\")),\n focus: () => {\n if (typeof fromRef === \"object\") {\n fromRef?.current?.focus();\n }\n },\n };\n });\n\n return (\n <View className={classNames(\"xh-bankcard-number-input\", className)}>\n <XHFormInput\n padding\n ref={fromRef}\n RightComponent={\n showScan && (\n <View\n onClick={handleOnScan}\n className=\"xh-bankcard-number-input-scan\"\n ></View>\n )\n }\n direction={direction}\n label={label}\n mainExtra={\n direction !== \"row\" && (\n <View className=\"xh-bankcard-number-input-name\">{bankName}</View>\n )\n }\n maxlength={maxlength}\n placeholder={placeholder}\n readonly={readOnly}\n type=\"tel\"\n border={border}\n value={creditCard(value)}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n <View className=\"xh-bankcard-number-input-slot\">{slot}</View>\n </View>\n );\n }\n);\n\nexport default BankCardNumberInput;\n"],"names":["BankCardNumberInput","forwardRef","props","fromRef","_a","showScan","label","value","bankName","readOnly","_b","direction","onScan","_c","placeholder","onError","onChange","_d","maxlength","slot","className","border","useImperativeHandle","isValid","checkBankCard","replace","focus","current","React","createElement","View","classNames","XHFormInput","padding","ref","RightComponent","onClick","mainExtra","readonly","type","creditCard","onBlur","formatValue"],"mappings":"8OA6BA,IAAMA,EAAsBC,GAC1B,SAACC,EAAOC,GAEJ,IAAAC,EAcEF,EAAKG,SAdPA,OAAQ,IAAAD,GAAQA,EAChBE,EAaEJ,EAbGI,MACLC,EAYEL,QAXFM,EAWEN,WAVFO,EAUEP,EAAKO,SATPC,EASER,EATkBS,UAApBA,OAAY,IAAAD,EAAA,WACZE,EAQEV,EAAKU,OAPPC,EAOEX,EAPmBY,YAArBA,OAAc,IAAAD,EAAA,UACdE,EAMEb,UALFc,EAKEd,EAAKc,SAJPC,EAIEf,EAJYgB,UAAdA,OAAY,IAAAD,EAAA,KACZE,EAGEjB,EAAKiB,KAFPC,EAEElB,EAFOkB,UACTC,EACEnB,SA4BJ,OAXAoB,EAAoBnB,GAAS,WAC3B,MAAO,CACLoB,QAASC,EAAcjB,EAAMkB,QAAQ,MAAO,KAC5CC,MAAO,iBACkB,iBAAZvB,IACO,QAAhBC,EAAAD,aAAA,EAAAA,EAASwB,eAAO,IAAAvB,GAAAA,EAAEsB,QAErB,EAEL,IAGEE,EAACC,cAAAC,EAAK,CAAAV,UAAWW,EAAW,2BAA4BX,IACtDQ,EAAAC,cAACG,EACC,CAAAC,WACAC,IAAK/B,EACLgC,eACE9B,GACEuB,EAAAC,cAACC,EACC,CAAAM,QAxBS,WAEnBxB,SAAAA,GACF,EAsBYQ,UAAU,kCAIhBT,UAAWA,EACXL,MAAOA,EACP+B,UACgB,QAAd1B,GACEiB,EAACC,cAAAC,EAAK,CAAAV,UAAU,iCAAiCZ,GAGrDU,UAAWA,EACXJ,YAAaA,EACbwB,SAAU7B,EACV8B,KAAK,MACLlB,OAAQA,EACRd,MAAOiC,EAAWjC,GAClBkC,OApDa,SAAAlC,GAEZiB,EAAcjB,IAAQQ,SAAAA,GAC7B,EAkDMC,SAhDe,SAAAT,GACnB,IAAMmC,EAAcF,EAAWjC,GAC/BS,SAAAA,EAAW0B,EACb,IA+CId,EAACC,cAAAC,EAAK,CAAAV,UAAU,iCAAiCD,GAGvD"}
@@ -1,2 +1,2 @@
1
- import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as o,useState as n,useImperativeHandle as a,useEffect as r}from"react";import s from"classnames";import{View as c}from"@tarojs/components";import l from"../Button/index.js";import i from"../Mask/index.js";import m from"../node_modules/react-transition-group/esm/CSSTransition.js";var f=o((function(o,f){var d=o.header,u=o.content,p=o.className,h=void 0===p?"":p,g=o.visible,v=o.showCancel,x=void 0===v||v,E=o.confirmText,N=void 0===E?"确定":E,C=o.cancelText,b=void 0===C?"取消":C,j=o.footer,T=void 0!==j&&j,k=o.onConfirm,w=o.onCancel,y=o.onClose,z=o.tranparent,S=void 0!==z&&z,_=e(n(!1),2),B=_[0],M=_[1];a(f,(function(){return{close:q,open:A}}));var q=function(){y&&y(),M(!1)},A=function(){M(!0)};r((function(){g||y&&y(),M(g)}),[g]);var D=s("xh-dialog-ref",h,{show:B}),F=t.createElement(c,{className:"xh-dialog-ref-content-footer-buttons"},x&&t.createElement(l,{ghost:!0,size:"full",shape:"rectangle",preventTime:0,onClick:function(){w&&w(),q()},className:"xh-dialog-ref-content-footer-buttons-cancel"},b),t.createElement(l,{type:"primary",shape:"rectangle",size:"full",ghost:!0,className:"xh-dialog-ref-content-footer-buttons--confirm",onClick:function(){k&&k()},preventTime:0},N));return t.createElement(c,{className:D},t.createElement(i,null),t.createElement(m,{in:B,timeout:200,classNames:"scale"},t.createElement(c,{className:s("xh-dialog-ref-content",{tranparent:S})},d&&t.createElement(c,{className:"xh-dialog-ref-content-header"},d),t.createElement(c,{className:"xh-dialog-ref-content-content"},u),T||t.createElement(c,{className:"xh-dialog-ref-content-footer"},F))))}));export{f as default};
1
+ import{__read as e}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as o,useState as n,useImperativeHandle as r,useEffect as a}from"react";import s from"classnames";import{View as c}from"@tarojs/components";import i from"../Button/index.js";import l from"../Mask/index.js";import m from"../node_modules/react-transition-group/esm/CSSTransition.js";var f=o((function(o,f){var d=o.header,p=o.content,u=o.className,h=void 0===u?"":u,v=o.visible,g=o.showCancel,x=void 0===g||g,E=o.confirmText,N=void 0===E?"确定":E,C=o.cancelText,b=void 0===C?"取消":C,j=o.footer,T=void 0!==j&&j,k=o.onConfirm,w=o.onCancel,y=o.onClose,z=o.portrait,S=void 0!==z&&z,_=o.tranparent,B=void 0!==_&&_,M=e(n(!1),2),q=M[0],A=M[1];r(f,(function(){return{close:D,open:F}}));var D=function(){y&&y(),A(!1)},F=function(){A(!0)};a((function(){v||y&&y(),A(v)}),[v]);var G=s("xh-dialog-ref",h,{show:q}),H=t.createElement(c,{className:s("xh-dialog-ref-content-footer-buttons",{portrait:S})},x&&t.createElement(i,{ghost:!0,size:"full",shape:"rectangle",preventTime:0,onClick:function(){w&&w(),D()},className:"xh-dialog-ref-content-footer-buttons-cancel"},b),t.createElement(i,{type:"primary",shape:"rectangle",size:"full",ghost:!0,className:"xh-dialog-ref-content-footer-buttons--confirm",onClick:function(){k&&k()},preventTime:0},N));return t.createElement(c,{className:G},t.createElement(l,null),t.createElement(m,{in:q,timeout:200,classNames:"scale"},t.createElement(c,{className:s("xh-dialog-ref-content",{tranparent:B})},d&&t.createElement(c,{className:"xh-dialog-ref-content-header"},d),t.createElement(c,{className:"xh-dialog-ref-content-content"},p),T||t.createElement(c,{className:"xh-dialog-ref-content-footer"},H))))}));export{f as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/DialogRef/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useState,\n useImperativeHandle,\n forwardRef,\n useEffect,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { CSSTransition } from \"react-transition-group\";\nimport Button from \"../Button\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Mask from \"../Mask\";\nimport \"./index.scss\";\n\nexport type DialogProps = {\n header?: string | ReactNode;\n content: string | ReactNode;\n footer?: ReactNode;\n cancelText?: string;\n confirmText?: string;\n showCancel?: boolean;\n visible: boolean;\n onConfirm?: () => void;\n onCancel?: () => void;\n onClose?: () => void;\n tranparent?: boolean;\n} & XHComponentCommonProps;\n\nexport type IDialogRef = {\n close: () => void;\n open: () => void;\n};\nconst DialogCom = forwardRef<IDialogRef, DialogProps>((props, fromRef) => {\n const {\n header,\n content,\n className = \"\",\n visible,\n showCancel = true,\n confirmText = \"确定\",\n cancelText = \"取消\",\n footer = false,\n onConfirm,\n onCancel,\n onClose,\n tranparent = false,\n } = props;\n const [selfVisible, setSelfVisible] = useState(false);\n\n useImperativeHandle(fromRef, () => ({\n close,\n open,\n }));\n\n const close = () => {\n onClose && onClose();\n setSelfVisible(false);\n };\n\n const open = () => {\n setSelfVisible(true);\n };\n\n const handleConfirm = () => {\n onConfirm && onConfirm();\n // close();\n };\n const handleCancel = () => {\n onCancel && onCancel();\n close();\n };\n\n useEffect(() => {\n if (!visible) {\n onClose && onClose();\n }\n setSelfVisible(visible);\n }, [visible]);\n\n const dialogcls = classNames(\"xh-dialog-ref\", className, {\n show: selfVisible,\n });\n\n const dialogFooter = (\n <View className=\"xh-dialog-ref-content-footer-buttons\">\n {showCancel && (\n <Button\n ghost\n size=\"full\"\n shape=\"rectangle\"\n preventTime={0}\n onClick={handleCancel}\n className=\"xh-dialog-ref-content-footer-buttons-cancel\"\n >\n {cancelText}\n </Button>\n )}\n <Button\n type=\"primary\"\n shape=\"rectangle\"\n size=\"full\"\n ghost\n className=\"xh-dialog-ref-content-footer-buttons--confirm\"\n onClick={handleConfirm}\n preventTime={0}\n >\n {confirmText}\n </Button>\n </View>\n );\n\n const DialogMain = (\n <View className={dialogcls}>\n <Mask />\n <CSSTransition in={selfVisible} timeout={200} classNames=\"scale\">\n <View className={classNames(\"xh-dialog-ref-content\", { tranparent })}>\n {header && (\n <View className=\"xh-dialog-ref-content-header\">{header}</View>\n )}\n <View className=\"xh-dialog-ref-content-content\">{content}</View>\n {footer || (\n <View className=\"xh-dialog-ref-content-footer\">{dialogFooter}</View>\n )}\n </View>\n </CSSTransition>\n </View>\n );\n return DialogMain;\n});\n\nexport default DialogCom;\n"],"names":["DialogCom","forwardRef","props","fromRef","header","content","_a","className","visible","_b","showCancel","_c","confirmText","_d","cancelText","_e","footer","onConfirm","onCancel","onClose","_f","tranparent","_g","__read","useState","selfVisible","setSelfVisible","useImperativeHandle","close","open","useEffect","dialogcls","classNames","show","dialogFooter","React","createElement","View","Button","ghost","size","shape","preventTime","onClick","type","Mask","CSSTransition","in","timeout"],"mappings":"yWAiCA,IAAMA,EAAYC,GAAoC,SAACC,EAAOC,GAE1D,IAAAC,EAYEF,EAZIE,OACNC,EAWEH,EAXKG,QACPC,EAUEJ,EAAKK,UAVPA,OAAS,IAAAD,EAAG,GAAEA,EACdE,EASEN,EATKM,QACPC,EAQEP,EAAKQ,WARPA,OAAU,IAAAD,GAAOA,EACjBE,EAOET,cAPFU,aAAc,KAAID,EAClBE,EAMEX,EANeY,WAAjBA,OAAa,IAAAD,EAAA,OACbE,EAKEb,EAAKc,OALPA,OAAM,IAAAD,GAAQA,EACdE,EAIEf,EAJOe,UACTC,EAGEhB,WAFFiB,EAEEjB,EAAKiB,QADPC,EACElB,EADgBmB,WAAlBA,OAAa,IAAAD,KAETE,EAAAC,EAAgCC,GAAS,GAAM,GAA9CC,EAAWH,EAAA,GAAEI,OAEpBC,EAAoBxB,GAAS,WAAM,MAAC,CAClCyB,MAAKA,EACLC,KAAIA,EACJ,IAEF,IAAMD,EAAQ,WACZT,GAAWA,IACXO,GAAe,EACjB,EAEMG,EAAO,WACXH,GAAe,EACjB,EAWAI,GAAU,WACHtB,GACHW,GAAWA,IAEbO,EAAelB,EACjB,GAAG,CAACA,IAEJ,IAAMuB,EAAYC,EAAW,gBAAiBzB,EAAW,CACvD0B,KAAMR,IAGFS,EACJC,EAAAC,cAACC,EAAK,CAAA9B,UAAU,wCACbG,GACCyB,EAACC,cAAAE,EACC,CAAAC,OACA,EAAAC,KAAK,OACLC,MAAM,YACNC,YAAa,EACbC,QAxBa,WACnBzB,GAAYA,IACZU,GACF,EAsBQrB,UAAU,+CAETO,GAGLqB,EAAAC,cAACE,EAAM,CACLM,KAAK,UACLH,MAAM,YACND,KAAK,OACLD,OAAK,EACLhC,UAAU,gDACVoC,QAxCgB,WACpB1B,GAAaA,GAEf,EAsCMyB,YAAa,GAEZ9B,IAqBP,OAfEuB,EAAAC,cAACC,EAAK,CAAA9B,UAAWwB,GACfI,EAAAC,cAACS,EAAO,MACRV,EAAAC,cAACU,EAAa,CAACC,GAAItB,EAAauB,QAAS,IAAKhB,WAAW,SACvDG,EAAAC,cAACC,EAAI,CAAC9B,UAAWyB,EAAW,wBAAyB,CAAEX,WAAUA,KAC9DjB,GACC+B,EAAAC,cAACC,EAAI,CAAC9B,UAAU,gCAAgCH,GAElD+B,EAAAC,cAACC,EAAK,CAAA9B,UAAU,iCAAiCF,GAChDW,GACCmB,EAAAC,cAACC,EAAI,CAAC9B,UAAU,gCAAgC2B,KAO5D"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/DialogRef/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useState,\n useImperativeHandle,\n forwardRef,\n useEffect,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\nimport { CSSTransition } from \"react-transition-group\";\nimport Button from \"../Button\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Mask from \"../Mask\";\nimport \"./index.scss\";\n\nexport type DialogProps = {\n header?: string | ReactNode;\n content: string | ReactNode;\n footer?: ReactNode;\n cancelText?: string;\n confirmText?: string;\n showCancel?: boolean;\n visible: boolean;\n onConfirm?: () => void;\n onCancel?: () => void;\n onClose?: () => void;\n tranparent?: boolean;\n portrait?: boolean;\n} & XHComponentCommonProps;\n\nexport type IDialogRef = {\n close: () => void;\n open: () => void;\n};\nconst DialogCom = forwardRef<IDialogRef, DialogProps>((props, fromRef) => {\n const {\n header,\n content,\n className = \"\",\n visible,\n showCancel = true,\n confirmText = \"确定\",\n cancelText = \"取消\",\n footer = false,\n onConfirm,\n onCancel,\n onClose,\n portrait = false,\n tranparent = false,\n } = props;\n const [selfVisible, setSelfVisible] = useState(false);\n\n useImperativeHandle(fromRef, () => ({\n close,\n open,\n }));\n\n const close = () => {\n onClose && onClose();\n setSelfVisible(false);\n };\n\n const open = () => {\n setSelfVisible(true);\n };\n\n const handleConfirm = () => {\n onConfirm && onConfirm();\n // close();\n };\n const handleCancel = () => {\n onCancel && onCancel();\n close();\n };\n\n useEffect(() => {\n if (!visible) {\n onClose && onClose();\n }\n setSelfVisible(visible);\n }, [visible]);\n\n const dialogcls = classNames(\"xh-dialog-ref\", className, {\n show: selfVisible,\n });\n\n const dialogFooter = (\n <View\n className={classNames(\"xh-dialog-ref-content-footer-buttons\", {\n portrait,\n })}\n >\n {showCancel && (\n <Button\n ghost\n size=\"full\"\n shape=\"rectangle\"\n preventTime={0}\n onClick={handleCancel}\n className=\"xh-dialog-ref-content-footer-buttons-cancel\"\n >\n {cancelText}\n </Button>\n )}\n <Button\n type=\"primary\"\n shape=\"rectangle\"\n size=\"full\"\n ghost\n className=\"xh-dialog-ref-content-footer-buttons--confirm\"\n onClick={handleConfirm}\n preventTime={0}\n >\n {confirmText}\n </Button>\n </View>\n );\n\n const DialogMain = (\n <View className={dialogcls}>\n <Mask />\n <CSSTransition in={selfVisible} timeout={200} classNames=\"scale\">\n <View className={classNames(\"xh-dialog-ref-content\", { tranparent })}>\n {header && (\n <View className=\"xh-dialog-ref-content-header\">{header}</View>\n )}\n <View className=\"xh-dialog-ref-content-content\">{content}</View>\n {footer || (\n <View className=\"xh-dialog-ref-content-footer\">{dialogFooter}</View>\n )}\n </View>\n </CSSTransition>\n </View>\n );\n return DialogMain;\n});\n\nexport default DialogCom;\n"],"names":["DialogCom","forwardRef","props","fromRef","header","content","_a","className","visible","_b","showCancel","_c","confirmText","_d","cancelText","_e","footer","onConfirm","onCancel","onClose","_f","portrait","_g","tranparent","_h","__read","useState","selfVisible","setSelfVisible","useImperativeHandle","close","open","useEffect","dialogcls","classNames","show","dialogFooter","React","createElement","View","Button","ghost","size","shape","preventTime","onClick","type","Mask","CSSTransition","in","timeout"],"mappings":"yWAkCA,IAAMA,EAAYC,GAAoC,SAACC,EAAOC,GAE1D,IAAAC,EAaEF,EAAKE,OAZPC,EAYEH,EAZKG,QACPC,EAWEJ,EAAKK,UAXPA,OAAS,IAAAD,EAAG,GAAEA,EACdE,EAUEN,UATFO,EASEP,EATeQ,WAAjBA,OAAa,IAAAD,KACbE,EAQET,EARgBU,YAAlBA,OAAc,IAAAD,EAAA,OACdE,EAOEX,EAPeY,WAAjBA,OAAa,IAAAD,EAAA,OACbE,EAMEb,EANYc,OAAdA,OAAS,IAAAD,KACTE,EAKEf,EAAKe,UAJPC,EAIEhB,EAJMgB,SACRC,EAGEjB,UAFFkB,EAEElB,EAFcmB,SAAhBA,OAAW,IAAAD,KACXE,EACEpB,EADgBqB,WAAlBA,OAAa,IAAAD,KAETE,EAAAC,EAAgCC,GAAS,GAAM,GAA9CC,EAAWH,EAAA,GAAEI,OAEpBC,EAAoB1B,GAAS,WAAM,MAAC,CAClC2B,MAAKA,EACLC,KAAIA,EACJ,IAEF,IAAMD,EAAQ,WACZX,GAAWA,IACXS,GAAe,EACjB,EAEMG,EAAO,WACXH,GAAe,EACjB,EAWAI,GAAU,WACHxB,GACHW,GAAWA,IAEbS,EAAepB,EACjB,GAAG,CAACA,IAEJ,IAAMyB,EAAYC,EAAW,gBAAiB3B,EAAW,CACvD4B,KAAMR,IAGFS,EACJC,EAACC,cAAAC,EACC,CAAAhC,UAAW2B,EAAW,uCAAwC,CAC5Db,SAAQA,KAGTX,GACC2B,EAACC,cAAAE,EACC,CAAAC,OACA,EAAAC,KAAK,OACLC,MAAM,YACNC,YAAa,EACbC,QA5Ba,WACnB3B,GAAYA,IACZY,GACF,EA0BQvB,UAAU,+CAETO,GAGLuB,EAAAC,cAACE,EAAM,CACLM,KAAK,UACLH,MAAM,YACND,KAAK,OACLD,OAAK,EACLlC,UAAU,gDACVsC,QA5CgB,WACpB5B,GAAaA,GAEf,EA0CM2B,YAAa,GAEZhC,IAqBP,OAfEyB,EAAAC,cAACC,EAAK,CAAAhC,UAAW0B,GACfI,EAAAC,cAACS,EAAO,MACRV,EAAAC,cAACU,EAAa,CAACC,GAAItB,EAAauB,QAAS,IAAKhB,WAAW,SACvDG,EAAAC,cAACC,EAAI,CAAChC,UAAW2B,EAAW,wBAAyB,CAAEX,WAAUA,KAC9DnB,GACCiC,EAAAC,cAACC,EAAI,CAAChC,UAAU,gCAAgCH,GAElDiC,EAAAC,cAACC,EAAK,CAAAhC,UAAU,iCAAiCF,GAChDW,GACCqB,EAAAC,cAACC,EAAI,CAAChC,UAAU,gCAAgC6B,KAO5D"}
@@ -1,2 +1,2 @@
1
- import{__rest as e,__assign as a}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as n,useRef as l,useImperativeHandle as r}from"react";import{View as m,Text as o,Input as i}from"@tarojs/components";import c from"classnames";import{inputRange as s}from"../src/utils/index.js";var u=n((function(n,u){var p=n.onChange,f=n.maxlength,h=n.value,d=n.type,v=n.placeholder,x=n.label,E=n.labelHtml,N=n.RightComponent,b=n.onBlur,g=n.pattern,y=n.LeftComponent,w=n.LeftIcon,L=n.name,C=n.readonly,I=void 0!==C&&C,_=n.withArrow,B=void 0!==_&&_,H=n.direction,j=void 0===H?"row":H,A=n.border,R=void 0===A||A,T=n.mainExtra,M=n.padding,S=void 0!==M&&M,O=e(n,["onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","readonly","withArrow","direction","border","mainExtra","padding"]);function V(e){var a=s(e.target.value);e.target.value=a,p&&p(a)}function k(e){var a=s(e.target.value);b&&b(a)}var q=l(null);r(u,(function(){return{focus:function(){var e;null===(e=q.current)||void 0===e||e.focus()}}}));var z=c("xh-form-input",{column:"column"===j,border:R,padding:S});return"h5"!==process.env.TARO_ENV?t.createElement(m,{className:z},t.createElement(m,{className:"xh-form-input-main"},t.createElement(m,{className:"xh-form-input-main-left"},x&&t.createElement(m,{className:"xh-form-input-main-left-label"},x,w&&t.createElement(m,{className:"xh-form-input-main-left-label-icon"},w)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement(m,null,y)),t.createElement(m,{className:"xh-form-input-main-center"},I?t.createElement(o,{className:c("xh-form-input-readonly",{"xh-form-input-placeholder":!h})},h||v):t.createElement(i,a({},O,{ref:q,className:"xh-form-input-main-center-native",maxlength:f,name:L,placeholder:v,type:d,value:h,onBlur:k,onInput:V}))),T&&t.createElement(m,{className:"xh-form-input-main-extra"},T)),t.createElement(m,{className:"xh-form-input-right"},N,B&&t.createElement(m,{className:"arrow"}))):t.createElement("div",{className:z},t.createElement("div",{className:"xh-form-input-main"},t.createElement("div",{className:"xh-form-input-main-left"},x&&t.createElement("label",{className:"xh-form-input-main-left-label"},x,w&&t.createElement("div",{className:"xh-form-input-main-left-label-icon"},w)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement("div",null,y)),t.createElement("div",{className:"xh-form-input-main-center"},I?t.createElement("p",{className:c("xh-form-input-main-center-readonly",{"xh-form-input-main-placeholder":!h})},h||v):t.createElement("input",{ref:q,className:"xh-form-input-main-center-native",maxLength:f,name:L,pattern:g,placeholder:v,type:d,value:h,onBlur:k,onInput:V})),T&&t.createElement("div",{className:"xh-form-input-main-extra"},T)),t.createElement("div",{className:"xh-form-input-right"},N,B&&t.createElement("span",{className:"arrow"})))}));export{u as default};
1
+ import{__rest as e,__assign as a}from"../node_modules/tslib/tslib.es6.js";import t,{forwardRef as n,useRef as l,useImperativeHandle as r}from"react";import{View as m,Text as o,Input as c}from"@tarojs/components";import i from"classnames";import{inputRange as s}from"../src/utils/index.js";var u=n((function(n,u){var p=n.onChange,f=n.maxlength,h=n.value,d=n.type,v=n.placeholder,x=n.label,E=n.labelHtml,N=n.RightComponent,b=n.onBlur,g=n.pattern,y=n.LeftComponent,w=n.LeftIcon,L=n.name,C=n.readonly,I=void 0!==C&&C,_=n.withArrow,B=void 0!==_&&_,H=n.direction,j=void 0===H?"row":H,A=n.border,R=void 0===A||A,T=n.mainExtra,M=n.padding,S=void 0!==M&&M,O=n.className,V=e(n,["onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","readonly","withArrow","direction","border","mainExtra","padding","className"]);function k(e){var a=s(e.target.value);e.target.value=a,p&&p(a)}function q(e){var a=s(e.target.value);b&&b(a)}var z=l(null);r(u,(function(){return{focus:function(){var e;null===(e=z.current)||void 0===e||e.focus()}}}));var D=i("xh-form-input",{column:"column"===j,border:R,padding:S,className:O});return"h5"!==process.env.TARO_ENV?t.createElement(m,{className:D},t.createElement(m,{className:"xh-form-input-main"},t.createElement(m,{className:"xh-form-input-main-left"},x&&t.createElement(m,{className:"xh-form-input-main-left-label"},x,w&&t.createElement(m,{className:"xh-form-input-main-left-label-icon"},w)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement(m,null,y)),t.createElement(m,{className:"xh-form-input-main-center"},I?t.createElement(o,{className:i("xh-form-input-readonly",{"xh-form-input-placeholder":!h})},h||v):t.createElement(c,a({},V,{ref:z,className:"xh-form-input-main-center-native",maxlength:f,name:L,placeholder:v,type:d,value:h,onBlur:q,onInput:k}))),T&&t.createElement(m,{className:"xh-form-input-main-extra"},T)),t.createElement(m,{className:"xh-form-input-right"},N,B&&t.createElement(m,{className:"arrow"}))):t.createElement("div",{className:D},t.createElement("div",{className:"xh-form-input-main"},t.createElement("div",{className:"xh-form-input-main-left"},x&&t.createElement("label",{className:"xh-form-input-main-left-label"},x,w&&t.createElement("div",{className:"xh-form-input-main-left-label-icon"},w)),E&&t.createElement("label",{dangerouslySetInnerHTML:{__html:E},className:"label"}),t.createElement("div",null,y)),t.createElement("div",{className:"xh-form-input-main-center"},I?t.createElement("p",{className:i("xh-form-input-main-center-readonly",{"xh-form-input-main-placeholder":!h})},h||v):t.createElement("input",{ref:z,className:"xh-form-input-main-center-native",maxLength:f,name:L,pattern:g,placeholder:v,type:d,value:h,onBlur:q,onInput:k})),T&&t.createElement("div",{className:"xh-form-input-main-extra"},T)),t.createElement("div",{className:"xh-form-input-right"},N,B&&t.createElement("span",{className:"arrow"})))}));export{u as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/FormInput/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport {\n Input,\n View,\n Text,\n InputProps,\n CommonEventFunction,\n} from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { inputRange } from \"../../utils/index\";\n\nimport \"./index.scss\";\n\nexport type HTMLFormType =\n | \"tel\"\n | \"text\"\n | \"number\"\n | \"password\"\n | \"idcard\"\n | \"digit\"\n | \"safe-password\"\n | \"nickname\";\n\nexport type FormInputProps = {\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n /** 当键盘输入时,触发input事件,event.detail = {value, cursor, keyCode},处理函数可以直接 return 一个字符串,将替换输入框的内容。\n * @supported weapp, h5, rn\n */\n onInput?: CommonEventFunction<InputProps.inputEventDetail>;\n\n /** 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度\n * @supported weapp, h5, rn\n */\n onFocus?: CommonEventFunction<InputProps.inputForceEventDetail>;\n\n /** 输入框失去焦点时触发\n *\n * event.detail = {value: value}\n * @supported weapp, h5, rn\n */\n value?: string;\n maxlength?: number;\n placeholder?: string;\n type?: HTMLFormType;\n pattern?: string;\n RightComponent?: ReactNode;\n label?: string;\n labelHtml?: string;\n LeftComponent?: ReactNode;\n LeftIcon?: ReactNode;\n name?: string;\n readonly?: boolean;\n withArrow?: boolean;\n direction?: \"row\" | \"column\";\n border?: boolean;\n mainExtra?: ReactNode;\n padding?: boolean;\n password?: boolean;\n focus?: boolean;\n /** 设置键盘右下角按钮的文字\n * @default done\n * @supported weapp, rn\n */\n confirmType?: \"send\" | \"search\" | \"next\" | \"go\" | \"done\";\n /** 用于透传 `WebComponents` 上的属性到内部 H5 标签上\n * @supported h5\n */\n nativeProps?: Record<string, unknown>;\n};\n\nexport type FocusHandler = { focus: () => void };\n\nconst FormInput = forwardRef<FocusHandler, FormInputProps>((props, formRef) => {\n const {\n onChange,\n maxlength,\n value,\n type,\n placeholder,\n label,\n labelHtml,\n RightComponent,\n onBlur,\n pattern,\n LeftComponent,\n LeftIcon,\n name,\n readonly = false,\n withArrow = false,\n direction = \"row\",\n border = true,\n mainExtra,\n padding = false,\n ...rest\n } = props;\n\n function handleChange(e): any {\n let inputValue = inputRange(e.target.value);\n e.target.value = inputValue;\n onChange && onChange(inputValue);\n }\n\n function handleBlur(e): any {\n let inputValue = inputRange(e.target.value);\n onBlur && onBlur(inputValue);\n }\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(formRef, () => ({\n focus() {\n inputRef.current?.focus();\n },\n }));\n\n const wrapperCls = classNames(\"xh-form-input\", {\n column: direction === \"column\",\n border,\n padding,\n });\n\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <View className={wrapperCls}>\n <View className=\"xh-form-input-main\">\n <View className=\"xh-form-input-main-left\">\n {label && (\n <View className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <View className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </View>\n )}\n </View>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <View>{LeftComponent}</View>\n </View>\n <View className=\"xh-form-input-main-center\">\n {readonly ? (\n <Text\n className={classNames(\"xh-form-input-readonly\", {\n \"xh-form-input-placeholder\": !value,\n })}\n >\n {value || placeholder}\n </Text>\n ) : (\n <Input\n {...rest}\n ref={inputRef}\n className=\"xh-form-input-main-center-native\"\n maxlength={maxlength}\n name={name}\n placeholder={placeholder}\n type={type as InputProps[\"type\"]}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </View>\n {mainExtra && (\n <View className=\"xh-form-input-main-extra\">{mainExtra}</View>\n )}\n </View>\n <View className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <View className=\"arrow\" />}\n </View>\n </View>\n );\n }\n\n return (\n <div className={wrapperCls}>\n <div className=\"xh-form-input-main\">\n <div className=\"xh-form-input-main-left\">\n {label && (\n <label className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <div className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </div>\n )}\n </label>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <div>{LeftComponent}</div>\n </div>\n <div className=\"xh-form-input-main-center\">\n {readonly ? (\n <p\n className={classNames(\"xh-form-input-main-center-readonly\", {\n \"xh-form-input-main-placeholder\": !value,\n })}\n >\n {value || placeholder}\n </p>\n ) : (\n <input\n ref={inputRef}\n className=\"xh-form-input-main-center-native\"\n maxLength={maxlength}\n name={name}\n pattern={pattern}\n placeholder={placeholder}\n type={type}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </div>\n {mainExtra && (\n <div className=\"xh-form-input-main-extra\">{mainExtra}</div>\n )}\n </div>\n <div className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <span className=\"arrow\" />}\n </div>\n </div>\n );\n});\nexport default FormInput;\n"],"names":["FormInput","forwardRef","props","formRef","onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","_a","readonly","_b","withArrow","_c","direction","_d","border","mainExtra","_e","padding","rest","__rest","handleChange","e","inputValue","inputRange","target","handleBlur","inputRef","useRef","useImperativeHandle","focus","current","wrapperCls","classNames","column","process","env","TARO_ENV","React","createElement","View","className","dangerouslySetInnerHTML","__html","Text","Input","ref","onInput","maxLength"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/FormInput/index.tsx"],"sourcesContent":["import React, {\n ReactNode,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport {\n Input,\n View,\n Text,\n InputProps,\n CommonEventFunction,\n} from \"@tarojs/components\";\nimport classNames from \"classnames\";\nimport { inputRange } from \"../../utils/index\";\n\nimport \"./index.scss\";\n\nexport type HTMLFormType =\n | \"tel\"\n | \"text\"\n | \"number\"\n | \"password\"\n | \"idcard\"\n | \"digit\"\n | \"safe-password\"\n | \"nickname\";\n\nexport type FormInputProps = {\n onChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n /** 当键盘输入时,触发input事件,event.detail = {value, cursor, keyCode},处理函数可以直接 return 一个字符串,将替换输入框的内容。\n * @supported weapp, h5, rn\n */\n onInput?: CommonEventFunction<InputProps.inputEventDetail>;\n\n /** 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度\n * @supported weapp, h5, rn\n */\n onFocus?: CommonEventFunction<InputProps.inputForceEventDetail>;\n\n /** 输入框失去焦点时触发\n *\n * event.detail = {value: value}\n * @supported weapp, h5, rn\n */\n value?: string;\n maxlength?: number;\n placeholder?: string;\n type?: HTMLFormType;\n pattern?: string;\n RightComponent?: ReactNode;\n label?: string;\n labelHtml?: string;\n LeftComponent?: ReactNode;\n LeftIcon?: ReactNode;\n name?: string;\n readonly?: boolean;\n withArrow?: boolean;\n direction?: \"row\" | \"column\";\n border?: boolean;\n mainExtra?: ReactNode;\n padding?: boolean;\n password?: boolean;\n focus?: boolean;\n /** 设置键盘右下角按钮的文字\n * @default done\n * @supported weapp, rn\n */\n confirmType?: \"send\" | \"search\" | \"next\" | \"go\" | \"done\";\n /** 用于透传 `WebComponents` 上的属性到内部 H5 标签上\n * @supported h5\n */\n nativeProps?: Record<string, unknown>;\n className?: string;\n};\n\nexport type FocusHandler = { focus: () => void };\n\nconst FormInput = forwardRef<FocusHandler, FormInputProps>((props, formRef) => {\n const {\n onChange,\n maxlength,\n value,\n type,\n placeholder,\n label,\n labelHtml,\n RightComponent,\n onBlur,\n pattern,\n LeftComponent,\n LeftIcon,\n name,\n readonly = false,\n withArrow = false,\n direction = \"row\",\n border = true,\n mainExtra,\n padding = false,\n className,\n ...rest\n } = props;\n\n function handleChange(e): any {\n let inputValue = inputRange(e.target.value);\n e.target.value = inputValue;\n onChange && onChange(inputValue);\n }\n\n function handleBlur(e): any {\n let inputValue = inputRange(e.target.value);\n onBlur && onBlur(inputValue);\n }\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(formRef, () => ({\n focus() {\n inputRef.current?.focus();\n },\n }));\n\n const wrapperCls = classNames(\"xh-form-input\", {\n column: direction === \"column\",\n border,\n padding,\n className,\n });\n\n if (process.env.TARO_ENV !== \"h5\") {\n return (\n <View className={wrapperCls}>\n <View className=\"xh-form-input-main\">\n <View className=\"xh-form-input-main-left\">\n {label && (\n <View className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <View className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </View>\n )}\n </View>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <View>{LeftComponent}</View>\n </View>\n <View className=\"xh-form-input-main-center\">\n {readonly ? (\n <Text\n className={classNames(\"xh-form-input-readonly\", {\n \"xh-form-input-placeholder\": !value,\n })}\n >\n {value || placeholder}\n </Text>\n ) : (\n <Input\n {...rest}\n ref={inputRef}\n className=\"xh-form-input-main-center-native\"\n maxlength={maxlength}\n name={name}\n placeholder={placeholder}\n type={type as InputProps[\"type\"]}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </View>\n {mainExtra && (\n <View className=\"xh-form-input-main-extra\">{mainExtra}</View>\n )}\n </View>\n <View className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <View className=\"arrow\" />}\n </View>\n </View>\n );\n }\n\n return (\n <div className={wrapperCls}>\n <div className=\"xh-form-input-main\">\n <div className=\"xh-form-input-main-left\">\n {label && (\n <label className=\"xh-form-input-main-left-label\">\n {label}\n {LeftIcon && (\n <div className=\"xh-form-input-main-left-label-icon\">\n {LeftIcon}\n </div>\n )}\n </label>\n )}\n {labelHtml && (\n <label\n dangerouslySetInnerHTML={{ __html: labelHtml }}\n className=\"label\"\n />\n )}\n <div>{LeftComponent}</div>\n </div>\n <div className=\"xh-form-input-main-center\">\n {readonly ? (\n <p\n className={classNames(\"xh-form-input-main-center-readonly\", {\n \"xh-form-input-main-placeholder\": !value,\n })}\n >\n {value || placeholder}\n </p>\n ) : (\n <input\n ref={inputRef}\n className=\"xh-form-input-main-center-native\"\n maxLength={maxlength}\n name={name}\n pattern={pattern}\n placeholder={placeholder}\n type={type}\n value={value}\n onBlur={handleBlur}\n onInput={handleChange}\n />\n )}\n </div>\n {mainExtra && (\n <div className=\"xh-form-input-main-extra\">{mainExtra}</div>\n )}\n </div>\n <div className=\"xh-form-input-right\">\n {RightComponent}\n {withArrow && <span className=\"arrow\" />}\n </div>\n </div>\n );\n});\nexport default FormInput;\n"],"names":["FormInput","forwardRef","props","formRef","onChange","maxlength","value","type","placeholder","label","labelHtml","RightComponent","onBlur","pattern","LeftComponent","LeftIcon","name","_a","readonly","_b","withArrow","_c","direction","_d","border","mainExtra","_e","padding","className","rest","__rest","handleChange","e","inputValue","inputRange","target","handleBlur","inputRef","useRef","useImperativeHandle","focus","current","wrapperCls","classNames","column","process","env","TARO_ENV","React","createElement","View","dangerouslySetInnerHTML","__html","Text","Input","ref","onInput","maxLength"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import e,{forwardRef as n,useImperativeHandle as o}from"react";import r from"classnames";import{View as l}from"@tarojs/components";import a from"../FormInput/index.js";import{verifyIdcard as t}from"../src/utils/index.js";var c=n((function(n,c){var i=n.showScan,s=void 0!==i&&i,u=n.label,m=n.value,d=n.readOnly,p=n.direction,f=void 0===p?"column":p,v=n.onScan,h=n.placeholder,g=void 0===h?"请输入身份证":h,b=n.onError,x=n.onChange,E=n.maxlength,N=void 0===E?23:E,j=n.slot,y=n.className,C=n.border;return o(c,(function(){return{isValid:t(m.replace(/\s/g,"")),focus:function(){var e;"object"==typeof c&&(null===(e=null==c?void 0:c.current)||void 0===e||e.focus())}}})),e.createElement(l,{className:r("xh-idnumber-input",y)},e.createElement(a,{padding:!0,ref:c,RightComponent:s&&e.createElement(l,{onClick:function(){null==v||v()},className:"xh-idnumber-input-scan"}),border:C,direction:f,label:u,maxlength:N,placeholder:g,readonly:d,type:"weapp"===process.env.TARO_ENV?"idcard":"tel",value:m.replace(/\s/g,""),onBlur:function(e){t(e)||null==b||b()},onChange:function(e){var n=e.replace(/\s/g,"");null==x||x(n)}}),e.createElement(l,{className:"xh-idnumber-input-slot"},j))}));export{c as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/IDNumberInput/index.tsx"],"sourcesContent":["import React, { ReactNode, forwardRef, useImperativeHandle } from \"react\";\nimport classNames from \"classnames\";\nimport { View } from \"@tarojs/components\";\n\nimport XHFormInput from \"../FormInput\";\nimport \"./index.scss\";\nimport { verifyIdcard } from \"../../utils\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type IDNumberInputProps = {\n showScan?: boolean;\n label?: string;\n onChange?: (value: string) => void;\n value: string;\n placeholder?: string;\n readOnly?: boolean;\n disabled?: boolean;\n direction?: \"column\" | \"row\";\n onScan?: () => void;\n onError?: () => void;\n maxlength?: number;\n slot?: ReactNode;\n border?: boolean;\n} & XHComponentCommonProps;\n\nconst BankCardNumberInput = forwardRef<any, IDNumberInputProps>(\n (props, fromRef) => {\n const {\n showScan = false,\n label,\n value,\n readOnly,\n direction = \"column\",\n onScan,\n placeholder = \"请输入身份证\",\n onError,\n onChange,\n maxlength = 23,\n slot,\n className,\n border,\n } = props;\n\n const handleBlur = value => {\n if (!verifyIdcard(value)) onError?.();\n };\n\n const handleChange = value => {\n const newValue = value.replace(/\\s/g, \"\");\n\n onChange?.(newValue);\n };\n\n const handleOnScan = () => {\n onScan?.();\n };\n\n useImperativeHandle(fromRef, () => {\n return {\n isValid: verifyIdcard(value.replace(/\\s/g, \"\")),\n focus: () => {\n if (typeof fromRef === \"object\") {\n fromRef?.current?.focus();\n }\n },\n };\n });\n\n return (\n <View className={classNames(\"xh-idnumber-input\", className)}>\n <XHFormInput\n padding\n ref={fromRef}\n RightComponent={\n showScan && (\n <View\n onClick={handleOnScan}\n className=\"xh-idnumber-input-scan\"\n ></View>\n )\n }\n border={border}\n direction={direction}\n label={label}\n maxlength={maxlength}\n placeholder={placeholder}\n readonly={readOnly}\n type={process.env.TARO_ENV === \"weapp\" ? \"idcard\" : \"tel\"}\n value={value.replace(/\\s/g, \"\")}\n onBlur={handleBlur}\n onChange={handleChange}\n />\n <View className=\"xh-idnumber-input-slot\">{slot}</View>\n </View>\n );\n }\n);\n\nexport default BankCardNumberInput;\n"],"names":["BankCardNumberInput","forwardRef","props","fromRef","_a","showScan","label","value","readOnly","_b","direction","onScan","_c","placeholder","onError","onChange","_d","maxlength","slot","className","border","useImperativeHandle","isValid","verifyIdcard","replace","focus","current","React","createElement","View","classNames","XHFormInput","padding","ref","RightComponent","onClick","readonly","type","process","env","TARO_ENV","onBlur","newValue"],"mappings":"6NAyBA,IAAMA,EAAsBC,GAC1B,SAACC,EAAOC,GAEJ,IAAAC,EAaEF,EAAKG,SAbPA,cAAgBD,EAChBE,EAYEJ,EAAKI,MAXPC,EAWEL,EAXGK,MACLC,EAUEN,EAVMM,SACRC,EASEP,YATFQ,OAAY,IAAAD,EAAA,WACZE,EAQET,EAAKS,OAPPC,EAOEV,EAPoBW,YAAtBA,OAAc,IAAAD,EAAA,SAAQA,EACtBE,EAMEZ,EANKY,QACPC,EAKEb,WAJFc,EAIEd,EAJYe,UAAdA,OAAS,IAAAD,EAAG,GAAEA,EACdE,EAGEhB,EAHEgB,KACJC,EAEEjB,EAFOiB,UACTC,EACElB,SA2BJ,OAXAmB,EAAoBlB,GAAS,WAC3B,MAAO,CACLmB,QAASC,EAAahB,EAAMiB,QAAQ,MAAO,KAC3CC,MAAO,iBACkB,iBAAZtB,IACO,QAAhBC,EAAAD,aAAA,EAAAA,EAASuB,eAAO,IAAAtB,GAAAA,EAAEqB,QAErB,EAEL,IAGEE,EAACC,cAAAC,EAAK,CAAAV,UAAWW,EAAW,oBAAqBX,IAC/CQ,EAAAC,cAACG,EACC,CAAAC,WACAC,IAAK9B,EACL+B,eACE7B,GACEsB,EAAAC,cAACC,EACC,CAAAM,QAvBS,WACnBxB,SAAAA,GACF,EAsBYQ,UAAU,2BAIhBC,OAAQA,EACRV,UAAWA,EACXJ,MAAOA,EACPW,UAAWA,EACXJ,YAAaA,EACbuB,SAAU5B,EACV6B,KAA+B,UAAzBC,QAAQC,IAAIC,SAAuB,SAAW,MACpDjC,MAAOA,EAAMiB,QAAQ,MAAO,IAC5BiB,OA9Ca,SAAAlC,GACZgB,EAAahB,IAAQO,SAAAA,GAC5B,EA6CMC,SA3Ce,SAAAR,GACnB,IAAMmC,EAAWnC,EAAMiB,QAAQ,MAAO,IAEtCT,SAAAA,EAAW2B,EACb,IAyCIf,EAACC,cAAAC,EAAK,CAAAV,UAAU,0BAA0BD,GAGhD"}
@@ -1,2 +1,2 @@
1
- export{default as XHButton}from"../Button/index.js";export{default as XHPage}from"../Page/index.js";export{default as XHLoading}from"../Loading/index.js";export{default as XHBankIcon}from"../BankIcon/index.js";export{default as XHCaptcha}from"../Captcha/index.js";export{default as XHFormInput}from"../FormInput/index.js";export{default as XHList}from"../List/index.js";export{default as XHMask}from"../Mask/index.js";export{default as XHImage}from"../Image/index.js";export{default as XHDialog}from"../Dialog/index.js";export{default as XHNumberKeyboard}from"../NumberKeyboard/index.js";export{default as XHPasswordInput}from"../PasswordInput/index.js";export{default as XHProgress}from"../Progress/index.js";export{default as XHToast}from"../Toast/index.js";export{default as XHDialogRef}from"../DialogRef/index.js";export{default as XHTabbar}from"../Tabbar/index.js";export{default as XHPopup}from"../Popup/index.js";export{default as XHPicker}from"../Picker/index.js";export{default as XHSpace}from"../Space/index.js";export{default as ThemeProvider}from"../ThemeProvider/index.js";export{default as XHCheckbox}from"../Checkbox/index.js";export{default as XHRadio}from"../Radio/index.js";export{default as XHStep}from"../Step/index.js";export{default as XHBadge}from"../Badge/index.js";export{default as XHAmountInput}from"../AmountInput/index.js";export{default as XHAmountKeyboard}from"../AmountKeyboard/index.js";export{default as XHCollapse}from"../Collapse/index.js";export{default as XHNavBar}from"../NavBar/index.js";export{default as XHIcon}from"../Icon/index.js";export{default as XHActionSheet}from"../ActionSheet/index.js";export{default as XHRank}from"../Rank/index.js";export{default as XHCell}from"../Cell/index.js";export{default as XHActivityIndicator}from"../ActivityIndicator/index.js";export{default as XHSwitch}from"../Switch/index.js";export{default as XHLinkMan}from"../LinkMan/index.js";export{default as XHResult}from"../Result/index.js";export{default as XHProgressCircle}from"../ProgressCircle/index.js";
1
+ export{default as XHButton}from"../Button/index.js";export{default as XHPage}from"../Page/index.js";export{default as XHLoading}from"../Loading/index.js";export{default as XHBankIcon}from"../BankIcon/index.js";export{default as XHCaptcha}from"../Captcha/index.js";export{default as XHFormInput}from"../FormInput/index.js";export{default as XHList}from"../List/index.js";export{default as XHMask}from"../Mask/index.js";export{default as XHImage}from"../Image/index.js";export{default as XHDialog}from"../Dialog/index.js";export{default as XHNumberKeyboard}from"../NumberKeyboard/index.js";export{default as XHPasswordInput}from"../PasswordInput/index.js";export{default as XHProgress}from"../Progress/index.js";export{default as XHToast}from"../Toast/index.js";export{default as XHDialogRef}from"../DialogRef/index.js";export{default as XHTabbar}from"../Tabbar/index.js";export{default as XHPopup}from"../Popup/index.js";export{default as XHPicker}from"../Picker/index.js";export{default as XHSpace}from"../Space/index.js";export{default as ThemeProvider}from"../ThemeProvider/index.js";export{default as XHCheckbox}from"../Checkbox/index.js";export{default as XHRadio}from"../Radio/index.js";export{default as XHStep}from"../Step/index.js";export{default as XHBadge}from"../Badge/index.js";export{default as XHAmountInput}from"../AmountInput/index.js";export{default as XHAmountKeyboard}from"../AmountKeyboard/index.js";export{default as XHCollapse}from"../Collapse/index.js";export{default as XHNavBar}from"../NavBar/index.js";export{default as XHIcon}from"../Icon/index.js";export{default as XHActionSheet}from"../ActionSheet/index.js";export{default as XHRank}from"../Rank/index.js";export{default as XHCell}from"../Cell/index.js";export{default as XHActivityIndicator}from"../ActivityIndicator/index.js";export{default as XHSwitch}from"../Switch/index.js";export{default as XHLinkMan}from"../LinkMan/index.js";export{default as XHResult}from"../Result/index.js";export{default as XHProgressCircle}from"../ProgressCircle/index.js";export{default as XHBankCardNumberInput}from"../BankCardNumberInput/index.js";export{default as XHIDNumberInput}from"../IDNumberInput/index.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import e from"react";var u,r=function(e){return e.replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi,"")};function t(e,u){if(void 0===u&&(u=750),!e)return"";return"h5"===process.env.TARO_ENV?Math.ceil(parseInt("".concat(e),10)/40*640/u*1e4)/1e4+"rem":"".concat(e/{640:1.17,750:1,828:.905}[u],"rpx")}var n=function(){if(void 0!==u)return u;var e=document.createElement("div");return e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e),u=1===e.scrollHeight,document.body.removeChild(e),u};function o(u,r){void 0===r&&(r={});var t=[];return e.Children.forEach(u,(function(e){var u;(null!=e||r.keepEmpty)&&(Array.isArray(e)?t=t.concat(o(e)):(u=e).$$typeof===Symbol.for("react.element")&&u.type===Symbol.for("react.fragment")&&e.props?t=t.concat(o(e.props.children,r)):t.push(e))})),t}export{n as detectFlexGapSupported,r as inputRange,t as pxTransform,o as toArray};
1
+ import r from"react";var t,e=function(r){return r.replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi,"")};function a(r,t){if(void 0===t&&(t=750),!r)return"";return"h5"===process.env.TARO_ENV?Math.ceil(parseInt("".concat(r),10)/40*640/t*1e4)/1e4+"rem":"".concat(r/{640:1.17,750:1,828:.905}[t],"rpx")}var n=function(){if(void 0!==t)return t;var r=document.createElement("div");return r.style.display="flex",r.style.flexDirection="column",r.style.rowGap="1px",r.appendChild(document.createElement("div")),r.appendChild(document.createElement("div")),document.body.appendChild(r),t=1===r.scrollHeight,document.body.removeChild(r),t};function u(t,e){void 0===e&&(e={});var a=[];return r.Children.forEach(t,(function(r){var t;(null!=r||e.keepEmpty)&&(Array.isArray(r)?a=a.concat(u(r)):(t=r).$$typeof===Symbol.for("react.element")&&t.type===Symbol.for("react.fragment")&&r.props?a=a.concat(u(r.props.children,e)):a.push(r))})),a}var c=function(r){if(!r)return!1;for(var t=!0,e=0,a=r.length;a>0;a--){var n=+r.substring(a,a-1);(t=!t)&&(n*=2);var u=n%10;e+=u+(n-u)/10}return e%10==0};function s(r,t){var e=r.replace(/[^\d]/g,"").replace(/(\d{4})(?=\d)/g,"$1 ");return t?e.replace(/\s(\d{4})(?!\d)/g," ****"):e}function p(r){if(!r)return!1;switch(r.length){case 15:if((parseInt(r.substr(6,2))+1900)%4==0||(parseInt(r.substr(6,2))+1900)%100==0&&(parseInt(r.substr(6,2))+1900)%4==0){return!!/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/.test(r)}return!!/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/.test(r);case 18:if(/^[1-9][0-7]\d{4}((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))\d{3}(\d|X|x)?$/.test(r)){var t=7*(parseInt(r.charAt(0))+parseInt(r.charAt(10)))+9*(parseInt(r.charAt(1))+parseInt(r.charAt(11)))+10*(parseInt(r.charAt(2))+parseInt(r.charAt(12)))+5*(parseInt(r.charAt(3))+parseInt(r.charAt(13)))+8*(parseInt(r.charAt(4))+parseInt(r.charAt(14)))+4*(parseInt(r.charAt(5))+parseInt(r.charAt(15)))+2*(parseInt(r.charAt(6))+parseInt(r.charAt(16)))+1*parseInt(r.charAt(7))+6*parseInt(r.charAt(8))+3*parseInt(r.charAt(9));return"10X98765432".substr(t%11,1)===r.charAt(17).toUpperCase()}break;default:return!1}return!1}export{c as checkBankCard,s as creditCard,n as detectFlexGapSupported,e as inputRange,a as pxTransform,u as toArray,p as verifyIdcard};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/utils/index.ts"],"sourcesContent":["/**\n * 禁止输入emoji表情\n * @param {string} val - 输入内容\n * @returns {boolean} - 校验结果 返回 true || false\n */\nimport React from \"react\";\n\nexport const inputRange = (val: string): string => {\n let iconRule1 =\n /[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030/gi;\n return val.replace(iconRule1, \"\");\n};\n\n// function Handler(fn) {\n// this.handler = fn;\n// this.next = null;\n// }\n\n// Handler.prototype.setNext = function setNext(h) {\n// this.next = h;\n// return h;\n// };\n\n// Handler.prototype.passRequest = function () {\n// const ret = this.handler.apply(this, arguments);\n// // 提前结束\n// if (!ret) {\n// return ret;\n// }\n\n// // 向后传递\n// if (this.next) {\n// return this.next.passRequest.apply(this.next, arguments);\n// }\n// return ret;\n// };\n\n// export class ChainHander {\n// public hander: (s: string) => boolean\n// public next\n// constructor(fn: (str: string) => boolean) {\n// this.hander = fn\n// }\n// public setNext(callback): () => boolean {\n// this.next = callback\n// return callback\n// }\n// public checkPass(...arg) {\n// const result = this.hander.apply(this, arg)\n// if (!result) {\n// return result\n// }\n\n// if (this.next != null) {\n// return this.next.checkPass.apply(this.next, arg)\n// }\n\n// return result\n// }\n// }\n\nexport const throtte = (fn: Function, delay: number = 1500) => {\n let timer: NodeJS.Timer;\n let canCall = true;\n return function (arg) {\n if (canCall) {\n canCall = false;\n fn(arg);\n }\n timer = setTimeout(() => {\n canCall = true;\n clearTimeout(timer);\n }, delay);\n };\n};\n\nexport const debounce = (fn: (...arg: any) => any, delay: number = 1500) => {\n let timer: NodeJS.Timeout | null = null;\n return function () {\n const context = this;\n const arg = arguments;\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n fn.apply(context, arg);\n }, delay);\n };\n};\n\nexport function pxTransform(size: number, designWidth = 750): string {\n if (!size) return \"\";\n const deviceRatio = {\n 640: 2.34 / 2,\n 750: 1,\n 828: 1.81 / 2,\n };\n if (process.env.TARO_ENV === \"h5\")\n return (\n Math.ceil(\n (((parseInt(`${size}`, 10) / 40) * 640) / designWidth) * 10000\n ) /\n 10000 +\n \"rem\"\n );\n return `${size / deviceRatio[designWidth]}rpx`;\n}\n\nlet flexGapSupported: boolean | undefined;\nexport const detectFlexGapSupported = () => {\n if (flexGapSupported !== undefined) {\n return flexGapSupported;\n }\n\n const flex = document.createElement(\"div\");\n flex.style.display = \"flex\";\n flex.style.flexDirection = \"column\";\n flex.style.rowGap = \"1px\";\n\n flex.appendChild(document.createElement(\"div\"));\n flex.appendChild(document.createElement(\"div\"));\n\n document.body.appendChild(flex);\n flexGapSupported = flex.scrollHeight === 1;\n document.body.removeChild(flex);\n\n return flexGapSupported;\n};\n\nexport interface Option {\n keepEmpty?: boolean;\n}\n\nexport function toArray(\n children: React.ReactNode,\n option: Option = {}\n): React.ReactElement[] {\n let ret: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child: any | any[]) => {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n\n return ret;\n}\n\nfunction isFragment(object) {\n return (\n object.$$typeof === Symbol.for(\"react.element\") &&\n object.type === Symbol.for(\"react.fragment\")\n );\n}\n"],"names":["flexGapSupported","inputRange","val","replace","pxTransform","size","designWidth","process","env","TARO_ENV","Math","ceil","parseInt","concat","detectFlexGapSupported","undefined","flex","document","createElement","style","display","flexDirection","rowGap","appendChild","body","scrollHeight","removeChild","toArray","children","option","ret","React","Children","forEach","child","object","keepEmpty","Array","isArray","$$typeof","Symbol","for","type","props","push"],"mappings":"qBAOO,IAmGHA,EAnGSC,EAAa,SAACC,GAGzB,OAAOA,EAAIC,QADT,6OAC4B,GAChC,EA6EgB,SAAAC,EAAYC,EAAcC,GACxC,QADwC,IAAAA,IAAAA,EAAiB,MACpDD,EAAM,MAAO,GAMlB,MAA6B,OAAzBE,QAAQC,IAAIC,SAEZC,KAAKC,KACAC,SAAS,GAAAC,OAAGR,GAAQ,IAAM,GAAM,IAAOC,EAAe,KAEzD,IACF,MAEG,GAAAO,OAAGR,EAbU,CAClB,IAAK,KACL,IAAK,EACL,IAAK,MAUsBC,SAC/B,CAGa,IAAAQ,EAAyB,WACpC,QAAyBC,IAArBf,EACF,OAAOA,EAGT,IAAMgB,EAAOC,SAASC,cAAc,OAYpC,OAXAF,EAAKG,MAAMC,QAAU,OACrBJ,EAAKG,MAAME,cAAgB,SAC3BL,EAAKG,MAAMG,OAAS,MAEpBN,EAAKO,YAAYN,SAASC,cAAc,QACxCF,EAAKO,YAAYN,SAASC,cAAc,QAExCD,SAASO,KAAKD,YAAYP,GAC1BhB,EAAyC,IAAtBgB,EAAKS,aACxBR,SAASO,KAAKE,YAAYV,GAEnBhB,CACT,EAMgB,SAAA2B,EACdC,EACAC,QAAA,IAAAA,IAAAA,EAAmB,CAAA,GAEnB,IAAIC,EAA4B,GAgBhC,OAdAC,EAAMC,SAASC,QAAQL,GAAU,SAACM,GAiBpC,IAAoBC,GAhBZ,MAACD,GAA2CL,EAAOO,aAInDC,MAAMC,QAAQJ,GAChBJ,EAAMA,EAAIjB,OAAOc,EAAQO,KAWXC,EAVMD,GAYfK,WAAaC,OAAOC,IAAI,kBAC/BN,EAAOO,OAASF,OAAOC,IAAI,mBAbKP,EAAMS,MACpCb,EAAMA,EAAIjB,OAAOc,EAAQO,EAAMS,MAAMf,SAAUC,IAE/CC,EAAIc,KAAKV,GAEb,IAEOJ,CACT"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/utils/index.ts"],"sourcesContent":["/**\n * 禁止输入emoji表情\n * @param {string} val - 输入内容\n * @returns {boolean} - 校验结果 返回 true || false\n */\nimport React from \"react\";\n\nexport const inputRange = (val: string): string => {\n let iconRule1 =\n /[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030/gi;\n return val.replace(iconRule1, \"\");\n};\n\n// function Handler(fn) {\n// this.handler = fn;\n// this.next = null;\n// }\n\n// Handler.prototype.setNext = function setNext(h) {\n// this.next = h;\n// return h;\n// };\n\n// Handler.prototype.passRequest = function () {\n// const ret = this.handler.apply(this, arguments);\n// // 提前结束\n// if (!ret) {\n// return ret;\n// }\n\n// // 向后传递\n// if (this.next) {\n// return this.next.passRequest.apply(this.next, arguments);\n// }\n// return ret;\n// };\n\n// export class ChainHander {\n// public hander: (s: string) => boolean\n// public next\n// constructor(fn: (str: string) => boolean) {\n// this.hander = fn\n// }\n// public setNext(callback): () => boolean {\n// this.next = callback\n// return callback\n// }\n// public checkPass(...arg) {\n// const result = this.hander.apply(this, arg)\n// if (!result) {\n// return result\n// }\n\n// if (this.next != null) {\n// return this.next.checkPass.apply(this.next, arg)\n// }\n\n// return result\n// }\n// }\n\nexport const throtte = (fn: Function, delay: number = 1500) => {\n let timer: NodeJS.Timer;\n let canCall = true;\n return function (arg) {\n if (canCall) {\n canCall = false;\n fn(arg);\n }\n timer = setTimeout(() => {\n canCall = true;\n clearTimeout(timer);\n }, delay);\n };\n};\n\nexport const debounce = (fn: (...arg: any) => any, delay: number = 1500) => {\n let timer: NodeJS.Timeout | null = null;\n return function () {\n const context = this;\n const arg = arguments;\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n fn.apply(context, arg);\n }, delay);\n };\n};\n\nexport function pxTransform(size: number, designWidth = 750): string {\n if (!size) return \"\";\n const deviceRatio = {\n 640: 2.34 / 2,\n 750: 1,\n 828: 1.81 / 2,\n };\n if (process.env.TARO_ENV === \"h5\")\n return (\n Math.ceil(\n (((parseInt(`${size}`, 10) / 40) * 640) / designWidth) * 10000\n ) /\n 10000 +\n \"rem\"\n );\n return `${size / deviceRatio[designWidth]}rpx`;\n}\n\nlet flexGapSupported: boolean | undefined;\nexport const detectFlexGapSupported = () => {\n if (flexGapSupported !== undefined) {\n return flexGapSupported;\n }\n\n const flex = document.createElement(\"div\");\n flex.style.display = \"flex\";\n flex.style.flexDirection = \"column\";\n flex.style.rowGap = \"1px\";\n\n flex.appendChild(document.createElement(\"div\"));\n flex.appendChild(document.createElement(\"div\"));\n\n document.body.appendChild(flex);\n flexGapSupported = flex.scrollHeight === 1;\n document.body.removeChild(flex);\n\n return flexGapSupported;\n};\n\nexport interface Option {\n keepEmpty?: boolean;\n}\n\nexport function toArray(\n children: React.ReactNode,\n option: Option = {}\n): React.ReactElement[] {\n let ret: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child: any | any[]) => {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n\n return ret;\n}\n\nfunction isFragment(object) {\n return (\n object.$$typeof === Symbol.for(\"react.element\") &&\n object.type === Symbol.for(\"react.fragment\")\n );\n}\n\n// 获取 校验银行卡\nexport const checkBankCard = (cardNo: string) => {\n if (!cardNo) return false;\n let tmp = true;\n let total = 0;\n for (let i = cardNo.length; i > 0; i--) {\n let num = +cardNo.substring(i, i - 1);\n if (((tmp = !tmp), tmp)) num = num * 2;\n const gw = num % 10;\n total += gw + (num - gw) / 10;\n }\n return total % 10 === 0;\n};\n\n/**\n * 格式化银行卡号\n *\n * @export\n * @param {string} cardNum 6217002712347888987\n * @param {boolean} mask 是否掩码\n * @returns {string} 6217 0027 1234 7888 987\n */\nexport function creditCard(cardNum: string, mask?: boolean): string {\n const newCardNum = cardNum\n .replace(/[^\\d]/g, \"\")\n .replace(/(\\d{4})(?=\\d)/g, \"$1 \");\n\n return mask ? newCardNum.replace(/\\s(\\d{4})(?!\\d)/g, \" ****\") : newCardNum;\n}\n\n/**\n * 校验身份证号是否符合规范\n *\n * @export\n * @param {string} idcard\n * @returns {boolean} true 符合 | false 不符合\n */\nexport function verifyIdcard(idcard: string): boolean {\n if (!idcard) return false;\n let regex1 =\n /^[1-9][0-7]\\d{4}((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))\\d{3}(\\d|X|x)?$/;\n /* 身份号码位数及格式检验 */\n switch (idcard.length) {\n case 15:\n if (\n (parseInt(idcard.substr(6, 2)) + 1900) % 4 === 0 ||\n ((parseInt(idcard.substr(6, 2)) + 1900) % 100 === 0 &&\n (parseInt(idcard.substr(6, 2)) + 1900) % 4 === 0)\n ) {\n let regex2 =\n /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/; // 测试出生日期的合法性\n if (regex2.test(idcard)) {\n return true;\n }\n return false;\n }\n // eslint-disable-next-line\n let regex2 =\n /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; // 测试出生日期的合法性\n if (regex2.test(idcard)) {\n return true;\n }\n return false;\n\n case 18:\n if (regex1.test(idcard)) {\n let S =\n (parseInt(idcard.charAt(0)) + parseInt(idcard.charAt(10))) * 7 +\n (parseInt(idcard.charAt(1)) + parseInt(idcard.charAt(11))) * 9 +\n (parseInt(idcard.charAt(2)) + parseInt(idcard.charAt(12))) * 10 +\n (parseInt(idcard.charAt(3)) + parseInt(idcard.charAt(13))) * 5 +\n (parseInt(idcard.charAt(4)) + parseInt(idcard.charAt(14))) * 8 +\n (parseInt(idcard.charAt(5)) + parseInt(idcard.charAt(15))) * 4 +\n (parseInt(idcard.charAt(6)) + parseInt(idcard.charAt(16))) * 2 +\n parseInt(idcard.charAt(7)) * 1 +\n parseInt(idcard.charAt(8)) * 6 +\n parseInt(idcard.charAt(9)) * 3;\n let Y = S % 11;\n let M = \"F\";\n let JYM = \"10X98765432\";\n M = JYM.substr(Y, 1);\n /* 判断校验位 */\n if (M === idcard.charAt(17).toUpperCase()) {\n return true;\n }\n return false;\n }\n break;\n default:\n return false;\n }\n\n return false;\n}\n"],"names":["flexGapSupported","inputRange","val","replace","pxTransform","size","designWidth","process","env","TARO_ENV","Math","ceil","parseInt","concat","detectFlexGapSupported","undefined","flex","document","createElement","style","display","flexDirection","rowGap","appendChild","body","scrollHeight","removeChild","toArray","children","option","ret","React","Children","forEach","child","object","keepEmpty","Array","isArray","$$typeof","Symbol","for","type","props","push","checkBankCard","cardNo","tmp","total","i","length","num","substring","gw","creditCard","cardNum","mask","newCardNum","verifyIdcard","idcard","substr","test","S","charAt","toUpperCase"],"mappings":"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"}