@nar-bus/ui-shared 1.21.1 → 1.22.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.
@@ -3,7 +3,26 @@ export type OrderCreateMode = "single" | "bulk";
3
3
  export type OrderCreateTargetEntity = "MODEM" | "METER";
4
4
  export interface BulkOrderSubmitPayload {
5
5
  orderType: OrderType;
6
+ /**
7
+ * RAW form params — every value is a string, structured ones still
8
+ * JSON-encoded. Kept as-is for backward compatibility.
9
+ *
10
+ * PREFER `processRequest` for anything sent to the backend: a param whose value
11
+ * is a JSON-encoded array/object (`ioInterfaces`, `astroRelay`, `directives`, …)
12
+ * must reach the API as a REAL array/object, and this field does not do that.
13
+ */
6
14
  params: Record<string, string>;
15
+ /**
16
+ * Params with JSON-encoded values decoded — the same shape single mode POSTs as
17
+ * `processRequest`.
18
+ *
19
+ * NB-RELAY-PARAM-01: single mode has decoded these since FIX-166, but bulk mode
20
+ * forwarded `params` untouched, so a bulk relay change shipped
21
+ * `ioInterfaces: "[{\"id\":1,...}]"` as a STRING and the backend could not build
22
+ * `List<IoInterfaceInfo>` from it — the same empty-command failure the key fix
23
+ * addresses in single mode. Consumers should send this object.
24
+ */
25
+ processRequest: Record<string, unknown>;
7
26
  priority: OrderPriority;
8
27
  targetModemIds: number[];
9
28
  }
@@ -24,6 +43,27 @@ export interface OrderCreateSheetProps {
24
43
  value: string;
25
44
  label: string;
26
45
  }>;
46
+ /**
47
+ * Options for the relay pickers (`GATEWAY_RELAY_QUERY` / `GATEWAY_RELAY_CHANGE`).
48
+ *
49
+ * - **single mode — omit it.** The forms resolve the list themselves from
50
+ * `/api/modems/{modemId}/relays`.
51
+ * - **bulk mode — REQUIRED.** There are N target modems and no single
52
+ * `modemId`, so the pickers cannot self-resolve: without this prop the relay
53
+ * dropdown is empty and the operator cannot add a single row.
54
+ *
55
+ * `value` MUST be the relay's `relayNo` (physical channel), NOT
56
+ * `RelayAssignment.id` (database row id) — `relayNo` is what becomes
57
+ * `IoInterfaceInfo.id` in the MASS command, so `{ id: 42, relayNo: 1 }` must
58
+ * yield `value: "1"`. Getting this wrong commands the wrong relay.
59
+ *
60
+ * Passing an array (even an empty one) is treated as a deliberate override and
61
+ * suppresses the fetch.
62
+ */
63
+ relayOptions?: Array<{
64
+ value: string;
65
+ label: string;
66
+ }>;
27
67
  /**
28
68
  * Single-mode only — fired once after a submit in which at least one order
29
69
  * was created (never on total failure). `order` is the first successful
@@ -94,5 +134,5 @@ export interface OrderCreateSheetProps {
94
134
  cancel?: string;
95
135
  };
96
136
  }
97
- export declare function OrderCreateSheet({ open, onClose, mode, modemId, modemSlug, meterId, meterSlug, modemOptions, meterOptions, onOrderCreated, bulkTargetModemIds, bulkTargetEntity, onBulkSubmit, bulkCopy, singleSubmitCopy, confirmOnDiscard, discardConfirmCopy, }: OrderCreateSheetProps): import("react").JSX.Element;
137
+ export declare function OrderCreateSheet({ open, onClose, mode, modemId, modemSlug, meterId, meterSlug, modemOptions, meterOptions, relayOptions, onOrderCreated, bulkTargetModemIds, bulkTargetEntity, onBulkSubmit, bulkCopy, singleSubmitCopy, confirmOnDiscard, discardConfirmCopy, }: OrderCreateSheetProps): import("react").JSX.Element;
98
138
  //# sourceMappingURL=OrderCreateSheet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCreateSheet.d.ts","sourceRoot":"","sources":["../../src/components/OrderCreateSheet.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,KAAK,EAAE,SAAS,EAAiB,aAAa,EAC/C,MAAM,UAAU,CAAC;AAiBlB,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gFAAgF;IAChF,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,uEAAuE;IACvE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,8EAA8E;IAC9E,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAuCD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,OAAO,EACP,IAAe,EACf,OAAO,EACP,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAiB,EACjB,YAAiB,EACjB,cAAc,EACd,kBAAuB,EACvB,gBAA0B,EAC1B,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,gBAAuB,EACvB,kBAAkB,GACnB,EAAE,qBAAqB,+BA6TvB"}
1
+ {"version":3,"file":"OrderCreateSheet.d.ts","sourceRoot":"","sources":["../../src/components/OrderCreateSheet.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,KAAK,EAAE,SAAS,EAAiB,aAAa,EAC/C,MAAM,UAAU,CAAC;AAiBlB,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;;;OASG;IACH,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAmBD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gFAAgF;IAChF,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,uEAAuE;IACvE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,8EAA8E;IAC9E,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAwCD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,OAAO,EACP,IAAe,EACf,OAAO,EACP,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAiB,EACjB,YAAiB,EAIjB,YAAY,EACZ,cAAc,EACd,kBAAuB,EACvB,gBAA0B,EAC1B,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,gBAAuB,EACvB,kBAAkB,GACnB,EAAE,qBAAqB,+BA4TvB"}
@@ -41,9 +41,14 @@ export interface FormSheetProps {
41
41
  headerGradient?: FormSheetGradient;
42
42
  /**
43
43
  * Right-panel body surface, forwarded to inner ui-kit `Sheet` (1.5.0+).
44
- * `"glass"` (default) keeps the translucent Glass Veil; `"solid"` renders an
45
- * opaque card body — the package-native replacement for a consumer overriding
46
- * `--sheet-glass-body` in global CSS (GAP-FS-SURFACE). No effect on `side="left"`.
44
+ * `"glass"` (default) is the Glass Veil gradient; `"solid"` is a flat card body —
45
+ * the package-native replacement for a consumer overriding `--sheet-glass-body`
46
+ * in global CSS (GAP-FS-SURFACE). No effect on `side="left"`.
47
+ *
48
+ * OPACITY DEPENDS ON THE INSTALLED ui-kit: `"glass"` is see-through (0.88–0.94
49
+ * alpha) on ui-kit < 1.24.0 and opaque from 1.24.0 (NB-SHEET-OPAQUE-01). This
50
+ * package's peer range still admits the older, translucent versions, so do not
51
+ * assume opacity from this doc alone — check the resolved ui-kit version.
47
52
  */
