@elliemae/ds-global-header 2.3.0-alpha.8 → 2.3.0-next.2

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 (182) hide show
  1. package/cjs/GlobalHeader.js +37 -0
  2. package/cjs/GlobalHeaderContainer.js +24 -0
  3. package/cjs/GlobalHeaderContext.js +20 -0
  4. package/cjs/GlobalHeaderTypes.js +2 -0
  5. package/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js +85 -0
  6. package/cjs/components/Breadcrumb/PureBreadcrumb.js +60 -0
  7. package/cjs/components/Breadcrumb/styles.js +59 -0
  8. package/cjs/components/Title/GlobalHeaderTitle.js +29 -0
  9. package/cjs/components/Toolbar/GlobalHeaderToolbar.js +30 -0
  10. package/cjs/components/Toolbar/ToolbarItems.js +107 -0
  11. package/cjs/components/Toolbar/styles.js +25 -0
  12. package/cjs/config/useGetPropsWithDefaults.js +31 -0
  13. package/cjs/config/useGlobalHeader.js +39 -0
  14. package/cjs/config/useValidateProps.js +92 -0
  15. package/cjs/config/validateHelpers.js +57 -0
  16. package/cjs/defaultProps.js +14 -0
  17. package/cjs/index.js +11 -0
  18. package/cjs/outOfTheBox/AppPicker/AppPicker.js +117 -0
  19. package/cjs/outOfTheBox/PopupMenu/PopupMenu.js +101 -0
  20. package/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js +96 -0
  21. package/cjs/outOfTheBox/PopupMenu/styles.js +32 -0
  22. package/cjs/outOfTheBox/SearchToggle/SearchToggle.js +113 -0
  23. package/cjs/outOfTheBox/SearchToggle/styles.js +15 -0
  24. package/cjs/outOfTheBox/index.js +13 -0
  25. package/cjs/propTypes.js +29 -0
  26. package/cjs/styles.js +21 -0
  27. package/esm/GlobalHeader.js +28 -0
  28. package/esm/GlobalHeaderContainer.js +16 -0
  29. package/esm/GlobalHeaderContext.js +16 -0
  30. package/esm/GlobalHeaderTypes.js +1 -0
  31. package/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js +75 -0
  32. package/esm/components/Breadcrumb/PureBreadcrumb.js +49 -0
  33. package/esm/components/Breadcrumb/styles.js +48 -0
  34. package/esm/components/Title/GlobalHeaderTitle.js +21 -0
  35. package/esm/components/Toolbar/GlobalHeaderToolbar.js +22 -0
  36. package/esm/components/Toolbar/ToolbarItems.js +97 -0
  37. package/esm/components/Toolbar/styles.js +17 -0
  38. package/esm/config/useGetPropsWithDefaults.js +23 -0
  39. package/esm/config/useGlobalHeader.js +31 -0
  40. package/esm/config/useValidateProps.js +88 -0
  41. package/esm/config/validateHelpers.js +44 -0
  42. package/{dist/esm → esm}/defaultProps.js +3 -5
  43. package/esm/index.js +1 -0
  44. package/esm/outOfTheBox/AppPicker/AppPicker.js +107 -0
  45. package/esm/outOfTheBox/PopupMenu/PopupMenu.js +91 -0
  46. package/esm/outOfTheBox/PopupMenu/PopupMenuContent.js +86 -0
  47. package/esm/outOfTheBox/PopupMenu/styles.js +21 -0
  48. package/esm/outOfTheBox/SearchToggle/SearchToggle.js +103 -0
  49. package/esm/outOfTheBox/SearchToggle/styles.js +7 -0
  50. package/esm/outOfTheBox/index.js +3 -0
  51. package/esm/propTypes.js +23 -0
  52. package/esm/styles.js +13 -0
  53. package/package.json +72 -76
  54. package/types/GlobalHeader.d.ts +39 -0
  55. package/types/GlobalHeaderContainer.d.ts +3 -0
  56. package/types/GlobalHeaderContext.d.ts +3 -0
  57. package/types/GlobalHeaderTypes.d.ts +85 -0
  58. package/types/components/Breadcrumb/GlobalHeaderBreadcrumb.d.ts +2 -0
  59. package/types/components/Breadcrumb/PureBreadcrumb.d.ts +3 -0
  60. package/types/components/Breadcrumb/styles.d.ts +5 -0
  61. package/types/components/Title/GlobalHeaderTitle.d.ts +2 -0
  62. package/types/components/Toolbar/GlobalHeaderToolbar.d.ts +2 -0
  63. package/types/components/Toolbar/ToolbarItems.d.ts +2 -0
  64. package/types/components/Toolbar/styles.d.ts +1 -0
  65. package/types/config/useGetPropsWithDefaults.d.ts +2 -0
  66. package/types/config/useGlobalHeader.d.ts +2 -0
  67. package/types/config/useValidateProps.d.ts +2 -0
  68. package/types/config/validateHelpers.d.ts +27 -0
  69. package/types/defaultProps.d.ts +2 -0
  70. package/types/index.d.ts +2 -0
  71. package/types/outOfTheBox/AppPicker/AppPicker.d.ts +8 -0
  72. package/types/outOfTheBox/PopupMenu/PopupMenu.d.ts +3 -0
  73. package/types/outOfTheBox/PopupMenu/PopupMenuContent.d.ts +3 -0
  74. package/types/outOfTheBox/PopupMenu/styles.d.ts +4 -0
  75. package/types/outOfTheBox/SearchToggle/SearchToggle.d.ts +2 -0
  76. package/types/outOfTheBox/SearchToggle/styles.d.ts +1 -0
  77. package/types/outOfTheBox/index.d.ts +3 -0
  78. package/types/propTypes.d.ts +29 -0
  79. package/types/styles.d.ts +2 -0
  80. package/dist/cjs/GlobalHeader.js +0 -57
  81. package/dist/cjs/GlobalHeader.js.map +0 -7
  82. package/dist/cjs/GlobalHeaderContainer.js +0 -41
  83. package/dist/cjs/GlobalHeaderContainer.js.map +0 -7
  84. package/dist/cjs/GlobalHeaderContext.js +0 -46
  85. package/dist/cjs/GlobalHeaderContext.js.map +0 -7
  86. package/dist/cjs/GlobalHeaderTypes.js +0 -27
  87. package/dist/cjs/GlobalHeaderTypes.js.map +0 -7
  88. package/dist/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js +0 -85
  89. package/dist/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js.map +0 -7
  90. package/dist/cjs/components/Breadcrumb/PureBreadcrumb.js +0 -51
  91. package/dist/cjs/components/Breadcrumb/PureBreadcrumb.js.map +0 -7
  92. package/dist/cjs/components/Breadcrumb/styles.js +0 -83
  93. package/dist/cjs/components/Breadcrumb/styles.js.map +0 -7
  94. package/dist/cjs/components/Title/GlobalHeaderTitle.js +0 -48
  95. package/dist/cjs/components/Title/GlobalHeaderTitle.js.map +0 -7
  96. package/dist/cjs/components/Toolbar/GlobalHeaderToolbar.js +0 -49
  97. package/dist/cjs/components/Toolbar/GlobalHeaderToolbar.js.map +0 -7
  98. package/dist/cjs/components/Toolbar/ToolbarItems.js +0 -96
  99. package/dist/cjs/components/Toolbar/ToolbarItems.js.map +0 -7
  100. package/dist/cjs/components/Toolbar/styles.js +0 -61
  101. package/dist/cjs/components/Toolbar/styles.js.map +0 -7
  102. package/dist/cjs/config/useGetPropsWithDefaults.js +0 -43
  103. package/dist/cjs/config/useGetPropsWithDefaults.js.map +0 -7
  104. package/dist/cjs/config/useGlobalHeader.js +0 -53
  105. package/dist/cjs/config/useGlobalHeader.js.map +0 -7
  106. package/dist/cjs/config/useValidateProps.js +0 -109
  107. package/dist/cjs/config/useValidateProps.js.map +0 -7
  108. package/dist/cjs/config/validateHelpers.js +0 -111
  109. package/dist/cjs/config/validateHelpers.js.map +0 -7
  110. package/dist/cjs/defaultProps.js +0 -41
  111. package/dist/cjs/defaultProps.js.map +0 -7
  112. package/dist/cjs/index.js +0 -36
  113. package/dist/cjs/index.js.map +0 -7
  114. package/dist/cjs/outOfTheBox/AppPicker/AppPicker.js +0 -110
  115. package/dist/cjs/outOfTheBox/AppPicker/AppPicker.js.map +0 -7
  116. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenu.js +0 -96
  117. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenu.js.map +0 -7
  118. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js +0 -89
  119. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js.map +0 -7
  120. package/dist/cjs/outOfTheBox/PopupMenu/styles.js +0 -67
  121. package/dist/cjs/outOfTheBox/PopupMenu/styles.js.map +0 -7
  122. package/dist/cjs/outOfTheBox/SearchToggle/SearchToggle.js +0 -108
  123. package/dist/cjs/outOfTheBox/SearchToggle/SearchToggle.js.map +0 -7
  124. package/dist/cjs/outOfTheBox/SearchToggle/styles.js +0 -82
  125. package/dist/cjs/outOfTheBox/SearchToggle/styles.js.map +0 -7
  126. package/dist/cjs/outOfTheBox/index.js +0 -30
  127. package/dist/cjs/outOfTheBox/index.js.map +0 -7
  128. package/dist/cjs/propTypes.js +0 -56
  129. package/dist/cjs/propTypes.js.map +0 -7
  130. package/dist/cjs/styles.js +0 -43
  131. package/dist/cjs/styles.js.map +0 -7
  132. package/dist/esm/GlobalHeader.js +0 -28
  133. package/dist/esm/GlobalHeader.js.map +0 -7
  134. package/dist/esm/GlobalHeaderContainer.js +0 -12
  135. package/dist/esm/GlobalHeaderContainer.js.map +0 -7
  136. package/dist/esm/GlobalHeaderContext.js +0 -17
  137. package/dist/esm/GlobalHeaderContext.js.map +0 -7
  138. package/dist/esm/GlobalHeaderTypes.js +0 -2
  139. package/dist/esm/GlobalHeaderTypes.js.map +0 -7
  140. package/dist/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js +0 -56
  141. package/dist/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js.map +0 -7
  142. package/dist/esm/components/Breadcrumb/PureBreadcrumb.js +0 -22
  143. package/dist/esm/components/Breadcrumb/PureBreadcrumb.js.map +0 -7
  144. package/dist/esm/components/Breadcrumb/styles.js +0 -54
  145. package/dist/esm/components/Breadcrumb/styles.js.map +0 -7
  146. package/dist/esm/components/Title/GlobalHeaderTitle.js +0 -19
  147. package/dist/esm/components/Title/GlobalHeaderTitle.js.map +0 -7
  148. package/dist/esm/components/Toolbar/GlobalHeaderToolbar.js +0 -20
  149. package/dist/esm/components/Toolbar/GlobalHeaderToolbar.js.map +0 -7
  150. package/dist/esm/components/Toolbar/ToolbarItems.js +0 -67
  151. package/dist/esm/components/Toolbar/ToolbarItems.js.map +0 -7
  152. package/dist/esm/components/Toolbar/styles.js +0 -32
  153. package/dist/esm/components/Toolbar/styles.js.map +0 -7
  154. package/dist/esm/config/useGetPropsWithDefaults.js +0 -14
  155. package/dist/esm/config/useGetPropsWithDefaults.js.map +0 -7
  156. package/dist/esm/config/useGlobalHeader.js +0 -24
  157. package/dist/esm/config/useGlobalHeader.js.map +0 -7
  158. package/dist/esm/config/useValidateProps.js +0 -88
  159. package/dist/esm/config/useValidateProps.js.map +0 -7
  160. package/dist/esm/config/validateHelpers.js +0 -82
  161. package/dist/esm/config/validateHelpers.js.map +0 -7
  162. package/dist/esm/defaultProps.js.map +0 -7
  163. package/dist/esm/index.js +0 -7
  164. package/dist/esm/index.js.map +0 -7
  165. package/dist/esm/outOfTheBox/AppPicker/AppPicker.js +0 -81
  166. package/dist/esm/outOfTheBox/AppPicker/AppPicker.js.map +0 -7
  167. package/dist/esm/outOfTheBox/PopupMenu/PopupMenu.js +0 -67
  168. package/dist/esm/outOfTheBox/PopupMenu/PopupMenu.js.map +0 -7
  169. package/dist/esm/outOfTheBox/PopupMenu/PopupMenuContent.js +0 -60
  170. package/dist/esm/outOfTheBox/PopupMenu/PopupMenuContent.js.map +0 -7
  171. package/dist/esm/outOfTheBox/PopupMenu/styles.js +0 -38
  172. package/dist/esm/outOfTheBox/PopupMenu/styles.js.map +0 -7
  173. package/dist/esm/outOfTheBox/SearchToggle/SearchToggle.js +0 -79
  174. package/dist/esm/outOfTheBox/SearchToggle/SearchToggle.js.map +0 -7
  175. package/dist/esm/outOfTheBox/SearchToggle/styles.js +0 -53
  176. package/dist/esm/outOfTheBox/SearchToggle/styles.js.map +0 -7
  177. package/dist/esm/outOfTheBox/index.js +0 -5
  178. package/dist/esm/outOfTheBox/index.js.map +0 -7
  179. package/dist/esm/propTypes.js +0 -27
  180. package/dist/esm/propTypes.js.map +0 -7
  181. package/dist/esm/styles.js +0 -14
  182. package/dist/esm/styles.js.map +0 -7
