Skip to content

Commit

Permalink
fix(web): styling of model menu (#1211)
Browse files Browse the repository at this point in the history
* fix: title icon

* fix: collapsed styling

* feat: show tooltip

* fix: keep collapsed
  • Loading branch information
caichi-t authored Aug 27, 2024
1 parent f28301f commit e6c5bae
Show file tree
Hide file tree
Showing 12 changed files with 48 additions and 17 deletions.
14 changes: 12 additions & 2 deletions web/src/components/molecules/Model/ModelsList/GroupsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import ReactDragListView from "react-drag-listview";
import Button from "@reearth-cms/components/atoms/Button";
import Icon from "@reearth-cms/components/atoms/Icon";
import Menu, { MenuInfo } from "@reearth-cms/components/atoms/Menu";
import Tooltip from "@reearth-cms/components/atoms/Tooltip";
import { Group } from "@reearth-cms/components/molecules/Schema/types";
import { useT } from "@reearth-cms/i18n";

Expand Down Expand Up @@ -43,7 +44,15 @@ const GroupsList: React.FC<Props> = ({
.map(group => ({
label: (
<div ref={group.id === selectedKey ? scrollToSelected : undefined}>
{collapsed ? <Icon icon="dot" /> : group.name}
{collapsed ? (
<Tooltip placement="right" title={group.name}>
<span>
<Icon icon="dot" />
</span>
</Tooltip>
) : (
group.name
)}
</div>
),
key: group.id,
Expand Down Expand Up @@ -140,7 +149,8 @@ const MenuWrapper = styled.div`

const StyledIcon = styled(Icon)`
border-bottom: 1px solid #f0f0f0;
padding: 12px 20px;
padding: 12px 0;
justify-content: center;
`;

const StyledMenu = styled(Menu)<{ collapsed?: boolean }>`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@ import { ReactNode } from "react";

interface Props {
children: ReactNode;
collapsed: boolean;
}

const ModelListBody: React.FC<Props> = ({ children }) => {
return <Container>{children}</Container>;
const ModelListBody: React.FC<Props> = ({ children, collapsed }) => {
return <Container collapsed={collapsed}>{children}</Container>;
};

export default ModelListBody;

const Container = styled.div`
const Container = styled.div<{ collapsed: boolean }>`
overflow-x: hidden;
overflow-y: auto;
max-height: calc(100% - 70px);
max-height: ${({ collapsed }) => (collapsed ? "calc(100% - 38px)" : "calc(100% - 60px)")};
`;
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ import Icon from "@reearth-cms/components/atoms/Icon";
interface Props {
title: string;
collapsed: boolean;
titleIcon: string;
}

const ModelListHeader: React.FC<Props> = ({ title, collapsed }) => {
const ModelListHeader: React.FC<Props> = ({ title, collapsed, titleIcon }) => {
return (
<>
{collapsed ? (
<StyledIcon icon="unorderedList" />
<StyledIcon icon={titleIcon} />
) : (
<Header>
<SchemaStyledTitle>{title}</SchemaStyledTitle>
Expand Down
14 changes: 12 additions & 2 deletions web/src/components/molecules/Model/ModelsList/ModelsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import ReactDragListView from "react-drag-listview";
import Button from "@reearth-cms/components/atoms/Button";
import Icon from "@reearth-cms/components/atoms/Icon";
import Menu, { MenuInfo } from "@reearth-cms/components/atoms/Menu";
import Tooltip from "@reearth-cms/components/atoms/Tooltip";
import { Model } from "@reearth-cms/components/molecules/Model/types";
import { useT } from "@reearth-cms/i18n";

Expand Down Expand Up @@ -66,7 +67,15 @@ const ModelsList: React.FC<Props> = ({
.map(model => ({
label: (
<div ref={model.id === selectedKey ? scrollToSelected : undefined}>
{collapsed ? <Icon icon="dot" /> : model.name}
{collapsed ? (
<Tooltip placement="right" title={model.name}>
<span>
<Icon icon="dot" />
</span>
</Tooltip>
) : (
model.name
)}
</div>
),
key: model.id,
Expand Down Expand Up @@ -145,7 +154,8 @@ const MenuWrapper = styled.div`

const StyledIcon = styled(Icon)`
border-bottom: 1px solid #f0f0f0;
padding: 12px 20px;
padding: 12px 0;
justify-content: center;
`;

const StyledMenu = styled(Menu)<{ collapsed?: boolean }>`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import {
useIsItemReferencedLazyQuery,
} from "@reearth-cms/gql/graphql-client-api";
import { useT } from "@reearth-cms/i18n";
import { useCollapsedModelMenu } from "@reearth-cms/state";
import { newID } from "@reearth-cms/utils/id";

import { dateConvert } from "./utils";
Expand Down Expand Up @@ -70,7 +71,7 @@ export default () => {
const { data: userData } = useGetMeQuery();

const { itemId } = useParams();
const [collapsedModelMenu, collapseModelMenu] = useState(false);
const [collapsedModelMenu, collapseModelMenu] = useCollapsedModelMenu();
const [collapsedCommentsPanel, collapseCommentsPanel] = useState(true);
const [requestModalShown, setRequestModalShown] = useState(false);
const [searchTerm, setSearchTerm] = useState("");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,8 @@ const ContentDetails: React.FC = () => {
collapsed={collapsedModelMenu}
title={t("Content")}
onModelSelect={handleNavigateToModel}
displayGroups={false}
selectedSchemaType="model"
titleIcon={"table"}
/>
}
onChange={handleAddItemToRequest}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ import {
useGetViewsQuery,
} from "@reearth-cms/gql/graphql-client-api";
import { useT } from "@reearth-cms/i18n";
import { useCollapsedModelMenu } from "@reearth-cms/state";

import { fileName } from "./utils";

Expand Down Expand Up @@ -140,7 +141,7 @@ export default () => {
refetch();
}, [refetch]);

const [collapsedModelMenu, collapseModelMenu] = useState(false);
const [collapsedModelMenu, collapseModelMenu] = useCollapsedModelMenu();
const [collapsedCommentsPanel, collapseCommentsPanel] = useState(true);
const [selectedItemId, setSelectedItemId] = useState<string>();
const [selection, setSelection] = useState<{ selectedRowKeys: string[] }>({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ const ContentList: React.FC = () => {
collapsed={collapsedModelMenu}
onModelSelect={handleModelSelect}
selectedSchemaType="model"
titleIcon={"table"}
/>
}
viewsMenu={
Expand Down
6 changes: 4 additions & 2 deletions web/src/components/organisms/Project/ModelsMenu/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ interface Props {
collapsed: boolean;
selectedSchemaType: SelectedSchemaType;
displayGroups?: boolean;
titleIcon: string;
onModelSelect: (modelId: string) => void;
onGroupSelect?: (groupId: string) => void;
}
Expand All @@ -22,6 +23,7 @@ const ModelsMenu: React.FC<Props> = ({
collapsed,
selectedSchemaType,
displayGroups,
titleIcon,
onModelSelect,
onGroupSelect,
}) => {
Expand All @@ -48,8 +50,8 @@ const ModelsMenu: React.FC<Props> = ({

return (
<>
<ModelListHeader title={title} collapsed={collapsed} />
<ModelListBody>
<ModelListHeader title={title} collapsed={collapsed} titleIcon={titleIcon} />
<ModelListBody collapsed={collapsed}>
<Models
title={title}
collapsed={collapsed}
Expand Down
4 changes: 2 additions & 2 deletions web/src/components/organisms/Project/Schema/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import {
useModelsByGroupQuery,
} from "@reearth-cms/gql/graphql-client-api";
import { useT } from "@reearth-cms/i18n";
import { useModel } from "@reearth-cms/state";
import { useModel, useCollapsedModelMenu } from "@reearth-cms/state";

export default () => {
const t = useT();
Expand All @@ -49,7 +49,7 @@ export default () => {
const [isMeta, setIsMeta] = useState(false);
const [selectedField, setSelectedField] = useState<Field | null>(null);
const [selectedType, setSelectedType] = useState<FieldType | null>(null);
const [collapsed, setCollapsed] = useState(false);
const [collapsed, setCollapsed] = useCollapsedModelMenu();
const { data: modelsData } = useGetModelsQuery({
variables: {
projectId: projectId ?? "",
Expand Down
1 change: 1 addition & 0 deletions web/src/components/organisms/Project/Schema/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ const ProjectSchema: React.FC = () => {
onModelSelect={handleModelSelect}
onGroupSelect={handleGroupSelect}
displayGroups
titleIcon={"unorderedList"}
/>
}
setIsMeta={setIsMeta}
Expand Down
3 changes: 3 additions & 0 deletions web/src/state/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@ export const useProject = () => useAtom(project);

const model = atom<Model | undefined>(undefined);
export const useModel = () => useAtom(model);

const collapsedModelMenu = atomWithStorage<boolean>("collapsedModelMenu", false);
export const useCollapsedModelMenu = () => useAtom(collapsedModelMenu);

0 comments on commit e6c5bae

Please sign in to comment.