@iobroker/adapter-react-v5 3.4.4 → 3.5.0

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.
Files changed (120) hide show
  1. package/Components/JsonConfigComponent/ConfigAlive.js +3 -3
  2. package/Components/JsonConfigComponent/ConfigAlive.js.map +1 -1
  3. package/Components/JsonConfigComponent/ConfigAutocomplete.js +1 -1
  4. package/Components/JsonConfigComponent/ConfigAutocomplete.js.map +1 -1
  5. package/Components/JsonConfigComponent/ConfigAutocompleteSendTo.js +1 -1
  6. package/Components/JsonConfigComponent/ConfigAutocompleteSendTo.js.map +1 -1
  7. package/Components/JsonConfigComponent/ConfigCRON.js +2 -2
  8. package/Components/JsonConfigComponent/ConfigCRON.js.map +1 -1
  9. package/Components/JsonConfigComponent/ConfigCertificateSelect.js +1 -1
  10. package/Components/JsonConfigComponent/ConfigCertificateSelect.js.map +1 -1
  11. package/Components/JsonConfigComponent/ConfigCheckLicense.js +2 -2
  12. package/Components/JsonConfigComponent/ConfigCheckLicense.js.map +1 -1
  13. package/Components/JsonConfigComponent/ConfigCheckbox.js +1 -1
  14. package/Components/JsonConfigComponent/ConfigCheckbox.js.map +1 -1
  15. package/Components/JsonConfigComponent/ConfigColor.js +2 -2
  16. package/Components/JsonConfigComponent/ConfigColor.js.map +1 -1
  17. package/Components/JsonConfigComponent/ConfigCoordinates.js +1 -1
  18. package/Components/JsonConfigComponent/ConfigCoordinates.js.map +1 -1
  19. package/Components/JsonConfigComponent/ConfigCustom.js +1 -1
  20. package/Components/JsonConfigComponent/ConfigCustom.js.map +1 -1
  21. package/Components/JsonConfigComponent/ConfigFile.js +2 -2
  22. package/Components/JsonConfigComponent/ConfigFile.js.map +1 -1
  23. package/Components/JsonConfigComponent/ConfigFileSelector.js +4 -4
  24. package/Components/JsonConfigComponent/ConfigFileSelector.js.map +1 -1
  25. package/Components/JsonConfigComponent/ConfigFunc.js +2 -2
  26. package/Components/JsonConfigComponent/ConfigFunc.js.map +1 -1
  27. package/Components/JsonConfigComponent/ConfigGeneric.js +3 -3
  28. package/Components/JsonConfigComponent/ConfigGeneric.js.map +1 -1
  29. package/Components/JsonConfigComponent/ConfigIP.js +1 -1
  30. package/Components/JsonConfigComponent/ConfigIP.js.map +1 -1
  31. package/Components/JsonConfigComponent/ConfigImageUpload.js +2 -2
  32. package/Components/JsonConfigComponent/ConfigImageUpload.js.map +1 -1
  33. package/Components/JsonConfigComponent/ConfigInstanceSelect.js +1 -1
  34. package/Components/JsonConfigComponent/ConfigInstanceSelect.js.map +1 -1
  35. package/Components/JsonConfigComponent/ConfigJsonEditor.js +1 -1
  36. package/Components/JsonConfigComponent/ConfigJsonEditor.js.map +1 -1
  37. package/Components/JsonConfigComponent/ConfigLanguage.js +1 -1
  38. package/Components/JsonConfigComponent/ConfigLanguage.js.map +1 -1
  39. package/Components/JsonConfigComponent/ConfigNumber.js +2 -2
  40. package/Components/JsonConfigComponent/ConfigNumber.js.map +1 -1
  41. package/Components/JsonConfigComponent/ConfigObjectId.js +1 -1
  42. package/Components/JsonConfigComponent/ConfigObjectId.js.map +1 -1
  43. package/Components/JsonConfigComponent/ConfigPassword.js +1 -1
  44. package/Components/JsonConfigComponent/ConfigPassword.js.map +1 -1
  45. package/Components/JsonConfigComponent/ConfigPattern.js +3 -3
  46. package/Components/JsonConfigComponent/ConfigPattern.js.map +1 -1
  47. package/Components/JsonConfigComponent/ConfigRoom.js +3 -3
  48. package/Components/JsonConfigComponent/ConfigRoom.js.map +1 -1
  49. package/Components/JsonConfigComponent/ConfigSelect.js +3 -2
  50. package/Components/JsonConfigComponent/ConfigSelect.js.map +1 -1
  51. package/Components/JsonConfigComponent/ConfigSelectSendTo.js +1 -1
  52. package/Components/JsonConfigComponent/ConfigSelectSendTo.js.map +1 -1
  53. package/Components/JsonConfigComponent/ConfigSendto.js +5 -5
  54. package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
  55. package/Components/JsonConfigComponent/ConfigSetState.js +3 -3
  56. package/Components/JsonConfigComponent/ConfigSetState.js.map +1 -1
  57. package/Components/JsonConfigComponent/ConfigStaticDivider.js +1 -1
  58. package/Components/JsonConfigComponent/ConfigStaticDivider.js.map +1 -1
  59. package/Components/JsonConfigComponent/ConfigStaticText.js +1 -1
  60. package/Components/JsonConfigComponent/ConfigStaticText.js.map +1 -1
  61. package/Components/JsonConfigComponent/ConfigTable.js +1 -1
  62. package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
  63. package/Components/JsonConfigComponent/ConfigText.js +4 -2
  64. package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
  65. package/Components/JsonConfigComponent/ConfigTextSendTo.js +3 -3
  66. package/Components/JsonConfigComponent/ConfigTextSendTo.js.map +1 -1
  67. package/Components/JsonConfigComponent/ConfigUUID.js +2 -2
  68. package/Components/JsonConfigComponent/ConfigUUID.js.map +1 -1
  69. package/Components/JsonConfigComponent/ConfigUser.js +3 -3
  70. package/Components/JsonConfigComponent/ConfigUser.js.map +1 -1
  71. package/Components/JsonConfigComponent/index.js +1 -1
  72. package/Components/JsonConfigComponent/index.js.map +1 -1
  73. package/Components/JsonConfigComponent/wrapper/Components/ColorPicker.d.ts +2 -0
  74. package/Components/JsonConfigComponent/wrapper/Components/ColorPicker.js +11 -0
  75. package/Components/JsonConfigComponent/wrapper/Components/ColorPicker.js.map +1 -0
  76. package/Components/JsonConfigComponent/wrapper/Components/Icon.d.ts +2 -0
  77. package/Components/JsonConfigComponent/wrapper/Components/Icon.js +11 -0
  78. package/Components/JsonConfigComponent/wrapper/Components/Icon.js.map +1 -0
  79. package/Components/JsonConfigComponent/wrapper/Components/TextWithIcon.d.ts +2 -0
  80. package/Components/JsonConfigComponent/wrapper/Components/TextWithIcon.js +11 -0
  81. package/Components/JsonConfigComponent/wrapper/Components/TextWithIcon.js.map +1 -0
  82. package/Components/JsonConfigComponent/wrapper/Components/UploadImage.d.ts +2 -0
  83. package/Components/JsonConfigComponent/wrapper/Components/UploadImage.js +11 -0
  84. package/Components/JsonConfigComponent/wrapper/Components/UploadImage.js.map +1 -0
  85. package/Components/JsonConfigComponent/wrapper/Components/Utils.d.ts +2 -0
  86. package/Components/JsonConfigComponent/wrapper/Components/Utils.js +11 -0
  87. package/Components/JsonConfigComponent/wrapper/Components/Utils.js.map +1 -0
  88. package/Components/JsonConfigComponent/wrapper/Dialogs/Confirm.d.ts +2 -0
  89. package/Components/JsonConfigComponent/wrapper/Dialogs/Confirm.js +11 -0
  90. package/Components/JsonConfigComponent/wrapper/Dialogs/Confirm.js.map +1 -0
  91. package/Components/JsonConfigComponent/wrapper/Dialogs/Cron.d.ts +2 -0
  92. package/Components/JsonConfigComponent/wrapper/Dialogs/Cron.js +11 -0
  93. package/Components/JsonConfigComponent/wrapper/Dialogs/Cron.js.map +1 -0
  94. package/Components/JsonConfigComponent/wrapper/Dialogs/Error.d.ts +2 -0
  95. package/Components/JsonConfigComponent/wrapper/Dialogs/Error.js +11 -0
  96. package/Components/JsonConfigComponent/wrapper/Dialogs/Error.js.map +1 -0
  97. package/Components/JsonConfigComponent/wrapper/Dialogs/Message.d.ts +1 -0
  98. package/Components/JsonConfigComponent/wrapper/Dialogs/Message.js +11 -0
  99. package/Components/JsonConfigComponent/wrapper/Dialogs/Message.js.map +1 -0
  100. package/Components/JsonConfigComponent/wrapper/Dialogs/SelectFile.d.ts +2 -0
  101. package/Components/JsonConfigComponent/wrapper/Dialogs/SelectFile.js +11 -0
  102. package/Components/JsonConfigComponent/wrapper/Dialogs/SelectFile.js.map +1 -0
  103. package/Components/JsonConfigComponent/wrapper/Dialogs/SelectID.d.ts +2 -0
  104. package/Components/JsonConfigComponent/wrapper/Dialogs/SelectID.js +11 -0
  105. package/Components/JsonConfigComponent/wrapper/Dialogs/SelectID.js.map +1 -0
  106. package/Components/JsonConfigComponent/wrapper/i18n.d.ts +2 -0
  107. package/Components/JsonConfigComponent/wrapper/i18n.js +11 -0
  108. package/Components/JsonConfigComponent/wrapper/i18n.js.map +1 -0
  109. package/Components/JsonConfigComponent/wrapper/icons/IconCopy.d.ts +2 -0
  110. package/Components/JsonConfigComponent/wrapper/icons/IconCopy.js +11 -0
  111. package/Components/JsonConfigComponent/wrapper/icons/IconCopy.js.map +1 -0
  112. package/Components/copy-to-clipboard.js.map +1 -1
  113. package/Dialogs/SelectFile.d.ts +75 -21
  114. package/Dialogs/SelectFile.js +51 -35
  115. package/Dialogs/SelectFile.js.map +1 -1
  116. package/README.md +2 -2
  117. package/package.json +1 -1
  118. package/Dialogs/FileSelect.d.ts +0 -148
  119. package/Dialogs/FileSelect.js +0 -226
  120. package/Dialogs/FileSelect.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  export default _export;
