@iobroker/adapter-react-v5 6.0.13 → 6.0.15

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.
@@ -224,6 +224,27 @@ class FileViewer extends react_1.Component {
224
224
  this.setState({ imgError: true });
225
225
  }, style: Object.assign(Object.assign({}, styles.img), this.props.getStyleBackgroundImage()), src: `${this.props.href}?ts=${this.state.forceUpdate}`, alt: this.props.href });
226
226
  }
227
+ if (this.state.ext && exports.EXTENSIONS.audio.includes(this.state.ext)) {
228
+ return react_1.default.createElement("div", { style: {
229
+ width: '100%',
230
+ height: '100%',
231
+ display: 'flex',
232
+ justifyContent: 'center',
233
+ alignItems: 'center',
234
+ } },
235
+ react_1.default.createElement("audio", { style: { width: '100%' }, src: this.props.href, controls: true }));
236
+ }
237
+ if (this.state.ext && exports.EXTENSIONS.video.includes(this.state.ext)) {
238
+ return (react_1.default.createElement("div", { style: {
239
+ width: '100%',
240
+ height: '100%',
241
+ display: 'flex',
242
+ justifyContent: 'center',
243
+ alignItems: 'center',
244
+ } },
245
+ react_1.default.createElement("video", { style: { width: '100%', height: '100%' }, controls: true },
246
+ react_1.default.createElement("source", { src: this.props.href, type: `video/${this.state.ext}}` }))));
247
+ }
227
248
  if (this.state.code !== null || this.state.text !== null || this.state.editing) {
228
249
  // File viewer in adapter-react does not support write
229
250
  // return <Editor
@@ -1781,7 +1781,6 @@ class ObjectBrowserClass extends react_1.Component {
1781
1781
  this.localStorage = window._localStorage || window.localStorage;
1782
1782
  this.lastAppliedFilter = null;
1783
1783
  this.pausedSubscribes = false;
1784
- this.selectedFound = false;
1785
1784
  this.root = null;
1786
1785
  this.states = {};
1787
1786
  this.subscribes = [];
@@ -2257,6 +2256,7 @@ class ObjectBrowserClass extends react_1.Component {
2257
2256
  selected = props.selected;
2258
2257
  }
2259
2258
  selected = selected.map(id => id.replace(/["']/g, '')).filter(id => id);
2259
+ this.selectedFound = !selected.length && !this.lastSelectedItems.length;
2260
2260
  const columnsStr = this.localStorage.getItem(`${props.dialogName || 'App'}.columns`);
2261
2261
  let columns;
2262
2262
  try {
@@ -4458,7 +4458,7 @@ class ObjectBrowserClass extends react_1.Component {
4458
4458
  icons),
4459
4459
  react_1.default.createElement("div", { style: Object.assign(Object.assign({}, styles.grow), (invertBackground ? this.styles.invertedBackgroundFlex : {})) }),
4460
4460
  react_1.default.createElement(material_1.Grid, { item: true, container: true, alignItems: "center" }, iconItem),
4461
- this.props.width !== 'xs' || narrowStyleWithDetails ? react_1.default.createElement("div", null,
4461
+ this.props.width !== 'xs' ? react_1.default.createElement("div", null,
4462
4462
  react_1.default.createElement(IconCopy_1.default, { className: narrowStyleWithDetails ? '' : 'copyButton', style: styles.cellCopyButton, onClick: e => this.onCopy(e, id) })) : null);
4463
4463
  let colName = (narrowStyleWithDetails && name) || this.columnsVisibility.name ? react_1.default.createElement(material_1.Box, { component: "div", sx: Object.assign(Object.assign(Object.assign({}, styles.cellName), (useDesc ? styles.cellNameWithDesc : undefined)), { width: this.props.width !== 'xs' ? this.columnsVisibility.name : undefined, ml: narrowStyleWithDetails ? 0 : '5px' }) },
4464
4464
  name,
@@ -4615,6 +4615,9 @@ class ObjectBrowserClass extends react_1.Component {
4615
4615
  padding: 10,
4616
4616
  backgroundColor: this.props.theme.palette.mode === 'dark' ? '#333' : '#ccc',
4617
4617
  } },
4618
+ react_1.default.createElement("div", { style: styles.cellDetailsLine },
4619
+ react_1.default.createElement("div", { style: { flexGrow: 1 } }),
4620
+ react_1.default.createElement(IconCopy_1.default, { style: styles.cellCopyButtonInDetails, onClick: e => this.onCopy(e, id) })),
4618
4621
  colName && react_1.default.createElement("div", { style: styles.cellDetailsLine },
4619
4622
  react_1.default.createElement("span", { style: styles.cellDetailsName },
4620
4623
  this.texts.name,
@@ -1199,7 +1199,7 @@ class Utils {
1199
1199
  if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {
1200
1200
  return 'light';
1201
1201
  }
1202
- themeName = themeName || (window._localStorage || window.localStorage).getItem('App.themeName');
1202
+ themeName = themeName || Utils.getThemeName();
1203
1203
  return themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light';
1204
1204
  }
1205
1205
  /**
package/GenericApp.js CHANGED
@@ -299,7 +299,7 @@ class GenericApp extends Router_1.default {
299
299
  console.log('Sentry initialized');
300
300
  }
301
301
  // read UUID and init sentry with it.
302
- // for backward compatibility it will be processed separately from above logic: some adapters could still have this.sentryDSN as undefined
302
+ // for backward compatibility it will be processed separately from the above logic: some adapters could still have this.sentryDSN as undefined
303
303
  if (!this.sentryInited && sentryEnabled) {
304
304
  this.sentryInited = true;
305
305
  waitPromise = this.socket.getObject('system.meta.uuid')
package/README.md CHANGED
@@ -699,6 +699,11 @@ const styles: Record<string, any> = (theme: IobTheme) => ({
699
699
  dialog: {
700
700
  height: `calc(100% - ${theme.mixins.toolbar.minHeight}px)`,
701
701
  padding: theme.spacing(1),
702
+ margin: theme.spacing(2),
703
+ gap: 5,
704
+ borderRadius: 5,
705
+ marginLeft: 10, // marginTop, marginRight, marginBottom
706
+ paddingLeft: 10, // paddingTop, paddingRight, paddingBottom
702
707
  },
703
708
  ...
704
709
  });
@@ -709,7 +714,12 @@ After:
709
714
  const styles: Record<string, any> = {
710
715
  dialog: (theme: IobTheme) => ({
711
716
  height: `calc(100% - ${theme => theme.mixins.toolbar.minHeight}px)`,
712
- p: 1,
717
+ p: 1, // or 8px, padding is OK too
718
+ m: '16px', // or 2, margin is OK too
719
+ gap: '5px',
720
+ borderRadius: '5px',
721
+ ml: '10px', // mt, mr, mb, but marginLeft, marginRight, marginBottom is OK too
722
+ pl: '10px', // pt, pr, pb, but paddingTop, paddingRight, paddingBottom is OK too
713
723
  }),
714
724
  };
715
725
  ```
@@ -717,11 +727,11 @@ const styles: Record<string, any> = {
717
727
  - Modify `className`:
718
728
  Before: `<div className={this.props.classes.box}>`
719
729
 
720
- After: `<Box component="div" sx={styles.box}>`
730
+ After: `<Box sx={styles.box}>`
721
731
 
722
- Before: `<div className={Utils.clsx(this.props.classes.box1, condition && this.props.classes.box2)}>`
732
+ Before: `<span className={Utils.clsx(this.props.classes.box1, condition && this.props.classes.box2)}>`
723
733
 
724
- After: `<Box component="div" sx={Utils.getStyle(this.props.theme, this.props.classes.box1, condition && this.props.classes.box2)}>`
734
+ After: `<Box component="span" sx={Utils.getStyle(this.props.theme, this.props.classes.box1, condition && this.props.classes.box2)}>`
725
735
  Or if no one style is a function: `<Box component="div" sx={{ ...this.props.classes.box1, ...(condition ? this.props.classes.box2 : undefined) }}>`
726
736
 
727
737
  Do not use `sx` if the style is not dynamic (not a function). Use `style` instead.
@@ -759,7 +769,7 @@ The best practice is to replace `padding` with `p` and `margin` with `m`, so you
759
769
  Before: `<Tooltip title={this.props.t('ra_Refresh tree')} classes={{ popper: styles.tooltip }}>`
760
770
 
761
771
  After: `<Tooltip title={this.props.t('ra_Refresh tree')} componentsProps={{ popper: { sx: { pointerEvents: 'none' } } }}>`
762
- Or: `<Tooltip title={this.props.t('ra_Refresh tree')} elr>`
772
+ Or: `<Tooltip title={this.props.t('ra_Refresh tree')} componentsProps={{ popper: { sx: styles.tooltip } }}>`
763
773
 
764
774
  Before. `<AccordionSummary classes={{ root: styles.rootStyle, content: styles.content }}>`
765
775
 
@@ -771,6 +781,13 @@ The best practice is to replace `padding` with `p` and `margin` with `m`, so you
771
781
  -->
772
782
 
773
783
  ## Changelog
784
+ ### 6.0.15 (2024-07-13)
785
+ * (bluefox) Allowed playing mp3 files in the file browser
786
+ * (bluefox) Corrected jump by object selection
787
+
788
+ ### 6.0.14 (2024-07-07)
789
+ * (bluefox) Corrected theme type selection
790
+
774
791
  ### 6.0.13 (2024-06-30)
775
792
  * (bluefox) Corrected color picker
776
793
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/adapter-react-v5",
3
- "version": "6.0.13",
3
+ "version": "6.0.15",
4
4
  "description": "React classes to develop admin interfaces for ioBroker with react.",
5
5
  "author": {
6
6
  "name": "Denis Haev (bluefox)",
@@ -30,13 +30,13 @@
30
30
  "@emotion/react": "^11.11.4",
31
31
  "@emotion/styled": "^11.11.5",
32
32
  "@iobroker/socket-client": "^2.4.18",
33
- "@iobroker/types": "^6.0.6-alpha.0-20240624-92c3310c8",
34
- "@iobroker/js-controller-common": "^6.0.5",
35
- "@iobroker/js-controller-common-db": "^6.0.5",
36
- "@mui/icons-material": "^5.15.21",
37
- "@mui/material": "^5.15.21",
38
- "@mui/x-date-pickers": "^7.8.0",
39
- "@sentry/browser": "^8.13.0",
33
+ "@iobroker/types": "^6.0.8",
34
+ "@iobroker/js-controller-common": "^6.0.8",
35
+ "@iobroker/js-controller-common-db": "^6.0.8",
36
+ "@mui/icons-material": "^5.16.1",
37
+ "@mui/material": "^5.16.1",
38
+ "@mui/x-date-pickers": "^7.10.0",
39
+ "@sentry/browser": "^8.17.0",
40
40
  "react-color": "^2.19.3",
41
41
  "react-colorful": "^5.6.1",
42
42
  "react-cropper": "^2.3.3",