@varlet/ui 1.26.3 → 1.26.6

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.
Files changed (41) hide show
  1. package/es/date-picker/DatePicker.js +86 -12
  2. package/es/date-picker/date-picker.css +1 -1
  3. package/es/date-picker/date-picker.less +11 -0
  4. package/es/date-picker/props.js +4 -0
  5. package/es/date-picker/src/day-picker-panel.js +17 -4
  6. package/es/date-picker/src/month-picker-panel.js +17 -4
  7. package/es/date-picker/src/panel-header.js +1 -0
  8. package/es/image-preview/ImagePreview.js +5 -2
  9. package/es/image-preview/imagePreview.css +1 -1
  10. package/es/image-preview/imagePreview.less +11 -1
  11. package/es/rate/Rate.js +2 -1
  12. package/es/rate/props.js +3 -0
  13. package/es/snackbar/style/index.js +1 -1
  14. package/es/snackbar/style/less.js +1 -1
  15. package/es/style.css +1 -1
  16. package/es/uploader/Uploader.js +14 -1
  17. package/es/uploader/props.js +4 -0
  18. package/es/varlet.esm.js +200 -73
  19. package/highlight/attributes.json +12 -0
  20. package/highlight/tags.json +4 -1
  21. package/highlight/web-types.json +32 -1
  22. package/lib/date-picker/DatePicker.js +86 -11
  23. package/lib/date-picker/date-picker.css +1 -1
  24. package/lib/date-picker/date-picker.less +11 -0
  25. package/lib/date-picker/props.js +4 -0
  26. package/lib/date-picker/src/day-picker-panel.js +17 -4
  27. package/lib/date-picker/src/month-picker-panel.js +17 -4
  28. package/lib/date-picker/src/panel-header.js +1 -0
  29. package/lib/image-preview/ImagePreview.js +5 -2
  30. package/lib/image-preview/imagePreview.css +1 -1
  31. package/lib/image-preview/imagePreview.less +11 -1
  32. package/lib/rate/Rate.js +2 -1
  33. package/lib/rate/props.js +3 -0
  34. package/lib/style.css +1 -1
  35. package/lib/uploader/Uploader.js +14 -1
  36. package/lib/uploader/props.js +4 -0
  37. package/package.json +4 -4
  38. package/types/datePicker.d.ts +1 -0
  39. package/types/rate.d.ts +1 -0
  40. package/types/uploader.d.ts +1 -0
  41. package/umd/varlet.js +4 -4
@@ -5,14 +5,9 @@ import YearPickerPanel from './src/year-picker-panel.js'
5
5
  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
+ import { nextTickFrame } from '../utils/elements';
8
9
  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
- };
10
+ 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
11
  export function render(_ctx, _cache) {
17
12
  var _component_year_picker_panel = _resolveComponent("year-picker-panel");
18
13
 
@@ -90,18 +85,30 @@ export function render(_ctx, _cache) {
90
85
  /* CLASS */
91
86
  )], 4
92
87
  /* STYLE */
93
- ), _createElementVNode("div", _hoisted_1, [_createVNode(_Transition, {
88
+ ), _createElementVNode("div", {
89
+ class: "var-date-picker-body",
90
+ onTouchstart: _cache[2] || (_cache[2] = function () {
91
+ return _ctx.handleTouchstart && _ctx.handleTouchstart(...arguments);
92
+ }),
93
+ onTouchmove: _cache[3] || (_cache[3] = function () {
94
+ return _ctx.handleTouchmove && _ctx.handleTouchmove(...arguments);
95
+ }),
96
+ onTouchend: _cache[4] || (_cache[4] = function () {
97
+ return _ctx.handleTouchend && _ctx.handleTouchend(...arguments);
98
+ })
99
+ }, [_createVNode(_Transition, {
94
100
  name: "var-date-picker-panel-fade"
95
101
  }, {
96
- default: _withCtx(() => [_ctx.isYearPanel ? (_openBlock(), _createBlock(_component_year_picker_panel, {
102
+ default: _withCtx(() => [_ctx.getPanelType === 'year' ? (_openBlock(), _createBlock(_component_year_picker_panel, {
97
103
  key: 0,
98
104
  "component-props": _ctx.componentProps,
99
105
  preview: _ctx.previewYear,
100
106
  onChooseYear: _ctx.getChooseYear
101
107
  }, null, 8
102
108
  /* PROPS */
103
- , ["component-props", "preview", "onChooseYear"])) : !_ctx.isYearPanel && _ctx.type === 'month' || _ctx.isMonthPanel ? (_openBlock(), _createBlock(_component_month_picker_panel, {
109
+ , ["component-props", "preview", "onChooseYear"])) : _ctx.getPanelType === 'month' ? (_openBlock(), _createBlock(_component_month_picker_panel, {
104
110
  key: 1,
111
+ ref: "monthPanelEl",
105
112
  current: _ctx.currentDate,
106
113
  choose: _ctx.getChoose,
107
114
  preview: _ctx.getPreview,
@@ -111,8 +118,9 @@ export function render(_ctx, _cache) {
111
118
  onCheckPreview: _ctx.checkPreview
112
119
  }, null, 8
113
120
  /* PROPS */
114
- , ["current", "choose", "preview", "click-year", "component-props", "onChooseMonth", "onCheckPreview"])) : !_ctx.isYearPanel && !_ctx.isMonthPanel && _ctx.type === 'date' ? (_openBlock(), _createBlock(_component_day_picker_panel, {
121
+ , ["current", "choose", "preview", "click-year", "component-props", "onChooseMonth", "onCheckPreview"])) : _ctx.getPanelType === 'date' ? (_openBlock(), _createBlock(_component_day_picker_panel, {
115
122
  key: 2,
123
+ ref: "dayPanelEl",
116
124
  current: _ctx.currentDate,
117
125
  choose: _ctx.getChoose,
118
126
  preview: _ctx.getPreview,
@@ -126,7 +134,9 @@ export function render(_ctx, _cache) {
126
134
  _: 1
127
135
  /* STABLE */
128
136
 
129
- })])], 2
137
+ })], 32
138
+ /* HYDRATE_EVENTS */
139
+ )], 2
130
140
  /* CLASS */
131
141
  );
132
142
  }
@@ -141,6 +151,10 @@ export default defineComponent({
141
151
  props,
142
152
 
143
153
  setup(props) {
154
+ var startX = 0;
155
+ var startY = 0;
156
+ var checkType = '';
157
+ var touchDirection;
144
158
  var currentDate = dayjs().format('YYYY-MM-D');
145
159
  var [currentYear, currentMonth] = currentDate.split('-');
146
160
  var monthDes = MONTH_LIST.find(month => month.index === currentMonth);
@@ -157,6 +171,8 @@ export default defineComponent({
157
171
  var chooseDays = ref([]);
158
172
  var chooseRangeMonth = ref([]);
159
173
  var chooseRangeDay = ref([]);
174
+ var monthPanelEl = ref(null);
175
+ var dayPanelEl = ref(null);
160
176
  var componentProps = reactive({
161
177
  allowedDates: props.allowedDates,
162
178
  type: props.type,
@@ -224,6 +240,15 @@ export default defineComponent({
224
240
  if (pack.value.lang === 'zh-CN') return chooseMonth.value.index + "-" + showDay + " " + weekName.slice(0, 3);
225
241
  return weekName.slice(0, 3) + ", " + monthName.slice(0, 3) + " " + chooseDay.value;
226
242
  });
243
+ var getPanelType = computed(() => {
244
+ if (isYearPanel.value) return 'year';
245
+ if (props.type === 'month' || isMonthPanel.value) return 'month';
246
+ if (props.type === 'date') return 'date';
247
+ return '';
248
+ });
249
+ var isUntouchable = computed(() => {
250
+ return !props.touchable || ['', 'year'].includes(getPanelType.value);
251
+ });
227
252
  var slotProps = computed(() => {
228
253
  var _chooseMonth$value, _chooseDay$value, _chooseYear$value, _chooseMonth$value$in, _chooseMonth$value2;
229
254
 
@@ -251,6 +276,41 @@ export default defineComponent({
251
276
  }
252
277
  };
253
278
 
279
+ var handleTouchstart = event => {
280
+ if (isUntouchable.value) return;
281
+ var {
282
+ clientX,
283
+ clientY
284
+ } = event.touches[0];
285
+ startX = clientX;
286
+ startY = clientY;
287
+ };
288
+
289
+ var getDirection = (x, y) => {
290
+ return x >= y && x > 20 ? 'x' : 'y';
291
+ };
292
+
293
+ var handleTouchmove = event => {
294
+ if (isUntouchable.value) return;
295
+ var {
296
+ clientX,
297
+ clientY
298
+ } = event.touches[0];
299
+ var x = clientX - startX;
300
+ var y = clientY - startY;
301
+ touchDirection = getDirection(Math.abs(x), Math.abs(y));
302
+ checkType = x > 0 ? 'prev' : 'next';
303
+ };
304
+
305
+ var handleTouchend = () => {
306
+ if (isUntouchable.value || touchDirection !== 'x') return;
307
+ var componentRef = getPanelType.value === 'month' ? monthPanelEl : dayPanelEl;
308
+ nextTickFrame(() => {
309
+ componentRef.value.forwardRef(checkType);
310
+ resetState();
311
+ });
312
+ };
313
+
254
314
  var updateRange = (date, type) => {
255
315
  var rangeDate = type === 'month' ? chooseRangeMonth : chooseRangeDay;
256
316
  rangeDate.value = rangeDone.value ? [date, date] : [rangeDate.value[0], date];
@@ -416,6 +476,13 @@ export default defineComponent({
416
476
  previewYear.value = yearValue;
417
477
  };
418
478
 
479
+ var resetState = () => {
480
+ startY = 0;
481
+ startX = 0;
482
+ checkType = '';
483
+ touchDirection = undefined;
484
+ };
485
+
419
486
  watch(() => props.modelValue, value => {
420
487
  if (!checkValue() || invalidFormatDate(value) || !value) return;
421
488
 
@@ -432,7 +499,10 @@ export default defineComponent({
432
499
  }, {
433
500
  immediate: true
434
501
  });
502
+ watch(getPanelType, resetState);
435
503
  return {
504
+ monthPanelEl,
505
+ dayPanelEl,
436
506
  reverse,
437
507
  currentDate,
438
508
  chooseMonth,
@@ -443,12 +513,16 @@ export default defineComponent({
443
513
  isMonthPanel,
444
514
  getMonthTitle,
445
515
  getDateTitle,
516
+ getPanelType,
446
517
  getChoose,
447
518
  getPreview,
448
519
  componentProps,
449
520
  slotProps,
450
521
  formatRange,
451
522
  clickEl,
523
+ handleTouchstart,
524
+ handleTouchmove,
525
+ handleTouchend,
452
526
  getChooseDay,
453
527
  getChooseMonth,
454
528
  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-month-picker__button-disabled { color: var(--color-text-disabled) !important; cursor: not-allowed;}.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 .var-day-picker__button-disabled { color: var(--color-text-disabled) !important; cursor: not-allowed;}.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%;
@@ -196,6 +197,11 @@
196
197
  &__button[var-date-picker-color-cover='true'] {
197
198
  color: var(--date-picker-main-color);
198
199
  }
200
+
201
+ &__button-disabled {
202
+ color: var(--color-text-disabled) !important;
203
+ cursor: not-allowed;
204
+ }
199
205
  }
200
206
 
201
207
  .var-year-picker {
@@ -258,6 +264,11 @@
258
264
  &__button[var-date-picker-color-cover='true'] {
259
265
  color: var(--date-picker-main-color);
260
266
  }
267
+
268
+ &__button-disabled {
269
+ color: var(--color-text-disabled) !important;
270
+ cursor: not-allowed;
271
+ }
261
272
  }
262
273
 
263
274
  &-translatey-enter-from {
@@ -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,
@@ -65,7 +66,7 @@ export function render(_ctx, _cache) {
65
66
  round: "",
66
67
  ripple: false
67
68
  }, _extends({}, _ctx.buttonProps(day)), {
68
- onClick: $event => _ctx.chooseDay(day)
69
+ onClick: event => _ctx.chooseDay(day, event)
69
70
  }), {
70
71
  default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.filterDay(day)), 1
71
72
  /* TEXT */
@@ -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
@@ -292,11 +294,13 @@ export default defineComponent({
292
294
 
293
295
  var isCover = textColorOrCover().startsWith('var-date-picker');
294
296
  return {
295
- disabled,
296
297
  text: computeText(),
297
298
  outline: computeOutline(),
298
299
  textColor: isCover ? '' : textColorOrCover(),
299
- 'var-date-picker-color-cover': isCover
300
+ 'var-date-picker-color-cover': isCover,
301
+ class: {
302
+ 'var-day-picker__button-disabled': disabled
303
+ }
300
304
  };
301
305
  };
302
306
 
@@ -306,8 +310,15 @@ export default defineComponent({
306
310
  emit('check-preview', 'month', checkType);
307
311
  };
308
312
 
309
- var chooseDay = day => {
313
+ var chooseDay = (day, event) => {
314
+ var buttonEl = event.currentTarget;
315
+ if (buttonEl.classList.contains('var-day-picker__button-disabled')) return;
310
316
  emit('choose-day', day);
317
+ }; // expose for internal
318
+
319
+
320
+ var forwardRef = checkType => {
321
+ headerEl.value.checkDate(checkType);
311
322
  };
312
323
 
313
324
  onMounted(() => {
@@ -321,9 +332,11 @@ export default defineComponent({
321
332
  return {
322
333
  days,
323
334
  reverse,
335
+ headerEl,
324
336
  panelKey,
325
337
  sortWeekList,
326
338
  panelBtnDisabled,
339
+ forwardRef,
327
340
  filterDay,
328
341
  getDayAbbr,
329
342
  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,
@@ -48,7 +49,7 @@ export function render(_ctx, _cache) {
48
49
  "var-month-picker-cover": "",
49
50
  ripple: false
50
51
  }, _extends({}, _ctx.buttonProps(month.index)), {
51
- onClick: $event => _ctx.chooseMonth(month)
52
+ onClick: event => _ctx.chooseMonth(month, event)
52
53
  }), {
53
54
  default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.getMonthAbbr(month.index)), 1
54
55
  /* TEXT */
@@ -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
@@ -219,16 +221,20 @@ export default defineComponent({
219
221
 
220
222
  var isCover = textColorOrCover().startsWith('var-date-picker');
221
223
  return {
222
- disabled,
223
224
  outline: computeOutline(),
224
225
  text: computeText(),
225
226
  color: !computeText() ? color : '',
226
227
  textColor: isCover ? '' : textColorOrCover(),
227
- 'var-date-picker-color-cover': isCover
228
+ 'var-date-picker-color-cover': isCover,
229
+ class: {
230
+ 'var-month-picker__button-disabled': disabled
231
+ }
228
232
  };
229
233
  };
230
234
 
231
- var chooseMonth = month => {
235
+ var chooseMonth = (month, event) => {
236
+ var buttonEl = event.currentTarget;
237
+ if (buttonEl.classList.contains('var-month-picker__button-disabled')) return;
232
238
  emit('choose-month', month);
233
239
  };
234
240
 
@@ -236,6 +242,11 @@ export default defineComponent({
236
242
  reverse.value = checkType === 'prev';
237
243
  panelKey.value += checkType === 'prev' ? -1 : 1;
238
244
  emit('check-preview', 'year', checkType);
245
+ }; // expose for internal
246
+
247
+
248
+ var forwardRef = checkType => {
249
+ headerEl.value.checkDate(checkType);
239
250
  };
240
251
 
241
252
  watch(() => props.preview.previewYear, year => {
@@ -253,9 +264,11 @@ export default defineComponent({
253
264
  return {
254
265
  pack,
255
266
  MONTH_LIST,
267
+ headerEl,
256
268
  reverse,
257
269
  panelKey,
258
270
  panelBtnDisabled,
271
+ forwardRef,
259
272
  buttonProps,
260
273
  getMonthAbbr,
261
274
  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;
@@ -7,7 +7,7 @@ import { props } from './props';
7
7
  import { toNumber } from '../utils/shared';
8
8
  var DISTANCE_OFFSET = 12;
9
9
  var EVENT_DELAY = 200;
10
- var TAP_DELAY = 250;
10
+ var TAP_DELAY = 350;
11
11
  var ANIMATION_DURATION = 200;
12
12
  import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, mergeProps as _mergeProps, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue";
13
13
 
@@ -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;
package/es/rate/Rate.js CHANGED
@@ -33,13 +33,14 @@ export function render(_ctx, _cache) {
33
33
  onClick: $event => _ctx.handleClick(val, $event)
34
34
  }, [_createVNode(_component_var_icon, {
35
35
  transition: 0,
36
+ namespace: _ctx.namespace,
36
37
  name: _ctx.getIconName(val),
37
38
  style: _normalizeStyle({
38
39
  fontSize: _ctx.toSizeUnit(_ctx.size)
39
40
  })
40
41
  }, null, 8
41
42
  /* PROPS */
42
- , ["name", "style"])], 14
43
+ , ["namespace", "name", "style"])], 14
43
44
  /* CLASS, STYLE, PROPS */
44
45
  , _hoisted_3)), [[_directive_ripple, {
45
46
  disabled: _ctx.formReadonly || _ctx.readonly || _ctx.formDisabled || _ctx.disabled || !_ctx.ripple
package/es/rate/props.js CHANGED
@@ -29,6 +29,9 @@ export var props = {
29
29
  type: [String, Number],
30
30
  default: '2'
31
31
  },
32
+ namespace: {
33
+ type: String
34
+ },
32
35
  half: {
33
36
  type: Boolean,
34
37
  default: false
@@ -1,8 +1,8 @@
1
1
  import '../../styles/common.css'
2
- import '../SnackbarSfc.css'
3
2
  import '../../styles/elevation.css'
4
3
  import '../../loading/loading.css'
5
4
  import '../../button/button.css'
6
5
  import '../../icon/icon.css'
7
6
  import '../snackbar.css'
8
7
  import '../coreSfc.css'
8
+ import '../SnackbarSfc.css'
@@ -1,8 +1,8 @@
1
1
  import '../../styles/common.less'
2
- import '../SnackbarSfc.less'
3
2
  import '../../styles/elevation.less'
4
3
  import '../../loading/loading.less'
5
4
  import '../../button/button.less'
6
5
  import '../../icon/icon.less'
7
6
  import '../snackbar.less'
8
7
  import '../coreSfc.less'
8
+ import '../SnackbarSfc.less'