@antmjs/vantui
Version:
一套适用于Taro3及React的vantui组件库
133 lines (132 loc) • 4.99 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.LongSpan = LongSpan;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
var _components = require("@tarojs/components");
var _button = require("../../../button");
var _jsxRuntime = require("react/jsx-runtime");
function LongSpan(props) {
var current = props.current,
setScrollIntoView = props.setScrollIntoView;
var _useState = (0, _react.useState)([]),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
monthData = _useState2[0],
setMonthData = _useState2[1];
var _useState3 = (0, _react.useState)(),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
currentIndex = _useState4[0],
setCurrentIndex = _useState4[1];
var _useState5 = (0, _react.useState)(),
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
currentYear = _useState6[0],
setCurrentYear = _useState6[1];
var data = (0, _react.useMemo)(function () {
var res = [];
var yearMap = {};
for (var i = 0; i < props.data.length; i++) {
// @ts-ignore
var dd = new Date(props.data[i]);
var year = dd.getFullYear();
var month = dd.getMonth() + 1;
if (yearMap[year] === undefined) {
yearMap[year] = res.length;
res.push({
year: year,
month: [{
name: month,
index: i
}]
});
} else {
var yearIndex = yearMap[year];
res[yearIndex].month.push({
name: month,
index: i
});
}
}
return res;
}, [props.data]);
(0, _react.useEffect)(function () {
if (current) {
var dd = new Date(current);
var year = dd.getFullYear();
var month = dd.getMonth() + 1;
var ms = data.filter(function (item) {
return item.year === year;
})[0].month;
setMonthData(ms);
setCurrentYear(year);
var tIndex = ms.filter(function (item) {
return item.name === month;
})[0].index;
setCurrentIndex(tIndex);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [data]);
var switchAction_ = function switchAction_() {
if (currentIndex !== undefined) {
setScrollIntoView("month_".concat(props.data[currentIndex]), currentIndex);
}
};
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.View, {
className: "van-calendar-longspan",
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, {
className: "van-calendar__header-title",
children: "\u5207\u6362\u5E74\u6708"
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.ScrollView, {
scrollY: true,
className: "van-calendar-longspan-content",
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, {
className: "van-calendar-longspan-title",
children: "\u5E74\u4EFD\u9009\u62E9"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, {
className: "van-calendar-longspan-box",
children: data.map(function (item, index) {
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_button.Button, {
plain: item.year === currentYear ? false : true,
hairline: item.year === currentYear ? false : true,
type: "primary",
className: "van-calendar-longspan-item",
onClick: function onClick() {
if (currentYear !== item.year) {
var _item$month$;
setCurrentYear(item.year);
setMonthData(item.month);
setCurrentIndex((_item$month$ = item.month[0]) === null || _item$month$ === void 0 ? void 0 : _item$month$.index);
}
},
children: [item.year, "\u5E74"]
}, "longspan-year-item".concat(index));
})
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, {
className: "van-calendar-longspan-title",
children: "\u6708\u9009\u62E9"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.View, {
className: "van-calendar-longspan-box",
children: monthData.map(function (item) {
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_button.Button, {
plain: item.index === currentIndex ? false : true,
hairline: item.index === currentIndex ? false : true,
type: "primary",
className: "van-calendar-longspan-item",
onClick: function onClick() {
setCurrentIndex(item.index);
},
children: [item.name, "\u6708"]
}, "longspan-year-item-m".concat(item.index));
})
})]
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
block: true,
type: "primary",
className: "van-calendar__switch",
onClick: switchAction_,
children: "\u5207\u6362"
})]
});
}