@elliemae/ds-global-header 3.70.0-next.7 → 3.70.0-next.71

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 (155) hide show
  1. package/dist/cjs/DSGlobalHeader.js +16 -2
  2. package/dist/cjs/DSGlobalHeader.js.map +2 -2
  3. package/dist/cjs/DSGlobalHeaderContext.js.map +2 -2
  4. package/dist/cjs/config/useGlobalHeader.js +13 -2
  5. package/dist/cjs/config/useGlobalHeader.js.map +2 -2
  6. package/dist/cjs/constants/index.js +11 -5
  7. package/dist/cjs/constants/index.js.map +2 -2
  8. package/dist/cjs/index.js +3 -6
  9. package/dist/cjs/index.js.map +3 -3
  10. package/dist/cjs/package.json +1 -4
  11. package/dist/cjs/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js +33 -1
  12. package/dist/cjs/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js.map +2 -2
  13. package/dist/cjs/parts/Logo/GlobalHeaderLogo.js +16 -2
  14. package/dist/cjs/parts/Logo/GlobalHeaderLogo.js.map +2 -2
  15. package/dist/cjs/parts/Toolbar/GlobalHeaderToolbar.js +54 -16
  16. package/dist/cjs/parts/Toolbar/GlobalHeaderToolbar.js.map +2 -2
  17. package/dist/cjs/{utils/useCallbackAfterRender.js → parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTX.js} +7 -16
  18. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTX.js.map +7 -0
  19. package/dist/cjs/{hooks/useOnClickOutside.js → parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTXRenderer.js} +13 -30
  20. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTXRenderer.js.map +7 -0
  21. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPickerRenderer.js +53 -0
  22. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPickerRenderer.js.map +7 -0
  23. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/TriggerDefaultComponent.js +84 -0
  24. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/TriggerDefaultComponent.js.map +7 -0
  25. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/react-desc-prop-types.js +50 -0
  26. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/react-desc-prop-types.js.map +7 -0
  27. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/useAppPickerCTX.js +66 -0
  28. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/useAppPickerCTX.js.map +7 -0
  29. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js +118 -71
  30. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js.map +3 -3
  31. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js +27 -11
  32. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js.map +2 -2
  33. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/react-desc-prop-types.js +52 -0
  34. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/react-desc-prop-types.js.map +7 -0
  35. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js +23 -15
  36. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js.map +2 -2
  37. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/react-desc-prop-types.js +54 -0
  38. package/dist/cjs/parts/Toolbar/outOfTheBox/PopupMenu/react-desc-prop-types.js.map +7 -0
  39. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js +28 -16
  40. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js.map +2 -2
  41. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.js +61 -50
  42. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.js.map +2 -2
  43. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/react-desc-prop-types.js +58 -0
  44. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/react-desc-prop-types.js.map +7 -0
  45. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.js +33 -25
  46. package/dist/cjs/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.js.map +2 -2
  47. package/dist/cjs/parts/Toolbar/outOfTheBox/index.js +12 -4
  48. package/dist/cjs/parts/Toolbar/outOfTheBox/index.js.map +2 -2
  49. package/dist/cjs/parts/Toolbar/styles.js +6 -1
  50. package/dist/cjs/parts/Toolbar/styles.js.map +2 -2
  51. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  52. package/dist/cjs/sharedTypes.js.map +1 -1
  53. package/dist/cjs/typescript-testing/typescript-global-header-toolbar-types.js +52 -0
  54. package/dist/cjs/typescript-testing/typescript-global-header-toolbar-types.js.map +2 -2
  55. package/dist/esm/DSGlobalHeader.js +16 -2
  56. package/dist/esm/DSGlobalHeader.js.map +2 -2
  57. package/dist/esm/DSGlobalHeaderContext.js.map +2 -2
  58. package/dist/esm/config/useGlobalHeader.js +13 -2
  59. package/dist/esm/config/useGlobalHeader.js.map +2 -2
  60. package/dist/esm/constants/index.js +11 -5
  61. package/dist/esm/constants/index.js.map +2 -2
  62. package/dist/esm/index.js +3 -6
  63. package/dist/esm/index.js.map +3 -3
  64. package/dist/esm/package.json +1 -4
  65. package/dist/esm/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js +34 -2
  66. package/dist/esm/parts/Breadcrumb/useGlobalHeaderBreadcrumb.js.map +2 -2
  67. package/dist/esm/parts/Logo/GlobalHeaderLogo.js +16 -2
  68. package/dist/esm/parts/Logo/GlobalHeaderLogo.js.map +2 -2
  69. package/dist/esm/parts/Toolbar/GlobalHeaderToolbar.js +55 -17
  70. package/dist/esm/parts/Toolbar/GlobalHeaderToolbar.js.map +2 -2
  71. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTX.js +8 -0
  72. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTX.js.map +7 -0
  73. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTXRenderer.js +13 -0
  74. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTXRenderer.js.map +7 -0
  75. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPickerRenderer.js +23 -0
  76. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPickerRenderer.js.map +7 -0
  77. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/TriggerDefaultComponent.js +54 -0
  78. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/TriggerDefaultComponent.js.map +7 -0
  79. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/react-desc-prop-types.js +20 -0
  80. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/react-desc-prop-types.js.map +7 -0
  81. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/useAppPickerCTX.js +36 -0
  82. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/useAppPickerCTX.js.map +7 -0
  83. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js +119 -72
  84. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.js.map +2 -2
  85. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js +28 -12
  86. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.js.map +2 -2
  87. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/react-desc-prop-types.js +22 -0
  88. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/react-desc-prop-types.js.map +7 -0
  89. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js +24 -16
  90. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.js.map +2 -2
  91. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/react-desc-prop-types.js +24 -0
  92. package/dist/esm/parts/Toolbar/outOfTheBox/PopupMenu/react-desc-prop-types.js.map +7 -0
  93. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js +34 -17
  94. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.js.map +2 -2
  95. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.js +61 -50
  96. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.js.map +2 -2
  97. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/react-desc-prop-types.js +28 -0
  98. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/react-desc-prop-types.js.map +7 -0
  99. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.js +33 -25
  100. package/dist/esm/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.js.map +2 -2
  101. package/dist/esm/parts/Toolbar/outOfTheBox/index.js +8 -3
  102. package/dist/esm/parts/Toolbar/outOfTheBox/index.js.map +2 -2
  103. package/dist/esm/parts/Toolbar/styles.js +6 -1
  104. package/dist/esm/parts/Toolbar/styles.js.map +2 -2
  105. package/dist/esm/react-desc-prop-types.js.map +2 -2
  106. package/dist/esm/typescript-testing/typescript-global-header-toolbar-types.js +52 -0
  107. package/dist/esm/typescript-testing/typescript-global-header-toolbar-types.js.map +2 -2
  108. package/dist/types/DSGlobalHeaderContext.d.ts +10 -2
  109. package/dist/types/config/useGlobalHeader.d.ts +3 -4
  110. package/dist/types/constants/index.d.ts +4 -3
  111. package/dist/types/index.d.ts +0 -2
  112. package/dist/types/parts/Breadcrumb/PureBreadcrumb.d.ts +1 -1
  113. package/dist/types/parts/Breadcrumb/styles.d.ts +1 -1
  114. package/dist/types/parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTX.d.ts +4 -0
  115. package/dist/types/parts/Toolbar/outOfTheBox/AppPicker/AppPickerCTXRenderer.d.ts +2 -0
  116. package/dist/types/parts/Toolbar/outOfTheBox/AppPicker/AppPickerRenderer.d.ts +1 -0
  117. package/dist/types/parts/Toolbar/outOfTheBox/AppPicker/TriggerDefaultComponent.d.ts +2 -0
  118. package/dist/types/parts/Toolbar/outOfTheBox/AppPicker/react-desc-prop-types.d.ts +23 -0
  119. package/dist/types/parts/Toolbar/outOfTheBox/AppPicker/useAppPickerCTX.d.ts +456 -0
  120. package/dist/types/parts/Toolbar/outOfTheBox/PopupMenu/PopupMenu.d.ts +2 -2
  121. package/dist/types/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/PopupMenuContent.d.ts +2 -2
  122. package/dist/types/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/react-desc-prop-types.d.ts +28 -0
  123. package/dist/types/parts/Toolbar/outOfTheBox/PopupMenu/menuContent/usePopupMenuContent.d.ts +9 -1
  124. package/dist/types/parts/Toolbar/outOfTheBox/PopupMenu/react-desc-prop-types.d.ts +26 -0
  125. package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.d.ts +2 -2
  126. package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.d.ts +3 -1
  127. package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/react-desc-prop-types.d.ts +26 -0
  128. package/dist/types/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.d.ts +2 -3
  129. package/dist/types/parts/Toolbar/outOfTheBox/index.d.ts +3 -3
  130. package/dist/types/parts/Toolbar/styles.d.ts +1 -0
  131. package/dist/types/react-desc-prop-types.d.ts +63 -72
  132. package/dist/types/sharedTypes.d.ts +16 -6
  133. package/package.json +20 -17
  134. package/dist/cjs/hooks/useOnClickOutside.js.map +0 -7
  135. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js +0 -127
  136. package/dist/cjs/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js.map +0 -7
  137. package/dist/cjs/utils/useCallbackAfterRender.js.map +0 -7
  138. package/dist/esm/hooks/useOnClickOutside.js +0 -30
  139. package/dist/esm/hooks/useOnClickOutside.js.map +0 -7
  140. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js +0 -97
  141. package/dist/esm/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.js.map +0 -7
  142. package/dist/esm/utils/useCallbackAfterRender.js +0 -17
  143. package/dist/esm/utils/useCallbackAfterRender.js.map +0 -7
  144. package/dist/types/hooks/useOnClickOutside.d.ts +0 -1
  145. package/dist/types/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.d.ts +0 -6
  146. package/dist/types/tests/GlobalHeader.a11y.test.d.ts +0 -1
  147. package/dist/types/tests/GlobalHeader.callback.test.d.ts +0 -1
  148. package/dist/types/tests/GlobalHeader.getOwnerProps.test.d.ts +0 -1
  149. package/dist/types/tests/GlobalHeader.keyboard.test.d.ts +0 -1
  150. package/dist/types/tests/GlobalHeader.setup.test.d.ts +0 -113
  151. package/dist/types/typescript-testing/typescript-global-header-breadcrumb-types.d.ts +0 -3
  152. package/dist/types/typescript-testing/typescript-global-header-deprecated.d.ts +0 -1
  153. package/dist/types/typescript-testing/typescript-global-header-toolbar-types.d.ts +0 -3
  154. package/dist/types/typescript-testing/typescript-global-header-valid.d.ts +0 -1
  155. package/dist/types/utils/useCallbackAfterRender.d.ts +0 -3
