diff --git a/package.json b/package.json index f157b2a3..89bfba6d 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "rax-types": "^1.0.0", "semver": "^6.3.0", "semver-regex": "^3.1.3", - "shelljs": "0.8.3", + "shelljs": "0.8.5", "typescript": "^3.8.3" }, "resolutions": { diff --git a/packages/rax-qrcode/CHANGELOG.md b/packages/rax-qrcode/CHANGELOG.md index 155767b9..88c895ab 100644 --- a/packages/rax-qrcode/CHANGELOG.md +++ b/packages/rax-qrcode/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 3.0.0 + +- [feat] update rax-canvas version to v2.0 +- [feat] support passing strings with px of width and height in style + ## 2.0.2 -- [fix] can't get correct screenWidth in some Android Phones, use windowWidth instead \ No newline at end of file +- [fix] can't get correct screenWidth in some Android Phones, use windowWidth instead diff --git a/packages/rax-qrcode/demo/index.md b/packages/rax-qrcode/demo/index.md index 7fcdc302..b30586e6 100644 --- a/packages/rax-qrcode/demo/index.md +++ b/packages/rax-qrcode/demo/index.md @@ -16,7 +16,7 @@ function App() { return ( ); } diff --git a/packages/rax-qrcode/package.json b/packages/rax-qrcode/package.json index d57e6daa..244f7366 100644 --- a/packages/rax-qrcode/package.json +++ b/packages/rax-qrcode/package.json @@ -1,6 +1,6 @@ { "name": "rax-qrcode", - "version": "2.0.2", + "version": "3.0.0", "description": "QRCode component for Rax.", "license": "BSD-3-Clause", "main": "lib/index.js", @@ -31,7 +31,7 @@ ], "dependencies": { "qr.js": "0.0.0", - "rax-canvas": "^1.0.0" + "rax-canvas": "^2.0.0" }, "peerDependencies": { "rax": "^1.0.0" diff --git a/packages/rax-qrcode/src/index.tsx b/packages/rax-qrcode/src/index.tsx index a40383c8..ef429b39 100644 --- a/packages/rax-qrcode/src/index.tsx +++ b/packages/rax-qrcode/src/index.tsx @@ -30,6 +30,25 @@ const styles = { } }; +const ENDS_WITH_PX_EXCEPT_RPX = /^[0-9\.]+\s*([^r]px)?$/; + +function processDimensions(width: string | number, height: string | number) { + let w = width; + let h = height; + if (typeof width === 'string' && ENDS_WITH_PX_EXCEPT_RPX.test(width)){ + w = parseFloat(width); + } + + if (typeof height === 'string' && ENDS_WITH_PX_EXCEPT_RPX.test(height)){ + h = parseFloat(height); + } + + return { + width: w as number, + height: h as number + }; +} + class QRCode extends Component { public width = 0; public height = 0; @@ -38,7 +57,7 @@ class QRCode extends Component { public constructor(props) { super(props); const { style = {} } = props; - const { width = 300, height = 300 } = style; + const { width, height } = processDimensions(style.width || 300, style.height || 300); this.width = width; this.height = height; this.canvas = createRef();