@thebuoyant-tsdev/mui-ts-library 3.29.2 → 3.30.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.de.md +49 -1
- package/README.md +49 -1
- package/dist/components/chord-chart/ChordChart.js +112 -112
- package/dist/components/circle-packing-chart/CirclePackingChart.js +135 -135
- package/dist/components/color-picker/ColorPicker.js +217 -217
- package/dist/components/color-picker/PopoverColorPicker.js +7 -7
- package/dist/components/date-range-picker/DateRangePicker.js +9 -9
- package/dist/components/gantt-chart/GanttChart.js +18 -18
- package/dist/components/gantt-chart/GanttTaskDialog.js +43 -43
- package/dist/components/gantt-chart/GanttTaskPanel.js +128 -128
- package/dist/components/gantt-chart/GanttTimeline.js +16 -16
- package/dist/components/gantt-chart/GanttToolbar.js +24 -24
- package/dist/components/horizontal-tree-chart/HorizontalTreeChart.js +244 -244
- package/dist/components/json-editor/JsonEditor.js +9 -9
- package/dist/components/json-editor/JsonEditorContent.js +54 -54
- package/dist/components/json-editor/JsonEditorToolbar.js +12 -12
- package/dist/components/kanban-board/KanbanBoard.d.ts +2 -0
- package/dist/components/kanban-board/KanbanBoard.js +129 -0
- package/dist/components/kanban-board/KanbanBoard.types.d.ts +84 -0
- package/dist/components/kanban-board/KanbanBoard.types.js +19 -0
- package/dist/components/kanban-board/KanbanBoardCard.d.ts +13 -0
- package/dist/components/kanban-board/KanbanBoardCard.js +104 -0
- package/dist/components/kanban-board/KanbanBoardCardDialog.d.ts +23 -0
- package/dist/components/kanban-board/KanbanBoardCardDialog.js +120 -0
- package/dist/components/kanban-board/KanbanBoardColumn.d.ts +14 -0
- package/dist/components/kanban-board/KanbanBoardColumn.js +129 -0
- package/dist/components/kanban-board/kanbanBoardClasses.d.ts +47 -0
- package/dist/components/kanban-board/kanbanBoardClasses.js +18 -0
- package/dist/components/password-strength-meter/PasswordStrengthMeter.js +27 -27
- package/dist/components/radial-stacked-bar-chart/RadialStackedBarChart.js +48 -48
- package/dist/components/radial-tree-chart/RadialTreeChart.js +173 -173
- package/dist/components/rich-text-editor/RichTextEditor.js +32 -32
- package/dist/components/rich-text-editor/RichTextEditorColorPicker.js +20 -20
- package/dist/components/rich-text-editor/RichTextEditorEmojiPicker.js +12 -12
- package/dist/components/rich-text-editor/RichTextEditorImageDialog.js +11 -11
- package/dist/components/rich-text-editor/RichTextEditorLinkDialog.js +11 -11
- package/dist/components/rich-text-editor/RichTextEditorMarkdownDialog.js +14 -14
- package/dist/components/rich-text-editor/RichTextEditorMentionList.js +14 -14
- package/dist/components/rich-text-editor/RichTextEditorTableMenu.js +28 -28
- package/dist/components/rich-text-editor/RichTextEditorToolbar.js +35 -35
- package/dist/components/sql-editor/SqlEditor.js +24 -24
- package/dist/components/sql-editor/SqlEditorContent.js +16 -16
- package/dist/components/sql-editor/SqlEditorHistoryMenu.js +15 -15
- package/dist/components/sql-editor/SqlEditorToolbar.js +21 -21
- package/dist/components/sunburst-chart/SunburstChart.js +126 -126
- package/dist/components/tag-selection/TagSelection.js +18 -18
- package/dist/components/tag-selection/TagSelectionAutocomplete.js +120 -120
- package/dist/components/tag-selection/TagSelectionSelectedTags.js +10 -10
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +38 -35
- package/package.json +9 -2
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { muiTsStateClasses as e } from "../../utils/muiTsClasses.js";
|
|
2
|
+
import { kanbanBoardClasses as t } from "./kanbanBoardClasses.js";
|
|
3
|
+
import { useSortable as n } from "@dnd-kit/sortable";
|
|
4
|
+
import { Box as r, Card as i, CardActionArea as a, CardContent as o, Chip as s, Typography as c } from "@mui/material";
|
|
5
|
+
import { CSS as l } from "@dnd-kit/utilities";
|
|
6
|
+
import u from "@mui/icons-material/CalendarToday";
|
|
7
|
+
import d from "@mui/icons-material/Person";
|
|
8
|
+
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
9
|
+
//#region src/components/kanban-board/KanbanBoardCard.tsx
|
|
10
|
+
var m = {
|
|
11
|
+
fontSize: "0.7rem",
|
|
12
|
+
height: 22,
|
|
13
|
+
"& .MuiChip-icon": {
|
|
14
|
+
fontSize: "0.75rem",
|
|
15
|
+
width: "0.75rem",
|
|
16
|
+
height: "0.75rem",
|
|
17
|
+
ml: "8px",
|
|
18
|
+
mr: "4px"
|
|
19
|
+
},
|
|
20
|
+
"& .MuiChip-label": {
|
|
21
|
+
pl: "2px",
|
|
22
|
+
pr: "10px"
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
function h({ task: h, showAssignee: g, showDueDate: _, chipVariant: v, t: y, onCardClick: b, isOverlay: x = !1 }) {
|
|
26
|
+
let { attributes: S, listeners: C, setNodeRef: w, transform: T, transition: E, isDragging: D } = n({
|
|
27
|
+
id: h.id,
|
|
28
|
+
disabled: x
|
|
29
|
+
}), O = x ? { cursor: "grabbing" } : {
|
|
30
|
+
transform: l.Transform.toString(T),
|
|
31
|
+
transition: E,
|
|
32
|
+
opacity: +!D,
|
|
33
|
+
cursor: "grab"
|
|
34
|
+
}, k = g && !!h.assignee || _ && !!h.dueDate, A = h.dueDate ? h.dueDate.toLocaleDateString(void 0, {
|
|
35
|
+
day: "2-digit",
|
|
36
|
+
month: "short",
|
|
37
|
+
year: "numeric"
|
|
38
|
+
}) : null;
|
|
39
|
+
return /* @__PURE__ */ f(i, {
|
|
40
|
+
ref: x ? void 0 : w,
|
|
41
|
+
style: O,
|
|
42
|
+
className: [t.card, D && e.selected].filter(Boolean).join(" "),
|
|
43
|
+
sx: {
|
|
44
|
+
mb: 1,
|
|
45
|
+
borderLeft: h.color ? `4px solid ${h.color}` : void 0,
|
|
46
|
+
userSelect: "none",
|
|
47
|
+
bgcolor: (e) => e.palette.mode === "dark" ? "grey.800" : "background.paper",
|
|
48
|
+
"&:active": { cursor: "grabbing" }
|
|
49
|
+
},
|
|
50
|
+
...x ? {} : {
|
|
51
|
+
...S,
|
|
52
|
+
...C
|
|
53
|
+
},
|
|
54
|
+
onClick: () => !D && b(h),
|
|
55
|
+
"aria-label": h.title,
|
|
56
|
+
children: /* @__PURE__ */ f(a, {
|
|
57
|
+
component: "div",
|
|
58
|
+
sx: { cursor: "inherit" },
|
|
59
|
+
children: /* @__PURE__ */ p(o, {
|
|
60
|
+
sx: {
|
|
61
|
+
p: 1.5,
|
|
62
|
+
"&:last-child": { pb: 1.5 }
|
|
63
|
+
},
|
|
64
|
+
children: [/* @__PURE__ */ f(c, {
|
|
65
|
+
className: t.cardTitle,
|
|
66
|
+
variant: "body2",
|
|
67
|
+
sx: {
|
|
68
|
+
mb: +!!k,
|
|
69
|
+
lineHeight: 1.4,
|
|
70
|
+
fontWeight: 600
|
|
71
|
+
},
|
|
72
|
+
children: h.title
|
|
73
|
+
}), k && /* @__PURE__ */ p(r, {
|
|
74
|
+
className: t.cardMeta,
|
|
75
|
+
sx: {
|
|
76
|
+
display: "flex",
|
|
77
|
+
gap: .75,
|
|
78
|
+
flexWrap: "wrap",
|
|
79
|
+
alignItems: "center"
|
|
80
|
+
},
|
|
81
|
+
children: [g && h.assignee && /* @__PURE__ */ f(s, {
|
|
82
|
+
className: t.cardAssignee,
|
|
83
|
+
icon: /* @__PURE__ */ f(d, {}),
|
|
84
|
+
label: h.assignee,
|
|
85
|
+
size: "small",
|
|
86
|
+
variant: v,
|
|
87
|
+
"aria-label": `${y.dialogFieldAssignee}: ${h.assignee}`,
|
|
88
|
+
sx: m
|
|
89
|
+
}), _ && A && /* @__PURE__ */ f(s, {
|
|
90
|
+
className: t.cardDueDate,
|
|
91
|
+
icon: /* @__PURE__ */ f(u, {}),
|
|
92
|
+
label: A,
|
|
93
|
+
size: "small",
|
|
94
|
+
variant: v,
|
|
95
|
+
"aria-label": `${y.dialogFieldDueDate}: ${A}`,
|
|
96
|
+
sx: m
|
|
97
|
+
})]
|
|
98
|
+
})]
|
|
99
|
+
})
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//#endregion
|
|
104
|
+
export { h as KanbanBoardCard };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { KanbanBoardTranslation, KanbanColumn, KanbanTask } from "./KanbanBoard.types";
|
|
2
|
+
export type KanbanDialogState = {
|
|
3
|
+
mode: "add";
|
|
4
|
+
columnId: string;
|
|
5
|
+
} | {
|
|
6
|
+
mode: "edit";
|
|
7
|
+
task: KanbanTask;
|
|
8
|
+
} | {
|
|
9
|
+
mode: "delete";
|
|
10
|
+
task: KanbanTask;
|
|
11
|
+
};
|
|
12
|
+
type KanbanBoardCardDialogProps = {
|
|
13
|
+
state: KanbanDialogState | null;
|
|
14
|
+
columns: KanbanColumn[];
|
|
15
|
+
t: Required<KanbanBoardTranslation>;
|
|
16
|
+
onSave: (task: KanbanTask) => void;
|
|
17
|
+
onDelete: (taskId: string) => void;
|
|
18
|
+
onClose: () => void;
|
|
19
|
+
/** Switch from edit to delete confirmation — handled in parent. */
|
|
20
|
+
onRequestDelete: (task: KanbanTask) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare function KanbanBoardCardDialog({ state, columns, t, onSave, onDelete, onClose, onRequestDelete }: KanbanBoardCardDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Button as e, Dialog as t, DialogActions as n, DialogContent as r, DialogContentText as i, DialogTitle as a, MenuItem as o, Stack as s, TextField as c } from "@mui/material";
|
|
2
|
+
import { useState as l } from "react";
|
|
3
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
4
|
+
import p from "@mui/icons-material/Delete";
|
|
5
|
+
//#region src/components/kanban-board/KanbanBoardCardDialog.tsx
|
|
6
|
+
function m({ state: m, columns: h, t: g, onSave: _, onDelete: v, onClose: y, onRequestDelete: b }) {
|
|
7
|
+
let x = m?.mode === "add", S = m?.mode === "edit", C = m?.mode === "delete", w = S ? m.task : null, T = C ? m.task : null, E = x ? m.columnId : null, [D, O] = l(() => S && w ? { ...w } : x && E ? {
|
|
8
|
+
id: "",
|
|
9
|
+
title: "",
|
|
10
|
+
status: E
|
|
11
|
+
} : {
|
|
12
|
+
id: "",
|
|
13
|
+
title: "",
|
|
14
|
+
status: h[0]?.id ?? ""
|
|
15
|
+
});
|
|
16
|
+
function k() {
|
|
17
|
+
let e = D.title.trim();
|
|
18
|
+
e && _({
|
|
19
|
+
...D,
|
|
20
|
+
title: e,
|
|
21
|
+
id: S ? D.id : crypto.randomUUID()
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function A(e, t) {
|
|
25
|
+
O((n) => ({
|
|
26
|
+
...n,
|
|
27
|
+
[e]: t
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
let j = x ? g.dialogAddTitle : S ? g.dialogEditTitle : g.dialogDeleteTitle;
|
|
31
|
+
return /* @__PURE__ */ f(t, {
|
|
32
|
+
open: !!m,
|
|
33
|
+
onClose: y,
|
|
34
|
+
maxWidth: "xs",
|
|
35
|
+
fullWidth: !0,
|
|
36
|
+
children: [/* @__PURE__ */ d(a, { children: j }), C && T ? /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(r, { children: /* @__PURE__ */ d(i, { children: g.dialogDeleteConfirm.replace("{title}", T.title) }) }), /* @__PURE__ */ f(n, { children: [/* @__PURE__ */ d(e, {
|
|
37
|
+
onClick: y,
|
|
38
|
+
children: g.dialogCancel
|
|
39
|
+
}), /* @__PURE__ */ d(e, {
|
|
40
|
+
color: "error",
|
|
41
|
+
startIcon: /* @__PURE__ */ d(p, {}),
|
|
42
|
+
onClick: () => v(T.id),
|
|
43
|
+
children: g.dialogDelete
|
|
44
|
+
})] })] }) : /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(r, { children: /* @__PURE__ */ f(s, {
|
|
45
|
+
spacing: 2,
|
|
46
|
+
sx: { pt: .5 },
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ d(c, {
|
|
49
|
+
label: g.dialogFieldTitle,
|
|
50
|
+
value: D.title,
|
|
51
|
+
onChange: (e) => A("title", e.target.value),
|
|
52
|
+
required: !0,
|
|
53
|
+
fullWidth: !0,
|
|
54
|
+
size: "small",
|
|
55
|
+
autoFocus: !0,
|
|
56
|
+
onKeyDown: (e) => e.key === "Enter" && k()
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ d(c, {
|
|
59
|
+
label: g.dialogFieldDescription,
|
|
60
|
+
value: D.description ?? "",
|
|
61
|
+
onChange: (e) => A("description", e.target.value || void 0),
|
|
62
|
+
fullWidth: !0,
|
|
63
|
+
size: "small",
|
|
64
|
+
multiline: !0,
|
|
65
|
+
rows: 3
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ d(c, {
|
|
68
|
+
label: g.dialogFieldAssignee,
|
|
69
|
+
value: D.assignee ?? "",
|
|
70
|
+
onChange: (e) => A("assignee", e.target.value || void 0),
|
|
71
|
+
fullWidth: !0,
|
|
72
|
+
size: "small"
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ d(c, {
|
|
75
|
+
label: g.dialogFieldDueDate,
|
|
76
|
+
type: "date",
|
|
77
|
+
value: D.dueDate ? D.dueDate.toISOString().split("T")[0] : "",
|
|
78
|
+
onChange: (e) => A("dueDate", e.target.value ? /* @__PURE__ */ new Date(e.target.value + "T00:00:00") : void 0),
|
|
79
|
+
fullWidth: !0,
|
|
80
|
+
size: "small",
|
|
81
|
+
slotProps: { inputLabel: { shrink: !0 } }
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ d(c, {
|
|
84
|
+
select: !0,
|
|
85
|
+
label: g.dialogFieldStatus,
|
|
86
|
+
value: D.status,
|
|
87
|
+
onChange: (e) => A("status", e.target.value),
|
|
88
|
+
fullWidth: !0,
|
|
89
|
+
size: "small",
|
|
90
|
+
children: h.map((e) => /* @__PURE__ */ d(o, {
|
|
91
|
+
value: e.id,
|
|
92
|
+
children: e.label
|
|
93
|
+
}, e.id))
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
}) }), /* @__PURE__ */ f(n, {
|
|
97
|
+
sx: { justifyContent: S ? "space-between" : "flex-end" },
|
|
98
|
+
children: [S && w && /* @__PURE__ */ d(e, {
|
|
99
|
+
color: "error",
|
|
100
|
+
startIcon: /* @__PURE__ */ d(p, {}),
|
|
101
|
+
onClick: () => b(w),
|
|
102
|
+
children: g.dialogDelete
|
|
103
|
+
}), /* @__PURE__ */ f(s, {
|
|
104
|
+
direction: "row",
|
|
105
|
+
spacing: 1,
|
|
106
|
+
children: [/* @__PURE__ */ d(e, {
|
|
107
|
+
onClick: y,
|
|
108
|
+
children: g.dialogCancel
|
|
109
|
+
}), /* @__PURE__ */ d(e, {
|
|
110
|
+
variant: "contained",
|
|
111
|
+
onClick: k,
|
|
112
|
+
disabled: !D.title.trim(),
|
|
113
|
+
children: g.dialogSave
|
|
114
|
+
})]
|
|
115
|
+
})]
|
|
116
|
+
})] })]
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
export { m as KanbanBoardCardDialog };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { KanbanBoardTranslation, KanbanColumn, KanbanTask } from "./KanbanBoard.types";
|
|
2
|
+
type KanbanBoardColumnProps = {
|
|
3
|
+
column: KanbanColumn;
|
|
4
|
+
tasks: KanbanTask[];
|
|
5
|
+
showAssignee: boolean;
|
|
6
|
+
showDueDate: boolean;
|
|
7
|
+
chipVariant: "outlined" | "filled";
|
|
8
|
+
t: Required<KanbanBoardTranslation>;
|
|
9
|
+
enableBuiltinDialogs: boolean;
|
|
10
|
+
onCardClick: (task: KanbanTask) => void;
|
|
11
|
+
onAddClick: (columnId: string) => void;
|
|
12
|
+
};
|
|
13
|
+
export declare function KanbanBoardColumn({ column, tasks, showAssignee, showDueDate, chipVariant, t, enableBuiltinDialogs, onCardClick, onAddClick, }: KanbanBoardColumnProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { kanbanBoardClasses as e } from "./kanbanBoardClasses.js";
|
|
2
|
+
import { KanbanBoardCard as t } from "./KanbanBoardCard.js";
|
|
3
|
+
import { useDroppable as n } from "@dnd-kit/core";
|
|
4
|
+
import { SortableContext as r, verticalListSortingStrategy as i } from "@dnd-kit/sortable";
|
|
5
|
+
import { Box as a, Button as o, Chip as s, Typography as c } from "@mui/material";
|
|
6
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
7
|
+
import d from "@mui/icons-material/Add";
|
|
8
|
+
//#region src/components/kanban-board/KanbanBoardColumn.tsx
|
|
9
|
+
function f({ column: f, tasks: p, showAssignee: m, showDueDate: h, chipVariant: g, t: _, enableBuiltinDialogs: v, onCardClick: y, onAddClick: b }) {
|
|
10
|
+
let { setNodeRef: x, isOver: S } = n({ id: f.id }), C = f.wipLimit !== void 0 && p.length > f.wipLimit, w = f.wipLimit === void 0 ? `${p.length}` : `${p.length} / ${f.wipLimit}`, T = f.color ?? "primary.main";
|
|
11
|
+
return /* @__PURE__ */ u(a, {
|
|
12
|
+
className: e.column,
|
|
13
|
+
sx: {
|
|
14
|
+
display: "flex",
|
|
15
|
+
flexDirection: "column",
|
|
16
|
+
minWidth: 240,
|
|
17
|
+
maxWidth: 320,
|
|
18
|
+
flex: "1 1 240px",
|
|
19
|
+
bgcolor: "background.paper",
|
|
20
|
+
borderRadius: 2,
|
|
21
|
+
overflow: "hidden",
|
|
22
|
+
border: "1px solid",
|
|
23
|
+
borderColor: "divider"
|
|
24
|
+
},
|
|
25
|
+
children: [
|
|
26
|
+
/* @__PURE__ */ u(a, {
|
|
27
|
+
className: e.columnHeader,
|
|
28
|
+
sx: {
|
|
29
|
+
px: 2,
|
|
30
|
+
py: 1.25,
|
|
31
|
+
display: "flex",
|
|
32
|
+
alignItems: "center",
|
|
33
|
+
gap: 1,
|
|
34
|
+
borderBottom: "1px solid",
|
|
35
|
+
borderColor: "divider",
|
|
36
|
+
borderTop: `3px solid ${f.color ?? "transparent"}`,
|
|
37
|
+
bgcolor: (e) => e.palette.mode === "dark" ? "grey.800" : "grey.300"
|
|
38
|
+
},
|
|
39
|
+
children: [/* @__PURE__ */ l(c, {
|
|
40
|
+
className: e.columnTitle,
|
|
41
|
+
variant: "subtitle2",
|
|
42
|
+
sx: {
|
|
43
|
+
flex: 1,
|
|
44
|
+
fontWeight: 700
|
|
45
|
+
},
|
|
46
|
+
children: f.label
|
|
47
|
+
}), /* @__PURE__ */ l(s, {
|
|
48
|
+
className: e.columnCount,
|
|
49
|
+
label: w,
|
|
50
|
+
size: "small",
|
|
51
|
+
color: C ? "error" : "default",
|
|
52
|
+
sx: {
|
|
53
|
+
height: 20,
|
|
54
|
+
fontSize: "0.7rem",
|
|
55
|
+
...!C && f.color && {
|
|
56
|
+
bgcolor: f.color,
|
|
57
|
+
color: "#fff"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"aria-label": `${p.length} cards${f.wipLimit ? ` of ${f.wipLimit} limit` : ""}`
|
|
61
|
+
})]
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ l(r, {
|
|
64
|
+
items: p.map((e) => e.id),
|
|
65
|
+
strategy: i,
|
|
66
|
+
children: /* @__PURE__ */ u(a, {
|
|
67
|
+
ref: x,
|
|
68
|
+
className: e.columnBody,
|
|
69
|
+
sx: {
|
|
70
|
+
flex: 1,
|
|
71
|
+
overflowY: "auto",
|
|
72
|
+
p: 1,
|
|
73
|
+
minHeight: 80,
|
|
74
|
+
bgcolor: (e) => S ? e.palette.action.selected : e.palette.mode === "dark" ? e.palette.grey[900] : e.palette.grey[100],
|
|
75
|
+
transition: "background-color 0.15s"
|
|
76
|
+
},
|
|
77
|
+
children: [p.length === 0 && !S && /* @__PURE__ */ l(c, {
|
|
78
|
+
variant: "caption",
|
|
79
|
+
color: "text.disabled",
|
|
80
|
+
sx: {
|
|
81
|
+
display: "block",
|
|
82
|
+
textAlign: "center",
|
|
83
|
+
mt: 2
|
|
84
|
+
},
|
|
85
|
+
children: _.noCardsLabel
|
|
86
|
+
}), p.map((e) => /* @__PURE__ */ l(t, {
|
|
87
|
+
task: e,
|
|
88
|
+
showAssignee: m,
|
|
89
|
+
showDueDate: h,
|
|
90
|
+
chipVariant: g,
|
|
91
|
+
t: _,
|
|
92
|
+
onCardClick: y
|
|
93
|
+
}, e.id))]
|
|
94
|
+
})
|
|
95
|
+
}),
|
|
96
|
+
v && /* @__PURE__ */ l(a, {
|
|
97
|
+
sx: {
|
|
98
|
+
p: 1,
|
|
99
|
+
borderTop: "1px solid",
|
|
100
|
+
borderColor: "divider"
|
|
101
|
+
},
|
|
102
|
+
children: /* @__PURE__ */ l(o, {
|
|
103
|
+
className: e.addButton,
|
|
104
|
+
startIcon: /* @__PURE__ */ l(d, {}),
|
|
105
|
+
size: "small",
|
|
106
|
+
fullWidth: !0,
|
|
107
|
+
onClick: () => b(f.id),
|
|
108
|
+
sx: {
|
|
109
|
+
justifyContent: "flex-start",
|
|
110
|
+
color: T,
|
|
111
|
+
border: "1px dashed",
|
|
112
|
+
borderColor: T,
|
|
113
|
+
borderRadius: 1,
|
|
114
|
+
py: .75,
|
|
115
|
+
fontWeight: 600,
|
|
116
|
+
letterSpacing: .5,
|
|
117
|
+
"&:hover": {
|
|
118
|
+
bgcolor: "action.hover",
|
|
119
|
+
borderStyle: "dashed"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
children: _.addCardLabel
|
|
123
|
+
})
|
|
124
|
+
})
|
|
125
|
+
]
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { f as KanbanBoardColumn };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS class names for every named slot in the KanbanBoard component.
|
|
3
|
+
*
|
|
4
|
+
* Use these to style individual parts of the component without relying on
|
|
5
|
+
* MUI's internal class names, which can change between versions.
|
|
6
|
+
*
|
|
7
|
+
* The root element also receives shared state classes from `muiTsStateClasses`:
|
|
8
|
+
* - `MuiTs-disabled` — when the board is disabled (future prop)
|
|
9
|
+
*
|
|
10
|
+
* Individual cards receive:
|
|
11
|
+
* - `MuiTs-selected` — while the card is being dragged
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```css
|
|
15
|
+
* .MuiTsKanbanBoard-column { min-width: 280px; }
|
|
16
|
+
* .MuiTsKanbanBoard-card.MuiTs-selected { box-shadow: 0 8px 24px rgba(0,0,0,.2); }
|
|
17
|
+
* .MuiTsKanbanBoard-columnHeader { border-radius: 0; }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare const kanbanBoardClasses: {
|
|
21
|
+
/** The outermost wrapper element. */
|
|
22
|
+
readonly root: "MuiTsKanbanBoard-root";
|
|
23
|
+
/** The horizontal flex row that contains all columns. */
|
|
24
|
+
readonly columns: "MuiTsKanbanBoard-columns";
|
|
25
|
+
/** One column (wrapper for header + body + add button). */
|
|
26
|
+
readonly column: "MuiTsKanbanBoard-column";
|
|
27
|
+
/** The colored top bar of a column containing title and card count. */
|
|
28
|
+
readonly columnHeader: "MuiTsKanbanBoard-columnHeader";
|
|
29
|
+
/** The column title text inside the header. */
|
|
30
|
+
readonly columnTitle: "MuiTsKanbanBoard-columnTitle";
|
|
31
|
+
/** The "{count} / {wipLimit}" badge inside the header. */
|
|
32
|
+
readonly columnCount: "MuiTsKanbanBoard-columnCount";
|
|
33
|
+
/** The scrollable area that holds the cards. */
|
|
34
|
+
readonly columnBody: "MuiTsKanbanBoard-columnBody";
|
|
35
|
+
/** One card. Also receives `MuiTs-selected` while being dragged. */
|
|
36
|
+
readonly card: "MuiTsKanbanBoard-card";
|
|
37
|
+
/** The card title text. */
|
|
38
|
+
readonly cardTitle: "MuiTsKanbanBoard-cardTitle";
|
|
39
|
+
/** The row below the title that holds assignee and due date. */
|
|
40
|
+
readonly cardMeta: "MuiTsKanbanBoard-cardMeta";
|
|
41
|
+
/** The assignee label on a card. */
|
|
42
|
+
readonly cardAssignee: "MuiTsKanbanBoard-cardAssignee";
|
|
43
|
+
/** The due date label on a card. */
|
|
44
|
+
readonly cardDueDate: "MuiTsKanbanBoard-cardDueDate";
|
|
45
|
+
/** The "+ Add card" button at the bottom of each column. */
|
|
46
|
+
readonly addButton: "MuiTsKanbanBoard-addButton";
|
|
47
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/components/kanban-board/kanbanBoardClasses.ts
|
|
2
|
+
var e = {
|
|
3
|
+
root: "MuiTsKanbanBoard-root",
|
|
4
|
+
columns: "MuiTsKanbanBoard-columns",
|
|
5
|
+
column: "MuiTsKanbanBoard-column",
|
|
6
|
+
columnHeader: "MuiTsKanbanBoard-columnHeader",
|
|
7
|
+
columnTitle: "MuiTsKanbanBoard-columnTitle",
|
|
8
|
+
columnCount: "MuiTsKanbanBoard-columnCount",
|
|
9
|
+
columnBody: "MuiTsKanbanBoard-columnBody",
|
|
10
|
+
card: "MuiTsKanbanBoard-card",
|
|
11
|
+
cardTitle: "MuiTsKanbanBoard-cardTitle",
|
|
12
|
+
cardMeta: "MuiTsKanbanBoard-cardMeta",
|
|
13
|
+
cardAssignee: "MuiTsKanbanBoard-cardAssignee",
|
|
14
|
+
cardDueDate: "MuiTsKanbanBoard-cardDueDate",
|
|
15
|
+
addButton: "MuiTsKanbanBoard-addButton"
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { e as kanbanBoardClasses };
|
|
@@ -4,8 +4,8 @@ import { useTimedFlag as n } from "../shared/useTimedFlag.js";
|
|
|
4
4
|
import { scorePassword as r } from "./util/password-strength.util.js";
|
|
5
5
|
import { PasswordStrengthBar as i } from "./PasswordStrengthBar.js";
|
|
6
6
|
import { DEFAULT_CHECK_COLORS as a, DEFAULT_METER_COLORS as o, DEFAULT_PASSWORD_TRANSLATIONS as s } from "./PasswordStrengthMeter.types.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { Box as ee, Button as te, FormControl as c, FormHelperText as l, IconButton as u, InputAdornment as d, InputLabel as f, OutlinedInput as p, Stack as m, Tooltip as h, Typography as g } from "@mui/material";
|
|
8
|
+
import { useId as ne, useMemo as re, useState as _ } from "react";
|
|
9
9
|
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
10
10
|
import ie from "@mui/icons-material/ContentCopy";
|
|
11
11
|
import ae from "@mui/icons-material/Check";
|
|
@@ -30,7 +30,7 @@ function le(e) {
|
|
|
30
30
|
return s.join("");
|
|
31
31
|
}
|
|
32
32
|
function w({ label: e, fulfilled: n, checkColors: r }) {
|
|
33
|
-
return /* @__PURE__ */ y(
|
|
33
|
+
return /* @__PURE__ */ y(m, {
|
|
34
34
|
direction: "row",
|
|
35
35
|
sx: {
|
|
36
36
|
alignItems: "center",
|
|
@@ -38,7 +38,7 @@ function w({ label: e, fulfilled: n, checkColors: r }) {
|
|
|
38
38
|
},
|
|
39
39
|
spacing: .5,
|
|
40
40
|
className: t.requirementItem,
|
|
41
|
-
children: [/* @__PURE__ */ v(
|
|
41
|
+
children: [/* @__PURE__ */ v(g, {
|
|
42
42
|
variant: "caption",
|
|
43
43
|
children: e
|
|
44
44
|
}), n ? /* @__PURE__ */ v(b, {
|
|
@@ -63,7 +63,7 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
63
63
|
}, R = {
|
|
64
64
|
...o,
|
|
65
65
|
...ve
|
|
66
|
-
}, z =
|
|
66
|
+
}, z = ne(), B = `${z}-password`, [V, H] = _(!1), [U, xe] = _(!1), [Se, W] = _(""), [Ce, G] = _(""), [K, we] = n(), q = b === void 0 ? Se : b, J = x === void 0 ? Ce : x, Y = A && J.length > 0, X = Y && q === J, Z = re(() => r(q, P), [q, P]), Te = () => {
|
|
67
67
|
H((e) => !e);
|
|
68
68
|
}, Q = (e) => {
|
|
69
69
|
e.preventDefault();
|
|
@@ -103,25 +103,25 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
103
103
|
Z.meterStatus === "good" && t.strengthBarGood,
|
|
104
104
|
Z.meterStatus === "very good" && t.strengthBarVeryGood
|
|
105
105
|
].filter(Boolean).join(" ");
|
|
106
|
-
return /* @__PURE__ */ y(
|
|
106
|
+
return /* @__PURE__ */ y(m, {
|
|
107
107
|
className: [
|
|
108
108
|
t.root,
|
|
109
109
|
E && e.disabled,
|
|
110
110
|
D && e.error
|
|
111
111
|
].filter(Boolean).join(" "),
|
|
112
112
|
children: [
|
|
113
|
-
/* @__PURE__ */ y(
|
|
113
|
+
/* @__PURE__ */ y(c, {
|
|
114
114
|
variant: "outlined",
|
|
115
115
|
fullWidth: !0,
|
|
116
116
|
error: D,
|
|
117
117
|
className: t.input,
|
|
118
118
|
children: [
|
|
119
|
-
/* @__PURE__ */ v(
|
|
119
|
+
/* @__PURE__ */ v(f, {
|
|
120
120
|
htmlFor: B,
|
|
121
121
|
size: N,
|
|
122
122
|
children: L.label
|
|
123
123
|
}),
|
|
124
|
-
/* @__PURE__ */ v(
|
|
124
|
+
/* @__PURE__ */ v(p, {
|
|
125
125
|
id: B,
|
|
126
126
|
type: V ? "text" : "password",
|
|
127
127
|
fullWidth: !0,
|
|
@@ -135,12 +135,12 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
135
135
|
name: T,
|
|
136
136
|
autoComplete: de
|
|
137
137
|
},
|
|
138
|
-
endAdornment: j || M && q.length > 0 ? /* @__PURE__ */ y(
|
|
138
|
+
endAdornment: j || M && q.length > 0 ? /* @__PURE__ */ y(d, {
|
|
139
139
|
position: "end",
|
|
140
|
-
children: [M && q.length > 0 && /* @__PURE__ */ v(
|
|
140
|
+
children: [M && q.length > 0 && /* @__PURE__ */ v(h, {
|
|
141
141
|
title: K ? L.copiedLabel : L.copyPasswordLabel,
|
|
142
142
|
arrow: !0,
|
|
143
|
-
children: /* @__PURE__ */ v("span", { children: /* @__PURE__ */ v(
|
|
143
|
+
children: /* @__PURE__ */ v("span", { children: /* @__PURE__ */ v(u, {
|
|
144
144
|
"data-testid": "psm-copy",
|
|
145
145
|
disabled: E,
|
|
146
146
|
"aria-label": K ? L.copiedLabel : L.copyPasswordLabel,
|
|
@@ -153,7 +153,7 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
153
153
|
color: "success"
|
|
154
154
|
}) : /* @__PURE__ */ v(ie, { fontSize: "small" })
|
|
155
155
|
}) })
|
|
156
|
-
}), j && /* @__PURE__ */ v(
|
|
156
|
+
}), j && /* @__PURE__ */ v(u, {
|
|
157
157
|
"data-testid": "psm-toggle",
|
|
158
158
|
disabled: E,
|
|
159
159
|
"aria-label": V ? L.hidePasswordLabel : L.showPasswordLabel,
|
|
@@ -166,13 +166,13 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
166
166
|
}) : null,
|
|
167
167
|
label: L.label
|
|
168
168
|
}),
|
|
169
|
-
O && /* @__PURE__ */ v(
|
|
169
|
+
O && /* @__PURE__ */ v(l, { children: O })
|
|
170
170
|
]
|
|
171
171
|
}),
|
|
172
|
-
me && /* @__PURE__ */ v(
|
|
172
|
+
me && /* @__PURE__ */ v(h, {
|
|
173
173
|
title: L.generatePasswordLabel,
|
|
174
174
|
arrow: !0,
|
|
175
|
-
children: /* @__PURE__ */ v("span", { children: /* @__PURE__ */ v(
|
|
175
|
+
children: /* @__PURE__ */ v("span", { children: /* @__PURE__ */ v(te, {
|
|
176
176
|
"data-testid": "psm-generate",
|
|
177
177
|
size: "small",
|
|
178
178
|
variant: "text",
|
|
@@ -188,19 +188,19 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
188
188
|
children: L.generatePasswordLabel
|
|
189
189
|
}) })
|
|
190
190
|
}),
|
|
191
|
-
A && /* @__PURE__ */ y(
|
|
191
|
+
A && /* @__PURE__ */ y(c, {
|
|
192
192
|
variant: "outlined",
|
|
193
193
|
fullWidth: !0,
|
|
194
194
|
error: Y && !X,
|
|
195
195
|
sx: { mt: 1 },
|
|
196
196
|
className: t.confirmInput,
|
|
197
197
|
children: [
|
|
198
|
-
/* @__PURE__ */ v(
|
|
198
|
+
/* @__PURE__ */ v(f, {
|
|
199
199
|
htmlFor: `${z}-confirm`,
|
|
200
200
|
size: N,
|
|
201
201
|
children: L.confirmLabel
|
|
202
202
|
}),
|
|
203
|
-
/* @__PURE__ */ v(
|
|
203
|
+
/* @__PURE__ */ v(p, {
|
|
204
204
|
id: `${z}-confirm`,
|
|
205
205
|
type: U ? "text" : "password",
|
|
206
206
|
fullWidth: !0,
|
|
@@ -209,7 +209,7 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
209
209
|
onChange: De,
|
|
210
210
|
disabled: E,
|
|
211
211
|
inputProps: { "data-testid": "psm-confirm-input" },
|
|
212
|
-
endAdornment: /* @__PURE__ */ y(
|
|
212
|
+
endAdornment: /* @__PURE__ */ y(d, {
|
|
213
213
|
position: "end",
|
|
214
214
|
children: [Y && (X ? /* @__PURE__ */ v(se, {
|
|
215
215
|
"data-testid": "psm-confirm-match",
|
|
@@ -225,7 +225,7 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
225
225
|
mr: .5
|
|
226
226
|
},
|
|
227
227
|
fontSize: "small"
|
|
228
|
-
})), /* @__PURE__ */ v(
|
|
228
|
+
})), /* @__PURE__ */ v(u, {
|
|
229
229
|
size: "small",
|
|
230
230
|
disabled: E,
|
|
231
231
|
onClick: () => xe((e) => !e),
|
|
@@ -237,7 +237,7 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
237
237
|
}),
|
|
238
238
|
label: L.confirmLabel
|
|
239
239
|
}),
|
|
240
|
-
Y && /* @__PURE__ */ v(
|
|
240
|
+
Y && /* @__PURE__ */ v(l, {
|
|
241
241
|
sx: { color: X ? F.success : F.failure },
|
|
242
242
|
children: X ? L.confirmMatchLabel : L.confirmMismatchLabel
|
|
243
243
|
})
|
|
@@ -250,14 +250,14 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
250
250
|
segments: he,
|
|
251
251
|
className: je
|
|
252
252
|
}),
|
|
253
|
-
ge && /* @__PURE__ */ y(
|
|
253
|
+
ge && /* @__PURE__ */ y(ee, {
|
|
254
254
|
"data-testid": "psm-summary",
|
|
255
255
|
sx: {
|
|
256
256
|
mt: .5,
|
|
257
257
|
p: .5
|
|
258
258
|
},
|
|
259
259
|
className: t.summary,
|
|
260
|
-
children: [/* @__PURE__ */ v(
|
|
260
|
+
children: [/* @__PURE__ */ v(g, {
|
|
261
261
|
variant: "caption",
|
|
262
262
|
gutterBottom: !0,
|
|
263
263
|
sx: {
|
|
@@ -265,10 +265,10 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
265
265
|
fontSize: 14
|
|
266
266
|
},
|
|
267
267
|
children: L.summaryHeaderLabel
|
|
268
|
-
}), /* @__PURE__ */ y(
|
|
268
|
+
}), /* @__PURE__ */ y(m, {
|
|
269
269
|
direction: "row",
|
|
270
270
|
spacing: 6,
|
|
271
|
-
children: [/* @__PURE__ */ y(
|
|
271
|
+
children: [/* @__PURE__ */ y(m, {
|
|
272
272
|
direction: "column",
|
|
273
273
|
children: [
|
|
274
274
|
/* @__PURE__ */ v(w, {
|
|
@@ -287,7 +287,7 @@ function T({ value: b, confirmValue: x, name: T, inputRef: ue, disabled: E = !1,
|
|
|
287
287
|
checkColors: F
|
|
288
288
|
})
|
|
289
289
|
]
|
|
290
|
-
}), /* @__PURE__ */ y(
|
|
290
|
+
}), /* @__PURE__ */ y(m, {
|
|
291
291
|
direction: "column",
|
|
292
292
|
children: [
|
|
293
293
|
/* @__PURE__ */ v(w, {
|