@elliemae/ds-global-header 2.0.0-alpha.1 → 2.0.0-alpha.13

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 (48) hide show
  1. package/cjs/GlobalHeader.js +2 -2
  2. package/cjs/GlobalHeaderContainer.js +10 -7
  3. package/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js +14 -12
  4. package/cjs/components/Breadcrumb/PureBreadcrumb.js +22 -20
  5. package/cjs/components/Breadcrumb/styles.js +44 -23
  6. package/cjs/components/Title/GlobalHeaderTitle.js +2 -2
  7. package/cjs/components/Toolbar/GlobalHeaderToolbar.js +2 -2
  8. package/cjs/components/Toolbar/ToolbarItems.js +20 -19
  9. package/cjs/components/Toolbar/styles.js +17 -8
  10. package/cjs/config/useGetPropsWithDefaults.js +6 -1
  11. package/cjs/config/useGlobalHeader.js +12 -3
  12. package/cjs/config/useValidateProps.js +5 -2
  13. package/cjs/config/validateHelpers.js +5 -28
  14. package/cjs/defaultProps.js +4 -2
  15. package/cjs/index.js +1 -1
  16. package/cjs/outOfTheBox/AppPicker/AppPicker.js +62 -41
  17. package/cjs/outOfTheBox/PopupMenu/PopupMenu.js +22 -36
  18. package/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js +34 -16
  19. package/cjs/outOfTheBox/PopupMenu/styles.js +10 -7
  20. package/cjs/styles.js +7 -4
  21. package/esm/GlobalHeaderContainer.js +10 -7
  22. package/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js +11 -9
  23. package/esm/components/Breadcrumb/PureBreadcrumb.js +22 -19
  24. package/esm/components/Breadcrumb/styles.js +40 -19
  25. package/esm/components/Toolbar/ToolbarItems.js +17 -17
  26. package/esm/components/Toolbar/styles.js +16 -7
  27. package/esm/config/useGetPropsWithDefaults.js +5 -0
  28. package/esm/config/useGlobalHeader.js +11 -2
  29. package/esm/config/useValidateProps.js +5 -2
  30. package/esm/config/validateHelpers.js +5 -28
  31. package/esm/defaultProps.js +4 -2
  32. package/esm/outOfTheBox/AppPicker/AppPicker.js +62 -40
  33. package/esm/outOfTheBox/PopupMenu/PopupMenu.js +22 -35
  34. package/esm/outOfTheBox/PopupMenu/PopupMenuContent.js +35 -18
  35. package/esm/outOfTheBox/PopupMenu/styles.js +6 -3
  36. package/esm/styles.js +6 -3
  37. package/package.json +9 -9
  38. package/types/GlobalHeader.d.ts +30 -5
  39. package/types/components/Breadcrumb/styles.d.ts +4 -4
  40. package/types/components/Toolbar/styles.d.ts +1 -1
  41. package/types/config/validateHelpers.d.ts +4 -4
  42. package/types/index.d.d.ts +10 -16
  43. package/types/outOfTheBox/AppPicker/AppPicker.d.ts +8 -3
  44. package/types/outOfTheBox/PopupMenu/styles.d.ts +4 -4
  45. package/types/propTypes.d.ts +27 -6
  46. package/types/styles.d.ts +1 -1
  47. package/cjs/package.json +0 -7
  48. package/esm/package.json +0 -7
@@ -2,12 +2,21 @@ import styled from 'styled-components';
2
2
 
