@elliemae/ds-global-header 2.0.0-alpha.3 → 2.0.0-alpha.7

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.
@@ -24,9 +24,9 @@ var _GlobalHeaderTitle, _GlobalHeaderBreadcru, _GlobalHeaderToolbar;
24
24
  const GlobalHeader = props => {
25
25
  useValidateProps.useValidateProps(props);
26
26
  const ctx = useGlobalHeader.useGlobalHeader(props);
27
- return /*#__PURE__*/_jsx__default['default'](GlobalHeaderContainer.GlobalHeaderContainer, {}, void 0, /*#__PURE__*/_jsx__default['default'](GlobalHeaderContext.GlobalHeaderContext.Provider, {
27
+ return /*#__PURE__*/_jsx__default["default"](GlobalHeaderContainer.GlobalHeaderContainer, {}, void 0, /*#__PURE__*/_jsx__default["default"](GlobalHeaderContext.GlobalHeaderContext.Provider, {
28
28
  value: ctx
29
- }, void 0, _GlobalHeaderTitle || (_GlobalHeaderTitle = /*#__PURE__*/_jsx__default['default'](GlobalHeaderTitle.GlobalHeaderTitle, {})), _GlobalHeaderBreadcru || (_GlobalHeaderBreadcru = /*#__PURE__*/_jsx__default['default'](GlobalHeaderBreadcrumb.GlobalHeaderBreadcrumb, {})), _GlobalHeaderToolbar || (_GlobalHeaderToolbar = /*#__PURE__*/_jsx__default['default'](GlobalHeaderToolbar.GlobalHeaderToolbar, {}))));
29
+ }, void 0, _GlobalHeaderTitle || (_GlobalHeaderTitle = /*#__PURE__*/_jsx__default["default"](GlobalHeaderTitle.GlobalHeaderTitle, {})), _GlobalHeaderBreadcru || (_GlobalHeaderBreadcru = /*#__PURE__*/_jsx__default["default"](GlobalHeaderBreadcrumb.GlobalHeaderBreadcrumb, {})), _GlobalHeaderToolbar || (_GlobalHeaderToolbar = /*#__PURE__*/_jsx__default["default"](GlobalHeaderToolbar.GlobalHeaderToolbar, {}))));
30
30
  };
31
31
 
32
32
  GlobalHeader.defaultProps = defaultProps.defaultProps;
@@ -12,9 +12,9 @@ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
12
12
 
13
13
  const GlobalHeaderContainer = ({
14
14
  children
15
- }) => /*#__PURE__*/_jsx__default['default']("header", {
15
+ }) => /*#__PURE__*/_jsx__default["default"]("header", {
16
16
  "data-testid": "ds-global-header"
17
- }, void 0, /*#__PURE__*/_jsx__default['default'](styles.Wrapper, {
17
+ }, void 0, /*#__PURE__*/_jsx__default["default"](styles.Wrapper, {
18
18
  cols: ['auto', '1fr', 'auto']
19
19
  }, void 0, children));
20
20
 
@@ -41,14 +41,14 @@ const GlobalHeaderBreadcrumb = () => {
41
41
  window.addEventListener('resize', evaluateShowIconOnly);
42
42
  return () => window.removeEventListener('resize', evaluateShowIconOnly);
43
43
  }, [breakpoint, flexRegion, setShowIconOnly]);
