poe-svelte-ui-lib 1.22.1 → 1.22.2

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,6 +19,7 @@
19
19
  componentClass = "",
20
20
  label = { name: "Информация об устройстве" },
21
21
  value = $bindable(),
22
+ collapsed: initialCollapsed = false,
22
23
  persistKey,
23
24
  onSave = () => {},
24
25
  onRestart = () => {},
@@ -41,7 +42,7 @@
41
42
 
42
43
  /* Сворачивание тела виджета по клику на значок/заголовок (как аккордеон), но в отличие от
43
44
  Accordion переживает перезагрузку страницы через localStorage, если передан persistKey */
44
- let collapsed = $state(readPersistedCollapsed(persistKey))
45
+ let collapsed = $state(readPersistedCollapsed(persistKey, initialCollapsed))
45
46
  $effect(() => writePersistedCollapsed(persistKey, collapsed))
46
47
 
47
48
  /* Поля редактируются локально (как Argument: NoSend в реальной GUI) — отправка одним пакетом по кнопке */
@@ -22,5 +22,11 @@
22
22
  value={component.properties.componentClass ?? ""}
23
23
  onUpdate={(value) => updateProperty("componentClass", value, component, onPropertyChange)}
24
24
  />
25
+ <UI.Switch
26
+ label={{ name: "Свёрнут по умолчанию" }}
27
+ value={component.properties.collapsed ? 1 : 0}
28
+ options={[{ id: crypto.randomUUID(), value: 0, class: "" }]}
29
+ onChange={(value) => updateProperty("collapsed", value === 1, component, onPropertyChange)}
30
+ />
25
31
  </div>
26
32
  </div>
@@ -24,6 +24,7 @@
24
24
  value = $bindable(),
25
25
  allowedModes = [1, 2, 3],
26
26
  confirmOnAP = true,
27
+ collapsed: initialCollapsed = false,
27
28
  persistKey,
28
29
  onScan,
29
30
  onSave = () => {},
@@ -90,7 +91,7 @@
90
91
  в шапке кликом не триггерит, только сама кнопка значок+заголовок (см. WidgetHeader.svelte).
91
92
  В отличие от Accordion (только начальное значение из GUI) — переживает перезагрузку страницы
92
93
  через localStorage, если передан persistKey. */
93
- let collapsed = $state(readPersistedCollapsed(persistKey))
94
+ let collapsed = $state(readPersistedCollapsed(persistKey, initialCollapsed))
94
95
  $effect(() => writePersistedCollapsed(persistKey, collapsed))
95
96
 
96
97
  /* Поля редактируются локально (как Argument: NoSend в реальной GUI) — отправка одним пакетом по кнопке */
@@ -55,6 +55,15 @@
55
55
  />
56
56
  {/snippet}
57
57
 
58
+ {#snippet WidgetCollapsed()}
59
+ <UI.Switch
60
+ label={{ name: "Свёрнут по умолчанию" }}
61
+ value={component.properties.collapsed ? 1 : 0}
62
+ options={[{ id: crypto.randomUUID(), value: 0, class: "" }]}
63
+ onChange={(value) => updateProperty("collapsed", value === 1, component, onPropertyChange)}
64
+ />
65
+ {/snippet}
66
+
58
67
  <div class="flex w-full flex-col gap-3">
59
68
  <div class="grid grid-cols-1 gap-3 sm:grid-cols-2">
60
69
  {@render WidgetLabel()}
@@ -62,4 +71,5 @@
62
71
  </div>
63
72
  {@render WidgetAllowedModes()}
64
73
  {@render WidgetColor()}
74
+ {@render WidgetCollapsed()}
65
75
  </div>
package/dist/types.d.ts CHANGED
@@ -516,6 +516,7 @@ export interface IWidgetWiFiProps {
516
516
  value?: IWidgetWiFiConfig;
517
517
  allowedModes?: number[];
518
518
  confirmOnAP?: boolean;
519
+ collapsed?: boolean;
519
520
  persistKey?: string;
520
521
  onScan?: () => Promise<{
521
522
  id: string;
@@ -542,6 +543,7 @@ export interface IWidgetDeviceInfoProps {
542
543
  name?: string;
543
544
  };
544
545
  value?: IWidgetDeviceInfoConfig;
546
+ collapsed?: boolean;
545
547
  persistKey?: string;
546
548
  onSave?: (info: IWidgetDeviceInfoConfig) => void;
547
549
  onRestart?: () => void;
@@ -1,2 +1,2 @@
1
- export declare const readPersistedCollapsed: (persistKey?: string) => boolean;
1
+ export declare const readPersistedCollapsed: (persistKey: string | undefined, defaultValue?: boolean) => boolean;
2
2
  export declare const writePersistedCollapsed: (persistKey: string | undefined, collapsed: boolean) => void;
@@ -3,14 +3,15 @@
3
3
  без переживания перезагрузки; виджеты сделаны надёжнее). typeof window-проверка вместо
4
4
  $app/environment — библиотека не должна знать про SvelteKit. */
5
5
  const STORAGE_PREFIX = "widget-collapsed:";
6
- export const readPersistedCollapsed = (persistKey) => {
6
+ export const readPersistedCollapsed = (persistKey, defaultValue = false) => {
7
7
  if (!persistKey || typeof window === "undefined")
8
- return false;
8
+ return defaultValue;
9
9
  try {
10
- return window.localStorage.getItem(STORAGE_PREFIX + persistKey) === "1";
10
+ const saved = window.localStorage.getItem(STORAGE_PREFIX + persistKey);
11
+ return saved === null ? defaultValue : saved === "1";
11
12
  }
12
13
  catch {
13
- return false;
14
+ return defaultValue;
14
15
  }
15
16
  };
16
17
  export const writePersistedCollapsed = (persistKey, collapsed) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-svelte-ui-lib",
3
- "version": "1.22.1",
3
+ "version": "1.22.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {