@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.
@@ -527,6 +527,10 @@
527
527
  "type": "boolean",
528
528
  "description": "是否支持选择一个范围 默认值:false"
529
529
  },
530
+ "var-date-picker/touchable": {
531
+ "type": "boolean",
532
+ "description": "是否支持拖动切换面板 默认值:true"
533
+ },
530
534
  "var-dialog/v-model:show": {
531
535
  "type": "boolean",
532
536
  "description": "是否显示对话框 默认值:false"
@@ -192,7 +192,8 @@
192
192
  "show-current",
193
193
  "readonly",
194
194
  "multiple",
195
- "range"
195
+ "range",
196
+ "touchable"
196
197
  ]
197
198
  },
198
199
  "var-dialog": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
- "version": "1.26.3",
4
+ "version": "1.26.4",
5
5
  "name": "VARLET",
6
6
  "contributions": {
7
7
  "html": {
@@ -1542,6 +1542,15 @@
1542
1542
  "type": "boolean",
1543
1543
  "kind": "expression"
1544
1544
  }
1545
+ },
1546
+ {
1547
+ "name": "touchable",
1548
+ "description": "是否支持拖动切换面板",
1549
+ "default": "true",
1550
+ "value": {
1551
+ "type": "boolean",
1552
+ "kind": "expression"
1553
+ }
1545
1554
  }
1546
1555
  ],
1547
1556
  "events": [
@@ -2186,6 +2195,10 @@
2186
2195
  {
2187
2196
  "name": "close-icon",
2188
2197
  "description": "关闭按钮"
2198
+ },
2199
+ {
2200
+ "name": "extra",
2201
+ "description": "额外插槽"
2189
2202
  }
2190
2203
  ]
2191
2204
  },
@@ -22,12 +22,6 @@ var _locale = require("../locale");
22
22
 
23
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
24
 
25
- var _withScopeId = n => ((0, _vue.pushScopeId)(""), n = n(), (0, _vue.popScopeId)(), n);
26
-
27
- var _hoisted_1 = {
28
- class: "var-date-picker-body"
29
- };
30
-
31
25
  function render(_ctx, _cache) {
32
26
  var _component_year_picker_panel = (0, _vue.resolveComponent)("year-picker-panel");
33
27
 
@@ -105,18 +99,30 @@ function render(_ctx, _cache) {
105
99
  /* CLASS */
106
100
  )], 4
107
101
  /* STYLE */
108
- ), (0, _vue.createElementVNode)("div", _hoisted_1, [(0, _vue.createVNode)(_vue.Transition, {
102
+ ), (0, _vue.createElementVNode)("div", {
103
+ class: "var-date-picker-body",
104
+ onTouchstart: _cache[2] || (_cache[2] = function () {
105
+ return _ctx.handleTouchstart && _ctx.handleTouchstart(...arguments);
106
+ }),
107
+ onTouchmove: _cache[3] || (_cache[3] = function () {
108
+ return _ctx.handleTouchmove && _ctx.handleTouchmove(...arguments);
109
+ }),
110
+ onTouchend: _cache[4] || (_cache[4] = function () {
111
+ return _ctx.handleTouchend && _ctx.handleTouchend(...arguments);
112
+ })
113
+ }, [(0, _vue.createVNode)(_vue.Transition, {
109
114
  name: "var-date-picker-panel-fade"
110
115
  }, {
111
- default: (0, _vue.withCtx)(() => [_ctx.isYearPanel ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_year_picker_panel, {
116
+ default: (0, _vue.withCtx)(() => [_ctx.getPanelType === 'year' ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_year_picker_panel, {
112
117
  key: 0,
113
118
  "component-props": _ctx.componentProps,
114
119
  preview: _ctx.previewYear,
115
120
  onChooseYear: _ctx.getChooseYear
116
121
  }, null, 8
117
122
  /* PROPS */
118
- , ["component-props", "preview", "onChooseYear"])) : !_ctx.isYearPanel && _ctx.type === 'month' || _ctx.isMonthPanel ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_month_picker_panel, {
123
+ , ["component-props", "preview", "onChooseYear"])) : _ctx.getPanelType === 'month' ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_month_picker_panel, {
119
124
  key: 1,
125
+ ref: "monthPanelEl",
120
126
  current: _ctx.currentDate,
121
127
  choose: _ctx.getChoose,
122
128
  preview: _ctx.getPreview,
@@ -126,8 +132,9 @@ function render(_ctx, _cache) {
126
132
  onCheckPreview: _ctx.checkPreview
127
133
  }, null, 8
128
134
  /* PROPS */
129
- , ["current", "choose", "preview", "click-year", "component-props", "onChooseMonth", "onCheckPreview"])) : !_ctx.isYearPanel && !_ctx.isMonthPanel && _ctx.type === 'date' ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_day_picker_panel, {
135
+ , ["current", "choose", "preview", "click-year", "component-props", "onChooseMonth", "onCheckPreview"])) : _ctx.getPanelType === 'date' ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_day_picker_panel, {
130
136
  key: 2,
137
+ ref: "dayPanelEl",
131
138
  current: _ctx.currentDate,
132
139
  choose: _ctx.getChoose,
133
140
  preview: _ctx.getPreview,
@@ -141,7 +148,9 @@ function render(_ctx, _cache) {
141
148
  _: 1
142
149
  /* STABLE */
143
150
 
144
- })])], 2
151
+ })], 32
152
+ /* HYDRATE_EVENTS */
153
+ )], 2
145
154
  /* CLASS */
