flexdesk 0.18.0 → 0.18.2
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 +58 -0
- package/css/flexdesk.css +83 -5
- package/css/tokens.css +7 -0
- package/dist/charts.js +78 -12
- package/dist/charts.js.map +2 -2
- package/dist/{chunk-5W4EEKSK.js → chunk-3BLIVOFD.js} +3 -3
- package/dist/{chunk-P74F6I6P.js → chunk-4X4SY3CP.js} +4 -4
- package/dist/{chunk-P74F6I6P.js.map → chunk-4X4SY3CP.js.map} +2 -2
- package/dist/{chunk-ZL3VKINP.js → chunk-HL3IIHU3.js} +494 -3
- package/dist/{chunk-ZL3VKINP.js.map → chunk-HL3IIHU3.js.map} +4 -4
- package/dist/{chunk-RKVYIXDC.js → chunk-NFZJ6P42.js} +19 -500
- package/dist/chunk-NFZJ6P42.js.map +7 -0
- package/dist/{chunk-U5GKJUOC.js → chunk-QRBOIUU3.js} +5 -6
- package/dist/chunk-QRBOIUU3.js.map +7 -0
- package/dist/flexdesk.css +83 -5
- package/dist/flow.js +22 -10
- package/dist/flow.js.map +2 -2
- package/dist/git.js +3 -3
- package/dist/tiles.js +4 -4
- package/dist/tokens.css +7 -0
- package/dist/widgets.js +226 -58
- package/dist/widgets.js.map +2 -2
- package/dist/wm.js +2 -2
- package/docs/components/charts.md +40 -0
- package/docs/components/chat-shell.md +8 -2
- package/docs/components/filter-builder.md +52 -6
- package/docs/components/flow-editors.md +20 -0
- package/docs/components/forms-and-dialogs.md +8 -0
- package/docs/components/input-fields.md +24 -0
- package/docs/components/menus.md +4 -0
- package/docs/components/shell.md +4 -0
- package/docs/components/workspace-picker.md +46 -2
- package/package.json +1 -1
- package/src/charts/plot_config_editor.js +92 -6
- package/src/charts/plot_grid.js +6 -1
- package/src/flow/kit/settings_panel.js +24 -9
- package/src/ui/components/chat_shell.js +7 -1
- package/src/ui/components/context_menu.js +8 -2
- package/src/ui/components/filter_builder.js +53 -28
- package/src/ui/components/filter_model.js +86 -18
- package/src/ui/components/inline_renamer.js +10 -5
- package/src/ui/components/modal.js +25 -8
- package/src/ui/components/workspace_picker.js +125 -27
- package/src/ui/utils/tooltip_service.js +81 -14
- package/dist/chunk-RKVYIXDC.js.map +0 -7
- package/dist/chunk-U5GKJUOC.js.map +0 -7
- /package/dist/{chunk-5W4EEKSK.js.map → chunk-3BLIVOFD.js.map} +0 -0
package/dist/flexdesk.css
CHANGED
|
@@ -4899,14 +4899,14 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
4899
4899
|
.twm-wspicker-field--open {
|
|
4900
4900
|
outline: none;
|
|
4901
4901
|
background: var(--state-active);
|
|
4902
|
-
border-color: var(--
|
|
4902
|
+
border-color: var(--twm-wspicker-field-focus-border);
|
|
4903
4903
|
}
|
|
4904
4904
|
.twm-wspicker-field [hidden] {
|
|
4905
4905
|
display: none;
|
|
4906
4906
|
}
|
|
4907
4907
|
.twm-wspicker-field__icon.material-symbols-outlined {
|
|
4908
4908
|
flex: none;
|
|
4909
|
-
color: var(--
|
|
4909
|
+
color: var(--twm-wspicker-field-icon);
|
|
4910
4910
|
font-size: 15px;
|
|
4911
4911
|
opacity: 0.85;
|
|
4912
4912
|
}
|
|
@@ -4921,11 +4921,11 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
4921
4921
|
white-space: nowrap;
|
|
4922
4922
|
}
|
|
4923
4923
|
.twm-wspicker-field--muted .twm-wspicker-field__name {
|
|
4924
|
-
font-style:
|
|
4925
|
-
opacity:
|
|
4924
|
+
font-style: var(--twm-wspicker-field-muted-style);
|
|
4925
|
+
opacity: var(--twm-wspicker-field-muted-opacity);
|
|
4926
4926
|
}
|
|
4927
4927
|
.twm-wspicker-field--muted .twm-wspicker-field__icon.material-symbols-outlined {
|
|
4928
|
-
color: var(--
|
|
4928
|
+
color: var(--twm-wspicker-field-muted-icon);
|
|
4929
4929
|
}
|
|
4930
4930
|
.twm-wspicker-field__key {
|
|
4931
4931
|
flex: none;
|
|
@@ -5063,6 +5063,10 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
5063
5063
|
background: var(--state-selected);
|
|
5064
5064
|
color: var(--text-bright);
|
|
5065
5065
|
}
|
|
5066
|
+
/* A row with focus wears the highlight; no ring as well. */
|
|
5067
|
+
.twm-wspicker__row:focus {
|
|
5068
|
+
outline: none;
|
|
5069
|
+
}
|
|
5066
5070
|
.twm-wspicker__row--disabled {
|
|
5067
5071
|
color: var(--text-dim);
|
|
5068
5072
|
cursor: default;
|
|
@@ -5143,6 +5147,10 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
5143
5147
|
width: calc(100% - 2 * var(--space-md));
|
|
5144
5148
|
margin: var(--space-xs) var(--space-md);
|
|
5145
5149
|
}
|
|
5150
|
+
.twm-wspicker__more[aria-disabled="true"] {
|
|
5151
|
+
opacity: 0.4;
|
|
5152
|
+
cursor: not-allowed;
|
|
5153
|
+
}
|
|
5146
5154
|
.twm-wspicker__more-label {
|
|
5147
5155
|
min-width: 0;
|
|
5148
5156
|
overflow: hidden;
|
|
@@ -5392,6 +5400,9 @@ body.twm-window-maximized .twm-resize-handle {
|
|
|
5392
5400
|
.twm-filter-builder__select--field {
|
|
5393
5401
|
flex: 0 1 140px;
|
|
5394
5402
|
}
|
|
5403
|
+
.twm-filter-builder__select--unknown {
|
|
5404
|
+
flex: 0 1 auto;
|
|
5405
|
+
}
|
|
5395
5406
|
.twm-filter-builder__select--op {
|
|
5396
5407
|
flex: 0 1 120px;
|
|
5397
5408
|
}
|
|
@@ -12372,6 +12383,23 @@ button.twm-alerts__ref:hover { text-decoration: underline; }
|
|
|
12372
12383
|
.twm-plot-config__row > .twm-plot-config__input--select {
|
|
12373
12384
|
flex: 0 1 auto;
|
|
12374
12385
|
}
|
|
12386
|
+
/* A reference line's value that may name a constant, and what the name is now. */
|
|
12387
|
+
.twm-plot-config__constant {
|
|
12388
|
+
display: inline-flex;
|
|
12389
|
+
flex: 1 1 140px;
|
|
12390
|
+
align-items: center;
|
|
12391
|
+
gap: var(--space-xs);
|
|
12392
|
+
min-width: 0;
|
|
12393
|
+
}
|
|
12394
|
+
.twm-plot-config__constant > .twm-plot-config__input {
|
|
12395
|
+
flex: 1 1 auto;
|
|
12396
|
+
min-width: 0;
|
|
12397
|
+
}
|
|
12398
|
+
.twm-plot-config__constant-value {
|
|
12399
|
+
flex: none;
|
|
12400
|
+
color: var(--text-muted);
|
|
12401
|
+
font-size: var(--font-size-xs);
|
|
12402
|
+
}
|
|
12375
12403
|
/* On a field line a colour is the swatch and a hex box sized to `#rrggbb`. */
|
|
12376
12404
|
.twm-plot-config__field > .twm-color-field {
|
|
12377
12405
|
flex: 0 1 auto;
|
|
@@ -13614,6 +13642,55 @@ button.twm-alerts__ref:hover { text-decoration: underline; }
|
|
|
13614
13642
|
color: var(--twm-flow-warning-text);
|
|
13615
13643
|
}
|
|
13616
13644
|
|
|
13645
|
+
/* ── the settings panel as a sheet (variant: 'sheet', 0.18.2) ──────────
|
|
13646
|
+
* Flat: no fill and no chip. The title and the description sit in a margin at
|
|
13647
|
+
* the left, the fields beside them; two sheets in a row are split by a rule, so
|
|
13648
|
+
* a page of them reads as one form in sections. Narrower than 560px, the margin
|
|
13649
|
+
* goes above the fields. */
|
|
13650
|
+
.twm-flow-panel--sheet {
|
|
13651
|
+
container-type: inline-size;
|
|
13652
|
+
gap: 0;
|
|
13653
|
+
padding: 14px 0;
|
|
13654
|
+
background: transparent;
|
|
13655
|
+
}
|
|
13656
|
+
.twm-flow-panel--sheet + .twm-flow-panel--sheet {
|
|
13657
|
+
border-top: 1px solid var(--border-subtle);
|
|
13658
|
+
}
|
|
13659
|
+
.twm-flow-panel__sheet {
|
|
13660
|
+
display: grid;
|
|
13661
|
+
grid-template-columns: minmax(120px, 180px) minmax(0, 1fr);
|
|
13662
|
+
gap: 10px 28px;
|
|
13663
|
+
align-items: start;
|
|
13664
|
+
}
|
|
13665
|
+
.twm-flow-panel__margin {
|
|
13666
|
+
display: flex;
|
|
13667
|
+
flex-direction: column;
|
|
13668
|
+
gap: 4px;
|
|
13669
|
+
min-width: 0;
|
|
13670
|
+
padding-top: 5px;
|
|
13671
|
+
}
|
|
13672
|
+
.twm-flow-panel__body {
|
|
13673
|
+
display: flex;
|
|
13674
|
+
flex-direction: column;
|
|
13675
|
+
gap: 12px;
|
|
13676
|
+
min-width: 0;
|
|
13677
|
+
}
|
|
13678
|
+
.twm-flow-panel--sheet .twm-flow-panel__icon { display: none; }
|
|
13679
|
+
.twm-flow-panel--sheet .twm-flow-panel__titles { flex-basis: auto; }
|
|
13680
|
+
.twm-flow-panel--sheet .twm-flow-panel__title,
|
|
13681
|
+
.twm-flow-panel--sheet .twm-flow-panel__title-input {
|
|
13682
|
+
font-size: var(--font-size-md);
|
|
13683
|
+
}
|
|
13684
|
+
.twm-flow-panel--sheet .twm-flow-panel__description {
|
|
13685
|
+
font-size: var(--font-size-xs);
|
|
13686
|
+
color: var(--twm-flow-muted);
|
|
13687
|
+
}
|
|
13688
|
+
.twm-flow-panel--sheet .twm-flow-panel__fields { gap: 10px; }
|
|
13689
|
+
.twm-flow-panel--sheet .twm-flow-field__label { flex-basis: 110px; }
|
|
13690
|
+
@container (max-width: 560px) {
|
|
13691
|
+
.twm-flow-panel__sheet { grid-template-columns: minmax(0, 1fr); }
|
|
13692
|
+
}
|
|
13693
|
+
|
|
13617
13694
|
/* ── a field: its label, its control, its finding, its help ─────────── */
|
|
13618
13695
|
.twm-flow-field {
|
|
13619
13696
|
display: flex;
|
|
@@ -13759,6 +13836,7 @@ button.twm-alerts__ref:hover { text-decoration: underline; }
|
|
|
13759
13836
|
resize: vertical;
|
|
13760
13837
|
}
|
|
13761
13838
|
.twm-flow-checkbox {
|
|
13839
|
+
align-self: flex-start;
|
|
13762
13840
|
margin: 6px 0 0;
|
|
13763
13841
|
accent-color: var(--twm-flow-focus);
|
|
13764
13842
|
}
|
package/dist/flow.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-DNJ3N4T4.js";
|
|
4
4
|
import {
|
|
5
5
|
DataTable
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QRBOIUU3.js";
|
|
7
7
|
import "./chunk-VLOAI3HS.js";
|
|
8
8
|
import {
|
|
9
9
|
choiceList,
|
|
@@ -2197,11 +2197,16 @@ function createSettingsPanel({
|
|
|
2197
2197
|
values = null,
|
|
2198
2198
|
valuesNote = null,
|
|
2199
2199
|
columns = null,
|
|
2200
|
-
host = null
|
|
2200
|
+
host = null,
|
|
2201
|
+
variant = "card"
|
|
2201
2202
|
} = {}) {
|
|
2202
2203
|
if (!widgets?.get) throw new Error("createSettingsPanel needs a widget registry (createWidgetRegistry()).");
|
|
2204
|
+
if (variant !== "card" && variant !== "sheet") {
|
|
2205
|
+
throw new Error(`createSettingsPanel's variant is 'card' or 'sheet', not ${JSON.stringify(variant)}.`);
|
|
2206
|
+
}
|
|
2207
|
+
const sheet = variant === "sheet";
|
|
2203
2208
|
const S = createStrings(strings);
|
|
2204
|
-
const root = el("section", "twm-flow-panel");
|
|
2209
|
+
const root = el("section", sheet ? "twm-flow-panel twm-flow-panel--sheet" : "twm-flow-panel");
|
|
2205
2210
|
root.setAttribute("role", "region");
|
|
2206
2211
|
root.setAttribute("aria-label", say(S, "settings"));
|
|
2207
2212
|
if (host) host.appendChild(root);
|
|
@@ -2316,15 +2321,22 @@ function createSettingsPanel({
|
|
|
2316
2321
|
root.replaceChildren();
|
|
2317
2322
|
if (!spec) return;
|
|
2318
2323
|
if (isReadOnly() && readOnlyReason()) root.appendChild(el("p", "twm-flow-panel__readonly", readOnlyReason()));
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
if (
|
|
2324
|
+
const margin = sheet ? el("div", "twm-flow-panel__margin") : root;
|
|
2325
|
+
const body = sheet ? el("div", "twm-flow-panel__body") : root;
|
|
2326
|
+
if (sheet) {
|
|
2327
|
+
const grid = el("div", "twm-flow-panel__sheet");
|
|
2328
|
+
grid.append(margin, body);
|
|
2329
|
+
root.appendChild(grid);
|
|
2330
|
+
}
|
|
2331
|
+
margin.appendChild(paintHeader());
|
|
2332
|
+
if (spec.description) margin.appendChild(el("p", "twm-flow-panel__description", spec.description));
|
|
2333
|
+
if (spec.idLine) body.appendChild(el("div", "twm-flow-panel__id", spec.idLine));
|
|
2322
2334
|
findingsBox = el("ul", "twm-flow-panel__findings");
|
|
2323
2335
|
findingsBox.hidden = true;
|
|
2324
|
-
|
|
2336
|
+
body.appendChild(findingsBox);
|
|
2325
2337
|
slotBefore = el("div", "twm-flow-panel__slot");
|
|
2326
2338
|
slotBefore.dataset.slot = "before";
|
|
2327
|
-
|
|
2339
|
+
body.appendChild(slotBefore);
|
|
2328
2340
|
const list = el("div", "twm-flow-panel__fields");
|
|
2329
2341
|
allFields = Array.isArray(spec.fields) ? spec.fields : fieldsFromSchema(spec.type?.config_schema);
|
|
2330
2342
|
const drawn = visibleFields(allFields, current);
|
|
@@ -2361,10 +2373,10 @@ function createSettingsPanel({
|
|
|
2361
2373
|
const anchor = placed(e);
|
|
2362
2374
|
if (anchor === null || !keys.has(anchor)) drawExtra(e);
|
|
2363
2375
|
}
|
|
2364
|
-
|
|
2376
|
+
body.appendChild(list);
|
|
2365
2377
|
slotAfter = el("div", "twm-flow-panel__slot");
|
|
2366
2378
|
slotAfter.dataset.slot = "after";
|
|
2367
|
-
|
|
2379
|
+
body.appendChild(slotAfter);
|
|
2368
2380
|
paintSlots();
|
|
2369
2381
|
applyFindings();
|
|
2370
2382
|
}
|