@arcblock/ux 2.9.58 → 2.9.59

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,6 +9,7 @@ import Button from '../Button';
9
9
  import { temp as colors } from '../Colors';
10
10
  import { AUTH_SERVICE_PREFIX, NAVIGATION_URL } from '../Util/constant';
11
11
  import SessionPermission from '../SessionPermission';
12
+ import { getTranslation } from '../Util';
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
13
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
14
15
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -132,7 +133,7 @@ export default function SessionBlocklet({
132
133
  textAlign: 'center',
133
134
  lineHeight: 'normal'
134
135
  },
135
- children: item.title?.[locale] || item.title
136
+ children: getTranslation(item.title, locale)
136
137
  })]
137
138
  })
138
139
  }, item.id))
package/es/Util/index.js CHANGED
@@ -329,4 +329,34 @@ export const getDIDColor = did => {
329
329
  } catch {
330
330
  return null;
331
331
  }
332
+ };
333
+
334
+ /**
335
+ * Retrieves the appropriate translation based on the locale, with fallback options.
336
+ *
337
+ * @param {Object|string} translations - The translations object or string to retrieve translation from.
338
+ * @param {string} locale - The locale to use for retrieving the translation.
339
+ * @param {Object} options - Additional options for fallbackLocale and defaultValue.
340
+ * @param {string} [options.fallbackLocale='en'] - The fallback locale to use if the translation for the specified locale is not found.
341
+ * @param {string} [options.defaultValue='unknown'] - The default value to return if no translation is found.
342
+ * @return {string} The translated string based on the locale, with fallback options if necessary.
343
+ */
344
+ export const getTranslation = (translations, locale, {
345
+ fallbackLocale = 'en',
346
+ defaultValue = 'unknown'
347
+ } = {}) => {
348
+ if (typeof translations === 'string') {
349
+ return translations;
350
+ }
351
+ let translation;
352
+ if (locale) {
353
+ translation = translations[locale];
354
+ }
355
+ if (!translation || typeof translation !== 'string') {
356
+ translation = translations[fallbackLocale];
357
+ }
358
+ if (!translation || typeof translation !== 'string') {
359
+ translation = defaultValue;
360
+ }
361
+ return translation;
332
362
  };
@@ -15,6 +15,7 @@ var _Button = _interopRequireDefault(require("../Button"));
15
15
  var _Colors = require("../Colors");
16
16
  var _constant = require("../Util/constant");
17
17
  var _SessionPermission = _interopRequireDefault(require("../SessionPermission"));
18
+ var _Util = require("../Util");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
21
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -110,7 +111,7 @@ function SessionBlocklet(_ref) {
110
111
  p: 0
111
112
  },
112
113
  children: sessionMenuList.map(item => {
113
- var _item$component, _item$title;
114
+ var _item$component;
114
115
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItem, {
115
116
  disablePadding: true,
116
117
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.ListItemButton, {
@@ -148,7 +149,7 @@ function SessionBlocklet(_ref) {
148
149
  textAlign: 'center',
149
150
  lineHeight: 'normal'
150
151
  },
151
- children: ((_item$title = item.title) === null || _item$title === void 0 ? void 0 : _item$title[locale]) || item.title
152
+ children: (0, _Util.getTranslation)(item.title, locale)
152
153
  })]
153
154
  })
154
155
  }, item.id);
package/lib/Util/index.js CHANGED
@@ -12,7 +12,7 @@ exports.getCookieOptions = getCookieOptions;
12
12
  exports.getCopyright = getCopyright;
13
13
  exports.getDIDColor = void 0;
14
14
  exports.getDateTool = getDateTool;
15
- exports.isUrl = exports.isEthereumDid = exports.getVisitorId = exports.getUserAvatar = exports.getTimezone = exports.getFontSize = void 0;
15
+ exports.isUrl = exports.isEthereumDid = exports.getVisitorId = exports.getUserAvatar = exports.getTranslation = exports.getTimezone = exports.getFontSize = void 0;
16
16
  exports.mergeProps = mergeProps;
17
17
  exports.openWebWallet = openWebWallet;
18
18
  exports.parseQuery = parseQuery;
@@ -378,4 +378,35 @@ const getDIDColor = did => {
378
378
  return null;
379
379
  }
380
380
  };
