@talend/react-components
Version:
Set of react components.
103 lines (102 loc) • 3.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Context = require("../Context");
var _dateExtraction = require("../date-extraction");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function ContextualManager(props) {
function getDateOptions() {
return {
dateFormat: props.dateFormat,
useUTC: props.useUTC,
required: props.required,
timezone: props.timezone
};
}
const initialState = (0, _dateExtraction.extractDate)(props.value, getDateOptions());
const [state, setState] = (0, _react.useState)(initialState);
(0, _react.useEffect)(() => {
if (props.value !== state.date) {
const newState = (0, _dateExtraction.extractDate)(props.value, getDateOptions());
setState(newState);
}
}, [props.value]);
(0, _react.useEffect)(() => {
(0, _dateExtraction.checkSupportedDateFormat)(props.dateFormat);
}, [props.dateFormat]);
(0, _react.useEffect)(() => {
if (props.timezone) {
(0, _dateExtraction.checkSupportedTimezone)(props.timezone);
}
}, [props.timezone]);
function onChange(event, origin, nextState) {
if (!props.onChange) {
return;
}
const {
errorMessage,
date,
textInput,
errors
} = nextState;
props.onChange(event, {
errors,
errorMessage,
date,
textInput,
origin
});
}
function onInputChange(event) {
const textInput = event.target.value;
const nextState = (0, _dateExtraction.extractPartsFromTextInput)(textInput, getDateOptions(), props.isDisabledChecker);
setState(nextState);
onChange(event, 'INPUT', nextState);
}
function onPickerChange(event, {
date
}) {
const nextState = (0, _dateExtraction.extractFromDate)(date, getDateOptions());
setState(nextState);
onChange(event, 'PICKER', nextState);
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Context.DateContext.Provider, {
value: {
value: {
textInput: state.textInput,
date: state.localDate
},
inputManagement: {
onChange: onInputChange,
placeholder: props.dateFormat
},
pickerManagement: {
onSubmit: onPickerChange,
useUTC: props.useUTC
}
},
children: props.children
});
}
ContextualManager.propTypes = {
children: _propTypes.default.node,
dateFormat: _propTypes.default.string,
onChange: _propTypes.default.func,
required: _propTypes.default.bool,
timezone: _propTypes.default.string,
useUTC: _propTypes.default.bool,
value: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]),
isDisabledChecker: _propTypes.default.func
};
ContextualManager.defaultProps = {
dateFormat: 'YYYY-MM-DD',
useUTC: false
};
ContextualManager.displayName = 'Date.Manager';
var _default = exports.default = ContextualManager;
//# sourceMappingURL=Manager.component.js.map