@@ -0,0 +1,107 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
3
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
4
+ import 'core-js/modules/web.dom-collections.iterator.js';
5
+ import 'core-js/modules/esnext.async-iterator.filter.js';
6
+ import 'core-js/modules/esnext.iterator.constructor.js';
7
+ import 'core-js/modules/esnext.iterator.filter.js';
8
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
9
+ import 'core-js/modules/esnext.iterator.for-each.js';
10
+ import { useState, useRef, useCallback, useMemo } from 'react';
11
+ import { DSAppPicker } from '@elliemae/ds-app-picker';
12
+ import { mergeRefs } from '@elliemae/ds-utilities';
13
+ import { MenuPicker } from '@elliemae/ds-icons';
14
+ import { Button } from '../../components/Toolbar/styles.js';
15
+ import { getDataProps } from '@elliemae/ds-props-helpers';
16
+ import { jsx } from 'react/jsx-runtime';
17
+
18
+ var _MenuPicker;
19
+
20
+ const _excluded = ["label", "id", "componentProps"];
21
+
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
+ const AppPicker = _ref => {
26
+ let {
27
+ label,
28
+ id,
29
+ componentProps
30
+ } = _ref,
31
+ otherProps = _objectWithoutProperties(_ref, _excluded);
32
+
33
+ const [isOpen, setIsOpen] = useState(false);
34
+ const buttonRef = useRef(null);
35
+ const {
36
+ apps,
37
+ icon,
38
+ customApps,
39
+ sectionTitle,
40
+ customSectionTitle,
41
+ actionRef,
42
+ isOpen: userIsOpen,
43
+ onKeyDown: userOnKeyDown,
44
+ onClickOutside: userOnClickOutside,
45
+ renderTrigger: userRenderTrigger,
46
+ onClose,
47
+ triggerRef,
48
+ triggerOnClick
49
+ } = componentProps;
50
+ const handleTriggerKeyDown = useCallback(e => {
51
+ if (e.code === 'Enter' || e.code === 'Space') {
52
+ setIsOpen(true);
53
+ }
54
+ }, []);
55
+ const handleAppPickerOnKeyDown = useCallback(e => {
56
+ if (e.code === 'Escape') {
57
+ var _buttonRef$current;
58
+
59
+ setIsOpen(false);
60
+ buttonRef === null || buttonRef === void 0 ? void 0 : (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.focus();
61
+ }
62
+ }, []);
63
+ const handleOnClickOutside = useCallback(() => {
64
+ setIsOpen(false);
65
+ }, []);
66
+ const handleOnClick = useCallback(() => {
67
+ setIsOpen(true);
68
+ }, []);
69
+ const renderTrigger = useMemo(() => _ref2 => {
70
+ let {
71
+ ref
72
+ } = _ref2;
73
+ return /*#__PURE__*/jsx("div", {
74
+ ref: ref,
75
+ children: /*#__PURE__*/jsx(Button, _objectSpread(_objectSpread({
76
+ onClick: triggerOnClick !== null && triggerOnClick !== void 0 ? triggerOnClick : handleOnClick,
77
+ onKeyDown: handleTriggerKeyDown,
78
+ ref: mergeRefs(buttonRef, triggerRef),
79
+ title: label,
80
+ "data-testid": "gh-toolbar-item",
81
+ id: id
82
+ }, getDataProps(otherProps)), {}, {
83
+ children: _MenuPicker || (_MenuPicker = /*#__PURE__*/_jsx(MenuPicker, {
84
+ fill: "#FFF",
85
+ width: 20.73,
86
+ height: 20.73
87
+ }))
88
+ }))
89
+ });
90
+ }, [triggerOnClick, handleOnClick, handleTriggerKeyDown, triggerRef, label, id, otherProps]);
91
+ return /*#__PURE__*/_jsx(DSAppPicker, {
92
+ apps: apps,
93
+ customApps: customApps,
94
+ sectionTitle: sectionTitle,
95
+ customSectionTitle: customSectionTitle,
96
+ icon: icon,
97
+ onKeyDown: userOnKeyDown !== null && userOnKeyDown !== void 0 ? userOnKeyDown : handleAppPickerOnKeyDown,
98
+ actionRef: actionRef,
99
+ onClickOutside: userOnClickOutside !== null && userOnClickOutside !== void 0 ? userOnClickOutside : handleOnClickOutside,
100
+ renderTrigger: userRenderTrigger !== null && userRenderTrigger !== void 0 ? userRenderTrigger : renderTrigger,
101
+ isOpen: userIsOpen !== null && userIsOpen !== void 0 ? userIsOpen : isOpen,
102
+ onClose: onClose,
103
+ triggerRef: triggerRef
104
+ });
105
+ };
106
+
107
+ export { AppPicker };
@@ -0,0 +1,91 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
3
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
4
+ import 'core-js/modules/web.dom-collections.iterator.js';
5
+ import 'core-js/modules/esnext.async-iterator.filter.js';
6
+ import 'core-js/modules/esnext.iterator.constructor.js';
7
+ import 'core-js/modules/esnext.iterator.filter.js';
8
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
9
+ import 'core-js/modules/esnext.iterator.for-each.js';
10
+ import { useState, useCallback, useMemo } from 'react';
11
+ import { DSPopperJS } from '@elliemae/ds-popperjs';
12
+ import { PopupMenuContent } from './PopupMenuContent.js';
13
+ import { Button } from '../../components/Toolbar/styles.js';
14
+ import { getDataProps } from '@elliemae/ds-props-helpers';
15
+ import { jsx } from 'react/jsx-runtime';
16
+
17
+ const _excluded = ["Icon", "title", "onClick", "id", "componentProps"];
18
+
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
+
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
+ const PopupMenu = _ref => {
23
+ var _PopupMenuContent;
24
+
25
+ let {
26
+ Icon,
27
+ title,
28
+ onClick,
29
+ id,
30
+ componentProps
31
+ } = _ref,
32
+ otherProps = _objectWithoutProperties(_ref, _excluded);
33
+
34
+ const [isOpen, setIsOpen] = useState(false);
35
+ const [buttonRef, setButtonRef] = useState(null);
36
+ const {
37
+ onClickOutside = () => null,
38
+ onKeyPress,
39
+ popupOnKeyPress,
40
+ isOpen: userIsOpen,
41
+ options,
42
+ closeOnClick
43
+ } = componentProps;
44
+ const handleKeyPress = useCallback(e => {
45
+ if (e.code === 'Enter' || e.code === 'Space') {
46
+ setIsOpen(true);
47
+ }
48
+
49
+ if (onKeyPress) onKeyPress(e);
50
+ }, [onKeyPress]);
51
+ const handleOnClose = useCallback(() => {
52
+ if (userIsOpen === undefined) {
53
+ setIsOpen(false);
54
+ }
55
+
56
+ buttonRef === null || buttonRef === void 0 ? void 0 : buttonRef.focus();
57
+ }, [buttonRef, userIsOpen]);
58
+ const handleTriggerOnClick = useCallback(e => {
59
+ if (userIsOpen === undefined) setIsOpen(true);
60
+ onClick(e);
61
+ }, [onClick, userIsOpen]);
62
+ const handleItemClick = useCallback(() => {
63
+ if (closeOnClick && userIsOpen === undefined) handleOnClose();
64
+ }, [closeOnClick, handleOnClose, userIsOpen]);
65
+ const content = useMemo(() => _PopupMenuContent || (_PopupMenuContent = /*#__PURE__*/_jsx(PopupMenuContent, {
66
+ options: options,
67
+ onItemClick: handleItemClick,
68
+ onClose: handleOnClose,
69
+ popupOnKeyPress: popupOnKeyPress
70
+ })), [options, handleItemClick, handleOnClose, popupOnKeyPress]);
71
+ return /*#__PURE__*/_jsx("div", {}, void 0, /*#__PURE__*/jsx(Button, _objectSpread(_objectSpread({
72
+ onClick: handleTriggerOnClick,
73
+ onKeyPress: handleKeyPress,
74
+ title: title,
75
+ ref: setButtonRef,
76
+ "data-testid": "gh-toolbar-item",
77
+ id: id
78
+ }, getDataProps(otherProps)), {}, {
79
+ children: Icon && /*#__PURE__*/_jsx(Icon, {
80
+ fill: "#FFF",
81
+ size: "m"
82
+ })
83
+ })), /*#__PURE__*/_jsx(DSPopperJS, {
84
+ referenceElement: buttonRef,
85
+ showPopover: userIsOpen !== null && userIsOpen !== void 0 ? userIsOpen : isOpen,
86
+ closeContextMenu: handleOnClose,
87
+ onClickOutside: onClickOutside
88
+ }, void 0, content));
89
+ };
90
+
91
+ export { PopupMenu };
@@ -0,0 +1,86 @@
1
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
2
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
3
+ import 'core-js/modules/esnext.async-iterator.map.js';
4
+ import 'core-js/modules/esnext.iterator.map.js';
5
+ import 'core-js/modules/esnext.async-iterator.filter.js';
6
+ import 'core-js/modules/esnext.iterator.constructor.js';
7
+ import 'core-js/modules/esnext.iterator.filter.js';
8
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
9
+ import 'core-js/modules/esnext.iterator.for-each.js';
10
+ import React, { useContext, useRef, useEffect, useMemo } from 'react';
11
+ import { getDataProps, getAriaProps } from '@elliemae/ds-props-helpers';
12
+ import { ItemWrapper, Separator, List, Label } from './styles.js';
13
+ import { GlobalHeaderContext } from '../../GlobalHeaderContext.js';
14
+ import { jsxs, jsx } from 'react/jsx-runtime';
15
+
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
+
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+ const PopupMenuContent = /*#__PURE__*/React.memo(_ref => {
20
+ let {
21
+ options,
22
+ onItemClick,
23
+ onClose,
24
+ popupOnKeyPress
25
+ } = _ref;
26
+ const {
27
+ instanceUID
28
+ } = useContext(GlobalHeaderContext);
29
+ const menuRef = useRef(null);
30
+ useEffect(() => {
31
+ var _menuRef$current, _menuRef$current$firs;
32
+
33
+ (_menuRef$current = menuRef.current) === null || _menuRef$current === void 0 ? void 0 : (_menuRef$current$firs = _menuRef$current.firstChild) === null || _menuRef$current$firs === void 0 ? void 0 : _menuRef$current$firs.focus();
34
+ }, []);
35
+ const content = useMemo(() => options.map(option => {
36
+ const {
37
+ type,
38
+ Icon,
39
+ label = '',
40
+ onClick,
41
+ Content,
42
+ id
43
+ } = option;
44
+
45
+ const ariaAndDataProps = _objectSpread(_objectSpread({}, getAriaProps(option)), getDataProps(option));
46
+
47
+ const handleClick = e => {
48
+ onItemClick(e);
49
+ if (onClick) onClick(e);
50
+ };
51
+
52
+ const handleKeyDown = e => {
53
+ if (e.code === 'Escape') onClose();
54
+ if (popupOnKeyPress) popupOnKeyPress(e);
55
+ };
56
+
57
+ switch (type) {
58
+ case 'separator':
59
+ return /*#__PURE__*/jsx(Separator, _objectSpread({}, ariaAndDataProps), "".concat(instanceUID, "-separator-").concat(label));
60
+
61
+ case 'custom':
62
+ return /*#__PURE__*/jsx(ItemWrapper, _objectSpread(_objectSpread({
63
+ onClick: handleClick,
64
+ onKeyDown: handleKeyDown,
65
+ id: id
66
+ }, ariaAndDataProps), {}, {
67
+ children: Content && /*#__PURE__*/_jsx(Content, {})
68
+ }), "".concat(instanceUID, "-popup-").concat(label));
69
+
70
+ default:
71
+ return /*#__PURE__*/jsxs(ItemWrapper, _objectSpread(_objectSpread({
72
+ onClick: handleClick,
73
+ onKeyDown: handleKeyDown,
74
+ id: id
75
+ }, ariaAndDataProps), {}, {
76
+ children: [Icon && /*#__PURE__*/_jsx(Icon, {}), Label && /*#__PURE__*/_jsx(Label, {}, void 0, label)]
77
+ }), "".concat(instanceUID, "-popup-").concat(label));
78
+ }
79
+ }), [options, onItemClick, onClose, popupOnKeyPress, instanceUID]);
80
+ return /*#__PURE__*/jsx(List, {
81
+ ref: menuRef,
82
+ children: content
83
+ });
84
+ });
85
+
86
+ export { PopupMenuContent };
@@ -0,0 +1,21 @@
1
+ import styled from 'styled-components';
2
+
3
+ const List = /*#__PURE__*/styled.div.withConfig({
4
+ componentId: "sc-snqcgs-0"
5
+ })(["padding:5px 0px;background:white;"]);
6
+ const ItemWrapper = /*#__PURE__*/styled.button.withConfig({
7
+ componentId: "sc-snqcgs-1"
8
+ })(["display:flex;align-items:center;justify-content:center;width:100%;padding:0 20px;cursor:pointer;border:1px solid transparent;background-color:transparent;outline:none;:hover,:focus{border:", ";}"], _ref => {
9
+ let {
10
+ theme
11
+ } = _ref;
12
+ return "1px solid ".concat(theme.colors.brand[600]);
13
+ });
14
+ const Label = /*#__PURE__*/styled.p.withConfig({
15
+ componentId: "sc-snqcgs-2"
16
+ })(["width:100%;font-size:14px;margin:10px;"]);
17
+ const Separator = /*#__PURE__*/styled.div.withConfig({
18
+ componentId: "sc-snqcgs-3"
19
+ })(["width:100%;border:none;border-bottom:1px solid #ccc;"]);
20
+
21
+ export { ItemWrapper, Label, List, Separator };
@@ -0,0 +1,103 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
3
+ import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
4
+ import 'core-js/modules/web.dom-collections.iterator.js';
5
+ import 'core-js/modules/esnext.async-iterator.filter.js';
6
+ import 'core-js/modules/esnext.iterator.constructor.js';
7
+ import 'core-js/modules/esnext.iterator.filter.js';
8
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
9
+ import 'core-js/modules/esnext.iterator.for-each.js';
10
+ import { useState, useRef, useCallback } from 'react';
11
+ import { Search } from '@elliemae/ds-icons';
12
+ import { getDataProps } from '@elliemae/ds-props-helpers';
13
+ import { DSIconColors } from '@elliemae/ds-icon';
14
+ import { DSNavSearchBox } from '@elliemae/ds-form';
15
+ import { StyledNavSearchBoxContainer } from './styles.js';
16
+ import { Button } from '../../components/Toolbar/styles.js';
17
+ import { jsx } from 'react/jsx-runtime';
18
+
19
+ const _excluded = ["id", "componentProps"];
20
+
21
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
+
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
+ const SearchToggle = _ref => {
25
+ let {
26
+ id,
27
+ componentProps
28
+ } = _ref,
29
+ otherProps = _objectWithoutProperties(_ref, _excluded);
30
+
31
+ const [isOpen, setIsOpen] = useState(false);
32
+ const inputRef = useRef(null);
33
+ const triggerRef = useRef(null);
34
+ const containerRef = useRef(null);
35
+ const {
36
+ onNext,
37
+ onPrevious,
38
+ currentResultIndex,
39
+ totalResults,
40
+ placeholder,
41
+ value,
42
+ onChange,
43
+ onBlur,
44
+ onClear,
45
+ isOpen: userIsOpen,
46
+ onKeyDown,
47
+ onClick
48
+ } = componentProps;
49
+ const handleOnClick = useCallback(e => {
50
+ if (userIsOpen === undefined) setIsOpen(true);
51
+ if (onClick) onClick(e);
52
+ }, [onClick, userIsOpen]);
53
+ const handleOnKeyDown = useCallback(e => {
54
+ if (userIsOpen === undefined) {
55
+ if (e.code === 'Escape') {
56
+ setIsOpen(false);
57
+ setTimeout(() => {
58
+ var _triggerRef$current;
59
+
60
+ return (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.focus();
61
+ });
62
+ }
63
+ }
64
+
65
+ if (onKeyDown) onKeyDown(e);
66
+ }, [onKeyDown, userIsOpen]);
67
+ const handleOnBlur = useCallback(() => {
68
+ setTimeout(() => {
69
+ var _containerRef$current;
70
+
71
+ const contains = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.contains(document.activeElement);
72
+ if (value === '' && !contains) setIsOpen(false);
73
+ });
74
+ }, [value]);
75
+ return userIsOpen || isOpen ? /*#__PURE__*/jsx(StyledNavSearchBoxContainer, {
76
+ onKeyDown: handleOnKeyDown,
77
+ ref: containerRef,
78
+ onBlur: handleOnBlur,
79
+ children: /*#__PURE__*/_jsx(DSNavSearchBox, {
80
+ onNext: onNext,
81
+ onPrevious: onPrevious,
82
+ currentResultIndex: currentResultIndex,
83
+ totalResults: totalResults,
84
+ onClear: onClear,
85
+ placeholder: placeholder,
86
+ onChange: onChange,
87
+ value: value,
88
+ onBlur: onBlur,
89
+ innerRef: inputRef,
90
+ autoFocus: true
91
+ })
92
+ }) : /*#__PURE__*/jsx(Button, _objectSpread(_objectSpread({
93
+ onClick: handleOnClick,
94
+ ref: triggerRef,
95
+ id: id
96
+ }, getDataProps(otherProps)), {}, {
97
+ children: /*#__PURE__*/_jsx(Search, {
98
+ color: DSIconColors.WHITE
99
+ })
100
+ }));
101
+ };
102
+
103
+ export { SearchToggle };
@@ -0,0 +1,7 @@
1
+ import styled from 'styled-components';
2
+
3
+ const StyledNavSearchBoxContainer = /*#__PURE__*/styled.div.withConfig({
4
+ componentId: "sc-1dlcqwh-0"
5
+ })(["background:white;position:relative;min-width:260px;& .em-ds-button{margin-right:2px;height:24px;width:24px;}& .em-ds-input{border:none;outline:none;box-shadow:none;}& .em-ds-input:focus{border:none;box-shadow:none;}& .em-ds-input.em-ds-input--clearable:hover{border:none;outline:none;box-shadow:none;}& .em-ds-input-addon-wrapper{box-shadow:none;}& .em-ds-input-addon-wrapper:hover{outline:none;}& .em-ds-input-addon-wrapper__addon:hover{outline:none;}& .em-ds-input:not(.floating-label-input-controller):hover:active{border:none;outline:none;box-shadow:none;}"]);
6
+
7
+ export { StyledNavSearchBoxContainer };
@@ -0,0 +1,3 @@
1
+ export { AppPicker } from './AppPicker/AppPicker.js';
2
+ export { PopupMenu } from './PopupMenu/PopupMenu.js';
3
+ export { SearchToggle } from './SearchToggle/SearchToggle.js';
@@ -0,0 +1,23 @@
1
+ import { PropTypes } from 'react-desc';
2
+
3
+ const breadcrumbItem = PropTypes.shape({
4
+ label: PropTypes.string.description('breadrcrumb item label'),
5
+ hasNext: PropTypes.bool.description('whether the item has a child or not'),
6
+ isSelected: PropTypes.bool.description('whether the item is selected or not'),
7
+ onClick: PropTypes.func.description('Callback executed on click')
8
+ });
9
+ const toolbarItem = PropTypes.shape({
10
+ label: PropTypes.string.description('title tag description'),
11
+ type: PropTypes.oneOf(['ds-app-picker', 'ds-popup-menu', 'ds-search-toggle', 'custom']).description('use to select one of the out-of-the-box types of items'),
12
+ componentProps: PropTypes.object.description('props of out-of-the-box component'),
13
+ Icon: PropTypes.func.description('Icon to display'),
14
+ onClick: PropTypes.func.description('Callback executed on click')
15
+ });
16
+ const globalHeaderProps = {
17
+ Logo: PropTypes.func.description('Global Header Logo to render. Logo and LogoWithBrand are going to swap during window resizing.'),
18
+ LogoWithBrand: PropTypes.func.description('Global Header Logo With Brand title to render. Logo and LogoWithBrand are going to swap during window resizing.'),
19
+ breadcrumb: PropTypes.arrayOf(breadcrumbItem).description('Breadcrumb items to display. max 3 levels'),
20
+ toolbar: PropTypes.arrayOf(toolbarItem).description('Toolbar items')
21
+ };
22
+
23
+ export { breadcrumbItem, globalHeaderProps, toolbarItem };
package/esm/styles.js ADDED
@@ -0,0 +1,13 @@
1
+ import styled from 'styled-components';
2
+ import { GridContainer } from '@elliemae/ds-grid';
3
+
4
+ const Wrapper = /*#__PURE__*/styled(GridContainer).withConfig({
5
+ componentId: "sc-1v5zxxm-0"
6
+ })(["background-image:linear-gradient(45deg,#0f364a 0%,#1b6392 54%,#164566 100%);color:", ";width:100%;height:40px;padding:0 24px 0 12px;"], _ref => {
7
+ let {
8
+ theme
9
+ } = _ref;
10
+ return theme.colors.neutral['000'];
11
+ });
12
+
13
+ export { Wrapper };