146
155
  );
147
156
  }
@@ -157,6 +166,10 @@ var _default = (0, _vue.defineComponent)({
157
166
  props: _props.props,
158
167
 
159
168
  setup(props) {
169
+ var startX = 0;
170
+ var startY = 0;
171
+ var checkType = '';
172
+ var touchDirection;
160
173
  var currentDate = (0, _dayjs.default)().format('YYYY-MM-D');
161
174
  var [currentYear, currentMonth] = currentDate.split('-');
162
175
 
@@ -175,6 +188,8 @@ var _default = (0, _vue.defineComponent)({
175
188
  var chooseDays = (0, _vue.ref)([]);
176
189
  var chooseRangeMonth = (0, _vue.ref)([]);
177
190
  var chooseRangeDay = (0, _vue.ref)([]);
191
+ var monthPanelEl = (0, _vue.ref)(null);
192
+ var dayPanelEl = (0, _vue.ref)(null);
178
193
  var componentProps = (0, _vue.reactive)({
179
194
  allowedDates: props.allowedDates,
180
195
  type: props.type,
@@ -244,6 +259,15 @@ var _default = (0, _vue.defineComponent)({
244
259
  if (_locale.pack.value.lang === 'zh-CN') return chooseMonth.value.index + "-" + showDay + " " + weekName.slice(0, 3);
245
260
  return weekName.slice(0, 3) + ", " + monthName.slice(0, 3) + " " + chooseDay.value;
246
261
  });
262
+ var getPanelType = (0, _vue.computed)(() => {
263
+ if (isYearPanel.value) return 'year';
264
+ if (props.type === 'month' || isMonthPanel.value) return 'month';
265
+ if (props.type === 'date') return 'date';
266
+ return '';
267
+ });
268
+ var isUntouchable = (0, _vue.computed)(() => {
269
+ return !props.touchable || ['', 'year'].includes(getPanelType.value);
270
+ });
247
271
  var slotProps = (0, _vue.computed)(() => {
248
272
  var _chooseMonth$value, _chooseDay$value, _chooseYear$value, _chooseMonth$value$in, _chooseMonth$value2;
249
273
 
@@ -271,6 +295,39 @@ var _default = (0, _vue.defineComponent)({
271
295
  }
272
296
  };
273
297
 
298
+ var handleTouchstart = event => {
299
+ if (isUntouchable.value) return;
300
+ var {
301
+ clientX,
302
+ clientY
303
+ } = event.touches[0];
304
+ startX = clientX;
305
+ startY = clientY;
306
+ };
307
+
308
+ var getDirection = (x, y) => {
309
+ return x >= y && x > 20 ? 'x' : 'y';
310
+ };
311
+
312
+ var handleTouchmove = event => {
313
+ if (isUntouchable.value) return;
314
+ var {
315
+ clientX,
316
+ clientY
317
+ } = event.touches[0];
318
+ var x = clientX - startX;
319
+ var y = clientY - startY;
320
+ touchDirection = getDirection(Math.abs(x), Math.abs(y));
321
+ checkType = x > 0 ? 'prev' : 'next';
322
+ };
323
+
324
+ var handleTouchend = () => {
325
+ if (isUntouchable.value || touchDirection !== 'x') return;
326
+ var componentRef = getPanelType.value === 'month' ? monthPanelEl : dayPanelEl;
327
+ componentRef.value.forwardRef(checkType);
328
+ resetState();
329
+ };
330
+
274
331
  var updateRange = (date, type) => {
275
332
  var rangeDate = type === 'month' ? chooseRangeMonth : chooseRangeDay;
276
333
  rangeDate.value = rangeDone.value ? [date, date] : [rangeDate.value[0], date];
@@ -438,6 +495,13 @@ var _default = (0, _vue.defineComponent)({
438
495
  previewYear.value = yearValue;
439
496
  };
440
497
 
498
+ var resetState = () => {
499
+ startY = 0;
500
+ startX = 0;
501
+ checkType = '';
502
+ touchDirection = undefined;
503
+ };
504
+
441
505
  (0, _vue.watch)(() => props.modelValue, value => {
442
506
  if (!checkValue() || invalidFormatDate(value) || !value) return;
443
507
 
@@ -454,7 +518,10 @@ var _default = (0, _vue.defineComponent)({
454
518
  }, {
455
519
  immediate: true
456
520
  });
521
+ (0, _vue.watch)(getPanelType, resetState);
457
522
  return {
523
+ monthPanelEl,
524
+ dayPanelEl,
458
525
  reverse,
459
526
  currentDate,
460
527
  chooseMonth,
@@ -465,12 +532,16 @@ var _default = (0, _vue.defineComponent)({
465
532
  isMonthPanel,
466
533
  getMonthTitle,
467
534
  getDateTitle,
535
+ getPanelType,
468
536
  getChoose,
469
537
  getPreview,
470
538
  componentProps,
471
539
  slotProps,
472
540
  formatRange,
473
541
  clickEl,
542
+ handleTouchstart,
543
+ handleTouchmove,
544
+ handleTouchend,
474
545
  getChooseDay,
475
546
  getChooseMonth,
476
547
  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%;
@@ -97,6 +97,10 @@ var props = {
97
97
  type: Boolean,
98
98
  default: false
99
99
  },
100
+ touchable: {
101
+ type: Boolean,
102
+ default: true
103
+ },
100
104
  onChange: {
101
105
  type: Function
102
106
  },
@@ -51,6 +51,7 @@ function render(_ctx, _cache) {
51
51
  var _component_var_button = (0, _vue.resolveComponent)("var-button");
52
52
 
53
53
  return (0, _vue.openBlock)(), (0, _vue.createElementBlock)("div", _hoisted_1, [(0, _vue.createElementVNode)("div", _hoisted_2, [(0, _vue.createVNode)(_component_panel_header, {
54
+ ref: "headerEl",
54
55
  type: "day",
55
56
  date: _ctx.preview,
56
57
  disabled: _ctx.panelBtnDisabled,
@@ -144,6 +145,7 @@ var _default = (0, _vue.defineComponent)({
144
145
  var days = (0, _vue.ref)([]);
145
146
  var reverse = (0, _vue.ref)(false);
146
147
  var panelKey = (0, _vue.ref)(0);
148
+ var headerEl = (0, _vue.ref)(null);
147
149
  var panelBtnDisabled = (0, _vue.reactive)({
148
150
  left: false,
149
151
  right: false
@@ -328,6 +330,11 @@ var _default = (0, _vue.defineComponent)({
328
330
 
329
331
  var chooseDay = day => {
330
332
  emit('choose-day', day);
333
+ }; // expose for internal
334
+
335
+
336
+ var forwardRef = checkType => {
337
+ headerEl.value.checkDate(checkType);
331
338
  };
332
339
 
333
340
  (0, _vue.onMounted)(() => {
@@ -341,9 +348,11 @@ var _default = (0, _vue.defineComponent)({
341
348
  return {
342
349
  days,
343
350
  reverse,
351
+ headerEl,
344
352
  panelKey,
345
353
  sortWeekList,
346
354
  panelBtnDisabled,
355
+ forwardRef,
347
356
  filterDay,
348
357
  getDayAbbr,
349
358
  checkDate,
@@ -45,6 +45,7 @@ function render(_ctx, _cache) {
45
45
  var _component_var_button = (0, _vue.resolveComponent)("var-button");
46
46
 
47
47
  return (0, _vue.openBlock)(), (0, _vue.createElementBlock)("div", _hoisted_1, [(0, _vue.createElementVNode)("div", _hoisted_2, [(0, _vue.createVNode)(_component_panel_header, {
48
+ ref: "headerEl",
48
49
  type: "month",
49
50
  date: _ctx.preview,
50
51
  disabled: _ctx.panelBtnDisabled,
@@ -126,6 +127,7 @@ var _default = (0, _vue.defineComponent)({
126
127
  var [currentYear, currentMonth] = props.current.split('-');
127
128
  var reverse = (0, _vue.ref)(false);
128
129
  var panelKey = (0, _vue.ref)(0);
130
+ var headerEl = (0, _vue.ref)(null);
129
131
  var panelBtnDisabled = (0, _vue.reactive)({
130
132
  left: false,
131
133
  right: false
@@ -255,6 +257,11 @@ var _default = (0, _vue.defineComponent)({
255
257
  reverse.value = checkType === 'prev';
256
258
  panelKey.value += checkType === 'prev' ? -1 : 1;
257
259
  emit('check-preview', 'year', checkType);
260
+ }; // expose for internal
261
+
262
+
263
+ var forwardRef = checkType => {
264
+ headerEl.value.checkDate(checkType);
258
265
  };
259
266
 
260
267
  (0, _vue.watch)(() => props.preview.previewYear, year => {
@@ -272,9 +279,11 @@ var _default = (0, _vue.defineComponent)({
272
279
  return {
273
280
  pack: _locale.pack,
274
281
  MONTH_LIST: _props.MONTH_LIST,
282
+ headerEl,
275
283
  reverse,
276
284
  panelKey,
277
285
  panelBtnDisabled,
286
+ forwardRef,
278
287
  buttonProps,
279
288
  getMonthAbbr,
280
289
  chooseMonth,
@@ -126,6 +126,7 @@ var _default = (0, _vue.defineComponent)({
126
126
  });
127
127
 
128
128
  var checkDate = checkType => {
129
+ if (checkType === 'prev' && props.disabled.left || checkType === 'next' && props.disabled.right) return;
129
130
  emit('check-date', checkType);
130
131
  reverse.value = checkType === 'prev';
131
132
  forwardOrBackNum.value += checkType === 'prev' ? -1 : 1;
@@ -32,6 +32,9 @@ var _hoisted_2 = {
32
32
  key: 0,
33
33
  class: "var-image-preview__indicators"
34
34
  };
35
+ var _hoisted_3 = {
36
+ class: "var-image-preview__extra"
37
+ };
35
38
 
36
39
  function render(_ctx, _cache) {
37
40
  var _component_var_swipe_item = (0, _vue.resolveComponent)("var-swipe-item");
@@ -131,7 +134,7 @@ function render(_ctx, _cache) {
131
134
  onClick: _ctx.close
132
135
  }, null, 8
133
136
  /* PROPS */
134
- , ["onClick"])) : (0, _vue.createCommentVNode)("v-if", true)])]),
137
+ , ["onClick"])) : (0, _vue.createCommentVNode)("v-if", true)]), (0, _vue.createElementVNode)("div", _hoisted_3, [(0, _vue.renderSlot)(_ctx.$slots, "extra")])]),
135
138
  _: 3
136
139
  /* FORWARDED */
137
140
 
@@ -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;