@elliemae/ds-global-header 2.3.1 → 3.0.0-alpha.3

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/dist/cjs/GlobalHeader.js +57 -0
  2. package/dist/cjs/GlobalHeader.js.map +7 -0
  3. package/dist/cjs/GlobalHeaderContainer.js +41 -0
  4. package/dist/cjs/GlobalHeaderContainer.js.map +7 -0
  5. package/dist/cjs/GlobalHeaderContext.js +46 -0
  6. package/dist/cjs/GlobalHeaderContext.js.map +7 -0
  7. package/dist/cjs/GlobalHeaderTypes.js +27 -0
  8. package/dist/cjs/GlobalHeaderTypes.js.map +7 -0
  9. package/dist/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js +110 -0
  10. package/dist/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js.map +7 -0
  11. package/dist/cjs/components/Breadcrumb/PureBreadcrumb.js +79 -0
  12. package/dist/cjs/components/Breadcrumb/PureBreadcrumb.js.map +7 -0
  13. package/dist/cjs/components/Breadcrumb/styles.js +83 -0
  14. package/dist/cjs/components/Breadcrumb/styles.js.map +7 -0
  15. package/dist/cjs/components/Title/GlobalHeaderTitle.js +48 -0
  16. package/dist/cjs/components/Title/GlobalHeaderTitle.js.map +7 -0
  17. package/dist/cjs/components/Toolbar/GlobalHeaderToolbar.js +49 -0
  18. package/dist/cjs/components/Toolbar/GlobalHeaderToolbar.js.map +7 -0
  19. package/dist/cjs/components/Toolbar/ToolbarItems.js +122 -0
  20. package/dist/cjs/components/Toolbar/ToolbarItems.js.map +7 -0
  21. package/dist/cjs/components/Toolbar/styles.js +61 -0
  22. package/dist/cjs/components/Toolbar/styles.js.map +7 -0
  23. package/dist/cjs/config/useGetPropsWithDefaults.js +54 -0
  24. package/dist/cjs/config/useGetPropsWithDefaults.js.map +7 -0
  25. package/dist/cjs/config/useGlobalHeader.js +53 -0
  26. package/dist/cjs/config/useGlobalHeader.js.map +7 -0
  27. package/dist/cjs/config/useValidateProps.js +109 -0
  28. package/dist/cjs/config/useValidateProps.js.map +7 -0
  29. package/dist/cjs/config/validateHelpers.js +111 -0
  30. package/dist/cjs/config/validateHelpers.js.map +7 -0
  31. package/dist/cjs/defaultProps.js +41 -0
  32. package/dist/cjs/defaultProps.js.map +7 -0
  33. package/dist/cjs/index.js +36 -0
  34. package/dist/cjs/index.js.map +7 -0
  35. package/dist/cjs/outOfTheBox/AppPicker/AppPicker.js +139 -0
  36. package/dist/cjs/outOfTheBox/AppPicker/AppPicker.js.map +7 -0
  37. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenu.js +122 -0
  38. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenu.js.map +7 -0
  39. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js +97 -0
  40. package/dist/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js.map +7 -0
  41. package/dist/cjs/outOfTheBox/PopupMenu/styles.js +67 -0
  42. package/dist/cjs/outOfTheBox/PopupMenu/styles.js.map +7 -0
  43. package/dist/cjs/outOfTheBox/SearchToggle/SearchToggle.js +134 -0
  44. package/dist/cjs/outOfTheBox/SearchToggle/SearchToggle.js.map +7 -0
  45. package/dist/cjs/outOfTheBox/SearchToggle/styles.js +82 -0
  46. package/dist/cjs/outOfTheBox/SearchToggle/styles.js.map +7 -0
  47. package/dist/cjs/outOfTheBox/index.js +30 -0
  48. package/dist/cjs/outOfTheBox/index.js.map +7 -0
  49. package/dist/cjs/propTypes.js +56 -0
  50. package/dist/cjs/propTypes.js.map +7 -0
  51. package/dist/cjs/styles.js +43 -0
  52. package/dist/cjs/styles.js.map +7 -0
  53. package/dist/esm/GlobalHeader.js +28 -0
  54. package/dist/esm/GlobalHeader.js.map +7 -0
  55. package/dist/esm/GlobalHeaderContainer.js +12 -0
  56. package/dist/esm/GlobalHeaderContainer.js.map +7 -0
  57. package/dist/esm/GlobalHeaderContext.js +17 -0
  58. package/dist/esm/GlobalHeaderContext.js.map +7 -0
  59. package/dist/esm/GlobalHeaderTypes.js +2 -0
  60. package/dist/esm/GlobalHeaderTypes.js.map +7 -0
  61. package/dist/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js +83 -0
  62. package/dist/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js.map +7 -0
  63. package/dist/esm/components/Breadcrumb/PureBreadcrumb.js +52 -0
  64. package/dist/esm/components/Breadcrumb/PureBreadcrumb.js.map +7 -0
  65. package/dist/esm/components/Breadcrumb/styles.js +54 -0
  66. package/dist/esm/components/Breadcrumb/styles.js.map +7 -0
  67. package/dist/esm/components/Title/GlobalHeaderTitle.js +19 -0
  68. package/dist/esm/components/Title/GlobalHeaderTitle.js.map +7 -0
  69. package/dist/esm/components/Toolbar/GlobalHeaderToolbar.js +20 -0
  70. package/dist/esm/components/Toolbar/GlobalHeaderToolbar.js.map +7 -0
  71. package/dist/esm/components/Toolbar/ToolbarItems.js +95 -0
  72. package/dist/esm/components/Toolbar/ToolbarItems.js.map +7 -0
  73. package/dist/esm/components/Toolbar/styles.js +32 -0
  74. package/dist/esm/components/Toolbar/styles.js.map +7 -0
  75. package/dist/esm/config/useGetPropsWithDefaults.js +27 -0
  76. package/dist/esm/config/useGetPropsWithDefaults.js.map +7 -0
  77. package/dist/esm/config/useGlobalHeader.js +24 -0
  78. package/dist/esm/config/useGlobalHeader.js.map +7 -0
  79. package/dist/esm/config/useValidateProps.js +88 -0
  80. package/dist/esm/config/useValidateProps.js.map +7 -0
  81. package/dist/esm/config/validateHelpers.js +82 -0
  82. package/dist/esm/config/validateHelpers.js.map +7 -0
  83. package/{esm → dist/esm}/defaultProps.js +5 -3
  84. package/dist/esm/defaultProps.js.map +7 -0
  85. package/dist/esm/index.js +7 -0
  86. package/dist/esm/index.js.map +7 -0
  87. package/dist/esm/outOfTheBox/AppPicker/AppPicker.js +112 -0
  88. package/dist/esm/outOfTheBox/AppPicker/AppPicker.js.map +7 -0
  89. package/dist/esm/outOfTheBox/PopupMenu/PopupMenu.js +95 -0
  90. package/dist/esm/outOfTheBox/PopupMenu/PopupMenu.js.map +7 -0
  91. package/dist/esm/outOfTheBox/PopupMenu/PopupMenuContent.js +70 -0
  92. package/dist/esm/outOfTheBox/PopupMenu/PopupMenuContent.js.map +7 -0
  93. package/dist/esm/outOfTheBox/PopupMenu/styles.js +38 -0
  94. package/dist/esm/outOfTheBox/PopupMenu/styles.js.map +7 -0
  95. package/dist/esm/outOfTheBox/SearchToggle/SearchToggle.js +107 -0
  96. package/dist/esm/outOfTheBox/SearchToggle/SearchToggle.js.map +7 -0
  97. package/dist/esm/outOfTheBox/SearchToggle/styles.js +53 -0
  98. package/dist/esm/outOfTheBox/SearchToggle/styles.js.map +7 -0
  99. package/dist/esm/outOfTheBox/index.js +5 -0
  100. package/dist/esm/outOfTheBox/index.js.map +7 -0
  101. package/dist/esm/propTypes.js +27 -0
  102. package/dist/esm/propTypes.js.map +7 -0
  103. package/dist/esm/styles.js +14 -0
  104. package/dist/esm/styles.js.map +7 -0
  105. package/package.json +82 -73
  106. package/cjs/GlobalHeader.js +0 -37
  107. package/cjs/GlobalHeaderContainer.js +0 -24
  108. package/cjs/GlobalHeaderContext.js +0 -20
  109. package/cjs/GlobalHeaderTypes.js +0 -2
  110. package/cjs/components/Breadcrumb/GlobalHeaderBreadcrumb.js +0 -85
  111. package/cjs/components/Breadcrumb/PureBreadcrumb.js +0 -60
  112. package/cjs/components/Breadcrumb/styles.js +0 -59
  113. package/cjs/components/Title/GlobalHeaderTitle.js +0 -29
  114. package/cjs/components/Toolbar/GlobalHeaderToolbar.js +0 -30
  115. package/cjs/components/Toolbar/ToolbarItems.js +0 -107
  116. package/cjs/components/Toolbar/styles.js +0 -25
  117. package/cjs/config/useGetPropsWithDefaults.js +0 -31
  118. package/cjs/config/useGlobalHeader.js +0 -39
  119. package/cjs/config/useValidateProps.js +0 -92
  120. package/cjs/config/validateHelpers.js +0 -57
  121. package/cjs/defaultProps.js +0 -14
  122. package/cjs/index.js +0 -11
  123. package/cjs/outOfTheBox/AppPicker/AppPicker.js +0 -117
  124. package/cjs/outOfTheBox/PopupMenu/PopupMenu.js +0 -101
  125. package/cjs/outOfTheBox/PopupMenu/PopupMenuContent.js +0 -96
  126. package/cjs/outOfTheBox/PopupMenu/styles.js +0 -32
  127. package/cjs/outOfTheBox/SearchToggle/SearchToggle.js +0 -113
  128. package/cjs/outOfTheBox/SearchToggle/styles.js +0 -15
  129. package/cjs/outOfTheBox/index.js +0 -13
  130. package/cjs/propTypes.js +0 -29
  131. package/cjs/styles.js +0 -21
  132. package/esm/GlobalHeader.js +0 -28
  133. package/esm/GlobalHeaderContainer.js +0 -16
  134. package/esm/GlobalHeaderContext.js +0 -16
  135. package/esm/GlobalHeaderTypes.js +0 -1
  136. package/esm/components/Breadcrumb/GlobalHeaderBreadcrumb.js +0 -75
  137. package/esm/components/Breadcrumb/PureBreadcrumb.js +0 -49
  138. package/esm/components/Breadcrumb/styles.js +0 -48
  139. package/esm/components/Title/GlobalHeaderTitle.js +0 -21
  140. package/esm/components/Toolbar/GlobalHeaderToolbar.js +0 -22
  141. package/esm/components/Toolbar/ToolbarItems.js +0 -97
  142. package/esm/components/Toolbar/styles.js +0 -17
  143. package/esm/config/useGetPropsWithDefaults.js +0 -23
  144. package/esm/config/useGlobalHeader.js +0 -31
  145. package/esm/config/useValidateProps.js +0 -88
  146. package/esm/config/validateHelpers.js +0 -44
  147. package/esm/index.js +0 -1
  148. package/esm/outOfTheBox/AppPicker/AppPicker.js +0 -107
  149. package/esm/outOfTheBox/PopupMenu/PopupMenu.js +0 -91
  150. package/esm/outOfTheBox/PopupMenu/PopupMenuContent.js +0 -86
  151. package/esm/outOfTheBox/PopupMenu/styles.js +0 -21
  152. package/esm/outOfTheBox/SearchToggle/SearchToggle.js +0 -103
  153. package/esm/outOfTheBox/SearchToggle/styles.js +0 -7
  154. package/esm/outOfTheBox/index.js +0 -3
  155. package/esm/propTypes.js +0 -23
  156. package/esm/styles.js +0 -13
  157. package/types/GlobalHeader.d.ts +0 -39
  158. package/types/GlobalHeaderContainer.d.ts +0 -3
  159. package/types/GlobalHeaderContext.d.ts +0 -3
  160. package/types/GlobalHeaderTypes.d.ts +0 -85
  161. package/types/components/Breadcrumb/GlobalHeaderBreadcrumb.d.ts +0 -2
  162. package/types/components/Breadcrumb/PureBreadcrumb.d.ts +0 -3
  163. package/types/components/Breadcrumb/styles.d.ts +0 -5
  164. package/types/components/Title/GlobalHeaderTitle.d.ts +0 -2
  165. package/types/components/Toolbar/GlobalHeaderToolbar.d.ts +0 -2
  166. package/types/components/Toolbar/ToolbarItems.d.ts +0 -2
  167. package/types/components/Toolbar/styles.d.ts +0 -1
  168. package/types/config/useGetPropsWithDefaults.d.ts +0 -2
  169. package/types/config/useGlobalHeader.d.ts +0 -2
  170. package/types/config/useValidateProps.d.ts +0 -2
  171. package/types/config/validateHelpers.d.ts +0 -27
  172. package/types/defaultProps.d.ts +0 -2
  173. package/types/index.d.ts +0 -2
  174. package/types/outOfTheBox/AppPicker/AppPicker.d.ts +0 -8
  175. package/types/outOfTheBox/PopupMenu/PopupMenu.d.ts +0 -3
  176. package/types/outOfTheBox/PopupMenu/PopupMenuContent.d.ts +0 -3
  177. package/types/outOfTheBox/PopupMenu/styles.d.ts +0 -4
  178. package/types/outOfTheBox/SearchToggle/SearchToggle.d.ts +0 -3
  179. package/types/outOfTheBox/SearchToggle/styles.d.ts +0 -1
  180. package/types/outOfTheBox/index.d.ts +0 -3
  181. package/types/propTypes.d.ts +0 -29
  182. package/types/styles.d.ts +0 -2
