@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,54 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var react_desc_prop_types_exports = {};
30
+ __export(react_desc_prop_types_exports, {
31
+ PopupMenuPropTypes: () => PopupMenuPropTypes,
32
+ PopupMenuPropTypesSchema: () => PopupMenuPropTypesSchema
33
+ });
34
+ module.exports = __toCommonJS(react_desc_prop_types_exports);
35
+ var React = __toESM(require("react"));
36
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
37
+ const PopupMenuPropTypes = {
38
+ ...import_ds_props_helpers.globalAttributesPropTypes,
39
+ ...import_ds_props_helpers.xstyledPropTypes,
40
+ componentProps: import_ds_props_helpers.PropTypes.object.description(
41
+ "The consumer-authored popup menu configuration: options, isOpen, closeOnClick and the key handlers"
42
+ ).isRequired,
43
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader: import_ds_props_helpers.PropTypes.func.description(
44
+ "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"
45
+ ).signature("(() => Partial<DSGlobalHeaderT.DefaultProps> )").isRequired,
46
+ setRef: import_ds_props_helpers.PropTypes.func.description("Registers the trigger node with the toolbar focus management for arrow-key navigation").signature("(( ref: HTMLElement ) => void )").isRequired,
47
+ Icon: import_ds_props_helpers.PropTypes.func.description("Icon rendered inside the trigger button"),
48
+ onClick: import_ds_props_helpers.PropTypes.func.description("Consumer click handler for the trigger, invoked alongside the internal open/close toggle").signature("(( event: React.MouseEvent ) => void )"),
49
+ title: import_ds_props_helpers.PropTypes.string.description(
50
+ "Receives the toolbar item label; printed as the HTML title attribute on the trigger"
51
+ )
52
+ };
53
+ const PopupMenuPropTypesSchema = PopupMenuPropTypes;
54
+ //# sourceMappingURL=react-desc-prop-types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/parts/Toolbar/outOfTheBox/PopupMenu/react-desc-prop-types.ts", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';\nimport { PropTypes, globalAttributesPropTypes, xstyledPropTypes } from '@elliemae/ds-props-helpers';\nimport type { SvgIconT } from '@elliemae/ds-icons';\nimport type React from 'react';\nimport type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';\n\n/*\n * Relocated here from DSGlobalHeaderT.PopupProps, per the convention every other part in the repo\n * follows. Consumed by PopupMenu.tsx.\n *\n * This namespace describes what DSGlobalHeader passes DOWN to its own out-of-the-box Popup Menu\n * wrapper. It is NOT the shape an application developer authors \u2014 that is\n * DSGlobalHeaderT.PopupMenuItem (the toolbar config entry) and, inside it,\n * DSGlobalHeaderT.PopupMenuComponentProps. `setRef` and\n * `getOwnerPropsAwareOfPropsPassedToGlobalHeader` are generated by the widget and the developer is not\n * meant to know about them.\n *\n * The old name is worth losing on the way: `PopupProps` sat a word away from `PopupMenuItem`,\n * `PopupMenuComponentProps` and `PopupMenuContentProps` in the same namespace \u2014 the first two of which\n * ARE consumer-authored, while the third was internal and has been relocated to menuContent/ alongside\n * this one. `PopupMenuT.Props`, scoped to this directory, cannot be mistaken for any of them.\n *\n * All three IoC layers present: item-level global attributes onto the trigger, the slot layer via\n * `getOwnerPropsAwareOfPropsPassedToGlobalHeader`, and `componentProps` for the menu's own contract.\n *\n * No slots of its own \u2014 see the AppPicker sibling file for why (published slot surface stays under the\n * parent's name).\n *\n * KNOWN GAP \u2014 xstyled props are declared and not forwarded, as in every sibling part. See the AppPicker\n * file for the full statement; this part is additionally the one with no styled root to forward them to,\n * because PopupMenu.tsx's outermost element is a bare <div>.\n */\nexport declare namespace PopupMenuT {\n export interface RequiredProps {\n /** The consumer-authored configuration object for this toolbar item. */\n componentProps: DSGlobalHeaderT.PopupMenuComponentProps;\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: HTMLElement) => void;\n }\n\n /*\n * Intentionally empty, and intentionally still declared \u2014 \"this part has no default props, do not\n * expect them\". See the AppPicker sibling for the full reasoning.\n */\n export interface DefaultProps {}\n\n export interface OptionalProps {\n Icon?: React.ComponentType<SvgIconT.Props>;\n onClick?: (event: React.MouseEvent) => void;\n /*\n * Carries the toolbar item's `label`: GlobalHeaderToolbar renders <PopupMenu title={label} .../>.\n * Faithful to the current declaration, including its standing note that landing this in the HTML\n * `title` attribute was probably not intended but is kept to avoid a breaking change.\n */\n title?: string;\n }\n\n export interface Props\n extends\n Partial<DefaultProps>,\n OptionalProps,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n keyof RequiredProps | keyof DefaultProps | keyof OptionalProps | keyof XstyledProps\n >,\n XstyledProps,\n RequiredProps {}\n\n export interface InternalProps\n extends\n DefaultProps,\n OptionalProps,\n Omit<\n GlobalAttributesT<HTMLButtonElement>,\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n keyof RequiredProps | keyof DefaultProps | keyof OptionalProps | keyof XstyledProps\n >,\n XstyledProps,\n RequiredProps {}\n}\n\nexport const PopupMenuPropTypes: DSPropTypesSchema<PopupMenuT.Props> = {\n ...globalAttributesPropTypes,\n ...xstyledPropTypes,\n componentProps: PropTypes.object.description(\n 'The consumer-authored popup menu configuration: options, isOpen, closeOnClick and the key 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: HTMLElement ) => void )').isRequired,\n Icon: PropTypes.func.description('Icon rendered inside the trigger button'),\n onClick: PropTypes.func\n .description('Consumer click handler for the trigger, invoked alongside the internal open/close toggle')\n .signature('(( event: React.MouseEvent ) => void )'),\n title: PropTypes.string.description(\n 'Receives the toolbar item label; printed as the HTML title attribute on the trigger',\n ),\n};\n\nexport const PopupMenuPropTypesSchema = PopupMenuPropTypes as unknown as ValidationMap<PopupMenuT.Props>;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,8BAAuE;AAuFhE,MAAM,qBAA0D;AAAA,EACrE,GAAG;AAAA,EACH,GAAG;AAAA,EACH,gBAAgB,kCAAU,OAAO;AAAA,IAC/B;AAAA,EACF,EAAE;AAAA,EACF,+CAA+C,kCAAU,KACtD;AAAA,IACC;AAAA,EACF,EACC,UAAU,gDAAgD,EAAE;AAAA,EAC/D,QAAQ,kCAAU,KACf,YAAY,uFAAuF,EACnG,UAAU,iCAAiC,EAAE;AAAA,EAChD,MAAM,kCAAU,KAAK,YAAY,yCAAyC;AAAA,EAC1E,SAAS,kCAAU,KAChB,YAAY,0FAA0F,EACtG,UAAU,wCAAwC;AAAA,EACrD,OAAO,kCAAU,OAAO;AAAA,IACtB;AAAA,EACF;AACF;AAEO,MAAM,2BAA2B;",
6
+ "names": []
7
+ }
@@ -37,11 +37,12 @@ var import_ds_button_v2 = require("@elliemae/ds-button-v2");
37
37
  var import_ds_form_input_text = require("@elliemae/ds-form-input-text");
