@wordpress/components
Version:
UI components for WordPress.
162 lines (145 loc) • 4.59 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ButtonAction = ButtonAction;
exports.DropdownLinkAction = DropdownLinkAction;
exports.Option = Option;
exports.default = void 0;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classnames = _interopRequireDefault(require("classnames"));
var _icons = require("@wordpress/icons");
var _button = _interopRequireDefault(require("../button"));
var _dropdown = _interopRequireDefault(require("../dropdown"));
var _tooltip = _interopRequireDefault(require("../tooltip"));
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function Option(_ref) {
let {
className,
isSelected,
selectedIconProps,
tooltipText,
...additionalProps
} = _ref;
const optionButton = (0, _element.createElement)(_button.default, (0, _extends2.default)({
isPressed: isSelected,
className: "components-circular-option-picker__option"
}, additionalProps));
return (0, _element.createElement)("div", {
className: (0, _classnames.default)(className, 'components-circular-option-picker__option-wrapper')
}, tooltipText ? (0, _element.createElement)(_tooltip.default, {
text: tooltipText
}, optionButton) : optionButton, isSelected && (0, _element.createElement)(_icons.Icon, (0, _extends2.default)({
icon: _icons.check
}, selectedIconProps ? selectedIconProps : {})));
}
function DropdownLinkAction(_ref2) {
let {
buttonProps,
className,
dropdownProps,
linkText
} = _ref2;
return (0, _element.createElement)(_dropdown.default, (0, _extends2.default)({
className: (0, _classnames.default)('components-circular-option-picker__dropdown-link-action', className),
renderToggle: _ref3 => {
let {
isOpen,
onToggle
} = _ref3;
return (0, _element.createElement)(_button.default, (0, _extends2.default)({
"aria-expanded": isOpen,
"aria-haspopup": "true",
onClick: onToggle,
variant: "link"
}, buttonProps), linkText);
}
}, dropdownProps));
}
function ButtonAction(_ref4) {
let {
className,
children,
...additionalProps
} = _ref4;
return (0, _element.createElement)(_button.default, (0, _extends2.default)({
className: (0, _classnames.default)('components-circular-option-picker__clear', className),
variant: "tertiary"
}, additionalProps), children);
}
/**
*`CircularOptionPicker` is a component that displays a set of options as circular buttons.
*
* ```jsx
* import { CircularOptionPicker } from '../circular-option-picker';
* import { useState } from '@wordpress/element';
*
* const Example = () => {
* const [ currentColor, setCurrentColor ] = useState();
* const colors = [
* { color: '#f00', name: 'Red' },
* { color: '#0f0', name: 'Green' },
* { color: '#00f', name: 'Blue' },
* ];
* const colorOptions = (
* <>
* { colors.map( ( { color, name }, index ) => {
* return (
* <CircularOptionPicker.Option
* key={ `${ color }-${ index }` }
* tooltipText={ name }
* style={ { backgroundColor: color, color } }
* isSelected={ index === currentColor }
* onClick={ () => setCurrentColor( index ) }
* aria-label={ name }
* />
* );
* } ) }
* </>
* );
* return (
* <CircularOptionPicker
* options={ colorOptions }
* actions={
* <CircularOptionPicker.ButtonAction
* onClick={ () => setCurrentColor( undefined ) }
* >
* { 'Clear' }
* </CircularOptionPicker.ButtonAction>
* }
* />
* );
* };
* ```
*/
function CircularOptionPicker(props) {
const {
actions,
className,
options,
children
} = props;
return (0, _element.createElement)("div", {
className: (0, _classnames.default)('components-circular-option-picker', className)
}, (0, _element.createElement)("div", {
className: "components-circular-option-picker__swatches"
}, options), children, actions && (0, _element.createElement)("div", {
className: "components-circular-option-picker__custom-clear-wrapper"
}, actions));
}
CircularOptionPicker.Option = Option;
CircularOptionPicker.ButtonAction = ButtonAction;
CircularOptionPicker.DropdownLinkAction = DropdownLinkAction;
var _default = CircularOptionPicker;
exports.default = _default;
//# sourceMappingURL=index.js.map