@fluentui/react-tag-picker 9.0.0

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 (254) hide show
  1. package/CHANGELOG.md +165 -0
  2. package/LICENSE +15 -0
  3. package/README.md +68 -0
  4. package/Spec.md +208 -0
  5. package/dist/index.d.ts +453 -0
  6. package/lib/TagPicker.js +1 -0
  7. package/lib/TagPicker.js.map +1 -0
  8. package/lib/TagPickerButton.js +1 -0
  9. package/lib/TagPickerButton.js.map +1 -0
  10. package/lib/TagPickerControl.js +1 -0
  11. package/lib/TagPickerControl.js.map +1 -0
  12. package/lib/TagPickerGroup.js +1 -0
  13. package/lib/TagPickerGroup.js.map +1 -0
  14. package/lib/TagPickerInput.js +1 -0
  15. package/lib/TagPickerInput.js.map +1 -0
  16. package/lib/TagPickerList.js +1 -0
  17. package/lib/TagPickerList.js.map +1 -0
  18. package/lib/TagPickerOption.js +1 -0
  19. package/lib/TagPickerOption.js.map +1 -0
  20. package/lib/TagPickerOptionGroup.js +1 -0
  21. package/lib/TagPickerOptionGroup.js.map +1 -0
  22. package/lib/components/TagPicker/TagPicker.js +13 -0
  23. package/lib/components/TagPicker/TagPicker.js.map +1 -0
  24. package/lib/components/TagPicker/TagPicker.types.js +1 -0
  25. package/lib/components/TagPicker/TagPicker.types.js.map +1 -0
  26. package/lib/components/TagPicker/index.js +4 -0
  27. package/lib/components/TagPicker/index.js.map +1 -0
  28. package/lib/components/TagPicker/renderTagPicker.js +20 -0
  29. package/lib/components/TagPicker/renderTagPicker.js.map +1 -0
  30. package/lib/components/TagPicker/useTagPicker.js +123 -0
  31. package/lib/components/TagPicker/useTagPicker.js.map +1 -0
  32. package/lib/components/TagPicker/useTagPickerContextValues.js +41 -0
  33. package/lib/components/TagPicker/useTagPickerContextValues.js.map +1 -0
  34. package/lib/components/TagPickerButton/TagPickerButton.js +15 -0
  35. package/lib/components/TagPickerButton/TagPickerButton.js.map +1 -0
  36. package/lib/components/TagPickerButton/TagPickerButton.types.js +1 -0
  37. package/lib/components/TagPickerButton/TagPickerButton.types.js.map +1 -0
  38. package/lib/components/TagPickerButton/index.js +5 -0
  39. package/lib/components/TagPickerButton/index.js.map +1 -0
  40. package/lib/components/TagPickerButton/renderTagPickerButton.js +8 -0
  41. package/lib/components/TagPickerButton/renderTagPickerButton.js.map +1 -0
  42. package/lib/components/TagPickerButton/useTagPickerButton.js +54 -0
  43. package/lib/components/TagPickerButton/useTagPickerButton.js.map +1 -0
  44. package/lib/components/TagPickerButton/useTagPickerButtonStyles.styles.js +191 -0
  45. package/lib/components/TagPickerButton/useTagPickerButtonStyles.styles.js.map +1 -0
  46. package/lib/components/TagPickerControl/TagPickerControl.js +15 -0
  47. package/lib/components/TagPickerControl/TagPickerControl.js.map +1 -0
  48. package/lib/components/TagPickerControl/TagPickerControl.types.js +1 -0
  49. package/lib/components/TagPickerControl/TagPickerControl.types.js.map +1 -0
  50. package/lib/components/TagPickerControl/index.js +5 -0
  51. package/lib/components/TagPickerControl/index.js.map +1 -0
  52. package/lib/components/TagPickerControl/renderTagPickerControl.js +18 -0
  53. package/lib/components/TagPickerControl/renderTagPickerControl.js.map +1 -0
  54. package/lib/components/TagPickerControl/useTagPickerControl.js +101 -0
  55. package/lib/components/TagPickerControl/useTagPickerControl.js.map +1 -0
  56. package/lib/components/TagPickerControl/useTagPickerControlStyles.styles.js +262 -0
  57. package/lib/components/TagPickerControl/useTagPickerControlStyles.styles.js.map +1 -0
  58. package/lib/components/TagPickerGroup/TagPickerGroup.js +16 -0
  59. package/lib/components/TagPickerGroup/TagPickerGroup.js.map +1 -0
  60. package/lib/components/TagPickerGroup/TagPickerGroup.types.js +1 -0
  61. package/lib/components/TagPickerGroup/TagPickerGroup.types.js.map +1 -0
  62. package/lib/components/TagPickerGroup/index.js +5 -0
  63. package/lib/components/TagPickerGroup/index.js.map +1 -0
  64. package/lib/components/TagPickerGroup/renderTagPickerGroup.js +7 -0
  65. package/lib/components/TagPickerGroup/renderTagPickerGroup.js.map +1 -0
  66. package/lib/components/TagPickerGroup/useTagPickerGroup.js +62 -0
  67. package/lib/components/TagPickerGroup/useTagPickerGroup.js.map +1 -0
  68. package/lib/components/TagPickerGroup/useTagPickerGroupStyles.styles.js +53 -0
  69. package/lib/components/TagPickerGroup/useTagPickerGroupStyles.styles.js.map +1 -0
  70. package/lib/components/TagPickerInput/TagPickerInput.js +15 -0
  71. package/lib/components/TagPickerInput/TagPickerInput.js.map +1 -0
  72. package/lib/components/TagPickerInput/TagPickerInput.types.js +1 -0
  73. package/lib/components/TagPickerInput/TagPickerInput.types.js.map +1 -0
  74. package/lib/components/TagPickerInput/index.js +5 -0
  75. package/lib/components/TagPickerInput/index.js.map +1 -0
  76. package/lib/components/TagPickerInput/renderTagPickerInput.js +8 -0
  77. package/lib/components/TagPickerInput/renderTagPickerInput.js.map +1 -0
  78. package/lib/components/TagPickerInput/useTagPickerInput.js +137 -0
  79. package/lib/components/TagPickerInput/useTagPickerInput.js.map +1 -0
  80. package/lib/components/TagPickerInput/useTagPickerInputStyles.styles.js +60 -0
  81. package/lib/components/TagPickerInput/useTagPickerInputStyles.styles.js.map +1 -0
  82. package/lib/components/TagPickerList/TagPickerList.js +15 -0
  83. package/lib/components/TagPickerList/TagPickerList.js.map +1 -0
  84. package/lib/components/TagPickerList/TagPickerList.types.js +1 -0
  85. package/lib/components/TagPickerList/TagPickerList.types.js.map +1 -0
  86. package/lib/components/TagPickerList/index.js +5 -0
  87. package/lib/components/TagPickerList/index.js.map +1 -0
  88. package/lib/components/TagPickerList/renderTagPickerList.js +8 -0
  89. package/lib/components/TagPickerList/renderTagPickerList.js.map +1 -0
  90. package/lib/components/TagPickerList/useTagPickerList.js +39 -0
  91. package/lib/components/TagPickerList/useTagPickerList.js.map +1 -0
  92. package/lib/components/TagPickerList/useTagPickerListStyles.styles.js +33 -0
  93. package/lib/components/TagPickerList/useTagPickerListStyles.styles.js.map +1 -0
  94. package/lib/components/TagPickerOption/TagPickerOption.js +15 -0
  95. package/lib/components/TagPickerOption/TagPickerOption.js.map +1 -0
  96. package/lib/components/TagPickerOption/TagPickerOption.types.js +1 -0
  97. package/lib/components/TagPickerOption/TagPickerOption.types.js.map +1 -0
  98. package/lib/components/TagPickerOption/index.js +5 -0
  99. package/lib/components/TagPickerOption/index.js.map +1 -0
  100. package/lib/components/TagPickerOption/renderTagPickerOption.js +14 -0
  101. package/lib/components/TagPickerOption/renderTagPickerOption.js.map +1 -0
  102. package/lib/components/TagPickerOption/useTagPickerOption.js +35 -0
  103. package/lib/components/TagPickerOption/useTagPickerOption.js.map +1 -0
  104. package/lib/components/TagPickerOption/useTagPickerOptionStyles.styles.js +49 -0
  105. package/lib/components/TagPickerOption/useTagPickerOptionStyles.styles.js.map +1 -0
  106. package/lib/components/TagPickerOptionGroup/TagPickerOptionGroup.js +15 -0
  107. package/lib/components/TagPickerOptionGroup/TagPickerOptionGroup.js.map +1 -0
  108. package/lib/components/TagPickerOptionGroup/TagPickerOptionGroup.types.js +1 -0
  109. package/lib/components/TagPickerOptionGroup/TagPickerOptionGroup.types.js.map +1 -0
  110. package/lib/components/TagPickerOptionGroup/index.js +5 -0
  111. package/lib/components/TagPickerOptionGroup/index.js.map +1 -0
  112. package/lib/components/TagPickerOptionGroup/renderTagPickerOptionGroup.js +4 -0
  113. package/lib/components/TagPickerOptionGroup/renderTagPickerOptionGroup.js.map +1 -0
  114. package/lib/components/TagPickerOptionGroup/useTagPickerOptionGroup.js +11 -0
  115. package/lib/components/TagPickerOptionGroup/useTagPickerOptionGroup.js.map +1 -0
  116. package/lib/components/TagPickerOptionGroup/useTagPickerOptionGroupStyles.styles.js +18 -0
  117. package/lib/components/TagPickerOptionGroup/useTagPickerOptionGroupStyles.styles.js.map +1 -0
  118. package/lib/contexts/TagPickerContext.js +27 -0
  119. package/lib/contexts/TagPickerContext.js.map +1 -0
  120. package/lib/index.js +9 -0
  121. package/lib/index.js.map +1 -0
  122. package/lib/utils/tagPicker2Tag.js +32 -0
  123. package/lib/utils/tagPicker2Tag.js.map +1 -0
  124. package/lib/utils/tokens.js +6 -0
  125. package/lib/utils/tokens.js.map +1 -0
  126. package/lib/utils/useResizeObserverRef.js +22 -0
  127. package/lib/utils/useResizeObserverRef.js.map +1 -0
  128. package/lib/utils/useTagPickerFilter.js +35 -0
  129. package/lib/utils/useTagPickerFilter.js.map +1 -0
  130. package/lib-commonjs/TagPicker.js +6 -0
  131. package/lib-commonjs/TagPicker.js.map +1 -0
  132. package/lib-commonjs/TagPickerButton.js +6 -0
  133. package/lib-commonjs/TagPickerButton.js.map +1 -0
  134. package/lib-commonjs/TagPickerControl.js +6 -0
  135. package/lib-commonjs/TagPickerControl.js.map +1 -0
  136. package/lib-commonjs/TagPickerGroup.js +6 -0
  137. package/lib-commonjs/TagPickerGroup.js.map +1 -0
  138. package/lib-commonjs/TagPickerInput.js +6 -0
  139. package/lib-commonjs/TagPickerInput.js.map +1 -0
  140. package/lib-commonjs/TagPickerList.js +6 -0
  141. package/lib-commonjs/TagPickerList.js.map +1 -0
  142. package/lib-commonjs/TagPickerOption.js +6 -0
  143. package/lib-commonjs/TagPickerOption.js.map +1 -0
  144. package/lib-commonjs/TagPickerOptionGroup.js +6 -0
  145. package/lib-commonjs/TagPickerOptionGroup.js.map +1 -0
  146. package/lib-commonjs/components/TagPicker/TagPicker.js +21 -0
  147. package/lib-commonjs/components/TagPicker/TagPicker.js.map +1 -0
  148. package/lib-commonjs/components/TagPicker/TagPicker.types.js +4 -0
  149. package/lib-commonjs/components/TagPicker/TagPicker.types.js.map +1 -0
  150. package/lib-commonjs/components/TagPicker/index.js +9 -0
  151. package/lib-commonjs/components/TagPicker/index.js.map +1 -0
  152. package/lib-commonjs/components/TagPicker/renderTagPicker.js +29 -0
  153. package/lib-commonjs/components/TagPicker/renderTagPicker.js.map +1 -0
  154. package/lib-commonjs/components/TagPicker/useTagPicker.js +126 -0
  155. package/lib-commonjs/components/TagPicker/useTagPicker.js.map +1 -0
  156. package/lib-commonjs/components/TagPicker/useTagPickerContextValues.js +52 -0
  157. package/lib-commonjs/components/TagPicker/useTagPickerContextValues.js.map +1 -0
  158. package/lib-commonjs/components/TagPickerButton/TagPickerButton.js +23 -0
  159. package/lib-commonjs/components/TagPickerButton/TagPickerButton.js.map +1 -0
  160. package/lib-commonjs/components/TagPickerButton/TagPickerButton.types.js +4 -0
  161. package/lib-commonjs/components/TagPickerButton/TagPickerButton.types.js.map +1 -0
  162. package/lib-commonjs/components/TagPickerButton/index.js +10 -0
  163. package/lib-commonjs/components/TagPickerButton/index.js.map +1 -0
  164. package/lib-commonjs/components/TagPickerButton/renderTagPickerButton.js +16 -0
  165. package/lib-commonjs/components/TagPickerButton/renderTagPickerButton.js.map +1 -0
  166. package/lib-commonjs/components/TagPickerButton/useTagPickerButton.js +57 -0
  167. package/lib-commonjs/components/TagPickerButton/useTagPickerButton.js.map +1 -0
  168. package/lib-commonjs/components/TagPickerButton/useTagPickerButtonStyles.styles.js +453 -0
  169. package/lib-commonjs/components/TagPickerButton/useTagPickerButtonStyles.styles.js.map +1 -0
  170. package/lib-commonjs/components/TagPickerControl/TagPickerControl.js +23 -0
  171. package/lib-commonjs/components/TagPickerControl/TagPickerControl.js.map +1 -0
  172. package/lib-commonjs/components/TagPickerControl/TagPickerControl.types.js +6 -0
  173. package/lib-commonjs/components/TagPickerControl/TagPickerControl.types.js.map +1 -0
  174. package/lib-commonjs/components/TagPickerControl/index.js +10 -0
  175. package/lib-commonjs/components/TagPickerControl/index.js.map +1 -0
  176. package/lib-commonjs/components/TagPickerControl/renderTagPickerControl.js +26 -0
  177. package/lib-commonjs/components/TagPickerControl/renderTagPickerControl.js.map +1 -0
  178. package/lib-commonjs/components/TagPickerControl/useTagPickerControl.js +104 -0
  179. package/lib-commonjs/components/TagPickerControl/useTagPickerControl.js.map +1 -0
  180. package/lib-commonjs/components/TagPickerControl/useTagPickerControlStyles.styles.js +579 -0
  181. package/lib-commonjs/components/TagPickerControl/useTagPickerControlStyles.styles.js.map +1 -0
  182. package/lib-commonjs/components/TagPickerGroup/TagPickerGroup.js +24 -0
  183. package/lib-commonjs/components/TagPickerGroup/TagPickerGroup.js.map +1 -0
  184. package/lib-commonjs/components/TagPickerGroup/TagPickerGroup.types.js +4 -0
  185. package/lib-commonjs/components/TagPickerGroup/TagPickerGroup.types.js.map +1 -0
  186. package/lib-commonjs/components/TagPickerGroup/index.js +10 -0
  187. package/lib-commonjs/components/TagPickerGroup/index.js.map +1 -0
  188. package/lib-commonjs/components/TagPickerGroup/renderTagPickerGroup.js +17 -0
  189. package/lib-commonjs/components/TagPickerGroup/renderTagPickerGroup.js.map +1 -0
  190. package/lib-commonjs/components/TagPickerGroup/useTagPickerGroup.js +65 -0
  191. package/lib-commonjs/components/TagPickerGroup/useTagPickerGroup.js.map +1 -0
  192. package/lib-commonjs/components/TagPickerGroup/useTagPickerGroupStyles.styles.js +97 -0
  193. package/lib-commonjs/components/TagPickerGroup/useTagPickerGroupStyles.styles.js.map +1 -0
  194. package/lib-commonjs/components/TagPickerInput/TagPickerInput.js +23 -0
  195. package/lib-commonjs/components/TagPickerInput/TagPickerInput.js.map +1 -0
  196. package/lib-commonjs/components/TagPickerInput/TagPickerInput.types.js +4 -0
  197. package/lib-commonjs/components/TagPickerInput/TagPickerInput.types.js.map +1 -0
  198. package/lib-commonjs/components/TagPickerInput/index.js +10 -0
  199. package/lib-commonjs/components/TagPickerInput/index.js.map +1 -0
  200. package/lib-commonjs/components/TagPickerInput/renderTagPickerInput.js +16 -0
  201. package/lib-commonjs/components/TagPickerInput/renderTagPickerInput.js.map +1 -0
  202. package/lib-commonjs/components/TagPickerInput/useTagPickerInput.js +140 -0
  203. package/lib-commonjs/components/TagPickerInput/useTagPickerInput.js.map +1 -0
  204. package/lib-commonjs/components/TagPickerInput/useTagPickerInputStyles.styles.js +122 -0
  205. package/lib-commonjs/components/TagPickerInput/useTagPickerInputStyles.styles.js.map +1 -0
  206. package/lib-commonjs/components/TagPickerList/TagPickerList.js +23 -0
  207. package/lib-commonjs/components/TagPickerList/TagPickerList.js.map +1 -0
  208. package/lib-commonjs/components/TagPickerList/TagPickerList.types.js +4 -0
  209. package/lib-commonjs/components/TagPickerList/TagPickerList.types.js.map +1 -0
  210. package/lib-commonjs/components/TagPickerList/index.js +10 -0
  211. package/lib-commonjs/components/TagPickerList/index.js.map +1 -0
  212. package/lib-commonjs/components/TagPickerList/renderTagPickerList.js +16 -0
  213. package/lib-commonjs/components/TagPickerList/renderTagPickerList.js.map +1 -0
  214. package/lib-commonjs/components/TagPickerList/useTagPickerList.js +41 -0
  215. package/lib-commonjs/components/TagPickerList/useTagPickerList.js.map +1 -0
  216. package/lib-commonjs/components/TagPickerList/useTagPickerListStyles.styles.js +66 -0
  217. package/lib-commonjs/components/TagPickerList/useTagPickerListStyles.styles.js.map +1 -0
  218. package/lib-commonjs/components/TagPickerOption/TagPickerOption.js +23 -0
  219. package/lib-commonjs/components/TagPickerOption/TagPickerOption.js.map +1 -0
  220. package/lib-commonjs/components/TagPickerOption/TagPickerOption.types.js +6 -0
  221. package/lib-commonjs/components/TagPickerOption/TagPickerOption.types.js.map +1 -0
  222. package/lib-commonjs/components/TagPickerOption/index.js +10 -0
  223. package/lib-commonjs/components/TagPickerOption/index.js.map +1 -0
  224. package/lib-commonjs/components/TagPickerOption/renderTagPickerOption.js +22 -0
  225. package/lib-commonjs/components/TagPickerOption/renderTagPickerOption.js.map +1 -0
  226. package/lib-commonjs/components/TagPickerOption/useTagPickerOption.js +38 -0
  227. package/lib-commonjs/components/TagPickerOption/useTagPickerOption.js.map +1 -0
  228. package/lib-commonjs/components/TagPickerOption/useTagPickerOptionStyles.styles.js +69 -0
  229. package/lib-commonjs/components/TagPickerOption/useTagPickerOptionStyles.styles.js.map +1 -0
  230. package/lib-commonjs/components/TagPickerOptionGroup/TagPickerOptionGroup.js +23 -0
  231. package/lib-commonjs/components/TagPickerOptionGroup/TagPickerOptionGroup.js.map +1 -0
  232. package/lib-commonjs/components/TagPickerOptionGroup/TagPickerOptionGroup.types.js +4 -0
  233. package/lib-commonjs/components/TagPickerOptionGroup/TagPickerOptionGroup.types.js.map +1 -0
  234. package/lib-commonjs/components/TagPickerOptionGroup/index.js +10 -0
  235. package/lib-commonjs/components/TagPickerOptionGroup/index.js.map +1 -0
  236. package/lib-commonjs/components/TagPickerOptionGroup/renderTagPickerOptionGroup.js +12 -0
  237. package/lib-commonjs/components/TagPickerOptionGroup/renderTagPickerOptionGroup.js.map +1 -0
  238. package/lib-commonjs/components/TagPickerOptionGroup/useTagPickerOptionGroup.js +14 -0
  239. package/lib-commonjs/components/TagPickerOptionGroup/useTagPickerOptionGroup.js.map +1 -0
  240. package/lib-commonjs/components/TagPickerOptionGroup/useTagPickerOptionGroupStyles.styles.js +32 -0
  241. package/lib-commonjs/components/TagPickerOptionGroup/useTagPickerOptionGroupStyles.styles.js.map +1 -0
  242. package/lib-commonjs/contexts/TagPickerContext.js +47 -0
  243. package/lib-commonjs/contexts/TagPickerContext.js.map +1 -0
  244. package/lib-commonjs/index.js +138 -0
  245. package/lib-commonjs/index.js.map +1 -0
  246. package/lib-commonjs/utils/tagPicker2Tag.js +53 -0
  247. package/lib-commonjs/utils/tagPicker2Tag.js.map +1 -0
  248. package/lib-commonjs/utils/tokens.js +24 -0
  249. package/lib-commonjs/utils/tokens.js.map +1 -0
  250. package/lib-commonjs/utils/useResizeObserverRef.js +33 -0
  251. package/lib-commonjs/utils/useResizeObserverRef.js.map +1 -0
  252. package/lib-commonjs/utils/useTagPickerFilter.js +46 -0
  253. package/lib-commonjs/utils/useTagPickerFilter.js.map +1 -0
  254. package/package.json +80 -0
