@elliemae/ds-global-header 3.60.0-next.4 → 3.60.0-next.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/DSGlobalHeader.js +9 -10
- package/dist/cjs/DSGlobalHeader.js.map +2 -2
- package/dist/cjs/config/constants.js +0 -15
- package/dist/cjs/config/constants.js.map +3 -3
- package/dist/cjs/config/useGlobalHeader.js +2 -2
- package/dist/cjs/config/useGlobalHeader.js.map +2 -2
- package/dist/cjs/constants/index.js +176 -0
- package/dist/cjs/constants/index.js.map +7 -0
- package/dist/cjs/{exported-related/index.js → hooks/useOnClickOutside.js} +30 -11
- package/dist/cjs/hooks/useOnClickOutside.js.map +7 -0
- package/dist/cjs/index.js +8 -6
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/parts/Breadcrumb/GlobalHeaderBreadcrumb.js +6 -5
- package/dist/cjs/parts/Breadcrumb/GlobalHeaderBreadcrumb.js.map +2 -2
- package/dist/cjs/parts/Breadcrumb/PureBreadcrumb.js +7 -5
- package/dist/cjs/parts/Breadcrumb/PureBreadcrumb.js.map +2 -2
- package/dist/cjs/parts/Breadcrumb/styles.js +14 -14
- package/dist/cjs/parts/Breadcrumb/styles.js.map +2 -2
- package/dist/cjs/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js +1 -1
- package/dist/cjs/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js.map +1 -1
- package/dist/cjs/parts/Logo/GlobalHeaderLogo.js +2 -2
- package/dist/cjs/parts/Logo/GlobalHeaderLogo.js.map +2 -2
- package/dist/cjs/parts/Logo/styles.js +3 -3
- package/dist/cjs/parts/Logo/styles.js.map +2 -2
- package/dist/cjs/parts/Toolbar/GlobalHeaderToolbar.js +13 -12
- package/dist/cjs/parts/Toolbar/GlobalHeaderToolbar.js.map +2 -2
- package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js +2 -2
- package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js.map +2 -2
- package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js +55 -32
- package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js.map +2 -2
- package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js +90 -68
- package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js.map +2 -2
- package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.js +10 -10
- package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.js.map +2 -2
- package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js +3 -1
- package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js.map +2 -2
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js +171 -93
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js.map +3 -3
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.js +166 -0
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.js.map +7 -0
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.js +122 -0
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.js.map +7 -0
- package/dist/cjs/parts/Toolbar/styles.js +5 -5
- package/dist/cjs/parts/Toolbar/styles.js.map +2 -2
- package/dist/cjs/parts/styles.js +4 -4
- package/dist/cjs/parts/styles.js.map +2 -2
- package/dist/cjs/react-desc-prop-types.js +2 -0
- package/dist/cjs/react-desc-prop-types.js.map +2 -2
- package/dist/esm/DSGlobalHeader.js +8 -9
- package/dist/esm/DSGlobalHeader.js.map +2 -2
- package/dist/esm/config/constants.js +0 -8
- package/dist/esm/config/constants.js.map +3 -3
- package/dist/esm/config/useGlobalHeader.js +2 -2
- package/dist/esm/config/useGlobalHeader.js.map +2 -2
- package/dist/esm/constants/index.js +146 -0
- package/dist/esm/constants/index.js.map +7 -0
- package/dist/esm/hooks/useOnClickOutside.js +30 -0
- package/dist/esm/hooks/useOnClickOutside.js.map +7 -0
- package/dist/esm/index.js +7 -3
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/parts/Breadcrumb/GlobalHeaderBreadcrumb.js +6 -5
- package/dist/esm/parts/Breadcrumb/GlobalHeaderBreadcrumb.js.map +2 -2
- package/dist/esm/parts/Breadcrumb/PureBreadcrumb.js +7 -5
- package/dist/esm/parts/Breadcrumb/PureBreadcrumb.js.map +2 -2
- package/dist/esm/parts/Breadcrumb/styles.js +8 -8
- package/dist/esm/parts/Breadcrumb/styles.js.map +2 -2
- package/dist/esm/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js +1 -1
- package/dist/esm/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js.map +1 -1
- package/dist/esm/parts/Logo/GlobalHeaderLogo.js +2 -2
- package/dist/esm/parts/Logo/GlobalHeaderLogo.js.map +2 -2
- package/dist/esm/parts/Logo/styles.js +2 -2
- package/dist/esm/parts/Logo/styles.js.map +2 -2
- package/dist/esm/parts/Toolbar/GlobalHeaderToolbar.js +13 -12
- package/dist/esm/parts/Toolbar/GlobalHeaderToolbar.js.map +2 -2
- package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js +2 -2
- package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js.map +2 -2
- package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js +57 -34
- package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js.map +2 -2
- package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js +90 -68
- package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js.map +2 -2
- package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.js +6 -6
- package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.js.map +2 -2
- package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js +3 -1
- package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js.map +2 -2
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js +172 -94
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js.map +3 -3
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.js +136 -0
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.js.map +7 -0
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.js +92 -0
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.js.map +7 -0
- package/dist/esm/parts/Toolbar/styles.js +4 -4
- package/dist/esm/parts/Toolbar/styles.js.map +2 -2
- package/dist/esm/parts/styles.js +3 -3
- package/dist/esm/parts/styles.js.map +2 -2
- package/dist/esm/react-desc-prop-types.js +8 -1
- package/dist/esm/react-desc-prop-types.js.map +2 -2
- package/dist/types/DSGlobalHeader.d.ts +2 -2
- package/dist/types/config/constants.d.ts +0 -5
- package/dist/types/config/useGlobalHeader.d.ts +1 -1
- package/dist/types/constants/index.d.ts +184 -0
- package/dist/types/hooks/useOnClickOutside.d.ts +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/parts/Breadcrumb/PureBreadcrumb.d.ts +5 -1
- package/dist/types/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.d.ts +1 -1
- package/dist/types/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.d.ts +1 -1
- package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.d.ts +1 -1
- package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.d.ts +9 -0
- package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.d.ts +14 -0
- package/dist/types/react-desc-prop-types.d.ts +513 -21
- package/dist/types/tests/GlobalHeader.getOwnerProps.test.d.ts +1 -0
- package/package.json +29 -30
- package/dist/cjs/exported-related/DSGlobalHeaderDatatestid.js +0 -90
- package/dist/cjs/exported-related/DSGlobalHeaderDatatestid.js.map +0 -7
- package/dist/cjs/exported-related/index.js.map +0 -7
- package/dist/cjs/exported-related/theming.js +0 -90
- package/dist/cjs/exported-related/theming.js.map +0 -7
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/styles.js +0 -90
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/styles.js.map +0 -7
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/useCallbackAfterRender.js +0 -47
- package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/useCallbackAfterRender.js.map +0 -7
- package/dist/esm/exported-related/DSGlobalHeaderDatatestid.js +0 -60
- package/dist/esm/exported-related/DSGlobalHeaderDatatestid.js.map +0 -7
- package/dist/esm/exported-related/index.js +0 -11
- package/dist/esm/exported-related/index.js.map +0 -7
- package/dist/esm/exported-related/theming.js +0 -60
- package/dist/esm/exported-related/theming.js.map +0 -7
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/styles.js +0 -60
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/styles.js.map +0 -7
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/useCallbackAfterRender.js +0 -17
- package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/useCallbackAfterRender.js.map +0 -7
- package/dist/types/exported-related/DSGlobalHeaderDatatestid.d.ts +0 -54
- package/dist/types/exported-related/index.d.ts +0 -2
- package/dist/types/exported-related/theming.d.ts +0 -53
- package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/styles.d.ts +0 -1
- package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/useCallbackAfterRender.d.ts +0 -3
|
@@ -4,7 +4,7 @@ import React2, { useContext } from "react";
|
|
|
4
4
|
import { useGetLayoutMode } from "@elliemae/ds-system";
|
|
5
5
|
import { DSGlobalHeaderContext } from "../../DSGlobalHeaderContext.js";
|
|
6
6
|
import { StyledLogoContainer } from "./styles.js";
|
|
7
|
-
import {
|
|
7
|
+
import { GLOBAL_HEADER_DATA_TESTID } from "../../constants/index.js";
|
|
8
8
|
const GlobalHeaderLogo = () => {
|
|
9
9
|
const {
|
|
10
10
|
props: { Logo, LogoWithBrand },
|
|
@@ -20,7 +20,7 @@ const GlobalHeaderLogo = () => {
|
|
|
20
20
|
return /* @__PURE__ */ jsxs(
|
|
21
21
|
StyledLogoContainer,
|
|
22
22
|
{
|
|
23
|
-
"data-testid":
|
|
23
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.LOGO_CONTAINER,
|
|
24
24
|
alignItems: "center",
|
|
25
25
|
pr: smalScreen ? "0px" : "36px",
|
|
26
26
|
cols: smalScreen ? ["auto"] : ["auto", "1fr"],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Logo/GlobalHeaderLogo.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext } from 'react';\nimport { useGetLayoutMode } from '@elliemae/ds-system';\nimport { DSGlobalHeaderContext } from '../../DSGlobalHeaderContext.js';\nimport { StyledLogoContainer } from './styles.js';\nimport {
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACqBnB,SAOyB,KAPzB;AArBJ,OAAOA,UAAS,kBAAkB;AAClC,SAAS,wBAAwB;AACjC,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AACpC,SAAS,
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext } from 'react';\nimport { useGetLayoutMode } from '@elliemae/ds-system';\nimport { DSGlobalHeaderContext } from '../../DSGlobalHeaderContext.js';\nimport { StyledLogoContainer } from './styles.js';\nimport { GLOBAL_HEADER_DATA_TESTID } from '../../constants/index.js';\n\nexport const GlobalHeaderLogo = (): JSX.Element => {\n const {\n props: { Logo, LogoWithBrand },\n showIconOnly,\n ownerProps,\n } = useContext(DSGlobalHeaderContext);\n const layoutMode = useGetLayoutMode();\n\n const smalScreen = React.useMemo(() => {\n if (!layoutMode) return showIconOnly;\n if (layoutMode === 'xs' || layoutMode === 's') return true;\n return false;\n }, [layoutMode, showIconOnly]);\n\n return (\n <StyledLogoContainer\n data-testid={GLOBAL_HEADER_DATA_TESTID.LOGO_CONTAINER}\n alignItems=\"center\"\n pr={smalScreen ? '0px' : '36px'}\n cols={smalScreen ? ['auto'] : ['auto', '1fr']}\n {...ownerProps}\n >\n {Logo && smalScreen && <Logo />}\n {LogoWithBrand && !smalScreen && <LogoWithBrand />}\n </StyledLogoContainer>\n );\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACqBnB,SAOyB,KAPzB;AArBJ,OAAOA,UAAS,kBAAkB;AAClC,SAAS,wBAAwB;AACjC,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AACpC,SAAS,iCAAiC;AAEnC,MAAM,mBAAmB,MAAmB;AACjD,QAAM;AAAA,IACJ,OAAO,EAAE,MAAM,cAAc;AAAA,IAC7B;AAAA,IACA;AAAA,EACF,IAAI,WAAW,qBAAqB;AACpC,QAAM,aAAa,iBAAiB;AAEpC,QAAM,aAAaA,OAAM,QAAQ,MAAM;AACrC,QAAI,CAAC,WAAY,QAAO;AACxB,QAAI,eAAe,QAAQ,eAAe,IAAK,QAAO;AACtD,WAAO;AAAA,EACT,GAAG,CAAC,YAAY,YAAY,CAAC;AAE7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,0BAA0B;AAAA,MACvC,YAAW;AAAA,MACX,IAAI,aAAa,QAAQ;AAAA,MACzB,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,QAAQ,KAAK;AAAA,MAC3C,GAAG;AAAA,MAEH;AAAA,gBAAQ,cAAc,oBAAC,QAAK;AAAA,QAC5B,iBAAiB,CAAC,cAAc,oBAAC,iBAAc;AAAA;AAAA;AAAA,EAClD;AAEJ;",
|
|
6
6
|
"names": ["React"]
|
|
7
7
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { styled } from "@elliemae/ds-system";
|
|
3
3
|
import { Grid } from "@elliemae/ds-grid";
|
|
4
|
-
import { DSGlobalHeaderName,
|
|
4
|
+
import { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from "../../constants/index.js";
|
|
5
5
|
const StyledLogoContainer = styled(Grid, {
|
|
6
6
|
name: DSGlobalHeaderName,
|
|
7
|
-
slot:
|
|
7
|
+
slot: GLOBAL_HEADER_SLOTS.LOGO_CONTAINER
|
|
8
8
|
})`
|
|
9
9
|
min-height: 40px;
|
|
10
10
|
`;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Logo/styles.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { styled } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSGlobalHeaderName,
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,oBAAoB,2BAA2B;AAEjD,MAAM,sBAAsB,OAAO,MAAM;AAAA,EAC9C,MAAM;AAAA,EACN,MAAM,oBAAoB
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { styled } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from '../../constants/index.js';\n\nexport const StyledLogoContainer = styled(Grid, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.LOGO_CONTAINER,\n})`\n min-height: 40px;\n`;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,oBAAoB,2BAA2B;AAEjD,MAAM,sBAAsB,OAAO,MAAM;AAAA,EAC9C,MAAM;AAAA,EACN,MAAM,oBAAoB;AAC5B,CAAC;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,9 +2,8 @@ import * as React from "react";
|
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import { getGlobalAttributes } from "@elliemae/ds-props-helpers";
|
|
4
4
|
import { useContext } from "react";
|
|
5
|
-
import { FONT_DETECTOR } from "../../
|
|
5
|
+
import { FONT_DETECTOR, GLOBAL_HEADER_DATA_TESTID } from "../../constants/index.js";
|
|
6
6
|
import { DSGlobalHeaderContext } from "../../DSGlobalHeaderContext.js";
|
|
7
|
-
import { DSGlobalHeaderDatatestid } from "../../exported-related/index.js";
|
|
8
7
|
import { StyledButton } from "../styles.js";
|
|
9
8
|
import { AppPicker, PopupMenu, SearchToggle } from "./outOfTheBox/index.js";
|
|
10
9
|
import { StyledList, StyledMenubarContainer, StyledToolbarItem } from "./styles.js";
|
|
@@ -21,7 +20,7 @@ const GlobalHeaderToolbar = () => {
|
|
|
21
20
|
return /* @__PURE__ */ jsx(
|
|
22
21
|
StyledMenubarContainer,
|
|
23
22
|
{
|
|
24
|
-
"data-testid":
|
|
23
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_CONTAINER,
|
|
25
24
|
"aria-label": "menubar",
|
|
26
25
|
withSpan: fontDetector > FONT_DETECTOR.SMALL,
|
|
27
26
|
...ownerProps,
|
|
@@ -36,7 +35,7 @@ const GlobalHeaderToolbar = () => {
|
|
|
36
35
|
role: "menubar",
|
|
37
36
|
onKeyDown: keyboardNavigation,
|
|
38
37
|
innerRef: listRef,
|
|
39
|
-
"data-testid":
|
|
38
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_LIST,
|
|
40
39
|
...ownerProps,
|
|
41
40
|
children: toolbar.map((item, index) => {
|
|
42
41
|
const { type } = item;
|
|
@@ -47,14 +46,15 @@ const GlobalHeaderToolbar = () => {
|
|
|
47
46
|
StyledToolbarItem,
|
|
48
47
|
{
|
|
49
48
|
role: "menuitem",
|
|
50
|
-
"data-testid":
|
|
49
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM,
|
|
51
50
|
...ownerProps,
|
|
52
51
|
children: /* @__PURE__ */ jsx(
|
|
53
52
|
PopupMenu,
|
|
54
53
|
{
|
|
55
54
|
title: label2,
|
|
56
55
|
setRef: setRefIndex,
|
|
57
|
-
...otherProps2
|
|
56
|
+
...otherProps2,
|
|
57
|
+
ownerProps
|
|
58
58
|
}
|
|
59
59
|
)
|
|
60
60
|
},
|
|
@@ -67,7 +67,7 @@ const GlobalHeaderToolbar = () => {
|
|
|
67
67
|
StyledToolbarItem,
|
|
68
68
|
{
|
|
69
69
|
role: "menuitem",
|
|
70
|
-
"data-testid":
|
|
70
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM,
|
|
71
71
|
...ownerProps,
|
|
72
72
|
children: /* @__PURE__ */ jsx(AppPicker, { label: label2, setRef: setRefIndex, ...otherProps2 })
|
|
73
73
|
},
|
|
@@ -80,9 +80,9 @@ const GlobalHeaderToolbar = () => {
|
|
|
80
80
|
StyledToolbarItem,
|
|
81
81
|
{
|
|
82
82
|
role: "menuitem",
|
|
83
|
-
"data-testid":
|
|
83
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM,
|
|
84
84
|
...ownerProps,
|
|
85
|
-
children: /* @__PURE__ */ jsx(SearchToggle, { label: label2, setRef: setRefIndex, ...otherProps2 })
|
|
85
|
+
children: /* @__PURE__ */ jsx(SearchToggle, { instanceUID, label: label2, setRef: setRefIndex, ...otherProps2 })
|
|
86
86
|
},
|
|
87
87
|
`${instanceUID}-ds-toolbar-item-${label2}`
|
|
88
88
|
);
|
|
@@ -94,7 +94,7 @@ const GlobalHeaderToolbar = () => {
|
|
|
94
94
|
StyledToolbarItem,
|
|
95
95
|
{
|
|
96
96
|
role: "menuitem",
|
|
97
|
-
"data-testid":
|
|
97
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM,
|
|
98
98
|
...ownerProps,
|
|
99
99
|
children: CustomComponent && /* @__PURE__ */ jsx(CustomComponent, { item, setRef: setRefIndex })
|
|
100
100
|
},
|
|
@@ -106,16 +106,17 @@ const GlobalHeaderToolbar = () => {
|
|
|
106
106
|
StyledToolbarItem,
|
|
107
107
|
{
|
|
108
108
|
role: "menuitem",
|
|
109
|
-
"data-testid":
|
|
109
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM,
|
|
110
110
|
...ownerProps,
|
|
111
111
|
children: /* @__PURE__ */ jsx(
|
|
112
112
|
StyledButton,
|
|
113
113
|
{
|
|
114
114
|
title: label,
|
|
115
|
-
"data-testid":
|
|
115
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM_BUTTON,
|
|
116
116
|
innerRef: setRefIndex,
|
|
117
117
|
...getGlobalAttributes(otherProps),
|
|
118
118
|
type: "button",
|
|
119
|
+
...ownerProps,
|
|
119
120
|
children: Icon && /* @__PURE__ */ jsx(Icon, { size: "m" })
|
|
120
121
|
}
|
|
121
122
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Toolbar/GlobalHeaderToolbar.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { getGlobalAttributes } from '@elliemae/ds-props-helpers';\nimport { useContext } from 'react';\nimport { FONT_DETECTOR } from '../../
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { getGlobalAttributes } from '@elliemae/ds-props-helpers';\nimport { useContext } from 'react';\nimport { FONT_DETECTOR, GLOBAL_HEADER_DATA_TESTID } from '../../constants/index.js';\nimport { DSGlobalHeaderContext } from '../../DSGlobalHeaderContext.js';\nimport { StyledButton } from '../styles.js';\nimport { AppPicker, PopupMenu, SearchToggle } from './outOfTheBox/index.js';\nimport { StyledList, StyledMenubarContainer, StyledToolbarItem } from './styles.js';\nimport { useGlobalHeaderToolbar } from './useGlobalHeaderToolbar.js';\n\nexport const GlobalHeaderToolbar = (): JSX.Element => {\n const {\n props: { toolbar },\n ownerProps,\n instanceUID,\n globalHeaderToolbarGrid,\n fontDetector,\n } = useContext(DSGlobalHeaderContext);\n\n const { listRef, setRef, keyboardNavigation } = useGlobalHeaderToolbar();\n\n return (\n <StyledMenubarContainer\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_CONTAINER}\n aria-label=\"menubar\"\n withSpan={fontDetector > FONT_DETECTOR.SMALL}\n {...ownerProps}\n >\n <StyledList\n height=\"100%\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gutter=\"xxs\"\n cols={globalHeaderToolbarGrid}\n role=\"menubar\"\n onKeyDown={keyboardNavigation}\n innerRef={listRef}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_LIST}\n {...ownerProps}\n >\n {toolbar.map((item, index) => {\n const { type } = item;\n // inside a toolbar items needs to be navigable via arrow keys.\n // this setRef(index) is generating an index of references that can be \"focused\" when user is navigating with arrows\n // NOTE:\n // focus management based on DOM nodes.focus() in react is problematic due to unpredictable timing of refs assignment and react rendering\n // we should be using the \"focus tracker\" approach where we keep track of \"what we want to focuse\",\n // then have the ref callback functions invoke the focus to the element AFTER the LAST element is rendered, not tracking the DOM nodes directly.\n // We aren't changing this right now, but let's keep this in mind.\n const setRefIndex = setRef(index);\n\n if (type === 'ds-popup-menu') {\n const { label, ...otherProps } = item;\n return (\n <StyledToolbarItem\n role=\"menuitem\"\n key={`${instanceUID}-ds-toolbar-item-${label}`}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM}\n {...ownerProps}\n >\n <PopupMenu\n title={label} // this is captured as the standard HTML \"title\" attribute and is printed in output HTML\n setRef={setRefIndex}\n {...otherProps}\n ownerProps={ownerProps}\n />\n </StyledToolbarItem>\n );\n }\n if (type === 'ds-app-picker') {\n const { label, ...otherProps } = item;\n return (\n <StyledToolbarItem\n role=\"menuitem\"\n key={`${instanceUID}-ds-toolbar-item-${label}`}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM}\n {...ownerProps}\n >\n <AppPicker label={label} setRef={setRefIndex} {...otherProps} />\n </StyledToolbarItem>\n );\n }\n if (type === 'ds-search-toggle') {\n const { label, ...otherProps } = item;\n return (\n <StyledToolbarItem\n role=\"menuitem\"\n key={`${instanceUID}-ds-toolbar-item-${label}`}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM}\n {...ownerProps}\n >\n <SearchToggle instanceUID={instanceUID} label={label} setRef={setRefIndex} {...otherProps} />\n </StyledToolbarItem>\n );\n }\n if (type === 'custom') {\n const { label, CustomComponent } = item;\n if (!CustomComponent) return null;\n return (\n <StyledToolbarItem\n role=\"menuitem\"\n key={`${instanceUID}-ds-toolbar-item-${label}`}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM}\n {...ownerProps}\n >\n {CustomComponent && <CustomComponent item={item} setRef={setRefIndex} />}\n </StyledToolbarItem>\n );\n }\n\n const { label, Icon, ...otherProps } = item;\n return (\n <StyledToolbarItem\n role=\"menuitem\"\n key={`${instanceUID}-ds-toolbar-item-${label}`}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM}\n {...ownerProps}\n >\n <StyledButton\n title={label} // this is captured as the standard HTML \"title\" attribute and is printed in output HTML\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM_BUTTON}\n innerRef={setRefIndex}\n {...getGlobalAttributes(otherProps)}\n type=\"button\"\n {...ownerProps}\n >\n {Icon && <Icon size=\"m\" />}\n </StyledButton>\n </StyledToolbarItem>\n );\n })}\n </StyledList>\n </StyledMenubarContainer>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["label", "otherProps"]
|
|
7
7
|
}
|
|
@@ -5,7 +5,7 @@ import { MenuPicker } from "@elliemae/ds-icons";
|
|
|
5
5
|
import { getGlobalAttributes } from "@elliemae/ds-props-helpers";
|
|
6
6
|
import { mergeRefs } from "@elliemae/ds-system";
|
|
7
7
|
import { useCallback, useRef, useState } from "react";
|
|
8
|
-
import {
|
|
8
|
+
import { GLOBAL_HEADER_DATA_TESTID } from "../../../../constants/index.js";
|
|
9
9
|
import { useCallbackAfterRender } from "../../../../utils/useCallbackAfterRender.js";
|
|
10
10
|
import { StyledButton } from "../../../styles.js";
|
|
11
11
|
const AppPicker = ({ label, setRef, componentProps, ...otherProps }) => {
|
|
@@ -65,7 +65,7 @@ const AppPicker = ({ label, setRef, componentProps, ...otherProps }) => {
|
|
|
65
65
|
mergeRefs(internalTriggerRef, triggerRef, ref)(buttonRef);
|
|
66
66
|
},
|
|
67
67
|
"aria-label": label,
|
|
68
|
-
"data-testid":
|
|
68
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM_BUTTON,
|
|
69
69
|
"aria-haspopup": true,
|
|
70
70
|
"aria-expanded": userIsOpen ?? isOpen,
|
|
71
71
|
...getGlobalAttributes(otherProps),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { DSAppPicker } from '@elliemae/ds-app-picker';\nimport { MenuPicker } from '@elliemae/ds-icons';\nimport { getGlobalAttributes } from '@elliemae/ds-props-helpers';\nimport { mergeRefs } from '@elliemae/ds-system';\nimport React, { useCallback, useRef, useState } from 'react';\nimport {
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;AC+FjB;AA/FN,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,2BAA2B;AACpC,SAAS,iBAAiB;AAC1B,SAAgB,aAAa,QAAQ,gBAAgB;AACrD,SAAS,
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { DSAppPicker } from '@elliemae/ds-app-picker';\nimport { MenuPicker } from '@elliemae/ds-icons';\nimport { getGlobalAttributes } from '@elliemae/ds-props-helpers';\nimport { mergeRefs } from '@elliemae/ds-system';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { GLOBAL_HEADER_DATA_TESTID } from '../../../../constants/index.js';\nimport type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';\nimport { useCallbackAfterRender } from '../../../../utils/useCallbackAfterRender.js';\nimport { StyledButton } from '../../../styles.js';\n\ntype AppPickerOutOfTheBoxProps =\n // what comes from\n // the prop toolbar (array)\n // specifically only if the type is 'ds-app-picker' so they give us the correct interface\n DSGlobalHeaderT.AppPickerProps & {\n // this interface is an addition that comes from our own implementation\n // GlobalHeaderToolbar -> useGlobalHeaderToolbar\n // is handling focus management for the user when using our out of the box\n setRef: (ref: HTMLElement) => void;\n };\n\nexport const AppPicker = ({ label, setRef, componentProps, ...otherProps }: AppPickerOutOfTheBoxProps): JSX.Element => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const internalTriggerRef = useRef<HTMLButtonElement>(null);\n\n const {\n apps,\n icon,\n customApps,\n sectionTitle,\n customSectionTitle,\n actionRef,\n isOpen: userIsOpen,\n onKeyDown: userOnKeyDown,\n onClickOutside: userOnClickOutside,\n renderTrigger: userRenderTrigger,\n onClose,\n triggerRef,\n triggerOnClick,\n } = componentProps;\n\n const schedule = useCallbackAfterRender();\n\n // const appPickerRef = useRef(null);\n // const internalActionRef = useMemo(() => actionRef ?? appPickerRef, [actionRef]);\n\n const focusTrigger = useCallback(() => internalTriggerRef.current?.focus(), []);\n\n const handleTriggerKeyDown: React.KeyboardEventHandler = useCallback((e) => {\n if (e.code === 'Enter' || e.code === 'Space' || e.code === 'ArrowDown') {\n setIsOpen(true);\n }\n }, []);\n\n const handleAppPickerOnKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false);\n schedule(focusTrigger);\n }\n },\n [focusTrigger, schedule],\n );\n\n const handleOnClickOutside = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const handleOnClick: React.MouseEventHandler = useCallback(\n (e) => {\n setIsOpen(true);\n setTimeout(() => {\n if (e.detail === 0) actionRef?.current?.focusSelectedOrFirstAvailable?.();\n else actionRef?.current?.focusWrapper();\n }, 10);\n },\n [actionRef],\n );\n\n // eslint-disable-next-line react/no-unstable-nested-components\n const TriggerDefaultComponent = ({ ref }: { ref: React.MutableRefObject<HTMLButtonElement> }) => (\n <StyledButton\n onClick={triggerOnClick ?? handleOnClick}\n onKeyDown={handleTriggerKeyDown}\n innerRef={(buttonRef: HTMLButtonElement) => {\n setRef(buttonRef);\n mergeRefs(internalTriggerRef, triggerRef, ref)(buttonRef);\n }}\n aria-label={label}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM_BUTTON}\n aria-haspopup\n aria-expanded={userIsOpen ?? isOpen}\n {...getGlobalAttributes(otherProps)}\n type=\"button\"\n >\n <MenuPicker width={20.73} height={20.73} />\n </StyledButton>\n );\n\n return (\n <DSAppPicker\n apps={apps}\n customApps={customApps}\n sectionTitle={sectionTitle}\n customSectionTitle={customSectionTitle}\n icon={icon}\n onKeyDown={userOnKeyDown ?? handleAppPickerOnKeyDown}\n actionRef={actionRef}\n onClickOutside={userOnClickOutside ?? handleOnClickOutside}\n renderTrigger={userRenderTrigger || TriggerDefaultComponent}\n isOpen={userIsOpen ?? isOpen}\n onClose={onClose}\n triggerRef={triggerRef}\n />\n );\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;AC+FjB;AA/FN,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,2BAA2B;AACpC,SAAS,iBAAiB;AAC1B,SAAgB,aAAa,QAAQ,gBAAgB;AACrD,SAAS,iCAAiC;AAE1C,SAAS,8BAA8B;AACvC,SAAS,oBAAoB;AAatB,MAAM,YAAY,CAAC,EAAE,OAAO,QAAQ,gBAAgB,GAAG,WAAW,MAA8C;AACrH,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAkB,KAAK;AACnD,QAAM,qBAAqB,OAA0B,IAAI;AAEzD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,WAAW,uBAAuB;AAKxC,QAAM,eAAe,YAAY,MAAM,mBAAmB,SAAS,MAAM,GAAG,CAAC,CAAC;AAE9E,QAAM,uBAAmD,YAAY,CAAC,MAAM;AAC1E,QAAI,EAAE,SAAS,WAAW,EAAE,SAAS,WAAW,EAAE,SAAS,aAAa;AACtE,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,2BAA2B;AAAA,IAC/B,CAAC,MAA2B;AAC1B,UAAI,EAAE,QAAQ,UAAU;AACtB,kBAAU,KAAK;AACf,iBAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAAA,IACA,CAAC,cAAc,QAAQ;AAAA,EACzB;AAEA,QAAM,uBAAuB,YAAY,MAAM;AAC7C,cAAU,KAAK;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,QAAM,gBAAyC;AAAA,IAC7C,CAAC,MAAM;AACL,gBAAU,IAAI;AACd,iBAAW,MAAM;AACf,YAAI,EAAE,WAAW,EAAG,YAAW,SAAS,gCAAgC;AAAA,YACnE,YAAW,SAAS,aAAa;AAAA,MACxC,GAAG,EAAE;AAAA,IACP;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAGA,QAAM,0BAA0B,CAAC,EAAE,IAAI,MACrC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,kBAAkB;AAAA,MAC3B,WAAW;AAAA,MACX,UAAU,CAAC,cAAiC;AAC1C,eAAO,SAAS;AAChB,kBAAU,oBAAoB,YAAY,GAAG,EAAE,SAAS;AAAA,MAC1D;AAAA,MACA,cAAY;AAAA,MACZ,eAAa,0BAA0B;AAAA,MACvC,iBAAa;AAAA,MACb,iBAAe,cAAc;AAAA,MAC5B,GAAG,oBAAoB,UAAU;AAAA,MAClC,MAAK;AAAA,MAEL,8BAAC,cAAW,OAAO,OAAO,QAAQ,OAAO;AAAA;AAAA,EAC3C;AAGF,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,iBAAiB;AAAA,MAC5B;AAAA,MACA,gBAAgB,sBAAsB;AAAA,MACtC,eAAe,qBAAqB;AAAA,MACpC,QAAQ,cAAc;AAAA,MACtB;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useFloatingContext, PopoverArrow, FloatingWrapper } from "@elliemae/ds-floating-context";
|
|
4
4
|
import { useGetGlobalAttributes } from "@elliemae/ds-props-helpers";
|
|
5
|
-
import { useCallback,
|
|
6
|
-
import {
|
|
5
|
+
import { useCallback, useRef } from "react";
|
|
6
|
+
import { GLOBAL_HEADER_DATA_TESTID } from "../../../../constants/index.js";
|
|
7
7
|
import { StyledButton } from "../../../styles.js";
|
|
8
8
|
import { PopupMenuContent } from "./menuContent/PopupMenuContent.js";
|
|
9
|
+
import { useOnClickOutside } from "../../../../hooks/useOnClickOutside.js";
|
|
9
10
|
const PopupMenu = ({
|
|
10
11
|
Icon,
|
|
11
12
|
onClick,
|
|
12
13
|
setRef,
|
|
13
14
|
componentProps,
|
|
15
|
+
ownerProps,
|
|
14
16
|
...otherProps
|
|
15
17
|
}) => {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
+
const { arrowStyles, floatingStyles, isOpen, refs, context, showTooltip, hideTooltip } = useFloatingContext({
|
|
19
|
+
externallyControlledIsOpen: componentProps.isOpen,
|
|
20
|
+
placement: "bottom",
|
|
21
|
+
withoutAnimation: true,
|
|
22
|
+
withoutPortal: true
|
|
23
|
+
});
|
|
18
24
|
const {
|
|
19
25
|
onClickOutside = () => null,
|
|
20
26
|
onKeyPress,
|
|
@@ -23,71 +29,88 @@ const PopupMenu = ({
|
|
|
23
29
|
options,
|
|
24
30
|
closeOnClick
|
|
25
31
|
} = componentProps;
|
|
32
|
+
const boundaryRef = useRef(null);
|
|
26
33
|
const handleOnKeyDown = useCallback(
|
|
27
34
|
(e) => {
|
|
28
35
|
if (e.code === "ArrowDown") {
|
|
29
|
-
|
|
36
|
+
showTooltip();
|
|
30
37
|
}
|
|
31
38
|
if (onKeyPress) onKeyPress(e);
|
|
32
39
|
},
|
|
33
|
-
[onKeyPress]
|
|
40
|
+
[onKeyPress, showTooltip]
|
|
34
41
|
);
|
|
35
42
|
const handleOnClose = useCallback(() => {
|
|
36
43
|
if (userIsOpen === void 0) {
|
|
37
|
-
|
|
44
|
+
hideTooltip();
|
|
38
45
|
}
|
|
39
|
-
|
|
40
|
-
}, [
|
|
46
|
+
refs.reference?.focus();
|
|
47
|
+
}, [hideTooltip, refs.reference, userIsOpen]);
|
|
41
48
|
const handleTriggerOnClick = useCallback(
|
|
42
49
|
(e) => {
|
|
43
|
-
if (userIsOpen === void 0)
|
|
50
|
+
if (userIsOpen === void 0) showTooltip();
|
|
44
51
|
if (onClick) onClick(e);
|
|
45
52
|
},
|
|
46
|
-
[onClick, userIsOpen]
|
|
53
|
+
[onClick, userIsOpen, showTooltip]
|
|
47
54
|
);
|
|
48
55
|
const handleItemClick = useCallback(() => {
|
|
49
56
|
if (closeOnClick && userIsOpen === void 0) handleOnClose();
|
|
50
57
|
}, [closeOnClick, handleOnClose, userIsOpen]);
|
|
58
|
+
const handleOutside = useCallback(
|
|
59
|
+
(event) => {
|
|
60
|
+
onClickOutside(event);
|
|
61
|
+
const actuallyOpen = userIsOpen ?? isOpen;
|
|
62
|
+
if (!actuallyOpen) return;
|
|
63
|
+
if (userIsOpen === void 0) {
|
|
64
|
+
handleOnClose();
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
[handleOnClose, isOpen, onClickOutside, userIsOpen]
|
|
68
|
+
);
|
|
69
|
+
useOnClickOutside(userIsOpen ?? isOpen ? boundaryRef.current : null, handleOutside);
|
|
51
70
|
const handleRefs = useCallback(
|
|
52
71
|
(ref) => {
|
|
53
72
|
setRef(ref);
|
|
54
|
-
|
|
73
|
+
refs.setReference(ref);
|
|
55
74
|
},
|
|
56
|
-
[setRef]
|
|
75
|
+
[refs, setRef]
|
|
57
76
|
);
|
|
58
|
-
return /* @__PURE__ */ jsxs(
|
|
77
|
+
return /* @__PURE__ */ jsxs("div", { ref: boundaryRef, children: [
|
|
59
78
|
/* @__PURE__ */ jsx(
|
|
60
79
|
StyledButton,
|
|
61
80
|
{
|
|
62
81
|
onClick: handleTriggerOnClick,
|
|
63
82
|
onKeyDown: handleOnKeyDown,
|
|
64
83
|
innerRef: handleRefs,
|
|
65
|
-
"data-testid":
|
|
84
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM_BUTTON,
|
|
66
85
|
"aria-haspopup": true,
|
|
67
86
|
"aria-expanded": userIsOpen ?? isOpen,
|
|
68
87
|
...useGetGlobalAttributes(otherProps),
|
|
69
88
|
type: "button",
|
|
89
|
+
...ownerProps,
|
|
70
90
|
children: Icon && /* @__PURE__ */ jsx(Icon, { size: "m" })
|
|
71
91
|
}
|
|
72
92
|
),
|
|
73
|
-
|
|
74
|
-
|
|
93
|
+
refs.reference ? /* @__PURE__ */ jsxs(
|
|
94
|
+
FloatingWrapper,
|
|
75
95
|
{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
96
|
+
innerRef: refs.setFloating,
|
|
97
|
+
isOpen: userIsOpen ?? isOpen,
|
|
98
|
+
floatingStyles,
|
|
99
|
+
context,
|
|
100
|
+
children: [
|
|
101
|
+
/* @__PURE__ */ jsx(
|
|
102
|
+
PopupMenuContent,
|
|
103
|
+
{
|
|
104
|
+
options,
|
|
105
|
+
onItemClick: handleItemClick,
|
|
106
|
+
onClose: handleOnClose,
|
|
107
|
+
setIsOpen: hideTooltip,
|
|
108
|
+
popupOnKeyPress,
|
|
109
|
+
ownerProps
|
|
110
|
+
}
|
|
111
|
+
),
|
|
112
|
+
/* @__PURE__ */ jsx(PopoverArrow, { ...arrowStyles })
|
|
113
|
+
]
|
|
91
114
|
}
|
|
92
115
|
) : null
|
|
93
116
|
] });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import {
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useFloatingContext, PopoverArrow, FloatingWrapper } from '@elliemae/ds-floating-context';\nimport { useGetGlobalAttributes } from '@elliemae/ds-props-helpers';\nimport React, { useCallback, useRef } from 'react';\nimport { GLOBAL_HEADER_DATA_TESTID } from '../../../../constants/index.js';\nimport type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';\nimport { StyledButton } from '../../../styles.js';\nimport { PopupMenuContent } from './menuContent/PopupMenuContent.js';\nimport { useOnClickOutside } from '../../../../hooks/useOnClickOutside.js';\nexport const PopupMenu = ({\n Icon,\n onClick,\n setRef,\n componentProps,\n ownerProps,\n ...otherProps\n}: DSGlobalHeaderT.PopupProps): JSX.Element => {\n const { arrowStyles, floatingStyles, isOpen, refs, context, showTooltip, hideTooltip } = useFloatingContext({\n externallyControlledIsOpen: componentProps.isOpen,\n placement: 'bottom',\n withoutAnimation: true,\n withoutPortal: true,\n });\n\n const {\n onClickOutside = () => null,\n onKeyPress,\n popupOnKeyPress,\n isOpen: userIsOpen,\n options,\n closeOnClick,\n } = componentProps;\n\n /**\n * We want \"outside\" to mean: outside BOTH the trigger and the floating panel.\n * So wrap them in a single DOM node and use that as the boundary.\n */\n const boundaryRef = useRef<HTMLDivElement | null>(null);\n\n const handleOnKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.code === 'ArrowDown') {\n showTooltip();\n }\n if (onKeyPress) onKeyPress(e);\n },\n [onKeyPress, showTooltip],\n );\n\n const handleOnClose = useCallback(() => {\n if (userIsOpen === undefined) {\n hideTooltip();\n }\n (refs.reference as HTMLElement)?.focus();\n }, [hideTooltip, refs.reference, userIsOpen]);\n\n const handleTriggerOnClick = useCallback(\n (e: React.MouseEvent) => {\n if (userIsOpen === undefined) showTooltip();\n if (onClick) onClick(e);\n },\n [onClick, userIsOpen, showTooltip],\n );\n\n const handleItemClick = useCallback(() => {\n if (closeOnClick && userIsOpen === undefined) handleOnClose();\n }, [closeOnClick, handleOnClose, userIsOpen]);\n\n // Close on outside click, but:\n // - always notify consumer via onClickOutside\n // - only actually close when uncontrolled (userIsOpen === undefined)\n // - only run while open\n const handleOutside = useCallback(\n (event: Event) => {\n onClickOutside(event as MouseEvent | TouchEvent);\n\n const actuallyOpen = userIsOpen ?? isOpen;\n if (!actuallyOpen) return;\n\n if (userIsOpen === undefined) {\n handleOnClose();\n }\n },\n [handleOnClose, isOpen, onClickOutside, userIsOpen],\n );\n\n // If you only want to listen when open, pass `null` when closed\n useOnClickOutside((userIsOpen ?? isOpen) ? boundaryRef.current : null, handleOutside);\n\n const handleRefs = useCallback(\n (ref: HTMLButtonElement) => {\n setRef(ref);\n refs.setReference(ref);\n },\n [refs, setRef],\n );\n return (\n <div ref={boundaryRef}>\n <StyledButton\n onClick={handleTriggerOnClick}\n onKeyDown={handleOnKeyDown}\n innerRef={handleRefs}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM_BUTTON}\n aria-haspopup\n aria-expanded={userIsOpen ?? isOpen}\n {...useGetGlobalAttributes(otherProps)}\n type=\"button\"\n {...ownerProps}\n >\n {Icon && <Icon size=\"m\" />}\n </StyledButton>\n\n {refs.reference ? (\n <FloatingWrapper\n innerRef={refs.setFloating}\n isOpen={userIsOpen ?? isOpen}\n floatingStyles={floatingStyles}\n context={context}\n >\n <PopupMenuContent\n options={options}\n onItemClick={handleItemClick}\n onClose={handleOnClose}\n setIsOpen={hideTooltip}\n popupOnKeyPress={popupOnKeyPress}\n ownerProps={ownerProps}\n />\n <PopoverArrow {...arrowStyles} />\n </FloatingWrapper>\n ) : null}\n </div>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { getGlobalAttributes } from "@elliemae/ds-props-helpers";
|
|
4
4
|
import React2, { useContext } from "react";
|
|
5
5
|
import { DSGlobalHeaderContext } from "../../../../../DSGlobalHeaderContext.js";
|
|
6
|
-
import {
|
|
6
|
+
import { GLOBAL_HEADER_DATA_TESTID } from "../../../../../constants/index.js";
|
|
7
7
|
import { StyledItemButton, StyledItemContainer, StyledLabel, StyledList, StyledSeparator } from "./styles.js";
|
|
8
8
|
import { usePopupMenuContent } from "./usePopupMenuContent.js";
|
|
9
9
|
const PopupMenuContent = React2.memo(
|
|
@@ -12,80 +12,102 @@ const PopupMenuContent = React2.memo(
|
|
|
12
12
|
onItemClick,
|
|
13
13
|
onClose,
|
|
14
14
|
popupOnKeyPress,
|
|
15
|
-
setIsOpen
|
|
15
|
+
setIsOpen,
|
|
16
|
+
ownerProps
|
|
16
17
|
}) => {
|
|
17
18
|
const { instanceUID } = useContext(DSGlobalHeaderContext);
|
|
18
19
|
const { menuRef, setRef, keyboardNavigation } = usePopupMenuContent({ setIsOpen });
|
|
19
|
-
return /* @__PURE__ */ jsx(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
case "custom":
|
|
43
|
-
return /* @__PURE__ */ jsx(
|
|
44
|
-
StyledItemContainer,
|
|
45
|
-
{
|
|
46
|
-
role: "menuitem",
|
|
47
|
-
"data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM,
|
|
48
|
-
children: /* @__PURE__ */ jsx(
|
|
49
|
-
StyledItemButton,
|
|
20
|
+
return /* @__PURE__ */ jsx(
|
|
21
|
+
StyledList,
|
|
22
|
+
{
|
|
23
|
+
innerRef: menuRef,
|
|
24
|
+
role: "menu",
|
|
25
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_POPUP_MENU_LIST,
|
|
26
|
+
...ownerProps,
|
|
27
|
+
children: options.map((option) => {
|
|
28
|
+
const { type, Icon, label = "", onClick, Content, ...rest } = option;
|
|
29
|
+
const globalAttrs = getGlobalAttributes(rest);
|
|
30
|
+
const handleClick = (e) => {
|
|
31
|
+
onItemClick();
|
|
32
|
+
if (onClick) onClick(e);
|
|
33
|
+
};
|
|
34
|
+
const handleKeyDown = (e) => {
|
|
35
|
+
keyboardNavigation(e);
|
|
36
|
+
if (e.code === "Escape") onClose();
|
|
37
|
+
if (popupOnKeyPress) popupOnKeyPress(e);
|
|
38
|
+
};
|
|
39
|
+
switch (type) {
|
|
40
|
+
case "separator":
|
|
41
|
+
return /* @__PURE__ */ jsx(
|
|
42
|
+
StyledSeparator,
|
|
50
43
|
{
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
onKeyDown: handleKeyDown,
|
|
54
|
-
"data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM_BUTTON,
|
|
44
|
+
role: "none",
|
|
45
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_POPUP_MENU_SEPARATOR,
|
|
55
46
|
...globalAttrs,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
default:
|
|
64
|
-
return /* @__PURE__ */ jsx(
|
|
65
|
-
StyledItemContainer,
|
|
66
|
-
{
|
|
67
|
-
role: "menuitem",
|
|
68
|
-
"data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM,
|
|
69
|
-
children: /* @__PURE__ */ jsxs(
|
|
70
|
-
StyledItemButton,
|
|
47
|
+
...ownerProps
|
|
48
|
+
},
|
|
49
|
+
`${instanceUID}-separator-${label}`
|
|
50
|
+
);
|
|
51
|
+
case "custom":
|
|
52
|
+
return /* @__PURE__ */ jsx(
|
|
53
|
+
StyledItemContainer,
|
|
71
54
|
{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
55
|
+
role: "menuitem",
|
|
56
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_POPUP_MENU_ITEM,
|
|
57
|
+
...ownerProps,
|
|
58
|
+
children: /* @__PURE__ */ jsx(
|
|
59
|
+
StyledItemButton,
|
|
60
|
+
{
|
|
61
|
+
innerRef: setRef,
|
|
62
|
+
onClick: handleClick,
|
|
63
|
+
onKeyDown: handleKeyDown,
|
|
64
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_POPUP_MENU_ITEM_BUTTON,
|
|
65
|
+
...globalAttrs,
|
|
66
|
+
type: "button",
|
|
67
|
+
...ownerProps,
|
|
68
|
+
children: Content && /* @__PURE__ */ jsx(Content, {})
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
},
|
|
72
|
+
`${instanceUID}-popup-${label}`
|
|
73
|
+
);
|
|
74
|
+
default:
|
|
75
|
+
return /* @__PURE__ */ jsx(
|
|
76
|
+
StyledItemContainer,
|
|
77
|
+
{
|
|
78
|
+
role: "menuitem",
|
|
79
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_POPUP_MENU_ITEM,
|
|
80
|
+
...ownerProps,
|
|
81
|
+
children: /* @__PURE__ */ jsxs(
|
|
82
|
+
StyledItemButton,
|
|
83
|
+
{
|
|
84
|
+
innerRef: setRef,
|
|
85
|
+
onClick: handleClick,
|
|
86
|
+
onKeyDown: handleKeyDown,
|
|
87
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_POPUP_MENU_ITEM_BUTTON,
|
|
88
|
+
...globalAttrs,
|
|
89
|
+
type: "button",
|
|
90
|
+
...ownerProps,
|
|
91
|
+
children: [
|
|
92
|
+
Icon && /* @__PURE__ */ jsx(Icon, {}),
|
|
93
|
+
label && /* @__PURE__ */ jsx(
|
|
94
|
+
StyledLabel,
|
|
95
|
+
{
|
|
96
|
+
"data-testid": GLOBAL_HEADER_DATA_TESTID.MENUBAR_POPUP_MENU_ITEM_BUTTON_LABEL,
|
|
97
|
+
...ownerProps,
|
|
98
|
+
children: label
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
},
|
|
105
|
+
`${instanceUID}-popup-${label}`
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
})
|
|
87
109
|
}
|
|
88
|
-
|
|
110
|
+
);
|
|
89
111
|
}
|
|
90
112
|
);
|
|
91
113
|
export {
|