3
3
  const Button = /*#__PURE__*/styled.button.withConfig({
4
4
  componentId: "sc-1gqj0i3-0"
5
- })(["height:40px;width:40px;border:none;background-color:transparent;cursor:pointer;position:relative;outline:none;&:hover:not(:focus){background-color:", ";outline:none;}&:focus{:after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;border:4px solid ", ";border-radius:4px;}:before{content:'';position:absolute;z-index:2;top:2px;left:2px;width:calc(100% - 4px);height:calc(100% - 4px);border:2px solid ", ";border-radius:4px;}}"], ({
6
- theme
7
- }) => theme.colors.brand[700], ({
8
- theme
9
- }) => theme.colors.brand[700], ({
10
- theme
11
- }) => theme.colors.neutral['000']);
5
+ })(["height:40px;width:40px;border:none;background-color:transparent;cursor:pointer;position:relative;outline:none;&:hover:not(:focus){background-color:", ";outline:none;}&:focus{:after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;border:4px solid ", ";border-radius:4px;}:before{content:'';position:absolute;z-index:2;top:2px;left:2px;width:calc(100% - 4px);height:calc(100% - 4px);border:2px solid ", ";border-radius:4px;}}"], _ref => {
6
+ let {
7
+ theme
8
+ } = _ref;
9
+ return theme.colors.brand[700];
10
+ }, _ref2 => {
11
+ let {
12
+ theme
13
+ } = _ref2;
14
+ return theme.colors.brand[700];
15
+ }, _ref3 => {
16
+ let {
17
+ theme
18
+ } = _ref3;
19
+ return theme.colors.neutral['000'];
20
+ });
12
21
 
13
22
  export { Button };
@@ -1,3 +1,8 @@
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
1
6
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
7
  import { useMemo } from 'react';
3
8
  import { defaultProps } from '../defaultProps.js';
@@ -1,3 +1,4 @@
1
+ import 'core-js/modules/web.dom-collections.iterator.js';
1
2
  import React, { useState, useMemo } from 'react';
2
3
  import { uid } from 'uid';
3
4
  import { useGetPropsWithDefaults } from './useGetPropsWithDefaults.js';
