UNPKG

@wordpress/components

Version:
81 lines (68 loc) 2.42 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = UnitSelectControl; var _element = require("@wordpress/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _lodash = require("lodash"); var _classnames = _interopRequireDefault(require("classnames")); var _unitControlStyles = require("./styles/unit-control-styles"); var _utils = require("./utils"); /** * External dependencies */ /** * Internal dependencies */ /** * Renders a `select` if there are multiple units. * Otherwise, renders a non-selectable label. * * @param {Object} props Component props. * @param {string} [props.className] Class to set on the `select` element. * @param {boolean} [props.isTabbable=true] Whether the control can be focused via keyboard navigation. * @param {Array} [props.options=CSS_UNITS] Available units to select from. * @param {Function} [props.onChange=noop] A callback function invoked when the value is changed. * @param {string} [props.size="default"] Size of the control option. Supports "default" and "small". * @param {string} [props.value="px"] Current unit. */ function UnitSelectControl({ className, isTabbable = true, options = _utils.CSS_UNITS, onChange = _lodash.noop, size = 'default', value = 'px', ...props }) { if (!(0, _utils.hasUnits)(options)) { return (0, _element.createElement)(_unitControlStyles.UnitLabel, { className: "components-unit-control__unit-label", size: size }, value); } const handleOnChange = event => { const { value: unitValue } = event.target; const data = options.find(option => option.value === unitValue); onChange(unitValue, { event, data }); }; const classes = (0, _classnames.default)('components-unit-control__select', className); return (0, _element.createElement)(_unitControlStyles.UnitSelect, (0, _extends2.default)({ className: classes, onChange: handleOnChange, size: size, tabIndex: isTabbable ? null : '-1', value: value }, props), options.map(option => (0, _element.createElement)("option", { value: option.value, key: option.value }, option.label))); } //# sourceMappingURL=unit-select-control.js.map