UNPKG

@wordpress/components

Version:
90 lines (75 loc) 2.34 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = AllInputControl; var _element = require("@wordpress/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _unitControl = _interopRequireDefault(require("./unit-control")); var _utils = require("./utils"); /** * Internal dependencies */ const noop = () => {}; function AllInputControl(_ref) { let { onChange = noop, onFocus = noop, onHoverOn = noop, onHoverOff = noop, values, sides, selectedUnits, setSelectedUnits, ...props } = _ref; const allValue = (0, _utils.getAllValue)(values, selectedUnits, sides); const hasValues = (0, _utils.isValuesDefined)(values); const isMixed = hasValues && (0, _utils.isValuesMixed)(values, selectedUnits, sides); const allPlaceholder = isMixed ? _utils.LABELS.mixed : undefined; const handleOnFocus = event => { onFocus(event, { side: 'all' }); }; const handleOnChange = next => { const isNumeric = next !== undefined && !isNaN(parseFloat(next)); const nextValue = isNumeric ? next : undefined; const nextValues = (0, _utils.applyValueToSides)(values, nextValue, sides); onChange(nextValues); }; // Set selected unit so it can be used as fallback by unlinked controls // when individual sides do not have a value containing a unit. const handleOnUnitChange = unit => { const newUnits = (0, _utils.applyValueToSides)(selectedUnits, unit, sides); setSelectedUnits(newUnits); }; const handleOnHoverOn = () => { onHoverOn({ top: true, bottom: true, left: true, right: true }); }; const handleOnHoverOff = () => { onHoverOff({ top: false, bottom: false, left: false, right: false }); }; return (0, _element.createElement)(_unitControl.default, (0, _extends2.default)({}, props, { disableUnits: isMixed, isOnly: true, value: allValue, onChange: handleOnChange, onUnitChange: handleOnUnitChange, onFocus: handleOnFocus, onHoverOn: handleOnHoverOn, onHoverOff: handleOnHoverOff, placeholder: allPlaceholder })); } //# sourceMappingURL=all-input-control.js.map