UNPKG

v5gl-form-builder

Version:

Customise form builder from ecsite

472 lines (427 loc) 19.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _UUID = _interopRequireDefault(require("../UUID")); var _core = require("@material-ui/core"); var _styles = require("@material-ui/core/styles"); var _reactDatepicker = _interopRequireDefault(require("react-datepicker")); var _dateFns = _interopRequireDefault(require("@date-io/date-fns")); var _CheckCircle = _interopRequireDefault(require("@material-ui/icons/CheckCircle")); var _RadioButtonUnchecked = _interopRequireDefault(require("@material-ui/icons/RadioButtonUnchecked")); var _pickers = require("@material-ui/pickers"); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var theme = (0, _styles.createMuiTheme)({ palette: { primary: { main: "#2C3E93" } }, overrides: { MuiFormControlLabel: { label: { fontSize: '0.875rem' } } } }); var DatePickerOptions = /*#__PURE__*/function (_React$Component) { (0, _inherits2["default"])(DatePickerOptions, _React$Component); var _super = _createSuper(DatePickerOptions); function DatePickerOptions(props) { var _this; (0, _classCallCheck2["default"])(this, DatePickerOptions); _this = _super.call(this, props); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeDateFormat", function (e) { var this_element = _this.state.element; this_element.customOptions.dateFormat = e.target.value; _this.props.updateElement.call(_this.props.preview, this_element); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeDefaultDate", function (e) { var this_element = _this.state.element; var value = e.target.value; if (value == 'none') { this_element.customOptions.defaultDate = null; _this.setState({ customDatePicker: false }); } else if (value == 'current') { this_element.customOptions.defaultDate = new Date(); _this.setState({ customDatePicker: false }); } else if (value == 'custom') { this_element.customOptions.defaultDate = new Date(); _this.setState({ customDatePicker: true }); } this_element.customOptions.defaultDateOptions = e.target.value; _this.setState({ element: this_element, dirty: true }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "customDateChange", function (e) { var this_element = _this.state.element; this_element.customOptions.defaultDate = e; _this.setState({ element: this_element, dirty: true }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setDisablePastDates", function (e) { var this_element = _this.state.element; this_element.customOptions.disablePastDates = e.target.value; _this.setState({ element: this_element, dirty: true }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeFormatSeparator", function (e) { var this_element = _this.state.element; var value = e.target.value; var dateFormat = this_element.customOptions.dateFormat; var splittedDateFormat = []; if (dateFormat.includes('-')) { splittedDateFormat = dateFormat.split('-'); } else if (dateFormat.includes('/')) { splittedDateFormat = dateFormat.split('/'); } else if (dateFormat.includes('.')) { splittedDateFormat = dateFormat.split('.'); } if (value == 'hyphen') { this_element.customOptions.dateFormat = splittedDateFormat.join('-'); this_element.customOptions.formatSeparator = value; } else if (value == 'slash') { this_element.customOptions.dateFormat = splittedDateFormat.join('/'); this_element.customOptions.formatSeparator = value; } else if (value == 'dot') { this_element.customOptions.dateFormat = splittedDateFormat.join('.'); this_element.customOptions.formatSeparator = value; } // this.setState({ element: this_element, dirty: true, }); _this.props.updateElement.call(_this.props.preview, this_element); }); _this.state = { element: _this.props.element, data: _this.props.data, dirty: false, customDatePicker: false }; return _this; } (0, _createClass2["default"])(DatePickerOptions, [{ key: "updateOption", value: function updateOption() { var this_element = this.state.element; // to prevent ajax calls with no change if (this.state.dirty) { this.props.updateElement.call(this.props.preview, this_element); this.setState({ dirty: false }); } } }, { key: "render", value: function render() { if (this.state.dirty) { this.state.element.dirty = true; } if (this.props.element.customOptions.defaultDateOptions == 'custom') { this.state.customDatePicker = true; } var dateFormat1 = 'MM-dd-yyyy'; var dateFormat2 = 'dd-MM-yyyy'; var dateFormat3 = 'yyyy-MM-dd'; if (this.props.element.customOptions.formatSeparator == 'hyphen') { dateFormat1 = 'MM-dd-yyyy'; dateFormat2 = 'dd-MM-yyyy'; dateFormat3 = 'yyyy-MM-dd'; } else if (this.props.element.customOptions.formatSeparator == 'slash') { dateFormat1 = 'MM/dd/yyyy'; dateFormat2 = 'dd/MM/yyyy'; dateFormat3 = 'yyyy/MM/dd'; } else if (this.props.element.customOptions.formatSeparator == 'dot') { dateFormat1 = 'MM.dd.yyyy'; dateFormat2 = 'dd.MM.yyyy'; dateFormat3 = 'yyyy.MM.dd'; } var classes = this.props.classes; return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true, xs: 12, className: "element-options-border-grid padding-top-10 padding-bottom-10" }, /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true, xs: 12, sm: 12, className: " padding-top-10 padding-bottom-10" }, /*#__PURE__*/_react["default"].createElement(_core.FormControl, { component: "fieldset" }, /*#__PURE__*/_react["default"].createElement(_core.Grid, { container: true, justifyContent: "flex-start" }, /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true, className: "mr-2" }, /*#__PURE__*/_react["default"].createElement("h6", { className: classes.text }, "Date Format:")), /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true }, /*#__PURE__*/_react["default"].createElement(_core.RadioGroup, { row: true, "aria-label": "material", name: "material", value: this.props.element.customOptions.dateFormat, onChange: this.changeDateFormat }, /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginTop: "15px", marginBottom: "15px", marginRight: '10px' }, value: dateFormat1, className: this.props.element.customOptions.dateFormat === dateFormat1 ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "MM-DD-YYYY", labelPlacement: "start" }), /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginTop: "15px", marginBottom: "15px", marginRight: '10px' }, value: dateFormat2, className: this.props.element.customOptions.dateFormat === dateFormat2 ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "DD-MM-YYYY", labelPlacement: "start" }), /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginTop: "15px", marginBottom: "15px", marginRight: '10px' }, value: dateFormat3, className: this.props.element.customOptions.dateFormat === dateFormat3 ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "YYYY-MM-DD", labelPlacement: "start" })))))), /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true, xs: 12, sm: 12, className: " padding-top-10 padding-bottom-10" }, /*#__PURE__*/_react["default"].createElement(_core.FormControl, { component: "fieldset" }, /*#__PURE__*/_react["default"].createElement(_core.Grid, { container: true, justifyContent: "flex-start" }, /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true, className: "mr-2" }, /*#__PURE__*/_react["default"].createElement("h6", { className: classes.text }, "Default Date:")), /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true }, /*#__PURE__*/_react["default"].createElement(_core.RadioGroup, { row: true, "aria-label": "material", name: "material", value: this.props.element.customOptions.defaultDateOptions, onChange: this.changeDefaultDate, onBlur: this.updateOption.bind(this) }, /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginRight: '10px', marginBottom: "15px" }, value: "none", className: this.props.element.customOptions.defaultDateOptions === "none" ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "None", labelPlacement: "start" }), /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginRight: '10px', marginBottom: "15px" }, value: "current", className: this.props.element.customOptions.defaultDateOptions === "current" ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "Current", labelPlacement: "start" }), /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginRight: '10px', marginBottom: "15px" }, value: "custom", className: this.props.element.customOptions.defaultDateOptions === "custom" ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "Custom", labelPlacement: "start" }))))), this.state.customDatePicker && /*#__PURE__*/_react["default"].createElement(_pickers.MuiPickersUtilsProvider, { utils: _dateFns["default"] }, /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true, xs: 12, sm: 12, className: "mt-2" }, /*#__PURE__*/_react["default"].createElement(_pickers.KeyboardDatePicker, { autoOk: true, variant: "inline", fullWidth: true, inputVariant: "outlined", label: "Custom Date", format: this.props.element.customOptions.dateFormat, InputAdornmentProps: { position: "start" }, value: this.props.element.customOptions.defaultDate, onChange: this.customDateChange, className: "mt-3", placeholderText: this.props.element.customOptions.dateFormat != undefined ? this.props.element.customOptions.dateFormat.toUpperCase() : "MM-DD-YYYY", minDate: this.props.element.customOptions.disablePastDates == 'yes' ? new Date() : '' })))), /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true, xs: 12, sm: 12, className: " padding-top-10 padding-bottom-10" }, /*#__PURE__*/_react["default"].createElement(_core.FormControl, { component: "fieldset" }, /*#__PURE__*/_react["default"].createElement(_core.Grid, { container: true, justifyContent: "flex-start" }, /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true, className: "mr-2" }, /*#__PURE__*/_react["default"].createElement("h6", { className: classes.text }, "Separator:")), /*#__PURE__*/_react["default"].createElement(_core.Grid, { item: true }, /*#__PURE__*/_react["default"].createElement(_core.RadioGroup, { row: true, "aria-label": "material", name: "material", value: this.props.element.customOptions.formatSeparator, onChange: this.changeFormatSeparator }, /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginRight: '10px', marginBottom: '15px' }, value: "hyphen", className: this.props.element.customOptions.formatSeparator === "hyphen" ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "Hyphen(-)", labelPlacement: "start" }), /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginRight: '10px', marginBottom: '15px' }, value: "slash", className: this.props.element.customOptions.formatSeparator === "slash" ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "Slash(/)", labelPlacement: "start" }), /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, { style: { marginRight: '10px', marginBottom: '15px' }, value: "dot", className: this.props.element.customOptions.formatSeparator === "dot" ? classes.checked : classes.unchecked, control: /*#__PURE__*/_react["default"].createElement(_core.Radio, { color: "primary", icon: /*#__PURE__*/_react["default"].createElement(_RadioButtonUnchecked["default"], { className: "checkboxSize" }), checkedIcon: /*#__PURE__*/_react["default"].createElement(_CheckCircle["default"], { className: "checkboxSize" }) }), label: "Dot(.)", labelPlacement: "start" })))))))); } }]); return DatePickerOptions; }(_react["default"].Component); exports["default"] = DatePickerOptions;