@octanejs/aria 0.0.46 → 0.0.47
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/README.md +7 -6
- package/UPSTREAM.md +58 -69
- package/package.json +11 -11
- package/src/calendar/useCalendarGrid.tsx +64 -62
- package/src/collections/Document.ts +3 -0
- package/src/color/useColorArea.tsx +95 -69
- package/src/color/useColorWheel.tsx +38 -37
- package/src/combobox/{useComboBox.ts → useComboBox.tsx} +239 -259
- package/src/components/ComboBox.ts +35 -2
- package/src/components/Dialog.ts +12 -1
- package/src/components/DropZone.tsx +3 -2
- package/src/components/FileTrigger.tsx +1 -0
- package/src/components/GridList.ts +11 -2
- package/src/components/ListBox.ts +1 -1
- package/src/components/Menu.ts +1 -0
- package/src/components/Meter.ts +3 -1
- package/src/components/Popover.ts +20 -8
- package/src/components/PreviewTrigger.tsx +101 -0
- package/src/components/ProgressBar.ts +10 -2
- package/src/components/Select.ts +1 -1
- package/src/components/Table.ts +26 -15
- package/src/components/TokenField.tsx +395 -0
- package/src/components/Tooltip.ts +4 -6
- package/src/components/Tree.ts +14 -7
- package/src/components/Virtualizer.tsx +30 -14
- package/src/components/index.ts +22 -0
- package/src/components/utils.ts +1 -1
- package/src/datepicker/useDateField.tsx +2 -11
- package/src/datepicker/useDatePickerGroup.tsx +44 -33
- package/src/datepicker/useDateSegment.tsx +31 -30
- package/src/dialog/useDialog.ts +8 -1
- package/src/dnd/DragManager.tsx +5 -1
- package/src/dnd/useDrag.tsx +2 -1
- package/src/focus/FocusScope.ts +2 -2
- package/src/grid/useGrid.ts +3 -0
- package/src/grid/{useGridCell.ts → useGridCell.tsx} +121 -64
- package/src/grid/utils.ts +1 -0
- package/src/gridlist/{useGridListItem.ts → useGridListItem.tsx} +152 -111
- package/src/index.ts +22 -0
- package/src/interactions/createEventHandler.ts +11 -8
- package/src/interactions/createKeyboardShortcutHandler.tsx +218 -0
- package/src/interactions/textSelection.ts +3 -3
- package/src/interactions/useContextMenu.tsx +125 -0
- package/src/interactions/useFocusVisible.ts +4 -4
- package/src/interactions/useKeyboard.ts +50 -2
- package/src/interactions/useLongPress.ts +33 -22
- package/src/interactions/useMove.ts +6 -6
- package/src/interactions/usePress.ts +8 -0
- package/src/interactions/utils.ts +10 -10
- package/src/intl/combobox/fi-FI.json +2 -2
- package/src/intl/previewtrigger/ar-AE.json +3 -0
- package/src/intl/previewtrigger/bg-BG.json +3 -0
- package/src/intl/previewtrigger/cs-CZ.json +3 -0
- package/src/intl/previewtrigger/da-DK.json +3 -0
- package/src/intl/previewtrigger/de-DE.json +3 -0
- package/src/intl/previewtrigger/el-GR.json +3 -0
- package/src/intl/previewtrigger/en-US.json +3 -0
- package/src/intl/previewtrigger/es-ES.json +3 -0
- package/src/intl/previewtrigger/et-EE.json +3 -0
- package/src/intl/previewtrigger/fi-FI.json +3 -0
- package/src/intl/previewtrigger/fr-FR.json +3 -0
- package/src/intl/previewtrigger/he-IL.json +3 -0
- package/src/intl/previewtrigger/hr-HR.json +3 -0
- package/src/intl/previewtrigger/hu-HU.json +3 -0
- package/src/intl/previewtrigger/index.ts +73 -0
- package/src/intl/previewtrigger/it-IT.json +3 -0
- package/src/intl/previewtrigger/ja-JP.json +3 -0
- package/src/intl/previewtrigger/ko-KR.json +3 -0
- package/src/intl/previewtrigger/lt-LT.json +3 -0
- package/src/intl/previewtrigger/lv-LV.json +3 -0
- package/src/intl/previewtrigger/nb-NO.json +3 -0
- package/src/intl/previewtrigger/nl-NL.json +3 -0
- package/src/intl/previewtrigger/pl-PL.json +3 -0
- package/src/intl/previewtrigger/pt-BR.json +3 -0
- package/src/intl/previewtrigger/pt-PT.json +3 -0
- package/src/intl/previewtrigger/ro-RO.json +3 -0
- package/src/intl/previewtrigger/ru-RU.json +3 -0
- package/src/intl/previewtrigger/sk-SK.json +3 -0
- package/src/intl/previewtrigger/sl-SI.json +3 -0
- package/src/intl/previewtrigger/sr-SP.json +3 -0
- package/src/intl/previewtrigger/sv-SE.json +3 -0
- package/src/intl/previewtrigger/tr-TR.json +3 -0
- package/src/intl/previewtrigger/uk-UA.json +3 -0
- package/src/intl/previewtrigger/zh-CN.json +3 -0
- package/src/intl/previewtrigger/zh-TW.json +3 -0
- package/src/intl/table/ar-AE.json +3 -3
- package/src/intl/table/bg-BG.json +3 -3
- package/src/intl/table/cs-CZ.json +3 -3
- package/src/intl/table/da-DK.json +3 -3
- package/src/intl/table/de-DE.json +3 -3
- package/src/intl/table/el-GR.json +3 -3
- package/src/intl/table/es-ES.json +3 -3
- package/src/intl/table/et-EE.json +3 -3
- package/src/intl/table/fi-FI.json +3 -3
- package/src/intl/table/fr-FR.json +3 -3
- package/src/intl/table/he-IL.json +3 -3
- package/src/intl/table/hr-HR.json +3 -3
- package/src/intl/table/hu-HU.json +3 -3
- package/src/intl/table/it-IT.json +3 -3
- package/src/intl/table/ja-JP.json +3 -3
- package/src/intl/table/ko-KR.json +3 -3
- package/src/intl/table/lt-LT.json +3 -3
- package/src/intl/table/lv-LV.json +3 -3
- package/src/intl/table/nb-NO.json +3 -3
- package/src/intl/table/nl-NL.json +3 -3
- package/src/intl/table/pl-PL.json +3 -3
- package/src/intl/table/pt-BR.json +3 -3
- package/src/intl/table/pt-PT.json +3 -3
- package/src/intl/table/ro-RO.json +3 -3
- package/src/intl/table/ru-RU.json +3 -3
- package/src/intl/table/sk-SK.json +3 -3
- package/src/intl/table/sl-SI.json +3 -3
- package/src/intl/table/sr-SP.json +3 -3
- package/src/intl/table/sv-SE.json +3 -3
- package/src/intl/table/tr-TR.json +3 -3
- package/src/intl/table/uk-UA.json +3 -3
- package/src/intl/table/zh-CN.json +4 -4
- package/src/intl/table/zh-TW.json +3 -3
- package/src/intl/tree/es-ES.json +1 -1
- package/src/link/useLink.ts +2 -0
- package/src/menu/useMenuItem.ts +33 -36
- package/src/menu/useMenuTrigger.tsx +217 -0
- package/src/menu/{useSubmenuTrigger.ts → useSubmenuTrigger.tsx} +112 -152
- package/src/numberfield/{useNumberField.ts → useNumberField.tsx} +185 -239
- package/src/overlays/Overlay.ts +5 -1
- package/src/overlays/ariaHideOutside.ts +6 -8
- package/src/overlays/useCloseOnScroll.ts +7 -5
- package/src/overlays/{useOverlay.ts → useOverlay.tsx} +72 -84
- package/src/overlays/usePopover.ts +10 -5
- package/src/overlays/usePreventScroll.ts +4 -4
- package/src/progress/useProgressBar.ts +2 -1
- package/src/radio/{useRadioGroup.ts → useRadioGroup.tsx} +83 -80
- package/src/searchfield/useSearchField.tsx +147 -0
- package/src/select/useSelect.ts +20 -20
- package/src/selection/useSelectableCollection.tsx +751 -0
- package/src/selection/useSelectableItem.ts +48 -11
- package/src/slider/{useSliderThumb.ts → useSliderThumb.tsx} +116 -159
- package/src/spinbutton/useSpinButton.tsx +330 -0
- package/src/stately/combobox/useComboBoxState.ts +1 -1
- package/src/stately/grid/useGridState.ts +9 -10
- package/src/stately/index.ts +11 -0
- package/src/stately/menu/useMenuTriggerState.ts +1 -1
- package/src/stately/menu/useSubmenuTriggerState.ts +2 -0
- package/src/stately/overlays/useOverlayTriggerState.ts +12 -1
- package/src/stately/radio/useRadioGroupState.ts +5 -1
- package/src/stately/table/TableUtils.ts +15 -1
- package/src/stately/table/useTableState.ts +7 -0
- package/src/stately/tokenfield/TokenFieldValue.tsx +440 -0
- package/src/stately/tokenfield/useTokenFieldState.tsx +57 -0
- package/src/stately/tooltip/useTooltipTriggerState.ts +16 -7
- package/src/stately/virtualizer/Layout.tsx +2 -0
- package/src/stately/virtualizer/ScrollAnchor.tsx +338 -0
- package/src/stately/virtualizer/Virtualizer.tsx +52 -1
- package/src/stately/virtualizer/types.tsx +2 -0
- package/src/table/useTableCell.ts +12 -0
- package/src/table/useTableColumnHeader.ts +8 -1
- package/src/table/useTableColumnResize.tsx +354 -0
- package/src/tag/useTag.ts +22 -15
- package/src/textfield/useTextField.ts +2 -0
- package/src/tokenfield/useToken.tsx +64 -0
- package/src/tokenfield/useTokenField.tsx +849 -0
- package/src/tooltip/usePreviewTrigger.tsx +266 -0
- package/src/tooltip/useSafeArea.tsx +171 -0
- package/src/upstream-exports/react-aria/mergeRefs.tsx +3 -0
- package/src/upstream-exports/react-aria/usePreviewTrigger.tsx +18 -0
- package/src/upstream-exports/react-aria/useTokenField.tsx +22 -0
- package/src/upstream-exports/react-stately/private/collections/getChildNodes.tsx +8 -0
- package/src/upstream-exports/react-stately/private/collections/getItemCount.tsx +2 -0
- package/src/upstream-exports/react-stately/private/grid/GridCollection.tsx +7 -0
- package/src/upstream-exports/react-stately/private/grid/useGridState.tsx +6 -0
- package/src/upstream-exports/react-stately/private/utils/number.tsx +2 -0
- package/src/upstream-exports/react-stately/useComboBoxState.tsx +23 -0
- package/src/upstream-exports/react-stately/useListState.tsx +15 -0
- package/src/upstream-exports/react-stately/useMenuTriggerState.tsx +26 -0
- package/src/upstream-exports/react-stately/useMultipleSelectionState.tsx +21 -0
- package/src/upstream-exports/react-stately/useNumberFieldState.tsx +20 -0
- package/src/upstream-exports/react-stately/useOverlayTriggerState.tsx +20 -0
- package/src/upstream-exports/react-stately/useRadioGroupState.tsx +16 -0
- package/src/upstream-exports/react-stately/useSearchFieldState.tsx +19 -0
- package/src/upstream-exports/react-stately/useSliderState.tsx +20 -0
- package/src/upstream-exports/react-stately/useTableState.tsx +45 -0
- package/src/upstream-exports/react-stately/useTokenFieldState.tsx +25 -0
- package/src/upstream-exports/react-stately/useTooltipTriggerState.tsx +20 -0
- package/src/upstream-exports/react-stately/useTreeState.tsx +14 -0
- package/src/utils/domHelpers.ts +74 -17
- package/src/utils/isVirtualEvent.ts +2 -1
- package/src/utils/openLink.ts +8 -3
- package/src/utils/platform.ts +7 -3
- package/src/utils/scrollIntoView.ts +4 -4
- package/src/utils/shadowdom/DOMFunctions.ts +42 -2
- package/src/utils/useId.ts +11 -2
- package/src/utils/useLoadMoreSentinel.ts +8 -3
- package/src/utils/useViewportSize.ts +3 -3
- package/src/virtualizer/ScrollView.tsx +13 -4
- package/src/virtualizer/VirtualizerItem.tsx +3 -1
- package/src/virtualizer/useVirtualizerItem.tsx +43 -3
- package/src/menu/useMenuTrigger.ts +0 -189
- package/src/searchfield/useSearchField.ts +0 -156
- package/src/selection/useSelectableCollection.ts +0 -750
- package/src/spinbutton/useSpinButton.ts +0 -380
- package/src/table/useTableColumnResize.ts +0 -374
package/README.md
CHANGED
|
@@ -15,16 +15,17 @@ pnpm add @octanejs/aria
|
|
|
15
15
|
- `@octanejs/aria` — the `react-aria` behavior-hook surface.
|
|
16
16
|
- `@octanejs/aria/stately` — the `react-stately` state-hook surface.
|
|
17
17
|
- `@octanejs/aria/components` — the complete public export surface of
|
|
18
|
-
`react-aria-components@1.
|
|
18
|
+
`react-aria-components@1.20.0`.
|
|
19
19
|
|
|
20
20
|
Ported from the pinned `adobe/react-spectrum` checkout at commit
|
|
21
|
-
`
|
|
22
|
-
`react-aria@3.
|
|
23
|
-
`react-aria-components@1.
|
|
24
|
-
crosswalk: all
|
|
21
|
+
`5ecb3333001313e83898cd07644227897e3bae1f`, which publishes
|
|
22
|
+
`react-aria@3.51.0`, `react-stately@3.49.0`, and
|
|
23
|
+
`react-aria-components@1.20.0`. The components entry point has an exact checked
|
|
24
|
+
crosswalk: all 286 runtime exports and all 327 type exports match the pinned
|
|
25
25
|
package, with no missing or extra names. Existing families retain differential
|
|
26
26
|
tests against React; calendar/date, color, drag and drop, file, data, toast, and
|
|
27
|
-
layout additions have focused public-behavior coverage.
|
|
27
|
+
layout additions have focused public-behavior coverage. The 1.20 release adds
|
|
28
|
+
TokenField and PreviewTrigger, keyboard shortcut bindings, and context-menu triggers.
|
|
28
29
|
|
|
29
30
|
Status, supported surface, and known divergences: `status.json` (rendered into
|
|
30
31
|
`docs/bindings-status.md`). Source provenance and refresh instructions:
|
package/UPSTREAM.md
CHANGED
|
@@ -1,108 +1,97 @@
|
|
|
1
1
|
# React Aria upstream ledger
|
|
2
2
|
|
|
3
3
|
`@octanejs/aria` targets the coordinated React Spectrum release at commit
|
|
4
|
-
`
|
|
4
|
+
`5ecb3333001313e83898cd07644227897e3bae1f`:
|
|
5
5
|
|
|
6
|
-
| Package | Version |
|
|
7
|
-
| --- | --- | --- | --- |
|
|
8
|
-
| `react-aria` | `3.
|
|
9
|
-
| `react-aria-components` | `1.
|
|
10
|
-
| `react-stately` | `3.
|
|
6
|
+
| Package | Version | npm SHA-256 | npm integrity |
|
|
7
|
+
| --- | --- | --- | --- |
|
|
8
|
+
| `react-aria` | `3.51.0` | `8d404cc6c43909f85dcd207435614db08f38c69553b8085bed2910c61b7e89fa` | `sha512-AyWLw0XR38cFPwBu/ErgGaVrc5dupLEKmRlMXTGvFKOtbaGRQ2+yQJkjVhpdHhoRhU4+G+tJDFeHDTS8tK3bfQ==` |
|
|
9
|
+
| `react-aria-components` | `1.20.0` | `b63f044f9cb25cb48789b8c2ce06b27c83a81c94c6413a29766eabb3c15458dd` | `sha512-BMbpIgoV9aELeBrB0Y120NgoigHb5OdcJwc+4e7uSnbTbamea6lo+gqcc4LAxzMaK3Jf+7LI1oCDE6yANsmxIQ==` |
|
|
10
|
+
| `react-stately` | `3.49.0` | `90e49592b8c2aa351c9e25c2ad82f477aa50682dd7ef9afe8c7c11a01f856793` | `sha512-13iNq2KzBrRAzxRc+n53hgROfIistiYY/sPtIhCw1qUB7/kmo+X1xEU2uiS5zcCIrc55AUPwoHqOIIpKWSwB9A==` |
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
Registry metadata and tarball manifests record the same `gitHead` for all three
|
|
13
|
+
packages. Downloaded bytes match their npm SHA-512 integrity values. The ordered
|
|
14
|
+
SHA-256 of the three concatenated tarballs is
|
|
15
|
+
`775b11dacccd090af9b3a59f47b17dcf03efd7cf09be32b5b8e94dc707167b86`.
|
|
16
|
+
The supported range is these exact coordinated versions.
|
|
16
17
|
|
|
17
18
|
## Source and test boundary
|
|
18
19
|
|
|
19
|
-
-
|
|
20
|
-
- Source roots: `packages/react-aria/src`, `packages/react-aria-components/src`, and
|
|
21
|
-
`packages/react-stately/src`
|
|
20
|
+
- Repository: `https://github.com/adobe/react-spectrum.git`
|
|
21
|
+
- Source roots: `packages/react-aria/src`, `packages/react-aria-components/src`, and `packages/react-stately/src`
|
|
22
22
|
- Public entry points: each package's `exports/index.ts`
|
|
23
23
|
- Test roots: each package's `test` directory
|
|
24
|
-
- License: Apache-2.0;
|
|
25
|
-
`7dfe6526888bac51759c99f9a51262ba2711a8c12a067f2181609dd9a4066b84`
|
|
24
|
+
- License: Apache-2.0; root `LICENSE` SHA-256 `7dfe6526888bac51759c99f9a51262ba2711a8c12a067f2181609dd9a4066b84`
|
|
26
25
|
- React oracle: `react@19.2.7` and `react-dom@19.2.7`
|
|
27
26
|
|
|
28
|
-
The
|
|
29
|
-
trees contain more than two thousand source/support files. The immutable external checkout
|
|
30
|
-
can be reproduced with:
|
|
27
|
+
The exact source can be reproduced with:
|
|
31
28
|
|
|
32
29
|
```sh
|
|
33
|
-
git clone --
|
|
34
|
-
|
|
35
|
-
git -C react-spectrum-aria
|
|
36
|
-
packages/react-aria packages/react-aria-components packages/react-stately LICENSE
|
|
30
|
+
git clone --filter=blob:none --sparse https://github.com/adobe/react-spectrum.git react-spectrum-aria
|
|
31
|
+
git -C react-spectrum-aria checkout 5ecb3333001313e83898cd07644227897e3bae1f
|
|
32
|
+
git -C react-spectrum-aria sparse-checkout set packages/react-aria packages/react-aria-components packages/react-stately
|
|
37
33
|
```
|
|
38
34
|
|
|
39
|
-
`audit/upstream-crosswalk.json`
|
|
40
|
-
test-root artifacts
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
adapted case-by-case, so this binding remains `recorded-unverified`.
|
|
35
|
+
`audit/upstream-crosswalk.json` classifies all 1,340 public entry-point exports and
|
|
36
|
+
198 test-root artifacts: 1,044 exports are `surface-present-unverified`, and 296
|
|
37
|
+
remain explicit gaps in the curated root/stately surfaces. These gaps predate
|
|
38
|
+
this update. The checkout contains 189 runtime test files, one type test, and eight
|
|
39
|
+
support artifacts. Surface presence is not a behavior-parity claim.
|
|
45
40
|
|
|
46
41
|
## React Aria Components public surface
|
|
47
42
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
`scripts/check-react-aria-components-exports.mjs` parses the installed pinned declaration
|
|
54
|
-
barrel and `src/components/index.ts`, keeps runtime and type-only exports in separate lanes,
|
|
55
|
-
and rejects missing or extra names in either direction:
|
|
43
|
+
`@octanejs/aria/components` matches all 286 runtime and 327 type export names from
|
|
44
|
+
`react-aria-components@1.20.0`, including the new TokenField and PreviewTrigger
|
|
45
|
+
families. `scripts/check-react-aria-components-exports.mjs` checks runtime and type
|
|
46
|
+
names separately and rejects missing or extra names in either direction:
|
|
56
47
|
|
|
57
48
|
```sh
|
|
58
49
|
pnpm --filter @octanejs/aria exports:check
|
|
59
50
|
```
|
|
60
51
|
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
The root behavior hooks and `/stately` remain curated surfaces. This export check
|
|
53
|
+
does not claim complete type assignability or execution of every upstream suite.
|
|
63
54
|
|
|
64
|
-
## Refreshing
|
|
55
|
+
## Refreshing source
|
|
65
56
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
overwritten mechanically.
|
|
57
|
+
`scripts/port-advanced-source.mjs` creates a staging tree from the pinned source,
|
|
58
|
+
rewrites package boundaries, and copies locale dictionaries. It rejects
|
|
59
|
+
`packages/aria` as an output location so mechanical conversion cannot overwrite
|
|
60
|
+
reviewed native-event, ref, and hook-slot adaptations.
|
|
71
61
|
|
|
72
62
|
```sh
|
|
73
63
|
node packages/aria/scripts/port-advanced-source.mjs \
|
|
64
|
+
--source-checkout /tmp/react-spectrum-aria \
|
|
74
65
|
--output-root /tmp/octane-aria-upstream
|
|
75
66
|
```
|
|
76
67
|
|
|
77
|
-
Review the
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
text is shipped as `LICENSE-APACHE-2.0`.
|
|
68
|
+
Review the release diff, preserve Octane adaptations, and run the export audit,
|
|
69
|
+
`tsrx-tsc`, Aria test projects, and Shadcn integration tests. New Adobe source retains
|
|
70
|
+
its Apache-2.0 header; `LICENSE-APACHE-2.0` ships the license text. Artifact hashes and
|
|
71
|
+
release adaptation notes live in `audit/release-1.20.0.json`.
|
|
82
72
|
|
|
83
73
|
## Executable evidence
|
|
84
74
|
|
|
85
|
-
The
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
75
|
+
The differential project compiles shared fixtures for Octane and the pinned React
|
|
76
|
+
packages. It covers interaction hooks, forms, collections, Select, ComboBox, render
|
|
77
|
+
props, keyed updates, Tree/Table, and the new shortcut and TokenField markup cases.
|
|
78
|
+
|
|
79
|
+
The complete 96-case upstream TokenFieldValue file and its source are vendored under
|
|
80
|
+
`upstream/react-stately`. The `aria-token-value-pristine` and
|
|
81
|
+
`aria-token-value-adapted` projects run the original source and the Octane adaptation,
|
|
82
|
+
respectively. The adaptation preserves every case and assertion while replacing the
|
|
83
|
+
source import and test registration and removing the React-version gate. Per-case
|
|
84
|
+
inventories and file hashes are recorded in `audit/react-parity.json`.
|
|
89
85
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
coverage until those required lanes and inventories exist.
|
|
86
|
+
This is bounded evidence for one upstream file. Other upstream runtime and type
|
|
87
|
+
suites have not been adapted case-by-case, so the binding remains
|
|
88
|
+
`recorded-unverified`. Octane-only tests separately cover native event wiring, SSR,
|
|
89
|
+
hydration, and component integration.
|
|
95
90
|
|
|
96
91
|
## Intentional divergences
|
|
97
92
|
|
|
98
|
-
- Native text editing uses
|
|
99
|
-
|
|
100
|
-
- React
|
|
101
|
-
- The i18n server serializer
|
|
102
|
-
|
|
103
|
-
- Server locale direction is derived from the injected locale, including RTL locales, rather
|
|
104
|
-
than being hard-coded to `ltr`.
|
|
105
|
-
|
|
106
|
-
`native-input-event-wiring` is linked to the differential case in `audit/react-parity.json`.
|
|
107
|
-
The other divergences above remain documented package contracts with ordinary-shard tests; they
|
|
108
|
-
are not counted as completed React-parity suite evidence until adapted upstream lanes exist.
|
|
93
|
+
- Native text editing uses `onInput`; value-level `onChange(value)` callbacks retain their names.
|
|
94
|
+
- Refs are ordinary props, including adapters for upstream `forwardRef` wrappers.
|
|
95
|
+
- React Server Components are outside the Octane binding.
|
|
96
|
+
- The i18n server serializer produces valid identifiers after 26 hoisted strings.
|
|
97
|
+
- Server locale direction follows the injected locale, including RTL locales.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@octanejs/aria",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.47",
|
|
4
4
|
"license": "MIT AND Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -46,26 +46,26 @@
|
|
|
46
46
|
"./components": "./src/components/index.ts"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@internationalized/date": "^3.12.
|
|
49
|
+
"@internationalized/date": "^3.12.3",
|
|
50
50
|
"@internationalized/number": "^3.6.7",
|
|
51
|
-
"@internationalized/string": "^3.2.
|
|
52
|
-
"@react-types/shared": "^3.36.
|
|
51
|
+
"@internationalized/string": "^3.2.10",
|
|
52
|
+
"@react-types/shared": "^3.36.1",
|
|
53
53
|
"clsx": "^2.1.1"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"octane": "^0.1.51 || ^0.2.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@tsrx/react": "^0.2.
|
|
59
|
+
"@tsrx/react": "^0.2.69",
|
|
60
60
|
"esbuild": "^0.28.1",
|
|
61
|
-
"react": "
|
|
62
|
-
"react-aria": "3.
|
|
63
|
-
"react-aria-components": "1.
|
|
64
|
-
"react-dom": "
|
|
65
|
-
"react-stately": "3.
|
|
61
|
+
"react": "19.2.7",
|
|
62
|
+
"react-aria": "3.51.0",
|
|
63
|
+
"react-aria-components": "1.20.0",
|
|
64
|
+
"react-dom": "19.2.7",
|
|
65
|
+
"react-stately": "3.49.0",
|
|
66
66
|
"typescript": "^5.9.3",
|
|
67
67
|
"vitest": "^4.1.10",
|
|
68
|
-
"octane": "0.2.
|
|
68
|
+
"octane": "0.2.7"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"exports:check": "node scripts/check-react-aria-components-exports.mjs",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource octane */
|
|
2
|
-
// Ported from adobe/react-spectrum@
|
|
2
|
+
// Ported from adobe/react-spectrum@5ecb3333001313e83898cd07644227897e3bae1f (packages/react-aria/src/calendar/useCalendarGrid.ts).
|
|
3
3
|
/*
|
|
4
4
|
* Copyright 2020 Adobe. All rights reserved.
|
|
5
5
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
@@ -19,12 +19,13 @@ import {
|
|
|
19
19
|
} from '../upstream-exports/react-stately/useCalendarState';
|
|
20
20
|
import { DOMAttributes } from '@react-types/shared';
|
|
21
21
|
import { hookData, useVisibleRangeDescription } from './utils';
|
|
22
|
-
import { KeyboardEvent, useMemo } from '../compat/react';
|
|
23
22
|
import { mergeProps } from '../utils/mergeProps';
|
|
24
23
|
import { RangeCalendarState } from '../upstream-exports/react-stately/useRangeCalendarState';
|
|
25
24
|
import { useDateFormatter } from '../i18n/useDateFormatter';
|
|
25
|
+
import { useKeyboard } from '../interactions/useKeyboard';
|
|
26
26
|
import { useLabels } from '../utils/useLabels';
|
|
27
27
|
import { useLocale } from '../i18n/I18nProvider';
|
|
28
|
+
import { useMemo } from '../compat/react';
|
|
28
29
|
|
|
29
30
|
export interface AriaCalendarGridProps {
|
|
30
31
|
/**
|
|
@@ -83,70 +84,67 @@ export function useCalendarGrid(
|
|
|
83
84
|
|
|
84
85
|
let { direction } = useLocale();
|
|
85
86
|
|
|
86
|
-
let
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
case ' ':
|
|
90
|
-
e.preventDefault();
|
|
91
|
-
state.selectFocusedDate();
|
|
92
|
-
break;
|
|
93
|
-
case 'PageUp':
|
|
94
|
-
e.preventDefault();
|
|
95
|
-
e.stopPropagation();
|
|
96
|
-
state.focusPreviousSection(e.shiftKey);
|
|
97
|
-
break;
|
|
98
|
-
case 'PageDown':
|
|
99
|
-
e.preventDefault();
|
|
100
|
-
e.stopPropagation();
|
|
101
|
-
state.focusNextSection(e.shiftKey);
|
|
102
|
-
break;
|
|
103
|
-
case 'End':
|
|
104
|
-
e.preventDefault();
|
|
105
|
-
e.stopPropagation();
|
|
87
|
+
let { keyboardProps } = useKeyboard({
|
|
88
|
+
shortcuts: {
|
|
89
|
+
End: () => {
|
|
106
90
|
state.focusSectionEnd();
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
e.preventDefault();
|
|
110
|
-
e.stopPropagation();
|
|
91
|
+
},
|
|
92
|
+
Home: () => {
|
|
111
93
|
state.focusSectionStart();
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
94
|
+
},
|
|
95
|
+
Escape: () => {
|
|
96
|
+
// Cancel the selection.
|
|
97
|
+
if ('setAnchorDate' in state) {
|
|
98
|
+
state.setAnchorDate(null);
|
|
99
|
+
}
|
|
100
|
+
return false; // TODO: is this really correct? or should it return true when we cancel and only propagate if there's nothing to do
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
let { keyboardProps: repeatKeyboardProps } = useKeyboard({
|
|
106
|
+
shortcuts: {
|
|
107
|
+
Enter: () => {
|
|
108
|
+
state.selectFocusedDate();
|
|
109
|
+
},
|
|
110
|
+
' ': () => {
|
|
111
|
+
state.selectFocusedDate();
|
|
112
|
+
},
|
|
113
|
+
PageUp: () => {
|
|
114
|
+
state.focusPreviousSection();
|
|
115
|
+
},
|
|
116
|
+
'Shift+PageUp': () => {
|
|
117
|
+
state.focusPreviousSection(true);
|
|
118
|
+
},
|
|
119
|
+
PageDown: () => {
|
|
120
|
+
state.focusNextSection();
|
|
121
|
+
},
|
|
122
|
+
'Shift+PageDown': () => {
|
|
123
|
+
state.focusNextSection(true);
|
|
124
|
+
},
|
|
125
|
+
ArrowLeft: () => {
|
|
116
126
|
if (direction === 'rtl') {
|
|
117
127
|
state.focusNextDay();
|
|
118
128
|
} else {
|
|
119
129
|
state.focusPreviousDay();
|
|
120
130
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
e.preventDefault();
|
|
124
|
-
e.stopPropagation();
|
|
131
|
+
},
|
|
132
|
+
ArrowUp: () => {
|
|
125
133
|
state.focusPreviousRow();
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
e.preventDefault();
|
|
129
|
-
e.stopPropagation();
|
|
134
|
+
},
|
|
135
|
+
ArrowRight: () => {
|
|
130
136
|
if (direction === 'rtl') {
|
|
131
137
|
state.focusPreviousDay();
|
|
132
138
|
} else {
|
|
133
139
|
state.focusNextDay();
|
|
134
140
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
e.preventDefault();
|
|
138
|
-
e.stopPropagation();
|
|
141
|
+
},
|
|
142
|
+
ArrowDown: () => {
|
|
139
143
|
state.focusNextRow();
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
e.preventDefault();
|
|
145
|
-
state.setAnchorDate(null);
|
|
146
|
-
}
|
|
147
|
-
break;
|
|
148
|
-
}
|
|
149
|
-
};
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
allowRepeats: true,
|
|
147
|
+
});
|
|
150
148
|
|
|
151
149
|
let visibleRangeDescription = useVisibleRangeDescription(
|
|
152
150
|
startDate,
|
|
@@ -181,16 +179,20 @@ export function useCalendarGrid(
|
|
|
181
179
|
let weeksInMonth = state.getWeeksInMonth(startDate);
|
|
182
180
|
|
|
183
181
|
return {
|
|
184
|
-
gridProps: mergeProps(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
'
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
182
|
+
gridProps: mergeProps(
|
|
183
|
+
labelProps,
|
|
184
|
+
{
|
|
185
|
+
role: 'grid',
|
|
186
|
+
'aria-readonly': state.isReadOnly || undefined,
|
|
187
|
+
'aria-disabled': state.isDisabled || undefined,
|
|
188
|
+
'aria-multiselectable':
|
|
189
|
+
'highlightedRange' in state || state.selectionMode === 'multiple' || undefined,
|
|
190
|
+
onFocus: () => state.setFocused(true),
|
|
191
|
+
onBlur: () => state.setFocused(false),
|
|
192
|
+
},
|
|
193
|
+
keyboardProps,
|
|
194
|
+
repeatKeyboardProps,
|
|
195
|
+
),
|
|
194
196
|
headerProps: {
|
|
195
197
|
// Column headers are hidden to screen readers to make navigating with a touch screen reader easier.
|
|
196
198
|
// The day names are already included in the label of each cell, so there's no need to announce them twice.
|
|
@@ -437,6 +437,9 @@ export class Document<T, C extends BaseCollection<T> = BaseCollection<T>> {
|
|
|
437
437
|
|
|
438
438
|
subscribe(fn: () => void): () => boolean {
|
|
439
439
|
this.subscriptions.add(fn);
|
|
440
|
+
if (this.queuedRender) {
|
|
441
|
+
fn();
|
|
442
|
+
}
|
|
440
443
|
return (): boolean => this.subscriptions.delete(fn);
|
|
441
444
|
}
|
|
442
445
|
|