Skip to content

Commit

Permalink
Storybook: Add BorderRadiusControl story (#67383)
Browse files Browse the repository at this point in the history
* Storybook: Add BorderRadiusControl story

* Update BorderRadiusControl story to CSF 3

* Update BorderRadiusControl story to enhance argTypes documentation

* Add README for BorderRadiusControl component

* Update BorderRadiusControl README with correct prop requirements and defaults

* Update BorderRadiusControl README and Story

* Remove Unnecessary file

* Update README

Co-authored-by: Sukhendu2002 <[email protected]>
Co-authored-by: t-hamano <[email protected]>
  • Loading branch information
3 people authored Dec 30, 2024
1 parent 37a06bd commit a28455c
Show file tree
Hide file tree
Showing 2 changed files with 117 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# BorderRadiusControl

`BorderRadiusControl` is a React component that provides a user interface for managing border radius values. It allows users to control the border radius of each corner independently or link them together for uniform values.

## Usage

```jsx
/**
* WordPress dependencies
*/
import { __experimentalBorderRadiusControl as BorderRadiusControl } from '@wordpress/block-editor';
import { useState } from '@wordpress/element';

const MyBorderRadiusControl = () => {
const [values, setValues] = useState({
topLeft: '10px',
topRight: '10px',
bottomLeft: '10px',
bottomRight: '10px',
});

return (
<BorderRadiusControl
values={values}
onChange={setValues}
/>
);
};
```

## Props

### values

An object containing the border radius values for each corner.

- **Type:** `Object`
- **Required:** No
- **Default:** `undefined`

The values object has the following schema:

| Property | Description | Type |
| ----------- | ------------------------------------ | ------ |
| topLeft | Border radius for top left corner | string |
| topRight | Border radius for top right corner | string |
| bottomLeft | Border radius for bottom left corner | string |
| bottomRight | Border radius for bottom right corner| string |

Each value should be a valid CSS border radius value (e.g., '10px', '1em').

### onChange

Callback function that is called when any border radius value changes.

- **Type:** `Function`
- **Required:** Yes

The function receives the updated values object as its argument.
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/**
* WordPress dependencies
*/
import { useState } from '@wordpress/element';

/**
* Internal dependencies
*/
import BorderRadiusControl from '../';

const meta = {
title: 'BlockEditor/BorderRadiusControl',
component: BorderRadiusControl,
parameters: {
docs: {
canvas: { sourceState: 'shown' },
description: {
component: 'Control to display border radius options.',
},
},
},
argTypes: {
values: {
control: 'object',
description: 'Border radius values.',
table: {
type: { summary: 'object' },
},
},
onChange: {
action: 'onChange',
control: { type: null },
table: {
type: { summary: 'function' },
},
description: 'Callback to handle onChange.',
},
},
};

export default meta;

export const Default = {
render: function Template( { onChange, ...args } ) {
const [ values, setValues ] = useState( args.values );

return (
<BorderRadiusControl
{ ...args }
values={ values }
onChange={ ( ...changeArgs ) => {
setValues( ...changeArgs );
onChange( ...changeArgs );
} }
/>
);
},
};

1 comment on commit a28455c

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flaky tests detected in a28455c.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/12545158898
📝 Reported issues:

Please sign in to comment.