react-form-ui-y
Version:
476 lines (438 loc) • 18.5 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.verifyFn = exports.formTypeDom = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactUtilsY = require('react-utils-y');
var _reactButtonY = require('react-button-y');
var _reactButtonY2 = _interopRequireDefault(_reactButtonY);
var _reactDialogY = require('react-dialog-y');
var _reactDialogY2 = _interopRequireDefault(_reactDialogY);
var _reactSvgY = require('react-svg-y');
var _reactSvgY2 = _interopRequireDefault(_reactSvgY);
var _reactScrollY = require('react-scroll-y');
var _reactScrollY2 = _interopRequireDefault(_reactScrollY);
var _publicField = require('../publicField');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var date = void 0,
year = void 0,
month = void 0,
day = void 0,
monthFirstWeek = void 0,
monthDays = void 0,
monthMaxDay = void 0;
var formatTen = function formatTen(num) {
return num > 9 ? num + "" : "0" + num;
};
var getValue = function getValue(_this) {
var formDataValue = _this.props.formData[_this.props.dataType || "default"];
var inputData = formDataValue && formDataValue[_this.props.inputName];
return inputData && inputData.text ? inputData.text : "";
};
//input的校验
var verifyFn = function verifyFn(_this) {
var required = _this.props.required || false,
initFocusState = _this.state.initFocusState,
value = getValue(_this);
var errorText = _this.props.errorText || "该值不能为空!";
var errorState = false;
var subVerifyRes = _this.props.subVerifyRes && _this.props.subVerifyRes[_this.props.dataType || "default"];
//如果是必填
if (required && (subVerifyRes == "fail" || initFocusState == 1)) {
if (value.trim()) {
errorState = false;
} else {
errorState = true;
}
}
return { errorState: errorState, errorText: errorText };
};
//日期弹出头部 年份 月份
var yearItem = function yearItem(_this, styles, year) {
var yearMin = new Date().getFullYear() - 100,
yearArr = [];
for (var i = 0; i < 150; i++) {
yearArr.push(_react2.default.createElement(
'li',
{ key: i + 'year',
style: _this.state.chooseYear == yearMin + i ? styles.dateYearActive : styles.dateYearRow,
onClick: _this.handleYear.bind(_this, yearMin + i, "year"),
onMouseMove: _this.moveYear.bind(_this, yearMin + i, "year")
},
yearMin + i
));
}
return yearArr;
};
var monthItem = function monthItem(_this, styles) {
var monthArr = [];
for (var i = 1; i <= 12; i++) {
monthArr.push(_react2.default.createElement(
'li',
{ key: i + 'year',
style: _this.state.chooseMonth == i ? styles.dateMonthActive : styles.dateMonthRow,
onClick: _this.handleYear.bind(_this, i, "month"),
onMouseMove: _this.moveYear.bind(_this, i, "month")
},
i,
' \u6708'
));
}
return monthArr;
};
var dateHead = function dateHead(_this, styles, year, month, day, _theme) {
return _react2.default.createElement(
'div',
{ style: styles.dateHead },
_react2.default.createElement(
'div',
{ style: styles.dateYearBtn, onClick: _this.handleHead.bind(_this, "year") },
_react2.default.createElement(
'label',
null,
year,
'\u5E74'
),
_react2.default.createElement(_reactSvgY2.default, { type: 'Bottom', width: '1rem', height: '1rem', fill: _theme.date.selectSvg || "#dfdfdf" })
),
_react2.default.createElement(
'div',
{ style: styles.dateMonthBtn, onClick: _this.handleHead.bind(_this, "month") },
_react2.default.createElement(
'label',
null,
month,
'\u6708'
),
_react2.default.createElement(_reactSvgY2.default, { type: 'Bottom', width: '1rem', height: '1rem', fill: _theme.date.selectSvg || "#dfdfdf" })
),
_react2.default.createElement(
'ul',
{ style: _this.state.showYear ? styles.dateYearUlActive : styles.dateYearUl },
_react2.default.createElement(
_reactScrollY2.default,
{ shouldUpdate: _this.state.shouldUpdate,
initScroll: _this.initScroll,
width: '6.5rem'
},
yearItem(_this, styles, year)
)
),
_react2.default.createElement(
'ul',
{ style: _this.state.showMonth ? styles.dateMonthUlActive : styles.dateMonthUl },
_react2.default.createElement(
_reactScrollY2.default,
{ shouldUpdate: _this.state.shouldUpdate,
initScroll: _this.initScroll,
width: '5rem'
},
monthItem(_this, styles)
)
),
_this.state.showMonth || _this.state.showYear ? _react2.default.createElement('div', { style: styles.backbg, onClick: _this.colseSelest }) : null
);
};
//星期 和 上下月份切换
var dateTitle = function dateTitle(renderType) {
return renderType == "ch" ? ['一', '二', '三', '四', '五', '六', '日'] : ['日', '一', '二', '三', '四', '五', '六'];
};
var dateWeek = function dateWeek(_this, styles, year, month, day, theme) {
return _react2.default.createElement(
'div',
{ style: styles.dateDayBox },
_react2.default.createElement(
'div',
{ style: styles.dateSwitchMonth },
_react2.default.createElement(
'span',
{ onClick: _this.lastMonth.bind(_this, year, month), style: styles.dateSvgClick },
_react2.default.createElement(_reactSvgY2.default, { type: 'Left', width: '1.56rem', height: '1.56rem', fill: theme.dateWeek.contSvg })
),
_react2.default.createElement(
'div',
{ style: styles.handleDayText },
_this.state.chooseWeekVal
),
_react2.default.createElement(
'span',
{ onClick: _this.nextMonth.bind(_this, year, month), style: styles.dateSvgClick },
_react2.default.createElement(_reactSvgY2.default, { type: 'Right', width: '1.56rem', height: '1.56rem', fill: theme.dateWeek.contSvg })
)
),
_react2.default.createElement(
'div',
{ style: styles.dateWeek },
dateTitle(_this.props.renderType).map(function (value, index) {
return _react2.default.createElement(
'span',
{ style: styles.dateWeekDay, key: index },
value
);
}),
_react2.default.createElement(
'span',
{ style: styles.dateWeekDay },
' '
)
)
);
};
//遍历天数 处理 样式
var dateDay = function dateDay(_this, listDomDays, styles, scheduleData, theme) {
var getDayStyle = function getDayStyle(_this, value) {
var flag = "default";
var activeDateStr = value.year + '/' + formatTen(value.month) + '/' + formatTen(value.day),
//当前日期
activeDateTimes = new Date(activeDateStr).getTime(),
//当前日期毫秒数
minDate = _this.props.minDate,
//最小日期
maxDate = _this.props.maxDate,
//最大日期
minDateTimes = void 0,
//最小日期毫秒数
maxDateTimes = void 0; //最大日期毫秒数
if (minDate) {
//当最小日期存在的时候 设置最小日期毫秒数
minDateTimes = new Date(_this.props.minDate.replace(/-/g, "/")).getTime();
}
if (maxDate) {
//当最大日期存在的时候 设置最大日期毫秒数
maxDateTimes = new Date(_this.props.maxDate.replace(/-/g, "/")).getTime();
}
var scheduleData = _this.props.scheduleData;
var schedule = _this.props.schedule || "0";
var style = {};
//up上月 now今月 next下月
if (value.flag == "now") {
style = styles.dayDefault;
flag = "default";
} else {
style = styles.dayDisabled;
flag = "disabled";
}
//移动
if (activeDateStr == _this.state.dayMoveOn) {
style = styles.dayMoveOn;
//flag = "move";
}
//今天
if (activeDateStr == _reactUtilsY._Date.format(new Date(), "yyyy-MM-dd").replace(/-/g, "/")) {
style = styles.dayToday;
flag = "today";
}
//选中
if (activeDateStr == _this.state.dayActive) {
style = styles.dayActive;
flag = "active";
}
//是否需要排班,
// 0不需要排班,所有日期可选,
// 1需要排班,仅排班日可选,
// 2需要排版,仅非排班日可选
if (schedule == "1") {
if (!scheduleData.in_array(value.year + "-" + formatTen(value.month) + "-" + formatTen(value.day))) {
style = styles.dayDisabled;
flag = "disabled";
}
}
if (schedule == "2") {
if (scheduleData.in_array(value.year + "-" + formatTen(value.month) + "-" + formatTen(value.day))) {
style = styles.dayDisabled;
flag = "disabled";
}
}
//min 和 max 外的disabled日期
if (minDateTimes > activeDateTimes || activeDateTimes > maxDateTimes) {
style = styles.dayDisabled;
flag = "disabled";
}
return { style: style, flag: flag };
};
return _react2.default.createElement(
'div',
{ style: styles.dateCont },
listDomDays.map(function (rows, index) {
var fristDay = rows[0].year + "-" + formatTen(rows[0].month) + "-" + formatTen(rows[0].day);
var bgFlag = rows.some(function (item) {
var day = rows[0].year + "-" + formatTen(rows[0].month) + "-" + formatTen(rows[0].day);
return day == _this.state.chooseWeek;
});
var checkFlag = rows.every(function (item) {
var day = getDayStyle(_this, item);
return day.flag == "disabled";
});
return [_react2.default.createElement(
'div',
{ key: index + "d", style: bgFlag ? styles.rosBoxCheck : styles.rosBox,
onClick: !checkFlag ? _this.chooseWeek.bind(_this, rows) : null },
_react2.default.createElement(
'ul',
{ key: index + "rows", style: styles.dateRow },
rows.map(function (value, index) {
var day = getDayStyle(_this, value);
return _react2.default.createElement(
'li',
{ key: index + "cols",
style: styles.dayBox,
onMouseEnter: _this.handleDayMoveEnter.bind(_this, value),
onClick: _this.handleDayActiveFn.bind(_this, value, day.flag)
},
value ? _react2.default.createElement(
'label',
{ style: day.style },
' ',
value.day,
' '
) : _react2.default.createElement(
'label',
null,
' '
)
);
})
),
checkFlag ? _react2.default.createElement('div', { style: styles.rosBtnBox }) : _react2.default.createElement(
'div',
{ style: styles.rosBtnBox },
_react2.default.createElement(_reactSvgY2.default, { type: 'Correct', width: '1.56rem', height: '1.56rem',
fill: fristDay == _this.state.chooseWeek ? theme.dateWeek.chooseSvg : "#ccc" })
)
)];
})
);
};
var defaultSelect = function defaultSelect(_this, styles, _theme) {
return [_react2.default.createElement('div', { key: '1', onClick: _this.handleDayCloseSelect, style: styles.selectdialogMask }), _react2.default.createElement(
'div',
{ key: '2', style: styles[(0, _publicField.setLocationClass)(_this)] },
_react2.default.createElement(
'div',
{ style: styles.DateFieldBoxSelect },
dateHead(_this, styles, _this.state.renderDateData.year, _this.state.renderDateData.month, _this.state.renderDateData.day, _theme),
dateWeek(_this, styles, _this.state.renderDateData.year, _this.state.renderDateData.month, _this.state.renderDateData.day, _theme),
dateDay(_this, _this.state.renderDateData.listDomDays, styles, _this.props.scheduleData, _theme),
_this.props.scheduleLoading ? _react2.default.createElement(
'div',
{ style: styles.loadingBox },
'\u6B63\u5728\u8BF7\u6C42\u6392\u73ED'
) : null
)
)];
};
var defaultDialog = function defaultDialog(_this, styles, _theme) {
return _react2.default.createElement(
_reactDialogY2.default,
{ open: _this.state.dateOpen
//onRequestClose={_this.handleDayClose}
, contentStyle: { maxWidth: "26rem" },
bodyStyle: { padding: 0 } },
_react2.default.createElement(
'div',
{ style: styles.DateFieldBoxDialog },
dateHead(_this, styles, _this.state.renderDateData.year, _this.state.renderDateData.month, _this.state.renderDateData.day, _theme),
dateWeek(_this, styles, _this.state.renderDateData.year, _this.state.renderDateData.month, _this.state.renderDateData.day, _theme),
dateDay(_this, _this.state.renderDateData.listDomDays, styles, _this.props.scheduleData, _theme),
_this.props.scheduleLoading ? _react2.default.createElement(
'div',
{ style: styles.loadingBox },
'\u6B63\u5728\u8BF7\u6C42\u6392\u73ED'
) : null,
_react2.default.createElement(
'div',
{ style: styles.btnBox },
_react2.default.createElement(_reactButtonY2.default, { scenesType: 'submit', btnText: '\u786E\u8BA4', handleBtn: _this.handleDaySubmit }),
_react2.default.createElement(
'span',
{ style: { width: "1rem", display: "block" } },
' '
),
_react2.default.createElement(_reactButtonY2.default, { scenesType: 'back', btnText: '\u8FD4\u56DE', handleBtn: _this.handleDayClose })
)
)
);
};
/**
* input value dom
*/
var formValueDom = function formValueDom(_this, styles, value, theme) {
return [!value ? _react2.default.createElement(
'span',
{ key: 1, style: styles.inputHintText },
_this.props.hintText
) : null, _this.props.disabled ? _react2.default.createElement(
'div',
{ key: 2, style: styles.dateBoxDis, title: value },
value
) : _react2.default.createElement(
'div',
{ key: 3, style: _this.state.focusState ? styles.dateBoxFocus : styles.dateBox,
title: value,
onClick: _this.showDate
},
_react2.default.createElement(
'div',
{ style: styles.inputText },
value
),
_react2.default.createElement(
'div',
{ style: styles.inputSvg },
_react2.default.createElement(_reactSvgY2.default, { type: 'Date', width: '1rem', height: '1rem', fill: theme.publicForm.inputSvgFill })
)
)];
};
/**
* formType 是 default 类型
* @param verifyFlag 校验返回值
*/
var defaultDom = function defaultDom(_this, styles, verifyFlag, _theme) {
if (!_this.props.inputName) {
return _react2.default.createElement(
'div',
null,
'inputName\u4E3A\u5FC5\u8981\u53C2\u6570'
);
}
var selectType = _this.props.selectType || "select";
return _react2.default.createElement(
'div',
{ ref: 'formBox', style: styles.formBox },
(0, _publicField.formContDefault)(_this, styles, verifyFlag, getValue(_this), formValueDom, _theme),
(0, _publicField.defaultError)(verifyFlag, styles),
_this.state.dateOpen && selectType == "select" && defaultSelect(_this, styles, _theme),
_this.state.dateOpen && selectType == "dialog" && defaultDialog(_this, styles, _theme)
);
};
/**
* formType 是 box 类型
* @param verifyFlag 校验返回值
*/
var boxDom = function boxDom(_this, styles, verifyFlag, _theme) {
if (!_this.props.inputName) {
return _react2.default.createElement(
'div',
null,
'inputName\u4E3A\u5FC5\u8981\u53C2\u6570'
);
}
var selectType = _this.props.selectType || "select";
return _react2.default.createElement(
'div',
{ ref: 'formBox', style: styles.formBox },
(0, _publicField.formContBox)(_this, styles, verifyFlag, getValue(_this), formValueDom, _theme),
(0, _publicField.boxError)(verifyFlag, styles),
_this.state.dateOpen && selectType == "select" && defaultSelect(_this, styles, _theme),
_this.state.dateOpen && selectType == "dialog" && defaultDialog(_this, styles, _theme)
);
};
var formTypeDom = {
defaultDom: defaultDom,
boxDom: boxDom
};
exports.formTypeDom = formTypeDom;
exports.verifyFn = verifyFn;
//# sourceMappingURL=subpage.js.map