38
38
  var import_ds_grid = require("@elliemae/ds-grid");
39
39
  var import_ds_icons = require("@elliemae/ds-icons");
40
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
40
41
  var import_ds_system = require("@elliemae/ds-system");
41
42
  var import_react = __toESM(require("react"));
42
- var import_DSGlobalHeaderContext = require("../../../../DSGlobalHeaderContext.js");
43
43
  var import_constants = require("../../../../constants/index.js");
44
44
  var import_SearchToggleSpinButton = require("./SearchToggleSpinButton.js");
45
+ var import_react_desc_prop_types = require("./react-desc-prop-types.js");
45
46
  var import_useSearchToggle = require("./useSearchToggle.js");
46
47
  const StyledNavSearchBoxContainer = (0, import_ds_system.styled)("div", {
47
48
  name: import_constants.DSGlobalHeaderName,
@@ -126,10 +127,17 @@ const SearchToggle = (outOfTheBoxDrilledDownProps) => {
126
127
  const {
127
128
  componentProps,
128
129
  label,
130
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader,
129
131
  // added in https://jira.elliemae.io/browse/PUI-17852
130
132
  // keeping the default value as "Close search" for backward compatibility
131
133
  // we expect authors to provide descriptive aria-labels that fit their specific context, we do so in our example stories.
132
- ariaLabelExpanded = "Close search"
134
+ // The default now comes from this part's own defaultProps rather than being repeated inline, so the
135
+ // documented contract and the runtime behaviour cannot drift apart.
136
+ ariaLabelExpanded = import_react_desc_prop_types.defaultProps.ariaLabelExpanded,
137
+ // Everything else the toolbar drilled down, which is where item-level global attributes arrive.
138
+ // `setRef` and `instanceUID` ride along in here too and are filtered out by getGlobalAttributes'
139
+ // own whitelist, so they never reach the DOM.
140
+ ...restIncludingItemLevelGlobalAttributes
133
141
  } = outOfTheBoxDrilledDownProps;
134
142
  const {
135
143
  isOpenUncontrolled,
@@ -137,12 +145,10 @@ const SearchToggle = (outOfTheBoxDrilledDownProps) => {
137
145
  handleToggleSearch,
138
146
  handleContainerKeyDown,
139
147
  handleChange,
140
- handleInputKeyDown,
141
148
  handleTriggerRefs,
142
149
  inputId,
143
150
  panelId
144
151
  } = (0, import_useSearchToggle.useSearchToggle)(outOfTheBoxDrilledDownProps);
145
- const { props: propsWithDefault } = import_react.default.useContext(import_DSGlobalHeaderContext.DSGlobalHeaderContext);
146
152
  const {
147
153
  onNext,
148
154
  onPrevious,
@@ -155,14 +161,19 @@ const SearchToggle = (outOfTheBoxDrilledDownProps) => {
155
161
  isOpen: userIsOpen,
156
162
  searchContainerRef
157
163
  } = componentProps;
158
- const getOwnerProps = import_react.default.useCallback(() => propsWithDefault, [propsWithDefault]);
159
- const getOwnerPropsArguments = import_react.default.useCallback(() => ({}), []);
164
+ const noSlotArguments = import_react.default.useCallback(() => ({}), []);
160
165
  const isOpen = userIsOpen ?? isOpenUncontrolled;
166
+ const itemLevelGlobalAttributes = (0, import_ds_props_helpers.getGlobalAttributes)(
167
+ restIncludingItemLevelGlobalAttributes
168
+ );
161
169
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
162
170
  StyledNavSearchBoxContainer,
163
171
  {
164
- getOwnerProps,
165
- getOwnerPropsArguments,
172
+ "data-testid": import_constants.GLOBAL_HEADER_DATA_TESTID.MENUBAR_SEARCH_TOGGLE_CONTAINER,
173
+ ...itemLevelGlobalAttributes,
174
+ ...(0, import_ds_props_helpers.getXstyledProps)(restIncludingItemLevelGlobalAttributes),
175
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
176
+ getOwnerPropsArguments: noSlotArguments,
166
177
  onKeyDown: handleContainerKeyDown,
167
178
  innerRef: (0, import_ds_system.mergeRefs)(searchContainerRef, containerRef),
168
179
  isOpen,
@@ -170,8 +181,8 @@ const SearchToggle = (outOfTheBoxDrilledDownProps) => {
170
181
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
171
182
  StyledToggleBtn,
172
183
  {
173
- getOwnerProps,
174
- getOwnerPropsArguments,
184
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
185
+ getOwnerPropsArguments: noSlotArguments,
175
186
  buttonType: "icon",
176
187
  innerRef: handleTriggerRefs,
177
188
  "aria-label": isOpen ? ariaLabelExpanded : label,
@@ -186,8 +197,8 @@ const SearchToggle = (outOfTheBoxDrilledDownProps) => {
186
197
  isOpen ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
187
198
  StyledSearchNavContainer,
188
199
  {
189
- getOwnerProps,
190
- getOwnerPropsArguments,
200
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
201
+ getOwnerPropsArguments: noSlotArguments,
191
202
  id: panelId,
192
203
  alignItems: "center",
193
204
  cols: ["1fr", "1fr"],
@@ -195,15 +206,15 @@ const SearchToggle = (outOfTheBoxDrilledDownProps) => {
195
206
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
196
207
  StyledSearchInput,
197
208
  {
198
- getOwnerProps,
199
- getOwnerPropsArguments,
209
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
210
+ getOwnerPropsArguments: noSlotArguments,
200
211
  id: inputId,
212
+ "aria-label": import_constants.SEARCH_TOGGLE_DEFAULT_ARIA_LABEL,
201
213
  placeholder: placeholder || "Search...",
202
214
  value,
203
215
  clearable: true,
204
216
  ...onBlur && { onBlur },
205
217
  onChange: handleChange,
206
- onKeyDown: handleInputKeyDown,
207
218
  onClear
208
219
  }
209
220
  ),
@@ -213,7 +224,8 @@ const SearchToggle = (outOfTheBoxDrilledDownProps) => {
213
224
  onNext,
214
225
  onPrevious,
215
226
  currentResultIndex,
216
- totalResults
227
+ totalResults,
228
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader
217
229
  }
218
230
  )
219
231
  ]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggle.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { DSInputText } from '@elliemae/ds-form-input-text';\nimport { Grid } from '@elliemae/ds-grid';\nimport { Search } from '@elliemae/ds-icons';\nimport { css, mergeRefs, styled } from '@elliemae/ds-system';\nimport React from 'react';\nimport { DSGlobalHeaderContext } from '../../../../DSGlobalHeaderContext.js';\nimport { DSGlobalHeaderName, GLOBAL_HEADER_DATA_TESTID, GLOBAL_HEADER_SLOTS } from '../../../../constants/index.js';\nimport type { DSGlobalHeaderT } from '../../../../react-desc-prop-types.js';\nimport { SearchToggleSpinButton } from './SearchToggleSpinButton.js';\nimport { useSearchToggle } from './useSearchToggle.js';\n\nconst StyledNavSearchBoxContainer = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.MENUBAR_SEARCH_TOGGLE_CONTAINER,\n})<{ isOpen: boolean }>`\n background: ${({ theme, isOpen }) => (isOpen ? theme.colors.neutral['000'] : 'transparent')};\n position: relative;\n display: flex;\n align-items: center;\n width: ${({ isOpen }) => (isOpen ? '260px' : 'auto')};\n & .em-ds-button {\n margin-right: 2px;\n height: 24px;\n width: 24px;\n }\n`;\n\nconst StyledSearchNavContainer = styled(Grid, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_EXPANDED_CONTENT_WRAPPER,\n})`\n background: ${({ theme }) => theme.colors.neutral['000']};\n position: relative;\n padding: 2px;\n`;\n\nconst StyledSearchInput = styled(DSInputText, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_TEXTINPUT,\n})``;\n\nconst ExpandedToggleBtnStyles = css`\n margin-left: 2px;\n`;\nconst CollapsedToggleBtnStyles = css`\n height: 3.077rem;\n width: 3.077rem;\n border: none;\n background-color: transparent;\n cursor: pointer;\n position: relative;\n\n // we want to avoid the pseudo-border in the nested buttons\n & button:focus .pseudo-border {\n outline: none;\n border: none;\n }\n && span.pseudo-border {\n display: none;\n }\n\n // our \"ad-hoc\" styling of the DSButtonV3 that re-implement changed colors/focus-borders\n & .em-ds-icon svg {\n fill: ${({ theme }) => theme.colors.neutral['000']};\n }\n\n &&:hover {\n background-color: ${({ theme }) => theme.colors.brand[700]};\n }\n\n &&:focus-visible {\n background-color: transparent;\n }\n\n &&:focus-visible::before {\n content: '';\n position: absolute;\n z-index: 2;\n top: 2px;\n left: 2px;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 2px solid ${({ theme }) => theme.colors.neutral['000']};\n border-radius: 4px;\n pointer-events: none;\n }\n`;\n\nconst StyledToggleBtn = styled(DSButtonV3, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_TRIGGER_BUTTON,\n})<{ isOpen: boolean }>`\n ${({ isOpen }) => (!isOpen ? CollapsedToggleBtnStyles : ExpandedToggleBtnStyles)}\n`;\n\nexport const SearchToggle = (outOfTheBoxDrilledDownProps: DSGlobalHeaderT.SearchToggleProps): JSX.Element => {\n const {\n componentProps,\n label,\n // added in https://jira.elliemae.io/browse/PUI-17852\n // keeping the default value as \"Close search\" for backward compatibility\n // we expect authors to provide descriptive aria-labels that fit their specific context, we do so in our example stories.\n ariaLabelExpanded = 'Close search',\n } = outOfTheBoxDrilledDownProps;\n\n const {\n isOpenUncontrolled,\n containerRef,\n handleToggleSearch,\n handleContainerKeyDown,\n handleChange,\n handleInputKeyDown,\n handleTriggerRefs,\n inputId,\n panelId,\n } = useSearchToggle(outOfTheBoxDrilledDownProps);\n const { props: propsWithDefault } = React.useContext(DSGlobalHeaderContext);\n\n const {\n onNext,\n onPrevious,\n currentResultIndex,\n totalResults,\n placeholder,\n value,\n onBlur,\n onClear,\n isOpen: userIsOpen,\n searchContainerRef,\n } = componentProps;\n\n const getOwnerProps = React.useCallback(() => propsWithDefault, [propsWithDefault]);\n const getOwnerPropsArguments = React.useCallback(() => ({}), []);\n const isOpen = userIsOpen ?? isOpenUncontrolled;\n\n return (\n <StyledNavSearchBoxContainer\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n onKeyDown={handleContainerKeyDown}\n innerRef={mergeRefs(searchContainerRef, containerRef)}\n isOpen={isOpen}\n >\n <StyledToggleBtn\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n buttonType=\"icon\"\n innerRef={handleTriggerRefs}\n aria-label={isOpen ? ariaLabelExpanded : label}\n aria-expanded={isOpen}\n aria-controls={panelId}\n onClick={handleToggleSearch}\n isOpen={isOpen}\n data-testid={GLOBAL_HEADER_DATA_TESTID.SEARCH_TOGGLE_TRIGGER_BUTTON}\n >\n <Search color={isOpen ? ['brand-primary', '800'] : ['neutral', '0']} />\n </StyledToggleBtn>\n\n {isOpen ? (\n <StyledSearchNavContainer\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n id={panelId}\n alignItems=\"center\"\n cols={['1fr', '1fr']}\n >\n <StyledSearchInput\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n id={inputId}\n placeholder={placeholder || 'Search...'}\n value={value}\n clearable\n // passing onBlur as {undefined} breaks the input text focus ring management\n // if onBlur is not provided, we don't pass the prop at all\n // this is not expected as confirmed in conversation with Gerardo\n // we are not going to implement the fix right now to avoid potential breaking changes,\n // but we will keep an eye on this behavior and consider a fix in the future if needed.\n {...(onBlur && { onBlur })}\n onChange={handleChange}\n onKeyDown={handleInputKeyDown}\n onClear={onClear}\n />\n\n <SearchToggleSpinButton\n onNext={onNext}\n onPrevious={onPrevious}\n currentResultIndex={currentResultIndex}\n totalResults={totalResults}\n />\n </StyledSearchNavContainer>\n ) : null}\n </StyledNavSearchBoxContainer>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { DSInputText } from '@elliemae/ds-form-input-text';\nimport { Grid } from '@elliemae/ds-grid';\nimport { Search } from '@elliemae/ds-icons';\nimport { getGlobalAttributes, getXstyledProps } from '@elliemae/ds-props-helpers';\nimport { css, mergeRefs, styled } from '@elliemae/ds-system';\nimport React from 'react';\nimport {\n DSGlobalHeaderName,\n GLOBAL_HEADER_DATA_TESTID,\n GLOBAL_HEADER_SLOTS,\n SEARCH_TOGGLE_DEFAULT_ARIA_LABEL,\n} from '../../../../constants/index.js';\nimport { SearchToggleSpinButton } from './SearchToggleSpinButton.js';\nimport { defaultProps, type SearchToggleT } from './react-desc-prop-types.js';\nimport { useSearchToggle } from './useSearchToggle.js';\n\nconst StyledNavSearchBoxContainer = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.MENUBAR_SEARCH_TOGGLE_CONTAINER,\n})<{ isOpen: boolean }>`\n background: ${({ theme, isOpen }) => (isOpen ? theme.colors.neutral['000'] : 'transparent')};\n position: relative;\n display: flex;\n align-items: center;\n width: ${({ isOpen }) => (isOpen ? '260px' : 'auto')};\n & .em-ds-button {\n margin-right: 2px;\n height: 24px;\n width: 24px;\n }\n`;\n\nconst StyledSearchNavContainer = styled(Grid, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_EXPANDED_CONTENT_WRAPPER,\n})`\n background: ${({ theme }) => theme.colors.neutral['000']};\n position: relative;\n padding: 2px;\n`;\n\nconst StyledSearchInput = styled(DSInputText, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_TEXTINPUT,\n})``;\n\nconst ExpandedToggleBtnStyles = css`\n margin-left: 2px;\n`;\nconst CollapsedToggleBtnStyles = css`\n height: 3.077rem;\n width: 3.077rem;\n border: none;\n background-color: transparent;\n cursor: pointer;\n position: relative;\n\n // we want to avoid the pseudo-border in the nested buttons\n & button:focus .pseudo-border {\n outline: none;\n border: none;\n }\n && span.pseudo-border {\n display: none;\n }\n\n // our \"ad-hoc\" styling of the DSButtonV3 that re-implement changed colors/focus-borders\n & .em-ds-icon svg {\n fill: ${({ theme }) => theme.colors.neutral['000']};\n }\n\n &&:hover {\n background-color: ${({ theme }) => theme.colors.brand[700]};\n }\n\n &&:focus-visible {\n background-color: transparent;\n }\n\n &&:focus-visible::before {\n content: '';\n position: absolute;\n z-index: 2;\n top: 2px;\n left: 2px;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 2px solid ${({ theme }) => theme.colors.neutral['000']};\n border-radius: 4px;\n pointer-events: none;\n }\n`;\n\nconst StyledToggleBtn = styled(DSButtonV3, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_TRIGGER_BUTTON,\n})<{ isOpen: boolean }>`\n ${({ isOpen }) => (!isOpen ? CollapsedToggleBtnStyles : ExpandedToggleBtnStyles)}\n`;\n\nexport const SearchToggle = (outOfTheBoxDrilledDownProps: SearchToggleT.Props): JSX.Element => {\n const {\n componentProps,\n label,\n getOwnerPropsAwareOfPropsPassedToGlobalHeader,\n // added in https://jira.elliemae.io/browse/PUI-17852\n // keeping the default value as \"Close search\" for backward compatibility\n // we expect authors to provide descriptive aria-labels that fit their specific context, we do so in our example stories.\n // The default now comes from this part's own defaultProps rather than being repeated inline, so the\n // documented contract and the runtime behaviour cannot drift apart.\n ariaLabelExpanded = defaultProps.ariaLabelExpanded,\n // Everything else the toolbar drilled down, which is where item-level global attributes arrive.\n // `setRef` and `instanceUID` ride along in here too and are filtered out by getGlobalAttributes'\n // own whitelist, so they never reach the DOM.\n ...restIncludingItemLevelGlobalAttributes\n } = outOfTheBoxDrilledDownProps;\n\n const {\n isOpenUncontrolled,\n containerRef,\n handleToggleSearch,\n handleContainerKeyDown,\n handleChange,\n handleTriggerRefs,\n inputId,\n panelId,\n } = useSearchToggle(outOfTheBoxDrilledDownProps);\n\n const {\n onNext,\n onPrevious,\n currentResultIndex,\n totalResults,\n placeholder,\n value,\n onBlur,\n onClear,\n isOpen: userIsOpen,\n searchContainerRef,\n } = componentProps;\n\n /*\n * Explicit and empty hydrator, shared by this part's slot render sites: `getOwnerPropsArguments` feeds\n * function-form slot props and nothing else, and none of the elements below carry render-time values\n * worth passing. Stated so \"what arguments does this slot get?\" is always answerable at the call site.\n */\n const noSlotArguments = React.useCallback(() => ({}), []);\n const isOpen = userIsOpen ?? isOpenUncontrolled;\n /*\n * Item-level global attributes, forwarded onto this part's ROOT container \u2014 NOT onto its trigger button,\n * which is where the sibling item types put theirs. Two reasons, and both matter if you move it:\n *\n * - The trigger is a DSButtonV3, whose own prop vocabulary collides with the HTML global set: `shape`\n * is `ButtonShapesT` there and the `<area>` attribute in GlobalAttributesT, and `onClick` takes a\n * wider event union. Spreading the whole set onto it does not type-check, and narrowing it would\n * forward less than the siblings do.\n * - The container is what this item type renders AS; the button is a child of it. Attributes describing\n * the toolbar item belong on the item's root.\n *\n * Consequence for selector authors: `data-public` lands on the element wrapping the whole search area,\n * not on the icon button.\n */\n const itemLevelGlobalAttributes = getGlobalAttributes<typeof restIncludingItemLevelGlobalAttributes, HTMLDivElement>(\n restIncludingItemLevelGlobalAttributes,\n );\n\n return (\n <StyledNavSearchBoxContainer\n // Legacy data-testid \u2014 breaking change if removed/changed (see project_compatibility.md)\n data-testid={GLOBAL_HEADER_DATA_TESTID.MENUBAR_SEARCH_TOGGLE_CONTAINER}\n // Spread FIRST, so the props below win on the keys they own \u2014 the opposite order from PopupMenu and\n // AppPicker, which spread theirs last. Here the internal keys are live state rather than defaults:\n // `onKeyDown` carries Escape-collapses and `innerRef` carries the consumer's own searchContainerRef.\n // An item-level attribute overwriting either is a regression, not an override. Everything a consumer\n // legitimately sets at this level \u2014 data attributes, id, title \u2014 is unaffected, since nothing below\n // claims those keys.\n {...itemLevelGlobalAttributes}\n // The part-level xstyled layer, which the contract advertises \u2014 this is the element that serves it.\n {...getXstyledProps(restIncludingItemLevelGlobalAttributes)}\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n onKeyDown={handleContainerKeyDown}\n innerRef={mergeRefs(searchContainerRef, containerRef)}\n isOpen={isOpen}\n >\n <StyledToggleBtn\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n buttonType=\"icon\"\n innerRef={handleTriggerRefs}\n aria-label={isOpen ? ariaLabelExpanded : label}\n aria-expanded={isOpen}\n aria-controls={panelId}\n onClick={handleToggleSearch}\n isOpen={isOpen}\n data-testid={GLOBAL_HEADER_DATA_TESTID.SEARCH_TOGGLE_TRIGGER_BUTTON}\n >\n <Search color={isOpen ? ['brand-primary', '800'] : ['neutral', '0']} />\n </StyledToggleBtn>\n\n {isOpen ? (\n <StyledSearchNavContainer\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n id={panelId}\n alignItems=\"center\"\n cols={['1fr', '1fr']}\n >\n <StyledSearchInput\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n id={inputId}\n // PUI-17973 \u2014 default accessible name guiding users to the result navigation; a\n // consumer-supplied aria-label (via the textinput slot) overrides this.\n aria-label={SEARCH_TOGGLE_DEFAULT_ARIA_LABEL}\n placeholder={placeholder || 'Search...'}\n value={value}\n clearable\n // passing onBlur as {undefined} breaks the input text focus ring management\n // if onBlur is not provided, we don't pass the prop at all\n // this is not expected as confirmed in conversation with Gerardo\n // we are not going to implement the fix right now to avoid potential breaking changes,\n // but we will keep an eye on this behavior and consider a fix in the future if needed.\n {...(onBlur && { onBlur })}\n onChange={handleChange}\n onClear={onClear}\n />\n <SearchToggleSpinButton\n onNext={onNext}\n onPrevious={onPrevious}\n currentResultIndex={currentResultIndex}\n totalResults={totalResults}\n getOwnerPropsAwareOfPropsPassedToGlobalHeader={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n />\n </StyledSearchNavContainer>\n ) : null}\n </StyledNavSearchBoxContainer>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": ["React"]
7
7
  }
@@ -37,7 +37,6 @@ var import_ds_button_v2 = require("@elliemae/ds-button-v2");
37
37
  var import_ds_icons = require("@elliemae/ds-icons");
38
38
  var import_ds_system = require("@elliemae/ds-system");
39
39
  var import_react = __toESM(require("react"));
40
- var import_DSGlobalHeaderContext = require("../../../../DSGlobalHeaderContext.js");
41
40
  var import_constants = require("../../../../constants/index.js");
42
41
  const StyledToolbarRightAddonsWrapper = (0, import_ds_system.styled)("div", {
43
42
  name: import_constants.DSGlobalHeaderName,
@@ -69,7 +68,7 @@ const StyledResultTracker = (0, import_ds_system.styled)("div", {
69
68
  slot: import_constants.GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_TEXT
70
69
  })`
71
70
  padding: 0 8px;
72
- color: #a2a9b6; // this is color picked from the placeholder, specs doesn't specify
71
+ color: ${({ theme }) => theme.colors.neutral["500"]};
73
72
  white-space: nowrap;
74
73
  word-spacing: 2px;
75
74
  outline: none;
@@ -81,17 +80,16 @@ const StyledVerticalSeparator = (0, import_ds_system.styled)("div", {
81
80
  height: 20px;
82
81
  border-right: 1px solid #a2a9b6;
83
82
  `;
84
- const StyledPrevBtn = (0, import_ds_system.styled)(import_ds_button_v2.DSButtonV3, {
83
+ const StyledSpinbuttonPrevSlotBtn = (0, import_ds_system.styled)(import_ds_button_v2.DSButtonV3, {
85
84
  name: import_constants.DSGlobalHeaderName,
86
85
  slot: import_constants.GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_PREV
87
86
  })``;
88
- const StyledNextBtn = (0, import_ds_system.styled)(import_ds_button_v2.DSButtonV3, {
87
+ const StyledSpinbuttonNextSlotBtn = (0, import_ds_system.styled)(import_ds_button_v2.DSButtonV3, {
89
88
  name: import_constants.DSGlobalHeaderName,
90
89
  slot: import_constants.GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_NEXT
91
90
  })``;
92
91
  const SearchToggleSpinButton = import_react.default.memo((props) => {
93
- const { onNext, onPrevious, currentResultIndex, totalResults } = props;
94
- const { props: propsWithDefault } = import_react.default.useContext(import_DSGlobalHeaderContext.DSGlobalHeaderContext);
92
+ const { onNext, onPrevious, currentResultIndex, totalResults, getOwnerPropsAwareOfPropsPassedToGlobalHeader } = props;
95
93
  const shouldShowNoResearchOngoing = currentResultIndex === -1 && !totalResults;
96
94
  const canShowFullResults = !shouldShowNoResearchOngoing && currentResultIndex !== -1;
97
95
  const shouldFallbackToTotalResultsOnly = !shouldShowNoResearchOngoing && !canShowFullResults;
@@ -117,50 +115,63 @@ const SearchToggleSpinButton = import_react.default.memo((props) => {
117
115
  },
118
116
  [onNext, onPrevious]
119
117
  );
120
- const getOwnerProps = import_react.default.useCallback(() => propsWithDefault, [propsWithDefault]);
121
- const getOwnerPropsArguments = import_react.default.useCallback(() => ({}), []);
122
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(StyledToolbarRightAddonsWrapper, { getOwnerProps, getOwnerPropsArguments, children: [
123
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
124
- StyledResultTracker,
125
- {
126
- getOwnerProps,
127
- getOwnerPropsArguments,
128
- role: "spinbutton",
129
- "aria-valuenow": currentResultIndex + 1,
130
- "aria-valuemin": 1,
131
- "aria-valuemax": totalResults,
132
- "aria-valuetext": ariaResultsText,
133
- tabIndex: 0,
134
- onKeyDown: handleKeyDown,
135
- children: resultText
136
- }
137
- ),
138
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledVerticalSeparator, { getOwnerProps, getOwnerPropsArguments }),
139
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
140
- StyledPrevBtn,
141
- {
142
- getOwnerProps,
143
- getOwnerPropsArguments,
144
- buttonType: "icon",
145
- onClick: onNext,
146
- "aria-label": "Next search result",
147
- tabIndex: -1,
148
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronDown, { color: ["brand-primary", "800"] })
149
- }
150
- ),
151
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
152
- StyledNextBtn,
153
- {
154
- getOwnerProps,
155
- getOwnerPropsArguments,
156
- buttonType: "icon",
157
- onClick: onPrevious,
158
- "aria-label": "Previous search result",
159
- tabIndex: -1,
160
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronUp, { color: ["brand-primary", "800"] })
161
- }
162
- )
163
- ] });
118
+ const noSlotArguments = import_react.default.useCallback(() => ({}), []);
119
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
120
+ StyledToolbarRightAddonsWrapper,
121
+ {
122
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
123
+ getOwnerPropsArguments: noSlotArguments,
124
+ children: [
125
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
126
+ StyledResultTracker,
127
+ {
128
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
129
+ getOwnerPropsArguments: noSlotArguments,
130
+ role: "spinbutton",
131
+ "aria-label": "Search results",
132
+ "aria-valuenow": currentResultIndex + 1,
133
+ "aria-valuemin": 1,
134
+ "aria-valuemax": totalResults,
135
+ "aria-valuetext": ariaResultsText,
136
+ tabIndex: 0,
137
+ onKeyDown: handleKeyDown,
138
+ children: resultText
139
+ }
140
+ ),
141
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
142
+ StyledVerticalSeparator,
143
+ {
144
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
145
+ getOwnerPropsArguments: noSlotArguments
146
+ }
147
+ ),
148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
149
+ StyledSpinbuttonNextSlotBtn,
150
+ {
151
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
152
+ getOwnerPropsArguments: noSlotArguments,
153
+ buttonType: "icon",
154
+ onClick: onNext,
155
+ "aria-label": "Next search result",
156
+ tabIndex: -1,
157
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronDown, { color: ["brand-primary", "800"] })
158
+ }
159
+ ),
160
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
161
+ StyledSpinbuttonPrevSlotBtn,
162
+ {
163
+ getOwnerProps: getOwnerPropsAwareOfPropsPassedToGlobalHeader,
164
+ getOwnerPropsArguments: noSlotArguments,
165
+ buttonType: "icon",
166
+ onClick: onPrevious,
167
+ "aria-label": "Previous search result",
168
+ tabIndex: -1,
169
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronUp, { color: ["brand-primary", "800"] })
170
+ }
171
+ )
172
+ ]
173
+ }
174
+ );
164
175
  });
