@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
@@ -0,0 +1,28 @@
1
+ import * as React from "react";
2
+ import { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from "@elliemae/ds-props-helpers";
3
+ const defaultProps = {
4
+ ariaLabelExpanded: "Close search"
5
+ };
6
+ const SearchTogglePropTypes = {
7
+ ...globalAttributesPropTypes,
8
+ ...xstyledPropTypes,
9
+ label: PropTypes.string.description("Accessible name for the collapsed trigger, and the toolbar label").isRequired,
10
+ componentProps: PropTypes.object.description(
11
+ "The consumer-authored search configuration: value, result counters and the change/clear/navigation handlers"
12
+ ).isRequired,
13
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader: PropTypes.func.description(
14
+ "Returns the props passed to DSGlobalHeader, so getPartProps can look up this slot consumer-supplied props. Must come from DSGlobalHeader; the function-form hydrator is supplied per slot render site instead"
15
+ ).signature("(() => Partial<DSGlobalHeaderT.DefaultProps> )").isRequired,
16
+ setRef: PropTypes.func.description("Registers the trigger node with the toolbar focus management for arrow-key navigation").signature("(( ref: HTMLButtonElement | null ) => void )").isRequired,
17
+ instanceUID: PropTypes.string.description(
18
+ "Namespaces the input and panel DOM ids so multiple headers on a page do not collide on aria-controls"
19
+ ).isRequired,
20
+ ariaLabelExpanded: PropTypes.string.description("Accessible name for the trigger once expanded (PUI-17852)").defaultValue("Close search")
21
+ };
22
+ const SearchTogglePropTypesSchema = SearchTogglePropTypes;
23
+ export {
24
+ SearchTogglePropTypes,
25
+ SearchTogglePropTypesSchema,
26
+ defaultProps
27
+ };
28
+ //# sourceMappingURL=react-desc-prop-types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/parts/Toolbar/outOfTheBox/SearchToggle/react-desc-prop-types.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';\nimport { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from '@elliemae/ds-props-helpers';\nimport type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';\n\n/*\n * Relocated here from DSGlobalHeaderT.SearchToggleProps, per the convention every other part in the repo\n * follows. Consumed by SearchToggle.tsx, useSearchToggle.tsx and SearchToggleSpinButton.tsx.\n *\n * This namespace describes what DSGlobalHeader passes DOWN to its own out-of-the-box Search Toggle.\n * It is NOT the shape an application developer authors \u2014 that is\n * DSGlobalHeaderT.ToolbarSearchToggleItem and, inside it, DSGlobalHeaderT.ToggleSearchComponentProps.\n * The two old names are the sharpest illustration of the problem this relocation solves:\n * `SearchToggleProps` (internal) and `ToggleSearchComponentProps` (consumer-authored) are near-anagrams\n * of each other, adjacent in the same public namespace, with opposite audiences.\n *\n * All three IoC layers present and wired, as on the siblings:\n * 1. item-level global attributes, forwarded onto this part's ROOT container\n * 2. the slot layer, via `getOwnerPropsAwareOfPropsPassedToGlobalHeader`\n * 3. `componentProps`, the search configuration's own contract\n *\n * Two things about layer 1 that differ from the siblings and are worth knowing when writing selectors:\n * the attributes land on the container rather than the trigger button, because the container is what\n * this item type renders as and the trigger is a DSButtonV3 whose own props collide with the HTML global\n * set (`shape` is ButtonShapesT there and the <area> attribute in GlobalAttributesT); and they are spread\n * BEFORE the internal props rather than after, so `onKeyDown` (Escape-collapses) and `innerRef` (the\n * consumer's searchContainerRef) cannot be clobbered. Both are stated at the spread site in\n * SearchToggle.tsx. Until PUI-18647 this layer was declared here and forwarded nowhere, so `data-public`\n * on a 'ds-search-toggle' item never reached the DOM at all; that is fixed and covered by\n * GlobalHeader.SearchToggle.pui-18647.test.js.\n *\n * No slots of its own \u2014 see the AppPicker sibling file for why.\n */\nexport declare namespace SearchToggleT {\n export interface RequiredProps {\n /** Accessible name for the collapsed trigger, and the toolbar item's label. */\n label: string;\n /** The consumer-authored configuration object for this toolbar item. */\n componentProps: DSGlobalHeaderT.ToggleSearchComponentProps;\n /*\n * The slot lookup table, and the only half of the slot IoC layer that may be drilled down \u2014 the\n * function-form hydrator is supplied per slot render site instead. See the AppPicker sibling for the\n * full reasoning and the getPartProps mechanics behind the name.\n */\n getOwnerPropsAwareOfPropsPassedToGlobalHeader: () => Partial<DSGlobalHeaderT.DefaultProps>;\n /** Focus-management registration, supplied by useGlobalHeaderToolbar for arrow-key navigation. */\n setRef: (ref: HTMLButtonElement | null) => void;\n /*\n * Namespaces the input and panel DOM ids so multiple headers on one page cannot collide on the\n * aria-controls relationship. Typed here rather than aliased from the parent's Context: this part\n * only needs \"an id-safe string\", and coupling it to the parent's shape would tie the two together\n * for no benefit.\n */\n instanceUID: string;\n }\n\n export interface DefaultProps {\n /*\n * Accessible name for the trigger once expanded. Defaults to the pre-PUI-17852 hardcoded string for\n * backward compatibility; authors are encouraged to supply context-specific text.\n */\n ariaLabelExpanded: string;\n }\n\n export interface OptionalProps {}\n\n export interface Props\n extends\n Partial<DefaultProps>,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLElement>, keyof RequiredProps | keyof DefaultProps | keyof XstyledProps>,\n XstyledProps,\n RequiredProps {}\n\n export interface InternalProps\n extends\n DefaultProps,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLElement>, keyof RequiredProps | keyof DefaultProps | keyof XstyledProps>,\n XstyledProps,\n RequiredProps {}\n}\n\n// Part-level defaultProps, per the part generator's shape. Consumed by SearchToggle.tsx so the\n// documented default and the runtime default cannot drift. The name intentionally matches the package's\n// own `defaultProps`; fallow's duplicate-export grouping for that convention is handled once in\n// fallow.internals.jsonc rather than suppressed per file.\nexport const defaultProps: SearchToggleT.DefaultProps = {\n ariaLabelExpanded: 'Close search',\n};\n\nexport const SearchTogglePropTypes: DSPropTypesSchema<SearchToggleT.Props> = {\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n label: PropTypes.string.description('Accessible name for the collapsed trigger, and the toolbar label').isRequired,\n componentProps: PropTypes.object.description(\n 'The consumer-authored search configuration: value, result counters and the change/clear/navigation handlers',\n ).isRequired,\n getOwnerPropsAwareOfPropsPassedToGlobalHeader: PropTypes.func\n .description(\n 'Returns the props passed to DSGlobalHeader, so getPartProps can look up this slot consumer-supplied props. Must come from DSGlobalHeader; the function-form hydrator is supplied per slot render site instead',\n )\n .signature('(() => Partial<DSGlobalHeaderT.DefaultProps> )').isRequired,\n setRef: PropTypes.func\n .description('Registers the trigger node with the toolbar focus management for arrow-key navigation')\n .signature('(( ref: HTMLButtonElement | null ) => void )').isRequired,\n instanceUID: PropTypes.string.description(\n 'Namespaces the input and panel DOM ids so multiple headers on a page do not collide on aria-controls',\n ).isRequired,\n ariaLabelExpanded: PropTypes.string\n .description('Accessible name for the trigger once expanded (PUI-17852)')\n .defaultValue('Close search'),\n};\n\nexport const SearchTogglePropTypesSchema = SearchTogglePropTypes as unknown as ValidationMap<SearchToggleT.Props>;\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,WAAW,2BAA2B,wBAAwB;AAqFhE,MAAM,eAA2C;AAAA,EACtD,mBAAmB;AACrB;AAEO,MAAM,wBAAgE;AAAA,EAC3E,GAAG;AAAA,EACH,GAAG;AAAA,EACH,OAAO,UAAU,OAAO,YAAY,kEAAkE,EAAE;AAAA,EACxG,gBAAgB,UAAU,OAAO;AAAA,IAC/B;AAAA,EACF,EAAE;AAAA,EACF,+CAA+C,UAAU,KACtD;AAAA,IACC;AAAA,EACF,EACC,UAAU,gDAAgD,EAAE;AAAA,EAC/D,QAAQ,UAAU,KACf,YAAY,uFAAuF,EACnG,UAAU,8CAA8C,EAAE;AAAA,EAC7D,aAAa,UAAU,OAAO;AAAA,IAC5B;AAAA,EACF,EAAE;AAAA,EACF,mBAAmB,UAAU,OAC1B,YAAY,2DAA2D,EACvE,aAAa,cAAc;AAChC;AAEO,MAAM,8BAA8B;",
6
+ "names": []
7
+ }
@@ -3,38 +3,57 @@ import { mergeRefs } from "@elliemae/ds-system";
3
3
  import React2 from "react";
