@yogiswara/honcho-editor-ui 3.4.0 → 3.4.2
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.
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { SelectChangeEvent } from "@mui/material";
|
|
3
2
|
type Preset = {
|
|
4
3
|
id: string;
|
|
5
4
|
name: string;
|
|
@@ -10,14 +9,11 @@ interface Props {
|
|
|
10
9
|
expandedPanels: string[];
|
|
11
10
|
presetMenuAnchorEl: null | HTMLElement;
|
|
12
11
|
activePresetMenuId: string | null;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
onSelectPreset: (
|
|
12
|
+
isPresetCreatedSet?: boolean;
|
|
13
|
+
onChange: (panel: string) => (event: React.SyntheticEvent, isExpanded: boolean) => void;
|
|
14
|
+
onSelectPreset: (id: string) => void;
|
|
16
15
|
onPresetMenuClick: (event: React.MouseEvent<HTMLElement>, presetId: string) => void;
|
|
17
16
|
onPresetMenuClose: () => void;
|
|
18
|
-
onRemovePreset: () => void;
|
|
19
|
-
onRenamePreset: () => void;
|
|
20
|
-
onDeletePreset: () => void;
|
|
21
17
|
onOpenPresetModal: () => void;
|
|
22
18
|
}
|
|
23
19
|
export default function HBulkPreset(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback } from "react";
|
|
2
3
|
import { Box, MenuItem, FormControl, Select, Stack, Accordion, AccordionSummary, AccordionDetails, CardMedia, Typography, IconButton, Button } from "@mui/material";
|
|
3
4
|
import useHonchoTypography from "../../themes/honchoTheme";
|
|
4
5
|
import useColors from "../../themes/colors";
|
|
5
|
-
// Static `presets` array has been removed.
|
|
6
6
|
export default function HBulkPreset(props) {
|
|
7
7
|
const typography = useHonchoTypography();
|
|
8
8
|
const colors = useColors();
|
|
9
|
-
const isMenuOpen = Boolean(props.presetMenuAnchorEl);
|
|
10
9
|
const isPanelExpanded = (panelName) => props.expandedPanels.includes(panelName);
|
|
11
10
|
const accordionStyle = {
|
|
12
11
|
backgroundColor: colors.onBackground,
|
|
@@ -18,26 +17,26 @@ export default function HBulkPreset(props) {
|
|
|
18
17
|
};
|
|
19
18
|
const CustomSelectIcon = (iconProps) => {
|
|
20
19
|
const isExpanded = iconProps.className?.includes('MuiSelect-iconOpen');
|
|
21
|
-
return (_jsx(CardMedia, { component: "img", image: isExpanded ? "/v1/svg/
|
|
20
|
+
return (_jsx(CardMedia, { component: "img", image: isExpanded ? "/v1/svg/expanded-editor.svg" : "/v1/svg/expand-editor.svg", sx: { width: "11.67px", height: "5.83px", right: '14px', position: 'absolute', pointerEvents: 'none' } }));
|
|
22
21
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
const handleSelectChange = (event) => {
|
|
23
|
+
props.onSelectPreset(event.target.value);
|
|
24
|
+
};
|
|
25
|
+
const renderValue = useCallback((selectedId) => {
|
|
26
|
+
if (selectedId === 'MULTIPLE_PRESETS') {
|
|
27
|
+
return _jsx(Typography, { sx: { ...typography.bodyMedium, color: colors.surface }, children: "Multiple presets" });
|
|
28
|
+
}
|
|
29
|
+
if (selectedId === 'NO_SELECTION' || !selectedId || selectedId === '') {
|
|
30
|
+
return _jsx(Typography, { sx: { ...typography.bodyMedium, color: colors.surface }, children: "Select" });
|
|
31
|
+
}
|
|
32
|
+
const selectedPresetObject = props.presets.find(p => p.id === selectedId);
|
|
33
|
+
if (!selectedPresetObject) {
|
|
34
|
+
return _jsx(Typography, { sx: { ...typography.bodyMedium, color: colors.surface }, children: "Select" });
|
|
35
|
+
}
|
|
36
|
+
return _jsx(Typography, { sx: { ...typography.bodyMedium, color: colors.surface }, children: selectedPresetObject.name });
|
|
37
|
+
}, [props.presets, typography.bodyMedium, colors.surface]);
|
|
38
|
+
// The useEffect that forced re-renders has been removed.
|
|
39
|
+
return (_jsx(_Fragment, { children: _jsx(Stack, { children: _jsxs(Accordion, { sx: accordionStyle, expanded: isPanelExpanded('preset'), onChange: props.onChange('preset'), disableGutters: true, children: [_jsx(AccordionSummary, { sx: { pr: 0 }, children: _jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "center", sx: { width: '100%', pr: "16px" }, children: [_jsx(Typography, { sx: { ...typography.titleMedium, color: colors.surface }, children: "Preset" }), _jsx(CardMedia, { component: "img", image: isPanelExpanded('preset') ? "/v1/svg/expanded-editor.svg" : "/v1/svg/expand-editor.svg", sx: { width: "11.67px", height: "5.83px" } })] }) }), _jsx(AccordionDetails, { sx: { pl: "16px" }, children: _jsx(FormControl, { fullWidth: true, children: _jsxs(Select, { fullWidth: true, value: props.selectedPreset, onChange: handleSelectChange, IconComponent: CustomSelectIcon, renderValue: renderValue, MenuProps: {
|
|
35
40
|
slotProps: { paper: { sx: { backgroundColor: colors.onBackground, color: colors.surface, border: `1px solid ${colors.onSurfaceVariant1}`, mt: '20px', width: '178px', boxShadow: 'none' } } }
|
|
36
|
-
}, sx: { border: `1px solid ${colors.outlineVariant}`, height: '44px', width: '
|
|
37
|
-
width: '100%',
|
|
38
|
-
textAlign: 'center',
|
|
39
|
-
color: colors.surface,
|
|
40
|
-
opacity: 0.7,
|
|
41
|
-
...typography.bodyMedium
|
|
42
|
-
}, children: "No Preset" }) }) }), props.presets.map((preset) => (_jsx(MenuItem, { value: preset.id, sx: { borderRadius: '4px', py: '4px', my: '0px', px: '0px', mx: '0px' }, children: _jsxs(Stack, { direction: "row", justifyContent: "space-around", alignItems: "center", sx: { width: '100%', py: '0px', px: '0px', mx: '0px', my: '4px' }, children: [_jsx(CardMedia, { component: "img", image: "v1/svg/check-ratio-editor.svg", sx: { width: "20px", height: "20px", mr: '-16px', px: '0px', visibility: props.selectedPreset === preset.id ? 'visible' : 'hidden' } }), _jsx(Typography, { sx: { width: '24px', textWrap: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', display: 'block', color: colors.surface, pr: "82px", pl: "0px", ml: "0px", justifyContent: 'flex-start', ...typography.bodyMedium }, children: preset.name }), _jsx(IconButton, { "aria-label": `Options for ${preset.name}`, onClick: (event) => props.onPresetMenuClick(event, preset.id), sx: { padding: "0px", margin: "0px", mr: "0px" }, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/dots-editor.svg", alt: "Options", sx: { width: '20px', height: '20px' } }) })] }) }, preset.id))), _jsx(Box, { sx: { px: '16px', my: '8px' }, children: _jsx(Button, { fullWidth: true, variant: "outlined", sx: { ...typography.labelMedium, height: '40px', color: colors.onBackground, backgroundColor: colors.surface, borderRadius: '100px', borderColor: colors.surface, textTransform: 'none', '&:hover': { backgroundColor: '#e0e0e0', borderColor: colors.surface } }, onClick: props.onOpenPresetModal, children: "Create Preset" }) })] }) }) })] }) }) }));
|
|
41
|
+
}, sx: { border: `1px solid ${colors.outlineVariant}`, height: '44px', width: '202px', boxShadow: 'none' }, children: [props.presets.map((preset) => (_jsx(MenuItem, { value: preset.id, sx: { borderRadius: '4px', py: '4px', my: '0px', px: '0px', mx: '0px' }, children: _jsxs(Stack, { direction: "row", justifyContent: "space-around", alignItems: "center", sx: { width: '100%', py: '0px', px: '0px', mx: '0px', my: '4px' }, children: [_jsx(CardMedia, { component: "img", image: "/v1/svg/check-ratio-editor.svg", sx: { width: "20px", height: "20px", mr: '-16px', px: '0px', visibility: props.selectedPreset === preset.id ? 'visible' : 'hidden' } }), _jsx(Typography, { sx: { width: '24px', textWrap: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', display: 'block', color: colors.surface, pr: "82px", pl: "0px", ml: "0px", justifyContent: 'flex-start', ...typography.bodyMedium }, children: preset.name }), _jsx(IconButton, { "aria-label": `Options for ${preset.name}`, onClick: (event) => props.onPresetMenuClick(event, preset.id), sx: { padding: "0px", margin: "0px", mr: "0px" }, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/dots-editor.svg", alt: "Options", sx: { width: '20px', height: '20px' } }) })] }) }, preset.id))), _jsx(Box, { sx: { px: '16px', my: '8px' }, children: _jsx(Button, { fullWidth: true, variant: "outlined", sx: { ...typography.labelMedium, height: '40px', color: colors.onBackground, backgroundColor: colors.surface, borderRadius: '100px', borderColor: colors.surface, textTransform: 'none', '&:hover': { backgroundColor: '#e0e0e0', borderColor: colors.surface } }, onClick: props.onOpenPresetModal, disabled: props.isPresetCreatedSet, children: "Create Preset" }) })] }) }) })] }) }) }));
|
|
43
42
|
}
|
|
@@ -3,8 +3,13 @@ interface Props {
|
|
|
3
3
|
anchorEl?: null | HTMLElement;
|
|
4
4
|
valueSelect?: string;
|
|
5
5
|
isPasteEnabled?: boolean;
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
isCopyEnabled?: boolean;
|
|
7
|
+
canUndo?: boolean;
|
|
8
|
+
canRedo?: boolean;
|
|
9
|
+
isSelectedMode?: boolean;
|
|
10
|
+
isNoneSelected?: boolean;
|
|
11
|
+
selectedCount?: number;
|
|
12
|
+
totalCount?: number;
|
|
8
13
|
onBack?: () => void;
|
|
9
14
|
onUndo?: () => void;
|
|
10
15
|
onRedo?: () => void;
|
|
@@ -14,6 +19,9 @@ interface Props {
|
|
|
14
19
|
onMenuClick?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
15
20
|
onMenuClose?: () => void;
|
|
16
21
|
onSelectButton?: () => void;
|
|
22
|
+
onSelectAll?: () => void;
|
|
23
|
+
onSelectedMode?: () => void;
|
|
24
|
+
onCloseSelection?: () => void;
|
|
17
25
|
}
|
|
18
26
|
export default function HHeaderEditor(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
19
27
|
export {};
|
|
@@ -17,12 +17,14 @@ export default function HHeaderEditor(props) {
|
|
|
17
17
|
right: isMobile ? 0 : 'auto',
|
|
18
18
|
zIndex: 1300,
|
|
19
19
|
backgroundColor: 'transparent',
|
|
20
|
+
pt: !isMobile ? "20px" : "15px",
|
|
21
|
+
pb: "12px",
|
|
20
22
|
}, children: [_jsx(Stack, { direction: "row", justifyContent: "flex-start", sx: { pl: !isMobile ? "0px" : "14px" }, children: _jsx(IconButton, { "aria-label": "back", onClick: props.onBack, sx: {
|
|
21
23
|
'&:active': {
|
|
22
24
|
transform: 'scale(0.92)',
|
|
23
25
|
},
|
|
24
26
|
transition: 'transform 0.1s ease-in-out',
|
|
25
|
-
}, children: _jsx(CardMedia, { title: "back", src: "svg/Back.svg", component: "img" }) }) }), _jsxs(Stack, { direction: "row", justifyContent: "flex-end", alignItems: "center",
|
|
27
|
+
}, children: _jsx(CardMedia, { title: "back", src: "svg/Back.svg", component: "img" }) }) }), _jsxs(Stack, { direction: "row", justifyContent: "flex-end", alignItems: "center", spacing: 0.1, children: [_jsx(IconButton, { "aria-label": "undo", onClick: props.onUndo, sx: { color: colors.outlineVariant, opacity: props.canUndo ? 1 : 0.5 }, disabled: !props.canUndo, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/undo-editor.svg" }) }), _jsx(IconButton, { "aria-label": "redo", onClick: props.onRedo, sx: { color: colors.outlineVariant, opacity: props.canRedo ? 1 : 0.5 }, disabled: !props.canRedo, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/redo-editor.svg" }) }), _jsx(IconButton, { "aria-label": "option", onClick: props.onMenuClick, "aria-controls": open ? 'options-menu' : undefined, "aria-haspopup": "true", "aria-expanded": open ? 'true' : undefined, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/dots-editor.svg" }) }), _jsxs(Menu, { id: "options-menu", anchorEl: props.anchorEl, open: open, onClose: props.onMenuClose, transformOrigin: { horizontal: 'right', vertical: 'top' }, anchorOrigin: { horizontal: 'right', vertical: 'bottom' }, slotProps: {
|
|
26
28
|
paper: {
|
|
27
29
|
sx: {
|
|
28
30
|
backgroundColor: colors.onBackground,
|
|
@@ -30,7 +32,7 @@ export default function HHeaderEditor(props) {
|
|
|
30
32
|
border: `1px solid ${colors.outlineVariant}`,
|
|
31
33
|
},
|
|
32
34
|
},
|
|
33
|
-
}, children: [_jsxs(MenuItem, { onClick: props.onRevert, children: [_jsx(ListItemIcon, { sx: { minWidth: 0, mr: "0px", px: "0px" }, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/revert-editor.svg", sx: { width: "20px", height: "20px" } }) }), _jsx(ListItemText, { children: _jsx(Typography, { sx: { fontSize: "14px", color: colors.surface }, children: "Revert to original" }) })] }), _jsxs(MenuItem, { onClick: props.onCopyEdit, children: [_jsx(ListItemIcon, { sx: { minWidth: 0, mr: "0px", px: "0px" }, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/copy-editor.svg", sx: { width: "20px", height: "20px" } }) }), _jsx(ListItemText, { children: _jsx(Typography, { sx: { fontSize: "14px", color: colors.surface }, children: "Copy edits" }) }), !isMobile &&
|
|
35
|
+
}, children: [_jsxs(MenuItem, { onClick: props.onRevert, children: [_jsx(ListItemIcon, { sx: { minWidth: 0, mr: "0px", px: "0px" }, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/revert-editor.svg", sx: { width: "20px", height: "20px" } }) }), _jsx(ListItemText, { children: _jsx(Typography, { sx: { fontSize: "14px", color: colors.surface }, children: "Revert to original" }) })] }), _jsxs(MenuItem, { onClick: props.onCopyEdit, disabled: !props.isCopyEnabled, children: [_jsx(ListItemIcon, { sx: { minWidth: 0, mr: "0px", px: "0px" }, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/copy-editor.svg", sx: { width: "20px", height: "20px" } }) }), _jsx(ListItemText, { children: _jsx(Typography, { sx: { fontSize: "14px", color: !props.isCopyEnabled ? colors.onSurfaceVariant1 : colors.surface }, children: "Copy edits" }) }), !isMobile &&
|
|
34
36
|
_jsx(ListItemIcon, { sx: { marginLeft: 'auto' }, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/shortcut-copy-editor.svg", sx: { width: "25px", height: "20px" } }) })] }), _jsxs(MenuItem, { onClick: props.onPasteEdit, disabled: !props.isPasteEnabled, children: [_jsx(ListItemIcon, { sx: { minWidth: 0, mr: "0px", px: "0px" }, children: _jsx(CardMedia, { component: "img", image: !props.isPasteEnabled ? "/v1/svg/paste-editor.svg" : "/v1/svg/paste-white.svg", sx: { width: "20px", height: "20px" } }) }), _jsx(ListItemText, { children: _jsx(Typography, { sx: { fontSize: "14px", color: !props.isPasteEnabled ? colors.onSurfaceVariant1 : colors.surface }, children: "Paste edits" }) }), !isMobile &&
|
|
35
37
|
_jsx(ListItemIcon, { sx: { marginLeft: '30px' }, children: _jsx(CardMedia, { component: "img", image: "/v1/svg/shortcut-paste-editor.svg", sx: { width: "25px", height: "20px" } }) })] })] })] })] }) }));
|
|
36
38
|
}
|