react-aria-components 1.5.0 → 1.6.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.
- package/dist/Autocomplete.main.js +80 -0
- package/dist/Autocomplete.main.js.map +1 -0
- package/dist/Autocomplete.mjs +68 -0
- package/dist/Autocomplete.module.js +68 -0
- package/dist/Autocomplete.module.js.map +1 -0
- package/dist/Breadcrumbs.main.js +2 -5
- package/dist/Breadcrumbs.main.js.map +1 -1
- package/dist/Breadcrumbs.mjs +3 -6
- package/dist/Breadcrumbs.module.js +3 -6
- package/dist/Breadcrumbs.module.js.map +1 -1
- package/dist/Button.main.js +5 -5
- package/dist/Button.main.js.map +1 -1
- package/dist/Button.mjs +5 -5
- package/dist/Button.module.js +5 -5
- package/dist/Button.module.js.map +1 -1
- package/dist/Calendar.main.js +29 -28
- package/dist/Calendar.main.js.map +1 -1
- package/dist/Calendar.mjs +30 -29
- package/dist/Calendar.module.js +30 -29
- package/dist/Calendar.module.js.map +1 -1
- package/dist/Checkbox.main.js +5 -12
- package/dist/Checkbox.main.js.map +1 -1
- package/dist/Checkbox.mjs +6 -13
- package/dist/Checkbox.module.js +6 -13
- package/dist/Checkbox.module.js.map +1 -1
- package/dist/ColorArea.main.js +2 -5
- package/dist/ColorArea.main.js.map +1 -1
- package/dist/ColorArea.mjs +3 -6
- package/dist/ColorArea.module.js +3 -6
- package/dist/ColorArea.module.js.map +1 -1
- package/dist/ColorField.main.js +2 -5
- package/dist/ColorField.main.js.map +1 -1
- package/dist/ColorField.mjs +2 -5
- package/dist/ColorField.module.js +2 -5
- package/dist/ColorField.module.js.map +1 -1
- package/dist/ColorSlider.main.js +2 -5
- package/dist/ColorSlider.main.js.map +1 -1
- package/dist/ColorSlider.mjs +2 -5
- package/dist/ColorSlider.module.js +2 -5
- package/dist/ColorSlider.module.js.map +1 -1
- package/dist/ColorSwatch.main.js +2 -5
- package/dist/ColorSwatch.main.js.map +1 -1
- package/dist/ColorSwatch.mjs +2 -5
- package/dist/ColorSwatch.module.js +2 -5
- package/dist/ColorSwatch.module.js.map +1 -1
- package/dist/ColorSwatchPicker.main.js +4 -8
- package/dist/ColorSwatchPicker.main.js.map +1 -1
- package/dist/ColorSwatchPicker.mjs +5 -9
- package/dist/ColorSwatchPicker.module.js +5 -9
- package/dist/ColorSwatchPicker.module.js.map +1 -1
- package/dist/ColorThumb.main.js +2 -5
- package/dist/ColorThumb.main.js.map +1 -1
- package/dist/ColorThumb.mjs +3 -6
- package/dist/ColorThumb.module.js +3 -6
- package/dist/ColorThumb.module.js.map +1 -1
- package/dist/ColorWheel.main.js +5 -11
- package/dist/ColorWheel.main.js.map +1 -1
- package/dist/ColorWheel.mjs +6 -12
- package/dist/ColorWheel.module.js +6 -12
- package/dist/ColorWheel.module.js.map +1 -1
- package/dist/ComboBox.main.js +2 -5
- package/dist/ComboBox.main.js.map +1 -1
- package/dist/ComboBox.mjs +3 -6
- package/dist/ComboBox.module.js +3 -6
- package/dist/ComboBox.module.js.map +1 -1
- package/dist/DateField.main.js +8 -23
- package/dist/DateField.main.js.map +1 -1
- package/dist/DateField.mjs +9 -24
- package/dist/DateField.module.js +9 -24
- package/dist/DateField.module.js.map +1 -1
- package/dist/DatePicker.main.js +4 -11
- package/dist/DatePicker.main.js.map +1 -1
- package/dist/DatePicker.mjs +5 -12
- package/dist/DatePicker.module.js +5 -12
- package/dist/DatePicker.module.js.map +1 -1
- package/dist/Dialog.main.js +2 -5
- package/dist/Dialog.main.js.map +1 -1
- package/dist/Dialog.mjs +3 -6
- package/dist/Dialog.module.js +3 -6
- package/dist/Dialog.module.js.map +1 -1
- package/dist/Disclosure.main.js +6 -16
- package/dist/Disclosure.main.js.map +1 -1
- package/dist/Disclosure.mjs +6 -16
- package/dist/Disclosure.module.js +6 -16
- package/dist/Disclosure.module.js.map +1 -1
- package/dist/DragAndDrop.main.js +2 -5
- package/dist/DragAndDrop.main.js.map +1 -1
- package/dist/DragAndDrop.mjs +3 -6
- package/dist/DragAndDrop.module.js +3 -6
- package/dist/DragAndDrop.module.js.map +1 -1
- package/dist/DropZone.main.js +2 -5
- package/dist/DropZone.main.js.map +1 -1
- package/dist/DropZone.mjs +3 -6
- package/dist/DropZone.module.js +3 -6
- package/dist/DropZone.module.js.map +1 -1
- package/dist/FieldError.main.js +2 -5
- package/dist/FieldError.main.js.map +1 -1
- package/dist/FieldError.mjs +3 -6
- package/dist/FieldError.module.js +3 -6
- package/dist/FieldError.module.js.map +1 -1
- package/dist/FileTrigger.main.js +2 -5
- package/dist/FileTrigger.main.js.map +1 -1
- package/dist/FileTrigger.mjs +2 -5
- package/dist/FileTrigger.module.js +2 -5
- package/dist/FileTrigger.module.js.map +1 -1
- package/dist/Form.main.js +2 -6
- package/dist/Form.main.js.map +1 -1
- package/dist/Form.mjs +2 -6
- package/dist/Form.module.js +2 -6
- package/dist/Form.module.js.map +1 -1
- package/dist/GridList.main.js +2 -6
- package/dist/GridList.main.js.map +1 -1
- package/dist/GridList.mjs +3 -7
- package/dist/GridList.module.js +3 -7
- package/dist/GridList.module.js.map +1 -1
- package/dist/Group.main.js +2 -5
- package/dist/Group.main.js.map +1 -1
- package/dist/Group.mjs +2 -5
- package/dist/Group.module.js +2 -5
- package/dist/Group.module.js.map +1 -1
- package/dist/Heading.main.js +2 -3
- package/dist/Heading.main.js.map +1 -1
- package/dist/Heading.mjs +2 -3
- package/dist/Heading.module.js +2 -3
- package/dist/Heading.module.js.map +1 -1
- package/dist/Input.main.js +2 -5
- package/dist/Input.main.js.map +1 -1
- package/dist/Input.mjs +2 -5
- package/dist/Input.module.js +2 -5
- package/dist/Input.module.js.map +1 -1
- package/dist/Keyboard.main.js +2 -3
- package/dist/Keyboard.main.js.map +1 -1
- package/dist/Keyboard.mjs +2 -3
- package/dist/Keyboard.module.js +2 -3
- package/dist/Keyboard.module.js.map +1 -1
- package/dist/Label.main.js +2 -3
- package/dist/Label.main.js.map +1 -1
- package/dist/Label.mjs +2 -3
- package/dist/Label.module.js +2 -3
- package/dist/Label.module.js.map +1 -1
- package/dist/Link.main.js +2 -6
- package/dist/Link.main.js.map +1 -1
- package/dist/Link.mjs +2 -6
- package/dist/Link.module.js +2 -6
- package/dist/Link.module.js.map +1 -1
- package/dist/ListBox.main.js +22 -11
- package/dist/ListBox.main.js.map +1 -1
- package/dist/ListBox.mjs +24 -13
- package/dist/ListBox.module.js +24 -13
- package/dist/ListBox.module.js.map +1 -1
- package/dist/Menu.main.js +21 -13
- package/dist/Menu.main.js.map +1 -1
- package/dist/Menu.mjs +23 -15
- package/dist/Menu.module.js +23 -15
- package/dist/Menu.module.js.map +1 -1
- package/dist/Meter.main.js +2 -5
- package/dist/Meter.main.js.map +1 -1
- package/dist/Meter.mjs +2 -5
- package/dist/Meter.module.js +2 -5
- package/dist/Meter.module.js.map +1 -1
- package/dist/Modal.main.js +7 -10
- package/dist/Modal.main.js.map +1 -1
- package/dist/Modal.mjs +10 -13
- package/dist/Modal.module.js +10 -13
- package/dist/Modal.module.js.map +1 -1
- package/dist/NumberField.main.js +2 -5
- package/dist/NumberField.main.js.map +1 -1
- package/dist/NumberField.mjs +3 -6
- package/dist/NumberField.module.js +3 -6
- package/dist/NumberField.module.js.map +1 -1
- package/dist/OverlayArrow.main.js +2 -6
- package/dist/OverlayArrow.main.js.map +1 -1
- package/dist/OverlayArrow.mjs +2 -6
- package/dist/OverlayArrow.module.js +2 -6
- package/dist/OverlayArrow.module.js.map +1 -1
- package/dist/Popover.main.js +4 -7
- package/dist/Popover.main.js.map +1 -1
- package/dist/Popover.mjs +7 -10
- package/dist/Popover.module.js +7 -10
- package/dist/Popover.module.js.map +1 -1
- package/dist/ProgressBar.main.js +2 -6
- package/dist/ProgressBar.main.js.map +1 -1
- package/dist/ProgressBar.mjs +2 -6
- package/dist/ProgressBar.module.js +2 -6
- package/dist/ProgressBar.module.js.map +1 -1
- package/dist/RadioGroup.main.js +4 -10
- package/dist/RadioGroup.main.js.map +1 -1
- package/dist/RadioGroup.mjs +4 -10
- package/dist/RadioGroup.module.js +4 -10
- package/dist/RadioGroup.module.js.map +1 -1
- package/dist/SearchField.main.js +6 -8
- package/dist/SearchField.main.js.map +1 -1
- package/dist/SearchField.mjs +8 -10
- package/dist/SearchField.module.js +8 -10
- package/dist/SearchField.module.js.map +1 -1
- package/dist/Select.main.js +6 -12
- package/dist/Select.main.js.map +1 -1
- package/dist/Select.mjs +7 -13
- package/dist/Select.module.js +7 -13
- package/dist/Select.module.js.map +1 -1
- package/dist/Slider.main.js +8 -20
- package/dist/Slider.main.js.map +1 -1
- package/dist/Slider.mjs +9 -21
- package/dist/Slider.module.js +9 -21
- package/dist/Slider.module.js.map +1 -1
- package/dist/Switch.main.js +2 -5
- package/dist/Switch.main.js.map +1 -1
- package/dist/Switch.mjs +2 -5
- package/dist/Switch.module.js +2 -5
- package/dist/Switch.module.js.map +1 -1
- package/dist/Table.main.js +6 -12
- package/dist/Table.main.js.map +1 -1
- package/dist/Table.mjs +7 -13
- package/dist/Table.module.js +7 -13
- package/dist/Table.module.js.map +1 -1
- package/dist/Tabs.main.js +9 -17
- package/dist/Tabs.main.js.map +1 -1
- package/dist/Tabs.mjs +11 -19
- package/dist/Tabs.module.js +11 -19
- package/dist/Tabs.module.js.map +1 -1
- package/dist/TagGroup.main.js +4 -10
- package/dist/TagGroup.main.js.map +1 -1
- package/dist/TagGroup.mjs +5 -11
- package/dist/TagGroup.module.js +5 -11
- package/dist/TagGroup.module.js.map +1 -1
- package/dist/Text.main.js +2 -3
- package/dist/Text.main.js.map +1 -1
- package/dist/Text.mjs +2 -3
- package/dist/Text.module.js +2 -3
- package/dist/Text.module.js.map +1 -1
- package/dist/TextArea.main.js +2 -5
- package/dist/TextArea.main.js.map +1 -1
- package/dist/TextArea.mjs +2 -5
- package/dist/TextArea.module.js +2 -5
- package/dist/TextArea.module.js.map +1 -1
- package/dist/TextField.main.js +9 -9
- package/dist/TextField.main.js.map +1 -1
- package/dist/TextField.mjs +11 -11
- package/dist/TextField.module.js +11 -11
- package/dist/TextField.module.js.map +1 -1
- package/dist/ToggleButton.main.js +2 -5
- package/dist/ToggleButton.main.js.map +1 -1
- package/dist/ToggleButton.mjs +3 -6
- package/dist/ToggleButton.module.js +3 -6
- package/dist/ToggleButton.module.js.map +1 -1
- package/dist/ToggleButtonGroup.main.js +2 -5
- package/dist/ToggleButtonGroup.main.js.map +1 -1
- package/dist/ToggleButtonGroup.mjs +2 -5
- package/dist/ToggleButtonGroup.module.js +2 -5
- package/dist/ToggleButtonGroup.module.js.map +1 -1
- package/dist/Toolbar.main.js +2 -6
- package/dist/Toolbar.main.js.map +1 -1
- package/dist/Toolbar.mjs +2 -6
- package/dist/Toolbar.module.js +2 -6
- package/dist/Toolbar.module.js.map +1 -1
- package/dist/Tooltip.main.js +4 -7
- package/dist/Tooltip.main.js.map +1 -1
- package/dist/Tooltip.mjs +7 -10
- package/dist/Tooltip.module.js +7 -10
- package/dist/Tooltip.module.js.map +1 -1
- package/dist/Tree.main.js +2 -6
- package/dist/Tree.main.js.map +1 -1
- package/dist/Tree.mjs +3 -7
- package/dist/Tree.module.js +3 -7
- package/dist/Tree.module.js.map +1 -1
- package/dist/import.mjs +4 -2
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/module.js +4 -2
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +230 -220
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.main.js +0 -61
- package/dist/utils.main.js.map +1 -1
- package/dist/utils.mjs +1 -60
- package/dist/utils.module.js +1 -60
- package/dist/utils.module.js.map +1 -1
- package/i18n/ar-AE.js +1 -1
- package/i18n/ar-AE.mjs +1 -1
- package/i18n/bg-BG.js +1 -1
- package/i18n/bg-BG.mjs +1 -1
- package/i18n/cs-CZ.js +1 -1
- package/i18n/cs-CZ.mjs +1 -1
- package/i18n/da-DK.js +1 -1
- package/i18n/da-DK.mjs +1 -1
- package/i18n/de-DE.js +1 -1
- package/i18n/de-DE.mjs +1 -1
- package/i18n/el-GR.js +1 -1
- package/i18n/el-GR.mjs +1 -1
- package/i18n/en-US.js +1 -1
- package/i18n/en-US.mjs +1 -1
- package/i18n/es-ES.js +1 -1
- package/i18n/es-ES.mjs +1 -1
- package/i18n/et-EE.js +1 -1
- package/i18n/et-EE.mjs +1 -1
- package/i18n/fi-FI.js +1 -1
- package/i18n/fi-FI.mjs +1 -1
- package/i18n/fr-FR.js +1 -1
- package/i18n/fr-FR.mjs +1 -1
- package/i18n/he-IL.js +1 -1
- package/i18n/he-IL.mjs +1 -1
- package/i18n/hr-HR.js +1 -1
- package/i18n/hr-HR.mjs +1 -1
- package/i18n/hu-HU.js +1 -1
- package/i18n/hu-HU.mjs +1 -1
- package/i18n/index.js +1 -1
- package/i18n/index.mjs +1 -1
- package/i18n/it-IT.js +1 -1
- package/i18n/it-IT.mjs +1 -1
- package/i18n/ja-JP.js +1 -1
- package/i18n/ja-JP.mjs +1 -1
- package/i18n/ko-KR.js +1 -1
- package/i18n/ko-KR.mjs +1 -1
- package/i18n/lt-LT.js +1 -1
- package/i18n/lt-LT.mjs +1 -1
- package/i18n/lv-LV.js +1 -1
- package/i18n/lv-LV.mjs +1 -1
- package/i18n/nb-NO.js +1 -1
- package/i18n/nb-NO.mjs +1 -1
- package/i18n/nl-NL.js +1 -1
- package/i18n/nl-NL.mjs +1 -1
- package/i18n/pl-PL.js +1 -1
- package/i18n/pl-PL.mjs +1 -1
- package/i18n/pt-BR.js +1 -1
- package/i18n/pt-BR.mjs +1 -1
- package/i18n/pt-PT.js +1 -1
- package/i18n/pt-PT.mjs +1 -1
- package/i18n/ro-RO.js +1 -1
- package/i18n/ro-RO.mjs +1 -1
- package/i18n/ru-RU.js +1 -1
- package/i18n/ru-RU.mjs +1 -1
- package/i18n/sk-SK.js +1 -1
- package/i18n/sk-SK.mjs +1 -1
- package/i18n/sl-SI.js +1 -1
- package/i18n/sl-SI.mjs +1 -1
- package/i18n/sr-SP.js +1 -1
- package/i18n/sr-SP.mjs +1 -1
- package/i18n/sv-SE.js +1 -1
- package/i18n/sv-SE.mjs +1 -1
- package/i18n/tr-TR.js +1 -1
- package/i18n/tr-TR.mjs +1 -1
- package/i18n/uk-UA.js +1 -1
- package/i18n/uk-UA.mjs +1 -1
- package/i18n/zh-CN.js +1 -1
- package/i18n/zh-CN.mjs +1 -1
- package/i18n/zh-TW.js +1 -1
- package/i18n/zh-TW.mjs +1 -1
- package/package.json +30 -28
- package/src/Autocomplete.tsx +71 -0
- package/src/Breadcrumbs.tsx +5 -8
- package/src/Button.tsx +8 -8
- package/src/Calendar.tsx +35 -39
- package/src/Checkbox.tsx +11 -17
- package/src/ColorArea.tsx +5 -8
- package/src/ColorField.tsx +5 -8
- package/src/ColorSlider.tsx +5 -8
- package/src/ColorSwatch.tsx +5 -8
- package/src/ColorSwatchPicker.tsx +7 -13
- package/src/ColorThumb.tsx +5 -8
- package/src/ColorWheel.tsx +10 -16
- package/src/ComboBox.tsx +5 -8
- package/src/DateField.tsx +21 -33
- package/src/DatePicker.tsx +9 -15
- package/src/Dialog.tsx +5 -8
- package/src/Disclosure.tsx +16 -25
- package/src/DragAndDrop.tsx +5 -8
- package/src/DropZone.tsx +5 -8
- package/src/FieldError.tsx +5 -8
- package/src/FileTrigger.tsx +5 -8
- package/src/Form.tsx +6 -9
- package/src/GridList.tsx +6 -9
- package/src/Group.tsx +5 -8
- package/src/Heading.tsx +2 -5
- package/src/Input.tsx +5 -8
- package/src/Keyboard.tsx +2 -5
- package/src/Label.tsx +2 -5
- package/src/Link.tsx +6 -9
- package/src/ListBox.tsx +16 -15
- package/src/Menu.tsx +20 -19
- package/src/Meter.tsx +5 -8
- package/src/Modal.tsx +7 -10
- package/src/NumberField.tsx +5 -8
- package/src/OverlayArrow.tsx +6 -9
- package/src/Popover.tsx +7 -10
- package/src/ProgressBar.tsx +6 -9
- package/src/RadioGroup.tsx +10 -16
- package/src/SearchField.tsx +9 -11
- package/src/Select.tsx +12 -17
- package/src/Slider.tsx +20 -32
- package/src/Switch.tsx +5 -8
- package/src/Table.tsx +10 -19
- package/src/Tabs.tsx +18 -25
- package/src/TagGroup.tsx +8 -14
- package/src/Text.tsx +2 -5
- package/src/TextArea.tsx +5 -7
- package/src/TextField.tsx +11 -13
- package/src/ToggleButton.tsx +5 -8
- package/src/ToggleButtonGroup.tsx +5 -8
- package/src/Toolbar.tsx +6 -9
- package/src/Tooltip.tsx +7 -10
- package/src/Tree.tsx +6 -9
- package/src/index.ts +3 -1
- package/src/utils.tsx +0 -71
package/src/Disclosure.tsx
CHANGED
|
@@ -35,7 +35,11 @@ export interface DisclosureGroupRenderProps {
|
|
|
35
35
|
|
|
36
36
|
export const DisclosureGroupStateContext = createContext<DisclosureGroupState | null>(null);
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
/**
|
|
39
|
+
* A DisclosureGroup is a grouping of related disclosures, sometimes called an accordion.
|
|
40
|
+
* It supports both single and multiple expanded items.
|
|
41
|
+
*/
|
|
42
|
+
export const DisclosureGroup = forwardRef(function DisclosureGroup(props: DisclosureGroupProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
39
43
|
let state = useDisclosureGroupState(props);
|
|
40
44
|
|
|
41
45
|
let renderProps = useRenderProps({
|
|
@@ -60,14 +64,7 @@ function DisclosureGroup(props: DisclosureGroupProps, ref: ForwardedRef<HTMLDivE
|
|
|
60
64
|
</DisclosureGroupStateContext.Provider>
|
|
61
65
|
</div>
|
|
62
66
|
);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* A DisclosureGroup is a grouping of related disclosures, sometimes called an accordion.
|
|
67
|
-
* It supports both single and multiple expanded items.
|
|
68
|
-
*/
|
|
69
|
-
const _DisclosureGroup = forwardRef(DisclosureGroup);
|
|
70
|
-
export {_DisclosureGroup as DisclosureGroup};
|
|
67
|
+
});
|
|
71
68
|
|
|
72
69
|
export interface DisclosureProps extends Omit<AriaDisclosureProps, 'children'>, RenderProps<DisclosureRenderProps>, SlotProps {
|
|
73
70
|
/** An id for the disclosure when used within a DisclosureGroup, matching the id used in `expandedKeys`. */
|
|
@@ -106,7 +103,10 @@ interface InternalDisclosureContextValue {
|
|
|
106
103
|
|
|
107
104
|
const InternalDisclosureContext = createContext<InternalDisclosureContextValue | null>(null);
|
|
108
105
|
|
|
109
|
-
|
|
106
|
+
/**
|
|
107
|
+
* A disclosure is a collapsible section of content. It is composed of a a header with a heading and trigger button, and a panel that contains the content.
|
|
108
|
+
*/
|
|
109
|
+
export const Disclosure = /*#__PURE__*/ (forwardRef as forwardRefType)(function Disclosure(props: DisclosureProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
110
110
|
[props, ref] = useContextProps(props, ref, DisclosureContext);
|
|
111
111
|
let groupState = useContext(DisclosureGroupStateContext)!;
|
|
112
112
|
let {id, ...otherProps} = props;
|
|
@@ -179,7 +179,7 @@ function Disclosure(props: DisclosureProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
|
179
179
|
</div>
|
|
180
180
|
</Provider>
|
|
181
181
|
);
|
|
182
|
-
}
|
|
182
|
+
});
|
|
183
183
|
|
|
184
184
|
export interface DisclosurePanelRenderProps {
|
|
185
185
|
/**
|
|
@@ -201,7 +201,10 @@ export interface DisclosurePanelProps extends RenderProps<DisclosurePanelRenderP
|
|
|
201
201
|
children: ReactNode
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
-
|
|
204
|
+
/**
|
|
205
|
+
* A DisclosurePanel provides the content for a disclosure.
|
|
206
|
+
*/
|
|
207
|
+
export const DisclosurePanel = /*#__PURE__*/ (forwardRef as forwardRefType)(function DisclosurePanel(props: DisclosurePanelProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
205
208
|
let {role = 'group'} = props;
|
|
206
209
|
let {panelProps, panelRef} = useContext(InternalDisclosureContext)!;
|
|
207
210
|
let {
|
|
@@ -232,16 +235,4 @@ function DisclosurePanel(props: DisclosurePanelProps, ref: ForwardedRef<HTMLDivE
|
|
|
232
235
|
</Provider>
|
|
233
236
|
</div>
|
|
234
237
|
);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* A disclosure is a collapsible section of content. It is composed of a a header with a heading and trigger button, and a panel that contains the content.
|
|
239
|
-
*/
|
|
240
|
-
const _Disclosure = /*#__PURE__*/ (forwardRef as forwardRefType)(Disclosure);
|
|
241
|
-
export {_Disclosure as Disclosure};
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* A DisclosurePanel provides the content for a disclosure.
|
|
245
|
-
*/
|
|
246
|
-
const _DisclosurePanel = /*#__PURE__*/ (forwardRef as forwardRefType)(DisclosurePanel);
|
|
247
|
-
export {_DisclosurePanel as DisclosurePanel};
|
|
238
|
+
});
|
package/src/DragAndDrop.tsx
CHANGED
|
@@ -37,16 +37,13 @@ interface DropIndicatorContextValue {
|
|
|
37
37
|
render: (props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>) => ReactNode
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
function DropIndicator(props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>): JSX.Element {
|
|
41
|
-
let {render} = useContext(DropIndicatorContext)!;
|
|
42
|
-
return <>{render(props, ref)}</>;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
40
|
/**
|
|
46
41
|
* A DropIndicator is rendered between items in a collection to indicate where dropped data will be inserted.
|
|
47
42
|
*/
|
|
48
|
-
const
|
|
49
|
-
|
|
43
|
+
export const DropIndicator = forwardRef(function DropIndicator(props: DropIndicatorProps, ref: ForwardedRef<HTMLElement>): JSX.Element {
|
|
44
|
+
let {render} = useContext(DropIndicatorContext)!;
|
|
45
|
+
return <>{render(props, ref)}</>;
|
|
46
|
+
});
|
|
50
47
|
|
|
51
48
|
export function useRenderDropIndicator(dragAndDropHooks?: DragAndDropHooks, dropState?: DroppableCollectionState) {
|
|
52
49
|
let renderDropIndicator = dragAndDropHooks?.renderDropIndicator;
|
|
@@ -54,7 +51,7 @@ export function useRenderDropIndicator(dragAndDropHooks?: DragAndDropHooks, drop
|
|
|
54
51
|
let fn = useCallback((target: ItemDropTarget) => {
|
|
55
52
|
// Only show drop indicators when virtual dragging or this is the current drop target.
|
|
56
53
|
if (isVirtualDragging || dropState?.isDropTarget(target)) {
|
|
57
|
-
return renderDropIndicator ? renderDropIndicator(target) : <
|
|
54
|
+
return renderDropIndicator ? renderDropIndicator(target) : <DropIndicator target={target} />;
|
|
58
55
|
}
|
|
59
56
|
// We invalidate whenever the target changes.
|
|
60
57
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
package/src/DropZone.tsx
CHANGED
|
@@ -52,7 +52,10 @@ export interface DropZoneProps extends Omit<DropOptions, 'getDropOperationForPoi
|
|
|
52
52
|
|
|
53
53
|
export const DropZoneContext = createContext<ContextValue<DropZoneProps, HTMLDivElement>>(null);
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
/**
|
|
56
|
+
* A drop zone is an area into which one or multiple objects can be dragged and dropped.
|
|
57
|
+
*/
|
|
58
|
+
export const DropZone = forwardRef(function DropZone(props: DropZoneProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
56
59
|
let {isDisabled = false} = props;
|
|
57
60
|
[props, ref] = useContextProps(props, ref, DropZoneContext);
|
|
58
61
|
let dropzoneRef = useObjectRef(ref);
|
|
@@ -127,10 +130,4 @@ function DropZone(props: DropZoneProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
|
127
130
|
</div>
|
|
128
131
|
</Provider>
|
|
129
132
|
);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* A drop zone is an area into which one or multiple objects can be dragged and dropped.
|
|
134
|
-
*/
|
|
135
|
-
const _DropZone = forwardRef(DropZone);
|
|
136
|
-
export {_DropZone as DropZone};
|
|
133
|
+
});
|
package/src/FieldError.tsx
CHANGED
|
@@ -21,20 +21,17 @@ export const FieldErrorContext = createContext<ValidationResult | null>(null);
|
|
|
21
21
|
export interface FieldErrorRenderProps extends ValidationResult {}
|
|
22
22
|
export interface FieldErrorProps extends RenderProps<FieldErrorRenderProps>, DOMProps {}
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* A FieldError displays validation errors for a form field.
|
|
26
|
+
*/
|
|
27
|
+
export const FieldError = forwardRef(function FieldError(props: FieldErrorProps, ref: ForwardedRef<HTMLElement>) {
|
|
25
28
|
let validation = useContext(FieldErrorContext);
|
|
26
29
|
if (!validation?.isInvalid) {
|
|
27
30
|
return null;
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
return <FieldErrorInner {...props} ref={ref} />;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* A FieldError displays validation errors for a form field.
|
|
35
|
-
*/
|
|
36
|
-
const _FieldError = forwardRef(FieldError);
|
|
37
|
-
export {_FieldError as FieldError};
|
|
34
|
+
});
|
|
38
35
|
|
|
39
36
|
const FieldErrorInner = forwardRef((props: FieldErrorProps, ref: ForwardedRef<HTMLElement>) => {
|
|
40
37
|
let validation = useContext(FieldErrorContext)!;
|
package/src/FileTrigger.tsx
CHANGED
|
@@ -42,7 +42,10 @@ export interface FileTriggerProps {
|
|
|
42
42
|
acceptDirectory?: boolean
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
/**
|
|
46
|
+
* A FileTrigger allows a user to access the file system with any pressable React Aria or React Spectrum component, or custom components built with usePress.
|
|
47
|
+
*/
|
|
48
|
+
export const FileTrigger = forwardRef(function FileTrigger(props: FileTriggerProps, ref: ForwardedRef<HTMLInputElement>) {
|
|
46
49
|
let {onSelect, acceptedFileTypes, allowsMultiple, defaultCamera, children, acceptDirectory, ...rest} = props;
|
|
47
50
|
let inputRef = useObjectRef(ref);
|
|
48
51
|
let domProps = filterDOMProps(rest);
|
|
@@ -71,10 +74,4 @@ function FileTrigger(props: FileTriggerProps, ref: ForwardedRef<HTMLInputElement
|
|
|
71
74
|
webkitdirectory={acceptDirectory ? '' : undefined} />
|
|
72
75
|
</>
|
|
73
76
|
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* A FileTrigger allows a user to access the file system with any pressable React Aria or React Spectrum component, or custom components built with usePress.
|
|
78
|
-
*/
|
|
79
|
-
const _FileTrigger = forwardRef(FileTrigger);
|
|
80
|
-
export {_FileTrigger as FileTrigger};
|
|
77
|
+
});
|
package/src/Form.tsx
CHANGED
|
@@ -27,7 +27,11 @@ export interface FormProps extends SharedFormProps, DOMProps {
|
|
|
27
27
|
|
|
28
28
|
export const FormContext = createContext<ContextValue<FormProps, HTMLFormElement>>(null);
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* A form is a group of inputs that allows users to submit data to a server,
|
|
32
|
+
* with support for providing field validation errors.
|
|
33
|
+
*/
|
|
34
|
+
export const Form = forwardRef(function Form(props: FormProps, ref: ForwardedRef<HTMLFormElement>) {
|
|
31
35
|
[props, ref] = useContextProps(props, ref, FormContext);
|
|
32
36
|
let {validationErrors, validationBehavior = 'native', children, className, ...domProps} = props;
|
|
33
37
|
return (
|
|
@@ -39,11 +43,4 @@ function Form(props: FormProps, ref: ForwardedRef<HTMLFormElement>) {
|
|
|
39
43
|
</FormContext.Provider>
|
|
40
44
|
</form>
|
|
41
45
|
);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* A form is a group of inputs that allows users to submit data to a server,
|
|
46
|
-
* with support for providing field validation errors.
|
|
47
|
-
*/
|
|
48
|
-
const _Form = forwardRef(Form);
|
|
49
|
-
export {_Form as Form};
|
|
46
|
+
});
|
package/src/GridList.tsx
CHANGED
|
@@ -73,7 +73,11 @@ export interface GridListProps<T> extends Omit<AriaGridListProps<T>, 'children'>
|
|
|
73
73
|
|
|
74
74
|
export const GridListContext = createContext<ContextValue<GridListProps<any>, HTMLDivElement>>(null);
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
/**
|
|
77
|
+
* A grid list displays a list of interactive items, with support for keyboard navigation,
|
|
78
|
+
* single or multiple selection, and row actions.
|
|
79
|
+
*/
|
|
80
|
+
export const GridList = /*#__PURE__*/ (forwardRef as forwardRefType)(function GridList<T extends object>(props: GridListProps<T>, ref: ForwardedRef<HTMLDivElement>) {
|
|
77
81
|
// Render the portal first so that we have the collection by the time we render the DOM in SSR.
|
|
78
82
|
[props, ref] = useContextProps(props, ref, GridListContext);
|
|
79
83
|
|
|
@@ -82,7 +86,7 @@ function GridList<T extends object>(props: GridListProps<T>, ref: ForwardedRef<H
|
|
|
82
86
|
{collection => <GridListInner props={props} collection={collection} gridListRef={ref} />}
|
|
83
87
|
</CollectionBuilder>
|
|
84
88
|
);
|
|
85
|
-
}
|
|
89
|
+
});
|
|
86
90
|
|
|
87
91
|
interface GridListInnerProps<T extends object> {
|
|
88
92
|
props: GridListProps<T>,
|
|
@@ -243,13 +247,6 @@ function GridListInner<T extends object>({props, collection, gridListRef: ref}:
|
|
|
243
247
|
);
|
|
244
248
|
}
|
|
245
249
|
|
|
246
|
-
/**
|
|
247
|
-
* A grid list displays a list of interactive items, with support for keyboard navigation,
|
|
248
|
-
* single or multiple selection, and row actions.
|
|
249
|
-
*/
|
|
250
|
-
const _GridList = /*#__PURE__*/ (forwardRef as forwardRefType)(GridList);
|
|
251
|
-
export {_GridList as GridList};
|
|
252
|
-
|
|
253
250
|
export interface GridListItemRenderProps extends ItemRenderProps {}
|
|
254
251
|
|
|
255
252
|
export interface GridListItemProps<T = object> extends RenderProps<GridListItemRenderProps>, LinkDOMProps, HoverEvents {
|
package/src/Group.tsx
CHANGED
|
@@ -60,7 +60,10 @@ export interface GroupProps extends AriaLabelingProps, Omit<HTMLAttributes<HTMLE
|
|
|
60
60
|
|
|
61
61
|
export const GroupContext = createContext<ContextValue<GroupProps, HTMLDivElement>>({});
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
/**
|
|
64
|
+
* A group represents a set of related UI controls, and supports interactive states for styling.
|
|
65
|
+
*/
|
|
66
|
+
export const Group = /*#__PURE__*/ (forwardRef as forwardRefType)(function Group(props: GroupProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
64
67
|
[props, ref] = useContextProps(props, ref, GroupContext);
|
|
65
68
|
let {isDisabled, isInvalid, onHoverStart, onHoverChange, onHoverEnd, ...otherProps} = props;
|
|
66
69
|
|
|
@@ -92,10 +95,4 @@ function Group(props: GroupProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
|
92
95
|
{renderProps.children}
|
|
93
96
|
</div>
|
|
94
97
|
);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* A group represents a set of related UI controls, and supports interactive states for styling.
|
|
99
|
-
*/
|
|
100
|
-
const _Group = /*#__PURE__*/ (forwardRef as forwardRefType)(Group);
|
|
101
|
-
export {_Group as Group};
|
|
98
|
+
});
|
package/src/Heading.tsx
CHANGED
|
@@ -18,7 +18,7 @@ export interface HeadingProps extends HTMLAttributes<HTMLElement> {
|
|
|
18
18
|
level?: number
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
function Heading(props: HeadingProps, ref: ForwardedRef<HTMLHeadingElement>) {
|
|
21
|
+
export const Heading = forwardRef(function Heading(props: HeadingProps, ref: ForwardedRef<HTMLHeadingElement>) {
|
|
22
22
|
[props, ref] = useContextProps(props, ref, HeadingContext);
|
|
23
23
|
let {children, level = 3, className, ...domProps} = props;
|
|
24
24
|
let Element = `h${level}` as ElementType;
|
|
@@ -28,7 +28,4 @@ function Heading(props: HeadingProps, ref: ForwardedRef<HTMLHeadingElement>) {
|
|
|
28
28
|
{children}
|
|
29
29
|
</Element>
|
|
30
30
|
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const _Heading = forwardRef(Heading);
|
|
34
|
-
export {_Heading as Heading};
|
|
31
|
+
});
|
package/src/Input.tsx
CHANGED
|
@@ -53,7 +53,10 @@ let filterHoverProps = (props: InputProps) => {
|
|
|
53
53
|
return otherProps;
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
/**
|
|
57
|
+
* An input allows a user to input text.
|
|
58
|
+
*/
|
|
59
|
+
export const Input = /*#__PURE__*/ createHideableComponent(function Input(props: InputProps, ref: ForwardedRef<HTMLInputElement>) {
|
|
57
60
|
[props, ref] = useContextProps(props, ref, InputContext);
|
|
58
61
|
|
|
59
62
|
let {hoverProps, isHovered} = useHover(props);
|
|
@@ -86,10 +89,4 @@ function Input(props: InputProps, ref: ForwardedRef<HTMLInputElement>) {
|
|
|
86
89
|
data-focus-visible={isFocusVisible || undefined}
|
|
87
90
|
data-invalid={isInvalid || undefined} />
|
|
88
91
|
);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* An input allows a user to input text.
|
|
93
|
-
*/
|
|
94
|
-
const _Input = /*#__PURE__*/ createHideableComponent(Input);
|
|
95
|
-
export {_Input as Input};
|
|
92
|
+
});
|
package/src/Keyboard.tsx
CHANGED
|
@@ -15,10 +15,7 @@ import React, {createContext, ForwardedRef, forwardRef, HTMLAttributes} from 're
|
|
|
15
15
|
|
|
16
16
|
export const KeyboardContext = createContext<ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>>({});
|
|
17
17
|
|
|
18
|
-
function Keyboard(props: HTMLAttributes<HTMLElement>, ref: ForwardedRef<HTMLElement>) {
|
|
18
|
+
export const Keyboard = forwardRef(function Keyboard(props: HTMLAttributes<HTMLElement>, ref: ForwardedRef<HTMLElement>) {
|
|
19
19
|
[props, ref] = useContextProps(props, ref, KeyboardContext);
|
|
20
20
|
return <kbd dir="ltr" {...props} ref={ref} />;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const _Keyboard = forwardRef(Keyboard);
|
|
24
|
-
export {_Keyboard as Keyboard};
|
|
21
|
+
});
|
package/src/Label.tsx
CHANGED
|
@@ -20,12 +20,9 @@ export interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
|
|
|
20
20
|
|
|
21
21
|
export const LabelContext = createContext<ContextValue<LabelProps, HTMLLabelElement>>({});
|
|
22
22
|
|
|
23
|
-
function Label(props: LabelProps, ref: ForwardedRef<HTMLLabelElement>) {
|
|
23
|
+
export const Label = /*#__PURE__*/ createHideableComponent(function Label(props: LabelProps, ref: ForwardedRef<HTMLLabelElement>) {
|
|
24
24
|
[props, ref] = useContextProps(props, ref, LabelContext);
|
|
25
25
|
let {elementType: ElementType = 'label', ...labelProps} = props;
|
|
26
26
|
// @ts-ignore
|
|
27
27
|
return <ElementType className="react-aria-Label" {...labelProps} ref={ref} />;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const _Label = /*#__PURE__*/ createHideableComponent(Label);
|
|
31
|
-
export {_Label as Label};
|
|
28
|
+
});
|
package/src/Link.tsx
CHANGED
|
@@ -52,7 +52,11 @@ export interface LinkRenderProps {
|
|
|
52
52
|
|
|
53
53
|
export const LinkContext = createContext<ContextValue<LinkProps, HTMLAnchorElement>>(null);
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
/**
|
|
56
|
+
* A link allows a user to navigate to another page or resource within a web page
|
|
57
|
+
* or application.
|
|
58
|
+
*/
|
|
59
|
+
export const Link = /*#__PURE__*/ (forwardRef as forwardRefType)(function Link(props: LinkProps, ref: ForwardedRef<HTMLAnchorElement>) {
|
|
56
60
|
[props, ref] = useContextProps(props, ref, LinkContext);
|
|
57
61
|
|
|
58
62
|
let ElementType: ElementType = props.href && !props.isDisabled ? 'a' : 'span';
|
|
@@ -88,11 +92,4 @@ function Link(props: LinkProps, ref: ForwardedRef<HTMLAnchorElement>) {
|
|
|
88
92
|
{renderProps.children}
|
|
89
93
|
</ElementType>
|
|
90
94
|
);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* A link allows a user to navigate to another page or resource within a web page
|
|
95
|
-
* or application.
|
|
96
|
-
*/
|
|
97
|
-
const _Link = /*#__PURE__*/ (forwardRef as forwardRefType)(Link);
|
|
98
|
-
export {_Link as Link};
|
|
95
|
+
});
|
package/src/ListBox.tsx
CHANGED
|
@@ -17,12 +17,13 @@ import {ContextValue, Provider, RenderProps, ScrollableProps, SlotProps, StyleRe
|
|
|
17
17
|
import {DragAndDropContext, DropIndicatorContext, DropIndicatorProps, useDndPersistedKeys, useRenderDropIndicator} from './DragAndDrop';
|
|
18
18
|
import {DragAndDropHooks} from './useDragAndDrop';
|
|
19
19
|
import {DraggableCollectionState, DroppableCollectionState, ListState, Node, Orientation, SelectionBehavior, useListState} from 'react-stately';
|
|
20
|
-
import {filterDOMProps, useObjectRef} from '@react-aria/utils';
|
|
20
|
+
import {filterDOMProps, mergeRefs, useObjectRef} from '@react-aria/utils';
|
|
21
21
|
import {forwardRefType, HoverEvents, Key, LinkDOMProps, RefObject} from '@react-types/shared';
|
|
22
22
|
import {HeaderContext} from './Header';
|
|
23
23
|
import React, {createContext, ForwardedRef, forwardRef, JSX, ReactNode, useContext, useEffect, useMemo, useRef} from 'react';
|
|
24
24
|
import {SeparatorContext} from './Separator';
|
|
25
25
|
import {TextContext} from './Text';
|
|
26
|
+
import {UNSTABLE_InternalAutocompleteContext} from './Autocomplete';
|
|
26
27
|
|
|
27
28
|
export interface ListBoxRenderProps {
|
|
28
29
|
/**
|
|
@@ -79,7 +80,10 @@ export interface ListBoxProps<T> extends Omit<AriaListBoxProps<T>, 'children' |
|
|
|
79
80
|
export const ListBoxContext = createContext<ContextValue<ListBoxProps<any>, HTMLDivElement>>(null);
|
|
80
81
|
export const ListStateContext = createContext<ListState<any> | null>(null);
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
/**
|
|
84
|
+
* A listbox displays a list of options and allows a user to select one or more of them.
|
|
85
|
+
*/
|
|
86
|
+
export const ListBox = /*#__PURE__*/ (forwardRef as forwardRefType)(function ListBox<T extends object>(props: ListBoxProps<T>, ref: ForwardedRef<HTMLDivElement>) {
|
|
83
87
|
[props, ref] = useContextProps(props, ref, ListBoxContext);
|
|
84
88
|
let state = useContext(ListStateContext);
|
|
85
89
|
|
|
@@ -98,21 +102,19 @@ function ListBox<T extends object>(props: ListBoxProps<T>, ref: ForwardedRef<HTM
|
|
|
98
102
|
{collection => <StandaloneListBox props={props} listBoxRef={ref} collection={collection} />}
|
|
99
103
|
</CollectionBuilder>
|
|
100
104
|
);
|
|
101
|
-
}
|
|
105
|
+
});
|
|
102
106
|
|
|
103
107
|
function StandaloneListBox({props, listBoxRef, collection}) {
|
|
104
108
|
props = {...props, collection, children: null, items: null};
|
|
105
109
|
let {layoutDelegate} = useContext(CollectionRendererContext);
|
|
106
|
-
let
|
|
107
|
-
|
|
110
|
+
let {filterFn, collectionProps, collectionRef} = useContext(UNSTABLE_InternalAutocompleteContext) || {};
|
|
111
|
+
// Memoed so that useAutocomplete callback ref is properly only called once on mount and not everytime a rerender happens
|
|
112
|
+
listBoxRef = useObjectRef(useMemo(() => mergeRefs(listBoxRef, collectionRef !== undefined ? collectionRef as RefObject<HTMLDivElement> : null), [collectionRef, listBoxRef]));
|
|
113
|
+
let filteredCollection = useMemo(() => filterFn ? collection.filter(filterFn) : collection, [collection, filterFn]);
|
|
114
|
+
let state = useListState({...props, collection: filteredCollection, layoutDelegate});
|
|
115
|
+
return <ListBoxInner state={state} props={{...props, ...collectionProps}} listBoxRef={listBoxRef} />;
|
|
108
116
|
}
|
|
109
117
|
|
|
110
|
-
/**
|
|
111
|
-
* A listbox displays a list of options and allows a user to select one or more of them.
|
|
112
|
-
*/
|
|
113
|
-
const _ListBox = /*#__PURE__*/ (forwardRef as forwardRefType)(ListBox);
|
|
114
|
-
export {_ListBox as ListBox};
|
|
115
|
-
|
|
116
118
|
interface ListBoxInnerProps<T> {
|
|
117
119
|
state: ListState<T>,
|
|
118
120
|
props: ListBoxProps<T> & AriaListBoxOptions<T>,
|
|
@@ -246,7 +248,7 @@ function ListBoxInner<T extends object>({state, props, listBoxRef}: ListBoxInner
|
|
|
246
248
|
[DragAndDropContext, {dragAndDropHooks, dragState, dropState}],
|
|
247
249
|
[SeparatorContext, {elementType: 'div'}],
|
|
248
250
|
[DropIndicatorContext, {render: ListBoxDropIndicatorWrapper}],
|
|
249
|
-
[SectionContext, {name: 'ListBoxSection', render:
|
|
251
|
+
[SectionContext, {name: 'ListBoxSection', render: ListBoxSectionInner}]
|
|
250
252
|
]}>
|
|
251
253
|
<CollectionRoot
|
|
252
254
|
collection={collection}
|
|
@@ -263,7 +265,7 @@ function ListBoxInner<T extends object>({state, props, listBoxRef}: ListBoxInner
|
|
|
263
265
|
|
|
264
266
|
export interface ListBoxSectionProps<T> extends SectionProps<T> {}
|
|
265
267
|
|
|
266
|
-
function
|
|
268
|
+
function ListBoxSectionInner<T extends object>(props: ListBoxSectionProps<T>, ref: ForwardedRef<HTMLElement>, section: Node<T>, className = 'react-aria-ListBoxSection') {
|
|
267
269
|
let state = useContext(ListStateContext)!;
|
|
268
270
|
let {dragAndDropHooks, dropState} = useContext(DragAndDropContext)!;
|
|
269
271
|
let {CollectionBranch} = useContext(CollectionRendererContext);
|
|
@@ -298,8 +300,7 @@ function ListBoxSection<T extends object>(props: ListBoxSectionProps<T>, ref: Fo
|
|
|
298
300
|
/**
|
|
299
301
|
* A ListBoxSection represents a section within a ListBox.
|
|
300
302
|
*/
|
|
301
|
-
const
|
|
302
|
-
export {_ListBoxSection as ListBoxSection};
|
|
303
|
+
export const ListBoxSection = /*#__PURE__*/ createBranchComponent('section', ListBoxSectionInner);
|
|
303
304
|
|
|
304
305
|
export interface ListBoxItemRenderProps extends ItemRenderProps {}
|
|
305
306
|
|
package/src/Menu.tsx
CHANGED
|
@@ -10,13 +10,12 @@
|
|
|
10
10
|
* governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
|
|
14
13
|
import {AriaMenuProps, FocusScope, mergeProps, useFocusRing, useMenu, useMenuItem, useMenuSection, useMenuTrigger} from 'react-aria';
|
|
14
|
+
import {BaseCollection, Collection, CollectionBuilder, createBranchComponent, createLeafComponent} from '@react-aria/collections';
|
|
15
15
|
import {MenuTriggerProps as BaseMenuTriggerProps, Collection as ICollection, Node, TreeState, useMenuTriggerState, useTreeState} from 'react-stately';
|
|
16
|
-
import {Collection, CollectionBuilder, createBranchComponent, createLeafComponent} from '@react-aria/collections';
|
|
17
16
|
import {CollectionProps, CollectionRendererContext, ItemRenderProps, SectionContext, SectionProps, usePersistedKeys} from './Collection';
|
|
18
17
|
import {ContextValue, Provider, RenderProps, ScrollableProps, SlotProps, StyleProps, useContextProps, useRenderProps, useSlot, useSlottedContext} from './utils';
|
|
19
|
-
import {filterDOMProps, useObjectRef, useResizeObserver} from '@react-aria/utils';
|
|
18
|
+
import {filterDOMProps, mergeRefs, useObjectRef, useResizeObserver} from '@react-aria/utils';
|
|
20
19
|
import {FocusStrategy, forwardRefType, HoverEvents, Key, LinkDOMProps, MultipleSelection} from '@react-types/shared';
|
|
21
20
|
import {HeaderContext} from './Header';
|
|
22
21
|
import {KeyboardContext} from './Keyboard';
|
|
@@ -33,12 +32,14 @@ import React, {
|
|
|
33
32
|
RefObject,
|
|
34
33
|
useCallback,
|
|
35
34
|
useContext,
|
|
35
|
+
useMemo,
|
|
36
36
|
useRef,
|
|
37
37
|
useState
|
|
38
38
|
} from 'react';
|
|
39
39
|
import {RootMenuTriggerState, useSubmenuTriggerState} from '@react-stately/menu';
|
|
40
40
|
import {SeparatorContext} from './Separator';
|
|
41
41
|
import {TextContext} from './Text';
|
|
42
|
+
import {UNSTABLE_InternalAutocompleteContext} from './Autocomplete';
|
|
42
43
|
import {useSubmenuTrigger} from '@react-aria/menu';
|
|
43
44
|
|
|
44
45
|
export const MenuContext = createContext<ContextValue<MenuProps<any>, HTMLDivElement>>(null);
|
|
@@ -151,7 +152,10 @@ export const SubmenuTrigger = /*#__PURE__*/ createBranchComponent('submenutrigg
|
|
|
151
152
|
|
|
152
153
|
export interface MenuProps<T> extends Omit<AriaMenuProps<T>, 'children'>, CollectionProps<T>, StyleProps, SlotProps, ScrollableProps<HTMLDivElement> {}
|
|
153
154
|
|
|
154
|
-
|
|
155
|
+
/**
|
|
156
|
+
* A menu displays a list of actions or options that a user can choose.
|
|
157
|
+
*/
|
|
158
|
+
export const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T extends object>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {
|
|
155
159
|
[props, ref] = useContextProps(props, ref, MenuContext);
|
|
156
160
|
|
|
157
161
|
// Delay rendering the actual menu until we have the collection so that auto focus works properly.
|
|
@@ -160,23 +164,27 @@ function Menu<T extends object>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivEl
|
|
|
160
164
|
{collection => collection.size > 0 && <MenuInner props={props} collection={collection} menuRef={ref} />}
|
|
161
165
|
</CollectionBuilder>
|
|
162
166
|
);
|
|
163
|
-
}
|
|
167
|
+
});
|
|
164
168
|
|
|
165
169
|
interface MenuInnerProps<T> {
|
|
166
170
|
props: MenuProps<T>,
|
|
167
|
-
collection:
|
|
171
|
+
collection: BaseCollection<object>,
|
|
168
172
|
menuRef: RefObject<HTMLDivElement | null>
|
|
169
173
|
}
|
|
170
174
|
|
|
171
175
|
function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInnerProps<T>) {
|
|
176
|
+
let {filterFn, collectionProps: autocompleteMenuProps, collectionRef} = useContext(UNSTABLE_InternalAutocompleteContext) || {};
|
|
177
|
+
// Memoed so that useAutocomplete callback ref is properly only called once on mount and not everytime a rerender happens
|
|
178
|
+
ref = useObjectRef(useMemo(() => mergeRefs(ref, collectionRef !== undefined ? collectionRef as RefObject<HTMLDivElement> : null), [collectionRef, ref]));
|
|
179
|
+
let filteredCollection = useMemo(() => filterFn ? collection.filter(filterFn) : collection, [collection, filterFn]);
|
|
172
180
|
let state = useTreeState({
|
|
173
181
|
...props,
|
|
174
|
-
collection
|
|
182
|
+
collection: filteredCollection as ICollection<Node<object>>,
|
|
175
183
|
children: undefined
|
|
176
184
|
});
|
|
177
185
|
let triggerState = useContext(RootMenuTriggerStateContext);
|
|
178
186
|
let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);
|
|
179
|
-
let {menuProps} = useMenu({...props, isVirtualized, onClose: props.onClose || triggerState?.close}, state, ref);
|
|
187
|
+
let {menuProps} = useMenu({...props, ...autocompleteMenuProps, isVirtualized, onClose: props.onClose || triggerState?.close}, state, ref);
|
|
180
188
|
let renderProps = useRenderProps({
|
|
181
189
|
defaultClassName: 'react-aria-Menu',
|
|
182
190
|
className: props.className,
|
|
@@ -197,13 +205,13 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
197
205
|
values={[
|
|
198
206
|
[MenuStateContext, state],
|
|
199
207
|
[SeparatorContext, {elementType: 'div'}],
|
|
200
|
-
[SectionContext, {name: 'MenuSection', render:
|
|
208
|
+
[SectionContext, {name: 'MenuSection', render: MenuSectionInner}],
|
|
201
209
|
[SubmenuTriggerContext, {parentMenuRef: ref}],
|
|
202
210
|
[MenuItemContext, null],
|
|
203
211
|
[SelectionManagerContext, state.selectionManager]
|
|
204
212
|
]}>
|
|
205
213
|
<CollectionRoot
|
|
206
|
-
collection={collection}
|
|
214
|
+
collection={state.collection}
|
|
207
215
|
persistedKeys={usePersistedKeys(state.selectionManager.focusedKey)}
|
|
208
216
|
scrollRef={ref} />
|
|
209
217
|
</Provider>
|
|
@@ -212,12 +220,6 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
212
220
|
);
|
|
213
221
|
}
|
|
214
222
|
|
|
215
|
-
/**
|
|
216
|
-
* A menu displays a list of actions or options that a user can choose.
|
|
217
|
-
*/
|
|
218
|
-
const _Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(Menu);
|
|
219
|
-
export {_Menu as Menu};
|
|
220
|
-
|
|
221
223
|
export interface MenuSectionProps<T> extends SectionProps<T>, MultipleSelection {}
|
|
222
224
|
|
|
223
225
|
// A subclass of SelectionManager that forwards focus-related properties to the parent,
|
|
@@ -251,7 +253,7 @@ class GroupSelectionManager extends SelectionManager {
|
|
|
251
253
|
}
|
|
252
254
|
}
|
|
253
255
|
|
|
254
|
-
function
|
|
256
|
+
function MenuSectionInner<T extends object>(props: MenuSectionProps<T>, ref: ForwardedRef<HTMLElement>, section: Node<T>, className = 'react-aria-MenuSection') {
|
|
255
257
|
let state = useContext(MenuStateContext)!;
|
|
256
258
|
let {CollectionBranch} = useContext(CollectionRendererContext);
|
|
257
259
|
let [headingRef, heading] = useSlot();
|
|
@@ -290,8 +292,7 @@ function MenuSection<T extends object>(props: MenuSectionProps<T>, ref: Forwarde
|
|
|
290
292
|
/**
|
|
291
293
|
* A MenuSection represents a section within a Menu.
|
|
292
294
|
*/
|
|
293
|
-
const
|
|
294
|
-
export {_MenuSection as MenuSection};
|
|
295
|
+
export const MenuSection = /*#__PURE__*/ createBranchComponent('section', MenuSectionInner);
|
|
295
296
|
|
|
296
297
|
export interface MenuItemRenderProps extends ItemRenderProps {
|
|
297
298
|
/**
|
package/src/Meter.tsx
CHANGED
|
@@ -33,7 +33,10 @@ export interface MeterRenderProps {
|
|
|
33
33
|
|
|
34
34
|
export const MeterContext = createContext<ContextValue<MeterProps, HTMLDivElement>>(null);
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
/**
|
|
37
|
+
* A meter represents a quantity within a known range, or a fractional value.
|
|
38
|
+
*/
|
|
39
|
+
export const Meter = /*#__PURE__*/ (forwardRef as forwardRefType)(function Meter(props: MeterProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
37
40
|
[props, ref] = useContextProps(props, ref, MeterContext);
|
|
38
41
|
let {
|
|
39
42
|
value = 0,
|
|
@@ -67,10 +70,4 @@ function Meter(props: MeterProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
|
67
70
|
</LabelContext.Provider>
|
|
68
71
|
</div>
|
|
69
72
|
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* A meter represents a quantity within a known range, or a fractional value.
|
|
74
|
-
*/
|
|
75
|
-
const _Meter = /*#__PURE__*/ (forwardRef as forwardRefType)(Meter);
|
|
76
|
-
export {_Meter as Meter};
|
|
73
|
+
});
|
package/src/Modal.tsx
CHANGED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import {AriaModalOverlayProps, DismissButton, Overlay, useIsSSR, useModalOverlay} from 'react-aria';
|
|
14
|
-
import {ContextValue, Provider, RenderProps, SlotProps, useContextProps,
|
|
14
|
+
import {ContextValue, Provider, RenderProps, SlotProps, useContextProps, useRenderProps} from './utils';
|
|
15
15
|
import {DOMAttributes, forwardRefType, RefObject} from '@react-types/shared';
|
|
16
|
-
import {filterDOMProps, mergeProps, mergeRefs, useObjectRef, useViewportSize} from '@react-aria/utils';
|
|
16
|
+
import {filterDOMProps, mergeProps, mergeRefs, useEnterAnimation, useExitAnimation, useObjectRef, useViewportSize} from '@react-aria/utils';
|
|
17
17
|
import {OverlayTriggerProps, OverlayTriggerState, useOverlayTriggerState} from 'react-stately';
|
|
18
18
|
import {OverlayTriggerStateContext} from './Dialog';
|
|
19
19
|
import React, {createContext, ForwardedRef, forwardRef, useContext, useMemo, useRef} from 'react';
|
|
@@ -61,7 +61,10 @@ export interface ModalRenderProps {
|
|
|
61
61
|
state: OverlayTriggerState
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
/**
|
|
65
|
+
* A modal is an overlay element which blocks interaction with elements outside it.
|
|
66
|
+
*/
|
|
67
|
+
export const Modal = /*#__PURE__*/ (forwardRef as forwardRefType)(function Modal(props: ModalOverlayProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
65
68
|
let ctx = useContext(InternalModalContext);
|
|
66
69
|
|
|
67
70
|
if (ctx) {
|
|
@@ -98,7 +101,7 @@ function Modal(props: ModalOverlayProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
|
98
101
|
</ModalContent>
|
|
99
102
|
</ModalOverlay>
|
|
100
103
|
);
|
|
101
|
-
}
|
|
104
|
+
});
|
|
102
105
|
|
|
103
106
|
interface ModalOverlayInnerProps extends ModalOverlayProps {
|
|
104
107
|
overlayRef: RefObject<HTMLDivElement | null>,
|
|
@@ -107,12 +110,6 @@ interface ModalOverlayInnerProps extends ModalOverlayProps {
|
|
|
107
110
|
isExiting: boolean
|
|
108
111
|
}
|
|
109
112
|
|
|
110
|
-
/**
|
|
111
|
-
* A modal is an overlay element which blocks interaction with elements outside it.
|
|
112
|
-
*/
|
|
113
|
-
const _Modal = /*#__PURE__*/ (forwardRef as forwardRefType)(Modal);
|
|
114
|
-
export {_Modal as Modal};
|
|
115
|
-
|
|
116
113
|
function ModalOverlayWithForwardRef(props: ModalOverlayProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
117
114
|
[props, ref] = useContextProps(props, ref, ModalContext);
|
|
118
115
|
let contextState = useContext(OverlayTriggerStateContext);
|