@@ -1,7 +1,15 @@
1
1
  interface UsePopupMenuContentT {
2
2
  setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
3
+ /**
4
+ * Which end of the menu this open should land on. Mirrors DSAppPicker's open-intent mechanism, scoped
5
+ * to this part: the trigger records WHICH key opened the menu and the seeding below reads it — ArrowUp
6
+ * lands on the last item, everything else on the first.
7
+ */
8
+ openIntent: 'first' | 'last';
9
+ /** How many focusable items the menu mounts. Separators are not focusable and are excluded. */
10
+ focusableItemsCount: number;
3
11
  }
4
- export declare const usePopupMenuContent: ({ setIsOpen }: UsePopupMenuContentT) => {
12
+ export declare const usePopupMenuContent: ({ setIsOpen, openIntent, focusableItemsCount }: UsePopupMenuContentT) => {
5
13
  menuRef: import("react").RefObject<HTMLUListElement>;
6
14
  setRef: (ref: HTMLButtonElement) => void;
7
15
  keyboardNavigation: (e: React.KeyboardEvent) => void;
@@ -0,0 +1,26 @@
1
+ import type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';
2
+ import type { SvgIconT } from '@elliemae/ds-icons';
3
+ import type React from 'react';
4
+ import type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';
5
+ export declare namespace PopupMenuT {
6
+ interface RequiredProps {
7
+ /** The consumer-authored configuration object for this toolbar item. */
8
+ componentProps: DSGlobalHeaderT.PopupMenuComponentProps;
9
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader: () => Partial<DSGlobalHeaderT.DefaultProps>;
10
+ /** Focus-management registration, supplied by useGlobalHeaderToolbar for arrow-key navigation. */
11
+ setRef: (ref: HTMLElement) => void;
12
+ }
13
+ interface DefaultProps {
14
+ }
15
+ interface OptionalProps {
16
+ Icon?: React.ComponentType<SvgIconT.Props>;
17
+ onClick?: (event: React.MouseEvent) => void;
18
+ title?: string;
19
+ }
20
+ interface Props extends Partial<DefaultProps>, OptionalProps, Omit<GlobalAttributesT<HTMLButtonElement>, keyof RequiredProps | keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>, XstyledProps, RequiredProps {
21
+ }
22
+ interface InternalProps extends DefaultProps, OptionalProps, Omit<GlobalAttributesT<HTMLButtonElement>, keyof RequiredProps | keyof DefaultProps | keyof OptionalProps | keyof XstyledProps>, XstyledProps, RequiredProps {
23
+ }
24
+ }
25
+ export declare const PopupMenuPropTypes: DSPropTypesSchema<PopupMenuT.Props>;
26
+ export declare const PopupMenuPropTypesSchema: ValidationMap<PopupMenuT.Props>;
@@ -1,2 +1,2 @@
1
- import type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';
2
- export declare const SearchToggle: (outOfTheBoxDrilledDownProps: DSGlobalHeaderT.SearchToggleProps) => JSX.Element;
1
+ import { type SearchToggleT } from './react-desc-prop-types.js';
2
+ export declare const SearchToggle: (outOfTheBoxDrilledDownProps: SearchToggleT.Props) => JSX.Element;
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
+ import type { SearchToggleT } from './react-desc-prop-types.js';
2
3
  interface SearchToggleSpinButtonPropsT {
3
4
  onNext: () => void;
4
5
  onPrevious: () => void;
5
6
  currentResultIndex: number;
6
7
  totalResults: number;
8
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader: SearchToggleT.Props['getOwnerPropsAwareOfPropsPassedToGlobalHeader'];
7
9
  }
8
- export declare const SearchToggleSpinButton: React.MemoExoticComponent<(props: SearchToggleSpinButtonPropsT) => import("react/jsx-runtime.js").JSX.Element>;
10
+ export declare const SearchToggleSpinButton: React.MemoExoticComponent<(props: SearchToggleSpinButtonPropsT) => React.JSX.Element>;
9
11
  export {};
@@ -0,0 +1,26 @@
1
+ import type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';
2
+ import type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';
3
+ export declare namespace SearchToggleT {
4
+ interface RequiredProps {
5
+ /** Accessible name for the collapsed trigger, and the toolbar item's label. */
6
+ label: string;
7
+ /** The consumer-authored configuration object for this toolbar item. */
8
+ componentProps: DSGlobalHeaderT.ToggleSearchComponentProps;
9
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader: () => Partial<DSGlobalHeaderT.DefaultProps>;
10
+ /** Focus-management registration, supplied by useGlobalHeaderToolbar for arrow-key navigation. */
11
+ setRef: (ref: HTMLButtonElement | null) => void;
12
+ instanceUID: string;
13
+ }
14
+ interface DefaultProps {
15
+ ariaLabelExpanded: string;
16
+ }
17
+ interface OptionalProps {
18
+ }
19
+ interface Props extends Partial<DefaultProps>, OptionalProps, Omit<GlobalAttributesT<HTMLElement>, keyof RequiredProps | keyof DefaultProps | keyof XstyledProps>, XstyledProps, RequiredProps {
20
+ }
21
+ interface InternalProps extends DefaultProps, OptionalProps, Omit<GlobalAttributesT<HTMLElement>, keyof RequiredProps | keyof DefaultProps | keyof XstyledProps>, XstyledProps, RequiredProps {
22
+ }
23
+ }
24
+ export declare const defaultProps: SearchToggleT.DefaultProps;
25
+ export declare const SearchTogglePropTypes: DSPropTypesSchema<SearchToggleT.Props>;
26
+ export declare const SearchTogglePropTypesSchema: ValidationMap<SearchToggleT.Props>;
@@ -1,13 +1,12 @@
1
1
  import React from 'react';
2
- import type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';
3
- export declare const useSearchToggle: (outOfTheBoxDrilledDownProps: DSGlobalHeaderT.SearchToggleProps) => {
2
+ import type { SearchToggleT } from './react-desc-prop-types.js';
3
+ export declare const useSearchToggle: (outOfTheBoxDrilledDownProps: SearchToggleT.Props) => {
4
4
  isOpenUncontrolled: boolean;
5
5
  internalInputRef: React.MutableRefObject<HTMLInputElement | null>;
6
6
  containerRef: React.MutableRefObject<HTMLDivElement | null>;
7
7
  handleToggleSearch: (e: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.KeyboardEvent<HTMLButtonElement>) => void;
8
8
  handleContainerKeyDown: React.KeyboardEventHandler<HTMLDivElement>;
9
9
  handleChange: React.ChangeEventHandler<HTMLInputElement>;
10
- handleInputKeyDown: React.KeyboardEventHandler<HTMLInputElement>;
11
10
  handleTriggerRefs: (buttonRef: HTMLButtonElement) => void;
12
11
  inputId: string;
13
12
  panelId: string;
@@ -1,3 +1,3 @@
1
- export * from './AppPicker/AppPicker.js';
2
- export * from './PopupMenu/PopupMenu.js';
3
- export * from './SearchToggle/SearchToggle.js';
1
+ export { AppPickerCTXRenderer } from './AppPicker/AppPickerCTXRenderer.js';
2
+ export { PopupMenu } from './PopupMenu/PopupMenu.js';
3
+ export { SearchToggle } from './SearchToggle/SearchToggle.js';
@@ -3,3 +3,4 @@ export declare const StyledMenubarContainer: import("styled-components").StyledC
3
3
  } & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"div">, never>;
4
4
  export declare const StyledList: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("@elliemae/ds-grid").DSGridT.Props & import("react").RefAttributes<HTMLDivElement>>, import("@elliemae/ds-system").Theme, object & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<import("react").ForwardRefExoticComponent<import("@elliemae/ds-grid").DSGridT.Props & import("react").RefAttributes<HTMLDivElement>>>, never>;
5
5
  export declare const StyledToolbarItem: import("styled-components").StyledComponent<"div", import("@elliemae/ds-system").Theme, object & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"div">, never>;
6
+ export declare const StyledPopupMenuContainer: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("@elliemae/ds-grid").DSGridT.Props & import("react").RefAttributes<HTMLDivElement>>, import("@elliemae/ds-system").Theme, object & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<import("react").ForwardRefExoticComponent<import("@elliemae/ds-grid").DSGridT.Props & import("react").RefAttributes<HTMLDivElement>>>, never>;
@@ -1,4 +1,6 @@
1
1
  import type { DSAppPicker } from '@elliemae/ds-app-picker';
2
+ import type { DSHookFloatingContextT } from '@elliemae/ds-floating-context';
3
+ import type { SvgIconT } from '@elliemae/ds-icons';
2
4
  import type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';
3
5
  import { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';
4
6
  import type React from 'react';
@@ -10,18 +12,6 @@ export declare const defaultProps: {
10
12
  Logo: () => null;
11
13
  };
12
14
  export declare namespace DSGlobalHeaderT {
13
- interface Context {
14
- showIconOnly: boolean;
15
- fontDetector: number;
16
- setShowIconOnly: React.Dispatch<React.SetStateAction<boolean>>;
17
- instanceUID: string;
18
- globalHeaderToolbarGrid: string[];
19
- props: InternalProps;
20
- ownerProps: {
21
- getOwnerProps: () => Partial<DSGlobalHeaderT.DefaultProps>;
22
- getOwnerPropsArguments: () => object;
23
- };
24
- }
25
15
  interface BreadcrumbItemOptionals {
26
16
  hasNext?: boolean;
27
17
  isSelected?: boolean;
@@ -46,40 +36,56 @@ export declare namespace DSGlobalHeaderT {
46
36
  label: string;
47
37
  CustomComponent: React.ComponentType<ToolbarCustomComponentProps>;
48
38
  }
39
+ /**
40
+ * Why the search region expanded or collapsed. Fired only for transitions this item drives itself —
41
+ * a controlled consumer flipping `isOpen` already knows, and detecting their flip would need an
42
+ * effect watching state, which is not how this codebase reacts to state changes.
43
+ */
44
+ type SearchToggleExpandChange = {
45
+ reason: 'trigger' | 'escape';
46
+ event: React.MouseEvent | React.KeyboardEvent;
47
+ };
49
48
  interface ToggleSearchComponentProps {
50
49
  onNext: () => void;
51
50
  onPrevious: () => void;
52
51
  currentResultIndex: number;
53
52
  totalResults: number;
54
- placeholder: string;
55
53
  value: string;
56
54
  onChange: (value: string) => void;
57
- onBlur?: () => void;
58
55
  onClear: () => void;
59
- isOpen: boolean;
60
- onKeyDown: (event: React.KeyboardEvent) => void;
61
- onClick: (event: React.MouseEvent) => void;
62
- triggerRef: React.MutableRefObject<HTMLButtonElement>;
63
- searchContainerRef: React.MutableRefObject<HTMLDivElement>;
64
- }
65
- interface SearchToggleProps extends GlobalAttributesT {
66
- setRef: (ref: HTMLButtonElement | null) => void;
67
- label: string;
68
- componentProps: ToggleSearchComponentProps;
69
- ariaLabelExpanded?: string;
70
- instanceUID: Context['instanceUID'];
56
+ onBlur?: () => void;
57
+ /** Falls back to 'Search...'. */
58
+ placeholder?: string;
59
+ /** Supply to control the expanded state; omitted, the item manages it. */
60
+ isOpen?: boolean;
61
+ onKeyDown?: (event: React.KeyboardEvent) => void;
62
+ onClick?: (event: React.MouseEvent) => void;
63
+ triggerRef?: React.MutableRefObject<HTMLButtonElement>;
64
+ /** Merged with the part's own container ref when supplied. */
65
+ searchContainerRef?: React.MutableRefObject<HTMLDivElement>;
66
+ /**
67
+ * Notified when the search region expands. PASSIVE — being told does not make you responsible: the
68
+ * region still expands on its own unless you also supply `isOpen`.
69
+ *
70
+ * This is the disclosure-pattern counterpart to the `onOpen`/`onClose` the app-picker and popup-menu
71
+ * items expose; the vocabulary differs because this item expands an inline region rather than opening
72
+ * a dialog or a menu.
73
+ */
74
+ onExpand?: (info: SearchToggleExpandChange) => void;
75
+ /** Notified when the search region collapses, on the same terms as `onExpand`. */
76
+ onCollapse?: (info: SearchToggleExpandChange) => void;
71
77
  }
72
- interface ToolbarSearchToggleItem {
78
+ interface ToolbarSearchToggleItem extends Omit<GlobalAttributesT, 'type' | 'label'> {
73
79
  type: 'ds-search-toggle';
74
80
  label: string;
81
+ /** Accessible name for the trigger once expanded. Defaults to a generic string. */
82
+ ariaLabelExpanded?: string;
75
83
  componentProps: ToggleSearchComponentProps;
76
84
  }
77
85
  interface PopupMenuContentItem extends Omit<GlobalAttributesT, 'type' | 'label' | 'onClick'> {
78
86
  type?: 'separator' | 'custom';
79
- Icon?: React.ComponentType<{
80
- fill?: string;
81
- size?: string;
82
- }>;
87
+ /** Any `@elliemae/ds-icons` export. Typed from their own props so real icons satisfy it. */
88
+ Icon?: React.ComponentType<SvgIconT.Props>;
83
89
  label?: string;
84
90
  onClick?: (event: React.MouseEvent) => void;
85
91
  closeOnClick?: boolean;
@@ -87,55 +93,42 @@ export declare namespace DSGlobalHeaderT {
87
93
  }
88
94
  interface PopupMenuComponentProps {
89
95
  onClickOutside?: (e: MouseEvent | TouchEvent) => void;
90
- onKeyPress: (event: React.KeyboardEvent) => void;
91
- popupOnKeyPress: (event: React.KeyboardEvent) => void;
92
- isOpen: boolean;
96
+ onKeyPress?: (event: React.KeyboardEvent) => void;
97
+ popupOnKeyPress?: (event: React.KeyboardEvent) => void;
98
+ /** Supply to control the menu; omitted, the item manages it. */
99
+ isOpen?: boolean;
100
+ /** The only genuinely required key — a menu with nothing to show has no purpose. */
93
101
  options: PopupMenuContentItem[];
94
- closeOnClick: boolean;
102
+ /** Close the menu when an option is clicked. */
103
+ closeOnClick?: boolean;
104
+ /**
105
+ * Notified on every open transition. PASSIVE — being told does not make you responsible for the
106
+ * transition: the menu opens and closes on its own unless you also supply `isOpen`.
107
+ *
108
+ * Every path reports: trigger click, ArrowDown, and a controlled flip of `isOpen`. Discriminate on
109
+ * the payload's `reason` — `interaction` is the synchronous, event-carrying signal, `controlled-flip`
110
+ * is the post-commit one that fires only when you own `isOpen`. A controlled consumer can see both
111
+ * for one logical transition.
112
+ */
113
+ onOpen?: (info: DSHookFloatingContextT.OpenChange) => void;
114
+ /**
115
+ * Notified on every close transition, on the same terms as `onOpen`. Every path reports: click
116
+ * outside, Escape inside the menu, an item click while `closeOnClick`, and a controlled flip.
117
+ */
118
+ onClose?: (info: DSHookFloatingContextT.OpenChange) => void;
95
119
  }
96
120
  interface PopupMenuItem extends Omit<GlobalAttributesT, 'type' | 'label' | 'onClick'> {
97
121
  type: 'ds-popup-menu';
98
- Icon?: React.ComponentType<{
99
- fill?: string;
100
- size?: string;
101
- }>;
122
+ /** Any `@elliemae/ds-icons` export. Typed from their own props so real icons satisfy it. */
123
+ Icon?: React.ComponentType<SvgIconT.Props>;
102
124
  label?: string;
103
125
  onClick?: (event: React.MouseEvent) => void;
104
126
  Content?: React.ComponentType;
105
127
  componentProps: PopupMenuComponentProps;
106
128
  }
107
- interface PopupMenuContentProps {
108
- options: PopupMenuContentItem[];
109
- onItemClick: () => void;
110
- onClose: () => void;
111
- popupOnKeyPress: (event: React.KeyboardEvent) => void;
112
- setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
113
- ownerProps: {
114
- getOwnerProps: () => Partial<DSGlobalHeaderT.DefaultProps>;
115
- getOwnerPropsArguments: () => object;
116
- };
117
- }
118
- interface PopupProps extends Omit<GlobalAttributesT, 'title' | 'label' | 'onClick'> {
119
- Icon?: React.ComponentType<{
120
- fill?: string;
121
- size?: string;
122
- }>;
123
- onClick?: (event: React.MouseEvent) => void;
124
- setRef: (ref: HTMLElement) => void;
125
- componentProps: PopupMenuComponentProps;
126
- title?: string;
127
- ownerProps: {
128
- getOwnerProps: () => Partial<DSGlobalHeaderT.DefaultProps>;
129
- getOwnerPropsArguments: () => object;
130
- };
131
- }
132
129
  type AppPickerComponentProps = React.ComponentProps<typeof DSAppPicker> & {
133
130
  triggerOnClick?: React.MouseEventHandler<HTMLButtonElement>;
134
131
  };
135
- interface AppPickerProps extends Omit<GlobalAttributesT, 'label'> {
136
- label: string;
137
- componentProps: AppPickerComponentProps;
138
- }
139
132
  interface ToolbarAppPickerItem extends Omit<GlobalAttributesT, 'type' | 'label'> {
140
133
  type: 'ds-app-picker';
141
134
  label: string;
@@ -144,10 +137,7 @@ export declare namespace DSGlobalHeaderT {
144
137
  interface ToolbarItemTypelessDefault extends Omit<GlobalAttributesT, 'label'> {
145
138
  type?: undefined;
146
139
  label: string;
147
- Icon: React.ComponentType<{
148
- fill?: string;
149
- size?: string;
150
- }>;
140
+ Icon: React.ComponentType<SvgIconT.Props>;
151
141
  }
152
142
  type ToolbarItem = ToolbarCustomItem | ToolbarSearchToggleItem | ToolbarAppPickerItem | PopupMenuItem | ToolbarItemTypelessDefault;
153
143
  type SlotFunctionArguments = {
@@ -164,6 +154,7 @@ export declare namespace DSGlobalHeaderT {
164
154
  dsGlobalheaderMenubarList: () => Record<string, never>;
165
155
  dsGlobalheaderMenubarItem: () => Record<string, never>;
166
156
  dsGlobalheaderMenubarItemButton: () => Record<string, never>;
157
+ dsGlobalheaderMenubarItemPopupmenuContainer: () => Record<string, never>;
167
158
  dsGlobalheaderMenubarItemPopupmenuList: () => Record<string, never>;
168
159
  dsGlobalheaderMenubarItemPopupmenuItem: () => Record<string, never>;
169
160
  dsGlobalheaderMenubarItemPopupmenuItemButton: () => Record<string, never>;
@@ -1,4 +1,7 @@
1
+ import type { PopupMenuT } from './parts/Toolbar/outOfTheBox/PopupMenu/react-desc-prop-types.js';
2
+ import type { PopupMenuContentT } from './parts/Toolbar/outOfTheBox/PopupMenu/menuContent/react-desc-prop-types.js';
1
3
  import type { DSGlobalHeaderT } from './react-desc-prop-types.js';
4
+ import type { GlobalHeaderCTX } from './config/useGlobalHeader.js';
2
5
  /**
3
6
  * @deprecated This namespace is outdated. Use `DSGlobalHeaderT` instead.
4
7
  */
@@ -33,18 +36,25 @@ export declare namespace DSGlobalHeaderInternalsT {
33
36
  interface PopupMenuContentItem extends DSGlobalHeaderT.PopupMenuContentItem {
34
37
  }
35
38
  /**
36
- * @deprecated This namespace is outdated. Use `DSGlobalHeaderT.PopupMenuContentProps` instead.
39
+ * @deprecated Internal wrapper contract, not a shape an application authors. It moved to the part that
40
+ * owns it — `PopupMenuContentT.Props` in
41
+ * `parts/Toolbar/outOfTheBox/PopupMenu/menuContent/react-desc-prop-types.ts` — and this alias is kept
42
+ * pointing at it only so the deprecation notice does not dangle. What you almost certainly want is
43
+ * `DSGlobalHeaderT.PopupMenuComponentProps` or `DSGlobalHeaderT.PopupMenuContentItem`.
37
44
  */
38
- interface PopupMenuContentProps extends DSGlobalHeaderT.PopupMenuContentProps {
45
+ interface PopupMenuContentProps extends PopupMenuContentT.Props {
39
46
  }
40
47
  /**
41
- * @deprecated This namespace is outdated. Use `DSGlobalHeaderT.PopupProps` instead.
48
+ * @deprecated Internal wrapper contract, not a shape an application authors. It moved to the part that
49
+ * owns it — `PopupMenuT.Props` in `parts/Toolbar/outOfTheBox/PopupMenu/react-desc-prop-types.ts` — and
50
+ * this alias is kept pointing at it only so the deprecation notice does not dangle. What you almost
51
+ * certainly want is `DSGlobalHeaderT.PopupMenuItem`.
42
52
  */
43
- interface PopupProps extends DSGlobalHeaderT.PopupProps {
53
+ interface PopupProps extends PopupMenuT.Props {
44
54
  }
45
55
  /**
46
- * @deprecated This namespace is outdated. Use `DSGlobalHeaderT.Context` instead.
56
+ * @deprecated This namespace is outdated. You should not need the internal shape of the context externally. Get in touch with the team if you think you do.
47
57
  */
48
- interface Context extends DSGlobalHeaderT.Context {
58
+ interface Context extends GlobalHeaderCTX {
49
59
  }
50
60
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-global-header",
3
- "version": "3.70.0-next.7",
3
+ "version": "3.70.0-next.71",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Global Header",
6
6
  "files": [
@@ -22,7 +22,7 @@
22
22
  ],
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "https://git.elliemae.io/platform-ui/dimsum.git"
25
+ "url": "https://github.com/intcx/PLATFORM-UI.dimsum.git"
26
26
  },
27
27
  "engines": {
28
28
  "pnpm": ">=9",
@@ -37,27 +37,30 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "uid": "^2.0.2",
40
- "@elliemae/ds-button-v2": "3.70.0-next.7",
41
- "@elliemae/ds-app-picker": "3.70.0-next.7",
42
- "@elliemae/ds-form-input-text": "3.70.0-next.7",
43
- "@elliemae/ds-hooks-fontsize-media": "3.70.0-next.7",
44
- "@elliemae/ds-grid": "3.70.0-next.7",
45
- "@elliemae/ds-floating-context": "3.70.0-next.7",
46
- "@elliemae/ds-icons": "3.70.0-next.7",
47
- "@elliemae/ds-props-helpers": "3.70.0-next.7",
48
- "@elliemae/ds-system": "3.70.0-next.7"
40
+ "@elliemae/ds-button-v2": "3.70.0-next.71",
41
+ "@elliemae/ds-app-picker": "3.70.0-next.71",
42
+ "@elliemae/ds-form-input-text": "3.70.0-next.71",
43
+ "@elliemae/ds-floating-context": "3.70.0-next.71",
44
+ "@elliemae/ds-grid": "3.70.0-next.71",
45
+ "@elliemae/ds-hooks-fontsize-media": "3.70.0-next.71",
46
+ "@elliemae/ds-props-helpers": "3.70.0-next.71",
47
+ "@elliemae/ds-icons": "3.70.0-next.71",
48
+ "@elliemae/ds-system": "3.70.0-next.71"
49
49
  },
50
50
  "devDependencies": {
51
51
  "jest": "^30.0.0",
52
- "styled-components": "~5.3.9",
53
- "@elliemae/ds-monorepo-devops": "3.70.0-next.7",
54
- "@elliemae/ds-test-utils": "3.70.0-next.7"
52
+ "jest-axe": "^11.0.0",
53
+ "styled-components": "~5.3.11",
54
+ "@elliemae/ds-monorepo-devops": "3.70.0-next.71",
55
+ "@elliemae/ds-test-utils": "3.70.0-next.71"
55
56
  },
56
57
  "peerDependencies": {
57
- "lodash-es": "^4.17.21",
58
+ "@testing-library/react": "^16.0.1",
59
+ "@testing-library/user-event": "~14.6.1",
60
+ "lodash-es": "^4.18.1",
58
61
  "react": "^18.3.1",
59
62
  "react-dom": "^18.3.1",
60
- "styled-components": "~5.3.9"
63
+ "styled-components": "~5.3.11"
61
64
  },
62
65
  "publishConfig": {
63
66
  "access": "public",
@@ -72,4 +75,4 @@
72
75
  "build": "cross-env NODE_ENV=production node ../../../scripts/build/build.mjs",
73
76
  "checkDeps": "npx -yes ../../util/ds-codemods check-missing-packages --projectFolderPath=\"./\" --ignorePackagesGlobPattern=\"\" --ignoreFilesGlobPattern=\"**/test-ables/*,**/tests/*\""
74
77
  }
75
- }
78
+ }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/useOnClickOutside.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React, { useEffect } from 'react';\n\nexport function useOnClickOutside<T extends Node>(ref: T | null, cb: (event: Event) => void): void {\n const cbRef = React.useRef(cb);\n\n useEffect(() => {\n cbRef.current = cb;\n }, [cb]);\n\n useEffect(() => {\n if (!ref) {\n return () => {};\n }\n\n const listener = (event: MouseEvent | TouchEvent) => {\n const target = event.target as Node | null;\n if (!target) return;\n\n if (ref.contains(target)) return;\n\n cbRef.current(event);\n };\n\n document.addEventListener('mousedown', listener, true);\n document.addEventListener('touchstart', listener, true);\n\n return () => {\n document.removeEventListener('mousedown', listener, true);\n document.removeEventListener('touchstart', listener, true);\n };\n }, [ref]);\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAiC;AAE1B,SAAS,kBAAkC,KAAe,IAAkC;AACjG,QAAM,QAAQ,aAAAA,QAAM,OAAO,EAAE;AAE7B,8BAAU,MAAM;AACd,UAAM,UAAU;AAAA,EAClB,GAAG,CAAC,EAAE,CAAC;AAEP,8BAAU,MAAM;AACd,QAAI,CAAC,KAAK;AACR,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AAEA,UAAM,WAAW,CAAC,UAAmC;AACnD,YAAM,SAAS,MAAM;AACrB,UAAI,CAAC,OAAQ;AAEb,UAAI,IAAI,SAAS,MAAM,EAAG;AAE1B,YAAM,QAAQ,KAAK;AAAA,IACrB;AAEA,aAAS,iBAAiB,aAAa,UAAU,IAAI;AACrD,aAAS,iBAAiB,cAAc,UAAU,IAAI;AAEtD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,UAAU,IAAI;AACxD,eAAS,oBAAoB,cAAc,UAAU,IAAI;AAAA,IAC3D;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AACV;",
6
- "names": ["React"]
7
- }
@@ -1,127 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var AppPicker_exports = {};
30
- __export(AppPicker_exports, {
31
- AppPicker: () => AppPicker
32
- });
33
- module.exports = __toCommonJS(AppPicker_exports);
34
- var React = __toESM(require("react"));
35
- var import_jsx_runtime = require("react/jsx-runtime");
36
- var import_ds_app_picker = require("@elliemae/ds-app-picker");
37
- var import_ds_icons = require("@elliemae/ds-icons");
38
- var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
39
- var import_ds_system = require("@elliemae/ds-system");
40
- var import_react = require("react");
41
- var import_constants = require("../../../../constants/index.js");
42
- var import_useCallbackAfterRender = require("../../../../utils/useCallbackAfterRender.js");
43
- var import_styles = require("../../../styles.js");
44
- const AppPicker = ({ label, setRef, componentProps, ...otherProps }) => {
45
- const [isOpen, setIsOpen] = (0, import_react.useState)(false);
46
- const internalTriggerRef = (0, import_react.useRef)(null);
47
- const {
48
- apps,
49
- icon,
50
- customApps,
51
- sectionTitle,
52
- customSectionTitle,
53
- actionRef,
54
- isOpen: userIsOpen,
55
- onKeyDown: userOnKeyDown,
56
- onClickOutside: userOnClickOutside,
57
- renderTrigger: userRenderTrigger,
58
- onClose,
59
- triggerRef,
60
- triggerOnClick
61
- } = componentProps;
62
- const schedule = (0, import_useCallbackAfterRender.useCallbackAfterRender)();
63
- const focusTrigger = (0, import_react.useCallback)(() => internalTriggerRef.current?.focus(), []);
64
- const handleTriggerKeyDown = (0, import_react.useCallback)((e) => {
65
- if (e.code === "Enter" || e.code === "Space" || e.code === "ArrowDown") {
66
- setIsOpen(true);
67
- }
68
- }, []);
69
- const handleAppPickerOnKeyDown = (0, import_react.useCallback)(
70
- (e) => {
71
- if (e.key === "Escape") {
72
- setIsOpen(false);
73
- schedule(focusTrigger);
74
- }
75
- },
76
- [focusTrigger, schedule]
77
- );
78
- const handleOnClickOutside = (0, import_react.useCallback)(() => {
79
- setIsOpen(false);
80
- }, []);
81
- const handleOnClick = (0, import_react.useCallback)(
82
- (e) => {
83
- setIsOpen(true);
84
- setTimeout(() => {
85
- if (e.detail === 0) actionRef?.current?.focusSelectedOrFirstAvailable?.();
86
- else actionRef?.current?.focusWrapper();
87
- }, 10);
88
- },
89
- [actionRef]
90
- );
91
- const TriggerDefaultComponent = ({ ref }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
92
- import_styles.StyledButton,
93
- {
94
- onClick: triggerOnClick ?? handleOnClick,
95
- onKeyDown: handleTriggerKeyDown,
96
- innerRef: (buttonRef) => {
97
- setRef(buttonRef);
98
- (0, import_ds_system.mergeRefs)(internalTriggerRef, triggerRef, ref)(buttonRef);
99
- },
100
- "aria-label": label,
101
- "data-testid": import_constants.GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM_BUTTON,
102
- "aria-haspopup": true,
103
- "aria-expanded": userIsOpen ?? isOpen,
104
- ...(0, import_ds_props_helpers.getGlobalAttributes)(otherProps),
105
- type: "button",
106
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.MenuPicker, { width: 20.73, height: 20.73 })
107
- }
108
- );
109
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
110
- import_ds_app_picker.DSAppPicker,
111
- {
112
- apps,
113
- customApps,
114
- sectionTitle,
115
- customSectionTitle,
116
- icon,
117
- onKeyDown: userOnKeyDown ?? handleAppPickerOnKeyDown,
118
- actionRef,
119
- onClickOutside: userOnClickOutside ?? handleOnClickOutside,
120
- renderTrigger: userRenderTrigger || TriggerDefaultComponent,
121
- isOpen: userIsOpen ?? isOpen,
122
- onClose,
123
- triggerRef
124
- }
125
- );
126
- };
127
- //# sourceMappingURL=AppPicker.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../src/parts/Toolbar/outOfTheBox/AppPicker/AppPicker.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { DSAppPicker } from '@elliemae/ds-app-picker';\nimport { MenuPicker } from '@elliemae/ds-icons';\nimport { getGlobalAttributes } from '@elliemae/ds-props-helpers';\nimport { mergeRefs } from '@elliemae/ds-system';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { GLOBAL_HEADER_DATA_TESTID } from '../../../../constants/index.js';\nimport type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';\nimport { useCallbackAfterRender } from '../../../../utils/useCallbackAfterRender.js';\nimport { StyledButton } from '../../../styles.js';\n\ntype AppPickerOutOfTheBoxProps =\n // what comes from\n // the prop toolbar (array)\n // specifically only if the type is 'ds-app-picker' so they give us the correct interface\n DSGlobalHeaderT.AppPickerProps & {\n // this interface is an addition that comes from our own implementation\n // GlobalHeaderToolbar -> useGlobalHeaderToolbar\n // is handling focus management for the user when using our out of the box\n setRef: (ref: HTMLElement) => void;\n };\n\nexport const AppPicker = ({ label, setRef, componentProps, ...otherProps }: AppPickerOutOfTheBoxProps): JSX.Element => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const internalTriggerRef = useRef<HTMLButtonElement>(null);\n\n const {\n apps,\n icon,\n customApps,\n sectionTitle,\n customSectionTitle,\n actionRef,\n isOpen: userIsOpen,\n onKeyDown: userOnKeyDown,\n onClickOutside: userOnClickOutside,\n renderTrigger: userRenderTrigger,\n onClose,\n triggerRef,\n triggerOnClick,\n } = componentProps;\n\n const schedule = useCallbackAfterRender();\n\n // const appPickerRef = useRef(null);\n // const internalActionRef = useMemo(() => actionRef ?? appPickerRef, [actionRef]);\n\n const focusTrigger = useCallback(() => internalTriggerRef.current?.focus(), []);\n\n const handleTriggerKeyDown: React.KeyboardEventHandler = useCallback((e) => {\n if (e.code === 'Enter' || e.code === 'Space' || e.code === 'ArrowDown') {\n setIsOpen(true);\n }\n }, []);\n\n const handleAppPickerOnKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false);\n schedule(focusTrigger);\n }\n },\n [focusTrigger, schedule],\n );\n\n const handleOnClickOutside = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const handleOnClick: React.MouseEventHandler = useCallback(\n (e) => {\n setIsOpen(true);\n setTimeout(() => {\n if (e.detail === 0) actionRef?.current?.focusSelectedOrFirstAvailable?.();\n else actionRef?.current?.focusWrapper();\n }, 10);\n },\n [actionRef],\n );\n\n // eslint-disable-next-line react/no-unstable-nested-components\n const TriggerDefaultComponent = ({ ref }: { ref: React.MutableRefObject<HTMLButtonElement> }) => (\n <StyledButton\n onClick={triggerOnClick ?? handleOnClick}\n onKeyDown={handleTriggerKeyDown}\n innerRef={(buttonRef: HTMLButtonElement) => {\n setRef(buttonRef);\n mergeRefs(internalTriggerRef, triggerRef, ref)(buttonRef);\n }}\n aria-label={label}\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_ITEM_BUTTON}\n aria-haspopup\n aria-expanded={userIsOpen ?? isOpen}\n {...getGlobalAttributes(otherProps)}\n type=\"button\"\n >\n <MenuPicker width={20.73} height={20.73} />\n </StyledButton>\n );\n\n return (\n <DSAppPicker\n apps={apps}\n customApps={customApps}\n sectionTitle={sectionTitle}\n customSectionTitle={customSectionTitle}\n icon={icon}\n onKeyDown={userOnKeyDown ?? handleAppPickerOnKeyDown}\n actionRef={actionRef}\n onClickOutside={userOnClickOutside ?? handleOnClickOutside}\n renderTrigger={userRenderTrigger || TriggerDefaultComponent}\n isOpen={userIsOpen ?? isOpen}\n onClose={onClose}\n triggerRef={triggerRef}\n />\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD+FjB;AA/FN,2BAA4B;AAC5B,sBAA2B;AAC3B,8BAAoC;AACpC,uBAA0B;AAC1B,mBAAqD;AACrD,uBAA0C;AAE1C,oCAAuC;AACvC,oBAA6B;AAatB,MAAM,YAAY,CAAC,EAAE,OAAO,QAAQ,gBAAgB,GAAG,WAAW,MAA8C;AACrH,QAAM,CAAC,QAAQ,SAAS,QAAI,uBAAkB,KAAK;AACnD,QAAM,yBAAqB,qBAA0B,IAAI;AAEzD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,eAAW,sDAAuB;AAKxC,QAAM,mBAAe,0BAAY,MAAM,mBAAmB,SAAS,MAAM,GAAG,CAAC,CAAC;AAE9E,QAAM,2BAAmD,0BAAY,CAAC,MAAM;AAC1E,QAAI,EAAE,SAAS,WAAW,EAAE,SAAS,WAAW,EAAE,SAAS,aAAa;AACtE,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,+BAA2B;AAAA,IAC/B,CAAC,MAA2B;AAC1B,UAAI,EAAE,QAAQ,UAAU;AACtB,kBAAU,KAAK;AACf,iBAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAAA,IACA,CAAC,cAAc,QAAQ;AAAA,EACzB;AAEA,QAAM,2BAAuB,0BAAY,MAAM;AAC7C,cAAU,KAAK;AAAA,EACjB,GAAG,CAAC,CAAC;AAEL,QAAM,oBAAyC;AAAA,IAC7C,CAAC,MAAM;AACL,gBAAU,IAAI;AACd,iBAAW,MAAM;AACf,YAAI,EAAE,WAAW,EAAG,YAAW,SAAS,gCAAgC;AAAA,YACnE,YAAW,SAAS,aAAa;AAAA,MACxC,GAAG,EAAE;AAAA,IACP;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAGA,QAAM,0BAA0B,CAAC,EAAE,IAAI,MACrC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,kBAAkB;AAAA,MAC3B,WAAW;AAAA,MACX,UAAU,CAAC,cAAiC;AAC1C,eAAO,SAAS;AAChB,wCAAU,oBAAoB,YAAY,GAAG,EAAE,SAAS;AAAA,MAC1D;AAAA,MACA,cAAY;AAAA,MACZ,eAAa,2CAA0B;AAAA,MACvC,iBAAa;AAAA,MACb,iBAAe,cAAc;AAAA,MAC5B,OAAG,6CAAoB,UAAU;AAAA,MAClC,MAAK;AAAA,MAEL,sDAAC,8BAAW,OAAO,OAAO,QAAQ,OAAO;AAAA;AAAA,EAC3C;AAGF,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,iBAAiB;AAAA,MAC5B;AAAA,MACA,gBAAgB,sBAAsB;AAAA,MACtC,eAAe,qBAAqB;AAAA,MACpC,QAAQ,cAAc;AAAA,MACtB;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/utils/useCallbackAfterRender.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { useRef, useLayoutEffect, useMemo, useEffect } from 'react';\n\ntype Callback = (callback: () => void) => void;\n\n// Inspired in https://github.com/ryuuji3/react-hooks/blob/4b183d61c30abf17efeab2240f8ff652a5dbb8e2/packages/use-callback-after-render/src/hooks/useCallbackAfterRender.ts\nexport const useCallbackAfterRender = (isLayout = false): Callback => {\n const lastRun = useRef<(() => void) | null>(null);\n\n const effect = useMemo(() => (isLayout ? useLayoutEffect : useEffect), [isLayout]);\n\n effect(() => {\n lastRun.current?.();\n lastRun.current = null;\n });\n\n return (callback) => {\n lastRun.current = callback; // schedule callback after render\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA4D;AAKrD,MAAM,yBAAyB,CAAC,WAAW,UAAoB;AACpE,QAAM,cAAU,qBAA4B,IAAI;AAEhD,QAAM,aAAS,sBAAQ,MAAO,WAAW,+BAAkB,wBAAY,CAAC,QAAQ,CAAC;AAEjF,SAAO,MAAM;AACX,YAAQ,UAAU;AAClB,YAAQ,UAAU;AAAA,EACpB,CAAC;AAED,SAAO,CAAC,aAAa;AACnB,YAAQ,UAAU;AAAA,EACpB;AACF;",
6
- "names": []
7
- }
@@ -1,30 +0,0 @@
1
- import * as React from "react";
2
- import React2, { useEffect } from "react";
3
- function useOnClickOutside(ref, cb) {
4
- const cbRef = React2.useRef(cb);
5
- useEffect(() => {
6
- cbRef.current = cb;
7
- }, [cb]);
8
- useEffect(() => {
9
- if (!ref) {
10
- return () => {
11
- };
12
- }
13
- const listener = (event) => {
14
- const target = event.target;
15
- if (!target) return;
16
- if (ref.contains(target)) return;
17
- cbRef.current(event);
18
- };
19
- document.addEventListener("mousedown", listener, true);
20
- document.addEventListener("touchstart", listener, true);
21
- return () => {
22
- document.removeEventListener("mousedown", listener, true);
23
- document.removeEventListener("touchstart", listener, true);
24
- };
25
- }, [ref]);
26
- }
27
- export {
28
- useOnClickOutside
29
- };
30
- //# sourceMappingURL=useOnClickOutside.js.map