poe-svelte-ui-lib 1.23.0 → 1.23.1

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.
@@ -19,7 +19,7 @@
19
19
  componentClass = "",
20
20
  label = { name: "Информация об устройстве" },
21
21
  value = $bindable(),
22
- collapsed: initialCollapsed = false,
22
+ collapsed = $bindable(false),
23
23
  persistKey,
24
24
  onSave = () => {},
25
25
  onRestart = () => {},
@@ -40,9 +40,18 @@
40
40
  },
41
41
  )
42
42
 
43
- /* Сворачивание тела виджета по клику на значок/заголовок (как аккордеон), но в отличие от
44
- Accordion переживает перезагрузку страницы через localStorage, если передан persistKey */
45
- let collapsed = $state(readPersistedCollapsed(persistKey, initialCollapsed))
43
+ /* Сворачивание тела виджета по клику на значок/заголовок (как аккордеон). collapsed — bindable:
44
+ в конструкторе родитель биндит его на component.properties.collapsed, клик по шапке сразу
45
+ сохраняется в GUI (как isOpen у Accordion в ConstructorUI.svelte). На реальном устройстве
46
+ (GUIPreview) проп передаётся однонаправленно — поверх дефолта только переживает перезагрузку
47
+ через localStorage (persistKey). */
48
+ let hasMergedPersisted = false
49
+ $effect(() => {
50
+ if (hasMergedPersisted) return
51
+ hasMergedPersisted = true
52
+ const persisted = readPersistedCollapsed(persistKey, collapsed)
53
+ if (persisted !== collapsed) collapsed = persisted
54
+ })
46
55
  $effect(() => writePersistedCollapsed(persistKey, collapsed))
47
56
 
48
57
  /* Поля редактируются локально (как Argument: NoSend в реальной GUI) — отправка одним пакетом по кнопке */
@@ -1,4 +1,4 @@
1
1
  import * as UI from "..";
2
- declare const WidgetDeviceInfo: import("svelte").Component<UI.IWidgetDeviceInfoProps, {}, "value">;
2
+ declare const WidgetDeviceInfo: import("svelte").Component<UI.IWidgetDeviceInfoProps, {}, "value" | "collapsed">;
3
3
  type WidgetDeviceInfo = ReturnType<typeof WidgetDeviceInfo>;
4
4
  export default WidgetDeviceInfo;
@@ -13,24 +13,14 @@
13
13
  }>()
14
14
  </script>
15
15
 
16
- <div class="grid grid-cols-1 gap-3 sm:grid-cols-2">
17
- <PropsGroup label={$T("constructor.props.group.general")}>
18
- <UI.Input
19
- label={{ name: "Заголовок" }}
20
- value={component.properties.label?.name}
21
- onUpdate={(value) => updateProperty("label.name", value as string, component, onPropertyChange)}
22
- />
23
- <WidgetAccentPicker
24
- value={component.properties.componentClass ?? ""}
25
- onUpdate={(value) => updateProperty("componentClass", value, component, onPropertyChange)}
26
- />
27
- </PropsGroup>
28
- <PropsGroup label={$T("constructor.props.group.behavior")}>
29
- <UI.Switch
30
- label={{ name: "Свёрнут по умолчанию" }}
31
- value={component.properties.collapsed ? 1 : 0}
32
- options={[{ id: crypto.randomUUID(), value: 0, class: "" }]}
33
- onChange={(value) => updateProperty("collapsed", value === 1, component, onPropertyChange)}
34
- />
35
- </PropsGroup>
36
- </div>
16
+ <PropsGroup label={$T("constructor.props.group.general")}>
17
+ <UI.Input
18
+ label={{ name: "Заголовок" }}
19
+ value={component.properties.label?.name}
20
+ onUpdate={(value) => updateProperty("label.name", value as string, component, onPropertyChange)}
21
+ />
22
+ <WidgetAccentPicker
23
+ value={component.properties.componentClass ?? ""}
24
+ onUpdate={(value) => updateProperty("componentClass", value, component, onPropertyChange)}
25
+ />
26
+ </PropsGroup>
@@ -24,7 +24,7 @@
24
24
  value = $bindable(),
25
25
  allowedModes = [1, 2, 3],
26
26
  confirmOnAP = true,
27
- collapsed: initialCollapsed = false,
27
+ collapsed = $bindable(false),
28
28
  persistKey,
29
29
  onScan,
30
30
  onSave = () => {},
@@ -89,9 +89,17 @@
89
89
 
90
90
  /* Сворачивание тела виджета по клику на значок/заголовок (как аккордеон) — переключатель режима
91
91
  в шапке кликом не триггерит, только сама кнопка значок+заголовок (см. WidgetHeader.svelte).
92
- В отличие от Accordion (только начальное значение из GUI) — переживает перезагрузку страницы
93
- через localStorage, если передан persistKey. */
94
- let collapsed = $state(readPersistedCollapsed(persistKey, initialCollapsed))
92
+ collapsed — bindable: в конструкторе родитель биндит его на component.properties.collapsed,
93
+ клик по шапке сразу сохраняется в GUI (как isOpen у Accordion в ConstructorUI.svelte). На
94
+ реальном устройстве (GUIPreview) проп передаётся однонаправленно — локальные изменения не
95
+ утекают наверх, поверх дефолта только переживают перезагрузку через localStorage (persistKey). */
96
+ let hasMergedPersisted = false
97
+ $effect(() => {
98
+ if (hasMergedPersisted) return
99
+ hasMergedPersisted = true
100
+ const persisted = readPersistedCollapsed(persistKey, collapsed)
101
+ if (persisted !== collapsed) collapsed = persisted
102
+ })
95
103
  $effect(() => writePersistedCollapsed(persistKey, collapsed))
96
104
 
97
105
  /* Поля редактируются локально (как Argument: NoSend в реальной GUI) — отправка одним пакетом по кнопке */
@@ -1,4 +1,4 @@
1
1
  import * as UI from "..";
2
- declare const WidgetWiFi: import("svelte").Component<UI.IWidgetWiFiProps, {}, "value">;
2
+ declare const WidgetWiFi: import("svelte").Component<UI.IWidgetWiFiProps, {}, "value" | "collapsed">;
3
3
  type WidgetWiFi = ReturnType<typeof WidgetWiFi>;
4
4
  export default WidgetWiFi;
@@ -57,15 +57,6 @@
57
57
  />
58
58
  {/snippet}
59
59
 
60
- {#snippet WidgetCollapsed()}
61
- <UI.Switch
62
- label={{ name: "Свёрнут по умолчанию" }}
63
- value={component.properties.collapsed ? 1 : 0}
64
- options={[{ id: crypto.randomUUID(), value: 0, class: "" }]}
65
- onChange={(value) => updateProperty("collapsed", value === 1, component, onPropertyChange)}
66
- />
67
- {/snippet}
68
-
69
60
  <div class="grid grid-cols-1 gap-3 sm:grid-cols-2">
70
61
  <PropsGroup label={$T("constructor.props.group.general")}>
71
62
  {@render WidgetLabel()}
@@ -74,6 +65,5 @@
74
65
  </PropsGroup>
75
66
  <PropsGroup label={$T("constructor.props.group.behavior")}>
76
67
  {@render WidgetConfirmAP()}
77
- {@render WidgetCollapsed()}
78
68
  </PropsGroup>
79
69
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-svelte-ui-lib",
3
- "version": "1.23.0",
3
+ "version": "1.23.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {