@eccenca/gui-elements 24.1.0-rc.4 → 24.1.0-rc.5

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.
Files changed (47) hide show
  1. package/CHANGELOG.md +23 -2
  2. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js +7 -2
  3. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  4. package/dist/cjs/components/Icon/canonicalIconNames.js +10 -0
  5. package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
  6. package/dist/cjs/components/Typography/OverflowText.js +1 -1
  7. package/dist/cjs/components/Typography/OverflowText.js.map +1 -1
  8. package/dist/cjs/extensions/codemirror/CodeMirror.js +35 -7
  9. package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
  10. package/dist/cjs/extensions/codemirror/toolbars/commands/markdown.command.js +278 -0
  11. package/dist/cjs/extensions/codemirror/toolbars/commands/markdown.command.js.map +1 -0
  12. package/dist/cjs/extensions/codemirror/toolbars/markdown.toolbar.js +47 -0
  13. package/dist/cjs/extensions/codemirror/toolbars/markdown.toolbar.js.map +1 -0
  14. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js +7 -2
  15. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  16. package/dist/esm/components/Icon/canonicalIconNames.js +10 -0
  17. package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
  18. package/dist/esm/components/Typography/OverflowText.js +1 -1
  19. package/dist/esm/components/Typography/OverflowText.js.map +1 -1
  20. package/dist/esm/extensions/codemirror/CodeMirror.js +36 -8
  21. package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
  22. package/dist/esm/extensions/codemirror/toolbars/commands/markdown.command.js +283 -0
  23. package/dist/esm/extensions/codemirror/toolbars/commands/markdown.command.js.map +1 -0
  24. package/dist/esm/extensions/codemirror/toolbars/markdown.toolbar.js +41 -0
  25. package/dist/esm/extensions/codemirror/toolbars/markdown.toolbar.js.map +1 -0
  26. package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +1 -1
  27. package/dist/types/components/Icon/canonicalIconNames.d.ts +10 -0
  28. package/dist/types/components/Typography/OverflowText.d.ts +23 -2
  29. package/dist/types/extensions/codemirror/CodeMirror.d.ts +10 -1
  30. package/dist/types/extensions/codemirror/toolbars/commands/markdown.command.d.ts +55 -0
  31. package/dist/types/extensions/codemirror/toolbars/markdown.toolbar.d.ts +12 -0
  32. package/package.json +21 -19
  33. package/src/cmem/ActivityControl/ActivityControlWidget.tsx +5 -2
  34. package/src/components/CodeAutocompleteField/CodeAutocompleteField.stories.tsx +3 -2
  35. package/src/components/ContextOverlay/ContextOverlay.stories.tsx +15 -4
  36. package/src/components/Dialog/stories/AlertDialog.stories.tsx +5 -1
  37. package/src/components/Dialog/stories/Modal.stories.tsx +4 -2
  38. package/src/components/Dialog/stories/SimpleDialog.stories.tsx +5 -2
  39. package/src/components/Icon/canonicalIconNames.tsx +10 -0
  40. package/src/components/Select/Select.stories.tsx +4 -1
  41. package/src/components/Typography/OverflowText.tsx +24 -3
  42. package/src/components/Typography/stories/OverflowText.stories.tsx +33 -0
  43. package/src/extensions/codemirror/CodeMirror.stories.tsx +5 -17
  44. package/src/extensions/codemirror/CodeMirror.tsx +65 -7
  45. package/src/extensions/codemirror/_codemirror.scss +35 -2
  46. package/src/extensions/codemirror/toolbars/commands/markdown.command.ts +340 -0
  47. package/src/extensions/codemirror/toolbars/markdown.toolbar.tsx +117 -0
@@ -0,0 +1,117 @@
1
+ import React from "react";
2
+ import { EditorView } from "codemirror";
3
+
4
+ import { Button } from "../../../components/Button/Button";
5
+ import { ContextMenu } from "../../../components/ContextOverlay";
6
+ import { Icon, IconButton } from "../../../components/Icon";
7
+ import { MenuItem } from "../../../components/Menu";
8
+ import { Spacing } from "../../../components/Separation/Spacing";
9
+ import { Toolbar, ToolbarSection } from "../../../components/Toolbar";
10
+
11
+ import MarkdownCommand from "./commands/markdown.command";
12
+
13
+ interface MarkdownToolbarProps {
14
+ view?: EditorView;
15
+ togglePreviewStatus: () => void;
16
+ showPreview: boolean;
17
+ translate: (key: string) => string | false;
18
+ disabled?: boolean;
19
+ readonly?: boolean;
20
+ }
21
+
22
+ export const MarkdownToolbar: React.FC<MarkdownToolbarProps> = ({
23
+ view,
24
+ togglePreviewStatus,
25
+ showPreview,
26
+ disabled,
27
+ readonly,
28
+ translate
29
+ }) => {
30
+ const commandRef = React.useRef<MarkdownCommand | null>(null);
31
+
32
+ React.useEffect(() => {
33
+ if (view) {
34
+ commandRef.current = new MarkdownCommand(view);
35
+ }
36
+ }, [view]);
37
+
38
+ const getTranslation = (fallback: string) : string => {
39
+ const key = fallback.toLowerCase().replace(" ", "-");
40
+ return translate(key) || fallback;
41
+ }
42
+
43
+ const { basic, lists, attachments } = MarkdownCommand.commands;
44
+ return (
45
+ <Toolbar noWrap>
46
+ <ToolbarSection canShrink hideOverflow>
47
+ <ContextMenu
48
+ togglerElement={
49
+ <Button
50
+ rightIcon={<Icon name="toggler-showmore" />}
51
+ text={getTranslation("Paragraphs")}
52
+ minimal
53
+ fill
54
+ ellipsizeText
55
+ disabled={showPreview || disabled || readonly}
56
+ />
57
+ }
58
+ >
59
+ {MarkdownCommand.commands.paragraphs.map((p, i) => (
60
+ <MenuItem
61
+ key={p}
62
+ text={
63
+ <>
64
+ <span style={p.startsWith("Head") ? { fontSize: 22 - (i * (22 - 12)) / 5 } : {}}>
65
+ {getTranslation(p)}
66
+ </span>
67
+ </>
68
+ }
69
+ onClick={() => commandRef.current?.executeCommand(p)}
70
+ />
71
+ ))}
72
+ </ContextMenu>
73
+ </ToolbarSection>
74
+ <ToolbarSection canShrink>
75
+ <Spacing vertical hasDivider size="tiny" />
76
+ </ToolbarSection>
77
+
78
+ {[basic, lists, attachments].map((section, i) => {
79
+ return (
80
+ <React.Fragment key={i}>
81
+ <ToolbarSection>
82
+ {section.map((command) => {
83
+ return (
84
+ <IconButton
85
+ key={command.title}
86
+ name={command.icon}
87
+ onClick={() => commandRef.current?.executeCommand(command.title)}
88
+ text={getTranslation(command.title)}
89
+ disabled={showPreview || disabled || readonly}
90
+ />
91
+ );
92
+ })}
93
+ </ToolbarSection>
94
+ {i < 2 && (
95
+ <ToolbarSection canShrink>
96
+ <Spacing vertical hasDivider size="tiny" />
97
+ </ToolbarSection>
98
+ )}
99
+ </React.Fragment>
100
+ );
101
+ })}
102
+ <ToolbarSection canGrow canShrink>
103
+ <Spacing vertical size="small" />
104
+ </ToolbarSection>
105
+ <ToolbarSection canShrink hideOverflow>
106
+ <Button
107
+ minimal
108
+ ellipsizeText
109
+ onClick={togglePreviewStatus}
110
+ text={showPreview ? getTranslation("Continue editing") : getTranslation("Preview")}
111
+ icon={showPreview ? "item-edit" : "item-viewdetails"}
112
+ disabled={disabled}
113
+ />
114
+ </ToolbarSection>
115
+ </Toolbar>
116
+ );
117
+ };