@arcblock/ux 2.1.0 → 2.1.3

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.
@@ -12,7 +12,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
12
12
  const ActionButton = _styledComponents.default.div.withConfig({
13
13
  displayName: "utils__ActionButton",
14
14
  componentId: "sc-1po1ir-0"
15
- })(["background-color:transparent !important;& >:not(.Mui-disabled){position:relative;z-index:1;&::before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;transition:opacity 0.3s;}&:hover::before{opacity:0;}&::after{content:'';position:absolute;height:100%;width:100%;border-radius:2px;background-color:", ";transform:scale(0.1);opacity:0;z-index:-1;transition:transform 0.3s,opacity 0.3s,background-color 0.3s;}&:hover::after{opacity:1;transform-origin:center;transform:scale(1);}}& >:not(.Mui-disabled){background-color:transparent !important;color:", "!important;}& >:not(.Mui-disabled){&:hover{color:", "!important;}}"], props => props.theme.palette.primary.main, props => props.theme.palette.primary.main, props => props.theme.palette.common.white);
15
+ })(["background-color:transparent !important;& >:not(.Mui-disabled){position:relative;z-index:1;&::before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;transition:opacity 0.3s;}&:hover::before{opacity:0;}&::after{content:'';position:absolute;height:100%;width:100%;top:0;left:0;border-radius:2px;background-color:", ";transform:scale(0.1);opacity:0;z-index:-1;transition:transform 0.3s,opacity 0.3s,background-color 0.3s;}&:hover::after{opacity:1;transform-origin:center;transform:scale(1);}}& >:not(.Mui-disabled){background-color:transparent !important;color:", "!important;}& >:not(.Mui-disabled){&:hover{color:", "!important;}}"], props => props.theme.palette.primary.main, props => props.theme.palette.primary.main, props => props.theme.palette.common.white);
16
16
 
17
17
  var _default = ActionButton;
18
18
  exports.default = _default;
