@synopackageland/ui 0.20.1 → 0.20.3

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
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.20.3 (2026-11-04)
4
+
5
+ - `DataGrid` and `DataTable` remember column widths and view state per App and `stateKey`, so two Apps with the same key no longer share widths; widths saved under the previous key are still read
6
+
7
+ ## 0.20.2 (2026-11-04)
8
+
9
+ - List pages stay white when a detail pane opens, even while another App built with an older release is open in the same DSM session
10
+ - Add `ListDetail`: the list with the selected item's detail beside it in a bordered white pane. Drag the separator or use the arrow, Home and End keys to resize it; double click resets the width. The width is remembered per App and `storageKey`, and the pane moves above the list in narrow windows
11
+
3
12
  ## 0.20.1 (2026-11-04)
4
13
 
5
14
  - List pages stay white when a detail pane opens beside a `DataGrid`: the pane keeps its 1px border with no card shadow, and the selected row shows DSM's light blue.
package/README.md CHANGED
@@ -546,6 +546,7 @@ DSM-style application building blocks:
546
546
  - TimelineRow (one event in a list) / NewItemsPill (a floating "N new" pill) / SectionSkeleton `variant="lines" | "figures" | "rows"`
547
547
  - FacetPanel (filter groups with counts; a bottom sheet on a phone) / TagEditor (tags edited in place, saved optimistically)
548
548
  - SplitPane / StorageMeter / StackedBar (see [docs/size-and-split.md](docs/size-and-split.md))
549
+ - ListDetail (a list with the selected item's detail beside it, the pane's width set by dragging and remembered; see [docs/list-detail.md](docs/list-detail.md))
549
550
 
550
551
  `Tabs` and `SectionTabs` move a raised selection notch in 120ms. Selected labels
551
552
  are blue; main labels are bold 14px and section labels bold 13px. `Tabs` fades its
@@ -172,8 +172,9 @@ type __VLS_Props = {
172
172
  hiddenColumns?: string[];
173
173
  /**
174
174
  * Saves the user's column order, hidden columns, widths, sort and page size
175
- * in this browser under this key and restores them. Bound props win; to keep
176
- * them on a server, bind the v-models instead.
175
+ * in this browser under this App and key, and restores them: another App's
176
+ * grid with the same key keeps its own. New or changed rows keep them.
177
+ * Bound props win; to keep them on a server, bind the v-models instead.
177
178
  */
178
179
  stateKey?: string;
179
180
  /** A header menu where the user shows and hides columns and resets them. */
@@ -9,7 +9,7 @@ export type DataGridViewState = {
9
9
  } | null;
10
10
  pageSize?: number;
11
11
  };
12
- /** The view state saved under `key` in this browser; fields it cannot trust are dropped. */
12
+ /** The view state this App saved under `key` in this browser; fields it cannot trust are dropped. */
13
13
  export declare function loadGridState(key: string): DataGridViewState;
14
- /** Saves the view state under `key`; a browser that refuses storage keeps the grid working unsaved. */
14
+ /** Saves the view state under this App and `key`; a browser that refuses storage keeps the grid working unsaved. */
15
15
  export declare function saveGridState(key: string, state: DataGridViewState): void;
@@ -0,0 +1,52 @@
1
+ type __VLS_Props = {
2
+ /** Shows the pane; by default it shows while the `detail` slot is given. */
3
+ open?: boolean;
4
+ /** The pane's heading; with it the pane has a header with a Close button. */
5
+ title?: string;
6
+ /** Shows the Close button in the header. */
7
+ closable?: boolean;
8
+ /** The pane's width before the user sets one: a share of the room (0–1) or px. A share is kept between 400px and 640px. */
9
+ defaultWidth?: number;
10
+ /** The pane's minimum width in px. */
11
+ minWidth?: number;
12
+ /** The list's minimum width in px; the pane never grows into it. */
13
+ listMinWidth?: number;
14
+ /** Names this pane among the App's panes for the remembered width (with the App it runs in). */
15
+ storageKey?: string;
16
+ /** The separator's accessible name. */
17
+ label?: string;
18
+ };
19
+ /** Goes back to the default width and forgets the remembered one. */
20
+ declare function reset(): void;
21
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_13: {};
22
+ type __VLS_Slots = {} & {
23
+ default?: (props: typeof __VLS_1) => any;
24
+ } & {
25
+ header?: (props: typeof __VLS_3) => any;
26
+ } & {
27
+ detail?: (props: typeof __VLS_13) => any;
28
+ };
29
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
30
+ reset: typeof reset;
31
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
32
+ close: () => any;
33
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
34
+ onClose?: (() => any) | undefined;
35
+ }>, {
36
+ label: string;
37
+ title: string;
38
+ open: boolean;
39
+ minWidth: number;
40
+ closable: boolean;
41
+ storageKey: string;
42
+ defaultWidth: number;
43
+ listMinWidth: number;
44
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
45
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
46
+ declare const _default: typeof __VLS_export;
47
+ export default _default;
48
+ type __VLS_WithSlots<T, S> = T & {
49
+ new (): {
50
+ $slots: S;
51
+ };
52
+ };
package/dist/index.d.ts CHANGED
@@ -231,6 +231,7 @@ export { default as AppActionBar } from './components/app/app-action-bar/AppActi
231
231
  export { default as PageHeader } from './components/app/page-header/PageHeader.vue';
232
232
  export { default as PageToolbar } from './components/app/page-toolbar/PageToolbar.vue';
233
233
  export { default as SplitPane } from './components/containers/split-pane/SplitPane.vue';
234
+ export { default as ListDetail } from './components/containers/list-detail/ListDetail.vue';
234
235
  export { default as StorageMeter } from './components/composite/storage-meter/StorageMeter.vue';
235
236
  export type { StorageMeterLabels } from './components/composite/storage-meter/StorageMeter.vue';
236
237
  export { default as StackedBar } from './components/composite/stacked-bar/StackedBar.vue';