48
53
  surface?: "glass" | "solid";
49
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"FormSheet.d.ts","sourceRoot":"","sources":["../../../src/components/form-sheet/FormSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACrE;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,WAAW,EACX,IAAc,EACd,SAAS,EACT,OAAmB,EACnB,cAAc,EACd,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,EAAE,cAAc,+BA4ChB"}
1
+ {"version":3,"file":"FormSheet.d.ts","sourceRoot":"","sources":["../../../src/components/form-sheet/FormSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACrE;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,WAAW,EACX,IAAc,EACd,SAAS,EACT,OAAmB,EACnB,cAAc,EACd,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,EAAE,cAAc,+BA4ChB"}
@@ -30,9 +30,14 @@ export interface ReadonlySheetProps {
30
30
  className?: string;
31
31
  /**
32
32
  * Right-panel body surface, forwarded to inner ui-kit `Sheet` (1.5.0+).
33
- * `"glass"` (default) keeps the translucent Glass Veil; `"solid"` renders an
34
- * opaque card body — the package-native replacement for a consumer overriding
35
- * `--sheet-glass-body` in global CSS (GAP-FS-SURFACE). No effect on `side="left"`.
33
+ * `"glass"` (default) is the Glass Veil gradient; `"solid"` is a flat card body —
34
+ * the package-native replacement for a consumer overriding `--sheet-glass-body`
35
+ * in global CSS (GAP-FS-SURFACE). No effect on `side="left"`.
36
+ *
37
+ * OPACITY DEPENDS ON THE INSTALLED ui-kit: `"glass"` is see-through (0.88–0.94
38
+ * alpha) on ui-kit < 1.24.0 and opaque from 1.24.0 (NB-SHEET-OPAQUE-01). This
39
+ * package's peer range still admits the older, translucent versions, so do not
40
+ * assume opacity from this doc alone — check the resolved ui-kit version.
36
41
  */
37
42
  surface?: "glass" | "solid";
38
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ReadonlySheet.d.ts","sourceRoot":"","sources":["../../../src/components/form-sheet/ReadonlySheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAS,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACrE;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,IAAc,EACd,OAAoB,EACpB,cAAc,EACd,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,QAAQ,GACT,EAAE,kBAAkB,+BAuBpB"}
1
+ {"version":3,"file":"ReadonlySheet.d.ts","sourceRoot":"","sources":["../../../src/components/form-sheet/ReadonlySheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAS,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACrE;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,IAAc,EACd,OAAoB,EACpB,cAAc,EACd,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,QAAQ,GACT,EAAE,kBAAkB,+BAuBpB"}
@@ -1,14 +1,42 @@
1
1
  interface FormProps {
2
2
  params: Record<string, string>;
3
3
  onChange: (key: string, value: string) => void;
4
+ /**
5
+ * Relay picker options. OPTIONAL override — when omitted the form fetches the
6
+ * modem's relays itself from `/api/modems/{modemId}/relays` (see
7
+ * `useRelayOptions`). Supply this only to bypass that fetch.
8
+ *
9
+ * `value` MUST be the relay's `relayNo` (the physical channel), NOT
10
+ * `RelayAssignment.id` (the database row id) — `relayNo` is what becomes
11
+ * `IoInterfaceInfo.id` in the MASS command. The two differ: a record
12
+ * `{ id: 42, relayNo: 1 }` must yield `value: "1"`.
13
+ */
4
14
  relayOptions?: Array<{
5
15
  value: string;
6
16
  label: string;
7
17
  }>;
18
+ /** Modem whose relays to offer. Ignored when `relayOptions` is supplied. */
19
+ modemId?: number;
8
20
  }
9
21
  /** RelayQueryForm — select relays to query */
10
- export declare function RelayQueryForm({ params, onChange, relayOptions }: FormProps): import("react").JSX.Element;
11
- /** RelayChangeForm — select relays and set ON/OFF status */
12
- export declare function RelayChangeForm({ params, onChange, relayOptions }: FormProps): import("react").JSX.Element;
22
+ export declare function RelayQueryForm({ params, onChange, relayOptions, modemId }: FormProps): import("react").JSX.Element;
23
+ /** RelayChangeForm — select relays and set ON/OFF status
24
+ *
25
+ * NB-RELAY-PARAM-01 (N+17, LHA-645): this form used to emit
26
+ * `onChange("ioInterfaceChanges", ...)` with `status: "true" | "false"` and a
27
+ * STRING id. MassCommandBuilder reads `ctx.params.get("ioInterfaces")` and
28
+ * converts to `List<IoInterfaceInfo>` (`status` = Integer 1/0), so the key never
29
+ * matched: `get("ioInterfaces")` returned null and the relay command reached the
30
+ * device with an EMPTY ioInterfaces list. Fixed here: key, id type and status type.
31
+ *
32
+ * The JSON.stringify stays. The shared order-forms `FormProps.onChange` contract
33
+ * is string-valued across all 11 forms, and OrderCreateSheet's FIX-166
34
+ * parsedParams loop parses any `[`/`{`-leading param back before the POST — so a
35
+ * REAL array goes on the wire, exactly as it already does for astroRelay
36
+ * (pinned by OrderCreateSheet.astro-wire.test.tsx, and now by
37
+ * OrderCreateSheet.relay-wire.test.tsx). Widening the onChange signature to carry
38
+ * a live array would break all 11 forms and buy nothing.
39
+ */
40
+ export declare function RelayChangeForm({ params, onChange, relayOptions, modemId }: FormProps): import("react").JSX.Element;
13
41
  export {};
14
42
  //# sourceMappingURL=RelayForms.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RelayForms.d.ts","sourceRoot":"","sources":["../../../src/components/order-forms/RelayForms.tsx"],"names":[],"mappings":"AAKA,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAiB,EAAE,EAAE,SAAS,+BAchF;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAiB,EAAE,EAAE,SAAS,+BA6EjF"}
1
+ {"version":3,"file":"RelayForms.d.ts","sourceRoot":"","sources":["../../../src/components/order-forms/RelayForms.tsx"],"names":[],"mappings":"AASA,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,SAAS,+BAiBpF;AAiCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,SAAS,+BA+GrF"}