@charcuterie/ui 3.25.0 → 3.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/Board/Board.d.ts +20 -7
- package/dist/Board/Board.d.ts.map +1 -1
- package/dist/Board/Board.js +16 -10
- package/dist/Board/Board.js.map +1 -1
- package/dist/Board/BoardCard.d.ts +23 -10
- package/dist/Board/BoardCard.d.ts.map +1 -1
- package/dist/Board/BoardCard.js +44 -22
- package/dist/Board/BoardCard.js.map +1 -1
- package/dist/Board/BoardLaneList.d.ts +2 -1
- package/dist/Board/BoardLaneList.d.ts.map +1 -1
- package/dist/Board/BoardLaneList.js +13 -4
- package/dist/Board/BoardLaneList.js.map +1 -1
- package/dist/MarkdownEditor/MarkdownEditor.d.ts +1 -1
- package/dist/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/MarkdownEditor/MarkdownEditor.js +130 -74
- package/dist/MarkdownEditor/MarkdownEditor.js.map +1 -1
- package/dist/markdownEditorCodeMirror/MarkdownEditorCodeMirror.d.ts.map +1 -1
- package/dist/markdownEditorCodeMirror/MarkdownEditorCodeMirror.js +135 -85
- package/dist/markdownEditorCodeMirror/MarkdownEditorCodeMirror.js.map +1 -1
- package/package.json +1 -1
- package/src/Board/Board.mdx +17 -0
- package/src/Board/Board.stories.tsx +88 -0
- package/src/Board/Board.test.tsx +66 -0
- package/src/Board/Board.tsx +34 -8
- package/src/Board/BoardCard.tsx +66 -23
- package/src/Board/BoardLaneList.tsx +35 -5
- package/src/MarkdownEditor/MarkdownEditor.mdx +32 -4
- package/src/MarkdownEditor/MarkdownEditor.test.tsx +108 -0
- package/src/MarkdownEditor/MarkdownEditor.tsx +89 -0
- package/src/icons.storyHelpers.tsx +11 -0
- package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.mdx +3 -1
- package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.stories.tsx +31 -0
- package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.test.tsx +109 -1
- package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.tsx +84 -0
package/README.md
CHANGED
|
@@ -40,8 +40,10 @@ nothing is provided. Recipe: **Guides/Routing** in Storybook.
|
|
|
40
40
|
|
|
41
41
|
**`Board` is the first component whose own operation is a write**, and the first to declare
|
|
42
42
|
two nested containers. Lanes with honest counts, priority bars, per-card footers for a live
|
|
43
|
-
run line, real empty states and a `+ n more` overflow —
|
|
44
|
-
lanes
|
|
43
|
+
run line, real empty states and a `+ n more` overflow — `laneLayout="columns"` places workflow
|
|
44
|
+
lanes beside each other, while `laneLayout="rows"` makes every project pool a horizontal band
|
|
45
|
+
with a responsive card grid. Each lane's box decides whether a card is two lines, one line,
|
|
46
|
+
or a card.
|
|
45
47
|
There is **no media query in it**, because a lane in a three-up board is ~500px on a maximised
|
|
46
48
|
1600px window and a browser at 175% zoom reports ~860 effective pixels for a 1500px one.
|
|
47
49
|
Moving a card takes **no drag-and-drop dependency**: one handle per card, a `Menu` of the
|
package/dist/Board/Board.d.ts
CHANGED
|
@@ -28,6 +28,16 @@ export type BoardProps = {
|
|
|
28
28
|
headingLevel?: 2 | 3 | 4 | 5;
|
|
29
29
|
/** The board's accessible name. Required — it is a landmark. */
|
|
30
30
|
label: string;
|
|
31
|
+
/**
|
|
32
|
+
* How the lanes themselves are arranged.
|
|
33
|
+
*
|
|
34
|
+
* `columns` is the workflow shape: lanes sit side by side above
|
|
35
|
+
* `cq-lg`, and the Narrow View selects one lane. `rows` is the
|
|
36
|
+
* project-pool shape: every lane is one horizontal band, its cards
|
|
37
|
+
* form a responsive grid inside that band, and every lane stays on
|
|
38
|
+
* screen at every width.
|
|
39
|
+
*/
|
|
40
|
+
laneLayout?: "columns" | "rows";
|
|
31
41
|
lanes: readonly BoardLane[];
|
|
32
42
|
/**
|
|
33
43
|
* What the move handle shows **while the lanes are side by side**.
|
|
@@ -76,9 +86,11 @@ export type BoardProps = {
|
|
|
76
86
|
* So there are **two nested containers**, and they answer two
|
|
77
87
|
* different questions:
|
|
78
88
|
*
|
|
79
|
-
* - The board's own box decides *how
|
|
80
|
-
*
|
|
81
|
-
* control below it.
|
|
89
|
+
* - The board's own box decides *how workflow lanes are shown* —
|
|
90
|
+
* side by side at `cq-lg` and wider, one lane plus a segmented
|
|
91
|
+
* control below it. A project-pool board with
|
|
92
|
+
* `laneLayout="rows"` keeps every lane on screen and grids the
|
|
93
|
+
* cards inside each horizontal band instead.
|
|
82
94
|
* - Each lane's list decides *what shape a card is* — two lines,
|
|
83
95
|
* one line, or its own card. See `BoardCard`.
|
|
84
96
|
*
|
|
@@ -90,9 +102,10 @@ export type BoardProps = {
|
|
|
90
102
|
* *"No horizontal scroll, ever. The board becomes a segmented
|
|
91
103
|
* control, never a pan surface."* A board that pans sideways hides
|
|
92
104
|
* lanes behind a gesture with no affordance, and on a trackpad it
|
|
93
|
-
* fights the browser's own back-navigation. So the narrow
|
|
94
|
-
* shows one lane at a time and names the others in a
|
|
95
|
-
* that says how many cards each holds.
|
|
105
|
+
* fights the browser's own back-navigation. So the narrow workflow
|
|
106
|
+
* layout shows one lane at a time and names the others in a
|
|
107
|
+
* `radiogroup` that says how many cards each holds. A row layout
|
|
108
|
+
* wraps its cards inside each lane and also never pans.
|
|
96
109
|
*
|
|
97
110
|
* ### Moving a card is a first-class operation, and it is not a drag
|
|
98
111
|
*
|
|
@@ -118,5 +131,5 @@ export type BoardProps = {
|
|
|
118
131
|
* panel that reaches across every lane is not a lane — it is an
|
|
119
132
|
* `Alert` above the board, which is how the docs page composes it.
|
|
120
133
|
*/
|
|
121
|
-
export declare const Board: ({ className, headingLevel, label, lanes, moveIcon, narrowLaneKey, onMove, }: BoardProps) => ReactNode;
|
|
134
|
+
export declare const Board: ({ className, headingLevel, label, laneLayout, lanes, moveIcon, narrowLaneKey, onMove, }: BoardProps) => ReactNode;
|
|
122
135
|
//# sourceMappingURL=Board.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Board.d.ts","sourceRoot":"","sources":["../../src/Board/Board.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AASpD,MAAM,MAAM,SAAS,GAAG;IACtB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CACnC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"Board.d.ts","sourceRoot":"","sources":["../../src/Board/Board.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AASpD,MAAM,MAAM,SAAS,GAAG;IACtB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC/B,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CACnC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,eAAO,MAAM,KAAK,GAAI,yFASnB,UAAU,KAAG,SA6Nf,CAAA"}
|
package/dist/Board/Board.js
CHANGED
|
@@ -26,9 +26,11 @@ import { useBoardDrag } from "./useBoardDrag.js";
|
|
|
26
26
|
* So there are **two nested containers**, and they answer two
|
|
27
27
|
* different questions:
|
|
28
28
|
*
|
|
29
|
-
* - The board's own box decides *how
|
|
30
|
-
*
|
|
31
|
-
* control below it.
|
|
29
|
+
* - The board's own box decides *how workflow lanes are shown* —
|
|
30
|
+
* side by side at `cq-lg` and wider, one lane plus a segmented
|
|
31
|
+
* control below it. A project-pool board with
|
|
32
|
+
* `laneLayout="rows"` keeps every lane on screen and grids the
|
|
33
|
+
* cards inside each horizontal band instead.
|
|
32
34
|
* - Each lane's list decides *what shape a card is* — two lines,
|
|
33
35
|
* one line, or its own card. See `BoardCard`.
|
|
34
36
|
*
|
|
@@ -40,9 +42,10 @@ import { useBoardDrag } from "./useBoardDrag.js";
|
|
|
40
42
|
* *"No horizontal scroll, ever. The board becomes a segmented
|
|
41
43
|
* control, never a pan surface."* A board that pans sideways hides
|
|
42
44
|
* lanes behind a gesture with no affordance, and on a trackpad it
|
|
43
|
-
* fights the browser's own back-navigation. So the narrow
|
|
44
|
-
* shows one lane at a time and names the others in a
|
|
45
|
-
* that says how many cards each holds.
|
|
45
|
+
* fights the browser's own back-navigation. So the narrow workflow
|
|
46
|
+
* layout shows one lane at a time and names the others in a
|
|
47
|
+
* `radiogroup` that says how many cards each holds. A row layout
|
|
48
|
+
* wraps its cards inside each lane and also never pans.
|
|
46
49
|
*
|
|
47
50
|
* ### Moving a card is a first-class operation, and it is not a drag
|
|
48
51
|
*
|
|
@@ -68,7 +71,7 @@ import { useBoardDrag } from "./useBoardDrag.js";
|
|
|
68
71
|
* panel that reaches across every lane is not a lane — it is an
|
|
69
72
|
* `Alert` above the board, which is how the docs page composes it.
|
|
70
73
|
*/
|
|
71
|
-
export const Board = ({ className, headingLevel = 3, label, lanes, moveIcon, narrowLaneKey, onMove, }) => {
|
|
74
|
+
export const Board = ({ className, headingLevel = 3, label, laneLayout = "columns", lanes, moveIcon, narrowLaneKey, onMove, }) => {
|
|
72
75
|
const [visibleLaneKey, setVisibleLaneKey] = useState(narrowLaneKey ?? lanes[0]?.key ?? "");
|
|
73
76
|
/**
|
|
74
77
|
* What the live region last said. A string rather than a boolean
|
|
@@ -139,7 +142,9 @@ export const Board = ({ className, headingLevel = 3, label, lanes, moveIcon, nar
|
|
|
139
142
|
* still answers an unnamed query, which is why the segmented
|
|
140
143
|
* control and the lanes below keep their plain `cq-lg:`.
|
|
141
144
|
*/
|
|
142
|
-
className: toClassName("@container/board", className), children: [_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx(SegmentedControl, { className: "max-w-full flex-wrap
|
|
145
|
+
className: toClassName("@container/board", className), children: [_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx(SegmentedControl, { className: toClassName("max-w-full flex-wrap", laneLayout === "rows"
|
|
146
|
+
? "hidden"
|
|
147
|
+
: "cq-lg:hidden"), items: lanes.map((lane) => ({
|
|
143
148
|
// Stacked rather than `Todo (6)`, because the count is
|
|
144
149
|
// the reason to look: a lane picker that reads
|
|
145
150
|
// "In Progress (5)" on one line is a long label with a
|
|
@@ -149,9 +154,10 @@ export const Board = ({ className, headingLevel = 3, label, lanes, moveIcon, nar
|
|
|
149
154
|
value: lane.key,
|
|
150
155
|
})), label: `${label} lanes`, onChange: (value) => {
|
|
151
156
|
setVisibleLaneKey(value ?? "");
|
|
152
|
-
}, selectedValue: visibleLaneKey }), _jsx("div", { className: "flex flex-col gap-4
|
|
157
|
+
}, selectedValue: visibleLaneKey }), _jsx("div", { className: toClassName("flex flex-col gap-4", laneLayout === "columns" &&
|
|
158
|
+
"cq-lg:flex-row cq-lg:items-start"), children: lanes.map((lane) => (_jsx(BoardLaneList, { headingLevel: headingLevel, dropIndicatorOffset: drag?.target?.laneKey === lane.key
|
|
153
159
|
? drag.indicatorOffset
|
|
154
|
-
: null, isVisibleWhenNarrow: lane.key === visibleLaneKey, lane: lane, moveIcon: moveIcon, moveTargets: lanes
|
|
160
|
+
: null, isVisibleWhenNarrow: lane.key === visibleLaneKey, lane: lane, laneLayout: laneLayout, moveIcon: moveIcon, moveTargets: lanes
|
|
155
161
|
.filter((one) => one.key !== lane.key)
|
|
156
162
|
.map((one) => ({
|
|
157
163
|
key: one.key,
|
package/dist/Board/Board.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Board.js","sourceRoot":"","sources":["../../src/Board/Board.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAA0C,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAsC,CAAA;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAA;AACnD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,GACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"Board.js","sourceRoot":"","sources":["../../src/Board/Board.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IntentName } from "@charcuterie/tokens";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
3
|
import type { CardAccentEdge } from "../Card/cardAccentEdge.ts";
|
|
4
|
+
import type { MenuProps } from "../Menu/Menu.tsx";
|
|
4
5
|
type BoardItemFields = {
|
|
5
6
|
/** What the bar means, in words. "Priority 0", "Movies and Shows". */
|
|
6
7
|
accentLabel?: string;
|
|
@@ -39,6 +40,12 @@ type BoardItemFields = {
|
|
|
39
40
|
title: string;
|
|
40
41
|
/** The trailing cluster: an assignee avatar, an elapsed-time chip. */
|
|
41
42
|
trailing?: ReactNode;
|
|
43
|
+
/**
|
|
44
|
+
* Extra actions in the card's existing menu, after the lane moves.
|
|
45
|
+
* A separator is added when both sets have entries, so a consumer
|
|
46
|
+
* can add a card action without creating a second trigger.
|
|
47
|
+
*/
|
|
48
|
+
menuItems?: MenuProps["items"];
|
|
42
49
|
};
|
|
43
50
|
/**
|
|
44
51
|
* The leading colour bar, in one of two shapes — and the second one
|
|
@@ -124,6 +131,12 @@ type BoardItemTitleLink = {
|
|
|
124
131
|
};
|
|
125
132
|
export type BoardItem = BoardItemAccent & BoardItemFields & BoardItemTitleLink;
|
|
126
133
|
export type BoardCardProps = {
|
|
134
|
+
/**
|
|
135
|
+
* A grid card measures its own inline size for its inner layout.
|
|
136
|
+
* A list card inherits the lane's measurement, which is almost
|
|
137
|
+
* the same width and avoids an unnecessary nested container.
|
|
138
|
+
*/
|
|
139
|
+
isInGrid: boolean;
|
|
127
140
|
item: BoardItem;
|
|
128
141
|
laneLabel: string;
|
|
129
142
|
/**
|
|
@@ -157,25 +170,25 @@ export type BoardCardProps = {
|
|
|
157
170
|
* One row on the board — and *row* is only what it is at some
|
|
158
171
|
* widths.
|
|
159
172
|
*
|
|
160
|
-
* ### The three shapes are one component, chosen by
|
|
173
|
+
* ### The three shapes are one component, chosen by available space
|
|
161
174
|
*
|
|
162
175
|
* The requirement this was built against is unusually specific, and
|
|
163
176
|
* it is specific because the owner answered "which row style?" with
|
|
164
177
|
* *"all three, depending"*:
|
|
165
178
|
*
|
|
166
|
-
* | The
|
|
179
|
+
* | The card's available width is | The card is |
|
|
167
180
|
* | --- | --- |
|
|
168
181
|
* | narrower than `cq-sm` (24rem) | **two lines** — title clamped to two, metadata underneath, only the trailing slot beside it |
|
|
169
182
|
* | `cq-sm` to `cq-lg` | **one line** — title ellipsised, metadata right-aligned |
|
|
170
183
|
* | `cq-lg` (48rem) and wider | **a card** — its own border, surface and elevation, instead of a divider in a list |
|
|
171
184
|
*
|
|
172
|
-
* Every one of those is a **container** query
|
|
173
|
-
* list
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
* would be a defect.
|
|
185
|
+
* Every one of those is a **container** query, never a media query.
|
|
186
|
+
* A list card reads the lane because it fills that lane. A grid card
|
|
187
|
+
* is its own container because several cards share a wide row. A
|
|
188
|
+
* lane in a three-up board is narrow on a 4K display, and a zoomed
|
|
189
|
+
* browser can report far fewer effective CSS pixels than its window
|
|
190
|
+
* has. Window width is not a proxy for the space this card has. A
|
|
191
|
+
* `@media (max-width: …)` anywhere in this file would be a defect.
|
|
179
192
|
*
|
|
180
193
|
* It also dissolved a bug rather than only satisfying a preference:
|
|
181
194
|
* a *fixed* two-line row collapsed its title to `a…` inside a narrow
|
|
@@ -223,6 +236,6 @@ export type BoardCardProps = {
|
|
|
223
236
|
* Narrow View's single lane is wide, so the nearer container
|
|
224
237
|
* answers this question exactly backwards.
|
|
225
238
|
*/
|
|
226
|
-
export declare const BoardCard: ({ item, laneLabel, moveIcon, moveTargets, onMoveToLane, onStartDrag, }: BoardCardProps) => ReactNode;
|
|
239
|
+
export declare const BoardCard: ({ isInGrid, item, laneLabel, moveIcon, moveTargets, onMoveToLane, onStartDrag, }: BoardCardProps) => ReactNode;
|
|
227
240
|
export {};
|
|
228
241
|
//# sourceMappingURL=BoardCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoardCard.d.ts","sourceRoot":"","sources":["../../src/Board/BoardCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"BoardCard.d.ts","sourceRoot":"","sources":["../../src/Board/BoardCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAS/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAMjD,KAAK,eAAe,GAAG;IACrB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,KAAK,eAAe,GAChB;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,UAAU,CAAA;CAAE,GACjD;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,KAAK,kBAAkB,GACnB;IACE,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,KAAK,CAAA;CACrB,GACD;IACE,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB;;;;;;;;OAQG;IACH,YAAY,EAAE,SAAS,CAAA;CACxB,CAAA;AAEL,MAAM,MAAM,SAAS,GAAG,eAAe,GACrC,eAAe,GACf,kBAAkB,CAAA;AAEpB,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,0DAA0D;IAC1D,WAAW,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtD,8DAA8D;IAC9D,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE;QAC3B,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,WAAW,GAAG,OAAO,CAAA;QACpC,SAAS,EAAE,MAAM,CAAA;KAClB,KAAK,IAAI,CAAA;CACX,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,eAAO,MAAM,SAAS,GAAI,kFAQvB,cAAc,KAAG,SAkQnB,CAAA"}
|
package/dist/Board/BoardCard.js
CHANGED
|
@@ -11,25 +11,25 @@ import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
|
11
11
|
* One row on the board — and *row* is only what it is at some
|
|
12
12
|
* widths.
|
|
13
13
|
*
|
|
14
|
-
* ### The three shapes are one component, chosen by
|
|
14
|
+
* ### The three shapes are one component, chosen by available space
|
|
15
15
|
*
|
|
16
16
|
* The requirement this was built against is unusually specific, and
|
|
17
17
|
* it is specific because the owner answered "which row style?" with
|
|
18
18
|
* *"all three, depending"*:
|
|
19
19
|
*
|
|
20
|
-
* | The
|
|
20
|
+
* | The card's available width is | The card is |
|
|
21
21
|
* | --- | --- |
|
|
22
22
|
* | narrower than `cq-sm` (24rem) | **two lines** — title clamped to two, metadata underneath, only the trailing slot beside it |
|
|
23
23
|
* | `cq-sm` to `cq-lg` | **one line** — title ellipsised, metadata right-aligned |
|
|
24
24
|
* | `cq-lg` (48rem) and wider | **a card** — its own border, surface and elevation, instead of a divider in a list |
|
|
25
25
|
*
|
|
26
|
-
* Every one of those is a **container** query
|
|
27
|
-
* list
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* would be a defect.
|
|
26
|
+
* Every one of those is a **container** query, never a media query.
|
|
27
|
+
* A list card reads the lane because it fills that lane. A grid card
|
|
28
|
+
* is its own container because several cards share a wide row. A
|
|
29
|
+
* lane in a three-up board is narrow on a 4K display, and a zoomed
|
|
30
|
+
* browser can report far fewer effective CSS pixels than its window
|
|
31
|
+
* has. Window width is not a proxy for the space this card has. A
|
|
32
|
+
* `@media (max-width: …)` anywhere in this file would be a defect.
|
|
33
33
|
*
|
|
34
34
|
* It also dissolved a bug rather than only satisfying a preference:
|
|
35
35
|
* a *fixed* two-line row collapsed its title to `a…` inside a narrow
|
|
@@ -77,10 +77,34 @@ import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
|
77
77
|
* Narrow View's single lane is wide, so the nearer container
|
|
78
78
|
* answers this question exactly backwards.
|
|
79
79
|
*/
|
|
80
|
-
export const BoardCard = ({ item, laneLabel, moveIcon, moveTargets, onMoveToLane, onStartDrag, }) => {
|
|
80
|
+
export const BoardCard = ({ isInGrid, item, laneLabel, moveIcon, moveTargets, onMoveToLane, onStartDrag, }) => {
|
|
81
81
|
const [isMenuVisible, setIsMenuVisible] = useState(false);
|
|
82
|
+
const isMovable = onMoveToLane != null && moveTargets.length > 0;
|
|
83
|
+
const hasMenuItems = (item.menuItems?.length ?? 0) > 0;
|
|
84
|
+
const hasMenu = onMoveToLane != null && (isMovable || hasMenuItems);
|
|
85
|
+
const menuItems = [
|
|
86
|
+
...(isMovable
|
|
87
|
+
? moveTargets.map((target) => ({
|
|
88
|
+
key: target.key,
|
|
89
|
+
label: target.label,
|
|
90
|
+
onSelect: () => {
|
|
91
|
+
onMoveToLane?.(target.key);
|
|
92
|
+
},
|
|
93
|
+
}))
|
|
94
|
+
: []),
|
|
95
|
+
...(hasMenuItems && isMovable
|
|
96
|
+
? [
|
|
97
|
+
{
|
|
98
|
+
key: "board-extra-actions",
|
|
99
|
+
type: "separator",
|
|
100
|
+
},
|
|
101
|
+
]
|
|
102
|
+
: []),
|
|
103
|
+
...(item.menuItems ?? []),
|
|
104
|
+
];
|
|
105
|
+
const menuLabel = isMovable ? "Move" : "More";
|
|
82
106
|
const titleBlock = (_jsx("span", { className: "line-clamp-2 cq-sm:line-clamp-none cq-sm:block cq-sm:truncate", children: item.titleContent ?? item.title }));
|
|
83
|
-
return (_jsxs("li", { className: toClassName("group relative flex gap-2 border-border-subtle border-b py-2 pe-1 last:border-b-0",
|
|
107
|
+
return (_jsxs("li", { className: toClassName("group relative flex gap-2 border-border-subtle border-b py-2 pe-1 last:border-b-0", isInGrid && "@container",
|
|
84
108
|
// At `cq-lg` the list stops being a list of rows: the
|
|
85
109
|
// divider goes and each card grows its own box. The *list*
|
|
86
110
|
// cannot do this to itself — it is the container, and a
|
|
@@ -100,13 +124,7 @@ export const BoardCard = ({ item, laneLabel, moveIcon, moveTargets, onMoveToLane
|
|
|
100
124
|
item.accentEdge != null &&
|
|
101
125
|
toClassName("ps-2", getAccentEdgeClassName(item.accentEdge)), item.isDimmed && "opacity-60"), "data-board-card": item.key, ...(item.accentEdge == null
|
|
102
126
|
? {}
|
|
103
|
-
: { style: getAccentEdgeStyle(item.accentEdge) }), children: [item.accentEdge != null && item.accentLabel ? (_jsx(VisuallyHidden, { children: item.accentLabel })) : null, item.accentIntent ? (_jsx("span", { className: toClassName("w-1 shrink-0 self-stretch rounded-full", INTENT_SOLID_FILL_CLASS[item.accentIntent]), children: item.accentLabel ? (_jsx(VisuallyHidden, { children: item.accentLabel })) : null })) : null, _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsxs("div", { className: "flex min-w-0 items-start gap-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1 cq-sm:flex-row cq-sm:items-center cq-sm:gap-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-1.5 text-sm leading-snug", children: [item.marks ? (_jsx("span", { className: "flex shrink-0 items-center gap-1 pt-1", children: item.marks })) : null, item.href ? (_jsx(TextLink, { appearance: "standalone", className: "min-w-0 max-w-full font-normal", href: item.href, intent: "neutral", children: titleBlock })) : item.onSelect ? (_jsx("button", { className: toClassName("min-w-0 max-w-full cursor-pointer rounded-xs text-start text-intent-neutral-content hover:underline", FOCUS_RING_CLASS), onClick: item.onSelect, type: "button", children: titleBlock })) : (titleBlock)] }), item.meta ? (_jsx("div", { className: "flex min-w-0 flex-wrap items-center gap-1 cq-sm:shrink-0 cq-sm:flex-nowrap cq-sm:justify-end", children: item.meta })) : null] }), item.trailing ||
|
|
104
|
-
key: target.key,
|
|
105
|
-
label: target.label,
|
|
106
|
-
onSelect: () => {
|
|
107
|
-
onMoveToLane(target.key);
|
|
108
|
-
},
|
|
109
|
-
})), onDismiss: () => {
|
|
127
|
+
: { style: getAccentEdgeStyle(item.accentEdge) }), children: [item.accentEdge != null && item.accentLabel ? (_jsx(VisuallyHidden, { children: item.accentLabel })) : null, item.accentIntent ? (_jsx("span", { className: toClassName("w-1 shrink-0 self-stretch rounded-full", INTENT_SOLID_FILL_CLASS[item.accentIntent]), children: item.accentLabel ? (_jsx(VisuallyHidden, { children: item.accentLabel })) : null })) : null, _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsxs("div", { className: "flex min-w-0 items-start gap-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1 cq-sm:flex-row cq-sm:items-center cq-sm:gap-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-1.5 text-sm leading-snug", children: [item.marks ? (_jsx("span", { className: "flex shrink-0 items-center gap-1 pt-1", children: item.marks })) : null, item.href ? (_jsx(TextLink, { appearance: "standalone", className: "min-w-0 max-w-full font-normal", href: item.href, intent: "neutral", children: titleBlock })) : item.onSelect ? (_jsx("button", { className: toClassName("min-w-0 max-w-full cursor-pointer rounded-xs text-start text-intent-neutral-content hover:underline", FOCUS_RING_CLASS), onClick: item.onSelect, type: "button", children: titleBlock })) : (titleBlock)] }), item.meta ? (_jsx("div", { className: "flex min-w-0 flex-wrap items-center gap-1 cq-sm:shrink-0 cq-sm:flex-nowrap cq-sm:justify-end", children: item.meta })) : null] }), item.trailing || hasMenu ? (_jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [item.trailing, hasMenu ? (_jsx(Menu, { isVisible: isMenuVisible, items: menuItems, onDismiss: () => {
|
|
110
128
|
setIsMenuVisible(false);
|
|
111
129
|
}, placement: "bottom-end", trigger: _jsxs(Button, { appearance: "ghost", intent: "neutral", className: toClassName(
|
|
112
130
|
// `touch-none` so a touch drag is a drag
|
|
@@ -131,9 +149,13 @@ export const BoardCard = ({ item, laneLabel, moveIcon, moveTargets, onMoveToLane
|
|
|
131
149
|
moveIcon != null &&
|
|
132
150
|
"@min-[48rem]/board:w-(--control-height-sm) @min-[48rem]/board:px-0"), onClick: () => {
|
|
133
151
|
setIsMenuVisible((isVisible) => !isVisible);
|
|
134
|
-
}, onPointerDown:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
152
|
+
}, onPointerDown: isMovable
|
|
153
|
+
? (pointerEvent) => {
|
|
154
|
+
onStartDrag?.(pointerEvent);
|
|
155
|
+
}
|
|
156
|
+
: undefined, size: "sm", sizing: "control", children: [moveIcon == null ? null : (_jsx("span", { "aria-hidden": "true", className: "hidden @min-[48rem]/board:contents", children: moveIcon })), _jsx("span", { "aria-hidden": "true", className: toClassName(moveIcon != null &&
|
|
157
|
+
"@min-[48rem]/board:hidden"), children: menuLabel }), _jsx(VisuallyHidden, { children: isMovable
|
|
158
|
+
? `Move ${item.title}, currently in ${laneLabel}`
|
|
159
|
+
: `More actions for ${item.title}, currently in ${laneLabel}` })] }) })) : null] })) : null] }), item.footer ? (_jsx("div", { className: "min-w-0 text-content-secondary text-xs", children: item.footer })) : null] })] }));
|
|
138
160
|
};
|
|
139
161
|
//# sourceMappingURL=BoardCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoardCard.js","sourceRoot":"","sources":["../../src/Board/BoardCard.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAsB,CAAA;AAE7C,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"BoardCard.js","sourceRoot":"","sources":["../../src/Board/BoardCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -79,6 +79,7 @@ export type BoardLaneListProps = {
|
|
|
79
79
|
headingLevel: 2 | 3 | 4 | 5;
|
|
80
80
|
isVisibleWhenNarrow: boolean;
|
|
81
81
|
lane: BoardLane;
|
|
82
|
+
laneLayout: "columns" | "rows";
|
|
82
83
|
moveIcon?: ReactNode;
|
|
83
84
|
moveTargets: readonly {
|
|
84
85
|
key: string;
|
|
@@ -128,5 +129,5 @@ export type BoardLaneListProps = {
|
|
|
128
129
|
* windowing on the side that owns the data, and keeps this component
|
|
129
130
|
* from pretending to know how many rows are worth painting.
|
|
130
131
|
*/
|
|
131
|
-
export declare const BoardLaneList: ({ dropIndicatorOffset, headingLevel, isVisibleWhenNarrow, lane, moveIcon, moveTargets, onMoveToLane, onStartDrag, registerListElement, }: BoardLaneListProps) => ReactNode;
|
|
132
|
+
export declare const BoardLaneList: ({ dropIndicatorOffset, headingLevel, isVisibleWhenNarrow, lane, laneLayout, moveIcon, moveTargets, onMoveToLane, onStartDrag, registerListElement, }: BoardLaneListProps) => ReactNode;
|
|
132
133
|
//# sourceMappingURL=BoardLaneList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoardLaneList.d.ts","sourceRoot":"","sources":["../../src/Board/BoardLaneList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,MAAM,MAAM,SAAS,GAAG;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX;;;;;;;;;;;OAWG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;;OAMG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtD,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,KACd,IAAI,CAAA;IACT,WAAW,CAAC,EAAE,CACZ,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,WAAW,GAAG,OAAO,CAAA;QACpC,SAAS,EAAE,MAAM,CAAA;KAClB,EACD,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAC3C,IAAI,CAAA;IACT,mBAAmB,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;CAC3D,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,aAAa,GAAI,
|
|
1
|
+
{"version":3,"file":"BoardLaneList.d.ts","sourceRoot":"","sources":["../../src/Board/BoardLaneList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,MAAM,MAAM,SAAS,GAAG;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX;;;;;;;;;;;OAWG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;;OAMG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,SAAS,CAAA;IACf,UAAU,EAAE,SAAS,GAAG,MAAM,CAAA;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtD,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,KACd,IAAI,CAAA;IACT,WAAW,CAAC,EAAE,CACZ,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,WAAW,GAAG,OAAO,CAAA;QACpC,SAAS,EAAE,MAAM,CAAA;KAClB,EACD,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAC3C,IAAI,CAAA;IACT,mBAAmB,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;CAC3D,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,aAAa,GAAI,sJAW3B,kBAAkB,KAAG,SA0MvB,CAAA"}
|
|
@@ -38,7 +38,7 @@ import { BoardCard } from "./BoardCard.js";
|
|
|
38
38
|
* windowing on the side that owns the data, and keeps this component
|
|
39
39
|
* from pretending to know how many rows are worth painting.
|
|
40
40
|
*/
|
|
41
|
-
export const BoardLaneList = ({ dropIndicatorOffset, headingLevel, isVisibleWhenNarrow, lane, moveIcon, moveTargets, onMoveToLane, onStartDrag, registerListElement, }) => {
|
|
41
|
+
export const BoardLaneList = ({ dropIndicatorOffset, headingLevel, isVisibleWhenNarrow, lane, laneLayout, moveIcon, moveTargets, onMoveToLane, onStartDrag, registerListElement, }) => {
|
|
42
42
|
const headingId = useUniqueId();
|
|
43
43
|
const itemCount = lane.itemCount ?? lane.items.length;
|
|
44
44
|
const hiddenCount = itemCount - lane.items.length;
|
|
@@ -49,10 +49,18 @@ export const BoardLaneList = ({ dropIndicatorOffset, headingLevel, isVisibleWhen
|
|
|
49
49
|
// queries the **board**, not the list below — an element
|
|
50
50
|
// carrying `container-type` still resolves its own container
|
|
51
51
|
// queries against its nearest ancestor container.
|
|
52
|
-
|
|
52
|
+
laneLayout === "rows"
|
|
53
|
+
? "flex"
|
|
54
|
+
: isVisibleWhenNarrow
|
|
55
|
+
? "flex"
|
|
56
|
+
: "hidden cq-lg:flex"), children: _jsx("div", { className: "@container", children: _jsxs("div", { className: toClassName("gap-2 rounded-lg border border-border-subtle px-3 py-2", laneLayout === "rows"
|
|
57
|
+
? "grid bg-surface-raised cq-lg:grid-cols-[12rem_minmax(0,1fr)] cq-lg:items-start cq-lg:gap-x-3"
|
|
58
|
+
: "flex flex-col bg-surface-raised cq-lg:border-0 cq-lg:bg-transparent cq-lg:p-0"), children: [_jsxs("header", { className: toClassName("flex items-center gap-2", laneLayout === "rows" && "flex-wrap"), children: [_jsx(Heading, { className: "font-semibold text-content-primary text-sm", id: headingId, children: lane.href ? (_jsx(TextLink, { appearance: "standalone", className: "font-semibold text-inherit", href: lane.href, children: lane.label })) : (lane.label) }), _jsx(Badge, { appearance: "soft", intent: "neutral", size: "sm", children: String(itemCount) }), _jsx("span", { className: "flex-1" }), lane.actions] }), _jsxs("ul", { className: toClassName("relative", laneLayout === "rows"
|
|
59
|
+
? "grid grid-cols-[repeat(auto-fit,minmax(min(100%,14rem),1fr))] gap-2"
|
|
60
|
+
: "flex flex-col"), ref: registerListElement, children: [lane.items.length === 0 ? (_jsx("li", { children: lane.emptyState ?? (_jsx(EmptyState, { description: "Nothing is waiting here.", heading: "Nothing here", headingLevel:
|
|
53
61
|
// One below the lane's own, so the outline
|
|
54
62
|
// stays whole wherever the board is mounted.
|
|
55
|
-
(headingLevel + 1), size: "sm" })) })) : (lane.items.map((item, index) => (_jsx(BoardCard, { item: item, laneLabel: lane.label, moveIcon: moveIcon, moveTargets: moveTargets, onMoveToLane: onMoveToLane
|
|
63
|
+
(headingLevel + 1), size: "sm" })) })) : (lane.items.map((item, index) => (_jsx(BoardCard, { isInGrid: laneLayout === "rows", item: item, laneLabel: lane.label, moveIcon: moveIcon, moveTargets: moveTargets, onMoveToLane: onMoveToLane
|
|
56
64
|
? (toLaneKey) => {
|
|
57
65
|
onMoveToLane(item.key, toLaneKey);
|
|
58
66
|
}
|
|
@@ -65,6 +73,7 @@ export const BoardLaneList = ({ dropIndicatorOffset, headingLevel, isVisibleWhen
|
|
|
65
73
|
}
|
|
66
74
|
: undefined }, item.key)))), dropIndicatorOffset === null ? null : (_jsx("li", { "aria-hidden": "true", className: "pointer-events-none absolute end-0 start-0 h-0.5 rounded-full bg-intent-accent-solid", style: {
|
|
67
75
|
insetBlockStart: `${dropIndicatorOffset}px`,
|
|
68
|
-
} }))] }), hiddenCount > 0 ? (_jsx("p", { className: "text-content-muted text-xs",
|
|
76
|
+
} }))] }), hiddenCount > 0 ? (_jsx("p", { className: toClassName("text-content-muted text-xs", laneLayout === "rows" &&
|
|
77
|
+
"cq-lg:col-start-2"), children: lane.onShowMore ? (_jsx(Button, { appearance: "ghost", intent: "neutral", onClick: lane.onShowMore, size: "sm", children: `+ ${hiddenCount} more in ${lane.label}` })) : (`+ ${hiddenCount} more in ${lane.label}`) })) : null] }) }) }));
|
|
69
78
|
};
|
|
70
79
|
//# sourceMappingURL=BoardLaneList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoardLaneList.js","sourceRoot":"","sources":["../../src/Board/BoardLaneList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAsB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA8B,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAA0B,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"BoardLaneList.js","sourceRoot":"","sources":["../../src/Board/BoardLaneList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ export type MarkdownImageUpload = {
|
|
|
23
23
|
* the words *"More actions"* — which is the one width where an
|
|
24
24
|
* icon bar looks unfinished, and there was no prop to fix it with.
|
|
25
25
|
*/
|
|
26
|
-
export type MarkdownEditorIcons = Partial<Record<"bold" | "bulletedList" | "code" | "heading" | "italic" | "link" | "numberedList" | "overflow" | "quote" | "taskList", ReactNode>>;
|
|
26
|
+
export type MarkdownEditorIcons = Partial<Record<"bold" | "bulletedList" | "code" | "heading" | "image" | "italic" | "link" | "numberedList" | "overflow" | "quote" | "taskList", ReactNode>>;
|
|
27
27
|
export type MarkdownEditorProps = SlotProps & {
|
|
28
28
|
className?: string;
|
|
29
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../src/MarkdownEditor/MarkdownEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,SAAS,EACV,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA0BhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,MAAM,CACF,MAAM,GACN,cAAc,GACd,MAAM,GACN,SAAS,GACT,QAAQ,GACR,MAAM,GACN,cAAc,GACd,UAAU,GACV,OAAO,GACP,UAAU,EACZ,SAAS,CACV,CACF,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,IAAI,KACP,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AA+DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AACH,eAAO,MAAM,cAAc,GAAI,4JAa5B,mBAAmB,KAAG,
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../src/MarkdownEditor/MarkdownEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,SAAS,EACV,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA0BhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,MAAM,CACF,MAAM,GACN,cAAc,GACd,MAAM,GACN,SAAS,GACT,OAAO,GACP,QAAQ,GACR,MAAM,GACN,cAAc,GACd,UAAU,GACV,OAAO,GACP,UAAU,EACZ,SAAS,CACV,CACF,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,IAAI,KACP,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AA+DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AACH,eAAO,MAAM,cAAc,GAAI,4JAa5B,mBAAmB,KAAG,SAksBxB,CAAA"}
|