@@ -64,7 +64,7 @@ function prettySize(_size) {
64
64
  const Div = _styledComponents.default.div.withConfig({
65
65
  displayName: "BlockletNFT__Div",
66
66
  componentId: "sc-19lczgp-0"
67
- })(["&.arcblock-blocklet{padding:0 16px;background:", ";overflow:hidden;box-shadow:0px 0px 8px #f0f0f0;&:hover{box-shadow:0px 2px 12px #f0f0f0;}}.arcblock-blocklet__content{padding:16px 0 0 0;}.arcblock-blocklet__content--main{display:flex;align-items:center;cursor:pointer;}.arcblock-blocklet__content--body{overflow:hidden;flex:1;display:flex;align-items:flex-start;}.arcblock-blocklet__addons{padding:16px 0;}.arcblock-blocklet__cover{width:80px;height:80px;margin-right:12px;overflow:hidden;border-radius:12px;transform:translateZ(0);}.arcblock-blocklet__button--hover{&:not(.Mui-disabled){position:relative;z-index:1;&::before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;transition:opacity 0.3s;}&:hover::before{opacity:0;}&::after{content:'';position:absolute;height:100%;width:100%;background-color:", ";transform:scale(0.1);opacity:0;z-index:-1;transition:transform 0.3s,opacity 0.3s,background-color 0.3s;}&:hover::after{opacity:1;transform-origin:center;transform:scale(1);}}&:not(.Mui-disabled){background-color:transparent !important;color:", ";}&:not(.Mui-disabled){&:hover{color:", ";}}}.arcblock-blocklet__info{flex:1;overflow:hidden;.arcblock-blocklet__button{margin-top:16px;display:inline-block;}}.arcblock-blocklet__title{margin:0;font-size:18px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.arcblock-blocklet__describe{margin:0 0 2px 0;color:#999;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.arcblock-blocklet__addons{display:flex;justify-content:space-between;color:#999;font-size:14px;position:relative;}.arcblock-blocklet__addons--item{white-space:nowrap;}&.arcblock-blocklet--size-md{&:hover{position:relative;}.arcblock-blocklet__title{height:2.3em;margin-bottom:3px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:initial;white-space:initial;word-break:break-all;}.arcblock-blocklet__describe{white-space:normal;height:2.86em;}.arcblock-blocklet__button{margin-top:5px;}}&.arcblock-blocklet--size-sm,&.arcblock-blocklet--size-xs{.arcblock-blocklet__cover{width:40px;height:40px;border-radius:6px;}.arcblock-blocklet__content{padding:16px 0;}.arcblock-blocklet__addons{padding:8px 0;.arcblock-blocklet__addons--item{font-size:12px;}}}&.arcblock-blocklet--size-xs{.arcblock-blocklet__addons{display:none !important;}}"], props => props.theme.palette.common.white, props => props.theme.palette.primary.main, props => props.theme.palette.primary.main, props => props.theme.palette.common.white);
67
+ })(["&.arcblock-blocklet{padding:0 16px;background:", ";overflow:hidden;box-shadow:0px 0px 8px #f0f0f0;&:hover{box-shadow:0px 2px 12px #f0f0f0;}}.arcblock-blocklet__content{padding:16px 0 0 0;}.arcblock-blocklet__content--main{display:flex;align-items:center;cursor:pointer;}.arcblock-blocklet__content--body{overflow:hidden;flex:1;display:flex;align-items:flex-start;}.arcblock-blocklet__addons{padding:16px 0;}.arcblock-blocklet__cover{width:80px;height:80px;margin-right:12px;overflow:hidden;border-radius:12px;transform:translateZ(0);}.arcblock-blocklet__button--hover{&:not(.Mui-disabled){position:relative;z-index:1;&::before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;transition:opacity 0.3s;}&:hover::before{opacity:0;}&::after{content:'';position:absolute;height:100%;width:100%;top:0;left:0;background-color:", ";transform:scale(0.1);opacity:0;z-index:-1;transition:transform 0.3s,opacity 0.3s,background-color 0.3s;}&:hover::after{opacity:1;transform-origin:center;transform:scale(1);}}&:not(.Mui-disabled){background-color:transparent !important;color:", ";}&:not(.Mui-disabled){&:hover{color:", ";}}}.arcblock-blocklet__info{flex:1;overflow:hidden;.arcblock-blocklet__button{margin-top:16px;display:inline-block;}}.arcblock-blocklet__title{margin:0;font-size:18px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.arcblock-blocklet__describe{margin:0 0 2px 0;color:#999;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.arcblock-blocklet__addons{display:flex;justify-content:space-between;color:#999;font-size:14px;position:relative;}.arcblock-blocklet__addons--item{white-space:nowrap;}&.arcblock-blocklet--size-md{&:hover{position:relative;}.arcblock-blocklet__title{height:2.3em;margin-bottom:3px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:initial;white-space:initial;word-break:break-all;}.arcblock-blocklet__describe{white-space:normal;height:2.86em;}.arcblock-blocklet__button{margin-top:5px;}}&.arcblock-blocklet--size-sm,&.arcblock-blocklet--size-xs{.arcblock-blocklet__cover{width:40px;height:40px;border-radius:6px;}.arcblock-blocklet__content{padding:16px 0;}.arcblock-blocklet__addons{padding:8px 0;.arcblock-blocklet__addons--item{font-size:12px;}}}&.arcblock-blocklet--size-xs{.arcblock-blocklet__addons{display:none !important;}}"], props => props.theme.palette.common.white, props => props.theme.palette.primary.main, props => props.theme.palette.primary.main, props => props.theme.palette.common.white);
68
68
 
