提交
This commit is contained in:
84
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/helper.sjs
generated
vendored
Normal file
84
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/helper.sjs
generated
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
function keys(obj) {
|
||||
if (typeof Object.keys === 'function') {
|
||||
return Object.keys(obj);
|
||||
}
|
||||
}
|
||||
function getClassName(value, index, showSelectableDatesOnly) {
|
||||
var isSelected = value.isSelected,
|
||||
isSelectedBegin = value.isSelectedBegin,
|
||||
isSelectedEnd = value.isSelectedEnd,
|
||||
isRowBegin = value.isRowBegin,
|
||||
isRowEnd = value.isRowEnd,
|
||||
inThisMonth = value.inThisMonth,
|
||||
isToday = value.isToday,
|
||||
disabled = value.disabled,
|
||||
className = value.className,
|
||||
isRange = value.isRange;
|
||||
var classNames = {
|
||||
disabled: disabled,
|
||||
today: inThisMonth && isToday,
|
||||
selected: inThisMonth && isSelected,
|
||||
'selected-begin': inThisMonth && isSelectedBegin,
|
||||
'selected-end': inThisMonth && isSelectedEnd,
|
||||
'selected-row-begin': inThisMonth && isRowBegin && isSelected,
|
||||
'selected-row-end': inThisMonth && isRowEnd && isSelected,
|
||||
hidden: !inThisMonth || showSelectableDatesOnly && !isRange,
|
||||
'row-end': index % 7 === 6
|
||||
};
|
||||
var result = "ant-calendar-cell ".concat(className || '');
|
||||
keys(classNames).forEach(function (key) {
|
||||
if (classNames[key]) {
|
||||
result += " ant-calendar-cell-".concat(key);
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
function getSpaceClassName(index, items) {
|
||||
var isNotEnd = index % 7 !== 6;
|
||||
var nextItem = items[index + 1];
|
||||
var nextSelected = nextItem && nextItem.isSelected && nextItem.inThisMonth;
|
||||
var isSelected = items[index].isSelected;
|
||||
var classNames = {
|
||||
active: isNotEnd && isSelected && nextSelected
|
||||
};
|
||||
var result = 'ant-calendar-cell-space';
|
||||
keys(classNames).forEach(function (key) {
|
||||
if (classNames[key]) {
|
||||
result += " ant-calendar-cell-space-".concat(key);
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
function getMarkCellClassName(index, items) {
|
||||
if (items[index].length - 1 === index) {
|
||||
return "ant-calendar-mark-cell ant-calendar-mark-cell-last";
|
||||
}
|
||||
return 'ant-calendar-mark-cell';
|
||||
}
|
||||
function isDisplay(index, items) {
|
||||
// 找到需要当前月需要展示的日期最大最小索引
|
||||
var _items_reduce = items.reduce(function (res, item) {
|
||||
// !item.inThisMonth 被隐藏掉的日期
|
||||
// !item.isRange 不在传入范围内的日期
|
||||
if (!(!item.inThisMonth || !item.isRange)) {
|
||||
if (res.minIndex === null || res.maxIndex === null) {
|
||||
res.minIndex = item.index;
|
||||
res.maxIndex = item.index;
|
||||
}
|
||||
res.minIndex = Math.min(res.minIndex, item.index);
|
||||
res.maxIndex = Math.max(res.maxIndex, item.index);
|
||||
}
|
||||
return res;
|
||||
}, {
|
||||
minIndex: null,
|
||||
maxIndex: null
|
||||
});
|
||||
if (_items_reduce.maxIndex === null || _items_reduce.maxIndex === null) return true;
|
||||
return index >= Math.floor(_items_reduce.minIndex / 7) * 7 && index < Math.ceil(_items_reduce.maxIndex / 7) * 7;
|
||||
}
|
||||
export default {
|
||||
getSpaceClassName: getSpaceClassName,
|
||||
getClassName: getClassName,
|
||||
getMarkCellClassName: getMarkCellClassName,
|
||||
isDisplay: isDisplay
|
||||
};
|
1
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.acss
generated
vendored
Normal file
1
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.acss
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
.ant-calendar{color:#333;position:relative;display:flex;flex-direction:column;height:100%}.ant-calendar-body{flex:1}.ant-calendar-sticky{position:absolute;top:0;left:0;max-height:41px;width:100%;overflow:hidden;top:44px;z-index:1000}.ant-calendar-mark{height:44px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;box-sizing:border-box;font-size:14px;padding:0 8px}.ant-calendar-mark .ant-calendar-mark-cell{flex:1;text-align:center;width:calc((100% - 6 * 5px)/ 7);margin-right:5px}.ant-calendar-mark .ant-calendar-mark-cell-last{margin-right:0}.ant-calendar-title{color:#333;font-size:18px;height:41px;line-height:41px;padding-left:20px;margin-bottom:4px;background:#f8f8f8}.ant-calendar-cells{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;padding:0 8px}.ant-calendar-cell-space{width:5px;height:55px}.ant-calendar-cell-space-active{background:rgba(22,119,255,.1)}.ant-calendar-cell{box-sizing:border-box;width:calc((100% - 6 * 5px)/ 7);height:55px;margin-bottom:4px;position:relative}.ant-calendar-cell-container{box-sizing:border-box;padding-top:3.5px;height:100%}.ant-calendar-cell-top{color:#999;text-align:center;font-size:9px;height:12.5px}.ant-calendar-cell-top-text{white-space:nowrap}.ant-calendar-cell-center{text-align:center;height:22.5px;font-size:16px}.ant-calendar-cell-bottom{color:#999;text-align:center;font-size:9px;height:12.5px}.ant-calendar-cell-selected{background:rgba(22,119,255,.1)}.ant-calendar-cell-selected-begin{border-top-left-radius:4px;border-bottom-left-radius:4px;background:rgba(22,119,255,.1)}.ant-calendar-cell-selected-end{border-top-right-radius:4px;border-bottom-right-radius:4px;color:#fff}.ant-calendar-cell-selected-row-end{border-top-right-radius:4px;border-bottom-right-radius:4px}.ant-calendar-cell-selected-row-begin{border-top-left-radius:4px;border-bottom-left-radius:4px}.ant-calendar-cell-selected-begin .ant-calendar-cell-container{background:#1677ff;border-radius:4px;color:#fff}.ant-calendar-cell-selected-end .ant-calendar-cell-container{background:#1677ff;border-radius:4px;color:#fff}.ant-calendar-cell-selected-end .ant-calendar-cell-top{color:#fff}.ant-calendar-cell-selected-begin .ant-calendar-cell-top{color:#fff}.ant-calendar-cell-selected-end .ant-calendar-cell-bottom{color:#fff}.ant-calendar-cell-selected-begin .ant-calendar-cell-bottom{color:#fff}.ant-calendar-cell-disabled{opacity:.4}.ant-calendar-cell-hidden{opacity:0;pointer-events:none}
|
110
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.axml
generated
vendored
Normal file
110
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.axml
generated
vendored
Normal file
@ -0,0 +1,110 @@
|
||||
<import-sjs
|
||||
from="./helper.sjs"
|
||||
name="helper"
|
||||
></import-sjs>
|
||||
<import-sjs
|
||||
from="./scroll.sjs"
|
||||
name="scroll"
|
||||
></import-sjs>
|
||||
<view
|
||||
class="ant-calendar {{className ? className : ''}}"
|
||||
style="{{style}}"
|
||||
>
|
||||
<view class="ant-calendar-mark">
|
||||
<block
|
||||
a:for="{{markItems}}"
|
||||
a:for-index="index"
|
||||
a:for-item="item"
|
||||
>
|
||||
<view class="{{helper.getMarkCellClassName(index, markItems)}}">
|
||||
<!--display: inline-->
|
||||
<text>{{item}}</text>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view
|
||||
a:if="{{!!elementSize}}"
|
||||
class="ant-calendar-sticky"
|
||||
>
|
||||
<view class="ant-calendar-sticky-title">
|
||||
<slot name="calendarTitle">
|
||||
<view class="ant-calendar-title">
|
||||
{{monthList[headerState].title}}
|
||||
</view>
|
||||
</slot>
|
||||
</view>
|
||||
</view>
|
||||
<scroll-view
|
||||
scrollY="{{true}}"
|
||||
class="ant-calendar-body"
|
||||
data-elementsize="{{elementSize}}"
|
||||
data-monthlist="{{monthList}}"
|
||||
onScroll="{{scroll.handleScroll}}"
|
||||
scrollIntoView="{{scrollIntoViewId}}"
|
||||
scrollWithAnimation
|
||||
scrollAnimationDuration="{{300}}"
|
||||
disableLowerScroll="out-of-bounds"
|
||||
disableUpperScroll="out-of-bounds"
|
||||
ref="handleRef"
|
||||
>
|
||||
<block
|
||||
a:for="{{monthList}}"
|
||||
a:for-index="index"
|
||||
a:for-item="currentMonth"
|
||||
>
|
||||
<view
|
||||
class="ant-calendar-body-container {{currentMonth.className || ''}}"
|
||||
style="{{currentMonth.style || ''}}"
|
||||
>
|
||||
<view class="ant-calendar-title-container">
|
||||
<slot name="calendarTitle">
|
||||
<view class="ant-calendar-title">{{currentMonth.title}}</view>
|
||||
</slot>
|
||||
</view>
|
||||
<view class="ant-calendar-cells">
|
||||
<block
|
||||
a:for="{{currentMonth.cells}}"
|
||||
a:for-index="index"
|
||||
a:for-item="item"
|
||||
>
|
||||
<block a:if="{{helper.isDisplay(index, currentMonth.cells)}}">
|
||||
<view
|
||||
class="{{helper.getClassName(item, index, showSelectableDatesOnly)}}"
|
||||
id="id_{{item.time}}"
|
||||
data-time="{{item}}"
|
||||
onTap="clickCell"
|
||||
>
|
||||
<view class="ant-calendar-cell-container">
|
||||
<view class="ant-calendar-cell-top">
|
||||
<!--display: inline-->
|
||||
<text
|
||||
a:if="{{item.top}}"
|
||||
class="ant-calendar-cell-top-text {{item.top.className ? item.top.className : ''}}"
|
||||
>{{item.top.label}}</text>
|
||||
</view>
|
||||
<view class="ant-calendar-cell-center">{{item.date}}</view>
|
||||
<view class="ant-calendar-cell-bottom">
|
||||
<slot
|
||||
name="cell-bottom"
|
||||
cell="{{item}}"
|
||||
>
|
||||
<!--display: inline-->
|
||||
<text
|
||||
a:if="{{item.bottom}}"
|
||||
class="{{item.bottom.className}}"
|
||||
>{{item.bottom.label}}</text>
|
||||
</slot>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
a:if="{{index % 7 !== 6}}"
|
||||
class="{{helper.getSpaceClassName(index, currentMonth.cells)}}"
|
||||
></view>
|
||||
</block>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
</view>
|
1
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.d.ts
generated
vendored
Normal file
1
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.d.ts
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
export {};
|
213
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.js
generated
vendored
Normal file
213
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.js
generated
vendored
Normal file
@ -0,0 +1,213 @@
|
||||
import { __assign, __awaiter, __generator, __spreadArray } from "tslib";
|
||||
import dayjs from 'dayjs';
|
||||
import equal from 'fast-deep-equal';
|
||||
import { Component, triggerEvent, getValueFromProps } from '../_util/simply';
|
||||
import { defaultLocaleText, CalendarDefaultProps, } from './props';
|
||||
import { getMonthListFromRange, getSelectionModeFromValue, renderCells, getScrollIntoViewId, } from './utils';
|
||||
import mixinValue from '../mixins/value';
|
||||
import { getInstanceBoundingClientRect } from '../_util/jsapi/get-instance-bounding-client-rect';
|
||||
Component(CalendarDefaultProps, {
|
||||
getInstance: function () {
|
||||
if (this.$id) {
|
||||
return my;
|
||||
}
|
||||
return this;
|
||||
},
|
||||
getBoundingClientRect: function (query) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, getInstanceBoundingClientRect(this.getInstance(), query)];
|
||||
case 1: return [2 /*return*/, _a.sent()];
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
scrollIntoView: function (value) {
|
||||
this.updateScrollIntoViewId(getScrollIntoViewId(value));
|
||||
},
|
||||
clickCell: function (e) {
|
||||
var _a, _b;
|
||||
var time = e.currentTarget.dataset.time;
|
||||
var clickDate = dayjs(time.time);
|
||||
if (time.disabled) {
|
||||
return;
|
||||
}
|
||||
var value = this.getValue();
|
||||
var selectionModeFromValue = getSelectionModeFromValue(value);
|
||||
var selectionMode = (_b = (_a = getValueFromProps(this, 'selectionMode')) !== null && _a !== void 0 ? _a : selectionModeFromValue) !== null && _b !== void 0 ? _b : 'range';
|
||||
if (selectionMode === 'range') {
|
||||
if (Array.isArray(value)) {
|
||||
if (value.length === 1) {
|
||||
var current = value[0];
|
||||
if (dayjs(clickDate.toDate().getTime()).isBefore(dayjs(current))) {
|
||||
this.updateValue([clickDate.toDate().getTime()]);
|
||||
}
|
||||
else {
|
||||
this.updateValue([value[0], clickDate.toDate().getTime()]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.updateValue([clickDate.toDate().getTime()]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.updateValue([clickDate.toDate().getTime()]);
|
||||
}
|
||||
}
|
||||
else if (selectionMode === 'single') {
|
||||
this.updateValue(clickDate.toDate().getTime());
|
||||
}
|
||||
},
|
||||
setCurrentMonth: function (e) {
|
||||
this.setData({ headerState: e.month });
|
||||
},
|
||||
measurement: function () {
|
||||
var elementSize = this.data.elementSize;
|
||||
// 组件如果内嵌在 slot 里, 一定会被渲染出来, 但是此时 cellHight 为 0
|
||||
// 此时需要重新计算
|
||||
if (!elementSize || elementSize.cellHight === 0) {
|
||||
this.measurementFn();
|
||||
}
|
||||
},
|
||||
measurementFn: function () {
|
||||
var _this = this;
|
||||
Promise.all([
|
||||
this.getBoundingClientRect('.ant-calendar-body-container'),
|
||||
this.getBoundingClientRect('.ant-calendar-cells'),
|
||||
this.getBoundingClientRect('.ant-calendar-title-container'),
|
||||
])
|
||||
.then(function (_a) {
|
||||
var bodyContainer = _a[0], cellContainer = _a[1], Title = _a[2];
|
||||
// 滚动的时候 top 和 bottom 等尺寸会变
|
||||
// 所以只能依赖 height 来计算
|
||||
var paddingHeight = bodyContainer.height - cellContainer.height - Title.height;
|
||||
var monthTitleHeight = Title.height + paddingHeight;
|
||||
var cellHight = cellContainer.height / (_this.data.monthList[0].cells.length / 7);
|
||||
_this.setData({
|
||||
elementSize: {
|
||||
monthTitleHeight: monthTitleHeight,
|
||||
cellHight: cellHight,
|
||||
paddingHeight: paddingHeight,
|
||||
},
|
||||
});
|
||||
})
|
||||
.catch(function () {
|
||||
_this.setData({ elementSize: null });
|
||||
});
|
||||
},
|
||||
// scroll 触发滚动之后需要重置 scrollIntoViewId
|
||||
updateScrollIntoViewId: function (id) {
|
||||
var _this = this;
|
||||
this.setData({ scrollIntoViewId: id });
|
||||
var timer = setTimeout(function () {
|
||||
_this.setData({ scrollIntoViewId: '' });
|
||||
clearTimeout(timer);
|
||||
});
|
||||
},
|
||||
updateValue: function (newValue) {
|
||||
triggerEvent(this, 'change', newValue);
|
||||
if (!this.isControlled()) {
|
||||
this.update(newValue);
|
||||
}
|
||||
},
|
||||
updateData: function () {
|
||||
var _a = getValueFromProps(this, [
|
||||
'monthRange',
|
||||
'localeText',
|
||||
'weekStartsOn',
|
||||
'onFormatter',
|
||||
'onMonthFormatter',
|
||||
]), monthRange = _a[0], plocaleText = _a[1], pweekStartsOn = _a[2], onFormatter = _a[3], onMonthFormatter = _a[4];
|
||||
var localeText = Object.assign({}, defaultLocaleText, plocaleText);
|
||||
var markItems = __spreadArray([], localeText.weekdayNames, true);
|
||||
var weekStartsOn = pweekStartsOn;
|
||||
if (weekStartsOn === 'Sunday') {
|
||||
var item = markItems.pop();
|
||||
if (item)
|
||||
markItems.unshift(item);
|
||||
}
|
||||
var value = this.getValue();
|
||||
var start = dayjs(monthRange === null || monthRange === void 0 ? void 0 : monthRange[0]).startOf('d');
|
||||
var end = dayjs(monthRange === null || monthRange === void 0 ? void 0 : monthRange[1]).startOf('d');
|
||||
var monthRangeList = getMonthListFromRange(start, end);
|
||||
var monthList = monthRangeList.map(function (p) {
|
||||
var cells = renderCells(p, weekStartsOn, value, localeText,
|
||||
// 如果monthRange传入异常,用内置的时间范围
|
||||
start.isAfter(end) || start.isSame(end)
|
||||
? [monthRangeList[0], dayjs(monthRangeList[1]).endOf('month')]
|
||||
: [start, end]);
|
||||
if (onFormatter && typeof onFormatter === 'function') {
|
||||
cells = cells.map(function (o) {
|
||||
var _a;
|
||||
var time = o.time, top = o.top, bottom = o.bottom, disabled = o.disabled, isSelectedBegin = o.isSelectedBegin, isSelectedEnd = o.isSelectedEnd, isSelected = o.isSelected, className = o.className, isRange = o.isRange;
|
||||
var newState = (_a = onFormatter({
|
||||
time: time,
|
||||
top: top ? __assign({}, top) : undefined,
|
||||
bottom: bottom ? __assign({}, bottom) : undefined,
|
||||
disabled: disabled,
|
||||
isSelectedBegin: isSelectedBegin,
|
||||
isSelectedEnd: isSelectedEnd,
|
||||
isSelected: isSelected,
|
||||
className: className,
|
||||
isRange: isRange,
|
||||
}, value)) !== null && _a !== void 0 ? _a : {};
|
||||
var result = __assign({}, o);
|
||||
if (typeof newState === 'object') {
|
||||
// 只允许修改的字段字段
|
||||
['top', 'bottom', 'disabled', 'className'].forEach(function (key) {
|
||||
if (key in newState) {
|
||||
result[key] = newState[key];
|
||||
}
|
||||
});
|
||||
}
|
||||
return result;
|
||||
});
|
||||
}
|
||||
var month = {
|
||||
title: p.format(localeText.title),
|
||||
className: '',
|
||||
cells: cells,
|
||||
};
|
||||
if (onMonthFormatter && typeof onMonthFormatter === 'function') {
|
||||
month = __assign(__assign({}, month), onMonthFormatter(p));
|
||||
}
|
||||
return month;
|
||||
});
|
||||
this.setData({ markItems: markItems, monthList: monthList });
|
||||
},
|
||||
}, {
|
||||
elementSize: null,
|
||||
markItems: [],
|
||||
monthList: [],
|
||||
headerState: 0,
|
||||
scrollIntoViewId: '',
|
||||
}, [mixinValue()], {
|
||||
didMount: function () {
|
||||
this.updateData();
|
||||
this.measurementFn();
|
||||
// 初始化默认值时,滚动到选中位置
|
||||
var _a = getValueFromProps(this, [
|
||||
'value',
|
||||
'defaultValue',
|
||||
]), value = _a[0], defaultValue = _a[1];
|
||||
if (this.isControlled()) {
|
||||
this.updateScrollIntoViewId(getScrollIntoViewId(value));
|
||||
}
|
||||
else {
|
||||
defaultValue &&
|
||||
this.updateScrollIntoViewId(getScrollIntoViewId(defaultValue));
|
||||
}
|
||||
},
|
||||
didUpdate: function (prevProps, prevData) {
|
||||
if (!this.isEqualValue(prevData)) {
|
||||
// 滚动到已选的位置
|
||||
var changedScrollIntoView = getValueFromProps(this, 'changedScrollIntoView');
|
||||
changedScrollIntoView &&
|
||||
this.updateScrollIntoViewId(getScrollIntoViewId(this.getValue()));
|
||||
}
|
||||
if (!equal(prevProps, this.props) || !this.isEqualValue(prevData)) {
|
||||
this.updateData();
|
||||
}
|
||||
},
|
||||
});
|
3
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.json
generated
vendored
Normal file
3
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/index.json
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"component": true
|
||||
}
|
173
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/props.d.ts
generated
vendored
Normal file
173
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/props.d.ts
generated
vendored
Normal file
@ -0,0 +1,173 @@
|
||||
import { IBaseProps } from '../_util/base';
|
||||
export interface CalendarDate {
|
||||
year: number;
|
||||
month: number;
|
||||
date: number;
|
||||
}
|
||||
export declare const defaultLocaleText: {
|
||||
weekdayNames: string[];
|
||||
title: string;
|
||||
today: string;
|
||||
start: string;
|
||||
end: string;
|
||||
startAndEnd: string;
|
||||
};
|
||||
export interface LocaleText {
|
||||
/**
|
||||
* 星期的名称。从周一到周日
|
||||
* 默认为 ['一', '二', '三', '四', '五', '六', '日']
|
||||
*/
|
||||
weekdayNames: string[];
|
||||
/**
|
||||
* 月份标题的格式。 默认为 'YYYY年MM月'
|
||||
*/
|
||||
title: string;
|
||||
/**
|
||||
* 今日的文案。 默认为 '今日'
|
||||
*/
|
||||
today: string;
|
||||
/**
|
||||
* 开始的文案。 默认为 '开始'
|
||||
*/
|
||||
start: string;
|
||||
/**
|
||||
* 结束的文案。 默认为 '结束'
|
||||
*/
|
||||
startAndEnd: string;
|
||||
/**
|
||||
* 开始/结束的文案。 默认为 '开始/结束'
|
||||
*/
|
||||
end: string;
|
||||
}
|
||||
export interface CellState {
|
||||
/**
|
||||
* 类名
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* 是否被禁止
|
||||
*/
|
||||
disabled: boolean;
|
||||
/**
|
||||
* 日历单元格的顶部内容
|
||||
*/
|
||||
top?: {
|
||||
label: string;
|
||||
className?: string;
|
||||
};
|
||||
/**
|
||||
* 日历单元格的底部内容
|
||||
*/
|
||||
bottom?: {
|
||||
label: string;
|
||||
className?: string;
|
||||
};
|
||||
/**
|
||||
* 时间戳
|
||||
*/
|
||||
time: number;
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
date: number;
|
||||
/**
|
||||
* 是否被选择
|
||||
*/
|
||||
isSelected: boolean;
|
||||
/**
|
||||
* 是否是选择区间的开始
|
||||
*/
|
||||
isSelectedBegin: boolean;
|
||||
/**
|
||||
* 是否是选择区间的结束
|
||||
*/
|
||||
isSelectedEnd: boolean;
|
||||
/**
|
||||
* 是否是每一行的第一个
|
||||
*/
|
||||
isRowBegin: boolean;
|
||||
isRowEnd: boolean;
|
||||
inThisMonth: boolean;
|
||||
/**
|
||||
* 是否在传入范围内
|
||||
*/
|
||||
isRange: boolean;
|
||||
index: number;
|
||||
}
|
||||
export type CalendarValue = number | number[];
|
||||
export type SelectionMode = 'single' | 'range';
|
||||
export interface ICalendarProps extends IBaseProps {
|
||||
/**
|
||||
* 初始值
|
||||
*/
|
||||
defaultValue?: CalendarValue;
|
||||
/**
|
||||
* 日历选择的日期,受控模式
|
||||
*/
|
||||
value?: CalendarValue;
|
||||
/**
|
||||
* 设置选择模式,单选或者连续区间, 默认为 'range'
|
||||
*/
|
||||
selectionMode?: SelectionMode;
|
||||
/**
|
||||
* 月份范围,默认为最近 3 个月
|
||||
* 格式为时间戳
|
||||
* @default [本月第一天的时间戳, 3个月后第一天的时间戳]
|
||||
*/
|
||||
monthRange?: [number, number];
|
||||
/**
|
||||
* 星期栏,以周几作为第一天显示,默认为 'Sunday'
|
||||
*/
|
||||
weekStartsOn?: 'Sunday' | 'Monday';
|
||||
/**
|
||||
* 国际化文案
|
||||
*/
|
||||
localeText?: Partial<LocaleText>;
|
||||
/**
|
||||
* 选中值改变后滚动视图
|
||||
*/
|
||||
changedScrollIntoView?: boolean;
|
||||
/**
|
||||
* 只展示在可选范围内的日期
|
||||
*/
|
||||
showSelectableDatesOnly?: boolean;
|
||||
/**
|
||||
* 日期变化回调
|
||||
*/
|
||||
onChange?: (date: CalendarValue) => void;
|
||||
/**
|
||||
* onFormatter 用于设置单元格的自定义数据
|
||||
* @param cell 原始数据
|
||||
* @param currentValue 当前的 value
|
||||
* @returns 返回新的数据
|
||||
*/
|
||||
onFormatter?: (cell: Pick<CellState, 'className' | 'disabled' | 'top' | 'bottom' | 'time' | 'isSelectedBegin' | 'isSelectedEnd' | 'isSelected'>, currentValue: CalendarValue) => Pick<CellState, 'disabled' | 'top' | 'bottom'>;
|
||||
/**
|
||||
* onMonthFormatter 用于设置月份的自定义数据
|
||||
* @param month 原始数据
|
||||
* @returns 返回新的数据
|
||||
*/
|
||||
onMonthFormatter?: (month: any) => {
|
||||
title?: string;
|
||||
className?: string;
|
||||
};
|
||||
}
|
||||
export declare const CalendarDefaultProps: {
|
||||
defaultValue: any;
|
||||
value: any;
|
||||
selectionMode: string;
|
||||
monthRange: [number, number];
|
||||
weekStartsOn: string;
|
||||
localeText: {
|
||||
weekdayNames: string[];
|
||||
title: string;
|
||||
today: string;
|
||||
start: string;
|
||||
end: string;
|
||||
startAndEnd: string;
|
||||
};
|
||||
onFormatter: any;
|
||||
onMonthFormatter: any;
|
||||
changedScrollIntoView: any;
|
||||
showSelectableDatesOnly: boolean;
|
||||
};
|
21
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/props.js
generated
vendored
Normal file
21
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/props.js
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
import { defaultMonthRange } from './utils';
|
||||
export var defaultLocaleText = {
|
||||
weekdayNames: ['一', '二', '三', '四', '五', '六', '日'],
|
||||
title: 'YYYY年MM月',
|
||||
today: '今日',
|
||||
start: '开始',
|
||||
end: '结束',
|
||||
startAndEnd: '开始/结束',
|
||||
};
|
||||
export var CalendarDefaultProps = {
|
||||
defaultValue: null,
|
||||
value: null,
|
||||
selectionMode: 'range',
|
||||
monthRange: defaultMonthRange(),
|
||||
weekStartsOn: 'Sunday',
|
||||
localeText: defaultLocaleText,
|
||||
onFormatter: null,
|
||||
onMonthFormatter: null,
|
||||
changedScrollIntoView: null,
|
||||
showSelectableDatesOnly: false,
|
||||
};
|
45
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/scroll.sjs
generated
vendored
Normal file
45
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/scroll.sjs
generated
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
function handleScroll(event, ownerComponent) {
|
||||
var currentScroll = event.detail.scrollTop;
|
||||
var dataset = event.instance.getDataset();
|
||||
var elementSize = dataset.elementsize,
|
||||
monthList = dataset.monthlist;
|
||||
if (!elementSize) {
|
||||
return;
|
||||
}
|
||||
// 组件如果内嵌在 slot 里, 一定会被渲染出来, 但是此时 cellHight 为 0
|
||||
if (elementSize.cellHight === 0) {
|
||||
ownerComponent.callMethod('measurement');
|
||||
return;
|
||||
}
|
||||
var instance = ownerComponent.selectComponent('.ant-calendar-sticky-title');
|
||||
var sticky = ownerComponent.selectComponent('.ant-calendar-sticky');
|
||||
if (sticky) {
|
||||
sticky.setStyle({
|
||||
display: currentScroll < 0 ? 'none' : 'block'
|
||||
});
|
||||
}
|
||||
var monthHeight = elementSize.monthTitleHeight;
|
||||
var paddingHeight = elementSize.paddingHeight;
|
||||
var cellHeight = elementSize.cellHight;
|
||||
var heightList = monthList.map(function (p) {
|
||||
return monthHeight + cellHeight * p.cells.length / 7;
|
||||
});
|
||||
for (var i = 0; i < heightList.length; i++) {
|
||||
if (currentScroll < heightList[i]) {
|
||||
var topHeight = currentScroll - heightList[i] + monthHeight - paddingHeight;
|
||||
topHeight = Math.max(topHeight, 0);
|
||||
instance.setStyle({
|
||||
transform: "translateY(-".concat(topHeight, "px)")
|
||||
});
|
||||
ownerComponent.callMethod('setCurrentMonth', {
|
||||
month: topHeight > monthHeight * 0.8 ? i + 1 : i
|
||||
});
|
||||
break;
|
||||
} else {
|
||||
currentScroll = currentScroll - heightList[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
export default {
|
||||
handleScroll: handleScroll
|
||||
};
|
14
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/utils.d.ts
generated
vendored
Normal file
14
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/utils.d.ts
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
import { Dayjs } from 'dayjs';
|
||||
import { CellState, LocaleText, SelectionMode, CalendarValue } from './props';
|
||||
export declare function getMonthListFromRange(start: Dayjs, end: Dayjs): Dayjs[];
|
||||
export declare function defaultMonthRange(): [number, number];
|
||||
/**
|
||||
*
|
||||
* @param month 月份的某一天
|
||||
* @param weekStartsOn 日历以星期几开始
|
||||
* @returns 获取当月日历所有的日子
|
||||
*/
|
||||
export declare function getDate(month: Dayjs, weekStartsOn: string): Dayjs[];
|
||||
export declare function renderCells(cellsMonth: Dayjs, weekStartsOn: string, value: CalendarValue, localeText: LocaleText, monthRangeList: Dayjs[]): CellState[];
|
||||
export declare function getSelectionModeFromValue(value?: CalendarValue): SelectionMode;
|
||||
export declare function getScrollIntoViewId(value: CalendarValue): string;
|
157
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/utils.js
generated
vendored
Normal file
157
甲情_甲意/miniprogram/node_modules/antd-mini/es/Calendar/utils.js
generated
vendored
Normal file
@ -0,0 +1,157 @@
|
||||
import dayjs from 'dayjs';
|
||||
import { isoWeekday } from '../_util/dayjs/iso-weekday';
|
||||
export function getMonthListFromRange(start, end) {
|
||||
if (start.isAfter(end))
|
||||
throw new Error("Start time can't be later than end time.");
|
||||
var result = [];
|
||||
var current = start.date(1);
|
||||
while (!current.isAfter(end)) {
|
||||
result.push(current.date(1));
|
||||
current = current.add(1, 'month');
|
||||
}
|
||||
return result;
|
||||
}
|
||||
export function defaultMonthRange() {
|
||||
var start = dayjs().startOf('date');
|
||||
var end = dayjs().startOf('date').add(2, 'month');
|
||||
return [start.toDate().getTime(), end.toDate().getTime()];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param month 月份的某一天
|
||||
* @param weekStartsOn 日历以星期几开始
|
||||
* @returns 获取当月日历所有的日子
|
||||
*/
|
||||
export function getDate(month, weekStartsOn) {
|
||||
var startOfMonth = month.date(1);
|
||||
var cells = [];
|
||||
var iterator = startOfMonth
|
||||
.subtract(isoWeekday(startOfMonth) % 7, 'day')
|
||||
.startOf('day');
|
||||
if (weekStartsOn === 'Monday') {
|
||||
iterator = iterator.add(1, 'day');
|
||||
if (iterator.isSame(startOfMonth, 'month') &&
|
||||
!iterator.isSame(startOfMonth.startOf('date'), 'date')) {
|
||||
iterator = iterator.add(-7, 'days');
|
||||
}
|
||||
}
|
||||
var diffDay = startOfMonth.date(1).add(1, 'month').diff(iterator, 'day');
|
||||
var lintCount = Math.ceil(diffDay / 7);
|
||||
while (cells.length < lintCount * 7) {
|
||||
cells.push(iterator);
|
||||
iterator = iterator.add(1, 'day');
|
||||
}
|
||||
return cells;
|
||||
}
|
||||
export function renderCells(cellsMonth, weekStartsOn, value, localeText, monthRangeList) {
|
||||
var _a;
|
||||
var rangeStartDate = monthRangeList[0], rangeEndDate = monthRangeList[1];
|
||||
var rowBeginDay = 0;
|
||||
var rowEndDay = 6;
|
||||
if (weekStartsOn === 'Monday') {
|
||||
rowBeginDay = 1;
|
||||
rowEndDay = 0;
|
||||
}
|
||||
var dates = getDate(cellsMonth, weekStartsOn);
|
||||
if (!value) {
|
||||
return dates.map(function (d, index) {
|
||||
var isToday = dayjs().isSame(d, 'day');
|
||||
var isRowBegin = d.isSame(cellsMonth.startOf('month'), 'date') ||
|
||||
d.day() === rowBeginDay;
|
||||
var isRowEnd = d.isSame(cellsMonth.endOf('month'), 'date') || d.day() === rowEndDay;
|
||||
var top;
|
||||
if (isToday) {
|
||||
top = {
|
||||
label: localeText.today,
|
||||
};
|
||||
}
|
||||
return {
|
||||
index: index,
|
||||
disabled: false,
|
||||
time: d.toDate().getTime(),
|
||||
date: d.get('date'),
|
||||
isSelected: false,
|
||||
isSelectedBegin: false,
|
||||
top: top,
|
||||
isSelectedEnd: false,
|
||||
inThisMonth: d.month() === cellsMonth.month(),
|
||||
isRowBegin: isRowBegin,
|
||||
isRowEnd: isRowEnd,
|
||||
isRange: (d.isSame(rangeStartDate) || d.isAfter(rangeStartDate)) &&
|
||||
(d.isSame(rangeEndDate) || d.isBefore(rangeEndDate)),
|
||||
};
|
||||
});
|
||||
}
|
||||
var selectBegin;
|
||||
var selectEnd;
|
||||
if (Array.isArray(value)) {
|
||||
selectBegin = dayjs(value[0]);
|
||||
selectEnd = dayjs((_a = value[1]) !== null && _a !== void 0 ? _a : value[0]);
|
||||
}
|
||||
else {
|
||||
selectBegin = dayjs(value);
|
||||
selectEnd = dayjs(value);
|
||||
}
|
||||
return dates.map(function (d, index) {
|
||||
var isToday = dayjs().isSame(d, 'day');
|
||||
var isRowBegin = d.isSame(cellsMonth.startOf('month'), 'date') || d.day() === rowBeginDay;
|
||||
var isRowEnd = d.isSame(cellsMonth.endOf('month'), 'date') || d.day() === rowEndDay;
|
||||
var isSelectedBegin = selectBegin.isSame(d, 'day');
|
||||
var isSelectedEnd = selectEnd.isSame(d, 'day');
|
||||
var isSelected = (!!selectBegin.isBefore(d, 'day') && !!selectEnd.isAfter(d, 'day')) ||
|
||||
isSelectedBegin ||
|
||||
isSelectedEnd;
|
||||
var inThisMonth = d.month() === cellsMonth.month();
|
||||
var time = d.toDate().getTime();
|
||||
var topLabel = isToday ? localeText.today : '';
|
||||
if (Array.isArray(value)) {
|
||||
if (isSelectedBegin) {
|
||||
if (isSelectedEnd && value.length === 2) {
|
||||
topLabel = localeText.startAndEnd;
|
||||
}
|
||||
else {
|
||||
topLabel = localeText.start;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (isSelectedEnd) {
|
||||
topLabel = localeText.end;
|
||||
}
|
||||
}
|
||||
}
|
||||
return {
|
||||
index: index,
|
||||
disabled: false,
|
||||
time: time,
|
||||
date: d.get('date'),
|
||||
isSelected: isSelected,
|
||||
isSelectedBegin: isSelectedBegin,
|
||||
top: { label: topLabel },
|
||||
isSelectedEnd: isSelectedEnd,
|
||||
inThisMonth: inThisMonth,
|
||||
isRowBegin: isRowBegin,
|
||||
isRowEnd: isRowEnd,
|
||||
isRange: (d.isSame(rangeStartDate) || d.isAfter(rangeStartDate)) &&
|
||||
(d.isSame(rangeEndDate) || d.isBefore(rangeEndDate)),
|
||||
};
|
||||
});
|
||||
}
|
||||
export function getSelectionModeFromValue(value) {
|
||||
if (Array.isArray(value)) {
|
||||
return 'range';
|
||||
}
|
||||
if (typeof value === 'number') {
|
||||
return 'single';
|
||||
}
|
||||
return null;
|
||||
}
|
||||
// 获取滚动视图的元素id
|
||||
export function getScrollIntoViewId(value) {
|
||||
// 已选中时间滚动到可视区域内(微信不支持id为数字开头)
|
||||
return "id_".concat(value &&
|
||||
dayjs(Array.isArray(value) ? value[0] : value)
|
||||
.startOf('d')
|
||||
.subtract(7, 'd') // 需要定位的地方往前推7天,让已选中时间定位到中间位置
|
||||
.toDate()
|
||||
.getTime());
|
||||
}
|
Reference in New Issue
Block a user