165
176
  SearchToggleSpinButton.displayName = "SearchToggleSpinButton";
166
177
  //# sourceMappingURL=SearchToggleSpinButton.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/parts/Toolbar/outOfTheBox/SearchToggle/SearchToggleSpinButton.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { ChevronDown, ChevronUp } from '@elliemae/ds-icons';\nimport { styled } from '@elliemae/ds-system';\nimport React from 'react';\nimport { DSGlobalHeaderContext } from '../../../../DSGlobalHeaderContext.js';\nimport { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from '../../../../constants/index.js';\n\nconst StyledToolbarRightAddonsWrapper = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_WRAPPER,\n})`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative; // to position the focus-within outline\n :focus-within {\n ::after {\n content: '';\n position: absolute;\n width: calc(100% - 2px);\n height: 100%;\n border: brand-700 2px solid;\n margin: -1px;\n pointer-events: none;\n }\n }\n // we want to avoid the pseudo-border in the nested buttons\n & button:focus .pseudo-border {\n outline: none;\n border: none;\n }\n`;\nconst StyledResultTracker = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_TEXT,\n})`\n padding: 0 8px;\n color: #a2a9b6; // this is color picked from the placeholder, specs doesn't specify\n white-space: nowrap;\n word-spacing: 2px;\n outline: none;\n`;\nconst StyledVerticalSeparator = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_SEPARATOR,\n})`\n height: 20px;\n border-right: 1px solid #a2a9b6;\n`;\n// why? because when we add slots support, this should be a slot too, to customize aria-labels\nconst StyledPrevBtn = styled(DSButtonV3, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_PREV,\n})``;\nconst StyledNextBtn = styled(DSButtonV3, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_NEXT,\n})``;\n\ninterface SearchToggleSpinButtonPropsT {\n onNext: () => void;\n onPrevious: () => void;\n currentResultIndex: number;\n totalResults: number;\n}\n\nexport const SearchToggleSpinButton = React.memo((props: SearchToggleSpinButtonPropsT) => {\n const { onNext, onPrevious, currentResultIndex, totalResults } = props;\n const { props: propsWithDefault } = React.useContext(DSGlobalHeaderContext);\n\n const shouldShowNoResearchOngoing = currentResultIndex === -1 && !totalResults;\n const canShowFullResults = !shouldShowNoResearchOngoing && currentResultIndex !== -1;\n const shouldFallbackToTotalResultsOnly = !shouldShowNoResearchOngoing && !canShowFullResults;\n let resultText = 'n/a';\n let ariaResultsText = 'no research ongoing';\n if (canShowFullResults) {\n resultText = `${currentResultIndex + 1} / ${totalResults}`;\n ariaResultsText = `result ${currentResultIndex + 1} of ${totalResults}`;\n }\n if (shouldFallbackToTotalResultsOnly) {\n resultText = `${totalResults}`;\n ariaResultsText = `${totalResults} total results`;\n }\n\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n onNext();\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n onPrevious();\n }\n },\n [onNext, onPrevious],\n );\n const getOwnerProps = React.useCallback(() => propsWithDefault, [propsWithDefault]);\n const getOwnerPropsArguments = React.useCallback(() => ({}), []);\n\n return (\n <StyledToolbarRightAddonsWrapper getOwnerProps={getOwnerProps} getOwnerPropsArguments={getOwnerPropsArguments}>\n <StyledResultTracker\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n role=\"spinbutton\"\n aria-valuenow={currentResultIndex + 1}\n aria-valuemin={1}\n aria-valuemax={totalResults}\n aria-valuetext={ariaResultsText}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n >\n {resultText}\n </StyledResultTracker>\n <StyledVerticalSeparator getOwnerProps={getOwnerProps} getOwnerPropsArguments={getOwnerPropsArguments} />\n <StyledPrevBtn\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n buttonType=\"icon\"\n onClick={onNext}\n aria-label=\"Next search result\"\n tabIndex={-1} // part of a spinbutton, so remove from tab order\n >\n <ChevronDown color={['brand-primary', '800']} />\n </StyledPrevBtn>\n <StyledNextBtn\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n buttonType=\"icon\"\n onClick={onPrevious}\n aria-label=\"Previous search result\"\n tabIndex={-1} // part of a spinbutton, so remove from tab order\n >\n <ChevronUp color={['brand-primary', '800']} />\n </StyledNextBtn>\n </StyledToolbarRightAddonsWrapper>\n );\n});\n\nSearchToggleSpinButton.displayName = 'SearchToggleSpinButton';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { ChevronDown, ChevronUp } from '@elliemae/ds-icons';\nimport { styled } from '@elliemae/ds-system';\nimport React from 'react';\nimport { DSGlobalHeaderName, GLOBAL_HEADER_SLOTS } from '../../../../constants/index.js';\nimport type { SearchToggleT } from './react-desc-prop-types.js';\n\nconst StyledToolbarRightAddonsWrapper = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_WRAPPER,\n})`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative; // to position the focus-within outline\n :focus-within {\n ::after {\n content: '';\n position: absolute;\n width: calc(100% - 2px);\n height: 100%;\n border: brand-700 2px solid;\n margin: -1px;\n pointer-events: none;\n }\n }\n // we want to avoid the pseudo-border in the nested buttons\n & button:focus .pseudo-border {\n outline: none;\n border: none;\n }\n`;\nconst StyledResultTracker = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_TEXT,\n})`\n padding: 0 8px;\n color: ${({ theme }) => theme.colors.neutral['500']};\n white-space: nowrap;\n word-spacing: 2px;\n outline: none;\n`;\nconst StyledVerticalSeparator = styled('div', {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_SEPARATOR,\n})`\n height: 20px;\n border-right: 1px solid #a2a9b6;\n`;\n// why? because when we add slots support, this should be a slot too, to customize aria-labels\nconst StyledSpinbuttonPrevSlotBtn = styled(DSButtonV3, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_PREV,\n})``;\nconst StyledSpinbuttonNextSlotBtn = styled(DSButtonV3, {\n name: DSGlobalHeaderName,\n slot: GLOBAL_HEADER_SLOTS.SEARCH_TOGGLE_SPINBUTTON_NEXT,\n})``;\n\ninterface SearchToggleSpinButtonPropsT {\n onNext: () => void;\n onPrevious: () => void;\n currentResultIndex: number;\n totalResults: number;\n // Drilled through SearchToggle from DSGlobalHeader \u2014 the slot lookup table, never the hydrator.\n getOwnerPropsAwareOfPropsPassedToGlobalHeader: SearchToggleT.Props['getOwnerPropsAwareOfPropsPassedToGlobalHeader'];\n}\n\nexport const SearchToggleSpinButton = React.memo((props: SearchToggleSpinButtonPropsT) => {\n const { onNext, onPrevious, currentResultIndex, totalResults, getOwnerPropsAwareOfPropsPassedToGlobalHeader } = props;\n\n const shouldShowNoResearchOngoing = currentResultIndex === -1 && !totalResults;\n const canShowFullResults = !shouldShowNoResearchOngoing && currentResultIndex !== -1;\n const shouldFallbackToTotalResultsOnly = !shouldShowNoResearchOngoing && !canShowFullResults;\n let resultText = 'n/a';\n let ariaResultsText = 'no research ongoing';\n if (canShowFullResults) {\n resultText = `${currentResultIndex + 1} / ${totalResults}`;\n ariaResultsText = `result ${currentResultIndex + 1} of ${totalResults}`;\n }\n if (shouldFallbackToTotalResultsOnly) {\n resultText = `${totalResults}`;\n ariaResultsText = `${totalResults} total results`;\n }\n\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n onNext();\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n onPrevious();\n }\n },\n [onNext, onPrevious],\n );\n // Explicit and empty: none of the spinbutton elements have render-time values worth handing to a\n // function-form slot prop. Stated rather than omitted.\n const noSlotArguments = React.useCallback(() => ({}), []);\n\n return (\n <StyledToolbarRightAddonsWrapper\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n >\n <StyledResultTracker\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n role=\"spinbutton\"\n aria-label=\"Search results\"\n aria-valuenow={currentResultIndex + 1}\n aria-valuemin={1}\n aria-valuemax={totalResults}\n aria-valuetext={ariaResultsText}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n >\n {resultText}\n </StyledResultTracker>\n <StyledVerticalSeparator\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n />\n <StyledSpinbuttonNextSlotBtn\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n buttonType=\"icon\"\n onClick={onNext}\n aria-label=\"Next search result\"\n tabIndex={-1} // part of a spinbutton, so remove from tab order\n >\n <ChevronDown color={['brand-primary', '800']} />\n </StyledSpinbuttonNextSlotBtn>\n <StyledSpinbuttonPrevSlotBtn\n getOwnerProps={getOwnerPropsAwareOfPropsPassedToGlobalHeader}\n getOwnerPropsArguments={noSlotArguments}\n buttonType=\"icon\"\n onClick={onPrevious}\n aria-label=\"Previous search result\"\n tabIndex={-1} // part of a spinbutton, so remove from tab order\n >\n <ChevronUp color={['brand-primary', '800']} />\n </StyledSpinbuttonPrevSlotBtn>\n </StyledToolbarRightAddonsWrapper>\n );\n});\n\nSearchToggleSpinButton.displayName = 'SearchToggleSpinButton';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": ["React"]
