@varlet/ui 1.26.4 → 1.26.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,13 +6,7 @@ import DayPickerPanel from './src/day-picker-panel.js'
6
6
  import { props, MONTH_LIST, WEEK_HEADER } from './props';
7
7
  import { isArray, toNumber } from '../utils/shared';
8
8
  import { pack } from '../locale';
9
- import { renderSlot as _renderSlot, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeProps as _normalizeProps, mergeProps as _mergeProps, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, normalizeStyle as _normalizeStyle, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue";
10
-
11
- var _withScopeId = n => (_pushScopeId(""), n = n(), _popScopeId(), n);
12
-
13
- var _hoisted_1 = {
14
- class: "var-date-picker-body"
15
- };
9
+ import { renderSlot as _renderSlot, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeProps as _normalizeProps, mergeProps as _mergeProps, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, normalizeStyle as _normalizeStyle, resolveComponent as _resolveComponent, createBlock as _createBlock } from "vue";
16
10
  export function render(_ctx, _cache) {
17
11
  var _component_year_picker_panel = _resolveComponent("year-picker-panel");
18
12
 
@@ -90,18 +84,30 @@ export function render(_ctx, _cache) {
90
84
  /* CLASS */
91
85
  )], 4
92
86
  /* STYLE */
93
- ), _createElementVNode("div", _hoisted_1, [_createVNode(_Transition, {
87
+ ), _createElementVNode("div", {
88
+ class: "var-date-picker-body",
89
+ onTouchstart: _cache[2] || (_cache[2] = function () {
90
+ return _ctx.handleTouchstart && _ctx.handleTouchstart(...arguments);
91
+ }),
92
+ onTouchmove: _cache[3] || (_cache[3] = function () {
93
+ return _ctx.handleTouchmove && _ctx.handleTouchmove(...arguments);
94
+ }),
95
+ onTouchend: _cache[4] || (_cache[4] = function () {
96
+ return _ctx.handleTouchend && _ctx.handleTouchend(...arguments);
97
+ })
98
+ }, [_createVNode(_Transition, {
94
99
  name: "var-date-picker-panel-fade"
95
100
  }, {
96
- default: _withCtx(() => [_ctx.isYearPanel ? (_openBlock(), _createBlock(_component_year_picker_panel, {
101
+ default: _withCtx(() => [_ctx.getPanelType === 'year' ? (_openBlock(), _createBlock(_component_year_picker_panel, {
97
102
  key: 0,
98
103
  "component-props": _ctx.componentProps,
99
104
  preview: _ctx.previewYear,
100
105
  onChooseYear: _ctx.getChooseYear
101
106
  }, null, 8
102
107
  /* PROPS */
103
- , ["component-props", "preview", "onChooseYear"])) : !_ctx.isYearPanel && _ctx.type === 'month' || _ctx.isMonthPanel ? (_openBlock(), _createBlock(_component_month_picker_panel, {
108
+ , ["component-props", "preview", "onChooseYear"])) : _ctx.getPanelType === 'month' ? (_openBlock(), _createBlock(_component_month_picker_panel, {
104
109
  key: 1,
110
+ ref: "monthPanelEl",
105
111
  current: _ctx.currentDate,
106
112
  choose: _ctx.getChoose,
107
113
  preview: _ctx.getPreview,
@@ -111,8 +117,9 @@ export function render(_ctx, _cache) {
111
117
  onCheckPreview: _ctx.checkPreview
112
118
  }, null, 8
113
119
  /* PROPS */
114
- , ["current", "choose", "preview", "click-year", "component-props", "onChooseMonth", "onCheckPreview"])) : !_ctx.isYearPanel && !_ctx.isMonthPanel && _ctx.type === 'date' ? (_openBlock(), _createBlock(_component_day_picker_panel, {
120
+ , ["current", "choose", "preview", "click-year", "component-props", "onChooseMonth", "onCheckPreview"])) : _ctx.getPanelType === 'date' ? (_openBlock(), _createBlock(_component_day_picker_panel, {
115
121
  key: 2,
122
+ ref: "dayPanelEl",
116
123
  current: _ctx.currentDate,
117
124
  choose: _ctx.getChoose,
118
125
  preview: _ctx.getPreview,
@@ -126,7 +133,9 @@ export function render(_ctx, _cache) {
126
133
  _: 1
127
134
  /* STABLE */
128
135
 
129
- })])], 2
136
+ })], 32
137
+ /* HYDRATE_EVENTS */
138
+ )], 2
130
139
  /* CLASS */
131
140
  );
132
141
  }
@@ -141,6 +150,10 @@ export default defineComponent({
141
150
  props,
142
151
 
143
152
  setup(props) {
153
+ var startX = 0;
154
+ var startY = 0;
155
+ var checkType = '';
156
+ var touchDirection;
144
157
  var currentDate = dayjs().format('YYYY-MM-D');
145
158
  var [currentYear, currentMonth] = currentDate.split('-');
146
159
  var monthDes = MONTH_LIST.find(month => month.index === currentMonth);
@@ -157,6 +170,8 @@ export default defineComponent({
157
170
  var chooseDays = ref([]);
158
171
  var chooseRangeMonth = ref([]);
159
172
  var chooseRangeDay = ref([]);
173
+ var monthPanelEl = ref(null);
174
+ var dayPanelEl = ref(null);
160
175
  var componentProps = reactive({
161
176
  allowedDates: props.allowedDates,
162
177
  type: props.type,
@@ -224,6 +239,15 @@ export default defineComponent({
224
239
  if (pack.value.lang === 'zh-CN') return chooseMonth.value.index + "-" + showDay + " " + weekName.slice(0, 3);
225
240
  return weekName.slice(0, 3) + ", " + monthName.slice(0, 3) + " " + chooseDay.value;
226
241
  });
242
+ var getPanelType = computed(() => {
243
+ if (isYearPanel.value) return 'year';
244
+ if (props.type === 'month' || isMonthPanel.value) return 'month';
245
+ if (props.type === 'date') return 'date';
246
+ return '';
247
+ });
248
+ var isUntouchable = computed(() => {
249
+ return !props.touchable || ['', 'year'].includes(getPanelType.value);
250
+ });
227
251
  var slotProps = computed(() => {
228
252
  var _chooseMonth$value, _chooseDay$value, _chooseYear$value, _chooseMonth$value$in, _chooseMonth$value2;
229
253
 
@@ -251,6 +275,39 @@ export default defineComponent({
251
275
  }
252
276
  };
253
277
 
278
+ var handleTouchstart = event => {
279
+ if (isUntouchable.value) return;
280
+ var {
281
+ clientX,
282
+ clientY
283
+ } = event.touches[0];
284
+ startX = clientX;
285
+ startY = clientY;
286
+ };
287
+
288
+ var getDirection = (x, y) => {
289
+ return x >= y && x > 20 ? 'x' : 'y';
290
+ };
291
+
292
+ var handleTouchmove = event => {
293
+ if (isUntouchable.value) return;
294
+ var {
295
+ clientX,
296
+ clientY
297
+ } = event.touches[0];
298
+ var x = clientX - startX;
299
+ var y = clientY - startY;
300
+ touchDirection = getDirection(Math.abs(x), Math.abs(y));
301
+ checkType = x > 0 ? 'prev' : 'next';
302
+ };
303
+
304
+ var handleTouchend = () => {
305
+ if (isUntouchable.value || touchDirection !== 'x') return;
306
+ var componentRef = getPanelType.value === 'month' ? monthPanelEl : dayPanelEl;
307
+ componentRef.value.forwardRef(checkType);
308
+ resetState();
309
+ };
310
+
254
311
  var updateRange = (date, type) => {
255
312
  var rangeDate = type === 'month' ? chooseRangeMonth : chooseRangeDay;
256
313
  rangeDate.value = rangeDone.value ? [date, date] : [rangeDate.value[0], date];
@@ -416,6 +473,13 @@ export default defineComponent({
416
473
  previewYear.value = yearValue;
417
474
  };
418
475
 
476
+ var resetState = () => {
477
+ startY = 0;
478
+ startX = 0;
479
+ checkType = '';
480
+ touchDirection = undefined;
481
+ };
482
+
419
483
  watch(() => props.modelValue, value => {
420
484
  if (!checkValue() || invalidFormatDate(value) || !value) return;
421
485
 
@@ -432,7 +496,10 @@ export default defineComponent({
432
496
  }, {
433
497
  immediate: true
434
498
  });
499
+ watch(getPanelType, resetState);
435
500
  return {
501
+ monthPanelEl,
502
+ dayPanelEl,
436
503
  reverse,
437
504
  currentDate,
438
505
  chooseMonth,
@@ -443,12 +510,16 @@ export default defineComponent({
443
510
  isMonthPanel,
444
511
  getMonthTitle,
445
512
  getDateTitle,
513
+ getPanelType,
446
514
  getChoose,
447
515
  getPreview,
448
516
  componentProps,
449
517
  slotProps,
450
518
  formatRange,
451
519
  clickEl,
520
+ handleTouchstart,
521
+ handleTouchmove,
522
+ handleTouchend,
452
523
  getChooseDay,
453
524
  getChooseMonth,
454
525
  getChooseYear,
@@ -1 +1 @@
1
- :root { --date-picker-border-radius: 4px; --date-picker-font-size: var(--font-size-md); --date-picker-min-width: 290px; --date-picker-height: 385px; --date-picker-main-color: rgba(0, 0, 0, 0.87); --date-picker-title-padding: 16px; --date-picker-title-background: var(--color-primary); --date-picker-title-color: #fff; --date-picker-title-year-font-size: var(--font-size-md); --date-picker-title-year-font-weight: 500; --date-picker-title-year-margin-bottom: 8px; --date-picker-title-date-height: 48px; --date-picker-title-date-font-size: 34px; --date-picker-title-date-font-weight: 500; --date-picker-title-date-range-font-size: 20px; --date-picker-body-background-color: rgba(0, 0, 0, 0); --picker-header-padding: 4px 16px; --month-picker-padding: 0 12px; --month-picker-item-width: 33%; --month-picker-item-height: 56px; --month-picker-item-button-max-width: 140px; --year-picker-font-weight: 400; --year-picker-item-padding: 8px 0; --year-picker-item-active-font-size: 26px; --year-picker-item-active-font-weight: 500; --year-picker-item-active-font-padding: 10px 0; --year-picker-item-active-color: var(--color-primary); --day-picker-content-item-width: 14.28%; --day-picker-content-item-font-size: var(--font-size-sm); --day-picker-content-item-padding: 2px 0; --day-picker-content-item-button-width: 32px; --day-picker-content-item-button-height: 32px; --day-picker-content-item-button-font-size: var(--font-size-sm); --day-picker-head-item-color: rgba(0, 0, 0, 0.38); --day-picker-head-item-padding: 8px 0; --day-picker-head-item-font-weight: 600;}.var-date-picker { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); border-radius: var(--date-picker-border-radius); contain: layout style; display: flex; flex-direction: column; font-size: var(--date-picker-font-size); position: relative; min-width: var(--date-picker-min-width); height: var(--date-picker-height); overflow: hidden;}.var-date-picker ul { list-style: none; margin: 0; padding: 0;}.var-date-picker-title { padding: var(--date-picker-title-padding); color: var(--date-picker-title-color); background: var(--date-picker-title-background); display: flex; justify-content: space-between; flex-direction: column; flex-wrap: wrap;}.var-date-picker-title__year { opacity: 0.6; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); align-items: center; display: inline-flex; font-size: var(--date-picker-title-year-font-size); font-weight: var(--date-picker-title-year-font-weight); margin-bottom: var(--date-picker-title-year-margin-bottom); transition: 0.3s var(--cubic-bezier);}.var-date-picker-title__year--active { opacity: 1;}.var-date-picker-title__date { height: var(--date-picker-title-date-height); overflow: hidden; font-size: var(--date-picker-title-date-font-size); text-align: left; font-weight: var(--date-picker-title-date-font-weight); position: relative; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); display: flex; align-items: center; opacity: 0.6; transition: 0.3s var(--cubic-bezier);}.var-date-picker-title__date--active { opacity: 1;}.var-date-picker-title__date--range { font-size: var(--date-picker-title-date-range-font-size);}.var-date-picker-body { flex: 1; position: relative; overflow: auto; background-color: var(--date-picker-body-background-color);}.var-date-picker .var-picker-header { padding: var(--picker-header-padding); align-items: center; display: flex; justify-content: space-between; position: relative;}.var-date-picker .var-picker-header__value { flex: 1; text-align: center; position: relative; overflow: hidden; font-weight: 700; cursor: pointer;}.var-date-picker .var-picker-header__value div { width: 100%;}.var-date-picker .var-month-picker__content { padding: var(--month-picker-padding);}.var-date-picker .var-month-picker__content ul { display: flex; flex-wrap: wrap; justify-content: space-between;}.var-date-picker .var-month-picker__content ul li { width: var(--month-picker-item-width); display: flex; height: var(--month-picker-item-height); align-items: center; justify-content: center;}.var-date-picker .var-month-picker__button[var-month-picker-cover] { width: 100%; max-width: var(--month-picker-item-button-max-width);}.var-date-picker .var-month-picker__button[var-date-picker-color-cover='true'] { color: var(--date-picker-main-color);}.var-date-picker .var-year-picker__panel { width: 100%; height: 100%; font-weight: var(--year-picker-font-weight); padding: 0; margin: 0; list-style-type: none; overflow: auto; text-align: center;}.var-date-picker .var-year-picker__panel li { padding: var(--year-picker-item-padding); cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.var-date-picker .var-year-picker__panel--active { font-size: var(--year-picker-item-active-font-size); font-weight: var(--year-picker-item-active-font-weight); padding: var(--year-picker-item-active-font-padding); color: var(--year-picker-item-active-color);}.var-date-picker .var-day-picker__content ul { display: flex; flex-wrap: wrap;}.var-date-picker .var-day-picker__content ul li { position: relative; display: flex; justify-content: center; width: var(--day-picker-content-item-width); font-size: var(--day-picker-content-item-font-size); padding: var(--day-picker-content-item-padding);}.var-date-picker .var-day-picker__head li { color: var(--day-picker-head-item-color); padding: var(--day-picker-head-item-padding); font-weight: var(--day-picker-head-item-font-weight);}.var-date-picker .var-day-picker__button[var-day-picker-cover] { width: var(--day-picker-content-item-button-width); height: var(--day-picker-content-item-button-height); font-size: var(--day-picker-content-item-button-font-size);}.var-date-picker .var-day-picker__button[var-date-picker-color-cover='true'] { color: var(--date-picker-main-color);}.var-date-picker-translatey-enter-from { opacity: 0; transform: translateY(100%);}.var-date-picker-translatey-enter-active,.var-date-picker-reverse-translatey-enter-active { transition: 0.3s var(--cubic-bezier);}.var-date-picker-translatey-leave-active,.var-date-picker-reverse-translatey-leave-active { position: absolute; transition: 0.3s var(--cubic-bezier);}.var-date-picker-translatey-leave-to { opacity: 0; transform: translateY(-100%);}.var-date-picker-reverse-translatey-enter-from { opacity: 0; transform: translateY(-100%);}.var-date-picker-reverse-translatey-leave-to { opacity: 0; transform: translateY(100%);}.var-date-picker-panel-fade-enter-from,.var-date-picker-panel-fade-leave-to { transition: 0.3s var(--cubic-bezier); opacity: 0;}.var-date-picker-panel-fade-leave-active { position: absolute;}.var-date-picker-translatex-enter-from { opacity: 0; transform: translateX(100%);}.var-date-picker-reverse-translatex-enter-from { opacity: 0; transform: translateX(-100%);}.var-date-picker-translatex-enter-active,.var-date-picker-reverse-translatex-enter-active { transition: 0.3s var(--cubic-bezier);}.var-date-picker-translatex-leave-active,.var-date-picker-reverse-translatex-leave-active { position: absolute; transition: 0.3s var(--cubic-bezier);}.var-date-picker-translatex-leave-to { opacity: 0; transform: translateX(-100%);}.var-date-picker-reverse-translatex-leave-to { opacity: 0; transform: translateX(100%);}
1
+ :root { --date-picker-border-radius: 4px; --date-picker-font-size: var(--font-size-md); --date-picker-min-width: 290px; --date-picker-height: 385px; --date-picker-main-color: rgba(0, 0, 0, 0.87); --date-picker-title-padding: 16px; --date-picker-title-background: var(--color-primary); --date-picker-title-color: #fff; --date-picker-title-year-font-size: var(--font-size-md); --date-picker-title-year-font-weight: 500; --date-picker-title-year-margin-bottom: 8px; --date-picker-title-date-height: 48px; --date-picker-title-date-font-size: 34px; --date-picker-title-date-font-weight: 500; --date-picker-title-date-range-font-size: 20px; --date-picker-body-background-color: rgba(0, 0, 0, 0); --picker-header-padding: 4px 16px; --month-picker-padding: 0 12px; --month-picker-item-width: 33%; --month-picker-item-height: 56px; --month-picker-item-button-max-width: 140px; --year-picker-font-weight: 400; --year-picker-item-padding: 8px 0; --year-picker-item-active-font-size: 26px; --year-picker-item-active-font-weight: 500; --year-picker-item-active-font-padding: 10px 0; --year-picker-item-active-color: var(--color-primary); --day-picker-content-item-width: 14.28%; --day-picker-content-item-font-size: var(--font-size-sm); --day-picker-content-item-padding: 2px 0; --day-picker-content-item-button-width: 32px; --day-picker-content-item-button-height: 32px; --day-picker-content-item-button-font-size: var(--font-size-sm); --day-picker-head-item-color: rgba(0, 0, 0, 0.38); --day-picker-head-item-padding: 8px 0; --day-picker-head-item-font-weight: 600;}.var-date-picker { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); border-radius: var(--date-picker-border-radius); contain: layout style; display: flex; flex-direction: column; font-size: var(--date-picker-font-size); position: relative; min-width: var(--date-picker-min-width); height: var(--date-picker-height); overflow: hidden;}.var-date-picker ul { list-style: none; margin: 0; padding: 0;}.var-date-picker-title { padding: var(--date-picker-title-padding); color: var(--date-picker-title-color); background: var(--date-picker-title-background); display: flex; justify-content: space-between; flex-direction: column; flex-wrap: wrap;}.var-date-picker-title__year { opacity: 0.6; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); align-items: center; display: inline-flex; font-size: var(--date-picker-title-year-font-size); font-weight: var(--date-picker-title-year-font-weight); margin-bottom: var(--date-picker-title-year-margin-bottom); transition: 0.3s var(--cubic-bezier);}.var-date-picker-title__year--active { opacity: 1;}.var-date-picker-title__date { height: var(--date-picker-title-date-height); overflow: hidden; font-size: var(--date-picker-title-date-font-size); text-align: left; font-weight: var(--date-picker-title-date-font-weight); position: relative; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); display: flex; align-items: center; opacity: 0.6; transition: 0.3s var(--cubic-bezier);}.var-date-picker-title__date--active { opacity: 1;}.var-date-picker-title__date--range { font-size: var(--date-picker-title-date-range-font-size);}.var-date-picker-body { flex: 1; position: relative; overflow: auto; background-color: var(--date-picker-body-background-color);}.var-date-picker .var-picker-header { padding: var(--picker-header-padding); align-items: center; display: flex; justify-content: space-between; position: relative;}.var-date-picker .var-picker-header__value { flex: 1; text-align: center; position: relative; overflow: hidden; font-weight: 700; cursor: pointer; user-select: none;}.var-date-picker .var-picker-header__value div { width: 100%;}.var-date-picker .var-month-picker__content { padding: var(--month-picker-padding);}.var-date-picker .var-month-picker__content ul { display: flex; flex-wrap: wrap; justify-content: space-between;}.var-date-picker .var-month-picker__content ul li { width: var(--month-picker-item-width); display: flex; height: var(--month-picker-item-height); align-items: center; justify-content: center;}.var-date-picker .var-month-picker__button[var-month-picker-cover] { width: 100%; max-width: var(--month-picker-item-button-max-width);}.var-date-picker .var-month-picker__button[var-date-picker-color-cover='true'] { color: var(--date-picker-main-color);}.var-date-picker .var-year-picker__panel { width: 100%; height: 100%; font-weight: var(--year-picker-font-weight); padding: 0; margin: 0; list-style-type: none; overflow: auto; text-align: center;}.var-date-picker .var-year-picker__panel li { padding: var(--year-picker-item-padding); cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.var-date-picker .var-year-picker__panel--active { font-size: var(--year-picker-item-active-font-size); font-weight: var(--year-picker-item-active-font-weight); padding: var(--year-picker-item-active-font-padding); color: var(--year-picker-item-active-color);}.var-date-picker .var-day-picker__content ul { display: flex; flex-wrap: wrap;}.var-date-picker .var-day-picker__content ul li { position: relative; display: flex; justify-content: center; width: var(--day-picker-content-item-width); font-size: var(--day-picker-content-item-font-size); padding: var(--day-picker-content-item-padding);}.var-date-picker .var-day-picker__head li { color: var(--day-picker-head-item-color); padding: var(--day-picker-head-item-padding); font-weight: var(--day-picker-head-item-font-weight);}.var-date-picker .var-day-picker__button[var-day-picker-cover] { width: var(--day-picker-content-item-button-width); height: var(--day-picker-content-item-button-height); font-size: var(--day-picker-content-item-button-font-size);}.var-date-picker .var-day-picker__button[var-date-picker-color-cover='true'] { color: var(--date-picker-main-color);}.var-date-picker-translatey-enter-from { opacity: 0; transform: translateY(100%);}.var-date-picker-translatey-enter-active,.var-date-picker-reverse-translatey-enter-active { transition: 0.3s var(--cubic-bezier);}.var-date-picker-translatey-leave-active,.var-date-picker-reverse-translatey-leave-active { position: absolute; transition: 0.3s var(--cubic-bezier);}.var-date-picker-translatey-leave-to { opacity: 0; transform: translateY(-100%);}.var-date-picker-reverse-translatey-enter-from { opacity: 0; transform: translateY(-100%);}.var-date-picker-reverse-translatey-leave-to { opacity: 0; transform: translateY(100%);}.var-date-picker-panel-fade-enter-from,.var-date-picker-panel-fade-leave-to { transition: 0.3s var(--cubic-bezier); opacity: 0;}.var-date-picker-panel-fade-leave-active { position: absolute;}.var-date-picker-translatex-enter-from { opacity: 0; transform: translateX(100%);}.var-date-picker-reverse-translatex-enter-from { opacity: 0; transform: translateX(-100%);}.var-date-picker-translatex-enter-active,.var-date-picker-reverse-translatex-enter-active { transition: 0.3s var(--cubic-bezier);}.var-date-picker-translatex-leave-active,.var-date-picker-reverse-translatex-leave-active { position: absolute; transition: 0.3s var(--cubic-bezier);}.var-date-picker-translatex-leave-to { opacity: 0; transform: translateX(-100%);}.var-date-picker-reverse-translatex-leave-to { opacity: 0; transform: translateX(100%);}
@@ -162,6 +162,7 @@
162
162
  overflow: hidden;
163
163
  font-weight: 700;
164
164
  cursor: pointer;
165
+ user-select: none;
165
166
 
166
167
  div {
167
168
  width: 100%;
@@ -90,6 +90,10 @@ export var props = {
90
90
  type: Boolean,
91
91
  default: false
92
92
  },
93
+ touchable: {
94
+ type: Boolean,
95
+ default: true
96
+ },
93
97
  onChange: {
94
98
  type: Function
95
99
  },
@@ -33,6 +33,7 @@ export function render(_ctx, _cache) {
33
33
  var _component_var_button = _resolveComponent("var-button");
34
34
 
35
35
  return _openBlock(), _createElementBlock("div", _hoisted_1, [_createElementVNode("div", _hoisted_2, [_createVNode(_component_panel_header, {
36
+ ref: "headerEl",
36
37
  type: "day",
37
38
  date: _ctx.preview,
38
39
  disabled: _ctx.panelBtnDisabled,
@@ -125,6 +126,7 @@ export default defineComponent({
125
126
  var days = ref([]);
126
127
  var reverse = ref(false);
127
128
  var panelKey = ref(0);
129
+ var headerEl = ref(null);
128
130
  var panelBtnDisabled = reactive({
129
131
  left: false,
130
132
  right: false
@@ -308,6 +310,11 @@ export default defineComponent({
308
310
 
309
311
  var chooseDay = day => {
310
312
  emit('choose-day', day);
313
+ }; // expose for internal
314
+
315
+
316
+ var forwardRef = checkType => {
317
+ headerEl.value.checkDate(checkType);
311
318
  };
312
319
 
313
320
  onMounted(() => {
@@ -321,9 +328,11 @@ export default defineComponent({
321
328
  return {
322
329
  days,
323
330
  reverse,
331
+ headerEl,
324
332
  panelKey,
325
333
  sortWeekList,
326
334
  panelBtnDisabled,
335
+ forwardRef,
327
336
  filterDay,
328
337
  getDayAbbr,
329
338
  checkDate,
@@ -27,6 +27,7 @@ export function render(_ctx, _cache) {
27
27
  var _component_var_button = _resolveComponent("var-button");
28
28
 
29
29
  return _openBlock(), _createElementBlock("div", _hoisted_1, [_createElementVNode("div", _hoisted_2, [_createVNode(_component_panel_header, {
30
+ ref: "headerEl",
30
31
  type: "month",
31
32
  date: _ctx.preview,
32
33
  disabled: _ctx.panelBtnDisabled,
@@ -107,6 +108,7 @@ export default defineComponent({
107
108
  var [currentYear, currentMonth] = props.current.split('-');
108
109
  var reverse = ref(false);
109
110
  var panelKey = ref(0);
111
+ var headerEl = ref(null);
110
112
  var panelBtnDisabled = reactive({
111
113
  left: false,
112
114
  right: false
@@ -236,6 +238,11 @@ export default defineComponent({
236
238
  reverse.value = checkType === 'prev';
237
239
  panelKey.value += checkType === 'prev' ? -1 : 1;
238
240
  emit('check-preview', 'year', checkType);
241
+ }; // expose for internal
242
+
243
+
244
+ var forwardRef = checkType => {
245
+ headerEl.value.checkDate(checkType);
239
246
  };
240
247
 
241
248
  watch(() => props.preview.previewYear, year => {
@@ -253,9 +260,11 @@ export default defineComponent({
253
260
  return {
254
261
  pack,
255
262
  MONTH_LIST,
263
+ headerEl,
256
264
  reverse,
257
265
  panelKey,
258
266
  panelBtnDisabled,
267
+ forwardRef,
259
268
  buttonProps,
260
269
  getMonthAbbr,
261
270
  chooseMonth,
@@ -113,6 +113,7 @@ export default defineComponent({
113
113
  });
114
114
 
115
115
  var checkDate = checkType => {
116
+ if (checkType === 'prev' && props.disabled.left || checkType === 'next' && props.disabled.right) return;
116
117
  emit('check-date', checkType);
117
118
  reverse.value = checkType === 'prev';
118
119
  forwardOrBackNum.value += checkType === 'prev' ? -1 : 1;
@@ -18,6 +18,9 @@ var _hoisted_2 = {
18
18
  key: 0,
19
19
  class: "var-image-preview__indicators"
20
20
  };
21
+ var _hoisted_3 = {
22
+ class: "var-image-preview__extra"
23
+ };
21
24
  export function render(_ctx, _cache) {
22
25
  var _component_var_swipe_item = _resolveComponent("var-swipe-item");
23
26
 
@@ -116,7 +119,7 @@ export function render(_ctx, _cache) {
116
119
  onClick: _ctx.close
117
120
  }, null, 8
118
121
  /* PROPS */
119
- , ["onClick"])) : _createCommentVNode("v-if", true)])]),
122
+ , ["onClick"])) : _createCommentVNode("v-if", true)]), _createElementVNode("div", _hoisted_3, [_renderSlot(_ctx.$slots, "extra")])]),
120
123
  _: 3
121
124
  /* FORWARDED */
122
125
 
@@ -1 +1 @@
1
- :root { --image-preview-swipe-indicators-text-color: #ddd; --image-preview-swipe-indicators-padding: 16px 0; --image-preview-zoom-container-background: #000; --image-preview-close-icon-top: 13px; --image-preview-close-icon-right: 14px; --image-preview-close-icon-size: 22px; --image-preview-close-icon-color: #fff;}.var-image-preview__popup[var-image-preview-cover] { background: transparent;}.var-image-preview__swipe[var-image-preview-cover] { width: 100vw; height: 100vh;}.var-image-preview__swipe-item[var-image-preview-cover] { overflow: hidden;}.var-image-preview__close-icon[var-image-preview-cover] { position: absolute; top: var(--image-preview-close-icon-top); right: var(--image-preview-close-icon-right); color: var(--image-preview-close-icon-color); font-size: var(--image-preview-close-icon-size);}.var-image-preview__indicators { position: absolute; top: 0; width: 100%; padding: var(--image-preview-swipe-indicators-padding); color: var(--image-preview-swipe-indicators-text-color); text-align: center;}.var-image-preview__image { width: 100%; height: 100%; object-fit: contain; -webkit-user-drag: none;}.var-image-preview__zoom-container { display: flex; justify-content: center; align-items: center; width: 100vw; height: 100vh; transition: transform 0.2s; background: var(--image-preview-zoom-container-background);}
1
+ :root { --image-preview-swipe-indicators-text-color: #ddd; --image-preview-swipe-indicators-padding: 16px 0; --image-preview-zoom-container-background: #000; --image-preview-close-icon-top: 14px; --image-preview-close-icon-right: 14px; --image-preview-extra-top: 14px; --image-preview-extra-left: 14px; --image-preview-close-icon-size: 22px; --image-preview-close-icon-color: #fff;}.var-image-preview__popup[var-image-preview-cover] { background: transparent;}.var-image-preview__swipe[var-image-preview-cover] { width: 100vw; height: 100vh;}.var-image-preview__swipe-item[var-image-preview-cover] { overflow: hidden;}.var-image-preview__close-icon[var-image-preview-cover] { position: absolute; top: var(--image-preview-close-icon-top); right: var(--image-preview-close-icon-right); color: var(--image-preview-close-icon-color); font-size: var(--image-preview-close-icon-size);}.var-image-preview__extra { position: absolute; top: var(--image-preview-extra-top); left: var(--image-preview-extra-left);}.var-image-preview__indicators { position: absolute; top: 0; width: 100%; padding: var(--image-preview-swipe-indicators-padding); color: var(--image-preview-swipe-indicators-text-color); text-align: center;}.var-image-preview__image { width: 100%; height: 100%; object-fit: contain; -webkit-user-drag: none;}.var-image-preview__zoom-container { display: flex; justify-content: center; align-items: center; width: 100vw; height: 100vh; transition: transform 0.2s; background: var(--image-preview-zoom-container-background);}
@@ -1,8 +1,10 @@
1
1
  @image-preview-swipe-indicators-text-color: #ddd;
2
2
  @image-preview-swipe-indicators-padding: 16px 0;
3
3
  @image-preview-zoom-container-background: #000;
4
- @image-preview-close-icon-top: 13px;
4
+ @image-preview-close-icon-top: 14px;
5
5
  @image-preview-close-icon-right: 14px;
6
+ @image-preview-extra-top: 14px;
7
+ @image-preview-extra-left: 14px;
6
8
  @image-preview-close-icon-size: 22px;
7
9
  @image-preview-close-icon-color: #fff;
8
10
 
@@ -12,6 +14,8 @@
12
14
  --image-preview-zoom-container-background: @image-preview-zoom-container-background;
13
15
  --image-preview-close-icon-top: @image-preview-close-icon-top;
14
16
  --image-preview-close-icon-right: @image-preview-close-icon-right;
17
+ --image-preview-extra-top: @image-preview-extra-top;
18
+ --image-preview-extra-left: @image-preview-extra-left;
15
19
  --image-preview-close-icon-size: @image-preview-close-icon-size;
16
20
  --image-preview-close-icon-color: @image-preview-close-icon-color;
17
21
  }
@@ -38,6 +42,12 @@
38
42
  font-size: var(--image-preview-close-icon-size);
39
43
  }
40
44
 
45
+ &__extra {
46
+ position: absolute;
47
+ top: var(--image-preview-extra-top);
48
+ left: var(--image-preview-extra-left);
49
+ }
50
+
41
51
  &__indicators {
42
52
  position: absolute;
43
53
  top: 0;