@iobroker/adapter-react-v5 0.0.3 → 0.0.4

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.
@@ -179,7 +179,9 @@ var FileViewer = /*#__PURE__*/function (_React$Component) {
179
179
  className: this.props.classes.textarea,
180
180
  multiline: true,
181
181
  value: this.state.code,
182
- readOnly: true
182
+ InputProps: {
183
+ readOnly: true
184
+ }
183
185
  });
184
186
  } else if (this.state.text !== null) {
185
187
  return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
@@ -187,7 +189,9 @@ var FileViewer = /*#__PURE__*/function (_React$Component) {
187
189
  className: this.props.classes.textarea,
188
190
  value: this.state.code,
189
191
  multiline: true,
190
- readOnly: true
192
+ InputProps: {
193
+ readOnly: true
194
+ }
191
195
  });
192
196
  }
193
197
  }
@@ -198,7 +202,7 @@ var FileViewer = /*#__PURE__*/function (_React$Component) {
198
202
 
199
203
  return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
200
204
  className: this.props.classes.dialog,
201
- open: this.props.href,
205
+ open: !!this.props.href,
202
206
  onClose: function onClose() {
203
207
  return _this2.props.onClose();
204
208
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["FileViewer.js"],"names":["withWidth","WrappedComponent","props","styles","theme","dialog","height","maxHeight","maxWidth","content","textAlign","textarea","width","img","objectFit","EXTENSIONS","images","code","txt","getFileExtension","fileName","pos","lastIndexOf","substring","toLowerCase","FileViewer","ext","href","state","text","copyPossible","includes","fetch","then","response","data","setState","e","target","onerror","src","NoImage","classes","onClose","t","getContent","Utils","copyToClipboard","React","Component","propTypes","PropTypes","func","lang","string","expertMode","bool","isRequired","_export"],"mappings":"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","sourcesContent":["import React from 'react';\nimport withStyles from '@mui/styles/withStyles';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport TextField from '@mui/material/TextField';\n\nimport NoImage from '../assets/no_icon.svg';\nimport Utils from './Utils';\n\n// Icons\nimport {FaCopy as CopyIcon} from 'react-icons/fa';\nimport CloseIcon from '@mui/icons-material/Close';\n\n// FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth\nconst withWidth = () => (WrappedComponent) => (props) => <WrappedComponent {...props} width=\"xs\" />;\n\nconst styles = theme => ({\n dialog: {\n height: '100%',\n maxHeight: '100%',\n maxWidth: '100%',\n },\n content: {\n textAlign: 'center',\n },\n textarea: {\n width: '100%',\n height: '100%',\n },\n img: {\n width: 'auto',\n height: 'calc(100% - 5px)',\n objectFit: 'contain',\n }\n});\n\nexport const EXTENSIONS = {\n images: ['png', 'jpg', 'svg', 'jpeg', 'jpg'],\n code: ['js', 'json'],\n txt: ['log', 'txt', 'html', 'css', 'xml'],\n};\n\nfunction getFileExtension(fileName) {\n const pos = fileName.lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n } else {\n return null;\n }\n}\n\n/**\n * @typedef {object} FileViewerProps\n * @property {string} [key] The key to identify this component.\n * @property {import('../types').Translator} t Translation function\n * @property {ioBroker.Languages} [lang] The selected language.\n * @property {boolean} [expertMode] Is expert mode enabled? (default: false)\n * @property {() => void} onClose Callback when the viewer is closed.\n * @property {string} href The URL to the file to be displayed.\n *\n * @extends {React.Component<FileViewerProps>}\n */\nclass FileViewer extends React.Component {\n /**\n * @param {Readonly<FileViewerProps>} props\n */\n constructor(props) {\n super(props);\n\n this.ext = getFileExtension(this.props.href); // todo: replace later with Utils.getFileExtension\n\n this.state = {\n text: null,\n code: null,\n copyPossible: EXTENSIONS.code.includes(this.ext) || EXTENSIONS.txt.includes(this.ext)\n };\n\n if (this.state.copyPossible) {\n fetch(this.props.href)\n .then(response => response.text())\n .then(data => {\n if (EXTENSIONS.txt.includes(this.ext)) {\n this.setState({text: data});\n } else if (EXTENSIONS.code.includes(this.ext)) {\n this.setState({code: data});\n }\n });\n }\n }\n\n static getDerivedStateFromProps() {\n\n }\n\n getContent() {\n if (EXTENSIONS.images.includes(this.ext)) {\n return <img\n onError={ e => {\n e.target.onerror = null;\n e.target.src = NoImage\n } }\n className={ this.props.classes.img }\n src={ this.props.href } alt={ this.props.href }/>;\n } else if (this.state.code !== null) {\n return <TextField\n variant=\"standard\" \n className={ this.props.classes.textarea }\n multiline\n value={ this.state.code }\n readOnly={true}/>;\n } else if (this.state.text !== null) {\n return <TextField\n variant=\"standard\" \n className={ this.props.classes.textarea }\n value={ this.state.code }\n multiline\n readOnly={true}/>;\n }\n }\n\n render() {\n return <Dialog\n className={ this.props.classes.dialog }\n open={ this.props.href }\n onClose={ () => this.props.onClose() }\n fullWidth={ true }\n fullScreen={ true }\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">{ this.props.t('View: %s', this.props.href) }</DialogTitle>\n <DialogContent className={ this.props.classes.content }>\n { this.getContent() }\n </DialogContent>\n <DialogActions>\n { this.state.copyPossible ? <Button color=\"grey\" onClick={e => Utils.copyToClipboard(this.state.text || this.state.code, e) } >\n <CopyIcon />\n { this.props.t('Copy content') }\n </Button> : null }\n\n <Button onClick={() => this.props.onClose()} color=\"primary\">\n <CloseIcon />\n { this.props.t('Close') }\n </Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nFileViewer.propTypes = {\n t: PropTypes.func,\n lang: PropTypes.string,\n expertMode: PropTypes.bool,\n onClose: PropTypes.func,\n href: PropTypes.string.isRequired\n};\n\n/** @type {typeof FileViewer} */\nconst _export = withWidth()(withStyles(styles)(FileViewer));\nexport default _export;\n"],"file":"FileViewer.js"}
1
+ {"version":3,"sources":["FileViewer.js"],"names":["withWidth","WrappedComponent","props","styles","theme","dialog","height","maxHeight","maxWidth","content","textAlign","textarea","width","img","objectFit","EXTENSIONS","images","code","txt","getFileExtension","fileName","pos","lastIndexOf","substring","toLowerCase","FileViewer","ext","href","state","text","copyPossible","includes","fetch","then","response","data","setState","e","target","onerror","src","NoImage","classes","readOnly","onClose","t","getContent","Utils","copyToClipboard","React","Component","propTypes","PropTypes","func","lang","string","expertMode","bool","isRequired","_export"],"mappings":"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","sourcesContent":["import React from 'react';\nimport withStyles from '@mui/styles/withStyles';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport TextField from '@mui/material/TextField';\n\nimport NoImage from '../assets/no_icon.svg';\nimport Utils from './Utils';\n\n// Icons\nimport {FaCopy as CopyIcon} from 'react-icons/fa';\nimport CloseIcon from '@mui/icons-material/Close';\n\n// FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth\nconst withWidth = () => WrappedComponent => props => <WrappedComponent {...props} width=\"xs\" />;\n\nconst styles = theme => ({\n dialog: {\n height: '100%',\n maxHeight: '100%',\n maxWidth: '100%',\n },\n content: {\n textAlign: 'center',\n },\n textarea: {\n width: '100%',\n height: '100%',\n },\n img: {\n width: 'auto',\n height: 'calc(100% - 5px)',\n objectFit: 'contain',\n }\n});\n\nexport const EXTENSIONS = {\n images: ['png', 'jpg', 'svg', 'jpeg', 'jpg'],\n code: ['js', 'json'],\n txt: ['log', 'txt', 'html', 'css', 'xml'],\n};\n\nfunction getFileExtension(fileName) {\n const pos = fileName.lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n } else {\n return null;\n }\n}\n\n/**\n * @typedef {object} FileViewerProps\n * @property {string} [key] The key to identify this component.\n * @property {import('../types').Translator} t Translation function\n * @property {ioBroker.Languages} [lang] The selected language.\n * @property {boolean} [expertMode] Is expert mode enabled? (default: false)\n * @property {() => void} onClose Callback when the viewer is closed.\n * @property {string} href The URL to the file to be displayed.\n *\n * @extends {React.Component<FileViewerProps>}\n */\nclass FileViewer extends React.Component {\n /**\n * @param {Readonly<FileViewerProps>} props\n */\n constructor(props) {\n super(props);\n\n this.ext = getFileExtension(this.props.href); // todo: replace later with Utils.getFileExtension\n\n this.state = {\n text: null,\n code: null,\n copyPossible: EXTENSIONS.code.includes(this.ext) || EXTENSIONS.txt.includes(this.ext)\n };\n\n if (this.state.copyPossible) {\n fetch(this.props.href)\n .then(response => response.text())\n .then(data => {\n if (EXTENSIONS.txt.includes(this.ext)) {\n this.setState({text: data});\n } else if (EXTENSIONS.code.includes(this.ext)) {\n this.setState({code: data});\n }\n });\n }\n }\n\n static getDerivedStateFromProps() {\n\n }\n\n getContent() {\n if (EXTENSIONS.images.includes(this.ext)) {\n return <img\n onError={ e => {\n e.target.onerror = null;\n e.target.src = NoImage\n } }\n className={ this.props.classes.img }\n src={ this.props.href } alt={ this.props.href }/>;\n } else if (this.state.code !== null) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n multiline\n value={ this.state.code }\n InputProps={{\n readOnly: true,\n }}\n />;\n } else if (this.state.text !== null) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n value={ this.state.code }\n multiline\n InputProps={{\n readOnly: true,\n }}\n />;\n }\n }\n\n render() {\n return <Dialog\n className={ this.props.classes.dialog }\n open={ !!this.props.href }\n onClose={ () => this.props.onClose() }\n fullWidth={ true }\n fullScreen={ true }\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">{ this.props.t('View: %s', this.props.href) }</DialogTitle>\n <DialogContent className={ this.props.classes.content }>\n { this.getContent() }\n </DialogContent>\n <DialogActions>\n { this.state.copyPossible ? <Button color=\"grey\" onClick={e => Utils.copyToClipboard(this.state.text || this.state.code, e) } >\n <CopyIcon />\n { this.props.t('Copy content') }\n </Button> : null }\n\n <Button onClick={() => this.props.onClose()} color=\"primary\">\n <CloseIcon />\n { this.props.t('Close') }\n </Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nFileViewer.propTypes = {\n t: PropTypes.func,\n lang: PropTypes.string,\n expertMode: PropTypes.bool,\n onClose: PropTypes.func,\n href: PropTypes.string.isRequired\n};\n\n/** @type {typeof FileViewer} */\nconst _export = withWidth()(withStyles(styles)(FileViewer));\nexport default _export;\n"],"file":"FileViewer.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["IconSelector.js"],"names":["IconSelector","props","state","opened","names","filter","icons","loading","setState","templates","onlyRooms","onlyDevices","rooms","promises","forEach","item","name","lang","en","_id","i","find","_item","_i","icon","template","image","require","e","Promise","resolve","push","Utils","getSvg","then","devices","offset","length","all","isAnyName","map","href","src","parts","split","pop","startsWith","t","loadAllIcons","minWidth","marginRight","marginLeft","target","value","toLowerCase","endAdornment","undefined","width","textAlign","includes","onSelect","height","borderRadius","Component","propTypes","PropTypes","array","bool","func","isRequired","string"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport Icon from './Icon';\nimport Utils from './Utils';\n\nimport devices from '../assets/devices/list.json';\nimport rooms from '../assets/rooms/list.json';\n\nclass IconSelector extends Component {\n constructor(props) {\n super(props);\n this.state = {\n opened: false,\n names: [],\n filter: '',\n icons: props.icons || null,\n };\n }\n\n loadAllIcons() {\n if (this.state.loading || this.state.icons) {\n return;\n }\n this.setState({loading: true}, () => {\n const icons = [];\n const names = [];\n\n if (!this.props.icons) {\n let templates = this.props.onlyRooms || (!this.props.onlyRooms && !this.props.onlyDevices) ? rooms : null;\n\n const promises = [];\n if (templates) {\n templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/rooms/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i] = icon));\n });\n }\n\n templates = this.props.onlyDevices || (!this.props.onlyRooms && !this.props.onlyDevices) ? devices : null;\n if (templates) {\n const offset = promises.length;\n templates && templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/devices/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i + offset] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i + offset] = icon));\n });\n }\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n } else {\n const promises = this.props.icons.map((item, i) => {\n let href;\n if (typeof item === 'object') {\n href = item.icon || item.src || item.href;\n names[i] = typeof item.name === 'object' ? item.name[this.props.lang] || item.name.en || item._id : item.name;\n if (!names[i]) {\n const parts = href.split('.');\n parts.pop();\n names[i] = parts[parts.length - 1];\n }\n } else {\n href = item;\n }\n\n if (href) {\n if (href.startsWith('data:')) {\n icons[i] = href;\n return Promise.resolve();\n } else {\n return Utils.getSvg(href)\n .then(icon =>\n icons[i] = icon);\n }\n } else {\n return Promise.resolve();\n }\n });\n\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n }\n });\n }\n\n render() {\n if (this.state.loading) {\n return <CircularProgress />;\n }\n\n return <>\n <Button\n color=\"grey\" \n variant=\"outlined\"\n title={this.props.t('ra_Select predefined icon')}\n onClick={() => this.setState({opened: true}, () => this.loadAllIcons())} style={{minWidth: 40, marginRight: 8}}\n >...</Button>\n {this.state.opened ? <Dialog onClose={() => this.setState({opened: false})} open={true}>\n <DialogTitle>{this.props.t('ra_Select predefined icon')}\n {this.state.isAnyName ? <TextField\n variant=\"standard\" \n margin=\"dense\"\n style={{marginLeft: 20}}\n value={this.state.filter}\n onChange={e => this.setState({filter: e.target.value.toLowerCase()})}\n placeholder={this.props.t('Filter')}\n InputProps={{\n endAdornment: this.state.filter\n ?\n <IconButton\n size=\"small\"\n onClick={() => this.setState({filter: ''})}>\n <ClearIcon />\n </IconButton>\n :\n undefined,\n }}\n /> : null}\n </DialogTitle>\n <DialogContent>\n <div style={{width: '100%', textAlign: 'center'}}>\n {this.state.icons && this.state.icons.map((icon, i) => {\n if (!this.state.filter || (this.state.names[i] && this.state.names[i].toLowerCase().includes(this.state.filter))) {\n return (\n <Tooltip title={this.state.names[i] || ''} key={i}><IconButton\n onClick={() =>\n this.setState({opened: false}, () =>\n this.props.onSelect(icon))}\n size=\"large\">\n <Icon src={icon} alt={i} style={{width: 32, height: 32, borderRadius: 5}}/>\n </IconButton></Tooltip>\n );\n } else {\n return null;\n }\n })}\n </div>\n </DialogContent>\n <DialogActions>\n <Button\n color=\"grey\" \n variant=\"contained\"\n onClick={() => this.setState({opened: false})}\n startIcon={<CloseIcon />}\n >\n {this.props.t('Close')}\n </Button>\n </DialogActions>\n </Dialog> : null}\n </>;\n }\n}\n\nIconSelector.propTypes = {\n icons: PropTypes.array,\n onlyRooms: PropTypes.bool,\n onlyDevices: PropTypes.bool,\n onSelect: PropTypes.func.isRequired,\n t: PropTypes.func.isRequired,\n lang: PropTypes.string.isRequired,\n};\n\n/** @type {typeof IconSelector} */\nexport default IconSelector;"],"file":"IconSelector.js"}
1
+ {"version":3,"sources":["IconSelector.js"],"names":["IconSelector","props","state","opened","names","filter","icons","loading","setState","templates","onlyRooms","onlyDevices","rooms","promises","forEach","item","name","lang","en","_id","i","find","_item","_i","icon","template","image","require","e","Promise","resolve","push","Utils","getSvg","then","devices","offset","length","all","isAnyName","map","href","src","parts","split","pop","startsWith","t","loadAllIcons","minWidth","marginRight","marginLeft","target","value","toLowerCase","endAdornment","undefined","width","textAlign","includes","onSelect","height","borderRadius","Component","propTypes","PropTypes","array","bool","func","isRequired","string"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport Icon from './Icon';\nimport Utils from './Utils';\n\nimport devices from '../assets/devices/list.json';\nimport rooms from '../assets/rooms/list.json';\n\nclass IconSelector extends Component {\n constructor(props) {\n super(props);\n this.state = {\n opened: false,\n names: [],\n filter: '',\n icons: props.icons || null,\n };\n }\n\n loadAllIcons() {\n if (this.state.loading || this.state.icons) {\n return;\n }\n this.setState({loading: true}, () => {\n const icons = [];\n const names = [];\n\n if (!this.props.icons) {\n let templates = this.props.onlyRooms || (!this.props.onlyRooms && !this.props.onlyDevices) ? rooms : null;\n\n const promises = [];\n if (templates) {\n templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/rooms/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i] = icon));\n });\n }\n\n templates = this.props.onlyDevices || (!this.props.onlyRooms && !this.props.onlyDevices) ? devices : null;\n if (templates) {\n const offset = promises.length;\n templates && templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/devices/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i + offset] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i + offset] = icon));\n });\n }\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n } else {\n const promises = this.props.icons.map((item, i) => {\n let href;\n if (typeof item === 'object') {\n href = item.icon || item.src || item.href;\n names[i] = typeof item.name === 'object' ? item.name[this.props.lang] || item.name.en || item._id : item.name;\n if (!names[i]) {\n const parts = href.split('.');\n parts.pop();\n names[i] = parts[parts.length - 1];\n }\n } else {\n href = item;\n }\n\n if (href) {\n if (href.startsWith('data:')) {\n icons[i] = href;\n return Promise.resolve();\n } else {\n return Utils.getSvg(href)\n .then(icon =>\n icons[i] = icon);\n }\n } else {\n return Promise.resolve();\n }\n });\n\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n }\n });\n }\n\n render() {\n if (this.state.loading) {\n return <CircularProgress />;\n }\n\n return <>\n <Button\n color=\"grey\"\n variant=\"outlined\"\n title={this.props.t('ra_Select predefined icon')}\n onClick={() => this.setState({opened: true}, () => this.loadAllIcons())} style={{minWidth: 40, marginRight: 8}}\n >...</Button>\n {this.state.opened ? <Dialog onClose={() => this.setState({opened: false})} open={true}>\n <DialogTitle>{this.props.t('ra_Select predefined icon')}\n {this.state.isAnyName ? <TextField\n variant=\"standard\"\n margin=\"dense\"\n style={{marginLeft: 20}}\n value={this.state.filter}\n onChange={e => this.setState({filter: e.target.value.toLowerCase()})}\n placeholder={this.props.t('Filter')}\n InputProps={{\n endAdornment: this.state.filter\n ?\n <IconButton\n size=\"small\"\n onClick={() => this.setState({filter: ''})}>\n <ClearIcon />\n </IconButton>\n :\n undefined,\n }}\n /> : null}\n </DialogTitle>\n <DialogContent>\n <div style={{width: '100%', textAlign: 'center'}}>\n {this.state.icons && this.state.icons.map((icon, i) => {\n if (!this.state.filter || (this.state.names[i] && this.state.names[i].toLowerCase().includes(this.state.filter))) {\n return <Tooltip title={this.state.names[i] || ''} key={i}>\n <IconButton\n onClick={() =>\n this.setState({opened: false}, () =>\n this.props.onSelect(icon))\n }\n size=\"large\"\n >\n <Icon src={icon} alt={i} style={{width: 32, height: 32, borderRadius: 5}}/>\n </IconButton>\n </Tooltip>;\n } else {\n return null;\n }\n })}\n </div>\n </DialogContent>\n <DialogActions>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({opened: false})}\n startIcon={<CloseIcon />}\n >\n {this.props.t('Close')}\n </Button>\n </DialogActions>\n </Dialog> : null}\n </>;\n }\n}\n\nIconSelector.propTypes = {\n icons: PropTypes.array,\n onlyRooms: PropTypes.bool,\n onlyDevices: PropTypes.bool,\n onSelect: PropTypes.func.isRequired,\n t: PropTypes.func.isRequired,\n lang: PropTypes.string.isRequired,\n};\n\n/** @type {typeof IconSelector} */\nexport default IconSelector;"],"file":"IconSelector.js"}