@wordpress/components
Version:
UI components for WordPress.
146 lines (105 loc) • 2.99 kB
Markdown
BoxControl components let users set values for Top, Right, Bottom, and Left. This can be used as an input control for values like `padding` or `margin`.
```jsx
import { __experimentalBoxControl as BoxControl } from '@wordpress/components';
import { useState } from '@wordpress/element';
const Example = () => {
const [ values, setValues ] = useState( {
top: '50px',
left: '10%',
right: '10%',
bottom: '50px',
} );
return (
<BoxControl
values={ values }
onChange={ ( nextValues ) => setValues( nextValues ) }
/>
);
};
```
BoxControl provides a companion component that visually renders value changes. Place the component you would like the sides visualized within the companion `<Visualizer>` component.
```jsx
import { __experimentalBoxControl as BoxControl } from '@wordpress/components';
import { useState } from '@wordpress/element';
import MyComponent from './my-component';
const { Visualizer } = BoxControl;
const Example = () => {
const [ values, setValues ] = useState( {
top: '50px',
left: '10%',
right: '10%',
bottom: '50px',
} );
return (
<>
<BoxControl
values={ values }
onChange={ ( nextValues ) => setValues( nextValues ) }
/>
<Visualizer>
<MyComponent />
</Visualizer>
</>
);
};
```
Alternatively, the `<Visualizer>` can be nested as a sibling to the component you would like visualized. Using `<Visualizer />` in this manner will require the parent element having a `position` style.
```jsx
import { __experimentalBoxControl as BoxControl } from '@wordpress/components';
import { useState } from '@wordpress/element';
import MyComponent from './my-component';
const { Visualizer } = BoxControl;
const Example = () => {
const [ values, setValues ] = useState( {
top: '50px',
left: '10%',
right: '10%',
bottom: '50px',
} );
return (
<>
<BoxControl
values={ values }
onChange={ ( nextValues ) => setValues( nextValues ) }
/>
<div style={ { position: 'relative' } }>
<Visualizer />
<MyComponent />
</div>
</>
);
};
```
Props for the internal [InputControl](../input-control) components.
- Type: `Object`
- Required: No
Heading label for BoxControl.
- Type: `String`
- Required: No
- Default: `Box Control`
A callback function when an input value changes.
- Type: `Function`
- Required: Yes
A callback function for visualizer changes, based on input hover interactions.
- Type: `Function`
- Required: Yes
Collection of sides to allow control of. If omitted or empty, all sides will be available.
- Type: `Array<Object>`
- Required: No
Collection of available units which are compatible with [UnitControl](../unit-control).
- Type: `Array<Object>`
- Required: No
The `top`, `right`, `bottom`, and `left` box dimension values.
- Type: `Object`
- Required: No