@graview/primitives 0.1.27 → 0.1.29
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/dist/app-bar.d.ts.map +1 -1
- package/dist/app-bar.js +9 -9
- package/dist/app-bar.js.map +1 -1
- package/dist/app-link-door.d.ts +3 -0
- package/dist/app-link-door.d.ts.map +1 -0
- package/dist/app-link-door.js +11 -0
- package/dist/app-link-door.js.map +1 -0
- package/dist/app-link.d.ts +20 -0
- package/dist/app-link.d.ts.map +1 -0
- package/dist/app-link.js +131 -0
- package/dist/app-link.js.map +1 -0
- package/dist/arrange-bar.d.ts +47 -4
- package/dist/arrange-bar.d.ts.map +1 -1
- package/dist/arrange-bar.js +73 -11
- package/dist/arrange-bar.js.map +1 -1
- package/dist/arrange-lists.d.ts +58 -1
- package/dist/arrange-lists.d.ts.map +1 -1
- package/dist/arrange-lists.js +152 -23
- package/dist/arrange-lists.js.map +1 -1
- package/dist/arrangement.d.ts.map +1 -1
- package/dist/arrangement.js +3 -1
- package/dist/arrangement.js.map +1 -1
- package/dist/bar-panes.d.ts +1 -0
- package/dist/bar-panes.d.ts.map +1 -1
- package/dist/bar-panes.js +1 -0
- package/dist/bar-panes.js.map +1 -1
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +3 -1
- package/dist/chat.js.map +1 -1
- package/dist/choosing.d.ts +36 -0
- package/dist/choosing.d.ts.map +1 -0
- package/dist/choosing.js +224 -0
- package/dist/choosing.js.map +1 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +2 -1
- package/dist/connections.js.map +1 -1
- package/dist/declared-lens-doors.d.ts.map +1 -1
- package/dist/declared-lens-doors.js +5 -1
- package/dist/declared-lens-doors.js.map +1 -1
- package/dist/declared-lenses.d.ts +3 -2
- package/dist/declared-lenses.d.ts.map +1 -1
- package/dist/declared-lenses.js +5 -4
- package/dist/declared-lenses.js.map +1 -1
- package/dist/default-views.d.ts.map +1 -1
- package/dist/default-views.js +74 -18
- package/dist/default-views.js.map +1 -1
- package/dist/draft-frame.d.ts +1 -0
- package/dist/draft-frame.d.ts.map +1 -1
- package/dist/draft-frame.js +1 -0
- package/dist/draft-frame.js.map +1 -1
- package/dist/editable.d.ts +19 -1
- package/dist/editable.d.ts.map +1 -1
- package/dist/editable.js +62 -34
- package/dist/editable.js.map +1 -1
- package/dist/files.d.ts +1 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +1 -0
- package/dist/files.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +13 -6
- package/dist/find.js.map +1 -1
- package/dist/frame.d.ts +1 -2
- package/dist/frame.d.ts.map +1 -1
- package/dist/frame.js +19 -2
- package/dist/frame.js.map +1 -1
- package/dist/framework-views.d.ts +1 -0
- package/dist/framework-views.d.ts.map +1 -1
- package/dist/framework-views.js +1 -0
- package/dist/framework-views.js.map +1 -1
- package/dist/home-view.d.ts +1 -0
- package/dist/home-view.d.ts.map +1 -1
- package/dist/home-view.js +1 -0
- package/dist/home-view.js.map +1 -1
- package/dist/index.d.ts +14 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/installation.js +1 -1
- package/dist/installation.js.map +1 -1
- package/dist/kind-shape.d.ts +130 -0
- package/dist/kind-shape.d.ts.map +1 -0
- package/dist/kind-shape.js +299 -0
- package/dist/kind-shape.js.map +1 -0
- package/dist/kind-stop.d.ts +16 -0
- package/dist/kind-stop.d.ts.map +1 -0
- package/dist/kind-stop.js +377 -0
- package/dist/kind-stop.js.map +1 -0
- package/dist/lens/arranging.d.ts.map +1 -1
- package/dist/lens/arranging.js +13 -4
- package/dist/lens/arranging.js.map +1 -1
- package/dist/lens/calendar-dates.d.ts +4 -3
- package/dist/lens/calendar-dates.d.ts.map +1 -1
- package/dist/lens/calendar-dates.js +12 -5
- package/dist/lens/calendar-dates.js.map +1 -1
- package/dist/lens/calendar-drawing.js +8 -8
- package/dist/lens/calendar-drawing.js.map +1 -1
- package/dist/lens/calendar-options.d.ts +2 -0
- package/dist/lens/calendar-options.d.ts.map +1 -1
- package/dist/lens/calendar-options.js.map +1 -1
- package/dist/lens/calendar-placing.d.ts +13 -0
- package/dist/lens/calendar-placing.d.ts.map +1 -1
- package/dist/lens/calendar-placing.js +23 -2
- package/dist/lens/calendar-placing.js.map +1 -1
- package/dist/lens/calendar-spans.d.ts.map +1 -1
- package/dist/lens/calendar-spans.js +5 -4
- package/dist/lens/calendar-spans.js.map +1 -1
- package/dist/lens/calendar-view.js +9 -5
- package/dist/lens/calendar-view.js.map +1 -1
- package/dist/lens/columns.d.ts.map +1 -1
- package/dist/lens/columns.js +35 -7
- package/dist/lens/columns.js.map +1 -1
- package/dist/lens/timeline.d.ts +1 -1
- package/dist/lens/timeline.d.ts.map +1 -1
- package/dist/lens/timeline.js +126 -16
- package/dist/lens/timeline.js.map +1 -1
- package/dist/lines-key.d.ts.map +1 -1
- package/dist/lines-key.js +11 -5
- package/dist/lines-key.js.map +1 -1
- package/dist/map-asks.d.ts +10 -0
- package/dist/map-asks.d.ts.map +1 -0
- package/dist/map-asks.js +17 -0
- package/dist/map-asks.js.map +1 -0
- package/dist/map-key.d.ts +3 -0
- package/dist/map-key.d.ts.map +1 -0
- package/dist/map-key.js +35 -0
- package/dist/map-key.js.map +1 -0
- package/dist/map-panel-door.d.ts +26 -0
- package/dist/map-panel-door.d.ts.map +1 -0
- package/dist/map-panel-door.js +42 -0
- package/dist/map-panel-door.js.map +1 -0
- package/dist/map-panel.d.ts +8 -0
- package/dist/map-panel.d.ts.map +1 -0
- package/dist/map-panel.js +351 -0
- package/dist/map-panel.js.map +1 -0
- package/dist/markdown-body.d.ts +11 -0
- package/dist/markdown-body.d.ts.map +1 -0
- package/dist/markdown-body.js +89 -0
- package/dist/markdown-body.js.map +1 -0
- package/dist/notice-stacks.d.ts +13 -0
- package/dist/notice-stacks.d.ts.map +1 -0
- package/dist/notice-stacks.js +141 -0
- package/dist/notice-stacks.js.map +1 -0
- package/dist/notices.d.ts +2 -0
- package/dist/notices.d.ts.map +1 -1
- package/dist/notices.js +30 -132
- package/dist/notices.js.map +1 -1
- package/dist/pages.d.ts +9 -1
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +8 -1
- package/dist/pages.js.map +1 -1
- package/dist/places.d.ts +1 -1
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +9 -5
- package/dist/places.js.map +1 -1
- package/dist/primitives/index.d.ts +11 -1
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +15 -4
- package/dist/primitives/index.js.map +1 -1
- package/dist/problem-count.d.ts +18 -0
- package/dist/problem-count.d.ts.map +1 -0
- package/dist/problem-count.js +46 -0
- package/dist/problem-count.js.map +1 -0
- package/dist/prose-editor.d.ts +4 -1
- package/dist/prose-editor.d.ts.map +1 -1
- package/dist/prose-editor.js +13 -6
- package/dist/prose-editor.js.map +1 -1
- package/dist/relation-key.d.ts +3 -1
- package/dist/relation-key.d.ts.map +1 -1
- package/dist/relation-key.js +23 -6
- package/dist/relation-key.js.map +1 -1
- package/dist/repeat-picker-door.d.ts +10 -0
- package/dist/repeat-picker-door.d.ts.map +1 -0
- package/dist/repeat-picker-door.js +13 -0
- package/dist/repeat-picker-door.js.map +1 -0
- package/dist/repeat-picker.d.ts +29 -0
- package/dist/repeat-picker.d.ts.map +1 -0
- package/dist/repeat-picker.js +64 -0
- package/dist/repeat-picker.js.map +1 -0
- package/dist/resolve-app-context.d.ts +3 -0
- package/dist/resolve-app-context.d.ts.map +1 -0
- package/dist/resolve-app-context.js +10 -0
- package/dist/resolve-app-context.js.map +1 -0
- package/dist/rule-line.d.ts.map +1 -1
- package/dist/rule-line.js +2 -1
- package/dist/rule-line.js.map +1 -1
- package/dist/scene-bar.js +2 -2
- package/dist/scene-bar.js.map +1 -1
- package/dist/scene-css.d.ts.map +1 -1
- package/dist/scene-css.js +224 -213
- package/dist/scene-css.js.map +1 -1
- package/dist/scene-places.d.ts +6 -0
- package/dist/scene-places.d.ts.map +1 -1
- package/dist/scene-places.js +14 -14
- package/dist/scene-places.js.map +1 -1
- package/dist/scene-way-back-door.d.ts +1 -0
- package/dist/scene-way-back-door.d.ts.map +1 -1
- package/dist/scene-way-back-door.js +1 -0
- package/dist/scene-way-back-door.js.map +1 -1
- package/dist/scene.d.ts +3 -1
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +3 -1
- package/dist/scene.js.map +1 -1
- package/dist/seat-field.js +2 -2
- package/dist/seat-field.js.map +1 -1
- package/dist/seat-panel.d.ts +1 -0
- package/dist/seat-panel.d.ts.map +1 -1
- package/dist/seat-panel.js +5 -2
- package/dist/seat-panel.js.map +1 -1
- package/dist/seeding.d.ts.map +1 -1
- package/dist/seeding.js +2 -1
- package/dist/seeding.js.map +1 -1
- package/dist/several-bar.d.ts +23 -0
- package/dist/several-bar.d.ts.map +1 -0
- package/dist/several-bar.js +158 -0
- package/dist/several-bar.js.map +1 -0
- package/dist/several-door.d.ts +7 -0
- package/dist/several-door.d.ts.map +1 -0
- package/dist/several-door.js +20 -0
- package/dist/several-door.js.map +1 -0
- package/dist/shell.d.ts +10 -2
- package/dist/shell.d.ts.map +1 -1
- package/dist/shell.js +15 -12
- package/dist/shell.js.map +1 -1
- package/dist/spec-css.d.ts.map +1 -1
- package/dist/spec-css.js +70 -55
- package/dist/spec-css.js.map +1 -1
- package/dist/spec-views.d.ts +8 -0
- package/dist/spec-views.d.ts.map +1 -1
- package/dist/spec-views.js +16 -5
- package/dist/spec-views.js.map +1 -1
- package/dist/states-bar.d.ts +15 -0
- package/dist/states-bar.d.ts.map +1 -0
- package/dist/states-bar.js +36 -0
- package/dist/states-bar.js.map +1 -0
- package/dist/text-body.d.ts +7 -3
- package/dist/text-body.d.ts.map +1 -1
- package/dist/text-body.js +10 -2
- package/dist/text-body.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +11 -4
- package/dist/theme.js.map +1 -1
- package/dist/workbench/activity.d.ts +2 -0
- package/dist/workbench/activity.d.ts.map +1 -1
- package/dist/workbench/activity.js +5 -2
- package/dist/workbench/activity.js.map +1 -1
- package/dist/workbench/agent-seat.d.ts.map +1 -1
- package/dist/workbench/agent-seat.js +3 -2
- package/dist/workbench/agent-seat.js.map +1 -1
- package/dist/workbench/answer-args.d.ts +3 -1
- package/dist/workbench/answer-args.d.ts.map +1 -1
- package/dist/workbench/answer-args.js +18 -7
- package/dist/workbench/answer-args.js.map +1 -1
- package/dist/workbench/back-out.d.ts.map +1 -1
- package/dist/workbench/back-out.js +12 -4
- package/dist/workbench/back-out.js.map +1 -1
- package/dist/workbench/index.d.ts +1 -1
- package/dist/workbench/index.d.ts.map +1 -1
- package/dist/workbench/index.js +1 -1
- package/dist/workbench/index.js.map +1 -1
- package/dist/workbench/inspector-door.d.ts +34 -0
- package/dist/workbench/inspector-door.d.ts.map +1 -0
- package/dist/workbench/inspector-door.js +96 -0
- package/dist/workbench/inspector-door.js.map +1 -0
- package/dist/workbench/inspector.d.ts +8 -27
- package/dist/workbench/inspector.d.ts.map +1 -1
- package/dist/workbench/inspector.js +15 -28
- package/dist/workbench/inspector.js.map +1 -1
- package/dist/workbench/trail.d.ts.map +1 -1
- package/dist/workbench/trail.js +3 -2
- package/dist/workbench/trail.js.map +1 -1
- package/package.json +6 -6
package/dist/arrange-bar.js
CHANGED
|
@@ -1,20 +1,66 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { arrangeAllows, arrangeable, formatArrangement } from "@graview/core/arrange";
|
|
3
|
-
import { dayAsRead, labelOf,
|
|
3
|
+
import { dayAsRead, labelOf, } from "@graview/core";
|
|
4
|
+
import { valueWords } from "@graview/core/words";
|
|
4
5
|
import { retryingImport } from "@graview/core/retry";
|
|
5
6
|
import { lazyModule, POPOVER_STYLE, usePopover } from "@graview/react/provider";
|
|
6
|
-
import { useEffect, useRef } from "react";
|
|
7
|
+
import { Suspense, useEffect, useRef } from "react";
|
|
7
8
|
import { VISUALLY_HIDDEN } from "./primitives/measure.js";
|
|
8
9
|
export { arrangementOf, withArrangement } from "./arrangement.js";
|
|
10
|
+
import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
|
|
11
|
+
/*
|
|
12
|
+
* WHAT A LIST OFFERS TO FILTER BY AS AN APP GROWS. Here, beside the line
|
|
13
|
+
* that asks it, rather than with the arranging a lens in the scene carries.
|
|
14
|
+
*/
|
|
15
|
+
/** From how many records at a relation's far end it is found by typing a few letters rather than listed whole. */
|
|
16
|
+
export const TYPED_FROM = 9;
|
|
17
|
+
/** From how many records at a relation's far end a list leaves it out of its filters unless the declaration names it. */
|
|
18
|
+
export const MANY_AT_THE_FAR_END = 40;
|
|
19
|
+
/** The choice fields a list shows as chips when the declaration names none: the first two it offers. */
|
|
20
|
+
export const CHIP_FIELDS = 2;
|
|
21
|
+
/** How many records each kind holds, for the far ends of a kind's relations. */
|
|
22
|
+
export function farCounts(graph) {
|
|
23
|
+
const counts = new Map();
|
|
24
|
+
for (const node of graph.allNodes())
|
|
25
|
+
counts.set(node.kind, (counts.get(node.kind) ?? 0) + 1);
|
|
26
|
+
return counts;
|
|
27
|
+
}
|
|
28
|
+
/** How many records stand at an offer's far end: every record of its far kinds. */
|
|
29
|
+
export const farCount = (offer, counts) => (offer.far ?? []).reduce((sum, kind) => sum + (counts.get(kind) ?? 0), 0);
|
|
30
|
+
/**
|
|
31
|
+
* WHAT A LIST OFFERS TO FILTER BY, AS AN APP GROWS.
|
|
32
|
+
*
|
|
33
|
+
* Every way the declaration allows is too many once a relation's far end
|
|
34
|
+
* holds ninety features: the menu listed every one of them. `named` — a
|
|
35
|
+
* declaration's `pages.lists.<kind>.filters` — is what the list offers, in
|
|
36
|
+
* that order. Unsaid, every way but a relation to a kind with many records
|
|
37
|
+
* (`MANY_AT_THE_FAR_END`), which is offered instead by what its far end is
|
|
38
|
+
* (a choice field over the edge, `about: "via"`); a via offer is not
|
|
39
|
+
* offered otherwise — the relation itself says it.
|
|
40
|
+
*/
|
|
41
|
+
export function offeredFilters(offers, graph, named) {
|
|
42
|
+
if (named)
|
|
43
|
+
return named.flatMap((key) => offers.filters.filter((offer) => offer.key === key));
|
|
44
|
+
const counts = farCounts(graph);
|
|
45
|
+
const many = new Set(offers.filters.filter((offer) => offer.about === "edge" && farCount(offer, counts) > MANY_AT_THE_FAR_END).map((offer) => offer.key));
|
|
46
|
+
return offers.filters.filter((offer) => (offer.about === "edge" ? !many.has(offer.key) : offer.about === "via" ? many.has(offer.key.split(".")[0]) : true));
|
|
47
|
+
}
|
|
48
|
+
/** The choice fields of what a list offers that it shows as chips: the ones named, else the first `CHIP_FIELDS`. */
|
|
49
|
+
export function chipOffers(offered, named) {
|
|
50
|
+
const choices = offered.filter((offer) => offer.about === "field" && offer.type === "choice" && (offer.options?.length ?? 0) > 0);
|
|
51
|
+
return named ? choices : choices.slice(0, CHIP_FIELDS);
|
|
52
|
+
}
|
|
9
53
|
/** Below this width of its own the line is a phone's: the count and one "Arrange". */
|
|
10
54
|
export const ARRANGE_NARROW = 520;
|
|
11
|
-
/** A condition in words: "Due before 1
|
|
55
|
+
/** A condition in words: "Due before Oct 1, 2026", "The list it is on: Today", "Past". */
|
|
12
56
|
export function sayCondition(schema, graph, offers, condition) {
|
|
13
57
|
const offer = offers.filters.find((candidate) => candidate.key === condition.key);
|
|
14
58
|
if (!offer)
|
|
15
59
|
return `${condition.key}: ${condition.value}`;
|
|
16
60
|
if (offer.about === "is")
|
|
17
61
|
return condition.value.charAt(0).toUpperCase() + condition.value.slice(1);
|
|
62
|
+
if (offer.about === "via")
|
|
63
|
+
return `${offer.label}: ${valueWords(schema.tryDefinition(offer.far?.[0] ?? ""), offer.key.split(".")[1], condition.value)}`;
|
|
18
64
|
if (offer.about === "edge") {
|
|
19
65
|
if (condition.value === "*")
|
|
20
66
|
return `${offer.label}: anything`;
|
|
@@ -25,7 +71,7 @@ export function sayCondition(schema, graph, offers, condition) {
|
|
|
25
71
|
}
|
|
26
72
|
if (offer.type === "date") {
|
|
27
73
|
const [op, date] = condition.value.split(":");
|
|
28
|
-
// The day as a person reads it ("Due before 1
|
|
74
|
+
// The day as a person reads it ("Due before Sep 1, 2026" in en-US), as the chip's card says it.
|
|
29
75
|
return `${offer.label} ${op} ${date ? dayAsRead(date) : ""}`.trim();
|
|
30
76
|
}
|
|
31
77
|
if (offer.type === "boolean")
|
|
@@ -58,17 +104,27 @@ export function directionWords(offer) {
|
|
|
58
104
|
/** The lists the line opens, fetched when first wanted (`arrange-lists.tsx`). */
|
|
59
105
|
const LISTS = lazyModule(retryingImport(() => import("./arrange-lists.js")));
|
|
60
106
|
const Lists = LISTS.part((module, props) => _jsx(module.ArrangeLists, { ...props }), { what: "This list", quiet: true });
|
|
107
|
+
const Chips = LISTS.part((module, props) => _jsx(module.ArrangeChips, { ...props }), { what: "This list", quiet: true });
|
|
61
108
|
/** The lists, fetched now: for a test, or a page that knows a list is about to open. */
|
|
62
109
|
export const preloadArrangeLists = () => LISTS.load();
|
|
63
110
|
/** What each bar last sent, by its test id and kind (see `ArrangeBar`). */
|
|
64
111
|
const SENT = new Map();
|
|
65
112
|
export function ArrangeBar(props) {
|
|
66
113
|
const { schema, graph, kind, arrangement: given, onChange } = props;
|
|
67
|
-
|
|
114
|
+
// A list hands its own (through its relations to their far ends, `throughEdges`); a lens's are its kind's.
|
|
115
|
+
const offers = props.offers ?? arrangeable(schema, kind);
|
|
68
116
|
const id = props.testId ?? "arrange";
|
|
69
117
|
const canSort = arrangeAllows(props.allow, "sort") && offers.sorts.length > 1;
|
|
70
118
|
const canGroup = arrangeAllows(props.allow, "group") && offers.groups.length > 0;
|
|
71
|
-
|
|
119
|
+
/*
|
|
120
|
+
* WHAT IS OFFERED, AS THE APP GROWS: the ways the declaration names, or
|
|
121
|
+
* all but a relation to many records; its choice fields stand as chips
|
|
122
|
+
* when the list hands its records, and Filter holds the rest.
|
|
123
|
+
*/
|
|
124
|
+
const offered = arrangeAllows(props.allow, "filter") ? offeredFilters(offers, graph, props.filters) : [];
|
|
125
|
+
const chipped = props.chips ? chipOffers(offered, props.filters) : [];
|
|
126
|
+
const menu = offered.filter((offer) => !chipped.includes(offer));
|
|
127
|
+
const canFilter = menu.length > 0;
|
|
72
128
|
const words = props.query !== false && props.allow !== false;
|
|
73
129
|
const count = countWords(props.noun, props.kept);
|
|
74
130
|
if (!canSort && !canGroup && !canFilter && !words && !count)
|
|
@@ -123,14 +179,20 @@ export function ArrangeBar(props) {
|
|
|
123
179
|
const groupOffer = arrangement.group ? offers.groups.find((offer) => offer.key === arrangement.group.by) : undefined;
|
|
124
180
|
const ways = directionWords(sortOffer);
|
|
125
181
|
// The lists themselves come when one is first opened (`ArrangeLists`): the line is all a page carries up front.
|
|
126
|
-
const listProps = { schema, graph, offers, arrangement, set, toggle, has, testId: id };
|
|
182
|
+
const listProps = { schema, graph, offers: { ...offers, filters: menu }, arrangement, set, toggle, has, testId: id };
|
|
183
|
+
// A chip keeps one value of its field: pressed again it lets go; another of the same field takes its place.
|
|
184
|
+
const choose = (key, value) => has({ key, value })
|
|
185
|
+
? without(conditions.findIndex((c) => c.key === key && c.value === value))
|
|
186
|
+
: set({ filter: [...conditions.filter((c) => c.key !== key), { key, value }] });
|
|
127
187
|
const sortTrigger = arrangement.sort ? (_jsxs(_Fragment, { children: ["Sorted by ", inSentence(sortOffer?.label ?? arrangement.sort.by), _jsx("span", { "aria-hidden": "true", children: arrangement.sort.direction === "desc" ? " ↓" : " ↑" })] })) : ("Sort");
|
|
128
188
|
const bucket = arrangement.group?.bucket && groupOffer?.buckets ? `, a ${arrangement.group.bucket} each` : "";
|
|
129
189
|
const groupTrigger = arrangement.group ? `Grouped by ${inSentence(groupOffer?.label ?? arrangement.group.by)}${bucket}` : "Group";
|
|
130
|
-
return (_jsxs("div", { "data-testid": `${id}-bar`, role: "group", "aria-label": "Arrange", className: "graview-arrange", style: props.style, onPointerEnter: LISTS.prefetch, onFocus: LISTS.prefetch, children: [_jsx("style", { children: ARRANGE_CSS }), _jsxs("div", { className: "graview-arrange-line", children: [count ? (_jsxs("span", { className: "graview-arrange-count", "data-testid": `${id}-count`, children: [count.kept ? _jsx("span", { "data-testid": `${id}-kept`, children: count.kept }) : null, count.words] })) : null,
|
|
190
|
+
return (_jsxs("div", { "data-testid": `${id}-bar`, role: "group", "aria-label": "Arrange", className: "graview-arrange", style: props.style, onPointerEnter: LISTS.prefetch, onFocus: LISTS.prefetch, children: [_jsx("style", { children: ARRANGE_CSS }), _jsxs("div", { className: "graview-arrange-line", children: [count ? (_jsxs("span", { className: "graview-arrange-count", "data-testid": `${id}-count`, children: [count.kept ? _jsx("span", { "data-testid": `${id}-kept`, children: count.kept }) : null, count.words] })) : null, conditions.map((condition, at) => {
|
|
131
191
|
const words = sayCondition(schema, graph, offers, condition);
|
|
132
192
|
return (_jsxs("span", { className: "graview-arrange-token", "data-testid": `${id}-condition`, children: [words, _jsx("button", { type: "button", "aria-label": `Remove: ${words}`, title: "Remove", onClick: () => without(at), children: "\u00D7" })] }, `${condition.key}:${condition.value}`));
|
|
133
|
-
}), words ? (_jsxs("label", { className: "graview-arrange-words-at", children: [_jsx("span", { style: VISUALLY_HIDDEN, children: "Find" }), _jsx("input", { type: "search", className: "graview-arrange-words", "data-testid": `${id}-query`, value: arrangement.query ?? "", placeholder: "Find\u2026", onChange: (event) => set({ query: event.target.value.length > 0 ? event.target.value : undefined }) })] })) : null
|
|
193
|
+
}), canSort ? (_jsx("span", { className: "graview-arrange-part graview-arrange-one", children: _jsx(Choice, { testId: `${id}-sort`, value: arrangement.sort?.by ?? "", set: arrangement.sort !== undefined, label: "Sort", name: arrangement.sort ? `Sorted by ${inSentence(sortOffer?.label ?? arrangement.sort.by)}, ${ways[arrangement.sort.direction].toLowerCase()}` : "Sort", list: (done) => _jsx(Lists, { which: "sort", done: done, ...listProps }), children: sortTrigger }) })) : null, canGroup ? (_jsx("span", { className: "graview-arrange-part graview-arrange-one", children: _jsx(Choice, { testId: `${id}-group`, value: arrangement.group?.by ?? "", set: arrangement.group !== undefined, label: "Group", name: groupTrigger, list: (done) => _jsx(Lists, { which: "group", done: done, ...listProps }), children: groupTrigger }) })) : null, canFilter ? (_jsx("span", { className: "graview-arrange-part", children: _jsx(Choice, { testId: `${id}-add`, value: "", set: false, label: "Filter", name: conditions.length > 0 ? `Filter — ${conditions.length} on` : "Filter", list: (done) => _jsx(Lists, { which: "filter", done: done, ...listProps }), children: "Filter" }) })) : null, canSort || canGroup ? (_jsx("span", { className: "graview-arrange-part graview-arrange-all", children: _jsx(Choice, { testId: `${id}-all`, value: "", set: false, label: "Arrange", name: "Arrange: sort and group", list: (done) => _jsx(Lists, { which: "all", done: done, parts: { sort: canSort, group: canGroup, filter: false }, ...listProps }), children: "Arrange" }) })) : null, words ? (_jsxs("label", { className: "graview-arrange-words-at", children: [_jsx("span", { style: VISUALLY_HIDDEN, children: "Find" }), _jsx("input", { type: "search", className: "graview-arrange-words", "data-testid": `${id}-query`, value: arrangement.query ?? "", placeholder: "Find\u2026", onChange: (event) => set({ query: event.target.value.length > 0 ? event.target.value : undefined }) })] })) : null, chipped.length > 0 && props.chips ? (
|
|
194
|
+
// The chips come with the lists' module, fetched as the list is first drawn: a lens's line never carries them.
|
|
195
|
+
_jsx(Suspense, { fallback: null, children: _jsx(Chips, { offers: chipped, chips: props.chips, schema: schema, graph: graph, kind: kind, arrangement: arrangement, has: has, choose: choose, testId: id }) })) : null] })] }));
|
|
134
196
|
}
|
|
135
197
|
/** The count in words, and the part of it that says what the arrangement kept when it kept fewer. */
|
|
136
198
|
function countWords(noun, kept) {
|
|
@@ -173,7 +235,7 @@ function walk(event) {
|
|
|
173
235
|
return;
|
|
174
236
|
const at = stops.indexOf(document.activeElement);
|
|
175
237
|
// A date box keeps its own arrows: they change the day.
|
|
176
|
-
if (document.activeElement instanceof HTMLInputElement && (event.key === "ArrowUp" || event.key === "ArrowDown"))
|
|
238
|
+
if (document.activeElement instanceof HTMLInputElement && document.activeElement.type === "date" && (event.key === "ArrowUp" || event.key === "ArrowDown"))
|
|
177
239
|
return;
|
|
178
240
|
event.preventDefault();
|
|
179
241
|
const next = event.key === "Home" ? 0 : event.key === "End" ? stops.length - 1 : event.key === "ArrowDown" ? (at + 1) % stops.length : (at - 1 + stops.length) % stops.length;
|
|
@@ -202,7 +264,7 @@ const ARRANGE_CSS = `
|
|
|
202
264
|
.graview-arrange :focus-visible,.graview-arrange-list :focus-visible{outline:2px solid var(--graview-accent);outline-offset:1px}
|
|
203
265
|
.graview-arrange-all{display:none}
|
|
204
266
|
@container (max-width: ${ARRANGE_NARROW - 1}px){.graview-arrange-one{display:none}.graview-arrange-all{display:inline-flex}}
|
|
205
|
-
.graview-arrange-token{display:inline-flex;align-items:center;gap:0;min-width:0;padding-
|
|
267
|
+
.graview-arrange-token{display:inline-flex;align-items:center;gap:0;min-width:0;min-height:26px;box-sizing:border-box;padding:0 2px 0 10px;border:1px solid var(--graview-edge);border-radius:999px;background:var(--graview-panel);color:var(--graview-ink);overflow-wrap:anywhere}
|
|
206
268
|
.graview-arrange-token button{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;margin:0;padding:0;border:0;border-radius:6px;background:none;font:inherit;line-height:1;color:var(--graview-ink-muted);cursor:pointer}
|
|
207
269
|
.graview-arrange-token button:hover{color:var(--graview-ink);background:color-mix(in srgb,var(--graview-ink) 7%,transparent)}
|
|
208
270
|
.graview-arrange-words-at{display:inline-flex;min-width:0;max-width:100%}
|
package/dist/arrange-bar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrange-bar.js","sourceRoot":"","sources":["../src/arrange-bar.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"arrange-bar.js","sourceRoot":"","sources":["../src/arrange-bar.tsx"],"names":[],"mappings":"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"}
|
package/dist/arrange-lists.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type AnySchema, type Arrangeable, type Arrangement, type ArrangeGraph, type Condition } from "@graview/core";
|
|
1
|
+
import { type AnySchema, type Arrangeable, type ArrangeOffer, type Arrangement, type ArrangeGraph, type ArrangeNode, type Condition } from "@graview/core";
|
|
2
|
+
import "./frame.js";
|
|
2
3
|
/**
|
|
3
4
|
* THE ARRANGING LINE'S LISTS: what "Sort", "Group", "Filter" and "Arrange"
|
|
4
5
|
* open. Fetched when a list is first opened, or when the pointer or the
|
|
@@ -20,6 +21,8 @@ export interface FilterEntry {
|
|
|
20
21
|
readonly label: string;
|
|
21
22
|
/** The offer it is under: its heading in the list. */
|
|
22
23
|
readonly group: string;
|
|
24
|
+
/** The offer's key. */
|
|
25
|
+
readonly key?: string;
|
|
23
26
|
readonly condition?: Condition;
|
|
24
27
|
readonly ask?: {
|
|
25
28
|
readonly key: string;
|
|
@@ -34,6 +37,37 @@ export interface FilterEntry {
|
|
|
34
37
|
* day, so it is offered as "before…", "after…" and "on…", which ask for it.
|
|
35
38
|
*/
|
|
36
39
|
export declare function filterEntries(schema: AnySchema, graph: ArrangeGraph, offers: Arrangeable): readonly FilterEntry[];
|
|
40
|
+
/** One heading of the Filter list: its offer, what it lists, and — for a relation with many records at its far end — every one of them, found by typing. */
|
|
41
|
+
export interface FilterSection {
|
|
42
|
+
readonly key: string;
|
|
43
|
+
readonly label: string;
|
|
44
|
+
readonly entries: readonly FilterEntry[];
|
|
45
|
+
readonly typed?: readonly {
|
|
46
|
+
readonly id: string;
|
|
47
|
+
readonly label: string;
|
|
48
|
+
}[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* THE FILTER LIST'S SECTIONS. A relation with more than a handful of
|
|
52
|
+
* records at its far end (`TYPED_FROM`) lists only "anything" and
|
|
53
|
+
* "nothing"; its records are found by typing a few letters of a name, and
|
|
54
|
+
* at most eight are listed — ninety feature names in one menu was a list
|
|
55
|
+
* nobody could read.
|
|
56
|
+
*/
|
|
57
|
+
export declare function filterSections(schema: AnySchema, graph: ArrangeGraph, offers: Arrangeable): readonly FilterSection[];
|
|
58
|
+
/** At most this many records a typed relation lists for what was typed. */
|
|
59
|
+
export declare const TYPED_MATCHES = 8;
|
|
60
|
+
/** The far records whose names hold what was typed, those that begin with it first, at most `TYPED_MATCHES`. */
|
|
61
|
+
export declare function typedMatches(far: readonly {
|
|
62
|
+
readonly id: string;
|
|
63
|
+
readonly label: string;
|
|
64
|
+
}[], typed: string): {
|
|
65
|
+
readonly shown: readonly {
|
|
66
|
+
readonly id: string;
|
|
67
|
+
readonly label: string;
|
|
68
|
+
}[];
|
|
69
|
+
readonly more: number;
|
|
70
|
+
};
|
|
37
71
|
export interface ListsProps {
|
|
38
72
|
readonly which: "sort" | "group" | "filter" | "all";
|
|
39
73
|
readonly parts?: {
|
|
@@ -53,4 +87,27 @@ export interface ListsProps {
|
|
|
53
87
|
}
|
|
54
88
|
/** One list, or on a narrow line all three; the keyboard to the choice made once it is drawn. */
|
|
55
89
|
export declare function ArrangeLists(props: ListsProps): import("react").JSX.Element;
|
|
90
|
+
/**
|
|
91
|
+
* A CHOICE FIELD AS CHIPS, ALWAYS IN VIEW: each value with how many records
|
|
92
|
+
* it would keep among the rest of what is asked — "Open 12", "Building 4" —
|
|
93
|
+
* so a status filter is one press, not a menu, a heading and an entry. A
|
|
94
|
+
* value no record would keep is left off, unless it is the one pressed.
|
|
95
|
+
*/
|
|
96
|
+
export declare function ArrangeChips({ offers, chips, schema, graph, kind, arrangement, has, choose, testId }: ChipsProps): import("react").JSX.Element;
|
|
97
|
+
/** What the chips are handed: the offers they stand for, the records they count, and the line's own ways to say what is on. */
|
|
98
|
+
export interface ChipsProps {
|
|
99
|
+
readonly offers: readonly ArrangeOffer[];
|
|
100
|
+
readonly chips: {
|
|
101
|
+
readonly nodes: readonly ArrangeNode[];
|
|
102
|
+
readonly flagged?: ReadonlySet<string>;
|
|
103
|
+
readonly today?: string;
|
|
104
|
+
};
|
|
105
|
+
readonly schema: AnySchema;
|
|
106
|
+
readonly graph: ArrangeGraph;
|
|
107
|
+
readonly kind: string;
|
|
108
|
+
readonly arrangement: Arrangement;
|
|
109
|
+
readonly has: (condition: Condition) => boolean;
|
|
110
|
+
readonly choose: (key: string, value: string) => void;
|
|
111
|
+
readonly testId: string;
|
|
112
|
+
}
|
|
56
113
|
//# sourceMappingURL=arrange-lists.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrange-lists.d.ts","sourceRoot":"","sources":["../src/arrange-lists.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"arrange-lists.d.ts","sourceRoot":"","sources":["../src/arrange-lists.tsx"],"names":[],"mappings":"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"}
|
package/dist/arrange-lists.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { labelOf,
|
|
2
|
+
import { labelOf, LOCAL_LAYERS, } from "@graview/core";
|
|
3
|
+
import { valueWords } from "@graview/core/words";
|
|
4
|
+
import { conditionHolds, matches } from "@graview/core/arrange";
|
|
3
5
|
import { useEffect, useRef, useState } from "react";
|
|
4
|
-
import { directionWords, inSentence } from "./arrange-bar.js";
|
|
6
|
+
import { directionWords, inSentence, TYPED_FROM } from "./arrange-bar.js";
|
|
7
|
+
import "./frame.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
|
|
5
8
|
/**
|
|
6
9
|
* THE ARRANGING LINE'S LISTS: what "Sort", "Group", "Filter" and "Arrange"
|
|
7
10
|
* open. Fetched when a list is first opened, or when the pointer or the
|
|
@@ -34,16 +37,17 @@ export function roundSteps(values) {
|
|
|
34
37
|
const round = (value) => Math.round(value / step) * step;
|
|
35
38
|
return [...new Set([0.2, 0.4, 0.6, 0.8].map((at) => round(sorted[Math.floor(at * (sorted.length - 1))])))].filter((value) => value > 0);
|
|
36
39
|
}
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
/** Every record at an offer's far end, by name. */
|
|
41
|
+
function everyFarEnd(schema, graph, offer) {
|
|
42
|
+
const wanted = new Set(offer.far ?? []);
|
|
39
43
|
const seen = new Map();
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const ends =
|
|
44
|
+
for (const node of graph.allNodes())
|
|
45
|
+
if (wanted.has(node.kind))
|
|
46
|
+
seen.set(node.id, labelOf(schema.tryDefinition(node.kind), node));
|
|
47
|
+
return [...seen.entries()].map(([id, text]) => ({ id, label: text }));
|
|
48
|
+
}
|
|
49
|
+
function farEndsOf(schema, graph, offer) {
|
|
50
|
+
const ends = everyFarEnd(schema, graph, offer);
|
|
47
51
|
const kept = ends.length <= FAR_ENDS
|
|
48
52
|
? ends
|
|
49
53
|
: ends
|
|
@@ -62,6 +66,7 @@ function farEndsOf(schema, graph, offer) {
|
|
|
62
66
|
export function filterEntries(schema, graph, offers) {
|
|
63
67
|
const entries = [];
|
|
64
68
|
for (const offer of offers.filters) {
|
|
69
|
+
const from = entries.length;
|
|
65
70
|
if (offer.about === "is") {
|
|
66
71
|
for (const word of offer.options ?? [])
|
|
67
72
|
entries.push({ value: `is:${word}`, label: word, group: offer.label, condition: { key: "is", value: word } });
|
|
@@ -98,13 +103,53 @@ export function filterEntries(schema, graph, offers) {
|
|
|
98
103
|
entries.push({ value: `${offer.key}:true`, label: "yes", group: offer.label, condition: { key: offer.key, value: "true" } });
|
|
99
104
|
entries.push({ value: `${offer.key}:false`, label: "no", group: offer.label, condition: { key: offer.key, value: "false" } });
|
|
100
105
|
}
|
|
106
|
+
else if (offer.about === "via") {
|
|
107
|
+
// A choice at the far end, in the words its own kind says it in.
|
|
108
|
+
const far = schema.tryDefinition(offer.far?.[0] ?? "");
|
|
109
|
+
for (const option of offer.options ?? [])
|
|
110
|
+
entries.push({ value: `${offer.key}:${option}`, label: valueWords(far, offer.key.split(".")[1], option), group: offer.label, condition: { key: offer.key, value: option } });
|
|
111
|
+
}
|
|
101
112
|
else {
|
|
102
113
|
for (const option of offer.options ?? [])
|
|
103
114
|
entries.push({ value: `${offer.key}:${option}`, label: valueWords(schema.tryDefinition(offers.kind), offer.key, option), group: offer.label, condition: { key: offer.key, value: option } });
|
|
104
115
|
}
|
|
116
|
+
for (let at = from; at < entries.length; at++)
|
|
117
|
+
entries[at] = { ...entries[at], key: offer.key };
|
|
105
118
|
}
|
|
106
119
|
return entries;
|
|
107
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* THE FILTER LIST'S SECTIONS. A relation with more than a handful of
|
|
123
|
+
* records at its far end (`TYPED_FROM`) lists only "anything" and
|
|
124
|
+
* "nothing"; its records are found by typing a few letters of a name, and
|
|
125
|
+
* at most eight are listed — ninety feature names in one menu was a list
|
|
126
|
+
* nobody could read.
|
|
127
|
+
*/
|
|
128
|
+
export function filterSections(schema, graph, offers) {
|
|
129
|
+
const entries = filterEntries(schema, graph, offers);
|
|
130
|
+
return offers.filters.flatMap((offer) => {
|
|
131
|
+
const own = entries.filter((entry) => entry.key === offer.key);
|
|
132
|
+
if (own.length === 0)
|
|
133
|
+
return [];
|
|
134
|
+
if (offer.about !== "edge")
|
|
135
|
+
return [{ key: offer.key, label: offer.label, entries: own }];
|
|
136
|
+
const far = everyFarEnd(schema, graph, offer);
|
|
137
|
+
if (far.length < TYPED_FROM)
|
|
138
|
+
return [{ key: offer.key, label: offer.label, entries: own }];
|
|
139
|
+
return [{ key: offer.key, label: offer.label, entries: own.filter((entry) => entry.value === `${offer.key}:*` || entry.value === `${offer.key}:none`), typed: [...far].sort((a, b) => a.label.localeCompare(b.label)) }];
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/** At most this many records a typed relation lists for what was typed. */
|
|
143
|
+
export const TYPED_MATCHES = 8;
|
|
144
|
+
/** The far records whose names hold what was typed, those that begin with it first, at most `TYPED_MATCHES`. */
|
|
145
|
+
export function typedMatches(far, typed) {
|
|
146
|
+
const words = typed.trim().toLocaleLowerCase();
|
|
147
|
+
if (!words)
|
|
148
|
+
return { shown: [], more: 0 };
|
|
149
|
+
const found = far.filter((end) => end.label.toLocaleLowerCase().includes(words));
|
|
150
|
+
const ranked = [...found].sort((a, b) => Number(!a.label.toLocaleLowerCase().startsWith(words)) - Number(!b.label.toLocaleLowerCase().startsWith(words)));
|
|
151
|
+
return { shown: ranked.slice(0, TYPED_MATCHES), more: Math.max(0, ranked.length - TYPED_MATCHES) };
|
|
152
|
+
}
|
|
108
153
|
const BUCKETS = ["day", "week", "month", "year", "decade"];
|
|
109
154
|
/** One list, or on a narrow line all three; the keyboard to the choice made once it is drawn. */
|
|
110
155
|
export function ArrangeLists(props) {
|
|
@@ -122,10 +167,10 @@ export function ArrangeLists(props) {
|
|
|
122
167
|
const groupOffer = arrangement.group ? offers.groups.find((offer) => offer.key === arrangement.group.by) : undefined;
|
|
123
168
|
const ways = directionWords(sortOffer);
|
|
124
169
|
const natural = offers.natural ? offers.sorts.find((offer) => offer.key === offers.natural.by) : undefined;
|
|
125
|
-
const
|
|
170
|
+
const sections = which === "filter" || (which === "all" && props.parts?.filter) ? filterSections(schema, graph, offers) : [];
|
|
126
171
|
const sortList = (done) => (_jsxs(_Fragment, { children: [_jsx("p", { children: "Sort by" }), _jsx(Item, { testId: `${id}-sort-default`, value: "", on: !arrangement.sort, onPress: () => (set({ sort: undefined }), done()), children: natural ? `As declared (${inSentence(natural.label)})` : "As they were added" }), offers.sorts.map((offer) => (_jsx(Item, { value: offer.key, on: arrangement.sort?.by === offer.key, onPress: () => (set({ sort: { by: offer.key, direction: arrangement.sort?.direction ?? "asc" } }), done()), children: offer.label }, offer.key))), arrangement.sort ? (_jsxs("div", { role: "group", "aria-label": "Order", "data-testid": `${id}-direction`, children: [_jsx("p", { "aria-hidden": "true", children: "Order" }), ["asc", "desc"].map((direction) => (_jsx(Item, { testId: `${id}-direction-${direction}`, value: direction, on: arrangement.sort.direction === direction, onPress: () => (set({ sort: { by: arrangement.sort.by, direction } }), done()), children: ways[direction] }, direction)))] })) : null] }));
|
|
127
172
|
const groupList = (done) => (_jsxs(_Fragment, { children: [_jsx("p", { children: "Group by" }), _jsx(Item, { testId: `${id}-group-none`, value: "", on: !arrangement.group, onPress: () => (set({ group: undefined }), done()), children: "Not grouped" }), offers.groups.map((offer) => (_jsx(Item, { value: offer.key, on: arrangement.group?.by === offer.key, onPress: () => (set({ group: { by: offer.key } }), done()), children: offer.label }, offer.key))), arrangement.group && groupOffer?.buckets ? (_jsxs("div", { role: "group", "aria-label": "How wide a group is", "data-testid": `${id}-bucket`, children: [_jsx("p", { "aria-hidden": "true", children: "Each group" }), BUCKETS.map((bucket) => (_jsx(Item, { testId: `${id}-bucket-${bucket}`, value: bucket, on: (arrangement.group.bucket ?? "day") === bucket, onPress: () => (set({ group: { by: arrangement.group.by, bucket } }), done()), children: `A ${bucket}` }, bucket)))] })) : null] }));
|
|
128
|
-
const filterList = (done) => _jsx(FilterList, {
|
|
173
|
+
const filterList = (done) => _jsx(FilterList, { sections: sections, has: has, testId: id, onToggle: (condition) => (toggle(condition), done()) });
|
|
129
174
|
const parts = props.parts ?? { sort: true, group: true, filter: true };
|
|
130
175
|
return (_jsxs("div", { ref: here, style: { display: "contents" }, children: [_jsx("style", { children: LIST_CSS }), which === "sort" ? sortList(done) : which === "group" ? groupList(done) : which === "filter" ? filterList(done) : (_jsxs(_Fragment, { children: [parts.sort ? _jsx("div", { role: "group", "aria-label": "Sort", children: sortList(done) }) : null, parts.group ? _jsx("div", { role: "group", "aria-label": "Group", children: groupList(done) }) : null, parts.filter ? _jsx("div", { role: "group", "aria-label": "Filter", children: filterList(done) }) : null] }))] }));
|
|
131
176
|
}
|
|
@@ -134,20 +179,46 @@ function Item({ value, on, onPress, testId, children }) {
|
|
|
134
179
|
return (_jsx("button", { type: "button", className: "graview-arrange-item", value: value, "data-value": value, "aria-pressed": on, onClick: onPress, ...(testId ? { "data-testid": testId } : {}), children: children }));
|
|
135
180
|
}
|
|
136
181
|
/**
|
|
137
|
-
* THE WAYS TO NARROW, under their offers' names
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
182
|
+
* THE WAYS TO NARROW, under their offers' names — each a heading that
|
|
183
|
+
* opens it, so the list opens short however much the app holds; a box at
|
|
184
|
+
* the top, which stays as the list scrolls, finds any of them, and any
|
|
185
|
+
* record at a relation's far end, by a few letters. A condition already on
|
|
186
|
+
* is pressed, and pressing it takes it off; a heading says how many of its
|
|
187
|
+
* own are on. A date's "before…" asks for its day in the list itself, with
|
|
188
|
+
* the browser's own date control — added by Enter or "Add", let go by
|
|
189
|
+
* Escape or "Never mind".
|
|
141
190
|
*/
|
|
142
|
-
function FilterList({
|
|
191
|
+
function FilterList({ sections, has, testId, onToggle }) {
|
|
143
192
|
const [asking, setAsking] = useState(null);
|
|
193
|
+
const [find, setFind] = useState("");
|
|
194
|
+
// One heading is opened already: there is nothing to choose between.
|
|
195
|
+
const [open, setOpen] = useState(() => new Set(sections.length === 1 ? [sections[0].key] : []));
|
|
196
|
+
const [typed, setTyped] = useState({});
|
|
144
197
|
if (asking) {
|
|
145
198
|
return _jsx(AskDay, { ask: asking, testId: testId, onDay: (day) => onToggle({ key: asking.key, value: `${asking.op}:${day}` }), onCancel: () => setAsking(null) });
|
|
146
199
|
}
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
200
|
+
const item = (entry) => (_jsx(Item, { value: entry.value, on: entry.condition ? has(entry.condition) : false, onPress: () => (entry.condition ? onToggle(entry.condition) : setAsking(entry.ask)), children: entry.label }, entry.value));
|
|
201
|
+
const far = (section, words) => {
|
|
202
|
+
const on = (section.typed ?? []).filter((end) => has({ key: section.key, value: end.id }));
|
|
203
|
+
const found = typedMatches(section.typed ?? [], words);
|
|
204
|
+
const shown = [...on, ...found.shown.filter((end) => !on.includes(end))];
|
|
205
|
+
return (_jsxs(_Fragment, { children: [shown.map((end) => item({ value: `${section.key}:${end.id}`, label: end.label, group: section.label, key: section.key, condition: { key: section.key, value: end.id } })), words.trim() && found.shown.length === 0 ? _jsx("span", { className: "graview-arrange-none", children: "None is called that." }) : null, found.more > 0 ? _jsx("span", { className: "graview-arrange-none", children: `${found.more} more — type more of the name` }) : null] }));
|
|
206
|
+
};
|
|
207
|
+
const looking = find.trim().toLocaleLowerCase();
|
|
208
|
+
return (_jsxs(_Fragment, { children: [_jsxs("label", { className: "graview-arrange-find", children: [_jsx("span", { style: { position: "absolute", width: 1, height: 1, overflow: "hidden", clip: "rect(0 0 0 0)" }, children: "Find a filter" }), _jsx("input", { type: "search", "data-testid": `${testId}-filter-find`, value: find, placeholder: "Find a filter or a name\u2026", onChange: (event) => setFind(event.target.value) })] }), sections.map((section) => {
|
|
209
|
+
const on = section.entries.filter((entry) => entry.condition && has(entry.condition)).length + (section.typed ?? []).filter((end) => has({ key: section.key, value: end.id })).length;
|
|
210
|
+
if (looking) {
|
|
211
|
+
// What was typed, across every heading: the heading's own entries whose words hold it, or all of them when the heading's does.
|
|
212
|
+
const whole = section.label.toLocaleLowerCase().includes(looking);
|
|
213
|
+
const entries = whole ? section.entries : section.entries.filter((entry) => entry.label.toLocaleLowerCase().includes(looking));
|
|
214
|
+
const ends = section.typed ? typedMatches(section.typed, looking) : { shown: [], more: 0 };
|
|
215
|
+
if (entries.length === 0 && ends.shown.length === 0)
|
|
216
|
+
return null;
|
|
217
|
+
return (_jsxs("div", { role: "group", "aria-label": section.label, "data-section": section.key, children: [_jsx("p", { "aria-hidden": "true", children: section.label }), entries.map(item), section.typed ? far(section, looking) : null] }, section.key));
|
|
218
|
+
}
|
|
219
|
+
const opened = open.has(section.key);
|
|
220
|
+
return (_jsxs("div", { role: "group", "aria-label": section.label, "data-section": section.key, children: [_jsxs("button", { type: "button", className: "graview-arrange-section", "data-testid": `${testId}-section`, "data-key": section.key, "aria-expanded": opened, onClick: () => setOpen((was) => (was.has(section.key) ? new Set([...was].filter((key) => key !== section.key)) : new Set([...was, section.key]))), children: [_jsx("span", { children: section.label }), on > 0 ? _jsx("span", { className: "graview-arrange-on", children: `${on} on` }) : null] }), opened ? (_jsxs(_Fragment, { children: [section.typed ? (_jsx("input", { type: "search", className: "graview-arrange-far", "data-testid": `${testId}-far-find`, "data-key": section.key, "aria-label": `${section.label}: type a name`, placeholder: `Type a name (${section.typed.length})…`, autoFocus: true, value: typed[section.key] ?? "", onChange: (event) => setTyped({ ...typed, [section.key]: event.target.value }) })) : null, section.entries.map(item), section.typed ? far(section, typed[section.key] ?? "") : null] })) : null] }, section.key));
|
|
221
|
+
})] }));
|
|
151
222
|
}
|
|
152
223
|
/*
|
|
153
224
|
* WHICH DAY, ASKED IN THE FILTER ITSELF. "Due before…" opened the browser's
|
|
@@ -177,8 +248,26 @@ function AskDay({ ask, testId, onDay, onCancel }) {
|
|
|
177
248
|
}
|
|
178
249
|
} }), _jsxs("span", { children: [_jsx("button", { type: "button", "data-testid": `${testId}-day-add`, disabled: !valid, onClick: add, children: "Add" }), _jsx("button", { type: "button", onClick: onCancel, children: "Never mind" })] })] }));
|
|
179
250
|
}
|
|
251
|
+
/*
|
|
252
|
+
* OPAQUE, HELD TO THE WINDOW, A SHEET ON A PHONE. The list is laid over the
|
|
253
|
+
* panel's own color, so a brand's translucent float never lets the records
|
|
254
|
+
* show through; it stops at most 520 pixels tall and scrolls inside itself,
|
|
255
|
+
* its box to find a filter standing at its top; on a phone it is a sheet
|
|
256
|
+
* along the window's foot, the width of the window.
|
|
257
|
+
*/
|
|
180
258
|
const LIST_CSS = `
|
|
181
|
-
.graview-arrange-list{display:grid;align-content:start;width:min(300px,calc(100vw - 24px));height:auto;max-height:min(70vh,520px);overflow:auto;margin:0;padding:6px;border-radius:10px;border:1px solid var(--graview-edge);background:var(--graview-float);box-shadow:var(--graview-lift-high);color:var(--graview-ink);font-size:.875rem;line-height:1.3}
|
|
259
|
+
.graview-arrange-list{display:grid;align-content:start;width:min(300px,calc(100vw - 24px));height:auto;max-height:min(70vh,520px);overflow:auto;overscroll-behavior:contain;margin:0;padding:0 6px 6px;border-radius:10px;border:1px solid var(--graview-edge);background:linear-gradient(var(--graview-float),var(--graview-float)),var(--graview-panel);box-shadow:var(--graview-lift-high);color:var(--graview-ink);font-size:.875rem;line-height:1.3}
|
|
260
|
+
.graview-arrange-list>*:first-child:not(.graview-arrange-find){margin-top:6px}
|
|
261
|
+
@media (max-width:519px){.graview-arrange-list{left:0!important;right:0!important;top:auto!important;bottom:0!important;width:100%!important;max-height:min(80dvh,560px)!important;border-radius:14px 14px 0 0;padding-bottom:calc(10px + env(safe-area-inset-bottom))}}
|
|
262
|
+
.graview-arrange-find{position:sticky;top:0;z-index:${LOCAL_LAYERS.raised};display:block;margin:0 -6px 2px;padding:6px;background:linear-gradient(var(--graview-float),var(--graview-float)),var(--graview-panel);border-bottom:1px solid var(--graview-edge)}
|
|
263
|
+
.graview-arrange-find input,.graview-arrange-far{box-sizing:border-box;width:100%;min-height:32px;margin:0;padding:0 8px;border:1px solid var(--graview-edge);border-radius:7px;background:var(--graview-panel);font:inherit;color:var(--graview-ink)}
|
|
264
|
+
.graview-arrange-far{width:calc(100% - 16px);margin:2px 8px 4px}
|
|
265
|
+
.graview-arrange-section{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:32px;margin:0;padding:6px 8px;border:0;border-radius:7px;background:none;font:inherit;font-weight:600;text-align:left;color:var(--graview-ink);cursor:pointer}
|
|
266
|
+
.graview-arrange-section::after{content:"";flex:0 0 7px;height:7px;margin-left:auto;border:solid var(--graview-ink-muted);border-width:0 1.5px 1.5px 0;transform:rotate(-45deg)}
|
|
267
|
+
.graview-arrange-section[aria-expanded=true]::after{transform:rotate(45deg)}
|
|
268
|
+
.graview-arrange-section:hover{background:color-mix(in srgb,var(--graview-ink) 7%,transparent)}
|
|
269
|
+
.graview-arrange-on{font-weight:400;color:var(--graview-accent)}
|
|
270
|
+
.graview-arrange-none{display:block;padding:4px 8px 6px 28px;color:var(--graview-ink-muted)}
|
|
182
271
|
.graview-arrange-list [role=group]{display:grid}
|
|
183
272
|
.graview-arrange-list p{margin:8px 8px 2px;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--graview-ink-muted)}
|
|
184
273
|
.graview-arrange-item{display:flex;align-items:flex-start;gap:8px;width:100%;min-height:30px;margin:0;padding:6px 8px;border:0;border-radius:7px;background:none;font:inherit;text-align:left;color:var(--graview-ink);cursor:pointer;overflow-wrap:anywhere}
|
|
@@ -193,4 +282,44 @@ const LIST_CSS = `
|
|
|
193
282
|
.graview-arrange-ask button{min-height:30px;padding:0 12px;border:1px solid var(--graview-edge);border-radius:7px;background:var(--graview-panel);font:inherit;color:var(--graview-ink);cursor:pointer}
|
|
194
283
|
.graview-arrange-ask button:disabled{opacity:.5;cursor:default}
|
|
195
284
|
`;
|
|
285
|
+
/**
|
|
286
|
+
* A CHOICE FIELD AS CHIPS, ALWAYS IN VIEW: each value with how many records
|
|
287
|
+
* it would keep among the rest of what is asked — "Open 12", "Building 4" —
|
|
288
|
+
* so a status filter is one press, not a menu, a heading and an entry. A
|
|
289
|
+
* value no record would keep is left off, unless it is the one pressed.
|
|
290
|
+
*/
|
|
291
|
+
export function ArrangeChips({ offers, chips, schema, graph, kind, arrangement, has, choose, testId }) {
|
|
292
|
+
return (_jsxs(_Fragment, { children: [_jsx("style", { children: CHIP_CSS }), _jsx(ChipRows, { offers: offers, chips: chips, schema: schema, graph: graph, kind: kind, arrangement: arrangement, has: has, choose: choose, testId: testId })] }));
|
|
293
|
+
}
|
|
294
|
+
function ChipRows({ offers, chips, schema, graph, kind, arrangement, has, choose, testId }) {
|
|
295
|
+
const ctx = { schema, graph, ...(chips.flagged ? { flagged: chips.flagged } : {}), ...(chips.today ? { today: chips.today } : {}) };
|
|
296
|
+
const definition = schema.tryDefinition(kind);
|
|
297
|
+
const asked = chips.nodes.filter((node) => !arrangement.query || matches(ctx, node, arrangement.query));
|
|
298
|
+
return (_jsx("div", { className: "graview-arrange-chips", "data-testid": `${testId}-chips`, children: offers.map((offer) => {
|
|
299
|
+
const others = (arrangement.filter ?? []).filter((condition) => condition.key !== offer.key);
|
|
300
|
+
const counts = new Map();
|
|
301
|
+
for (const node of asked) {
|
|
302
|
+
if (!others.every((condition) => conditionHolds(ctx, node, condition)))
|
|
303
|
+
continue;
|
|
304
|
+
const value = String(node[offer.key]);
|
|
305
|
+
counts.set(value, (counts.get(value) ?? 0) + 1);
|
|
306
|
+
}
|
|
307
|
+
return (_jsxs("div", { role: "group", "aria-label": offer.label, className: "graview-arrange-chip-row", "data-field": offer.key, children: [_jsx("span", { className: "graview-arrange-chip-label", "aria-hidden": "true", children: offer.label }), (offer.options ?? [])
|
|
308
|
+
.filter((option) => (counts.get(option) ?? 0) > 0 || has({ key: offer.key, value: option }))
|
|
309
|
+
.map((option) => {
|
|
310
|
+
const words = valueWords(definition, offer.key, option);
|
|
311
|
+
const many = counts.get(option) ?? 0;
|
|
312
|
+
return (_jsxs("button", { type: "button", className: "graview-arrange-chip", "data-testid": `${testId}-chip`, "data-value": `${offer.key}:${option}`, "aria-pressed": has({ key: offer.key, value: option }), "aria-label": `${offer.label}: ${words}, ${many}`, onClick: () => choose(offer.key, option), children: [words, _jsx("span", { className: "graview-arrange-chip-count", "aria-hidden": "true", children: many })] }, option));
|
|
313
|
+
})] }, offer.key));
|
|
314
|
+
}) }));
|
|
315
|
+
}
|
|
316
|
+
const CHIP_CSS = `
|
|
317
|
+
.graview-arrange-chips,.graview-arrange-chip-row{display:contents}
|
|
318
|
+
@container (max-width:519px){.graview-arrange-chips{display:flex;flex:1 1 10rem;align-items:center;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:none}.graview-arrange-chip-label{margin:0}.graview-arrange-chip{flex:0 0 auto;white-space:nowrap}}
|
|
319
|
+
.graview-arrange-chip-label{margin:0 0 0 8px;font-size:.8125rem;color:var(--graview-ink-muted)}
|
|
320
|
+
.graview-arrange-chip{display:inline-flex;align-items:center;gap:6px;min-height:28px;max-width:100%;box-sizing:border-box;margin:0;padding:0 10px;border:1px solid var(--graview-edge);border-radius:999px;background:var(--graview-panel);font:inherit;font-size:.8125rem;line-height:1.2;color:var(--graview-ink);cursor:pointer;overflow-wrap:anywhere;text-align:left}
|
|
321
|
+
.graview-arrange-chip:hover{border-color:var(--graview-edge-bright,var(--graview-edge))}
|
|
322
|
+
.graview-arrange-chip[aria-pressed=true]{border-color:var(--graview-accent);background:color-mix(in srgb,var(--graview-accent) 12%,var(--graview-panel));font-weight:600}
|
|
323
|
+
.graview-arrange-chip-count{color:var(--graview-ink-muted);font-variant-numeric:tabular-nums;font-weight:400}
|
|
324
|
+
`;
|
|
196
325
|
//# sourceMappingURL=arrange-lists.js.map
|