@@ -0,0 +1,123 @@
1
+ import * as React from 'react';
2
+ import { useEventCallback, useId, useMergedRefs } from '@fluentui/react-utilities';
3
+ import { optionClassNames } from '@fluentui/react-combobox';
4
+ import { resolvePositioningShorthand, usePositioning } from '@fluentui/react-positioning';
5
+ import { useActiveDescendant } from '@fluentui/react-aria';
6
+ import { useComboboxBaseState } from '@fluentui/react-combobox';
7
+ // Set a default set of fallback positions to try if the dropdown does not fit on screen
8
+ const fallbackPositions = [
9
+ 'above',
10
+ 'after',
11
+ 'after-top',
12
+ 'before',
13
+ 'before-top'
14
+ ];
15
+ /**
16
+ * Create the state required to render Picker.
17
+ *
18
+ * The returned state can be modified with hooks such as usePickerStyles_unstable,
19
+ * before being passed to renderPicker_unstable.
20
+ *
21
+ * @param props - props from this instance of Picker
22
+ */ export const useTagPicker_unstable = (props)=>{
23
+ const popoverId = useId('picker-listbox');
24
+ const triggerInnerRef = React.useRef(null);
25
+ const secondaryActionRef = React.useRef(null);
26
+ const tagPickerGroupRef = React.useRef(null);
27
+ const { positioning, size = 'medium', inline = false } = props;
28
+ const { targetRef, containerRef } = usePositioning({
29
+ position: 'below',
30
+ align: 'start',
31
+ offset: {
32
+ crossAxis: 0,
33
+ mainAxis: 2
34
+ },
35
+ fallbackPositions,
36
+ matchTargetSize: 'width',
37
+ ...resolvePositioningShorthand(positioning)
38
+ });
39
+ const { controller: activeDescendantController, activeParentRef, listboxRef } = useActiveDescendant({
40
+ matchOption: (el)=>el.classList.contains(optionClassNames.root)
41
+ });
42
+ const comboboxState = useComboboxBaseState({
43
+ ...props,
44
+ onOptionSelect: useEventCallback((event, data)=>{
45
+ var _props_onOptionSelect;
46
+ return (_props_onOptionSelect = props.onOptionSelect) === null || _props_onOptionSelect === void 0 ? void 0 : _props_onOptionSelect.call(props, event, {
47
+ selectedOptions: data.selectedOptions,
48
+ value: data.optionValue,
49
+ type: event.type,
50
+ event
51
+ });
52
+ }),
53
+ onOpenChange: useEventCallback((event, data)=>{
54
+ var _props_onOpenChange;
55
+ return (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, {
56
+ ...data,
57
+ type: event.type,
58
+ event
59
+ });
60
+ }),
61
+ activeDescendantController,
62
+ editable: true,
63
+ multiselect: true,
64
+ size: 'medium'
65
+ });
66
+ const { trigger, popover } = childrenToTriggerAndPopover(props.children);
67
+ return {
68
+ activeDescendantController,
69
+ components: {},
70
+ trigger,
71
+ popover: comboboxState.open || comboboxState.hasFocus ? popover : undefined,
72
+ popoverId,
73
+ disabled: comboboxState.disabled,
74
+ triggerRef: useMergedRefs(triggerInnerRef, activeParentRef),
75
+ popoverRef: useMergedRefs(listboxRef, containerRef),
76
+ secondaryActionRef,
77
+ tagPickerGroupRef,
78
+ targetRef,
79
+ size,
80
+ inline,
81
+ open: comboboxState.open,
82
+ mountNode: comboboxState.mountNode,
83
+ onOptionClick: useEventCallback((event)=>{
84
+ comboboxState.onOptionClick(event);
85
+ comboboxState.setOpen(event, false);
86
+ }),
87
+ appearance: comboboxState.appearance,
88
+ clearSelection: comboboxState.clearSelection,
89
+ getOptionById: comboboxState.getOptionById,
90
+ registerOption: comboboxState.registerOption,
91
+ selectedOptions: comboboxState.selectedOptions,
92
+ selectOption: comboboxState.selectOption,
93
+ setHasFocus: comboboxState.setHasFocus,
94
+ setOpen: comboboxState.setOpen,
95
+ setValue: comboboxState.setValue,
96
+ value: comboboxState.value
97
+ };
98
+ };
99
+ const childrenToTriggerAndPopover = (children)=>{
100
+ const childrenArray = React.Children.toArray(children);
101
+ if (process.env.NODE_ENV !== 'production') {
102
+ if (childrenArray.length === 0) {
103
+ // eslint-disable-next-line no-console
104
+ console.warn('Picker must contain at least one child');
105
+ }
106
+ if (childrenArray.length > 2) {
107
+ // eslint-disable-next-line no-console
108
+ console.warn('Picker must contain at most two children');
109
+ }
110
+ }
111
+ let trigger = undefined;
112
+ let popover = undefined;
113
+ if (childrenArray.length === 2) {
114
+ trigger = childrenArray[0];
115
+ popover = childrenArray[1];
116
+ } else if (childrenArray.length === 1) {
117
+ popover = childrenArray[0];
118
+ }
119
+ return {
120
+ trigger,
121
+ popover
122
+ };
123
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useTagPicker.ts"],"sourcesContent":["import * as React from 'react';\nimport { useEventCallback, useId, useMergedRefs } from '@fluentui/react-utilities';\nimport type {\n TagPickerOnOpenChangeData,\n TagPickerOnOptionSelectData,\n TagPickerProps,\n TagPickerState,\n} from './TagPicker.types';\nimport { optionClassNames } from '@fluentui/react-combobox';\nimport { PositioningShorthandValue, resolvePositioningShorthand, usePositioning } from '@fluentui/react-positioning';\nimport { useActiveDescendant } from '@fluentui/react-aria';\nimport { useComboboxBaseState } from '@fluentui/react-combobox';\n\n// Set a default set of fallback positions to try if the dropdown does not fit on screen\nconst fallbackPositions: PositioningShorthandValue[] = ['above', 'after', 'after-top', 'before', 'before-top'];\n\n/**\n * Create the state required to render Picker.\n *\n * The returned state can be modified with hooks such as usePickerStyles_unstable,\n * before being passed to renderPicker_unstable.\n *\n * @param props - props from this instance of Picker\n */\nexport const useTagPicker_unstable = (props: TagPickerProps): TagPickerState => {\n const popoverId = useId('picker-listbox');\n const triggerInnerRef = React.useRef<HTMLInputElement | HTMLButtonElement>(null);\n const secondaryActionRef = React.useRef<HTMLSpanElement>(null);\n const tagPickerGroupRef = React.useRef<HTMLDivElement>(null);\n const { positioning, size = 'medium', inline = false } = props;\n\n const { targetRef, containerRef } = usePositioning({\n position: 'below' as const,\n align: 'start' as const,\n offset: { crossAxis: 0, mainAxis: 2 },\n fallbackPositions,\n matchTargetSize: 'width' as const,\n ...resolvePositioningShorthand(positioning),\n });\n\n const {\n controller: activeDescendantController,\n activeParentRef,\n listboxRef,\n } = useActiveDescendant<HTMLInputElement, HTMLDivElement>({\n matchOption: el => el.classList.contains(optionClassNames.root),\n });\n\n const comboboxState = useComboboxBaseState({\n ...props,\n onOptionSelect: useEventCallback((event, data) =>\n props.onOptionSelect?.(event, {\n selectedOptions: data.selectedOptions,\n value: data.optionValue,\n type: event.type,\n event,\n } as TagPickerOnOptionSelectData),\n ),\n onOpenChange: useEventCallback((event, data) =>\n props.onOpenChange?.(event, {\n ...data,\n type: event.type,\n event,\n } as TagPickerOnOpenChangeData),\n ),\n activeDescendantController,\n editable: true,\n multiselect: true,\n size: 'medium',\n });\n\n const { trigger, popover } = childrenToTriggerAndPopover(props.children);\n\n return {\n activeDescendantController,\n components: {},\n trigger,\n popover: comboboxState.open || comboboxState.hasFocus ? popover : undefined,\n popoverId,\n disabled: comboboxState.disabled,\n triggerRef: useMergedRefs(triggerInnerRef, activeParentRef),\n popoverRef: useMergedRefs(listboxRef, containerRef),\n secondaryActionRef,\n tagPickerGroupRef,\n targetRef,\n size,\n inline,\n open: comboboxState.open,\n mountNode: comboboxState.mountNode,\n onOptionClick: useEventCallback(event => {\n comboboxState.onOptionClick(event);\n comboboxState.setOpen(event, false);\n }),\n appearance: comboboxState.appearance,\n clearSelection: comboboxState.clearSelection,\n getOptionById: comboboxState.getOptionById,\n registerOption: comboboxState.registerOption,\n selectedOptions: comboboxState.selectedOptions,\n selectOption: comboboxState.selectOption,\n setHasFocus: comboboxState.setHasFocus,\n setOpen: comboboxState.setOpen,\n setValue: comboboxState.setValue,\n value: comboboxState.value,\n };\n};\n\nconst childrenToTriggerAndPopover = (children?: React.ReactNode) => {\n const childrenArray = React.Children.toArray(children) as React.ReactElement[];\n\n if (process.env.NODE_ENV !== 'production') {\n if (childrenArray.length === 0) {\n // eslint-disable-next-line no-console\n console.warn('Picker must contain at least one child');\n }\n\n if (childrenArray.length > 2) {\n // eslint-disable-next-line no-console\n console.warn('Picker must contain at most two children');\n }\n }\n\n let trigger: React.ReactElement | undefined = undefined;\n let popover: React.ReactElement | undefined = undefined;\n if (childrenArray.length === 2) {\n trigger = childrenArray[0];\n popover = childrenArray[1];\n } else if (childrenArray.length === 1) {\n popover = childrenArray[0];\n }\n return { trigger, popover };\n};\n"],"names":["React","useEventCallback","useId","useMergedRefs","optionClassNames","resolvePositioningShorthand","usePositioning","useActiveDescendant","useComboboxBaseState","fallbackPositions","useTagPicker_unstable","props","popoverId","triggerInnerRef","useRef","secondaryActionRef","tagPickerGroupRef","positioning","size","inline","targetRef","containerRef","position","align","offset","crossAxis","mainAxis","matchTargetSize","controller","activeDescendantController","activeParentRef","listboxRef","matchOption","el","classList","contains","root","comboboxState","onOptionSelect","event","data","selectedOptions","value","optionValue","type","onOpenChange","editable","multiselect","trigger","popover","childrenToTriggerAndPopover","children","components","open","hasFocus","undefined","disabled","triggerRef","popoverRef","mountNode","onOptionClick","setOpen","appearance","clearSelection","getOptionById","registerOption","selectOption","setHasFocus","setValue","childrenArray","Children","toArray","process","env","NODE_ENV","length","console","warn"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+ export function useTagPickerContextValues(state) {
3
+ const { onOptionClick, registerOption, selectedOptions, selectOption, value, triggerRef, secondaryActionRef, tagPickerGroupRef, targetRef, size, setValue, setOpen, setHasFocus, popoverRef, appearance, clearSelection, getOptionById, open, popoverId, disabled } = state;
4
+ return {
5
+ activeDescendant: React.useMemo(()=>({
6
+ controller: state.activeDescendantController
7
+ }), [
8
+ state.activeDescendantController
9
+ ]),
10
+ listbox: {
11
+ onOptionClick,
12
+ registerOption,
13
+ selectedOptions,
14
+ selectOption,
15
+ focusVisible: false,
16
+ setActiveOption: noop
17
+ },
18
+ picker: {
19
+ value,
20
+ triggerRef,
21
+ targetRef,
22
+ secondaryActionRef,
23
+ tagPickerGroupRef,
24
+ size,
25
+ setValue,
26
+ setOpen,
27
+ setHasFocus,
28
+ selectOption,
29
+ popoverRef,
30
+ selectedOptions,
31
+ appearance,
32
+ clearSelection,
33
+ getOptionById,
34
+ open,
35
+ popoverId,
36
+ disabled
37
+ }
38
+ };
39
+ }
40
+ const noop = ()=>{
41
+ /** noop */ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useTagPickerContextValues.ts"],"sourcesContent":["import * as React from 'react';\nimport { TagPickerContextValues, TagPickerState } from './TagPicker.types';\n\nexport function useTagPickerContextValues(state: TagPickerState): TagPickerContextValues {\n const {\n onOptionClick,\n registerOption,\n selectedOptions,\n selectOption,\n value,\n triggerRef,\n secondaryActionRef,\n tagPickerGroupRef,\n targetRef,\n size,\n setValue,\n setOpen,\n setHasFocus,\n popoverRef,\n appearance,\n clearSelection,\n getOptionById,\n open,\n popoverId,\n disabled,\n } = state;\n return {\n activeDescendant: React.useMemo(\n () => ({ controller: state.activeDescendantController }),\n [state.activeDescendantController],\n ),\n listbox: {\n onOptionClick,\n registerOption,\n selectedOptions,\n selectOption,\n focusVisible: false,\n setActiveOption: noop,\n },\n picker: {\n value,\n triggerRef,\n targetRef,\n secondaryActionRef,\n tagPickerGroupRef,\n size,\n setValue,\n setOpen,\n setHasFocus,\n selectOption,\n popoverRef,\n selectedOptions,\n appearance,\n clearSelection,\n getOptionById,\n open,\n popoverId,\n disabled,\n },\n };\n}\n\nconst noop = () => {\n /** noop */\n};\n"],"names":["React","useTagPickerContextValues","state","onOptionClick","registerOption","selectedOptions","selectOption","value","triggerRef","secondaryActionRef","tagPickerGroupRef","targetRef","size","setValue","setOpen","setHasFocus","popoverRef","appearance","clearSelection","getOptionById","open","popoverId","disabled","activeDescendant","useMemo","controller","activeDescendantController","listbox","focusVisible","setActiveOption","noop","picker"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAG/B,OAAO,SAASC,0BAA0BC,KAAqB;IAC7D,MAAM,EACJC,aAAa,EACbC,cAAc,EACdC,eAAe,EACfC,YAAY,EACZC,KAAK,EACLC,UAAU,EACVC,kBAAkB,EAClBC,iBAAiB,EACjBC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,WAAW,EACXC,UAAU,EACVC,UAAU,EACVC,cAAc,EACdC,aAAa,EACbC,IAAI,EACJC,SAAS,EACTC,QAAQ,EACT,GAAGpB;IACJ,OAAO;QACLqB,kBAAkBvB,MAAMwB,OAAO,CAC7B,IAAO,CAAA;gBAAEC,YAAYvB,MAAMwB,0BAA0B;YAAC,CAAA,GACtD;YAACxB,MAAMwB,0BAA0B;SAAC;QAEpCC,SAAS;YACPxB;YACAC;YACAC;YACAC;YACAsB,cAAc;YACdC,iBAAiBC;QACnB;QACAC,QAAQ;YACNxB;YACAC;YACAG;YACAF;YACAC;YACAE;YACAC;YACAC;YACAC;YACAT;YACAU;YACAX;YACAY;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;IACF;AACF;AAEA,MAAMQ,OAAO;AACX,SAAS,GACX"}
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import { useTagPickerButton_unstable } from './useTagPickerButton';
3
+ import { renderTagPickerButton_unstable } from './renderTagPickerButton';
4
+ import { useTagPickerButtonStyles_unstable } from './useTagPickerButtonStyles.styles';
5
+ import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
6
+ /**
7
+ * TagPickerButton component -
8
+ * A TagPickerButton is an alternative to TagPickerInput that does not include an input field.
9
+ */ export const TagPickerButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
10
+ const state = useTagPickerButton_unstable(props, ref);
11
+ useTagPickerButtonStyles_unstable(state);
12
+ useCustomStyleHook_unstable('useTagPickerButtonStyles_unstable')(state);
13
+ return renderTagPickerButton_unstable(state);
14
+ });
15
+ TagPickerButton.displayName = 'TagPickerButton';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["TagPickerButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useTagPickerButton_unstable } from './useTagPickerButton';\nimport { renderTagPickerButton_unstable } from './renderTagPickerButton';\nimport { useTagPickerButtonStyles_unstable } from './useTagPickerButtonStyles.styles';\nimport type { TagPickerButtonProps } from './TagPickerButton.types';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * TagPickerButton component -\n * A TagPickerButton is an alternative to TagPickerInput that does not include an input field.\n */\nexport const TagPickerButton: ForwardRefComponent<TagPickerButtonProps> = React.forwardRef((props, ref) => {\n const state = useTagPickerButton_unstable(props, ref);\n\n useTagPickerButtonStyles_unstable(state);\n useCustomStyleHook_unstable('useTagPickerButtonStyles_unstable')(state);\n return renderTagPickerButton_unstable(state);\n});\n\nTagPickerButton.displayName = 'TagPickerButton';\n"],"names":["React","useTagPickerButton_unstable","renderTagPickerButton_unstable","useTagPickerButtonStyles_unstable","useCustomStyleHook_unstable","TagPickerButton","forwardRef","props","ref","state","displayName"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,2BAA2B,QAAQ,uBAAuB;AACnE,SAASC,8BAA8B,QAAQ,0BAA0B;AACzE,SAASC,iCAAiC,QAAQ,oCAAoC;AAEtF,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;;CAGC,GACD,OAAO,MAAMC,gCAA6DL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IACjG,MAAMC,QAAQR,4BAA4BM,OAAOC;IAEjDL,kCAAkCM;IAClCL,4BAA4B,qCAAqCK;IACjE,OAAOP,+BAA+BO;AACxC,GAAG;AAEHJ,gBAAgBK,WAAW,GAAG"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["TagPickerButton.types.ts"],"sourcesContent":["import { DropdownProps } from '@fluentui/react-combobox';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { TagPickerContextValue } from '../../contexts/TagPickerContext';\n\nexport type TagPickerButtonSlots = {\n root: Slot<'button'>;\n};\n\n/**\n * PickerButton Props\n */\nexport type TagPickerButtonProps = ComponentProps<TagPickerButtonSlots> &\n Pick<DropdownProps, 'size' | 'appearance'> & {\n disabled?: boolean;\n };\n\n/**\n * State used in rendering PickerButton\n */\nexport type TagPickerButtonState = ComponentState<TagPickerButtonSlots> &\n Pick<TagPickerContextValue, 'size'> & {\n hasSelectedOption: boolean;\n };\n"],"names":[],"mappings":"AAAA,WAsBI"}
@@ -0,0 +1,5 @@
1
+ export * from './TagPickerButton';
2
+ export * from './TagPickerButton.types';
3
+ export * from './renderTagPickerButton';
4
+ export * from './useTagPickerButton';
5
+ export * from './useTagPickerButtonStyles.styles';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './TagPickerButton';\nexport * from './TagPickerButton.types';\nexport * from './renderTagPickerButton';\nexport * from './useTagPickerButton';\nexport * from './useTagPickerButtonStyles.styles';\n"],"names":[],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,0BAA0B;AACxC,cAAc,0BAA0B;AACxC,cAAc,uBAAuB;AACrC,cAAc,oCAAoC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
2
+ import { assertSlots } from '@fluentui/react-utilities';
3
+ /**
4
+ * Render the final JSX of PickerButton
5
+ */ export const renderTagPickerButton_unstable = (state)=>{
6
+ assertSlots(state);
7
+ return /*#__PURE__*/ _jsx(state.root, {});
8
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["renderTagPickerButton.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { TagPickerButtonState, TagPickerButtonSlots } from './TagPickerButton.types';\n\n/**\n * Render the final JSX of PickerButton\n */\nexport const renderTagPickerButton_unstable = (state: TagPickerButtonState) => {\n assertSlots<TagPickerButtonSlots>(state);\n\n return <state.root />;\n};\n"],"names":["assertSlots","renderTagPickerButton_unstable","state","root"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAGxD;;CAEC,GACD,OAAO,MAAMC,iCAAiC,CAACC;IAC7CF,YAAkCE;IAElC,qBAAO,KAACA,MAAMC,IAAI;AACpB,EAAE"}
@@ -0,0 +1,54 @@
1
+ import * as React from 'react';
2
+ import { useActiveDescendantContext } from '@fluentui/react-aria';
3
+ import { useTagPickerContext_unstable } from '../../contexts/TagPickerContext';
4
+ import { useButtonTriggerSlot } from '@fluentui/react-combobox';
5
+ /**
6
+ * Create the state required to render PickerButton.
7
+ *
8
+ * The returned state can be modified with hooks such as usePickerButtonStyles_unstable,
9
+ * before being passed to renderPickerButton_unstable.
10
+ *
11
+ * @param props - props from this instance of PickerButton
12
+ * @param ref - reference to root HTMLDivElement of PickerButton
13
+ */ export const useTagPickerButton_unstable = (props, ref)=>{
14
+ const { controller: activeDescendantController } = useActiveDescendantContext();
15
+ const triggerRef = useTagPickerContext_unstable((ctx)=>ctx.triggerRef);
16
+ const open = useTagPickerContext_unstable((ctx)=>ctx.open);
17
+ const value = useTagPickerContext_unstable((ctx)=>ctx.value);
18
+ const hasSelectedOption = useTagPickerContext_unstable((ctx)=>ctx.selectedOptions.length > 0);
19
+ const popoverId = useTagPickerContext_unstable((ctx)=>ctx.popoverId);
20
+ const getOptionById = useTagPickerContext_unstable((ctx)=>ctx.getOptionById);
21
+ const selectOption = useTagPickerContext_unstable((ctx)=>ctx.selectOption);
22
+ const setHasFocus = useTagPickerContext_unstable((ctx)=>ctx.setHasFocus);
23
+ const setOpen = useTagPickerContext_unstable((ctx)=>ctx.setOpen);
24
+ // casting is required here as triggerRef can either be button or input,
25
+ // but in this case we can assure it's a button
26
+ const root = useButtonTriggerSlot(props, triggerRef, {
27
+ activeDescendantController,
28
+ defaultProps: {
29
+ type: 'button',
30
+ tabIndex: 0,
31
+ children: value || props.placeholder,
32
+ 'aria-controls': open ? popoverId : undefined,
33
+ ref
34
+ },
35
+ state: {
36
+ getOptionById,
37
+ open,
38
+ selectOption,
39
+ setHasFocus,
40
+ setOpen,
41
+ multiselect: true
42
+ }
43
+ });
44
+ const size = useTagPickerContext_unstable((ctx)=>ctx.size);
45
+ const state = {
46
+ components: {
47
+ root: 'button'
48
+ },
49
+ root,
50
+ size,
51
+ hasSelectedOption
52
+ };
53
+ return state;
54
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useTagPickerButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useActiveDescendantContext } from '@fluentui/react-aria';\nimport type { TagPickerButtonProps, TagPickerButtonState } from './TagPickerButton.types';\nimport { useTagPickerContext_unstable } from '../../contexts/TagPickerContext';\nimport { useButtonTriggerSlot } from '@fluentui/react-combobox';\n\n/**\n * Create the state required to render PickerButton.\n *\n * The returned state can be modified with hooks such as usePickerButtonStyles_unstable,\n * before being passed to renderPickerButton_unstable.\n *\n * @param props - props from this instance of PickerButton\n * @param ref - reference to root HTMLDivElement of PickerButton\n */\nexport const useTagPickerButton_unstable = (\n props: TagPickerButtonProps,\n ref: React.Ref<HTMLButtonElement>,\n): TagPickerButtonState => {\n const { controller: activeDescendantController } = useActiveDescendantContext();\n const triggerRef = useTagPickerContext_unstable(ctx => ctx.triggerRef);\n const open = useTagPickerContext_unstable(ctx => ctx.open);\n const value = useTagPickerContext_unstable(ctx => ctx.value);\n const hasSelectedOption = useTagPickerContext_unstable(ctx => ctx.selectedOptions.length > 0);\n const popoverId = useTagPickerContext_unstable(ctx => ctx.popoverId);\n const getOptionById = useTagPickerContext_unstable(ctx => ctx.getOptionById);\n const selectOption = useTagPickerContext_unstable(ctx => ctx.selectOption);\n const setHasFocus = useTagPickerContext_unstable(ctx => ctx.setHasFocus);\n const setOpen = useTagPickerContext_unstable(ctx => ctx.setOpen);\n\n // casting is required here as triggerRef can either be button or input,\n // but in this case we can assure it's a button\n const root = useButtonTriggerSlot(props, triggerRef as React.RefObject<HTMLButtonElement>, {\n activeDescendantController,\n defaultProps: {\n type: 'button',\n tabIndex: 0,\n children: value || props.placeholder,\n 'aria-controls': open ? popoverId : undefined,\n ref,\n },\n state: {\n getOptionById,\n open,\n selectOption,\n setHasFocus,\n setOpen,\n multiselect: true,\n },\n });\n\n const size = useTagPickerContext_unstable(ctx => ctx.size);\n\n const state: TagPickerButtonState = {\n components: {\n root: 'button',\n },\n root,\n size,\n hasSelectedOption,\n };\n\n return state;\n};\n"],"names":["React","useActiveDescendantContext","useTagPickerContext_unstable","useButtonTriggerSlot","useTagPickerButton_unstable","props","ref","controller","activeDescendantController","triggerRef","ctx","open","value","hasSelectedOption","selectedOptions","length","popoverId","getOptionById","selectOption","setHasFocus","setOpen","root","defaultProps","type","tabIndex","children","placeholder","undefined","state","multiselect","size","components"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,0BAA0B,QAAQ,uBAAuB;AAElE,SAASC,4BAA4B,QAAQ,kCAAkC;AAC/E,SAASC,oBAAoB,QAAQ,2BAA2B;AAEhE;;;;;;;;CAQC,GACD,OAAO,MAAMC,8BAA8B,CACzCC,OACAC;IAEA,MAAM,EAAEC,YAAYC,0BAA0B,EAAE,GAAGP;IACnD,MAAMQ,aAAaP,6BAA6BQ,CAAAA,MAAOA,IAAID,UAAU;IACrE,MAAME,OAAOT,6BAA6BQ,CAAAA,MAAOA,IAAIC,IAAI;IACzD,MAAMC,QAAQV,6BAA6BQ,CAAAA,MAAOA,IAAIE,KAAK;IAC3D,MAAMC,oBAAoBX,6BAA6BQ,CAAAA,MAAOA,IAAII,eAAe,CAACC,MAAM,GAAG;IAC3F,MAAMC,YAAYd,6BAA6BQ,CAAAA,MAAOA,IAAIM,SAAS;IACnE,MAAMC,gBAAgBf,6BAA6BQ,CAAAA,MAAOA,IAAIO,aAAa;IAC3E,MAAMC,eAAehB,6BAA6BQ,CAAAA,MAAOA,IAAIQ,YAAY;IACzE,MAAMC,cAAcjB,6BAA6BQ,CAAAA,MAAOA,IAAIS,WAAW;IACvE,MAAMC,UAAUlB,6BAA6BQ,CAAAA,MAAOA,IAAIU,OAAO;IAE/D,wEAAwE;IACxE,+CAA+C;IAC/C,MAAMC,OAAOlB,qBAAqBE,OAAOI,YAAkD;QACzFD;QACAc,cAAc;YACZC,MAAM;YACNC,UAAU;YACVC,UAAUb,SAASP,MAAMqB,WAAW;YACpC,iBAAiBf,OAAOK,YAAYW;YACpCrB;QACF;QACAsB,OAAO;YACLX;YACAN;YACAO;YACAC;YACAC;YACAS,aAAa;QACf;IACF;IAEA,MAAMC,OAAO5B,6BAA6BQ,CAAAA,MAAOA,IAAIoB,IAAI;IAEzD,MAAMF,QAA8B;QAClCG,YAAY;YACVV,MAAM;QACR;QACAA;QACAS;QACAjB;IACF;IAEA,OAAOe;AACT,EAAE"}
@@ -0,0 +1,191 @@
1
+ import { __styles, mergeClasses, shorthands } from '@griffel/react';
2
+ import { tokens, typographyStyles } from '@fluentui/react-theme';
3
+ export const tagPickerButtonClassNames = {
4
+ root: 'fui-TagPickerButton'
5
+ };
6
+ /**
7
+ * Styles for the root slot
8
+ */
9
+ const useStyles = /*#__PURE__*/__styles({
10
+ button: {
11
+ Bt984gj: "f122n59",
12
+ sshi5w: "f1nxs5xn",
13
+ De3pzq: "f1c21dwh",
14
+ B4j52fo: "fre7gi1",
15
+ Bekrc4i: ["f1358rze", "f1rvrf73"],
16
+ Bn0qgzm: "fqdk4by",
17
+ ibv6hh: ["f1rvrf73", "f1358rze"],
18
+ B7ck84d: "f1ewtqcl",
19
+ sj55zd: "f19n0e5",
20
+ i8kkvl: "f14mj54c",
21
+ Bceei9c: "f1k6fduh",
22
+ Bahqtrf: "fk6fouc",
23
+ fsow6f: ["f1o700av", "fes3tcz"],
24
+ Bh6795r: "fqerorx",
25
+ Brovlpu: "ftqa4ok"
26
+ },
27
+ placeholder: {
28
+ sj55zd: "fxc4j92"
29
+ },
30
+ medium: {
31
+ Bahqtrf: "fk6fouc",
32
+ Be2twd7: "fy9rknc",
33
+ Bhrd7zp: "figsok6",
34
+ Bg96gwp: "fwrc4pm",
35
+ z8tnut: "f1khb0e9",
36
+ z189sj: ["fdw0yi8", "fk8j09s"],
37
+ Byoj8tv: "f1jnq6q7",
38
+ uwmqm3: ["f1xile11", "fqznh8f"]
39
+ },
40
+ large: {
41
+ Bahqtrf: "fk6fouc",
42
+ Be2twd7: "fkhj508",
43
+ Bhrd7zp: "figsok6",
44
+ Bg96gwp: "f1i3iumi",
45
+ z8tnut: "f1sbtcvk",
46
+ z189sj: ["f11gcy0p", "f1ng84yb"],
47
+ Byoj8tv: "fdghr9",
48
+ uwmqm3: ["f1e60jzv", "f135dnwl"]
49
+ },
50
+ "extra-large": {
51
+ i8kkvl: "f1rjii52",
52
+ Bahqtrf: "fk6fouc",
53
+ Be2twd7: "fod5ikn",
54
+ Bhrd7zp: "figsok6",
55
+ Bg96gwp: "faaz57k",
56
+ z8tnut: "f1a1bwwz",
57
+ z189sj: ["fw5db7e", "f1uw59to"],
58
+ Byoj8tv: "fy7v416",
59
+ uwmqm3: ["fnphzt9", "flt1dlf"]
60
+ },
61
+ outline: {
62
+ De3pzq: "fxugw4r",
63
+ B4j52fo: "f192inf7",
64
+ Bekrc4i: ["f5tn483", "f1ojsxk5"],
65
+ Bn0qgzm: "f1vxd6vx",
66
+ ibv6hh: ["f1ojsxk5", "f5tn483"],
67
+ icvyot: "fzkkow9",
68
+ vrafjx: ["fcdblym", "fjik90z"],
69
+ oivjwe: "fg706s2",
70
+ wvpqe5: ["fjik90z", "fcdblym"],
71
+ g2u3we: "fj3muxo",
72
+ h3c5rm: ["f1akhkt", "f1lxtadh"],
73
+ B9xav0g: "f1c1zstj",
74
+ zhjwy3: ["f1lxtadh", "f1akhkt"]
75
+ },
76
+ outlineInteractive: {
77
+ Bgoe8wy: "fvcxoqz",
78
+ Bwzppfd: ["f1ub3y4t", "f1m52nbi"],
79
+ oetu4i: "flmw63s",
80
+ gg5e9n: ["f1m52nbi", "f1ub3y4t"],
81
+ B6oc9vd: "fvs00aa",
82
+ ak43y8: ["f1assf6x", "f4ruux4"],
83
+ wmxk5l: "fqhmt4z",
84
+ B50zh58: ["f4ruux4", "f1assf6x"]
85
+ },
86
+ underline: {
87
+ De3pzq: "f1c21dwh",
88
+ Bn0qgzm: "f1vxd6vx",
89
+ oivjwe: "fg706s2",
90
+ B9xav0g: "f1c1zstj",
91
+ Bbmb7ep: ["f1krrbdw", "f1deotkl"],
92
+ Beyfa6y: ["f1deotkl", "f1krrbdw"],
93
+ B7oj6ja: ["f10ostut", "f1ozlkrg"],
94
+ Btl43ni: ["f1ozlkrg", "f10ostut"]
95
+ },
96
+ "filled-lighter": {
97
+ De3pzq: "fxugw4r",
98
+ B4j52fo: "f192inf7",
99
+ Bekrc4i: ["f5tn483", "f1ojsxk5"],
100
+ Bn0qgzm: "f1vxd6vx",
101
+ ibv6hh: ["f1ojsxk5", "f5tn483"],
102
+ icvyot: "fzkkow9",
103
+ vrafjx: ["fcdblym", "fjik90z"],
104
+ oivjwe: "fg706s2",
105
+ wvpqe5: ["fjik90z", "fcdblym"],
106
+ g2u3we: "f1p3nwhy",
107
+ h3c5rm: ["f11589ue", "f1pdflbu"],
108
+ B9xav0g: "f1q5o8ev",
109
+ zhjwy3: ["f1pdflbu", "f11589ue"]
110
+ },
111
+ "filled-darker": {
112
+ De3pzq: "f16xq7d1",
113
+ B4j52fo: "f192inf7",
114
+ Bekrc4i: ["f5tn483", "f1ojsxk5"],
115
+ Bn0qgzm: "f1vxd6vx",
116
+ ibv6hh: ["f1ojsxk5", "f5tn483"],
117
+ icvyot: "fzkkow9",
118
+ vrafjx: ["fcdblym", "fjik90z"],
119
+ oivjwe: "fg706s2",
120
+ wvpqe5: ["fjik90z", "fcdblym"],
121
+ g2u3we: "f1p3nwhy",
122
+ h3c5rm: ["f11589ue", "f1pdflbu"],
123
+ B9xav0g: "f1q5o8ev",
124
+ zhjwy3: ["f1pdflbu", "f11589ue"]
125
+ },
126
+ invalid: {
127
+ tvckwq: "fs4k3qj",
128
+ gk2u95: ["fcee079", "fmyw78r"],
129
+ hhx65j: "f1fgmyf4",
130
+ Bxowmz0: ["fmyw78r", "fcee079"]
131
+ },
132
+ invalidUnderline: {
133
+ hhx65j: "f1fgmyf4"
134
+ },
135
+ disabled: {
136
+ Bceei9c: "fdrzuqr",
137
+ De3pzq: "f1c21dwh",
138
+ g2u3we: "f1jj8ep1",
139
+ h3c5rm: ["f15xbau", "fy0fskl"],
140
+ B9xav0g: "f4ikngz",
141
+ zhjwy3: ["fy0fskl", "f15xbau"],
142
+ Bjwas2f: "fg455y9",
143
+ Bn1d65q: ["f1rvyvqg", "f14g86mu"],
144
+ Bxeuatn: "f1cwzwz",
145
+ n51gp8: ["f14g86mu", "f1rvyvqg"]
146
+ },
147
+ disabledText: {
148
+ sj55zd: "f1s2aq7o",
149
+ Bceei9c: "fdrzuqr"
150
+ },
151
+ hidden: {
152
+ mc9l5x: "fjseox"
153
+ },
154
+ visuallyHidden: {
155
+ Bh84pgu: "f1ekcaio",
156
+ Bqenvij: "f1mpe4l3",
157
+ B6of3ja: "fkrn0sh",
158
+ t21cq0: ["f179hvsh", "f1538868"],
159
+ jrapky: "fmxx68s",
160
+ Frg6f3: ["f1538868", "f179hvsh"],
161
+ B68tc82: "f1p9o1ba",
162
+ Bmxbyg5: "f1sil6mw",
163
+ z8tnut: "f1nbblvp",
164
+ z189sj: ["fifp7yv", "f1asdtw4"],
165
+ Byoj8tv: "f1ov4xf1",
166
+ uwmqm3: ["f1asdtw4", "fifp7yv"],
167
+ a9b677: "frkrog8",
168
+ qhf8xq: "f1euv43f"
169
+ }
170
+ }, {
171
+ d: [".f122n59{align-items:center;}", ".f1nxs5xn{min-height:32px;}", ".f1c21dwh{background-color:var(--colorTransparentBackground);}", ".fre7gi1{border-top-width:0;}", ".f1358rze{border-right-width:0;}", ".f1rvrf73{border-left-width:0;}", ".fqdk4by{border-bottom-width:0;}", ".f1ewtqcl{box-sizing:border-box;}", ".f19n0e5{color:var(--colorNeutralForeground1);}", ".f14mj54c{column-gap:var(--spacingHorizontalXXS);}", ".f1k6fduh{cursor:pointer;}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".f1o700av{text-align:left;}", ".fes3tcz{text-align:right;}", ".fqerorx{flex-grow:1;}", ".fxc4j92{color:var(--colorNeutralForeground4);}", ".fy9rknc{font-size:var(--fontSizeBase200);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".fwrc4pm{line-height:var(--lineHeightBase200);}", ".f1khb0e9{padding-top:3px;}", ".fdw0yi8{padding-right:var(--spacingHorizontalSNudge);}", ".fk8j09s{padding-left:var(--spacingHorizontalSNudge);}", ".f1jnq6q7{padding-bottom:3px;}", ".f1xile11{padding-left:calc(var(--spacingHorizontalSNudge) + var(--spacingHorizontalXXS));}", ".fqznh8f{padding-right:calc(var(--spacingHorizontalSNudge) + var(--spacingHorizontalXXS));}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f1sbtcvk{padding-top:5px;}", ".f11gcy0p{padding-right:var(--spacingHorizontalMNudge);}", ".f1ng84yb{padding-left:var(--spacingHorizontalMNudge);}", ".fdghr9{padding-bottom:5px;}", ".f1e60jzv{padding-left:calc(var(--spacingHorizontalMNudge) + var(--spacingHorizontalXXS));}", ".f135dnwl{padding-right:calc(var(--spacingHorizontalMNudge) + var(--spacingHorizontalXXS));}", ".f1rjii52{column-gap:var(--spacingHorizontalSNudge);}", ".fod5ikn{font-size:var(--fontSizeBase400);}", ".faaz57k{line-height:var(--lineHeightBase400);}", ".f1a1bwwz{padding-top:7px;}", ".fw5db7e{padding-right:var(--spacingHorizontalM);}", ".f1uw59to{padding-left:var(--spacingHorizontalM);}", ".fy7v416{padding-bottom:7px;}", ".fnphzt9{padding-left:calc(var(--spacingHorizontalM) + var(--spacingHorizontalSNudge));}", ".flt1dlf{padding-right:calc(var(--spacingHorizontalM) + var(--spacingHorizontalSNudge));}", ".fxugw4r{background-color:var(--colorNeutralBackground1);}", ".f192inf7{border-top-width:var(--strokeWidthThin);}", ".f5tn483{border-right-width:var(--strokeWidthThin);}", ".f1ojsxk5{border-left-width:var(--strokeWidthThin);}", ".f1vxd6vx{border-bottom-width:var(--strokeWidthThin);}", ".fzkkow9{border-top-style:solid;}", ".fcdblym{border-right-style:solid;}", ".fjik90z{border-left-style:solid;}", ".fg706s2{border-bottom-style:solid;}", ".fj3muxo{border-top-color:var(--colorNeutralStroke1);}", ".f1akhkt{border-right-color:var(--colorNeutralStroke1);}", ".f1lxtadh{border-left-color:var(--colorNeutralStroke1);}", ".f1c1zstj{border-bottom-color:var(--colorNeutralStrokeAccessible);}", ".f1krrbdw{border-bottom-right-radius:0;}", ".f1deotkl{border-bottom-left-radius:0;}", ".f10ostut{border-top-right-radius:0;}", ".f1ozlkrg{border-top-left-radius:0;}", ".f1p3nwhy{border-top-color:transparent;}", ".f11589ue{border-right-color:transparent;}", ".f1pdflbu{border-left-color:transparent;}", ".f1q5o8ev{border-bottom-color:transparent;}", ".f16xq7d1{background-color:var(--colorNeutralBackground3);}", ".fs4k3qj:not(:focus-within),.fs4k3qj:hover:not(:focus-within){border-top-color:var(--colorPaletteRedBorder2);}", ".fcee079:not(:focus-within),.fcee079:hover:not(:focus-within){border-right-color:var(--colorPaletteRedBorder2);}", ".fmyw78r:not(:focus-within),.fmyw78r:hover:not(:focus-within){border-left-color:var(--colorPaletteRedBorder2);}", ".f1fgmyf4:not(:focus-within),.f1fgmyf4:hover:not(:focus-within){border-bottom-color:var(--colorPaletteRedBorder2);}", ".fdrzuqr{cursor:not-allowed;}", ".f1jj8ep1{border-top-color:var(--colorNeutralStrokeDisabled);}", ".f15xbau{border-right-color:var(--colorNeutralStrokeDisabled);}", ".fy0fskl{border-left-color:var(--colorNeutralStrokeDisabled);}", ".f4ikngz{border-bottom-color:var(--colorNeutralStrokeDisabled);}", ".f1s2aq7o{color:var(--colorNeutralForegroundDisabled);}", ".fjseox{display:none;}", ".f1ekcaio{clip:rect(0px, 0px, 0px, 0px);}", ".f1mpe4l3{height:1px;}", ".fkrn0sh{margin-top:-1px;}", ".f179hvsh{margin-right:-1px;}", ".f1538868{margin-left:-1px;}", ".fmxx68s{margin-bottom:-1px;}", ".f1p9o1ba{overflow-x:hidden;}", ".f1sil6mw{overflow-y:hidden;}", ".f1nbblvp{padding-top:0px;}", ".fifp7yv{padding-right:0px;}", ".f1asdtw4{padding-left:0px;}", ".f1ov4xf1{padding-bottom:0px;}", ".frkrog8{width:1px;}", ".f1euv43f{position:absolute;}"],
172
+ f: [".ftqa4ok:focus{outline-style:none;}"],
173
+ h: [".fvcxoqz:hover{border-top-color:var(--colorNeutralStroke1Hover);}", ".f1ub3y4t:hover{border-right-color:var(--colorNeutralStroke1Hover);}", ".f1m52nbi:hover{border-left-color:var(--colorNeutralStroke1Hover);}", ".flmw63s:hover{border-bottom-color:var(--colorNeutralStrokeAccessible);}"],
174
+ a: [".fvs00aa:active{border-top-color:var(--colorNeutralStroke1Pressed);}", ".f1assf6x:active{border-right-color:var(--colorNeutralStroke1Pressed);}", ".f4ruux4:active{border-left-color:var(--colorNeutralStroke1Pressed);}", ".fqhmt4z:active{border-bottom-color:var(--colorNeutralStrokeAccessible);}"],
175
+ m: [["@media (forced-colors: active){.fg455y9{border-top-color:GrayText;}}", {
176
+ m: "(forced-colors: active)"
177
+ }], ["@media (forced-colors: active){.f14g86mu{border-left-color:GrayText;}.f1rvyvqg{border-right-color:GrayText;}}", {
178
+ m: "(forced-colors: active)"
179
+ }], ["@media (forced-colors: active){.f1cwzwz{border-bottom-color:GrayText;}}", {
180
+ m: "(forced-colors: active)"
181
+ }]]
182
+ });
183
+ /**
184
+ * Apply styling to the PickerButton slots based on the state
185
+ */
186
+ export const useTagPickerButtonStyles_unstable = state => {
187
+ const styles = useStyles();
188
+ state.root.className = mergeClasses(tagPickerButtonClassNames.root, styles.button, styles[state.size], state.hasSelectedOption && styles.visuallyHidden, state.root.className);
189
+ return state;
190
+ };
191
+ //# sourceMappingURL=useTagPickerButtonStyles.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__styles","mergeClasses","shorthands","tokens","typographyStyles","tagPickerButtonClassNames","root","useStyles","button","Bt984gj","sshi5w","De3pzq","B4j52fo","Bekrc4i","Bn0qgzm","ibv6hh","B7ck84d","sj55zd","i8kkvl","Bceei9c","Bahqtrf","fsow6f","Bh6795r","Brovlpu","placeholder","medium","Be2twd7","Bhrd7zp","Bg96gwp","z8tnut","z189sj","Byoj8tv","uwmqm3","large","outline","icvyot","vrafjx","oivjwe","wvpqe5","g2u3we","h3c5rm","B9xav0g","zhjwy3","outlineInteractive","Bgoe8wy","Bwzppfd","oetu4i","gg5e9n","B6oc9vd","ak43y8","wmxk5l","B50zh58","underline","Bbmb7ep","Beyfa6y","B7oj6ja","Btl43ni","invalid","tvckwq","gk2u95","hhx65j","Bxowmz0","invalidUnderline","disabled","Bjwas2f","Bn1d65q","Bxeuatn","n51gp8","disabledText","hidden","mc9l5x","visuallyHidden","Bh84pgu","Bqenvij","B6of3ja","t21cq0","jrapky","Frg6f3","B68tc82","Bmxbyg5","a9b677","qhf8xq","d","f","h","a","m","useTagPickerButtonStyles_unstable","state","styles","className","size","hasSelectedOption"],"sources":["useTagPickerButtonStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const tagPickerButtonClassNames = {\n root: 'fui-TagPickerButton'\n};\n/**\n * Styles for the root slot\n */ const useStyles = makeStyles({\n button: {\n alignItems: 'center',\n minHeight: '32px',\n backgroundColor: tokens.colorTransparentBackground,\n ...shorthands.border('0'),\n boxSizing: 'border-box',\n color: tokens.colorNeutralForeground1,\n columnGap: tokens.spacingHorizontalXXS,\n cursor: 'pointer',\n fontFamily: tokens.fontFamilyBase,\n textAlign: 'left',\n flexGrow: 1,\n '&:focus': {\n outlineStyle: 'none'\n }\n },\n placeholder: {\n color: tokens.colorNeutralForeground4\n },\n // size variants\n medium: {\n ...typographyStyles.caption1,\n ...shorthands.padding('3px', tokens.spacingHorizontalSNudge, '3px', `calc(${tokens.spacingHorizontalSNudge} + ${tokens.spacingHorizontalXXS})`)\n },\n large: {\n ...typographyStyles.body1,\n ...shorthands.padding('5px', tokens.spacingHorizontalMNudge, '5px', `calc(${tokens.spacingHorizontalMNudge} + ${tokens.spacingHorizontalXXS})`)\n },\n 'extra-large': {\n columnGap: tokens.spacingHorizontalSNudge,\n ...typographyStyles.body2,\n ...shorthands.padding('7px', tokens.spacingHorizontalM, '7px', `calc(${tokens.spacingHorizontalM} + ${tokens.spacingHorizontalSNudge})`)\n },\n // appearance variants\n outline: {\n backgroundColor: tokens.colorNeutralBackground1,\n ...shorthands.border(tokens.strokeWidthThin, 'solid', tokens.colorNeutralStroke1),\n borderBottomColor: tokens.colorNeutralStrokeAccessible\n },\n outlineInteractive: {\n '&:hover': {\n ...shorthands.borderColor(tokens.colorNeutralStroke1Hover),\n borderBottomColor: tokens.colorNeutralStrokeAccessible\n },\n '&:active': {\n ...shorthands.borderColor(tokens.colorNeutralStroke1Pressed),\n borderBottomColor: tokens.colorNeutralStrokeAccessible\n }\n },\n underline: {\n backgroundColor: tokens.colorTransparentBackground,\n ...shorthands.borderBottom(tokens.strokeWidthThin, 'solid', tokens.colorNeutralStrokeAccessible),\n ...shorthands.borderRadius(0)\n },\n 'filled-lighter': {\n backgroundColor: tokens.colorNeutralBackground1,\n ...shorthands.border(tokens.strokeWidthThin, 'solid', 'transparent')\n },\n 'filled-darker': {\n backgroundColor: tokens.colorNeutralBackground3,\n ...shorthands.border(tokens.strokeWidthThin, 'solid', 'transparent')\n },\n invalid: {\n ':not(:focus-within),:hover:not(:focus-within)': {\n ...shorthands.borderColor(tokens.colorPaletteRedBorder2)\n }\n },\n invalidUnderline: {\n ':not(:focus-within),:hover:not(:focus-within)': {\n borderBottomColor: tokens.colorPaletteRedBorder2\n }\n },\n disabled: {\n cursor: 'not-allowed',\n backgroundColor: tokens.colorTransparentBackground,\n ...shorthands.borderColor(tokens.colorNeutralStrokeDisabled),\n '@media (forced-colors: active)': {\n ...shorthands.borderColor('GrayText')\n }\n },\n disabledText: {\n color: tokens.colorNeutralForegroundDisabled,\n cursor: 'not-allowed'\n },\n hidden: {\n display: 'none'\n },\n visuallyHidden: {\n clip: 'rect(0px, 0px, 0px, 0px)',\n height: '1px',\n ...shorthands.margin('-1px'),\n ...shorthands.overflow('hidden'),\n ...shorthands.padding('0px'),\n width: '1px',\n position: 'absolute'\n }\n});\n/**\n * Apply styling to the PickerButton slots based on the state\n */ export const useTagPickerButtonStyles_unstable = (state)=>{\n const styles = useStyles();\n state.root.className = mergeClasses(tagPickerButtonClassNames.root, styles.button, styles[state.size], state.hasSelectedOption && styles.visuallyHidden, state.root.className);\n return state;\n};\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import { useTagPickerControl_unstable } from './useTagPickerControl';
3
+ import { renderTagPickerControl_unstable } from './renderTagPickerControl';
4
+ import { useTagPickerControlStyles_unstable } from './useTagPickerControlStyles.styles';
5
+ import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
6
+ /**
7
+ * TagPickerControl component -
8
+ * A TagPickerControl is a composite component that controls actions and state for a TagPicker.
9
+ */ export const TagPickerControl = /*#__PURE__*/ React.forwardRef((props, ref)=>{
10
+ const state = useTagPickerControl_unstable(props, ref);
11
+ useTagPickerControlStyles_unstable(state);
12
+ useCustomStyleHook_unstable('useTagPickerControlStyles_unstable')(state);
13
+ return renderTagPickerControl_unstable(state);
14
+ });
15
+ TagPickerControl.displayName = 'TagPickerControl';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["TagPickerControl.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useTagPickerControl_unstable } from './useTagPickerControl';\nimport { renderTagPickerControl_unstable } from './renderTagPickerControl';\nimport { useTagPickerControlStyles_unstable } from './useTagPickerControlStyles.styles';\nimport type { TagPickerControlProps } from './TagPickerControl.types';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * TagPickerControl component -\n * A TagPickerControl is a composite component that controls actions and state for a TagPicker.\n */\nexport const TagPickerControl: ForwardRefComponent<TagPickerControlProps> = React.forwardRef((props, ref) => {\n const state = useTagPickerControl_unstable(props, ref);\n\n useTagPickerControlStyles_unstable(state);\n useCustomStyleHook_unstable('useTagPickerControlStyles_unstable')(state);\n return renderTagPickerControl_unstable(state);\n});\n\nTagPickerControl.displayName = 'TagPickerControl';\n"],"names":["React","useTagPickerControl_unstable","renderTagPickerControl_unstable","useTagPickerControlStyles_unstable","useCustomStyleHook_unstable","TagPickerControl","forwardRef","props","ref","state","displayName"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,4BAA4B,QAAQ,wBAAwB;AACrE,SAASC,+BAA+B,QAAQ,2BAA2B;AAC3E,SAASC,kCAAkC,QAAQ,qCAAqC;AAExF,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;;CAGC,GACD,OAAO,MAAMC,iCAA+DL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IACnG,MAAMC,QAAQR,6BAA6BM,OAAOC;IAElDL,mCAAmCM;IACnCL,4BAA4B,sCAAsCK;IAClE,OAAOP,gCAAgCO;AACzC,GAAG;AAEHJ,iBAAiBK,WAAW,GAAG"}
@@ -0,0 +1 @@
1
+ import * as React from 'react';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["TagPickerControl.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, ExtractSlotProps, Slot } from '@fluentui/react-utilities';\nimport { TagPickerContextValue } from '../../contexts/TagPickerContext';\nimport { ComboboxSlots } from '@fluentui/react-combobox';\nimport * as React from 'react';\n\nexport type TagPickerControlSlots = {\n root: Slot<ExtractSlotProps<Slot<'div'> & { style?: TagPickerControlCSSProperties }>>;\n /**\n * A secondary action should be a button-like element to be rendered right after\n * the trigger responsible for opening/closing the tag picker popover.\n */\n secondaryAction: Slot<'span'>;\n} & Pick<ComboboxSlots, 'expandIcon'>;\n\nexport type TagPickerControlInternalSlots = {\n aside?: NonNullable<Slot<'span'>>;\n};\n\nexport type TagPickerControlCSSProperties = React.CSSProperties & {\n '--fui-TagPickerControl-aside-width'?: string | number;\n};\n\n/**\n * PickerControl Props\n */\nexport type TagPickerControlProps = ComponentProps<Partial<TagPickerControlSlots>>;\n\n/**\n * State used in rendering PickerControl\n */\nexport type TagPickerControlState = ComponentState<TagPickerControlSlots & TagPickerControlInternalSlots> &\n Pick<TagPickerContextValue, 'size' | 'appearance' | 'disabled'> & {\n invalid: boolean;\n };\n"],"names":["React"],"mappings":"AAGA,YAAYA,WAAW,QAAQ"}
@@ -0,0 +1,5 @@
1
+ export * from './TagPickerControl';
2
+ export * from './TagPickerControl.types';
3
+ export * from './renderTagPickerControl';
4
+ export * from './useTagPickerControl';
5
+ export * from './useTagPickerControlStyles.styles';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './TagPickerControl';\nexport * from './TagPickerControl.types';\nexport * from './renderTagPickerControl';\nexport * from './useTagPickerControl';\nexport * from './useTagPickerControlStyles.styles';\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,2BAA2B;AACzC,cAAc,2BAA2B;AACzC,cAAc,wBAAwB;AACtC,cAAc,qCAAqC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@fluentui/react-jsx-runtime/jsx-runtime";
2
+ import { assertSlots } from '@fluentui/react-utilities';
3
+ /**
4
+ * Render the final JSX of PickerControl
5
+ */ export const renderTagPickerControl_unstable = (state)=>{
6
+ assertSlots(state);
7
+ return /*#__PURE__*/ _jsxs(state.root, {
8
+ children: [
9
+ state.root.children,
10
+ state.aside && /*#__PURE__*/ _jsxs(state.aside, {
11
+ children: [
12
+ state.secondaryAction && /*#__PURE__*/ _jsx(state.secondaryAction, {}),
13
+ state.expandIcon && /*#__PURE__*/ _jsx(state.expandIcon, {})
14
+ ]
15
+ })
16
+ ]
17
+ });
18
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["renderTagPickerControl.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type {\n TagPickerControlState,\n TagPickerControlSlots,\n TagPickerControlInternalSlots,\n} from './TagPickerControl.types';\n\n/**\n * Render the final JSX of PickerControl\n */\nexport const renderTagPickerControl_unstable = (state: TagPickerControlState) => {\n assertSlots<TagPickerControlSlots & TagPickerControlInternalSlots>(state);\n\n return (\n <state.root>\n {state.root.children}\n {state.aside && (\n <state.aside>\n {state.secondaryAction && <state.secondaryAction />}\n {state.expandIcon && <state.expandIcon />}\n </state.aside>\n )}\n </state.root>\n );\n};\n"],"names":["assertSlots","renderTagPickerControl_unstable","state","root","children","aside","secondaryAction","expandIcon"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAOxD;;CAEC,GACD,OAAO,MAAMC,kCAAkC,CAACC;IAC9CF,YAAmEE;IAEnE,qBACE,MAACA,MAAMC,IAAI;;YACRD,MAAMC,IAAI,CAACC,QAAQ;YACnBF,MAAMG,KAAK,kBACV,MAACH,MAAMG,KAAK;;oBACTH,MAAMI,eAAe,kBAAI,KAACJ,MAAMI,eAAe;oBAC/CJ,MAAMK,UAAU,kBAAI,KAACL,MAAMK,UAAU;;;;;AAKhD,EAAE"}