@thebuoyant-tsdev/mui-ts-library 1.3.2 → 2.0.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 +13 -8
- package/README.md +13 -8
- package/dist/components/confirm-dialog/ConfirmDialog.types.d.ts +6 -4
- package/dist/components/gantt-chart/GanttChart.types.d.ts +24 -23
- package/dist/components/gantt-chart/GanttTimelineHeader.d.ts +5 -1
- package/dist/components/json-editor/JsonEditor.d.ts +1 -1
- package/dist/components/json-editor/JsonEditor.types.d.ts +15 -13
- package/dist/components/json-editor/JsonEditorContent.d.ts +2 -1
- package/dist/components/password-strength-meter/PasswordStrengthBar.d.ts +3 -1
- package/dist/components/password-strength-meter/PasswordStrengthMeter.d.ts +1 -1
- package/dist/components/password-strength-meter/PasswordStrengthMeter.types.d.ts +21 -9
- package/dist/components/rich-text-editor/RichTextEditor.d.ts +1 -1
- package/dist/components/rich-text-editor/RichTextEditor.types.d.ts +23 -13
- package/dist/components/rich-text-editor/RichTextEditorFooter.d.ts +3 -1
- package/dist/components/rich-text-editor/RichTextEditorToolbar.d.ts +3 -1
- package/dist/components/sql-editor/SqlEditor.types.d.ts +15 -15
- package/dist/components/sql-editor/SqlEditorContent.d.ts +2 -1
- package/dist/components/tag-selection/TagSelection.types.d.ts +11 -11
- package/dist/index.cjs +1 -1
- package/dist/index.js +955 -785
- package/package.json +4 -1
package/README.de.md
CHANGED
|
@@ -4,19 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
Eine typsichere React-Komponentenbibliothek auf Basis von **TypeScript** und **MUI (Material UI v9)**. Die Komponenten folgen MUI's Design-Sprache, unterstützen Dark Mode und Theming von Haus aus und werden mit vollständigen TypeScript-Typen, Storybook-Stories und Unit-Tests ausgeliefert.
|
|
6
6
|
|
|
7
|
+
**[→ Live-Storybook](https://thebuoyant.github.io/mui-ts-library/)** — interaktive Demos für jede Komponente und jedes Feature, immer aktuell mit `main`.
|
|
8
|
+
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
## Komponenten
|
|
10
12
|
|
|
11
13
|
| Komponente | Beschreibung | Docs |
|
|
12
14
|
|---|---|---|
|
|
13
|
-
| [`ConfirmDialog`](#confirmdialog) | Deklarativer Async-Bestätigungs-Dialog — `await confirm({ title, severity })` von überall in der App | [Vollständiges Manual →](user-manuals/ConfirmDialog.de.md) |
|
|
14
|
-
| [`GanttChart`](#ganttchart) | Projekt-Timeline mit hierarchischen Aufgaben, Meilensteinen, Drag & Drop, Zoom und integrierten CRUD-Dialogen | [Vollständiges Manual →](user-manuals/GanttChart.de.md) |
|
|
15
|
+
| [`ConfirmDialog`](#confirmdialog) | Deklarativer Async-Bestätigungs-Dialog — `await confirm({ title, severity })` von überall in der App. Unterstützt Countdown-Auto-Confirm und `Enter` = Bestätigen. | [Vollständiges Manual →](user-manuals/ConfirmDialog.de.md) |
|
|
16
|
+
| [`GanttChart`](#ganttchart) | Projekt-Timeline mit hierarchischen Aufgaben, Meilensteinen, Drag & Drop, Ctrl+Scroll-Zoom, Heute-Chip und integrierten CRUD-Dialogen | [Vollständiges Manual →](user-manuals/GanttChart.de.md) |
|
|
15
17
|
| [`TagSelection`](#tagselection) | Multi-Tag-Auswahlfeld mit Autocomplete, freier Tag-Erstellung, Overflow-Chips und MUI-Theme-Farben | [Vollständiges Manual →](user-manuals/TagSelection.de.md) |
|
|
16
|
-
| [`PasswordStrengthMeter`](#passwordstrengthmeter) | Passwort-Eingabe mit animiertem Stärke-Meter und Anforderungsliste | [Vollständiges Manual →](user-manuals/PasswordStrengthMeter.de.md) |
|
|
17
|
-
| [`RichTextEditor`](#richtexteditor) | WYSIWYG-Editor (TipTap v3) mit Toolbar, Link-Dialog, Textfarbe, Hervorhebung und Markdown-Einfügen | [Vollständiges Manual →](user-manuals/RichTextEditor.de.md) |
|
|
18
|
-
| [`SqlEditor`](#sqleditor) | SQL-Code-Editor (CodeMirror 6) mit Syntax-Highlighting, Multi-Dialekt, Autocomplete und
|
|
19
|
-
| [`JsonEditor`](#jsoneditor) | JSON-Code-Editor (CodeMirror 6) mit Echtzeit-Validierung, Format- und Komprimieren-Schaltfläche | [Vollständiges Manual →](user-manuals/JsonEditor.de.md) |
|
|
18
|
+
| [`PasswordStrengthMeter`](#passwordstrengthmeter) | Passwort-Eingabe mit animiertem Stärke-Meter, segmentierter Balkenanzeige, eigenen Anforderungen und Anforderungsliste | [Vollständiges Manual →](user-manuals/PasswordStrengthMeter.de.md) |
|
|
19
|
+
| [`RichTextEditor`](#richtexteditor) | WYSIWYG-Editor (TipTap v3) mit Toolbar, Link-Dialog, Textfarbe, Hervorhebung, Wörter-Zähler, Vollbild-Modus und Markdown-Einfügen | [Vollständiges Manual →](user-manuals/RichTextEditor.de.md) |
|
|
20
|
+
| [`SqlEditor`](#sqleditor) | SQL-Code-Editor (CodeMirror 6) mit Syntax-Highlighting, Multi-Dialekt, Autocomplete, Linting und `Cmd+Enter`-Ausführen-Shortcut | [Vollständiges Manual →](user-manuals/SqlEditor.de.md) |
|
|
21
|
+
| [`JsonEditor`](#jsoneditor) | JSON-Code-Editor (CodeMirror 6) mit Echtzeit-Validierung, Format- und Komprimieren-Schaltfläche sowie optionaler Minimap | [Vollständiges Manual →](user-manuals/JsonEditor.de.md) |
|
|
20
22
|
|
|
21
23
|
---
|
|
22
24
|
|
|
@@ -62,7 +64,7 @@ import { ConfirmDialogProvider, useConfirm } from '@thebuoyant-tsdev/mui-ts-libr
|
|
|
62
64
|
|
|
63
65
|
// Überall innerhalb der App
|
|
64
66
|
const confirm = useConfirm();
|
|
65
|
-
const ok = await confirm({ title: 'Eintrag löschen?', severity: 'error', confirmLabel: 'Löschen' });
|
|
67
|
+
const ok = await confirm({ title: 'Eintrag löschen?', severity: 'error', confirmLabel: 'Löschen', countdown: 10 });
|
|
66
68
|
if (ok) handleDelete();
|
|
67
69
|
```
|
|
68
70
|
|
|
@@ -81,7 +83,7 @@ const tasks: GanttTask[] = [
|
|
|
81
83
|
{ id: '2', name: 'Go-Live', status: 'planned', startDate: new Date('2026-03-31'), endDate: new Date('2026-03-31'), isMilestone: true },
|
|
82
84
|
];
|
|
83
85
|
|
|
84
|
-
<GanttChart tasks={tasks} timeScale="months" height={500} draggable resizable onTasksChange={save} />
|
|
86
|
+
<GanttChart tasks={tasks} timeScale="months" height={500} draggable resizable zoomable onTasksChange={save} />
|
|
85
87
|
```
|
|
86
88
|
|
|
87
89
|
→ [Vollständige Dokumentation](user-manuals/GanttChart.de.md)
|
|
@@ -113,6 +115,7 @@ import { PasswordStrengthMeter } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
113
115
|
|
|
114
116
|
<PasswordStrengthMeter
|
|
115
117
|
passwordMinLength={10}
|
|
118
|
+
showSegmentedBar
|
|
116
119
|
onPasswordChange={(password, result) => console.log(result.score)}
|
|
117
120
|
/>
|
|
118
121
|
```
|
|
@@ -145,6 +148,7 @@ import { SqlEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
145
148
|
placeholder="SQL-Abfrage eingeben …"
|
|
146
149
|
dialect="postgresql"
|
|
147
150
|
onChange={(sql) => console.log(sql)}
|
|
151
|
+
onExecute={(sql) => query(sql)}
|
|
148
152
|
/>
|
|
149
153
|
```
|
|
150
154
|
|
|
@@ -160,6 +164,7 @@ import { JsonEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
160
164
|
<JsonEditor
|
|
161
165
|
placeholder="JSON eingeben …"
|
|
162
166
|
showValidation
|
|
167
|
+
showMinimap
|
|
163
168
|
onChange={(json) => console.log(json)}
|
|
164
169
|
/>
|
|
165
170
|
```
|
package/README.md
CHANGED
|
@@ -4,19 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
A type-safe React component library built on **TypeScript** and **MUI (Material UI v9)**. Components follow MUI's design language, support dark mode and theming out of the box, and ship with complete TypeScript types, Storybook stories, and unit tests.
|
|
6
6
|
|
|
7
|
+
**[→ Live Storybook](https://thebuoyant.github.io/mui-ts-library/)** — interactive demos for every component and feature, always up to date with `main`.
|
|
8
|
+
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
## Components
|
|
10
12
|
|
|
11
13
|
| Component | Description | Docs |
|
|
12
14
|
|---|---|---|
|
|
13
|
-
| [`ConfirmDialog`](#confirmdialog) | Declarative async confirmation dialog — `await confirm({ title, severity })` from anywhere in the app | [Full Manual →](user-manuals/ConfirmDialog.md) |
|
|
14
|
-
| [`GanttChart`](#ganttchart) | Project timeline with hierarchical tasks, milestones, drag & drop, zoom, and built-in CRUD dialogs | [Full Manual →](user-manuals/GanttChart.md) |
|
|
15
|
+
| [`ConfirmDialog`](#confirmdialog) | Declarative async confirmation dialog — `await confirm({ title, severity })` from anywhere in the app. Supports countdown auto-confirm and `Enter` = confirm shortcut. | [Full Manual →](user-manuals/ConfirmDialog.md) |
|
|
16
|
+
| [`GanttChart`](#ganttchart) | Project timeline with hierarchical tasks, milestones, drag & drop, Ctrl+Scroll zoom, today chip, and built-in CRUD dialogs | [Full Manual →](user-manuals/GanttChart.md) |
|
|
15
17
|
| [`TagSelection`](#tagselection) | Multi-tag selector with autocomplete, free tag creation, overflow chips, and MUI theme colors | [Full Manual →](user-manuals/TagSelection.md) |
|
|
16
|
-
| [`PasswordStrengthMeter`](#passwordstrengthmeter) | Password input with animated strength meter and requirements checklist | [Full Manual →](user-manuals/PasswordStrengthMeter.md) |
|
|
17
|
-
| [`RichTextEditor`](#richtexteditor) | WYSIWYG editor (TipTap v3) with toolbar, link dialog, text color, highlight, and Markdown paste | [Full Manual →](user-manuals/RichTextEditor.md) |
|
|
18
|
-
| [`SqlEditor`](#sqleditor) | SQL code editor (CodeMirror 6) with syntax highlighting, multi-dialect, autocomplete, and
|
|
19
|
-
| [`JsonEditor`](#jsoneditor) | JSON code editor (CodeMirror 6) with real-time validation, Format,
|
|
18
|
+
| [`PasswordStrengthMeter`](#passwordstrengthmeter) | Password input with animated strength meter, segmented bar, custom requirements, and requirements checklist | [Full Manual →](user-manuals/PasswordStrengthMeter.md) |
|
|
19
|
+
| [`RichTextEditor`](#richtexteditor) | WYSIWYG editor (TipTap v3) with toolbar, link dialog, text color, highlight, word count, fullscreen mode, and Markdown paste | [Full Manual →](user-manuals/RichTextEditor.md) |
|
|
20
|
+
| [`SqlEditor`](#sqleditor) | SQL code editor (CodeMirror 6) with syntax highlighting, multi-dialect, autocomplete, linting, and `Cmd+Enter` execute shortcut | [Full Manual →](user-manuals/SqlEditor.md) |
|
|
21
|
+
| [`JsonEditor`](#jsoneditor) | JSON code editor (CodeMirror 6) with real-time validation, Format, Compact buttons, and optional minimap | [Full Manual →](user-manuals/JsonEditor.md) |
|
|
20
22
|
|
|
21
23
|
---
|
|
22
24
|
|
|
@@ -62,7 +64,7 @@ import { ConfirmDialogProvider, useConfirm } from '@thebuoyant-tsdev/mui-ts-libr
|
|
|
62
64
|
|
|
63
65
|
// Anywhere inside
|
|
64
66
|
const confirm = useConfirm();
|
|
65
|
-
const ok = await confirm({ title: 'Delete entry?', severity: 'error', confirmLabel: 'Delete' });
|
|
67
|
+
const ok = await confirm({ title: 'Delete entry?', severity: 'error', confirmLabel: 'Delete', countdown: 10 });
|
|
66
68
|
if (ok) handleDelete();
|
|
67
69
|
```
|
|
68
70
|
|
|
@@ -81,7 +83,7 @@ const tasks: GanttTask[] = [
|
|
|
81
83
|
{ id: '2', name: 'Go-Live', status: 'planned', startDate: new Date('2026-03-31'), endDate: new Date('2026-03-31'), isMilestone: true },
|
|
82
84
|
];
|
|
83
85
|
|
|
84
|
-
<GanttChart tasks={tasks} timeScale="months" height={500} draggable resizable onTasksChange={save} />
|
|
86
|
+
<GanttChart tasks={tasks} timeScale="months" height={500} draggable resizable zoomable onTasksChange={save} />
|
|
85
87
|
```
|
|
86
88
|
|
|
87
89
|
→ [Full documentation](user-manuals/GanttChart.md)
|
|
@@ -113,6 +115,7 @@ import { PasswordStrengthMeter } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
113
115
|
|
|
114
116
|
<PasswordStrengthMeter
|
|
115
117
|
passwordMinLength={10}
|
|
118
|
+
showSegmentedBar
|
|
116
119
|
onPasswordChange={(password, result) => console.log(result.score)}
|
|
117
120
|
/>
|
|
118
121
|
```
|
|
@@ -145,6 +148,7 @@ import { SqlEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
145
148
|
placeholder="Enter SQL query…"
|
|
146
149
|
dialect="postgresql"
|
|
147
150
|
onChange={(sql) => console.log(sql)}
|
|
151
|
+
onExecute={(sql) => runQuery(sql)}
|
|
148
152
|
/>
|
|
149
153
|
```
|
|
150
154
|
|
|
@@ -160,6 +164,7 @@ import { JsonEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
160
164
|
<JsonEditor
|
|
161
165
|
placeholder="Enter JSON…"
|
|
162
166
|
showValidation
|
|
167
|
+
showMinimap
|
|
163
168
|
onChange={(json) => console.log(json)}
|
|
164
169
|
/>
|
|
165
170
|
```
|
|
@@ -6,14 +6,16 @@ export type ConfirmDialogTranslation = {
|
|
|
6
6
|
};
|
|
7
7
|
export declare const DEFAULT_CONFIRM_DIALOG_TRANSLATION: ConfirmDialogTranslation;
|
|
8
8
|
export type ConfirmDialogOptions = {
|
|
9
|
-
title?: string;
|
|
10
|
-
description?: string | React.ReactNode;
|
|
11
|
-
confirmLabel?: string;
|
|
12
9
|
cancelLabel?: string;
|
|
13
|
-
|
|
10
|
+
confirmLabel?: string;
|
|
11
|
+
/** Auto-confirm after this many seconds. Shows a live countdown in the confirm button. */
|
|
12
|
+
countdown?: number;
|
|
13
|
+
description?: string | React.ReactNode;
|
|
14
14
|
hideCancelButton?: boolean;
|
|
15
15
|
maxWidth?: "xs" | "sm" | "md" | "lg" | "xl";
|
|
16
|
+
severity?: ConfirmDialogSeverity;
|
|
16
17
|
showIcon?: boolean;
|
|
18
|
+
title?: string;
|
|
17
19
|
};
|
|
18
20
|
export type ConfirmDialogProviderProps = {
|
|
19
21
|
children: React.ReactNode;
|
|
@@ -31,6 +31,7 @@ export type GanttTranslations = {
|
|
|
31
31
|
statusDone: string;
|
|
32
32
|
statusBlocked: string;
|
|
33
33
|
weekColumnPrefix: string;
|
|
34
|
+
todayLabel: string;
|
|
34
35
|
dateLocale: string;
|
|
35
36
|
dialogAddTitle: string;
|
|
36
37
|
dialogEditTitle: string;
|
|
@@ -79,41 +80,41 @@ export type GanttToolbarConfig = {
|
|
|
79
80
|
showResetView?: boolean;
|
|
80
81
|
};
|
|
81
82
|
export type GanttChartProps = {
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
cascadeDependencies?: boolean;
|
|
84
|
+
defaultRangeEnd?: Date;
|
|
85
|
+
defaultRangeStart?: Date;
|
|
86
|
+
draggable?: boolean;
|
|
87
|
+
enableBuiltinDialogs?: boolean;
|
|
88
|
+
ganttTheme?: GanttTheme;
|
|
84
89
|
/** Höhe des Charts. "auto" = 100 % des Eltern-Containers. Standard: 400. */
|
|
85
90
|
height?: number | string;
|
|
86
|
-
/** Breite des Charts. "auto" = 100 % des Eltern-Containers. Standard: "100%". */
|
|
87
|
-
width?: number | string;
|
|
88
91
|
initialExpandAll?: boolean;
|
|
89
|
-
|
|
90
|
-
toolbarConfig?: GanttToolbarConfig;
|
|
91
|
-
defaultRangeStart?: Date;
|
|
92
|
-
defaultRangeEnd?: Date;
|
|
93
|
-
translations?: Partial<GanttTranslations>;
|
|
94
|
-
minPanelWidth?: number;
|
|
92
|
+
inlineEdit?: boolean;
|
|
95
93
|
maxPanelWidth?: number;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
draggable?: boolean;
|
|
94
|
+
minPanelWidth?: number;
|
|
95
|
+
progressDraggable?: boolean;
|
|
99
96
|
resizable?: boolean;
|
|
100
|
-
cascadeDependencies?: boolean;
|
|
101
97
|
showCriticalPath?: boolean;
|
|
102
|
-
|
|
103
|
-
progressDraggable?: boolean;
|
|
104
|
-
virtualizeRows?: boolean;
|
|
98
|
+
showToolbar?: boolean;
|
|
105
99
|
statusColors?: GanttStatusColors;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
tasks: GanttTask[];
|
|
101
|
+
timeScale?: GanttTimeScale;
|
|
102
|
+
toolbarConfig?: GanttToolbarConfig;
|
|
103
|
+
translations?: Partial<GanttTranslations>;
|
|
104
|
+
virtualizeRows?: boolean;
|
|
105
|
+
/** Breite des Charts. "auto" = 100 % des Eltern-Containers. Standard: "100%". */
|
|
106
|
+
width?: number | string;
|
|
107
|
+
zoomable?: boolean;
|
|
109
108
|
onAddTask?: (parentTask?: GanttTask) => void;
|
|
110
|
-
onEditTask?: (task: GanttTask) => void;
|
|
111
109
|
onDeleteTask?: (task: GanttTask) => void;
|
|
110
|
+
onEditTask?: (task: GanttTask) => void;
|
|
111
|
+
onMilestoneClick?: (task: GanttTask) => void;
|
|
112
112
|
onStatusChange?: (task: GanttTask, status: GanttTaskStatus) => void;
|
|
113
|
+
onTaskClick?: (task: GanttTask) => void;
|
|
114
|
+
onTaskCreated?: (task: GanttTask) => void;
|
|
115
|
+
onTaskDeleted?: (taskId: string) => void;
|
|
113
116
|
onTaskMoved?: (task: GanttTask, newStart: Date, newEnd: Date) => void;
|
|
114
117
|
onTaskResized?: (task: GanttTask, newEnd: Date) => void;
|
|
115
118
|
onTasksChange?: (tasks: GanttTask[]) => void;
|
|
116
|
-
onTaskCreated?: (task: GanttTask) => void;
|
|
117
119
|
onTaskUpdated?: (task: GanttTask) => void;
|
|
118
|
-
onTaskDeleted?: (taskId: string) => void;
|
|
119
120
|
};
|
|
@@ -12,6 +12,10 @@ export type HeaderGroup = {
|
|
|
12
12
|
type GanttTimelineHeaderProps = {
|
|
13
13
|
columns: HeaderColumn[];
|
|
14
14
|
groups?: HeaderGroup[];
|
|
15
|
+
todayX?: number | null;
|
|
16
|
+
todayLabel?: string;
|
|
17
|
+
todayTooltip?: string;
|
|
18
|
+
todayColor?: string;
|
|
15
19
|
};
|
|
16
|
-
export declare function GanttTimelineHeader({ columns, groups }: GanttTimelineHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function GanttTimelineHeader({ columns, groups, todayX, todayLabel, todayTooltip, todayColor, }: GanttTimelineHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
17
21
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { type JsonEditorProps } from "./JsonEditor.types";
|
|
2
|
-
export declare function JsonEditor({ value, onChange, onValidChange, placeholder, height, width, disabled, readonly, error, helperText, name, indent, showLineNumbers, showLineColumn, showValidation, toolbarConfig, translation, highlightColors, onBlur, onFocus, }: JsonEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function JsonEditor({ value, onChange, onValidChange, placeholder, height, width, disabled, readonly, error, helperText, name, indent, showLineNumbers, showLineColumn, showMinimap, showValidation, toolbarConfig, translation, highlightColors, onBlur, onFocus, }: JsonEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -32,29 +32,31 @@ export type JsonEditorHighlightColors = {
|
|
|
32
32
|
null?: string;
|
|
33
33
|
};
|
|
34
34
|
export type JsonEditorProps = {
|
|
35
|
-
value?: string;
|
|
36
|
-
onChange?: (json: string) => void;
|
|
37
|
-
onValidChange?: (isValid: boolean) => void;
|
|
38
|
-
placeholder?: string;
|
|
39
|
-
/** Total height (toolbar + content). Numbers → px. "auto" → fills surrounding flex container. */
|
|
40
|
-
height?: number | string;
|
|
41
|
-
/** Width. Numbers → px. Default → 100%. */
|
|
42
|
-
width?: number | string;
|
|
43
35
|
disabled?: boolean;
|
|
44
|
-
readonly?: boolean;
|
|
45
36
|
error?: boolean;
|
|
37
|
+
/** Total height (toolbar + content). Numbers → px. "auto" → fills surrounding flex container. */
|
|
38
|
+
height?: number | string;
|
|
46
39
|
helperText?: string;
|
|
47
|
-
|
|
48
|
-
name?: string;
|
|
40
|
+
highlightColors?: JsonEditorHighlightColors;
|
|
49
41
|
/** Indentation spaces used by the Format button. Default: 2. */
|
|
50
42
|
indent?: number;
|
|
51
|
-
|
|
43
|
+
/** Name for native form submission via hidden input. */
|
|
44
|
+
name?: string;
|
|
45
|
+
placeholder?: string;
|
|
46
|
+
readonly?: boolean;
|
|
52
47
|
showLineColumn?: boolean;
|
|
48
|
+
showLineNumbers?: boolean;
|
|
49
|
+
/** Shows a scaled-down document overview (minimap) on the right side of the editor. */
|
|
50
|
+
showMinimap?: boolean;
|
|
53
51
|
/** Shows a Valid / Invalid JSON indicator in the footer. */
|
|
54
52
|
showValidation?: boolean;
|
|
55
53
|
toolbarConfig?: JsonEditorToolbarConfig;
|
|
56
54
|
translation?: Partial<JsonEditorTranslation>;
|
|
57
|
-
|
|
55
|
+
value?: string;
|
|
56
|
+
/** Width. Numbers → px. Default → 100%. */
|
|
57
|
+
width?: number | string;
|
|
58
58
|
onBlur?: () => void;
|
|
59
|
+
onChange?: (json: string) => void;
|
|
59
60
|
onFocus?: () => void;
|
|
61
|
+
onValidChange?: (isValid: boolean) => void;
|
|
60
62
|
};
|
|
@@ -7,11 +7,12 @@ type JsonEditorContentProps = {
|
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
readonly?: boolean;
|
|
9
9
|
showLineNumbers?: boolean;
|
|
10
|
+
showMinimap?: boolean;
|
|
10
11
|
highlightColors?: JsonEditorHighlightColors;
|
|
11
12
|
onViewReady: (view: EditorView | null) => void;
|
|
12
13
|
onCursorChange: (line: number, col: number) => void;
|
|
13
14
|
onBlur?: () => void;
|
|
14
15
|
onFocus?: () => void;
|
|
15
16
|
};
|
|
16
|
-
export declare function JsonEditorContent({ value, onChange, placeholder, disabled, readonly, showLineNumbers, highlightColors, onViewReady, onCursorChange, onBlur, onFocus, }: JsonEditorContentProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function JsonEditorContent({ value, onChange, placeholder, disabled, readonly, showLineNumbers, showMinimap, highlightColors, onViewReady, onCursorChange, onBlur, onFocus, }: JsonEditorContentProps): import("react/jsx-runtime").JSX.Element;
|
|
17
18
|
export {};
|
|
@@ -2,11 +2,13 @@ type PasswordStrengthBarProps = {
|
|
|
2
2
|
percent: number;
|
|
3
3
|
color: string;
|
|
4
4
|
ariaLabel: string;
|
|
5
|
+
/** When true, renders 4 separate animated segments instead of a single bar. */
|
|
6
|
+
segments?: boolean;
|
|
5
7
|
};
|
|
6
8
|
/**
|
|
7
9
|
* Visuelle Fortschrittsleiste für die Passwortstärke.
|
|
8
10
|
* role="progressbar" macht die Anzeige für Screenreader zugänglich —
|
|
9
11
|
* ohne aria-Attribute wäre sie für assistive Technologien unsichtbar.
|
|
10
12
|
*/
|
|
11
|
-
export declare function PasswordStrengthBar({ percent, color, ariaLabel }: PasswordStrengthBarProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function PasswordStrengthBar({ percent, color, ariaLabel, segments }: PasswordStrengthBarProps): import("react/jsx-runtime").JSX.Element;
|
|
12
14
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { PasswordStrengthMeterProps } from "./PasswordStrengthMeter.types";
|
|
2
|
-
export declare function PasswordStrengthMeter({ value, name, inputRef, disabled, error, helperText, autoComplete, showPasswordAdornment, showMeter, showSummary, inputSize, translation, meterColors, passwordMinLength, checkColors, onPasswordChange, }: PasswordStrengthMeterProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function PasswordStrengthMeter({ value, name, inputRef, disabled, error, helperText, autoComplete, customRequirements, showPasswordAdornment, showMeter, showSegmentedBar, showSummary, inputSize, translation, meterColors, passwordMinLength, checkColors, onPasswordChange, }: PasswordStrengthMeterProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -36,21 +36,33 @@ export type PasswordStrengthMeterTranslation = {
|
|
|
36
36
|
export declare const DEFAULT_PASSWORD_TRANSLATIONS: PasswordStrengthMeterTranslation;
|
|
37
37
|
export declare const DEFAULT_METER_COLORS: MeterColors;
|
|
38
38
|
export declare const DEFAULT_CHECK_COLORS: CheckColors;
|
|
39
|
+
/**
|
|
40
|
+
* A single custom password requirement.
|
|
41
|
+
* `fulfilled` can be a static boolean or a function evaluated on the current password.
|
|
42
|
+
*/
|
|
43
|
+
export type CustomRequirement = {
|
|
44
|
+
label: string;
|
|
45
|
+
fulfilled: boolean | ((password: string) => boolean);
|
|
46
|
+
};
|
|
39
47
|
export type PasswordStrengthMeterProps = {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
autoComplete?: string;
|
|
49
|
+
checkColors?: CheckColors;
|
|
50
|
+
/** Additional custom requirements shown alongside the built-in ones. */
|
|
51
|
+
customRequirements?: CustomRequirement[];
|
|
43
52
|
disabled?: boolean;
|
|
44
53
|
error?: boolean;
|
|
45
54
|
helperText?: string;
|
|
46
|
-
|
|
47
|
-
showPasswordAdornment?: boolean;
|
|
48
|
-
showMeter?: boolean;
|
|
49
|
-
showSummary?: boolean;
|
|
55
|
+
inputRef?: React.Ref<HTMLInputElement>;
|
|
50
56
|
inputSize?: "small" | "medium";
|
|
51
|
-
translation?: Partial<PasswordStrengthMeterTranslation>;
|
|
52
57
|
meterColors?: Partial<MeterColors>;
|
|
58
|
+
name?: string;
|
|
53
59
|
passwordMinLength?: number;
|
|
54
|
-
|
|
60
|
+
showMeter?: boolean;
|
|
61
|
+
showPasswordAdornment?: boolean;
|
|
62
|
+
showSummary?: boolean;
|
|
63
|
+
/** Render the strength bar as 4 animated segments instead of a single growing bar. */
|
|
64
|
+
showSegmentedBar?: boolean;
|
|
65
|
+
translation?: Partial<PasswordStrengthMeterTranslation>;
|
|
66
|
+
value?: string;
|
|
55
67
|
onPasswordChange?: (password: string, strengthResult: StrengthResult) => void;
|
|
56
68
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { type RichTextEditorProps } from "./RichTextEditor.types";
|
|
2
|
-
export declare function RichTextEditor({
|
|
2
|
+
export declare function RichTextEditor({ disabled, error, height, helperText, maxCharacters, name, placeholder, readonly, showCharacterCount, showToolbar, showWordCount, toolbarConfig, translation, value, width, onBlur, onChange, onFocus, }: RichTextEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export type RichTextEditorOutputFormat = "html" | "json";
|
|
2
1
|
export type RichTextEditorToolbarConfig = {
|
|
3
2
|
showBold?: boolean;
|
|
4
3
|
showItalic?: boolean;
|
|
@@ -17,6 +16,8 @@ export type RichTextEditorToolbarConfig = {
|
|
|
17
16
|
showHighlight?: boolean;
|
|
18
17
|
showUndoRedo?: boolean;
|
|
19
18
|
showClearFormat?: boolean;
|
|
19
|
+
/** Fullscreen-Button in der Toolbar — standardmäßig deaktiviert (opt-in) */
|
|
20
|
+
showFullscreenButton?: boolean;
|
|
20
21
|
};
|
|
21
22
|
export declare const DEFAULT_RICH_TEXT_EDITOR_TOOLBAR_CONFIG: Required<RichTextEditorToolbarConfig>;
|
|
22
23
|
export type RichTextEditorTranslation = {
|
|
@@ -47,26 +48,35 @@ export type RichTextEditorTranslation = {
|
|
|
47
48
|
linkDialogRemove: string;
|
|
48
49
|
characterCount: string;
|
|
49
50
|
characterCountMax: string;
|
|
51
|
+
/** Wörter-Zähler im Footer, z.B. "{count} words" */
|
|
52
|
+
wordCount: string;
|
|
53
|
+
/** Tooltip für den Fullscreen-Button */
|
|
54
|
+
fullscreen: string;
|
|
55
|
+
/** Tooltip für den Exit-Fullscreen-Button */
|
|
56
|
+
exitFullscreen: string;
|
|
50
57
|
};
|
|
51
58
|
export declare const DEFAULT_RICH_TEXT_EDITOR_TRANSLATION: RichTextEditorTranslation;
|
|
52
59
|
export type RichTextEditorProps = {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
placeholder?: string;
|
|
56
|
-
outputFormat?: RichTextEditorOutputFormat;
|
|
60
|
+
disabled?: boolean;
|
|
61
|
+
error?: boolean;
|
|
57
62
|
/** Gesamthöhe des Editors (Toolbar + Inhalt). Zahlen → px. "auto" → füllt den umgebenden Flex-Container. */
|
|
58
63
|
height?: number | string;
|
|
59
|
-
|
|
60
|
-
width?: number | string;
|
|
61
|
-
showCharacterCount?: boolean;
|
|
64
|
+
helperText?: string;
|
|
62
65
|
maxCharacters?: number;
|
|
63
|
-
toolbarConfig?: RichTextEditorToolbarConfig;
|
|
64
|
-
disabled?: boolean;
|
|
65
|
-
readonly?: boolean;
|
|
66
66
|
name?: string;
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
placeholder?: string;
|
|
68
|
+
readonly?: boolean;
|
|
69
|
+
showCharacterCount?: boolean;
|
|
70
|
+
/** Blendet die Toolbar aus ohne den Editor in den readonly-Modus zu versetzen */
|
|
71
|
+
showToolbar?: boolean;
|
|
72
|
+
/** Zeigt einen Wörter-Zähler im Footer an */
|
|
73
|
+
showWordCount?: boolean;
|
|
74
|
+
toolbarConfig?: RichTextEditorToolbarConfig;
|
|
69
75
|
translation?: Partial<RichTextEditorTranslation>;
|
|
76
|
+
value?: string;
|
|
77
|
+
/** Breite des Editors. Zahlen → px. "auto" oder leer → 100% des Elternelements. */
|
|
78
|
+
width?: number | string;
|
|
70
79
|
onBlur?: () => void;
|
|
80
|
+
onChange?: (value: string) => void;
|
|
71
81
|
onFocus?: () => void;
|
|
72
82
|
};
|
|
@@ -5,7 +5,9 @@ type RichTextEditorFooterProps = {
|
|
|
5
5
|
showCharacterCount?: boolean;
|
|
6
6
|
charCount: number;
|
|
7
7
|
maxCharacters?: number;
|
|
8
|
+
showWordCount?: boolean;
|
|
9
|
+
wordCount: number;
|
|
8
10
|
translation: RichTextEditorTranslation;
|
|
9
11
|
};
|
|
10
|
-
export declare function RichTextEditorFooter({ helperText, error, showCharacterCount, charCount, maxCharacters, translation: t, }: RichTextEditorFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function RichTextEditorFooter({ helperText, error, showCharacterCount, charCount, maxCharacters, showWordCount, wordCount, translation: t, }: RichTextEditorFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
11
13
|
export {};
|
|
@@ -5,6 +5,8 @@ type RichTextEditorToolbarProps = {
|
|
|
5
5
|
toolbarConfig: Required<RichTextEditorToolbarConfig>;
|
|
6
6
|
translation: RichTextEditorTranslation;
|
|
7
7
|
disabled?: boolean;
|
|
8
|
+
isFullscreen: boolean;
|
|
9
|
+
onToggleFullscreen: () => void;
|
|
8
10
|
};
|
|
9
|
-
export declare function RichTextEditorToolbar({ editor, toolbarConfig: tc, translation: t, disabled, }: RichTextEditorToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function RichTextEditorToolbar({ editor, toolbarConfig: tc, translation: t, disabled, isFullscreen, onToggleFullscreen, }: RichTextEditorToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
10
12
|
export {};
|
|
@@ -45,29 +45,29 @@ export type SqlEditorHighlightColors = {
|
|
|
45
45
|
identifier?: string;
|
|
46
46
|
};
|
|
47
47
|
export type SqlEditorProps = {
|
|
48
|
-
|
|
49
|
-
onChange?: (sql: string) => void;
|
|
50
|
-
placeholder?: string;
|
|
51
|
-
/** Total height (toolbar + content). Numbers → px. "auto" → fills surrounding flex container. */
|
|
52
|
-
height?: number | string;
|
|
53
|
-
/** Width. Numbers → px. Default → 100%. */
|
|
54
|
-
width?: number | string;
|
|
48
|
+
dialect?: SqlEditorDialect;
|
|
55
49
|
disabled?: boolean;
|
|
56
|
-
readonly?: boolean;
|
|
57
50
|
error?: boolean;
|
|
51
|
+
/** Total height (toolbar + content). Numbers → px. "auto" → fills surrounding flex container. */
|
|
52
|
+
height?: number | string;
|
|
58
53
|
helperText?: string;
|
|
54
|
+
highlightColors?: SqlEditorHighlightColors;
|
|
59
55
|
/** Name for native form submission via hidden input. */
|
|
60
56
|
name?: string;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
placeholder?: string;
|
|
58
|
+
readonly?: boolean;
|
|
59
|
+
schema?: SqlSchema;
|
|
64
60
|
showErrorCount?: boolean;
|
|
61
|
+
showLineColumn?: boolean;
|
|
62
|
+
showLineNumbers?: boolean;
|
|
65
63
|
toolbarConfig?: SqlEditorToolbarConfig;
|
|
66
64
|
translation?: Partial<SqlEditorTranslation>;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
onLint?: (sql: string) => Promise<SqlLintError[]> | SqlLintError[];
|
|
65
|
+
value?: string;
|
|
66
|
+
/** Width. Numbers → px. Default → 100%. */
|
|
67
|
+
width?: number | string;
|
|
71
68
|
onBlur?: () => void;
|
|
69
|
+
onChange?: (sql: string) => void;
|
|
70
|
+
onExecute?: (sql: string) => void;
|
|
72
71
|
onFocus?: () => void;
|
|
72
|
+
onLint?: (sql: string) => Promise<SqlLintError[]> | SqlLintError[];
|
|
73
73
|
};
|
|
@@ -12,6 +12,7 @@ type SqlEditorContentProps = {
|
|
|
12
12
|
stringColor?: string;
|
|
13
13
|
identifierColor?: string;
|
|
14
14
|
schema?: SqlSchema;
|
|
15
|
+
onExecute?: (sql: string) => void;
|
|
15
16
|
onLint?: (sql: string) => Promise<SqlLintError[]> | SqlLintError[];
|
|
16
17
|
onDiagnosticsChange?: (count: number) => void;
|
|
17
18
|
onViewReady: (view: EditorView | null) => void;
|
|
@@ -19,5 +20,5 @@ type SqlEditorContentProps = {
|
|
|
19
20
|
onBlur?: () => void;
|
|
20
21
|
onFocus?: () => void;
|
|
21
22
|
};
|
|
22
|
-
export declare function SqlEditorContent({ value, onChange, placeholder, disabled, readonly, showLineNumbers, dialect, keywordColor, stringColor, identifierColor, schema, onLint, onDiagnosticsChange, onViewReady, onCursorChange, onBlur, onFocus, }: SqlEditorContentProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare function SqlEditorContent({ value, onChange, placeholder, disabled, readonly, showLineNumbers, dialect, keywordColor, stringColor, identifierColor, schema, onExecute, onLint, onDiagnosticsChange, onViewReady, onCursorChange, onBlur, onFocus, }: SqlEditorContentProps): import("react/jsx-runtime").JSX.Element;
|
|
23
24
|
export {};
|
|
@@ -19,23 +19,23 @@ export type TagSelectionTranslation = {
|
|
|
19
19
|
};
|
|
20
20
|
export declare const DEFAULT_TAG_SELECTION_TRANSLATION: TagSelectionTranslation;
|
|
21
21
|
export type TagSelectionProps = {
|
|
22
|
-
|
|
23
|
-
showSelectedTags?: boolean;
|
|
24
|
-
showSelectedTagsLabel?: boolean;
|
|
25
|
-
showAutoComplete?: boolean;
|
|
26
|
-
translation?: Partial<TagSelectionTranslation>;
|
|
27
|
-
inputSize?: "small" | "medium";
|
|
22
|
+
allowCreate?: boolean;
|
|
28
23
|
chipSize?: "small" | "medium";
|
|
29
24
|
disabled?: boolean;
|
|
25
|
+
inputSize?: "small" | "medium";
|
|
26
|
+
listboxMaxHeight?: number;
|
|
30
27
|
loading?: boolean;
|
|
31
28
|
maxTags?: number;
|
|
32
|
-
allowCreate?: boolean;
|
|
33
29
|
maxVisibleChips?: number;
|
|
34
30
|
popoverPlacement?: "top" | "bottom";
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
showAutoComplete?: boolean;
|
|
32
|
+
showSelectedTags?: boolean;
|
|
33
|
+
showSelectedTagsLabel?: boolean;
|
|
34
|
+
tags: TagSelectionItem[];
|
|
35
|
+
translation?: Partial<TagSelectionTranslation>;
|
|
39
36
|
onSearchChange?: (searchValue: string) => void;
|
|
40
37
|
onTagCreate?: (label: string, color: TagColor) => void;
|
|
38
|
+
onTagDelete?: (tag: TagSelectionItem, selectedTags: TagSelectionItem[], allTags: TagSelectionItem[]) => void;
|
|
39
|
+
onTagSelect?: (tag: TagSelectionItem, selectedTags: TagSelectionItem[], allTags: TagSelectionItem[]) => void;
|
|
40
|
+
onTagsChange?: (selectedTags: TagSelectionItem[], allTags: TagSelectionItem[]) => void;
|
|
41
41
|
};
|