@elliemae/ds-app-picker 3.70.0-next.6 → 3.70.0-next.60

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 (119) hide show
  1. package/dist/cjs/DSAppPicker.js +10 -141
  2. package/dist/cjs/DSAppPicker.js.map +3 -3
  3. package/dist/cjs/{utils.js → DSAppPickerCTX.js} +8 -25
  4. package/dist/cjs/DSAppPickerCTX.js.map +7 -0
  5. package/dist/cjs/config/useAppPicker.js +25 -8
  6. package/dist/cjs/config/useAppPicker.js.map +3 -3
  7. package/dist/cjs/config/useFocusTracker.js +104 -0
  8. package/dist/cjs/config/useFocusTracker.js.map +7 -0
  9. package/dist/cjs/config/useValidateProps.js +45 -0
  10. package/dist/cjs/config/useValidateProps.js.map +7 -0
  11. package/dist/cjs/constants/index.js +11 -1
  12. package/dist/cjs/constants/index.js.map +2 -2
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/package.json +1 -4
  15. package/dist/cjs/parts/AppPanel.js +152 -0
  16. package/dist/cjs/parts/AppPanel.js.map +7 -0
  17. package/dist/cjs/parts/AppPickerFloatingContext/AppPickerContent.js +94 -0
  18. package/dist/cjs/parts/AppPickerFloatingContext/AppPickerContent.js.map +7 -0
  19. package/dist/cjs/parts/AppPickerFloatingContext/useAppPickerFloatingContext.js +171 -0
  20. package/dist/cjs/parts/AppPickerFloatingContext/useAppPickerFloatingContext.js.map +7 -0
  21. package/dist/cjs/parts/AppPickerItem.js +104 -0
  22. package/dist/cjs/parts/AppPickerItem.js.map +7 -0
  23. package/dist/cjs/parts/AppSection.js +94 -0
  24. package/dist/cjs/parts/AppSection.js.map +7 -0
  25. package/dist/cjs/parts/Trigger.js +81 -0
  26. package/dist/cjs/parts/Trigger.js.map +7 -0
  27. package/dist/cjs/parts/shared-styles.js +44 -0
  28. package/dist/cjs/parts/shared-styles.js.map +7 -0
  29. package/dist/cjs/react-desc-prop-types.js +23 -7
  30. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  31. package/dist/cjs/typescript-testing/slot-props.js +48 -0
  32. package/dist/cjs/typescript-testing/slot-props.js.map +7 -0
  33. package/dist/cjs/typescript-testing/typescript-app-picker-valid.js +13 -1
  34. package/dist/cjs/typescript-testing/typescript-app-picker-valid.js.map +2 -2
  35. package/dist/cjs/util/getChipId.js +36 -0
  36. package/dist/cjs/util/getChipId.js.map +7 -0
  37. package/dist/cjs/util/getChipRegionId.js +37 -0
  38. package/dist/cjs/util/getChipRegionId.js.map +7 -0
  39. package/dist/esm/DSAppPicker.js +10 -141
  40. package/dist/esm/DSAppPicker.js.map +3 -3
  41. package/dist/esm/DSAppPickerCTX.js +8 -0
  42. package/dist/esm/DSAppPickerCTX.js.map +7 -0
  43. package/dist/esm/config/useAppPicker.js +29 -13
  44. package/dist/esm/config/useAppPicker.js.map +3 -3
  45. package/dist/esm/config/useFocusTracker.js +74 -0
  46. package/dist/esm/config/useFocusTracker.js.map +7 -0
  47. package/dist/esm/config/useValidateProps.js +15 -0
  48. package/dist/esm/config/useValidateProps.js.map +7 -0
  49. package/dist/esm/constants/index.js +11 -1
  50. package/dist/esm/constants/index.js.map +2 -2
  51. package/dist/esm/index.js.map +1 -1
  52. package/dist/esm/package.json +1 -4
  53. package/dist/esm/parts/AppPanel.js +127 -0
  54. package/dist/esm/parts/AppPanel.js.map +7 -0
  55. package/dist/esm/parts/AppPickerFloatingContext/AppPickerContent.js +64 -0
  56. package/dist/esm/parts/AppPickerFloatingContext/AppPickerContent.js.map +7 -0
  57. package/dist/esm/parts/AppPickerFloatingContext/useAppPickerFloatingContext.js +141 -0
  58. package/dist/esm/parts/AppPickerFloatingContext/useAppPickerFloatingContext.js.map +7 -0
  59. package/dist/esm/parts/AppPickerItem.js +74 -0
  60. package/dist/esm/parts/AppPickerItem.js.map +7 -0
  61. package/dist/esm/parts/AppSection.js +64 -0
  62. package/dist/esm/parts/AppSection.js.map +7 -0
  63. package/dist/esm/parts/Trigger.js +51 -0
  64. package/dist/esm/parts/Trigger.js.map +7 -0
  65. package/dist/esm/parts/shared-styles.js +14 -0
  66. package/dist/esm/parts/shared-styles.js.map +7 -0
  67. package/dist/esm/react-desc-prop-types.js +29 -8
  68. package/dist/esm/react-desc-prop-types.js.map +2 -2
  69. package/dist/esm/typescript-testing/slot-props.js +25 -0
  70. package/dist/esm/typescript-testing/slot-props.js.map +7 -0
  71. package/dist/esm/typescript-testing/typescript-app-picker-valid.js +13 -1
  72. package/dist/esm/typescript-testing/typescript-app-picker-valid.js.map +2 -2
  73. package/dist/esm/util/getChipId.js +6 -0
  74. package/dist/esm/util/getChipId.js.map +7 -0
  75. package/dist/esm/util/getChipRegionId.js +7 -0
  76. package/dist/esm/util/getChipRegionId.js.map +7 -0
  77. package/dist/types/DSAppPicker.d.ts +1 -2
  78. package/dist/types/DSAppPickerCTX.d.ts +6 -0
  79. package/dist/types/config/useAppPicker.d.ts +111 -92
  80. package/dist/types/config/useFocusTracker.d.ts +19 -0
  81. package/dist/types/config/useValidateProps.d.ts +3 -0
  82. package/dist/types/constants/index.d.ts +17 -7
  83. package/dist/types/parts/AppPanel.d.ts +2 -0
  84. package/dist/types/parts/AppPickerFloatingContext/AppPickerContent.d.ts +3 -0
  85. package/dist/types/parts/AppPickerFloatingContext/useAppPickerFloatingContext.d.ts +170 -0
  86. package/dist/types/parts/AppPickerItem.d.ts +11 -0
  87. package/dist/types/parts/AppSection.d.ts +6 -0
  88. package/dist/types/parts/Trigger.d.ts +13 -0
  89. package/dist/types/parts/shared-styles.d.ts +2 -0
  90. package/dist/types/react-desc-prop-types.d.ts +80 -9
  91. package/dist/types/util/getChipId.d.ts +2 -0
  92. package/dist/types/util/getChipRegionId.d.ts +1 -0
  93. package/package.json +19 -17
  94. package/dist/cjs/AppPickerImpl.js +0 -204
  95. package/dist/cjs/AppPickerImpl.js.map +0 -7
  96. package/dist/cjs/hooks/useKeepTrackButtons.js +0 -69
  97. package/dist/cjs/hooks/useKeepTrackButtons.js.map +0 -7
  98. package/dist/cjs/styles.js +0 -76
  99. package/dist/cjs/styles.js.map +0 -7
  100. package/dist/cjs/utils.js.map +0 -7
  101. package/dist/esm/AppPickerImpl.js +0 -174
  102. package/dist/esm/AppPickerImpl.js.map +0 -7
  103. package/dist/esm/hooks/useKeepTrackButtons.js +0 -39
  104. package/dist/esm/hooks/useKeepTrackButtons.js.map +0 -7
  105. package/dist/esm/styles.js +0 -46
  106. package/dist/esm/styles.js.map +0 -7
  107. package/dist/esm/utils.js +0 -25
  108. package/dist/esm/utils.js.map +0 -7
  109. package/dist/types/AppPickerImpl.d.ts +0 -11
  110. package/dist/types/hooks/useKeepTrackButtons.d.ts +0 -13
  111. package/dist/types/styles.d.ts +0 -7
  112. package/dist/types/tests/app-picker.a11y.test.d.ts +0 -1
  113. package/dist/types/tests/app-picker.data-testid.test.d.ts +0 -1
  114. package/dist/types/tests/app-picker.events.test.d.ts +0 -1
  115. package/dist/types/tests/app-picker.exports.test.d.ts +0 -1
  116. package/dist/types/tests/app-picker.get-owner-props.test.d.ts +0 -1
  117. package/dist/types/tests/app-picker.keyboard.test.d.ts +0 -1
  118. package/dist/types/typescript-testing/typescript-app-picker-valid.d.ts +0 -1
  119. package/dist/types/utils.d.ts +0 -14
