@skbkontur/db-viewer-ui
Version:
Database Viewer with custom configuration
71 lines • 2.89 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TimePicker = void 0;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const edi_ui_1 = require("@skbkontur/edi-ui");
const react_ui_1 = require("@skbkontur/react-ui");
const react_1 = tslib_1.__importDefault(require("react"));
function unlessNull(value, defaultValue) {
if (value === null || value === undefined) {
return defaultValue;
}
return value;
}
const emptyValue = "";
class TimePicker extends react_1.default.Component {
constructor(props) {
super(props);
Object.defineProperty(this, "handleChange", {
enumerable: true,
configurable: true,
writable: true,
value: (value) => {
this.setState({ value: value });
}
});
Object.defineProperty(this, "handleBlur", {
enumerable: true,
configurable: true,
writable: true,
value: (e) => {
const { defaultTime } = this.props;
const { value } = this.state;
const trimmed = value.endsWith(".") || value.endsWith(":") ? value.slice(0, -1) : value;
if (edi_ui_1.TimeUtils.isCorrectTime(trimmed)) {
this.props.onChange(e, trimmed);
if (defaultTime === trimmed) {
this.setState({ value: emptyValue });
}
}
else {
this.setState({ value: emptyValue });
this.props.onChange(e, defaultTime || "00:00");
}
}
});
Object.defineProperty(this, "handleFocus", {
enumerable: true,
configurable: true,
writable: true,
value: () => {
const { defaultTime } = this.props;
if (!edi_ui_1.TimeUtils.isCorrectTime(this.state.value)) {
this.setState({ value: defaultTime });
}
}
});
this.state = { value: unlessNull(props.value, emptyValue) };
}
componentDidUpdate(prevProps) {
if (prevProps.value !== this.props.value) {
this.setState({ value: unlessNull(this.props.value, emptyValue) });
}
}
render() {
const { disabled, warning, error, useSeconds, defaultTime } = this.props;
return ((0, jsx_runtime_1.jsx)(react_ui_1.Input, { disabled: disabled, mask: useSeconds ? "99:99:99.999" : "99:99", value: this.state.value, width: useSeconds ? 96 : 58, error: error, placeholder: disabled ? undefined : defaultTime, onValueChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, warning: warning }));
}
}
exports.TimePicker = TimePicker;
//# sourceMappingURL=TimePicker.js.map