@fluentui-copilot/react-prompt-listbox 0.8.1-hotfix.1 → 0.8.1-hotfix.2

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 (77) hide show
  1. package/CHANGELOG.json +4 -4
  2. package/CHANGELOG.md +5 -5
  3. package/lib/PromptListbox.js +1 -0
  4. package/lib/PromptOption.js +1 -0
  5. package/lib/components/PromptListbox/PromptListbox.js +7 -5
  6. package/lib/components/PromptListbox/PromptListbox.types.js +2 -1
  7. package/lib/components/PromptListbox/index.js +1 -0
  8. package/lib/components/PromptListbox/renderPromptListbox.js +21 -17
  9. package/lib/components/PromptListbox/usePromptListbox.js +67 -53
  10. package/lib/components/PromptListbox/usePromptListboxContextValues.js +30 -22
  11. package/lib/components/PromptListbox/usePromptListboxStyles.styles.raw.js +25 -21
  12. package/lib/components/PromptOption/PromptOption.js +6 -4
  13. package/lib/components/PromptOption/PromptOption.types.js +2 -1
  14. package/lib/components/PromptOption/index.js +1 -0
  15. package/lib/components/PromptOption/renderPromptOption.js +6 -4
  16. package/lib/components/PromptOption/usePromptOption.js +84 -84
  17. package/lib/components/PromptOption/usePromptOptionStyles.styles.raw.js +60 -54
  18. package/lib/components/motion/PromptListboxMotion.js +50 -52
  19. package/lib/components/utils/OptionCollection.types.js +2 -1
  20. package/lib/components/utils/PromptListboxFunctionality.types.js +2 -1
  21. package/lib/components/utils/Selection.types.js +2 -1
  22. package/lib/components/utils/dropdownKeyActions.js +60 -49
  23. package/lib/components/utils/useListboxPositioning.js +24 -22
  24. package/lib/components/utils/useOptionCollection.js +32 -30
  25. package/lib/components/utils/usePromptListboxFunctionality.js +123 -121
  26. package/lib/components/utils/usePromptListboxFunctionalityV2.js +124 -109
  27. package/lib/components/utils/useSelection.js +49 -57
  28. package/lib/components/utils/useTriggerKeyDown.js +133 -124
  29. package/lib/index.js +1 -0
  30. package/lib/plugins/CursorPositionPlugin.js +39 -39
  31. package/lib-commonjs/PromptListbox.js +1 -0
  32. package/lib-commonjs/PromptOption.js +1 -0
  33. package/lib-commonjs/components/PromptListbox/PromptListbox.js +1 -1
  34. package/lib-commonjs/components/PromptListbox/PromptListbox.js.map +1 -1
  35. package/lib-commonjs/components/PromptListbox/PromptListbox.types.js +1 -0
  36. package/lib-commonjs/components/PromptListbox/index.js +1 -0
  37. package/lib-commonjs/components/PromptListbox/renderPromptListbox.js +1 -1
  38. package/lib-commonjs/components/PromptListbox/renderPromptListbox.js.map +1 -1
  39. package/lib-commonjs/components/PromptListbox/usePromptListbox.js +1 -1
  40. package/lib-commonjs/components/PromptListbox/usePromptListbox.js.map +1 -1
  41. package/lib-commonjs/components/PromptListbox/usePromptListboxContextValues.js +1 -1
  42. package/lib-commonjs/components/PromptListbox/usePromptListboxContextValues.js.map +1 -1
  43. package/lib-commonjs/components/PromptListbox/usePromptListboxStyles.styles.raw.js +1 -1
  44. package/lib-commonjs/components/PromptListbox/usePromptListboxStyles.styles.raw.js.map +1 -1
  45. package/lib-commonjs/components/PromptOption/PromptOption.js +1 -1
  46. package/lib-commonjs/components/PromptOption/PromptOption.js.map +1 -1
  47. package/lib-commonjs/components/PromptOption/PromptOption.types.js +1 -0
  48. package/lib-commonjs/components/PromptOption/index.js +1 -0
  49. package/lib-commonjs/components/PromptOption/renderPromptOption.js +1 -1
  50. package/lib-commonjs/components/PromptOption/renderPromptOption.js.map +1 -1
  51. package/lib-commonjs/components/PromptOption/usePromptOption.js +1 -1
  52. package/lib-commonjs/components/PromptOption/usePromptOption.js.map +1 -1
  53. package/lib-commonjs/components/PromptOption/usePromptOptionStyles.styles.raw.js +1 -1
  54. package/lib-commonjs/components/PromptOption/usePromptOptionStyles.styles.raw.js.map +1 -1
  55. package/lib-commonjs/components/motion/PromptListboxMotion.js +1 -1
  56. package/lib-commonjs/components/motion/PromptListboxMotion.js.map +1 -1
  57. package/lib-commonjs/components/utils/OptionCollection.types.js +1 -0
  58. package/lib-commonjs/components/utils/PromptListboxFunctionality.types.js +1 -0
  59. package/lib-commonjs/components/utils/Selection.types.js +1 -0
  60. package/lib-commonjs/components/utils/dropdownKeyActions.js +1 -1
  61. package/lib-commonjs/components/utils/dropdownKeyActions.js.map +1 -1
  62. package/lib-commonjs/components/utils/useListboxPositioning.js +1 -1
  63. package/lib-commonjs/components/utils/useListboxPositioning.js.map +1 -1
  64. package/lib-commonjs/components/utils/useOptionCollection.js +1 -1
  65. package/lib-commonjs/components/utils/useOptionCollection.js.map +1 -1
  66. package/lib-commonjs/components/utils/usePromptListboxFunctionality.js +1 -1
  67. package/lib-commonjs/components/utils/usePromptListboxFunctionality.js.map +1 -1
  68. package/lib-commonjs/components/utils/usePromptListboxFunctionalityV2.js +1 -1
  69. package/lib-commonjs/components/utils/usePromptListboxFunctionalityV2.js.map +1 -1
  70. package/lib-commonjs/components/utils/useSelection.js +1 -1
  71. package/lib-commonjs/components/utils/useSelection.js.map +1 -1
  72. package/lib-commonjs/components/utils/useTriggerKeyDown.js +1 -1
  73. package/lib-commonjs/components/utils/useTriggerKeyDown.js.map +1 -1
  74. package/lib-commonjs/index.js +1 -0
  75. package/lib-commonjs/plugins/CursorPositionPlugin.js +1 -1
  76. package/lib-commonjs/plugins/CursorPositionPlugin.js.map +1 -1
  77. package/package.json +10 -10
