nice-ui
Version:
React design system, components, and utilities
52 lines (51 loc) • 1.91 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.CopyInput = void 0;
const React = require("react");
const nano_theme_1 = require("nano-theme");
const NotchedOutline_1 = require("../NotchedOutline");
const Split_1 = require("../../3-list-item/Split");
const CopyButton_1 = require("../CopyButton");
const font = nano_theme_1.theme.font.ui2;
const inpClass = (0, nano_theme_1.rule)({
...font.bold,
fz: '15px',
lh: '1.4em',
d: 'block',
w: '100%',
bxz: 'border-box',
bd: 0,
bdrad: '4px',
mr: 0,
pd: '4px 5px',
out: 0,
'&:disabled': {
bg: 'transparent',
},
});
const CopyInput = (props) => {
const { disabled, value = '', label, size, readOnly, type = 'text' } = props;
const [focus] = React.useState(false);
const style = {};
if (size) {
const factor = size < 0 ? 1 : 2;
style.fontSize = `${15 + size * factor}px`;
style.paddingTop = `${4 + size * factor}px`;
style.paddingBottom = `${4 + size * factor}px`;
if (size < 0) {
style.fontWeight = font.mid.fw;
}
}
return (React.createElement(NotchedOutline_1.NotchedOutline, { label: label, active: focus, disabled: disabled || readOnly },
React.createElement(Split_1.Split, { style: { alignItems: 'center' } },
React.createElement("input", { className: inpClass, style: style, readOnly: true, value: value, type: type, disabled: disabled, onMouseDown: (event) => {
const input = event.nativeEvent.target;
if (!input)
return;
event.preventDefault();
input.select();
} }),
React.createElement("div", null,
React.createElement(CopyButton_1.CopyButton, { onCopy: () => value })))));
};
exports.CopyInput = CopyInput;
;