69
69
  function BlockletIcon(_ref) {
70
70
  let {
@@ -54,8 +54,8 @@ function QRCode(_ref) {
54
54
 
55
55
  const ref = _react.default.useRef(null);
56
56
 
57
- (0, _react.useEffect)(() => {
58
- const qrCode = new _qrCodeStyling.default(_objectSpread(_objectSpread(_objectSpread({}, defaults), {}, {
57
+ const options = (0, _react.useMemo)(() => {
58
+ return _objectSpread(_objectSpread(_objectSpread({}, defaults), {}, {
59
59
  data,
60
60
  width: size,
61
61
  height: size
@@ -65,9 +65,18 @@ function QRCode(_ref) {
65
65
  crossOrigin: 'anonymous',
66
66
  margin: 0
67
67
  }
68
- }), config));
69
- qrCode.append(ref.current);
70
- }, [data, size]);
68
+ }), config);
69
+ }, [data, size, image, config]);
70
+ const [qrCode] = (0, _react.useState)(new _qrCodeStyling.default(options));
71
+ (0, _react.useEffect)(() => {
72
+ if (ref.current) {
73
+ qrCode.append(ref.current);
74
+ }
75
+ }, [qrCode, ref]);
76
+ (0, _react.useEffect)(() => {
77
+ if (!qrCode) return;
78
+ qrCode.update(options);
79
+ }, [data, size, image, config]);
71
80
  return /*#__PURE__*/_react.default.createElement("div", Object.assign({
72
81
  ref: ref
73
82
  }, rest));
package/lib/Util/index.js CHANGED
@@ -15,6 +15,7 @@ exports.openWebWallet = openWebWallet;
15
15
  exports.parseQuery = parseQuery;
16
16
  exports.setDateTool = setDateTool;
17
17
  exports.str2color = void 0;
18
+ exports.stringifyQuery = stringifyQuery;
18
19
 
19
20
  var _padStart = _interopRequireDefault(require("lodash/padStart"));
20
21
 
@@ -34,6 +35,11 @@ function parseQuery(str) {
34
35
  return memo;
35
36
  }, {});
36
37
  }
38
+
39
+ function stringifyQuery() {
40
+ let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
41
+ return new URLSearchParams(params).toString();
42
+ }
37
43
  /**
38
44
  * @param {number} opts.expireInDays
39
45
  * @param {string} opts.path
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "2.1.0",
3
+ "version": "2.1.3",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -52,10 +52,10 @@
52
52
  "react": ">=18.1.0",
53
53
  "react-ga": "^2.7.0"
54
54
  },
55
- "gitHead": "e3e53508384f1681546b29d7ad6a10d92c371239",
55
+ "gitHead": "b0ec8ebbd525abe7035465e2c75dc042e6637ba6",
56
56
  "dependencies": {
57
- "@arcblock/icons": "^2.1.0",
58
- "@arcblock/react-hooks": "^2.1.0",
57
+ "@arcblock/icons": "^2.1.3",
58
+ "@arcblock/react-hooks": "^2.1.3",
59
59
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
60
60
  "@emotion/react": "^11.9.0",
61
61
  "@emotion/styled": "^11.8.1",
@@ -22,6 +22,8 @@ const ActionButton = styled.div`
22
22
  position: absolute;
23
23
  height: 100%;
24
24
  width: 100%;
25
+ top: 0;
26
+ left: 0;
25
27
  border-radius: 2px;
26
28
  background-color: ${props => props.theme.palette.primary.main};
27
29
  transform: scale(0.1);
@@ -86,6 +86,8 @@ const Div = styled.div`
86
86
  position: absolute;
87
87
  height: 100%;
88
88
  width: 100%;
89
+ top: 0;
90
+ left: 0;
89
91
  background-color: ${props => props.theme.palette.primary.main};
90
92
  transform: scale(0.1);
91
93
  opacity: 0;
@@ -1,4 +1,4 @@
1
- import React, { useEffect } from 'react';
1
+ import React, { useEffect, useMemo, useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import QRCodeStyling from '@solana/qr-code-styling';
4
4
 
@@ -19,8 +19,8 @@ const defaults = {
19
19
  // 注意: 依赖的 @solana/qr-code-styling 是一份 fork 版本, 原版本的 margin 配置存在 bug
20
20
  function QRCode({ data, size, image, config, ...rest }) {
21
21
  const ref = React.useRef(null);
22
- useEffect(() => {
23
- const qrCode = new QRCodeStyling({
22
+ const options = useMemo(() => {
23
+ return {
24
24
  ...defaults,
25
25
  data,
26
26
  width: size,
@@ -33,9 +33,22 @@ function QRCode({ data, size, image, config, ...rest }) {
33
33
  },
34
34
  }),
35
35
  ...config,
36
- });
37
- qrCode.append(ref.current);
38
- }, [data, size]);
36
+ };
37
+ }, [data, size, image, config]);
38
+
39
+ const [qrCode] = useState(new QRCodeStyling(options));
40
+
41
+ useEffect(() => {
42
+ if (ref.current) {
43
+ qrCode.append(ref.current);
44
+ }
45
+ }, [qrCode, ref]);
46
+
47
+ useEffect(() => {
48
+ if (!qrCode) return;
49
+ qrCode.update(options);
50
+ }, [data, size, image, config]);
51
+
39
52
  return <div ref={ref} {...rest} />;
40
53
  }
41
54
 
package/src/Util/index.js CHANGED
@@ -17,6 +17,10 @@ export function parseQuery(str) {
17
17
  }, {});
18
18
  }
19
19
 
20
+ export function stringifyQuery(params = {}) {
21
+ return new URLSearchParams(params).toString();
22
+ }
23
+
20
24
  /**
21
25
  * @param {number} opts.expireInDays
22
26
  * @param {string} opts.path