update: list ranges in menu
This commit is contained in:
committed by
Nicolás Hatcher Andrés
parent
126e62957a
commit
a3c201e4e4
@@ -55,6 +55,7 @@ function FormulaBar(properties: FormulaBarProps) {
|
|||||||
onMenuOpenChange={handleMenuOpenChange}
|
onMenuOpenChange={handleMenuOpenChange}
|
||||||
openDrawer={properties.openDrawer}
|
openDrawer={properties.openDrawer}
|
||||||
canEdit={properties.canEdit}
|
canEdit={properties.canEdit}
|
||||||
|
model={model}
|
||||||
>
|
>
|
||||||
<CellBarAddress $active={isMenuOpen}>{cellAddress}</CellBarAddress>
|
<CellBarAddress $active={isMenuOpen}>{cellAddress}</CellBarAddress>
|
||||||
<MenuButton $active={isMenuOpen}>
|
<MenuButton $active={isMenuOpen}>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import type { Model } from "@ironcalc/wasm";
|
||||||
import { Menu, MenuItem, styled } from "@mui/material";
|
import { Menu, MenuItem, styled } from "@mui/material";
|
||||||
import { Tag } from "lucide-react";
|
import { Tag } from "lucide-react";
|
||||||
import { type ComponentProps, useCallback, useRef, useState } from "react";
|
import { type ComponentProps, useCallback, useRef, useState } from "react";
|
||||||
@@ -13,6 +14,7 @@ type FormulaBarMenuProps = {
|
|||||||
anchorOrigin?: ComponentProps<typeof Menu>["anchorOrigin"];
|
anchorOrigin?: ComponentProps<typeof Menu>["anchorOrigin"];
|
||||||
openDrawer: () => void;
|
openDrawer: () => void;
|
||||||
canEdit: boolean;
|
canEdit: boolean;
|
||||||
|
model: Model;
|
||||||
};
|
};
|
||||||
|
|
||||||
const FormulaBarMenu = (properties: FormulaBarMenuProps) => {
|
const FormulaBarMenu = (properties: FormulaBarMenuProps) => {
|
||||||
@@ -30,6 +32,8 @@ const FormulaBarMenu = (properties: FormulaBarMenuProps) => {
|
|||||||
properties.onMenuOpenChange?.(false);
|
properties.onMenuOpenChange?.(false);
|
||||||
}, [properties.onMenuOpenChange]);
|
}, [properties.onMenuOpenChange]);
|
||||||
|
|
||||||
|
const definedNameList = properties.model.getDefinedNameList();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ChildrenWrapper onClick={handleMenuOpen} ref={anchorElement}>
|
<ChildrenWrapper onClick={handleMenuOpen} ref={anchorElement}>
|
||||||
@@ -49,12 +53,32 @@ const FormulaBarMenu = (properties: FormulaBarMenuProps) => {
|
|||||||
horizontal: "left",
|
horizontal: "left",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<MenuItemWrapper disableRipple>
|
{definedNameList.length > 0 ? (
|
||||||
<Tag />
|
<>
|
||||||
<MenuItemText>Range1</MenuItemText>
|
{definedNameList.map((definedName) => {
|
||||||
<MenuItemExample>$Sheet1!$A$1:$B$2</MenuItemExample>
|
const worksheets = properties.model.getWorksheetsProperties();
|
||||||
</MenuItemWrapper>
|
const scopeName =
|
||||||
<MenuDivider />
|
definedName.scope != null
|
||||||
|
? worksheets[definedName.scope]?.name || "[Unknown]"
|
||||||
|
: "[Global]";
|
||||||
|
return (
|
||||||
|
<MenuItemWrapper
|
||||||
|
key={`${definedName.name}-${definedName.scope}`}
|
||||||
|
disableRipple
|
||||||
|
onClick={() => {
|
||||||
|
properties.onChange(definedName.name);
|
||||||
|
handleMenuClose();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Tag />
|
||||||
|
<MenuItemText>{definedName.name}</MenuItemText>
|
||||||
|
<MenuItemExample>{definedName.formula}</MenuItemExample>
|
||||||
|
</MenuItemWrapper>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
<MenuDivider />
|
||||||
|
</>
|
||||||
|
) : null}
|
||||||
<MenuItemWrapper
|
<MenuItemWrapper
|
||||||
$pressed={false}
|
$pressed={false}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
@@ -101,6 +125,7 @@ const MenuItemWrapper = styled(MenuItem, {
|
|||||||
& svg {
|
& svg {
|
||||||
width: 12px;
|
width: 12px;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
|
flex-shrink: 0;
|
||||||
color: ${theme.palette.grey[600]};
|
color: ${theme.palette.grey[600]};
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
@@ -118,9 +143,11 @@ const MenuDivider = styled("div")`
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
const MenuItemText = styled("div")`
|
const MenuItemText = styled("div")`
|
||||||
|
width: 100%;
|
||||||
color: #000;
|
color: #000;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
text-overflow: ellipsis;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const MenuItemExample = styled("div")`
|
const MenuItemExample = styled("div")`
|
||||||
|
|||||||
@@ -399,6 +399,7 @@ const ListItem = styled("div")<{ $isSelected: boolean }>(({ $isSelected }) => ({
|
|||||||
alignItems: "flex-start",
|
alignItems: "flex-start",
|
||||||
justifyContent: "space-between",
|
justifyContent: "space-between",
|
||||||
padding: "8px 12px",
|
padding: "8px 12px",
|
||||||
|
cursor: "pointer",
|
||||||
minHeight: "40px",
|
minHeight: "40px",
|
||||||
boxSizing: "border-box",
|
boxSizing: "border-box",
|
||||||
borderBottom: `1px solid ${theme.palette.grey[200]}`,
|
borderBottom: `1px solid ${theme.palette.grey[200]}`,
|
||||||
|
|||||||
Reference in New Issue
Block a user