@iobroker/gui-components 10.3.3 → 10.3.5

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.
package/README.md CHANGED
@@ -36,7 +36,7 @@ npm create vite@latest src -- --template react-ts
36
36
  "dependencies": {
37
37
  "@emotion/react": "^11.14.0",
38
38
  "@emotion/styled": "^11.14.1",
39
- "@iobroker/gui-components": "^10.3.3",
39
+ "@iobroker/gui-components": "^10.3.5",
40
40
  "@mui/icons-material": "^9.0.1",
41
41
  "@mui/material": "^9.0.1",
42
42
  "react": "^19.2.5",
@@ -877,6 +877,14 @@ You can find the migration instructions:
877
877
  -->
878
878
 
879
879
  ## Changelog
880
+ ### 10.3.5 (2026-09-25)
881
+
882
+ - (@GermanBluefox) Added function `findObjectIcon`
883
+
884
+ ### 10.3.4 (2026-09-23)
885
+
886
+ - (@GermanBluefox) Fixed: the schedule wizard threw the time of day away. A schedule with an exact time was saved as `{"time":{"exactTime":true}}` without the time itself, so it ran at 00:00 and the dialog showed `--:--` and "every day at undefined" when it was opened again (ioBroker.javascript#2386). A saved schedule that lacks a setting now also falls back to the default of that setting instead of `undefined`
887
+
880
888
  ### 10.3.3 (2026-09-23)
881
889
 
882
890
  - (@krobipd) Improved: the object browser renders the rows around the visible area instead of every open row of the tree. Selecting a row, applying a filter or folding a node rebuilt every open row, and that cost grows with the size of the tree: measured with 4003 rows open, one click on a row blocked the main thread for 3.9 seconds and a filter for 2.6 seconds - with 603 rows it was 0.4 seconds each. Now it is 0 ms in both cases, and the table holds 38 rows instead of 4003 (1985 instead of 164652 DOM nodes). Scrolling, scrolling to a row and the keyboard navigation reach every row as before
@@ -3,6 +3,8 @@ import type { IobTheme } from '../types';
3
3
  export interface ScheduleConfigSaved {
4
4
  time?: {
5
5
  exactTime: boolean;
6
+ /** The time of the day as "HH:MM" or the name of an astro event, like "sunrise" */
7
+ start: string;
6
8
  } | {
7
9
  start: string;
8
10
  end: string;
@@ -304,7 +304,13 @@ export class Schedule extends Component {
304
304
  setTimeout(() => this.onChange(this.state.schedule, true), 200);
305
305
  schedule = DEFAULT;
306
306
  }
307
- schedule = { ...DEFAULT, ...schedule };
307
+ // Only the settings of the chosen mode are saved, so everything else comes from the defaults. The parts are
308
+ // merged one by one, as a saved schedule has e.g. only the time of day in `time` and nothing else.
309
+ schedule = {
310
+ time: { ...DEFAULT.time, ...schedule.time },
311
+ period: { ...DEFAULT.period, ...schedule.period },
312
+ valid: { ...DEFAULT.valid, ...schedule.valid },
313
+ };
308
314
  schedule.valid.from ||= Schedule.now2string();
309
315
  this.refFrom = React.createRef();
310
316
  this.refTo = React.createRef();
@@ -381,13 +387,15 @@ export class Schedule extends Component {
381
387
  copy.period.yearMonth = yearMonth;
382
388
  }
383
389
  }
384
- if (copy.time?.exactTime) {
390
+ const _time = copy.time;
391
+ if (_time?.exactTime) {
392
+ // The time of the day belongs to the exact time too, without it the schedule would run at 00:00
385
393
  copy.time = {
386
- exactTime: copy.time?.exactTime,
394
+ exactTime: _time.exactTime,
395
+ start: _time.start,
387
396
  };
388
397
  }
389
398
  else {
390
- const _time = copy.time;
391
399
  copy.time = {
392
400
  start: _time.start,
393
401
  end: _time.end,