7
7
  }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var react_desc_prop_types_exports = {};
30
+ __export(react_desc_prop_types_exports, {
31
+ SearchTogglePropTypes: () => SearchTogglePropTypes,
32
+ SearchTogglePropTypesSchema: () => SearchTogglePropTypesSchema,
33
+ defaultProps: () => defaultProps
34
+ });
35
+ module.exports = __toCommonJS(react_desc_prop_types_exports);
36
+ var React = __toESM(require("react"));
37
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
38
+ const defaultProps = {
39
+ ariaLabelExpanded: "Close search"
40
+ };
41
+ const SearchTogglePropTypes = {
42
+ ...import_ds_props_helpers.globalAttributesPropTypes,
43
+ ...import_ds_props_helpers.xstyledPropTypes,
44
+ label: import_ds_props_helpers.PropTypes.string.description("Accessible name for the collapsed trigger, and the toolbar label").isRequired,
45
+ componentProps: import_ds_props_helpers.PropTypes.object.description(
46
+ "The consumer-authored search configuration: value, result counters and the change/clear/navigation handlers"
47
+ ).isRequired,
48
+ getOwnerPropsAwareOfPropsPassedToGlobalHeader: import_ds_props_helpers.PropTypes.func.description(
49
+ "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"
50
+ ).signature("(() => Partial<DSGlobalHeaderT.DefaultProps> )").isRequired,
51
+ setRef: import_ds_props_helpers.PropTypes.func.description("Registers the trigger node with the toolbar focus management for arrow-key navigation").signature("(( ref: HTMLButtonElement | null ) => void )").isRequired,
52
+ instanceUID: import_ds_props_helpers.PropTypes.string.description(
53
+ "Namespaces the input and panel DOM ids so multiple headers on a page do not collide on aria-controls"
54
+ ).isRequired,
55
+ ariaLabelExpanded: import_ds_props_helpers.PropTypes.string.description("Accessible name for the trigger once expanded (PUI-17852)").defaultValue("Close search")
56
+ };
57
+ const SearchTogglePropTypesSchema = SearchTogglePropTypes;
58
+ //# sourceMappingURL=react-desc-prop-types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/parts/Toolbar/outOfTheBox/SearchToggle/react-desc-prop-types.ts", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,8BAAuE;AAqFhE,MAAM,eAA2C;AAAA,EACtD,mBAAmB;AACrB;AAEO,MAAM,wBAAgE;AAAA,EAC3E,GAAG;AAAA,EACH,GAAG;AAAA,EACH,OAAO,kCAAU,OAAO,YAAY,kEAAkE,EAAE;AAAA,EACxG,gBAAgB,kCAAU,OAAO;AAAA,IAC/B;AAAA,EACF,EAAE;AAAA,EACF,+CAA+C,kCAAU,KACtD;AAAA,IACC;AAAA,EACF,EACC,UAAU,gDAAgD,EAAE;AAAA,EAC/D,QAAQ,kCAAU,KACf,YAAY,uFAAuF,EACnG,UAAU,8CAA8C,EAAE;AAAA,EAC7D,aAAa,kCAAU,OAAO;AAAA,IAC5B;AAAA,EACF,EAAE;AAAA,EACF,mBAAmB,kCAAU,OAC1B,YAAY,2DAA2D,EACvE,aAAa,cAAc;AAChC;AAEO,MAAM,8BAA8B;",
6
+ "names": []
7
+ }