@@ -1,40 +1,31 @@
1
1
  import React from 'react';
2
2
  import { type DSAppPickerT } from '../react-desc-prop-types.js';
3
3
  export declare const useAppPicker: (props: DSAppPickerT.Props) => {
4
+ focusTrackers: {
5
+ firstFocusableIdx: number;
6
+ lastFocusableIdx: number;
7
+ focusRegion: string;
8
+ firstFocusableRef: React.MutableRefObject<HTMLElement | null>;
9
+ lastFocusableRef: React.MutableRefObject<HTMLElement | null>;
10
+ trackFocusChip: (chipId: string) => void;
11
+ trackFocusRegionReset: () => void;
12
+ trackFocusTrigger: () => void;
13
+ trackFocusPanel: () => void;
14
+ trackFocusSelectedItem: () => void;
15
+ trackFocusFirstItem: () => void;
16
+ trackFocusItemAtIndex: (index: number) => void;
17
+ };
4
18
  propsWithDefault: DSAppPickerT.InternalProps;
5
19
  ownerPropsConfig: {
6
20
  getOwnerProps: () => DSAppPickerT.InternalProps;
7
21
  getOwnerPropsArguments: () => {};
8
22
  };
9
- globalAttributes: Partial<Pick<object, "cite" | "data" | "form" | "label" | "slot" | "span" | "style" | "summary" | "title" | "pattern" | "type" | "name" | "suppressHydrationWarning" | "className" | "color" | "height" | "id" | "lang" | "max" | "media" | "method" | "min" | "target" | "width" | "role" | "tabIndex" | "crossOrigin" | "href" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "classID" | "useMap" | "wmode" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "hidden" | "nonce" | "spellCheck" | "translate" | "radioGroup" | "about" | "content" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "exportparts" | "part" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "download" | "hrefLang" | "alt" | "coords" | "shape" | "autoPlay" | "controls" | "loop" | "mediaGroup" | "muted" | "playsInline" | "preload" | "src" | "dateTime" | "open" | "acceptCharset" | "action" | "autoComplete" | "encType" | "noValidate" | "manifest" | "allowFullScreen" | "allowTransparency" | "frameBorder" | "marginHeight" | "marginWidth" | "sandbox" | "scrolling" | "seamless" | "srcDoc" | "sizes" | "srcSet" | "accept" | "capture" | "checked" | "list" | "maxLength" | "minLength" | "multiple" | "placeholder" | "readOnly" | "required" | "size" | "step" | "htmlFor" | "integrity" | "charSet" | "httpEquiv" | "high" | "low" | "optimum" | "reversed" | "start" | "selected" | "async" | "defer" | "scoped" | "cellPadding" | "cellSpacing" | "colSpan" | "headers" | "rowSpan" | "scope" | "cols" | "rows" | "wrap" | "default" | "kind" | "srcLang" | "poster" | "challenge" | "keyType" | "keyParams"> & Omit<{
10
- cite?: string | undefined | undefined;
11
- data?: string | undefined | undefined;
12
- form?: string | undefined | undefined;
13
- label?: string | undefined | undefined;
14
- slot?: string | undefined | undefined;
15
- span?: number | undefined | undefined;
16
- style?: React.CSSProperties | undefined;
17
- summary?: string | undefined | undefined;
23
+ globalAttributes: Partial<Pick<object, "title" | "onClick" | "onKeyDown" | "form" | "list" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "hidden" | "id" | "lang" | "nonce" | "slot" | "spellCheck" | "style" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "content" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "exportparts" | "part" | "accept" | "acceptCharset" | "action" | "allowFullScreen" | "allowTransparency" | "alt" | "async" | "autoComplete" | "autoPlay" | "capture" | "cellPadding" | "cellSpacing" | "charSet" | "challenge" | "checked" | "cite" | "classID" | "cols" | "colSpan" | "controls" | "coords" | "crossOrigin" | "data" | "dateTime" | "default" | "defer" | "disabled" | "download" | "encType" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "frameBorder" | "headers" | "height" | "high" | "href" | "hrefLang" | "htmlFor" | "httpEquiv" | "integrity" | "keyParams" | "keyType" | "kind" | "label" | "loop" | "low" | "manifest" | "marginHeight" | "marginWidth" | "max" | "maxLength" | "media" | "mediaGroup" | "method" | "min" | "minLength" | "multiple" | "muted" | "name" | "noValidate" | "open" | "optimum" | "pattern" | "placeholder" | "playsInline" | "poster" | "preload" | "readOnly" | "required" | "reversed" | "rows" | "rowSpan" | "sandbox" | "scope" | "scoped" | "scrolling" | "seamless" | "selected" | "shape" | "size" | "sizes" | "span" | "src" | "srcDoc" | "srcLang" | "srcSet" | "start" | "step" | "summary" | "target" | "type" | "useMap" | "value" | "width" | "wmode" | "wrap"> & Omit<{
18
24
  title?: string | undefined | undefined;
19
- pattern?: string | undefined | undefined;
20
- type?: string | undefined | undefined;
21
- name?: string | undefined | undefined;
22
- suppressHydrationWarning?: boolean | undefined | undefined;
23
- className?: string | undefined | undefined;
24
- color?: string | undefined | undefined;
25
- height?: number | string | undefined | undefined;
26
- id?: string | undefined | undefined;
27
- lang?: string | undefined | undefined;
28
- max?: number | string | undefined | undefined;
29
- media?: string | undefined | undefined;
30
- method?: string | undefined | undefined;
31
- min?: number | string | undefined | undefined;
32
- target?: string | undefined | undefined;
33
- width?: number | string | undefined | undefined;
34
- role?: React.AriaRole | undefined;
35
- tabIndex?: 0 | -1 | undefined;
36
- crossOrigin?: "" | "anonymous" | "use-credentials" | undefined;
37
- href?: string | undefined | undefined;
25
+ onClick?: React.MouseEventHandler<Element> | undefined;
26
+ onKeyDown?: React.KeyboardEventHandler<Element> | undefined;
27
+ form?: string | undefined | undefined;
28
+ list?: string | undefined | undefined;
38
29
  "aria-activedescendant"?: string | undefined | undefined;
39
30
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
40
31
  "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
@@ -121,7 +112,6 @@ export declare const useAppPicker: (props: DSAppPickerT.Props) => {
121
112
  onLoadCapture?: React.ReactEventHandler<Element> | undefined;
122
113
  onError?: React.ReactEventHandler<Element> | undefined;
123
114
  onErrorCapture?: React.ReactEventHandler<Element> | undefined;
124
- onKeyDown?: React.KeyboardEventHandler<Element> | undefined;
125
115
  onKeyDownCapture?: React.KeyboardEventHandler<Element> | undefined;
126
116
  onKeyPress?: React.KeyboardEventHandler<Element> | undefined;
127
117
  onKeyPressCapture?: React.KeyboardEventHandler<Element> | undefined;
@@ -173,7 +163,6 @@ export declare const useAppPicker: (props: DSAppPickerT.Props) => {
173
163
  onWaitingCapture?: React.ReactEventHandler<Element> | undefined;
174
164
  onAuxClick?: React.MouseEventHandler<Element> | undefined;
175
165
  onAuxClickCapture?: React.MouseEventHandler<Element> | undefined;
176
- onClick?: React.MouseEventHandler<Element> | undefined;
177
166
  onClickCapture?: React.MouseEventHandler<Element> | undefined;
178
167
  onContextMenu?: React.MouseEventHandler<Element> | undefined;
179
168
  onContextMenuCapture?: React.MouseEventHandler<Element> | undefined;
@@ -247,25 +236,30 @@ export declare const useAppPicker: (props: DSAppPickerT.Props) => {
247
236
  onAnimationIterationCapture?: React.AnimationEventHandler<Element> | undefined;
248
237
  onTransitionEnd?: React.TransitionEventHandler<Element> | undefined;
249
238
  onTransitionEndCapture?: React.TransitionEventHandler<Element> | undefined;
250
- classID?: string | undefined | undefined;
251
- useMap?: string | undefined | undefined;
252
- wmode?: string | undefined | undefined;
253
239
  defaultChecked?: boolean | undefined | undefined;
254
240
  defaultValue?: string | number | readonly string[] | undefined;
255
241
  suppressContentEditableWarning?: boolean | undefined | undefined;
242
+ suppressHydrationWarning?: boolean | undefined | undefined;
256
243
  accessKey?: string | undefined | undefined;
257
244
  autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
258
245
  autoFocus?: boolean | undefined | undefined;
246
+ className?: string | undefined | undefined;
259
247
  contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
260
248
  contextMenu?: string | undefined | undefined;
261
249
  dir?: string | undefined | undefined;
262
250
  draggable?: (boolean | "true" | "false") | undefined;
263
251
  enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
264
252
  hidden?: boolean | undefined | undefined;
253
+ id?: string | undefined | undefined;
254
+ lang?: string | undefined | undefined;
265
255
  nonce?: string | undefined | undefined;
256
+ slot?: string | undefined | undefined;
266
257
  spellCheck?: (boolean | "true" | "false") | undefined;
258
+ style?: React.CSSProperties | undefined;
259
+ tabIndex?: 0 | -1 | undefined;
267
260
  translate?: "yes" | "no" | undefined | undefined;
268
261
  radioGroup?: string | undefined | undefined;
262
+ role?: React.AriaRole | undefined;
269
263
  about?: string | undefined | undefined;
270
264
  content?: string | undefined | undefined;
271
265
  datatype?: string | undefined | undefined;
@@ -279,6 +273,7 @@ export declare const useAppPicker: (props: DSAppPickerT.Props) => {
279
273
  vocab?: string | undefined | undefined;
280
274
  autoCorrect?: string | undefined | undefined;
281
275
  autoSave?: string | undefined | undefined;
276
+ color?: string | undefined | undefined;
282
277
  itemProp?: string | undefined | undefined;
283
278
  itemScope?: boolean | undefined | undefined;
284
279
  itemType?: string | undefined | undefined;
@@ -291,86 +286,110 @@ export declare const useAppPicker: (props: DSAppPickerT.Props) => {
291
286
  is?: string | undefined | undefined;
292
287
  exportparts?: string | undefined | undefined;
293
288
  part?: string | undefined | undefined;
289
+ accept?: string | undefined | undefined;
290
+ acceptCharset?: string | undefined | undefined;
291
+ action?: string | undefined;
292
+ allowFullScreen?: boolean | undefined | undefined;
293
+ allowTransparency?: boolean | undefined | undefined;
294
+ alt?: string | undefined | undefined;
295
+ async?: boolean | undefined | undefined;
296
+ autoComplete?: string | undefined | undefined;
297
+ autoPlay?: boolean | undefined | undefined;
298
+ capture?: boolean | "user" | "environment" | undefined | undefined;
299
+ cellPadding?: number | string | undefined | undefined;
300
+ cellSpacing?: number | string | undefined | undefined;
301
+ charSet?: string | undefined | undefined;
302
+ challenge?: string | undefined | undefined;
303
+ checked?: boolean | undefined | undefined;
304
+ cite?: string | undefined | undefined;
305
+ classID?: string | undefined | undefined;
306
+ cols?: number | undefined | undefined;
307
+ colSpan?: number | undefined | undefined;
308
+ controls?: boolean | undefined | undefined;
309
+ coords?: string | undefined | undefined;
310
+ crossOrigin?: "" | "anonymous" | "use-credentials" | undefined;
311
+ data?: string | undefined | undefined;
312
+ dateTime?: string | undefined | undefined;
313
+ default?: boolean | undefined | undefined;
314
+ defer?: boolean | undefined | undefined;
294
315
  disabled?: boolean | undefined | undefined;
316
+ download?: any;
317
+ encType?: string | undefined | undefined;
295
318
  formAction?: string | undefined;
296
319
  formEncType?: string | undefined | undefined;
297
320
  formMethod?: string | undefined | undefined;
298
321
  formNoValidate?: boolean | undefined | undefined;
299
322
  formTarget?: string | undefined | undefined;
300
- value?: string | number | readonly string[] | undefined;
301
- download?: any;
323
+ frameBorder?: number | string | undefined | undefined;
324
+ headers?: string | undefined | undefined;
325
+ height?: number | string | undefined | undefined;
326
+ high?: number | undefined | undefined;
327
+ href?: string | undefined | undefined;
302
328
  hrefLang?: string | undefined | undefined;
303
- alt?: string | undefined | undefined;
304
- coords?: string | undefined | undefined;
305
- shape?: string | undefined | undefined;
306
- autoPlay?: boolean | undefined | undefined;
307
- controls?: boolean | undefined | undefined;
329
+ htmlFor?: string | undefined | undefined;
330
+ httpEquiv?: string | undefined | undefined;
331
+ integrity?: string | undefined | undefined;
332
+ keyParams?: string | undefined | undefined;
333
+ keyType?: string | undefined | undefined;
334
+ kind?: string | undefined | undefined;
335
+ label?: string | undefined | undefined;
308
336
  loop?: boolean | undefined | undefined;
309
- mediaGroup?: string | undefined | undefined;
310
- muted?: boolean | undefined | undefined;
311
- playsInline?: boolean | undefined | undefined;
312
- preload?: string | undefined | undefined;
313
- src?: string | undefined | undefined;
314
- dateTime?: string | undefined | undefined;
315
- open?: boolean | undefined | undefined;
316
- acceptCharset?: string | undefined | undefined;
317
- action?: string | undefined;
318
- autoComplete?: string | undefined | undefined;
319
- encType?: string | undefined | undefined;
320
- noValidate?: boolean | undefined | undefined;
337
+ low?: number | undefined | undefined;
321
338
  manifest?: string | undefined | undefined;
322
- allowFullScreen?: boolean | undefined | undefined;
323
- allowTransparency?: boolean | undefined | undefined;
324
- frameBorder?: number | string | undefined | undefined;
325
339
  marginHeight?: number | undefined | undefined;
326
340
  marginWidth?: number | undefined | undefined;
327
- sandbox?: string | undefined | undefined;
328
- scrolling?: string | undefined | undefined;
329
- seamless?: boolean | undefined | undefined;
330
- srcDoc?: string | undefined | undefined;
331
- sizes?: string | undefined | undefined;
332
- srcSet?: string | undefined | undefined;
333
- accept?: string | undefined | undefined;
334
- capture?: boolean | "user" | "environment" | undefined | undefined;
335
- checked?: boolean | undefined | undefined;
336
- list?: string | undefined | undefined;
341
+ max?: number | string | undefined | undefined;
337
342
  maxLength?: number | undefined | undefined;
343
+ media?: string | undefined | undefined;
344
+ mediaGroup?: string | undefined | undefined;
345
+ method?: string | undefined | undefined;
346
+ min?: number | string | undefined | undefined;
338
347
  minLength?: number | undefined | undefined;
339
348
  multiple?: boolean | undefined | undefined;
349
+ muted?: boolean | undefined | undefined;
350
+ name?: string | undefined | undefined;
351
+ noValidate?: boolean | undefined | undefined;
352
+ open?: boolean | undefined | undefined;
353
+ optimum?: number | undefined | undefined;
354
+ pattern?: string | undefined | undefined;
340
355
  placeholder?: string | undefined | undefined;
356
+ playsInline?: boolean | undefined | undefined;
357
+ poster?: string | undefined | undefined;
358
+ preload?: string | undefined | undefined;
341
359
  readOnly?: boolean | undefined | undefined;
342
360
  required?: boolean | undefined | undefined;
343
- size?: number | undefined | undefined;
344
- step?: number | string | undefined | undefined;
345
- htmlFor?: string | undefined | undefined;
346
- integrity?: string | undefined | undefined;
347
- charSet?: string | undefined | undefined;
348
- httpEquiv?: string | undefined | undefined;
349
- high?: number | undefined | undefined;
350
- low?: number | undefined | undefined;
351
- optimum?: number | undefined | undefined;
352
361
  reversed?: boolean | undefined | undefined;
353
- start?: number | undefined | undefined;
354
- selected?: boolean | undefined | undefined;
355
- async?: boolean | undefined | undefined;
356
- defer?: boolean | undefined | undefined;
357
- scoped?: boolean | undefined | undefined;
358
- cellPadding?: number | string | undefined | undefined;
359
- cellSpacing?: number | string | undefined | undefined;
360
- colSpan?: number | undefined | undefined;
361
- headers?: string | undefined | undefined;
362
+ rows?: number | undefined | undefined;
362
363
  rowSpan?: number | undefined | undefined;
364
+ sandbox?: string | undefined | undefined;
363
365
  scope?: string | undefined | undefined;
364
- cols?: number | undefined | undefined;
365
- rows?: number | undefined | undefined;
366
- wrap?: string | undefined | undefined;
367
- default?: boolean | undefined | undefined;
368
- kind?: string | undefined | undefined;
366
+ scoped?: boolean | undefined | undefined;
367
+ scrolling?: string | undefined | undefined;
368
+ seamless?: boolean | undefined | undefined;
369
+ selected?: boolean | undefined | undefined;
370
+ shape?: string | undefined | undefined;
371
+ size?: number | undefined | undefined;
372
+ sizes?: string | undefined | undefined;
373
+ span?: number | undefined | undefined;
374
+ src?: string | undefined | undefined;
375
+ srcDoc?: string | undefined | undefined;
369
376
  srcLang?: string | undefined | undefined;
370
- poster?: string | undefined | undefined;
371
- challenge?: string | undefined | undefined;
372
- keyType?: string | undefined | undefined;
373
- keyParams?: string | undefined | undefined;
377
+ srcSet?: string | undefined | undefined;
378
+ start?: number | undefined | undefined;
379
+ step?: number | string | undefined | undefined;
380
+ summary?: string | undefined | undefined;
381
+ target?: string | undefined | undefined;
382
+ type?: string | undefined | undefined;
383
+ useMap?: string | undefined | undefined;
384
+ value?: string | number | readonly string[] | undefined;
385
+ width?: number | string | undefined | undefined;
386
+ wmode?: string | undefined | undefined;
387
+ wrap?: string | undefined | undefined;
374
388
  }, never>>;
375
389
  xstyledProps: import("@elliemae/ds-props-helpers").XstyledProps;
390
+ wasOpenedByKeyboardRef: React.MutableRefObject<boolean>;
391
+ mountedOpenAutofocusPendingRef: React.MutableRefObject<boolean>;
392
+ resolvedIsOpen: boolean;
393
+ setInternalIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
394
+ instanceUid: string;
376
395
  };
@@ -0,0 +1,19 @@
1
+ import type { DSAppPickerT } from '../react-desc-prop-types.js';
2
+ type FocusTrackerConfigT = {
3
+ allApps: DSAppPickerT.AppItem[];
4
+ };
5
+ export declare const useFocusTracker: (config: FocusTrackerConfigT) => {
6
+ firstFocusableIdx: number;
7
+ lastFocusableIdx: number;
8
+ focusRegion: string;
9
+ firstFocusableRef: import("react").MutableRefObject<HTMLElement | null>;
10
+ lastFocusableRef: import("react").MutableRefObject<HTMLElement | null>;
11
+ trackFocusChip: (chipId: string) => void;
12
+ trackFocusRegionReset: () => void;
13
+ trackFocusTrigger: () => void;
14
+ trackFocusPanel: () => void;
15
+ trackFocusSelectedItem: () => void;
16
+ trackFocusFirstItem: () => void;
17
+ trackFocusItemAtIndex: (index: number) => void;
18
+ };
19
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { ValidationMap } from '@elliemae/ds-props-helpers';
2
+ import { type DSAppPickerT } from '../react-desc-prop-types.js';
3
+ export declare const useValidateProps: (props: DSAppPickerT.InternalProps, propTypes: ValidationMap<unknown>) => void;
@@ -1,19 +1,29 @@
1
1
  export declare const DSAppPickerName = "DSApppicker";
2
+ export declare const APP_PICKER_REGION_FOCUSES: {
3
+ readonly RESET: "";
4
+ readonly TRIGGER: "trigger";
5
+ readonly PANEL: "panel";
6
+ };
7
+ export declare const CHIP_REGION_PREFIX = "chip-";
2
8
  export declare const DSAppPickerSlots: {
3
- ROOT: string;
4
- ITEM: string;
5
- TITLE: string;
6
- SEPARATOR: string;
7
- ROW: string;
8
- CHIP: string;
9
- BUTTON: string;
9
+ readonly ROOT: "root";
10
+ readonly GROUP: "group";
11
+ readonly ITEM: "item";
12
+ readonly TITLE: "title";
13
+ readonly SEPARATOR: "separator";
14
+ readonly ROW: "row";
15
+ readonly CHIP: "chip";
16
+ readonly BUTTON: "button";
17
+ readonly FLOATING_WRAPPER: "floating-wrapper";
10
18
  };
11
19
  export declare const DSAppPickerDataTestIds: {
12
20
  CHIP: string;
13
21
  BUTTON: string;
14
22
  ROOT: string;
23
+ GROUP: string;
15
24
  ITEM: string;
16
25
  TITLE: string;
17
26
  SEPARATOR: string;
18
27
  ROW: string;
28
+ FLOATING_WRAPPER: string;
19
29
  };
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const AppPanel: React.MemoExoticComponent<() => React.JSX.Element>;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import type { DSAppPickerT } from '../../react-desc-prop-types.js';
3
+ export declare const AppPickerContent: React.ComponentType<DSAppPickerT.Props>;
@@ -0,0 +1,170 @@
1
+ import type React from 'react';
2
+ import type { useAppPicker } from '../../config/useAppPicker.js';
3
+ import type { DSAppPickerT } from '../../react-desc-prop-types.js';
4
+ /**
5
+ * useAppPickerFloatingContext — the single point that wires DSAppPicker to
6
+ * `@elliemae/ds-floating-context`'s `useFloatingContext`.
7
+ *
8
+ * WHAT IT DOES (as a black box):
9
+ * AppPicker can be used in two very different ways:
10
+ * - Controlled: the consumer supplies `isOpen` and drives the open/close transition.
11
+ * └→ AppPicker can't be event-based as the flip might originate from any cause and we don't own the business logic
12
+ * └→ we need to ensure WCAG embedded behaviours (focus, Escape, click-outside) are wired to the consumer's `isOpen` flip.
13
+ * - Uncontrolled: the consumer does not supply `isOpen` and AppPicker owns the full flows, we only notify the consumer of the transition and its cause.
14
+ *
15
+ * The AppPicker and this file in particular serves as the one place that coordinates the two different ways to use the component and wires with the useFloatingContext hook.
16
+ * This files owns:
17
+ * - Focus management relative to open/close transitions (initial focus on open, return focus to trigger on close)
18
+ * - Escape key handling (scoped to the panel and trigger)
19
+ * - Click-outside handling (panel and trigger)
20
+ * - Imperative focus API via actionRef
21
+ * - Controlled/Uncontrolled forks and differences in event notification (eager vs controlled-flip)
22
+ * - OnOpen and OnClose notification to the consumer with the correct reason and event (if any)
23
+ *
24
+ * IMPORTANT:
25
+ * Parts of the flow/logic required in this file is offloaded to useFloatingContext internal assumptions and logics.
26
+ * Changes to useFloatingContext may break the flows in this file, or alter them in ways that are not obvious, the two are closely coupled.
27
+ *
28
+ * DATA / EVENT FLOW
29
+ *
30
+ * Two concerns run in parallel and must not be conflated: (A) what makes the panel show/hide and take
31
+ * focus, and (B) how the consumer is told it opened/closed. They have different origins.
32
+ *
33
+ * (A) PANEL VISIBILITY + FOCUS — useFloatingContext internal co-ownership of the flow.
34
+ *
35
+ * a user action │ │ isOpen prop flip
36
+ * (trigger click / scoped Escape / click outside) │ │ (not a traceable user action, but the consumer's own flip)
37
+ * uncontrolled - flips the internal flag │ │ controlled - AppPicker's own flip is inert, consumer drives it
38
+ * │
39
+ * ▼
40
+ * resolvedIsOpen changes
41
+ * │
42
+ * ▼
43
+ * useFloatingContext (externallyControlledIsOpen) detects the transition
44
+ * │
45
+ * ▼
46
+ * on open │ │ on close
47
+ * handleFloatingOpen │ │ focus is only restored after a SCOPED ESCAPE:
48
+ * AppPicker business logic seeds initial focus │ │ useFloatingContext returns focus to the trigger
49
+ * │ │ (returnFocusToReference). Click-outside / toggle
50
+ * │ │ / controlled closes do NOT move focus, and
51
+ * │ │ handleFloatingClose only NOTIFIES (see (B)).
52
+ * │
53
+ * ▼
54
+ * ┌─────────────────────────────────────────────────────────────┐
55
+ * │ visibility + focus are delivered to final user as expected │
56
+ * └─────────────────────────────────────────────────────────────┘
57
+ *
58
+ * (B) CONSUMER NOTIFICATION
59
+ * Each flow below is the UNCONTROLLED path, where AppPicker owns the transition and can name the true cause.
60
+ * The controlled equivalent for every trigger is stated once at the end.
61
+ * ┌────────────────────────┐
62
+ * │ OPENING TRIGGERS FLOWS │
63
+ * └────────────────────────┘
64
+ * TRIGGER CLICK (uncontrolled)
65
+ * trigger click
66
+ * user clicks the internal trigger, panel closed
67
+ * │
68
+ * ▼
69
+ * handleTriggerClick
70
+ * ( flips the flag and wires the visual and focus Flow (A) above )
71
+ * │
72
+ * ▼
73
+ * ┌──────────────────────────────────────────────┐
74
+ * │ onOpen { reason: 'trigger', event } │ fired EAGERLY, when the event is triggered
75
+ * └──────────────────────────────────────────────┘
76
+ * ------------------------------------------------------------------------------------------------------------------------
77
+ * ┌────────────────────────┐
78
+ * │ CLOSING TRIGGERS FLOWS │
79
+ * └────────────────────────┘
80
+ * KEYBOARD ESCAPE (uncontrolled)
81
+ * Escape within the panel DOM tree or the trigger
82
+ * scoped Escape (routed only while closeOnEscape, i.e. no consumer onKeyDown)
83
+ * │
84
+ * ▼
85
+ * onEscape → handleScopedEscape
86
+ * ( flips the flag and wires the visual and focus Flow (A) above )
87
+ * │
88
+ * ▼
89
+ * ┌──────────────────────────────────────────────┐
90
+ * │ onClose { reason: 'escape', event } │ fired EAGERLY, when the event is triggered
91
+ * └──────────────────────────────────────────────┘
92
+ *
93
+ * CLICK OUTSIDE (uncontrolled)
94
+ * Click outside the panel DOM tree and the trigger
95
+ * useFloatingContext detects a pointer press outside the panel + trigger
96
+ * │
97
+ * ▼
98
+ * handleClickOutside
99
+ * ( flips the flag and wires the visual and focus Flow (A) above )
100
+ * │
101
+ * ▼
102
+ * ┌──────────────────────────────────────────────┐
103
+ * │ onClose { reason: 'click-outside', event } │ fired EAGERLY, when the event is triggered
104
+ * └──────────────────────────────────────────────┘
105
+ *
106
+ * CLICK ON TRIGGER (uncontrolled, while internal state is open)
107
+ * trigger click while open
108
+ * user clicks the internal trigger, panel open
109
+ * │
110
+ * ▼
111
+ * handleTriggerClick
112
+ * ( flips the flag and wires the visual and focus Flow (A) above )
113
+ * │
114
+ * ▼
115
+ * ┌──────────────────────────────────────────────┐
116
+ * │ onClose { reason: 'trigger-toggle', event } │ fired EAGERLY, when the event is triggered
117
+ * └──────────────────────────────────────────────┘
118
+ * ------------------------------------------------------------------------------------------------------------------------
119
+ * ┌──────────────────────────────────┐
120
+ * │ CONTROLLED OPEN & CLOSE FLOWS │
121
+ * └──────────────────────────────────┘
122
+ * AppPicker's own flip is inert;
123
+ * We can't fire EAGERLY and we can't track an originating event, there may be NONE
124
+ * The consumer's `isOpen` flip is reacted to by useFloatingContext, which fires onOpen / onClose with reason 'controlled-flip'
125
+ * We wire the visual and focus Flow (A) above, and then notify the consumer with reason 'controlled' (no event)
126
+ * │
127
+ * ▼
128
+ * ┌──────────────────────────────────────────────┐
129
+ * │ onOpen { reason: 'controlled' } │ no event
130
+ * │ onClose { reason: 'controlled' } │ a prop flip is not a traceable user action
131
+ * └──────────────────────────────────────────────┘
132
+ * ------------------------------------------------------------------------------------------------------------------------
133
+ *
134
+ * Eager (uncontrolled) and controlled-flip paths are mutually exclusive on `isControlled`.
135
+ * the consumer is notified exactly once per transition — never twice.
136
+ * On Escape specifically
137
+ * a controlled consumer supplies onKeyDown, so closeOnEscape is false in useFloatingContext
138
+ * └→ AppPicker's onEscape never runs —
139
+ * └→ the close arrives purely by listening to the flag transition
140
+ * ------------------------------------------------------------------------------------------------------------------------
141
+ * A nuance for an edge case:
142
+ *
143
+ * Declarative mount-open (rendered already-open).
144
+ * useFloatingContext fires no onOpen for it (it did not transition to open, it started open),
145
+ * └→ neither the focus-seed (A) nor the notification (B) runs
146
+ * AppPanel compensates this locally via useMountedOpenAutofocusNuance, it needs to be seen if this is even desired or should be removed
147
+ * ------------------------------------------------------------------------------------------------------------------------
148
+ */
149
+ type ConfiguredAppPickerCtx = ReturnType<typeof useAppPicker>;
150
+ type AppPickerFloatingContextConfig = {
151
+ propsWithDefault: DSAppPickerT.InternalProps;
152
+ focusTrackers: ConfiguredAppPickerCtx['focusTrackers'];
153
+ wasOpenedByKeyboardRef: ConfiguredAppPickerCtx['wasOpenedByKeyboardRef'];
154
+ resolvedIsOpen: ConfiguredAppPickerCtx['resolvedIsOpen'];
155
+ setInternalIsOpen: ConfiguredAppPickerCtx['setInternalIsOpen'];
156
+ };
157
+ export declare const useAppPickerFloatingContext: (appPickerConfig: AppPickerFloatingContextConfig) => {
158
+ floatingStyles: React.CSSProperties;
159
+ arrowStyles: import("@elliemae/ds-floating-context/dist/types/parts/PopoverArrow.js").PopoverArrowT;
160
+ floatingContext: {
161
+ withoutPortal: boolean;
162
+ withoutAnimation: boolean;
163
+ portalDOMContainer: HTMLElement | undefined;
164
+ animationDuration: number;
165
+ };
166
+ handleTriggerRef: (instance: HTMLButtonElement | null) => void | React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES];
167
+ handleTriggerClick: (e: React.MouseEvent | React.KeyboardEvent) => void;
168
+ floatingInnerRef: (instance: HTMLDivElement | null) => void | React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES];
169
+ };
170
+ export {};
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { DSAppPickerT } from '../react-desc-prop-types.js';
3
+ interface AppPickerItemProps {
4
+ app: DSAppPickerT.AppItem;
5
+ chipId: string;
6
+ isFirstFocusable: boolean;
7
+ isLastFocusable: boolean;
8
+ positionAnnouncement: string;
9
+ }
10
+ export declare const AppPickerItem: React.FC<AppPickerItemProps>;
11
+ export {};
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ interface AppSectionProps {
3
+ isCustomApps?: boolean;
4
+ }
5
+ export declare const AppSection: React.FC<AppSectionProps>;
6
+ export {};
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { useAppPickerFloatingContext } from './AppPickerFloatingContext/useAppPickerFloatingContext.js';
3
+ type UseAppPickerFloatingContextT = ReturnType<typeof useAppPickerFloatingContext>;
4
+ type FloatingContextDictatedProps = {
5
+ handleTriggerRef: UseAppPickerFloatingContextT['handleTriggerRef'];
6
+ handleTriggerClick: UseAppPickerFloatingContextT['handleTriggerClick'];
7
+ dialogLabelId: string;
8
+ };
9
+ export declare const Trigger: {
10
+ (PropsFromFloatingContext: FloatingContextDictatedProps): React.JSX.Element | null;
11
+ displayName: string;
12
+ };
13
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare const StyledListItemFullRow: import("styled-components").StyledComponent<"div", import("@elliemae/ds-system").Theme, object & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"div">, never>;
2
+ export declare const StyledSection: import("styled-components").StyledComponent<"div", import("@elliemae/ds-system").Theme, object & import("@elliemae/ds-system").OwnerInterface & import("@elliemae/ds-system").InnerRefInterface<"div">, never>;