@elliemae/ds-global-header 3.0.0-next.9 → 3.0.1

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.
Files changed (194) hide show
  1. package/dist/cjs/DSGlobalHeader.js +61 -0
  2. package/dist/cjs/DSGlobalHeader.js.map +7 -0
  3. package/dist/cjs/DSGlobalHeaderContext.js +30 -0
  4. package/dist/cjs/DSGlobalHeaderContext.js.map +7 -0
  5. package/dist/cjs/config/useGlobalHeader.js +15 -23
  6. package/dist/cjs/config/useGlobalHeader.js.map +2 -2
  7. package/dist/cjs/config/useValidateProps.js +9 -29
  8. package/dist/cjs/config/useValidateProps.js.map +2 -2
  9. package/dist/cjs/config/validateHelpers.js +9 -16
  10. package/dist/cjs/config/validateHelpers.js.map +2 -2
  11. package/dist/cjs/exported-related/DSGlobalHeaderDatatestid.js +58 -0
  12. package/dist/cjs/exported-related/DSGlobalHeaderDatatestid.js.map +7 -0
  13. package/dist/cjs/exported-related/index.js +23 -0
  14. package/dist/cjs/exported-related/index.js.map +7 -0
  15. package/dist/cjs/exported-related/theming.js +60 -0
  16. package/dist/cjs/exported-related/theming.js.map +7 -0
  17. package/dist/cjs/index.js +14 -19
  18. package/dist/cjs/index.js.map +3 -3
  19. package/dist/cjs/parts/Breadcrumb/GlobalHeaderBreadcrumb.js +96 -0
  20. package/dist/cjs/parts/Breadcrumb/GlobalHeaderBreadcrumb.js.map +7 -0
  21. package/dist/cjs/{components → parts}/Breadcrumb/PureBreadcrumb.js +39 -26
  22. package/dist/cjs/parts/Breadcrumb/PureBreadcrumb.js.map +7 -0
  23. package/dist/cjs/parts/Breadcrumb/styles.js +101 -0
  24. package/dist/cjs/parts/Breadcrumb/styles.js.map +7 -0
  25. package/dist/cjs/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js +65 -0
  26. package/dist/cjs/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js.map +7 -0
  27. package/dist/cjs/parts/GlobalHeaderContainer.js +56 -0
  28. package/dist/cjs/parts/GlobalHeaderContainer.js.map +7 -0
  29. package/dist/cjs/parts/Logo/GlobalHeaderLogo.js +43 -0
  30. package/dist/cjs/parts/Logo/GlobalHeaderLogo.js.map +7 -0
  31. package/dist/cjs/parts/Logo/styles.js +31 -0
  32. package/dist/cjs/parts/Logo/styles.js.map +7 -0
  33. package/dist/cjs/parts/Toolbar/GlobalHeaderToolbar.js +160 -0
  34. package/dist/cjs/parts/Toolbar/GlobalHeaderToolbar.js.map +7 -0
  35. package/dist/cjs/{outOfTheBox → parts/Toolbar/outOfTheBox}/AppPicker/AppPicker.js +36 -37
  36. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js.map +7 -0
  37. package/dist/cjs/{outOfTheBox → parts/Toolbar/outOfTheBox}/PopupMenu/PopupMenu.js +54 -38
  38. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js.map +7 -0
  39. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js +123 -0
  40. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js.map +7 -0
  41. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.js +66 -0
  42. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.js.map +7 -0
  43. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js +74 -0
  44. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js.map +7 -0
  45. package/dist/cjs/{outOfTheBox → parts/Toolbar/outOfTheBox}/SearchToggle/SearchToggle.js +54 -41
  46. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js.map +7 -0
  47. package/dist/cjs/{outOfTheBox → parts/Toolbar/outOfTheBox}/SearchToggle/styles.js +16 -20
  48. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/styles.js.map +7 -0
  49. package/dist/cjs/parts/Toolbar/outOfTheBox/index.js +24 -0
  50. package/dist/cjs/parts/Toolbar/outOfTheBox/index.js.map +7 -0
  51. package/dist/cjs/parts/Toolbar/styles.js +40 -0
  52. package/dist/cjs/parts/Toolbar/styles.js.map +7 -0
  53. package/dist/cjs/parts/Toolbar/useGlobalHeaderToolbar.js +65 -0
  54. package/dist/cjs/parts/Toolbar/useGlobalHeaderToolbar.js.map +7 -0
  55. package/dist/cjs/parts/styles.js +68 -0
  56. package/dist/cjs/parts/styles.js.map +7 -0
  57. package/dist/cjs/react-desc-prop-types.js +76 -0
  58. package/dist/cjs/react-desc-prop-types.js.map +7 -0
  59. package/dist/cjs/sharedTypes.js +20 -0
  60. package/dist/cjs/sharedTypes.js.map +7 -0
  61. package/dist/esm/DSGlobalHeader.js +39 -0
  62. package/dist/esm/DSGlobalHeader.js.map +7 -0
  63. package/dist/esm/DSGlobalHeaderContext.js +8 -0
  64. package/dist/esm/DSGlobalHeaderContext.js.map +7 -0
  65. package/dist/esm/config/useGlobalHeader.js +6 -7
  66. package/dist/esm/config/useGlobalHeader.js.map +2 -2
  67. package/dist/esm/config/useValidateProps.js +0 -13
  68. package/dist/esm/config/useValidateProps.js.map +2 -2
  69. package/dist/esm/config/validateHelpers.js.map +2 -2
  70. package/dist/esm/exported-related/DSGlobalHeaderDatatestid.js +36 -0
  71. package/dist/esm/exported-related/DSGlobalHeaderDatatestid.js.map +7 -0
  72. package/dist/esm/exported-related/index.js +4 -0
  73. package/dist/esm/exported-related/index.js.map +7 -0
  74. package/dist/esm/exported-related/theming.js +38 -0
  75. package/dist/esm/exported-related/theming.js.map +7 -0
  76. package/dist/esm/index.js +3 -2
  77. package/dist/esm/index.js.map +3 -3
  78. package/dist/esm/parts/Breadcrumb/GlobalHeaderBreadcrumb.js +76 -0
  79. package/dist/esm/parts/Breadcrumb/GlobalHeaderBreadcrumb.js.map +7 -0
  80. package/dist/esm/{components → parts}/Breadcrumb/PureBreadcrumb.js +31 -11
  81. package/dist/esm/parts/Breadcrumb/PureBreadcrumb.js.map +7 -0
  82. package/dist/esm/parts/Breadcrumb/styles.js +79 -0
  83. package/dist/esm/parts/Breadcrumb/styles.js.map +7 -0
  84. package/dist/esm/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js +43 -0
  85. package/dist/esm/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js.map +7 -0
  86. package/dist/esm/{config/useGetPropsWithDefaults.js → parts/GlobalHeaderContainer.js} +17 -8
  87. package/dist/esm/parts/GlobalHeaderContainer.js.map +7 -0
  88. package/dist/esm/parts/Logo/GlobalHeaderLogo.js +21 -0
  89. package/dist/esm/parts/Logo/GlobalHeaderLogo.js.map +7 -0
  90. package/dist/esm/parts/Logo/styles.js +9 -0
  91. package/dist/esm/parts/Logo/styles.js.map +7 -0
  92. package/dist/esm/parts/Toolbar/GlobalHeaderToolbar.js +140 -0
  93. package/dist/esm/parts/Toolbar/GlobalHeaderToolbar.js.map +7 -0
  94. package/dist/esm/{outOfTheBox → parts/Toolbar/outOfTheBox}/AppPicker/AppPicker.js +29 -23
  95. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js.map +7 -0
  96. package/dist/esm/{outOfTheBox → parts/Toolbar/outOfTheBox}/PopupMenu/PopupMenu.js +46 -23
  97. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js.map +7 -0
  98. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js +103 -0
  99. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js.map +7 -0
  100. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.js +44 -0
  101. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.js.map +7 -0
  102. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js +52 -0
  103. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js.map +7 -0
  104. package/dist/esm/{outOfTheBox → parts/Toolbar/outOfTheBox}/SearchToggle/SearchToggle.js +45 -25
  105. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js.map +7 -0
  106. package/dist/esm/{outOfTheBox → parts/Toolbar/outOfTheBox}/SearchToggle/styles.js +7 -4
  107. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/styles.js.map +7 -0
  108. package/dist/esm/{outOfTheBox → parts/Toolbar/outOfTheBox}/index.js +0 -0
  109. package/dist/esm/{outOfTheBox → parts/Toolbar/outOfTheBox}/index.js.map +1 -1
  110. package/dist/esm/parts/Toolbar/styles.js +18 -0
  111. package/dist/esm/parts/Toolbar/styles.js.map +7 -0
  112. package/dist/esm/parts/Toolbar/useGlobalHeaderToolbar.js +43 -0
  113. package/dist/esm/parts/Toolbar/useGlobalHeaderToolbar.js.map +7 -0
  114. package/dist/esm/parts/styles.js +46 -0
  115. package/dist/esm/parts/styles.js.map +7 -0
  116. package/dist/esm/react-desc-prop-types.js +56 -0
  117. package/dist/esm/react-desc-prop-types.js.map +7 -0
  118. package/dist/esm/sharedTypes.js +2 -0
  119. package/dist/esm/{GlobalHeaderTypes.js.map → sharedTypes.js.map} +0 -0
  120. package/package.json +17 -17
  121. package/dist/cjs/GlobalHeader.js +0 -57
  122. package/dist/cjs/GlobalHeader.js.map +0 -7
  123. package/dist/cjs/GlobalHeaderContainer.js +0 -41
  124. package/dist/cjs/GlobalHeaderContainer.js.map +0 -7
  125. package/dist/cjs/GlobalHeaderContext.js +0 -46
  126. package/dist/cjs/GlobalHeaderContext.js.map +0 -7
  127. package/dist/cjs/GlobalHeaderTypes.js +0 -27
  128. package/dist/cjs/GlobalHeaderTypes.js.map +0 -7
  129. package/dist/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js +0 -110
  130. package/dist/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js.map +0 -7
  131. package/dist/cjs/components/Breadcrumb/PureBreadcrumb.js.map +0 -7
  132. package/dist/cjs/components/Breadcrumb/styles.js +0 -83
  133. package/dist/cjs/components/Breadcrumb/styles.js.map +0 -7
  134. package/dist/cjs/components/Title/GlobalHeaderTitle.js +0 -48
  135. package/dist/cjs/components/Title/GlobalHeaderTitle.js.map +0 -7
  136. package/dist/cjs/components/Toolbar/GlobalHeaderToolbar.js +0 -49
  137. package/dist/cjs/components/Toolbar/GlobalHeaderToolbar.js.map +0 -7
  138. package/dist/cjs/components/Toolbar/ToolbarItems.js +0 -121
  139. package/dist/cjs/components/Toolbar/ToolbarItems.js.map +0 -7
  140. package/dist/cjs/components/Toolbar/styles.js +0 -61
  141. package/dist/cjs/components/Toolbar/styles.js.map +0 -7
  142. package/dist/cjs/config/useGetPropsWithDefaults.js +0 -54
  143. package/dist/cjs/config/useGetPropsWithDefaults.js.map +0 -7
  144. package/dist/cjs/defaultProps.js +0 -41
  145. package/dist/cjs/defaultProps.js.map +0 -7
  146. package/dist/cjs/outOfTheBox/AppPicker/AppPicker.js.map +0 -7
  147. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenu.js.map +0 -7
  148. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js +0 -97
  149. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js.map +0 -7
  150. package/dist/cjs/outOfTheBox/PopupMenu/styles.js +0 -67
  151. package/dist/cjs/outOfTheBox/PopupMenu/styles.js.map +0 -7
  152. package/dist/cjs/outOfTheBox/SearchToggle/SearchToggle.js.map +0 -7
  153. package/dist/cjs/outOfTheBox/SearchToggle/styles.js.map +0 -7
  154. package/dist/cjs/outOfTheBox/index.js +0 -30
  155. package/dist/cjs/outOfTheBox/index.js.map +0 -7
  156. package/dist/cjs/propTypes.js +0 -56
  157. package/dist/cjs/propTypes.js.map +0 -7
  158. package/dist/cjs/styles.js +0 -43
  159. package/dist/cjs/styles.js.map +0 -7
  160. package/dist/esm/GlobalHeader.js +0 -28
  161. package/dist/esm/GlobalHeader.js.map +0 -7
  162. package/dist/esm/GlobalHeaderContainer.js +0 -12
  163. package/dist/esm/GlobalHeaderContainer.js.map +0 -7
  164. package/dist/esm/GlobalHeaderContext.js +0 -17
  165. package/dist/esm/GlobalHeaderContext.js.map +0 -7
  166. package/dist/esm/GlobalHeaderTypes.js +0 -2
  167. package/dist/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js +0 -83
  168. package/dist/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js.map +0 -7
  169. package/dist/esm/components/Breadcrumb/PureBreadcrumb.js.map +0 -7
  170. package/dist/esm/components/Breadcrumb/styles.js +0 -54
  171. package/dist/esm/components/Breadcrumb/styles.js.map +0 -7
  172. package/dist/esm/components/Title/GlobalHeaderTitle.js +0 -19
  173. package/dist/esm/components/Title/GlobalHeaderTitle.js.map +0 -7
  174. package/dist/esm/components/Toolbar/GlobalHeaderToolbar.js +0 -20
  175. package/dist/esm/components/Toolbar/GlobalHeaderToolbar.js.map +0 -7
  176. package/dist/esm/components/Toolbar/ToolbarItems.js +0 -94
  177. package/dist/esm/components/Toolbar/ToolbarItems.js.map +0 -7
  178. package/dist/esm/components/Toolbar/styles.js +0 -32
  179. package/dist/esm/components/Toolbar/styles.js.map +0 -7
  180. package/dist/esm/config/useGetPropsWithDefaults.js.map +0 -7
  181. package/dist/esm/defaultProps.js +0 -12
  182. package/dist/esm/defaultProps.js.map +0 -7
  183. package/dist/esm/outOfTheBox/AppPicker/AppPicker.js.map +0 -7
  184. package/dist/esm/outOfTheBox/PopupMenu/PopupMenu.js.map +0 -7
  185. package/dist/esm/outOfTheBox/PopupMenu/PopupMenuContent.js +0 -70
  186. package/dist/esm/outOfTheBox/PopupMenu/PopupMenuContent.js.map +0 -7
  187. package/dist/esm/outOfTheBox/PopupMenu/styles.js +0 -38
  188. package/dist/esm/outOfTheBox/PopupMenu/styles.js.map +0 -7
  189. package/dist/esm/outOfTheBox/SearchToggle/SearchToggle.js.map +0 -7
  190. package/dist/esm/outOfTheBox/SearchToggle/styles.js.map +0 -7
  191. package/dist/esm/propTypes.js +0 -27
  192. package/dist/esm/propTypes.js.map +0 -7
  193. package/dist/esm/styles.js +0 -14
  194. package/dist/esm/styles.js.map +0 -7
