@wordpress/components
Version:
UI components for WordPress.
84 lines (70 loc) • 1.98 kB
JavaScript
;
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 _lodash = require("lodash");
var _unitControl = _interopRequireDefault(require("./unit-control"));
var _utils = require("./utils");
/**
* External dependencies
*/
/**
* Internal dependencies
*/
function AllInputControl({
onChange = _lodash.noop,
onFocus = _lodash.noop,
onHoverOn = _lodash.noop,
onHoverOff = _lodash.noop,
values,
sides,
...props
}) {
const allValue = (0, _utils.getAllValue)(values);
const hasValues = (0, _utils.isValuesDefined)(values);
const isMixed = hasValues && (0, _utils.isValuesMixed)(values);
const allPlaceholder = isMixed ? _utils.LABELS.mixed : null;
const handleOnFocus = event => {
onFocus(event, {
side: 'all'
});
};
const handleOnChange = next => {
const nextValues = { ...values
};
const selectedSides = sides !== null && sides !== void 0 && sides.length ? sides : ['top', 'right', 'bottom', 'left'];
selectedSides.forEach(side => nextValues[side] = next);
onChange(nextValues);
};
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,
onFocus: handleOnFocus,
onHoverOn: handleOnHoverOn,
onHoverOff: handleOnHoverOff,
placeholder: allPlaceholder
}));
}
//# sourceMappingURL=all-input-control.js.map