Merge branch 'refactor/add-widget-behavior' into 'main'
Add new add-widget behavior. See merge request vkuchenik/website-framework!41
This commit is contained in:
@@ -14,42 +14,53 @@ import DeleteAllButton from "../components/DeleteAllButton";
|
|||||||
export function DashboardCanvas({ onCancel, isEditable, setIsEditable, isDelete, setIsDelete, view, layout, setLayout, originalLayout, setOriginalLayout, onLayoutChange, onChangeView }) {
|
export function DashboardCanvas({ onCancel, isEditable, setIsEditable, isDelete, setIsDelete, view, layout, setLayout, originalLayout, setOriginalLayout, onLayoutChange, onChangeView }) {
|
||||||
const [newCounter, setNewCounter] = useState(3);
|
const [newCounter, setNewCounter] = useState(3);
|
||||||
|
|
||||||
|
// Adding a widget triggers Edit mode
|
||||||
const onAddWidget = () => {
|
const onAddWidget = () => {
|
||||||
const newId = newCounter.toString();
|
const newId = newCounter.toString();
|
||||||
|
|
||||||
setLayout(prev => [
|
setLayout(prev => [
|
||||||
...prev,
|
...prev,
|
||||||
{
|
{
|
||||||
i: newId,
|
i: newId,
|
||||||
x: (prev.length * 3) % 12,
|
x: (prev.length * 3) % 12,
|
||||||
y: Infinity,
|
y: Infinity,
|
||||||
w: 3,
|
w: 3,
|
||||||
h: 3,
|
h: 3,
|
||||||
|
static: false,
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
setNewCounter(prev => prev + 1);
|
setNewCounter(prev => prev + 1);
|
||||||
|
onEditWidgets();
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log("static change effect");
|
|
||||||
setLayout(prevLayout =>
|
|
||||||
prevLayout.map(item => ({
|
|
||||||
...item,
|
|
||||||
static: !isEditable // static false means resizable/editable
|
|
||||||
}))
|
|
||||||
);
|
|
||||||
}, [isEditable]);
|
|
||||||
|
|
||||||
const onEditWidgets = () => {
|
const onEditWidgets = () => {
|
||||||
console.log("widgets are now editable");
|
console.log("widgets are now editable");
|
||||||
setOriginalLayout(layout); // Backup layout before editing
|
setOriginalLayout(layout); // Backup layout before editing
|
||||||
|
|
||||||
|
// Set all widgets to editable, static: false
|
||||||
|
setLayout(prevLayout =>
|
||||||
|
prevLayout.map(item => ({
|
||||||
|
...item,
|
||||||
|
static: false
|
||||||
|
}))
|
||||||
|
);
|
||||||
setIsEditable(true); // Enable edit mode
|
setIsEditable(true); // Enable edit mode
|
||||||
}
|
}
|
||||||
|
|
||||||
const onSave = () => {
|
const onSave = () => {
|
||||||
console.log("saving widgets...");
|
console.log("saving widgets...");
|
||||||
|
|
||||||
|
// Set all widgets back to static: true
|
||||||
|
setLayout(prevLayout =>
|
||||||
|
prevLayout.map(item => ({
|
||||||
|
...item,
|
||||||
|
static: true
|
||||||
|
}))
|
||||||
|
);
|
||||||
|
|
||||||
setIsEditable(false);
|
setIsEditable(false);
|
||||||
setIsDelete(false);
|
setIsDelete(false);
|
||||||
setOriginalLayout([]) // Clear backup layout
|
setOriginalLayout([]); // Clear backup layout
|
||||||
}
|
}
|
||||||
|
|
||||||
const onDeleteWidgets = () => {
|
const onDeleteWidgets = () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user