2
- export type DialogSelectIDProps = {
2
+ export type DialogSelectFileProps = {
3
3
  /**
4
- * The internal name of the dialog; default: "default"
4
+ * PropTypes.string, // where to store settings in localStorage *
5
5
  */
6
- dialogName?: string;
6
+ dialogName?: boolean;
7
7
  /**
8
8
  * The dialog title; default: Please select object ID... (translated)
9
9
  */
@@ -27,7 +27,7 @@ export type DialogSelectIDProps = {
27
27
  /**
28
28
  * The socket connection.
29
29
  */
30
- socket: import('../Connection').default;
30
+ socket?: import('../Connection').default;
31
31
  /**
32
32
  * Theme name.
33
33
  */
@@ -48,14 +48,54 @@ export type DialogSelectIDProps = {
48
48
  * The cancel button text; default: Cancel (translated)
49
49
  */
50
50
  cancel?: string;
51
+ /**
52
+ * If download of files enabled
53
+ */
54
+ allowUpload?: boolean;
55
+ /**
56
+ * If download of files enabled
57
+ */
58
+ allowDownload?: boolean;
59
+ /**
60
+ * If creation of folders enabled
61
+ */
62
+ allowCreateFolder?: boolean;
63
+ /**
64
+ * If creation of folders enabled
65
+ */
66
+ allowDelete?: boolean;
67
+ /**
68
+ * if tile view enabled (default true)
69
+ */
70
+ allowView?: boolean;
71
+ /**
72
+ * Show toolbar (default true)
73
+ */
74
+ showToolbar?: boolean;
75
+ /**
76
+ * Limit file browser to one specific objectID of type meta and following path (like vis.0/main)
77
+ */
78
+ limitPath?: any[];
79
+ /**
80
+ * like `['png', 'svg', 'bmp', 'jpg', 'jpeg']`
81
+ */
82
+ filterFiles?: any[];
83
+ /**
84
+ * images, code, txt, audio, video
85
+ */
86
+ filterByType?: string;
87
+ /**
88
+ * allow only folder's selection *
89
+ */
90
+ selectOnlyFolders?: bool;
51
91
  /**
52
92
  * Close handler that is always called when the dialog is closed.
53
93
  */
54
94
  onClose: () => void;
55
95
  /**
56
- * Handler that is called when the user presses OK.
96
+ * Handler that is called when the user presses OK or by double click.
57
97
  */
58
- onOk: (selected: string | string[] | undefined, name: string) => void;
98
+ onOk: (selected: string | string[] | undefined) => void;
59
99
  /**
60
100
  * The styling class names.
61
101
  */
@@ -68,9 +108,8 @@ export type DialogSelectIDProps = {
68
108
  /** @type {typeof DialogSelectFile} */
69
109
  declare const _export: typeof DialogSelectFile;
70
110
  /**
71
- * @typedef {object} DialogSelectIDProps
72
- * @property {string} [dialogName] The internal name of the dialog; default: "default"
73
- * @property {string} [title] The dialog title; default: Please select object ID... (translated)
111
+ * @typedef {object} DialogSelectFileProps
112
+ * @property {boolean} [dialogName] PropTypes.string, // where to store settings in localStorage * @property {string} [title] The dialog title; default: Please select object ID... (translated)
74
113
  * @property {boolean} [multiSelect] Set to true to allow the selection of multiple IDs.
75
114
  * @property {string} [imagePrefix] Prefix (default: '.')
76
115
  * @property {boolean} [showExpertButton] Show the expert button?
@@ -81,21 +120,32 @@ declare const _export: typeof DialogSelectFile;
81
120
  * @property {string | string[]} [selected] The selected IDs.
82
121
  * @property {string} [ok] The ok button text; default: OK (translated)
83
122
  * @property {string} [cancel] The cancel button text; default: Cancel (translated)
84
- * @property {() => void} onClose Close handler that is always called when the dialog is closed.
85
- * @property {(selected: string | string[] | undefined, name: string) => void} onOk Handler that is called when the user presses OK.
123
+ * @property {boolean} [socket] Socket class (required)
124
+ * @property {boolean} [allowUpload] If download of files enabled
125
+ * @property {boolean} [allowDownload] If download of files enabled
126
+ * @property {boolean} [allowCreateFolder] If creation of folders enabled
127
+ * @property {boolean} [allowDelete] If creation of folders enabled
128
+ * @property {boolean} [allowView] if tile view enabled (default true)
129
+ * @property {boolean} [showToolbar] Show toolbar (default true)
130
+ * @property {array} [limitPath] Limit file browser to one specific objectID of type meta and following path (like vis.0/main)
131
+ * @property {array} [filterFiles] like `['png', 'svg', 'bmp', 'jpg', 'jpeg']`
132
+ * @property {string} [filterByType] images, code, txt, audio, video
133
+ * @property {bool} [selectOnlyFolders] allow only folder's selection * @property {() => void} onClose Close handler that is always called when the dialog is closed.
134
+ * @property {(selected: string | string[] | undefined) => void} onOk Handler that is called when the user presses OK or by double click.
86
135
  * @property {{headerID: string; dialog: string; content: string}} [classes] The styling class names.
87
136
  *
88
137
  * @extends {React.Component<DialogSelectIDProps>}
89
138
  */
90
139
  declare class DialogSelectFile extends React.Component<DialogSelectIDProps, any, any> {
91
140
  /**
92
- * @param {DialogSelectIDProps} props
141
+ * @param {DialogSelectFileProps} props
93
142
  */
94
- constructor(props: DialogSelectIDProps);
143
+ constructor(props: DialogSelectFileProps);
95
144
  dialogName: string;
96
145
  filters: any;
97
146
  state: {
98
- selected: string[];
147
+ selected: any;
148
+ isFolder: boolean;
99
149
  };
100
150
  handleCancel(): void;
101
151
  handleOk(): void;
@@ -103,25 +153,29 @@ declare class DialogSelectFile extends React.Component<DialogSelectIDProps, any,
103
153
  }
104
154
  declare namespace DialogSelectFile {
105
155
  namespace propTypes {
156
+ const imagePrefix: PropTypes.Requireable<string>;
106
157
  const dialogName: PropTypes.Requireable<string>;
158
+ const selected: PropTypes.Requireable<NonNullable<string | any[]>>;
107
159
  const classes: PropTypes.Requireable<object>;
160
+ const onClose: PropTypes.Validator<(...args: any[]) => any>;
161
+ const onOk: PropTypes.Validator<(...args: any[]) => any>;
162
+ const ok: PropTypes.Requireable<string>;
163
+ const cancel: PropTypes.Requireable<string>;
164
+ const socket: PropTypes.Validator<object>;
108
165
  const allowUpload: PropTypes.Requireable<boolean>;
109
166
  const allowDownload: PropTypes.Requireable<boolean>;
110
167
  const allowCreateFolder: PropTypes.Requireable<boolean>;
111
168
  const allowDelete: PropTypes.Requireable<boolean>;
112
169
  const allowView: PropTypes.Requireable<boolean>;
113
170
  const showToolbar: PropTypes.Requireable<boolean>;
171
+ const filterFiles: PropTypes.Requireable<string[]>;
114
172
  const filterByType: PropTypes.Requireable<string>;
173
+ const limitPath: PropTypes.Requireable<string>;
174
+ const selectOnlyFolders: PropTypes.Requireable<boolean>;
175
+ const showViewTypeButton: PropTypes.Requireable<boolean>;
115
176
  const showTypeSelector: PropTypes.Requireable<boolean>;
116
- const onClose: PropTypes.Validator<(...args: any[]) => any>;
117
- const onOk: PropTypes.Validator<(...args: any[]) => any>;
118
177
  const title: PropTypes.Requireable<string>;
119
178
  const lang: PropTypes.Requireable<string>;
120
- const selected: PropTypes.Requireable<NonNullable<string | any[]>>;
121
- const socket: PropTypes.Validator<object>;
122
- const cancel: PropTypes.Requireable<string>;
123
- const imagePrefix: PropTypes.Requireable<string>;
124
- const ok: PropTypes.Requireable<string>;
125
179
  const themeName: PropTypes.Requireable<string>;
126
180
  const themeType: PropTypes.Requireable<string>;
127
181
  const showExpertButton: PropTypes.Requireable<boolean>;
@@ -64,9 +64,8 @@ var styles = function styles() {
64
64
  };
65
65
 
66
66
  /**
67
- * @typedef {object} DialogSelectIDProps
68
- * @property {string} [dialogName] The internal name of the dialog; default: "default"
69
- * @property {string} [title] The dialog title; default: Please select object ID... (translated)
67
+ * @typedef {object} DialogSelectFileProps
68
+ * @property {boolean} [dialogName] PropTypes.string, // where to store settings in localStorage * @property {string} [title] The dialog title; default: Please select object ID... (translated)
70
69
  * @property {boolean} [multiSelect] Set to true to allow the selection of multiple IDs.
71
70
  * @property {string} [imagePrefix] Prefix (default: '.')
72
71
  * @property {boolean} [showExpertButton] Show the expert button?
@@ -77,8 +76,18 @@ var styles = function styles() {
77
76
  * @property {string | string[]} [selected] The selected IDs.
78
77
  * @property {string} [ok] The ok button text; default: OK (translated)
79
78
  * @property {string} [cancel] The cancel button text; default: Cancel (translated)
80
- * @property {() => void} onClose Close handler that is always called when the dialog is closed.
81
- * @property {(selected: string | string[] | undefined, name: string) => void} onOk Handler that is called when the user presses OK.
79
+ * @property {boolean} [socket] Socket class (required)
80
+ * @property {boolean} [allowUpload] If download of files enabled
81
+ * @property {boolean} [allowDownload] If download of files enabled
82
+ * @property {boolean} [allowCreateFolder] If creation of folders enabled
83
+ * @property {boolean} [allowDelete] If creation of folders enabled
84
+ * @property {boolean} [allowView] if tile view enabled (default true)
85
+ * @property {boolean} [showToolbar] Show toolbar (default true)
86
+ * @property {array} [limitPath] Limit file browser to one specific objectID of type meta and following path (like vis.0/main)
87
+ * @property {array} [filterFiles] like `['png', 'svg', 'bmp', 'jpg', 'jpeg']`
88
+ * @property {string} [filterByType] images, code, txt, audio, video
89
+ * @property {bool} [selectOnlyFolders] allow only folder's selection * @property {() => void} onClose Close handler that is always called when the dialog is closed.
90
+ * @property {(selected: string | string[] | undefined) => void} onOk Handler that is called when the user presses OK or by double click.
82
91
  * @property {{headerID: string; dialog: string; content: string}} [classes] The styling class names.
83
92
  *
84
93
  * @extends {React.Component<DialogSelectIDProps>}
@@ -87,7 +96,7 @@ var DialogSelectFile = /*#__PURE__*/function (_React$Component) {
87
96
  (0, _inherits2["default"])(DialogSelectFile, _React$Component);
88
97
  var _super = _createSuper(DialogSelectFile);
89
98
  /**
90
- * @param {DialogSelectIDProps} props
99
+ * @param {DialogSelectFileProps} props
91
100
  */
92
101
  function DialogSelectFile(props) {
93
102
  var _this;
@@ -114,7 +123,8 @@ var DialogSelectFile = /*#__PURE__*/function (_React$Component) {
114
123
  return id;
115
124
  });
116
125
  _this.state = {
117
- selected: selected
126
+ selected: selected,
127
+ isFolder: false
118
128
  };
119
129
  return _this;
120
130
  }
@@ -171,16 +181,27 @@ var DialogSelectFile = /*#__PURE__*/function (_React$Component) {
171
181
  className: _Utils["default"].clsx(this.props.classes.content, this.props.classes.contentMobile)
172
182
  }, /*#__PURE__*/_react["default"].createElement(_FileBrowser["default"], {
173
183
  ready: true,
174
- allowUpload: this.props.allowUpload,
175
- allowDownload: this.props.allowDownload,
176
- allowCreateFolder: this.props.allowCreateFolder,
177
- allowDelete: this.props.allowDelete,
178
- allowView: this.props.allowView,
179
- showToolbar: this.props.showToolbar,
180
184
  imagePrefix: this.props.imagePrefix || this.props.prefix || '../' // prefix is for back compatibility
181
185
  ,
182
- selected: this.props.selected,
186
+ allowUpload: !!this.props.allowUpload,
187
+ allowDownload: this.props.allowDownload !== false,
188
+ allowCreateFolder: !!this.props.allowCreateFolder,
189
+ allowDelete: !!this.props.allowDelete,
190
+ allowView: this.props.allowView !== false,
191
+ showViewTypeButton: this.props.showViewTypeButton !== false,
192
+ showToolbar: this.props.showToolbar !== false,
193
+ limitPath: this.props.limitPath,
194
+ filterFiles: this.props.filterFiles,
183
195
  filterByType: this.props.filterByType,
196
+ selected: this.props.selected,
197
+ onSelect: function onSelect(selected, isDoubleClick, isFolder) {
198
+ _this2.setState({
199
+ selected: selected,
200
+ isFolder: isFolder
201
+ }, function () {
202
+ return isDoubleClick && (!_this2.props.selectOnlyFolders || isFolder) && _this2.handleOk();
203
+ });
204
+ },
184
205
  t: this.props.t || _i18n["default"].t,
185
206
  lang: this.props.lang || _i18n["default"].getLanguage(),
186
207
  socket: this.props.socket,
@@ -188,18 +209,7 @@ var DialogSelectFile = /*#__PURE__*/function (_React$Component) {
188
209
  themeName: this.props.themeName,
189
210
  showExpertButton: this.props.showExpertButton,
190
211
  expertMode: this.props.expertMode,
191
- showTypeSelector: this.props.showTypeSelector,
192
- onSelect: function onSelect(selected, isDouble) {
193
- if (JSON.stringify(selected) !== JSON.stringify(_this2.state.selected)) {
194
- _this2.setState({
195
- selected: selected
196
- }, function () {
197
- return isDouble && _this2.handleOk();
198
- });
199
- } else if (isDouble) {
200
- _this2.handleOk();
201
- }
202
- }
212
+ showTypeSelector: this.props.showTypeSelector
203
213
  })), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
204
214
  variant: "contained",
205
215
  onClick: function onClick() {
@@ -221,31 +231,37 @@ var DialogSelectFile = /*#__PURE__*/function (_React$Component) {
221
231
  return DialogSelectFile;
222
232
  }(_react["default"].Component);
223
233
  DialogSelectFile.propTypes = {
234
+ imagePrefix: _propTypes["default"].string,
224
235
  dialogName: _propTypes["default"].string,
225
236
  // where to store settings in localStorage
237
+ selected: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].array // not implemented
238
+ ]),
226
239
  classes: _propTypes["default"].object,
240
+ onClose: _propTypes["default"].func.isRequired,
241
+ onOk: _propTypes["default"].func.isRequired,
242
+ ok: _propTypes["default"].string,
243
+ cancel: _propTypes["default"].string,
244
+ socket: _propTypes["default"].object.isRequired,
227
245
  allowUpload: _propTypes["default"].bool,
228
246
  allowDownload: _propTypes["default"].bool,
229
247
  allowCreateFolder: _propTypes["default"].bool,
230
248
  allowDelete: _propTypes["default"].bool,
231
249
  allowView: _propTypes["default"].bool,
250
+ // allow view of files
232
251
  showToolbar: _propTypes["default"].bool,
252
+ filterFiles: _propTypes["default"].arrayOf(_propTypes["default"].string),
253
+ // array of extensions ['jpg', 'png]
233
254
  filterByType: _propTypes["default"].string,
234
255
  // e.g. images
256
+ limitPath: _propTypes["default"].string,
257
+ selectOnlyFolders: _propTypes["default"].bool,
258
+ showViewTypeButton: _propTypes["default"].bool,
259
+ // Allow switch views Table<=>Rows
235
260
  showTypeSelector: _propTypes["default"].bool,
236
261
  // If type selector should be shown
237
262
 
238
- onClose: _propTypes["default"].func.isRequired,
239
- onOk: _propTypes["default"].func.isRequired,
240
263
  title: _propTypes["default"].string,
241
264
  lang: _propTypes["default"].string,
242
- selected: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].array // not implemented
243
- ]),
244
-
245
- socket: _propTypes["default"].object.isRequired,
246
- cancel: _propTypes["default"].string,
247
- imagePrefix: _propTypes["default"].string,
248
- ok: _propTypes["default"].string,
249
265
  themeName: _propTypes["default"].string,
250
266
  themeType: _propTypes["default"].string,
251
267
  showExpertButton: _propTypes["default"].bool,
@@ -1 +1 @@
1
- {"version":3,"file":"SelectFile.js","names":["styles","headerID","fontWeight","fontStyle","dialog","height","dialogMobile","padding","width","maxWidth","maxHeight","content","overflow","contentMobile","titleRoot","whiteSpace","display","textOverflow","DialogSelectFile","props","dialogName","filters","window","_localStorage","localStorage","getItem","JSON","parse","e","selected","filter","id","state","onClose","onOk","multiSelect","Array","isArray","title","length","I18n","t","classes","paper","Utils","clsx","root","allowUpload","allowDownload","allowCreateFolder","allowDelete","allowView","showToolbar","imagePrefix","prefix","filterByType","lang","getLanguage","socket","themeType","themeName","showExpertButton","expertMode","showTypeSelector","isDouble","stringify","setState","handleOk","ok","handleCancel","cancel","React","Component","propTypes","PropTypes","string","object","bool","func","isRequired","oneOfType","array","_export","withStyles"],"sources":["SelectFile.jsx"],"sourcesContent":["/*\n * Copyright 2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n */\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\n\nimport IconCancel from '@mui/icons-material/Cancel';\nimport IconOk from '@mui/icons-material/Check';\n\nimport Utils from '../Components/Utils';\nimport I18n from '../i18n';\nimport FileBrowser from '../Components/FileBrowser';\n\nconst styles = () => ({\n headerID: {\n fontWeight: 'bold',\n fontStyle: 'italic',\n },\n dialog: {\n height: '95%',\n },\n dialogMobile: {\n padding: 4,\n width: '100%',\n maxWidth: '100%',\n maxHeight: 'calc(100% - 16px)',\n height: '100%',\n },\n content: {\n height: '100%',\n overflow: 'hidden',\n },\n contentMobile: {\n padding: '8px 4px',\n },\n titleRoot: {\n whiteSpace: 'nowrap',\n width: 'calc(100% - 72px)',\n overflow: 'hidden',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n },\n});\n\n/**\n * @typedef {object} DialogSelectIDProps\n * @property {string} [dialogName] The internal name of the dialog; default: \"default\"\n * @property {string} [title] The dialog title; default: Please select object ID... (translated)\n * @property {boolean} [multiSelect] Set to true to allow the selection of multiple IDs.\n * @property {string} [imagePrefix] Prefix (default: '.')\n * @property {boolean} [showExpertButton] Show the expert button?\n * @property {ioBroker.Languages} [lang] The language.\n * @property {import('../Connection').default} socket The socket connection.\n * @property {string} [themeName] Theme name.\n * @property {string} [themeType] Theme type.\n * @property {string | string[]} [selected] The selected IDs.\n * @property {string} [ok] The ok button text; default: OK (translated)\n * @property {string} [cancel] The cancel button text; default: Cancel (translated)\n * @property {() => void} onClose Close handler that is always called when the dialog is closed.\n * @property {(selected: string | string[] | undefined, name: string) => void} onOk Handler that is called when the user presses OK.\n * @property {{headerID: string; dialog: string; content: string}} [classes] The styling class names.\n *\n * @extends {React.Component<DialogSelectIDProps>}\n */\nclass DialogSelectFile extends React.Component {\n /**\n * @param {DialogSelectIDProps} props\n */\n constructor(props) {\n super(props);\n this.dialogName = this.props.dialogName || 'default';\n this.dialogName = `SelectFile.${this.dialogName}`;\n\n this.filters = (window._localStorage || window.localStorage).getItem(this.dialogName) || '{}';\n\n try {\n this.filters = JSON.parse(this.filters);\n } catch (e) {\n this.filters = {};\n }\n\n if (props.filters) {\n this.filters = { ...this.filters, ...props.filters };\n }\n\n let selected = this.props.selected || [];\n if (typeof selected !== 'object') {\n selected = [selected];\n } else {\n selected = [...selected];\n }\n selected = selected.filter(id => id);\n\n this.state = {\n selected,\n };\n }\n\n handleCancel() {\n this.props.onClose();\n }\n\n handleOk() {\n this.props.onOk(this.props.multiSelect || !Array.isArray(this.state.selected) ? this.state.selected : this.state.selected[0] || '');\n this.props.onClose();\n }\n\n render() {\n let title;\n if (this.state.selected.length) {\n if (!Array.isArray(this.state.selected) || this.state.selected.length === 1) {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span key=\"id\" className={this.props.classes.headerID}>\n {this.state.selected}\n </span>,\n ];\n } else {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span key=\"id\" className={this.props.classes.headerID}>\n {I18n.t('%s items', this.state.selected.length)}\n </span>,\n ];\n }\n } else {\n title = this.props.title || I18n.t('ra_Please select file...');\n }\n\n return <Dialog\n onClose={() => {}}\n maxWidth={false}\n classes={{ paper: Utils.clsx(this.props.classes.dialog, this.props.classes.dialogMobile) }}\n fullWidth\n open={!0}\n aria-labelledby=\"selectfile-dialog-title\"\n >\n <DialogTitle id=\"selectfile-dialog-title\" classes={{ root: this.props.classes.titleRoot }}>{title}</DialogTitle>\n <DialogContent className={Utils.clsx(this.props.classes.content, this.props.classes.contentMobile)}>\n <FileBrowser\n ready\n allowUpload={this.props.allowUpload}\n allowDownload={this.props.allowDownload}\n allowCreateFolder={this.props.allowCreateFolder}\n allowDelete={this.props.allowDelete}\n allowView={this.props.allowView}\n showToolbar={this.props.showToolbar}\n imagePrefix={this.props.imagePrefix || this.props.prefix || '../'} // prefix is for back compatibility\n selected={this.props.selected}\n filterByType={this.props.filterByType}\n t={this.props.t || I18n.t}\n lang={this.props.lang || I18n.getLanguage()}\n socket={this.props.socket}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n showExpertButton={this.props.showExpertButton}\n expertMode={this.props.expertMode}\n showTypeSelector={this.props.showTypeSelector}\n onSelect={(selected, isDouble) => {\n if (JSON.stringify(selected) !== JSON.stringify(this.state.selected)) {\n this.setState({ selected }, () =>\n isDouble && this.handleOk());\n } else if (isDouble) {\n this.handleOk();\n }\n }}\n />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => this.handleOk()} startIcon={<IconOk />} disabled={!this.state.selected.length} color=\"primary\">{this.props.ok || I18n.t('ra_Ok')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.handleCancel()} startIcon={<IconCancel />}>{this.props.cancel || I18n.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogSelectFile.propTypes = {\n dialogName: PropTypes.string, // where to store settings in localStorage\n classes: PropTypes.object,\n allowUpload: PropTypes.bool,\n allowDownload: PropTypes.bool,\n allowCreateFolder: PropTypes.bool,\n allowDelete: PropTypes.bool,\n allowView: PropTypes.bool,\n showToolbar: PropTypes.bool,\n filterByType: PropTypes.string, // e.g. images\n showTypeSelector: PropTypes.bool, // If type selector should be shown\n\n onClose: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n title: PropTypes.string,\n lang: PropTypes.string,\n selected: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.array, // not implemented\n ]),\n socket: PropTypes.object.isRequired,\n cancel: PropTypes.string,\n imagePrefix: PropTypes.string,\n ok: PropTypes.string,\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n showExpertButton: PropTypes.bool,\n expertMode: PropTypes.bool, // force expert mode\n multiSelect: PropTypes.bool, // not implemented\n};\n\n/** @type {typeof DialogSelectFile} */\nconst _export = withStyles(styles)(DialogSelectFile);\nexport default _export;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectFile.js","names":["styles","headerID","fontWeight","fontStyle","dialog","height","dialogMobile","padding","width","maxWidth","maxHeight","content","overflow","contentMobile","titleRoot","whiteSpace","display","textOverflow","DialogSelectFile","props","dialogName","filters","window","_localStorage","localStorage","getItem","JSON","parse","e","selected","filter","id","state","isFolder","onClose","onOk","multiSelect","Array","isArray","title","length","I18n","t","classes","paper","Utils","clsx","root","imagePrefix","prefix","allowUpload","allowDownload","allowCreateFolder","allowDelete","allowView","showViewTypeButton","showToolbar","limitPath","filterFiles","filterByType","isDoubleClick","setState","selectOnlyFolders","handleOk","lang","getLanguage","socket","themeType","themeName","showExpertButton","expertMode","showTypeSelector","ok","handleCancel","cancel","React","Component","propTypes","PropTypes","string","oneOfType","array","object","func","isRequired","bool","arrayOf","_export","withStyles"],"sources":["SelectFile.jsx"],"sourcesContent":["/*\n * Copyright 2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n */\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\n\nimport IconCancel from '@mui/icons-material/Cancel';\nimport IconOk from '@mui/icons-material/Check';\n\nimport Utils from '../Components/Utils';\nimport I18n from '../i18n';\nimport FileBrowser from '../Components/FileBrowser';\n\nconst styles = () => ({\n headerID: {\n fontWeight: 'bold',\n fontStyle: 'italic',\n },\n dialog: {\n height: '95%',\n },\n dialogMobile: {\n padding: 4,\n width: '100%',\n maxWidth: '100%',\n maxHeight: 'calc(100% - 16px)',\n height: '100%',\n },\n content: {\n height: '100%',\n overflow: 'hidden',\n },\n contentMobile: {\n padding: '8px 4px',\n },\n titleRoot: {\n whiteSpace: 'nowrap',\n width: 'calc(100% - 72px)',\n overflow: 'hidden',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n },\n});\n\n/**\n * @typedef {object} DialogSelectFileProps\n * @property {boolean} [dialogName] PropTypes.string, // where to store settings in localStorage * @property {string} [title] The dialog title; default: Please select object ID... (translated)\n * @property {boolean} [multiSelect] Set to true to allow the selection of multiple IDs.\n * @property {string} [imagePrefix] Prefix (default: '.')\n * @property {boolean} [showExpertButton] Show the expert button?\n * @property {ioBroker.Languages} [lang] The language.\n * @property {import('../Connection').default} socket The socket connection.\n * @property {string} [themeName] Theme name.\n * @property {string} [themeType] Theme type.\n * @property {string | string[]} [selected] The selected IDs.\n * @property {string} [ok] The ok button text; default: OK (translated)\n * @property {string} [cancel] The cancel button text; default: Cancel (translated)\n * @property {boolean} [socket] Socket class (required)\n * @property {boolean} [allowUpload] If download of files enabled\n * @property {boolean} [allowDownload] If download of files enabled\n * @property {boolean} [allowCreateFolder] If creation of folders enabled\n * @property {boolean} [allowDelete] If creation of folders enabled\n * @property {boolean} [allowView] if tile view enabled (default true)\n * @property {boolean} [showToolbar] Show toolbar (default true)\n * @property {array} [limitPath] Limit file browser to one specific objectID of type meta and following path (like vis.0/main)\n * @property {array} [filterFiles] like `['png', 'svg', 'bmp', 'jpg', 'jpeg']`\n * @property {string} [filterByType] images, code, txt, audio, video\n * @property {bool} [selectOnlyFolders] allow only folder's selection * @property {() => void} onClose Close handler that is always called when the dialog is closed.\n * @property {(selected: string | string[] | undefined) => void} onOk Handler that is called when the user presses OK or by double click.\n * @property {{headerID: string; dialog: string; content: string}} [classes] The styling class names.\n *\n * @extends {React.Component<DialogSelectIDProps>}\n */\nclass DialogSelectFile extends React.Component {\n /**\n * @param {DialogSelectFileProps} props\n */\n constructor(props) {\n super(props);\n this.dialogName = this.props.dialogName || 'default';\n this.dialogName = `SelectFile.${this.dialogName}`;\n\n this.filters = (window._localStorage || window.localStorage).getItem(this.dialogName) || '{}';\n\n try {\n this.filters = JSON.parse(this.filters);\n } catch (e) {\n this.filters = {};\n }\n\n if (props.filters) {\n this.filters = { ...this.filters, ...props.filters };\n }\n\n let selected = this.props.selected || [];\n if (typeof selected !== 'object') {\n selected = [selected];\n } else {\n selected = [...selected];\n }\n selected = selected.filter(id => id);\n\n this.state = {\n selected,\n isFolder: false,\n };\n }\n\n handleCancel() {\n this.props.onClose();\n }\n\n handleOk() {\n this.props.onOk(this.props.multiSelect || !Array.isArray(this.state.selected) ? this.state.selected : this.state.selected[0] || '');\n this.props.onClose();\n }\n\n render() {\n let title;\n if (this.state.selected.length) {\n if (!Array.isArray(this.state.selected) || this.state.selected.length === 1) {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span key=\"id\" className={this.props.classes.headerID}>\n {this.state.selected}\n </span>,\n ];\n } else {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span key=\"id\" className={this.props.classes.headerID}>\n {I18n.t('%s items', this.state.selected.length)}\n </span>,\n ];\n }\n } else {\n title = this.props.title || I18n.t('ra_Please select file...');\n }\n\n return <Dialog\n onClose={() => {}}\n maxWidth={false}\n classes={{ paper: Utils.clsx(this.props.classes.dialog, this.props.classes.dialogMobile) }}\n fullWidth\n open={!0}\n aria-labelledby=\"selectfile-dialog-title\"\n >\n <DialogTitle id=\"selectfile-dialog-title\" classes={{ root: this.props.classes.titleRoot }}>{title}</DialogTitle>\n <DialogContent className={Utils.clsx(this.props.classes.content, this.props.classes.contentMobile)}>\n <FileBrowser\n ready\n imagePrefix={this.props.imagePrefix || this.props.prefix || '../'} // prefix is for back compatibility\n allowUpload={!!this.props.allowUpload}\n allowDownload={this.props.allowDownload !== false}\n allowCreateFolder={!!this.props.allowCreateFolder}\n allowDelete={!!this.props.allowDelete}\n allowView={this.props.allowView !== false}\n showViewTypeButton={this.props.showViewTypeButton !== false}\n showToolbar={this.props.showToolbar !== false}\n limitPath={this.props.limitPath}\n filterFiles={this.props.filterFiles}\n filterByType={this.props.filterByType}\n selected={this.props.selected}\n onSelect={(selected, isDoubleClick, isFolder) => {\n this.setState({ selected, isFolder }, () =>\n isDoubleClick && (!this.props.selectOnlyFolders || isFolder) && this.handleOk());\n }}\n t={this.props.t || I18n.t}\n lang={this.props.lang || I18n.getLanguage()}\n socket={this.props.socket}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n showExpertButton={this.props.showExpertButton}\n expertMode={this.props.expertMode}\n showTypeSelector={this.props.showTypeSelector}\n />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => this.handleOk()} startIcon={<IconOk />} disabled={!this.state.selected.length} color=\"primary\">{this.props.ok || I18n.t('ra_Ok')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.handleCancel()} startIcon={<IconCancel />}>{this.props.cancel || I18n.t('ra_Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogSelectFile.propTypes = {\n imagePrefix: PropTypes.string,\n dialogName: PropTypes.string, // where to store settings in localStorage\n selected: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.array, // not implemented\n ]), classes: PropTypes.object,\n onClose: PropTypes.func.isRequired,\n onOk: PropTypes.func.isRequired,\n ok: PropTypes.string,\n cancel: PropTypes.string,\n socket: PropTypes.object.isRequired,\n allowUpload: PropTypes.bool,\n allowDownload: PropTypes.bool,\n allowCreateFolder: PropTypes.bool,\n allowDelete: PropTypes.bool,\n allowView: PropTypes.bool, // allow view of files\n showToolbar: PropTypes.bool,\n filterFiles: PropTypes.arrayOf(PropTypes.string), // array of extensions ['jpg', 'png]\n filterByType: PropTypes.string, // e.g. images\n limitPath: PropTypes.string,\n selectOnlyFolders: PropTypes.bool,\n showViewTypeButton: PropTypes.bool, // Allow switch views Table<=>Rows\n showTypeSelector: PropTypes.bool, // If type selector should be shown\n\n title: PropTypes.string,\n lang: PropTypes.string,\n\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n showExpertButton: PropTypes.bool,\n expertMode: PropTypes.bool, // force expert mode\n multiSelect: PropTypes.bool, // not implemented\n};\n\n/** @type {typeof DialogSelectFile} */\nconst _export = withStyles(styles)(DialogSelectFile);\nexport default _export;\n"],"mappings":"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"}
package/README.md CHANGED
@@ -10,7 +10,7 @@ If you want to create the configuration page with react:
10
10
  - Change `name` from `src` to `ADAPTERNAME-admin` (Of course replace `ADAPTERNAME` with yours)
11
11
  - Add to devDependencies:
12
12
  ```
13
- "@iobroker/adapter-react": "^3.4.4",
13
+ "@iobroker/adapter-react": "^3.5.0",
14
14
  ```
15
15
  Versions can be higher.
16
16
  So your src/package.json should look like:
@@ -643,7 +643,7 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
643
643
  -->
644
644
 
645
645
  ## Changelog
646
- ### 3.4.4 (2022-11-30)
646
+ ### 3.5.0 (2022-11-30)
647
647
  * (bluefox) updated json config component
648
648
 
649
649
  ### 3.4.1 (2022-11-29)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/adapter-react-v5",
3
- "version": "3.4.4",
3
+ "version": "3.5.0",
4
4
  "description": "React classes to develop admin interfaces for ioBroker with react.",
5
5
  "author": {
6
6
  "name": "bluefox",
@@ -1,148 +0,0 @@
1
- export default _export;
2
- export type FileSelectDialogProps = {
3
- /**
4
- * The internal name of the dialog; default: "default"
5
- */
6
- dialogName?: string;
7
- /**
8
- * The dialog title; default: Please select object ID... (translated)
9
- */
10
- title?: string;
11
- /**
12
- * Prefix (default: '.')
13
- */
14
- imagePrefix?: string;
15
- /**
16
- * Pre-selected file
17
- */
18
- selected?: boolean;
19
- /**
20
- * Close handler that is always called when the dialog is closed.
21
- */
22
- onClose: () => void;
23
- /**
24
- * Handler that is called when the user presses OK.
25
- */
26
- onOk: (selected: string | undefined) => void;
27
- /**
28
- * The ok button text; default: OK (translated)
29
- */
30
- ok?: string;
31
- /**
32
- * The cancel button text; default: Cancel (translated)
33
- */
34
- cancel?: string;
35
- /**
36
- * Socket class (required)
37
- */
38
- socket?: boolean;
39
- /**
40
- * If download of files enabled
41
- */
42
- allowUpload?: boolean;
43
- /**
44
- * If download of files enabled
45
- */
46
- allowDownload?: boolean;
47
- /**
48
- * If creation of folders enabled
49
- */
50
- allowCreateFolder?: boolean;
51
- /**
52
- * If creation of folders enabled
53
- */
54
- allowDelete?: boolean;
55
- /**
56
- * if tile view enabled (default true)
57
- */
58
- allowView?: boolean;
59
- /**
60
- * Show toolbar (default true)
61
- */
62
- showToolbar?: boolean;
63
- /**
64
- * Limit file browser to one specific objectID of type meta and following path (like vis.0/main)
65
- */
66
- limitPath?: any[];
67
- /**
68
- * like `['png', 'svg', 'bmp', 'jpg', 'jpeg']`
69
- */
70
- filterFiles?: any[];
71
- /**
72
- * images, code, txt, audio, video
73
- */
74
- filterByType?: string;
75
- /**
76
- * allow only folders selection
77
- */
78
- selectOnlyFolders?: bool;
79
- };
80
- /** @type {typeof DialogFileSelect} */
81
- declare const _export: typeof DialogFileSelect;
82
- /**
83
- * @typedef {object} FileSelectDialogProps
84
- * @property {string} [dialogName] The internal name of the dialog; default: "default"
85
- * @property {string} [title] The dialog title; default: Please select object ID... (translated)
86
- * @property {string} [imagePrefix] Prefix (default: '.')
87
- * @property {boolean} [dialogName] PropTypes.string, // where to store settings in localStorage
88
- * @property {boolean} [selected] Pre-selected file
89
- * @property {() => void} onClose Close handler that is always called when the dialog is closed.
90
- * @property {(selected: string | undefined) => void} onOk Handler that is called when the user presses OK.
91
- * @property {string} [ok] The ok button text; default: OK (translated)
92
- * @property {string} [cancel] The cancel button text; default: Cancel (translated)
93
- * @property {boolean} [socket] Socket class (required)
94
- * @property {boolean} [allowUpload] If download of files enabled
95
- * @property {boolean} [allowDownload] If download of files enabled
96
- * @property {boolean} [allowCreateFolder] If creation of folders enabled
97
- * @property {boolean} [allowDelete] If creation of folders enabled
98
- * @property {boolean} [allowView] if tile view enabled (default true)
99
- * @property {boolean} [showToolbar] Show toolbar (default true)
100
- * @property {array} [limitPath] Limit file browser to one specific objectID of type meta and following path (like vis.0/main)
101
- * @property {array} [filterFiles] like `['png', 'svg', 'bmp', 'jpg', 'jpeg']`
102
- * @property {string} [filterByType] images, code, txt, audio, video
103
- * @property {bool} [selectOnlyFolders] allow only folders selection
104
- *
105
- * @extends {React.Component<FileSelectDialogProps>}
106
- */
107
- declare class DialogFileSelect extends React.Component<FileSelectDialogProps, any, any> {
108
- /**
109
- * @param {FileSelectDialogProps} props
110
- */
111
- constructor(props: FileSelectDialogProps);
112
- dialogName: string;
113
- filters: any;
114
- state: {
115
- selected: string | true;
116
- isFolder: boolean;
117
- name: string;
118
- isMobile: boolean;
119
- };
120
- handleCancel(): void;
121
- handleOk(): void;
122
- render(): JSX.Element;
123
- }
124
- declare namespace DialogFileSelect {
125
- namespace propTypes {
126
- const imagePrefix: PropTypes.Requireable<string>;
127
- const dialogName: PropTypes.Requireable<string>;
128
- const selected: PropTypes.Requireable<string>;
129
- const onClose: PropTypes.Validator<(...args: any[]) => any>;
130
- const onOk: PropTypes.Validator<(...args: any[]) => any>;
131
- const ok: PropTypes.Requireable<string>;
132
- const cancel: PropTypes.Requireable<string>;
133
- const socket: PropTypes.Validator<object>;
134
- const allowUpload: PropTypes.Requireable<boolean>;
135
- const allowDownload: PropTypes.Requireable<boolean>;
136
- const allowCreateFolder: PropTypes.Requireable<boolean>;
137
- const allowDelete: PropTypes.Requireable<boolean>;
138
- const allowView: PropTypes.Requireable<boolean>;
139
- const showToolbar: PropTypes.Requireable<boolean>;
140
- const objectID: PropTypes.Requireable<string>;
141
- const filterFiles: PropTypes.Requireable<string[]>;
142
- const filterByType: PropTypes.Requireable<string>;
143
- const limitPath: PropTypes.Requireable<string>;
144
- const selectOnlyFolders: PropTypes.Requireable<boolean>;
145
- }
146
- }
147
- import React from "react";
148
- import PropTypes from "prop-types";