@@ -5,8 +6,16 @@ import { useGetPropsWithDefaults } from './useGetPropsWithDefaults.js';
5
6
  const useGlobalHeader = props => {
6
7
  const [showIconOnly, setShowIconOnly] = useState(false);
7
8
  const instanceUID = useMemo(() => uid(5), []);
8
- const globalHeaderToolbarGrid = useMemo(() => props.toolbar.map(() => '1fr'), [props.toolbar]);
9
- const globalHeaderBreadcrumbGrid = useMemo(() => ['auto', ...props.breadcrumb.map(() => 'auto'), '1fr'], [props.breadcrumb]);
9
+ const globalHeaderToolbarGrid = useMemo(() => {
10
+ var _props$toolbar$length, _props$toolbar;
11
+
12
+ return new Array((_props$toolbar$length = props === null || props === void 0 ? void 0 : (_props$toolbar = props.toolbar) === null || _props$toolbar === void 0 ? void 0 : _props$toolbar.length) !== null && _props$toolbar$length !== void 0 ? _props$toolbar$length : 0).fill('1fr');
13
+ }, [props.toolbar]);
14
+ const globalHeaderBreadcrumbGrid = useMemo(() => {
15
+ var _props$breadcrumb$len, _props$breadcrumb;
16
+
17
+ return ['auto', ...new Array((_props$breadcrumb$len = props === null || props === void 0 ? void 0 : (_props$breadcrumb = props.breadcrumb) === null || _props$breadcrumb === void 0 ? void 0 : _props$breadcrumb.length) !== null && _props$breadcrumb$len !== void 0 ? _props$breadcrumb$len : 0).fill('auto'), '1fr'];
18
+ }, [props.breadcrumb]);
10
19
  const propsWithDefaults = useGetPropsWithDefaults(props);
11
20
  const ctx = React.useMemo(() => ({
12
21
  props: propsWithDefaults,
@@ -1,3 +1,6 @@
1
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.for-each.js';
1
4
  import { throwLogoError, throwBreadcrumbItemError, isValidToolbarType, throwToolbarItemGenericError, isObject, throwToolbarPopupItemError, throwToolbarAppPickerItemError } from './validateHelpers.js';
2
5
 
3
6
  const validatePopupItem = componentProps => {
@@ -59,7 +62,7 @@ const useValidateProps = props => {
59
62
  throwLogoError('LogoWithBrand', LogoWithBrand);
60
63
  }
61
64
 
62
- breadcrumb.forEach(breadcrumbItem => {
65
+ breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.forEach(breadcrumbItem => {
63
66
  if (breadcrumbItem.label && typeof breadcrumbItem.label !== 'string') {
64
67
  throwBreadcrumbItemError('label', breadcrumbItem.label);
65
68
  }
@@ -76,7 +79,7 @@ const useValidateProps = props => {
76
79
  throwBreadcrumbItemError('isSelected', breadcrumbItem.isSelected);
77
80
  }
78
81
  });
79
- toolbar.forEach(toolbarItem => {
82
+ toolbar === null || toolbar === void 0 ? void 0 : toolbar.forEach(toolbarItem => {
80
83
  validateGenericToolbarItem(toolbarItem);
81
84
 
82
85
  if (toolbarItem.type) {
@@ -26,42 +26,19 @@ const getVariableType = arg => {
26
26
  };
27
27
  const isValidToolbarType = string => string === 'ds-app-picker' || string === 'ds-popup-menu';
28
28
  const throwBreadcrumbItemError = (validPropKey, invalidProp) => {
29
- throw new Error(`You are trying to pass a not valid "${validPropKey}" property for a breadcrumb item, please provide a valid type.
30
-
31
- Received: ${invalidProp} (${typeof invalidProp})
32
- Expected: (${breadcrumbProps[validPropKey]})
33
- `);
29
+ throw new Error("You are trying to pass a not valid \"".concat(validPropKey, "\" property for a breadcrumb item, please provide a valid type.\n\n Received: ").concat(invalidProp, " (").concat(typeof invalidProp, ")\n Expected: (").concat(breadcrumbProps[validPropKey], ")\n "));
34
30
  };
35
31
  const throwToolbarPopupItemError = (validPropKey, invalidProp) => {
36
- throw new Error(`You are trying to pass a not valid "${validPropKey}" property inside componentProps for a ds-popup-menu
37
- toolbar item, please provide a valid type.
38
-
39
- Received: ${invalidProp} (${getVariableType(invalidProp)})
40
- Expected: (${toolbarProps[validPropKey]})
41
- `);
32
+ throw new Error("You are trying to pass a not valid \"".concat(validPropKey, "\" property inside componentProps for a ds-popup-menu \n toolbar item, please provide a valid type.\n\n Received: ").concat(invalidProp, " (").concat(getVariableType(invalidProp), ")\n Expected: (").concat(toolbarProps[validPropKey], ")\n "));
42
33
  };
43
34
  const throwToolbarAppPickerItemError = (validPropKey, invalidProp) => {
44
- throw new Error(`You are trying to pass a not valid "${validPropKey}" property inside componentProps for a ds-app-picker
45
- toolbar item, please provide a valid type.
46
-
47
- Received: ${invalidProp} (${getVariableType(invalidProp)})
48
- Expected: (${toolbarProps[validPropKey]})
49
- `);
35
+ throw new Error("You are trying to pass a not valid \"".concat(validPropKey, "\" property inside componentProps for a ds-app-picker \n toolbar item, please provide a valid type.\n\n Received: ").concat(invalidProp, " (").concat(getVariableType(invalidProp), ")\n Expected: (").concat(toolbarProps[validPropKey], ")\n "));
50
36
  };
51
37
  const throwToolbarItemGenericError = (validPropKey, invalidProp) => {
52
- throw new Error(`You are trying to pass a not valid "${validPropKey}" property for a toolbar item, please provide a valid type.
53
-
54
- Received: ${invalidProp} (${getVariableType(invalidProp)})
55
- Expected: (${toolbarProps[validPropKey]})
56
- `);
38
+ throw new Error("You are trying to pass a not valid \"".concat(validPropKey, "\" property for a toolbar item, please provide a valid type.\n\n Received: ").concat(invalidProp, " (").concat(getVariableType(invalidProp), ")\n Expected: (").concat(toolbarProps[validPropKey], ")\n "));
57
39
  };
58
40
  const throwLogoError = (validPropKey, invalidProp) => {
59
- throw new Error(`You are trying to pass a not valid "${validPropKey}" property for a global header,
60
- remember to provide both Logo and LogoWithBrand properties with a valid type.
61
-
62
- Received: ${invalidProp} (${getVariableType(invalidProp)}).
63
- Expected: (react component).
64
- `);
41
+ throw new Error("You are trying to pass a not valid \"".concat(validPropKey, "\" property for a global header, \n remember to provide both Logo and LogoWithBrand properties with a valid type.\n\n Received: ").concat(invalidProp, " (").concat(getVariableType(invalidProp), ").\n Expected: (react component).\n "));
65
42
  };
66
43
 
67
44
  export { breadcrumbProps, getVariableType, isObject, isValidToolbarType, throwBreadcrumbItemError, throwLogoError, throwToolbarAppPickerItemError, throwToolbarItemGenericError, throwToolbarPopupItemError, toolbarProps };
@@ -1,8 +1,10 @@
1
+ const emptyComp = () => null;
2
+
1
3
  const defaultProps = {
2
4
  breadcrumb: [],
3
5
  toolbar: [],
4
- LogoWithBrand: null,
5
- Logo: null
6
+ LogoWithBrand: emptyComp,
7
+ Logo: emptyComp
6
8
  };
7
9
 
8
10
  export { defaultProps };
@@ -1,63 +1,85 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
2
3
  import { useState, useRef, useCallback, useMemo } from 'react';
3
4
  import { DSAppPicker } from '@elliemae/ds-app-picker';
4
- import MenuPicker from '@elliemae/ds-icons/MenuPicker';
5
+ import { mergeRefs } from '@elliemae/ds-utilities';
6
+ import { MenuPicker } from '@elliemae/ds-icons';
5
7
  import { Button } from '../../components/Toolbar/styles.js';
6
8
  import { jsx } from 'react/jsx-runtime';
7
9
 
8
10
  var _MenuPicker;
9
- const AppPicker = ({
10
- label,
11
- apps,
12
- customApps,
13
- sectionTitle,
14
- customSectionTitle,
15
- onClick
16
- }) => {
17
- var _DSAppPicker;
18
-
11
+ const AppPicker = _ref => {
12
+ let {
13
+ label,
14
+ apps,
15
+ icon,
16
+ customApps,
17
+ sectionTitle,
18
+ customSectionTitle,
19
+ actionRef,
20
+ isOpen: userIsOpen,
21
+ onKeyDown: userOnKeyDown,
22
+ onClickOutside: userOnClickOutside,
23
+ renderTrigger: userRenderTrigger,
24
+ onClose,
25
+ triggerRef,
26
+ triggerOnClick
27
+ } = _ref;
19
28
  const [isOpen, setIsOpen] = useState(false);
20
- const buttonRef = useRef();
21
- const handleKeyDown = useCallback(e => {
29
+ const buttonRef = useRef(null);
30
+ const handleTriggerKeyDown = useCallback(e => {
22
31
  if (e.code === 'Enter' || e.code === 'Space') {
23
32
  setIsOpen(true);
24
33
  }
25
34
  }, []);
26
- const handleOnClose = useCallback(() => {
27
- var _buttonRef$current;
35
+ const handleAppPickerOnKeyDown = useCallback(e => {
36
+ if (e.code === 'Escape') {
37
+ var _buttonRef$current;
28
38
 
39
+ setIsOpen(false);
40
+ buttonRef === null || buttonRef === void 0 ? void 0 : (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.focus();
41
+ }
42
+ }, []);
43
+ const handleOnClickOutside = useCallback(() => {
29
44
  setIsOpen(false);
30
- (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.focus();
31
45
  }, []);
32
- const handleOnClick = useCallback(e => {
46
+ const handleOnClick = useCallback(() => {
33
47
  setIsOpen(true);
34
- onClick(e);
35
- }, [onClick]);
36
- const trigger = useMemo(() => ({
37
- ref
38
- }) => /*#__PURE__*/jsx("div", {
39
- ref: ref,
40
- children: /*#__PURE__*/jsx(Button, {
41
- onClick: handleOnClick,
42
- onKeyDown: handleKeyDown,
43
- ref: buttonRef,
44
- title: label,
45
- "data-testid": "gh-toolbar-item",
46
- children: _MenuPicker || (_MenuPicker = /*#__PURE__*/_jsx(MenuPicker, {
47
- fill: "#FFF",
48
- size: "m"
49
- }))
50
- })
51
- }), [handleKeyDown, handleOnClick, label]);
52
- return useMemo(() => _DSAppPicker || (_DSAppPicker = /*#__PURE__*/_jsx(DSAppPicker, {
53
- isOpen: isOpen,
48
+ }, []);
49
+ const renderTrigger = useMemo(() => _ref2 => {
50
+ let {
51
+ ref
52
+ } = _ref2;
53
+ return /*#__PURE__*/jsx("div", {
54
+ ref: ref,
55
+ children: /*#__PURE__*/jsx(Button, {
56
+ onClick: triggerOnClick !== null && triggerOnClick !== void 0 ? triggerOnClick : handleOnClick,
57
+ onKeyDown: handleTriggerKeyDown,
58
+ ref: mergeRefs(buttonRef, triggerRef),
59
+ title: label,
60
+ "data-testid": "gh-toolbar-item",
61
+ children: _MenuPicker || (_MenuPicker = /*#__PURE__*/_jsx(MenuPicker, {
62
+ fill: "#FFF",
63
+ width: 20.73,
64
+ height: 20.73
65
+ }))
66
+ })
67
+ });
68
+ }, [triggerOnClick, handleOnClick, handleTriggerKeyDown, label]);
69
+ return /*#__PURE__*/_jsx(DSAppPicker, {
54
70
  apps: apps,
55
71
  customApps: customApps,
56
72
  sectionTitle: sectionTitle,
57
73
  customSectionTitle: customSectionTitle,
58
- onClose: handleOnClose,
59
- renderTrigger: trigger
60
- })), [apps, customApps, customSectionTitle, handleOnClose, isOpen, sectionTitle, trigger]);
74
+ icon: icon,
75
+ onKeyDown: userOnKeyDown !== null && userOnKeyDown !== void 0 ? userOnKeyDown : handleAppPickerOnKeyDown,
76
+ actionRef: actionRef,
77
+ onClickOutside: userOnClickOutside !== null && userOnClickOutside !== void 0 ? userOnClickOutside : handleOnClickOutside,
78
+ renderTrigger: userRenderTrigger !== null && userRenderTrigger !== void 0 ? userRenderTrigger : renderTrigger,
79
+ isOpen: userIsOpen !== null && userIsOpen !== void 0 ? userIsOpen : isOpen,
80
+ onClose: onClose,
81
+ triggerRef: triggerRef
82
+ });
61
83
  };
62
84
 
63
85
  export { AppPicker };
@@ -1,32 +1,32 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import { useState, useRef, useCallback, useMemo } from 'react';
3
- import Popover from '@elliemae/ds-popover';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
3
+ import { useState, useCallback, useMemo } from 'react';
4
+ import { DSPopperJS } from '@elliemae/ds-popperjs';
4
5
  import { PopupMenuContent } from './PopupMenuContent.js';
5
6
  import { Button } from '../../components/Toolbar/styles.js';
6
7
  import { jsx } from 'react/jsx-runtime';
7
8
 
8
- const PopupMenu = ({
9
- Icon,
10
- options,
11
- closeOnClick,
12
- title,
13
- onClick
14
- }) => {
9
+ const PopupMenu = _ref => {
15
10
  var _PopupMenuContent;
16
11
 
12
+ let {
13
+ Icon,
14
+ options,
15
+ closeOnClick,
16
+ title,
17
+ onClick
18
+ } = _ref;
17
19
  const [isOpen, setIsOpen] = useState(false);
18
- const buttonRef = useRef();
20
+ const [buttonRef, setButtonRef] = useState(null);
19
21
  const handleKeyPress = useCallback(e => {
20
22
  if (e.code === 'Enter' || e.code === 'Space') {
21
23
  setIsOpen(true);
22
24
  }
23
25
  }, []);
24
26
  const handleOnClose = useCallback(() => {
25
- var _buttonRef$current;
26
-
27
27
  setIsOpen(false);
28
- (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.focus();
29
- }, []);
28
+ buttonRef === null || buttonRef === void 0 ? void 0 : buttonRef.focus();
29
+ }, [buttonRef]);
30
30
  const handleTriggerOnClick = useCallback(e => {
31
31
  setIsOpen(true);
32
32
  onClick(e);
@@ -34,39 +34,26 @@ const PopupMenu = ({
34
34
  const handleItemClick = useCallback(() => {
35
35
  if (closeOnClick) handleOnClose();
36
36
  }, [closeOnClick, handleOnClose]);
37
- const handleClickOutside = useCallback(() => setIsOpen(false), []);
38
37
  const content = useMemo(() => _PopupMenuContent || (_PopupMenuContent = /*#__PURE__*/_jsx(PopupMenuContent, {
39
38
  options: options,
40
39
  onItemClick: handleItemClick,
41
40
  onClose: handleOnClose
42
41
  })), [options, handleItemClick, handleOnClose]);
43
- const trigger = useMemo(() => ({
44
- ref
45
- }) => /*#__PURE__*/jsx(Button, {
42
+ return /*#__PURE__*/_jsx("div", {}, void 0, /*#__PURE__*/jsx(Button, {
46
43
  onClick: handleTriggerOnClick,
47
44
  onKeyPress: handleKeyPress,
48
45
  title: title,
49
- ref: buttonRef,
46
+ ref: setButtonRef,
50
47
  "data-testid": "gh-toolbar-item",
51
- children: /*#__PURE__*/_jsx(Icon, {
52
- innerRef: ref,
48
+ children: Icon && /*#__PURE__*/_jsx(Icon, {
53
49
  fill: "#FFF",
54
50
  size: "m"
55
51
  })
56
- }), [Icon, handleKeyPress, handleTriggerOnClick, title]);
57
- return useMemo(() => /*#__PURE__*/_jsx(Popover, {
58
- isOpen: isOpen,
59
- content: content,
60
- onClickOutside: handleClickOutside,
61
- placement: "bottom",
62
- interactionType: "click",
63
- showArrow: true,
64
- style: {
65
- padding: '0',
66
- width: 'fit-content'
67
- },
68
- renderTrigger: trigger
69
- }), [content, handleClickOutside, isOpen, trigger]);
52
+ }), /*#__PURE__*/_jsx(DSPopperJS, {
53
+ referenceElement: buttonRef,
54
+ showPopover: isOpen,
55
+ closeContextMenu: handleOnClose
56
+ }, void 0, content));
70
57
  };
71
58
 
72
59
  export { PopupMenu };
@@ -1,37 +1,50 @@
1
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';
2
10
  import React, { useContext, useRef, useEffect, useMemo } from 'react';
3
- import { ItemWrapper, Label, Separator, List } from './styles.js';
11
+ import { getDataProps, getAriaProps } from '@elliemae/ds-props-helpers';
12
+ import { ItemWrapper, Separator, List, Label } from './styles.js';
4
13
  import { GlobalHeaderContext } from '../../GlobalHeaderContext.js';
5
- import { jsx } from 'react/jsx-runtime';
14
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
15
 
7
- const PopupMenuContent = /*#__PURE__*/React.memo(({
8
- options,
9
- onItemClick,
10
- onClose
11
- }) => {
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { 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
+ } = _ref;
12
25
  const {
13
26
  instanceUID
14
27
  } = useContext(GlobalHeaderContext);
15
- const menuRef = useRef();
28
+ const menuRef = useRef(null);
16
29
  useEffect(() => {
17
30
  var _menuRef$current, _menuRef$current$firs;
18
31
 
19
32
  (_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();
20
33
  }, []);
21
34
  const content = useMemo(() => options.map(option => {
22
- var _Content;
23
-
24
35
  const {
25
36
  type,
26
- icon,
27
- label,
37
+ Icon,
38
+ label = '',
28
39
  onClick,
29
40
  Content
30
41
  } = option;
31
42
 
43
+ const ariaAndDataProps = _objectSpread(_objectSpread({}, getAriaProps(option)), getDataProps(option));
44
+
32
45
  const handleClick = e => {
33
46
  onItemClick(e);
34
- onClick(e);
47
+ if (onClick) onClick(e);
35
48
  };
36
49
 
37
50
  const handleKeyDown = e => {
@@ -40,19 +53,23 @@ const PopupMenuContent = /*#__PURE__*/React.memo(({
40
53
 
41
54
  switch (type) {
42
55
  case 'separator':
43
- return /*#__PURE__*/_jsx(Separator, {}, `${instanceUID}-separator-${label}`);
56
+ return /*#__PURE__*/jsx(Separator, _objectSpread({}, ariaAndDataProps), "".concat(instanceUID, "-separator-").concat(label));
44
57
 
45
58
  case 'custom':
46
- return /*#__PURE__*/_jsx(ItemWrapper, {
59
+ return /*#__PURE__*/jsx(ItemWrapper, _objectSpread(_objectSpread({
47
60
  onClick: handleClick,
48
61
  onKeyDown: handleKeyDown
49
- }, `${instanceUID}-popup-${label}`, _Content || (_Content = /*#__PURE__*/_jsx(Content, {})));
62
+ }, ariaAndDataProps), {}, {
63
+ children: Content && /*#__PURE__*/_jsx(Content, {})
64
+ }), "".concat(instanceUID, "-popup-").concat(label));
50
65
 
51
66
  default:
52
- return /*#__PURE__*/_jsx(ItemWrapper, {
67
+ return /*#__PURE__*/jsxs(ItemWrapper, _objectSpread(_objectSpread({
53
68
  onClick: handleClick,
54
69
  onKeyDown: handleKeyDown
55
- }, `${instanceUID}-popup-${label}`, icon, Label && /*#__PURE__*/_jsx(Label, {}, void 0, label));
70
+ }, ariaAndDataProps), {}, {
71
+ children: [Icon && /*#__PURE__*/_jsx(Icon, {}), Label && /*#__PURE__*/_jsx(Label, {}, void 0, label)]
72
+ }), "".concat(instanceUID, "-popup-").concat(label));
56
73
  }
57
74
  }), [onClose, onItemClick, options, instanceUID]);
58
75
  return /*#__PURE__*/jsx(List, {
@@ -5,9 +5,12 @@ const List = /*#__PURE__*/styled.div.withConfig({
5
5
  })(["padding:5px 0px;"]);
6
6
  const ItemWrapper = /*#__PURE__*/styled.button.withConfig({
7
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:", ";}"], ({
9
- theme
10
- }) => `1px solid ${theme.colors.brand[600]}`);
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
+ });
11
14
  const Label = /*#__PURE__*/styled.p.withConfig({
12
15
  componentId: "sc-snqcgs-2"
13
16
  })(["width:100%;font-size:14px;margin:10px;"]);
package/esm/styles.js CHANGED
@@ -3,8 +3,11 @@ import { GridContainer } from '@elliemae/ds-grid';
3
3
 
4
4
  const Wrapper = /*#__PURE__*/styled(GridContainer).withConfig({
5
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;"], ({
7
- theme
8
- }) => theme.colors.neutral['000']);
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
+ });
9
12
 
10
13
  export { Wrapper };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-global-header",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.13",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Global Header",
6
6
  "module": "./esm/index.js",
@@ -120,23 +120,23 @@
120
120
  "build": "node ../../scripts/build/build.js"
121
121
  },
122
122
  "dependencies": {
123
- "@elliemae/ds-app-picker": "2.0.0-alpha.1",
124
- "@elliemae/ds-classnames": "2.0.0-alpha.1",
125
- "@elliemae/ds-grid": "2.0.0-alpha.1",
126
- "@elliemae/ds-icons": "2.0.0-alpha.1",
127
- "@elliemae/ds-popover": "2.0.0-alpha.1",
128
- "@elliemae/ds-utilities": "2.0.0-alpha.1",
123
+ "@elliemae/ds-app-picker": "2.0.0-alpha.13",
124
+ "@elliemae/ds-grid": "2.0.0-alpha.13",
125
+ "@elliemae/ds-icons": "2.0.0-alpha.13",
126
+ "@elliemae/ds-popperjs": "2.0.0-alpha.13",
127
+ "@elliemae/ds-props-helpers": "2.0.0-alpha.13",
128
+ "@elliemae/ds-utilities": "2.0.0-alpha.13",
129
129
  "react-desc": "~4.1.3",
130
130
  "uid": "~2.0.0"
131
131
  },
132
132
  "devDependencies": {
133
- "styled-components": "~5.3.1"
133
+ "styled-components": "~5.3.3"
134
134
  },
135
135
  "peerDependencies": {
136
136
  "lodash": "^4.17.21",
137
137
  "react": "^17.0.2",
138
138
  "react-dom": "^17.0.2",
139
- "styled-components": "^5.3.1"
139
+ "styled-components": "^5.3.3"
140
140
  },
141
141
  "publishConfig": {
142
142
  "access": "public",
@@ -1,14 +1,39 @@
1
+ /// <reference path="../../../../shared/typings/react-desc.d.ts" />
1
2
  /// <reference types="react" />
2
3
  import type { GlobalHeaderPropsT as Props } from './index.d';
3
4
  declare const GlobalHeader: {
4
5
  (props: Props): JSX.Element;
5
6
  defaultProps: Props;
6
7
  propTypes: {
7
- Logo: any;
8
- LogoWithBrand: any;
9
- breadcrumb: any;
10
- toolbar: any;
8
+ Logo: {
9
+ defaultValue<T = unknown>(arg: T): {
10
+ deprecated: import("react-desc").PropTypesDescValidator;
11
+ };
12
+ isRequired: import("react-desc").PropTypesDescValidator;
13
+ };
14
+ LogoWithBrand: {
15
+ defaultValue<T = unknown>(arg: T): {
16
+ deprecated: import("react-desc").PropTypesDescValidator;
17
+ };
18
+ isRequired: import("react-desc").PropTypesDescValidator;
19
+ };
20
+ breadcrumb: {
21
+ defaultValue<T = unknown>(arg: T): {
22
+ deprecated: import("react-desc").PropTypesDescValidator;
23
+ };
24
+ isRequired: import("react-desc").PropTypesDescValidator;
25
+ };
26
+ toolbar: {
27
+ defaultValue<T = unknown>(arg: T): {
28
+ deprecated: import("react-desc").PropTypesDescValidator;
29
+ };
30
+ isRequired: import("react-desc").PropTypesDescValidator;
31
+ };
11
32
  };
12
33
  };
13
- declare const GlobalHeaderWithSchema: any;
34
+ declare const GlobalHeaderWithSchema: {
35
+ (props?: Props | undefined): JSX.Element;
36
+ propTypes: unknown;
37
+ toTypescript: () => import("react-desc").TypescriptSchema;
38
+ };
14
39
  export { GlobalHeader, GlobalHeaderWithSchema };
@@ -1,5 +1,5 @@
1
1
  import type { LabelT, PipeT } from '../../index.d';
2
- export declare const Pipe: import("styled-components").StyledComponent<"span", any, PipeT, never>;
3
- export declare const BreadcrumbItem: import("styled-components").StyledComponent<"div", any, {}, never>;
4
- export declare const LabelButton: import("styled-components").StyledComponent<"button", any, {}, never>;
5
- export declare const Label: import("styled-components").StyledComponent<"p", any, LabelT, never>;
2
+ export declare const Pipe: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, PipeT, never>;
3
+ export declare const BreadcrumbItem: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
4
+ export declare const LabelButton: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {}, never>;
5
+ export declare const Label: import("styled-components").StyledComponent<"p", import("styled-components").DefaultTheme, LabelT, never>;
@@ -1 +1 @@
1
- export declare const Button: import("styled-components").StyledComponent<"button", any, {}, never>;
1
+ export declare const Button: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {}, never>;
@@ -20,8 +20,8 @@ export declare const toolbarProps: {
20
20
  export declare const isObject: (obj: unknown) => boolean;
21
21
  export declare const getVariableType: (arg: unknown) => string;
22
22
  export declare const isValidToolbarType: (string: unknown) => boolean;
23
- export declare const throwBreadcrumbItemError: (validPropKey: string, invalidProp: unknown) => void;
24
- export declare const throwToolbarPopupItemError: (validPropKey: string, invalidProp: unknown) => void;
25
- export declare const throwToolbarAppPickerItemError: (validPropKey: string, invalidProp: unknown) => void;
26
- export declare const throwToolbarItemGenericError: (validPropKey: string, invalidProp: unknown) => void;
23
+ export declare const throwBreadcrumbItemError: (validPropKey: keyof typeof breadcrumbProps, invalidProp: unknown) => void;
24
+ export declare const throwToolbarPopupItemError: (validPropKey: keyof typeof toolbarProps, invalidProp: unknown) => void;
25
+ export declare const throwToolbarAppPickerItemError: (validPropKey: keyof typeof toolbarProps, invalidProp: unknown) => void;
26
+ export declare const throwToolbarItemGenericError: (validPropKey: keyof typeof toolbarProps, invalidProp: unknown) => void;
27
27
  export declare const throwLogoError: (validPropKey: string, invalidProp: unknown) => void;