@oicl/openbridge-webcomponents 2.0.0-next.87 → 2.0.0-next.89

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 (28) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +17409 -16824
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +755 -44
  4. package/dist/building-blocks/readout-block/readout-block.css.js +229 -0
  5. package/dist/building-blocks/readout-block/readout-block.css.js.map +1 -0
  6. package/dist/building-blocks/readout-block/readout-block.d.ts +146 -0
  7. package/dist/building-blocks/readout-block/readout-block.d.ts.map +1 -0
  8. package/dist/building-blocks/readout-block/readout-block.js +273 -0
  9. package/dist/building-blocks/readout-block/readout-block.js.map +1 -0
  10. package/dist/navigation-instruments/gauge-radial/gauge-radial.css.js +58 -32
  11. package/dist/navigation-instruments/gauge-radial/gauge-radial.css.js.map +1 -1
  12. package/dist/navigation-instruments/gauge-radial/gauge-radial.d.ts +28 -0
  13. package/dist/navigation-instruments/gauge-radial/gauge-radial.d.ts.map +1 -1
  14. package/dist/navigation-instruments/gauge-radial/gauge-radial.js +25 -2
  15. package/dist/navigation-instruments/gauge-radial/gauge-radial.js.map +1 -1
  16. package/dist/navigation-instruments/readout-list/readout-list.css.js +24 -0
  17. package/dist/navigation-instruments/readout-list/readout-list.css.js.map +1 -0
  18. package/dist/navigation-instruments/readout-list/readout-list.d.ts +70 -0
  19. package/dist/navigation-instruments/readout-list/readout-list.d.ts.map +1 -0
  20. package/dist/navigation-instruments/readout-list/readout-list.js +154 -0
  21. package/dist/navigation-instruments/readout-list/readout-list.js.map +1 -0
  22. package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js +80 -145
  23. package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js.map +1 -1
  24. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts +25 -26
  25. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts.map +1 -1
  26. package/dist/navigation-instruments/readout-list-item/readout-list-item.js +66 -118
  27. package/dist/navigation-instruments/readout-list-item/readout-list-item.js.map +1 -1
  28. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readout-list.js","sources":["../../../src/navigation-instruments/readout-list/readout-list.ts"],"sourcesContent":["import {LitElement, html, unsafeCSS, type PropertyValues} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport componentStyle from './readout-list.css?inline';\nimport {customElement} from '../../decorator.js';\nimport '../readout-list-item/readout-list-item.js';\nimport {ObcReadoutListItem} from '../readout-list-item/readout-list-item.js';\n\nconst ITEM_TAG = 'obc-readout-list-item';\n\n/** Child attributes whose change should re-trigger alignment (HTML-attribute usage). */\nconst OBSERVED_ATTRIBUTES = [\n 'unit',\n 'src',\n 'value',\n 'setpoint',\n 'advice',\n 'max-digits',\n 'fraction-digits',\n 'has-degree',\n 'has-setpoint',\n 'has-advice',\n];\n\n/** Integer-digit count of a numeric value (sign and fraction excluded). */\nfunction integerDigitCount(value: number | null | undefined): number {\n if (value === null || value === undefined || Number.isNaN(value)) {\n return 0;\n }\n return String(Math.trunc(Math.abs(value))).length;\n}\n\n/**\n * `<obc-readout-list>` – A container that groups `<obc-readout-list-item>` rows\n * and **auto-aligns their columns**.\n *\n * Because each row is its own custom element, cross-row column alignment is not\n * automatic. This container inspects its rows and pushes shared width reservers\n * down so the unit column, the value / setpoint / advice columns and the source\n * column all line up — the same effect the `Readout List Item → ColumnAlignment`\n * story achieves by hand, done for you. Alignment is always on.\n *\n * What it equalizes — derived from each row's data and broadcast to every row, so\n * the widest value / unit / source is never clipped:\n * - **Unit:** the longest `unit` becomes every row's unit space-reserver.\n * - **Value / setpoint / advice:** the widest numeric width (max integer digits +\n * max fraction digits across rows, derived from each row's `maxDigits` /\n * `fractionDigits` / current values) is reserved on every row's numeric blocks.\n * Reserving off digit counts keeps it stable as live values update.\n * - **Source:** the longest `src` becomes every row's source space-reserver.\n * - **Degree:** if any row has a degree, non-degree rows reserve the degree column\n * (`hasDegreeSpacer`) so their digits line up with the degree rows; the spacer is\n * cleared once no degree rows remain.\n *\n * The list **owns** these reservers: it recomputes them from the rows' data on\n * every pass (and clears stale reservers / spacers when rows change), so a\n * `spaceReserver` set directly on a row inside the list is overwritten. Drive the\n * data (`maxDigits` / `fractionDigits` / `unit` / `src`) rather than setting a\n * manual reserver when a row lives in a list.\n *\n * Alignment runs on `slotchange` and on child mutations (added/removed rows and\n * HTML-attribute changes). When rows are updated via JS **properties** only (no\n * attribute/DOM mutation), call {@link align} to recompute.\n *\n * @experimental Pilot for the new primitives + per-block options Readout API; the\n * API may change in a future release.\n *\n * @slot - The `<obc-readout-list-item>` rows.\n *\n * @csspart list - The vertical stack container.\n */\n@customElement('obc-readout-list')\nexport class ObcReadoutList extends LitElement {\n /**\n * Development aid: outline each row's readout building blocks (red), degree\n * columns (blue) and degree spacer (green) so the reserved column widths are\n * visible. Propagated to every row. Off by default.\n */\n @property({type: Boolean, reflect: true}) showDebugOverlay = false;\n\n private mutationObserver?: MutationObserver;\n\n protected override updated(changed: PropertyValues): void {\n super.updated(changed);\n // A host-property change is not seen by the child MutationObserver, so\n // re-propagate `showDebugOverlay` (and re-align) when it toggles.\n if (changed.has('showDebugOverlay')) {\n this.align();\n }\n }\n\n override disconnectedCallback(): void {\n this.mutationObserver?.disconnect();\n this.mutationObserver = undefined;\n super.disconnectedCallback();\n }\n\n /** The `obc-readout-list-item` rows, including those nested in wrapper elements. */\n private get items(): ObcReadoutListItem[] {\n const slot = this.shadowRoot?.querySelector('slot');\n const assigned = slot?.assignedElements({flatten: true}) ?? [];\n return assigned.flatMap((el) =>\n el.tagName.toLowerCase() === ITEM_TAG\n ? [el as ObcReadoutListItem]\n : Array.from(el.querySelectorAll<ObcReadoutListItem>(ITEM_TAG))\n );\n }\n\n /**\n * Recompute and apply the shared column reservers across all rows. Call this\n * after updating rows via JS properties only (attribute/DOM changes are picked\n * up automatically).\n */\n align(): void {\n const items = this.items;\n if (items.length === 0) {\n return;\n }\n\n let maxIntegerDigits = 0;\n let maxFractionDigits = 0;\n let longestUnit = '';\n let longestSrc = '';\n let anyDegree = false;\n\n for (const item of items) {\n maxFractionDigits = Math.max(maxFractionDigits, item.fractionDigits ?? 0);\n maxIntegerDigits = Math.max(\n maxIntegerDigits,\n item.maxDigits ?? 0,\n integerDigitCount(item.value),\n item.hasSetpoint ? integerDigitCount(item.setpoint) : 0,\n item.hasAdvice ? integerDigitCount(item.advice) : 0\n );\n if (item.unit && item.unit.length > longestUnit.length) {\n longestUnit = item.unit;\n }\n if (item.src && item.src.length > longestSrc.length) {\n longestSrc = item.src;\n }\n if (item.hasDegree) {\n anyDegree = true;\n }\n }\n\n const numericReserver =\n maxIntegerDigits > 0\n ? '0'.repeat(maxIntegerDigits) +\n (maxFractionDigits > 0 ? `.${'0'.repeat(maxFractionDigits)}` : '')\n : undefined;\n\n // Our writes are properties (no reflected attributes), so they do not trigger\n // the MutationObserver; disconnecting around them is belt-and-suspenders.\n this.mutationObserver?.disconnect();\n for (const item of items) {\n // Recompute every reserver / spacer on every pass (do not gate on a value\n // being present), so stale state clears when rows change — e.g. when the\n // last degree row, the last unit, or the last source is removed.\n item.valueOptions = {\n ...item.valueOptions,\n spaceReserver: numericReserver,\n };\n item.setpointOptions = {\n ...item.setpointOptions,\n spaceReserver: numericReserver,\n };\n item.adviceOptions = {\n ...item.adviceOptions,\n spaceReserver: numericReserver,\n };\n item.unitOptions = {\n ...item.unitOptions,\n spaceReserver: longestUnit || undefined,\n };\n item.srcOptions = {\n ...item.srcOptions,\n spaceReserver: longestSrc || undefined,\n };\n item.hasDegreeSpacer = anyDegree && !item.hasDegree;\n item.showDebugOverlay = this.showDebugOverlay;\n }\n this.observeChildren();\n }\n\n private observeChildren(): void {\n if (!this.mutationObserver) {\n this.mutationObserver = new MutationObserver(() => this.align());\n }\n this.mutationObserver.observe(this, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: OBSERVED_ATTRIBUTES,\n });\n }\n\n private handleSlotChange = (): void => {\n this.align();\n this.observeChildren();\n };\n\n override render() {\n return html`\n <div class=\"list\" part=\"list\">\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n `;\n }\n\n static override styles = unsafeCSS(componentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-readout-list': ObcReadoutList;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -12,6 +12,57 @@ const componentStyle = css`* {
12
12
  width: 100%;
13
13
  }
14
14
 
15
+ /* Bridge the list-item's public colour custom properties onto the block's, so
16
+ consumers keep theming the value / setpoint / advice / hinted-zero colours via
17
+ \`--obc-readout-list-item-*\` even though they now render inside obc-readout-block. */
18
+
19
+ obc-readout-block {
20
+ --obc-readout-block-value-color: var(
21
+ --obc-readout-list-item-value-color,
22
+ var(--element-neutral-color)
23
+ );
24
+ --obc-readout-block-value-enhanced-color: var(
25
+ --obc-readout-list-item-value-enhanced-color,
26
+ var(--element-neutral-enhanced-color)
27
+ );
28
+ --obc-readout-block-setpoint-color: var(
29
+ --obc-readout-list-item-setpoint-color,
30
+ var(--element-neutral-color)
31
+ );
32
+ --obc-readout-block-setpoint-enhanced-color: var(
33
+ --obc-readout-list-item-setpoint-enhanced-color,
34
+ var(--instrument-enhanced-secondary-color)
35
+ );
36
+ --obc-readout-block-setpoint-touching-outline-color: var(
37
+ --obc-readout-list-item-setpoint-touching-outline-color,
38
+ var(--element-neutral-enhanced-color)
39
+ );
40
+ --obc-readout-block-setpoint-touching-color: var(
41
+ --obc-readout-list-item-setpoint-touching-color,
42
+ var(--base-blue-100)
43
+ );
44
+ --obc-readout-block-advice-color: var(
45
+ --obc-readout-list-item-advice-color,
46
+ var(--element-neutral-color)
47
+ );
48
+ --obc-readout-block-hinted-color: var(
49
+ --obc-readout-list-item-hinted-color,
50
+ var(--element-inactive-color)
51
+ );
52
+ }
53
+
54
+ /* Size the consumer-provided block icons forwarded into obc-readout-block's
55
+ \`icon\` slot (the block sizes the forwarded slot element; this sizes the
56
+ consumer's icon to fill it). */
57
+
58
+ ::slotted([slot="value-icon"]),
59
+ ::slotted([slot="setpoint-icon"]),
60
+ ::slotted([slot="advice-icon"]) {
61
+ display: block;
62
+ inline-size: 100%;
63
+ block-size: 100%;
64
+ }
65
+
15
66
  /* ---------- Root / surface ----------
16
67
  * \`.root\` is the touch target (a <button> when clickable, otherwise a <div>).
17
68
  * \`.surface\` is the visible box that carries padding, corner radius, the
@@ -222,129 +273,10 @@ const componentStyle = css`* {
222
273
  align-items: flex-end;
223
274
  }
224
275
 
225
- /* ---------- Readout building block (advice / setpoint / value) ---------- */
226
-
227
- .block {
228
- display: inline-flex;
229
- align-items: flex-end;
230
- }
231
-
232
- /* Number + its (setpoint/advice) degree glyph, hugging with no gap — the
233
- \`.block\` gap only separates the icon from this group. */
234
-
235
- .block-content {
236
- display: inline-flex;
237
- align-items: flex-end;
238
- }
239
-
240
- .block-icon {
241
- display: inline-flex;
242
- align-items: center;
243
- justify-content: center;
244
- flex: none;
245
- color: inherit;
246
- /* Centre the icon against the block's text rather than bottom-aligning it (the
247
- block is flex-end). Matters for the value block, whose text is taller than
248
- the icon, so the value icon lines up with the number like the smaller
249
- setpoint/advice icons do. */
250
- align-self: center;
251
- }
252
-
253
- .block-icon obi-input-right,
254
- .block-icon obi-notification-advice,
255
- .block-icon ::slotted(*) {
256
- display: block;
257
- inline-size: 100%;
258
- block-size: 100%;
259
- }
260
-
261
- .hinted-zero {
262
- color: var(
263
- --obc-readout-list-item-hinted-color,
264
- var(--element-inactive-color)
265
- );
266
- }
267
-
268
- /* ---------- Text colours (overridable via custom properties) ----------
269
- * obc-textbox does not set its own colour, so it inherits these. */
270
-
271
- .block-value {
272
- color: var(--obc-readout-list-item-value-color, var(--element-neutral-color));
273
- }
274
-
275
- .block-value.tone-enhanced {
276
- color: var(
277
- --obc-readout-list-item-value-enhanced-color,
278
- var(--element-neutral-enhanced-color)
279
- );
280
- }
281
-
282
- /* The setpoint shares the value's colour state: neutral by default, enhanced
283
- (blue) only when the row is enhanced — never a blue setpoint next to a grey
284
- value. \`--instrument-enhanced-secondary-color\` is the same #2d548b as the
285
- value's \`--element-neutral-enhanced-color\`. */
286
-
287
- .block-setpoint {
288
- color: var(
289
- --obc-readout-list-item-setpoint-color,
290
- var(--element-neutral-color)
291
- );
292
- /* Flip-flop emphasis + pop-up fade animate at 100ms. */
293
- transition:
294
- opacity 100ms ease,
295
- color 100ms ease;
296
- }
297
-
298
- .block-setpoint.tone-enhanced {
299
- color: var(
300
- --obc-readout-list-item-setpoint-enhanced-color,
301
- var(--instrument-enhanced-secondary-color)
302
- );
303
- }
304
-
305
- /* Pop-up: fade the setpoint out once value === setpoint, keeping its space so
306
- the value stays column-aligned. */
307
-
308
- .block-setpoint.is-hiding {
309
- opacity: 0;
310
- }
311
-
312
- .block-setpoint.is-hidden {
313
- opacity: 0;
314
- visibility: hidden;
315
- }
316
-
317
- /* Touching / focus state: the setpoint triangle takes the marker's focus look — a
318
- pale fill (--base-blue-100) with a dark 1px edge (--element-neutral-enhanced),
319
- mirroring \`svghelpers/setpoint.ts\` focus (fill base-blue-100 + 2px stroke).
320
- The glyph icon is \`fill: currentColor\` and can't take a CSS \`stroke\`, so the
321
- edge is layered drop-shadows. The setpoint number keeps its normal, readable
322
- colour. */
323
-
324
- .block-setpoint.touching {
325
- --_touching-outline: var(
326
- --obc-readout-list-item-setpoint-touching-outline-color,
327
- var(--element-neutral-enhanced-color)
328
- );
329
- }
330
-
331
- .block-setpoint.touching .block-icon {
332
- color: var(
333
- --obc-readout-list-item-setpoint-touching-color,
334
- var(--base-blue-100)
335
- );
336
- filter: drop-shadow(1px 0 0 var(--_touching-outline))
337
- drop-shadow(-1px 0 0 var(--_touching-outline))
338
- drop-shadow(0 1px 0 var(--_touching-outline))
339
- drop-shadow(0 -1px 0 var(--_touching-outline));
340
- }
341
-
342
- .block-advice {
343
- color: var(
344
- --obc-readout-list-item-advice-color,
345
- var(--element-neutral-color)
346
- );
347
- }
276
+ /* The readout building blocks (advice / setpoint / value) now render inside
277
+ \`obc-readout-block\`; their layout / colour / hinted-zero / data-quality CSS
278
+ lives there. The list-item only bridges the public colour vars (see top) and
279
+ keeps the surrounding row layout below. */
348
280
 
349
281
  .label {
350
282
  color: var(
@@ -364,26 +296,22 @@ const componentStyle = css`* {
364
296
  );
365
297
  }
366
298
 
367
- /* ---------- Per-block data quality ----------
299
+ /* ---------- Source data quality ----------
368
300
  * Independent of (and nests inside) the row-level data-quality frame. Uses
369
- * \`outline\` (not \`border\`) so the chip never shifts the block's width — the
370
- * value stays column-aligned across rows. */
301
+ * \`outline\` (not \`border\`) so the chip never shifts the source's width. (The
302
+ * per-block value/setpoint/advice chips live in \`obc-readout-block\`.) */
371
303
 
372
- .block.data-low-integrity,
373
- .block.data-invalid,
374
304
  .source.data-low-integrity,
375
305
  .source.data-invalid {
376
306
  outline: 1px solid;
377
307
  border-radius: var(--global-border-radius-border-radius-check);
378
308
  }
379
309
 
380
- .block.data-low-integrity,
381
310
  .source.data-low-integrity {
382
311
  background: var(--alert-low-integrity-background-color);
383
312
  outline-color: var(--alert-low-integrity-border-color);
384
313
  }
385
314
 
386
- .block.data-invalid,
387
315
  .source.data-invalid {
388
316
  background: var(--alert-invalid-background-color);
389
317
  outline-color: var(--alert-invalid-border-color);
@@ -525,11 +453,6 @@ const componentStyle = css`* {
525
453
  );
526
454
  }
527
455
 
528
- .size-small .block {
529
- gap: var(--instrument-components-readout-new-general-regular-icon-gap);
530
- }
531
-
532
- .size-small .block-icon,
533
456
  .size-small .leading-icon {
534
457
  inline-size: var(
535
458
  --instrument-components-readout-new-general-regular-icon-size
@@ -566,11 +489,6 @@ const componentStyle = css`* {
566
489
  );
567
490
  }
568
491
 
569
- .size-medium .block {
570
- gap: var(--instrument-components-readout-new-general-medium-icon-gap);
571
- }
572
-
573
- .size-medium .block-icon,
574
492
  .size-medium .leading-icon {
575
493
  inline-size: var(
576
494
  --instrument-components-readout-new-general-medium-icon-size
@@ -602,11 +520,6 @@ const componentStyle = css`* {
602
520
  gap: var(--instrument-components-readout-new-list-item-large-value-gap);
603
521
  }
604
522
 
605
- .size-large .block {
606
- gap: var(--instrument-components-readout-new-general-large-icon-gap);
607
- }
608
-
609
- .size-large .block-icon,
610
523
  .size-large .leading-icon {
611
524
  inline-size: var(--instrument-components-readout-new-general-large-icon-size);
612
525
  block-size: var(--instrument-components-readout-new-general-large-icon-size);
@@ -651,6 +564,28 @@ const componentStyle = css`* {
651
564
  );
652
565
  --_obc-readout-list-item-data-border: var(--alert-invalid-border-color);
653
566
  }
567
+
568
+ /* ---------- Debug overlay ----------
569
+ * \`showDebugOverlay\` outlines each readout building block (red), the degree
570
+ * columns (blue) and the degree spacer (green) so reserver widths / alignment
571
+ * are visible. A development aid (mirrors the donut chart's \`showDebugOverlay\`);
572
+ * off by default. */
573
+
574
+ :host([showDebugOverlay]) obc-readout-block::part(block) {
575
+ outline: 1px solid rgba(220, 0, 0, 0.7);
576
+ outline-offset: -1px;
577
+ }
578
+
579
+ :host([showDebugOverlay]) obc-readout-block::part(degree),
580
+ :host([showDebugOverlay]) .degree-column {
581
+ outline: 1px solid rgba(0, 0, 220, 0.7);
582
+ outline-offset: -1px;
583
+ }
584
+
585
+ :host([showDebugOverlay]) .degree-spacer {
586
+ outline: 1px solid rgba(0, 160, 0, 0.8);
587
+ outline-offset: -1px;
588
+ }
654
589
  `;
655
590
  export {
656
591
  componentStyle as default
@@ -1 +1 @@
1
- {"version":3,"file":"readout-list-item.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"readout-list-item.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,21 +1,18 @@
1
1
  import { LitElement } from 'lit';
2
2
  import { ObcTextboxFontWeight } from '../../components/textbox/textbox.js';
3
+ import { ReadoutBlockSize, ReadoutBlockDataQuality } from '../../building-blocks/readout-block/readout-block.js';
3
4
  import { AlertFrameConfig } from '../../components/alert-frame/alert-frame.js';
4
5
  import '../../components/textbox/textbox.js';
5
- import '../../icons/icon-input-right.js';
6
- import '../../icons/icon-notification-advice.js';
6
+ import '../../building-blocks/readout-block/readout-block.js';
7
7
  export { ObcTextboxFontWeight } from '../../components/textbox/textbox.js';
8
8
  /**
9
- * Density/size scale of the readout row.
9
+ * Density/size scale of the readout row (an alias of `ReadoutBlockSize`).
10
10
  * - `small`: regular value typography (smallest, densest).
11
11
  * - `medium`: medium value typography.
12
12
  * - `large`: large value typography.
13
13
  */
14
- export declare enum ReadoutListItemSize {
15
- small = "small",
16
- medium = "medium",
17
- large = "large"
18
- }
14
+ export declare const ReadoutListItemSize: typeof ReadoutBlockSize;
15
+ export type ReadoutListItemSize = ReadoutBlockSize;
19
16
  /**
20
17
  * Placement of the unit/source relative to the label and value.
21
18
  * - `trailing-unit`: unit after the value, source after a trailing divider.
@@ -37,13 +34,12 @@ export declare enum ReadoutListItemPriority {
37
34
  enhanced = "enhanced"
38
35
  }
39
36
  /**
40
- * Measurement quality of the value. Orthogonal to the row-level `alert`
41
- * – a low-integrity or invalid value can also sit inside an alert frame.
37
+ * Measurement quality of the value (an alias of `ReadoutBlockDataQuality`).
38
+ * Orthogonal to the row-level `alert` – a low-integrity or invalid value can
39
+ * also sit inside an alert frame.
42
40
  */
43
- export declare enum ReadoutListItemDataQuality {
44
- lowIntegrity = "low-integrity",
45
- invalid = "invalid"
46
- }
41
+ export declare const ReadoutListItemDataQuality: typeof ReadoutBlockDataQuality;
42
+ export type ReadoutListItemDataQuality = ReadoutBlockDataQuality;
47
43
  /**
48
44
  * Corner style of the interactive (clickable) surface.
49
45
  * - `squared` (default): no rounding (true rectangle).
@@ -183,8 +179,10 @@ export declare class ObcReadoutListItem extends LitElement {
183
179
  src?: string;
184
180
  hasValue: boolean;
185
181
  value: number | null;
186
- /** Render the value as the literal "OFF" (e.g. equipment powered down). Affects the value only. */
182
+ /** Render the value as `offText` (e.g. equipment powered down). Affects the value only. */
187
183
  off: boolean;
184
+ /** Text shown in place of the value when `off` is true. @availableWhen off==true */
185
+ offText: string;
188
186
  hasSetpoint: boolean;
189
187
  /** @availableWhen hasSetpoint==true */
190
188
  setpoint?: number;
@@ -207,6 +205,12 @@ export declare class ObcReadoutListItem extends LitElement {
207
205
  adviceOptions?: ReadoutAdviceOptions;
208
206
  unitOptions?: ReadoutReserverOptions;
209
207
  srcOptions?: ReadoutSrcOptions;
208
+ /**
209
+ * Development aid: outline the readout building blocks (red), the degree
210
+ * columns (blue) and the degree spacer (green) so reserver widths / alignment
211
+ * are visible. Off by default.
212
+ */
213
+ showDebugOverlay: boolean;
210
214
  /** Pop-up deferred-hide phase for the setpoint (see {@link updated}). */
211
215
  private deferredSetpointHidePhase;
212
216
  private deferredSetpointHideTimer?;
@@ -247,19 +251,14 @@ export declare class ObcReadoutListItem extends LitElement {
247
251
  /** Setpoint is SemiBold only while emphasised, otherwise regular weight. */
248
252
  private get setpointWeight();
249
253
  private numericFormatOptions;
250
- /** Widest possible value string for width reservation (e.g. `"000.0"`). */
251
- private get reserverText();
252
- /**
253
- * Effective width reserver for a numeric block: the wider of the explicit
254
- * `spaceReserver` and the `maxDigits`/`fractionDigits`-derived reserve, so an
255
- * explicit reserver can never reserve *less* than the formatted value needs.
256
- * Under tabular-nums the rendered width is proportional to character count, so
257
- * "wider" compares string length.
258
- */
259
- private widerReserver;
260
254
  /** classMap fragment for a block / source carrying per-block data quality. */
261
255
  private dataQualityClasses;
262
- private renderIcon;
256
+ /**
257
+ * Forward the matching list-item icon slot into the block's single `icon`
258
+ * slot. The variant's default marker lives in `obc-readout-block` and shows
259
+ * when nothing is assigned here (an empty forwarded slot flattens to nothing).
260
+ */
261
+ private renderForwardedIcon;
263
262
  private renderBlock;
264
263
  /**
265
264
  * A cap-height `°` column whose width scales with the value size. Used after
@@ -1 +1 @@
1
- {"version":3,"file":"readout-list-item.d.ts","sourceRoot":"","sources":["../../../src/navigation-instruments/readout-list-item/readout-list-item.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readout-list-item.d.ts","sourceRoot":"","sources":["../../../src/navigation-instruments/readout-list-item/readout-list-item.ts"],"names":[],"mappings":"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"}