@@ -1,97 +0,0 @@
1
- import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
3
- import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
4
- import 'core-js/modules/esnext.async-iterator.map.js';
5
- import 'core-js/modules/esnext.iterator.map.js';
6
- import 'core-js/modules/esnext.async-iterator.filter.js';
7
- import 'core-js/modules/esnext.iterator.constructor.js';
8
- import 'core-js/modules/esnext.iterator.filter.js';
9
- import 'core-js/modules/esnext.async-iterator.for-each.js';
10
- import 'core-js/modules/esnext.iterator.for-each.js';
11
- import { useContext, useMemo } from 'react';
12
- import { AppPicker } from '../../outOfTheBox/AppPicker/AppPicker.js';
13
- import { PopupMenu } from '../../outOfTheBox/PopupMenu/PopupMenu.js';
14
- import { SearchToggle } from '../../outOfTheBox/SearchToggle/SearchToggle.js';
15
- import { Button } from './styles.js';
16
- import { GlobalHeaderContext } from '../../GlobalHeaderContext.js';
17
- import { getDataProps } from '@elliemae/ds-props-helpers';
18
- import { jsx, Fragment } from 'react/jsx-runtime';
19
-
20
- const _excluded = ["Icon", "type", "onClick", "componentProps", "label", "onKeyPress", "id", "CustomComponent"];
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 ToolbarItems = () => {
26
- const {
27
- props: {
28
- toolbar
29
- },
30
- instanceUID
31
- } = useContext(GlobalHeaderContext);
32
- const itemsList = useMemo(() => toolbar === null || toolbar === void 0 ? void 0 : toolbar.map(item => {
33
- var _Icon;
34
-
35
- const {
36
- Icon,
37
- type,
38
- onClick,
39
- componentProps,
40
- label,
41
- onKeyPress,
42
- id,
43
- CustomComponent
44
- } = item,
45
- otherProps = _objectWithoutProperties(item, _excluded);
46
-
47
- switch (type) {
48
- case 'ds-popup-menu':
49
- return /*#__PURE__*/jsx(PopupMenu, _objectSpread(_objectSpread({
50
- title: label,
51
- Icon: Icon,
52
- onClick: onClick,
53
- onKeyPress: onKeyPress,
54
- id: id
55
- }, otherProps), {}, {
56
- componentProps: componentProps
57
- }), "".concat(instanceUID, "-ds-popup-menu-").concat(label));
58
-
59
- case 'ds-app-picker':
60
- return /*#__PURE__*/jsx(AppPicker, _objectSpread({
61
- label: label,
62
- id: id,
63
- componentProps: componentProps
64
- }, otherProps), "".concat(instanceUID, "-ds-app-picker-").concat(label));
65
-
66
- case 'ds-search-toggle':
67
- return /*#__PURE__*/jsx(SearchToggle, _objectSpread({
68
- id: id,
69
- componentProps: componentProps
70
- }, otherProps), "".concat(instanceUID, "-ds-search-toggle-").concat(id));
71
-
72
- case 'custom':
73
- if (CustomComponent) return /*#__PURE__*/_jsx(CustomComponent, {
74
- item: item
75
- });
76
- return null;
77
-
78
- default:
79
- return /*#__PURE__*/jsx(Button, _objectSpread(_objectSpread({
80
- onClick: onClick,
81
- title: label,
82
- "data-testid": "gh-toolbar-item",
83
- id: id
84
- }, getDataProps(otherProps)), {}, {
85
- children: _Icon || (_Icon = /*#__PURE__*/_jsx(Icon, {
86
- fill: "#FFF",
87
- size: "m"
88
- }))
89
- }), "".concat(instanceUID, "-ds-toolbar-button-").concat(label));
90
- }
91
- }), [toolbar, instanceUID]);
92
- return /*#__PURE__*/jsx(Fragment, {
93
- children: itemsList
94
- });
95
- };
96
-
97
- export { ToolbarItems };
@@ -1,17 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- const Button = /*#__PURE__*/styled.button.withConfig({
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{: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.neutral['000'];
15
- });
16
-
17
- export { Button };
@@ -1,23 +0,0 @@
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';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import { useMemo } from 'react';
8
- import { defaultProps } from '../defaultProps.js';
9
-
10
- 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; }
11
-
12
- 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; }
13
- const useGetPropsWithDefaults = props => {
14
- const {
15
- toolbar,
16
- breadcrumb,
17
- Logo,
18
- LogoWithBrand
19
- } = props;
20
- return useMemo(() => _objectSpread(_objectSpread({}, defaultProps), props), [toolbar, breadcrumb, Logo, LogoWithBrand]);
21
- };
22
-
23
- export { useGetPropsWithDefaults };
@@ -1,31 +0,0 @@
1
- import 'core-js/modules/web.dom-collections.iterator.js';
2
- import React, { useState, useMemo } from 'react';
3
- import { uid } from 'uid';
4
- import { useGetPropsWithDefaults } from './useGetPropsWithDefaults.js';
5
-
6
- const useGlobalHeader = props => {
7
- const [showIconOnly, setShowIconOnly] = useState(false);
8
- const instanceUID = useMemo(() => uid(5), []);
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('auto');
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]);
19
- const propsWithDefaults = useGetPropsWithDefaults(props);
20
- const ctx = React.useMemo(() => ({
21
- props: propsWithDefaults,
22
- showIconOnly,
23
- setShowIconOnly,
24
- instanceUID,
25
- globalHeaderToolbarGrid,
26
- globalHeaderBreadcrumbGrid
27
- }), [propsWithDefaults, showIconOnly, instanceUID, globalHeaderToolbarGrid, globalHeaderBreadcrumbGrid]);
28
- return ctx;
29
- };
30
-
31
- export { useGlobalHeader };
@@ -1,88 +0,0 @@
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';
4
- import { throwLogoError, throwBreadcrumbItemError, isValidToolbarType, throwToolbarItemGenericError, isObject, throwToolbarPopupItemError, throwToolbarAppPickerItemError } from './validateHelpers.js';
5
-
6
- const validatePopupItem = componentProps => {
7
- if (componentProps.options && !Array.isArray(componentProps.options)) {
8
- throwToolbarPopupItemError('options', componentProps.options);
9
- }
10
-
11
- if (componentProps.closeOnClick && typeof componentProps.closeOnClick !== 'boolean') {
12
- throwToolbarPopupItemError('closeOnClick', componentProps.closeOnClick);
13
- }
14
- };
15
-
16
- const validateAppPickerItem = componentProps => {
17
- if (componentProps.apps && !Array.isArray(componentProps.apps)) {
18
- throwToolbarAppPickerItemError('apps', componentProps.apps);
19
- }
20
-
21
- if (componentProps.customApps && !Array.isArray(componentProps.customApps)) {
22
- throwToolbarAppPickerItemError('customApps', componentProps.customApps);
23
- }
24
-
25
- if (componentProps.sectionTitle && typeof componentProps.sectionTitle !== 'string') {
26
- throwToolbarAppPickerItemError('sectionTitle', componentProps.sectionTitle);
27
- }
28
-
29
- if (componentProps.customSectionTitle && typeof componentProps.customSectionTitle !== 'string') {
30
- throwToolbarAppPickerItemError('customSectionTitle', componentProps.customSectionTitle);
31
- }
32
- };
33
-
34
- const useValidateProps = props => {
35
- const {
36
- breadcrumb,
37
- toolbar,
38
- Logo,
39
- LogoWithBrand
40
- } = props;
41
-
42
- if (Logo && typeof Logo !== 'function') {
43
- throwLogoError('Logo', Logo);
44
- }
45
-
46
- if (LogoWithBrand && typeof LogoWithBrand !== 'function') {
47
- throwLogoError('LogoWithBrand', LogoWithBrand);
48
- }
49
-
50
- breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.forEach(breadcrumbItem => {
51
- if (breadcrumbItem.label && typeof breadcrumbItem.label !== 'string') {
52
- throwBreadcrumbItemError('label', breadcrumbItem.label);
53
- }
54
-
55
- if (breadcrumbItem.onClick && typeof breadcrumbItem.onClick !== 'function') {
56
- throwBreadcrumbItemError('onClick', breadcrumbItem.onClick);
57
- }
58
-
59
- if (breadcrumbItem.hasNext && typeof breadcrumbItem.hasNext !== 'boolean') {
60
- throwBreadcrumbItemError('hasNext', breadcrumbItem.hasNext);
61
- }
62
-
63
- if (breadcrumbItem.isSelected && typeof breadcrumbItem.isSelected !== 'boolean') {
64
- throwBreadcrumbItemError('isSelected', breadcrumbItem.isSelected);
65
- }
66
- });
67
- toolbar === null || toolbar === void 0 ? void 0 : toolbar.forEach(toolbarItem => {
68
- if (toolbarItem.type) {
69
- if (!isValidToolbarType(toolbarItem.type)) {
70
- throwToolbarItemGenericError('type', toolbarItem.type);
71
- }
72
-
73
- if (toolbarItem.componentProps && !isObject(toolbarItem.componentProps)) {
74
- throwToolbarItemGenericError('componentProps', toolbarItem.componentProps);
75
- }
76
-
77
- if (toolbarItem.type === 'ds-popup-menu') {
78
- validatePopupItem(toolbarItem.componentProps);
79
- }
80
-
81
- if (toolbarItem.type === 'ds-app-picker') {
82
- validateAppPickerItem(toolbarItem.componentProps);
83
- }
84
- }
85
- });
86
- };
87
-
88
- export { useValidateProps };
@@ -1,44 +0,0 @@
1
- const breadcrumbProps = {
2
- label: 'string',
3
- onClick: 'function',
4
- hasNext: 'boolean',
5
- isSelected: 'boolean'
6
- };
7
- const toolbarProps = {
8
- label: 'string',
9
- type: '"ds-app-picker" or "ds-popup-menu" or "ds-search-toggle"',
10
- componentProps: 'object',
11
- Icon: 'react component',
12
- onClick: 'function',
13
- options: 'array',
14
- closeOnClick: 'boolean',
15
- apps: 'array',
16
- customApps: 'array',
17
- sectionTitle: 'string',
18
- customSectionTitle: 'string'
19
- };
20
- const isObject = obj => typeof obj === 'object' && !!obj && !Array.isArray(obj);
21
- const getVariableType = arg => {
22
- if (Array.isArray(arg)) return 'array';
23
- if (arg === null) return 'null';
24
- if (arg === undefined) return 'undefined';
25
- return typeof arg;
26
- };
27
- const isValidToolbarType = string => string === 'ds-app-picker' || string === 'ds-popup-menu' || string === 'ds-search-toggle' || string === 'custom';
28
- const throwBreadcrumbItemError = (validPropKey, invalidProp) => {
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 "));
30
- };
31
- const throwToolbarPopupItemError = (validPropKey, invalidProp) => {
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 "));
33
- };
34
- const throwToolbarAppPickerItemError = (validPropKey, invalidProp) => {
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 "));
36
- };
37
- const throwToolbarItemGenericError = (validPropKey, invalidProp) => {
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 "));
39
- };
40
- const throwLogoError = (validPropKey, invalidProp) => {
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 "));
42
- };
43
-
44
- export { breadcrumbProps, getVariableType, isObject, isValidToolbarType, throwBreadcrumbItemError, throwLogoError, throwToolbarAppPickerItemError, throwToolbarItemGenericError, throwToolbarPopupItemError, toolbarProps };
package/esm/index.js DELETED
@@ -1 +0,0 @@
1
- export { GlobalHeader, GlobalHeaderWithSchema, GlobalHeader as default } from './GlobalHeader.js';
@@ -1,107 +0,0 @@
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 };
@@ -1,91 +0,0 @@
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 };
@@ -1,86 +0,0 @@
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 };
@@ -1,21 +0,0 @@
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 };