🐛 Fix Change Position not working with gridstack

This commit is contained in:
Meierschlumpf
2022-12-19 21:27:44 +01:00
parent f240d29f7e
commit a5d31dd3ec
14 changed files with 242 additions and 173 deletions

View File

@@ -22,13 +22,17 @@ export const ChangeAppPositionModal = ({
return;
}
updateConfig(configName, (previousConfig) => ({
...previousConfig,
apps: [
...previousConfig.apps.filter((x) => x.id !== innerProps.app.id),
{ ...innerProps.app, shape: { location: { x, y }, size: { width, height } } },
],
}));
updateConfig(
configName,
(previousConfig) => ({
...previousConfig,
apps: [
...previousConfig.apps.filter((x) => x.id !== innerProps.app.id),
{ ...innerProps.app, shape: { location: { x, y }, size: { width, height } } },
],
}),
true
);
context.closeModal(id);
};

View File

@@ -19,25 +19,28 @@ export const ChangeWidgetPositionModal = ({
return;
}
updateConfig(configName, (prev) => {
let currentWidget = prev.widgets.find((x) => x.id === innerProps.widgetId);
currentWidget!.shape = {
location: {
x,
y,
},
size: {
height,
width,
},
};
return {
...prev,
widgets: [...prev.widgets.filter((x) => x.id !== innerProps.widgetId), currentWidget!],
};
});
updateConfig(
configName,
(prev) => {
let currentWidget = prev.widgets.find((x) => x.id === innerProps.widgetId);
currentWidget!.shape = {
location: {
x,
y,
},
size: {
height,
width,
},
};
return {
...prev,
widgets: [...prev.widgets.filter((x) => x.id !== innerProps.widgetId), currentWidget!],
};
},
true
);
context.closeModal(id);
};

View File

@@ -83,10 +83,14 @@ export const EditAppModal = ({
return;
}
updateConfig(configName, (previousConfig) => ({
...previousConfig,
apps: [...previousConfig.apps.filter((x) => x.id !== form.values.id), form.values],
}));
updateConfig(
configName,
(previousConfig) => ({
...previousConfig,
apps: [...previousConfig.apps.filter((x) => x.id !== form.values.id), form.values],
}),
true
);
// also close the parent modal
context.closeAll();

View File

@@ -26,35 +26,39 @@ export const WidgetElementType = ({ id, image, disabled, widget }: WidgetElement
};
const handleAddition = async () => {
updateConfig(configName, (prev) => ({
...prev,
widgets: [
...prev.widgets.filter((w) => w.id !== widget.id),
{
id: widget.id,
properties: Object.entries(widget.options).reduce((prev, [k, v]) => {
prev[k] = v.defaultValue;
return prev;
}, {} as IWidget<string, any>['properties']),
area: {
type: 'wrapper',
properties: {
id: getLowestWrapper()?.id ?? '',
updateConfig(
configName,
(prev) => ({
...prev,
widgets: [
...prev.widgets.filter((w) => w.id !== widget.id),
{
id: widget.id,
properties: Object.entries(widget.options).reduce((prev, [k, v]) => {
prev[k] = v.defaultValue;
return prev;
}, {} as IWidget<string, any>['properties']),
area: {
type: 'wrapper',
properties: {
id: getLowestWrapper()?.id ?? '',
},
},
shape: {
location: {
x: 0,
y: 0,
},
size: {
width: widget.gridstack.minWidth,
height: widget.gridstack.minHeight,
},
},
},
shape: {
location: {
x: 0,
y: 0,
},
size: {
width: widget.gridstack.minWidth,
height: widget.gridstack.minHeight,
},
},
},
],
}));
],
}),
true
);
// TODO: safe to file system
closeModal('selectElement');
};