flexdesk 0.17.3 → 0.17.4
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 +86 -65
- package/README.md +27 -4544
- package/css/base.css +18 -1
- package/css/flexdesk.css +18 -1
- package/dist/{chunk-4A7SJC3T.js → chunk-RKNFBX5K.js} +15 -4
- package/dist/{chunk-4A7SJC3T.js.map → chunk-RKNFBX5K.js.map} +2 -2
- package/dist/flexdesk.css +18 -1
- package/dist/tiles.js +1 -1
- package/dist/widgets.js +14 -2
- package/dist/widgets.js.map +2 -2
- package/docs/README.md +97 -0
- package/docs/best-practices.md +45 -0
- package/docs/components/charts.md +211 -0
- package/docs/components/command-palette.md +102 -0
- package/docs/components/conversation.md +72 -0
- package/docs/components/data-table-grid.md +328 -0
- package/docs/components/data-table.md +596 -0
- package/docs/components/editor.md +22 -0
- package/docs/components/flow-canvas-editor.md +482 -0
- package/docs/components/flow-editors.md +176 -0
- package/docs/components/flow-lane-editor.md +165 -0
- package/docs/components/flow-outline-editor.md +176 -0
- package/docs/components/forms-and-dialogs.md +294 -0
- package/docs/components/input-fields.md +72 -0
- package/docs/components/keymap.md +143 -0
- package/docs/components/layout-widgets.md +163 -0
- package/docs/components/markdown-and-outline.md +106 -0
- package/docs/components/menus.md +86 -0
- package/docs/components/notifications.md +194 -0
- package/docs/components/panels-and-desktops.md +127 -0
- package/docs/components/record-list-and-fact-table.md +128 -0
- package/docs/components/settings-view.md +112 -0
- package/docs/components/shell.md +189 -0
- package/docs/components/slide-out-panel.md +68 -0
- package/docs/components/tiles.md +210 -0
- package/docs/components/wizard.md +54 -0
- package/docs/concepts/building-and-packaging.md +33 -0
- package/docs/concepts/domain-neutrality.md +110 -0
- package/docs/concepts/host-port.md +137 -0
- package/docs/concepts/packages-and-entry-points.md +32 -0
- package/docs/concepts/peer-dependencies.md +42 -0
- package/docs/concepts/state-guard.md +58 -0
- package/docs/concepts/styling.md +47 -0
- package/docs/quickstart.md +179 -0
- package/package.json +2 -1
- package/src/ui/components/slide_out_panel.js +14 -3
- package/src/ui/utils/auto_scrollbars.js +16 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.17.4 (2026-10-23)
|
|
4
|
+
|
|
5
|
+
A patch release: everything below is additive. Every fix is documented in a
|
|
6
|
+
section of the docs headed "(0.17.4)"; each entry links to it.
|
|
7
|
+
|
|
8
|
+
### Added and changed
|
|
9
|
+
|
|
10
|
+
- [A slide-out stays inside its host](docs/components/slide-out-panel.md#a-slide-out-stays-inside-its-host-0174): a `SlideOutPanel` is never wider than its host. While open it carries the host's width as `--twm-slide-out-host-w`, which `.twm-slide-out-panel` uses as its `max-width` and as the ceiling of its 400px `min-width`; in a host narrower than the panel's `width` it is the host's width and starts at the host's left edge, at any content zoom and again after every host resize. The header icon and the close button's icon are 18px, by rules that win over `.material-symbols-outlined`'s 24px (BUG-0035).
|
|
11
|
+
- [A pane at the window's edge keeps its bar](docs/components/layout-widgets.md#a-pane-at-the-windows-edge-keeps-its-bar-0174): the window's `.twm-resize-handle` strips and corners are not cover when an overlay scrollbar checks what sits over its track, so a pane flush against the right or bottom edge of a non-maximized window shows its bar again; a popover over the pane still hides it (BUG-0036).
|
|
12
|
+
- `installAutoScrollbars` drops the overlay bars of an element taken out of the page (a managed window closed) at once, instead of leaving them on screen through the hide delay and fade.
|
|
13
|
+
- The reference documentation moved from the README into `docs/` ([docs/README.md](docs/README.md): one page per component and per concept, headings unchanged); the README is a short overview, and `docs/` ships in the package.
|
|
14
|
+
|
|
15
|
+
### Removed or renamed exports
|
|
16
|
+
|
|
17
|
+
None. Compared with 0.17.3, across every entry point (`core`, `widgets`, `wm`,
|
|
18
|
+
`host`, `canvas`, `flow`, `charts`, `tiles`, `editor`) and the package
|
|
19
|
+
`exports` map, no export was added, removed or renamed. Not an export but
|
|
20
|
+
worth knowing: `.twm-slide-out-panel` has a `max-width` while open, and the
|
|
21
|
+
slide-out's header and close icons are 18px instead of the page's icon size
|
|
22
|
+
(see above).
|
|
23
|
+
|
|
3
24
|
## 0.17.3 (2026-10-22)
|
|
4
25
|
|
|
5
26
|
A patch release: everything below is additive. Every entry is documented in a
|
|
6
|
-
|
|
27
|
+
section of the docs headed "(0.17.3)"; each entry links to it.
|
|
7
28
|
|
|
8
29
|
### Added and changed
|
|
9
30
|
|
|
10
|
-
- [One toast, one history entry, one unread](
|
|
31
|
+
- [One toast, one history entry, one unread](docs/components/notifications.md#one-toast-one-history-entry-one-unread-0173): `NotificationCenter.history` holds one entry per toast however it was raised (`show()`, `warn()` / `error()` / `info()` / `success()`, `toast:show`, `notification:show`, `log:entry`), and a toast that leaves marks its own entry `dismissed: true` with the `reason` instead of adding a second one. `nc.subscribe(fn)` calls `fn(entry, center)` once per entry added and answers the unsubscribe. `NotificationHistory` follows the centre through `subscribe()`, so every toast counts once on the bell, also one raised through the API (BUG-0034). It no longer watches the bus for toasts: its `notificationCenter` is a `NotificationCenter` (or anything with `history` and `subscribe`).
|
|
11
32
|
|
|
12
33
|
### Removed or renamed exports
|
|
13
34
|
|
|
@@ -19,16 +40,16 @@ knowing: `NotificationCenter` gained the `subscribe(fn)` method (see above).
|
|
|
19
40
|
## 0.17.2 (2026-10-22)
|
|
20
41
|
|
|
21
42
|
A patch release: everything below is additive. Every entry is documented in a
|
|
22
|
-
|
|
43
|
+
section of the docs headed "(0.17.2)"; each entry links to it.
|
|
23
44
|
|
|
24
45
|
### Added and changed
|
|
25
46
|
|
|
26
|
-
- [An open single instance takes new props: `navigate(props)`](
|
|
27
|
-
- [A link to a kind nobody registered](
|
|
28
|
-
- [A palette row drawn disabled, with a reason](
|
|
29
|
-
- [A catalog source only behind its prefix: `scopedOnly`](
|
|
30
|
-
- [The settings categories outside the page: `SettingsCategories`](
|
|
31
|
-
- [Toast cards are styled and clickable](
|
|
47
|
+
- [An open single instance takes new props: `navigate(props)`](docs/components/shell.md#an-open-single-instance-takes-new-props-navigateprops-0172): opening a `single` kind that is already open with new props reveals it and calls its content's `navigate(props)` hook once; the props are recorded on the tab. An open that names no props only reveals.
|
|
48
|
+
- [A link to a kind nobody registered](docs/components/shell.md#a-link-to-a-kind-nobody-registered-0172): `wm.navigate` to a kind that is not registered logs one warning, changes nothing and returns `false`.
|
|
49
|
+
- [A palette row drawn disabled, with a reason](docs/components/command-palette.md#a-palette-row-drawn-disabled-with-a-reason-0172): a command with `enabled: () => false` is listed greyed (`aria-disabled`), does nothing when picked, and shows its `disabledReason` as a tooltip.
|
|
50
|
+
- [A catalog source only behind its prefix: `scopedOnly`](docs/components/command-palette.md#a-catalog-source-only-behind-its-prefix-scopedonly-0172): a catalog source with `scopedOnly: true` is searched only when its prefix is typed, in the flat and the grouped palette.
|
|
51
|
+
- [The settings categories outside the page: `SettingsCategories`](docs/components/settings-view.md#the-settings-categories-outside-the-page-settingscategories-0172): `SettingsView` can leave out its own category list and filter, and `SettingsCategories` (new export from `@flexdesk/widgets`) shows them anywhere, kept in step with the view.
|
|
52
|
+
- [Toast cards are styled and clickable](docs/components/notifications.md#toast-cards-are-styled-and-clickable-0172): toast cards use `twm-notification` and `twm-notification--<severity>`, styled in flexdesk.css and base.css, with their entry animation defined there; cards take pointer events, so their buttons work (BUG-0033). A sheet that targeted `.notification` must target `.twm-notification`.
|
|
32
53
|
|
|
33
54
|
### Removed or renamed exports
|
|
34
55
|
|
|
@@ -41,15 +62,15 @@ to `twm-notification` (see above).
|
|
|
41
62
|
## 0.17.1 (2026-10-21)
|
|
42
63
|
|
|
43
64
|
A patch release: everything below is additive. Every entry is documented in a
|
|
44
|
-
|
|
65
|
+
section of the docs headed "(0.17.1)"; each entry links to it.
|
|
45
66
|
|
|
46
67
|
### Added and changed
|
|
47
68
|
|
|
48
|
-
- [Built-in cell editors](
|
|
49
|
-
- [Copying cells as tab-separated values](
|
|
50
|
-
- [Pasting a block from Excel](
|
|
51
|
-
- [Building a modeler](
|
|
52
|
-
- [The `development` condition resolves in the installed package](
|
|
69
|
+
- [Built-in cell editors](docs/components/data-table-grid.md#built-in-cell-editors-0171): an editable DataTable column opens the editor for its type (`text`, `multitext`, `number`, `bool`, `choice`, `datetime`), each with a parse that refuses what it cannot read; `editors` replaces one per type or per column, with `editTypes`, `locale` and `editorMessages`. The editors and their parsers (`CELL_EDITORS`, `createNumberEditor`, `parseNumber`, `parseDateTime` and the rest of `cell_editors.js`) are exported from `@flexdesk/widgets`.
|
|
70
|
+
- [Copying cells as tab-separated values](docs/components/data-table-grid.md#copying-cells-as-tab-separated-values-0171): in cell mode Ctrl+C copies the selected cell range as the tab-separated text Excel and Google Sheets paste into cells; `toTSV` and `tsvCell` (from `@flexdesk/widgets`) write it.
|
|
71
|
+
- [Pasting a block from Excel](docs/components/data-table-grid.md#pasting-a-block-from-excel-0171): `pasteable: true` beside `staged` pastes a tab-separated block at the cursor cell, each value read by its column's editor, staged as one undo entry, with column and row overrun handling; `fromTSV` (from `@flexdesk/widgets`) reads it.
|
|
72
|
+
- [Building a modeler](docs/components/flow-canvas-editor.md#building-a-modeler-0171): the canvas editor's modeler options shown working together, with `demo/flow_modeler.html` (linked from `demo/index.html`).
|
|
73
|
+
- [The `development` condition resolves in the installed package](docs/concepts/building-and-packaging.md#the-development-condition-resolves-in-the-installed-package-0171): the nine root entry barrels are in `files`, so the `exports` map's `development` targets ship (BUG-0032). An `import` still resolves to `dist/`.
|
|
53
74
|
|
|
54
75
|
### Removed or renamed exports
|
|
55
76
|
|
|
@@ -59,55 +80,55 @@ None. Compared with 0.17.0, across every entry point (`core`, `widgets`, `wm`,
|
|
|
59
80
|
|
|
60
81
|
## 0.17.0 (2026-10-21)
|
|
61
82
|
|
|
62
|
-
Every feature below is documented in a
|
|
83
|
+
Every feature below is documented in a section of the docs headed "(0.17.0)"; each
|
|
63
84
|
entry links to it.
|
|
64
85
|
|
|
65
86
|
### Added and changed
|
|
66
87
|
|
|
67
|
-
- [A menu bar: `createMenuBar`](
|
|
68
|
-
- [A kind that exists once: `single`](
|
|
69
|
-
- [Panels a page does not offer](
|
|
70
|
-
- [Panels keep the size you dragged them to](
|
|
71
|
-
- [A navigation panel you drive yourself: `mountNavPanel`](
|
|
72
|
-
- [Buttons that change with the pane: `ctx.setChromeActions`](
|
|
73
|
-
- [Your keys, not the window manager's: `keymap`](
|
|
74
|
-
- [DataTable: columns in the order somebody puts them](
|
|
75
|
-
- [DataTable: a grid of cells you can edit](
|
|
76
|
-
- [Staged edits, undo and redo, one commit](
|
|
77
|
-
- [Fill handle](
|
|
78
|
-
- [DataTable: column groups and structural edits](
|
|
79
|
-
- [DataTable: a crosstab, with spanned header rows and pinned label columns](
|
|
80
|
-
- [SliderField: a number box, a readout, a default and an enable toggle](
|
|
81
|
-
- [A stack of collapsible sections: `createSectionStack`](
|
|
82
|
-
- [Node bodies](
|
|
83
|
-
- [Edited on the node](
|
|
84
|
-
- [Live values and folded steps](
|
|
85
|
-
- [Options: typed, unavailable, grouped, and changed while open](
|
|
86
|
-
- [Colours: `type: 'color'` and `type: 'colorList'`](
|
|
87
|
-
- [Number bounds and fields side by side: `min`, `max` and `{ row }`](
|
|
88
|
-
- [A switch: `ToggleField` and `type: 'toggle'`](
|
|
89
|
-
- [A settings page: `SettingsView`](
|
|
90
|
-
- [A step wizard: `Wizard`](
|
|
91
|
-
- [Confirms show text, not markup](
|
|
92
|
-
- [Markdown: `renderMarkdown`](
|
|
93
|
-
- [A document outline: `createDocumentOutline`](
|
|
94
|
-
- [Action dropdowns: separators](
|
|
95
|
-
- [A list of tags: `createTagInput`](
|
|
96
|
-
- [Progress: bars, lists and phases](
|
|
97
|
-
- [Tabs: `createTabs`](
|
|
98
|
-
- [Progress toasts](
|
|
99
|
-
- [A conversation: `mountConversationView`](
|
|
100
|
-
- [Opening a file: `pickFile`](
|
|
101
|
-
- [The state guard: who wrote that attribute](
|
|
102
|
-
- [The defaults cover FlexDesk's own keys](
|
|
103
|
-
- [Auto-height editors: `maxHeight`](
|
|
104
|
-
- [Storage keys and names are yours](
|
|
105
|
-
- [Derived series: `seriesTransforms`](
|
|
106
|
-
- [No application globals: the gallery picker and plot-window events](
|
|
107
|
-
- [A plot config in any container: `renderPlotGrid`](
|
|
108
|
-
- [Editing a plot config: `renderPlotConfigEditor`](
|
|
109
|
-
- [Figure tiles: one override, the draw is the base's](
|
|
110
|
-
- [A tile's settings as a form: `mountTileConfigForm`](
|
|
88
|
+
- [A menu bar: `createMenuBar`](docs/components/menus.md#a-menu-bar-createmenubar-0170): File / Edit / View menus from one declarative model of items, separators, checks, radios and submenus.
|
|
89
|
+
- [A kind that exists once: `single`](docs/components/shell.md#a-kind-that-exists-once-single-0170): a taxonomy kind marked `single` is mounted once; opening it again goes to the open one.
|
|
90
|
+
- [Panels a page does not offer](docs/components/panels-and-desktops.md#panels-a-page-does-not-offer-0170): a kind declares the panels it offers (`panels: {bottom: false | {reason}}`), content overrides them with `wm.setPanelAvailability`, and withheld panels are left out of the layout.
|
|
91
|
+
- [Panels keep the size you dragged them to](docs/components/panels-and-desktops.md#panels-keep-the-size-you-dragged-them-to-0170): each desktop remembers every panel's share of the window and saves it with the layout as `panelShares`.
|
|
92
|
+
- [A navigation panel you drive yourself: `mountNavPanel`](docs/components/panels-and-desktops.md#a-navigation-panel-you-drive-yourself-mountnavpanel-0170): a mode strip, a shared filter and lazily mounted panes, switched from code with `select(modeId)`.
|
|
93
|
+
- [Buttons that change with the pane: `ctx.setChromeActions`](docs/components/shell.md#buttons-that-change-with-the-pane-ctxsetchromeactions-0170): a pane replaces its chrome buttons at any time, with labels, pressed and disabled states and separators.
|
|
94
|
+
- [Your keys, not the window manager's: `keymap`](docs/components/keymap.md#your-keys-not-the-window-managers-keymap-0170): every window-manager chord can be disabled or rebound; `?` is installed by the shell, not by importing `HelpModal`.
|
|
95
|
+
- [DataTable: columns in the order somebody puts them](docs/components/data-table.md#datatable-columns-in-the-order-somebody-puts-them-0170): columns reorder by dragging their headers or from code, and the order is persisted.
|
|
96
|
+
- [DataTable: a grid of cells you can edit](docs/components/data-table-grid.md#datatable-a-grid-of-cells-you-can-edit-0170): `selectionMode: 'cells'` with keyboard cell navigation, and `editable` cells with in-place editors.
|
|
97
|
+
- [Staged edits, undo and redo, one commit](docs/components/data-table-grid.md#staged-edits-undo-and-redo-one-commit-0170): `staged: true` keeps edits in the table, with Ctrl+Z / Ctrl+Y, until `commit()` hands them over in one call.
|
|
98
|
+
- [Fill handle](docs/components/data-table-grid.md#fill-handle-0170): `fillHandle: true` drags a range's values over neighbouring cells as a spreadsheet does, staged.
|
|
99
|
+
- [DataTable: column groups and structural edits](docs/components/data-table-grid.md#datatable-column-groups-and-structural-edits-0170): a grouped header row and callbacks to add, rename and delete columns and rows.
|
|
100
|
+
- [DataTable: a crosstab, with spanned header rows and pinned label columns](docs/components/data-table-grid.md#datatable-a-crosstab-with-spanned-header-rows-and-pinned-label-columns-0170): `crosstab` draws a matrix in one table and one scroller, with sticky header rows and label columns.
|
|
101
|
+
- [SliderField: a number box, a readout, a default and an enable toggle](docs/components/input-fields.md#sliderfield-a-number-box-a-readout-a-default-and-an-enable-toggle-0170): opt-in companions for the range input.
|
|
102
|
+
- [A stack of collapsible sections: `createSectionStack`](docs/components/layout-widgets.md#a-stack-of-collapsible-sections-createsectionstack-0170): inspector-style titled sections, each opened and closed from its header.
|
|
103
|
+
- [Node bodies](docs/components/flow-canvas-editor.md#node-bodies-0170): a catalogue type draws its own controls inside its canvas node (`render`, `update`, `size`, `accent`).
|
|
104
|
+
- [Edited on the node](docs/components/flow-canvas-editor.md#edited-on-the-node-0170): `inline` settings drawn and edited on the node, and `renameInPlace` for step titles.
|
|
105
|
+
- [Live values and folded steps](docs/components/flow-canvas-editor.md#live-values-and-folded-steps-0170): `setNodeValues` paints badges and port values in place; `collapsible` folds a step to its header. The canvas editor also gains `multiSelect`, `groups`, `notes`, `clipboard`, `zoomControls`, `minimap`, `layout: 'layered'` (with `layeredLayout` from `@flexdesk/canvas`) and viewport persistence, documented in the same chapter.
|
|
106
|
+
- [Options: typed, unavailable, grouped, and changed while open](docs/components/forms-and-dialogs.md#options-typed-unavailable-grouped-and-changed-while-open-0170): form select options keep their type, can be unavailable with a reason, grouped, and replaced while the form is open.
|
|
107
|
+
- [Colours: `type: 'color'` and `type: 'colorList'`](docs/components/forms-and-dialogs.md#colours-type-color-and-type-colorlist-0170): colour fields in forms (`ColorField`, `ColorListField`).
|
|
108
|
+
- [Number bounds and fields side by side: `min`, `max` and `{ row }`](docs/components/forms-and-dialogs.md#number-bounds-and-fields-side-by-side-min-max-and--row--0170): bounded number fields and form rows.
|
|
109
|
+
- [A switch: `ToggleField` and `type: 'toggle'`](docs/components/forms-and-dialogs.md#a-switch-togglefield-and-type-toggle-0170): an on/off switch, standalone or in a form.
|
|
110
|
+
- [A settings page: `SettingsView`](docs/components/settings-view.md#a-settings-page-settingsview-0170): a settings store's schema drawn as a page (`getSettingsStore()` from `@flexdesk/core` for the app-global binding).
|
|
111
|
+
- [A step wizard: `Wizard`](docs/components/wizard.md#a-step-wizard-wizard-0170): a multi-step flow, inline or in a modal window.
|
|
112
|
+
- [Confirms show text, not markup](docs/components/forms-and-dialogs.md#confirms-show-text-not-markup-0170): `openConfirm`'s message and labels, and the delete and close confirms' item names, are set as text.
|
|
113
|
+
- [Markdown: `renderMarkdown`](docs/components/markdown-and-outline.md#markdown-rendermarkdown-0170): a CommonMark-ish subset rendered to an HTML string, with a highlight hook.
|
|
114
|
+
- [A document outline: `createDocumentOutline`](docs/components/markdown-and-outline.md#a-document-outline-createdocumentoutline-0170): a numbered section list that marks the section in view and scrolls to one on click.
|
|
115
|
+
- [Action dropdowns: separators](docs/components/menus.md#action-dropdowns-separators-0170): `{ separator: true }` entries in `ActionDropdown` options.
|
|
116
|
+
- [A list of tags: `createTagInput`](docs/components/input-fields.md#a-list-of-tags-createtaginput-0170): removable chips followed by a text box.
|
|
117
|
+
- [Progress: bars, lists and phases](docs/components/notifications.md#progress-bars-lists-and-phases-0170): `ProgressBar`, `ProgressList` and `StepProgress`, updated in place.
|
|
118
|
+
- [Tabs: `createTabs`](docs/components/layout-widgets.md#tabs-createtabs-0170): one tab strip keyed by your own ids, with or without panes; `createBottomPanelTabs` is built on it.
|
|
119
|
+
- [Progress toasts](docs/components/notifications.md#progress-toasts-0170): a toast that tracks a job, with a progress bar, status and counts; the toast helpers emit on the mounted `NotificationCenter`'s bus (`setToastBus`, `getToastBus`).
|
|
120
|
+
- [A conversation: `mountConversationView`](docs/components/conversation.md#a-conversation-mountconversationview-0170): a transcript of role-tagged messages above a composer.
|
|
121
|
+
- [Opening a file: `pickFile`](docs/concepts/host-port.md#opening-a-file-pickfile-0170): one file picker over every host, from `@flexdesk/host`.
|
|
122
|
+
- [The state guard: who wrote that attribute](docs/concepts/state-guard.md#the-state-guard-who-wrote-that-attribute-0170): writes are attributed to the calling file, `moduleFramePattern` is configurable, and the defaults carry no application's override.
|
|
123
|
+
- [The defaults cover FlexDesk's own keys](docs/concepts/state-guard.md#the-defaults-cover-flexdesks-own-keys-0170): `DEFAULT_STATE_GUARD_CONFIG` allows every key FlexDesk writes, and camelCase and kebab-case entries are the same key.
|
|
124
|
+
- [Auto-height editors: `maxHeight`](docs/components/editor.md#auto-height-editors-maxheight-0170): `createEditor({ maxHeight })` and `setMaxHeight` replace the fixed 400px cap.
|
|
125
|
+
- [Storage keys and names are yours](docs/concepts/domain-neutrality.md#storage-keys-and-names-are-yours-0170): every storage key, theme name, drag MIME, export file name and log service name is configurable, with FlexDesk's own defaults.
|
|
126
|
+
- [Derived series: `seriesTransforms`](docs/components/charts.md#derived-series-seriestransforms-0170): plots draw derived series from transforms the embedder passes in.
|
|
127
|
+
- [No application globals: the gallery picker and plot-window events](docs/concepts/domain-neutrality.md#no-application-globals-the-gallery-picker-and-plot-window-events-0170): the gallery picker takes `entries` or a host `gallery` capability; `PlotPopoutWindow` listens only to the `streamEvents` it is given.
|
|
128
|
+
- [A plot config in any container: `renderPlotGrid`](docs/components/charts.md#a-plot-config-in-any-container-renderplotgrid-0170): the plot window's subplot renderer, exported for any container.
|
|
129
|
+
- [Editing a plot config: `renderPlotConfigEditor`](docs/components/charts.md#editing-a-plot-config-renderplotconfigeditor-0170): an in-place editor for a plot config.
|
|
130
|
+
- [Figure tiles: one override, the draw is the base's](docs/components/tiles.md#figure-tiles-one-override-the-draw-is-the-bases-0170): `FigureTile` is the base of every Plotly tile; a subclass overrides `figure(data)`.
|
|
131
|
+
- [A tile's settings as a form: `mountTileConfigForm`](docs/components/tiles.md#a-tiles-settings-as-a-form-mounttileconfigform-0170): a tile's `getConfigSchema()` drawn as a form, or opened with `openTileConfig`.
|
|
111
132
|
|
|
112
133
|
The package also gains the `flexdesk/css/reset` export (`dist/reset.css`).
|
|
113
134
|
|
|
@@ -118,7 +139,7 @@ Compared with 0.16.1, across every entry point (`core`, `widgets`, `wm`, `host`,
|
|
|
118
139
|
|
|
119
140
|
| Removed from | Name | Replacement |
|
|
120
141
|
|---|---|---|
|
|
121
|
-
| `@flexdesk/widgets` | `PanelStateMachine` | None as a class. Which panels a page offers is declared on its kind (`panels` in `createTaxonomy`) and changed at runtime with `wm.setPanelAvailability`; read it with `wm.isPanelAvailable(side)` / `wm.getPanelAvailability()`, hear changes with `wm.onPanelAvailabilityChange(fn)` or the `wm:panels:availability` bus event, and open or close with `wm.togglePanel(side)`, which answers `false` while a panel is withheld. See [Panels a page does not offer](
|
|
142
|
+
| `@flexdesk/widgets` | `PanelStateMachine` | None as a class. Which panels a page offers is declared on its kind (`panels` in `createTaxonomy`) and changed at runtime with `wm.setPanelAvailability`; read it with `wm.isPanelAvailable(side)` / `wm.getPanelAvailability()`, hear changes with `wm.onPanelAvailabilityChange(fn)` or the `wm:panels:availability` bus event, and open or close with `wm.togglePanel(side)`, which answers `false` while a panel is withheld. See [Panels a page does not offer](docs/components/panels-and-desktops.md#panels-a-page-does-not-offer-0170). |
|
|
122
143
|
| `@flexdesk/widgets` | `PANEL_STATES` | As for `PanelStateMachine`: a panel's state is the desktop's `panels` (open or not) plus its availability. |
|
|
123
144
|
| `@flexdesk/widgets` | `PANEL_TRANSITIONS` | As for `PanelStateMachine`: `togglePanel` and `setPanelAvailability` are the only transitions. |
|
|
124
145
|
|
|
@@ -130,9 +151,9 @@ Not exports, but names an embedder may depend on:
|
|
|
130
151
|
|
|
131
152
|
| What | 0.16.1 | 0.17.0 |
|
|
132
153
|
|---|---|---|
|
|
133
|
-
| `PlotPopoutWindow` chart cells | `div.plot-tile-chart` | `div.twm-plot-grid__cell` inside a `.twm-plot-grid` ([renderPlotGrid](
|
|
134
|
-
| `PlotPopoutWindow` default `streamEvents` | `'streaming:delta'` / `'streaming:complete'` | No defaults: pass `streamEvents: { delta, complete }` ([No application globals](
|
|
135
|
-
| Plot subplot keys | `showHpTrend`, `showHpCycle`, `hpLambda` (ignored now) | `subplot.transforms` with the `seriesTransforms` option ([Derived series](
|
|
154
|
+
| `PlotPopoutWindow` chart cells | `div.plot-tile-chart` | `div.twm-plot-grid__cell` inside a `.twm-plot-grid` ([renderPlotGrid](docs/components/charts.md#a-plot-config-in-any-container-renderplotgrid-0170)) |
|
|
155
|
+
| `PlotPopoutWindow` default `streamEvents` | `'streaming:delta'` / `'streaming:complete'` | No defaults: pass `streamEvents: { delta, complete }` ([No application globals](docs/concepts/domain-neutrality.md#no-application-globals-the-gallery-picker-and-plot-window-events-0170)) |
|
|
156
|
+
| Plot subplot keys | `showHpTrend`, `showHpCycle`, `hpLambda` (ignored now) | `subplot.transforms` with the `seriesTransforms` option ([Derived series](docs/components/charts.md#derived-series-seriestransforms-0170)) |
|
|
136
157
|
| Toast helpers' bus | a window global | the mounted `NotificationCenter`'s bus, or `setToastBus(bus)` |
|
|
137
158
|
| Gallery picker entries | a pywebview bridge method | `entries`, or the host's `gallery.list(kind)` capability |
|
|
138
159
|
| State guard defaults | one application's module override and debug global | `mode: 'warn'`, no overrides; configure `moduleOverrides` / `allow()` and `mode` yourself |
|
|
@@ -142,7 +163,7 @@ Not exports, but names an embedder may depend on:
|
|
|
142
163
|
| Editor tab drag MIME | `'application/x-ecosim-tab'` | `'application/x-flexdesk-tab'`; `setTabDragMime`, `getTabDragMime()` |
|
|
143
164
|
| Chart PNG export file name | `'ecosim_chart'` | `'chart'`; `setChartExportFilename` |
|
|
144
165
|
| `LoggingService` service name | `'ecosim'` | `'flexdesk'`; `new LoggingService({ name })` |
|
|
145
|
-
| Editor height cap | `data-code-max-height="true"` on a `.notebook-editor-container` ancestor (400px) | `createEditor(el, src, { maxHeight })`, `setMaxHeight(px)` ([Auto-height editors](
|
|
166
|
+
| Editor height cap | `data-code-max-height="true"` on a `.notebook-editor-container` ancestor (400px) | `createEditor(el, src, { maxHeight })`, `setMaxHeight(px)` ([Auto-height editors](docs/components/editor.md#auto-height-editors-maxheight-0170)) |
|
|
146
167
|
| `?` help shortcut | installed when `HelpModal` was imported | installed by the shell; without one call `installHelpShortcut()` from `@flexdesk/widgets` |
|
|
147
168
|
| `createDetailHeader` classes | `detail-header__badge`, `detail-header__btn--<variant>` | `twm-detail-header__badge`, `twm-detail-header__btn--<variant>` (plus `twm-btn`, `twm-btn--primary` / `--danger`) |
|
|
148
169
|
| `openConfirm` message and labels | HTML | text; write `\n` for a line break, use `openModal` for markup |
|