From f7fc4315d613befaaefa86e8c1900fcc1aa1c249 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 9 Oct 2023 19:04:18 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=9A=20Move=20all=20dashboard=20files?= =?UTF-8?q?=20in=20board=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Board/Board.tsx | 11 ++++ .../DashboardView.tsx => Board/BoardView.tsx} | 13 +++-- .../Items/App/AppItem.tsx} | 24 +++----- .../Apps => Board/Items/App}/AppMenu.tsx | 6 +- .../Apps => Board/Items/App}/AppPing.tsx | 0 .../Items/App}/ChangeAppPositionModal.tsx | 8 +-- .../Items/App/Edit}/AppereanceTab.tsx | 0 .../Items/App/Edit}/BehaviourTab.tsx | 0 .../Items/App/Edit}/GeneralTab.tsx | 6 +- .../InputElements/GenericSecretInput.tsx | 0 .../InputElements/IntegrationSelector.tsx | 0 .../IntegrationOptionsRenderer.tsx | 0 .../Edit}/IntegrationTab/IntegrationTab.tsx | 6 +- .../Items/App/Edit}/NetworkTab.tsx | 0 .../Items/App}/EditAppModal.tsx | 17 +++--- .../Items/CommonChangePositionModal.tsx} | 6 +- .../Items/CommonItemMenu.tsx} | 19 +++---- .../Items/GridstackItemWrapper.tsx} | 8 +-- .../Items/ItemWrapper.tsx} | 10 ++-- .../Widget}/ChangeWidgetPositionModal.tsx | 8 +-- .../Items/Widget}/Inputs/DraggableList.tsx | 0 .../Widget}/Inputs/LocationSelection.tsx | 0 .../Widget}/Inputs/StaticDraggableList.tsx | 0 .../Items/Widget}/WidgetsEditModal.tsx | 0 .../Items/Widget}/WidgetsMenu.tsx | 19 +++---- .../Board/{item => Items}/context.tsx | 0 .../Board/{ => Items}/item-actions.tsx | 0 .../Board/Sections/Category/CategoryMenu.tsx | 2 +- .../{ => Category}/CategorySection.tsx | 12 ++-- .../Board/Sections/EmptySection.tsx | 8 +-- .../Sections/SectionContent.tsx} | 54 ++++++++---------- .../Sidebar/MobileRibbon}/MobileRibbon.tsx | 0 .../MobileRibbonSidebarDrawer.tsx | 4 +- .../Board/Sections/Sidebar/SidebarSection.tsx | 46 +++++++++++++++ .../Overview/AvailableElementsOverview.tsx | 0 .../SelectElement/SelectElementModal.tsx | 6 +- .../Shared/GenericElementType.tsx | 0 .../Shared/SelectorBackArrow.tsx | 0 .../SelectElement}/Shared/styles.tsx | 0 .../AvailableStaticElementsTab.tsx | 0 .../WidgetsTab/AvailableWidgetsTab.tsx | 2 +- .../WidgetsTab/WidgetElementType.tsx | 4 +- .../gridstack/init-gridstack.ts | 0 .../Wrappers => Board}/gridstack/store.tsx | 0 .../gridstack/use-gridstack.ts | 4 +- .../Board/gridstack/useResizeGridItem.ts | 2 +- .../Views => Board}/useEditModeStore.ts | 0 src/components/Dashboard/Dashboard.tsx | 12 ---- .../Modals/EditAppModal/Tabs/type.ts | 1 - .../Dashboard/Tiles/Apps/AppIcon.tsx | 5 -- src/components/Dashboard/Tiles/EmptyTile.tsx | 6 -- src/components/Dashboard/Tiles/type.ts | 3 - .../Dashboard/Wrappers/Sidebar/Sidebar.tsx | 57 ------------------- .../layout/Templates/BoardLayout.tsx | 4 +- .../layout/header/Search/MovieModal.tsx | 2 +- src/modals.ts | 10 ++-- src/pages/board/[slug].tsx | 2 +- src/pages/board/index.tsx | 2 +- src/widgets/WidgetWrapper.tsx | 25 +++----- src/widgets/bookmark/BookmarkWidgetTile.tsx | 2 +- src/widgets/boundary.tsx | 7 +-- src/widgets/calendar/CalendarTile.tsx | 2 +- src/widgets/notebook/NotebookEditor.tsx | 2 +- 63 files changed, 197 insertions(+), 250 deletions(-) create mode 100644 src/components/Board/Board.tsx rename src/components/{Dashboard/Views/DashboardView.tsx => Board/BoardView.tsx} (89%) rename src/components/{Dashboard/Tiles/Apps/AppTile.tsx => Board/Items/App/AppItem.tsx} (85%) rename src/components/{Dashboard/Tiles/Apps => Board/Items/App}/AppMenu.tsx (93%) rename src/components/{Dashboard/Tiles/Apps => Board/Items/App}/AppPing.tsx (100%) rename src/components/{Dashboard/Modals/ChangePosition => Board/Items/App}/ChangeAppPositionModal.tsx (91%) rename src/components/{Dashboard/Modals/EditAppModal/Tabs/AppereanceTab => Board/Items/App/Edit}/AppereanceTab.tsx (100%) rename src/components/{Dashboard/Modals/EditAppModal/Tabs/BehaviourTab => Board/Items/App/Edit}/BehaviourTab.tsx (100%) rename src/components/{Dashboard/Modals/EditAppModal/Tabs/GeneralTab => Board/Items/App/Edit}/GeneralTab.tsx (96%) rename src/components/{Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components => Board/Items/App/Edit/IntegrationTab}/InputElements/GenericSecretInput.tsx (100%) rename src/components/{Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components => Board/Items/App/Edit/IntegrationTab}/InputElements/IntegrationSelector.tsx (100%) rename src/components/{Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components => Board/Items/App/Edit/IntegrationTab}/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx (100%) rename src/components/{Dashboard/Modals/EditAppModal/Tabs => Board/Items/App/Edit}/IntegrationTab/IntegrationTab.tsx (85%) rename src/components/{Dashboard/Modals/EditAppModal/Tabs/NetworkTab => Board/Items/App/Edit}/NetworkTab.tsx (100%) rename src/components/{Dashboard/Modals/EditAppModal => Board/Items/App}/EditAppModal.tsx (94%) rename src/components/{Dashboard/Modals/ChangePosition/ChangePositionModal.tsx => Board/Items/CommonChangePositionModal.tsx} (96%) rename src/components/{Dashboard/Tiles/GenericTileMenu.tsx => Board/Items/CommonItemMenu.tsx} (83%) rename src/components/{Dashboard/Tiles/TileWrapper.tsx => Board/Items/GridstackItemWrapper.tsx} (90%) rename src/components/{Dashboard/Tiles/HomarrCardWrapper.tsx => Board/Items/ItemWrapper.tsx} (63%) rename src/components/{Dashboard/Modals/ChangePosition => Board/Items/Widget}/ChangeWidgetPositionModal.tsx (93%) rename src/components/{Dashboard/Tiles/Widgets => Board/Items/Widget}/Inputs/DraggableList.tsx (100%) rename src/components/{Dashboard/Tiles/Widgets => Board/Items/Widget}/Inputs/LocationSelection.tsx (100%) rename src/components/{Dashboard/Tiles/Widgets => Board/Items/Widget}/Inputs/StaticDraggableList.tsx (100%) rename src/components/{Dashboard/Tiles/Widgets => Board/Items/Widget}/WidgetsEditModal.tsx (100%) rename src/components/{Dashboard/Tiles/Widgets => Board/Items/Widget}/WidgetsMenu.tsx (82%) rename src/components/Board/{item => Items}/context.tsx (100%) rename src/components/Board/{ => Items}/item-actions.tsx (100%) rename src/components/Board/Sections/{ => Category}/CategorySection.tsx (88%) rename src/components/{Dashboard/Wrappers/WrapperContent.tsx => Board/Sections/SectionContent.tsx} (53%) rename src/components/{Dashboard/Mobile/Ribbon => Board/Sections/Sidebar/MobileRibbon}/MobileRibbon.tsx (100%) rename src/components/{Dashboard/Mobile/Ribbon => Board/Sections/Sidebar/MobileRibbon}/MobileRibbonSidebarDrawer.tsx (87%) create mode 100644 src/components/Board/Sections/Sidebar/SidebarSection.tsx rename src/components/{Dashboard/Modals/SelectElement/Components => Board/SelectElement}/Overview/AvailableElementsOverview.tsx (100%) rename src/components/{Dashboard/Modals => Board}/SelectElement/SelectElementModal.tsx (75%) rename src/components/{Dashboard/Modals/SelectElement/Components => Board/SelectElement}/Shared/GenericElementType.tsx (100%) rename src/components/{Dashboard/Modals/SelectElement/Components => Board/SelectElement}/Shared/SelectorBackArrow.tsx (100%) rename src/components/{Dashboard/Modals/SelectElement/Components => Board/SelectElement}/Shared/styles.tsx (100%) rename src/components/{Dashboard/Modals/SelectElement/Components => Board/SelectElement}/StaticElementsTab/AvailableStaticElementsTab.tsx (100%) rename src/components/{Dashboard/Modals/SelectElement/Components => Board/SelectElement}/WidgetsTab/AvailableWidgetsTab.tsx (94%) rename src/components/{Dashboard/Modals/SelectElement/Components => Board/SelectElement}/WidgetsTab/WidgetElementType.tsx (97%) rename src/components/{Dashboard/Wrappers => Board}/gridstack/init-gridstack.ts (100%) rename src/components/{Dashboard/Wrappers => Board}/gridstack/store.tsx (100%) rename src/components/{Dashboard/Wrappers => Board}/gridstack/use-gridstack.ts (97%) rename src/components/{Dashboard/Views => Board}/useEditModeStore.ts (100%) delete mode 100644 src/components/Dashboard/Dashboard.tsx delete mode 100644 src/components/Dashboard/Modals/EditAppModal/Tabs/type.ts delete mode 100644 src/components/Dashboard/Tiles/Apps/AppIcon.tsx delete mode 100644 src/components/Dashboard/Tiles/EmptyTile.tsx delete mode 100644 src/components/Dashboard/Tiles/type.ts delete mode 100644 src/components/Dashboard/Wrappers/Sidebar/Sidebar.tsx diff --git a/src/components/Board/Board.tsx b/src/components/Board/Board.tsx new file mode 100644 index 000000000..76e7731a7 --- /dev/null +++ b/src/components/Board/Board.tsx @@ -0,0 +1,11 @@ +import { BoardView } from './BoardView'; +import { MobileRibbons } from './Sections/Sidebar/MobileRibbon/MobileRibbon'; + +export const Board = () => { + return ( + <> + + + + ); +}; diff --git a/src/components/Dashboard/Views/DashboardView.tsx b/src/components/Board/BoardView.tsx similarity index 89% rename from src/components/Dashboard/Views/DashboardView.tsx rename to src/components/Board/BoardView.tsx index 93e161949..2c3c4c891 100644 --- a/src/components/Dashboard/Views/DashboardView.tsx +++ b/src/components/Board/BoardView.tsx @@ -10,10 +10,10 @@ import { import { useResize } from '~/hooks/use-resize'; import { useScreenLargerThan } from '~/hooks/useScreenLargerThan'; -import { BoardCategorySection } from '../../Board/Sections/CategorySection'; -import { BoardEmptySection } from '../../Board/Sections/EmptySection'; -import { DashboardSidebar } from '../Wrappers/Sidebar/Sidebar'; -import { useGridstackStore } from '../Wrappers/gridstack/store'; +import { BoardCategorySection } from './Sections/Category/CategorySection'; +import { BoardEmptySection } from './Sections/EmptySection'; +import { DashboardSidebar } from './Sections/Sidebar/SidebarSection'; +import { useGridstackStore } from './gridstack/store'; export const BoardView = () => { const boardName = useRequiredBoard().name; @@ -43,6 +43,7 @@ export const BoardView = () => { visible={!isReady} transitionDuration={500} loaderProps={{ size: 'lg', variant: 'bars' }} + h="calc(100dvh - var(--mantine-header-height))" /> { style={{ visibility: isReady ? 'visible' : 'hidden' }} > {sidebarsVisible.left && leftSidebarSection ? ( - + ) : null} @@ -70,7 +71,7 @@ export const BoardView = () => { {sidebarsVisible.right && rightSidebarSection ? ( - + ) : null} diff --git a/src/components/Dashboard/Tiles/Apps/AppTile.tsx b/src/components/Board/Items/App/AppItem.tsx similarity index 85% rename from src/components/Dashboard/Tiles/Apps/AppTile.tsx rename to src/components/Board/Items/App/AppItem.tsx index 7253aee61..0cb5a3085 100644 --- a/src/components/Dashboard/Tiles/Apps/AppTile.tsx +++ b/src/components/Board/Items/App/AppItem.tsx @@ -4,14 +4,14 @@ import { motion } from 'framer-motion'; import Link from 'next/link'; import { AppItem } from '~/components/Board/context'; -import { useEditModeStore } from '../../Views/useEditModeStore'; -import { HomarrCardWrapper } from '../HomarrCardWrapper'; -import { BaseTileProps } from '../type'; +import { useEditModeStore } from '../../useEditModeStore'; +import { ItemWrapper } from '../ItemWrapper'; import { AppMenu } from './AppMenu'; import { AppPing } from './AppPing'; -interface AppTileProps extends BaseTileProps { +interface AppTileProps { app: AppItem; + className?: string; } const namePositions = { @@ -21,7 +21,7 @@ const namePositions = { bottom: 'column-reverse', }; -export const AppTile = ({ className, app }: AppTileProps) => { +export const BoardAppItem = ({ className, app }: AppTileProps) => { const isEditMode = useEditModeStore((x) => x.enabled); const { cx, classes } = useStyles(); const { colorScheme } = useMantineTheme(); @@ -81,7 +81,7 @@ export const AppTile = ({ className, app }: AppTileProps) => { const url = app.externalUrl ? app.externalUrl : app.internalUrl; return ( - + {!url || isEditMode ? ( { )} - + ); }; -const useStyles = createStyles((theme, _params, getRef) => ({ +const useStyles = createStyles(() => ({ base: { display: 'flex', alignItems: 'center', @@ -133,11 +133,3 @@ const useStyles = createStyles((theme, _params, getRef) => ({ gap: 4, }, })); - -export const appTileDefinition = { - component: AppTile, - minWidth: 1, - minHeight: 1, - maxWidth: 12, - maxHeight: 12, -}; diff --git a/src/components/Dashboard/Tiles/Apps/AppMenu.tsx b/src/components/Board/Items/App/AppMenu.tsx similarity index 93% rename from src/components/Dashboard/Tiles/Apps/AppMenu.tsx rename to src/components/Board/Items/App/AppMenu.tsx index 580ab9552..b84b0bb15 100644 --- a/src/components/Dashboard/Tiles/Apps/AppMenu.tsx +++ b/src/components/Board/Items/App/AppMenu.tsx @@ -1,9 +1,9 @@ +import { openRemoveItemModal, useItemActions } from '~/components/Board/Items/item-actions'; import { type AppItem, useRequiredBoard } from '~/components/Board/context'; import { useResizeGridItem } from '~/components/Board/gridstack/useResizeGridItem'; -import { openRemoveItemModal, useItemActions } from '~/components/Board/item-actions'; import { openContextModalGeneric } from '~/tools/mantineModalManagerExtensions'; -import { GenericTileMenu } from '../GenericTileMenu'; +import { CommonItemMenu } from '../CommonItemMenu'; interface TileMenuProps { app: AppItem; @@ -58,7 +58,7 @@ export const AppMenu = ({ app }: TileMenuProps) => { }; return ( - AppType>; @@ -51,7 +51,7 @@ export const GeneralTab = ({ form, openTab }: GeneralTabProps) => { {t('behaviour.customProtocolWarning')} - )} + )} ); diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/GenericSecretInput.tsx b/src/components/Board/Items/App/Edit/IntegrationTab/InputElements/GenericSecretInput.tsx similarity index 100% rename from src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/GenericSecretInput.tsx rename to src/components/Board/Items/App/Edit/IntegrationTab/InputElements/GenericSecretInput.tsx diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/IntegrationSelector.tsx b/src/components/Board/Items/App/Edit/IntegrationTab/InputElements/IntegrationSelector.tsx similarity index 100% rename from src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/IntegrationSelector.tsx rename to src/components/Board/Items/App/Edit/IntegrationTab/InputElements/IntegrationSelector.tsx diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx b/src/components/Board/Items/App/Edit/IntegrationTab/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx similarity index 100% rename from src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx rename to src/components/Board/Items/App/Edit/IntegrationTab/IntegrationOptionsRenderer/IntegrationOptionsRenderer.tsx diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx b/src/components/Board/Items/App/Edit/IntegrationTab/IntegrationTab.tsx similarity index 85% rename from src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx rename to src/components/Board/Items/App/Edit/IntegrationTab/IntegrationTab.tsx index 5b7fa5bd1..188ad9a9f 100644 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/IntegrationTab.tsx +++ b/src/components/Board/Items/App/Edit/IntegrationTab/IntegrationTab.tsx @@ -2,10 +2,10 @@ import { Alert, Divider, Tabs, Text } from '@mantine/core'; import { UseFormReturnType } from '@mantine/form'; import { IconAlertTriangle } from '@tabler/icons-react'; import { Trans, useTranslation } from 'next-i18next'; - import { AppType } from '~/types/app'; -import { IntegrationSelector } from './Components/InputElements/IntegrationSelector'; -import { IntegrationOptionsRenderer } from './Components/IntegrationOptionsRenderer/IntegrationOptionsRenderer'; + +import { IntegrationSelector } from './InputElements/IntegrationSelector'; +import { IntegrationOptionsRenderer } from './IntegrationOptionsRenderer/IntegrationOptionsRenderer'; interface IntegrationTabProps { form: UseFormReturnType AppType>; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx b/src/components/Board/Items/App/Edit/NetworkTab.tsx similarity index 100% rename from src/components/Dashboard/Modals/EditAppModal/Tabs/NetworkTab/NetworkTab.tsx rename to src/components/Board/Items/App/Edit/NetworkTab.tsx diff --git a/src/components/Dashboard/Modals/EditAppModal/EditAppModal.tsx b/src/components/Board/Items/App/EditAppModal.tsx similarity index 94% rename from src/components/Dashboard/Modals/EditAppModal/EditAppModal.tsx rename to src/components/Board/Items/App/EditAppModal.tsx index c447115d6..fc608564d 100644 --- a/src/components/Dashboard/Modals/EditAppModal/EditAppModal.tsx +++ b/src/components/Board/Items/App/EditAppModal.tsx @@ -12,18 +12,17 @@ import { } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; - import { useConfigContext } from '~/config/provider'; import { useConfigStore } from '~/config/store'; import { AppType } from '~/types/app'; + import { DebouncedImage } from '../../../IconSelector/DebouncedImage'; -import { useEditModeStore } from '../../Views/useEditModeStore'; -import { AppearanceTab } from './Tabs/AppereanceTab/AppereanceTab'; -import { BehaviourTab } from './Tabs/BehaviourTab/BehaviourTab'; -import { GeneralTab } from './Tabs/GeneralTab/GeneralTab'; -import { IntegrationTab } from './Tabs/IntegrationTab/IntegrationTab'; -import { NetworkTab } from './Tabs/NetworkTab/NetworkTab'; -import { EditAppModalTab } from './Tabs/type'; +import { useEditModeStore } from '../../useEditModeStore'; +import { AppearanceTab } from './Edit/AppereanceTab'; +import { BehaviourTab } from './Edit/BehaviourTab'; +import { GeneralTab } from './Edit/GeneralTab'; +import { IntegrationTab } from './Edit/IntegrationTab/IntegrationTab'; +import { NetworkTab } from './Edit/NetworkTab'; const appUrlRegex = '(https?://(?:www.|(?!www))\\[?[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\]?.[^\\s]{2,}|www.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9].[^\\s]{2,}|https?://(?:www.|(?!www))\\[?[a-zA-Z0-9]+\\]?.[^\\s]{2,}|www.[a-zA-Z0-9]+.[^\\s]{2,})'; @@ -240,3 +239,5 @@ const SaveButton = ({ formIsValid }: { formIsValid: boolean }) => { ); }; + +export type EditAppModalTab = 'general' | 'behaviour' | 'network' | 'appereance' | 'integration'; diff --git a/src/components/Dashboard/Modals/ChangePosition/ChangePositionModal.tsx b/src/components/Board/Items/CommonChangePositionModal.tsx similarity index 96% rename from src/components/Dashboard/Modals/ChangePosition/ChangePositionModal.tsx rename to src/components/Board/Items/CommonChangePositionModal.tsx index c559df621..f6168f85b 100644 --- a/src/components/Dashboard/Modals/ChangePosition/ChangePositionModal.tsx +++ b/src/components/Board/Items/CommonChangePositionModal.tsx @@ -2,7 +2,7 @@ import { Button, Flex, Grid, NumberInput, Select, SelectItem } from '@mantine/co import { useForm } from '@mantine/form'; import { useTranslation } from 'next-i18next'; -interface ChangePositionModalProps { +interface CommonChangePositionModalProps { initialX?: number; initialY?: number; initialWidth?: number; @@ -13,7 +13,7 @@ interface ChangePositionModalProps { onCancel: () => void; } -export const ChangePositionModal = ({ +export const CommonChangePositionModal = ({ initialX, initialY, initialWidth, @@ -22,7 +22,7 @@ export const ChangePositionModal = ({ heightData, onCancel, onSubmit, -}: ChangePositionModalProps) => { +}: CommonChangePositionModalProps) => { const form = useForm({ initialValues: { x: initialX ?? null, diff --git a/src/components/Dashboard/Tiles/GenericTileMenu.tsx b/src/components/Board/Items/CommonItemMenu.tsx similarity index 83% rename from src/components/Dashboard/Tiles/GenericTileMenu.tsx rename to src/components/Board/Items/CommonItemMenu.tsx index 6984b84dc..06b2c6d7b 100644 --- a/src/components/Dashboard/Tiles/GenericTileMenu.tsx +++ b/src/components/Board/Items/CommonItemMenu.tsx @@ -2,24 +2,21 @@ import { ActionIcon, Menu } from '@mantine/core'; import { IconLayoutKanban, IconPencil, IconSettings, IconTrash } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; -import { useColorTheme } from '~/tools/color'; -import { useEditModeStore } from '../Views/useEditModeStore'; +import { useEditModeStore } from '../useEditModeStore'; -interface GenericTileMenuProps { +interface CommonItemMenuProps { handleClickEdit: () => void; handleClickChangePosition: () => void; handleClickDelete: () => void; displayEdit: boolean; } -export const GenericTileMenu = ( - { - handleClickEdit, - handleClickChangePosition, - handleClickDelete, - displayEdit, - }: GenericTileMenuProps -) => { +export const CommonItemMenu = ({ + handleClickEdit, + handleClickChangePosition, + handleClickDelete, + displayEdit, +}: CommonItemMenuProps) => { const { t } = useTranslation('common'); const isEditMode = useEditModeStore((x) => x.enabled); diff --git a/src/components/Dashboard/Tiles/TileWrapper.tsx b/src/components/Board/Items/GridstackItemWrapper.tsx similarity index 90% rename from src/components/Dashboard/Tiles/TileWrapper.tsx rename to src/components/Board/Items/GridstackItemWrapper.tsx index 9c81c2c1d..5922e517e 100644 --- a/src/components/Dashboard/Tiles/TileWrapper.tsx +++ b/src/components/Board/Items/GridstackItemWrapper.tsx @@ -1,9 +1,9 @@ /* eslint-disable react/no-unknown-property */ import { GridItemHTMLElement } from 'fily-publish-gridstack'; import { ReactNode, RefObject } from 'react'; -import { GridItemProvider } from '~/components/Board/item/context'; +import { GridItemProvider } from '~/components/Board/Items/context'; -interface GridstackTileWrapperProps { +interface GridstackItemWrapperProps { id: string; type: 'app' | 'widget'; x?: number; @@ -18,7 +18,7 @@ interface GridstackTileWrapperProps { children: ReactNode; } -export const GridstackTileWrapper = ({ +export const GridstackItemWrapper = ({ id, type, x, @@ -31,7 +31,7 @@ export const GridstackTileWrapper = ({ maxHeight, children, itemRef, -}: GridstackTileWrapperProps) => { +}: GridstackItemWrapperProps) => { const locationProperties = useLocationProperties(x, y); const normalizedWidth = width ?? minWidth; const normalizedHeight = height ?? minHeight; diff --git a/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx b/src/components/Board/Items/ItemWrapper.tsx similarity index 63% rename from src/components/Dashboard/Tiles/HomarrCardWrapper.tsx rename to src/components/Board/Items/ItemWrapper.tsx index 89b456c23..76a6442ed 100644 --- a/src/components/Dashboard/Tiles/HomarrCardWrapper.tsx +++ b/src/components/Board/Items/ItemWrapper.tsx @@ -2,19 +2,17 @@ import { Card, CardProps } from '@mantine/core'; import { ReactNode } from 'react'; import { useCardStyles } from '../../layout/Common/useCardStyles'; -import { useEditModeStore } from '../Views/useEditModeStore'; +import { useEditModeStore } from '../useEditModeStore'; -interface HomarrCardWrapperProps extends CardProps { +interface ItemWrapperProps extends CardProps { children: ReactNode; - isCategory?: boolean; } -export const HomarrCardWrapper = ({ ...props }: HomarrCardWrapperProps) => { - const { isCategory = false, ...restProps } = props; +export const ItemWrapper = ({ ...restProps }: ItemWrapperProps) => { const { cx, classes: { card: cardClass }, - } = useCardStyles(isCategory); + } = useCardStyles(false); const isEditMode = useEditModeStore((x) => x.enabled); return ( { - const { t } = useTranslation(`modules/${type}`); +export const WidgetsMenu = ({ widget }: WidgetsMenuProps) => { + const { t } = useTranslation(`modules/${widget.sort}`); const board = useRequiredBoard(); const wrapperColumnCount = useWrapperColumnCount(); const resizeGridItem = useResizeGridItem(); @@ -58,7 +57,7 @@ export const WidgetsMenu = ({ type, widget }: WidgetsMenuProps) => { title: {t('descriptor.settings.title')}, innerProps: { widgetId: widget.id, - widgetType: type, + widgetType: widget.sort, options: widget.options, boardName: board.name, widgetOptions: widgetDefinitionObject.options, @@ -68,7 +67,7 @@ export const WidgetsMenu = ({ type, widget }: WidgetsMenuProps) => { }; return ( - - + diff --git a/src/components/Board/Sections/EmptySection.tsx b/src/components/Board/Sections/EmptySection.tsx index 4eb96a363..6c3a7329a 100644 --- a/src/components/Board/Sections/EmptySection.tsx +++ b/src/components/Board/Sections/EmptySection.tsx @@ -1,9 +1,9 @@ import { EmptySection } from '~/components/Board/context'; import { GridstackProvider } from '~/components/Board/gridstack/context'; -import { useEditModeStore } from '../../Dashboard/Views/useEditModeStore'; -import { WrapperContent } from '../../Dashboard/Wrappers/WrapperContent'; -import { useGridstack } from '../../Dashboard/Wrappers/gridstack/use-gridstack'; +import { useGridstack } from '../gridstack/use-gridstack'; +import { useEditModeStore } from '../useEditModeStore'; +import { SectionContent } from './SectionContent'; interface EmptySectionWrapperProps { section: EmptySection; @@ -28,7 +28,7 @@ export const BoardEmptySection = ({ section }: EmptySectionWrapperProps) => { ref={refs.wrapper} > {section.items.length === 0 && } - + ); diff --git a/src/components/Dashboard/Wrappers/WrapperContent.tsx b/src/components/Board/Sections/SectionContent.tsx similarity index 53% rename from src/components/Dashboard/Wrappers/WrapperContent.tsx rename to src/components/Board/Sections/SectionContent.tsx index 1c800cb3d..9f09e9f70 100644 --- a/src/components/Dashboard/Wrappers/WrapperContent.tsx +++ b/src/components/Board/Sections/SectionContent.tsx @@ -1,16 +1,13 @@ -import { GridItemHTMLElement, GridStack } from 'fily-publish-gridstack'; +import { GridItemHTMLElement } from 'fily-publish-gridstack'; import { MutableRefObject, RefObject, useMemo } from 'react'; import { AppItem, Item, WidgetItem } from '~/components/Board/context'; -import { AppType } from '~/types/app'; import { WidgetWrapper } from '~/widgets/WidgetWrapper'; -import { IWidget, IWidgetDefinition } from '~/widgets/widgets'; import Widgets from '../../../widgets'; -import { appTileDefinition } from '../Tiles/Apps/AppTile'; -import { GridstackTileWrapper } from '../Tiles/TileWrapper'; -import { useGridstackStore } from './gridstack/store'; +import { BoardAppItem } from '../Items/App/AppItem'; +import { GridstackItemWrapper } from '../Items/GridstackItemWrapper'; -interface WrapperContentProps { +interface SectionContentProps { items: Item[]; refs: { wrapper: RefObject; @@ -18,36 +15,36 @@ interface WrapperContentProps { }; } -export function WrapperContent({ items, refs }: WrapperContentProps) { +export function SectionContent({ items, refs }: SectionContentProps) { const apps = useMemo(() => items.filter((x): x is AppItem => x.type === 'app'), [items]); const widgets = useMemo(() => items.filter((x): x is WidgetItem => x.type === 'widget'), [items]); return ( <> - {apps?.map((app) => { - const { component: TileComponent, ...tile } = appTileDefinition; - return ( - - - - ); - })} + {apps?.map((app) => ( + + + + ))} {widgets.map((widget) => { const definition = Widgets[widget.sort]; if (!definition) return null; return ( - - + ); })} diff --git a/src/components/Dashboard/Mobile/Ribbon/MobileRibbon.tsx b/src/components/Board/Sections/Sidebar/MobileRibbon/MobileRibbon.tsx similarity index 100% rename from src/components/Dashboard/Mobile/Ribbon/MobileRibbon.tsx rename to src/components/Board/Sections/Sidebar/MobileRibbon/MobileRibbon.tsx diff --git a/src/components/Dashboard/Mobile/Ribbon/MobileRibbonSidebarDrawer.tsx b/src/components/Board/Sections/Sidebar/MobileRibbon/MobileRibbonSidebarDrawer.tsx similarity index 87% rename from src/components/Dashboard/Mobile/Ribbon/MobileRibbonSidebarDrawer.tsx rename to src/components/Board/Sections/Sidebar/MobileRibbon/MobileRibbonSidebarDrawer.tsx index c1c934140..17a8f9a24 100644 --- a/src/components/Dashboard/Mobile/Ribbon/MobileRibbonSidebarDrawer.tsx +++ b/src/components/Board/Sections/Sidebar/MobileRibbon/MobileRibbonSidebarDrawer.tsx @@ -2,7 +2,7 @@ import { Drawer, Title } from '@mantine/core'; import { useTranslation } from 'next-i18next'; import { SidebarSection } from '~/components/Board/context'; -import { DashboardSidebar } from '../../Wrappers/Sidebar/Sidebar'; +import { DashboardSidebar } from '../SidebarSection'; interface MobileRibbonSidebarDrawerProps { onClose: () => void; @@ -32,7 +32,7 @@ export const MobileRibbonSidebarDrawer = ({ transitionProps={{ transition: `slide-${section.position === 'right' ? 'left' : 'right'}` }} {...props} > - + ); }; diff --git a/src/components/Board/Sections/Sidebar/SidebarSection.tsx b/src/components/Board/Sections/Sidebar/SidebarSection.tsx new file mode 100644 index 000000000..7fe7cbda1 --- /dev/null +++ b/src/components/Board/Sections/Sidebar/SidebarSection.tsx @@ -0,0 +1,46 @@ +import { Card } from '@mantine/core'; +import { RefObject } from 'react'; +import { SidebarSection } from '~/components/Board/context'; + +import { useCardStyles } from '../../../layout/Common/useCardStyles'; +import { useGridstack } from '../../gridstack/use-gridstack'; +import { SectionContent } from '../SectionContent'; + +interface DashboardSidebarProps extends DashboardSidebarInnerProps { + section: SidebarSection; +} +// TODO: Move mobile ribons in this directory too! +export const DashboardSidebar = ({ section }: DashboardSidebarProps) => { + const { + classes: { card: cardClass }, + } = useCardStyles(true); + const { refs } = useGridstack({ section }); + + const minRow = useMinRowForFullHeight(refs.wrapper); + + return ( + +
+ +
{' '} +
+ ); +}; + +interface DashboardSidebarInnerProps { + section: SidebarSection; +} + +const useMinRowForFullHeight = (wrapperRef: RefObject) => + wrapperRef.current ? Math.floor(wrapperRef.current!.offsetHeight / 128) : 2; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx b/src/components/Board/SelectElement/Overview/AvailableElementsOverview.tsx similarity index 100% rename from src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx rename to src/components/Board/SelectElement/Overview/AvailableElementsOverview.tsx diff --git a/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx b/src/components/Board/SelectElement/SelectElementModal.tsx similarity index 75% rename from src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx rename to src/components/Board/SelectElement/SelectElementModal.tsx index fca0a4eed..ca0852663 100644 --- a/src/components/Dashboard/Modals/SelectElement/SelectElementModal.tsx +++ b/src/components/Board/SelectElement/SelectElementModal.tsx @@ -1,9 +1,9 @@ import { ContextModalProps } from '@mantine/modals'; import { useState } from 'react'; -import { AvailableElementTypes } from './Components/Overview/AvailableElementsOverview'; -import { AvailableStaticTypes } from './Components/StaticElementsTab/AvailableStaticElementsTab'; -import { AvailableIntegrationElements } from './Components/WidgetsTab/AvailableWidgetsTab'; +import { AvailableElementTypes } from './Overview/AvailableElementsOverview'; +import { AvailableStaticTypes } from './StaticElementsTab/AvailableStaticElementsTab'; +import { AvailableIntegrationElements } from './WidgetsTab/AvailableWidgetsTab'; export const SelectElementModal = ({ context, id }: ContextModalProps) => { const [activeTab, setActiveTab] = useState(); diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx b/src/components/Board/SelectElement/Shared/GenericElementType.tsx similarity index 100% rename from src/components/Dashboard/Modals/SelectElement/Components/Shared/GenericElementType.tsx rename to src/components/Board/SelectElement/Shared/GenericElementType.tsx diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Shared/SelectorBackArrow.tsx b/src/components/Board/SelectElement/Shared/SelectorBackArrow.tsx similarity index 100% rename from src/components/Dashboard/Modals/SelectElement/Components/Shared/SelectorBackArrow.tsx rename to src/components/Board/SelectElement/Shared/SelectorBackArrow.tsx diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Shared/styles.tsx b/src/components/Board/SelectElement/Shared/styles.tsx similarity index 100% rename from src/components/Dashboard/Modals/SelectElement/Components/Shared/styles.tsx rename to src/components/Board/SelectElement/Shared/styles.tsx diff --git a/src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx b/src/components/Board/SelectElement/StaticElementsTab/AvailableStaticElementsTab.tsx similarity index 100% rename from src/components/Dashboard/Modals/SelectElement/Components/StaticElementsTab/AvailableStaticElementsTab.tsx rename to src/components/Board/SelectElement/StaticElementsTab/AvailableStaticElementsTab.tsx diff --git a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx b/src/components/Board/SelectElement/WidgetsTab/AvailableWidgetsTab.tsx similarity index 94% rename from src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx rename to src/components/Board/SelectElement/WidgetsTab/AvailableWidgetsTab.tsx index d013567a3..d1de06477 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/AvailableWidgetsTab.tsx +++ b/src/components/Board/SelectElement/WidgetsTab/AvailableWidgetsTab.tsx @@ -1,7 +1,7 @@ import { Grid, Text } from '@mantine/core'; import { useTranslation } from 'next-i18next'; -import widgets from '../../../../../../widgets'; +import widgets from '../../../../widgets'; import { SelectorBackArrow } from '../Shared/SelectorBackArrow'; import { WidgetElementType } from './WidgetElementType'; diff --git a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx b/src/components/Board/SelectElement/WidgetsTab/WidgetElementType.tsx similarity index 97% rename from src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx rename to src/components/Board/SelectElement/WidgetsTab/WidgetElementType.tsx index 6a783ba12..8dac04029 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/WidgetsTab/WidgetElementType.tsx +++ b/src/components/Board/SelectElement/WidgetsTab/WidgetElementType.tsx @@ -3,11 +3,11 @@ import { showNotification } from '@mantine/notifications'; import { Icon, IconChecks } from '@tabler/icons-react'; import { useTranslation } from 'next-i18next'; import { v4 as uuidv4 } from 'uuid'; - import { useConfigContext } from '~/config/provider'; import { useConfigStore } from '~/config/store'; import { IWidget, IWidgetDefinition } from '~/widgets/widgets'; -import { useEditModeStore } from '../../../../Views/useEditModeStore'; + +import { useEditModeStore } from '../../useEditModeStore'; import { GenericAvailableElementType } from '../Shared/GenericElementType'; interface WidgetElementTypeProps { diff --git a/src/components/Dashboard/Wrappers/gridstack/init-gridstack.ts b/src/components/Board/gridstack/init-gridstack.ts similarity index 100% rename from src/components/Dashboard/Wrappers/gridstack/init-gridstack.ts rename to src/components/Board/gridstack/init-gridstack.ts diff --git a/src/components/Dashboard/Wrappers/gridstack/store.tsx b/src/components/Board/gridstack/store.tsx similarity index 100% rename from src/components/Dashboard/Wrappers/gridstack/store.tsx rename to src/components/Board/gridstack/store.tsx diff --git a/src/components/Dashboard/Wrappers/gridstack/use-gridstack.ts b/src/components/Board/gridstack/use-gridstack.ts similarity index 97% rename from src/components/Dashboard/Wrappers/gridstack/use-gridstack.ts rename to src/components/Board/gridstack/use-gridstack.ts index ed1ced9be..0f6a9278d 100644 --- a/src/components/Dashboard/Wrappers/gridstack/use-gridstack.ts +++ b/src/components/Board/gridstack/use-gridstack.ts @@ -7,10 +7,10 @@ import { useMemo, useRef, } from 'react'; +import { useItemActions } from '~/components/Board/Items/item-actions'; import { type Section, useRequiredBoard } from '~/components/Board/context'; -import { useItemActions } from '~/components/Board/item-actions'; -import { useEditModeStore } from '../../Views/useEditModeStore'; +import { useEditModeStore } from '../useEditModeStore'; import { initializeGridstack } from './init-gridstack'; import { useGridstackStore, useWrapperColumnCount } from './store'; diff --git a/src/components/Board/gridstack/useResizeGridItem.ts b/src/components/Board/gridstack/useResizeGridItem.ts index 55421273c..78d5e0de4 100644 --- a/src/components/Board/gridstack/useResizeGridItem.ts +++ b/src/components/Board/gridstack/useResizeGridItem.ts @@ -1,4 +1,4 @@ -import { useGridItemRef } from '../item/context'; +import { useGridItemRef } from '../Items/context'; import { useGridstackRef } from './context'; type ResizeGridItemProps = { diff --git a/src/components/Dashboard/Views/useEditModeStore.ts b/src/components/Board/useEditModeStore.ts similarity index 100% rename from src/components/Dashboard/Views/useEditModeStore.ts rename to src/components/Board/useEditModeStore.ts diff --git a/src/components/Dashboard/Dashboard.tsx b/src/components/Dashboard/Dashboard.tsx deleted file mode 100644 index 273959309..000000000 --- a/src/components/Dashboard/Dashboard.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { MobileRibbons } from './Mobile/Ribbon/MobileRibbon'; -import { BoardView } from './Views/DashboardView'; - -export const Board = () => { - return ( - <> - {/* The following elemens are splitted because gridstack doesn't reinitialize them when using same item. */} - - - - ); -}; diff --git a/src/components/Dashboard/Modals/EditAppModal/Tabs/type.ts b/src/components/Dashboard/Modals/EditAppModal/Tabs/type.ts deleted file mode 100644 index a67947134..000000000 --- a/src/components/Dashboard/Modals/EditAppModal/Tabs/type.ts +++ /dev/null @@ -1 +0,0 @@ -export type EditAppModalTab = 'general' | 'behaviour' | 'network' | 'appereance' | 'integration'; diff --git a/src/components/Dashboard/Tiles/Apps/AppIcon.tsx b/src/components/Dashboard/Tiles/Apps/AppIcon.tsx deleted file mode 100644 index 9775b9849..000000000 --- a/src/components/Dashboard/Tiles/Apps/AppIcon.tsx +++ /dev/null @@ -1,5 +0,0 @@ -interface ServiceIconProps { - size: '100%' | number; -} - -export const AppIcon = ({ size }: ServiceIconProps) => null; diff --git a/src/components/Dashboard/Tiles/EmptyTile.tsx b/src/components/Dashboard/Tiles/EmptyTile.tsx deleted file mode 100644 index 9fdb26db7..000000000 --- a/src/components/Dashboard/Tiles/EmptyTile.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { HomarrCardWrapper } from './HomarrCardWrapper'; -import { BaseTileProps } from './type'; - -export const EmptyTile = ({ className }: BaseTileProps) => ( - Empty -); diff --git a/src/components/Dashboard/Tiles/type.ts b/src/components/Dashboard/Tiles/type.ts deleted file mode 100644 index e5e860af9..000000000 --- a/src/components/Dashboard/Tiles/type.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface BaseTileProps { - className?: string; -} diff --git a/src/components/Dashboard/Wrappers/Sidebar/Sidebar.tsx b/src/components/Dashboard/Wrappers/Sidebar/Sidebar.tsx deleted file mode 100644 index 968398196..000000000 --- a/src/components/Dashboard/Wrappers/Sidebar/Sidebar.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { Card } from '@mantine/core'; -import { RefObject } from 'react'; -import { SidebarSection } from '~/components/Board/context'; - -import { useCardStyles } from '../../../layout/Common/useCardStyles'; -import { WrapperContent } from '../WrapperContent'; -import { useGridstack } from '../gridstack/use-gridstack'; - -interface DashboardSidebarProps extends DashboardSidebarInnerProps { - section: SidebarSection; - isGridstackReady: boolean; -} - -export const DashboardSidebar = ({ section, isGridstackReady }: DashboardSidebarProps) => { - const { - cx, - classes: { card: cardClass }, - } = useCardStyles(true); - - return ( - - {isGridstackReady && } - - ); -}; - -interface DashboardSidebarInnerProps { - section: SidebarSection; -} - -// Is Required because of the gridstack main area width. -const SidebarInner = ({ section }: DashboardSidebarInnerProps) => { - const { refs } = useGridstack({ section }); - - const minRow = useMinRowForFullHeight(refs.wrapper); - - return ( -
- -
- ); -}; - -const useMinRowForFullHeight = (wrapperRef: RefObject) => - wrapperRef.current ? Math.floor(wrapperRef.current!.offsetHeight / 128) : 2; diff --git a/src/components/layout/Templates/BoardLayout.tsx b/src/components/layout/Templates/BoardLayout.tsx index a87899856..5e4641d8d 100644 --- a/src/components/layout/Templates/BoardLayout.tsx +++ b/src/components/layout/Templates/BoardLayout.tsx @@ -15,8 +15,8 @@ import { Trans, useTranslation } from 'next-i18next'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { useRequiredBoard } from '~/components/Board/context'; -import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore'; -import { useNamedWrapperColumnCount } from '~/components/Dashboard/Wrappers/gridstack/store'; +import { useNamedWrapperColumnCount } from '~/components/Board/gridstack/store'; +import { useEditModeStore } from '~/components/Board/useEditModeStore'; import { BoardHeadOverride } from '~/components/layout/Meta/BoardHeadOverride'; import { HeaderActionButton } from '~/components/layout/header/ActionButton'; import { api } from '~/utils/api'; diff --git a/src/components/layout/header/Search/MovieModal.tsx b/src/components/layout/header/Search/MovieModal.tsx index 2b043dd67..0dbfca6b0 100644 --- a/src/components/layout/header/Search/MovieModal.tsx +++ b/src/components/layout/header/Search/MovieModal.tsx @@ -20,7 +20,7 @@ import Image from 'next/image'; import { useRouter } from 'next/router'; import React, { useMemo } from 'react'; import { z } from 'zod'; -import { availableIntegrations } from '~/components/Dashboard/Modals/EditAppModal/Tabs/IntegrationTab/Components/InputElements/IntegrationSelector'; +import { availableIntegrations } from '~/components/Board/Items/App/Edit/IntegrationTab/InputElements/IntegrationSelector'; import { useConfigContext } from '~/config/provider'; import { RequestModal } from '~/modules/overseerr/RequestModal'; import { RouterOutputs, api } from '~/utils/api'; diff --git a/src/modals.ts b/src/modals.ts index df1e58f87..7e3c893e2 100644 --- a/src/modals.ts +++ b/src/modals.ts @@ -1,9 +1,9 @@ +import { ChangeAppPositionModal } from '~/components/Board/Items/App/ChangeAppPositionModal'; +import { EditAppModal } from '~/components/Board/Items/App/EditAppModal'; +import { ChangeWidgetPositionModal } from '~/components/Board/Items/Widget/ChangeWidgetPositionModal'; +import { WidgetsEditModal } from '~/components/Board/Items/Widget/WidgetsEditModal'; import { CategoryEditModal } from '~/components/Board/Sections/Category/CategoryEditModal'; -import { ChangeAppPositionModal } from '~/components/Dashboard/Modals/ChangePosition/ChangeAppPositionModal'; -import { ChangeWidgetPositionModal } from '~/components/Dashboard/Modals/ChangePosition/ChangeWidgetPositionModal'; -import { EditAppModal } from '~/components/Dashboard/Modals/EditAppModal/EditAppModal'; -import { SelectElementModal } from '~/components/Dashboard/Modals/SelectElement/SelectElementModal'; -import { WidgetsEditModal } from '~/components/Dashboard/Tiles/Widgets/WidgetsEditModal'; +import { SelectElementModal } from '~/components/Board/SelectElement/SelectElementModal'; import { CreateBoardModal } from './components/Manage/Board/create-board.modal'; import { DeleteBoardModal } from './components/Manage/Board/delete-board.modal'; diff --git a/src/pages/board/[slug].tsx b/src/pages/board/[slug].tsx index 40ff9f598..dbb3d5629 100644 --- a/src/pages/board/[slug].tsx +++ b/src/pages/board/[slug].tsx @@ -2,8 +2,8 @@ import { TRPCError } from '@trpc/server'; import { GetServerSideProps, InferGetServerSidePropsType } from 'next'; import { SSRConfig } from 'next-i18next'; import { z } from 'zod'; +import { Board } from '~/components/Board/Board'; import { BoardProvider } from '~/components/Board/context'; -import { Board } from '~/components/Dashboard/Dashboard'; import { BoardLayout } from '~/components/layout/Templates/BoardLayout'; import { env } from '~/env'; import { createTrpcServersideHelpers } from '~/server/api/helper'; diff --git a/src/pages/board/index.tsx b/src/pages/board/index.tsx index 8faf32959..248f15dd5 100644 --- a/src/pages/board/index.tsx +++ b/src/pages/board/index.tsx @@ -1,8 +1,8 @@ import { TRPCError } from '@trpc/server'; import { GetServerSideProps, InferGetServerSidePropsType } from 'next'; import { SSRConfig } from 'next-i18next'; +import { Board } from '~/components/Board/Board'; import { BoardProvider } from '~/components/Board/context'; -import { Board } from '~/components/Dashboard/Dashboard'; import { BoardLayout } from '~/components/layout/Templates/BoardLayout'; import { env } from '~/env'; import { createTrpcServersideHelpers } from '~/server/api/helper'; diff --git a/src/widgets/WidgetWrapper.tsx b/src/widgets/WidgetWrapper.tsx index ddb9c45ef..22c43f5b4 100644 --- a/src/widgets/WidgetWrapper.tsx +++ b/src/widgets/WidgetWrapper.tsx @@ -1,21 +1,19 @@ import { ComponentType } from 'react'; +import { ItemWrapper } from '~/components/Board/Items/ItemWrapper'; +import { WidgetsMenu } from '~/components/Board/Items/Widget/WidgetsMenu'; import { WidgetItem } from '~/components/Board/context'; -import { HomarrCardWrapper } from '~/components/Dashboard/Tiles/HomarrCardWrapper'; -import { WidgetsMenu } from '~/components/Dashboard/Tiles/Widgets/WidgetsMenu'; import Widgets from '.'; import ErrorBoundary from './boundary'; -import { IWidget } from './widgets'; interface WidgetWrapperProps { - widgetType: string; widget: WidgetItem; className: string; WidgetComponent: ComponentType<{ widget: WidgetItem }>; } // If a property has no value, set it to the default value -const useWidget = (widget: T): T => { +const useWidgetWithDefaultOptionValues = (widget: T): T => { const definition = Widgets[widget.sort]; const newProps = { ...widget.options }; @@ -32,20 +30,15 @@ const useWidget = (widget: T): T => { }; }; -export const WidgetWrapper = ({ - widgetType, - widget, - className, - WidgetComponent, -}: WidgetWrapperProps) => { - const widgetWithDefaultProps = useWidget(widget); +export const WidgetWrapper = ({ widget, className, WidgetComponent }: WidgetWrapperProps) => { + const widgetWithDefaultProps = useWidgetWithDefaultOptionValues(widget); return ( - - - + + + - + ); }; diff --git a/src/widgets/bookmark/BookmarkWidgetTile.tsx b/src/widgets/bookmark/BookmarkWidgetTile.tsx index c1e6b7cb5..fa86b5970 100644 --- a/src/widgets/bookmark/BookmarkWidgetTile.tsx +++ b/src/widgets/bookmark/BookmarkWidgetTile.tsx @@ -30,7 +30,7 @@ import { useEffect } from 'react'; import React from 'react'; import { v4 } from 'uuid'; import { z } from 'zod'; -import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore'; +import { useEditModeStore } from '~/components/Board/useEditModeStore'; import { IconSelector } from '~/components/IconSelector/IconSelector'; import { defineWidget } from '../helper'; diff --git a/src/widgets/boundary.tsx b/src/widgets/boundary.tsx index ad0b7da58..4921d238b 100644 --- a/src/widgets/boundary.tsx +++ b/src/widgets/boundary.tsx @@ -4,10 +4,8 @@ import { IconBrandGithub, IconBug, IconInfoCircle, IconRefresh } from '@tabler/i import Consola from 'consola'; import { withTranslation } from 'next-i18next'; import React, { ReactNode } from 'react'; +import { WidgetsMenu } from '~/components/Board/Items/Widget/WidgetsMenu'; import { WidgetItem } from '~/components/Board/context'; -import { WidgetsMenu } from '~/components/Dashboard/Tiles/Widgets/WidgetsMenu'; - -import { IWidget } from './widgets'; type ErrorBoundaryState = { hasError: boolean; @@ -17,7 +15,6 @@ type ErrorBoundaryState = { type ErrorBoundaryProps = { t: (key: string) => string; children: ReactNode; - integration: string; widget: WidgetItem; }; @@ -56,7 +53,7 @@ class ErrorBoundary extends React.Component - +
diff --git a/src/widgets/calendar/CalendarTile.tsx b/src/widgets/calendar/CalendarTile.tsx index e41879776..27499b4e3 100644 --- a/src/widgets/calendar/CalendarTile.tsx +++ b/src/widgets/calendar/CalendarTile.tsx @@ -3,7 +3,7 @@ import { Calendar } from '@mantine/dates'; import { IconCalendarTime } from '@tabler/icons-react'; import { useSession } from 'next-auth/react'; import { useState } from 'react'; -import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore'; +import { useEditModeStore } from '~/components/Board/useEditModeStore'; import { useConfigContext } from '~/config/provider'; import { getLanguageByCode } from '~/tools/language'; import { RouterOutputs, api } from '~/utils/api'; diff --git a/src/widgets/notebook/NotebookEditor.tsx b/src/widgets/notebook/NotebookEditor.tsx index 01d44ef86..a29633625 100644 --- a/src/widgets/notebook/NotebookEditor.tsx +++ b/src/widgets/notebook/NotebookEditor.tsx @@ -6,7 +6,7 @@ import { BubbleMenu, useEditor } from '@tiptap/react'; import StarterKit from '@tiptap/starter-kit'; import { useState } from 'react'; import { useRequiredBoard } from '~/components/Board/context'; -import { useEditModeStore } from '~/components/Dashboard/Views/useEditModeStore'; +import { useEditModeStore } from '~/components/Board/useEditModeStore'; import { useColorTheme } from '~/tools/color'; import { api } from '~/utils/api';