4
4
  const useSearchToggle = (outOfTheBoxDrilledDownProps) => {
5
5
  const { setRef, componentProps, instanceUID } = outOfTheBoxDrilledDownProps;
6
- const { onChange, onClear, isOpen: userIsOpen, onKeyDown, onClick, triggerRef } = componentProps;
6
+ const {
7
+ onChange,
8
+ onClear,
9
+ isOpen: userIsOpen,
10
+ onKeyDown,
11
+ onClick,
12
+ triggerRef,
13
+ onExpand,
14
+ onCollapse
15
+ } = componentProps;
7
16
  const [isOpenUncontrolled, setIsOpenUncontrolled] = React2.useState(false);
8
17
  const internalInputRef = React2.useRef(null);
9
18
  const containerRef = React2.useRef(null);
10
19
  const internalTriggerRef = React2.useRef(null);
11
20
  const isControlled = userIsOpen !== void 0;
12
21
  const isOpen = userIsOpen ?? isOpenUncontrolled;
13
- const openUncontrolled = React2.useCallback(() => {
14
- if (!isControlled) setIsOpenUncontrolled(true);
15
- }, [isControlled]);
16
- const closeUncontrolled = React2.useCallback(() => {
17
- if (!isControlled) setIsOpenUncontrolled(false);
18
- internalTriggerRef.current?.focus();
19
- onClear();
20
- }, [isControlled, onClear]);
22
+ const expand = React2.useCallback(
23
+ (info) => {
24
+ if (!isControlled) setIsOpenUncontrolled(true);
25
+ onExpand?.(info);
26
+ },
27
+ [isControlled, onExpand]
28
+ );
29
+ const collapse = React2.useCallback(
30
+ (info) => {
31
+ if (!isControlled) {
32
+ setIsOpenUncontrolled(false);
33
+ internalTriggerRef.current?.focus();
34
+ onClear();
35
+ }
36
+ onCollapse?.(info);
37
+ },
38
+ [isControlled, onClear, onCollapse]
39
+ );
21
40
  const handleToggleSearch = React2.useCallback(
22
41
  (e) => {
23
42
  if (isOpen) {
24
- closeUncontrolled();
43
+ collapse({ reason: "trigger", event: e });
25
44
  } else {
26
- openUncontrolled();
45
+ expand({ reason: "trigger", event: e });
27
46
  }
28
47
  onClick?.(e);
29
48
  },
30
- [closeUncontrolled, isOpen, onClick, openUncontrolled]
49
+ [collapse, expand, isOpen, onClick]
31
50
  );
32
51
  const handleContainerKeyDown = React2.useCallback(
33
52
  (e) => {
34
- if (!isControlled && e.key === "Escape" && isOpen) closeUncontrolled();
53
+ if (e.key === "Escape" && isOpen) collapse({ reason: "escape", event: e });
35
54
  onKeyDown?.(e);
36
55
  },
37
- [closeUncontrolled, isControlled, isOpen, onKeyDown]
56
+ [collapse, isOpen, onKeyDown]
38
57
  );
39
58
  const handleChange = React2.useCallback(
40
59
  (e) => {
@@ -42,15 +61,6 @@ const useSearchToggle = (outOfTheBoxDrilledDownProps) => {
42
61
  },
43
62
  [onChange]
44
63
  );
45
- const handleInputKeyDown = React2.useCallback(
46
- (e) => {
47
- if (e.key === "Escape") {
48
- onClear();
49
- closeUncontrolled();
50
- }
51
- },
52
- [onClear, closeUncontrolled]
53
- );
54
64
  const handleTriggerRefs = React2.useCallback(
55
65
  (buttonRef) => {
56
66
  mergeRefs(triggerRef, internalTriggerRef)(buttonRef);
@@ -68,7 +78,6 @@ const useSearchToggle = (outOfTheBoxDrilledDownProps) => {
68
78
  handleToggleSearch,
69
79
  handleContainerKeyDown,
70
80
  handleChange,
71
- handleInputKeyDown,
72
81
  handleTriggerRefs,
73
82
  inputId,
74
83
  panelId
@@ -79,7 +88,6 @@ const useSearchToggle = (outOfTheBoxDrilledDownProps) => {
79
88
  handleToggleSearch,
80
89
  handleContainerKeyDown,
81
90
  handleChange,
82
- handleInputKeyDown,
83
91
  handleTriggerRefs,
84
92
  inputId,
85
93
  panelId
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/parts/Toolbar/outOfTheBox/SearchToggle/useSearchToggle.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { mergeRefs } from '@elliemae/ds-system';\nimport React from 'react';\nimport type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';\n\nexport const useSearchToggle = (outOfTheBoxDrilledDownProps: DSGlobalHeaderT.SearchToggleProps) => {\n const { setRef, componentProps, instanceUID } = outOfTheBoxDrilledDownProps;\n const { onChange, onClear, isOpen: userIsOpen, onKeyDown, onClick, triggerRef } = componentProps;\n\n const [isOpenUncontrolled, setIsOpenUncontrolled] = React.useState<boolean>(false);\n const internalInputRef = React.useRef<HTMLInputElement | null>(null);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const internalTriggerRef = React.useRef<HTMLButtonElement | null>(null);\n\n const isControlled = userIsOpen !== undefined;\n const isOpen = userIsOpen ?? isOpenUncontrolled;\n\n const openUncontrolled = React.useCallback(() => {\n if (!isControlled) setIsOpenUncontrolled(true);\n }, [isControlled]);\n\n const closeUncontrolled = React.useCallback(() => {\n if (!isControlled) setIsOpenUncontrolled(false);\n internalTriggerRef.current?.focus();\n onClear();\n }, [isControlled, onClear]);\n\n const handleToggleSearch = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.KeyboardEvent<HTMLButtonElement>) => {\n if (isOpen) {\n closeUncontrolled();\n } else {\n openUncontrolled();\n }\n\n onClick?.(e as React.MouseEvent<HTMLButtonElement, MouseEvent>);\n },\n [closeUncontrolled, isOpen, onClick, openUncontrolled],\n );\n\n const handleContainerKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (e) => {\n if (!isControlled && e.key === 'Escape' && isOpen) closeUncontrolled();\n onKeyDown?.(e);\n },\n [closeUncontrolled, isControlled, isOpen, onKeyDown],\n );\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n (e) => {\n onChange?.(e.target.value);\n },\n [onChange],\n );\n\n const handleInputKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLInputElement>>(\n (e) => {\n if (e.key === 'Escape') {\n onClear();\n closeUncontrolled();\n }\n },\n [onClear, closeUncontrolled],\n );\n\n const handleTriggerRefs = React.useCallback(\n (buttonRef: HTMLButtonElement) => {\n mergeRefs(triggerRef, internalTriggerRef)(buttonRef);\n setRef(buttonRef); // this is used for left/arrow navigation in the region.\n },\n [setRef, triggerRef],\n );\n\n const inputId = `${instanceUID}-nav-searchbox-input`;\n const panelId = `${instanceUID}-nav-searchbox-panel`;\n return React.useMemo(\n () => ({\n isOpenUncontrolled,\n internalInputRef,\n containerRef,\n handleToggleSearch,\n handleContainerKeyDown,\n handleChange,\n handleInputKeyDown,\n handleTriggerRefs,\n inputId,\n panelId,\n }),\n [\n isOpenUncontrolled,\n containerRef,\n handleToggleSearch,\n handleContainerKeyDown,\n handleChange,\n handleInputKeyDown,\n handleTriggerRefs,\n inputId,\n panelId,\n ],\n );\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,iBAAiB;AAC1B,OAAOA,YAAW;AAGX,MAAM,kBAAkB,CAAC,gCAAmE;AACjG,QAAM,EAAE,QAAQ,gBAAgB,YAAY,IAAI;AAChD,QAAM,EAAE,UAAU,SAAS,QAAQ,YAAY,WAAW,SAAS,WAAW,IAAI;AAElF,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,OAAM,SAAkB,KAAK;AACjF,QAAM,mBAAmBA,OAAM,OAAgC,IAAI;AACnE,QAAM,eAAeA,OAAM,OAA8B,IAAI;AAC7D,QAAM,qBAAqBA,OAAM,OAAiC,IAAI;AAEtE,QAAM,eAAe,eAAe;AACpC,QAAM,SAAS,cAAc;AAE7B,QAAM,mBAAmBA,OAAM,YAAY,MAAM;AAC/C,QAAI,CAAC,aAAc,uBAAsB,IAAI;AAAA,EAC/C,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,oBAAoBA,OAAM,YAAY,MAAM;AAChD,QAAI,CAAC,aAAc,uBAAsB,KAAK;AAC9C,uBAAmB,SAAS,MAAM;AAClC,YAAQ;AAAA,EACV,GAAG,CAAC,cAAc,OAAO,CAAC;AAE1B,QAAM,qBAAqBA,OAAM;AAAA,IAC/B,CAAC,MAAgG;AAC/F,UAAI,QAAQ;AACV,0BAAkB;AAAA,MACpB,OAAO;AACL,yBAAiB;AAAA,MACnB;AAEA,gBAAU,CAAoD;AAAA,IAChE;AAAA,IACA,CAAC,mBAAmB,QAAQ,SAAS,gBAAgB;AAAA,EACvD;AAEA,QAAM,yBAAyBA,OAAM;AAAA,IACnC,CAAC,MAAM;AACL,UAAI,CAAC,gBAAgB,EAAE,QAAQ,YAAY,OAAQ,mBAAkB;AACrE,kBAAY,CAAC;AAAA,IACf;AAAA,IACA,CAAC,mBAAmB,cAAc,QAAQ,SAAS;AAAA,EACrD;AAEA,QAAM,eAAeA,OAAM;AAAA,IACzB,CAAC,MAAM;AACL,iBAAW,EAAE,OAAO,KAAK;AAAA,IAC3B;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,qBAAqBA,OAAM;AAAA,IAC/B,CAAC,MAAM;AACL,UAAI,EAAE,QAAQ,UAAU;AACtB,gBAAQ;AACR,0BAAkB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,CAAC,SAAS,iBAAiB;AAAA,EAC7B;AAEA,QAAM,oBAAoBA,OAAM;AAAA,IAC9B,CAAC,cAAiC;AAChC,gBAAU,YAAY,kBAAkB,EAAE,SAAS;AACnD,aAAO,SAAS;AAAA,IAClB;AAAA,IACA,CAAC,QAAQ,UAAU;AAAA,EACrB;AAEA,QAAM,UAAU,GAAG,WAAW;AAC9B,QAAM,UAAU,GAAG,WAAW;AAC9B,SAAOA,OAAM;AAAA,IACX,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { mergeRefs } from '@elliemae/ds-system';\nimport React from 'react';\nimport type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';\nimport type { SearchToggleT } from './react-desc-prop-types.js';\n\nexport const useSearchToggle = (outOfTheBoxDrilledDownProps: SearchToggleT.Props) => {\n const { setRef, componentProps, instanceUID } = outOfTheBoxDrilledDownProps;\n const {\n onChange,\n onClear,\n isOpen: userIsOpen,\n onKeyDown,\n onClick,\n triggerRef,\n onExpand,\n onCollapse,\n } = componentProps;\n\n const [isOpenUncontrolled, setIsOpenUncontrolled] = React.useState<boolean>(false);\n const internalInputRef = React.useRef<HTMLInputElement | null>(null);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const internalTriggerRef = React.useRef<HTMLButtonElement | null>(null);\n\n const isControlled = userIsOpen !== undefined;\n const isOpen = userIsOpen ?? isOpenUncontrolled;\n\n /*\n * The notification fires for BOTH modes \u2014 that is the point of a passive signal \u2014 while everything that\n * ACTS on the transition stays behind `!isControlled`.\n *\n * That gate covers the focus return and the clear, not just the state flip. For a controlled consumer\n * the flip is inert, so their region can stay expanded; moving focus to the trigger and wiping their\n * search value at that moment would be acting on a transition that did not happen. They own the\n * collapse, so they own the refocus and the clear \u2014 `onCollapse` is where they hook both.\n */\n const expand = React.useCallback(\n (info: DSGlobalHeaderT.SearchToggleExpandChange) => {\n if (!isControlled) setIsOpenUncontrolled(true);\n onExpand?.(info);\n },\n [isControlled, onExpand],\n );\n\n const collapse = React.useCallback(\n (info: DSGlobalHeaderT.SearchToggleExpandChange) => {\n if (!isControlled) {\n setIsOpenUncontrolled(false);\n internalTriggerRef.current?.focus();\n onClear();\n }\n onCollapse?.(info);\n },\n [isControlled, onClear, onCollapse],\n );\n\n const handleToggleSearch = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.KeyboardEvent<HTMLButtonElement>) => {\n if (isOpen) {\n collapse({ reason: 'trigger', event: e });\n } else {\n expand({ reason: 'trigger', event: e });\n }\n\n onClick?.(e as React.MouseEvent<HTMLButtonElement, MouseEvent>);\n },\n [collapse, expand, isOpen, onClick],\n );\n\n /*\n * The ONE Escape handler for this item. It sits on the container, so it also catches an Escape typed\n * in the search input by bubbling \u2014 the input deliberately has no handler of its own. Two handlers\n * meant every input Escape collapsed twice, and now would notify twice as well.\n */\n const handleContainerKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (e) => {\n // No `!isControlled` here any more: `collapse` gates the acting half itself, and a controlled\n // consumer should still be TOLD that Escape asked for a collapse.\n if (e.key === 'Escape' && isOpen) collapse({ reason: 'escape', event: e });\n onKeyDown?.(e);\n },\n [collapse, isOpen, onKeyDown],\n );\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n (e) => {\n onChange?.(e.target.value);\n },\n [onChange],\n );\n\n const handleTriggerRefs = React.useCallback(\n (buttonRef: HTMLButtonElement) => {\n mergeRefs(triggerRef, internalTriggerRef)(buttonRef);\n setRef(buttonRef); // this is used for left/arrow navigation in the region.\n },\n [setRef, triggerRef],\n );\n\n const inputId = `${instanceUID}-nav-searchbox-input`;\n const panelId = `${instanceUID}-nav-searchbox-panel`;\n return React.useMemo(\n () => ({\n isOpenUncontrolled,\n internalInputRef,\n containerRef,\n handleToggleSearch,\n handleContainerKeyDown,\n handleChange,\n handleTriggerRefs,\n inputId,\n panelId,\n }),\n [\n isOpenUncontrolled,\n containerRef,\n handleToggleSearch,\n handleContainerKeyDown,\n handleChange,\n handleTriggerRefs,\n inputId,\n panelId,\n ],\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,iBAAiB;AAC1B,OAAOA,YAAW;AAIX,MAAM,kBAAkB,CAAC,gCAAqD;AACnF,QAAM,EAAE,QAAQ,gBAAgB,YAAY,IAAI;AAChD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA,OAAM,SAAkB,KAAK;AACjF,QAAM,mBAAmBA,OAAM,OAAgC,IAAI;AACnE,QAAM,eAAeA,OAAM,OAA8B,IAAI;AAC7D,QAAM,qBAAqBA,OAAM,OAAiC,IAAI;AAEtE,QAAM,eAAe,eAAe;AACpC,QAAM,SAAS,cAAc;AAW7B,QAAM,SAASA,OAAM;AAAA,IACnB,CAAC,SAAmD;AAClD,UAAI,CAAC,aAAc,uBAAsB,IAAI;AAC7C,iBAAW,IAAI;AAAA,IACjB;AAAA,IACA,CAAC,cAAc,QAAQ;AAAA,EACzB;AAEA,QAAM,WAAWA,OAAM;AAAA,IACrB,CAAC,SAAmD;AAClD,UAAI,CAAC,cAAc;AACjB,8BAAsB,KAAK;AAC3B,2BAAmB,SAAS,MAAM;AAClC,gBAAQ;AAAA,MACV;AACA,mBAAa,IAAI;AAAA,IACnB;AAAA,IACA,CAAC,cAAc,SAAS,UAAU;AAAA,EACpC;AAEA,QAAM,qBAAqBA,OAAM;AAAA,IAC/B,CAAC,MAAgG;AAC/F,UAAI,QAAQ;AACV,iBAAS,EAAE,QAAQ,WAAW,OAAO,EAAE,CAAC;AAAA,MAC1C,OAAO;AACL,eAAO,EAAE,QAAQ,WAAW,OAAO,EAAE,CAAC;AAAA,MACxC;AAEA,gBAAU,CAAoD;AAAA,IAChE;AAAA,IACA,CAAC,UAAU,QAAQ,QAAQ,OAAO;AAAA,EACpC;AAOA,QAAM,yBAAyBA,OAAM;AAAA,IACnC,CAAC,MAAM;AAGL,UAAI,EAAE,QAAQ,YAAY,OAAQ,UAAS,EAAE,QAAQ,UAAU,OAAO,EAAE,CAAC;AACzE,kBAAY,CAAC;AAAA,IACf;AAAA,IACA,CAAC,UAAU,QAAQ,SAAS;AAAA,EAC9B;AAEA,QAAM,eAAeA,OAAM;AAAA,IACzB,CAAC,MAAM;AACL,iBAAW,EAAE,OAAO,KAAK;AAAA,IAC3B;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,oBAAoBA,OAAM;AAAA,IAC9B,CAAC,cAAiC;AAChC,gBAAU,YAAY,kBAAkB,EAAE,SAAS;AACnD,aAAO,SAAS;AAAA,IAClB;AAAA,IACA,CAAC,QAAQ,UAAU;AAAA,EACrB;AAEA,QAAM,UAAU,GAAG,WAAW;AAC9B,QAAM,UAAU,GAAG,WAAW;AAC9B,SAAOA,OAAM;AAAA,IACX,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": ["React"]
7
7
  }
@@ -1,5 +1,10 @@
1
1
  import * as React from "react";
2
- export * from "./AppPicker/AppPicker.js";
3
- export * from "./PopupMenu/PopupMenu.js";
4
- export * from "./SearchToggle/SearchToggle.js";
2
+ import { AppPickerCTXRenderer } from "./AppPicker/AppPickerCTXRenderer.js";
3
+ import { PopupMenu } from "./PopupMenu/PopupMenu.js";
4
+ import { SearchToggle } from "./SearchToggle/SearchToggle.js";
5
+ export {
6
+ AppPickerCTXRenderer,
7
+ PopupMenu,
8
+ SearchToggle
9
+ };
5
10
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/Toolbar/outOfTheBox/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './AppPicker/AppPicker.js';\nexport * from './PopupMenu/PopupMenu.js';\nexport * from './SearchToggle/SearchToggle.js';\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { AppPickerCTXRenderer } from './AppPicker/AppPickerCTXRenderer.js';\nexport { PopupMenu } from './PopupMenu/PopupMenu.js';\nexport { SearchToggle } from './SearchToggle/SearchToggle.js';\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,4BAA4B;AACrC,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
- import { styled } from "@elliemae/ds-system";
3
2
  import { Grid } from "@elliemae/ds-grid";
3
+ import { styled } from "@elliemae/ds-system";
4
4
  import { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from "../../constants/index.js";
5
5
  const StyledMenubarContainer = styled("div", {
6
6
  name: DSGlobalHeaderName,
@@ -13,9 +13,14 @@ const StyledList = styled(Grid, { name: DSGlobalHeaderName, slot: GLOBAL_HEADER_
13
13
  margin: 0;
14
14
  `;
15
15
  const StyledToolbarItem = styled("div", { name: DSGlobalHeaderName, slot: GLOBAL_HEADER_SLOTS.MENUBAR_ITEM })``;
16
+ const StyledPopupMenuContainer = styled(Grid, {
17
+ name: DSGlobalHeaderName,
18
+ slot: GLOBAL_HEADER_SLOTS.MENUBAR_ITEM_POPUPMENU_CONTAINER
19
+ })``;
16
20
  export {
17
21
  StyledList,
18
22
  StyledMenubarContainer,
23
+ StyledPopupMenuContainer,
19
24
  StyledToolbarItem
20
25
  };
21
26
  //# sourceMappingURL=styles.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/Toolbar/styles.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { styled } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from '../../constants/index.js';\n\nexport const StyledMenubarContainer = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.MENUBAR_CONTAINER,\n})<{ withSpan: boolean }>`\n ${({ withSpan, theme }) => (withSpan && !theme.layoutMode ? 'grid-column: span 2;' : '')}\n`;\n\nexport const StyledList = styled(Grid, { name: DSGlobalHeaderName, slot: GLOBAL_HEADER_SLOTS.MENUBAR_LIST })`\n padding: 0;\n margin: 0;\n`;\n\nexport const StyledToolbarItem = styled('div', { name: DSGlobalHeaderName, slot: GLOBAL_HEADER_SLOTS.MENUBAR_ITEM })``;\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,oBAAoB,2BAA2B;AAEjD,MAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD,MAAM;AAAA,EACN,MAAM,oBAAoB;AAC5B,CAAC;AAAA,IACG,CAAC,EAAE,UAAU,MAAM,MAAO,YAAY,CAAC,MAAM,aAAa,yBAAyB,EAAG;AAAA;AAGnF,MAAM,aAAa,OAAO,MAAM,EAAE,MAAM,oBAAoB,MAAM,oBAAoB,aAAa,CAAC;AAAA;AAAA;AAAA;AAKpG,MAAM,oBAAoB,OAAO,OAAO,EAAE,MAAM,oBAAoB,MAAM,oBAAoB,aAAa,CAAC;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { Grid } from '@elliemae/ds-grid';\nimport { styled } from '@elliemae/ds-system';\nimport { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from '../../constants/index.js';\n\nexport const StyledMenubarContainer = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.MENUBAR_CONTAINER,\n})<{ withSpan: boolean }>`\n ${({ withSpan, theme }) => (withSpan && !theme.layoutMode ? 'grid-column: span 2;' : '')}\n`;\n\nexport const StyledList = styled(Grid, { name: DSGlobalHeaderName, slot: GLOBAL_HEADER_SLOTS.MENUBAR_LIST })`\n padding: 0;\n margin: 0;\n`;\n\nexport const StyledToolbarItem = styled('div', { name: DSGlobalHeaderName, slot: GLOBAL_HEADER_SLOTS.MENUBAR_ITEM })``;\n\n// PUI-18647 \u2014 the popup menu item's own root. It was a bare unstyled `<div>`, which left this\n// out-of-the-box type without a root injection point: no slot for consumers to target, no data-testid,\n// and no styled element to forward xstyled props to. A Grid rather than a plain div so it participates in\n// the same layout vocabulary as its siblings; no styles of its own, so replacing the div changes nothing\n// visually \u2014 a `<div>` and an unstyled `display: block` Grid lay out identically here.\nexport const StyledPopupMenuContainer = styled(Grid, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.MENUBAR_ITEM_POPUPMENU_CONTAINER,\n})``;\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,oBAAoB,2BAA2B;AAEjD,MAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD,MAAM;AAAA,EACN,MAAM,oBAAoB;AAC5B,CAAC;AAAA,IACG,CAAC,EAAE,UAAU,MAAM,MAAO,YAAY,CAAC,MAAM,aAAa,yBAAyB,EAAG;AAAA;AAGnF,MAAM,aAAa,OAAO,MAAM,EAAE,MAAM,oBAAoB,MAAM,oBAAoB,aAAa,CAAC;AAAA;AAAA;AAAA;AAKpG,MAAM,oBAAoB,OAAO,OAAO,EAAE,MAAM,oBAAoB,MAAM,oBAAoB,aAAa,CAAC;AAO5G,MAAM,2BAA2B,OAAO,MAAM;AAAA,EACnD,MAAM;AAAA,EACN,MAAM,oBAAoB;AAC5B,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/react-desc-prop-types.ts"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport type { DSAppPicker } from '@elliemae/ds-app-picker';\nimport type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';\nimport {\n PropTypes,\n globalAttributesPropTypes,\n getPropsPerSlotPropTypes,\n xstyledPropTypes,\n} from '@elliemae/ds-props-helpers';\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport type React from 'react';\nimport { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from './constants/index.js';\n\nconst noop = () => null;\n\nexport const defaultProps = {\n breadcrumb: [],\n toolbar: [],\n LogoWithBrand: noop,\n Logo: noop,\n};\n\nexport declare namespace DSGlobalHeaderT {\n export interface Context {\n showIconOnly: boolean;\n fontDetector: number;\n setShowIconOnly: React.Dispatch<React.SetStateAction<boolean>>;\n instanceUID: string;\n globalHeaderToolbarGrid: string[];\n props: InternalProps;\n ownerProps: {\n getOwnerProps: () => Partial<DSGlobalHeaderT.DefaultProps>;\n getOwnerPropsArguments: () => object;\n };\n }\n /* *************************************************************************************\n \"Breadcrumb widget\" configuration types\n ****************************************************************************************\n The breadcrumb items ARE SPREADING GLOBAL PROPS!!!\n + The breadcrumb items have a logic that force the onClick to be invoked on spacebar/enter too\n forcing it even if not the standard browser behaviour as per our buttons too\n ************************************************************************************** */\n export interface BreadcrumbItemOptionals {\n hasNext?: boolean;\n isSelected?: boolean;\n onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n }\n export interface BreadcrumbItemRequired {\n label: string;\n }\n export interface BreadcrumbItemOptionalsGlobals\n extends Omit<GlobalAttributesT, keyof BreadcrumbItemOptionals | keyof BreadcrumbItemRequired> {}\n\n export interface BreadcrumbItem\n extends BreadcrumbItemRequired,\n BreadcrumbItemOptionals,\n BreadcrumbItemOptionalsGlobals {}\n /* *************************************************************************************\n \"Toolbar widget\" configuration types\n ****************************************************************************************\n The toolbar item can be mainly of 4 different types\n - app-picker \n more or less map to ds-app-picker interface\n - popup-menu\n should more less map to dropdownmenu-v2 but should be changed to menu-button when possible\n - search-toggle\n a custom ad hoc implementation that expands in place and expose an input text,\n kinda problematic and force-added due to unrestrained \"yes man\" attitude with PM/PO\n we will be suggesting against using it officially in the later releases and try to find a better solution.\n - custom\n a way to allow app to provide their own render props along other pre-configured widgets out of the box\n ************************************************************************************** */\n\n /* *************************************************************************************\n toolbar -> type === 'custom'\n ************************************************************************************** */\n export interface ToolbarCustomComponentProps {\n item: Record<string, unknown> & {\n type: 'custom';\n CustomComponent: React.ComponentType<ToolbarCustomComponentProps>;\n };\n setRef: (ref: HTMLElement | null) => void;\n }\n export interface ToolbarCustomItem extends Record<string, unknown> {\n type: 'custom';\n label: string;\n CustomComponent: React.ComponentType<ToolbarCustomComponentProps>;\n }\n /* *************************************************************************************\n toolbar -> type === 'ds-search-toggle'\n ************************************************************************************** */\n // this props are actually required for the out-of-the-box to actually do what it needs to do\n // it's meant to be provided from the application, so this is kind of a weird way to do controlled components\n export interface ToggleSearchComponentProps {\n onNext: () => void;\n onPrevious: () => void;\n currentResultIndex: number;\n totalResults: number;\n placeholder: string;\n value: string;\n onChange: (value: string) => void;\n onBlur?: () => void;\n onClear: () => void;\n isOpen: boolean;\n onKeyDown: (event: React.KeyboardEvent) => void;\n onClick: (event: React.MouseEvent) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement>;\n searchContainerRef: React.MutableRefObject<HTMLDivElement>;\n }\n // WE ARE SPREADING GLOBAL PROPS!!!\n export interface SearchToggleProps extends GlobalAttributesT {\n setRef: (ref: HTMLButtonElement | null) => void;\n label: string;\n componentProps: ToggleSearchComponentProps;\n // https://jira.elliemae.io/browse/PUI-17852\n // - Generic aria-labels\n // -> allows users to specify a custom aria-label when the search toggle is expanded\n // -> it's an incremental change, so its \"optional\", we fall back to the previous hardcoded \"Close search\" if not provided\n // but authors are encouraged to improve the Aria-label with context-specific information when possible, to improve the overall accessibility of the component.\n ariaLabelExpanded?: string;\n // aria-controls needs to point to a DOM id, we need to make sure there are no conflicts in case of multiple search toggles on the same page\n instanceUID: Context['instanceUID'];\n }\n export interface ToolbarSearchToggleItem {\n type: 'ds-search-toggle';\n label: string;\n componentProps: ToggleSearchComponentProps;\n }\n /* *************************************************************************************\n toolbar -> type === 'ds-popup-menu'\n ************************************************************************************** */\n\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface PopupMenuContentItem extends Omit<GlobalAttributesT, 'type' | 'label' | 'onClick'> {\n type?: 'separator' | 'custom';\n Icon?: React.ComponentType<{ fill?: string; size?: string }>;\n label?: string;\n onClick?: (event: React.MouseEvent) => void;\n closeOnClick?: boolean;\n Content?: React.ComponentType;\n }\n export interface PopupMenuComponentProps {\n onClickOutside?: (e: MouseEvent | TouchEvent) => void;\n onKeyPress: (event: React.KeyboardEvent) => void;\n popupOnKeyPress: (event: React.KeyboardEvent) => void;\n isOpen: boolean;\n options: PopupMenuContentItem[];\n closeOnClick: boolean;\n }\n // this is the only type that was pre-existing (even if differently defined)\n // and that's why it doesn't include Toolbar at the start\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface PopupMenuItem extends Omit<GlobalAttributesT, 'type' | 'label' | 'onClick'> {\n type: 'ds-popup-menu';\n Icon?: React.ComponentType<{ fill?: string; size?: string }>;\n label?: string;\n onClick?: (event: React.MouseEvent) => void;\n Content?: React.ComponentType;\n componentProps: PopupMenuComponentProps;\n }\n\n export interface PopupMenuContentProps {\n options: PopupMenuContentItem[];\n onItemClick: () => void;\n onClose: () => void;\n popupOnKeyPress: (event: React.KeyboardEvent) => void;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n ownerProps: {\n getOwnerProps: () => Partial<DSGlobalHeaderT.DefaultProps>;\n getOwnerPropsArguments: () => object;\n };\n }\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface PopupProps extends Omit<GlobalAttributesT, 'title' | 'label' | 'onClick'> {\n Icon?: React.ComponentType<{ fill?: string; size?: string }>;\n onClick?: (event: React.MouseEvent) => void;\n setRef: (ref: HTMLElement) => void;\n componentProps: PopupMenuComponentProps;\n title?: string; // this was probably not intended, but removing this means the HTML will not print the title={label}\n // keeping this for now, if A11y says otherwise we will do the proper steps to remove it\n ownerProps: {\n getOwnerProps: () => Partial<DSGlobalHeaderT.DefaultProps>;\n getOwnerPropsArguments: () => object;\n };\n }\n\n /* *************************************************************************************\n toolbar -> type === 'ds-app-picker'\n ************************************************************************************** */\n export type AppPickerComponentProps = React.ComponentProps<typeof DSAppPicker> & {\n triggerOnClick?: React.MouseEventHandler<HTMLButtonElement>;\n };\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface AppPickerProps extends Omit<GlobalAttributesT, 'label'> {\n label: string;\n componentProps: AppPickerComponentProps;\n }\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface ToolbarAppPickerItem extends Omit<GlobalAttributesT, 'type' | 'label'> {\n type: 'ds-app-picker';\n label: string;\n componentProps: AppPickerComponentProps;\n }\n\n /* *************************************************************************************\n toolbar -> type === undefined (fallback default)\n ************************************************************************************** */\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface ToolbarItemTypelessDefault extends Omit<GlobalAttributesT, 'label'> {\n type?: undefined;\n label: string;\n Icon: React.ComponentType<{ fill?: string; size?: string }>;\n }\n\n export type ToolbarItem =\n | ToolbarCustomItem\n | ToolbarSearchToggleItem\n | ToolbarAppPickerItem\n | PopupMenuItem // this is the only type that was pre-existing and that's why it doesn't include Toolbar at the start\n | ToolbarItemTypelessDefault;\n\n export type SlotFunctionArguments = {\n dsGlobalheaderRoot: () => Record<string, never>;\n dsGlobalheaderLogoContainer: () => Record<string, never>;\n dsGlobalheaderBreadcrumbContainer: () => Record<string, never>;\n dsGlobalheaderBreadcrumbPipe: () => Record<string, never>;\n dsGlobalheaderBreadcrumbChevron: () => Record<string, never>;\n dsGlobalheaderBreadcrumbList: () => Record<string, never>;\n dsGlobalheaderBreadcrumbItem: () => Record<string, never>;\n dsGlobalheaderBreadcrumbItemLink: () => Record<string, never>;\n dsGlobalheaderBreadcrumbItemLinkLabel: () => Record<string, never>;\n dsGlobalheaderMenubarContainer: () => Record<string, never>;\n dsGlobalheaderMenubarList: () => Record<string, never>;\n dsGlobalheaderMenubarItem: () => Record<string, never>;\n dsGlobalheaderMenubarItemButton: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuList: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuItem: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuItemButton: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuSeparator: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuItemLabel: () => Record<string, never>;\n dsGlobalheaderMenubarItemSearchtoggleContainer: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonWrapper: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonText: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonSeparator: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonPrev: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonNext: () => Record<string, never>;\n dsGlobalheaderSearchtoggleTextinput: () => Record<string, never>;\n dsGlobalheaderSearchtoggleTriggerButton: () => Record<string, never>;\n dsGlobalheaderSearchtoggleExpandedContentWrapper: () => Record<string, never>;\n };\n\n export interface RequiredProps {}\n\n export interface DefaultProps {\n Logo: React.ComponentType;\n LogoWithBrand: React.ComponentType;\n breadcrumb: DSGlobalHeaderT.BreadcrumbItem[];\n toolbar: DSGlobalHeaderT.ToolbarItem[];\n CustomNavigation: React.ComponentType;\n }\n\n export interface OptionalProps\n extends TypescriptHelpersT.PropsForGlobalOnSlots<typeof DSGlobalHeaderName, typeof GLOBAL_HEADER_SLOTS> {}\n\n export interface Props\n extends Partial<DefaultProps>,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLElement>, keyof DefaultProps | keyof XstyledProps>,\n XstyledProps,\n RequiredProps {}\n\n export interface InternalProps\n extends DefaultProps,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLElement>, keyof DefaultProps | keyof XstyledProps>,\n XstyledProps,\n RequiredProps {}\n}\n\nexport const DSGlobalHeaderPropTypes: DSPropTypesSchema<DSGlobalHeaderT.Props> = {\n ...getPropsPerSlotPropTypes(DSGlobalHeaderName, GLOBAL_HEADER_SLOTS),\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n CustomNavigation: PropTypes.func\n .description(\n 'Component to use instead of the standard breadcrumb out of the box configuration for custom scenarios',\n )\n .defaultValue('() => JSX.Element'),\n Logo: PropTypes.func\n .description('Global Header Logo to render. Logo and LogoWithBrand are going to swap during window resizing.')\n .defaultValue('() => JSX.Element'),\n LogoWithBrand: PropTypes.func\n .description(\n 'Global Header Logo With Brand title to render. Logo and LogoWithBrand are going to swap during window resizing.',\n )\n .defaultValue('() => JSX.Element'),\n breadcrumb: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.description('breadrcrumb item label'),\n hasNext: PropTypes.bool.description('whether the item has a child or not'),\n isSelected: PropTypes.bool.description('whether the item is selected or not'),\n onClick: PropTypes.func.description('Callback executed on click'),\n }),\n )\n .description('Breadcrumb items to display. Max 3 levels. Compatible with GlobalAttributes.')\n .defaultValue('[]'),\n toolbar: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.description('title tag description'),\n type: PropTypes.oneOf(['ds-app-picker', 'ds-popup-menu', 'ds-search-toggle', 'custom']).description(\n 'use to select one of the out-of-the-box types of items',\n ),\n componentProps: PropTypes.object.description('props of out-of-the-box component'),\n Icon: PropTypes.func.description('Icon to display'),\n onClick: PropTypes.func.description('Callback executed on click'),\n }),\n )\n .description('Toolbar items. Compatible with GlobalAttributes.')\n .defaultValue('[]'),\n};\n// kept for legacy reasons, this is now named differently, but we want no breaking changes.\nexport const propTypes = DSGlobalHeaderPropTypes;\n\nexport const DSGlobalHeaderPropTypesSchema = DSGlobalHeaderPropTypes as unknown as ValidationMap<DSGlobalHeaderT.Props>;\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACGvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,oBAAoB,2BAA2B;AAExD,MAAM,OAAO,MAAM;AAEZ,MAAM,eAAe;AAAA,EAC1B,YAAY,CAAC;AAAA,EACb,SAAS,CAAC;AAAA,EACV,eAAe;AAAA,EACf,MAAM;AACR;AAyQO,MAAM,0BAAoE;AAAA,EAC/E,GAAG,yBAAyB,oBAAoB,mBAAmB;AAAA,EACnE,GAAG;AAAA,EACH,GAAG;AAAA,EACH,kBAAkB,UAAU,KACzB;AAAA,IACC;AAAA,EACF,EACC,aAAa,mBAAmB;AAAA,EACnC,MAAM,UAAU,KACb,YAAY,gGAAgG,EAC5G,aAAa,mBAAmB;AAAA,EACnC,eAAe,UAAU,KACtB;AAAA,IACC;AAAA,EACF,EACC,aAAa,mBAAmB;AAAA,EACnC,YAAY,UAAU;AAAA,IACpB,UAAU,MAAM;AAAA,MACd,OAAO,UAAU,OAAO,YAAY,wBAAwB;AAAA,MAC5D,SAAS,UAAU,KAAK,YAAY,qCAAqC;AAAA,MACzE,YAAY,UAAU,KAAK,YAAY,qCAAqC;AAAA,MAC5E,SAAS,UAAU,KAAK,YAAY,4BAA4B;AAAA,IAClE,CAAC;AAAA,EACH,EACG,YAAY,8EAA8E,EAC1F,aAAa,IAAI;AAAA,EACpB,SAAS,UAAU;AAAA,IACjB,UAAU,MAAM;AAAA,MACd,OAAO,UAAU,OAAO,YAAY,uBAAuB;AAAA,MAC3D,MAAM,UAAU,MAAM,CAAC,iBAAiB,iBAAiB,oBAAoB,QAAQ,CAAC,EAAE;AAAA,QACtF;AAAA,MACF;AAAA,MACA,gBAAgB,UAAU,OAAO,YAAY,mCAAmC;AAAA,MAChF,MAAM,UAAU,KAAK,YAAY,iBAAiB;AAAA,MAClD,SAAS,UAAU,KAAK,YAAY,4BAA4B;AAAA,IAClE,CAAC;AAAA,EACH,EACG,YAAY,kDAAkD,EAC9D,aAAa,IAAI;AACtB;AAEO,MAAM,YAAY;AAElB,MAAM,gCAAgC;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport type { DSAppPicker } from '@elliemae/ds-app-picker';\nimport type { DSHookFloatingContextT } from '@elliemae/ds-floating-context';\nimport type { SvgIconT } from '@elliemae/ds-icons';\nimport type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';\nimport {\n PropTypes,\n globalAttributesPropTypes,\n getPropsPerSlotPropTypes,\n xstyledPropTypes,\n} from '@elliemae/ds-props-helpers';\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport type React from 'react';\nimport { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from './constants/index.js';\n\nconst noop = () => null;\n\nexport const defaultProps = {\n breadcrumb: [],\n toolbar: [],\n LogoWithBrand: noop,\n Logo: noop,\n};\n\nexport declare namespace DSGlobalHeaderT {\n /* *************************************************************************************\n \"Breadcrumb widget\" configuration types\n ****************************************************************************************\n The breadcrumb items ARE SPREADING GLOBAL PROPS!!!\n + The breadcrumb items have a logic that force the onClick to be invoked on spacebar/enter too\n forcing it even if not the standard browser behaviour as per our buttons too\n ************************************************************************************** */\n export interface BreadcrumbItemOptionals {\n hasNext?: boolean;\n isSelected?: boolean;\n onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n }\n export interface BreadcrumbItemRequired {\n label: string;\n }\n export interface BreadcrumbItemOptionalsGlobals extends Omit<\n GlobalAttributesT,\n keyof BreadcrumbItemOptionals | keyof BreadcrumbItemRequired\n > {}\n\n export interface BreadcrumbItem\n extends BreadcrumbItemRequired, BreadcrumbItemOptionals, BreadcrumbItemOptionalsGlobals {}\n /* *************************************************************************************\n \"Toolbar widget\" configuration types\n ****************************************************************************************\n The toolbar item can be mainly of 4 different types\n - app-picker \n more or less map to ds-app-picker interface\n - popup-menu\n should more less map to dropdownmenu-v2 but should be changed to menu-button when possible\n - search-toggle\n a custom ad hoc implementation that expands in place and expose an input text,\n kinda problematic and force-added due to unrestrained \"yes man\" attitude with PM/PO\n we will be suggesting against using it officially in the later releases and try to find a better solution.\n - custom\n a way to allow app to provide their own render props along other pre-configured widgets out of the box\n ************************************************************************************** */\n\n /* *************************************************************************************\n toolbar -> type === 'custom'\n ************************************************************************************** */\n export interface ToolbarCustomComponentProps {\n item: Record<string, unknown> & {\n type: 'custom';\n CustomComponent: React.ComponentType<ToolbarCustomComponentProps>;\n };\n setRef: (ref: HTMLElement | null) => void;\n }\n export interface ToolbarCustomItem extends Record<string, unknown> {\n type: 'custom';\n label: string;\n CustomComponent: React.ComponentType<ToolbarCustomComponentProps>;\n }\n /* *************************************************************************************\n toolbar -> type === 'ds-search-toggle'\n ************************************************************************************** */\n // this props are actually required for the out-of-the-box to actually do what it needs to do\n // it's meant to be provided from the application, so this is kind of a weird way to do controlled components\n /**\n * Why the search region expanded or collapsed. Fired only for transitions this item drives itself \u2014\n * a controlled consumer flipping `isOpen` already knows, and detecting their flip would need an\n * effect watching state, which is not how this codebase reacts to state changes.\n */\n export type SearchToggleExpandChange = {\n reason: 'trigger' | 'escape';\n event: React.MouseEvent | React.KeyboardEvent;\n };\n\n export interface ToggleSearchComponentProps {\n /* Genuinely required: the search state and its transitions live in the application. */\n onNext: () => void;\n onPrevious: () => void;\n currentResultIndex: number;\n totalResults: number;\n value: string;\n onChange: (value: string) => void;\n onClear: () => void;\n onBlur?: () => void;\n /** Falls back to 'Search...'. */\n placeholder?: string;\n /** Supply to control the expanded state; omitted, the item manages it. */\n isOpen?: boolean;\n /*\n * Declared but not consumed by the part, which uses its own container keydown, toggle click and\n * trigger ref. Kept optional rather than removed because removing a declared key is a breaking type\n * change; do not add wiring for them without deciding what they should mean first.\n */\n onKeyDown?: (event: React.KeyboardEvent) => void;\n onClick?: (event: React.MouseEvent) => void;\n triggerRef?: React.MutableRefObject<HTMLButtonElement>;\n /** Merged with the part's own container ref when supplied. */\n searchContainerRef?: React.MutableRefObject<HTMLDivElement>;\n /**\n * Notified when the search region expands. PASSIVE \u2014 being told does not make you responsible: the\n * region still expands on its own unless you also supply `isOpen`.\n *\n * This is the disclosure-pattern counterpart to the `onOpen`/`onClose` the app-picker and popup-menu\n * items expose; the vocabulary differs because this item expands an inline region rather than opening\n * a dialog or a menu.\n */\n onExpand?: (info: SearchToggleExpandChange) => void;\n /** Notified when the search region collapses, on the same terms as `onExpand`. */\n onCollapse?: (info: SearchToggleExpandChange) => void;\n }\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface ToolbarSearchToggleItem extends Omit<GlobalAttributesT, 'type' | 'label'> {\n type: 'ds-search-toggle';\n label: string;\n /** Accessible name for the trigger once expanded. Defaults to a generic string. */\n ariaLabelExpanded?: string;\n componentProps: ToggleSearchComponentProps;\n }\n /* *************************************************************************************\n toolbar -> type === 'ds-popup-menu'\n ************************************************************************************** */\n\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface PopupMenuContentItem extends Omit<GlobalAttributesT, 'type' | 'label' | 'onClick'> {\n type?: 'separator' | 'custom';\n /** Any `@elliemae/ds-icons` export. Typed from their own props so real icons satisfy it. */\n Icon?: React.ComponentType<SvgIconT.Props>;\n label?: string;\n onClick?: (event: React.MouseEvent) => void;\n closeOnClick?: boolean;\n Content?: React.ComponentType;\n }\n export interface PopupMenuComponentProps {\n onClickOutside?: (e: MouseEvent | TouchEvent) => void;\n /* Guarded at the call site (`if (onKeyPress)`), so optional. */\n onKeyPress?: (event: React.KeyboardEvent) => void;\n /* Guarded inside PopupMenuContent, whose own type already declares it optional. */\n popupOnKeyPress?: (event: React.KeyboardEvent) => void;\n /** Supply to control the menu; omitted, the item manages it. */\n isOpen?: boolean;\n /** The only genuinely required key \u2014 a menu with nothing to show has no purpose. */\n options: PopupMenuContentItem[];\n /** Close the menu when an option is clicked. */\n closeOnClick?: boolean;\n /**\n * Notified on every open transition. PASSIVE \u2014 being told does not make you responsible for the\n * transition: the menu opens and closes on its own unless you also supply `isOpen`.\n *\n * Every path reports: trigger click, ArrowDown, and a controlled flip of `isOpen`. Discriminate on\n * the payload's `reason` \u2014 `interaction` is the synchronous, event-carrying signal, `controlled-flip`\n * is the post-commit one that fires only when you own `isOpen`. A controlled consumer can see both\n * for one logical transition.\n */\n onOpen?: (info: DSHookFloatingContextT.OpenChange) => void;\n /**\n * Notified on every close transition, on the same terms as `onOpen`. Every path reports: click\n * outside, Escape inside the menu, an item click while `closeOnClick`, and a controlled flip.\n */\n onClose?: (info: DSHookFloatingContextT.OpenChange) => void;\n }\n // this is the only type that was pre-existing (even if differently defined)\n // and that's why it doesn't include Toolbar at the start\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface PopupMenuItem extends Omit<GlobalAttributesT, 'type' | 'label' | 'onClick'> {\n type: 'ds-popup-menu';\n /** Any `@elliemae/ds-icons` export. Typed from their own props so real icons satisfy it. */\n Icon?: React.ComponentType<SvgIconT.Props>;\n label?: string;\n onClick?: (event: React.MouseEvent) => void;\n Content?: React.ComponentType;\n componentProps: PopupMenuComponentProps;\n }\n\n /* *************************************************************************************\n toolbar -> type === 'ds-app-picker'\n ************************************************************************************** */\n export type AppPickerComponentProps = React.ComponentProps<typeof DSAppPicker> & {\n triggerOnClick?: React.MouseEventHandler<HTMLButtonElement>;\n };\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface ToolbarAppPickerItem extends Omit<GlobalAttributesT, 'type' | 'label'> {\n type: 'ds-app-picker';\n label: string;\n componentProps: AppPickerComponentProps;\n }\n\n /* *************************************************************************************\n toolbar -> type === undefined (fallback default)\n ************************************************************************************** */\n // WE ARE SPREADING GLOBAL PROPS!!!\n // WE ARE ALSO OVERRIDING SOME GLOBAL KEYS!\n export interface ToolbarItemTypelessDefault extends Omit<GlobalAttributesT, 'label'> {\n type?: undefined;\n label: string;\n Icon: React.ComponentType<SvgIconT.Props>;\n }\n\n export type ToolbarItem =\n | ToolbarCustomItem\n | ToolbarSearchToggleItem\n | ToolbarAppPickerItem\n | PopupMenuItem // this is the only type that was pre-existing and that's why it doesn't include Toolbar at the start\n | ToolbarItemTypelessDefault;\n\n export type SlotFunctionArguments = {\n dsGlobalheaderRoot: () => Record<string, never>;\n dsGlobalheaderLogoContainer: () => Record<string, never>;\n dsGlobalheaderBreadcrumbContainer: () => Record<string, never>;\n dsGlobalheaderBreadcrumbPipe: () => Record<string, never>;\n dsGlobalheaderBreadcrumbChevron: () => Record<string, never>;\n dsGlobalheaderBreadcrumbList: () => Record<string, never>;\n dsGlobalheaderBreadcrumbItem: () => Record<string, never>;\n dsGlobalheaderBreadcrumbItemLink: () => Record<string, never>;\n dsGlobalheaderBreadcrumbItemLinkLabel: () => Record<string, never>;\n dsGlobalheaderMenubarContainer: () => Record<string, never>;\n dsGlobalheaderMenubarList: () => Record<string, never>;\n dsGlobalheaderMenubarItem: () => Record<string, never>;\n dsGlobalheaderMenubarItemButton: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuContainer: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuList: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuItem: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuItemButton: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuSeparator: () => Record<string, never>;\n dsGlobalheaderMenubarItemPopupmenuItemLabel: () => Record<string, never>;\n dsGlobalheaderMenubarItemSearchtoggleContainer: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonWrapper: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonText: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonSeparator: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonPrev: () => Record<string, never>;\n dsGlobalheaderSearchtoggleSpinbuttonNext: () => Record<string, never>;\n dsGlobalheaderSearchtoggleTextinput: () => Record<string, never>;\n dsGlobalheaderSearchtoggleTriggerButton: () => Record<string, never>;\n dsGlobalheaderSearchtoggleExpandedContentWrapper: () => Record<string, never>;\n };\n\n export interface RequiredProps {}\n\n export interface DefaultProps {\n Logo: React.ComponentType;\n LogoWithBrand: React.ComponentType;\n breadcrumb: DSGlobalHeaderT.BreadcrumbItem[];\n toolbar: DSGlobalHeaderT.ToolbarItem[];\n CustomNavigation: React.ComponentType;\n }\n\n export interface OptionalProps extends TypescriptHelpersT.PropsForGlobalOnSlots<\n typeof DSGlobalHeaderName,\n typeof GLOBAL_HEADER_SLOTS\n > {}\n\n export interface Props\n extends\n Partial<DefaultProps>,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLElement>, keyof DefaultProps | keyof XstyledProps>,\n XstyledProps,\n RequiredProps {}\n\n export interface InternalProps\n extends\n DefaultProps,\n OptionalProps,\n Omit<GlobalAttributesT<HTMLElement>, keyof DefaultProps | keyof XstyledProps>,\n XstyledProps,\n RequiredProps {}\n}\n\nexport const DSGlobalHeaderPropTypes: DSPropTypesSchema<DSGlobalHeaderT.Props> = {\n ...getPropsPerSlotPropTypes(DSGlobalHeaderName, GLOBAL_HEADER_SLOTS),\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n CustomNavigation: PropTypes.func\n .description(\n 'Component to use instead of the standard breadcrumb out of the box configuration for custom scenarios',\n )\n .defaultValue('() => JSX.Element'),\n Logo: PropTypes.func\n .description('Global Header Logo to render. Logo and LogoWithBrand are going to swap during window resizing.')\n .defaultValue('() => JSX.Element'),\n LogoWithBrand: PropTypes.func\n .description(\n 'Global Header Logo With Brand title to render. Logo and LogoWithBrand are going to swap during window resizing.',\n )\n .defaultValue('() => JSX.Element'),\n breadcrumb: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.description('breadrcrumb item label'),\n hasNext: PropTypes.bool.description('whether the item has a child or not'),\n isSelected: PropTypes.bool.description('whether the item is selected or not'),\n onClick: PropTypes.func.description('Callback executed on click'),\n }),\n )\n .description('Breadcrumb items to display. Max 3 levels. Compatible with GlobalAttributes.')\n .defaultValue('[]'),\n toolbar: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.description('title tag description'),\n type: PropTypes.oneOf(['ds-app-picker', 'ds-popup-menu', 'ds-search-toggle', 'custom']).description(\n 'use to select one of the out-of-the-box types of items',\n ),\n componentProps: PropTypes.object.description('props of out-of-the-box component'),\n Icon: PropTypes.func.description('Icon to display'),\n onClick: PropTypes.func.description('Callback executed on click'),\n }),\n )\n .description('Toolbar items. Compatible with GlobalAttributes.')\n .defaultValue('[]'),\n};\n// kept for legacy reasons, this is now named differently, but we want no breaking changes.\nexport const propTypes = DSGlobalHeaderPropTypes;\n\nexport const DSGlobalHeaderPropTypesSchema = DSGlobalHeaderPropTypes as unknown as ValidationMap<DSGlobalHeaderT.Props>;\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACKvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,oBAAoB,2BAA2B;AAExD,MAAM,OAAO,MAAM;AAEZ,MAAM,eAAe;AAAA,EAC1B,YAAY,CAAC;AAAA,EACb,SAAS,CAAC;AAAA,EACV,eAAe;AAAA,EACf,MAAM;AACR;AA4QO,MAAM,0BAAoE;AAAA,EAC/E,GAAG,yBAAyB,oBAAoB,mBAAmB;AAAA,EACnE,GAAG;AAAA,EACH,GAAG;AAAA,EACH,kBAAkB,UAAU,KACzB;AAAA,IACC;AAAA,EACF,EACC,aAAa,mBAAmB;AAAA,EACnC,MAAM,UAAU,KACb,YAAY,gGAAgG,EAC5G,aAAa,mBAAmB;AAAA,EACnC,eAAe,UAAU,KACtB;AAAA,IACC;AAAA,EACF,EACC,aAAa,mBAAmB;AAAA,EACnC,YAAY,UAAU;AAAA,IACpB,UAAU,MAAM;AAAA,MACd,OAAO,UAAU,OAAO,YAAY,wBAAwB;AAAA,MAC5D,SAAS,UAAU,KAAK,YAAY,qCAAqC;AAAA,MACzE,YAAY,UAAU,KAAK,YAAY,qCAAqC;AAAA,MAC5E,SAAS,UAAU,KAAK,YAAY,4BAA4B;AAAA,IAClE,CAAC;AAAA,EACH,EACG,YAAY,8EAA8E,EAC1F,aAAa,IAAI;AAAA,EACpB,SAAS,UAAU;AAAA,IACjB,UAAU,MAAM;AAAA,MACd,OAAO,UAAU,OAAO,YAAY,uBAAuB;AAAA,MAC3D,MAAM,UAAU,MAAM,CAAC,iBAAiB,iBAAiB,oBAAoB,QAAQ,CAAC,EAAE;AAAA,QACtF;AAAA,MACF;AAAA,MACA,gBAAgB,UAAU,OAAO,YAAY,mCAAmC;AAAA,MAChF,MAAM,UAAU,KAAK,YAAY,iBAAiB;AAAA,MAClD,SAAS,UAAU,KAAK,YAAY,4BAA4B;AAAA,IAClE,CAAC;AAAA,EACH,EACG,YAAY,kDAAkD,EAC9D,aAAa,IAAI;AACtB;AAEO,MAAM,YAAY;AAElB,MAAM,gCAAgC;",
6
6
  "names": []
7
7
  }
@@ -14,6 +14,58 @@ const customToolbarItemAsSyntax = {
14
14
  label: "Custom Toolbar Item",
15
15
  CustomComponent: EmptyComponent
16
16
  };
17
+ const searchToggleToolbarItemMinimum = {
18
+ type: "ds-search-toggle",
19
+ label: "Search",
20
+ componentProps: {
21
+ // No placeholder (falls back), no isOpen (self-managed), no onKeyDown / onClick / triggerRef /
22
+ // searchContainerRef (not consumed by the part).
23
+ onNext: () => {
24
+ },
25
+ onPrevious: () => {
26
+ },
27
+ currentResultIndex: 0,
28
+ totalResults: 0,
29
+ value: "",
30
+ onChange: () => {
31
+ },
32
+ onClear: () => {
33
+ }
34
+ }
35
+ };
36
+ const searchToggleToolbarItemWithItemLevelAttributes = {
37
+ type: "ds-search-toggle",
38
+ label: "Search",
39
+ id: "search-toggle",
40
+ ariaLabelExpanded: "Collapse search",
41
+ "aria-label": "Search the page",
42
+ componentProps: {
43
+ onNext: () => {
44
+ },
45
+ onPrevious: () => {
46
+ },
47
+ currentResultIndex: 0,
48
+ totalResults: 0,
49
+ value: "",
50
+ onChange: () => {
51
+ },
52
+ onClear: () => {
53
+ }
54
+ }
55
+ };
56
+ const popupMenuToolbarItemMinimum = {
57
+ type: "ds-popup-menu",
58
+ // No onKeyPress / popupOnKeyPress (both guarded), no isOpen (self-managed), no closeOnClick.
59
+ componentProps: { options: [{ label: "Only key that is genuinely required" }] }
60
+ };
61
+ const popupMenuToolbarItemNotified = {
62
+ type: "ds-popup-menu",
63
+ componentProps: {
64
+ options: [{ label: "Item" }],
65
+ onOpen: (info) => info.reason,
66
+ onClose: (info) => info.reason
67
+ }
68
+ };
17
69
  const searchToggleToolbarItemStrict = {
18
70
  type: "ds-search-toggle",
19
71
  label: "Search",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/typescript-testing/typescript-global-header-toolbar-types.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\nimport React from 'react';\nimport type { DSGlobalHeaderT } from '../index.js';\n\nconst EmptyComponent: React.FC = () => null;\nconst IconPlaceholder: React.FC = () => null;\nconst divRef = React.createRef<HTMLDivElement>() as React.MutableRefObject<HTMLDivElement>;\nconst buttonRef = React.createRef<HTMLButtonElement>() as React.MutableRefObject<HTMLButtonElement>;\n\n/* *************************************************************************************\n TESTING INTERFACE FOR THE OUT OF THE BOX TOOLBAR WIDGET\n************************************************************************************** */\n\n/* *************************************************************************************\n Toolbar -> ToolbarCustomItem\n************************************************************************************** */\nconst customToolbarItemStrict: DSGlobalHeaderT.ToolbarCustomItem = {\n type: 'custom',\n label: 'Custom Toolbar Item',\n CustomComponent: EmptyComponent,\n};\nconst customToolbarItemAsSyntax = {\n type: 'custom',\n label: 'Custom Toolbar Item',\n CustomComponent: EmptyComponent,\n} as DSGlobalHeaderT.ToolbarCustomItem;\n/* *************************************************************************************\n Toolbar -> ToolbarSearchToggleItem\n************************************************************************************** */\nconst searchToggleToolbarItemStrict: DSGlobalHeaderT.ToolbarSearchToggleItem = {\n type: 'ds-search-toggle',\n label: 'Search',\n componentProps: {\n onNext: () => {},\n onPrevious: () => {},\n currentResultIndex: 0,\n totalResults: 0,\n placeholder: 'Search...',\n value: '',\n onChange: () => {},\n onBlur: () => {},\n onClear: () => {},\n isOpen: false,\n onKeyDown: (event: React.KeyboardEvent) => {},\n onClick: (event: React.MouseEvent) => {},\n triggerRef: buttonRef,\n searchContainerRef: divRef,\n },\n};\nconst searchToggleToolbarItemAsSyntax = {\n type: 'ds-search-toggle',\n label: 'Search',\n componentProps: {\n onNext: () => {},\n onPrevious: () => {},\n currentResultIndex: 0,\n totalResults: 0,\n placeholder: 'Search...',\n value: '',\n onChange: () => {},\n onBlur: () => {},\n onClear: () => {},\n isOpen: false,\n onKeyDown: (event: React.KeyboardEvent) => {},\n onClick: (event: React.MouseEvent) => {},\n triggerRef: buttonRef,\n searchContainerRef: divRef,\n },\n} as DSGlobalHeaderT.ToolbarSearchToggleItem;\n/* *************************************************************************************\n Toolbar -> ToolbarAppPickerItem\n************************************************************************************** */\nconst appPickerToolbarItemStrict: DSGlobalHeaderT.ToolbarAppPickerItem = {\n id: 'app-picker',\n type: 'ds-app-picker',\n label: 'Apps',\n componentProps: {\n sectionTitle: 'APPLICATIONS',\n apps: [\n {\n id: '0',\n label: 'Dashboard',\n icon: IconPlaceholder,\n onClick: () => {},\n selected: false,\n },\n ],\n customSectionTitle: 'RESOURCES',\n customApps: [\n {\n id: '7',\n label: 'Profile',\n icon: IconPlaceholder,\n onClick: () => {},\n selected: false,\n },\n ],\n },\n};\nconst appPickerToolbarItemAsSyntax = {\n id: 'app-picker',\n type: 'ds-app-picker',\n label: 'Apps',\n componentProps: {\n sectionTitle: 'APPLICATIONS',\n apps: [\n {\n id: '0',\n label: 'Dashboard',\n icon: IconPlaceholder,\n onClick: () => {},\n selected: false,\n },\n ],\n customSectionTitle: 'RESOURCES',\n customApps: [\n {\n id: '7',\n label: 'Profile',\n icon: IconPlaceholder,\n onClick: () => {},\n selected: false,\n },\n ],\n },\n} as DSGlobalHeaderT.ToolbarAppPickerItem;\n/* *************************************************************************************\n Toolbar -> PopupMenuItem\n************************************************************************************** */\nconst popupMenuToolbarItemStrict: DSGlobalHeaderT.PopupMenuItem = {\n type: 'ds-popup-menu',\n Icon: IconPlaceholder,\n label: 'Popup Menu',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n componentProps: {\n onClickOutside: (e: MouseEvent | TouchEvent) => {},\n onKeyPress: (event: React.KeyboardEvent) => {},\n popupOnKeyPress: (event: React.KeyboardEvent) => {},\n isOpen: true,\n options: [\n {\n type: 'custom',\n Icon: IconPlaceholder,\n label: 'Custom Option',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n },\n {\n type: 'separator',\n Icon: IconPlaceholder,\n label: 'Separator',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n },\n {\n label: 'Custom Option',\n onClick: (event: React.MouseEvent) => {},\n },\n ],\n closeOnClick: true,\n },\n};\nconst popupMenuToolbarItemAsSyntax = {\n type: 'ds-popup-menu',\n Icon: IconPlaceholder,\n label: 'Popup Menu',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n componentProps: {\n onClickOutside: (e: MouseEvent | TouchEvent) => {},\n onKeyPress: (event: React.KeyboardEvent) => {},\n popupOnKeyPress: (event: React.KeyboardEvent) => {},\n isOpen: true,\n options: [\n {\n type: 'custom',\n Icon: IconPlaceholder,\n label: 'Custom Option',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n },\n {\n type: 'separator',\n Icon: IconPlaceholder,\n label: 'Separator',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n },\n {\n label: 'Custom Option',\n onClick: (event: React.MouseEvent) => {},\n },\n ],\n closeOnClick: true,\n },\n} as DSGlobalHeaderT.PopupMenuItem;\n\n/* *************************************************************************************\n Toolbar -> ToolbarItemTypelessDefault\n************************************************************************************** */\nconst toolbarItemTypelessDefaultStrict: DSGlobalHeaderT.ToolbarItemTypelessDefault = {\n label: 'Default Label',\n Icon: IconPlaceholder,\n onClick: (event: React.MouseEvent) => {},\n};\n\nconst toolbarItemTypelessDefaultAsSyntax = {\n label: 'Default Label',\n Icon: IconPlaceholder,\n onClick: (event: React.MouseEvent) => {},\n} as DSGlobalHeaderT.ToolbarItemTypelessDefault;\nconst toolbarItemTypelessDefaultStrictExplicit: DSGlobalHeaderT.ToolbarItemTypelessDefault = {\n type: undefined,\n label: 'Default Label',\n Icon: IconPlaceholder,\n onClick: (event: React.MouseEvent) => {},\n};\n\nconst toolbarItemTypelessDefaultAsSyntaxExplicit = {\n type: undefined,\n label: 'Default Label',\n Icon: IconPlaceholder,\n onClick: (event: React.MouseEvent) => {},\n} as DSGlobalHeaderT.ToolbarItemTypelessDefault;\n\n/* *************************************************************************************\n <Globalheader toolbar={...}>\n************************************************************************************** */\nexport const toolbarItemsStrict: DSGlobalHeaderT.DefaultProps['toolbar'] = [\n customToolbarItemStrict,\n searchToggleToolbarItemStrict,\n appPickerToolbarItemStrict,\n popupMenuToolbarItemStrict,\n toolbarItemTypelessDefaultStrict,\n];\nexport const toolbarItemsAsSyntax = [\n customToolbarItemAsSyntax,\n searchToggleToolbarItemAsSyntax,\n appPickerToolbarItemAsSyntax,\n popupMenuToolbarItemAsSyntax,\n toolbarItemTypelessDefaultAsSyntax,\n] as DSGlobalHeaderT.DefaultProps['toolbar'];\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\nimport React from 'react';\nimport type { DSGlobalHeaderT } from '../index.js';\n\nconst EmptyComponent: React.FC = () => null;\nconst IconPlaceholder: React.FC = () => null;\nconst divRef = React.createRef<HTMLDivElement>() as React.MutableRefObject<HTMLDivElement>;\nconst buttonRef = React.createRef<HTMLButtonElement>() as React.MutableRefObject<HTMLButtonElement>;\n\n/* *************************************************************************************\n TESTING INTERFACE FOR THE OUT OF THE BOX TOOLBAR WIDGET\n************************************************************************************** */\n\n/* *************************************************************************************\n Toolbar -> ToolbarCustomItem\n************************************************************************************** */\nconst customToolbarItemStrict: DSGlobalHeaderT.ToolbarCustomItem = {\n type: 'custom',\n label: 'Custom Toolbar Item',\n CustomComponent: EmptyComponent,\n};\nconst customToolbarItemAsSyntax = {\n type: 'custom',\n label: 'Custom Toolbar Item',\n CustomComponent: EmptyComponent,\n} as DSGlobalHeaderT.ToolbarCustomItem;\n/* *************************************************************************************\n PUI-18647 \u2014 the MINIMUM each consumer-facing item type accepts.\n\n These pin the widening, and they are the half that regresses silently: the maximal cases below\n still compile if a key is wrongly required again, so only a minimum case catches it. Every key\n omitted here is one the runtime supplies or guards \u2014 re-requiring any of them forces correct\n consumer code to fail to type-check, which is what these exist to prevent.\n************************************************************************************** */\nconst searchToggleToolbarItemMinimum: DSGlobalHeaderT.ToolbarSearchToggleItem = {\n type: 'ds-search-toggle',\n label: 'Search',\n componentProps: {\n // No placeholder (falls back), no isOpen (self-managed), no onKeyDown / onClick / triggerRef /\n // searchContainerRef (not consumed by the part).\n onNext: () => {},\n onPrevious: () => {},\n currentResultIndex: 0,\n totalResults: 0,\n value: '',\n onChange: () => {},\n onClear: () => {},\n },\n};\n\n/*\n * Item-level global attributes and `ariaLabelExpanded` belong on the entry itself. The runtime forwards\n * them to the item's root container; before PUI-18647 this type extended no global-attribute surface at\n * all, so none of the keys below were admitted.\n *\n * Note what is NOT asserted here: a literal `data-public` key. `GlobalAttributesT` enumerates the HTML\n * global set and carries no index signature, so an arbitrary `data-*` written literally is an excess\n * property on EVERY toolbar item type, not just this one \u2014 consumers reach it by spreading an object\n * instead, which is what the stories do. That gap belongs to ds-props-helpers, not here.\n */\nconst searchToggleToolbarItemWithItemLevelAttributes: DSGlobalHeaderT.ToolbarSearchToggleItem = {\n type: 'ds-search-toggle',\n label: 'Search',\n id: 'search-toggle',\n ariaLabelExpanded: 'Collapse search',\n 'aria-label': 'Search the page',\n componentProps: {\n onNext: () => {},\n onPrevious: () => {},\n currentResultIndex: 0,\n totalResults: 0,\n value: '',\n onChange: () => {},\n onClear: () => {},\n },\n};\n\nconst popupMenuToolbarItemMinimum: DSGlobalHeaderT.PopupMenuItem = {\n type: 'ds-popup-menu',\n // No onKeyPress / popupOnKeyPress (both guarded), no isOpen (self-managed), no closeOnClick.\n componentProps: { options: [{ label: 'Only key that is genuinely required' }] },\n};\n\n// Passive open/close notification \u2014 being told must not require owning `isOpen`.\nconst popupMenuToolbarItemNotified: DSGlobalHeaderT.PopupMenuItem = {\n type: 'ds-popup-menu',\n componentProps: {\n options: [{ label: 'Item' }],\n onOpen: (info) => info.reason,\n onClose: (info) => info.reason,\n },\n};\n\n/* *************************************************************************************\n Toolbar -> ToolbarSearchToggleItem\n************************************************************************************** */\nconst searchToggleToolbarItemStrict: DSGlobalHeaderT.ToolbarSearchToggleItem = {\n type: 'ds-search-toggle',\n label: 'Search',\n componentProps: {\n onNext: () => {},\n onPrevious: () => {},\n currentResultIndex: 0,\n totalResults: 0,\n placeholder: 'Search...',\n value: '',\n onChange: () => {},\n onBlur: () => {},\n onClear: () => {},\n isOpen: false,\n onKeyDown: (event: React.KeyboardEvent) => {},\n onClick: (event: React.MouseEvent) => {},\n triggerRef: buttonRef,\n searchContainerRef: divRef,\n },\n};\nconst searchToggleToolbarItemAsSyntax = {\n type: 'ds-search-toggle',\n label: 'Search',\n componentProps: {\n onNext: () => {},\n onPrevious: () => {},\n currentResultIndex: 0,\n totalResults: 0,\n placeholder: 'Search...',\n value: '',\n onChange: () => {},\n onBlur: () => {},\n onClear: () => {},\n isOpen: false,\n onKeyDown: (event: React.KeyboardEvent) => {},\n onClick: (event: React.MouseEvent) => {},\n triggerRef: buttonRef,\n searchContainerRef: divRef,\n },\n} as DSGlobalHeaderT.ToolbarSearchToggleItem;\n/* *************************************************************************************\n Toolbar -> ToolbarAppPickerItem\n************************************************************************************** */\nconst appPickerToolbarItemStrict: DSGlobalHeaderT.ToolbarAppPickerItem = {\n id: 'app-picker',\n type: 'ds-app-picker',\n label: 'Apps',\n componentProps: {\n sectionTitle: 'APPLICATIONS',\n apps: [\n {\n id: '0',\n label: 'Dashboard',\n icon: IconPlaceholder,\n onClick: () => {},\n selected: false,\n },\n ],\n customSectionTitle: 'RESOURCES',\n customApps: [\n {\n id: '7',\n label: 'Profile',\n icon: IconPlaceholder,\n onClick: () => {},\n selected: false,\n },\n ],\n },\n};\nconst appPickerToolbarItemAsSyntax = {\n id: 'app-picker',\n type: 'ds-app-picker',\n label: 'Apps',\n componentProps: {\n sectionTitle: 'APPLICATIONS',\n apps: [\n {\n id: '0',\n label: 'Dashboard',\n icon: IconPlaceholder,\n onClick: () => {},\n selected: false,\n },\n ],\n customSectionTitle: 'RESOURCES',\n customApps: [\n {\n id: '7',\n label: 'Profile',\n icon: IconPlaceholder,\n onClick: () => {},\n selected: false,\n },\n ],\n },\n} as DSGlobalHeaderT.ToolbarAppPickerItem;\n/* *************************************************************************************\n Toolbar -> PopupMenuItem\n************************************************************************************** */\nconst popupMenuToolbarItemStrict: DSGlobalHeaderT.PopupMenuItem = {\n type: 'ds-popup-menu',\n Icon: IconPlaceholder,\n label: 'Popup Menu',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n componentProps: {\n onClickOutside: (e: MouseEvent | TouchEvent) => {},\n onKeyPress: (event: React.KeyboardEvent) => {},\n popupOnKeyPress: (event: React.KeyboardEvent) => {},\n isOpen: true,\n options: [\n {\n type: 'custom',\n Icon: IconPlaceholder,\n label: 'Custom Option',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n },\n {\n type: 'separator',\n Icon: IconPlaceholder,\n label: 'Separator',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n },\n {\n label: 'Custom Option',\n onClick: (event: React.MouseEvent) => {},\n },\n ],\n closeOnClick: true,\n },\n};\nconst popupMenuToolbarItemAsSyntax = {\n type: 'ds-popup-menu',\n Icon: IconPlaceholder,\n label: 'Popup Menu',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n componentProps: {\n onClickOutside: (e: MouseEvent | TouchEvent) => {},\n onKeyPress: (event: React.KeyboardEvent) => {},\n popupOnKeyPress: (event: React.KeyboardEvent) => {},\n isOpen: true,\n options: [\n {\n type: 'custom',\n Icon: IconPlaceholder,\n label: 'Custom Option',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n },\n {\n type: 'separator',\n Icon: IconPlaceholder,\n label: 'Separator',\n onClick: (event: React.MouseEvent) => {},\n Content: EmptyComponent,\n },\n {\n label: 'Custom Option',\n onClick: (event: React.MouseEvent) => {},\n },\n ],\n closeOnClick: true,\n },\n} as DSGlobalHeaderT.PopupMenuItem;\n\n/* *************************************************************************************\n Toolbar -> ToolbarItemTypelessDefault\n************************************************************************************** */\nconst toolbarItemTypelessDefaultStrict: DSGlobalHeaderT.ToolbarItemTypelessDefault = {\n label: 'Default Label',\n Icon: IconPlaceholder,\n onClick: (event: React.MouseEvent) => {},\n};\n\nconst toolbarItemTypelessDefaultAsSyntax = {\n label: 'Default Label',\n Icon: IconPlaceholder,\n onClick: (event: React.MouseEvent) => {},\n} as DSGlobalHeaderT.ToolbarItemTypelessDefault;\nconst toolbarItemTypelessDefaultStrictExplicit: DSGlobalHeaderT.ToolbarItemTypelessDefault = {\n type: undefined,\n label: 'Default Label',\n Icon: IconPlaceholder,\n onClick: (event: React.MouseEvent) => {},\n};\n\nconst toolbarItemTypelessDefaultAsSyntaxExplicit = {\n type: undefined,\n label: 'Default Label',\n Icon: IconPlaceholder,\n onClick: (event: React.MouseEvent) => {},\n} as DSGlobalHeaderT.ToolbarItemTypelessDefault;\n\n/* *************************************************************************************\n <Globalheader toolbar={...}>\n************************************************************************************** */\nexport const toolbarItemsStrict: DSGlobalHeaderT.DefaultProps['toolbar'] = [\n customToolbarItemStrict,\n searchToggleToolbarItemStrict,\n appPickerToolbarItemStrict,\n popupMenuToolbarItemStrict,\n toolbarItemTypelessDefaultStrict,\n];\nexport const toolbarItemsAsSyntax = [\n customToolbarItemAsSyntax,\n searchToggleToolbarItemAsSyntax,\n appPickerToolbarItemAsSyntax,\n popupMenuToolbarItemAsSyntax,\n toolbarItemTypelessDefaultAsSyntax,\n] as DSGlobalHeaderT.DefaultProps['toolbar'];\n"],
5
+ "mappings": "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",
6
6
  "names": ["React"]
7
7
  }
@@ -1,2 +1,10 @@
1
- import type { DSGlobalHeaderT } from './react-desc-prop-types.js';
2
- export declare const DSGlobalHeaderContext: import("react").Context<DSGlobalHeaderT.Context>;
1
+ export declare const DSGlobalHeaderContext: import("react").Context<{
2
+ props: import("./react-desc-prop-types.js").DSGlobalHeaderT.InternalProps;
3
+ showIconOnly: boolean;
4
+ setShowIconOnly: import("react").Dispatch<import("react").SetStateAction<boolean>>;
5
+ instanceUID: string;
6
+ globalHeaderToolbarGrid: string[];
7
+ fontDetector: 1 | 2 | 3;
8
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader: () => import("./react-desc-prop-types.js").DSGlobalHeaderT.Props;
9
+ noSlotArguments: () => {};
10
+ }>;
@@ -6,8 +6,7 @@ export declare const useGlobalHeader: (props: DSGlobalHeaderT.Props) => {
6
6
  instanceUID: string;
7
7
  globalHeaderToolbarGrid: string[];
8
8
  fontDetector: 1 | 2 | 3;
9
- ownerProps: {
10
- getOwnerProps: () => DSGlobalHeaderT.Props;
11
- getOwnerPropsArguments: () => {};
12
- };
9
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader: () => DSGlobalHeaderT.Props;
10
+ noSlotArguments: () => {};
13
11
  };
12
+ export type GlobalHeaderCTX = ReturnType<typeof useGlobalHeader>;
@@ -87,7 +87,6 @@ export declare const DSGlobalHeaderDatatestid: {
87
87
  SEPARATOR: string;
88
88
  };
89
89
  SEARCH_TOGGLE: {
90
- CONTAINER: string;
91
90
  ITEM_BUTTON: string;
92
91
  };
93
92
  };
@@ -114,7 +113,6 @@ export declare const DSGlobalHeaderDatatestidFlattened: {
114
113
  MENUBAR_POPUP_MENU_ITEM_BUTTON: string;
115
114
  MENUBAR_POPUP_MENU_ITEM_LABEL: string;
116
115
  MENUBAR_POPUP_MENU_SEPARATOR: string;
117
- MENUBAR_SEARCH_TOGGLE_CONTAINER: string;
118
116
  MENUBAR_SEARCH_TOGGLE_ITEM_BUTTON: string;
119
117
  };
120
118
  export declare const FONT_DETECTOR: {
@@ -131,6 +129,7 @@ export declare const GLOBAL_HEADER_SLOTS: {
131
129
  readonly SEARCH_TOGGLE_TEXTINPUT: "searchtoggle-textinput";
132
130
  readonly SEARCH_TOGGLE_TRIGGER_BUTTON: "searchtoggle-trigger-button";
133
131
  readonly SEARCH_TOGGLE_EXPANDED_CONTENT_WRAPPER: "searchtoggle-expanded-content-wrapper";
132
+ readonly MENUBAR_ITEM_POPUPMENU_CONTAINER: "menubar-item-popupmenu-container";
134
133
  readonly CONTAINER: string;
135
134
  readonly LOGO_CONTAINER: string;
136
135
  readonly BREADCRUMB_CONTAINER: string;
@@ -151,8 +150,10 @@ export declare const GLOBAL_HEADER_SLOTS: {
151
150
  readonly MENUBAR_POPUP_MENU_ITEM_BUTTON_LABEL: string;
152
151
  readonly MENUBAR_SEARCH_TOGGLE_CONTAINER: string;
153
152
  };
153
+ export declare const SEARCH_TOGGLE_DEFAULT_ARIA_LABEL = "Search. Press Tab twice to reach the result navigation.";
154
154
  export declare const GLOBAL_HEADER_DATA_TESTID: {
155
155
  SEARCH_TOGGLE_TRIGGER_BUTTON: string;
156
+ MENUBAR_SEARCH_TOGGLE_CONTAINER: string;
156
157
  CONTAINER: string;
157
158
  LOGO_CONTAINER: string;
158
159
  BREADCRUMB_CONTAINER: string;
@@ -171,7 +172,6 @@ export declare const GLOBAL_HEADER_DATA_TESTID: {
171
172
  MENUBAR_POPUP_MENU_ITEM_BUTTON: string;
172
173
  MENUBAR_POPUP_MENU_ITEM_LABEL: string;
173
174
  MENUBAR_POPUP_MENU_SEPARATOR: string;
174
- MENUBAR_SEARCH_TOGGLE_CONTAINER: string;
175
175
  MENUBAR_SEARCH_TOGGLE_ITEM_BUTTON: string;
176
176
  SEARCH_TOGGLE_SPINBUTTON_WRAPPER: "ds-globalheader-searchtoggle-spinbutton-wrapper";
177
177
  SEARCH_TOGGLE_SPINBUTTON_TEXT: "ds-globalheader-searchtoggle-spinbutton-text";
@@ -180,5 +180,6 @@ export declare const GLOBAL_HEADER_DATA_TESTID: {
180
180
  SEARCH_TOGGLE_SPINBUTTON_NEXT: "ds-globalheader-searchtoggle-spinbutton-next";
181
181
  SEARCH_TOGGLE_TEXTINPUT: "ds-globalheader-searchtoggle-textinput";
182
182
  SEARCH_TOGGLE_EXPANDED_CONTENT_WRAPPER: "ds-globalheader-searchtoggle-expanded-content-wrapper";
183
+ MENUBAR_ITEM_POPUPMENU_CONTAINER: "ds-globalheader-menubar-item-popupmenu-container";
183
184
  MENUBAR_POPUP_MENU_ITEM_BUTTON_LABEL: `ds-globalheader-${string}`;
184
185
  };
@@ -1,5 +1,3 @@
1
- import { DSGlobalHeader } from './DSGlobalHeader.js';
2
- export default DSGlobalHeader;
3
1
  export { DSGlobalHeader, DSGlobalHeaderWithSchema, GlobalHeader } from './DSGlobalHeader.js';
4
2
  export { DSGlobalHeaderDatatestid, DSGlobalHeaderDatatestidFlattened, DSGlobalHeaderSlots, DSGlobalHeaderSlotsFlattened, DSGlobalHeaderName, GLOBAL_HEADER_SLOTS, GLOBAL_HEADER_DATA_TESTID, } from './constants/index.js';
5
3
  export type { DSGlobalHeaderT } from './react-desc-prop-types.js';
@@ -7,5 +7,5 @@ type PureBreadcrumbProps = DSGlobalHeaderT.BreadcrumbItem & {
7
7
  getOwnerPropsArguments: () => object;
8
8
  };
9
9
  };
10
- export declare const PureBreadcrumb: React.MemoExoticComponent<({ onClick, isSelected, fullBreadcrumbListLength, label, hasNext, ownerProps, ...rest }: PureBreadcrumbProps) => import("react/jsx-runtime.js").JSX.Element>;
10
+ export declare const PureBreadcrumb: React.MemoExoticComponent<({ onClick, isSelected, fullBreadcrumbListLength, label, hasNext, ownerProps, ...rest }: PureBreadcrumbProps) => React.JSX.Element>;
11
11
  export {};
@@ -11,7 +11,7 @@ interface LabelT {
11
11
  export declare const StyledBreadcrumbContainer: 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>;
12
12
  export declare const StyledBreadcrumbList: import("styled-components").StyledComponent<"ul", import("@elliemae/ds-system").Theme, object & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"ul">, never>;
13
13
  export declare const StyledPipe: import("styled-components").StyledComponent<"span", import("@elliemae/ds-system").Theme, PipeT & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"span">, never>;
14
- export declare const StyledChevron: import("styled-components").StyledComponent<(rest: import("@elliemae/ds-icons").SvgIconT.Props) => import("react/jsx-runtime.js").JSX.Element, import("@elliemae/ds-system").Theme, ChevronT & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<(rest: import("@elliemae/ds-icons").SvgIconT.Props) => import("react/jsx-runtime.js").JSX.Element>, never>;
14
+ export declare const StyledChevron: import("styled-components").StyledComponent<(rest: import("@elliemae/ds-icons").SvgIconT.Props) => import("react").JSX.Element, import("@elliemae/ds-system").Theme, ChevronT & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<(rest: import("@elliemae/ds-icons").SvgIconT.Props) => import("react").JSX.Element>, never>;
15
15
  export declare const StyledBreadcrumbItem: import("styled-components").StyledComponent<"li", import("@elliemae/ds-system").Theme, object & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"li">, never>;
16
16
  export declare const StyledLink: import("styled-components").StyledComponent<"a", import("@elliemae/ds-system").Theme, object & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"a">, never>;
17
17
  export declare const StyledLabel: import("styled-components").StyledComponent<"span", import("@elliemae/ds-system").Theme, LabelT & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"span">, never>;
@@ -0,0 +1,4 @@
1
+ import type { useAppPickerCTX } from './useAppPickerCTX.js';
2
+ export interface AppPickerCTX extends ReturnType<typeof useAppPickerCTX> {
3
+ }
4
+ export declare const AppPickerCtx: import("react").Context<AppPickerCTX>;
@@ -0,0 +1,2 @@
1
+ import type { AppPickerT } from './react-desc-prop-types.js';
2
+ export declare const AppPickerCTXRenderer: (appPickerProps: AppPickerT.Props) => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const AppPickerRenderer: () => JSX.Element;