@varlet/ui 1.27.0 → 1.27.1

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.
@@ -101,9 +101,13 @@ function render(_ctx, _cache) {
101
101
  /* KEYED_FRAGMENT */
102
102
  )), !_ctx.maxlength || _ctx.modelValue.length < _ctx.maxlength ? (0, _vue.withDirectives)(((0, _vue.openBlock)(), (0, _vue.createElementBlock)("div", {
103
103
  key: 0,
104
- class: (0, _vue.normalizeClass)(_ctx.classes('var--relative', [!_ctx.$slots.default, _ctx.n('action') + " var-elevation--2"], [_ctx.disabled || _ctx.formDisabled, _ctx.n('--disabled')]))
104
+ class: (0, _vue.normalizeClass)(_ctx.classes([!_ctx.$slots.default, _ctx.n('action') + " var-elevation--2"], [_ctx.disabled || _ctx.formDisabled, _ctx.n('--disabled')])),
105
+ onClick: _cache[1] || (_cache[1] = function () {
106
+ return _ctx.triggerAction && _ctx.triggerAction(...arguments);
107
+ })
105
108
  }, [(0, _vue.createElementVNode)("input", {
106
109
  class: (0, _vue.normalizeClass)(_ctx.n('action-input')),
110
+ ref: "input",
107
111
  type: "file",
108
112
  multiple: _ctx.multiple,
109
113
  accept: _ctx.accept,
@@ -136,8 +140,8 @@ function render(_ctx, _cache) {
136
140
  "var-uploader-cover": "",
137
141
  position: "center",
138
142
  show: _ctx.showPreview,
139
- "onUpdate:show": _cache[1] || (_cache[1] = $event => _ctx.showPreview = $event),
140
- onClosed: _cache[2] || (_cache[2] = $event => _ctx.currentPreview = null)
143
+ "onUpdate:show": _cache[2] || (_cache[2] = $event => _ctx.showPreview = $event),
144
+ onClosed: _cache[3] || (_cache[3] = $event => _ctx.currentPreview = null)
141
145
  }, {
142
146
  default: (0, _vue.withCtx)(() => {
143
147
  var _ctx$currentPreview, _ctx$currentPreview2;
@@ -180,6 +184,7 @@ var _default = (0, _vue.defineComponent)({
180
184
  props: _props.props,
181
185
 
182
186
  setup(props) {
187
+ var input = (0, _vue.ref)();
183
188
  var showPreview = (0, _vue.ref)(false);
184
189
  var currentPreview = (0, _vue.ref)(null);
185
190
  var maxlengthText = (0, _vue.computed)(() => {
@@ -215,6 +220,10 @@ var _default = (0, _vue.defineComponent)({
215
220
  return modelValue;
216
221
  });
217
222
 
223
+ var triggerAction = () => {
224
+ input.value.click();
225
+ };
226
+
218
227
  var preview = varFile => {
219
228
  var {
220
229
  disabled,
@@ -433,6 +442,7 @@ var _default = (0, _vue.defineComponent)({
433
442
  return {
434
443
  n,
435
444
  classes,
445
+ input,
436
446
  files,
437
447
  showPreview,
438
448
  currentPreview,
@@ -442,6 +452,7 @@ var _default = (0, _vue.defineComponent)({
442
452
  isHTMLSupportImage: _shared.isHTMLSupportImage,
443
453
  formDisabled: form == null ? void 0 : form.disabled,
444
454
  formReadonly: form == null ? void 0 : form.readonly,
455
+ triggerAction,
445
456
  preview,
446
457
  handleChange,
447
458
  handleRemove,
@@ -1 +1 @@
1
- :root { --uploader-action-background: #f7f8fa; --uploader-action-icon-color: #888; --uploader-action-icon-size: 24px; --uploader-action-margin: 0 10px 10px 0; --uploader-file-size: 80px; --uploader-file-margin: 0 10px 10px 0; --uploader-file-name-background: #f7f8fa; --uploader-file-name-color: #888; --uploader-file-name-font-size: 12px; --uploader-file-name-padding: 10px; --uploader-file-text-align: center; --uploader-file-close-background: rgba(0, 0, 0, 0.3); --uploader-file-close-size: 24px; --uploader-file-close-icon-font-size: 14px; --uploader-file-close-icon-color: #fff; --uploader-file-cover-fit: cover; --uploader-file-cover-background: #f7f8fa; --uploader-preview-video-width: 100vw; --uploader-preview-video-height: 100vw; --uploader-file-indicator-height: 4px; --uploader-file-indicator-normal-color: var(--color-disabled); --uploader-file-indicator-success-color: var(--color-success); --uploader-file-indicator-error-color: var(--color-danger); --uploader-disabled-color: var(--color-disabled); --uploader-disabled-text-color: var(--color-text-disabled); --uploader-loading-background: linear-gradient(90deg, hsla(0, 0%, 100%, 0), hsla(0, 0%, 100%, 0.3), hsla(0, 0%, 100%, 0));}@keyframes var-uploader-loading-animation { from { transform: translateX(-100%); } to { transform: translateX(100%); }}.var-uploader { width: 100%;}.var-uploader__file-list { width: 100%; display: flex; flex-wrap: wrap;}.var-uploader__file { position: relative; width: var(--uploader-file-size); height: var(--uploader-file-size); margin: var(--uploader-file-margin); overflow: hidden; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.var-uploader__file-name { position: absolute; width: 100%; height: 100%; line-height: calc(var(--uploader-file-size) - var(--uploader-file-name-padding) * 2); font-size: var(--uploader-file-name-font-size); z-index: 0; background: var(--uploader-file-name-background); padding: var(--uploader-file-name-padding); color: var(--uploader-file-name-color); text-align: var(--uploader-file-text-align); white-space: nowrap; text-overflow: ellipsis; overflow: hidden; user-select: none; transition: background-color 0.25s;}.var-uploader__file-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; background: var(--uploader-file-cover-background); object-fit: var(--uploader-file-cover-fit); pointer-events: none; transition: background-color 0.25s;}.var-uploader__file-close { position: absolute; top: 0; right: 0; z-index: 2; border-top: var(--uploader-file-close-size) solid var(--uploader-file-close-background); border-left: var(--uploader-file-close-size) solid transparent;}.var-uploader__file-close-icon[var-uploader-cover] { position: absolute; top: calc(-1 * var(--uploader-file-close-size)); right: 0; font-size: var(--uploader-file-close-icon-font-size); color: var(--uploader-file-close-icon-color);}.var-uploader__file-indicator { position: absolute; left: 0; bottom: 0; z-index: 2; width: 100%; height: var(--uploader-file-indicator-height); transition: all 0.25s; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; background: var(--uploader-file-indicator-normal-color);}.var-uploader__action { position: relative; display: flex; justify-content: center; align-items: center; color: var(--uploader-action-icon-color); width: var(--uploader-file-size); height: var(--uploader-file-size); background: var(--uploader-action-background); margin: var(--uploader-action-margin); transition: background-color 0.25s;}.var-uploader__action-icon[var-uploader-cover] { font-size: var(--uploader-action-icon-size);}.var-uploader__action-input { position: absolute; z-index: 1; width: 100%; height: 100%; top: 0; left: 0; opacity: 0; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.var-uploader__preview[var-uploader-cover] { background: #000; box-shadow: none;}.var-uploader__preview-video { width: var(--uploader-preview-video-width); height: var(--uploader-preview-video-height);}.var-uploader--loading::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; animation: var-uploader-loading-animation 0.6s infinite; background: var(--uploader-loading-background); transition: background-color 0.25s;}.var-uploader--success { background: var(--uploader-file-indicator-success-color);}.var-uploader--error { background: var(--uploader-file-indicator-error-color);}.var-uploader--disabled { background: var(--uploader-disabled-color); color: var(--uploader-disabled-text-color);}
1
+ :root { --uploader-action-background: #f7f8fa; --uploader-action-icon-color: #888; --uploader-action-icon-size: 24px; --uploader-action-margin: 0 10px 10px 0; --uploader-file-size: 80px; --uploader-file-margin: 0 10px 10px 0; --uploader-file-name-background: #f7f8fa; --uploader-file-name-color: #888; --uploader-file-name-font-size: 12px; --uploader-file-name-padding: 10px; --uploader-file-text-align: center; --uploader-file-close-background: rgba(0, 0, 0, 0.3); --uploader-file-close-size: 24px; --uploader-file-close-icon-font-size: 14px; --uploader-file-close-icon-color: #fff; --uploader-file-cover-fit: cover; --uploader-file-cover-background: #f7f8fa; --uploader-preview-video-width: 100vw; --uploader-preview-video-height: 100vw; --uploader-file-indicator-height: 4px; --uploader-file-indicator-normal-color: var(--color-disabled); --uploader-file-indicator-success-color: var(--color-success); --uploader-file-indicator-error-color: var(--color-danger); --uploader-disabled-color: var(--color-disabled); --uploader-disabled-text-color: var(--color-text-disabled); --uploader-loading-background: linear-gradient(90deg, hsla(0, 0%, 100%, 0), hsla(0, 0%, 100%, 0.3), hsla(0, 0%, 100%, 0));}@keyframes var-uploader-loading-animation { from { transform: translateX(-100%); } to { transform: translateX(100%); }}.var-uploader { width: 100%;}.var-uploader__file-list { width: 100%; display: flex; flex-wrap: wrap;}.var-uploader__file { position: relative; width: var(--uploader-file-size); height: var(--uploader-file-size); margin: var(--uploader-file-margin); overflow: hidden; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.var-uploader__file-name { position: absolute; width: 100%; height: 100%; line-height: calc(var(--uploader-file-size) - var(--uploader-file-name-padding) * 2); font-size: var(--uploader-file-name-font-size); z-index: 0; background: var(--uploader-file-name-background); padding: var(--uploader-file-name-padding); color: var(--uploader-file-name-color); text-align: var(--uploader-file-text-align); white-space: nowrap; text-overflow: ellipsis; overflow: hidden; user-select: none; transition: background-color 0.25s;}.var-uploader__file-cover { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; background: var(--uploader-file-cover-background); object-fit: var(--uploader-file-cover-fit); pointer-events: none; transition: background-color 0.25s;}.var-uploader__file-close { position: absolute; top: 0; right: 0; z-index: 2; border-top: var(--uploader-file-close-size) solid var(--uploader-file-close-background); border-left: var(--uploader-file-close-size) solid transparent;}.var-uploader__file-close-icon[var-uploader-cover] { position: absolute; top: calc(-1 * var(--uploader-file-close-size)); right: 0; font-size: var(--uploader-file-close-icon-font-size); color: var(--uploader-file-close-icon-color);}.var-uploader__file-indicator { position: absolute; left: 0; bottom: 0; z-index: 2; width: 100%; height: var(--uploader-file-indicator-height); transition: all 0.25s; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; background: var(--uploader-file-indicator-normal-color);}.var-uploader__action { position: relative; display: flex; justify-content: center; align-items: center; color: var(--uploader-action-icon-color); width: var(--uploader-file-size); height: var(--uploader-file-size); background: var(--uploader-action-background); margin: var(--uploader-action-margin); transition: background-color 0.25s; cursor: pointer;}.var-uploader__action-icon[var-uploader-cover] { font-size: var(--uploader-action-icon-size);}.var-uploader__action-input { display: block; z-index: 1; width: 0; height: 0; opacity: 0;}.var-uploader__preview[var-uploader-cover] { background: #000; box-shadow: none;}.var-uploader__preview-video { width: var(--uploader-preview-video-width); height: var(--uploader-preview-video-height);}.var-uploader--loading::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; animation: var-uploader-loading-animation 0.6s infinite; background: var(--uploader-loading-background); transition: background-color 0.25s;}.var-uploader--success { background: var(--uploader-file-indicator-success-color);}.var-uploader--error { background: var(--uploader-file-indicator-error-color);}.var-uploader--disabled { background: var(--uploader-disabled-color); color: var(--uploader-disabled-text-color); cursor: not-allowed;}
@@ -161,6 +161,7 @@
161
161
  background: var(--uploader-action-background);
162
162
  margin: var(--uploader-action-margin);
163
163
  transition: background-color 0.25s;
164
+ cursor: pointer;
164
165
  }
165
166
 
166
167
  &__action-icon[var-uploader-cover] {
@@ -168,15 +169,11 @@
168
169
  }
169
170
 
170
171
  &__action-input {
171
- position: absolute;
172
+ display: block;
172
173
  z-index: 1;
173
- width: 100%;
174
- height: 100%;
175
- top: 0;
176
- left: 0;
174
+ width: 0;
175
+ height: 0;
177
176
  opacity: 0;
178
- cursor: pointer;
179
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
180
177
  }
181
178
 
182
179
  &__preview[var-uploader-cover] {
@@ -215,5 +212,6 @@
215
212
  &--disabled {
216
213
  background: var(--uploader-disabled-color);
217
214
  color: var(--uploader-disabled-text-color);
215
+ cursor: not-allowed;
218
216
  }
219
217
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varlet/ui",
3
- "version": "1.27.0",
3
+ "version": "1.27.1",
4
4
  "description": "A material like components library",
5
5
  "module": "es/index.js",
6
6
  "main": "lib/index.js",
@@ -39,13 +39,13 @@
39
39
  },
40
40
  "gitHead": "ee9c3866bedad96c86365b0f9888a3a6bb781b1f",
41
41
  "dependencies": {
42
- "@varlet/icons": "1.27.0",
42
+ "@varlet/icons": "1.27.1",
43
43
  "dayjs": "^1.10.4",
44
44
  "decimal.js": "^10.2.1"
45
45
  },
46
46
  "devDependencies": {
47
- "@varlet/cli": "1.27.0",
48
- "@varlet/touch-emulator": "1.27.0",
47
+ "@varlet/cli": "1.27.1",
48
+ "@varlet/touch-emulator": "1.27.1",
49
49
  "@vue/test-utils": "2.0.0-rc.6",
50
50
  "@vue/runtime-core": "3.2.25",
51
51
  "typescript": "^4.4.4",
@@ -11,6 +11,12 @@ export interface VarFile {
11
11
 
12
12
  export type UploaderValidateTriggers = 'onChange' | 'onRemove'
13
13
 
14
+ export type UploaderVarFileUtils = {
15
+ getLoading(): VarFile[]
16
+ getSuccess(): VarFile[]
17
+ getError(): VarFile[]
18
+ }
19
+
14
20
  interface UploaderProps {
15
21
  modelValue?: VarFile[]
16
22
  accept?: string
@@ -25,10 +31,11 @@ interface UploaderProps {
25
31
  hideList?: boolean
26
32
  ripple?: boolean
27
33
  validateTrigger?: Array<UploaderValidateTriggers>
28
- rules?: Array<(v: VarFile) => any>
34
+ rules?: Array<(v: VarFile[], u: UploaderVarFileUtils) => any>
29
35
  onBeforeRead?: (file: VarFile) => Promise<boolean> | boolean
30
36
  onAfterRead?: (file: VarFile) => any
31
37
  onOversize?: (file: VarFile) => any
38
+ onBeforeRemove?: (file: VarFile) => any
32
39
  onRemove?: (file: VarFile) => any
33
40
  'onUpdate:modelValue'?: (files: VarFile[]) => any
34
41
  }
@@ -36,11 +43,11 @@ interface UploaderProps {
36
43
  export class Uploader extends VarComponent {
37
44
  $props: UploaderProps
38
45
 
39
- getLoading(varFiles: VarFile[]): VarFile[]
46
+ getLoading(): VarFile[]
40
47
 
41
- getSuccess(varFiles: VarFile[]): VarFile[]
48
+ getSuccess(): VarFile[]
42
49
 
43
- getError(varFiles: VarFile[]): VarFile[]
50
+ getError(): VarFile[]
44
51
 
45
52
  validate(): Promise<boolean>
46
53