package/CHANGELOG.json CHANGED
@@ -2,16 +2,16 @@
2
2
  "name": "@fluentui-copilot/react-prompt-listbox",
3
3
  "entries": [
4
4
  {
5
- "date": "Tue, 12 Aug 2025 16:09:22 GMT",
6
- "tag": "@fluentui-copilot/react-prompt-listbox_v0.8.1-hotfix.1",
7
- "version": "0.8.1-hotfix.1",
5
+ "date": "Fri, 19 Sep 2025 15:10:20 GMT",
6
+ "tag": "@fluentui-copilot/react-prompt-listbox_v0.8.1-hotfix.2",
7
+ "version": "0.8.1-hotfix.2",
8
8
  "comments": {
9
9
  "prerelease": [
10
10
  {
11
11
  "author": "hochelmartin@gmail.com",
12
12
  "package": "@fluentui-copilot/react-prompt-listbox",
13
13
  "commit": "3e4ebe676646c4c4346dbbab83511f963ffefd85",
14
- "comment": "release: prepare hotfix 0.26.2-hotfix.1"
14
+ "comment": "release: prepare hotfix 0.26.2-hotfix.2"
15
15
  }
16
16
  ]
17
17
  }
package/CHANGELOG.md CHANGED
@@ -1,17 +1,17 @@
1
1
  # Change Log - @fluentui-copilot/react-prompt-listbox
2
2
 
3
- This log was last generated on Tue, 12 Aug 2025 16:09:22 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 19 Sep 2025 15:10:20 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## [0.8.1-hotfix.1](https://github.com/microsoft/fluentai/tree/@fluentui-copilot/react-prompt-listbox_v0.8.1-hotfix.1)
7
+ ## [0.8.1-hotfix.2](https://github.com/microsoft/fluentai/tree/@fluentui-copilot/react-prompt-listbox_v0.8.1-hotfix.2)
8
8
 
9
- Tue, 12 Aug 2025 16:09:22 GMT
10
- [Compare changes](https://github.com/microsoft/fluentai/compare/@fluentui-copilot/react-prompt-listbox_v0.8.1..@fluentui-copilot/react-prompt-listbox_v0.8.1-hotfix.1)
9
+ Fri, 19 Sep 2025 15:10:20 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentai/compare/@fluentui-copilot/react-prompt-listbox_v0.8.1..@fluentui-copilot/react-prompt-listbox_v0.8.1-hotfix.2)
11
11
 
12
12
  ### Changes
13
13
 
14
- - release: prepare hotfix 0.26.2-hotfix.1 ([PR #3284](https://github.com/microsoft/fluentai/pull/3284) by hochelmartin@gmail.com)
14
+ - release: prepare hotfix 0.26.2-hotfix.2 ([PR #3284](https://github.com/microsoft/fluentai/pull/3284) by hochelmartin@gmail.com)
15
15
 
16
16
  ## [0.8.0](https://github.com/microsoft/fluentai/tree/@fluentui-copilot/react-prompt-listbox_v0.8.0)
17
17
 
@@ -1 +1,2 @@
1
1
  export { PromptListbox, promptListboxClassNames, renderPromptListbox_unstable, usePromptListboxStyles_unstable, usePromptListbox_unstable } from './components/PromptListbox/index';
2
+ //# sourceMappingURL=PromptListbox.js.map
@@ -1 +1,2 @@
1
1
  export { PromptOption, promptOptionClassNames, renderPromptOption_unstable, usePromptOptionStyles_unstable, usePromptOption_unstable } from './components/PromptOption/index';
2
+ //# sourceMappingURL=PromptOption.js.map
@@ -3,10 +3,12 @@ import { usePromptListbox_unstable } from './usePromptListbox';
3
3
  import { renderPromptListbox_unstable } from './renderPromptListbox';
4
4
  import { usePromptListboxStyles_unstable } from './usePromptListboxStyles.styles';
5
5
  import { usePromptListboxContextValues } from './usePromptListboxContextValues';
6
- /**@deprecated - use InputListbox instead */ export const PromptListbox = /*#__PURE__*/ React.forwardRef((props, ref)=>{
7
- const state = usePromptListbox_unstable(props, ref);
8
- const contextValues = usePromptListboxContextValues(state);
9
- usePromptListboxStyles_unstable(state);
10
- return renderPromptListbox_unstable(state, contextValues);
6
+ /**@deprecated - use InputListbox instead */
7
+ export const PromptListbox = /*#__PURE__*/React.forwardRef((props, ref) => {
8
+ const state = usePromptListbox_unstable(props, ref);
9
+ const contextValues = usePromptListboxContextValues(state);
10
+ usePromptListboxStyles_unstable(state);
11
+ return renderPromptListbox_unstable(state, contextValues);
11
12
  });
12
13
  PromptListbox.displayName = 'PromptListbox';
14
+ //# sourceMappingURL=PromptListbox.js.map
@@ -1 +1,2 @@
1
- export { };
1
+ export {};
2
+ //# sourceMappingURL=PromptListbox.types.js.map
@@ -2,3 +2,4 @@ export { PromptListbox } from './PromptListbox';
2
2
  export { renderPromptListbox_unstable } from './renderPromptListbox';
3
3
  export { usePromptListbox_unstable } from './usePromptListbox';
4
4
  export { promptListboxClassNames, usePromptListboxStyles_unstable } from './usePromptListboxStyles.styles';
5
+ //# sourceMappingURL=index.js.map
@@ -1,22 +1,26 @@
1
- import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
1
+ import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
2
2
  import { assertSlots, ListboxProvider, Portal } from '@fluentui/react-components';
3
3
  import { ActiveDescendantContextProvider } from '@fluentui/react-aria';
4
4
  /**
5
5
  * Render the final JSX of PromptListbox
6
- */ export const renderPromptListbox_unstable = (state, contextValues)=>{
7
- assertSlots(state);
8
- const { open } = state;
9
- return /*#__PURE__*/ _jsx(ListboxProvider, {
10
- value: contextValues.listbox,
11
- children: /*#__PURE__*/ _jsx(ActiveDescendantContextProvider, {
12
- value: contextValues.activeDescendant,
13
- children: /*#__PURE__*/ _jsx("span", {
14
- "aria-owns": open ? state.root.id : undefined,
15
- children: open && (state.inlinePopup ? /*#__PURE__*/ _jsx(state.root, {}) : /*#__PURE__*/ _jsx(Portal, {
16
- mountNode: state.mountNode,
17
- children: /*#__PURE__*/ _jsx(state.root, {})
18
- }))
19
- })
20
- })
21
- });
6
+ */
7
+ export const renderPromptListbox_unstable = (state, contextValues) => {
8
+ assertSlots(state);
9
+ const {
10
+ open
11
+ } = state;
12
+ return /*#__PURE__*/_jsx(ListboxProvider, {
13
+ value: contextValues.listbox,
14
+ children: /*#__PURE__*/_jsx(ActiveDescendantContextProvider, {
15
+ value: contextValues.activeDescendant,
16
+ children: /*#__PURE__*/_jsx("span", {
17
+ "aria-owns": open ? state.root.id : undefined,
18
+ children: open && (state.inlinePopup ? /*#__PURE__*/_jsx(state.root, {}) : /*#__PURE__*/_jsx(Portal, {
19
+ mountNode: state.mountNode,
20
+ children: /*#__PURE__*/_jsx(state.root, {})
21
+ }))
22
+ })
23
+ })
24
+ });
22
25
  };
26
+ //# sourceMappingURL=renderPromptListbox.js.map
@@ -9,60 +9,74 @@ import { mergeCallbacks, useEventCallback, useId } from '@fluentui/react-utiliti
9
9
  *
10
10
  * @param props - props from this instance of PromptListbox
11
11
  * @param ref - reference to root HTMLElement of PromptListbox
12
- */ export const usePromptListbox_unstable = (props, ref)=>{
13
- const { id, onActiveOptionChange, inlinePopup = false, mountNode = undefined, open = true, activeDescendantController, getOptionById, getOptionsMatchingValue, selectedOptions, selectOption, registerOption } = props;
14
- const listboxId = useId('prompt-listbox', id);
15
- const onActiveDescendantChange = useEventCallback((event)=>{
16
- const previousOption = event.detail.previousId ? getOptionById(event.detail.previousId) : null;
17
- const nextOption = getOptionById(event.detail.id);
18
- onActiveOptionChange === null || onActiveOptionChange === void 0 ? void 0 : onActiveOptionChange(event, {
19
- event,
20
- type: 'change',
21
- previousOption,
22
- nextOption
23
- });
12
+ */
13
+ export const usePromptListbox_unstable = (props, ref) => {
14
+ const {
15
+ id,
16
+ onActiveOptionChange,
17
+ inlinePopup = false,
18
+ mountNode = undefined,
19
+ open = true,
20
+ activeDescendantController,
21
+ getOptionById,
22
+ getOptionsMatchingValue,
23
+ selectedOptions,
24
+ selectOption,
25
+ registerOption
26
+ } = props;
27
+ const listboxId = useId('prompt-listbox', id);
28
+ const onActiveDescendantChange = useEventCallback(event => {
29
+ const previousOption = event.detail.previousId ? getOptionById(event.detail.previousId) : null;
30
+ const nextOption = getOptionById(event.detail.id);
31
+ onActiveOptionChange === null || onActiveOptionChange === void 0 ? void 0 : onActiveOptionChange(event, {
32
+ event,
33
+ type: 'change',
34
+ previousOption,
35
+ nextOption
24
36
  });
25
- const state = {
26
- ...deprecatedPropsDefaults,
27
- open,
28
- getOptionById,
29
- getOptionsMatchingValue,
30
- selectedOptions,
31
- selectOption,
32
- registerOption,
33
- onActiveDescendantChange,
34
- activeDescendantController,
35
- inlinePopup,
36
- mountNode,
37
- components: {
38
- root: Listbox
39
- },
40
- root: slot.always({
41
- ...props,
42
- selectedOptions
43
- }, {
44
- defaultProps: {
45
- disableAutoFocus: true,
46
- id: listboxId,
47
- tabIndex: undefined,
48
- role: 'listbox'
49
- },
50
- elementType: Listbox
51
- })
52
- };
53
- state.root.ref = useMergedRefs(ref, state.root.ref);
54
- state.root.onMouseDown = useEventCallback(mergeCallbacks((event)=>{
55
- event.preventDefault();
56
- }, state.root.onMouseDown));
57
- state.root.onClick = useEventCallback(mergeCallbacks((event)=>{
58
- event.preventDefault();
59
- }, state.root.onClick));
60
- return state;
37
+ });
38
+ const state = {
39
+ ...deprecatedPropsDefaults,
40
+ open,
41
+ getOptionById,
42
+ getOptionsMatchingValue,
43
+ selectedOptions,
44
+ selectOption,
45
+ registerOption,
46
+ onActiveDescendantChange,
47
+ activeDescendantController,
48
+ inlinePopup,
49
+ mountNode,
50
+ components: {
51
+ root: Listbox
52
+ },
53
+ root: slot.always({
54
+ ...props,
55
+ selectedOptions
56
+ }, {
57
+ defaultProps: {
58
+ disableAutoFocus: true,
59
+ id: listboxId,
60
+ tabIndex: undefined,
61
+ role: 'listbox'
62
+ },
63
+ elementType: Listbox
64
+ })
65
+ };
66
+ state.root.ref = useMergedRefs(ref, state.root.ref);
67
+ state.root.onMouseDown = useEventCallback(mergeCallbacks(event => {
68
+ event.preventDefault();
69
+ }, state.root.onMouseDown));
70
+ state.root.onClick = useEventCallback(mergeCallbacks(event => {
71
+ event.preventDefault();
72
+ }, state.root.onClick));
73
+ return state;
61
74
  };
62
- const noop = ()=>null;
75
+ const noop = () => null;
63
76
  const deprecatedPropsDefaults = {
64
- activeOption: undefined,
65
- focusVisible: false,
66
- setActiveOption: noop,
67
- onOptionClick: noop
77
+ activeOption: undefined,
78
+ focusVisible: false,
79
+ setActiveOption: noop,
80
+ onOptionClick: noop
68
81
  };
82
+ //# sourceMappingURL=usePromptListbox.js.map
@@ -1,25 +1,33 @@
1
1
  import * as React from 'react';
2
2
  export function usePromptListboxContextValues(state) {
3
- const { getOptionById, getOptionsMatchingValue, registerOption, selectedOptions, selectOption, activeDescendantController, onOptionClick, onActiveDescendantChange } = state;
4
- const activeDescendant = React.useMemo(()=>({
5
- controller: activeDescendantController
6
- }), [
7
- activeDescendantController
8
- ]);
9
- const listbox = {
10
- activeOption: undefined,
11
- focusVisible: false,
12
- getOptionById,
13
- getOptionsMatchingValue,
14
- registerOption,
15
- selectedOptions,
16
- selectOption,
17
- setActiveOption: ()=>null,
18
- onOptionClick,
19
- onActiveDescendantChange
20
- };
21
- return {
22
- activeDescendant,
23
- listbox
24
- };
3
+ const {
4
+ getOptionById,
5
+ getOptionsMatchingValue,
6
+ registerOption,
7
+ selectedOptions,
8
+ selectOption,
9
+ activeDescendantController,
10
+ onOptionClick,
11
+ onActiveDescendantChange
12
+ } = state;
13
+ const activeDescendant = React.useMemo(() => ({
14
+ controller: activeDescendantController
15
+ }), [activeDescendantController]);
16
+ const listbox = {
17
+ activeOption: undefined,
18
+ focusVisible: false,
19
+ getOptionById,
20
+ getOptionsMatchingValue,
21
+ registerOption,
22
+ selectedOptions,
23
+ selectOption,
24
+ setActiveOption: () => null,
25
+ onOptionClick,
26
+ onActiveDescendantChange
27
+ };
28
+ return {
29
+ activeDescendant,
30
+ listbox
31
+ };
25
32
  }
33
+ //# sourceMappingURL=usePromptListboxContextValues.js.map
@@ -1,31 +1,35 @@
1
1
  import { makeStyles, mergeClasses } from '@fluentui/react-components';
2
2
  import { tokens } from '@fluentui-copilot/tokens';
3
3
  export const promptListboxClassNames = {
4
- root: 'fai-PromptListbox'
4
+ root: 'fai-PromptListbox'
5
5
  };
6
6
  /**
7
7
  * Styles for the root slot
8
- */ const useStyles = makeStyles({
9
- listbox: {
10
- boxShadow: tokens.shadow16,
11
- borderRadius: tokens.borderRadiusMedium,
12
- maxHeight: '80vh',
13
- boxSizing: 'border-box'
14
- },
15
- listboxCollapsed: {
16
- display: 'none'
17
- },
18
- // When rendering inline, the popupSurface will be rendered under relatively positioned elements such as Input.
19
- // This is due to the surface being positioned as absolute, therefore zIndex: 1 ensures that won't happen.
20
- inlineListbox: {
21
- zIndex: 1
22
- }
8
+ */
9
+ const useStyles = makeStyles({
10
+ listbox: {
11
+ boxShadow: tokens.shadow16,
12
+ borderRadius: tokens.borderRadiusMedium,
13
+ maxHeight: '80vh',
14
+ boxSizing: 'border-box'
15
+ },
16
+ listboxCollapsed: {
17
+ display: 'none'
18
+ },
19
+ // When rendering inline, the popupSurface will be rendered under relatively positioned elements such as Input.
20
+ // This is due to the surface being positioned as absolute, therefore zIndex: 1 ensures that won't happen.
21
+ inlineListbox: {
22
+ zIndex: 1
23
+ }
23
24
  });
24
25
  /**
25
26
  * Apply styling to the PromptListbox slots based on the state
26
- */ export const usePromptListboxStyles_unstable = (state)=>{
27
- 'use no memo';
28
- const styles = useStyles();
29
- state.root.className = mergeClasses(promptListboxClassNames.root, styles.listbox, state.inlinePopup && styles.inlineListbox, !state.open && styles.listboxCollapsed, state.root.className);
30
- return state;
27
+ */
28
+ export const usePromptListboxStyles_unstable = state => {
29
+ 'use no memo';
30
+
31
+ const styles = useStyles();
32
+ state.root.className = mergeClasses(promptListboxClassNames.root, styles.listbox, state.inlinePopup && styles.inlineListbox, !state.open && styles.listboxCollapsed, state.root.className);
33
+ return state;
31
34
  };
35
+ //# sourceMappingURL=usePromptListboxStyles.styles.raw.js.map
@@ -2,9 +2,11 @@ import * as React from 'react';
2
2
  import { usePromptOption_unstable } from './usePromptOption';
3
3
  import { renderPromptOption_unstable } from './renderPromptOption';
4
4
  import { usePromptOptionStyles_unstable } from './usePromptOptionStyles.styles';
5
- /**@deprecated - use Option instead */ export const PromptOption = /*#__PURE__*/ React.forwardRef((props, ref)=>{
6
- const state = usePromptOption_unstable(props, ref);
7
- usePromptOptionStyles_unstable(state);
8
- return renderPromptOption_unstable(state);
5
+ /**@deprecated - use Option instead */
6
+ export const PromptOption = /*#__PURE__*/React.forwardRef((props, ref) => {
7
+ const state = usePromptOption_unstable(props, ref);
8
+ usePromptOptionStyles_unstable(state);
9
+ return renderPromptOption_unstable(state);
9
10
  });
10
11
  PromptOption.displayName = 'PromptOption';
12
+ //# sourceMappingURL=PromptOption.js.map
@@ -1,3 +1,4 @@
1
1
  /**
2
2
  * State used in rendering PromptOption
3
- */ export { };
3
+ */export {};
4
+ //# sourceMappingURL=PromptOption.types.js.map
@@ -2,3 +2,4 @@ export { PromptOption } from './PromptOption';
2
2
  export { renderPromptOption_unstable } from './renderPromptOption';
3
3
  export { usePromptOption_unstable } from './usePromptOption';
4
4
  export { promptOptionClassNames, usePromptOptionStyles_unstable } from './usePromptOptionStyles.styles';
5
+ //# sourceMappingURL=index.js.map
@@ -1,8 +1,10 @@
1
- import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
1
+ import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
2
2
  import { assertSlots } from '@fluentui/react-components';
3
3
  /**
4
4
  * Render the final JSX of PromptOption
5
- */ export const renderPromptOption_unstable = (state)=>{
6
- assertSlots(state);
7
- return /*#__PURE__*/ _jsx(state.root, {});
5
+ */
6
+ export const renderPromptOption_unstable = state => {
7
+ assertSlots(state);
8
+ return /*#__PURE__*/_jsx(state.root, {});
8
9
  };
10
+ //# sourceMappingURL=renderPromptOption.js.map
@@ -11,91 +11,91 @@ import { useListboxContext_unstable } from '@fluentui/react-combobox';
11
11
  *
12
12
  * @param props - props from this instance of PromptOption
13
13
  * @param ref - reference to root HTMLElement of PromptOption
14
- */ export const usePromptOption_unstable = (props, ref)=>{
15
- const { controller: activeDescendantController } = useActiveDescendantContext();
16
- const { children, disabled, text, value } = props;
17
- const optionRef = React.useRef(null);
18
- const optionText = getTextString(text, children);
19
- const optionValue = value !== null && value !== void 0 ? value : optionText;
20
- // use the id if provided, otherwise use a generated id
21
- const id = useId('fluent-option', props.id);
22
- // data used for context registration & events
23
- const optionData = React.useMemo(()=>({
24
- id,
25
- disabled,
26
- text: optionText,
27
- value: optionValue
28
- }), [
29
- id,
30
- disabled,
31
- optionText,
32
- optionValue
33
- ]);
34
- // context values
35
- const registerOption = useListboxContext_unstable((ctx)=>ctx.registerOption);
36
- const selected = useListboxContext_unstable((ctx)=>{
37
- const selectedOptions = ctx.selectedOptions;
38
- return optionValue !== undefined && selectedOptions.find((o)=>o === optionValue) !== undefined;
39
- });
40
- const selectOption = useListboxContext_unstable((ctx)=>ctx.selectOption);
41
- const onOptionClick = useListboxContext_unstable((ctx)=>ctx.onOptionClick);
42
- const onClick = (event)=>{
43
- var _props_onClick;
44
- if (disabled) {
45
- event.preventDefault();
46
- return;
47
- }
48
- activeDescendantController.focus(id);
49
- // handle selection change
50
- selectOption(event, optionData);
51
- onOptionClick(event);
52
- (_props_onClick = props.onClick) === null || _props_onClick === void 0 ? void 0 : _props_onClick.call(props, event);
53
- };
54
- // register option data with context
55
- React.useEffect(()=>{
56
- if (id && optionRef.current) {
57
- return registerOption(optionData, optionRef.current);
58
- }
59
- }, [
60
- id,
61
- optionData,
62
- registerOption
63
- ]);
64
- return {
65
- components: {
66
- root: 'div'
67
- },
68
- root: slot.always(getIntrinsicElementProps('div', {
69
- ref: useMergedRefs(ref, optionRef),
70
- 'aria-disabled': disabled ? true : undefined,
71
- id,
72
- role: 'option',
73
- ...props,
74
- onClick
75
- }), {
76
- elementType: 'div'
77
- }),
78
- disabled,
79
- selected
80
- };
14
+ */
15
+ export const usePromptOption_unstable = (props, ref) => {
16
+ const {
17
+ controller: activeDescendantController
18
+ } = useActiveDescendantContext();
19
+ const {
20
+ children,
21
+ disabled,
22
+ text,
23
+ value
24
+ } = props;
25
+ const optionRef = React.useRef(null);
26
+ const optionText = getTextString(text, children);
27
+ const optionValue = value !== null && value !== void 0 ? value : optionText;
28
+ // use the id if provided, otherwise use a generated id
29
+ const id = useId('fluent-option', props.id);
30
+ // data used for context registration & events
31
+ const optionData = React.useMemo(() => ({
32
+ id,
33
+ disabled,
34
+ text: optionText,
35
+ value: optionValue
36
+ }), [id, disabled, optionText, optionValue]);
37
+ // context values
38
+ const registerOption = useListboxContext_unstable(ctx => ctx.registerOption);
39
+ const selected = useListboxContext_unstable(ctx => {
40
+ const selectedOptions = ctx.selectedOptions;
41
+ return optionValue !== undefined && selectedOptions.find(o => o === optionValue) !== undefined;
42
+ });
43
+ const selectOption = useListboxContext_unstable(ctx => ctx.selectOption);
44
+ const onOptionClick = useListboxContext_unstable(ctx => ctx.onOptionClick);
45
+ const onClick = event => {
46
+ var _props_onClick;
47
+ if (disabled) {
48
+ event.preventDefault();
49
+ return;
50
+ }
51
+ activeDescendantController.focus(id);
52
+ // handle selection change
53
+ selectOption(event, optionData);
54
+ onOptionClick(event);
55
+ (_props_onClick = props.onClick) === null || _props_onClick === void 0 ? void 0 : _props_onClick.call(props, event);
56
+ };
57
+ // register option data with context
58
+ React.useEffect(() => {
59
+ if (id && optionRef.current) {
60
+ return registerOption(optionData, optionRef.current);
61
+ }
62
+ }, [id, optionData, registerOption]);
63
+ return {
64
+ components: {
65
+ root: 'div'
66
+ },
67
+ root: slot.always(getIntrinsicElementProps('div', {
68
+ ref: useMergedRefs(ref, optionRef),
69
+ 'aria-disabled': disabled ? true : undefined,
70
+ id,
71
+ role: 'option',
72
+ ...props,
73
+ onClick
74
+ }), {
75
+ elementType: 'div'
76
+ }),
77
+ disabled,
78
+ selected
79
+ };
81
80
  };
82
81
  function getTextString(text, children) {
83
- if (text !== undefined) {
84
- return text;
85
- }
86
- let textString = '';
87
- let hasNonStringChild = false;
88
- React.Children.forEach(children, (child)=>{
89
- if (typeof child === 'string') {
90
- textString += child;
91
- } else {
92
- hasNonStringChild = true;
93
- }
94
- });
95
- // warn if an Option has non-string children and no text prop
96
- if (hasNonStringChild) {
97
- // eslint-disable-next-line no-console
98
- console.warn('Provide a `text` prop to Option components when they contain non-string children.');
82
+ if (text !== undefined) {
83
+ return text;
84
+ }
85
+ let textString = '';
86
+ let hasNonStringChild = false;
87
+ React.Children.forEach(children, child => {
88
+ if (typeof child === 'string') {
89
+ textString += child;
90
+ } else {
91
+ hasNonStringChild = true;
99
92
  }
100
- return textString;
93
+ });
94
+ // warn if an Option has non-string children and no text prop
95
+ if (hasNonStringChild) {
96
+ // eslint-disable-next-line no-console
97
+ console.warn('Provide a `text` prop to Option components when they contain non-string children.');
98
+ }
99
+ return textString;
101
100
  }
101
+ //# sourceMappingURL=usePromptOption.js.map