Merge branch 'add/widgets/conditional-editing' into 'main'
Add conditional editing of widgets along with save and cancel buttons. See merge request vkuchenik/website-framework!26
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { HStack, Flex, Tabs, Box } from "@chakra-ui/react";
|
import { HStack, Flex, Tabs, Button, Box } from "@chakra-ui/react";
|
||||||
import WidgetCanvas from "./DashboardCanvasNav/WidgetCanvas";
|
import WidgetCanvas from "./DashboardCanvasNav/WidgetCanvas";
|
||||||
import { SearchBar } from "../components/SearchBar";
|
import { SearchBar } from "../components/SearchBar";
|
||||||
import { SettingsButton } from "../components/SettingsButton";
|
import { SettingsButton } from "../components/SettingsButton";
|
||||||
@@ -16,6 +16,7 @@ export function DashboardCanvas() {
|
|||||||
{ i: '1', x: 3, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable },
|
{ i: '1', x: 3, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable },
|
||||||
{ i: '2', x: 6, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable }
|
{ i: '2', x: 6, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable }
|
||||||
]);
|
]);
|
||||||
|
const [originalLayout, setOriginalLayout] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setLayout(prevLayout =>
|
setLayout(prevLayout =>
|
||||||
@@ -35,15 +36,32 @@ export function DashboardCanvas() {
|
|||||||
x: (prev.length * 3) % 12,
|
x: (prev.length * 3) % 12,
|
||||||
y: Infinity,
|
y: Infinity,
|
||||||
w: 3,
|
w: 3,
|
||||||
h: 3
|
h: 3,
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
setNewCounter(prev => prev + 1);
|
setNewCounter(prev => prev + 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onEditWidgets = () => {
|
const onEditWidgets = () => {
|
||||||
console.log("widgets are now editable")
|
console.log("widgets are now editable");
|
||||||
setIsEditable(true);
|
setOriginalLayout(layout); // Backup layout before editing
|
||||||
|
setIsEditable(true); // Enable edit mode
|
||||||
|
}
|
||||||
|
|
||||||
|
const onSave = () => {
|
||||||
|
setOriginalLayout([]) // Clear backup layout
|
||||||
|
setIsEditable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
const onCancel = () => {
|
||||||
|
if (originalLayout.length) {
|
||||||
|
setLayout(originalLayout.map(item => ({
|
||||||
|
...item,
|
||||||
|
static: true
|
||||||
|
})));
|
||||||
|
};
|
||||||
|
setOriginalLayout([]);
|
||||||
|
setIsEditable(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
const onDeleteWidgets = (id) => {
|
const onDeleteWidgets = (id) => {
|
||||||
@@ -87,13 +105,30 @@ export function DashboardCanvas() {
|
|||||||
</Tabs.Trigger>
|
</Tabs.Trigger>
|
||||||
</Tabs.List>
|
</Tabs.List>
|
||||||
|
|
||||||
<HStack >
|
{/* <HStack >
|
||||||
<SearchBar />
|
<SearchBar />
|
||||||
<SettingsButton visible={isEditable}
|
<SettingsButton visible={isEditable}
|
||||||
onAddWidget={ onAddWidget }
|
onAddWidget={ onAddWidget }
|
||||||
onEditWidgets={ onEditWidgets }
|
onEditWidgets={ onEditWidgets }
|
||||||
onDeleteWidgets={ onDeleteWidgets }
|
onDeleteWidgets={ onDeleteWidgets }
|
||||||
/>
|
/>
|
||||||
|
</HStack> */}
|
||||||
|
<HStack >
|
||||||
|
{isEditable ? (
|
||||||
|
<>
|
||||||
|
<Button onClick={onSave} borderRadius="md" bg="primary" _hover={{bg: "primaryLt"}}>Save</Button>
|
||||||
|
<Button onClick={onCancel} borderRadius="md">Cancel</Button>
|
||||||
|
</>
|
||||||
|
):(
|
||||||
|
<>
|
||||||
|
<SearchBar />
|
||||||
|
<SettingsButton
|
||||||
|
onAddWidget={ onAddWidget }
|
||||||
|
onEditWidgets={ onEditWidgets }
|
||||||
|
onDeleteWidgets={ onDeleteWidgets }
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</HStack>
|
</HStack>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ export default function VolcanoCanvas() {
|
|||||||
display="flex"
|
display="flex"
|
||||||
alignItems="center"
|
alignItems="center"
|
||||||
justifyContent="center"
|
justifyContent="center"
|
||||||
|
|
||||||
|
|
||||||
>
|
>
|
||||||
<Text fontsize="2xl" fontWeight="bold" color="gray.700">
|
<Text fontsize="2xl" fontWeight="bold" color="gray.700">
|
||||||
Volcano Canvas coming soon!
|
Volcano Canvas coming soon!
|
||||||
|
|||||||
Reference in New Issue
Block a user