UNPKG

@talend/react-components

Version:
99 lines (98 loc) 3.19 kB
"use strict"; 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 _datetimeExtraction = require("../datetime-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, useSeconds: props.useSeconds, useUTC: props.useUTC, timezone: props.timezone, required: props.required }; } const initialState = (0, _datetimeExtraction.extractParts)(props.value, getDateOptions()); const [state, setState] = (0, _react.useState)(initialState); function onChange(event, payload) { if (props.onChange) { const { datetime, textInput, errors, errorMessage } = payload; props.onChange(event, { datetime, textInput, errors, errorMessage }); } } (0, _react.useEffect)(() => { if (props.value !== state.datetime) { const nextState = (0, _datetimeExtraction.extractParts)(props.value, getDateOptions()); setState(nextState); // Triggering onChange will propagate the error to the outside world when the // new input is invalid and different then the default dateTime input. if (nextState.errors && nextState.errors.length > 0) { onChange(null, nextState); } } }, [props.value]); function onDateChange(event, payload) { const time = state.time || props.defaultTimeValue; const newState = (0, _datetimeExtraction.updatePartsOnDateChange)(payload, time, getDateOptions()); const nextState = { ...state, ...newState }; setState(nextState); onChange(event, nextState); } function onTimeChange(event, payload) { const newState = (0, _datetimeExtraction.updatePartsOnTimeChange)(payload, state.date, getDateOptions()); const nextState = { ...state, ...newState }; setState(nextState); onChange(event, nextState); } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Context.DateTimeContext.Provider, { value: { date: state.date, time: state.time, onDateChange, onTimeChange }, children: props.children }); } ContextualManager.displayName = 'DateTime.Manager'; ContextualManager.propTypes = { children: _propTypes.default.node, dateFormat: _propTypes.default.string, defaultTimeValue: _propTypes.default.string, onChange: _propTypes.default.func, required: _propTypes.default.bool, timezone: _propTypes.default.string, useSeconds: _propTypes.default.bool, useUTC: _propTypes.default.bool, value: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]) }; ContextualManager.defaultProps = { dateFormat: 'YYYY-MM-DD', useSeconds: false, useUTC: false }; var _default = exports.default = ContextualManager; //# sourceMappingURL=Manager.component.js.map