@wordpress/components 35.1.1-next.v.202606191442.0 → 36.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -1
- package/CONTRIBUTING.md +33 -26
- package/build/box-control/{input-control.cjs → box-input-control.cjs} +9 -9
- package/build/box-control/box-input-control.cjs.map +7 -0
- package/build/box-control/index.cjs +9 -25
- package/build/box-control/index.cjs.map +3 -3
- package/build/disabled/index.cjs.map +2 -2
- package/build/divider/component.cjs +108 -3
- package/build/divider/component.cjs.map +4 -4
- package/build/higher-order/with-fallback-styles/index.cjs +18 -44
- package/build/higher-order/with-fallback-styles/index.cjs.map +2 -2
- package/build/text-control/index.cjs +3 -12
- package/build/text-control/index.cjs.map +3 -3
- package/build/validated-form-controls/components/text-control.cjs +0 -1
- package/build/validated-form-controls/components/text-control.cjs.map +2 -2
- package/build-module/box-control/{input-control.mjs → box-input-control.mjs} +6 -6
- package/build-module/box-control/box-input-control.mjs.map +7 -0
- package/build-module/box-control/index.mjs +9 -25
- package/build-module/box-control/index.mjs.map +2 -2
- package/build-module/disabled/index.mjs.map +2 -2
- package/build-module/divider/component.mjs +108 -3
- package/build-module/divider/component.mjs.map +3 -3
- package/build-module/higher-order/with-fallback-styles/index.mjs +20 -46
- package/build-module/higher-order/with-fallback-styles/index.mjs.map +2 -2
- package/build-module/text-control/index.mjs +3 -12
- package/build-module/text-control/index.mjs.map +2 -2
- package/build-module/validated-form-controls/components/text-control.mjs +0 -1
- package/build-module/validated-form-controls/components/text-control.mjs.map +2 -2
- package/build-style/style-rtl.css +3 -19
- package/build-style/style.css +3 -19
- package/build-types/box-control/box-input-control.d.ts +3 -0
- package/build-types/box-control/box-input-control.d.ts.map +1 -0
- package/build-types/box-control/index.d.ts +2 -6
- package/build-types/box-control/index.d.ts.map +1 -1
- package/build-types/box-control/stories/index.story.d.ts.map +1 -1
- package/build-types/box-control/types.d.ts +7 -6
- package/build-types/box-control/types.d.ts.map +1 -1
- package/build-types/disabled/index.d.ts +0 -1
- package/build-types/disabled/index.d.ts.map +1 -1
- package/build-types/disabled/stories/index.story.d.ts.map +1 -1
- package/build-types/divider/component.d.ts.map +1 -1
- package/build-types/higher-order/with-fallback-styles/index.d.ts +1 -35
- package/build-types/higher-order/with-fallback-styles/index.d.ts.map +1 -1
- package/build-types/higher-order/with-fallback-styles/test/index.d.ts +2 -0
- package/build-types/higher-order/with-fallback-styles/test/index.d.ts.map +1 -0
- package/build-types/icon/stories/index.story.d.ts +0 -1
- package/build-types/icon/stories/index.story.d.ts.map +1 -1
- package/build-types/placeholder/stories/index.story.d.ts.map +1 -1
- package/build-types/resizable-box/index.d.ts +0 -2
- package/build-types/resizable-box/index.d.ts.map +1 -1
- package/build-types/resizable-box/stories/index.story.d.ts +0 -2
- package/build-types/resizable-box/stories/index.story.d.ts.map +1 -1
- package/build-types/text-control/index.d.ts +0 -1
- package/build-types/text-control/index.d.ts.map +1 -1
- package/build-types/text-control/stories/index.story.d.ts.map +1 -1
- package/build-types/text-control/types.d.ts +2 -1
- package/build-types/text-control/types.d.ts.map +1 -1
- package/build-types/validated-form-controls/components/combobox-control.d.ts +1 -1
- package/build-types/validated-form-controls/components/text-control.d.ts +2 -2
- package/build-types/validated-form-controls/components/text-control.d.ts.map +1 -1
- package/package.json +23 -23
- package/src/box-control/README.md +1 -13
- package/src/box-control/{input-control.tsx → box-input-control.tsx} +4 -4
- package/src/box-control/index.tsx +5 -23
- package/src/box-control/stories/index.story.tsx +1 -3
- package/src/box-control/test/index.tsx +15 -2
- package/src/box-control/types.ts +7 -6
- package/src/card/test/__snapshots__/index.tsx.snap +4 -6
- package/src/checkbox-control/test/__snapshots__/index.tsx.snap +4 -3
- package/src/custom-select-control/test/index.tsx +1 -1
- package/src/disabled/README.md +0 -1
- package/src/disabled/index.tsx +0 -1
- package/src/disabled/stories/index.story.tsx +0 -1
- package/src/divider/component.tsx +27 -3
- package/src/divider/style.module.scss +21 -0
- package/src/divider/test/index.tsx +21 -11
- package/src/higher-order/with-constrained-tabbing/README.md +0 -2
- package/src/higher-order/with-fallback-styles/index.tsx +31 -61
- package/src/higher-order/with-fallback-styles/test/index.tsx +47 -0
- package/src/higher-order/with-focus-return/README.md +0 -2
- package/src/icon/stories/index.story.tsx +0 -15
- package/src/menu/test/index.tsx +0 -16
- package/src/menu-item/test/__snapshots__/index.js.snap +2 -0
- package/src/modal/test/index.tsx +0 -24
- package/src/navigable-container/test/navigable-menu.tsx +0 -16
- package/src/navigable-container/test/tababble-container.tsx +0 -16
- package/src/navigator/test/index.tsx +0 -24
- package/src/notice/test/__snapshots__/index.tsx.snap +1 -0
- package/src/placeholder/stories/index.story.tsx +0 -1
- package/src/resizable-box/index.tsx +1 -2
- package/src/tab-panel/test/index.tsx +0 -17
- package/src/tabs/test/index.tsx +0 -17
- package/src/text-control/README.md +0 -9
- package/src/text-control/index.tsx +3 -14
- package/src/text-control/stories/index.story.tsx +0 -2
- package/src/text-control/style.scss +7 -11
- package/src/text-control/test/text-control.tsx +1 -5
- package/src/text-control/types.ts +2 -1
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +4 -0
- package/src/tools-panel/tools-panel/README.md +0 -2
- package/src/tree-grid/test/index.tsx +0 -23
- package/src/validated-form-controls/components/text-control.tsx +2 -10
- package/build/box-control/input-control.cjs.map +0 -7
- package/build/divider/styles.cjs +0 -98
- package/build/divider/styles.cjs.map +0 -7
- package/build-module/box-control/input-control.mjs.map +0 -7
- package/build-module/divider/styles.mjs +0 -63
- package/build-module/divider/styles.mjs.map +0 -7
- package/build-types/box-control/input-control.d.ts +0 -3
- package/build-types/box-control/input-control.d.ts.map +0 -1
- package/build-types/divider/styles.d.ts +0 -10
- package/build-types/divider/styles.d.ts.map +0 -1
- package/src/divider/styles.ts +0 -81
- package/src/divider/test/__snapshots__/index.tsx.snap +0 -71
package/src/menu/test/index.tsx
CHANGED
|
@@ -31,22 +31,6 @@ const resetTypeahead = () => {
|
|
|
31
31
|
|
|
32
32
|
describe( 'Menu', () => {
|
|
33
33
|
let user: ReturnType< typeof userEvent.setup >;
|
|
34
|
-
let originalGetClientRects: () => DOMRectList;
|
|
35
|
-
|
|
36
|
-
beforeAll( () => {
|
|
37
|
-
// Code that considers focusability considers rects in whether the
|
|
38
|
-
// element is visible, but since jsdom does not simulate layout, we
|
|
39
|
-
// need to fake it. This should ideally be a global test mock to
|
|
40
|
-
// faithfully emulate a true browser environment.
|
|
41
|
-
originalGetClientRects = window.Element.prototype.getClientRects;
|
|
42
|
-
window.Element.prototype.getClientRects = jest.fn(
|
|
43
|
-
() => [ { width: 1, height: 1 } ] as unknown as DOMRectList
|
|
44
|
-
);
|
|
45
|
-
} );
|
|
46
|
-
|
|
47
|
-
afterAll( () => {
|
|
48
|
-
window.Element.prototype.getClientRects = originalGetClientRects;
|
|
49
|
-
} );
|
|
50
34
|
|
|
51
35
|
beforeEach( () => {
|
|
52
36
|
user = userEvent.setup();
|
|
@@ -20,6 +20,7 @@ exports[`MenuItem should match snapshot when all props provided 1`] = `
|
|
|
20
20
|
<svg
|
|
21
21
|
aria-hidden="true"
|
|
22
22
|
class="components-menu-items__item-icon has-icon-right"
|
|
23
|
+
fill="currentColor"
|
|
23
24
|
focusable="false"
|
|
24
25
|
height="24"
|
|
25
26
|
viewBox="0 0 24 24"
|
|
@@ -79,6 +80,7 @@ exports[`MenuItem should match snapshot when isSelected and role are optionally
|
|
|
79
80
|
<svg
|
|
80
81
|
aria-hidden="true"
|
|
81
82
|
class="components-menu-items__item-icon has-icon-right"
|
|
83
|
+
fill="currentColor"
|
|
82
84
|
focusable="false"
|
|
83
85
|
height="24"
|
|
84
86
|
viewBox="0 0 24 24"
|
package/src/modal/test/index.tsx
CHANGED
|
@@ -269,9 +269,6 @@ describe( 'Modal', () => {
|
|
|
269
269
|
} );
|
|
270
270
|
|
|
271
271
|
describe( 'Focus handling', () => {
|
|
272
|
-
const originalGetClientRects =
|
|
273
|
-
window.HTMLElement.prototype.getClientRects;
|
|
274
|
-
|
|
275
272
|
const FocusMountDemo = ( {
|
|
276
273
|
focusOnMount,
|
|
277
274
|
}: Pick< ModalProps, 'focusOnMount' > ) => {
|
|
@@ -300,27 +297,6 @@ describe( 'Modal', () => {
|
|
|
300
297
|
);
|
|
301
298
|
};
|
|
302
299
|
|
|
303
|
-
beforeEach( () => {
|
|
304
|
-
/**
|
|
305
|
-
* The test environment does not have a layout engine, so we need to mock
|
|
306
|
-
* the getClientRects method. This ensures that the focusable elements can be
|
|
307
|
-
* found by the `focusOnMount` logic which depends on layout information
|
|
308
|
-
* to determine if the element is visible or not.
|
|
309
|
-
* See https://github.com/WordPress/gutenberg/blob/trunk/packages/dom/src/focusable.js#L55-L61.
|
|
310
|
-
*/
|
|
311
|
-
// @ts-expect-error We're not trying to comply to the DOM spec, only mocking
|
|
312
|
-
window.HTMLElement.prototype.getClientRects = function () {
|
|
313
|
-
return [ 'trick-jsdom-into-having-size-for-element-rect' ];
|
|
314
|
-
};
|
|
315
|
-
} );
|
|
316
|
-
|
|
317
|
-
afterEach( () => {
|
|
318
|
-
// Restore original HTMLElement prototype.
|
|
319
|
-
// See beforeEach for details.
|
|
320
|
-
window.HTMLElement.prototype.getClientRects =
|
|
321
|
-
originalGetClientRects;
|
|
322
|
-
} );
|
|
323
|
-
|
|
324
300
|
it( 'should focus the Modal dialog by default when `focusOnMount` prop is not provided', async () => {
|
|
325
301
|
const user = userEvent.setup();
|
|
326
302
|
|
|
@@ -28,23 +28,7 @@ const getNavigableMenuFocusables = () => [
|
|
|
28
28
|
screen.getByRole( 'link', { name: 'Item 4' } ),
|
|
29
29
|
];
|
|
30
30
|
|
|
31
|
-
const originalGetClientRects = window.HTMLElement.prototype.getClientRects;
|
|
32
|
-
|
|
33
31
|
describe( 'NavigableMenu', () => {
|
|
34
|
-
beforeAll( () => {
|
|
35
|
-
// Mocking `getClientRects()` is necessary to pass a check performed by
|
|
36
|
-
// the `focus.tabbable.find()` and by the `focus.focusable.find()` functions
|
|
37
|
-
// from the `@wordpress/dom` package.
|
|
38
|
-
// @ts-expect-error We're not trying to comply to the DOM spec, only mocking
|
|
39
|
-
window.HTMLElement.prototype.getClientRects = function () {
|
|
40
|
-
return [ 'trick-jsdom-into-having-size-for-element-rect' ];
|
|
41
|
-
};
|
|
42
|
-
} );
|
|
43
|
-
|
|
44
|
-
afterAll( () => {
|
|
45
|
-
window.HTMLElement.prototype.getClientRects = originalGetClientRects;
|
|
46
|
-
} );
|
|
47
|
-
|
|
48
32
|
it( 'moves focus on its focusable children by using the up/down arrow keys', async () => {
|
|
49
33
|
const user = userEvent.setup();
|
|
50
34
|
|
|
@@ -35,23 +35,7 @@ const getTabbableContainerTabbables = () => [
|
|
|
35
35
|
screen.getByRole( 'link', { name: 'Item 4' } ),
|
|
36
36
|
];
|
|
37
37
|
|
|
38
|
-
const originalGetClientRects = window.HTMLElement.prototype.getClientRects;
|
|
39
|
-
|
|
40
38
|
describe( 'TabbableContainer', () => {
|
|
41
|
-
beforeAll( () => {
|
|
42
|
-
// Mocking `getClientRects()` is necessary to pass a check performed by
|
|
43
|
-
// the `focus.tabbable.find()` and by the `focus.focusable.find()` functions
|
|
44
|
-
// from the `@wordpress/dom` package.
|
|
45
|
-
// @ts-expect-error We're not trying to comply to the DOM spec, only mocking
|
|
46
|
-
window.HTMLElement.prototype.getClientRects = function () {
|
|
47
|
-
return [ 'trick-jsdom-into-having-size-for-element-rect' ];
|
|
48
|
-
};
|
|
49
|
-
} );
|
|
50
|
-
|
|
51
|
-
afterAll( () => {
|
|
52
|
-
window.HTMLElement.prototype.getClientRects = originalGetClientRects;
|
|
53
|
-
} );
|
|
54
|
-
|
|
55
39
|
it( 'moves focus on its tabbable children by using the tab key', async () => {
|
|
56
40
|
const user = userEvent.setup();
|
|
57
41
|
|
|
@@ -469,30 +469,6 @@ const getNavigationButton = ( buttonKey: keyof typeof BUTTON_TEXT ) =>
|
|
|
469
469
|
screen.getByRole( 'button', { name: BUTTON_TEXT[ buttonKey ] } );
|
|
470
470
|
|
|
471
471
|
describe( 'Navigator', () => {
|
|
472
|
-
const originalGetClientRects = window.Element.prototype.getClientRects;
|
|
473
|
-
|
|
474
|
-
// `getClientRects` needs to be mocked so that `isVisible` from the `@wordpress/dom`
|
|
475
|
-
// `focusable` module can pass, in a JSDOM env where the DOM elements have no width/height.
|
|
476
|
-
const mockedGetClientRects = jest.fn( () => [
|
|
477
|
-
{
|
|
478
|
-
x: 0,
|
|
479
|
-
y: 0,
|
|
480
|
-
width: 100,
|
|
481
|
-
height: 100,
|
|
482
|
-
},
|
|
483
|
-
] );
|
|
484
|
-
|
|
485
|
-
beforeAll( () => {
|
|
486
|
-
// @ts-expect-error There's no need for an exact mock, this is just needed
|
|
487
|
-
// for the tests to pass (see `mockedGetClientRects` inline comments).
|
|
488
|
-
window.Element.prototype.getClientRects =
|
|
489
|
-
jest.fn( mockedGetClientRects );
|
|
490
|
-
} );
|
|
491
|
-
|
|
492
|
-
afterAll( () => {
|
|
493
|
-
window.Element.prototype.getClientRects = originalGetClientRects;
|
|
494
|
-
} );
|
|
495
|
-
|
|
496
472
|
it( 'should render', () => {
|
|
497
473
|
render( <MyNavigation /> );
|
|
498
474
|
|
|
@@ -9,7 +9,7 @@ import { forwardRef } from '@wordpress/element';
|
|
|
9
9
|
import clsx from 'clsx';
|
|
10
10
|
import { Resizable } from 're-resizable';
|
|
11
11
|
import type { ResizableProps } from 're-resizable';
|
|
12
|
-
import type {
|
|
12
|
+
import type { ForwardedRef } from 'react';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Internal dependencies
|
|
@@ -88,7 +88,6 @@ const HANDLE_STYLES = {
|
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
type ResizableBoxProps = ResizableProps & {
|
|
91
|
-
children: ReactNode;
|
|
92
91
|
showHandle?: boolean;
|
|
93
92
|
__experimentalShowTooltip?: boolean;
|
|
94
93
|
__experimentalTooltipProps?: Parameters< typeof ResizeTooltip >[ 0 ];
|
|
@@ -35,8 +35,6 @@ const TABS = [
|
|
|
35
35
|
const getSelectedTab = async () =>
|
|
36
36
|
await screen.findByRole( 'tab', { selected: true } );
|
|
37
37
|
|
|
38
|
-
let originalGetClientRects: () => DOMRectList;
|
|
39
|
-
|
|
40
38
|
describe.each( [
|
|
41
39
|
[ 'uncontrolled', TabPanel ],
|
|
42
40
|
// The controlled component tests will be added once we certify the
|
|
@@ -45,21 +43,6 @@ describe.each( [
|
|
|
45
43
|
] )( 'TabPanel %s', ( ...modeAndComponent ) => {
|
|
46
44
|
const [ , Component ] = modeAndComponent;
|
|
47
45
|
|
|
48
|
-
beforeAll( () => {
|
|
49
|
-
originalGetClientRects = window.HTMLElement.prototype.getClientRects;
|
|
50
|
-
// Mocking `getClientRects()` is necessary to pass a check performed by
|
|
51
|
-
// the `focus.tabbable.find()` and by the `focus.focusable.find()` functions
|
|
52
|
-
// from the `@wordpress/dom` package.
|
|
53
|
-
// @ts-expect-error We're not trying to comply to the DOM spec, only mocking
|
|
54
|
-
window.HTMLElement.prototype.getClientRects = function () {
|
|
55
|
-
return [ 'trick-jsdom-into-having-size-for-element-rect' ];
|
|
56
|
-
};
|
|
57
|
-
} );
|
|
58
|
-
|
|
59
|
-
afterAll( () => {
|
|
60
|
-
window.HTMLElement.prototype.getClientRects = originalGetClientRects;
|
|
61
|
-
} );
|
|
62
|
-
|
|
63
46
|
describe( 'Accessibility and semantics', () => {
|
|
64
47
|
it( 'should use the correct aria attributes', async () => {
|
|
65
48
|
const panelRenderFunction = jest.fn();
|
package/src/tabs/test/index.tsx
CHANGED
|
@@ -176,8 +176,6 @@ const ControlledTabs = ( {
|
|
|
176
176
|
);
|
|
177
177
|
};
|
|
178
178
|
|
|
179
|
-
let originalGetClientRects: () => DOMRectList;
|
|
180
|
-
|
|
181
179
|
async function waitForComponentToBeInitializedWithSelectedTab(
|
|
182
180
|
selectedTabName: string | undefined
|
|
183
181
|
) {
|
|
@@ -218,21 +216,6 @@ async function waitForComponentToBeInitializedWithSelectedTab(
|
|
|
218
216
|
}
|
|
219
217
|
|
|
220
218
|
describe( 'Tabs', () => {
|
|
221
|
-
beforeAll( () => {
|
|
222
|
-
originalGetClientRects = window.HTMLElement.prototype.getClientRects;
|
|
223
|
-
// Mocking `getClientRects()` is necessary to pass a check performed by
|
|
224
|
-
// the `focus.tabbable.find()` and by the `focus.focusable.find()` functions
|
|
225
|
-
// from the `@wordpress/dom` package.
|
|
226
|
-
// @ts-expect-error We're not trying to comply to the DOM spec, only mocking
|
|
227
|
-
window.HTMLElement.prototype.getClientRects = function () {
|
|
228
|
-
return [ 'trick-jsdom-into-having-size-for-element-rect' ];
|
|
229
|
-
};
|
|
230
|
-
} );
|
|
231
|
-
|
|
232
|
-
afterAll( () => {
|
|
233
|
-
window.HTMLElement.prototype.getClientRects = originalGetClientRects;
|
|
234
|
-
} );
|
|
235
|
-
|
|
236
219
|
describe( 'Adherence to spec and basic behavior', () => {
|
|
237
220
|
it( 'should apply the correct roles, semantics and attributes', async () => {
|
|
238
221
|
await render( <UncontrolledTabs tabs={ TABS } /> );
|
|
@@ -62,7 +62,6 @@ const MyTextControl = () => {
|
|
|
62
62
|
|
|
63
63
|
return (
|
|
64
64
|
<TextControl
|
|
65
|
-
__next40pxDefaultSize
|
|
66
65
|
label="Additional CSS Class"
|
|
67
66
|
value={ className }
|
|
68
67
|
onChange={ ( value ) => setClassName( value ) }
|
|
@@ -127,14 +126,6 @@ A function that receives the value of the input.
|
|
|
127
126
|
- Type: `function`
|
|
128
127
|
- Required: Yes
|
|
129
128
|
|
|
130
|
-
#### __next40pxDefaultSize
|
|
131
|
-
|
|
132
|
-
Start opting into the larger default height that will become the default size in a future version.
|
|
133
|
-
|
|
134
|
-
- Type: `Boolean`
|
|
135
|
-
- Required: No
|
|
136
|
-
- Default: `false`
|
|
137
|
-
|
|
138
129
|
## Related components
|
|
139
130
|
|
|
140
131
|
- To offer users more constrained options for input, use SelectControl, RadioControl, CheckboxControl, or RangeControl.
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
4
|
import type { ChangeEvent, ForwardedRef } from 'react';
|
|
5
|
-
import clsx from 'clsx';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* WordPress dependencies
|
|
@@ -16,16 +15,15 @@ import { forwardRef } from '@wordpress/element';
|
|
|
16
15
|
import BaseControl from '../base-control';
|
|
17
16
|
import type { WordPressComponentProps } from '../context';
|
|
18
17
|
import type { TextControlProps } from './types';
|
|
19
|
-
import { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';
|
|
20
18
|
|
|
21
19
|
function UnforwardedTextControl(
|
|
22
20
|
props: WordPressComponentProps< TextControlProps, 'input', false >,
|
|
23
21
|
ref: ForwardedRef< HTMLInputElement >
|
|
24
22
|
) {
|
|
25
23
|
const {
|
|
26
|
-
// Prevent passing
|
|
24
|
+
// Prevent passing legacy props to `input`.
|
|
27
25
|
__nextHasNoMarginBottom: _,
|
|
28
|
-
__next40pxDefaultSize
|
|
26
|
+
__next40pxDefaultSize: __,
|
|
29
27
|
label,
|
|
30
28
|
hideLabelFromVision,
|
|
31
29
|
value,
|
|
@@ -40,12 +38,6 @@ function UnforwardedTextControl(
|
|
|
40
38
|
const onChangeValue = ( event: ChangeEvent< HTMLInputElement > ) =>
|
|
41
39
|
onChange( event.target.value );
|
|
42
40
|
|
|
43
|
-
maybeWarnDeprecated36pxSize( {
|
|
44
|
-
componentName: 'TextControl',
|
|
45
|
-
size: undefined,
|
|
46
|
-
__next40pxDefaultSize,
|
|
47
|
-
} );
|
|
48
|
-
|
|
49
41
|
return (
|
|
50
42
|
<BaseControl
|
|
51
43
|
label={ label }
|
|
@@ -55,9 +47,7 @@ function UnforwardedTextControl(
|
|
|
55
47
|
className={ className }
|
|
56
48
|
>
|
|
57
49
|
<input
|
|
58
|
-
className=
|
|
59
|
-
'is-next-40px-default-size': __next40pxDefaultSize,
|
|
60
|
-
} ) }
|
|
50
|
+
className="components-text-control__input"
|
|
61
51
|
type={ type }
|
|
62
52
|
id={ id }
|
|
63
53
|
value={ value }
|
|
@@ -82,7 +72,6 @@ function UnforwardedTextControl(
|
|
|
82
72
|
*
|
|
83
73
|
* return (
|
|
84
74
|
* <TextControl
|
|
85
|
-
* __next40pxDefaultSize
|
|
86
75
|
* label="Additional CSS Class"
|
|
87
76
|
* value={ className }
|
|
88
77
|
* onChange={ ( value ) => setClassName( value ) }
|
|
@@ -46,7 +46,6 @@ const DefaultTemplate: StoryFn< typeof TextControl > = ( {
|
|
|
46
46
|
|
|
47
47
|
return (
|
|
48
48
|
<TextControl
|
|
49
|
-
__next40pxDefaultSize
|
|
50
49
|
{ ...args }
|
|
51
50
|
value={ value }
|
|
52
51
|
onChange={ ( v ) => {
|
|
@@ -61,7 +60,6 @@ export const Default: StoryFn< typeof TextControl > = DefaultTemplate.bind(
|
|
|
61
60
|
{}
|
|
62
61
|
);
|
|
63
62
|
Default.args = {
|
|
64
|
-
__next40pxDefaultSize: true,
|
|
65
63
|
placeholder: 'Placeholder',
|
|
66
64
|
};
|
|
67
65
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
.components-text-control__input[type="month"],
|
|
19
19
|
.components-text-control__input[type="number"] {
|
|
20
20
|
width: 100%;
|
|
21
|
-
height: $grid-unit-
|
|
21
|
+
height: $grid-unit-50;
|
|
22
22
|
// Override input style margin in WP forms.css.
|
|
23
23
|
margin: 0;
|
|
24
24
|
background: $components-color-background;
|
|
@@ -26,19 +26,15 @@
|
|
|
26
26
|
@include input-control( $components-color-accent );
|
|
27
27
|
border-color: $components-color-border;
|
|
28
28
|
|
|
29
|
+
// Subtract 1px to account for the border, which isn't included on the element
|
|
30
|
+
// on newer components like InputControl, SelectControl, etc.
|
|
31
|
+
// These values should be shared with the `controlPaddingX` in ./utils/config-values.js
|
|
32
|
+
padding-left: $grid-unit-15;
|
|
33
|
+
padding-right: $grid-unit-15;
|
|
34
|
+
|
|
29
35
|
&::placeholder {
|
|
30
36
|
color: $components-color-dark-gray-placeholder;
|
|
31
37
|
}
|
|
32
|
-
|
|
33
|
-
&.is-next-40px-default-size {
|
|
34
|
-
height: $grid-unit-50;
|
|
35
|
-
|
|
36
|
-
// Subtract 1px to account for the border, which isn't included on the element
|
|
37
|
-
// on newer components like InputControl, SelectControl, etc.
|
|
38
|
-
// These values should be shared with the `controlPaddingX` in ./utils/config-values.js
|
|
39
|
-
padding-left: $grid-unit-15;
|
|
40
|
-
padding-right: $grid-unit-15;
|
|
41
|
-
}
|
|
42
38
|
}
|
|
43
39
|
|
|
44
40
|
.components-text-control__input[type="email"],
|
|
@@ -6,11 +6,7 @@ import { render, screen } from '@testing-library/react';
|
|
|
6
6
|
/**
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
const TextControl = ( props: React.ComponentProps< typeof _TextControl > ) => {
|
|
12
|
-
return <_TextControl { ...props } __next40pxDefaultSize />;
|
|
13
|
-
};
|
|
9
|
+
import TextControl from '..';
|
|
14
10
|
|
|
15
11
|
const noop = () => {};
|
|
16
12
|
|
|
@@ -39,7 +39,8 @@ export type TextControlProps = Pick<
|
|
|
39
39
|
/**
|
|
40
40
|
* Start opting into the larger default height that will become the default size in a future version.
|
|
41
41
|
*
|
|
42
|
-
* @
|
|
42
|
+
* @deprecated Default behavior since WordPress 7.1. Prop can be safely removed.
|
|
43
|
+
* @ignore
|
|
43
44
|
*/
|
|
44
45
|
__next40pxDefaultSize?: boolean;
|
|
45
46
|
};
|
|
@@ -274,6 +274,7 @@ exports[`ToggleGroupControl controlled should render correctly with icons 1`] =
|
|
|
274
274
|
>
|
|
275
275
|
<svg
|
|
276
276
|
aria-hidden="true"
|
|
277
|
+
fill="currentColor"
|
|
277
278
|
focusable="false"
|
|
278
279
|
height="24"
|
|
279
280
|
viewBox="0 0 24 24"
|
|
@@ -308,6 +309,7 @@ exports[`ToggleGroupControl controlled should render correctly with icons 1`] =
|
|
|
308
309
|
>
|
|
309
310
|
<svg
|
|
310
311
|
aria-hidden="true"
|
|
312
|
+
fill="currentColor"
|
|
311
313
|
focusable="false"
|
|
312
314
|
height="24"
|
|
313
315
|
viewBox="0 0 24 24"
|
|
@@ -848,6 +850,7 @@ exports[`ToggleGroupControl uncontrolled should render correctly with icons 1`]
|
|
|
848
850
|
>
|
|
849
851
|
<svg
|
|
850
852
|
aria-hidden="true"
|
|
853
|
+
fill="currentColor"
|
|
851
854
|
focusable="false"
|
|
852
855
|
height="24"
|
|
853
856
|
viewBox="0 0 24 24"
|
|
@@ -882,6 +885,7 @@ exports[`ToggleGroupControl uncontrolled should render correctly with icons 1`]
|
|
|
882
885
|
>
|
|
883
886
|
<svg
|
|
884
887
|
aria-hidden="true"
|
|
888
|
+
fill="currentColor"
|
|
885
889
|
focusable="false"
|
|
886
890
|
height="24"
|
|
887
891
|
viewBox="0 0 24 24"
|
|
@@ -126,7 +126,6 @@ export function DimensionPanel() {
|
|
|
126
126
|
onDeselect={ () => setPadding( undefined ) }
|
|
127
127
|
>
|
|
128
128
|
<BoxControl
|
|
129
|
-
__next40pxDefaultSize
|
|
130
129
|
label={ __( 'Padding' ) }
|
|
131
130
|
onChange={ setPadding }
|
|
132
131
|
values={ padding }
|
|
@@ -139,7 +138,6 @@ export function DimensionPanel() {
|
|
|
139
138
|
onDeselect={ () => setMargin( undefined ) }
|
|
140
139
|
>
|
|
141
140
|
<BoxControl
|
|
142
|
-
__next40pxDefaultSize
|
|
143
141
|
label={ __( 'Margin' ) }
|
|
144
142
|
onChange={ setMargin }
|
|
145
143
|
values={ margin }
|
|
@@ -24,29 +24,6 @@ const TestButton = forwardRef(
|
|
|
24
24
|
);
|
|
25
25
|
|
|
26
26
|
describe( 'TreeGrid', () => {
|
|
27
|
-
const originalGetClientRects = window.Element.prototype.getClientRects;
|
|
28
|
-
|
|
29
|
-
// `getClientRects` needs to be mocked so that `isVisible` from the `@wordpress/dom`
|
|
30
|
-
// `focusable` module can pass, in a JSDOM env where the DOM elements have no width/height.
|
|
31
|
-
const mockedGetClientRects = jest.fn( () => [
|
|
32
|
-
{
|
|
33
|
-
x: 0,
|
|
34
|
-
y: 0,
|
|
35
|
-
width: 100,
|
|
36
|
-
height: 100,
|
|
37
|
-
},
|
|
38
|
-
] );
|
|
39
|
-
|
|
40
|
-
beforeAll( () => {
|
|
41
|
-
// @ts-expect-error - This is just a mock
|
|
42
|
-
window.Element.prototype.getClientRects =
|
|
43
|
-
jest.fn( mockedGetClientRects );
|
|
44
|
-
} );
|
|
45
|
-
|
|
46
|
-
afterAll( () => {
|
|
47
|
-
window.Element.prototype.getClientRects = originalGetClientRects;
|
|
48
|
-
} );
|
|
49
|
-
|
|
50
27
|
describe( 'simple rendering', () => {
|
|
51
28
|
it( 'renders a table, tbody and any child elements', () => {
|
|
52
29
|
const { container } = render(
|
|
@@ -17,11 +17,7 @@ const UnforwardedValidatedTextControl = (
|
|
|
17
17
|
customValidity,
|
|
18
18
|
markWhenOptional,
|
|
19
19
|
...restProps
|
|
20
|
-
}:
|
|
21
|
-
React.ComponentProps< typeof TextControl >,
|
|
22
|
-
'__next40pxDefaultSize'
|
|
23
|
-
> &
|
|
24
|
-
ValidatedControlProps,
|
|
20
|
+
}: React.ComponentProps< typeof TextControl > & ValidatedControlProps,
|
|
25
21
|
forwardedRef: React.ForwardedRef< HTMLInputElement >
|
|
26
22
|
) => {
|
|
27
23
|
const validityTargetRef = useRef< HTMLInputElement >( null );
|
|
@@ -34,11 +30,7 @@ const UnforwardedValidatedTextControl = (
|
|
|
34
30
|
customValidity={ customValidity }
|
|
35
31
|
getValidityTarget={ () => validityTargetRef.current }
|
|
36
32
|
>
|
|
37
|
-
<TextControl
|
|
38
|
-
__next40pxDefaultSize
|
|
39
|
-
ref={ mergedRefs }
|
|
40
|
-
{ ...restProps }
|
|
41
|
-
/>
|
|
33
|
+
<TextControl ref={ mergedRefs } { ...restProps } />
|
|
42
34
|
</ControlWithError>
|
|
43
35
|
);
|
|
44
36
|
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/box-control/input-control.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { settings } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport Tooltip from '../tooltip';\nimport { parseQuantityAndUnitFromRawValue } from '../unit-control/utils';\nimport { CUSTOM_VALUE_SETTINGS, getMergedValue, getAllowedSides, getPresetIndexFromValue, getPresetValueFromIndex, isValuePreset, isValuesDefined, isValueMixed, LABELS } from './utils';\nimport { FlexedBoxControlIcon, FlexedRangeControl, InputWrapper, StyledUnitControl } from './styles/box-control-styles';\nimport Button from '../button';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst noop = () => {};\nfunction getSidesToModify(side, sides, isAlt) {\n const allowedSides = getAllowedSides(sides);\n let modifiedSides = [];\n switch (side) {\n case 'all':\n modifiedSides = ['top', 'bottom', 'left', 'right'];\n break;\n case 'horizontal':\n modifiedSides = ['left', 'right'];\n break;\n case 'vertical':\n modifiedSides = ['top', 'bottom'];\n break;\n default:\n modifiedSides = [side];\n }\n if (isAlt) {\n switch (side) {\n case 'top':\n modifiedSides.push('bottom');\n break;\n case 'bottom':\n modifiedSides.push('top');\n break;\n case 'left':\n modifiedSides.push('left');\n break;\n case 'right':\n modifiedSides.push('right');\n break;\n }\n }\n return modifiedSides.filter(s => allowedSides.has(s));\n}\nexport default function BoxInputControl({\n __next40pxDefaultSize,\n onChange = noop,\n onFocus = noop,\n values,\n selectedUnits,\n setSelectedUnits,\n sides,\n side,\n min = 0,\n presets,\n presetKey,\n ...props\n}) {\n const defaultValuesToModify = getSidesToModify(side, sides);\n const handleOnFocus = event => {\n onFocus(event, {\n side\n });\n };\n const handleOnChange = nextValues => {\n onChange(nextValues);\n };\n const handleRawOnValueChange = next => {\n const nextValues = {\n ...values\n };\n defaultValuesToModify.forEach(modifiedSide => {\n nextValues[modifiedSide] = next;\n });\n handleOnChange(nextValues);\n };\n const handleOnValueChange = (next, extra) => {\n const nextValues = {\n ...values\n };\n const isNumeric = next !== undefined && !isNaN(parseFloat(next));\n const nextValue = isNumeric ? next : undefined;\n const modifiedSides = getSidesToModify(side, sides,\n /**\n * Supports changing pair sides. For example, holding the ALT key\n * when changing the TOP will also update BOTTOM.\n */\n // @ts-expect-error - TODO: event.altKey is only present when the change event was\n // triggered by a keyboard event. Should this feature be implemented differently so\n // it also works with drag events?\n !!extra?.event.altKey);\n modifiedSides.forEach(modifiedSide => {\n nextValues[modifiedSide] = nextValue;\n });\n handleOnChange(nextValues);\n };\n const handleOnUnitChange = next => {\n const newUnits = {\n ...selectedUnits\n };\n defaultValuesToModify.forEach(modifiedSide => {\n newUnits[modifiedSide] = next;\n });\n setSelectedUnits(newUnits);\n };\n const mergedValue = getMergedValue(values, defaultValuesToModify);\n const hasValues = isValuesDefined(values);\n const isMixed = hasValues && defaultValuesToModify.length > 1 && isValueMixed(values, defaultValuesToModify);\n const [parsedQuantity, parsedUnit] = parseQuantityAndUnitFromRawValue(mergedValue);\n const computedUnit = hasValues ? parsedUnit : selectedUnits[defaultValuesToModify[0]];\n const generatedId = useInstanceId(BoxInputControl, 'box-control-input');\n const inputId = [generatedId, side].join('-');\n const isMixedUnit = defaultValuesToModify.length > 1 && mergedValue === undefined && defaultValuesToModify.some(s => selectedUnits[s] !== computedUnit);\n const usedValue = mergedValue === undefined && computedUnit ? computedUnit : mergedValue;\n const mixedPlaceholder = isMixed || isMixedUnit ? __('Mixed') : undefined;\n const hasPresets = presets && presets.length > 0 && presetKey;\n const hasPresetValue = hasPresets && mergedValue !== undefined && !isMixed && isValuePreset(mergedValue, presetKey);\n const [showCustomValueControl, setShowCustomValueControl] = useState(!hasPresets || !hasPresetValue && !isMixed && mergedValue !== undefined);\n const presetIndex = hasPresetValue ? getPresetIndexFromValue(mergedValue, presetKey, presets) : undefined;\n const marks = hasPresets ? [{\n value: 0,\n label: '',\n tooltip: __('None')\n }, ...presets.map((preset, index) => ({\n value: index + 1,\n label: '',\n tooltip: preset.name ?? preset.slug\n }))] : [];\n return /*#__PURE__*/_jsxs(InputWrapper, {\n expanded: true,\n children: [/*#__PURE__*/_jsx(FlexedBoxControlIcon, {\n side: side,\n sides: sides\n }), showCustomValueControl && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Tooltip, {\n placement: \"top-end\",\n text: LABELS[side],\n children: /*#__PURE__*/_jsx(StyledUnitControl, {\n ...props,\n min: min,\n __shouldNotWarnDeprecated36pxSize: true,\n __next40pxDefaultSize: __next40pxDefaultSize,\n className: \"component-box-control__unit-control\",\n id: inputId,\n isPressEnterToChange: true,\n disableUnits: isMixed || isMixedUnit,\n value: usedValue,\n onChange: handleOnValueChange,\n onUnitChange: handleOnUnitChange,\n onFocus: handleOnFocus,\n label: LABELS[side],\n placeholder: mixedPlaceholder,\n hideLabelFromVision: true\n })\n }), /*#__PURE__*/_jsx(FlexedRangeControl, {\n __next40pxDefaultSize: __next40pxDefaultSize,\n __shouldNotWarnDeprecated36pxSize: true,\n \"aria-controls\": inputId,\n label: LABELS[side],\n hideLabelFromVision: true,\n onChange: newValue => {\n handleOnValueChange(newValue !== undefined ? [newValue, computedUnit].join('') : undefined);\n },\n min: isFinite(min) ? min : 0,\n max: CUSTOM_VALUE_SETTINGS[computedUnit ?? 'px']?.max ?? 10,\n step: CUSTOM_VALUE_SETTINGS[computedUnit ?? 'px']?.step ?? 0.1,\n value: parsedQuantity ?? 0,\n withInputField: false\n })]\n }), hasPresets && !showCustomValueControl && /*#__PURE__*/_jsx(FlexedRangeControl, {\n __next40pxDefaultSize: true,\n className: \"spacing-sizes-control__range-control\",\n value: presetIndex !== undefined ? presetIndex + 1 : 0,\n onChange: newIndex => {\n const newValue = newIndex === 0 || newIndex === undefined ? undefined : getPresetValueFromIndex(newIndex - 1, presetKey, presets);\n handleRawOnValueChange(newValue);\n },\n withInputField: false,\n \"aria-valuenow\": presetIndex !== undefined ? presetIndex + 1 : 0,\n \"aria-valuetext\": marks[presetIndex !== undefined ? presetIndex + 1 : 0].tooltip,\n renderTooltipContent: index => marks[!index ? 0 : index].tooltip,\n min: 0,\n max: marks.length - 1,\n marks: marks,\n label: LABELS[side],\n hideLabelFromVision: true\n }), hasPresets && /*#__PURE__*/_jsx(Button, {\n label: showCustomValueControl ? __('Use size preset') : __('Set custom size'),\n icon: settings,\n onClick: () => {\n setShowCustomValueControl(!showCustomValueControl);\n },\n isPressed: showCustomValueControl,\n size: \"small\",\n iconSize: 24\n })]\n }, `box-control-${side}`);\n}"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_utils", "_jsxs", "_jsx", "_Fragment", "Tooltip", "Button"]
|
|
7
|
-
}
|