44
- return /*#__PURE__*/_jsx__default['default'](dsGrid.Grid, {
44
+ return /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
45
45
  height: "100%",
46
46
  alignItems: "center",
47
47
  justifyContent: "left",
48
48
  role: "navigation",
49
49
  "aria-label": "breadcrumbs",
50
50
  cols: globalHeaderBreadcrumbGrid
51
- }, void 0, /*#__PURE__*/_jsx__default['default'](styles.Pipe, {
51
+ }, void 0, /*#__PURE__*/_jsx__default["default"](styles.Pipe, {
52
52
  showIconOnly: showIconOnly
53
53
  }), breadcrumb.map(item => {
54
54
  const {
@@ -57,7 +57,7 @@ const GlobalHeaderBreadcrumb = () => {
57
57
  isSelected,
58
58
  onClick
59
59
  } = item;
60
- return /*#__PURE__*/_jsx__default['default'](PureBreadcrumb.PureBreadcrumb, {
60
+ return /*#__PURE__*/_jsx__default["default"](PureBreadcrumb.PureBreadcrumb, {
61
61
  label: label,
62
62
  hasNext: hasNext,
63
63
  isSelected: isSelected,
@@ -14,20 +14,20 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
14
  var Chevron__default = /*#__PURE__*/_interopDefaultLegacy(Chevron);
15
15
 
16
16
  var _Chevron;
17
- const PureBreadcrumb = /*#__PURE__*/React__default['default'].memo(({
17
+ const PureBreadcrumb = /*#__PURE__*/React__default["default"].memo(({
18
18
  onClick,
19
19
  isSelected,
20
20
  length,
21
21
  label,
22
22
  hasNext
23
- }) => /*#__PURE__*/_jsx__default['default'](styles.BreadcrumbItem, {}, void 0, /*#__PURE__*/_jsx__default['default'](styles.LabelButton, {
23
+ }) => /*#__PURE__*/_jsx__default["default"](styles.BreadcrumbItem, {}, void 0, /*#__PURE__*/_jsx__default["default"](styles.LabelButton, {
24
24
  onClick: onClick,
25
25
  "aria-selected": isSelected,
26
26
  "data-testid": "gh-breadcrumb-btn"
27
- }, void 0, /*#__PURE__*/_jsx__default['default'](styles.Label, {
27
+ }, void 0, /*#__PURE__*/_jsx__default["default"](styles.Label, {
28
28
  isSelected: isSelected,
29
29
  isOnlyItem: length === 1
30
- }, void 0, label)), hasNext && (_Chevron || (_Chevron = /*#__PURE__*/_jsx__default['default'](Chevron__default['default'], {
30
+ }, void 0, label)), hasNext && (_Chevron || (_Chevron = /*#__PURE__*/_jsx__default["default"](Chevron__default["default"], {
31
31
  size: "m",
32
32
  fill: "#FFF"
33
33
  })))));
@@ -8,22 +8,22 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
10
 
11
- const Pipe = /*#__PURE__*/styled__default['default'].span.withConfig({
11
+ const Pipe = /*#__PURE__*/styled__default["default"].span.withConfig({
12
12
  componentId: "sc-1n5l527-0"
13
13
  })(["margin:0 7px 0 0;border-left:", ";height:20px;"], ({
14
14
  showIconOnly
15
15
  }) => showIconOnly ? 'none' : '1px solid #fff');
16
- const BreadcrumbItem = /*#__PURE__*/styled__default['default'].div.withConfig({
16
+ const BreadcrumbItem = /*#__PURE__*/styled__default["default"].div.withConfig({
17
17
  componentId: "sc-1n5l527-1"
18
18
  })(["display:flex;align-items:center;height:100%;"]);
19
- const LabelButton = /*#__PURE__*/styled__default['default'].button.withConfig({
19
+ const LabelButton = /*#__PURE__*/styled__default["default"].button.withConfig({
20
20
  componentId: "sc-1n5l527-2"
21
21
  })(["width:fit-content;height:100%;margin:0;padding:0;border:1px solid transparent;background-color:transparent;outline:none;cursor:pointer;position:relative;&:focus{:after{content:'';position:absolute;top:0;left:-7px;width:calc(100% + 14px);height:100%;border:4px solid ", ";border-radius:6px;}:before{content:'';position:absolute;z-index:2;top:2px;left:-5px;width:calc(100% + 10px);height:calc(100% - 4px);border:2px solid ", ";border-radius:4px;}}"], ({
22
22
  theme
23
23
  }) => theme.colors.brand[700], ({
24
24
  theme
25
25
  }) => theme.colors.neutral['000']);
26
- const Label = /*#__PURE__*/styled__default['default'].p.withConfig({
26
+ const Label = /*#__PURE__*/styled__default["default"].p.withConfig({
27
27
  componentId: "sc-1n5l527-3"
28
28
  })(["color:", ";", ";font-size:16px;text-transform:uppercase;border-bottom:", ";margin:3px 5px 0 5px;:hover{", ";}"], ({
29
29
  theme
@@ -19,11 +19,11 @@ const GlobalHeaderTitle = () => {
19
19
  },
20
20
  showIconOnly
21
21
  } = React.useContext(GlobalHeaderContext.GlobalHeaderContext);
22
- return /*#__PURE__*/_jsx__default['default'](dsGrid.Grid, {
22
+ return /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
23
23
  alignItems: "center",
24
24
  pr: showIconOnly ? '0px' : '36px',
25
25
  cols: showIconOnly ? ['auto'] : ['auto', '1fr']
26
- }, void 0, Logo && showIconOnly && /*#__PURE__*/_jsx__default['default'](Logo, {}), LogoWithBrand && !showIconOnly && /*#__PURE__*/_jsx__default['default'](LogoWithBrand, {}));
26
+ }, void 0, Logo && showIconOnly && /*#__PURE__*/_jsx__default["default"](Logo, {}), LogoWithBrand && !showIconOnly && /*#__PURE__*/_jsx__default["default"](LogoWithBrand, {}));
27
27
  };
28
28
 
29
29
  exports.GlobalHeaderTitle = GlobalHeaderTitle;
@@ -17,14 +17,14 @@ const GlobalHeaderToolbar = () => {
17
17
  const {
18
18
  globalHeaderToolbarGrid
19
19
  } = React.useContext(GlobalHeaderContext.GlobalHeaderContext);
20
- return /*#__PURE__*/_jsx__default['default'](dsGrid.Grid, {
20
+ return /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
21
21
  height: "100%",
22
22
  alignItems: "center",
23
23
  justifyContent: "center",
24
24
  gutter: "xxs",
25
25
  cols: globalHeaderToolbarGrid,
26
26
  role: "toolbar"
27
- }, void 0, _ToolbarItems || (_ToolbarItems = /*#__PURE__*/_jsx__default['default'](ToolbarItems.ToolbarItems, {})));
27
+ }, void 0, _ToolbarItems || (_ToolbarItems = /*#__PURE__*/_jsx__default["default"](ToolbarItems.ToolbarItems, {})));
28
28
  };
29
29
 
30
30
  exports.GlobalHeaderToolbar = GlobalHeaderToolbar;
@@ -38,7 +38,7 @@ const ToolbarItems = () => {
38
38
  options,
39
39
  closeOnClick
40
40
  } = componentProps;
41
- return /*#__PURE__*/_jsx__default['default'](PopupMenu.PopupMenu, {
41
+ return /*#__PURE__*/_jsx__default["default"](PopupMenu.PopupMenu, {
42
42
  onClick: onClick,
43
43
  title: label,
44
44
  Icon: Icon,
@@ -51,23 +51,27 @@ const ToolbarItems = () => {
51
51
  apps,
52
52
  customApps,
53
53
  sectionTitle,
54
- customSectionTitle
54
+ customSectionTitle,
55
+ actionRef,
56
+ onKeyDown
55
57
  } = componentProps;
56
- return /*#__PURE__*/_jsx__default['default'](AppPicker.AppPicker, {
58
+ return /*#__PURE__*/_jsx__default["default"](AppPicker.AppPicker, {
57
59
  onClick: onClick,
58
60
  label: label,
59
61
  apps: apps,
60
62
  customApps: customApps,
61
63
  sectionTitle: sectionTitle,
62
- customSectionTitle: customSectionTitle
64
+ customSectionTitle: customSectionTitle,
65
+ actionRef: actionRef,
66
+ onKeyDown: onKeyDown
63
67
  }, `${instanceUID}-ds-app-picker-${label}`);
64
68
 
65
69
  default:
66
- return /*#__PURE__*/_jsx__default['default'](styles.Button, {
70
+ return /*#__PURE__*/_jsx__default["default"](styles.Button, {
67
71
  onClick: onClick,
68
72
  title: label,
69
73
  "data-testid": "gh-toolbar-item"
70
- }, `${instanceUID}-ds-toolbar-button-${label}`, _Icon || (_Icon = /*#__PURE__*/_jsx__default['default'](Icon, {
74
+ }, `${instanceUID}-ds-toolbar-button-${label}`, _Icon || (_Icon = /*#__PURE__*/_jsx__default["default"](Icon, {
71
75
  fill: "#FFF",
72
76
  size: "m"
73
77
  })));
@@ -8,7 +8,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
10
 
11
- const Button = /*#__PURE__*/styled__default['default'].button.withConfig({
11
+ const Button = /*#__PURE__*/styled__default["default"].button.withConfig({
12
12
  componentId: "sc-1gqj0i3-0"
13
13
  })(["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;}}"], ({
14
14
  theme
@@ -12,7 +12,7 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
12
12
 
13
13
  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; }
14
14
 
15
- 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__default['default'](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; }
15
+ 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__default["default"](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; }
16
16
  const useGetPropsWithDefaults = props => {
17
17
  const {
18
18
  toolbar,
@@ -16,7 +16,7 @@ const useGlobalHeader = props => {
16
16
  const globalHeaderToolbarGrid = React.useMemo(() => props.toolbar.map(() => '1fr'), [props.toolbar]);
17
17
  const globalHeaderBreadcrumbGrid = React.useMemo(() => ['auto', ...props.breadcrumb.map(() => 'auto'), '1fr'], [props.breadcrumb]);
18
18
  const propsWithDefaults = useGetPropsWithDefaults.useGetPropsWithDefaults(props);
19
- const ctx = React__default['default'].useMemo(() => ({
19
+ const ctx = React__default["default"].useMemo(() => ({
20
20
  props: propsWithDefaults,
21
21
  showIconOnly,
22
22
  setShowIconOnly,
package/cjs/index.js CHANGED
@@ -8,4 +8,4 @@ var GlobalHeader = require('./GlobalHeader.js');
8
8
 
9
9
  exports.GlobalHeader = GlobalHeader.GlobalHeader;
10
10
  exports.GlobalHeaderWithSchema = GlobalHeader.GlobalHeaderWithSchema;
11
- exports.default = GlobalHeader.GlobalHeader;
11
+ exports["default"] = GlobalHeader.GlobalHeader;
@@ -21,22 +21,28 @@ const AppPicker = ({
21
21
  customApps,
22
22
  sectionTitle,
23
23
  customSectionTitle,
24
- onClick
24
+ onClick = () => null,
25
+ actionRef,
26
+ onKeyDown: customHandleOnKeyDown = () => null
25
27
  }) => {
26
28
  var _DSAppPicker;
27
29
 
28
30
  const [isOpen, setIsOpen] = React.useState(false);
29
31
  const buttonRef = React.useRef();
30
- const handleKeyDown = React.useCallback(e => {
32
+ const handleTriggerKeyDown = React.useCallback(e => {
31
33
  if (e.code === 'Enter' || e.code === 'Space') {
32
34
  setIsOpen(true);
33
35
  }
34
36
  }, []);
35
- const handleOnClose = React.useCallback(() => {
36
- var _buttonRef$current;
37
+ const handleAppPickerOnKeyDown = React.useCallback(e => {
38
+ customHandleOnKeyDown(e);
37
39
 
40
+ if (e.code === 'Escape') {
41
+ setIsOpen(false);
42
+ }
43
+ }, [customHandleOnKeyDown]);
44
+ const handleOnClickOutside = React.useCallback(() => {
38
45
  setIsOpen(false);
39
- (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.focus();
40
46
  }, []);
41
47
  const handleOnClick = React.useCallback(e => {
42
48
  setIsOpen(true);
@@ -48,25 +54,28 @@ const AppPicker = ({
48
54
  ref: ref,
49
55
  children: /*#__PURE__*/jsxRuntime.jsx(styles.Button, {
50
56
  onClick: handleOnClick,
51
- onKeyDown: handleKeyDown,
57
+ onKeyDown: handleTriggerKeyDown,
52
58
  ref: buttonRef,
53
59
  title: label,
54
60
  "data-testid": "gh-toolbar-item",
55
- children: _MenuPicker || (_MenuPicker = /*#__PURE__*/_jsx__default['default'](MenuPicker__default['default'], {
61
+ children: _MenuPicker || (_MenuPicker = /*#__PURE__*/_jsx__default["default"](MenuPicker__default["default"], {
56
62
  fill: "#FFF",
57
63
  size: "m"
58
64
  }))
59
65
  })
60
- }), [handleKeyDown, handleOnClick, label]);
61
- return React.useMemo(() => _DSAppPicker || (_DSAppPicker = /*#__PURE__*/_jsx__default['default'](dsAppPicker.DSAppPicker, {
66
+ }), [handleOnClick, handleTriggerKeyDown, label]);
67
+ return React.useMemo(() => _DSAppPicker || (_DSAppPicker = /*#__PURE__*/_jsx__default["default"](dsAppPicker.DSAppPicker, {
62
68
  isOpen: isOpen,
63
69
  apps: apps,
64
70
  customApps: customApps,
65
71
  sectionTitle: sectionTitle,
66
72
  customSectionTitle: customSectionTitle,
67
- onClose: handleOnClose,
68
- renderTrigger: trigger
69
- })), [apps, customApps, customSectionTitle, handleOnClose, isOpen, sectionTitle, trigger]);
73
+ onClickOutside: handleOnClickOutside,
74
+ renderTrigger: trigger,
75
+ triggerRef: buttonRef,
76
+ actionRef: actionRef,
77
+ onKeyDown: handleAppPickerOnKeyDown
78
+ })), [actionRef, apps, customApps, customSectionTitle, handleAppPickerOnKeyDown, handleOnClickOutside, isOpen, sectionTitle, trigger]);
70
79
  };
71
80
 
72
81
  exports.AppPicker = AppPicker;
@@ -44,7 +44,7 @@ const PopupMenu = ({
44
44
  if (closeOnClick) handleOnClose();
45
45
  }, [closeOnClick, handleOnClose]);
46
46
  const handleClickOutside = React.useCallback(() => setIsOpen(false), []);
47
- const content = React.useMemo(() => _PopupMenuContent || (_PopupMenuContent = /*#__PURE__*/_jsx__default['default'](PopupMenuContent.PopupMenuContent, {
47
+ const content = React.useMemo(() => _PopupMenuContent || (_PopupMenuContent = /*#__PURE__*/_jsx__default["default"](PopupMenuContent.PopupMenuContent, {
48
48
  options: options,
49
49
  onItemClick: handleItemClick,
50
50
  onClose: handleOnClose
@@ -57,13 +57,13 @@ const PopupMenu = ({
57
57
  title: title,
58
58
  ref: buttonRef,
59
59
  "data-testid": "gh-toolbar-item",
60
- children: /*#__PURE__*/_jsx__default['default'](Icon, {
60
+ children: /*#__PURE__*/_jsx__default["default"](Icon, {
61
61
  innerRef: ref,
62
62
  fill: "#FFF",
63
63
  size: "m"
64
64
  })
65
65
  }), [Icon, handleKeyPress, handleTriggerOnClick, title]);
66
- return React.useMemo(() => /*#__PURE__*/_jsx__default['default'](Popover__default['default'], {
66
+ return React.useMemo(() => /*#__PURE__*/_jsx__default["default"](Popover__default["default"], {
67
67
  isOpen: isOpen,
68
68
  content: content,
69
69
  onClickOutside: handleClickOutside,
@@ -13,7 +13,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
13
13
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
14
14
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
15
15
 
16
- const PopupMenuContent = /*#__PURE__*/React__default['default'].memo(({
16
+ const PopupMenuContent = /*#__PURE__*/React__default["default"].memo(({
17
17
  options,
18
18
  onItemClick,
19
19
  onClose
@@ -49,19 +49,19 @@ const PopupMenuContent = /*#__PURE__*/React__default['default'].memo(({
49
49
 
50
50
  switch (type) {
51
51
  case 'separator':
52
- return /*#__PURE__*/_jsx__default['default'](styles.Separator, {}, `${instanceUID}-separator-${label}`);
52
+ return /*#__PURE__*/_jsx__default["default"](styles.Separator, {}, `${instanceUID}-separator-${label}`);
53
53
 
54
54
  case 'custom':
55
- return /*#__PURE__*/_jsx__default['default'](styles.ItemWrapper, {
55
+ return /*#__PURE__*/_jsx__default["default"](styles.ItemWrapper, {
56
56
  onClick: handleClick,
57
57
  onKeyDown: handleKeyDown
58
- }, `${instanceUID}-popup-${label}`, _Content || (_Content = /*#__PURE__*/_jsx__default['default'](Content, {})));
58
+ }, `${instanceUID}-popup-${label}`, _Content || (_Content = /*#__PURE__*/_jsx__default["default"](Content, {})));
59
59
 
60
60
  default:
61
- return /*#__PURE__*/_jsx__default['default'](styles.ItemWrapper, {
61
+ return /*#__PURE__*/_jsx__default["default"](styles.ItemWrapper, {
62
62
  onClick: handleClick,
63
63
  onKeyDown: handleKeyDown
64
- }, `${instanceUID}-popup-${label}`, icon, styles.Label && /*#__PURE__*/_jsx__default['default'](styles.Label, {}, void 0, label));
64
+ }, `${instanceUID}-popup-${label}`, icon, styles.Label && /*#__PURE__*/_jsx__default["default"](styles.Label, {}, void 0, label));
65
65
  }
66
66
  }), [onClose, onItemClick, options, instanceUID]);
67
67
  return /*#__PURE__*/jsxRuntime.jsx(styles.List, {
@@ -8,18 +8,18 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
10
 
11
- const List = /*#__PURE__*/styled__default['default'].div.withConfig({
11
+ const List = /*#__PURE__*/styled__default["default"].div.withConfig({
12
12
  componentId: "sc-snqcgs-0"
13
13
  })(["padding:5px 0px;"]);
14
- const ItemWrapper = /*#__PURE__*/styled__default['default'].button.withConfig({
14
+ const ItemWrapper = /*#__PURE__*/styled__default["default"].button.withConfig({
15
15
  componentId: "sc-snqcgs-1"
16
16
  })(["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:", ";}"], ({
17
17
  theme
18
18
  }) => `1px solid ${theme.colors.brand[600]}`);
19
- const Label = /*#__PURE__*/styled__default['default'].p.withConfig({
19
+ const Label = /*#__PURE__*/styled__default["default"].p.withConfig({
20
20
  componentId: "sc-snqcgs-2"
21
21
  })(["width:100%;font-size:14px;margin:10px;"]);
22
- const Separator = /*#__PURE__*/styled__default['default'].div.withConfig({
22
+ const Separator = /*#__PURE__*/styled__default["default"].div.withConfig({
23
23
  componentId: "sc-snqcgs-3"
24
24
  })(["width:100%;border:none;border-bottom:1px solid #ccc;"]);
25
25
 
package/cjs/styles.js CHANGED
@@ -9,7 +9,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
9
9
 
10
10
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
11
11
 
12
- const Wrapper = /*#__PURE__*/styled__default['default'](dsGrid.GridContainer).withConfig({
12
+ const Wrapper = /*#__PURE__*/styled__default["default"](dsGrid.GridContainer).withConfig({
13
13
  componentId: "sc-1v5zxxm-0"
14
14
  })(["background-image:linear-gradient(45deg,#0f364a 0%,#1b6392 54%,#164566 100%);color:", ";width:100%;height:40px;padding:0 24px 0 12px;"], ({
15
15
  theme
@@ -43,7 +43,9 @@ const ToolbarItems = () => {
43
43
  apps,
44
44
  customApps,
45
45
  sectionTitle,
46
- customSectionTitle
46
+ customSectionTitle,
47
+ actionRef,
48
+ onKeyDown
47
49
  } = componentProps;
48
50
  return /*#__PURE__*/_jsx(AppPicker, {
49
51
  onClick: onClick,
@@ -51,7 +53,9 @@ const ToolbarItems = () => {
51
53
  apps: apps,
52
54
  customApps: customApps,
53
55
  sectionTitle: sectionTitle,
54
- customSectionTitle: customSectionTitle
56
+ customSectionTitle: customSectionTitle,
57
+ actionRef: actionRef,
58
+ onKeyDown: onKeyDown
55
59
  }, `${instanceUID}-ds-app-picker-${label}`);
56
60
 
57
61
  default:
@@ -12,22 +12,28 @@ const AppPicker = ({
12
12
  customApps,
13
13
  sectionTitle,
14
14
  customSectionTitle,
15
- onClick
15
+ onClick = () => null,
16
+ actionRef,
17
+ onKeyDown: customHandleOnKeyDown = () => null
16
18
  }) => {
17
19
  var _DSAppPicker;
18
20
 
19
21
  const [isOpen, setIsOpen] = useState(false);
20
22
  const buttonRef = useRef();
21
- const handleKeyDown = useCallback(e => {
23
+ const handleTriggerKeyDown = useCallback(e => {
22
24
  if (e.code === 'Enter' || e.code === 'Space') {
23
25
  setIsOpen(true);
24
26
  }
25
27
  }, []);
26
- const handleOnClose = useCallback(() => {
27
- var _buttonRef$current;
28
+ const handleAppPickerOnKeyDown = useCallback(e => {
29
+ customHandleOnKeyDown(e);
28
30
 
31
+ if (e.code === 'Escape') {
32
+ setIsOpen(false);
33
+ }
34
+ }, [customHandleOnKeyDown]);
35
+ const handleOnClickOutside = useCallback(() => {
29
36
  setIsOpen(false);
30
- (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.focus();
31
37
  }, []);
32
38
  const handleOnClick = useCallback(e => {
33
39
  setIsOpen(true);
@@ -39,7 +45,7 @@ const AppPicker = ({
39
45
  ref: ref,
40
46
  children: /*#__PURE__*/jsx(Button, {
41
47
  onClick: handleOnClick,
42
- onKeyDown: handleKeyDown,
48
+ onKeyDown: handleTriggerKeyDown,
43
49
  ref: buttonRef,
44
50
  title: label,
45
51
  "data-testid": "gh-toolbar-item",
@@ -48,16 +54,19 @@ const AppPicker = ({
48
54
  size: "m"
49
55
  }))
50
56
  })
51
- }), [handleKeyDown, handleOnClick, label]);
57
+ }), [handleOnClick, handleTriggerKeyDown, label]);
52
58
  return useMemo(() => _DSAppPicker || (_DSAppPicker = /*#__PURE__*/_jsx(DSAppPicker, {
53
59
  isOpen: isOpen,
54
60
  apps: apps,
55
61
  customApps: customApps,
56
62
  sectionTitle: sectionTitle,
57
63
  customSectionTitle: customSectionTitle,
58
- onClose: handleOnClose,
59
- renderTrigger: trigger
60
- })), [apps, customApps, customSectionTitle, handleOnClose, isOpen, sectionTitle, trigger]);
64
+ onClickOutside: handleOnClickOutside,
65
+ renderTrigger: trigger,
66
+ triggerRef: buttonRef,
67
+ actionRef: actionRef,
68
+ onKeyDown: handleAppPickerOnKeyDown
69
+ })), [actionRef, apps, customApps, customSectionTitle, handleAppPickerOnKeyDown, handleOnClickOutside, isOpen, sectionTitle, trigger]);
61
70
  };
62
71
 
63
72
  export { AppPicker };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-global-header",
3
- "version": "2.0.0-alpha.3",
3
+ "version": "2.0.0-alpha.7",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Global Header",
6
6
  "module": "./esm/index.js",
@@ -120,12 +120,12 @@
120
120
  "build": "node ../../scripts/build/build.js"
121
121
  },
122
122
  "dependencies": {
123
- "@elliemae/ds-app-picker": "2.0.0-alpha.3",
124
- "@elliemae/ds-classnames": "2.0.0-alpha.3",
125
- "@elliemae/ds-grid": "2.0.0-alpha.3",
126
- "@elliemae/ds-icons": "2.0.0-alpha.3",
127
- "@elliemae/ds-popover": "2.0.0-alpha.3",
128
- "@elliemae/ds-utilities": "2.0.0-alpha.3",
123
+ "@elliemae/ds-app-picker": "2.0.0-alpha.7",
124
+ "@elliemae/ds-classnames": "2.0.0-alpha.7",
125
+ "@elliemae/ds-grid": "2.0.0-alpha.7",
126
+ "@elliemae/ds-icons": "2.0.0-alpha.7",
127
+ "@elliemae/ds-popover": "2.0.0-alpha.7",
128
+ "@elliemae/ds-utilities": "2.0.0-alpha.7",
129
129
  "react-desc": "~4.1.3",
130
130
  "uid": "~2.0.0"
131
131
  },
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
2
  import type { AppPickerPropsT as Props } from '../../index.d';
3
- export declare const AppPicker: ({ label, apps, customApps, sectionTitle, customSectionTitle, onClick, }: Props) => JSX.Element;
3
+ export declare const AppPicker: ({ label, apps, customApps, sectionTitle, customSectionTitle, onClick, actionRef, onKeyDown: customHandleOnKeyDown, }: Props) => JSX.Element;