taro-react-uilib 1.4.18 → 1.4.19-0

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 (31) hide show
  1. package/dist/components/Button/index.js.map +1 -1
  2. package/dist/components/Captcha/index.js.map +1 -1
  3. package/dist/components/LicensePlateInput/Keyboard.js +2 -0
  4. package/dist/components/LicensePlateInput/Keyboard.js.map +1 -0
  5. package/dist/components/LicensePlateInput/index.js +2 -0
  6. package/dist/components/LicensePlateInput/index.js.map +1 -0
  7. package/dist/components/src/index.js +1 -1
  8. package/dist/index.esm.js +4 -4
  9. package/dist/index.esm.js.map +1 -1
  10. package/dist/index.js +4 -4
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.umd.js +6 -6
  13. package/dist/index.umd.js.map +1 -1
  14. package/dist/styles/components/index.scss +1 -0
  15. package/dist/styles/components/licenseplateinput.scss +218 -0
  16. package/dist/styles/components/loading.scss +1 -1
  17. package/lib/components/Button/index.js.map +1 -1
  18. package/lib/components/Captcha/index.js.map +1 -1
  19. package/lib/components/LicensePlateInput/Keyboard.js +161 -0
  20. package/lib/components/LicensePlateInput/Keyboard.js.map +1 -0
  21. package/lib/components/LicensePlateInput/index.js +69 -0
  22. package/lib/components/LicensePlateInput/index.js.map +1 -0
  23. package/lib/index.js +1 -0
  24. package/lib/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/types/components/Button/index.d.ts +0 -21
  27. package/types/components/Captcha/index.d.ts +4 -1
  28. package/types/components/LicensePlateInput/Keyboard.d.ts +27 -0
  29. package/types/components/LicensePlateInput/index.d.ts +18 -0
  30. package/types/index.d.ts +1 -0
  31. package/dist/styles/components/images/loading.gif +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Button/index.tsx"],"sourcesContent":["import React, {\n FC,\n MouseEventHandler,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { Button } from \"@tarojs/components\";\nimport { ButtonProps } from \"@tarojs/components/types/Button\";\nimport {\n ITouchEvent,\n TouchEventFunction,\n} from \"@tarojs/components/types/common\";\n\nimport { useTaroEnv } from \"../../hooks\";\nimport \"./index.scss\";\nimport DotJump from \"./DotJump\";\n\nexport type ButtonType = \"default\" | \"secondary\" | \"primary\" | \"warn\";\n\nexport type ButtonShape = \"square\" | \"round\" | \"rectangle\";\n\nexport type ButtonSize = \"default\" | \"mini\" | \"full\";\n\nexport type WechatOpenType =\n | \"contact\"\n /** 触发用户转发,使用前建议先阅读使用指引\n * @see https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%BC%95\n */\n | \"share\"\n /** 获取用户手机号,可以从 bindgetphonenumber 回调中获取到用户信息\n * @see https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html\n */\n | \"getPhoneNumber\"\n /** 获取用户信息,可以从 bindgetuserinfo 回调中获取到用户信息 */\n | \"getUserInfo\"\n /** 用户实名信息授权,已经弃用 */\n | \"getRealnameAuthInfo\"\n /** 打开APP,可以通过app-parameter属性设定向APP传的参数\n * @see https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/launchApp.html\n */\n | \"launchApp\"\n /** 打开授权设置页 */\n | \"openSetting\"\n /** 打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容 */\n | \"feedback\";\nexport type XhButtonProps = {\n htmlType?: \"button\" | \"submit\" | \"reset\";\n type?: ButtonType;\n size?: ButtonSize;\n shape?: ButtonShape;\n disabled?: boolean;\n className?: string;\n styleName?: string;\n text?: string;\n preventTime?: number;\n onClick?: (e: ITouchEvent | MouseEvent) => void;\n style?: React.CSSProperties;\n loading?: boolean;\n loadingStyle?: React.CSSProperties;\n loadingSpace?: number;\n ghost?: boolean;\n /**\n * 镂空\n */\n hollow?: boolean;\n} & Omit<ButtonProps, \"type\" | \"size\">;\n\nconst XhButton: FC<XhButtonProps> = props => {\n const {\n disabled = false,\n type = \"default\",\n size = \"normal\",\n shape = \"round\",\n children,\n className,\n htmlType,\n formType,\n text,\n openType,\n lang,\n sessionFrom,\n sendMessageTitle,\n sendMessagePath,\n sendMessageImg,\n showMessageCard,\n appParameter,\n onGetUserInfo,\n onGetPhoneNumber,\n onOpenSetting,\n onError,\n onContact,\n onClick,\n preventTime = 2500,\n style,\n loading,\n loadingStyle,\n loadingSpace,\n ghost = false,\n hollow = false,\n } = props;\n const state = useTaroEnv();\n const [preventClick, setPreventClick] = useState(false);\n const timer = useRef<NodeJS.Timeout | undefined>();\n const classObj = classNames(\n \"xh-button\",\n {\n default: type === \"default\",\n primary: type === \"primary\",\n secondary: type === \"secondary\",\n ghost: ghost,\n hollow: hollow,\n warn: type === \"warn\",\n quare: shape === \"square\",\n round: shape === \"round\",\n rectangle: shape === \"rectangle\",\n normal: size === \"normal\",\n small: size === \"mini\",\n full: size === \"full\",\n disabled: disabled,\n webutton: state === \"WEAPP\",\n },\n className\n );\n\n const handleClick: MouseEventHandler & TouchEventFunction = e => {\n state === \"WEB\" && e.nativeEvent.stopImmediatePropagation();\n e.preventDefault();\n\n if (preventClick && preventTime !== 0) {\n console.log(\"重复点击\");\n return;\n }\n if (preventTime !== 0) {\n timer.current = setTimeout(() => {\n setPreventClick(false);\n clearTimeout(timer.current);\n }, preventTime);\n }\n if (preventTime !== 0) setPreventClick(true);\n console.log(\"正常点击\");\n onClick && onClick(e);\n };\n\n useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n\n const weButton = (\n <Button\n className={classObj}\n formType={formType}\n openType={openType}\n lang={lang}\n type={type as ButtonProps[\"type\"]}\n sessionFrom={sessionFrom}\n sendMessageTitle={sendMessageTitle}\n sendMessagePath={sendMessagePath}\n sendMessageImg={sendMessageImg}\n showMessageCard={showMessageCard}\n appParameter={appParameter}\n onGetUserInfo={onGetUserInfo}\n onGetPhoneNumber={onGetPhoneNumber}\n onOpenSetting={onOpenSetting}\n onError={onError}\n onContact={onContact}\n onClick={handleClick}\n disabled={disabled}\n style={style}\n loading={loading}\n >\n {children}\n </Button>\n );\n\n if (state !== \"WEB\") {\n return weButton;\n }\n\n return (\n // eslint-disable-next-line react/button-has-type\n <button\n className={classObj}\n disabled={disabled}\n type={htmlType}\n onClick={disabled ? undefined : handleClick}\n style={style}\n >\n {children || text}\n {loading && <DotJump style={loadingStyle} space={loadingSpace} />}\n </button>\n );\n};\n\nexport default XhButton;\n"],"names":["XhButton","props","_a","disabled","_b","type","_c","size","_d","shape","children","className","htmlType","formType","text","openType","lang","sessionFrom","sendMessageTitle","sendMessagePath","sendMessageImg","showMessageCard","appParameter","onGetUserInfo","onGetPhoneNumber","onOpenSetting","onError","onContact","onClick","_e","preventTime","style","loading","loadingStyle","loadingSpace","_f","ghost","_g","hollow","state","useTaroEnv","_h","__read","useState","preventClick","setPreventClick","timer","useRef","classObj","classNames","default","primary","secondary","warn","quare","round","rectangle","normal","small","full","webutton","handleClick","e","nativeEvent","stopImmediatePropagation","preventDefault","current","setTimeout","clearTimeout","useEffect","weButton","React","Button","createElement","undefined","DotJump","space"],"mappings":"gRAqEM,IAAAA,EAA8B,SAAAC,GAEhC,IAAAC,EA8BED,EAAKE,SA9BPA,OAAQ,IAAAD,GAAQA,EAChBE,EA6BEH,OA7BFI,aAAO,UAASD,EAChBE,EA4BEL,EA5BaM,KAAfA,OAAO,IAAAD,EAAA,WACPE,EA2BEP,EA3BaQ,MAAfA,OAAQ,IAAAD,EAAA,UACRE,EA0BET,EAAKS,SAzBPC,EAyBEV,EAAKU,UAxBPC,EAwBEX,EAxBMW,SACRC,EAuBEZ,EAvBMY,SACRC,EAsBEb,OArBFc,EAqBEd,EAAKc,SApBPC,EAoBEf,EAAKe,KAnBPC,EAmBEhB,EAnBSgB,YACXC,EAkBEjB,mBAjBFkB,EAiBElB,EAAKkB,gBAhBPC,EAgBEnB,EAAKmB,eAfPC,EAeEpB,EAfaoB,gBACfC,EAcErB,EAdUqB,aACZC,EAaEtB,gBAZFuB,EAYEvB,EAAKuB,iBAXPC,EAWExB,EAAKwB,cAVPC,EAUEzB,EAVKyB,QACPC,EASE1B,YARF2B,EAQE3B,EAAK2B,QAPPC,EAOE5B,EAPgB6B,YAAlBA,OAAc,IAAAD,EAAA,OACdE,EAME9B,EAAK8B,MALPC,EAKE/B,EALK+B,QACPC,EAIEhC,eAHFiC,EAGEjC,eAFFkC,EAEElC,EAFWmC,MAAbA,OAAQ,IAAAD,KACRE,EACEpC,EADYqC,OAAdA,OAAS,IAAAD,KAELE,EAAQC,IACRC,EAAAC,EAAkCC,GAAS,GAAM,GAAhDC,EAAYH,EAAA,GAAEI,OACfC,EAAQC,IACRC,EAAWC,EACf,YACA,CACEC,QAAkB,YAAT7C,EACT8C,QAAkB,YAAT9C,EACT+C,UAAoB,cAAT/C,EACX+B,MAAOA,EACPE,OAAQA,EACRe,KAAe,SAAThD,EACNiD,MAAiB,WAAV7C,EACP8C,MAAiB,UAAV9C,EACP+C,UAAqB,cAAV/C,EACXgD,OAAiB,WAATlD,EACRmD,MAAgB,SAATnD,EACPoD,KAAe,SAATpD,EACNJ,SAAUA,EACVyD,SAAoB,UAAVrB,GAEZ5B,GAGIkD,EAAsD,SAAAC,GAChD,QAAVvB,GAAmBuB,EAAEC,YAAYC,2BACjCF,EAAEG,iBAEErB,GAAgC,IAAhBd,IAIA,IAAhBA,IACFgB,EAAMoB,QAAUC,YAAW,WACzBtB,GAAgB,GAChBuB,aAAatB,EAAMoB,QACpB,GAAEpC,IAEe,IAAhBA,GAAmBe,GAAgB,GAEvCjB,GAAWA,EAAQkC,GACrB,EAEAO,GAAU,WACR,OAAO,WACLD,aAAatB,EAAMoB,QACrB,CACD,GAAE,IAEH,IAAMI,GACJC,gBAACC,EAAM,CACL7D,UAAWqC,EACXnC,SAAUA,EACVE,SAAUA,EACVC,KAAMA,EACNX,KAAMA,EACNY,YAAaA,EACbC,iBAAkBA,EAClBC,gBAAiBA,EACjBC,eAAgBA,EAChBC,gBAAiBA,EACjBC,aAAcA,EACdC,cAAeA,EACfC,iBAAkBA,EAClBC,cAAeA,EACfC,QAASA,EACTC,UAAWA,EACXC,QAASiC,EACT1D,SAAUA,EACV4B,MAAOA,EACPC,QAASA,GAERtB,GAIL,MAAc,QAAV6B,EACK+B,GAKPC,EACEE,cAAA,SAAA,CAAA9D,UAAWqC,EACX7C,SAAUA,EACVE,KAAMO,EACNgB,QAASzB,OAAWuE,EAAYb,EAChC9B,MAAOA,GAENrB,GAAYI,EACZkB,GAAWuC,EAAAE,cAACE,EAAO,CAAC5C,MAAOE,EAAc2C,MAAO1C,IAGvD"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Button/index.tsx"],"sourcesContent":["import React, {\n FC,\n MouseEventHandler,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { Button } from \"@tarojs/components\";\nimport { ButtonProps } from \"@tarojs/components/types/Button\";\nimport {\n ITouchEvent,\n TouchEventFunction,\n} from \"@tarojs/components/types/common\";\n\nimport { useTaroEnv } from \"../../hooks\";\nimport \"./index.scss\";\nimport DotJump from \"./DotJump\";\n\nexport type ButtonType = \"default\" | \"secondary\" | \"primary\" | \"warn\";\n\nexport type ButtonShape = \"square\" | \"round\" | \"rectangle\";\n\nexport type ButtonSize = \"default\" | \"mini\" | \"full\";\n\nexport type XhButtonProps = {\n htmlType?: \"button\" | \"submit\" | \"reset\";\n type?: ButtonType;\n size?: ButtonSize;\n shape?: ButtonShape;\n disabled?: boolean;\n className?: string;\n styleName?: string;\n text?: string;\n preventTime?: number;\n onClick?: (e: ITouchEvent | MouseEvent) => void;\n style?: React.CSSProperties;\n loading?: boolean;\n loadingStyle?: React.CSSProperties;\n loadingSpace?: number;\n ghost?: boolean;\n /**\n * 镂空\n */\n hollow?: boolean;\n} & Omit<ButtonProps, \"type\" | \"size\">;\n\nconst XhButton: FC<XhButtonProps> = props => {\n const {\n disabled = false,\n type = \"default\",\n size = \"normal\",\n shape = \"round\",\n children,\n className,\n htmlType,\n formType,\n text,\n openType,\n lang,\n sessionFrom,\n sendMessageTitle,\n sendMessagePath,\n sendMessageImg,\n showMessageCard,\n appParameter,\n onGetUserInfo,\n onGetPhoneNumber,\n onOpenSetting,\n onError,\n onContact,\n onClick,\n preventTime = 2500,\n style,\n loading,\n loadingStyle,\n loadingSpace,\n ghost = false,\n hollow = false,\n } = props;\n const state = useTaroEnv();\n const [preventClick, setPreventClick] = useState(false);\n const timer = useRef<NodeJS.Timeout | undefined>();\n const classObj = classNames(\n \"xh-button\",\n {\n default: type === \"default\",\n primary: type === \"primary\",\n secondary: type === \"secondary\",\n ghost: ghost,\n hollow: hollow,\n warn: type === \"warn\",\n quare: shape === \"square\",\n round: shape === \"round\",\n rectangle: shape === \"rectangle\",\n normal: size === \"normal\",\n small: size === \"mini\",\n full: size === \"full\",\n disabled: disabled,\n webutton: state === \"WEAPP\",\n },\n className\n );\n\n const handleClick: MouseEventHandler & TouchEventFunction = e => {\n state === \"WEB\" && e.nativeEvent.stopImmediatePropagation();\n e.preventDefault();\n\n if (preventClick && preventTime !== 0) {\n console.log(\"重复点击\");\n return;\n }\n if (preventTime !== 0) {\n timer.current = setTimeout(() => {\n setPreventClick(false);\n clearTimeout(timer.current);\n }, preventTime);\n }\n if (preventTime !== 0) setPreventClick(true);\n console.log(\"正常点击\");\n onClick && onClick(e);\n };\n\n useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n\n const weButton = (\n <Button\n className={classObj}\n formType={formType}\n openType={openType}\n lang={lang}\n type={type as ButtonProps[\"type\"]}\n sessionFrom={sessionFrom}\n sendMessageTitle={sendMessageTitle}\n sendMessagePath={sendMessagePath}\n sendMessageImg={sendMessageImg}\n showMessageCard={showMessageCard}\n appParameter={appParameter}\n onGetUserInfo={onGetUserInfo}\n onGetPhoneNumber={onGetPhoneNumber}\n onOpenSetting={onOpenSetting}\n onError={onError}\n onContact={onContact}\n onClick={handleClick}\n disabled={disabled}\n style={style}\n loading={loading}\n >\n {children}\n </Button>\n );\n\n if (state !== \"WEB\") {\n return weButton;\n }\n\n return (\n // eslint-disable-next-line react/button-has-type\n <button\n className={classObj}\n disabled={disabled}\n type={htmlType}\n onClick={disabled ? undefined : handleClick}\n style={style}\n >\n {children || text}\n {loading && <DotJump style={loadingStyle} space={loadingSpace} />}\n </button>\n );\n};\n\nexport default XhButton;\n"],"names":["XhButton","props","_a","disabled","_b","type","_c","size","_d","shape","children","className","htmlType","formType","text","openType","lang","sessionFrom","sendMessageTitle","sendMessagePath","sendMessageImg","showMessageCard","appParameter","onGetUserInfo","onGetPhoneNumber","onOpenSetting","onError","onContact","onClick","_e","preventTime","style","loading","loadingStyle","loadingSpace","_f","ghost","_g","hollow","state","useTaroEnv","_h","__read","useState","preventClick","setPreventClick","timer","useRef","classObj","classNames","default","primary","secondary","warn","quare","round","rectangle","normal","small","full","webutton","handleClick","e","nativeEvent","stopImmediatePropagation","preventDefault","current","setTimeout","clearTimeout","useEffect","weButton","React","Button","createElement","undefined","DotJump","space"],"mappings":"gRA+CM,IAAAA,EAA8B,SAAAC,GAEhC,IAAAC,EA8BED,EAAKE,SA9BPA,OAAQ,IAAAD,GAAQA,EAChBE,EA6BEH,OA7BFI,aAAO,UAASD,EAChBE,EA4BEL,EA5BaM,KAAfA,OAAO,IAAAD,EAAA,WACPE,EA2BEP,EA3BaQ,MAAfA,OAAQ,IAAAD,EAAA,UACRE,EA0BET,EAAKS,SAzBPC,EAyBEV,EAAKU,UAxBPC,EAwBEX,EAxBMW,SACRC,EAuBEZ,EAvBMY,SACRC,EAsBEb,OArBFc,EAqBEd,EAAKc,SApBPC,EAoBEf,EAAKe,KAnBPC,EAmBEhB,EAnBSgB,YACXC,EAkBEjB,mBAjBFkB,EAiBElB,EAAKkB,gBAhBPC,EAgBEnB,EAAKmB,eAfPC,EAeEpB,EAfaoB,gBACfC,EAcErB,EAdUqB,aACZC,EAaEtB,gBAZFuB,EAYEvB,EAAKuB,iBAXPC,EAWExB,EAAKwB,cAVPC,EAUEzB,EAVKyB,QACPC,EASE1B,YARF2B,EAQE3B,EAAK2B,QAPPC,EAOE5B,EAPgB6B,YAAlBA,OAAc,IAAAD,EAAA,OACdE,EAME9B,EAAK8B,MALPC,EAKE/B,EALK+B,QACPC,EAIEhC,eAHFiC,EAGEjC,eAFFkC,EAEElC,EAFWmC,MAAbA,OAAQ,IAAAD,KACRE,EACEpC,EADYqC,OAAdA,OAAS,IAAAD,KAELE,EAAQC,IACRC,EAAAC,EAAkCC,GAAS,GAAM,GAAhDC,EAAYH,EAAA,GAAEI,OACfC,EAAQC,IACRC,EAAWC,EACf,YACA,CACEC,QAAkB,YAAT7C,EACT8C,QAAkB,YAAT9C,EACT+C,UAAoB,cAAT/C,EACX+B,MAAOA,EACPE,OAAQA,EACRe,KAAe,SAAThD,EACNiD,MAAiB,WAAV7C,EACP8C,MAAiB,UAAV9C,EACP+C,UAAqB,cAAV/C,EACXgD,OAAiB,WAATlD,EACRmD,MAAgB,SAATnD,EACPoD,KAAe,SAATpD,EACNJ,SAAUA,EACVyD,SAAoB,UAAVrB,GAEZ5B,GAGIkD,EAAsD,SAAAC,GAChD,QAAVvB,GAAmBuB,EAAEC,YAAYC,2BACjCF,EAAEG,iBAEErB,GAAgC,IAAhBd,IAIA,IAAhBA,IACFgB,EAAMoB,QAAUC,YAAW,WACzBtB,GAAgB,GAChBuB,aAAatB,EAAMoB,QACpB,GAAEpC,IAEe,IAAhBA,GAAmBe,GAAgB,GAEvCjB,GAAWA,EAAQkC,GACrB,EAEAO,GAAU,WACR,OAAO,WACLD,aAAatB,EAAMoB,QACrB,CACD,GAAE,IAEH,IAAMI,GACJC,gBAACC,EAAM,CACL7D,UAAWqC,EACXnC,SAAUA,EACVE,SAAUA,EACVC,KAAMA,EACNX,KAAMA,EACNY,YAAaA,EACbC,iBAAkBA,EAClBC,gBAAiBA,EACjBC,eAAgBA,EAChBC,gBAAiBA,EACjBC,aAAcA,EACdC,cAAeA,EACfC,iBAAkBA,EAClBC,cAAeA,EACfC,QAASA,EACTC,UAAWA,EACXC,QAASiC,EACT1D,SAAUA,EACV4B,MAAOA,EACPC,QAASA,GAERtB,GAIL,MAAc,QAAV6B,EACK+B,GAKPC,EACEE,cAAA,SAAA,CAAA9D,UAAWqC,EACX7C,SAAUA,EACVE,KAAMO,EACNgB,QAASzB,OAAWuE,EAAYb,EAChC9B,MAAOA,GAENrB,GAAYI,EACZkB,GAAWuC,EAAAE,cAACE,EAAO,CAAC5C,MAAOE,EAAc2C,MAAO1C,IAGvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Captcha/index.tsx"],"sourcesContent":["import React, {\n useRef,\n useState,\n useEffect,\n useImperativeHandle,\n forwardRef,\n Ref,\n useMemo,\n} from \"react\";\nimport classnames from \"classnames\";\n\nimport Button, { XhButtonProps } from \"../Button\";\n\nimport \"./index.scss\";\n\nexport type refMe = {\n reset: () => void;\n begin: () => void;\n beginning: boolean;\n};\n\nexport interface CaptchaProps extends XhButtonProps {\n timeout?: number;\n className?: string;\n styleName?: string;\n text?: string;\n onClick: () => Promise<boolean>;\n ref: Ref<refMe>;\n timeingTemp?: string;\n ingText?: string;\n onEnd?: () => void;\n}\n\nexport type CaptchaRef = refMe;\n\nconst CountdownButton = forwardRef<refMe, CaptchaProps>((props, fromRef) => {\n const {\n timeout = 59,\n text = \"获取验证码\",\n onClick,\n className,\n ingText = \"s重新获取\",\n onEnd,\n shape = \"square\",\n ...rest\n } = props;\n const intervalRef = useRef<NodeJS.Timeout | null>();\n const [time, setTime] = useState(0);\n const [disabled, setDisabled] = useState(false);\n\n const reset = (): void => {\n intervalRef.current && clearInterval(intervalRef.current);\n setTime(0);\n setDisabled(false);\n };\n\n useImperativeHandle(\n fromRef,\n () => ({\n reset,\n begin: counter,\n beginning: disabled,\n }),\n [disabled]\n );\n\n useEffect(() => {\n intervalRef.current && clearInterval(intervalRef.current);\n return () => {\n intervalRef.current && clearInterval(intervalRef.current);\n };\n }, []);\n\n // 倒计时\n const buttonText = useMemo((): string | number => {\n if (time) {\n return `${time}${ingText}`;\n }\n return text;\n }, [time, text, ingText]);\n\n const counter = () => {\n const now = Date.now();\n let nowStamp = now;\n\n setDisabled(true);\n\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n\n setTime(timeout);\n\n intervalRef.current = setInterval(() => {\n nowStamp = Date.now();\n const overTimeStamp = now + timeout * 1000 + 100;\n const leftTime = Math.max(\n Math.floor((overTimeStamp - nowStamp) / 1000),\n 0\n );\n\n if (leftTime === 0) {\n intervalRef.current && clearInterval(intervalRef.current);\n setDisabled(false);\n onEnd && onEnd();\n }\n\n setTime(leftTime);\n }, 1000);\n };\n\n const handleClick = (): any => {\n const promise = onClick();\n if (promise && promise.then) {\n promise.then(counter).catch(() => {\n console.log(\"callback reject....\");\n setDisabled(false);\n });\n }\n };\n\n return (\n <Button\n {...props}\n className={classnames(\"xh-captcha\", className)}\n disabled={disabled}\n onClick={handleClick}\n type=\"secondary\"\n shape={shape}\n {...rest}\n >\n {buttonText}\n </Button>\n );\n});\nexport default CountdownButton;\n"],"names":["CountdownButton","forwardRef","props","fromRef","_a","timeout","_b","text","onClick","className","_c","ingText","onEnd","_d","shape","rest","__rest","intervalRef","useRef","_e","__read","useState","time","setTime","_f","disabled","setDisabled","reset","current","clearInterval","useImperativeHandle","begin","counter","beginning","useEffect","buttonText","useMemo","concat","now","Date","nowStamp","setInterval","overTimeStamp","leftTime","Math","max","floor","React","createElement","Button","__assign","classnames","promise","then","catch","type"],"mappings":"uQAmCA,IAAMA,EAAkBC,GAAgC,SAACC,EAAOC,GAE5D,IAAAC,EAQEF,EAAKG,QARPA,OAAU,IAAAD,EAAA,GAAEA,EACZE,EAOEJ,EAPYK,KAAdA,OAAO,IAAAD,EAAA,QAAOA,EACdE,EAMEN,EAAKM,QALPC,EAKEP,EALOO,UACTC,EAIER,EAAKS,QAJPA,OAAU,IAAAD,EAAA,QAAOA,EACjBE,EAGEV,EAAKU,MAFPC,EAEEX,EAAKY,MAFPA,OAAQ,IAAAD,EAAA,SAAQA,EACbE,EAAIC,EACLd,EATE,CASL,UAAA,OAAA,UAAA,YAAA,UAAA,QAAA,UACKe,EAAcC,IACdC,EAAAC,EAAkBC,EAAS,GAAE,GAA5BC,EAAIH,EAAA,GAAEI,OACPC,EAAAJ,EAA0BC,GAAS,GAAM,GAAxCI,EAAQD,EAAA,GAAEE,OAEXC,EAAQ,WACZV,EAAYW,SAAWC,cAAcZ,EAAYW,SACjDL,EAAQ,GACRG,GAAY,EACd,EAEAI,EACE3B,GACA,WAAM,MAAC,CACLwB,MAAKA,EACLI,MAAOC,EACPC,UAAWR,EACX,GACF,CAACA,IAGHS,GAAU,WAER,OADAjB,EAAYW,SAAWC,cAAcZ,EAAYW,SAC1C,WACLX,EAAYW,SAAWC,cAAcZ,EAAYW,QACnD,CACD,GAAE,IAGH,IAAMO,EAAaC,GAAQ,WACzB,OAAId,EACK,GAAGe,OAAAf,GAAOe,OAAA1B,GAEZJ,CACR,GAAE,CAACe,EAAMf,EAAMI,IAEVqB,EAAU,WACd,IAAMM,EAAMC,KAAKD,MACbE,EAAWF,EAEfZ,GAAY,GAERT,EAAYW,SACdC,cAAcZ,EAAYW,SAG5BL,EAAQlB,GAERY,EAAYW,QAAUa,aAAY,WAChCD,EAAWD,KAAKD,MAChB,IAAMI,EAAgBJ,EAAgB,IAAVjC,EAAiB,IACvCsC,EAAWC,KAAKC,IACpBD,KAAKE,OAAOJ,EAAgBF,GAAY,KACxC,GAGe,IAAbG,IACF1B,EAAYW,SAAWC,cAAcZ,EAAYW,SACjDF,GAAY,GACZd,GAASA,KAGXW,EAAQoB,EACT,GAAE,IACL,EAYA,OACEI,EAACC,cAAAC,EACKC,EAAA,CAAA,EAAAhD,GACJO,UAAW0C,EAAW,aAAc1C,GACpCgB,SAAUA,EACVjB,QAfgB,WAClB,IAAM4C,EAAU5C,IACZ4C,GAAWA,EAAQC,MACrBD,EAAQC,KAAKrB,GAASsB,OAAM,WAE1B5B,GAAY,EACd,GAEJ,EAQI6B,KAAK,YACLzC,MAAOA,GACHC,GAEHoB,EAGP"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Captcha/index.tsx"],"sourcesContent":["import React, {\n useRef,\n useState,\n useEffect,\n useImperativeHandle,\n forwardRef,\n Ref,\n useMemo,\n} from \"react\";\nimport classnames from \"classnames\";\n\nimport Button, { XhButtonProps } from \"../Button\";\n\nimport \"./index.scss\";\n\nexport type refMe = {\n reset: () => void;\n begin: () => void;\n beginning: boolean;\n};\n\nexport type ButtonType = \"default\" | \"secondary\" | \"primary\" | \"warn\";\n\nexport type ButtonShape = \"square\" | \"round\" | \"rectangle\";\n\nexport type ButtonSize = \"default\" | \"mini\" | \"full\";\n\nexport interface CaptchaProps extends XhButtonProps {\n timeout?: number;\n className?: string;\n styleName?: string;\n text?: string;\n onClick: () => Promise<boolean>;\n ref: Ref<refMe>;\n timeingTemp?: string;\n ingText?: string;\n onEnd?: () => void;\n}\n\nexport type CaptchaRef = refMe;\n\nconst CountdownButton = forwardRef<\n refMe,\n Omit<CaptchaProps, \"businessId\" | \"onGetRealnameAuthInfo\" | \"onLaunchapp\">\n>((props, fromRef) => {\n const {\n timeout = 59,\n text = \"获取验证码\",\n onClick,\n className,\n ingText = \"s重新获取\",\n onEnd,\n shape = \"square\",\n ...rest\n } = props;\n const intervalRef = useRef<NodeJS.Timeout | null>();\n const [time, setTime] = useState(0);\n const [disabled, setDisabled] = useState(false);\n\n const reset = (): void => {\n intervalRef.current && clearInterval(intervalRef.current);\n setTime(0);\n setDisabled(false);\n };\n\n useImperativeHandle(\n fromRef,\n () => ({\n reset,\n begin: counter,\n beginning: disabled,\n }),\n [disabled]\n );\n\n useEffect(() => {\n intervalRef.current && clearInterval(intervalRef.current);\n return () => {\n intervalRef.current && clearInterval(intervalRef.current);\n };\n }, []);\n\n // 倒计时\n const buttonText = useMemo((): string | number => {\n if (time) {\n return `${time}${ingText}`;\n }\n return text;\n }, [time, text, ingText]);\n\n const counter = () => {\n const now = Date.now();\n let nowStamp = now;\n\n setDisabled(true);\n\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n\n setTime(timeout);\n\n intervalRef.current = setInterval(() => {\n nowStamp = Date.now();\n const overTimeStamp = now + timeout * 1000 + 100;\n const leftTime = Math.max(\n Math.floor((overTimeStamp - nowStamp) / 1000),\n 0\n );\n\n if (leftTime === 0) {\n intervalRef.current && clearInterval(intervalRef.current);\n setDisabled(false);\n onEnd && onEnd();\n }\n\n setTime(leftTime);\n }, 1000);\n };\n\n const handleClick = (): any => {\n const promise = onClick();\n if (promise && promise.then) {\n promise.then(counter).catch(() => {\n console.log(\"callback reject....\");\n setDisabled(false);\n });\n }\n };\n\n return (\n <Button\n {...props}\n className={classnames(\"xh-captcha\", className)}\n disabled={disabled}\n onClick={handleClick}\n type=\"secondary\"\n shape={shape}\n {...rest}\n >\n {buttonText}\n </Button>\n );\n});\nexport default CountdownButton;\n"],"names":["CountdownButton","forwardRef","props","fromRef","_a","timeout","_b","text","onClick","className","_c","ingText","onEnd","_d","shape","rest","__rest","intervalRef","useRef","_e","__read","useState","time","setTime","_f","disabled","setDisabled","reset","current","clearInterval","useImperativeHandle","begin","counter","beginning","useEffect","buttonText","useMemo","concat","now","Date","nowStamp","setInterval","overTimeStamp","leftTime","Math","max","floor","React","createElement","Button","__assign","classnames","promise","then","catch","type"],"mappings":"uQAyCA,IAAMA,EAAkBC,GAGtB,SAACC,EAAOC,GAEN,IAAAC,EAQEF,EAAKG,QARPA,OAAU,IAAAD,EAAA,GAAEA,EACZE,EAOEJ,EAPYK,KAAdA,OAAO,IAAAD,EAAA,QAAOA,EACdE,EAMEN,EAAKM,QALPC,EAKEP,EALOO,UACTC,EAIER,EAAKS,QAJPA,OAAU,IAAAD,EAAA,QAAOA,EACjBE,EAGEV,EAAKU,MAFPC,EAEEX,EAAKY,MAFPA,OAAQ,IAAAD,EAAA,SAAQA,EACbE,EAAIC,EACLd,EATE,CASL,UAAA,OAAA,UAAA,YAAA,UAAA,QAAA,UACKe,EAAcC,IACdC,EAAAC,EAAkBC,EAAS,GAAE,GAA5BC,EAAIH,EAAA,GAAEI,OACPC,EAAAJ,EAA0BC,GAAS,GAAM,GAAxCI,EAAQD,EAAA,GAAEE,OAEXC,EAAQ,WACZV,EAAYW,SAAWC,cAAcZ,EAAYW,SACjDL,EAAQ,GACRG,GAAY,EACd,EAEAI,EACE3B,GACA,WAAM,MAAC,CACLwB,MAAKA,EACLI,MAAOC,EACPC,UAAWR,EACX,GACF,CAACA,IAGHS,GAAU,WAER,OADAjB,EAAYW,SAAWC,cAAcZ,EAAYW,SAC1C,WACLX,EAAYW,SAAWC,cAAcZ,EAAYW,QACnD,CACD,GAAE,IAGH,IAAMO,EAAaC,GAAQ,WACzB,OAAId,EACK,GAAGe,OAAAf,GAAOe,OAAA1B,GAEZJ,CACR,GAAE,CAACe,EAAMf,EAAMI,IAEVqB,EAAU,WACd,IAAMM,EAAMC,KAAKD,MACbE,EAAWF,EAEfZ,GAAY,GAERT,EAAYW,SACdC,cAAcZ,EAAYW,SAG5BL,EAAQlB,GAERY,EAAYW,QAAUa,aAAY,WAChCD,EAAWD,KAAKD,MAChB,IAAMI,EAAgBJ,EAAgB,IAAVjC,EAAiB,IACvCsC,EAAWC,KAAKC,IACpBD,KAAKE,OAAOJ,EAAgBF,GAAY,KACxC,GAGe,IAAbG,IACF1B,EAAYW,SAAWC,cAAcZ,EAAYW,SACjDF,GAAY,GACZd,GAASA,KAGXW,EAAQoB,EACT,GAAE,IACL,EAYA,OACEI,EAACC,cAAAC,EACKC,EAAA,CAAA,EAAAhD,GACJO,UAAW0C,EAAW,aAAc1C,GACpCgB,SAAUA,EACVjB,QAfgB,WAClB,IAAM4C,EAAU5C,IACZ4C,GAAWA,EAAQC,MACrBD,EAAQC,KAAKrB,GAASsB,OAAM,WAE1B5B,GAAY,EACd,GAEJ,EAQI6B,KAAK,YACLzC,MAAOA,GACHC,GAEHoB,EAGP"}
