UNPKG

@wordpress/components

Version:
162 lines (145 loc) 4.59 kB
"use strict"; 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