eco-vue-js 0.11.65 → 0.11.67
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.
- package/dist/assets/icons/IconCheckSecret.svg.js +44 -0
- package/dist/assets/icons/IconUpload.svg.js +38 -0
- package/dist/components/BorderSvg/WBorderSvg.vue.d.ts +26 -0
- package/dist/components/BorderSvg/WBorderSvg.vue.d.ts.map +1 -0
- package/dist/components/BorderSvg/WBorderSvg.vue.js +36 -0
- package/dist/components/BorderSvg/WBorderSvg.vue2.js +5 -0
- package/dist/components/Button/WButtonGroup.vue.js +1 -0
- package/dist/components/Checkbox/WCheckboxGroup.vue.js +1 -0
- package/dist/components/Checkbox/WCheckboxGroupMultiple.vue.js +1 -0
- package/dist/components/FieldWrapper/WFieldWrapper.vue.d.ts +6 -0
- package/dist/components/FieldWrapper/WFieldWrapper.vue.d.ts.map +1 -1
- package/dist/components/FieldWrapper/WFieldWrapper.vue.js +39 -15
- package/dist/components/FieldWrapper/types.d.ts +1 -0
- package/dist/components/FieldWrapper/types.d.ts.map +1 -1
- package/dist/components/FilePicker/WFilePicker.vue.d.ts +0 -2
- package/dist/components/FilePicker/WFilePicker.vue.d.ts.map +1 -1
- package/dist/components/FilePicker/WFilePicker.vue.js +17 -44
- package/dist/components/FilePicker/components/FilePickerSvg.vue.d.ts +2 -7
- package/dist/components/FilePicker/components/FilePickerSvg.vue.d.ts.map +1 -1
- package/dist/components/FilePicker/components/FilePickerSvg.vue.js +21 -71
- package/dist/components/FormAsync/WFormAsyncButtonGroup.vue.js +1 -0
- package/dist/components/FormAsync/WFormAsyncCheckboxGroup.vue.js +1 -0
- package/dist/components/FormAsync/WFormAsyncInput.vue.js +1 -0
- package/dist/components/FormAsync/WFormAsyncSelect.vue.js +1 -0
- package/dist/components/FormAsync/WFormAsyncSelectInfiniteSingle.vue.js +1 -0
- package/dist/components/FormAsync/WFormAsyncSelectSingle.vue.js +1 -0
- package/dist/components/FormAsync/WFormAsyncSelectStringified.vue.js +1 -0
- package/dist/components/Input/WInput.vue.d.ts +2 -0
- package/dist/components/Input/WInput.vue.d.ts.map +1 -1
- package/dist/components/Input/WInput.vue.js +93 -17
- package/dist/components/Input/WInputAsync.vue.d.ts.map +1 -1
- package/dist/components/Input/WInputAsync.vue.js +4 -2
- package/dist/components/Input/WInputDate.vue.js +1 -0
- package/dist/components/Input/WInputOptions.vue.js +1 -0
- package/dist/components/Input/WInputSuggest.vue.js +1 -0
- package/dist/components/Input/components/InputActions.vue.d.ts +4 -0
- package/dist/components/Input/components/InputActions.vue.d.ts.map +1 -1
- package/dist/components/Input/components/InputActions.vue.js +36 -17
- package/dist/components/Input/components/InputActionsButton.vue.d.ts +1 -0
- package/dist/components/Input/components/InputActionsButton.vue.d.ts.map +1 -1
- package/dist/components/Input/components/InputActionsButton.vue.js +5 -5
- package/dist/components/Select/WSelect.vue.js +1 -0
- package/dist/components/Select/WSelectAsync.vue.js +1 -0
- package/dist/components/Select/WSelectAsyncSingle.vue.js +1 -0
- package/dist/components/Select/WSelectSingle.vue.js +1 -0
- package/dist/components/Select/WSelectStringified.vue.js +1 -0
- package/dist/main.d.ts +5 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +214 -209
- package/dist/utils/preventDragFile.d.ts +3 -0
- package/dist/utils/preventDragFile.d.ts.map +1 -0
- package/dist/utils/preventDragFile.js +20 -0
- package/package.json +7 -1
- package/tailwind-base/plugins/internal-variables.ts +15 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InputProps, WrapSelection } from './types';
|
|
2
|
+
import { ShowMessage } from '../FieldWrapper/use/useFieldSaved';
|
|
2
3
|
import { CaretOffset } from './models/utils';
|
|
3
4
|
declare const _default: <Type extends InputType = "text">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
4
5
|
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
@@ -26,6 +27,7 @@ declare const _default: <Type extends InputType = "text">(__VLS_props: NonNullab
|
|
|
26
27
|
scrollToInput: () => void;
|
|
27
28
|
undo: () => void;
|
|
28
29
|
redo: () => void;
|
|
30
|
+
showMessage: ShowMessage;
|
|
29
31
|
}>): void;
|
|
30
32
|
attrs: any;
|
|
31
33
|
slots: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInput.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInput.vue"],"names":[],"mappings":"AAgSA;AAqsBA,OAAO,KAAK,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mCAAmC,CAAA;AAiBlE,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,gBAAgB,CAAA;yBAI9B,IAAI,SAAS,SAAS,GAAG,MAAM,EAC/C,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,eAAe,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EACjE;WA29BO,mBAAmB,CAAC;;;;;;;;;;;;;;2XAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB;qBArwB7B,IAAI;oBAOL,IAAI;+BA4DS,aAAa;0BA3NlB,MAAM,QAAQ,MAAM,KAAG,IAAI;wBAR/B,WAAW;;;oBAkDf,IAAI;oBAgBJ,IAAI;;MAm2BgD,GAAG,IAAI;WACpE,GAAG;;uBAvEgB,GAAG;0BACC,GAAG;wBACL,GAAG;;;YAGH,GAAG;;;YAFH,GAAG;;;YAGH,GAAG;;mCAloBF,aAAa;YAgoBb,GAAG;uBAGL,GAAG;;;;YACF,GAAG;uBACJ,GAAG;uBACH,GAAG;wBACF,GAAG;;;YAt4B1B,oBAAoB,SAAS,4CAAa,SAAS,GAAG,IAAI;YAC1D,gBAAgB,SAAS,aAAa,GAAG,IAAI;YAC7C,aAAa,SAAS,aAAa,GAAG,IAAI;YAC1C,eAAe,SAAS,aAAa,GAAG,IAAI;YAC5C,iBAAiB,SAAS,aAAa,GAAG,IAAI;YAC9C,oBAAoB,SAAS,aAAa,GAAG,IAAI;YACjD,aAAa,GAAG,IAAI;YACpB,OAAO,SAAS,UAAU,GAAG,SAAS,GAAG,IAAI;YAC7C,MAAM,SAAS,UAAU,GAAG,IAAI;YAChC,OAAO,SAAS,UAAU,GAAG,IAAI;YACjC,WAAW,SAAS,UAAU,GAAG,IAAI;YACrC,cAAc,SAAS,KAAK,GAAG,IAAI;YACnC,OAAO,GAAG,IAAI;;EA07BhB,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AAt+BzE,wBAs+B4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
|
@@ -1,18 +1,30 @@
|
|
|
1
|
-
import { defineComponent, defineAsyncComponent, useTemplateRef, ref, computed, watch, nextTick, onMounted, onBeforeUnmount, createBlock, openBlock, mergeProps, createSlots, withCtx, renderSlot, unref, createElementVNode, normalizeClass, createElementBlock, createCommentVNode, createTextVNode, normalizeProps, guardReactiveProps, toDisplayString, resolveDynamicComponent, withModifiers, withKeys } from 'vue';
|
|
1
|
+
import { defineComponent, defineAsyncComponent, useTemplateRef, ref, computed, watch, nextTick, onMounted, onBeforeUnmount, createBlock, openBlock, mergeProps, createSlots, withCtx, renderSlot, unref, createElementVNode, normalizeClass, createElementBlock, createCommentVNode, createTextVNode, normalizeProps, guardReactiveProps, toDisplayString, resolveDynamicComponent, createVNode, withModifiers, withKeys } from 'vue';
|
|
2
2
|
import _sfc_main$1 from '../FieldWrapper/WFieldWrapper.vue.js';
|
|
3
|
+
import IconCheckSecret from '../../assets/icons/IconCheckSecret.svg.js';
|
|
3
4
|
import { useTabActiveListener } from '../Tabs/use/useTabActiveListener.js';
|
|
4
5
|
import { Notify } from '../../utils/Notify.js';
|
|
5
6
|
import { getIsMobile } from '../../utils/mobile.js';
|
|
7
|
+
import { isDragging } from '../../utils/preventDragFile.js';
|
|
6
8
|
import { useComponentStates } from '../../utils/useComponentStates.js';
|
|
7
9
|
import { checkPermissionPaste } from '../../utils/useCopy.js';
|
|
8
10
|
import { debounce } from '../../utils/utils.js';
|
|
9
|
-
import _sfc_main$
|
|
11
|
+
import _sfc_main$3 from './components/InputActions.vue.js';
|
|
12
|
+
import _sfc_main$2 from '../FilePicker/components/FilePickerSvg.vue.js';
|
|
10
13
|
|
|
11
|
-
const _hoisted_1 = {
|
|
14
|
+
const _hoisted_1 = {
|
|
15
|
+
key: 0,
|
|
16
|
+
class: "text-primary dark:text-primary-dark bg-primary/10 dark:bg-primary-dark/10 pointer-events-none absolute inset-0.5 rounded-[--w-option-rounded]"
|
|
17
|
+
};
|
|
12
18
|
const _hoisted_2 = {
|
|
19
|
+
key: 0,
|
|
20
|
+
class: "bg-info/10 dark:bg-info-dark/10 pointer-events-none absolute inset-0.5 flex items-center justify-center rounded-[--w-option-rounded]"
|
|
21
|
+
};
|
|
22
|
+
const _hoisted_3 = { class: "relative flex min-h-full flex-1" };
|
|
23
|
+
const _hoisted_4 = {
|
|
13
24
|
key: 0,
|
|
14
25
|
class: "text-description pointer-events-none absolute"
|
|
15
26
|
};
|
|
27
|
+
const maxSizeKb = 10;
|
|
16
28
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
17
29
|
...{ inheritAttrs: false },
|
|
18
30
|
__name: "WInput",
|
|
@@ -67,7 +79,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
67
79
|
subgrid: { type: Boolean },
|
|
68
80
|
seamless: { type: Boolean },
|
|
69
81
|
savedText: {},
|
|
70
|
-
topText: { type: Boolean }
|
|
82
|
+
topText: { type: Boolean },
|
|
83
|
+
allowDropFile: { type: Boolean }
|
|
71
84
|
},
|
|
72
85
|
emits: ["update:model-value", "keypress:enter", "keypress:up", "keypress:down", "keypress:delete", "keypress:backspace", "click:clear", "focus", "blur", "click", "mousedown", "select:input", "paste"],
|
|
73
86
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
@@ -256,8 +269,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
256
269
|
};
|
|
257
270
|
const scrollToInput = () => {
|
|
258
271
|
if (!contentRef.value || !inputRef.value) return;
|
|
259
|
-
|
|
260
|
-
else contentRef.value.scrollTo({ left: contentRef.value.scrollWidth - 40 });
|
|
272
|
+
contentRef.value.scrollTo({ left: contentRef.value.scrollWidth - 40 });
|
|
261
273
|
};
|
|
262
274
|
const wrapSelection = (value) => inputRef.value && "wrapSelection" in inputRef.value ? inputRef.value.wrapSelection(value) : void 0;
|
|
263
275
|
let timeout;
|
|
@@ -272,6 +284,51 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
272
284
|
timeout = void 0;
|
|
273
285
|
}, typeof props.autofocus === "number" ? props.autofocus : 250);
|
|
274
286
|
};
|
|
287
|
+
const maxSize = maxSizeKb * 1024;
|
|
288
|
+
let closeModal = null;
|
|
289
|
+
const processFile = async (file) => {
|
|
290
|
+
if (file.size > maxSize) {
|
|
291
|
+
fieldWrapperRef.value?.showMessage(`File is too large. Max size is ${maxSizeKb.toFixed(0)} KB`, 4e3);
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
const text = await file.text();
|
|
295
|
+
if (text.length === 0) {
|
|
296
|
+
fieldWrapperRef.value?.showMessage("File is empty", 4e3);
|
|
297
|
+
return;
|
|
298
|
+
} else if (props.maxLength && text.length > props.maxLength) {
|
|
299
|
+
fieldWrapperRef.value?.showMessage(`File content length exceeds the allowed limit of ${props.maxLength} characters`, 4e3);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
if (props.modelValue === text) {
|
|
303
|
+
fieldWrapperRef.value?.showMessage("File content is already applied", 2e3);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
updateModelValue(text, true);
|
|
307
|
+
fieldWrapperRef.value?.showMessage(`File "${file.name}" applied`, 2e3);
|
|
308
|
+
focus();
|
|
309
|
+
};
|
|
310
|
+
const onDrop = async (list) => {
|
|
311
|
+
closeModal?.();
|
|
312
|
+
closeModal = null;
|
|
313
|
+
const file = list[0]?.getAsFile();
|
|
314
|
+
if (!file) return;
|
|
315
|
+
await processFile(file);
|
|
316
|
+
};
|
|
317
|
+
const openFilePicker = () => {
|
|
318
|
+
if (props.loading || isDisabled.value || isReadonly.value || props.unclickable) return;
|
|
319
|
+
closeModal?.();
|
|
320
|
+
closeModal = null;
|
|
321
|
+
const input = document.createElement("input");
|
|
322
|
+
input.type = "file";
|
|
323
|
+
input.onchange = async (event) => {
|
|
324
|
+
const target = event.target;
|
|
325
|
+
const file = target.files?.[0];
|
|
326
|
+
if (!file) return;
|
|
327
|
+
await processFile(file);
|
|
328
|
+
};
|
|
329
|
+
input.click();
|
|
330
|
+
};
|
|
331
|
+
const showMessage = (...args) => fieldWrapperRef.value?.showMessage(...args);
|
|
275
332
|
if (props.autofocus !== false && props.autofocus !== void 0) useTabActiveListener(autofocusDebounced);
|
|
276
333
|
watch(() => props.autofocus, (value) => {
|
|
277
334
|
if (value === false || value === void 0) return;
|
|
@@ -295,14 +352,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
295
352
|
fieldRef: computed(() => fieldWrapperRef.value?.fieldRef),
|
|
296
353
|
scrollToInput,
|
|
297
354
|
undo,
|
|
298
|
-
redo
|
|
355
|
+
redo,
|
|
356
|
+
showMessage
|
|
299
357
|
});
|
|
300
358
|
return (_ctx, _cache) => {
|
|
301
359
|
return openBlock(), createBlock(_sfc_main$1, mergeProps({ ref: "fieldWrapper" }, props, {
|
|
302
360
|
class: [_ctx.$attrs.class, {
|
|
303
361
|
"group/seamless": __props.seamless
|
|
304
362
|
}],
|
|
305
|
-
onClick: _cache[9] || (_cache[9] = ($event) => __props.seamless && focus())
|
|
363
|
+
onClick: _cache[9] || (_cache[9] = ($event) => __props.seamless && focus()),
|
|
364
|
+
onDrop
|
|
306
365
|
}), createSlots({ _: 2 }, [
|
|
307
366
|
_ctx.$slots.title ? {
|
|
308
367
|
name: "title",
|
|
@@ -348,7 +407,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
348
407
|
key: "2"
|
|
349
408
|
} : {
|
|
350
409
|
name: "field",
|
|
351
|
-
fn: withCtx(({ id, setFocused, focused }) => [
|
|
410
|
+
fn: withCtx(({ id, setFocused, focused, isDragover }) => [
|
|
352
411
|
createElementVNode("div", {
|
|
353
412
|
class: normalizeClass(["relative isolate grid min-h-[--w-input-min-height,var(--w-input-height,2.75rem)] grid-cols-[auto,1fr,auto] overflow-hidden rounded-[--w-input-rounded,0.75rem] border border-solid", {
|
|
354
413
|
"focus-within:border-primary dark:focus-within:border-primary-dark focus-within:outline-primary/20 dark:focus-within:outline-primary-dark/20 focus-within:outline focus-within:outline-2": !unref(isDisabled) && !unref(isReadonly) && !__props.unclickable,
|
|
@@ -389,12 +448,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
389
448
|
], 2)) : createCommentVNode("", true),
|
|
390
449
|
createElementVNode("div", {
|
|
391
450
|
ref: "content",
|
|
392
|
-
class: normalizeClass(["group/input col-start-2 grid grid-cols-1", {
|
|
451
|
+
class: normalizeClass(["group/input relative col-start-2 grid grid-cols-1", {
|
|
393
452
|
"py-[--w-input-gap,0.25rem] first:pl-[--w-input-gap,0.25rem] last:pr-[--w-input-gap,0.25rem]": _ctx.$slots.prefix,
|
|
394
453
|
"no-scrollbar overflow-x-auto overscroll-x-contain": __props.noWrap && !(__props.seamless && !focused),
|
|
395
454
|
"overflow-hidden": __props.seamless && !focused
|
|
396
455
|
}])
|
|
397
456
|
}, [
|
|
457
|
+
__props.allowDropFile && unref(isDragging) ? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
458
|
+
createVNode(_sfc_main$2, {
|
|
459
|
+
animate: isDragover,
|
|
460
|
+
class: "w-border-svg-rounded-[--w-option-rounded]"
|
|
461
|
+
}, null, 8, ["animate"])
|
|
462
|
+
])) : createCommentVNode("", true),
|
|
398
463
|
createElementVNode("div", {
|
|
399
464
|
class: normalizeClass(["w-skeleton-w-32 flex gap-[--w-input-gap,0.25rem]", {
|
|
400
465
|
"[&:not(:has(.w-option-has-bg))]:-px--w-option-padding": !__props.icon && !__props.textarea,
|
|
@@ -403,6 +468,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
403
468
|
}])
|
|
404
469
|
}, [
|
|
405
470
|
renderSlot(_ctx.$slots, "prefix", normalizeProps(guardReactiveProps({ modelValue: __props.modelValue }))),
|
|
471
|
+
__props.placeholderSecure && __props.modelValue === void 0 && !focused ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
472
|
+
createVNode(unref(IconCheckSecret), {
|
|
473
|
+
class: normalizeClass(["text-info dark:text-info-dark", {
|
|
474
|
+
"square-6": !__props.textarea,
|
|
475
|
+
"square-7": __props.textarea
|
|
476
|
+
}])
|
|
477
|
+
}, null, 8, ["class"])
|
|
478
|
+
])) : createCommentVNode("", true),
|
|
406
479
|
createElementVNode("div", {
|
|
407
480
|
class: normalizeClass(["flex-1 font-normal", {
|
|
408
481
|
"w-full": !__props.hideInput && !_ctx.$slots.prefix,
|
|
@@ -418,18 +491,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
418
491
|
"absolute": __props.hideInput
|
|
419
492
|
}])
|
|
420
493
|
}, [
|
|
421
|
-
createElementVNode("div",
|
|
494
|
+
createElementVNode("div", _hoisted_3, [
|
|
422
495
|
renderSlot(_ctx.$slots, "before", normalizeProps(guardReactiveProps({ modelValue: __props.modelValue }))),
|
|
423
|
-
__props.placeholder && __props.textarea && hasNoValue.value ? (openBlock(), createElementBlock("div",
|
|
496
|
+
__props.placeholder && __props.textarea && hasNoValue.value ? (openBlock(), createElementBlock("div", _hoisted_4, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true),
|
|
424
497
|
(openBlock(), createBlock(resolveDynamicComponent(__props.textarea ? unref(ContentEditable) : "input"), {
|
|
425
498
|
id,
|
|
426
499
|
ref: "input",
|
|
427
500
|
class: normalizeClass(["w-input sm-not:text-base min-h-full flex-1 basis-auto appearance-none border-none bg-[inherit] outline-0 placeholder:text-gray-400 disabled:cursor-not-allowed dark:placeholder:text-gray-500", {
|
|
428
501
|
"w-0 max-w-0": __props.hideInput,
|
|
429
|
-
"text-secure": __props.textSecure && !isSecureVisible.value,
|
|
502
|
+
"text-secure w-input-whitespace-pre-wrap break-all": __props.textSecure && !isSecureVisible.value,
|
|
430
503
|
"[-webkit-text-fill-color:transparent]": __props.textTransparent
|
|
431
504
|
}]),
|
|
432
|
-
value: __props.placeholderSecure && __props.modelValue === void 0 && !focused ? "
|
|
505
|
+
value: __props.placeholderSecure && __props.modelValue === void 0 && !focused ? "" : __props.modelValue,
|
|
433
506
|
placeholder: __props.placeholder,
|
|
434
507
|
type: __props.type ?? "text",
|
|
435
508
|
name: __props.name,
|
|
@@ -476,7 +549,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
476
549
|
], 2)
|
|
477
550
|
], 2)
|
|
478
551
|
], 2),
|
|
479
|
-
!__props.seamless || focused ? (openBlock(), createBlock(_sfc_main$
|
|
552
|
+
!__props.seamless || focused ? (openBlock(), createBlock(_sfc_main$3, {
|
|
480
553
|
key: 2,
|
|
481
554
|
"model-value": __props.modelValue,
|
|
482
555
|
loading: __props.loading,
|
|
@@ -488,13 +561,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
488
561
|
"allow-paste": __props.allowPaste,
|
|
489
562
|
"allow-copy": __props.allowCopy,
|
|
490
563
|
focused,
|
|
564
|
+
"allow-drop-file": __props.allowDropFile,
|
|
565
|
+
textarea: __props.textarea,
|
|
491
566
|
"onClick:clear": clearValue,
|
|
492
567
|
"onShow:secure": _cache[7] || (_cache[7] = ($event) => {
|
|
493
568
|
isSecureVisible.value = true;
|
|
494
569
|
_ctx.$emit("click", $event);
|
|
495
570
|
}),
|
|
496
571
|
"onHide:secure": _cache[8] || (_cache[8] = ($event) => isSecureVisible.value = false),
|
|
497
|
-
"onClick:paste": paste
|
|
572
|
+
"onClick:paste": paste,
|
|
573
|
+
"onClick:dropFile": openFilePicker
|
|
498
574
|
}, createSlots({ _: 2 }, [
|
|
499
575
|
_ctx.$slots.suffix ? {
|
|
500
576
|
name: "default",
|
|
@@ -503,7 +579,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
503
579
|
]),
|
|
504
580
|
key: "0"
|
|
505
581
|
} : void 0
|
|
506
|
-
]), 1032, ["model-value", "loading", "allow-clear", "disabled", "readonly", "text-secure", "is-secure-visible", "allow-paste", "allow-copy", "focused"])) : createCommentVNode("", true),
|
|
582
|
+
]), 1032, ["model-value", "loading", "allow-clear", "disabled", "readonly", "text-secure", "is-secure-visible", "allow-paste", "allow-copy", "focused", "allow-drop-file", "textarea"])) : createCommentVNode("", true),
|
|
507
583
|
renderSlot(_ctx.$slots, "inner")
|
|
508
584
|
], 2)
|
|
509
585
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WInputAsync.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputAsync.vue"],"names":[],"mappings":"AA0HA;
|
|
1
|
+
{"version":3,"file":"WInputAsync.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputAsync.vue"],"names":[],"mappings":"AA0HA;AAkRA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAA;yBAU3B,IAAI,SAAS,SAAS,GAAG,MAAM,EAC/C,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,eAAe,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EACjE;WAybO,mBAAmB,CAAC;;kLAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;uBA/CiB,GAAG;0BACA,GAAG;uBACN,GAAG;;;YACF,GAAG;;;YACH,GAAG;;cA/X1B,oBAAoB,SAAS,4CAAa,SAAS,KAAG,IAAI;EA8a5D,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AApczE,wBAoc4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
|
@@ -4,7 +4,7 @@ import _sfc_main$1 from './WInput.vue.js';
|
|
|
4
4
|
import { SemanticType } from '../../utils/SemanticType.js';
|
|
5
5
|
import { useComponentStates } from '../../utils/useComponentStates.js';
|
|
6
6
|
|
|
7
|
-
const _hoisted_1 = { class: "flex justify-end gap-4 pt-
|
|
7
|
+
const _hoisted_1 = { class: "flex justify-end gap-4 pt-5" };
|
|
8
8
|
const _hoisted_2 = { class: "absolute inset-x-3 bottom-[calc((var(--w-input-height)-1.75em)/2)] isolate h-0.5" };
|
|
9
9
|
const _hoisted_3 = {
|
|
10
10
|
key: 0,
|
|
@@ -67,7 +67,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
67
67
|
subgrid: { type: Boolean },
|
|
68
68
|
seamless: { type: Boolean },
|
|
69
69
|
savedText: {},
|
|
70
|
-
topText: { type: Boolean }
|
|
70
|
+
topText: { type: Boolean },
|
|
71
|
+
allowDropFile: { type: Boolean }
|
|
71
72
|
},
|
|
72
73
|
emits: ["update:model-value"],
|
|
73
74
|
setup(__props, { emit: __emit }) {
|
|
@@ -95,6 +96,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
95
96
|
const cancel = () => {
|
|
96
97
|
reset();
|
|
97
98
|
inputRef.value?.blur();
|
|
99
|
+
inputRef.value?.showMessage("Cancelled", 1e3);
|
|
98
100
|
};
|
|
99
101
|
const save = async () => {
|
|
100
102
|
if (isDisabled.value || isReadonly.value || props.loading) return;
|
|
@@ -64,6 +64,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
64
64
|
seamless: { type: Boolean },
|
|
65
65
|
savedText: {},
|
|
66
66
|
topText: { type: Boolean },
|
|
67
|
+
allowDropFile: { type: Boolean },
|
|
67
68
|
parentElement: {},
|
|
68
69
|
dropdownClass: {},
|
|
69
70
|
horizontalAlign: { default: HorizontalAlign.RIGHT_INNER },
|
|
@@ -68,6 +68,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
68
68
|
seamless: { type: Boolean },
|
|
69
69
|
savedText: {},
|
|
70
70
|
topText: { type: Boolean },
|
|
71
|
+
allowDropFile: { type: Boolean },
|
|
71
72
|
parentElement: {},
|
|
72
73
|
dropdownClass: {},
|
|
73
74
|
horizontalAlign: { default: HorizontalAlign.FILL },
|
|
@@ -4,11 +4,13 @@ type __VLS_Props = {
|
|
|
4
4
|
allowClear?: boolean;
|
|
5
5
|
allowPaste?: boolean;
|
|
6
6
|
allowCopy?: boolean;
|
|
7
|
+
allowDropFile?: boolean;
|
|
7
8
|
disabled?: boolean;
|
|
8
9
|
readonly?: boolean;
|
|
9
10
|
textSecure?: boolean;
|
|
10
11
|
isSecureVisible?: boolean;
|
|
11
12
|
focused?: boolean;
|
|
13
|
+
textarea?: boolean;
|
|
12
14
|
};
|
|
13
15
|
declare function __VLS_template(): {
|
|
14
16
|
attrs: Partial<{}>;
|
|
@@ -24,11 +26,13 @@ declare function __VLS_template(): {
|
|
|
24
26
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
25
27
|
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
26
28
|
"click:paste": () => any;
|
|
29
|
+
"click:drop-file": () => any;
|
|
27
30
|
"show:secure": (value: MouseEvent) => any;
|
|
28
31
|
"hide:secure": (value: MouseEvent) => any;
|
|
29
32
|
"click:clear": () => any;
|
|
30
33
|
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
31
34
|
"onClick:paste"?: (() => any) | undefined;
|
|
35
|
+
"onClick:drop-file"?: (() => any) | undefined;
|
|
32
36
|
"onShow:secure"?: ((value: MouseEvent) => any) | undefined;
|
|
33
37
|
"onHide:secure"?: ((value: MouseEvent) => any) | undefined;
|
|
34
38
|
"onClick:clear"?: (() => any) | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputActions.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Input/components/InputActions.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InputActions.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Input/components/InputActions.vue"],"names":[],"mappings":"AAwEA;AAgIA,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAC;AAgBF,iBAAS,cAAc;WAmMT,OAAO,IAA6B;;;;;YAVpB,GAAG;;;;EAehC;AAmBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;kFAOnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import { defineComponent, toRef, createElementBlock, createCommentVNode, openBlock, createBlock, renderSlot, markRaw, unref, createVNode } from 'vue';
|
|
1
|
+
import { defineComponent, toRef, createElementBlock, createCommentVNode, openBlock, withModifiers, normalizeClass, createBlock, renderSlot, markRaw, unref, createVNode } from 'vue';
|
|
2
2
|
import WSpinner from '../../Spinner/WSpinner.vue.js';
|
|
3
3
|
import IconClose from '../../../assets/icons/IconClose.svg.js';
|
|
4
4
|
import IconEye from '../../../assets/icons/IconEye.svg.js';
|
|
5
5
|
import IconEyeSlash from '../../../assets/icons/IconEyeSlash.svg.js';
|
|
6
6
|
import IconPaste from '../../../assets/icons/IconPaste.svg.js';
|
|
7
|
+
import IconUpload from '../../../assets/icons/IconUpload.svg.js';
|
|
7
8
|
import { useCopy } from '../../../utils/useCopy.js';
|
|
8
9
|
import _sfc_main$1 from './InputActionsButton.vue.js';
|
|
9
10
|
|
|
10
11
|
const _hoisted_1 = {
|
|
11
|
-
key:
|
|
12
|
-
class: "bg-default dark:bg-default-dark flex overflow-hidden rounded-[--w-input-rounded,0.75rem]"
|
|
13
|
-
};
|
|
14
|
-
const _hoisted_2 = {
|
|
15
|
-
key: 4,
|
|
12
|
+
key: 5,
|
|
16
13
|
class: "text-description flex h-full w-11 cursor-progress items-center justify-center"
|
|
17
14
|
};
|
|
18
15
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -23,57 +20,79 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
23
20
|
allowClear: { type: Boolean },
|
|
24
21
|
allowPaste: { type: Boolean },
|
|
25
22
|
allowCopy: { type: Boolean },
|
|
23
|
+
allowDropFile: { type: Boolean },
|
|
26
24
|
disabled: { type: Boolean },
|
|
27
25
|
readonly: { type: Boolean },
|
|
28
26
|
textSecure: { type: Boolean },
|
|
29
27
|
isSecureVisible: { type: Boolean },
|
|
30
|
-
focused: { type: Boolean }
|
|
28
|
+
focused: { type: Boolean },
|
|
29
|
+
textarea: { type: Boolean }
|
|
31
30
|
},
|
|
32
|
-
emits: ["click:paste", "show:secure", "hide:secure", "click:clear"],
|
|
31
|
+
emits: ["click:paste", "click:drop-file", "show:secure", "hide:secure", "click:clear"],
|
|
33
32
|
setup(__props) {
|
|
34
33
|
const props = __props;
|
|
35
34
|
const { doCopy, iconCopy } = useCopy(toRef(props, "modelValue"));
|
|
36
35
|
return (_ctx, _cache) => {
|
|
37
|
-
return __props.loading || _ctx.$slots.default || __props.textSecure || __props.allowCopy || (__props.allowPaste || __props.allowClear) && !__props.disabled && !__props.readonly ? (openBlock(), createElementBlock("div",
|
|
36
|
+
return __props.loading || _ctx.$slots.default || __props.textSecure || __props.allowCopy || (__props.allowPaste || __props.allowClear || __props.allowDropFile) && !__props.disabled && !__props.readonly ? (openBlock(), createElementBlock("div", {
|
|
37
|
+
key: 0,
|
|
38
|
+
class: normalizeClass(["bg-default dark:bg-default-dark flex overflow-hidden rounded-[--w-input-rounded,0.75rem]", {
|
|
39
|
+
"flex-col": __props.textarea
|
|
40
|
+
}]),
|
|
41
|
+
onMousedown: _cache[4] || (_cache[4] = withModifiers(() => {
|
|
42
|
+
}, ["prevent", "stop"]))
|
|
43
|
+
}, [
|
|
38
44
|
__props.allowClear && !__props.readonly ? (openBlock(), createBlock(_sfc_main$1, {
|
|
39
45
|
key: 0,
|
|
40
46
|
icon: markRaw(unref(IconClose)),
|
|
41
47
|
disabled: __props.disabled,
|
|
48
|
+
"tooltip-right": __props.textarea,
|
|
42
49
|
"tooltip-text": "Clear",
|
|
43
50
|
top: "",
|
|
44
51
|
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click:clear"))
|
|
45
|
-
}, null, 8, ["icon", "disabled"])) : createCommentVNode("", true),
|
|
52
|
+
}, null, 8, ["icon", "disabled", "tooltip-right"])) : createCommentVNode("", true),
|
|
46
53
|
__props.allowCopy && !__props.textSecure ? (openBlock(), createBlock(_sfc_main$1, {
|
|
47
54
|
key: 1,
|
|
48
55
|
icon: markRaw(unref(iconCopy)),
|
|
56
|
+
"tooltip-right": __props.textarea,
|
|
49
57
|
"tooltip-text": "Copy",
|
|
50
58
|
top: "",
|
|
51
59
|
onClick: unref(doCopy)
|
|
52
|
-
}, null, 8, ["icon", "onClick"])) : createCommentVNode("", true),
|
|
60
|
+
}, null, 8, ["icon", "tooltip-right", "onClick"])) : createCommentVNode("", true),
|
|
53
61
|
__props.allowPaste && !__props.readonly ? (openBlock(), createBlock(_sfc_main$1, {
|
|
54
62
|
key: 2,
|
|
55
63
|
icon: markRaw(unref(IconPaste)),
|
|
56
64
|
disabled: __props.disabled,
|
|
65
|
+
"tooltip-right": __props.textarea,
|
|
57
66
|
"tooltip-text": "Paste",
|
|
58
67
|
top: "",
|
|
59
68
|
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("click:paste"))
|
|
60
|
-
}, null, 8, ["icon", "disabled"])) : createCommentVNode("", true),
|
|
61
|
-
__props.
|
|
69
|
+
}, null, 8, ["icon", "disabled", "tooltip-right"])) : createCommentVNode("", true),
|
|
70
|
+
__props.allowDropFile && !__props.readonly ? (openBlock(), createBlock(_sfc_main$1, {
|
|
62
71
|
key: 3,
|
|
72
|
+
icon: markRaw(unref(IconUpload)),
|
|
73
|
+
disabled: __props.disabled,
|
|
74
|
+
"tooltip-right": __props.textarea,
|
|
75
|
+
"tooltip-text": "Read from file",
|
|
76
|
+
top: "",
|
|
77
|
+
onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("click:drop-file"))
|
|
78
|
+
}, null, 8, ["icon", "disabled", "tooltip-right"])) : createCommentVNode("", true),
|
|
79
|
+
__props.textSecure ? (openBlock(), createBlock(_sfc_main$1, {
|
|
80
|
+
key: 4,
|
|
63
81
|
icon: __props.isSecureVisible ? markRaw(unref(IconEye)) : markRaw(unref(IconEyeSlash)),
|
|
64
82
|
"tooltip-text": __props.isSecureVisible ? "Hide" : "Show",
|
|
65
83
|
disabled: __props.disabled || __props.readonly,
|
|
84
|
+
"tooltip-right": __props.textarea,
|
|
66
85
|
top: "",
|
|
67
|
-
onClick: _cache[
|
|
68
|
-
}, null, 8, ["icon", "tooltip-text", "disabled"])) : createCommentVNode("", true),
|
|
69
|
-
__props.loading ? (openBlock(), createElementBlock("div",
|
|
86
|
+
onClick: _cache[3] || (_cache[3] = ($event) => __props.isSecureVisible ? _ctx.$emit("hide:secure", $event) : _ctx.$emit("show:secure", $event))
|
|
87
|
+
}, null, 8, ["icon", "tooltip-text", "disabled", "tooltip-right"])) : createCommentVNode("", true),
|
|
88
|
+
__props.loading ? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
70
89
|
createVNode(WSpinner, { class: "w-spinner-size-[1.125em]" })
|
|
71
90
|
])) : createCommentVNode("", true),
|
|
72
91
|
renderSlot(_ctx.$slots, "default", {
|
|
73
92
|
loading: __props.loading,
|
|
74
93
|
disabled: __props.disabled
|
|
75
94
|
})
|
|
76
|
-
])) : createCommentVNode("", true);
|
|
95
|
+
], 34)) : createCommentVNode("", true);
|
|
77
96
|
};
|
|
78
97
|
}
|
|
79
98
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputActionsButton.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Input/components/InputActionsButton.vue"],"names":[],"mappings":"AA+BA;
|
|
1
|
+
{"version":3,"file":"InputActionsButton.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Input/components/InputActionsButton.vue"],"names":[],"mappings":"AA+BA;AA8DA,KAAK,WAAW,GAAG;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAC;AA0BJ,iBAAS,cAAc;WA6DT,OAAO,IAA6B;;yBAVrB,GAAG;;;;EAe/B;AAWD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WA3GT,MAAM;UAFP,YAAY;iBAHL,MAAM;aAMV,OAAO;cACN,OAAO;2FAkHpB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -6,6 +6,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
6
6
|
__name: "InputActionsButton",
|
|
7
7
|
props: {
|
|
8
8
|
tooltipText: { default: void 0 },
|
|
9
|
+
tooltipRight: { type: Boolean },
|
|
9
10
|
disabled: { type: Boolean },
|
|
10
11
|
icon: { default: void 0 },
|
|
11
12
|
top: { type: Boolean },
|
|
@@ -28,9 +29,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
28
29
|
"aria-disabled": __props.disabled,
|
|
29
30
|
"aria-pressed": __props.pressed,
|
|
30
31
|
"aria-expanded": __props.expanded,
|
|
31
|
-
|
|
32
|
-
}, ["prevent", "stop"])),
|
|
33
|
-
onClick: _cache[1] || (_cache[1] = withModifiers(($event) => _ctx.$emit("click", $event), ["stop"]))
|
|
32
|
+
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.$emit("click", $event), ["stop"]))
|
|
34
33
|
}, [
|
|
35
34
|
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
36
35
|
(openBlock(), createBlock(resolveDynamicComponent(__props.icon), { class: "square-[1.125em]" }))
|
|
@@ -38,9 +37,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
38
37
|
__props.tooltipText && !__props.disabled ? (openBlock(), createBlock(_sfc_main$1, {
|
|
39
38
|
key: 0,
|
|
40
39
|
text: __props.tooltipText,
|
|
40
|
+
right: __props.tooltipRight,
|
|
41
41
|
"no-touch": ""
|
|
42
|
-
}, null, 8, ["text"])) : createCommentVNode("", true)
|
|
43
|
-
],
|
|
42
|
+
}, null, 8, ["text", "right"])) : createCommentVNode("", true)
|
|
43
|
+
], 10, _hoisted_1);
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
});
|