@@ -0,0 +1,2 @@
1
+ import{__read as e,__spreadArray as t}from"../node_modules/tslib/tslib.es6.js";import n,{useState as o,useMemo as a,useEffect as s}from"react";import r from"classnames";import{View as c,Button as l}from"@tarojs/components";import i from"../node_modules/react-transition-group/esm/CSSTransition.js";var m=["京","津","冀","晋","蒙","辽","吉","黑","沪","苏","浙","皖","闽","赣","鲁","豫","鄂","湘","粤","桂","琼","渝","川","贵","云","藏","陕","甘","青","宁","新","港","澳","台","使"],d=["1","2","3","4","5","6","7","8","9","0"],u=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"],p=["港","澳","学","领"],b=["临","澳","学","领"],h=function(h){var k=h.onBlur,E=h.show,y=h.maxLength,N=void 0===y?Number.MAX_SAFE_INTEGER:y,f=h.showClose,v=void 0===f||f,x=h.closeOnClickSpace,g=void 0===x||x,C=h.onClose,T=h.onChange,_=h.value,A=h.closeText,O=void 0===A?"完成":A,R=h.onDelete,V=h.className,P=h.activeIndex,S=e(o(_),2),L=S[0],j=S[1],w=0===P?m:6===P?t(t(t([],e(d),!1),e(u),!1),e(p),!1):7===P?t(t(t([],e(d),!1),e(u),!1),e(b),!1):t(t([],e(d),!1),e(u),!1),B=a((function(){return 0===P?"选择省份":1===P?"选择字母":"选择数字或字母"}),[P]),D=a((function(){return 0===P?"province":1===P?"letter":"mixed"}),[P]);function F(e){e.stopPropagation(),C&&C(e),k&&k(e)}function G(e){process.env.TARO_ENV;var t=L;t.length<N&&(t=L+e),j(t),T&&T(t)}s((function(){return g&&document.addEventListener("click",F),function(){document.removeEventListener("click",F)}}),[]),s((function(){j(_)}),[_]);var I=function(){R()},M=a((function(){return _.length>=8}),[_]),X=r("xh-license-keyboard",V);return n.createElement(i,{classNames:"slide-up",in:E,unmountOnExit:!0,timeout:200},n.createElement(c,{className:X},n.createElement(c,{className:"xh-license-keyboard-header"},n.createElement(c,{className:"xh-license-keyboard-header-title"},B),n.createElement(c,{className:"xh-license-keyboard-header-delete"}),v&&n.createElement(c,{className:"xh-license-keyboard-header-close",onClick:F},O)),n.createElement(c,{className:"xh-license-keyboard-body"},w.map((function(e,t){return n.createElement(c,{key:t,className:r("xh-license-keyboard-body-key")},"h5"===process.env.TARO_ENV?n.createElement("button",{className:r("xh-license-keyboard-body-key-item",process.env.TARO_ENV),disabled:"letter"===D&&t<10||M,onClick:function(t){t.stopPropagation(),G(e)}},e):n.createElement(l,{className:r("xh-license-keyboard-body-key-item",process.env.TARO_ENV),disabled:"letter"===D&&t<10||M,onClick:function(n){n.stopPropagation(),"letter"===D&&t<10||M||G(e)}},e))})),n.createElement(c,{className:r("xh-license-keyboard-body-key","delete")},"h5"===process.env.TARO_ENV?n.createElement("button",{className:r("xh-license-keyboard-body-key-item",process.env.TARO_ENV,"delete"),disabled:0===_.length,onClick:function(e){e.stopPropagation(),I()}}):n.createElement(l,{className:r("xh-license-keyboard-body-key-item",process.env.TARO_ENV,"delete"),disabled:0===_.length,onClick:function(e){e.stopPropagation(),0!==_.length&&I()}})))))};export{h as default};
2
+ //# sourceMappingURL=Keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Keyboard.js","sources":["../../../src/components/LicensePlateInput/Keyboard.tsx"],"sourcesContent":["import React, { FC, useState, useEffect, MouseEvent, useMemo } from \"react\";\nimport classNames from \"classnames\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { Button, View } from \"@tarojs/components\";\n\nimport \"./index.scss\";\nimport { XHComponentCommonProps } from \"../../types\";\n\nexport type NumberKeyboardType = \"default\" | \"custom\";\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 onDelete: () => void;\n value: string;\n closeText?: string;\n activeIndex: number;\n} & XHComponentCommonProps;\n\nexport type KeyType = \"number\" | \"delete\" | \"string\" | \"none\";\n\nexport interface IKey {\n text: number | string;\n value: number | string;\n type: KeyType;\n activeIndex: number;\n}\n\nconst LICENSEPLATE_PROVINCES = [\n \"京\",\n \"津\",\n \"冀\",\n \"晋\",\n \"蒙\",\n \"辽\",\n \"吉\",\n \"黑\",\n \"沪\",\n \"苏\",\n \"浙\",\n \"皖\",\n \"闽\",\n \"赣\",\n \"鲁\",\n \"豫\",\n \"鄂\",\n \"湘\",\n \"粤\",\n \"桂\",\n \"琼\",\n \"渝\",\n \"川\",\n \"贵\",\n \"云\",\n \"藏\",\n \"陕\",\n \"甘\",\n \"青\",\n \"宁\",\n \"新\",\n \"港\",\n \"澳\",\n \"台\",\n \"使\",\n];\n\nconst LICENSEPLATE_NUMBERS = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\"];\n\nconst LICENSEPLATE_LETTERS = [\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n];\n\nconst specialArea = [\"港\", \"澳\", \"学\", \"领\"];\nconst finalArea = [\"临\", \"澳\", \"学\", \"领\"];\n\nexport type TYPE_MODE = \"province\" | \"letter\" | \"mixed\";\n\nconst LicensePlateKeyboard: FC<NumberKeyboardProps> = props => {\n const {\n onBlur,\n show,\n maxLength = Number.MAX_SAFE_INTEGER,\n showClose = true,\n closeOnClickSpace = true,\n onClose,\n onChange,\n value,\n closeText = \"完成\",\n onDelete,\n className,\n activeIndex,\n } = props;\n const [input, setInput] = useState(value);\n const keys = getKeys();\n\n const title = useMemo(() => {\n if (activeIndex === 0) return \"选择省份\";\n if (activeIndex === 1) return \"选择字母\";\n return \"选择数字或字母\";\n }, [activeIndex]);\n\n const mode = useMemo<TYPE_MODE>(() => {\n if (activeIndex === 0) return \"province\";\n if (activeIndex === 1) return \"letter\";\n return \"mixed\";\n }, [activeIndex]);\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 e.stopPropagation();\n onClose && onClose(e);\n onBlur && onBlur(e);\n }\n\n function handleKeyPress(key: string): void {\n if (process.env.TARO_ENV === \"h5\") {\n // e.stopImmediatePropagation();\n }\n let newInput = input;\n\n if (newInput.length < maxLength) {\n newInput = input + key;\n }\n\n setInput(newInput);\n\n onChange && onChange(newInput);\n }\n\n function getKeys(): string[] {\n if (activeIndex === 0) return LICENSEPLATE_PROVINCES;\n if (activeIndex === 6)\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS, ...specialArea];\n if (activeIndex === 7)\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS, ...finalArea];\n return [...LICENSEPLATE_NUMBERS, ...LICENSEPLATE_LETTERS];\n }\n\n const handleDelete = () => {\n onDelete();\n };\n\n const keyDisabled = useMemo(() => {\n return value.length >= 8;\n }, [value]);\n const keyboardcls = classNames(\"xh-license-keyboard\", className);\n\n return (\n <CSSTransition classNames=\"slide-up\" in={show} unmountOnExit timeout={200}>\n <View className={keyboardcls}>\n <View className=\"xh-license-keyboard-header\">\n <View className=\"xh-license-keyboard-header-title\">{title}</View>\n <View className=\"xh-license-keyboard-header-delete\"></View>\n {showClose && (\n <View\n className=\"xh-license-keyboard-header-close\"\n onClick={handleClose}\n >\n {closeText}\n </View>\n )}\n </View>\n <View className=\"xh-license-keyboard-body\">\n {keys.map((key, index) => (\n <View\n key={index}\n className={classNames(\"xh-license-keyboard-body-key\")}\n >\n {process.env.TARO_ENV === \"h5\" ? (\n <button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV\n )}\n disabled={(mode === \"letter\" && index < 10) || keyDisabled}\n onClick={e => {\n e.stopPropagation();\n handleKeyPress(key);\n }}\n >\n {key}\n </button>\n ) : (\n <Button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV\n )}\n disabled={(mode === \"letter\" && index < 10) || keyDisabled}\n onClick={e => {\n e.stopPropagation();\n if ((mode === \"letter\" && index < 10) || keyDisabled)\n return;\n handleKeyPress(key);\n }}\n >\n {key}\n </Button>\n )}\n </View>\n ))}\n <View\n className={classNames(\"xh-license-keyboard-body-key\", \"delete\")}\n >\n {process.env.TARO_ENV === \"h5\" ? (\n <button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV,\n \"delete\"\n )}\n disabled={value.length === 0}\n onClick={e => {\n e.stopPropagation();\n handleDelete();\n }}\n ></button>\n ) : (\n <Button\n className={classNames(\n \"xh-license-keyboard-body-key-item\",\n process.env.TARO_ENV,\n \"delete\"\n )}\n disabled={value.length === 0}\n onClick={e => {\n e.stopPropagation();\n if (value.length === 0) return;\n console.log(\"delete\");\n handleDelete();\n }}\n ></Button>\n )}\n </View>\n </View>\n </View>\n </CSSTransition>\n );\n};\n\nexport default LicensePlateKeyboard;\n"],"names":["LICENSEPLATE_PROVINCES","LICENSEPLATE_NUMBERS","LICENSEPLATE_LETTERS","specialArea","finalArea","LicensePlateKeyboard","props","onBlur","show","_a","maxLength","Number","MAX_SAFE_INTEGER","_b","showClose","_c","closeOnClickSpace","onClose","onChange","value","_d","closeText","onDelete","className","activeIndex","_e","__read","useState","input","setInput","keys","__spreadArray","title","useMemo","mode","handleClose","e","stopPropagation","handleKeyPress","key","process","env","TARO_ENV","newInput","length","useEffect","document","addEventListener","removeEventListener","handleDelete","keyDisabled","keyboardcls","classNames","React","createElement","CSSTransition","in","unmountOnExit","timeout","View","onClick","map","index","disabled","Button"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{__rest as e,__read as n,__assign as a}from"../node_modules/tslib/tslib.es6.js";import o,{useState as t,useRef as r}from"react";import l from"classnames";import{View as i}from"@tarojs/components";import s from"./Keyboard.js";var c=function(c){var m=c.value,u=void 0===m?"":m,d=c.onChange,f=c.className,h=c.showKeyboard,v=void 0!==h&&h,p=c.padding,b=void 0!==p&&p,g=c.border,N=void 0!==g&&g;c.onFinish;var x=c.label,w=e(c,["value","onChange","className","showKeyboard","padding","border","onFinish","label"]),C=n(t(u.length),2),E=C[0],P=C[1],y=n(t(v),2),j=y[0],K=y[1],k=r(null);var F=l("xh-licensePlate",f,{padding:b},{border:N});return o.createElement(i,{className:F},x&&o.createElement("label",{className:"xh-licensePlate-label"},x),o.createElement(i,{className:"xh-licensePlate-input",onClick:function(e){e.stopPropagation(),K(!0)},ref:k},function(){for(var e=[],n=0;n<8;n++){var a=u[n];e.push(o.createElement(i,{key:n,className:l("xh-licensePlate-input-item",{active:E-1===n,showNew:7===n&&8!==u.length})},a))}return e}()),o.createElement(s,a({activeIndex:E,show:j,value:u,onChange:function(e){P((function(e){return e+1})),d(e)},onDelete:function(){var e=u.slice(0,-1);P((function(e){return e-1})),d(e)},onClose:function(){K(!1)}},w)))};export{c as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/LicensePlateInput/index.tsx"],"sourcesContent":["import React, { FC, ReactNode, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { ITouchEvent, View } from \"@tarojs/components\";\nimport { XHComponentCommonProps } from \"../../types\";\nimport Keyboard from \"./Keyboard\";\nimport \"./index.scss\";\n\nexport type LicensePlateProps = {\n value: string;\n onChange: (index: string) => void;\n /**\n * 是否默认展示键盘\n */\n showKeyboard?: boolean;\n closeText?: string;\n label?: ReactNode;\n onFinish?: () => void;\n padding?: boolean;\n border?: boolean;\n} & XHComponentCommonProps;\n\nconst LENGTH = 8;\n\nconst LicensePlateInput: FC<LicensePlateProps> = props => {\n const {\n value = \"\",\n onChange,\n className,\n showKeyboard = false,\n padding = false,\n border = false,\n onFinish,\n label,\n ...rest\n } = props;\n\n const [activeIndex, setActiveIndex] = useState(value.length);\n\n const [show, setShowKeyboard] = useState(showKeyboard);\n\n const InputRef = useRef<HTMLDivElement>(null);\n\n const handleOnChage = neVal => {\n setActiveIndex(old => {\n return old + 1;\n });\n // if (neVal.length === LENGTH) {\n // onFinish?.();\n // setShowKeyboard(false);\n // }\n onChange(neVal);\n };\n\n function renderInputs(): ReactNode {\n const Inputs: any = [];\n\n for (let i = 0; i < LENGTH; i++) {\n const char = value[i];\n\n Inputs.push(\n <View\n key={i}\n className={classNames(\"xh-licensePlate-input-item\", {\n active: activeIndex - 1 === i,\n showNew: i === LENGTH - 1 && value.length !== LENGTH,\n })}\n >\n {char}\n </View>\n );\n }\n\n return Inputs;\n }\n\n /**\n * 删除最后一位\n */\n const handleDelete = () => {\n const newValue = value.slice(0, -1);\n setActiveIndex(old => old - 1);\n onChange(newValue);\n };\n\n const handleClose = () => {\n setShowKeyboard(false);\n };\n\n function handlerClick(e: ITouchEvent): void {\n e.stopPropagation();\n setShowKeyboard(true);\n // if (process.env.TARO_ENV === \"h5\") {\n // InputRef.current?.scrollIntoView(false)\n // }\n }\n const xhLicensePlateCls = classNames(\n \"xh-licensePlate\",\n className,\n { padding },\n { border }\n );\n\n return (\n <View className={xhLicensePlateCls}>\n {label && <label className=\"xh-licensePlate-label\">{label}</label>}\n <View\n className=\"xh-licensePlate-input\"\n onClick={handlerClick}\n ref={InputRef}\n >\n {renderInputs()}\n </View>\n <Keyboard\n activeIndex={activeIndex}\n show={show}\n value={value}\n onChange={handleOnChage}\n onDelete={handleDelete}\n onClose={handleClose}\n {...rest}\n />\n </View>\n );\n};\n\nexport default LicensePlateInput;\n"],"names":["LicensePlateInput","props","_a","value","onChange","className","_b","showKeyboard","_c","padding","_d","border","onFinish","label","rest","__rest","_e","__read","useState","length","activeIndex","setActiveIndex","_f","show","setShowKeyboard","InputRef","useRef","xhLicensePlateCls","classNames","React","createElement","View","onClick","e","stopPropagation","ref","Inputs","i","char","push","key","active","showNew","LENGTH","renderInputs","Keyboard","__assign","neVal","old","onDelete","newValue","slice","onClose"],"mappings":"uOAqBA,IAEMA,EAA2C,SAAAC,GAE7C,IAAAC,EASED,EATQE,MAAVA,OAAK,IAAAD,EAAG,GAAEA,EACVE,EAQEH,EARMG,SACRC,EAOEJ,EAAKI,UANPC,EAMEL,EAAKM,aANPA,OAAe,IAAAD,GAAKA,EACpBE,EAKEP,EAAKQ,QALPA,OAAU,IAAAD,GAAKA,EACfE,EAIET,EAJYU,OAAdA,OAAM,IAAAD,GAAQA,EAIZT,EAHMW,SACR,IAAAC,EAEEZ,EAAKY,MADJC,EACDC,EAAAd,EAVE,CAAA,QAAA,WAAA,YAAA,eAAA,UAAA,SAAA,WAAA,UAYAe,EAAAC,EAAgCC,EAASf,EAAMgB,QAAO,GAArDC,EAAWJ,EAAA,GAAEK,OAEdC,EAAAL,EAA0BC,EAASX,GAAa,GAA/CgB,EAAID,EAAA,GAAEE,OAEPC,EAAWC,EAAuB,MAuDxC,IAAMC,EAAoBC,EACxB,kBACAvB,EACA,CAAEI,QAAOA,GACT,CAAEE,OAAMA,IAGV,OACEkB,EAACC,cAAAC,EAAK,CAAA1B,UAAWsB,GACdd,GAASgB,EAAOC,cAAA,QAAA,CAAAzB,UAAU,yBAAyBQ,GACpDgB,EAAAC,cAACC,EACC,CAAA1B,UAAU,wBACV2B,QAnBN,SAAsBC,GACpBA,EAAEC,kBACFV,GAAgB,EAIjB,EAcKW,IAAKV,GAvDX,WAGE,IAFA,IAAMW,EAAc,GAEXC,EAAI,EAAGA,EAnCL,EAmCiBA,IAAK,CAC/B,IAAMC,EAAOnC,EAAMkC,GAEnBD,EAAOG,KACLV,EAAAC,cAACC,EACC,CAAAS,IAAKH,EACLhC,UAAWuB,EAAW,6BAA8B,CAClDa,OAAQrB,EAAc,IAAMiB,EAC5BK,QAAeC,IAANN,GA3CN,IA2C0BlC,EAAMgB,UAGpCmB,GAGN,CAED,OAAOF,CACR,CAqCMQ,IAEHf,EAAAC,cAACe,EAAQC,EAAA,CACP1B,YAAaA,EACbG,KAAMA,EACNpB,MAAOA,EACPC,SA1EgB,SAAA2C,GACpB1B,GAAe,SAAA2B,GACb,OAAOA,EAAM,CACf,IAKA5C,EAAS2C,EACX,EAkEME,SAvCe,WACnB,IAAMC,EAAW/C,EAAMgD,MAAM,GAAI,GACjC9B,GAAe,SAAA2B,GAAO,OAAAA,EAAM,CAAC,IAC7B5C,EAAS8C,EACX,EAoCME,QAlCc,WAClB5B,GAAgB,EAClB,GAiCUV,IAIZ"}
@@ -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";export{default as XHBankCardNumberInput}from"../BankCardNumberInput/index.js";export{default as XHIDNumberInput}from"../IDNumberInput/index.js";export{default as XHEcharts}from"../Echarts/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 XHLicensePlateInput}from"../LicensePlateInput/index.js";export{default as XHBankCardNumberInput}from"../BankCardNumberInput/index.js";export{default as XHIDNumberInput}from"../IDNumberInput/index.js";export{default as XHEcharts}from"../Echarts/index.js";
2
2
  //# sourceMappingURL=index.js.map