@@ -27,24 +27,26 @@ var __objRest = (source, exclude) => {
27
27
  return target;
28
28
  };
29
29
  import * as React from "react";
30
- import React2, { useState, useRef, useCallback, useMemo } from "react";
30
+ import React2, { useState, useRef, useCallback } from "react";
31
31
  import { DSAppPicker } from "@elliemae/ds-app-picker";
32
- import { mergeRefs } from "@elliemae/ds-utilities";
32
+ import { mergeRefs, getGlobalAttributes, useCallbackAfterRender } from "@elliemae/ds-utilities";
33
33
  import { MenuPicker } from "@elliemae/ds-icons";
34
- import { getDataProps } from "@elliemae/ds-props-helpers";
35
- import { Button } from "../../components/Toolbar/styles";
34
+ import { StyledButton } from "../../../styles";
35
+ import { DSGlobalHeaderDatatestid } from "../../../../exported-related";
36
36
  const AppPicker = (_a) => {
37
37
  var _b = _a, {
38
38
  label,
39
39
  id,
40
+ setRef,
40
41
  componentProps
41
42
  } = _b, otherProps = __objRest(_b, [
42
43
  "label",
43
44
  "id",
45
+ "setRef",
44
46
  "componentProps"
45
47
  ]);
46
48
  const [isOpen, setIsOpen] = useState(false);
47
- const buttonRef = useRef(null);
49
+ const internalTriggerRef = useRef(null);
48
50
  const {
49
51
  apps,
50
52
  icon,
@@ -60,15 +62,17 @@ const AppPicker = (_a) => {
60
62
  triggerRef,
61
63
  triggerOnClick
62
64
  } = componentProps;
65
+ const schedule = useCallbackAfterRender();
66
+ const focusTrigger = useCallback(() => internalTriggerRef.current?.focus(), []);
63
67
  const handleTriggerKeyDown = useCallback((e) => {
64
- if (e.code === "Enter" || e.code === "Space") {
68
+ if (e.code === "Enter" || e.code === "Space" || e.code === "ArrowDown") {
65
69
  setIsOpen(true);
66
70
  }
67
71
  }, []);
68
72
  const handleAppPickerOnKeyDown = useCallback((e) => {
69
- if (e.code === "Escape") {
73
+ if (e.key === "Escape") {
70
74
  setIsOpen(false);
71
- buttonRef?.current?.focus();
75
+ schedule(focusTrigger);
72
76
  }
73
77
  }, []);
74
78
  const handleOnClickOutside = useCallback(() => {
@@ -77,20 +81,6 @@ const AppPicker = (_a) => {
77
81
  const handleOnClick = useCallback(() => {
78
82
  setIsOpen(true);
79
83
  }, []);
80
- const renderTrigger = useMemo(() => ({ ref }) => /* @__PURE__ */ React2.createElement("div", {
81
- ref
82
- }, /* @__PURE__ */ React2.createElement(Button, __spreadValues({
83
- onClick: triggerOnClick ?? handleOnClick,
84
- onKeyDown: handleTriggerKeyDown,
85
- ref: mergeRefs(buttonRef, triggerRef),
86
- title: label,
87
- "data-testid": "gh-toolbar-item",
88
- id
89
- }, getDataProps(otherProps)), /* @__PURE__ */ React2.createElement(MenuPicker, {
90
- fill: "#FFF",
91
- width: 20.73,
92
- height: 20.73
93
- }))), [triggerOnClick, handleOnClick, handleTriggerKeyDown, triggerRef, label, id, otherProps]);
94
84
  return /* @__PURE__ */ React2.createElement(DSAppPicker, {
95
85
  apps,
96
86
  customApps,
@@ -100,7 +90,23 @@ const AppPicker = (_a) => {
100
90
  onKeyDown: userOnKeyDown ?? handleAppPickerOnKeyDown,
101
91
  actionRef,
102
92
  onClickOutside: userOnClickOutside ?? handleOnClickOutside,
103
- renderTrigger: userRenderTrigger ?? renderTrigger,
93
+ renderTrigger: userRenderTrigger || (({ ref }) => /* @__PURE__ */ React2.createElement(StyledButton, __spreadValues({
94
+ onClick: triggerOnClick ?? handleOnClick,
95
+ onKeyDown: handleTriggerKeyDown,
96
+ ref: (buttonRef) => {
97
+ setRef(buttonRef);
98
+ mergeRefs(internalTriggerRef, triggerRef, ref)(buttonRef);
99
+ },
100
+ "aria-label": label,
101
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.ITEM_BUTTON,
102
+ role: "menuitem",
103
+ "aria-haspopup": true,
104
+ "aria-expanded": userIsOpen ?? isOpen,
105
+ id
106
+ }, getGlobalAttributes(otherProps)), /* @__PURE__ */ React2.createElement(MenuPicker, {
107
+ width: 20.73,
108
+ height: 20.73
109
+ }))),
104
110
  isOpen: userIsOpen ?? isOpen,
105
111
  onClose,
106
112
  triggerRef
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 React, { useState, useRef, useCallback } from 'react';\nimport { DSAppPicker } from '@elliemae/ds-app-picker';\nimport { mergeRefs, getGlobalAttributes, useCallbackAfterRender } from '@elliemae/ds-utilities';\nimport { MenuPicker } from '@elliemae/ds-icons';\nimport { StyledButton } from '../../../styles';\nimport { DSGlobalHeaderDatatestid } from '../../../../exported-related';\nimport type { DSGlobalHeaderInternalsT } from '../../../../sharedTypes';\n\nexport const AppPicker = ({\n label,\n id,\n setRef,\n componentProps,\n ...otherProps\n}: DSGlobalHeaderInternalsT.AppPickerProps): 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 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((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false);\n schedule(focusTrigger);\n }\n }, []);\n\n const handleOnClickOutside = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const handleOnClick: React.MouseEventHandler = useCallback(() => {\n setIsOpen(true);\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={\n userRenderTrigger ||\n (({ ref }: { ref: React.MutableRefObject<HTMLButtonElement> }) => (\n <StyledButton\n onClick={triggerOnClick ?? handleOnClick}\n onKeyDown={handleTriggerKeyDown}\n ref={(buttonRef: HTMLButtonElement) => {\n setRef(buttonRef);\n mergeRefs(internalTriggerRef, triggerRef, ref)(buttonRef);\n }}\n aria-label={label}\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.ITEM_BUTTON}\n role=\"menuitem\"\n aria-haspopup\n aria-expanded={userIsOpen ?? isOpen}\n id={id}\n {...getGlobalAttributes(otherProps)}\n >\n <MenuPicker width={20.73} height={20.73} />\n </StyledButton>\n ))\n }\n isOpen={userIsOpen ?? isOpen}\n onClose={onClose}\n triggerRef={triggerRef}\n />\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAGO,MAAM,YAAY,CAAC,OAMkC;AANlC,eACxB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MAJwB,IAKrB,uBALqB,IAKrB;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,CAAC,QAAQ,aAAa,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,MACE;AAEJ,QAAM,WAAW,uBAAuB;AAExC,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,YAAY,CAAC,MAA2B;AACvE,QAAI,EAAE,QAAQ,UAAU;AACtB,gBAAU,KAAK;AACf,eAAS,YAAY;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,uBAAuB,YAAY,MAAM;AAC7C,cAAU,KAAK;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,QAAM,gBAAyC,YAAY,MAAM;AAC/D,cAAU,IAAI;AAAA,EAChB,GAAG,CAAC,CAAC;AAEL,SACE,qCAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,iBAAiB;AAAA,IAC5B;AAAA,IACA,gBAAgB,sBAAsB;AAAA,IACtC,eACE,qBACC,EAAC,EAAE,UACF,qCAAC;AAAA,MACC,SAAS,kBAAkB;AAAA,MAC3B,WAAW;AAAA,MACX,KAAK,CAAC,cAAiC;AACrC,eAAO,SAAS;AAChB,kBAAU,oBAAoB,YAAY,GAAG,EAAE,SAAS;AAAA,MAC1D;AAAA,MACA,cAAY;AAAA,MACZ,eAAa,yBAAyB,QAAQ;AAAA,MAC9C,MAAK;AAAA,MACL,iBAAa;AAAA,MACb,iBAAe,cAAc;AAAA,MAC7B;AAAA,OACI,oBAAoB,UAAU,IAElC,qCAAC;AAAA,MAAW,OAAO;AAAA,MAAO,QAAQ;AAAA,KAAO,CAC3C;AAAA,IAGJ,QAAQ,cAAc;AAAA,IACtB;AAAA,IACA;AAAA,GACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -27,13 +27,28 @@ var __objRest = (source, exclude) => {
27
27
  return target;
28
28
  };
29
29
  import * as React from "react";
30
- import React2, { useState, useCallback, useMemo } from "react";
30
+ import React2, { useState, useCallback } from "react";
31
+ import { useGetGlobalAttributes } from "@elliemae/ds-utilities";
31
32
  import { DSPopperJS } from "@elliemae/ds-popperjs";
32
- import { PopupMenuContent } from "./PopupMenuContent";
33
- import { Button } from "../../components/Toolbar/styles";
34
- import { getDataProps } from "@elliemae/ds-props-helpers";
33
+ import { PopupMenuContent } from "./menuContent/PopupMenuContent";
34
+ import { StyledButton } from "../../../styles";
35
+ import { DSGlobalHeaderDatatestid } from "../../../../exported-related";
35
36
  const PopupMenu = (_a) => {
36
- var _b = _a, { Icon, title, onClick, id, componentProps } = _b, otherProps = __objRest(_b, ["Icon", "title", "onClick", "id", "componentProps"]);
37
+ var _b = _a, {
38
+ Icon,
39
+ title,
40
+ onClick,
41
+ id,
42
+ setRef,
43
+ componentProps
44
+ } = _b, otherProps = __objRest(_b, [
45
+ "Icon",
46
+ "title",
47
+ "onClick",
48
+ "id",
49
+ "setRef",
50
+ "componentProps"
51
+ ]);
37
52
  const [isOpen, setIsOpen] = useState(false);
38
53
  const [buttonRef, setButtonRef] = useState(null);
39
54
  const {
@@ -44,8 +59,8 @@ const PopupMenu = (_a) => {
44
59
  options,
45
60
  closeOnClick
46
61
  } = componentProps;
47
- const handleKeyPress = useCallback((e) => {
48
- if (e.code === "Enter" || e.code === "Space") {
62
+ const handleOnKeyDown = useCallback((e) => {
63
+ if (e.code === "ArrowDown") {
49
64
  setIsOpen(true);
50
65
  }
51
66
  if (onKeyPress)
@@ -60,34 +75,42 @@ const PopupMenu = (_a) => {
60
75
  const handleTriggerOnClick = useCallback((e) => {
61
76
  if (userIsOpen === void 0)
62
77
  setIsOpen(true);
63
- onClick(e);
78
+ if (onClick)
79
+ onClick(e);
64
80
  }, [onClick, userIsOpen]);
65
81
  const handleItemClick = useCallback(() => {
66
82
  if (closeOnClick && userIsOpen === void 0)
67
83
  handleOnClose();
68
84
  }, [closeOnClick, handleOnClose, userIsOpen]);
69
- const content = useMemo(() => /* @__PURE__ */ React2.createElement(PopupMenuContent, {
70
- options,
71
- onItemClick: handleItemClick,
72
- onClose: handleOnClose,
73
- popupOnKeyPress
74
- }), [options, handleItemClick, handleOnClose, popupOnKeyPress]);
75
- return /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement(Button, __spreadValues({
85
+ const handleRefs = useCallback((ref) => {
86
+ setRef(ref);
87
+ setButtonRef(ref);
88
+ }, []);
89
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(StyledButton, __spreadValues({
76
90
  onClick: handleTriggerOnClick,
77
- onKeyPress: handleKeyPress,
78
- title,
79
- ref: setButtonRef,
80
- "data-testid": "gh-toolbar-item",
91
+ onKeyDown: handleOnKeyDown,
92
+ "aria-label": title,
93
+ ref: handleRefs,
94
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.ITEM_BUTTON,
95
+ role: "menuitem",
96
+ "aria-haspopup": true,
97
+ "aria-expanded": userIsOpen ?? isOpen,
81
98
  id
82
- }, getDataProps(otherProps)), Icon && /* @__PURE__ */ React2.createElement(Icon, {
83
- fill: "#FFF",
99
+ }, useGetGlobalAttributes(otherProps)), Icon && /* @__PURE__ */ React2.createElement(Icon, {
84
100
  size: "m"
85
101
  })), /* @__PURE__ */ React2.createElement(DSPopperJS, {
86
102
  referenceElement: buttonRef,
87
103
  showPopover: userIsOpen ?? isOpen,
88
104
  closeContextMenu: handleOnClose,
89
- onClickOutside
90
- }, content));
105
+ onClickOutside,
106
+ withoutPortal: true
107
+ }, /* @__PURE__ */ React2.createElement(PopupMenuContent, {
108
+ options,
109
+ onItemClick: handleItemClick,
110
+ onClose: handleOnClose,
111
+ setIsOpen,
112
+ popupOnKeyPress
113
+ })));
91
114
  };
92
115
  export {
93
116
  PopupMenu
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 React, { useState, useCallback } from 'react';\nimport { useGetGlobalAttributes } from '@elliemae/ds-utilities';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport { PopupMenuContent } from './menuContent/PopupMenuContent';\nimport { StyledButton } from '../../../styles';\nimport { DSGlobalHeaderDatatestid } from '../../../../exported-related';\nimport type { DSGlobalHeaderInternalsT } from '../../../../sharedTypes';\n\nexport const PopupMenu = ({\n Icon,\n title,\n onClick,\n id,\n setRef,\n componentProps,\n ...otherProps\n}: DSGlobalHeaderInternalsT.PopupProps): JSX.Element => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [buttonRef, setButtonRef] = useState<HTMLButtonElement | null>(null);\n\n const {\n onClickOutside = () => null,\n onKeyPress,\n popupOnKeyPress,\n isOpen: userIsOpen,\n options,\n closeOnClick,\n } = componentProps;\n\n const handleOnKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.code === 'ArrowDown') {\n setIsOpen(true);\n }\n if (onKeyPress) onKeyPress(e);\n },\n [onKeyPress],\n );\n\n const handleOnClose = useCallback(() => {\n if (userIsOpen === undefined) {\n setIsOpen(false);\n }\n buttonRef?.focus();\n }, [buttonRef, userIsOpen]);\n\n const handleTriggerOnClick = useCallback(\n (e: React.MouseEvent) => {\n if (userIsOpen === undefined) setIsOpen(true);\n if (onClick) onClick(e);\n },\n [onClick, userIsOpen],\n );\n\n const handleItemClick = useCallback(() => {\n if (closeOnClick && userIsOpen === undefined) handleOnClose();\n }, [closeOnClick, handleOnClose, userIsOpen]);\n\n const handleRefs = useCallback((ref) => {\n setRef(ref);\n setButtonRef(ref);\n }, []);\n\n return (\n <>\n <StyledButton\n onClick={handleTriggerOnClick}\n onKeyDown={handleOnKeyDown}\n aria-label={title}\n ref={handleRefs}\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.ITEM_BUTTON}\n role=\"menuitem\"\n aria-haspopup\n aria-expanded={userIsOpen ?? isOpen}\n id={id}\n {...useGetGlobalAttributes(otherProps)}\n >\n {Icon && <Icon size=\"m\" />}\n </StyledButton>\n <DSPopperJS\n referenceElement={buttonRef}\n showPopover={userIsOpen ?? isOpen}\n closeContextMenu={handleOnClose}\n onClickOutside={onClickOutside}\n withoutPortal\n >\n <PopupMenuContent\n options={options}\n onItemClick={handleItemClick}\n onClose={handleOnClose}\n setIsOpen={setIsOpen}\n popupOnKeyPress={popupOnKeyPress}\n />\n </DSPopperJS>\n </>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAGO,MAAM,YAAY,CAAC,OAQ8B;AAR9B,eACxB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MANwB,IAOrB,uBAPqB,IAOrB;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,CAAC,QAAQ,aAAa,SAAkB,KAAK;AACnD,QAAM,CAAC,WAAW,gBAAgB,SAAmC,IAAI;AAEzE,QAAM;AAAA,IACJ,iBAAiB,MAAM;AAAA,IACvB;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,kBAAkB,YACtB,CAAC,MAA2B;AAC1B,QAAI,EAAE,SAAS,aAAa;AAC1B,gBAAU,IAAI;AAAA,IAChB;AACA,QAAI;AAAY,iBAAW,CAAC;AAAA,EAC9B,GACA,CAAC,UAAU,CACb;AAEA,QAAM,gBAAgB,YAAY,MAAM;AACtC,QAAI,eAAe,QAAW;AAC5B,gBAAU,KAAK;AAAA,IACjB;AACA,eAAW,MAAM;AAAA,EACnB,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,QAAM,uBAAuB,YAC3B,CAAC,MAAwB;AACvB,QAAI,eAAe;AAAW,gBAAU,IAAI;AAC5C,QAAI;AAAS,cAAQ,CAAC;AAAA,EACxB,GACA,CAAC,SAAS,UAAU,CACtB;AAEA,QAAM,kBAAkB,YAAY,MAAM;AACxC,QAAI,gBAAgB,eAAe;AAAW,oBAAc;AAAA,EAC9D,GAAG,CAAC,cAAc,eAAe,UAAU,CAAC;AAE5C,QAAM,aAAa,YAAY,CAAC,QAAQ;AACtC,WAAO,GAAG;AACV,iBAAa,GAAG;AAAA,EAClB,GAAG,CAAC,CAAC;AAEL,SACE,4DACE,qCAAC;AAAA,IACC,SAAS;AAAA,IACT,WAAW;AAAA,IACX,cAAY;AAAA,IACZ,KAAK;AAAA,IACL,eAAa,yBAAyB,QAAQ;AAAA,IAC9C,MAAK;AAAA,IACL,iBAAa;AAAA,IACb,iBAAe,cAAc;AAAA,IAC7B;AAAA,KACI,uBAAuB,UAAU,IAEpC,QAAQ,qCAAC;AAAA,IAAK,MAAK;AAAA,GAAI,CAC1B,GACA,qCAAC;AAAA,IACC,kBAAkB;AAAA,IAClB,aAAa,cAAc;AAAA,IAC3B,kBAAkB;AAAA,IAClB;AAAA,IACA,eAAa;AAAA,KAEb,qCAAC;AAAA,IACC;AAAA,IACA,aAAa;AAAA,IACb,SAAS;AAAA,IACT;AAAA,IACA;AAAA,GACF,CACF,CACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,103 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __objRest = (source, exclude) => {
18
+ var target = {};
19
+ for (var prop in source)
20
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
21
+ target[prop] = source[prop];
22
+ if (source != null && __getOwnPropSymbols)
23
+ for (var prop of __getOwnPropSymbols(source)) {
24
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
25
+ target[prop] = source[prop];
26
+ }
27
+ return target;
28
+ };
29
+ import * as React from "react";
30
+ import React2, { useContext } from "react";
31
+ import { getGlobalAttributes } from "@elliemae/ds-utilities";
32
+ import { StyledSeparator, StyledItemButton, StyledLabel, StyledList, StyledItemContainer } from "./styles";
33
+ import { DSGlobalHeaderContext } from "../../../../../DSGlobalHeaderContext";
34
+ import { DSGlobalHeaderDatatestid } from "../../../../../exported-related";
35
+ import { usePopupMenuContent } from "./usePopupMenuContent";
36
+ const PopupMenuContent = React2.memo(({
37
+ options,
38
+ onItemClick,
39
+ onClose,
40
+ popupOnKeyPress,
41
+ setIsOpen
42
+ }) => {
43
+ const { instanceUID } = useContext(DSGlobalHeaderContext);
44
+ const { menuRef, setRef, keyboardNavigation } = usePopupMenuContent({ setIsOpen });
45
+ return /* @__PURE__ */ React2.createElement(StyledList, {
46
+ ref: menuRef,
47
+ role: "menu",
48
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.LIST
49
+ }, options.map((option) => {
50
+ const _a = option, { type, Icon, label = "", onClick, Content, id } = _a, rest = __objRest(_a, ["type", "Icon", "label", "onClick", "Content", "id"]);
51
+ const globalAttrs = getGlobalAttributes(rest);
52
+ const handleClick = (e) => {
53
+ onItemClick();
54
+ if (onClick)
55
+ onClick(e);
56
+ };
57
+ const handleKeyDown = (e) => {
58
+ keyboardNavigation(e);
59
+ if (e.code === "Escape")
60
+ onClose();
61
+ if (popupOnKeyPress)
62
+ popupOnKeyPress(e);
63
+ };
64
+ switch (type) {
65
+ case "separator":
66
+ return /* @__PURE__ */ React2.createElement(StyledSeparator, __spreadValues({
67
+ key: `${instanceUID}-separator-${label}`,
68
+ role: "none",
69
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.SEPARATOR
70
+ }, globalAttrs));
71
+ case "custom":
72
+ return /* @__PURE__ */ React2.createElement(StyledItemContainer, {
73
+ key: `${instanceUID}-popup-${label}`,
74
+ role: "menuitem",
75
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM
76
+ }, /* @__PURE__ */ React2.createElement(StyledItemButton, __spreadValues({
77
+ ref: setRef,
78
+ onClick: handleClick,
79
+ onKeyDown: handleKeyDown,
80
+ id,
81
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM_BUTTON
82
+ }, globalAttrs), Content && /* @__PURE__ */ React2.createElement(Content, null)));
83
+ default:
84
+ return /* @__PURE__ */ React2.createElement(StyledItemContainer, {
85
+ key: `${instanceUID}-popup-${label}`,
86
+ role: "menuitem",
87
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM
88
+ }, /* @__PURE__ */ React2.createElement(StyledItemButton, __spreadValues({
89
+ ref: setRef,
90
+ onClick: handleClick,
91
+ onKeyDown: handleKeyDown,
92
+ id,
93
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM_BUTTON
94
+ }, globalAttrs), Icon && /* @__PURE__ */ React2.createElement(Icon, null), label && /* @__PURE__ */ React2.createElement(StyledLabel, {
95
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM_BUTTON_LABEL
96
+ }, label)));
97
+ }
98
+ }));
99
+ });
100
+ export {
101
+ PopupMenuContent
102
+ };
103
+ //# sourceMappingURL=PopupMenuContent.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../../src/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext } from 'react';\nimport { getGlobalAttributes } from '@elliemae/ds-utilities';\nimport { StyledSeparator, StyledItemButton, StyledLabel, StyledList, StyledItemContainer } from './styles';\nimport { DSGlobalHeaderContext } from '../../../../../DSGlobalHeaderContext';\nimport { DSGlobalHeaderDatatestid } from '../../../../../exported-related';\nimport { usePopupMenuContent } from './usePopupMenuContent';\nimport type { DSGlobalHeaderInternalsT } from '../../../../../sharedTypes';\n\nexport const PopupMenuContent = React.memo(\n ({\n options,\n onItemClick,\n onClose,\n popupOnKeyPress,\n setIsOpen,\n }: DSGlobalHeaderInternalsT.PopupMenuContentProps): JSX.Element => {\n const { instanceUID } = useContext(DSGlobalHeaderContext);\n\n const { menuRef, setRef, keyboardNavigation } = usePopupMenuContent({ setIsOpen });\n\n return (\n <StyledList ref={menuRef} role=\"menu\" data-testid={DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.LIST}>\n {options.map((option) => {\n const { type, Icon, label = '', onClick, Content, id, ...rest } = option;\n\n const globalAttrs = getGlobalAttributes(rest);\n\n const handleClick = (e: React.MouseEvent) => {\n onItemClick();\n if (onClick) onClick(e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n keyboardNavigation(e);\n if (e.code === 'Escape') onClose();\n if (popupOnKeyPress) popupOnKeyPress(e);\n };\n\n switch (type) {\n case 'separator':\n return (\n <StyledSeparator\n key={`${instanceUID}-separator-${label}`}\n role=\"none\"\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.SEPARATOR}\n {...globalAttrs}\n />\n );\n case 'custom':\n return (\n <StyledItemContainer\n key={`${instanceUID}-popup-${label}`}\n role=\"menuitem\"\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM}\n >\n <StyledItemButton\n ref={setRef}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n id={id}\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM_BUTTON}\n {...globalAttrs}\n >\n {Content && <Content />}\n </StyledItemButton>\n </StyledItemContainer>\n );\n default:\n return (\n <StyledItemContainer\n key={`${instanceUID}-popup-${label}`}\n role=\"menuitem\"\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM}\n >\n <StyledItemButton\n ref={setRef}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n id={id}\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM_BUTTON}\n {...globalAttrs}\n >\n {Icon && <Icon />}\n {label && (\n <StyledLabel data-testid={DSGlobalHeaderDatatestid.MENUBAR.POPUP_MENU.ITEM_BUTTON_LABEL}>\n {label}\n </StyledLabel>\n )}\n </StyledItemButton>\n </StyledItemContainer>\n );\n }\n })}\n </StyledList>\n );\n },\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAGO,MAAM,mBAAmB,OAAM,KACpC,CAAC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACiE;AACjE,QAAM,EAAE,gBAAgB,WAAW,qBAAqB;AAExD,QAAM,EAAE,SAAS,QAAQ,uBAAuB,oBAAoB,EAAE,UAAU,CAAC;AAEjF,SACE,qCAAC;AAAA,IAAW,KAAK;AAAA,IAAS,MAAK;AAAA,IAAO,eAAa,yBAAyB,QAAQ,WAAW;AAAA,KAC5F,QAAQ,IAAI,CAAC,WAAW;AACvB,UAAkE,aAA1D,QAAM,MAAM,QAAQ,IAAI,SAAS,SAAS,OAAgB,IAAT,iBAAS,IAAT,CAAjD,QAAM,QAAM,SAAY,WAAS,WAAS;AAElD,UAAM,cAAc,oBAAoB,IAAI;AAE5C,UAAM,cAAc,CAAC,MAAwB;AAC3C,kBAAY;AACZ,UAAI;AAAS,gBAAQ,CAAC;AAAA,IACxB;AAEA,UAAM,gBAAgB,CAAC,MAA2B;AAChD,yBAAmB,CAAC;AACpB,UAAI,EAAE,SAAS;AAAU,gBAAQ;AACjC,UAAI;AAAiB,wBAAgB,CAAC;AAAA,IACxC;AAEA,YAAQ;AAAA,WACD;AACH,eACE,qCAAC;AAAA,UACC,KAAK,GAAG,yBAAyB;AAAA,UACjC,MAAK;AAAA,UACL,eAAa,yBAAyB,QAAQ,WAAW;AAAA,WACrD,YACN;AAAA,WAEC;AACH,eACE,qCAAC;AAAA,UACC,KAAK,GAAG,qBAAqB;AAAA,UAC7B,MAAK;AAAA,UACL,eAAa,yBAAyB,QAAQ,WAAW;AAAA,WAEzD,qCAAC;AAAA,UACC,KAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAW;AAAA,UACX;AAAA,UACA,eAAa,yBAAyB,QAAQ,WAAW;AAAA,WACrD,cAEH,WAAW,qCAAC,aAAQ,CACvB,CACF;AAAA;AAGF,eACE,qCAAC;AAAA,UACC,KAAK,GAAG,qBAAqB;AAAA,UAC7B,MAAK;AAAA,UACL,eAAa,yBAAyB,QAAQ,WAAW;AAAA,WAEzD,qCAAC;AAAA,UACC,KAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAW;AAAA,UACX;AAAA,UACA,eAAa,yBAAyB,QAAQ,WAAW;AAAA,WACrD,cAEH,QAAQ,qCAAC,UAAK,GACd,SACC,qCAAC;AAAA,UAAY,eAAa,yBAAyB,QAAQ,WAAW;AAAA,WACnE,KACH,CAEJ,CACF;AAAA;AAAA,EAGR,CAAC,CACH;AAEJ,CACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,44 @@
1
+ import * as React from "react";
2
+ import { styled } from "@elliemae/ds-system";
3
+ import { COMPONENT_NAME, slots } from "../../../../../exported-related/theming";
4
+ const StyledList = styled("ul", { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.LIST })`
5
+ padding: 5px 0px;
6
+ margin: 0;
7
+ background: white;
8
+ `;
9
+ const StyledItemContainer = styled("li", { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.ITEM })`
10
+ list-style: none;
11
+ `;
12
+ const StyledItemButton = styled("button", { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.ITEM_BUTTON })`
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ width: 100%;
17
+ padding: 0 20px;
18
+ cursor: pointer;
19
+ border: 1px solid transparent;
20
+ background-color: transparent;
21
+ outline: none;
22
+ :hover,
23
+ :focus {
24
+ border: ${({ theme }) => `1px solid ${theme.colors.brand[600]}`};
25
+ }
26
+ `;
27
+ const StyledLabel = styled("span", { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.ITEM_BUTTON_LABEL })`
28
+ width: 100%;
29
+ font-size: 14px;
30
+ margin: 10px;
31
+ `;
32
+ const StyledSeparator = styled("div", { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.SEPARATOR })`
33
+ width: 100%;
34
+ border: none;
35
+ border-bottom: 1px solid #ccc;
36
+ `;
37
+ export {
38
+ StyledItemButton,
39
+ StyledItemContainer,
40
+ StyledLabel,
41
+ StyledList,
42
+ StyledSeparator
43
+ };
44
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../../src/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/styles.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { styled } from '@elliemae/ds-system';\nimport { COMPONENT_NAME, slots } from '../../../../../exported-related/theming';\n\nexport const StyledList = styled('ul', { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.LIST })`\n padding: 5px 0px;\n margin: 0;\n background: white;\n`;\n\nexport const StyledItemContainer = styled('li', { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.ITEM })`\n list-style: none;\n`;\n\nexport const StyledItemButton = styled('button', { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.ITEM_BUTTON })`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n padding: 0 20px;\n cursor: pointer;\n border: 1px solid transparent;\n background-color: transparent;\n outline: none;\n :hover,\n :focus {\n border: ${({ theme }) => `1px solid ${theme.colors.brand[600]}`};\n }\n`;\n\nexport const StyledLabel = styled('span', { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.ITEM_BUTTON_LABEL })`\n width: 100%;\n font-size: 14px;\n margin: 10px;\n`;\n\nexport const StyledSeparator = styled('div', { name: COMPONENT_NAME, slot: slots.MENUBAR.POPUP_MENU.SEPARATOR })`\n width: 100%;\n border: none;\n border-bottom: 1px solid #ccc;\n`;\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AAEO,MAAM,aAAa,OAAO,MAAM,EAAE,MAAM,gBAAgB,MAAM,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAM7F,MAAM,sBAAsB,OAAO,MAAM,EAAE,MAAM,gBAAgB,MAAM,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA;AAAA;AAItG,MAAM,mBAAmB,OAAO,UAAU,EAAE,MAAM,gBAAgB,MAAM,MAAM,QAAQ,WAAW,YAAY,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAYvG,CAAC,EAAE,YAAY,aAAa,MAAM,OAAO,MAAM;AAAA;AAAA;AAItD,MAAM,cAAc,OAAO,QAAQ,EAAE,MAAM,gBAAgB,MAAM,MAAM,QAAQ,WAAW,kBAAkB,CAAC;AAAA;AAAA;AAAA;AAAA;AAM7G,MAAM,kBAAkB,OAAO,OAAO,EAAE,MAAM,gBAAgB,MAAM,MAAM,QAAQ,WAAW,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,52 @@
1
+ import * as React from "react";
2
+ import { useRef, useCallback, useEffect } from "react";
3
+ const usePopupMenuContent = ({ setIsOpen }) => {
4
+ const menuRef = useRef(null);
5
+ const allMenuItemsRef = useRef([]);
6
+ const setRef = useCallback((ref) => {
7
+ if (ref && !allMenuItemsRef.current.includes(ref)) {
8
+ allMenuItemsRef.current.push(ref);
9
+ }
10
+ allMenuItemsRef.current.forEach((item, index) => {
11
+ if (index === 0) {
12
+ item?.setAttribute?.("tabindex", "0");
13
+ } else {
14
+ item?.setAttribute?.("tabindex", "-1");
15
+ }
16
+ });
17
+ }, []);
18
+ useEffect(() => {
19
+ allMenuItemsRef.current?.[0]?.focus();
20
+ }, []);
21
+ const keyboardNavigation = useCallback((e) => {
22
+ if (e.code === "Tab") {
23
+ setIsOpen(false);
24
+ } else {
25
+ const currentIndex = allMenuItemsRef.current.indexOf(e.target);
26
+ const allRefsLength = allMenuItemsRef.current.length;
27
+ if (e.key === "ArrowDown") {
28
+ if (currentIndex < allRefsLength - 1) {
29
+ allMenuItemsRef.current[currentIndex + 1]?.focus?.();
30
+ } else {
31
+ allMenuItemsRef.current[0]?.focus?.();
32
+ }
33
+ }
34
+ if (e.key === "ArrowUp") {
35
+ if (currentIndex === 0) {
36
+ allMenuItemsRef.current[allRefsLength - 1]?.focus?.();
37
+ } else {
38
+ allMenuItemsRef.current[currentIndex - 1]?.focus?.();
39
+ }
40
+ }
41
+ }
42
+ }, [setIsOpen]);
43
+ return {
44
+ menuRef,
45
+ setRef,
46
+ keyboardNavigation
47
+ };
48
+ };
49
+ export {
50
+ usePopupMenuContent
51
+ };
52
+ //# sourceMappingURL=usePopupMenuContent.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../../src/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useRef, useCallback, useEffect } from 'react';\n\ninterface UsePopupMenuContentT {\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nexport const usePopupMenuContent = ({ setIsOpen }: UsePopupMenuContentT) => {\n const menuRef = useRef<HTMLDivElement>(null);\n const allMenuItemsRef = useRef<HTMLButtonElement[]>([]);\n\n const setRef = useCallback((ref: HTMLButtonElement) => {\n if (ref && !allMenuItemsRef.current.includes(ref)) {\n allMenuItemsRef.current.push(ref);\n }\n\n allMenuItemsRef.current.forEach((item, index) => {\n if (index === 0) {\n item?.setAttribute?.('tabindex', '0');\n } else {\n item?.setAttribute?.('tabindex', '-1');\n }\n });\n }, []);\n\n useEffect(() => {\n (allMenuItemsRef.current?.[0] as HTMLButtonElement)?.focus();\n }, []);\n\n const keyboardNavigation = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.code === 'Tab') {\n setIsOpen(false);\n } else {\n const currentIndex = allMenuItemsRef.current.indexOf(e.target as HTMLButtonElement);\n const allRefsLength = allMenuItemsRef.current.length;\n if (e.key === 'ArrowDown') {\n if (currentIndex < allRefsLength - 1) {\n allMenuItemsRef.current[currentIndex + 1]?.focus?.();\n } else {\n allMenuItemsRef.current[0]?.focus?.();\n }\n }\n if (e.key === 'ArrowUp') {\n if (currentIndex === 0) {\n allMenuItemsRef.current[allRefsLength - 1]?.focus?.();\n } else {\n allMenuItemsRef.current[currentIndex - 1]?.focus?.();\n }\n }\n }\n },\n [setIsOpen],\n );\n\n return {\n menuRef,\n setRef,\n keyboardNavigation,\n };\n};\n"],
5
+ "mappings": "AAAA;ACAA;AAMO,MAAM,sBAAsB,CAAC,EAAE,gBAAsC;AAC1E,QAAM,UAAU,OAAuB,IAAI;AAC3C,QAAM,kBAAkB,OAA4B,CAAC,CAAC;AAEtD,QAAM,SAAS,YAAY,CAAC,QAA2B;AACrD,QAAI,OAAO,CAAC,gBAAgB,QAAQ,SAAS,GAAG,GAAG;AACjD,sBAAgB,QAAQ,KAAK,GAAG;AAAA,IAClC;AAEA,oBAAgB,QAAQ,QAAQ,CAAC,MAAM,UAAU;AAC/C,UAAI,UAAU,GAAG;AACf,cAAM,eAAe,YAAY,GAAG;AAAA,MACtC,OAAO;AACL,cAAM,eAAe,YAAY,IAAI;AAAA,MACvC;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,IAAC,gBAAgB,UAAU,IAA0B,MAAM;AAAA,EAC7D,GAAG,CAAC,CAAC;AAEL,QAAM,qBAAqB,YACzB,CAAC,MAA2B;AAC1B,QAAI,EAAE,SAAS,OAAO;AACpB,gBAAU,KAAK;AAAA,IACjB,OAAO;AACL,YAAM,eAAe,gBAAgB,QAAQ,QAAQ,EAAE,MAA2B;AAClF,YAAM,gBAAgB,gBAAgB,QAAQ;AAC9C,UAAI,EAAE,QAAQ,aAAa;AACzB,YAAI,eAAe,gBAAgB,GAAG;AACpC,0BAAgB,QAAQ,eAAe,IAAI,QAAQ;AAAA,QACrD,OAAO;AACL,0BAAgB,QAAQ,IAAI,QAAQ;AAAA,QACtC;AAAA,MACF;AACA,UAAI,EAAE,QAAQ,WAAW;AACvB,YAAI,iBAAiB,GAAG;AACtB,0BAAgB,QAAQ,gBAAgB,IAAI,QAAQ;AAAA,QACtD,OAAO;AACL,0BAAgB,QAAQ,eAAe,IAAI,QAAQ;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,EACF,GACA,CAAC,SAAS,CACZ;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -29,16 +29,24 @@ var __objRest = (source, exclude) => {
29
29
  import * as React from "react";
30
30
  import React2, { useState, useCallback, useRef } from "react";
31
31
  import { Search } from "@elliemae/ds-icons";
32
- import { getDataProps } from "@elliemae/ds-props-helpers";
33
- import { DSIconColors } from "@elliemae/ds-icon";
34
32
  import { DSNavSearchBox } from "@elliemae/ds-form";
33
+ import { getGlobalAttributes, mergeRefs, useCallbackAfterRender } from "@elliemae/ds-utilities";
35
34
  import { StyledNavSearchBoxContainer } from "./styles";
36
- import { Button } from "../../components/Toolbar/styles";
35
+ import { StyledButton } from "../../../styles";
36
+ import { DSGlobalHeaderDatatestid } from "../../../../exported-related";
37
37
  const SearchToggle = (_a) => {
38
- var _b = _a, { id, componentProps } = _b, otherProps = __objRest(_b, ["id", "componentProps"]);
38
+ var _b = _a, {
39
+ id,
40
+ setRef,
41
+ componentProps
42
+ } = _b, otherProps = __objRest(_b, [
43
+ "id",
44
+ "setRef",
45
+ "componentProps"
46
+ ]);
39
47
  const [isOpen, setIsOpen] = useState(false);
40
- const inputRef = useRef(null);
41
- const triggerRef = useRef(null);
48
+ const internalInputRef = useRef(null);
49
+ const internalTriggerRef = useRef(null);
42
50
  const containerRef = useRef(null);
43
51
  const {
44
52
  onNext,
@@ -52,8 +60,12 @@ const SearchToggle = (_a) => {
52
60
  onClear,
53
61
  isOpen: userIsOpen,
54
62
  onKeyDown,
55
- onClick
63
+ onClick,
64
+ triggerRef,
65
+ searchContainerRef
56
66
  } = componentProps;
67
+ const schedule = useCallbackAfterRender();
68
+ const focusTrigger = useCallback(() => internalTriggerRef.current?.focus(), []);
57
69
  const handleOnClick = useCallback((e) => {
58
70
  if (userIsOpen === void 0)
59
71
  setIsOpen(true);
@@ -62,25 +74,33 @@ const SearchToggle = (_a) => {
62
74
  }, [onClick, userIsOpen]);
63
75
  const handleOnKeyDown = useCallback((e) => {
64
76
  if (userIsOpen === void 0) {
65
- if (e.code === "Escape") {
77
+ if (e.key === "Escape") {
66
78
  setIsOpen(false);
67
- setTimeout(() => triggerRef.current?.focus());
79
+ schedule(focusTrigger);
68
80
  }
69
81
  }
70
82
  if (onKeyDown)
71
83
  onKeyDown(e);
72
- }, [onKeyDown, userIsOpen]);
84
+ }, [focusTrigger, onKeyDown, schedule, userIsOpen]);
73
85
  const handleOnBlur = useCallback(() => {
74
- setTimeout(() => {
75
- const contains = containerRef.current?.contains(document.activeElement);
76
- if (value === "" && !contains)
77
- setIsOpen(false);
78
- });
79
- }, [value]);
86
+ const contains = containerRef.current?.contains(document.activeElement);
87
+ if (value === "" && !contains)
88
+ setIsOpen(false);
89
+ schedule(focusTrigger);
90
+ }, [focusTrigger, schedule, value]);
91
+ const handleNavInputRefs = useCallback((searchNavRef) => {
92
+ setRef(searchNavRef);
93
+ internalInputRef.current = searchNavRef;
94
+ }, [setRef]);
95
+ const handleTriggerRefs = useCallback((buttonRef) => {
96
+ mergeRefs(triggerRef, internalTriggerRef)(buttonRef);
97
+ setRef(buttonRef);
98
+ }, [setRef, triggerRef]);
80
99
  return userIsOpen || isOpen ? /* @__PURE__ */ React2.createElement(StyledNavSearchBoxContainer, {
81
100
  onKeyDown: handleOnKeyDown,
82
- ref: containerRef,
83
- onBlur: handleOnBlur
101
+ ref: mergeRefs(searchContainerRef, containerRef),
102
+ onBlur: handleOnBlur,
103
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.SEARCH_TOGGLE.CONTAINER
84
104
  }, /* @__PURE__ */ React2.createElement(DSNavSearchBox, {
85
105
  onNext,
86
106
  onPrevious,
@@ -91,15 +111,15 @@ const SearchToggle = (_a) => {
91
111
  onChange,
92
112
  value,
93
113
  onBlur,
94
- innerRef: inputRef,
114
+ innerRef: handleNavInputRefs,
95
115
  autoFocus: true
96
- })) : /* @__PURE__ */ React2.createElement(Button, __spreadValues({
116
+ })) : /* @__PURE__ */ React2.createElement(StyledButton, __spreadValues({
97
117
  onClick: handleOnClick,
98
- ref: triggerRef,
99
- id
100
- }, getDataProps(otherProps)), /* @__PURE__ */ React2.createElement(Search, {
101
- color: DSIconColors.WHITE
102
- }));
118
+ ref: handleTriggerRefs,
119
+ id,
120
+ role: "menuitem",
121
+ "data-testid": DSGlobalHeaderDatatestid.MENUBAR.SEARCH_TOGGLE.ITEM_BUTTON
122
+ }, getGlobalAttributes(otherProps)), /* @__PURE__ */ React2.createElement(Search, null));
103
123
  };
104
124
  export {
105
125
  SearchToggle
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useState, useCallback, useRef } from 'react';\nimport { Search } from '@elliemae/ds-icons';\nimport { DSNavSearchBox } from '@elliemae/ds-form';\nimport { getGlobalAttributes, mergeRefs, useCallbackAfterRender } from '@elliemae/ds-utilities';\nimport { StyledNavSearchBoxContainer } from './styles';\nimport { StyledButton } from '../../../styles';\nimport { DSGlobalHeaderDatatestid } from '../../../../exported-related';\nimport type { DSGlobalHeaderInternalsT } from '../../../../sharedTypes';\n\nexport const SearchToggle = ({\n id,\n setRef,\n componentProps,\n ...otherProps\n}: DSGlobalHeaderInternalsT.SearchToggleProps): JSX.Element => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const internalInputRef = useRef<HTMLInputElement | null>(null);\n const internalTriggerRef = useRef<HTMLButtonElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const {\n onNext,\n onPrevious,\n currentResultIndex,\n totalResults,\n placeholder,\n value,\n onChange,\n onBlur,\n onClear,\n isOpen: userIsOpen,\n onKeyDown,\n onClick,\n triggerRef,\n searchContainerRef,\n } = componentProps;\n\n const schedule = useCallbackAfterRender();\n\n const focusTrigger = useCallback(() => internalTriggerRef.current?.focus(), []);\n\n const handleOnClick = useCallback(\n (e: React.MouseEvent) => {\n if (userIsOpen === undefined) setIsOpen(true);\n if (onClick) onClick(e);\n },\n [onClick, userIsOpen],\n );\n\n const handleOnKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (userIsOpen === undefined) {\n if (e.key === 'Escape') {\n setIsOpen(false);\n schedule(focusTrigger);\n }\n }\n if (onKeyDown) onKeyDown(e);\n },\n [focusTrigger, onKeyDown, schedule, userIsOpen],\n );\n\n const handleOnBlur = useCallback(() => {\n const contains = containerRef.current?.contains(document.activeElement);\n if (value === '' && !contains) setIsOpen(false);\n schedule(focusTrigger);\n }, [focusTrigger, schedule, value]);\n\n const handleNavInputRefs = useCallback(\n (searchNavRef: HTMLInputElement) => {\n setRef(searchNavRef);\n internalInputRef.current = searchNavRef;\n },\n [setRef],\n );\n\n const handleTriggerRefs = useCallback(\n (buttonRef: HTMLButtonElement) => {\n mergeRefs(triggerRef, internalTriggerRef)(buttonRef);\n setRef(buttonRef);\n },\n [setRef, triggerRef],\n );\n\n return userIsOpen || isOpen ? (\n <StyledNavSearchBoxContainer\n onKeyDown={handleOnKeyDown}\n ref={mergeRefs(searchContainerRef, containerRef)}\n onBlur={handleOnBlur}\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.SEARCH_TOGGLE.CONTAINER}\n >\n <DSNavSearchBox\n onNext={onNext}\n onPrevious={onPrevious}\n currentResultIndex={currentResultIndex}\n totalResults={totalResults}\n onClear={onClear}\n placeholder={placeholder}\n onChange={onChange}\n value={value}\n onBlur={onBlur}\n innerRef={handleNavInputRefs}\n autoFocus\n />\n </StyledNavSearchBoxContainer>\n ) : (\n <StyledButton\n onClick={handleOnClick}\n ref={handleTriggerRefs}\n id={id}\n role=\"menuitem\"\n data-testid={DSGlobalHeaderDatatestid.MENUBAR.SEARCH_TOGGLE.ITEM_BUTTON}\n {...getGlobalAttributes(otherProps)}\n >\n <Search />\n </StyledButton>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGO,MAAM,eAAe,CAAC,OAKkC;AALlC,eAC3B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,MAH2B,IAIxB,uBAJwB,IAIxB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,CAAC,QAAQ,aAAa,SAAkB,KAAK;AACnD,QAAM,mBAAmB,OAAgC,IAAI;AAC7D,QAAM,qBAAqB,OAAiC,IAAI;AAChE,QAAM,eAAe,OAA8B,IAAI;AAEvD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,WAAW,uBAAuB;AAExC,QAAM,eAAe,YAAY,MAAM,mBAAmB,SAAS,MAAM,GAAG,CAAC,CAAC;AAE9E,QAAM,gBAAgB,YACpB,CAAC,MAAwB;AACvB,QAAI,eAAe;AAAW,gBAAU,IAAI;AAC5C,QAAI;AAAS,cAAQ,CAAC;AAAA,EACxB,GACA,CAAC,SAAS,UAAU,CACtB;AAEA,QAAM,kBAAkB,YACtB,CAAC,MAA2B;AAC1B,QAAI,eAAe,QAAW;AAC5B,UAAI,EAAE,QAAQ,UAAU;AACtB,kBAAU,KAAK;AACf,iBAAS,YAAY;AAAA,MACvB;AAAA,IACF;AACA,QAAI;AAAW,gBAAU,CAAC;AAAA,EAC5B,GACA,CAAC,cAAc,WAAW,UAAU,UAAU,CAChD;AAEA,QAAM,eAAe,YAAY,MAAM;AACrC,UAAM,WAAW,aAAa,SAAS,SAAS,SAAS,aAAa;AACtE,QAAI,UAAU,MAAM,CAAC;AAAU,gBAAU,KAAK;AAC9C,aAAS,YAAY;AAAA,EACvB,GAAG,CAAC,cAAc,UAAU,KAAK,CAAC;AAElC,QAAM,qBAAqB,YACzB,CAAC,iBAAmC;AAClC,WAAO,YAAY;AACnB,qBAAiB,UAAU;AAAA,EAC7B,GACA,CAAC,MAAM,CACT;AAEA,QAAM,oBAAoB,YACxB,CAAC,cAAiC;AAChC,cAAU,YAAY,kBAAkB,EAAE,SAAS;AACnD,WAAO,SAAS;AAAA,EAClB,GACA,CAAC,QAAQ,UAAU,CACrB;AAEA,SAAO,cAAc,SACnB,qCAAC;AAAA,IACC,WAAW;AAAA,IACX,KAAK,UAAU,oBAAoB,YAAY;AAAA,IAC/C,QAAQ;AAAA,IACR,eAAa,yBAAyB,QAAQ,cAAc;AAAA,KAE5D,qCAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,WAAS;AAAA,GACX,CACF,IAEA,qCAAC;AAAA,IACC,SAAS;AAAA,IACT,KAAK;AAAA,IACL;AAAA,IACA,MAAK;AAAA,IACL,eAAa,yBAAyB,QAAQ,cAAc;AAAA,KACxD,oBAAoB,UAAU,IAElC,qCAAC,YAAO,CACV;AAEJ;",
6
+ "names": []
7
+ }
@@ -1,9 +1,12 @@
1
1
  import * as React from "react";
2
- import styled from "styled-components";
3
- const StyledNavSearchBoxContainer = styled.div`
4
- background: white;
2
+ import { styled } from "@elliemae/ds-system";
3
+ import { COMPONENT_NAME, slots } from "../../../../exported-related/theming";
4
+ const StyledNavSearchBoxContainer = styled("div", {
5
+ name: COMPONENT_NAME,
6
+ slot: slots.MENUBAR.SEARCH_TOGGLE.CONTAINER
7
+ })`
8
+ background: ${({ theme }) => theme.colors.neutral["000"]};
5
9
  position: relative;
6
-
7
10
  min-width: 260px;
8
11
 
9
12
  & .em-ds-button {
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/parts/Toolbar/outOfTheBox/SearchToggle/styles.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { styled } from '@elliemae/ds-system';\nimport { COMPONENT_NAME, slots } from '../../../../exported-related/theming';\n\nexport const StyledNavSearchBoxContainer = styled('div', {\n name: COMPONENT_NAME,\n slot: slots.MENUBAR.SEARCH_TOGGLE.CONTAINER,\n})`\n background: ${({ theme }) => theme.colors.neutral['000']};\n position: relative;\n min-width: 260px;\n\n & .em-ds-button {\n margin-right: 2px;\n height: 24px;\n width: 24px;\n }\n\n & .em-ds-input {\n border: none;\n outline: none;\n box-shadow: none;\n }\n\n & .em-ds-input:focus {\n border: none;\n box-shadow: none;\n }\n\n & .em-ds-input.em-ds-input--clearable:hover {\n border: none;\n outline: none;\n box-shadow: none;\n }\n\n & .em-ds-input-addon-wrapper {\n box-shadow: none;\n }\n\n & .em-ds-input-addon-wrapper:hover {\n outline: none;\n }\n\n & .em-ds-input-addon-wrapper__addon:hover {\n outline: none;\n }\n\n & .em-ds-input:not(.floating-label-input-controller):hover:active {\n border: none;\n outline: none;\n box-shadow: none;\n }\n`;\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AAEO,MAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD,MAAM;AAAA,EACN,MAAM,MAAM,QAAQ,cAAc;AACpC,CAAC;AAAA,gBACe,CAAC,EAAE,YAAY,MAAM,OAAO,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
+ "names": []
7
+ }