@wordpress/components 28.4.0 → 28.5.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 +31 -1
- package/build/autocomplete/autocompleter-ui.js +2 -0
- package/build/autocomplete/autocompleter-ui.js.map +1 -1
- package/build/base-control/styles/base-control-styles.js +8 -8
- package/build/base-control/styles/base-control-styles.js.map +1 -1
- package/build/border-control/styles.js +18 -24
- package/build/border-control/styles.js.map +1 -1
- package/build/color-palette/index.js +1 -1
- package/build/color-palette/index.js.map +1 -1
- package/build/custom-select-control/index.js +37 -14
- package/build/custom-select-control/index.js.map +1 -1
- package/build/custom-select-control/types.js.map +1 -1
- package/build/custom-select-control-v2/styles.js +9 -9
- package/build/custom-select-control-v2/styles.js.map +1 -1
- package/build/date-time/index.js +0 -7
- package/build/date-time/index.js.map +1 -1
- package/build/date-time/time/index.js +66 -38
- package/build/date-time/time/index.js.map +1 -1
- package/build/date-time/time/styles.js +11 -11
- package/build/date-time/time/styles.js.map +1 -1
- package/build/date-time/{time-input → time/time-input}/index.js +7 -7
- package/build/date-time/time/time-input/index.js.map +1 -0
- package/build/dropdown-menu-v2/styles.js +14 -14
- package/build/dropdown-menu-v2/styles.js.map +1 -1
- package/build/form-toggle/index.js +24 -24
- package/build/form-toggle/index.js.map +1 -1
- package/build/guide/index.js +2 -0
- package/build/guide/index.js.map +1 -1
- package/build/heading/types.js.map +1 -1
- package/build/modal/index.js +18 -11
- package/build/modal/index.js.map +1 -1
- package/build/query-controls/index.js +1 -1
- package/build/query-controls/index.js.map +1 -1
- package/build/radio-control/index.js +35 -8
- package/build/radio-control/index.js.map +1 -1
- package/build/radio-control/types.js.map +1 -1
- package/build/select-control/index.js +20 -8
- package/build/select-control/index.js.map +1 -1
- package/build/select-control/types.js.map +1 -1
- package/build/text-control/index.js +1 -0
- package/build/text-control/index.js.map +1 -1
- package/build/toggle-control/index.js +27 -25
- package/build/toggle-control/index.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/component.js +6 -1
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option/component.js +6 -1
- package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-icon/component.js +14 -14
- package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
- package/build/tooltip/index.js +12 -1
- package/build/tooltip/index.js.map +1 -1
- package/build/tree-select/index.js +1 -2
- package/build/tree-select/index.js.map +1 -1
- package/build/utils/config-values.js +6 -0
- package/build/utils/config-values.js.map +1 -1
- package/build-module/autocomplete/autocompleter-ui.js +2 -0
- package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
- package/build-module/base-control/styles/base-control-styles.js +8 -8
- package/build-module/base-control/styles/base-control-styles.js.map +1 -1
- package/build-module/border-control/styles.js +13 -23
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/color-palette/index.js +1 -1
- package/build-module/color-palette/index.js.map +1 -1
- package/build-module/custom-select-control/index.js +38 -14
- package/build-module/custom-select-control/index.js.map +1 -1
- package/build-module/custom-select-control/types.js.map +1 -1
- package/build-module/custom-select-control-v2/styles.js +9 -9
- package/build-module/custom-select-control-v2/styles.js.map +1 -1
- package/build-module/date-time/index.js +1 -2
- package/build-module/date-time/index.js.map +1 -1
- package/build-module/date-time/time/index.js +66 -38
- package/build-module/date-time/time/index.js.map +1 -1
- package/build-module/date-time/time/styles.js +11 -11
- package/build-module/date-time/time/styles.js.map +1 -1
- package/build-module/date-time/{time-input → time/time-input}/index.js +7 -7
- package/build-module/date-time/time/time-input/index.js.map +1 -0
- package/build-module/dropdown-menu-v2/styles.js +14 -14
- package/build-module/dropdown-menu-v2/styles.js.map +1 -1
- package/build-module/form-toggle/index.js +23 -22
- package/build-module/form-toggle/index.js.map +1 -1
- package/build-module/guide/index.js +2 -0
- package/build-module/guide/index.js.map +1 -1
- package/build-module/heading/types.js.map +1 -1
- package/build-module/modal/index.js +17 -11
- package/build-module/modal/index.js.map +1 -1
- package/build-module/query-controls/index.js +1 -1
- package/build-module/query-controls/index.js.map +1 -1
- package/build-module/radio-control/index.js +36 -10
- package/build-module/radio-control/index.js.map +1 -1
- package/build-module/radio-control/types.js.map +1 -1
- package/build-module/select-control/index.js +20 -8
- package/build-module/select-control/index.js.map +1 -1
- package/build-module/select-control/types.js.map +1 -1
- package/build-module/text-control/index.js +1 -0
- package/build-module/text-control/index.js.map +1 -1
- package/build-module/toggle-control/index.js +26 -24
- package/build-module/toggle-control/index.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js +6 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option/component.js +6 -1
- package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +14 -14
- package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
- package/build-module/tooltip/index.js +13 -2
- package/build-module/tooltip/index.js.map +1 -1
- package/build-module/tree-select/index.js +1 -2
- package/build-module/tree-select/index.js.map +1 -1
- package/build-module/utils/config-values.js +6 -0
- package/build-module/utils/config-values.js.map +1 -1
- package/build-style/style-rtl.css +60 -24
- package/build-style/style.css +60 -24
- package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/color-palette/styles.d.ts +2 -2
- package/build-types/color-picker/styles.d.ts +3 -1
- package/build-types/color-picker/styles.d.ts.map +1 -1
- package/build-types/custom-select-control/index.d.ts +2 -2
- package/build-types/custom-select-control/index.d.ts.map +1 -1
- package/build-types/custom-select-control/stories/index.story.d.ts +3 -3
- package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
- package/build-types/custom-select-control/types.d.ts +7 -7
- package/build-types/custom-select-control/types.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/styles.d.ts +16 -28
- package/build-types/custom-select-control-v2/styles.d.ts.map +1 -1
- package/build-types/date-time/date/styles.d.ts +2 -2
- package/build-types/date-time/index.d.ts +1 -2
- package/build-types/date-time/index.d.ts.map +1 -1
- package/build-types/date-time/stories/time.story.d.ts +5 -0
- package/build-types/date-time/stories/time.story.d.ts.map +1 -1
- package/build-types/date-time/time/index.d.ts +3 -0
- package/build-types/date-time/time/index.d.ts.map +1 -1
- package/build-types/date-time/time/styles.d.ts.map +1 -1
- package/build-types/date-time/{time-input → time/time-input}/index.d.ts +1 -1
- package/build-types/date-time/time/time-input/index.d.ts.map +1 -0
- package/build-types/date-time/time/time-input/test/index.d.ts.map +1 -0
- package/build-types/dropdown-menu-v2/styles.d.ts +24 -42
- package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
- package/build-types/form-toggle/index.d.ts +2 -5
- package/build-types/form-toggle/index.d.ts.map +1 -1
- package/build-types/guide/index.d.ts.map +1 -1
- package/build-types/heading/component.d.ts +1 -1
- package/build-types/heading/types.d.ts +1 -1
- package/build-types/heading/types.d.ts.map +1 -1
- package/build-types/modal/index.d.ts.map +1 -1
- package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
- package/build-types/palette-edit/styles.d.ts +2 -2
- package/build-types/query-controls/index.d.ts.map +1 -1
- package/build-types/radio-control/index.d.ts.map +1 -1
- package/build-types/radio-control/stories/index.story.d.ts +1 -0
- package/build-types/radio-control/stories/index.story.d.ts.map +1 -1
- package/build-types/radio-control/test/index.d.ts +2 -0
- package/build-types/radio-control/test/index.d.ts.map +1 -0
- package/build-types/radio-control/types.d.ts +4 -0
- package/build-types/radio-control/types.d.ts.map +1 -1
- package/build-types/select-control/index.d.ts +4 -1
- package/build-types/select-control/index.d.ts.map +1 -1
- package/build-types/select-control/stories/index.story.d.ts +9 -3
- package/build-types/select-control/stories/index.story.d.ts.map +1 -1
- package/build-types/select-control/types.d.ts +27 -27
- package/build-types/select-control/types.d.ts.map +1 -1
- package/build-types/tabs/styles.d.ts +8 -14
- package/build-types/tabs/styles.d.ts.map +1 -1
- package/build-types/text-control/index.d.ts +1 -0
- package/build-types/text-control/index.d.ts.map +1 -1
- package/build-types/toggle-control/index.d.ts +3 -9
- package/build-types/toggle-control/index.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts +6 -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-option/component.d.ts +6 -1
- package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +14 -14
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/build-types/tooltip/test/utils/index.d.ts +1 -5
- package/build-types/tooltip/test/utils/index.d.ts.map +1 -1
- package/build-types/tree-select/index.d.ts +1 -1
- package/build-types/tree-select/index.d.ts.map +1 -1
- package/build-types/utils/config-values.d.ts +6 -0
- package/package.json +20 -20
- package/src/alignment-matrix-control/test/index.tsx +1 -3
- package/src/autocomplete/autocompleter-ui.tsx +2 -0
- package/src/autocomplete/style.scss +0 -6
- package/src/base-control/styles/base-control-styles.ts +1 -1
- package/src/border-control/styles.ts +0 -5
- package/src/button/stories/e2e/index.story.tsx +103 -21
- package/src/button/style.scss +49 -21
- package/src/button/test/index.tsx +18 -40
- package/src/circular-option-picker/test/index.tsx +1 -4
- package/src/color-palette/index.tsx +22 -20
- package/src/composite/legacy/test/index.tsx +2 -18
- package/src/custom-select-control/index.tsx +55 -25
- package/src/custom-select-control/test/index.tsx +47 -30
- package/src/custom-select-control/types.ts +7 -7
- package/src/custom-select-control-v2/styles.ts +7 -6
- package/src/custom-select-control-v2/test/index.tsx +15 -19
- package/src/date-time/index.ts +1 -2
- package/src/date-time/stories/time.story.tsx +17 -0
- package/src/date-time/time/index.tsx +46 -16
- package/src/date-time/time/styles.ts +1 -0
- package/src/date-time/{time-input → time/time-input}/index.tsx +9 -9
- package/src/dropdown-menu-v2/styles.ts +18 -17
- package/src/dropdown-menu-v2/test/index.tsx +1 -4
- package/src/font-size-picker/test/index.tsx +50 -43
- package/src/form-toggle/index.tsx +23 -21
- package/src/guide/index.tsx +2 -0
- package/src/heading/types.ts +1 -4
- package/src/modal/index.tsx +21 -20
- package/src/placeholder/style.scss +11 -2
- package/src/query-controls/index.tsx +5 -1
- package/src/radio-control/index.tsx +48 -7
- package/src/radio-control/stories/index.story.tsx +23 -0
- package/src/radio-control/style.scss +26 -2
- package/src/radio-control/test/index.tsx +274 -0
- package/src/radio-control/types.ts +4 -0
- package/src/select-control/README.md +8 -1
- package/src/select-control/index.tsx +33 -22
- package/src/select-control/test/select-control.tsx +148 -4
- package/src/select-control/types.ts +70 -65
- package/src/tab-panel/test/index.tsx +1 -8
- package/src/tabs/test/index.tsx +68 -84
- package/src/text-control/README.md +1 -0
- package/src/text-control/index.tsx +1 -0
- package/src/text-control/style.scss +5 -0
- package/src/toggle-control/README.md +9 -0
- package/src/toggle-control/index.tsx +25 -22
- package/src/toggle-control/style.scss +2 -1
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +6 -6
- package/src/toggle-group-control/test/index.tsx +0 -6
- package/src/toggle-group-control/toggle-group-control/README.md +13 -1
- package/src/toggle-group-control/toggle-group-control/component.tsx +6 -1
- package/src/toggle-group-control/toggle-group-control-option/README.md +6 -1
- package/src/toggle-group-control/toggle-group-control-option/component.tsx +6 -1
- package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
- package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +14 -14
- package/src/tooltip/index.tsx +15 -2
- package/src/tooltip/test/index.tsx +0 -5
- package/src/tooltip/test/utils/index.tsx +5 -5
- package/src/tree-select/index.tsx +1 -2
- package/src/utils/config-values.js +6 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/date-time/time-input/index.js.map +0 -1
- package/build-module/date-time/time-input/index.js.map +0 -1
- package/build-types/date-time/stories/time-input.story.d.ts +0 -12
- package/build-types/date-time/stories/time-input.story.d.ts.map +0 -1
- package/build-types/date-time/time-input/index.d.ts.map +0 -1
- package/build-types/date-time/time-input/test/index.d.ts.map +0 -1
- package/src/date-time/stories/time-input.story.tsx +0 -36
- /package/build-types/date-time/{time-input → time/time-input}/test/index.d.ts +0 -0
- /package/src/date-time/{time-input → time/time-input}/test/index.tsx +0 -0
package/src/tabs/test/index.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { press, click
|
|
4
|
+
import { screen, waitFor } from '@testing-library/react';
|
|
5
|
+
import { press, click } from '@ariakit/test';
|
|
6
|
+
import { render } from '@ariakit/test/react';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* WordPress dependencies
|
|
@@ -159,7 +160,7 @@ describe( 'Tabs', () => {
|
|
|
159
160
|
|
|
160
161
|
describe( 'Accessibility and semantics', () => {
|
|
161
162
|
it( 'should use the correct aria attributes', async () => {
|
|
162
|
-
render( <UncontrolledTabs tabs={ TABS } /> );
|
|
163
|
+
await render( <UncontrolledTabs tabs={ TABS } /> );
|
|
163
164
|
|
|
164
165
|
const tabList = screen.getByRole( 'tablist' );
|
|
165
166
|
const allTabs = screen.getAllByRole( 'tab' );
|
|
@@ -188,20 +189,18 @@ describe( 'Tabs', () => {
|
|
|
188
189
|
} );
|
|
189
190
|
describe( 'Focus Behavior', () => {
|
|
190
191
|
it( 'should focus on the related TabPanel when pressing the Tab key', async () => {
|
|
191
|
-
render( <UncontrolledTabs tabs={ TABS } /> );
|
|
192
|
+
await render( <UncontrolledTabs tabs={ TABS } /> );
|
|
192
193
|
|
|
193
194
|
const selectedTabPanel = await screen.findByRole( 'tabpanel' );
|
|
194
195
|
|
|
195
196
|
// Tab should initially focus the first tab in the tablist, which
|
|
196
197
|
// is Alpha.
|
|
197
|
-
await sleep();
|
|
198
198
|
await press.Tab();
|
|
199
199
|
expect(
|
|
200
200
|
await screen.findByRole( 'tab', { name: 'Alpha' } )
|
|
201
201
|
).toHaveFocus();
|
|
202
202
|
|
|
203
203
|
// By default the tabpanel should receive focus
|
|
204
|
-
await sleep();
|
|
205
204
|
await press.Tab();
|
|
206
205
|
expect( selectedTabPanel ).toHaveFocus();
|
|
207
206
|
} );
|
|
@@ -221,7 +220,7 @@ describe( 'Tabs', () => {
|
|
|
221
220
|
: tabObj
|
|
222
221
|
);
|
|
223
222
|
|
|
224
|
-
render(
|
|
223
|
+
await render(
|
|
225
224
|
<UncontrolledTabs tabs={ TABS_WITH_ALPHA_FOCUSABLE_FALSE } />
|
|
226
225
|
);
|
|
227
226
|
|
|
@@ -231,14 +230,12 @@ describe( 'Tabs', () => {
|
|
|
231
230
|
|
|
232
231
|
// Tab should initially focus the first tab in the tablist, which
|
|
233
232
|
// is Alpha.
|
|
234
|
-
await sleep();
|
|
235
233
|
await press.Tab();
|
|
236
234
|
expect(
|
|
237
235
|
await screen.findByRole( 'tab', { name: 'Alpha' } )
|
|
238
236
|
).toHaveFocus();
|
|
239
237
|
// Because the alpha tabpanel is set to `focusable: false`, pressing
|
|
240
238
|
// the Tab key should focus the button, not the tabpanel
|
|
241
|
-
await sleep();
|
|
242
239
|
await press.Tab();
|
|
243
240
|
expect( alphaButton ).toHaveFocus();
|
|
244
241
|
} );
|
|
@@ -256,14 +253,13 @@ describe( 'Tabs', () => {
|
|
|
256
253
|
: tabObj
|
|
257
254
|
);
|
|
258
255
|
|
|
259
|
-
render(
|
|
256
|
+
await render(
|
|
260
257
|
<ControlledTabs
|
|
261
258
|
tabs={ TABS_WITH_ALPHA_DISABLED }
|
|
262
259
|
selectedTabId={ null }
|
|
263
260
|
/>
|
|
264
261
|
);
|
|
265
262
|
|
|
266
|
-
await sleep();
|
|
267
263
|
await press.Tab();
|
|
268
264
|
expect(
|
|
269
265
|
await screen.findByRole( 'tab', { name: 'Beta' } )
|
|
@@ -284,7 +280,7 @@ describe( 'Tabs', () => {
|
|
|
284
280
|
|
|
285
281
|
describe( 'Tab Attributes', () => {
|
|
286
282
|
it( "should apply the tab's `className` to the tab button", async () => {
|
|
287
|
-
render( <UncontrolledTabs tabs={ TABS } /> );
|
|
283
|
+
await render( <UncontrolledTabs tabs={ TABS } /> );
|
|
288
284
|
|
|
289
285
|
expect(
|
|
290
286
|
await screen.findByRole( 'tab', { name: 'Alpha' } )
|
|
@@ -302,7 +298,7 @@ describe( 'Tabs', () => {
|
|
|
302
298
|
it( 'defaults to automatic tab activation (pointer clicks)', async () => {
|
|
303
299
|
const mockOnSelect = jest.fn();
|
|
304
300
|
|
|
305
|
-
render(
|
|
301
|
+
await render(
|
|
306
302
|
<UncontrolledTabs tabs={ TABS } onSelect={ mockOnSelect } />
|
|
307
303
|
);
|
|
308
304
|
|
|
@@ -335,7 +331,7 @@ describe( 'Tabs', () => {
|
|
|
335
331
|
it( 'defaults to automatic tab activation (arrow keys)', async () => {
|
|
336
332
|
const mockOnSelect = jest.fn();
|
|
337
333
|
|
|
338
|
-
render(
|
|
334
|
+
await render(
|
|
339
335
|
<UncontrolledTabs tabs={ TABS } onSelect={ mockOnSelect } />
|
|
340
336
|
);
|
|
341
337
|
|
|
@@ -347,7 +343,6 @@ describe( 'Tabs', () => {
|
|
|
347
343
|
// Tab to focus the tablist. Make sure alpha is focused.
|
|
348
344
|
expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
|
|
349
345
|
expect( await getSelectedTab() ).not.toHaveFocus();
|
|
350
|
-
await sleep();
|
|
351
346
|
await press.Tab();
|
|
352
347
|
expect( await getSelectedTab() ).toHaveFocus();
|
|
353
348
|
|
|
@@ -371,7 +366,7 @@ describe( 'Tabs', () => {
|
|
|
371
366
|
it( 'wraps around the last/first tab when using arrow keys', async () => {
|
|
372
367
|
const mockOnSelect = jest.fn();
|
|
373
368
|
|
|
374
|
-
render(
|
|
369
|
+
await render(
|
|
375
370
|
<UncontrolledTabs tabs={ TABS } onSelect={ mockOnSelect } />
|
|
376
371
|
);
|
|
377
372
|
|
|
@@ -381,7 +376,6 @@ describe( 'Tabs', () => {
|
|
|
381
376
|
// Tab to focus the tablist. Make sure Alpha is focused.
|
|
382
377
|
expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
|
|
383
378
|
expect( await getSelectedTab() ).not.toHaveFocus();
|
|
384
|
-
await sleep();
|
|
385
379
|
await press.Tab();
|
|
386
380
|
expect( await getSelectedTab() ).toHaveFocus();
|
|
387
381
|
|
|
@@ -405,7 +399,7 @@ describe( 'Tabs', () => {
|
|
|
405
399
|
it( 'should not move tab selection when pressing the up/down arrow keys, unless the orientation is changed to `vertical`', async () => {
|
|
406
400
|
const mockOnSelect = jest.fn();
|
|
407
401
|
|
|
408
|
-
const { rerender } = render(
|
|
402
|
+
const { rerender } = await render(
|
|
409
403
|
<UncontrolledTabs tabs={ TABS } onSelect={ mockOnSelect } />
|
|
410
404
|
);
|
|
411
405
|
|
|
@@ -417,7 +411,6 @@ describe( 'Tabs', () => {
|
|
|
417
411
|
// Tab to focus the tablist. Make sure alpha is focused.
|
|
418
412
|
expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
|
|
419
413
|
expect( await getSelectedTab() ).not.toHaveFocus();
|
|
420
|
-
await sleep();
|
|
421
414
|
await press.Tab();
|
|
422
415
|
expect( await getSelectedTab() ).toHaveFocus();
|
|
423
416
|
|
|
@@ -437,7 +430,7 @@ describe( 'Tabs', () => {
|
|
|
437
430
|
|
|
438
431
|
// Change orientation to `vertical`. When the orientation is vertical,
|
|
439
432
|
// left/right arrow keys are replaced by up/down arrow keys.
|
|
440
|
-
rerender(
|
|
433
|
+
await rerender(
|
|
441
434
|
<UncontrolledTabs
|
|
442
435
|
tabs={ TABS }
|
|
443
436
|
onSelect={ mockOnSelect }
|
|
@@ -502,7 +495,7 @@ describe( 'Tabs', () => {
|
|
|
502
495
|
: tabObj
|
|
503
496
|
);
|
|
504
497
|
|
|
505
|
-
render(
|
|
498
|
+
await render(
|
|
506
499
|
<UncontrolledTabs
|
|
507
500
|
tabs={ TABS_WITH_DELTA_DISABLED }
|
|
508
501
|
onSelect={ mockOnSelect }
|
|
@@ -517,7 +510,6 @@ describe( 'Tabs', () => {
|
|
|
517
510
|
// Tab to focus the tablist. Make sure Alpha is focused.
|
|
518
511
|
expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
|
|
519
512
|
expect( await getSelectedTab() ).not.toHaveFocus();
|
|
520
|
-
await sleep();
|
|
521
513
|
await press.Tab();
|
|
522
514
|
expect( await getSelectedTab() ).toHaveFocus();
|
|
523
515
|
// Confirm onSelect has not been re-called
|
|
@@ -556,11 +548,10 @@ describe( 'Tabs', () => {
|
|
|
556
548
|
} );
|
|
557
549
|
|
|
558
550
|
it( 'should not focus the next tab when the Tab key is pressed', async () => {
|
|
559
|
-
render( <UncontrolledTabs tabs={ TABS } /> );
|
|
551
|
+
await render( <UncontrolledTabs tabs={ TABS } /> );
|
|
560
552
|
|
|
561
553
|
// Tab should initially focus the first tab in the tablist, which
|
|
562
554
|
// is Alpha.
|
|
563
|
-
await sleep();
|
|
564
555
|
await press.Tab();
|
|
565
556
|
expect(
|
|
566
557
|
await screen.findByRole( 'tab', { name: 'Alpha' } )
|
|
@@ -569,7 +560,6 @@ describe( 'Tabs', () => {
|
|
|
569
560
|
// Because all other tabs should have `tabindex=-1`, pressing Tab
|
|
570
561
|
// should NOT move the focus to the next tab, which is Beta.
|
|
571
562
|
// Instead, focus should go to the currently selected tabpanel (alpha).
|
|
572
|
-
await sleep();
|
|
573
563
|
await press.Tab();
|
|
574
564
|
expect(
|
|
575
565
|
await screen.findByRole( 'tabpanel', {
|
|
@@ -581,7 +571,7 @@ describe( 'Tabs', () => {
|
|
|
581
571
|
it( 'switches to manual tab activation when the `selectOnMove` prop is set to `false`', async () => {
|
|
582
572
|
const mockOnSelect = jest.fn();
|
|
583
573
|
|
|
584
|
-
render(
|
|
574
|
+
await render(
|
|
585
575
|
<UncontrolledTabs
|
|
586
576
|
tabs={ TABS }
|
|
587
577
|
onSelect={ mockOnSelect }
|
|
@@ -638,7 +628,7 @@ describe( 'Tabs', () => {
|
|
|
638
628
|
describe( 'Uncontrolled mode', () => {
|
|
639
629
|
describe( 'Without `defaultTabId` prop', () => {
|
|
640
630
|
it( 'should render first tab', async () => {
|
|
641
|
-
render( <UncontrolledTabs tabs={ TABS } /> );
|
|
631
|
+
await render( <UncontrolledTabs tabs={ TABS } /> );
|
|
642
632
|
|
|
643
633
|
expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
|
|
644
634
|
expect(
|
|
@@ -646,12 +636,12 @@ describe( 'Tabs', () => {
|
|
|
646
636
|
).toBeInTheDocument();
|
|
647
637
|
} );
|
|
648
638
|
it( 'should fall back to first enabled tab if the active tab is removed', async () => {
|
|
649
|
-
const { rerender } = render(
|
|
639
|
+
const { rerender } = await render(
|
|
650
640
|
<UncontrolledTabs tabs={ TABS } />
|
|
651
641
|
);
|
|
652
642
|
|
|
653
643
|
// Remove first item from `TABS` array
|
|
654
|
-
rerender( <UncontrolledTabs tabs={ TABS.slice( 1 ) } /> );
|
|
644
|
+
await rerender( <UncontrolledTabs tabs={ TABS.slice( 1 ) } /> );
|
|
655
645
|
expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
|
|
656
646
|
} );
|
|
657
647
|
it( 'should not load any tab if the active tab is removed and there are no enabled tabs', async () => {
|
|
@@ -667,13 +657,13 @@ describe( 'Tabs', () => {
|
|
|
667
657
|
: tabObj
|
|
668
658
|
);
|
|
669
659
|
|
|
670
|
-
const { rerender } = render(
|
|
660
|
+
const { rerender } = await render(
|
|
671
661
|
<UncontrolledTabs tabs={ TABS_WITH_BETA_GAMMA_DISABLED } />
|
|
672
662
|
);
|
|
673
663
|
expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
|
|
674
664
|
|
|
675
665
|
// Remove alpha
|
|
676
|
-
rerender(
|
|
666
|
+
await rerender(
|
|
677
667
|
<UncontrolledTabs
|
|
678
668
|
tabs={ TABS_WITH_BETA_GAMMA_DISABLED.slice( 1 ) }
|
|
679
669
|
/>
|
|
@@ -695,15 +685,15 @@ describe( 'Tabs', () => {
|
|
|
695
685
|
|
|
696
686
|
describe( 'With `defaultTabId`', () => {
|
|
697
687
|
it( 'should render the tab set by `defaultTabId` prop', async () => {
|
|
698
|
-
render(
|
|
688
|
+
await render(
|
|
699
689
|
<UncontrolledTabs tabs={ TABS } defaultTabId="beta" />
|
|
700
690
|
);
|
|
701
691
|
|
|
702
692
|
expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
|
|
703
693
|
} );
|
|
704
694
|
|
|
705
|
-
it( 'should not select a tab when `defaultTabId` does not match any known tab', () => {
|
|
706
|
-
render(
|
|
695
|
+
it( 'should not select a tab when `defaultTabId` does not match any known tab', async () => {
|
|
696
|
+
await render(
|
|
707
697
|
<UncontrolledTabs
|
|
708
698
|
tabs={ TABS }
|
|
709
699
|
defaultTabId="does-not-exist"
|
|
@@ -721,11 +711,11 @@ describe( 'Tabs', () => {
|
|
|
721
711
|
).not.toBeInTheDocument();
|
|
722
712
|
} );
|
|
723
713
|
it( 'should not change tabs when defaultTabId is changed', async () => {
|
|
724
|
-
const { rerender } = render(
|
|
714
|
+
const { rerender } = await render(
|
|
725
715
|
<UncontrolledTabs tabs={ TABS } defaultTabId="beta" />
|
|
726
716
|
);
|
|
727
717
|
|
|
728
|
-
rerender(
|
|
718
|
+
await rerender(
|
|
729
719
|
<UncontrolledTabs tabs={ TABS } defaultTabId="alpha" />
|
|
730
720
|
);
|
|
731
721
|
|
|
@@ -735,7 +725,7 @@ describe( 'Tabs', () => {
|
|
|
735
725
|
it( 'should fall back to the tab associated to `defaultTabId` if the currently active tab is removed', async () => {
|
|
736
726
|
const mockOnSelect = jest.fn();
|
|
737
727
|
|
|
738
|
-
const { rerender } = render(
|
|
728
|
+
const { rerender } = await render(
|
|
739
729
|
<UncontrolledTabs
|
|
740
730
|
tabs={ TABS }
|
|
741
731
|
defaultTabId="gamma"
|
|
@@ -749,7 +739,7 @@ describe( 'Tabs', () => {
|
|
|
749
739
|
expect( await getSelectedTab() ).toHaveTextContent( 'Alpha' );
|
|
750
740
|
expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
|
|
751
741
|
|
|
752
|
-
rerender(
|
|
742
|
+
await rerender(
|
|
753
743
|
<UncontrolledTabs
|
|
754
744
|
tabs={ TABS.slice( 1 ) }
|
|
755
745
|
defaultTabId="gamma"
|
|
@@ -763,7 +753,7 @@ describe( 'Tabs', () => {
|
|
|
763
753
|
it( 'should fall back to the tab associated to `defaultTabId` if the currently active tab becomes disabled', async () => {
|
|
764
754
|
const mockOnSelect = jest.fn();
|
|
765
755
|
|
|
766
|
-
const { rerender } = render(
|
|
756
|
+
const { rerender } = await render(
|
|
767
757
|
<UncontrolledTabs
|
|
768
758
|
tabs={ TABS }
|
|
769
759
|
defaultTabId="gamma"
|
|
@@ -789,7 +779,7 @@ describe( 'Tabs', () => {
|
|
|
789
779
|
: tabObj
|
|
790
780
|
);
|
|
791
781
|
|
|
792
|
-
rerender(
|
|
782
|
+
await rerender(
|
|
793
783
|
<UncontrolledTabs
|
|
794
784
|
tabs={ TABS_WITH_ALPHA_DISABLED }
|
|
795
785
|
defaultTabId="gamma"
|
|
@@ -801,14 +791,14 @@ describe( 'Tabs', () => {
|
|
|
801
791
|
} );
|
|
802
792
|
|
|
803
793
|
it( 'should have no active tabs when the tab associated to `defaultTabId` is removed while being the active tab', async () => {
|
|
804
|
-
const { rerender } = render(
|
|
794
|
+
const { rerender } = await render(
|
|
805
795
|
<UncontrolledTabs tabs={ TABS } defaultTabId="gamma" />
|
|
806
796
|
);
|
|
807
797
|
|
|
808
798
|
expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
|
|
809
799
|
|
|
810
800
|
// Remove gamma
|
|
811
|
-
rerender(
|
|
801
|
+
await rerender(
|
|
812
802
|
<UncontrolledTabs
|
|
813
803
|
tabs={ TABS.slice( 0, 2 ) }
|
|
814
804
|
defaultTabId="gamma"
|
|
@@ -827,7 +817,7 @@ describe( 'Tabs', () => {
|
|
|
827
817
|
} );
|
|
828
818
|
|
|
829
819
|
it( 'waits for the tab with the `defaultTabId` to be present in the `tabs` array before selecting it', async () => {
|
|
830
|
-
const { rerender } = render(
|
|
820
|
+
const { rerender } = await render(
|
|
831
821
|
<UncontrolledTabs tabs={ TABS } defaultTabId="delta" />
|
|
832
822
|
);
|
|
833
823
|
|
|
@@ -836,7 +826,7 @@ describe( 'Tabs', () => {
|
|
|
836
826
|
screen.queryByRole( 'tab', { selected: true } )
|
|
837
827
|
).not.toBeInTheDocument();
|
|
838
828
|
|
|
839
|
-
rerender(
|
|
829
|
+
await rerender(
|
|
840
830
|
<UncontrolledTabs
|
|
841
831
|
tabs={ TABS_WITH_DELTA }
|
|
842
832
|
defaultTabId="delta"
|
|
@@ -864,7 +854,7 @@ describe( 'Tabs', () => {
|
|
|
864
854
|
: tabObj
|
|
865
855
|
);
|
|
866
856
|
|
|
867
|
-
render(
|
|
857
|
+
await render(
|
|
868
858
|
<UncontrolledTabs
|
|
869
859
|
tabs={ TABS_WITH_DELTA_DISABLED }
|
|
870
860
|
onSelect={ mockOnSelect }
|
|
@@ -880,7 +870,6 @@ describe( 'Tabs', () => {
|
|
|
880
870
|
expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
|
|
881
871
|
|
|
882
872
|
// Move focus to the tablist, make sure alpha is focused.
|
|
883
|
-
await sleep();
|
|
884
873
|
await press.Tab();
|
|
885
874
|
expect(
|
|
886
875
|
screen.getByRole( 'tab', { name: 'Alpha' } )
|
|
@@ -913,7 +902,7 @@ describe( 'Tabs', () => {
|
|
|
913
902
|
: tabObj
|
|
914
903
|
);
|
|
915
904
|
|
|
916
|
-
const { rerender } = render(
|
|
905
|
+
const { rerender } = await render(
|
|
917
906
|
<UncontrolledTabs tabs={ TABS_WITH_ALPHA_DISABLED } />
|
|
918
907
|
);
|
|
919
908
|
|
|
@@ -922,7 +911,7 @@ describe( 'Tabs', () => {
|
|
|
922
911
|
expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
|
|
923
912
|
|
|
924
913
|
// Re-enable all tabs
|
|
925
|
-
rerender( <UncontrolledTabs tabs={ TABS } /> );
|
|
914
|
+
await rerender( <UncontrolledTabs tabs={ TABS } /> );
|
|
926
915
|
|
|
927
916
|
// Even if the initial tab becomes enabled again, the selected
|
|
928
917
|
// tab doesn't change.
|
|
@@ -941,7 +930,7 @@ describe( 'Tabs', () => {
|
|
|
941
930
|
}
|
|
942
931
|
: tabObj
|
|
943
932
|
);
|
|
944
|
-
const { rerender } = render(
|
|
933
|
+
const { rerender } = await render(
|
|
945
934
|
<UncontrolledTabs
|
|
946
935
|
tabs={ TABS_ONLY_GAMMA_ENABLED }
|
|
947
936
|
defaultTabId="beta"
|
|
@@ -953,7 +942,7 @@ describe( 'Tabs', () => {
|
|
|
953
942
|
expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
|
|
954
943
|
|
|
955
944
|
// Re-enable all tabs
|
|
956
|
-
rerender(
|
|
945
|
+
await rerender(
|
|
957
946
|
<UncontrolledTabs tabs={ TABS } defaultTabId="beta" />
|
|
958
947
|
);
|
|
959
948
|
|
|
@@ -964,7 +953,7 @@ describe( 'Tabs', () => {
|
|
|
964
953
|
|
|
965
954
|
it( 'should select the first enabled tab when the selected tab becomes disabled', async () => {
|
|
966
955
|
const mockOnSelect = jest.fn();
|
|
967
|
-
const { rerender } = render(
|
|
956
|
+
const { rerender } = await render(
|
|
968
957
|
<UncontrolledTabs tabs={ TABS } onSelect={ mockOnSelect } />
|
|
969
958
|
);
|
|
970
959
|
|
|
@@ -985,7 +974,7 @@ describe( 'Tabs', () => {
|
|
|
985
974
|
);
|
|
986
975
|
|
|
987
976
|
// Disable alpha
|
|
988
|
-
rerender(
|
|
977
|
+
await rerender(
|
|
989
978
|
<UncontrolledTabs
|
|
990
979
|
tabs={ TABS_WITH_ALPHA_DISABLED }
|
|
991
980
|
onSelect={ mockOnSelect }
|
|
@@ -997,7 +986,7 @@ describe( 'Tabs', () => {
|
|
|
997
986
|
expect( mockOnSelect ).toHaveBeenLastCalledWith( 'beta' );
|
|
998
987
|
|
|
999
988
|
// Re-enable all tabs
|
|
1000
|
-
rerender(
|
|
989
|
+
await rerender(
|
|
1001
990
|
<UncontrolledTabs tabs={ TABS } onSelect={ mockOnSelect } />
|
|
1002
991
|
);
|
|
1003
992
|
|
|
@@ -1009,7 +998,7 @@ describe( 'Tabs', () => {
|
|
|
1009
998
|
it( 'should select the first enabled tab when the tab associated to `defaultTabId` becomes disabled while being the active tab', async () => {
|
|
1010
999
|
const mockOnSelect = jest.fn();
|
|
1011
1000
|
|
|
1012
|
-
const { rerender } = render(
|
|
1001
|
+
const { rerender } = await render(
|
|
1013
1002
|
<UncontrolledTabs
|
|
1014
1003
|
tabs={ TABS }
|
|
1015
1004
|
onSelect={ mockOnSelect }
|
|
@@ -1032,7 +1021,7 @@ describe( 'Tabs', () => {
|
|
|
1032
1021
|
);
|
|
1033
1022
|
|
|
1034
1023
|
// Disable gamma
|
|
1035
|
-
rerender(
|
|
1024
|
+
await rerender(
|
|
1036
1025
|
<UncontrolledTabs
|
|
1037
1026
|
tabs={ TABS_WITH_GAMMA_DISABLED }
|
|
1038
1027
|
onSelect={ mockOnSelect }
|
|
@@ -1045,7 +1034,7 @@ describe( 'Tabs', () => {
|
|
|
1045
1034
|
expect( mockOnSelect ).toHaveBeenLastCalledWith( 'alpha' );
|
|
1046
1035
|
|
|
1047
1036
|
// Re-enable all tabs
|
|
1048
|
-
rerender(
|
|
1037
|
+
await rerender(
|
|
1049
1038
|
<UncontrolledTabs
|
|
1050
1039
|
tabs={ TABS }
|
|
1051
1040
|
onSelect={ mockOnSelect }
|
|
@@ -1063,7 +1052,9 @@ describe( 'Tabs', () => {
|
|
|
1063
1052
|
|
|
1064
1053
|
describe( 'Controlled mode', () => {
|
|
1065
1054
|
it( 'should render the tab specified by the `selectedTabId` prop', async () => {
|
|
1066
|
-
render(
|
|
1055
|
+
await render(
|
|
1056
|
+
<ControlledTabs tabs={ TABS } selectedTabId="beta" />
|
|
1057
|
+
);
|
|
1067
1058
|
|
|
1068
1059
|
expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
|
|
1069
1060
|
expect(
|
|
@@ -1071,7 +1062,7 @@ describe( 'Tabs', () => {
|
|
|
1071
1062
|
).toBeInTheDocument();
|
|
1072
1063
|
} );
|
|
1073
1064
|
it( 'should render the specified `selectedTabId`, and ignore the `defaultTabId` prop', async () => {
|
|
1074
|
-
render(
|
|
1065
|
+
await render(
|
|
1075
1066
|
<ControlledTabs
|
|
1076
1067
|
tabs={ TABS }
|
|
1077
1068
|
selectedTabId="gamma"
|
|
@@ -1082,7 +1073,7 @@ describe( 'Tabs', () => {
|
|
|
1082
1073
|
expect( await getSelectedTab() ).toHaveTextContent( 'Gamma' );
|
|
1083
1074
|
} );
|
|
1084
1075
|
it( 'should not render any tab if `selectedTabId` does not match any known tab', async () => {
|
|
1085
|
-
render(
|
|
1076
|
+
await render(
|
|
1086
1077
|
<ControlledTabs
|
|
1087
1078
|
tabs={ TABS_WITH_DELTA }
|
|
1088
1079
|
selectedTabId="does-not-exist"
|
|
@@ -1097,12 +1088,12 @@ describe( 'Tabs', () => {
|
|
|
1097
1088
|
expect( screen.queryByRole( 'tabpanel' ) ).not.toBeInTheDocument();
|
|
1098
1089
|
} );
|
|
1099
1090
|
it( 'should not render any tab if the active tab is removed', async () => {
|
|
1100
|
-
const { rerender } = render(
|
|
1091
|
+
const { rerender } = await render(
|
|
1101
1092
|
<ControlledTabs tabs={ TABS } selectedTabId="beta" />
|
|
1102
1093
|
);
|
|
1103
1094
|
|
|
1104
1095
|
// Remove beta
|
|
1105
|
-
rerender(
|
|
1096
|
+
await rerender(
|
|
1106
1097
|
<ControlledTabs
|
|
1107
1098
|
tabs={ TABS.filter( ( tab ) => tab.tabId !== 'beta' ) }
|
|
1108
1099
|
selectedTabId="beta"
|
|
@@ -1123,7 +1114,9 @@ describe( 'Tabs', () => {
|
|
|
1123
1114
|
expect( screen.queryByRole( 'tabpanel' ) ).not.toBeInTheDocument();
|
|
1124
1115
|
|
|
1125
1116
|
// Restore beta
|
|
1126
|
-
rerender(
|
|
1117
|
+
await rerender(
|
|
1118
|
+
<ControlledTabs tabs={ TABS } selectedTabId="beta" />
|
|
1119
|
+
);
|
|
1127
1120
|
|
|
1128
1121
|
// No tab should be selected i.e. it doesn't reselect the previously
|
|
1129
1122
|
// removed tab.
|
|
@@ -1149,7 +1142,7 @@ describe( 'Tabs', () => {
|
|
|
1149
1142
|
: tabObj
|
|
1150
1143
|
);
|
|
1151
1144
|
|
|
1152
|
-
render(
|
|
1145
|
+
await render(
|
|
1153
1146
|
<ControlledTabs
|
|
1154
1147
|
tabs={ TABS_WITH_DELTA_WITH_BETA_DISABLED }
|
|
1155
1148
|
selectedTabId="beta"
|
|
@@ -1168,7 +1161,7 @@ describe( 'Tabs', () => {
|
|
|
1168
1161
|
).not.toBeInTheDocument();
|
|
1169
1162
|
} );
|
|
1170
1163
|
it( 'should not render any tab when the selected tab becomes disabled', async () => {
|
|
1171
|
-
const { rerender } = render(
|
|
1164
|
+
const { rerender } = await render(
|
|
1172
1165
|
<ControlledTabs tabs={ TABS } selectedTabId="beta" />
|
|
1173
1166
|
);
|
|
1174
1167
|
|
|
@@ -1186,7 +1179,7 @@ describe( 'Tabs', () => {
|
|
|
1186
1179
|
: tabObj
|
|
1187
1180
|
);
|
|
1188
1181
|
|
|
1189
|
-
rerender(
|
|
1182
|
+
await rerender(
|
|
1190
1183
|
<ControlledTabs
|
|
1191
1184
|
tabs={ TABS_WITH_BETA_DISABLED }
|
|
1192
1185
|
selectedTabId="beta"
|
|
@@ -1206,7 +1199,7 @@ describe( 'Tabs', () => {
|
|
|
1206
1199
|
).not.toBeInTheDocument();
|
|
1207
1200
|
|
|
1208
1201
|
// re-enable all tabs
|
|
1209
|
-
rerender(
|
|
1202
|
+
await rerender(
|
|
1210
1203
|
<ControlledTabs tabs={ TABS } selectedTabId="beta" />
|
|
1211
1204
|
);
|
|
1212
1205
|
|
|
@@ -1226,7 +1219,7 @@ describe( 'Tabs', () => {
|
|
|
1226
1219
|
'and `selectOnMove` is %s',
|
|
1227
1220
|
( selectOnMove ) => {
|
|
1228
1221
|
it( 'should continue to handle arrow key navigation properly', async () => {
|
|
1229
|
-
const { rerender } = render(
|
|
1222
|
+
const { rerender } = await render(
|
|
1230
1223
|
<ControlledTabs
|
|
1231
1224
|
tabs={ TABS }
|
|
1232
1225
|
selectedTabId="beta"
|
|
@@ -1234,12 +1227,6 @@ describe( 'Tabs', () => {
|
|
|
1234
1227
|
/>
|
|
1235
1228
|
);
|
|
1236
1229
|
|
|
1237
|
-
// Due to the timing of the component re-rendering, we
|
|
1238
|
-
// need to force a delay to ensure the test doesn't run
|
|
1239
|
-
// the upcoming assertions too early.
|
|
1240
|
-
// see https://github.com/WordPress/gutenberg/pull/58629#issuecomment-1924875249
|
|
1241
|
-
await sleep();
|
|
1242
|
-
|
|
1243
1230
|
// Tab key should focus the currently selected tab, which is Beta.
|
|
1244
1231
|
await press.Tab();
|
|
1245
1232
|
await waitFor( async () =>
|
|
@@ -1249,7 +1236,7 @@ describe( 'Tabs', () => {
|
|
|
1249
1236
|
);
|
|
1250
1237
|
expect( await getSelectedTab() ).toHaveFocus();
|
|
1251
1238
|
|
|
1252
|
-
rerender(
|
|
1239
|
+
await rerender(
|
|
1253
1240
|
<ControlledTabs
|
|
1254
1241
|
tabs={ TABS }
|
|
1255
1242
|
selectedTabId="gamma"
|
|
@@ -1275,7 +1262,7 @@ describe( 'Tabs', () => {
|
|
|
1275
1262
|
} );
|
|
1276
1263
|
|
|
1277
1264
|
it( 'should focus the correct tab when tabbing out and back into the tablist', async () => {
|
|
1278
|
-
const { rerender } = render(
|
|
1265
|
+
const { rerender } = await render(
|
|
1279
1266
|
<>
|
|
1280
1267
|
<button>Focus me</button>
|
|
1281
1268
|
<ControlledTabs
|
|
@@ -1287,16 +1274,14 @@ describe( 'Tabs', () => {
|
|
|
1287
1274
|
);
|
|
1288
1275
|
|
|
1289
1276
|
// Tab key should focus the currently selected tab, which is Beta.
|
|
1290
|
-
await sleep();
|
|
1291
1277
|
await press.Tab();
|
|
1292
|
-
await sleep();
|
|
1293
1278
|
await press.Tab();
|
|
1294
1279
|
expect( await getSelectedTab() ).toHaveTextContent(
|
|
1295
1280
|
'Beta'
|
|
1296
1281
|
);
|
|
1297
1282
|
expect( await getSelectedTab() ).toHaveFocus();
|
|
1298
1283
|
|
|
1299
|
-
rerender(
|
|
1284
|
+
await rerender(
|
|
1300
1285
|
<>
|
|
1301
1286
|
<button>Focus me</button>
|
|
1302
1287
|
<ControlledTabs
|
|
@@ -1324,7 +1309,6 @@ describe( 'Tabs', () => {
|
|
|
1324
1309
|
).toHaveFocus();
|
|
1325
1310
|
|
|
1326
1311
|
// Press tab, move focus back to the tablist
|
|
1327
|
-
await sleep();
|
|
1328
1312
|
await press.Tab();
|
|
1329
1313
|
|
|
1330
1314
|
const betaTab = screen.getByRole( 'tab', {
|
|
@@ -1344,9 +1328,10 @@ describe( 'Tabs', () => {
|
|
|
1344
1328
|
|
|
1345
1329
|
describe( 'When `selectOnMove` is `true`', () => {
|
|
1346
1330
|
it( 'should automatically select a newly focused tab', async () => {
|
|
1347
|
-
render(
|
|
1331
|
+
await render(
|
|
1332
|
+
<ControlledTabs tabs={ TABS } selectedTabId="beta" />
|
|
1333
|
+
);
|
|
1348
1334
|
|
|
1349
|
-
await sleep();
|
|
1350
1335
|
await press.Tab();
|
|
1351
1336
|
|
|
1352
1337
|
// Tab key should focus the currently selected tab, which is Beta.
|
|
@@ -1361,7 +1346,7 @@ describe( 'Tabs', () => {
|
|
|
1361
1346
|
} );
|
|
1362
1347
|
describe( 'When `selectOnMove` is `false`', () => {
|
|
1363
1348
|
it( 'should apply focus without automatically changing the selected tab', async () => {
|
|
1364
|
-
render(
|
|
1349
|
+
await render(
|
|
1365
1350
|
<ControlledTabs
|
|
1366
1351
|
tabs={ TABS }
|
|
1367
1352
|
selectedTabId="beta"
|
|
@@ -1372,7 +1357,6 @@ describe( 'Tabs', () => {
|
|
|
1372
1357
|
expect( await getSelectedTab() ).toHaveTextContent( 'Beta' );
|
|
1373
1358
|
|
|
1374
1359
|
// Tab key should focus the currently selected tab, which is Beta.
|
|
1375
|
-
await sleep();
|
|
1376
1360
|
await press.Tab();
|
|
1377
1361
|
await waitFor( async () =>
|
|
1378
1362
|
expect(
|
|
@@ -1407,7 +1391,7 @@ describe( 'Tabs', () => {
|
|
|
1407
1391
|
it( 'should associate each `Tab` with the correct `TabPanel`, even if they are not rendered in the same order', async () => {
|
|
1408
1392
|
const TABS_WITH_DELTA_REVERSED = [ ...TABS_WITH_DELTA ].reverse();
|
|
1409
1393
|
|
|
1410
|
-
render(
|
|
1394
|
+
await render(
|
|
1411
1395
|
<Tabs>
|
|
1412
1396
|
<Tabs.TabList>
|
|
1413
1397
|
{ TABS_WITH_DELTA.map( ( tabObj ) => (
|
|
@@ -20,5 +20,10 @@
|
|
|
20
20
|
|
|
21
21
|
&.is-next-40px-default-size {
|
|
22
22
|
height: $grid-unit-50;
|
|
23
|
+
|
|
24
|
+
// Subtract 1px to account for the border, which isn't included on the element
|
|
25
|
+
// on newer components like InputControl, SelectControl, etc.
|
|
26
|
+
padding-left: $grid-unit-20;
|
|
27
|
+
padding-right: $grid-unit-20;
|
|
23
28
|
}
|
|
24
29
|
}
|
|
@@ -15,6 +15,7 @@ const MyToggleControl = () => {
|
|
|
15
15
|
|
|
16
16
|
return (
|
|
17
17
|
<ToggleControl
|
|
18
|
+
__nextHasNoMarginBottom
|
|
18
19
|
label="Fixed Background"
|
|
19
20
|
help={
|
|
20
21
|
hasFixedBackground
|
|
@@ -78,3 +79,11 @@ The class that will be added with `components-base-control` and `components-togg
|
|
|
78
79
|
|
|
79
80
|
- Type: `String`
|
|
80
81
|
- Required: No
|
|
82
|
+
|
|
83
|
+
### `__nextHasNoMarginBottom`
|
|
84
|
+
|
|
85
|
+
Start opting into the new margin-free styles that will become the default in a future version.
|
|
86
|
+
|
|
87
|
+
- Type: `Boolean`
|
|
88
|
+
- Required: No
|
|
89
|
+
- Default: `false`
|