diff --git a/public/index.html b/public/index.html index 316d03a2f..07282983b 100644 --- a/public/index.html +++ b/public/index.html @@ -15,5 +15,7 @@
+
+
diff --git a/src/components/generic/side-panel/SidePanel.scss b/src/components/generic/side-panel/SidePanel.scss index 97f70caa2..10780d7a5 100644 --- a/src/components/generic/side-panel/SidePanel.scss +++ b/src/components/generic/side-panel/SidePanel.scss @@ -1,16 +1,12 @@ .side-panel { - $title-height: 44px; - - position: fixed; - z-index: 200; - top: 0; - right: 0; width: 400px; height: 100vh; padding: $spacing-unit; box-shadow: 0 -2px 10px 0 rgba(0, 0, 0, 0.1); background-color: $color-white; + $title-height: 44px; + &__title { display: flex; justify-content: space-between; diff --git a/src/components/generic/side-panel/SidePanel.vue b/src/components/generic/side-panel/SidePanel.vue index a8dba2af0..75adbf520 100644 --- a/src/components/generic/side-panel/SidePanel.vue +++ b/src/components/generic/side-panel/SidePanel.vue @@ -1,18 +1,23 @@ diff --git a/src/composables/side-panel.js b/src/composables/side-panel.js new file mode 100644 index 000000000..556a38839 --- /dev/null +++ b/src/composables/side-panel.js @@ -0,0 +1,11 @@ +import { useToggle } from "./toggle"; + +const { isOpen, open, close } = useToggle(); + +export function useSidePanel() { + return { + showSidePanelOpen: isOpen, + openSidePanel: open, + closeSidePanel: close + }; +} diff --git a/src/composables/toggle.js b/src/composables/toggle.js new file mode 100644 index 000000000..769ccd3d5 --- /dev/null +++ b/src/composables/toggle.js @@ -0,0 +1,16 @@ +import { ref } from "vue"; + +export function useToggle() { + const isOpen = ref(false); + + const open = () => isOpen.value = true; + const close = () => isOpen.value = false; + const toggle = () => isOpen.value = !isOpen.value; + + return { + isOpen, + open, + close, + toggle + } +}; diff --git a/src/styles/global.scss b/src/styles/global.scss index 38dbe9a62..5f1e05dfd 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -13,5 +13,19 @@ html { body { margin: 0; padding: 0; + + #side-panel-container { + position: fixed; + z-index: 200; + top: 0; + right: 0; + } + + #notification-container { + position: fixed; + z-index: 300; + top: 0; + right: 0; + } } } diff --git a/src/views/space-board/SpaceBoard.vue b/src/views/space-board/SpaceBoard.vue index d00203979..45579f297 100644 --- a/src/views/space-board/SpaceBoard.vue +++ b/src/views/space-board/SpaceBoard.vue @@ -48,19 +48,13 @@ - - - - - + + + import { ref, watchEffect } from "vue"; +import { useSidePanel } from "@/composables/side-panel"; import { useProjects } from "@/state/projects"; import { useSpaces } from "@/state/spaces"; // Components @@ -111,6 +106,7 @@ export default { setup() { const { currentSpace, spaceUsers, spaceInvitations } = useSpaces(); const { spaceProjects } = useProjects(); + const { openSidePanel } = useSidePanel(); const displayedProjects = ref([]); watchEffect(() => (displayedProjects.value = spaceProjects.value)); @@ -137,26 +133,16 @@ export default { .sort((a, b) => (a.name < b.name ? -1 : 1) * n); }; - const showUsersManager = ref(false); - const openUsersManager = () => { - showUsersManager.value = true; - }; - const closeUsersManager = () => { - showUsersManager.value = false; - }; - return { // References invitations: spaceInvitations, projects: displayedProjects, searchText, - showUsersManager, space: currentSpace, users: spaceUsers, // Methods - closeUsersManager, filterProjects, - openUsersManager, + openUsersManager: openSidePanel, sortProjects }; }