381
- exports.getDIDColor = getDIDColor;
381
+
382
+ /**
383
+ * Retrieves the appropriate translation based on the locale, with fallback options.
384
+ *
385
+ * @param {Object|string} translations - The translations object or string to retrieve translation from.
386
+ * @param {string} locale - The locale to use for retrieving the translation.
387
+ * @param {Object} options - Additional options for fallbackLocale and defaultValue.
388
+ * @param {string} [options.fallbackLocale='en'] - The fallback locale to use if the translation for the specified locale is not found.
389
+ * @param {string} [options.defaultValue='unknown'] - The default value to return if no translation is found.
390
+ * @return {string} The translated string based on the locale, with fallback options if necessary.
391
+ */
392
+ exports.getDIDColor = getDIDColor;
393
+ const getTranslation = exports.getTranslation = function getTranslation(translations, locale) {
394
+ let {
395
+ fallbackLocale = 'en',
396
+ defaultValue = 'unknown'
397
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
398
+ if (typeof translations === 'string') {
399
+ return translations;
400
+ }
401
+ let translation;
402
+ if (locale) {
403
+ translation = translations[locale];
404
+ }
405
+ if (!translation || typeof translation !== 'string') {
406
+ translation = translations[fallbackLocale];
407
+ }
408
+ if (!translation || typeof translation !== 'string') {
409
+ translation = defaultValue;
410
+ }
411
+ return translation;
412
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "2.9.58",
3
+ "version": "2.9.59",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -358,12 +358,12 @@
358
358
  "@mui/material": "^5.15.0",
359
359
  "react": ">=18.2.0"
360
360
  },
361
- "gitHead": "908522ee6638e31a421ee0bb1942f0a20792ba8a",
361
+ "gitHead": "686579a3c6f29287149a7cb9bb15ba826bda153a",
362
362
  "dependencies": {
363
363
  "@arcblock/did-motif": "^1.1.13",
364
- "@arcblock/icons": "^2.9.58",
365
- "@arcblock/nft-display": "^2.9.58",
366
- "@arcblock/react-hooks": "^2.9.58",
364
+ "@arcblock/icons": "^2.9.59",
365
+ "@arcblock/nft-display": "^2.9.59",
366
+ "@arcblock/react-hooks": "^2.9.59",
367
367
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
368
368
  "@emotion/react": "^11.10.4",
369
369
  "@emotion/styled": "^11.10.4",
@@ -21,6 +21,7 @@ import Button from '../Button';
21
21
  import { temp as colors } from '../Colors';
22
22
  import { AUTH_SERVICE_PREFIX, NAVIGATION_URL } from '../Util/constant';
23
23
  import SessionPermission from '../SessionPermission';
24
+ import { getTranslation } from '../Util';
24
25
 
25
26
  export default function SessionBlocklet({ session, locale, size }) {
26
27
  const blocklet = window?.blocklet || {};
@@ -136,7 +137,7 @@ export default function SessionBlocklet({ session, locale, size }) {
136
137
  textAlign: 'center',
137
138
  lineHeight: 'normal',
138
139
  }}>
139
- {item.title?.[locale] || item.title}
140
+ {getTranslation(item.title, locale)}
140
141
  </Typography>
141
142
  </ListItemButton>
142
143
  </ListItem>
package/src/Util/index.js CHANGED
@@ -372,3 +372,31 @@ export const getDIDColor = (did) => {
372
372
  return null;
373
373
  }
374
374
  };
375
+
376
+ /**
377
+ * Retrieves the appropriate translation based on the locale, with fallback options.
378
+ *
379
+ * @param {Object|string} translations - The translations object or string to retrieve translation from.
380
+ * @param {string} locale - The locale to use for retrieving the translation.
381
+ * @param {Object} options - Additional options for fallbackLocale and defaultValue.
382
+ * @param {string} [options.fallbackLocale='en'] - The fallback locale to use if the translation for the specified locale is not found.
383
+ * @param {string} [options.defaultValue='unknown'] - The default value to return if no translation is found.
384
+ * @return {string} The translated string based on the locale, with fallback options if necessary.
385
+ */
386
+ export const getTranslation = (translations, locale, { fallbackLocale = 'en', defaultValue = 'unknown' } = {}) => {
387
+ if (typeof translations === 'string') {
388
+ return translations;
389
+ }
390
+ let translation;
391
+ if (locale) {
392
+ translation = translations[locale];
393
+ }
394
+ if (!translation || typeof translation !== 'string') {
395
+ translation = translations[fallbackLocale];
396
+ }
397
+ if (!translation || typeof translation !== 'string') {
398
+ translation = defaultValue;
399
+ }
400
+
401
+ return translation;
402
+ };