@espressif/dashboard-ui-components 1.7.0 → 1.9.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,125 @@ All notable changes to this project are documented here. The format is based on
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres
5
5
  to [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [1.9.0] - 2026-10-09
8
+
9
+ ### Added
10
+ - **`DataTable`** — `meta.fill` gives a column the width the other columns
11
+ leave, and its content never widens the table. Render the cell with
12
+ `truncate` and a long free-text value (a description, notes) ends in an
13
+ ellipsis at the column edge instead of making a phone-width table scroll.
14
+ Combined with `wrap`, the text wraps within that width, keeping `wrap`'s
15
+ 16rem minimum.
16
+
17
+ ### Fixed
18
+ - **`Alert`, `IconTextActionCard`** — actions that don't fit beside the text
19
+ now wrap onto their own line, aligned to the end, instead of squeezing the
20
+ title and description down to one character per line. The text keeps at
21
+ least 12rem (icon included) before the actions wrap. Wrapping follows the
22
+ card's own width, so it also applies inside dialogs and side panels. Cards
23
+ without actions are unchanged.
24
+
25
+ ## [1.8.0] - 2026-10-08
26
+
27
+ A minor release focused on small screens. `Tabs`, `DataTable`, `SimpleList`,
28
+ `DynamicList`, `ListDetails`, `KeyValueManager` and `Pagination` now adapt
29
+ to phone widths, and `ScrollArea` no longer stretches to fit wide content.
30
+ `DataTable` gains sticky, wrapping and width-based hidden columns, and a
31
+ new `rm-dashboard-update` illustration is added. No breaking API changes,
32
+ but one default changed: `DataTable` cells now stay on one line, so long
33
+ free-text columns need `meta: { wrap: true }` to keep wrapping.
34
+
35
+ ### Added
36
+ - **`Illustration`** — new `rm-dashboard-update` illustration: the RainMaker
37
+ cloud delivering update packages to a dashboard on a laptop. It is a
38
+ companion to `rm-data-download` (same canvas, cloud and connector) and,
39
+ like it, plays SMIL animations with `animated`: packages fly in, each one
40
+ refreshes a stat card, the chart regrows, the progress bar fills and a sync
41
+ badge spins. Colours come from the theme tokens, so it works in dark mode.
42
+ - **`DataTable`** — responsive column options through `meta` (typed as the
43
+ exported `DataTableColumnMeta`): `sticky: true` pins leading columns to
44
+ the left edge while the table scrolls horizontally (the row-selection
45
+ checkbox column is pinned with them), and `wrap: true` lets a long
46
+ free-text column wrap. Pinned cells use the page background; tables on
47
+ another surface set `--data-table-sticky-bg` to match it.
48
+ - **`DataTable`** — `meta.hideBelow` hides lower-priority columns while the
49
+ table is narrow. It takes a size from Tailwind's container scale (`sm`
50
+ 384px … `7xl` 1280px, typed as `DataTableBreakpoint`) or a width in pixels,
51
+ and measures the table's own width rather than the viewport, so it also
52
+ works in sheets and split panes. A phone-width table is below `sm`, so
53
+ `hideBelow: "sm"` hides a column on phones. Hidden columns stay in the
54
+ Columns menu; visibility is only re-applied when the width crosses a
55
+ breakpoint, so a column the user brings back stays visible.
56
+ - **`ScrollArea`** — `orientation` prop (`"vertical"` default,
57
+ `"horizontal"`, `"both"`) choosing which directions scroll and which
58
+ scrollbars render. Types exported as `ScrollAreaProps` and
59
+ `ScrollAreaOrientation`.
60
+ - **`Table`** — optional `containerRef` and `containerClassName` props for
61
+ the scroll container that wraps the `<table>`.
62
+
63
+ ### Changed
64
+ - **`Tabs`** — when the triggers don't fit, `TabsList` now scrolls
65
+ horizontally instead of overflowing the page. Edges fade where tabs are
66
+ hidden, chevron buttons page through them on mouse and trackpad devices
67
+ (touch devices swipe), and the selected tab is kept in view. Lists with
68
+ `aria-orientation="vertical"` are unchanged.
69
+ - **`DataTable`** — on narrow screens the table now scrolls horizontally
70
+ instead of squashing its columns. Body cells stay on one line by default
71
+ (as header cells already did), and shadows at the edges show when columns
72
+ are scrolled out of view. Long free-text columns that used to wrap now
73
+ extend the row; add `meta: { wrap: true }` to keep them wrapping. The
74
+ toolbar also wraps, so `tableActionsContent` moves above the Columns
75
+ button when there is no room for both.
76
+ - **`SimpleList`, `DynamicList`** — `direction="row"` (list-level or, in
77
+ `SimpleList`, per item) now applies from the `sm` breakpoint (640px) up.
78
+ On phones, label and value stack like a column row instead of squeezing
79
+ onto one line. `DynamicList`'s `keyWidth` split applies from `sm` up.
80
+ - **`ListDetails`** — below the `md` breakpoint (768px) the layout stacks:
81
+ the items become a single scrollable row with arrow buttons and edge
82
+ fades, the selected item is kept in view, and its details show below.
83
+ The `footer` is hidden on these screens. String titles in the row are
84
+ capped at 12rem and truncated, and the default chevron is omitted there
85
+ (a custom `endIcon` still shows). From `md` up the layout is unchanged.
86
+ - **`KeyValueManager`** — on small screens (below the `sm` breakpoint,
87
+ 640px) search and Add become icon buttons. The search icon expands the
88
+ search box across the toolbar (hiding Add) and focuses it; a close
89
+ button, or Escape, clears the search and returns to the icons. Rows show
90
+ as key/value cards without the column header, with the delete button
91
+ always visible. New `labels.closeSearch` names the close button.
92
+ - **`Pagination`** — in containers narrower than 28rem the Previous and
93
+ Next buttons become icon-only (their labels stay available to screen
94
+ readers), and the page-size selector wraps onto its own line when the row
95
+ still doesn't fit.
96
+
97
+ ### Fixed
98
+ - **`ScrollArea`** — content wider than the area no longer stretches it
99
+ and gets clipped. A vertical area (the default) now keeps its content at
100
+ the area's width, so wide children such as `DataTable` scroll sideways on
101
+ their own. Areas that pass `<ScrollBar orientation="horizontal" />` as a
102
+ child keep scrolling horizontally as before; prefer `orientation`.
103
+ - **`BasicDetailsCard`** — a small gap (0.25rem) now separates the primary
104
+ and secondary text, which previously touched. This also spaces out
105
+ `DynamicList` rows and the small-screen `KeyValueManager` rows that use it.
106
+ - **`KeyValueManager`** — the row delete button, shown on hover, is now
107
+ also visible when focused with the keyboard.
108
+ - **`Tabs`** — the animated highlight stays aligned with its tab when the
109
+ tab list's container is scrolled.
110
+
111
+ ### Internal
112
+ Nothing in this section affects the published package.
113
+
114
+ - A shared `useScrollOverflow` hook (not exported) tracks hidden content on
115
+ either side of a horizontal scroller for `Tabs`, `DataTable` and
116
+ `ListDetails`.
117
+ - Demo: new examples for `Tabs` (many tabs, plus tab-count and icon
118
+ controls on the playground), `DataTable` (wide table, phone width,
119
+ several pinned columns, wrapping, clickable rows, tinted surface and a
120
+ resizable `hideBelow` table), `Pagination` (narrow containers) and
121
+ `ScrollArea` (wide content, horizontal scrolling). The demo's API tables
122
+ mark free-text columns as `wrap`.
123
+ - Tests for `DataTable` column `meta` (`sticky`, `wrap`, `hideBelow`),
124
+ `ListDetails`, `KeyValueManager` and `ScrollArea`.
125
+
7
126
  ## [1.7.0] - 2026-10-06
8
127
 
9
128
  A minor release adding per-item icons and colours to `OverflowBadgeList`
@@ -1,4 +1,4 @@
1
- import { Avatar, Menu, List, Button, Link } from './chunk-3PO2SF7T.js';
1
+ import { Avatar, Menu, List, Button, Link } from './chunk-ZFYUONPY.js';
2
2
  import { cn } from './chunk-VU4CZ76T.js';
3
3
  import { motion, AnimatePresence } from 'framer-motion';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
- import { ProgressBar } from './chunk-WS6QCUCT.js';
1
+ import { ProgressBar } from './chunk-XNF4IADN.js';
2
2
  import { Card, CardContent } from './chunk-ABBHGIFI.js';
3
- import { Tooltip2 } from './chunk-3PO2SF7T.js';
3
+ import { Tooltip2 } from './chunk-ZFYUONPY.js';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
6
6
  function CopyrightCard({