@fakel/rest-admin
Version:
An application that makes it easier to work with your API
57 lines (56 loc) • 2.5 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import React, { useState } from 'react';
import { ChromePicker } from 'react-color';
import TextInput from './TextInput';
import CoreInput from './Input';
var ColorInput = function (props) {
var _a = useState('#000000'), color = _a[0], setColor = _a[1];
var _b = useState(false), displayPicker = _b[0], setDisplayPicker = _b[1];
var handleInputFocus = function () {
setDisplayPicker(true);
};
var handleInputUnfocus = function () {
setDisplayPicker(false);
};
var handleInputChange = function (form, event) {
var value = event.currentTarget.value;
form.setFieldValue(props.name, value);
};
var handleChangeColor = function (selectedColor) {
setColor(selectedColor.hex);
};
var handleColorChangeComplete = function (form, selectedColor) {
form.setFieldValue(props.name, selectedColor.hex);
};
return (React.createElement(CoreInput, __assign({}, props), function (form) {
return (React.createElement("div", { style: { position: 'relative' } },
React.createElement(TextInput, __assign({}, props, { label: "", onChange: function (event) { return handleInputChange(form, event); }, onFocus: handleInputFocus })),
displayPicker ? (React.createElement("div", { style: {
position: 'absolute',
top: '110%',
left: 0,
zIndex: 2,
} },
React.createElement("div", { onClick: handleInputUnfocus, onKeyPress: handleInputUnfocus, role: "textbox", tabIndex: 0, "aria-label": "ColorInput", style: {
position: 'fixed',
top: 0,
left: 0,
right: 0,
bottom: 0,
} }),
React.createElement(ChromePicker, { color: color, onChange: handleChangeColor, onChangeComplete: function (selectedColor) {
handleColorChangeComplete(form, selectedColor);
} }))) : null));
}));
};
export default ColorInput;