@wordpress/components 28.8.3 → 28.9.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/CHANGELOG.md +27 -3
- package/build/autocomplete/index.js +4 -1
- package/build/autocomplete/index.js.map +1 -1
- package/build/border-box-control/border-box-control/component.js +3 -14
- package/build/border-box-control/border-box-control/component.js.map +1 -1
- package/build/border-control/border-control/component.js +1 -2
- package/build/border-control/border-control/component.js.map +1 -1
- package/build/border-control/border-control-dropdown/component.js +2 -14
- package/build/border-control/border-control-dropdown/component.js.map +1 -1
- package/build/border-control/styles.js +13 -13
- package/build/border-control/styles.js.map +1 -1
- package/build/border-control/types.js.map +1 -1
- package/build/box-control/index.js +4 -4
- package/build/box-control/index.js.map +1 -1
- package/build/box-control/types.js.map +1 -1
- package/build/composite/group-label.js +7 -1
- package/build/composite/group-label.js.map +1 -1
- package/build/composite/group.js +7 -1
- package/build/composite/group.js.map +1 -1
- package/build/composite/hover.js +8 -2
- package/build/composite/hover.js.map +1 -1
- package/build/composite/index.js +5 -1
- package/build/composite/index.js.map +1 -1
- package/build/composite/item.js +16 -1
- package/build/composite/item.js.map +1 -1
- package/build/composite/row.js +7 -1
- package/build/composite/row.js.map +1 -1
- package/build/composite/typeahead.js +8 -2
- package/build/composite/typeahead.js.map +1 -1
- package/build/date-time/date/index.js +4 -2
- package/build/date-time/date/index.js.map +1 -1
- package/build/index.js +36 -5
- package/build/index.js.map +1 -1
- package/build/navigator/index.js +128 -32
- package/build/navigator/index.js.map +1 -1
- package/build/navigator/legacy.js +179 -0
- package/build/navigator/legacy.js.map +1 -0
- package/build/navigator/{navigator-provider → navigator}/component.js +5 -40
- package/build/navigator/navigator/component.js.map +1 -0
- package/build/navigator/navigator-back-button/component.js +2 -38
- package/build/navigator/navigator-back-button/component.js.map +1 -1
- package/build/navigator/navigator-back-button/hook.js +1 -1
- package/build/navigator/navigator-back-button/hook.js.map +1 -1
- package/build/navigator/navigator-button/component.js +2 -37
- package/build/navigator/navigator-button/component.js.map +1 -1
- package/build/navigator/navigator-button/hook.js +1 -1
- package/build/navigator/navigator-button/hook.js.map +1 -1
- package/build/navigator/navigator-screen/component.js +40 -62
- package/build/navigator/navigator-screen/component.js.map +1 -1
- package/build/navigator/navigator-screen/use-screen-animate-presence.js +114 -0
- package/build/navigator/navigator-screen/use-screen-animate-presence.js.map +1 -0
- package/build/navigator/navigator-to-parent-button/component.js +3 -7
- package/build/navigator/navigator-to-parent-button/component.js.map +1 -1
- package/build/navigator/styles.js +78 -35
- package/build/navigator/styles.js.map +1 -1
- package/build/navigator/types.js.map +1 -1
- package/build/navigator/use-navigator.js +4 -1
- package/build/navigator/use-navigator.js.map +1 -1
- package/build/search-control/index.js +5 -2
- package/build/search-control/index.js.map +1 -1
- package/build/tabs/styles.js +3 -3
- package/build/tabs/styles.js.map +1 -1
- package/build/tabs/tablist.js +61 -28
- package/build/tabs/tablist.js.map +1 -1
- package/build/tabs/use-track-overflow.js +73 -0
- package/build/tabs/use-track-overflow.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control/as-button-group.js +4 -2
- package/build/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js +9 -3
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/component.js +73 -8
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/styles.js +7 -7
- package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/component.js +10 -19
- package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js +8 -9
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build/toggle-group-control/types.js.map +1 -1
- package/build/utils/element-rect.js +22 -13
- package/build/utils/element-rect.js.map +1 -1
- package/build/utils/hooks/use-on-value-update.js +3 -7
- package/build/utils/hooks/use-on-value-update.js.map +1 -1
- package/build-module/autocomplete/index.js +4 -1
- package/build-module/autocomplete/index.js.map +1 -1
- package/build-module/border-box-control/border-box-control/component.js +3 -14
- package/build-module/border-box-control/border-box-control/component.js.map +1 -1
- package/build-module/border-control/border-control/component.js +1 -2
- package/build-module/border-control/border-control/component.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/component.js +2 -14
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
- package/build-module/border-control/styles.js +13 -13
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/border-control/types.js.map +1 -1
- package/build-module/box-control/index.js +4 -4
- package/build-module/box-control/index.js.map +1 -1
- package/build-module/box-control/types.js.map +1 -1
- package/build-module/composite/group-label.js +7 -1
- package/build-module/composite/group-label.js.map +1 -1
- package/build-module/composite/group.js +7 -1
- package/build-module/composite/group.js.map +1 -1
- package/build-module/composite/hover.js +8 -2
- package/build-module/composite/hover.js.map +1 -1
- package/build-module/composite/index.js +5 -1
- package/build-module/composite/index.js.map +1 -1
- package/build-module/composite/item.js +16 -1
- package/build-module/composite/item.js.map +1 -1
- package/build-module/composite/row.js +7 -1
- package/build-module/composite/row.js.map +1 -1
- package/build-module/composite/typeahead.js +8 -2
- package/build-module/composite/typeahead.js.map +1 -1
- package/build-module/date-time/date/index.js +4 -2
- package/build-module/date-time/date/index.js.map +1 -1
- package/build-module/index.js +14 -4
- package/build-module/index.js.map +1 -1
- package/build-module/navigator/index.js +130 -5
- package/build-module/navigator/index.js.map +1 -1
- package/build-module/navigator/legacy.js +167 -0
- package/build-module/navigator/legacy.js.map +1 -0
- package/build-module/navigator/{navigator-provider → navigator}/component.js +4 -39
- package/build-module/navigator/navigator/component.js.map +1 -0
- package/build-module/navigator/navigator-back-button/component.js +1 -37
- package/build-module/navigator/navigator-back-button/component.js.map +1 -1
- package/build-module/navigator/navigator-back-button/hook.js +1 -1
- package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
- package/build-module/navigator/navigator-button/component.js +1 -36
- package/build-module/navigator/navigator-button/component.js.map +1 -1
- package/build-module/navigator/navigator-button/hook.js +1 -1
- package/build-module/navigator/navigator-button/hook.js.map +1 -1
- package/build-module/navigator/navigator-screen/component.js +39 -61
- package/build-module/navigator/navigator-screen/component.js.map +1 -1
- package/build-module/navigator/navigator-screen/use-screen-animate-presence.js +106 -0
- package/build-module/navigator/navigator-screen/use-screen-animate-presence.js.map +1 -0
- package/build-module/navigator/navigator-to-parent-button/component.js +2 -6
- package/build-module/navigator/navigator-to-parent-button/component.js.map +1 -1
- package/build-module/navigator/styles.js +77 -33
- package/build-module/navigator/styles.js.map +1 -1
- package/build-module/navigator/types.js.map +1 -1
- package/build-module/navigator/use-navigator.js +4 -1
- package/build-module/navigator/use-navigator.js.map +1 -1
- package/build-module/search-control/index.js +5 -2
- package/build-module/search-control/index.js.map +1 -1
- package/build-module/tabs/styles.js +3 -3
- package/build-module/tabs/styles.js.map +1 -1
- package/build-module/tabs/tablist.js +62 -29
- package/build-module/tabs/tablist.js.map +1 -1
- package/build-module/tabs/use-track-overflow.js +67 -0
- package/build-module/tabs/use-track-overflow.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control/as-button-group.js +4 -2
- package/build-module/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +9 -3
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js +76 -10
- package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/styles.js +7 -7
- package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +12 -22
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +7 -8
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build-module/toggle-group-control/types.js.map +1 -1
- package/build-module/utils/element-rect.js +22 -12
- package/build-module/utils/element-rect.js.map +1 -1
- package/build-module/utils/hooks/use-on-value-update.js +3 -6
- package/build-module/utils/hooks/use-on-value-update.js.map +1 -1
- package/build-style/style-rtl.css +26 -13
- package/build-style/style.css +26 -13
- package/build-types/autocomplete/index.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control/component.d.ts +5 -15
- package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +2 -1
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
- package/build-types/border-box-control/stories/index.story.d.ts +3 -2
- package/build-types/border-box-control/stories/index.story.d.ts.map +1 -1
- package/build-types/border-control/border-control/component.d.ts +3 -2
- package/build-types/border-control/border-control/component.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts +2 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
- package/build-types/border-control/border-control-style-picker/component.d.ts.map +1 -1
- package/build-types/border-control/stories/index.story.d.ts +15 -30
- package/build-types/border-control/stories/index.story.d.ts.map +1 -1
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/border-control/types.d.ts +12 -7
- package/build-types/border-control/types.d.ts.map +1 -1
- package/build-types/box-control/index.d.ts +4 -4
- package/build-types/box-control/stories/index.story.d.ts.map +1 -1
- package/build-types/box-control/types.d.ts +3 -3
- package/build-types/composite/group-label.d.ts.map +1 -1
- package/build-types/composite/index.d.ts.map +1 -1
- package/build-types/composite/item.d.ts.map +1 -1
- package/build-types/composite/stories/index.story.d.ts +22 -0
- package/build-types/composite/stories/index.story.d.ts.map +1 -1
- package/build-types/composite/test/index.d.ts +2 -0
- package/build-types/composite/test/index.d.ts.map +1 -0
- package/build-types/date-time/date/index.d.ts.map +1 -1
- package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
- package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
- package/build-types/index.d.ts +23 -4
- package/build-types/index.d.ts.map +1 -1
- package/build-types/navigator/index.d.ts +171 -5
- package/build-types/navigator/index.d.ts.map +1 -1
- package/build-types/navigator/legacy.d.ts +226 -0
- package/build-types/navigator/legacy.d.ts.map +1 -0
- package/build-types/navigator/navigator/component.d.ts +3 -0
- package/build-types/navigator/navigator/component.d.ts.map +1 -0
- package/build-types/navigator/navigator-back-button/component.d.ts +0 -35
- package/build-types/navigator/navigator-back-button/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-button/component.d.ts +0 -34
- package/build-types/navigator/navigator-button/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-screen/component.d.ts +0 -35
- package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-screen/use-screen-animate-presence.d.ts +16 -0
- package/build-types/navigator/navigator-screen/use-screen-animate-presence.d.ts.map +1 -0
- package/build-types/navigator/navigator-to-parent-button/component.d.ts +0 -4
- package/build-types/navigator/navigator-to-parent-button/component.d.ts.map +1 -1
- package/build-types/navigator/stories/index.story.d.ts +5 -5
- package/build-types/navigator/stories/index.story.d.ts.map +1 -1
- package/build-types/navigator/styles.d.ts +20 -7
- package/build-types/navigator/styles.d.ts.map +1 -1
- package/build-types/navigator/types.d.ts +19 -1
- package/build-types/navigator/types.d.ts.map +1 -1
- package/build-types/navigator/use-navigator.d.ts +4 -1
- package/build-types/navigator/use-navigator.d.ts.map +1 -1
- package/build-types/select-control/stories/index.story.d.ts +7 -0
- package/build-types/select-control/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/stories/index.story.d.ts +2 -1
- package/build-types/tabs/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/styles.d.ts.map +1 -1
- package/build-types/tabs/tablist.d.ts.map +1 -1
- package/build-types/tabs/use-track-overflow.d.ts +17 -0
- package/build-types/tabs/use-track-overflow.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +0 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/types.d.ts +2 -1
- package/build-types/toggle-group-control/types.d.ts.map +1 -1
- package/build-types/utils/element-rect.d.ts +8 -0
- package/build-types/utils/element-rect.d.ts.map +1 -1
- package/build-types/utils/hooks/use-on-value-update.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/autocomplete/index.tsx +4 -1
- package/src/border-box-control/border-box-control/README.md +22 -26
- package/src/border-box-control/border-box-control/component.tsx +3 -14
- package/src/border-box-control/stories/index.story.tsx +2 -1
- package/src/border-control/border-control/README.md +26 -36
- package/src/border-control/border-control/component.tsx +1 -2
- package/src/border-control/border-control-dropdown/component.tsx +1 -15
- package/src/border-control/stories/index.story.tsx +4 -10
- package/src/border-control/styles.ts +0 -1
- package/src/border-control/test/index.js +2 -15
- package/src/border-control/types.ts +12 -7
- package/src/box-control/README.md +9 -12
- package/src/box-control/index.tsx +4 -4
- package/src/box-control/stories/index.story.tsx +1 -1
- package/src/box-control/types.ts +3 -3
- package/src/composite/group-label.tsx +7 -5
- package/src/composite/group.tsx +7 -7
- package/src/composite/hover.tsx +7 -7
- package/src/composite/index.tsx +6 -1
- package/src/composite/item.tsx +19 -1
- package/src/composite/legacy/test/index.tsx +22 -21
- package/src/composite/row.tsx +7 -7
- package/src/composite/stories/index.story.tsx +42 -0
- package/src/composite/test/index.tsx +123 -0
- package/src/composite/typeahead.tsx +7 -7
- package/src/date-time/date/index.tsx +2 -0
- package/src/dropdown/stories/index.story.tsx +1 -0
- package/src/dropdown/style.scss +10 -13
- package/src/dropdown-menu/stories/index.story.tsx +3 -0
- package/src/index.ts +19 -1
- package/src/menu-group/style.scss +4 -1
- package/src/menu-items-choice/style.scss +2 -0
- package/src/navigator/README.md +176 -0
- package/src/navigator/index.tsx +131 -0
- package/src/navigator/legacy.ts +169 -0
- package/src/navigator/{navigator-provider → navigator}/component.tsx +6 -44
- package/src/navigator/navigator-back-button/component.tsx +1 -37
- package/src/navigator/navigator-back-button/hook.ts +1 -1
- package/src/navigator/navigator-button/component.tsx +1 -36
- package/src/navigator/navigator-button/hook.ts +1 -1
- package/src/navigator/navigator-screen/component.tsx +48 -76
- package/src/navigator/navigator-screen/use-screen-animate-presence.ts +177 -0
- package/src/navigator/navigator-to-parent-button/component.tsx +2 -7
- package/src/navigator/stories/index.story.tsx +55 -54
- package/src/navigator/styles.ts +112 -41
- package/src/navigator/test/index.tsx +47 -47
- package/src/navigator/types.ts +19 -1
- package/src/navigator/use-navigator.ts +4 -1
- package/src/search-control/index.tsx +2 -2
- package/src/select-control/stories/index.story.tsx +14 -1
- package/src/tabs/stories/index.story.tsx +106 -0
- package/src/tabs/styles.ts +54 -20
- package/src/tabs/tablist.tsx +60 -26
- package/src/tabs/use-track-overflow.ts +76 -0
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +208 -44
- package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +18 -10
- package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +21 -9
- package/src/toggle-group-control/toggle-group-control/component.tsx +114 -6
- package/src/toggle-group-control/toggle-group-control/styles.ts +41 -0
- package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +10 -27
- package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +0 -11
- package/src/toggle-group-control/types.ts +3 -1
- package/src/tools-panel/tools-panel/README.md +10 -10
- package/src/utils/element-rect.ts +32 -15
- package/src/utils/hooks/use-on-value-update.ts +3 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/build/navigator/navigator-provider/component.js.map +0 -1
- package/build/utils/hooks/use-event.js +0 -41
- package/build/utils/hooks/use-event.js.map +0 -1
- package/build-module/navigator/navigator-provider/component.js.map +0 -1
- package/build-module/utils/hooks/use-event.js +0 -35
- package/build-module/utils/hooks/use-event.js.map +0 -1
- package/build-types/navigator/navigator-provider/component.d.ts +0 -37
- package/build-types/navigator/navigator-provider/component.d.ts.map +0 -1
- package/build-types/utils/hooks/use-event.d.ts +0 -20
- package/build-types/utils/hooks/use-event.d.ts.map +0 -1
- package/src/navigator/index.ts +0 -6
- package/src/navigator/navigator-back-button/README.md +0 -15
- package/src/navigator/navigator-button/README.md +0 -38
- package/src/navigator/navigator-provider/README.md +0 -94
- package/src/navigator/navigator-screen/README.md +0 -33
- package/src/navigator/navigator-to-parent-button/README.md +0 -17
- package/src/utils/hooks/use-event.ts +0 -38
|
@@ -232,7 +232,7 @@ describe.each( [
|
|
|
232
232
|
<button>After</button>
|
|
233
233
|
</>
|
|
234
234
|
);
|
|
235
|
-
renderAndValidate( <Test /> );
|
|
235
|
+
await renderAndValidate( <Test /> );
|
|
236
236
|
|
|
237
237
|
await press.Tab();
|
|
238
238
|
expect( screen.getByText( 'Before' ) ).toHaveFocus();
|
|
@@ -260,7 +260,7 @@ describe.each( [
|
|
|
260
260
|
</Composite>
|
|
261
261
|
);
|
|
262
262
|
};
|
|
263
|
-
renderAndValidate( <Test /> );
|
|
263
|
+
await renderAndValidate( <Test /> );
|
|
264
264
|
|
|
265
265
|
const { item1, item2, item3 } = getOneDimensionalItems();
|
|
266
266
|
|
|
@@ -289,7 +289,7 @@ describe.each( [
|
|
|
289
289
|
</Composite>
|
|
290
290
|
);
|
|
291
291
|
};
|
|
292
|
-
renderAndValidate( <Test /> );
|
|
292
|
+
await renderAndValidate( <Test /> );
|
|
293
293
|
const { item1, item2, item3 } = getOneDimensionalItems();
|
|
294
294
|
|
|
295
295
|
expect( item2 ).toBeEnabled();
|
|
@@ -310,7 +310,7 @@ describe.each( [
|
|
|
310
310
|
} ) }
|
|
311
311
|
/>
|
|
312
312
|
);
|
|
313
|
-
renderAndValidate( <Test /> );
|
|
313
|
+
await renderAndValidate( <Test /> );
|
|
314
314
|
const { item1, item2, item3 } = getOneDimensionalItems();
|
|
315
315
|
|
|
316
316
|
expect( item1.id ).toMatch( 'test-id-1' );
|
|
@@ -327,7 +327,7 @@ describe.each( [
|
|
|
327
327
|
} ) }
|
|
328
328
|
/>
|
|
329
329
|
);
|
|
330
|
-
renderAndValidate( <Test /> );
|
|
330
|
+
await renderAndValidate( <Test /> );
|
|
331
331
|
const { item2 } = getOneDimensionalItems();
|
|
332
332
|
|
|
333
333
|
await press.Tab();
|
|
@@ -341,37 +341,37 @@ describe.each( [
|
|
|
341
341
|
] )( '%s', ( _when, rtl ) => {
|
|
342
342
|
const { previous, next, first, last } = getKeys( rtl );
|
|
343
343
|
|
|
344
|
-
function useOneDimensionalTest( initialState?: InitialState ) {
|
|
344
|
+
async function useOneDimensionalTest( initialState?: InitialState ) {
|
|
345
345
|
const Test = () => (
|
|
346
346
|
<OneDimensionalTest
|
|
347
347
|
state={ useCompositeState( { rtl, ...initialState } ) }
|
|
348
348
|
/>
|
|
349
349
|
);
|
|
350
|
-
renderAndValidate( <Test /> );
|
|
350
|
+
await renderAndValidate( <Test /> );
|
|
351
351
|
return getOneDimensionalItems();
|
|
352
352
|
}
|
|
353
353
|
|
|
354
|
-
function useTwoDimensionalTest( initialState?: InitialState ) {
|
|
354
|
+
async function useTwoDimensionalTest( initialState?: InitialState ) {
|
|
355
355
|
const Test = () => (
|
|
356
356
|
<TwoDimensionalTest
|
|
357
357
|
state={ useCompositeState( { rtl, ...initialState } ) }
|
|
358
358
|
/>
|
|
359
359
|
);
|
|
360
|
-
renderAndValidate( <Test /> );
|
|
360
|
+
await renderAndValidate( <Test /> );
|
|
361
361
|
return getTwoDimensionalItems();
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
-
function useShiftTest( shift: boolean ) {
|
|
364
|
+
async function useShiftTest( shift: boolean ) {
|
|
365
365
|
const Test = () => (
|
|
366
366
|
<ShiftTest state={ useCompositeState( { rtl, shift } ) } />
|
|
367
367
|
);
|
|
368
|
-
renderAndValidate( <Test /> );
|
|
368
|
+
await renderAndValidate( <Test /> );
|
|
369
369
|
return getShiftTestItems();
|
|
370
370
|
}
|
|
371
371
|
|
|
372
372
|
describe( 'In one dimension', () => {
|
|
373
373
|
test( 'All directions work with no orientation', async () => {
|
|
374
|
-
const { item1, item2, item3 } = useOneDimensionalTest();
|
|
374
|
+
const { item1, item2, item3 } = await useOneDimensionalTest();
|
|
375
375
|
|
|
376
376
|
await press.Tab();
|
|
377
377
|
expect( item1 ).toHaveFocus();
|
|
@@ -406,7 +406,7 @@ describe.each( [
|
|
|
406
406
|
} );
|
|
407
407
|
|
|
408
408
|
test( 'Only left/right work with horizontal orientation', async () => {
|
|
409
|
-
const { item1, item2, item3 } = useOneDimensionalTest( {
|
|
409
|
+
const { item1, item2, item3 } = await useOneDimensionalTest( {
|
|
410
410
|
orientation: 'horizontal',
|
|
411
411
|
} );
|
|
412
412
|
|
|
@@ -435,7 +435,7 @@ describe.each( [
|
|
|
435
435
|
} );
|
|
436
436
|
|
|
437
437
|
test( 'Only up/down work with vertical orientation', async () => {
|
|
438
|
-
const { item1, item2, item3 } = useOneDimensionalTest( {
|
|
438
|
+
const { item1, item2, item3 } = await useOneDimensionalTest( {
|
|
439
439
|
orientation: 'vertical',
|
|
440
440
|
} );
|
|
441
441
|
|
|
@@ -464,7 +464,7 @@ describe.each( [
|
|
|
464
464
|
} );
|
|
465
465
|
|
|
466
466
|
test( 'Focus wraps with loop enabled', async () => {
|
|
467
|
-
const { item1, item2, item3 } = useOneDimensionalTest( {
|
|
467
|
+
const { item1, item2, item3 } = await useOneDimensionalTest( {
|
|
468
468
|
loop: true,
|
|
469
469
|
} );
|
|
470
470
|
|
|
@@ -488,7 +488,7 @@ describe.each( [
|
|
|
488
488
|
describe( 'In two dimensions', () => {
|
|
489
489
|
test( 'All directions work as standard', async () => {
|
|
490
490
|
const { itemA1, itemA2, itemA3, itemB1, itemB2, itemC1, itemC3 } =
|
|
491
|
-
useTwoDimensionalTest();
|
|
491
|
+
await useTwoDimensionalTest();
|
|
492
492
|
|
|
493
493
|
await press.Tab();
|
|
494
494
|
expect( itemA1 ).toHaveFocus();
|
|
@@ -524,7 +524,7 @@ describe.each( [
|
|
|
524
524
|
|
|
525
525
|
test( 'Focus wraps around rows/columns with loop enabled', async () => {
|
|
526
526
|
const { itemA1, itemA2, itemA3, itemB1, itemC1, itemC3 } =
|
|
527
|
-
useTwoDimensionalTest( { loop: true } );
|
|
527
|
+
await useTwoDimensionalTest( { loop: true } );
|
|
528
528
|
|
|
529
529
|
await press.Tab();
|
|
530
530
|
expect( itemA1 ).toHaveFocus();
|
|
@@ -548,7 +548,7 @@ describe.each( [
|
|
|
548
548
|
|
|
549
549
|
test( 'Focus moves between rows/columns with wrap enabled', async () => {
|
|
550
550
|
const { itemA1, itemA2, itemA3, itemB1, itemC1, itemC3 } =
|
|
551
|
-
useTwoDimensionalTest( { wrap: true } );
|
|
551
|
+
await useTwoDimensionalTest( { wrap: true } );
|
|
552
552
|
|
|
553
553
|
await press.Tab();
|
|
554
554
|
expect( itemA1 ).toHaveFocus();
|
|
@@ -577,7 +577,7 @@ describe.each( [
|
|
|
577
577
|
} );
|
|
578
578
|
|
|
579
579
|
test( 'Focus wraps around start/end with loop and wrap enabled', async () => {
|
|
580
|
-
const { itemA1, itemC3 } = useTwoDimensionalTest( {
|
|
580
|
+
const { itemA1, itemC3 } = await useTwoDimensionalTest( {
|
|
581
581
|
loop: true,
|
|
582
582
|
wrap: true,
|
|
583
583
|
} );
|
|
@@ -595,7 +595,8 @@ describe.each( [
|
|
|
595
595
|
} );
|
|
596
596
|
|
|
597
597
|
test( 'Focus shifts if vertical neighbour unavailable when shift enabled', async () => {
|
|
598
|
-
const { itemA1, itemB1, itemB2, itemC1 } =
|
|
598
|
+
const { itemA1, itemB1, itemB2, itemC1 } =
|
|
599
|
+
await useShiftTest( true );
|
|
599
600
|
|
|
600
601
|
await press.Tab();
|
|
601
602
|
expect( itemA1 ).toHaveFocus();
|
|
@@ -616,7 +617,7 @@ describe.each( [
|
|
|
616
617
|
} );
|
|
617
618
|
|
|
618
619
|
test( 'Focus does not shift if vertical neighbour unavailable when shift not enabled', async () => {
|
|
619
|
-
const { itemA1, itemB1, itemB2 } = useShiftTest( false );
|
|
620
|
+
const { itemA1, itemB1, itemB2 } = await useShiftTest( false );
|
|
620
621
|
|
|
621
622
|
await press.Tab();
|
|
622
623
|
expect( itemA1 ).toHaveFocus();
|
package/src/composite/row.tsx
CHANGED
|
@@ -20,11 +20,11 @@ export const CompositeRow = forwardRef<
|
|
|
20
20
|
WordPressComponentProps< CompositeRowProps, 'div', false >
|
|
21
21
|
>( function CompositeRow( props, ref ) {
|
|
22
22
|
const context = useCompositeContext();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
25
|
+
// legacy compat layer. The `store` prop is documented, but its type is
|
|
26
|
+
// obfuscated to discourage its use outside of the component's internals.
|
|
27
|
+
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
28
|
+
|
|
29
|
+
return <Ariakit.CompositeRow store={ store } { ...props } ref={ ref } />;
|
|
30
30
|
} );
|
|
@@ -13,6 +13,7 @@ import { useContext, useMemo } from '@wordpress/element';
|
|
|
13
13
|
*/
|
|
14
14
|
import { createSlotFill, Provider as SlotFillProvider } from '../../slot-fill';
|
|
15
15
|
import { Composite } from '..';
|
|
16
|
+
import { Tooltip } from '../../tooltip';
|
|
16
17
|
|
|
17
18
|
const meta: Meta< typeof Composite > = {
|
|
18
19
|
title: 'Components/Composite',
|
|
@@ -353,3 +354,44 @@ const Fill = ( { children } ) => {
|
|
|
353
354
|
},
|
|
354
355
|
},
|
|
355
356
|
};
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Combining the `Tooltip` and `Composite` component has a few caveats. And while there are a few ways to compose these two components, our recommendation is to render `Composite.Item` as a child of `Tooltip`.
|
|
360
|
+
*
|
|
361
|
+
* ```jsx
|
|
362
|
+
* // 🔴 Does not work
|
|
363
|
+
* <Composite.Item
|
|
364
|
+
* render={
|
|
365
|
+
* <Tooltip text="Tooltip">
|
|
366
|
+
* <button>Item</button>
|
|
367
|
+
* </Tooltip>
|
|
368
|
+
* }
|
|
369
|
+
* />
|
|
370
|
+
*
|
|
371
|
+
* // 🟢 Good
|
|
372
|
+
* <Tooltip text="Tooltip one">
|
|
373
|
+
* <Composite.Item>
|
|
374
|
+
* Item one
|
|
375
|
+
* </Composite.Item>
|
|
376
|
+
* </Tooltip>
|
|
377
|
+
* ```
|
|
378
|
+
*/
|
|
379
|
+
export const WithTooltips: StoryObj< typeof Composite > = {
|
|
380
|
+
...Default,
|
|
381
|
+
args: {
|
|
382
|
+
...Default.args,
|
|
383
|
+
children: (
|
|
384
|
+
<>
|
|
385
|
+
<Tooltip text="Tooltip one">
|
|
386
|
+
<Composite.Item>Item one</Composite.Item>
|
|
387
|
+
</Tooltip>
|
|
388
|
+
<Tooltip text="Tooltip two">
|
|
389
|
+
<Composite.Item>Item two</Composite.Item>
|
|
390
|
+
</Tooltip>
|
|
391
|
+
<Tooltip text="Tooltip three">
|
|
392
|
+
<Composite.Item>Item three</Composite.Item>
|
|
393
|
+
</Tooltip>
|
|
394
|
+
</>
|
|
395
|
+
),
|
|
396
|
+
},
|
|
397
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { queryByAttribute, render, screen } from '@testing-library/react';
|
|
5
|
+
import { click, press, waitFor } from '@ariakit/test';
|
|
6
|
+
import type { ComponentProps } from 'react';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* WordPress dependencies
|
|
10
|
+
*/
|
|
11
|
+
import { useState } from '@wordpress/element';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
import { Composite } from '..';
|
|
17
|
+
|
|
18
|
+
// This is necessary because of how Ariakit calculates page up and
|
|
19
|
+
// page down. Without this, nothing has a height, and so paging up
|
|
20
|
+
// and down doesn't behave as expected in tests.
|
|
21
|
+
|
|
22
|
+
let clientHeightSpy: jest.SpiedGetter<
|
|
23
|
+
typeof HTMLElement.prototype.clientHeight
|
|
24
|
+
>;
|
|
25
|
+
|
|
26
|
+
beforeAll( () => {
|
|
27
|
+
clientHeightSpy = jest
|
|
28
|
+
.spyOn( HTMLElement.prototype, 'clientHeight', 'get' )
|
|
29
|
+
.mockImplementation( function getClientHeight( this: HTMLElement ) {
|
|
30
|
+
if ( this.tagName === 'BODY' ) {
|
|
31
|
+
return window.outerHeight;
|
|
32
|
+
}
|
|
33
|
+
return 50;
|
|
34
|
+
} );
|
|
35
|
+
} );
|
|
36
|
+
|
|
37
|
+
afterAll( () => {
|
|
38
|
+
clientHeightSpy?.mockRestore();
|
|
39
|
+
} );
|
|
40
|
+
|
|
41
|
+
async function renderAndValidate( ...args: Parameters< typeof render > ) {
|
|
42
|
+
const view = render( ...args );
|
|
43
|
+
await waitFor( () => {
|
|
44
|
+
const activeButton = queryByAttribute(
|
|
45
|
+
'data-active-item',
|
|
46
|
+
view.baseElement,
|
|
47
|
+
'true'
|
|
48
|
+
);
|
|
49
|
+
expect( activeButton ).not.toBeNull();
|
|
50
|
+
} );
|
|
51
|
+
return view;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function RemoveItemTest( props: ComponentProps< typeof Composite > ) {
|
|
55
|
+
const [ showThirdItem, setShowThirdItem ] = useState( true );
|
|
56
|
+
return (
|
|
57
|
+
<>
|
|
58
|
+
<button>Focus trap before composite</button>
|
|
59
|
+
<Composite { ...props }>
|
|
60
|
+
<Composite.Item>Item 1</Composite.Item>
|
|
61
|
+
<Composite.Item>Item 2</Composite.Item>
|
|
62
|
+
{ showThirdItem && <Composite.Item>Item 3</Composite.Item> }
|
|
63
|
+
</Composite>
|
|
64
|
+
<button onClick={ () => setShowThirdItem( ( value ) => ! value ) }>
|
|
65
|
+
Toggle third item
|
|
66
|
+
</button>
|
|
67
|
+
</>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
describe( 'Composite', () => {
|
|
72
|
+
it( 'should remain focusable even when there are no elements in the DOM associated with the currently active ID', async () => {
|
|
73
|
+
await renderAndValidate( <RemoveItemTest /> );
|
|
74
|
+
|
|
75
|
+
const toggleButton = screen.getByRole( 'button', {
|
|
76
|
+
name: 'Toggle third item',
|
|
77
|
+
} );
|
|
78
|
+
|
|
79
|
+
await press.Tab();
|
|
80
|
+
await press.Tab();
|
|
81
|
+
|
|
82
|
+
expect(
|
|
83
|
+
screen.getByRole( 'button', { name: 'Item 1' } )
|
|
84
|
+
).toHaveFocus();
|
|
85
|
+
|
|
86
|
+
await press.ArrowRight();
|
|
87
|
+
await press.ArrowRight();
|
|
88
|
+
|
|
89
|
+
expect(
|
|
90
|
+
screen.getByRole( 'button', { name: 'Item 3' } )
|
|
91
|
+
).toHaveFocus();
|
|
92
|
+
|
|
93
|
+
await click( toggleButton );
|
|
94
|
+
|
|
95
|
+
expect(
|
|
96
|
+
screen.queryByRole( 'button', { name: 'Item 3' } )
|
|
97
|
+
).not.toBeInTheDocument();
|
|
98
|
+
|
|
99
|
+
await press.ShiftTab();
|
|
100
|
+
|
|
101
|
+
expect(
|
|
102
|
+
screen.getByRole( 'button', { name: 'Item 2' } )
|
|
103
|
+
).toHaveFocus();
|
|
104
|
+
|
|
105
|
+
await click( toggleButton );
|
|
106
|
+
|
|
107
|
+
expect(
|
|
108
|
+
screen.getByRole( 'button', { name: 'Item 3' } )
|
|
109
|
+
).toBeVisible();
|
|
110
|
+
|
|
111
|
+
await press.ShiftTab();
|
|
112
|
+
|
|
113
|
+
expect(
|
|
114
|
+
screen.getByRole( 'button', { name: 'Item 2' } )
|
|
115
|
+
).toHaveFocus();
|
|
116
|
+
|
|
117
|
+
await press.ArrowRight();
|
|
118
|
+
|
|
119
|
+
expect(
|
|
120
|
+
screen.getByRole( 'button', { name: 'Item 3' } )
|
|
121
|
+
).toHaveFocus();
|
|
122
|
+
} );
|
|
123
|
+
} );
|
|
@@ -20,11 +20,11 @@ export const CompositeTypeahead = forwardRef<
|
|
|
20
20
|
WordPressComponentProps< CompositeTypeaheadProps, 'div', false >
|
|
21
21
|
>( function CompositeTypeahead( props, ref ) {
|
|
22
22
|
const context = useCompositeContext();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
25
|
+
// legacy compat layer. The `store` prop is documented, but its type is
|
|
26
|
+
// obfuscated to discourage its use outside of the component's internals.
|
|
27
|
+
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
28
|
+
|
|
29
|
+
return <Ariakit.CompositeRow store={ store } { ...props } ref={ ref } />;
|
|
30
30
|
} );
|
|
@@ -125,6 +125,7 @@ export function DatePicker( {
|
|
|
125
125
|
)
|
|
126
126
|
);
|
|
127
127
|
} }
|
|
128
|
+
size="compact"
|
|
128
129
|
/>
|
|
129
130
|
<NavigatorHeading level={ 3 }>
|
|
130
131
|
<strong>
|
|
@@ -150,6 +151,7 @@ export function DatePicker( {
|
|
|
150
151
|
)
|
|
151
152
|
);
|
|
152
153
|
} }
|
|
154
|
+
size="compact"
|
|
153
155
|
/>
|
|
154
156
|
</Navigator>
|
|
155
157
|
<Calendar
|
package/src/dropdown/style.scss
CHANGED
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
.components-dropdown__content {
|
|
6
6
|
.components-popover__content {
|
|
7
7
|
padding: $grid-unit-10;
|
|
8
|
+
|
|
9
|
+
&:has(.components-menu-group) {
|
|
10
|
+
padding: 0;
|
|
11
|
+
|
|
12
|
+
.components-dropdown-menu__menu > .components-menu-item__button,
|
|
13
|
+
> .components-menu-item__button {
|
|
14
|
+
margin: $grid-unit-10;
|
|
15
|
+
width: auto;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
8
18
|
}
|
|
9
19
|
|
|
10
20
|
[role="menuitem"] {
|
|
@@ -13,22 +23,9 @@
|
|
|
13
23
|
|
|
14
24
|
.components-menu-group {
|
|
15
25
|
padding: $grid-unit-10;
|
|
16
|
-
margin-top: 0;
|
|
17
|
-
margin-bottom: 0;
|
|
18
|
-
margin-left: -$grid-unit-10;
|
|
19
|
-
margin-right: -$grid-unit-10;
|
|
20
|
-
|
|
21
|
-
&:first-child {
|
|
22
|
-
margin-top: -$grid-unit-10;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
&:last-child {
|
|
26
|
-
margin-bottom: -$grid-unit-10;
|
|
27
|
-
}
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
.components-menu-group + .components-menu-group {
|
|
31
|
-
margin-top: 0;
|
|
32
29
|
border-top: $border-width solid $gray-400;
|
|
33
30
|
padding: $grid-unit-10;
|
|
34
31
|
}
|
|
@@ -96,6 +96,9 @@ export const WithChildren: StoryObj< typeof DropdownMenu > = {
|
|
|
96
96
|
icon: more,
|
|
97
97
|
children: ( { onClose } ) => (
|
|
98
98
|
<>
|
|
99
|
+
<MenuItem icon={ arrowUp } onClick={ onClose }>
|
|
100
|
+
Standalone Item
|
|
101
|
+
</MenuItem>
|
|
99
102
|
<MenuGroup>
|
|
100
103
|
<MenuItem icon={ arrowUp } onClick={ onClose }>
|
|
101
104
|
Move Up
|
package/src/index.ts
CHANGED
|
@@ -33,14 +33,22 @@ export {
|
|
|
33
33
|
} from './autocomplete';
|
|
34
34
|
export { default as BaseControl, useBaseControlProps } from './base-control';
|
|
35
35
|
export {
|
|
36
|
+
/** @deprecated Import `BorderBoxControl` instead. */
|
|
36
37
|
BorderBoxControl as __experimentalBorderBoxControl,
|
|
38
|
+
BorderBoxControl,
|
|
37
39
|
hasSplitBorders as __experimentalHasSplitBorders,
|
|
38
40
|
isDefinedBorder as __experimentalIsDefinedBorder,
|
|
39
41
|
isEmptyBorder as __experimentalIsEmptyBorder,
|
|
40
42
|
} from './border-box-control';
|
|
41
|
-
export { BorderControl as __experimentalBorderControl } from './border-control';
|
|
42
43
|
export {
|
|
44
|
+
/** @deprecated Import `BorderControl` instead. */
|
|
45
|
+
BorderControl as __experimentalBorderControl,
|
|
46
|
+
BorderControl,
|
|
47
|
+
} from './border-control';
|
|
48
|
+
export {
|
|
49
|
+
/** @deprecated Import `BoxControl` instead. */
|
|
43
50
|
default as __experimentalBoxControl,
|
|
51
|
+
default as BoxControl,
|
|
44
52
|
applyValueToSides as __experimentalApplyValueToSides,
|
|
45
53
|
} from './box-control';
|
|
46
54
|
export { default as Button } from './button';
|
|
@@ -121,11 +129,21 @@ export { default as __experimentalNavigationGroup } from './navigation/group';
|
|
|
121
129
|
export { default as __experimentalNavigationItem } from './navigation/item';
|
|
122
130
|
export { default as __experimentalNavigationMenu } from './navigation/menu';
|
|
123
131
|
export {
|
|
132
|
+
/** @deprecated Import `Navigator` instead. */
|
|
124
133
|
NavigatorProvider as __experimentalNavigatorProvider,
|
|
134
|
+
/** @deprecated Import `Navigator` and use `Navigator.Screen` instead. */
|
|
125
135
|
NavigatorScreen as __experimentalNavigatorScreen,
|
|
136
|
+
/** @deprecated Import `Navigator` and use `Navigator.Button` instead. */
|
|
126
137
|
NavigatorButton as __experimentalNavigatorButton,
|
|
138
|
+
/** @deprecated Import `Navigator` and use `Navigator.BackButton` instead. */
|
|
127
139
|
NavigatorBackButton as __experimentalNavigatorBackButton,
|
|
140
|
+
/** @deprecated Import `Navigator` and use `Navigator.BackButton` instead. */
|
|
128
141
|
NavigatorToParentButton as __experimentalNavigatorToParentButton,
|
|
142
|
+
} from './navigator/legacy';
|
|
143
|
+
export {
|
|
144
|
+
Navigator,
|
|
145
|
+
useNavigator,
|
|
146
|
+
/** @deprecated Import `useNavigator` instead. */
|
|
129
147
|
useNavigator as __experimentalUseNavigator,
|
|
130
148
|
} from './navigator';
|
|
131
149
|
export { default as Notice } from './notice';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
.components-menu-group + .components-menu-group {
|
|
2
|
-
margin-top: $grid-unit-10;
|
|
3
2
|
padding-top: $grid-unit-10;
|
|
4
3
|
border-top: $border-width solid $gray-900;
|
|
5
4
|
|
|
@@ -10,6 +9,10 @@
|
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
11
|
|
|
12
|
+
.components-menu-group:has(> div:empty) {
|
|
13
|
+
display: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
13
16
|
.components-menu-group__label {
|
|
14
17
|
padding: 0 $grid-unit-10;
|
|
15
18
|
margin-top: $grid-unit-05;
|