eco-vue-js 0.11.13 → 0.11.15

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/dist/assets/icons/IconRedo.svg.js +32 -0
  2. package/dist/assets/icons/IconUndo.svg.js +32 -0
  3. package/dist/components/FieldWrapper/WFieldWrapper.vue.d.ts +1 -0
  4. package/dist/components/FieldWrapper/WFieldWrapper.vue.d.ts.map +1 -1
  5. package/dist/components/FieldWrapper/WFieldWrapper.vue.js +36 -6
  6. package/dist/components/FieldWrapper/use/useFieldSaved.d.ts +4 -5
  7. package/dist/components/FieldWrapper/use/useFieldSaved.d.ts.map +1 -1
  8. package/dist/components/FieldWrapper/use/useFieldSaved.js +10 -25
  9. package/dist/components/FormAsync/use/useFormAsync.js +3 -3
  10. package/dist/components/Input/WInput.vue.d.ts +5 -5
  11. package/dist/components/Input/WInput.vue.d.ts.map +1 -1
  12. package/dist/components/Input/WInput.vue.js +107 -49
  13. package/dist/components/Input/WInputDate.vue.d.ts +2 -8
  14. package/dist/components/Input/WInputDate.vue.d.ts.map +1 -1
  15. package/dist/components/Input/WInputSuggest.vue.d.ts +1 -4
  16. package/dist/components/Input/WInputSuggest.vue.d.ts.map +1 -1
  17. package/dist/components/Input/WInputSuggest.vue.js +2 -2
  18. package/dist/components/Input/WInputToolbarButton.vue.d.ts +5 -8
  19. package/dist/components/Input/WInputToolbarButton.vue.d.ts.map +1 -1
  20. package/dist/components/Input/WInputToolbarButton.vue.js +33 -25
  21. package/dist/components/Input/components/ContentEditable.vue.d.ts +1 -4
  22. package/dist/components/Input/components/ContentEditable.vue.d.ts.map +1 -1
  23. package/dist/components/Input/components/ContentEditable.vue2.js +24 -62
  24. package/dist/components/Input/components/InputToolbar.vue.d.ts +7 -0
  25. package/dist/components/Input/components/InputToolbar.vue.d.ts.map +1 -1
  26. package/dist/components/Input/components/InputToolbar.vue2.js +39 -13
  27. package/dist/components/Input/components/InputToolbarButton.vue.d.ts +5 -2
  28. package/dist/components/Input/components/InputToolbarButton.vue.d.ts.map +1 -1
  29. package/dist/components/Input/components/InputToolbarButton.vue.js +19 -11
  30. package/dist/components/Input/models/utils.d.ts +7 -0
  31. package/dist/components/Input/models/utils.d.ts.map +1 -0
  32. package/dist/components/Input/models/utils.js +56 -0
  33. package/dist/components/Input/types.d.ts +3 -2
  34. package/dist/components/Input/types.d.ts.map +1 -1
  35. package/dist/main.d.ts +2 -0
  36. package/dist/main.d.ts.map +1 -1
  37. package/dist/main.js +3 -1
  38. package/dist/utils/useCopy.d.ts +1 -0
  39. package/dist/utils/useCopy.d.ts.map +1 -1
  40. package/dist/utils/useCopy.js +20 -18
  41. package/package.json +1 -1
@@ -0,0 +1,32 @@
1
+ import { createElementBlock, openBlock, createElementVNode } from 'vue';
2
+
3
+ const _hoisted_1 = {
4
+ width: "20",
5
+ height: "20",
6
+ viewBox: "0 0 24 24",
7
+ fill: "none",
8
+ xmlns: "http://www.w3.org/2000/svg"
9
+ };
10
+
11
+ function render(_ctx, _cache) {
12
+ return (openBlock(), createElementBlock("svg", _hoisted_1, _cache[0] || (_cache[0] = [
13
+ createElementVNode("path", {
14
+ d: "M16.87 18.31h-8a5 5 0 0 1 0-10h11",
15
+ stroke: "currentcolor",
16
+ "stroke-linecap": "round",
17
+ "stroke-linejoin": "round",
18
+ "stroke-miterlimit": "10",
19
+ "stroke-width": "1.5"
20
+ }, null, -1),
21
+ createElementVNode("path", {
22
+ d: "m17.57 10.81 2.56-2.56-2.56-2.56",
23
+ stroke: "currentcolor",
24
+ "stroke-linecap": "round",
25
+ "stroke-linejoin": "round",
26
+ "stroke-width": "1.5"
27
+ }, null, -1)
28
+ ])))
29
+ }
30
+ const IconRedo = { render: render };
31
+
32
+ export { IconRedo as default, render };
@@ -0,0 +1,32 @@
1
+ import { createElementBlock, openBlock, createElementVNode } from 'vue';
2
+
3
+ const _hoisted_1 = {
4
+ width: "20",
5
+ height: "20",
6
+ viewBox: "0 0 24 24",
7
+ fill: "none",
8
+ xmlns: "http://www.w3.org/2000/svg"
9
+ };
10
+
11
+ function render(_ctx, _cache) {
12
+ return (openBlock(), createElementBlock("svg", _hoisted_1, _cache[0] || (_cache[0] = [
13
+ createElementVNode("path", {
14
+ d: "M7.13 18.31h8a5 5 0 0 0 0-10h-11",
15
+ stroke: "currentcolor",
16
+ "stroke-linecap": "round",
17
+ "stroke-linejoin": "round",
18
+ "stroke-miterlimit": "10",
19
+ "stroke-width": "1.5"
20
+ }, null, -1),
21
+ createElementVNode("path", {
22
+ d: "M6.43 10.81 3.87 8.25l2.56-2.56",
23
+ stroke: "currentcolor",
24
+ "stroke-linecap": "round",
25
+ "stroke-linejoin": "round",
26
+ "stroke-width": "1.5"
27
+ }, null, -1)
28
+ ])))
29
+ }
30
+ const IconUndo = { render: render };
31
+
32
+ export { IconUndo as default, render };
@@ -26,6 +26,7 @@ declare function __VLS_template(): {
26
26
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
27
27
  declare const __VLS_component: import('vue').DefineComponent<FieldWrapperProps, {
28
28
  fieldRef: Readonly<import('vue').ShallowRef<HTMLDivElement | null>>;
29
+ showMessage: (value: string, durationMs?: number) => void;
29
30
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
30
31
  click: (value: MouseEvent) => any;
31
32
  }, string, import('vue').PublicProps, Readonly<FieldWrapperProps> & Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"WFieldWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/FieldWrapper/WFieldWrapper.vue"],"names":[],"mappings":"AA4LA;AAsPA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AAkE9C,iBAAS,cAAc;WAsST,OAAO,IAA6B;;uBAjBvB,GAAG;0BACC,GAAG;;;gCAxSP,OAAO,KAAG,IAAI;;YAySb,GAAG;;;gCAzSJ,OAAO,KAAG,IAAI;;YA0SX,GAAG;uBACL,GAAG;wBACF,GAAG;;;;;;;EAiB/B;AAuBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;OAUnB,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"}
1
+ {"version":3,"file":"WFieldWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/FieldWrapper/WFieldWrapper.vue"],"names":[],"mappings":"AA6LA;AA6RA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AAyG9C,iBAAS,cAAc;WAuST,OAAO,IAA6B;;uBAjBvB,GAAG;0BACC,GAAG;;;gCA/UP,OAAO,KAAG,IAAI;;YAgVb,GAAG;;;gCAhVJ,OAAO,KAAG,IAAI;;YAiVX,GAAG;uBACL,GAAG;wBACF,GAAG;;;;;;;EAiB/B;AAwBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;yBA7WO,MAAM,eAAc,MAAM;;;;;;;;;;;;OAuXpD,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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, useId, useTemplateRef, ref, inject, computed, createElementBlock, openBlock, mergeProps, createCommentVNode, renderSlot, createElementVNode, createBlock, normalizeClass, unref, Fragment, createVNode, createTextVNode, resolveDynamicComponent, toDisplayString, Transition, withCtx, normalizeProps, guardReactiveProps } from 'vue';
1
+ import { defineComponent, useId, useTemplateRef, ref, computed, inject, onBeforeUnmount, createElementBlock, openBlock, mergeProps, createCommentVNode, renderSlot, createElementVNode, createBlock, normalizeClass, unref, Fragment, createVNode, createTextVNode, resolveDynamicComponent, toDisplayString, Transition, withCtx, normalizeProps, guardReactiveProps, withDirectives, vShow } from 'vue';
2
2
  import _sfc_main$2 from '../Button/WButtonCopy.vue.js';
3
3
  import WSkeleton from '../Skeleton/WSkeleton.vue.js';
4
4
  import _sfc_main$3 from '../Tooltip/WTooltip.vue.js';
@@ -6,7 +6,7 @@ import { encodeQueryParam } from '../../utils/api.js';
6
6
  import { useComponentStates } from '../../utils/useComponentStates.js';
7
7
  import { numberFormatter } from '../../utils/utils.js';
8
8
  import _sfc_main$1 from './components/FilterButton.vue.js';
9
- import { wFieldSaved } from './use/useFieldSaved.js';
9
+ import { wFieldSetShowMessage } from './use/useFieldSaved.js';
10
10
 
11
11
  const _hoisted_1 = ["for"];
12
12
  const _hoisted_2 = {
@@ -58,7 +58,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
58
58
  const id = useId();
59
59
  const fieldRef = useTemplateRef("field");
60
60
  const focused = ref(false);
61
- const saved = inject(wFieldSaved, ref(false));
61
+ const message = ref(null);
62
+ const isMessageShown = ref(true);
62
63
  const encodedQueryParam = computed(() => {
63
64
  if (props.filterField === void 0) return void 0;
64
65
  return encodeQueryParam(props.filterValue === void 0 ? props.modelValue : props.filterValue);
@@ -66,8 +67,35 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
66
67
  const setFocused = (value) => {
67
68
  focused.value = value;
68
69
  };
70
+ let timeout = null;
71
+ const resetMessage = () => {
72
+ message.value = null;
73
+ isMessageShown.value = true;
74
+ if (timeout) {
75
+ clearTimeout(timeout);
76
+ timeout = null;
77
+ }
78
+ };
79
+ const showMessage = (value, durationMs = 2e3) => {
80
+ if (timeout) clearTimeout(timeout);
81
+ if (message.value && isMessageShown.value) {
82
+ isMessageShown.value = false;
83
+ timeout = setTimeout(() => showMessage(value, durationMs), 100);
84
+ } else {
85
+ message.value = value;
86
+ isMessageShown.value = true;
87
+ timeout = setTimeout(resetMessage, durationMs);
88
+ }
89
+ };
90
+ const setShowMessageInjected = inject(wFieldSetShowMessage, null);
91
+ setShowMessageInjected?.(showMessage);
92
+ onBeforeUnmount(() => {
93
+ setShowMessageInjected?.(null);
94
+ resetMessage();
95
+ });
69
96
  __expose({
70
- fieldRef
97
+ fieldRef,
98
+ showMessage
71
99
  });
72
100
  return (_ctx, _cache) => {
73
101
  return openBlock(), createElementBlock("div", mergeProps({ class: "relative" }, { style: _ctx.$attrs.style }, {
@@ -164,10 +192,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
164
192
  "leave-to-class": "opacity-0"
165
193
  }, {
166
194
  default: withCtx(() => [
167
- unref(saved) ? (openBlock(), createElementBlock("div", {
195
+ message.value ? withDirectives((openBlock(), createElementBlock("div", {
168
196
  key: 0,
169
197
  class: normalizeClass(["text-description absolute right-0 whitespace-nowrap py-0.5 text-xs font-normal", _ctx.topText ? "bottom-full" : "top-full"])
170
- }, toDisplayString(_ctx.savedText ?? "Saved"), 3)) : _ctx.errorMessage ? (openBlock(), createElementBlock("div", {
198
+ }, toDisplayString(message.value), 3)), [
199
+ [vShow, isMessageShown.value]
200
+ ]) : _ctx.errorMessage ? (openBlock(), createElementBlock("div", {
171
201
  key: 1,
172
202
  class: normalizeClass(["text-negative dark:text-negative-dark absolute pt-0.5 text-xs font-normal", [
173
203
  !_ctx.leftError || _ctx.topText ? "right-0 text-end" : "left-0 text-start",
@@ -1,6 +1,5 @@
1
- import { InjectionKey, Ref } from 'vue';
2
- export declare const wFieldSaved: InjectionKey<Ref<boolean>>;
3
- export declare const useFieldSaved: () => {
4
- showSaved: () => void;
5
- };
1
+ import { InjectionKey } from 'vue';
2
+ export type ShowMessage = (value: string, durationMs?: number) => void;
3
+ export declare const wFieldSetShowMessage: InjectionKey<(showMessage: ShowMessage | null) => void>;
4
+ export declare const useFieldMessage: () => ShowMessage;
6
5
  //# sourceMappingURL=useFieldSaved.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFieldSaved.d.ts","sourceRoot":"","sources":["../../../../../src/components/FieldWrapper/use/useFieldSaved.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAE,KAAK,GAAG,EAAgC,MAAM,KAAK,CAAA;AAE9E,eAAO,MAAM,WAAW,EAA4B,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAE9E,eAAO,MAAM,aAAa;;CAiCzB,CAAA"}
1
+ {"version":3,"file":"useFieldSaved.d.ts","sourceRoot":"","sources":["../../../../../src/components/FieldWrapper/use/useFieldSaved.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAU,MAAM,KAAK,CAAA;AAE9C,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAEtE,eAAO,MAAM,oBAAoB,EAA4B,YAAY,CAAC,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,CAAA;AAEpH,eAAO,MAAM,eAAe,mBAY3B,CAAA"}
@@ -1,29 +1,14 @@
1
- import { ref, provide, onBeforeUnmount } from 'vue';
1
+ import { provide } from 'vue';
2
2
 
3
- const wFieldSaved = Symbol("wFieldSaved");
4
- const useFieldSaved = () => {
5
- const saved = ref(false);
6
- provide(wFieldSaved, saved);
7
- let timeout = null;
8
- const resetSaved = () => {
9
- saved.value = false;
10
- if (timeout) {
11
- clearTimeout(timeout);
12
- timeout = null;
13
- }
3
+ const wFieldSetShowMessage = Symbol("wFieldSaved");
4
+ const useFieldMessage = () => {
5
+ let showMessageFn = null;
6
+ const setShowMessage = (value) => {
7
+ showMessageFn = value;
14
8
  };
15
- const showSaved = () => {
16
- if (timeout) clearTimeout(timeout);
17
- if (saved.value) {
18
- saved.value = false;
19
- timeout = setTimeout(showSaved, 100);
20
- } else {
21
- saved.value = true;
22
- timeout = setTimeout(resetSaved, 2e3);
23
- }
24
- };
25
- onBeforeUnmount(resetSaved);
26
- return { showSaved };
9
+ provide(wFieldSetShowMessage, setShowMessage);
10
+ const showMessage = (value, durationMs) => showMessageFn?.(value, durationMs);
11
+ return showMessage;
27
12
  };
28
13
 
29
- export { useFieldSaved, wFieldSaved };
14
+ export { useFieldMessage, wFieldSetShowMessage };
@@ -1,12 +1,12 @@
1
1
  import { toRef, ref, computed, onBeforeUnmount } from 'vue';
2
- import { useFieldSaved } from '../../FieldWrapper/use/useFieldSaved.js';
2
+ import { useFieldMessage } from '../../FieldWrapper/use/useFieldSaved.js';
3
3
  import { Modal } from '../../../utils/Modal.js';
4
4
  import { handleApiError } from '../../../utils/api.js';
5
5
  import { get, set } from '../../../utils/utils.js';
6
6
 
7
7
  const useFormAsync = (props, onSuccess) => {
8
8
  const enabled = toRef(props, "queryEnabled");
9
- const { showSaved } = useFieldSaved();
9
+ const showMessage = useFieldMessage();
10
10
  const { data, setData, isLoadingError } = props.noParams === true ? props.useQueryFn({ enabled }) : props.useQueryFn(toRef(props, "queryParams"), { enabled });
11
11
  const submitting = ref(false);
12
12
  const modelValue = computed(() => get(data.value ?? {}, props.field));
@@ -15,7 +15,7 @@ const useFormAsync = (props, onSuccess) => {
15
15
  submitting.value = true;
16
16
  return props.apiMethod(set({}, props.field, value)).then((response) => {
17
17
  setData(response.data);
18
- showSaved();
18
+ showMessage("Saved");
19
19
  onSuccess(response.data);
20
20
  }).catch((error) => handleApiError(error, void 0, props.field)).finally(() => {
21
21
  submitting.value = false;
@@ -1,17 +1,17 @@
1
1
  import { InputProps, WrapSelection } from './types';
2
+ import { CaretOffset } from './models/utils';
2
3
  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<{
3
4
  props: __VLS_PrettifyLocal<any & InputProps<Type> & Partial<{}>> & import('vue').PublicProps;
4
5
  expose(exposed: import('vue').ShallowUnwrapRef<{
5
6
  focus: () => void;
6
7
  blur: () => void;
7
8
  wrapSelection: (value: WrapSelection) => void;
8
- setCaret: (indexStart: number, indexEnd?: number) => void;
9
- getSelectionOffsets: () => {
10
- start: number;
11
- end: number;
12
- } | undefined;
9
+ setCaret: (start: number, end?: number) => void;
10
+ getCaret: () => CaretOffset;
13
11
  fieldRef: import('vue').ComputedRef<HTMLDivElement | null | undefined>;
14
12
  scrollToInput: () => void;
13
+ undo: () => void;
14
+ redo: () => void;
15
15
  }>): void;
16
16
  attrs: any;
17
17
  slots: {
@@ -1 +1 @@
1
- {"version":3,"file":"WInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInput.vue"],"names":[],"mappings":"AA4OA;AAieA,OAAO,KAAK,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;yBAYrC,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;WAgtBO,mBAAmB,CAAC,oCAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB;qBA/lB7B,IAAI;oBAOL,IAAI;+BA2DS,aAAa;+BACb,MAAM,aAAa,MAAM;;;;;;;MA4hBc,GAAG,IAAI;WACpE,GAAG;;uBA3DgB,GAAG;0BACA,GAAG;wBACJ,GAAG;;;YAEH,GAAG;;mCAveF,aAAa;YAseb,GAAG;;;YAEJ,GAAG;uBACJ,GAAG;wBACF,GAAG;uBACJ,GAAG;uBACH,GAAG;wBACF,GAAG;;;YA3oB1B,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,UAAU,GAAG,IAAI;YACxC,cAAc,SAAS,KAAK,GAAG,IAAI;YACnC,OAAO,GAAG,IAAI;;EAmrBhB,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AA3tBzE,wBA2tB4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"WInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInput.vue"],"names":[],"mappings":"AAoPA;AAqiBA,OAAO,KAAK,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAatD,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,gBAAgB,CAAA;yBAE9B,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;WAwyBO,mBAAmB,CAAC,oCAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB;qBA5mB7B,IAAI;oBAOL,IAAI;+BAiCS,aAAa;0BAzKlB,MAAM,QAAQ,MAAM,KAAG,IAAI;wBAN/B,WAAW;;;oBAyBf,IAAI;oBAgBJ,IAAI;MA0sBgD,GAAG,IAAI;WACpE,GAAG;;uBAhEgB,GAAG;0BACA,GAAG;wBACJ,GAAG;;;YAEH,GAAG;;mCAzgBF,aAAa;YAwgBb,GAAG;;;YAEJ,GAAG;uBACJ,GAAG;wBACF,GAAG;uBACJ,GAAG;uBACH,GAAG;wBACF,GAAG;;;YAztB1B,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,UAAU,GAAG,IAAI;YACxC,cAAc,SAAS,KAAK,GAAG,IAAI;YACnC,OAAO,GAAG,IAAI;;EAswBhB,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AAnzBzE,wBAmzB4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -3,6 +3,8 @@ import _sfc_main$1 from '../FieldWrapper/WFieldWrapper.vue.js';
3
3
  import { useTabActiveListener } from '../Tabs/use/useTabActiveListener.js';
4
4
  import { Notify } from '../../utils/Notify.js';
5
5
  import { useComponentStates } from '../../utils/useComponentStates.js';
6
+ import { checkPermissionPaste } from '../../utils/useCopy.js';
7
+ import { debounce } from '../../utils/utils.js';
6
8
  import _sfc_main$2 from './components/InputActions.vue.js';
7
9
 
8
10
  const _hoisted_1 = { class: "relative flex min-h-full flex-1" };
@@ -73,13 +75,71 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
73
75
  const contentRef = useTemplateRef("content");
74
76
  const inputRef = useTemplateRef("input");
75
77
  const isSecureVisible = ref(false);
78
+ const history = ref([]);
79
+ const historyPosition = ref(-1);
80
+ const getCaret = () => {
81
+ if (!inputRef.value) return { start: 0, end: 0 };
82
+ if ("getCaret" in inputRef.value) return inputRef.value.getCaret();
83
+ return { start: inputRef.value.selectionStart ?? 0, end: inputRef.value.selectionEnd ?? 0 };
84
+ };
85
+ const setCaret = (start, end) => {
86
+ if (!inputRef.value) return;
87
+ if ("setCaret" in inputRef.value) inputRef.value.setCaret(start, end);
88
+ else inputRef.value.setSelectionRange(start, end ?? null);
89
+ };
90
+ const addToHistory = debounce((value) => {
91
+ const entry = { value, caret: getCaret() };
92
+ if (historyPosition.value < history.value.length - 1) history.value = history.value.slice(0, historyPosition.value + 1);
93
+ history.value.push(entry);
94
+ historyPosition.value = history.value.length - 1;
95
+ if (history.value.length > 50) {
96
+ history.value.shift();
97
+ historyPosition.value--;
98
+ }
99
+ }, 500);
100
+ const undo = () => {
101
+ if (props.loading || isDisabled.value || isReadonly.value || props.unclickable || props.textSecure) return;
102
+ if (historyPosition.value <= 0) {
103
+ fieldWrapperRef.value?.showMessage("No Undo");
104
+ historyPosition.value = history.value.length ? 0 : -1;
105
+ return;
106
+ }
107
+ fieldWrapperRef.value?.showMessage("Undo");
108
+ const index = historyPosition.value - 1;
109
+ const item = history.value[index];
110
+ emit("update:model-value", item.value);
111
+ nextTick(() => setCaret(item.caret.start, item.caret.end));
112
+ historyPosition.value = index;
113
+ };
114
+ const redo = () => {
115
+ if (props.loading || isDisabled.value || isReadonly.value || props.unclickable || props.textSecure) return;
116
+ if (historyPosition.value >= history.value.length - 1) {
117
+ fieldWrapperRef.value?.showMessage("No Redo");
118
+ historyPosition.value = history.value.length - 1;
119
+ return;
120
+ }
121
+ fieldWrapperRef.value?.showMessage("Redo");
122
+ const index = historyPosition.value + 1;
123
+ const item = history.value[index];
124
+ emit("update:model-value", item.value);
125
+ nextTick(() => setCaret(item.caret.start, item.caret.end));
126
+ historyPosition.value = index;
127
+ };
128
+ const handleHistoryKeydown = (event) => {
129
+ if (!event.ctrlKey && !event.metaKey) return;
130
+ if (event.key !== "z" && event.key !== "Z") return;
131
+ event.preventDefault();
132
+ event.stopPropagation();
133
+ if (event.shiftKey) redo();
134
+ else undo();
135
+ };
76
136
  const updateModelValue = (value) => {
77
137
  if (props.loading || isDisabled.value || isReadonly.value || props.unclickable) return;
78
- if (props.type === "number") {
79
- emit("update:model-value", typeof value === "string" && value.length ? Number.parseFloat(value) : void 0);
80
- } else {
81
- emit("update:model-value", value);
82
- }
138
+ let newValue;
139
+ if (props.type === "number") newValue = typeof value === "string" && value.length ? Number.parseFloat(value) : void 0;
140
+ else newValue = value;
141
+ if (!props.textSecure) addToHistory(newValue);
142
+ emit("update:model-value", newValue);
83
143
  };
84
144
  const handleBackspace = (event) => {
85
145
  if (!props.customBackspaceHandle) return;
@@ -126,53 +186,34 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
126
186
  if (props.unclickable) emit("focus", void 0);
127
187
  else inputRef.value?.focus();
128
188
  };
129
- const blur = () => {
130
- inputRef.value?.blur();
131
- };
132
- const checkPermission = async () => {
133
- const result = await navigator.permissions.query({ name: "clipboard-read" });
134
- return result.state === "granted" || result.state === "prompt";
135
- };
189
+ const blur = () => inputRef.value?.blur();
136
190
  const paste = async () => {
137
- if (!await checkPermission()) {
138
- Notify.error({
139
- title: "Paste failed",
140
- caption: "Reading from clipboard is not permitted"
141
- });
142
- return;
143
- }
144
- navigator.clipboard.readText().then((value) => {
145
- if (!value) {
146
- Notify.warn({
147
- title: "Nothing to paste"
148
- });
149
- return;
150
- }
151
- if (!props.maxLength || props.maxLength <= value.length) {
152
- updateModelValue(value);
153
- Notify.success({
154
- title: "Pasted"
155
- });
156
- nextTick().then(() => emit("paste"));
157
- } else {
158
- Notify.error({
191
+ try {
192
+ await checkPermissionPaste();
193
+ await navigator.clipboard.readText().then((value) => {
194
+ if (!value) {
195
+ Notify.warn({ title: "Nothing to paste" });
196
+ } else if (!props.maxLength || props.maxLength <= value.length) {
197
+ updateModelValue(value);
198
+ Notify.success({ title: "Pasted" });
199
+ nextTick().then(() => emit("paste"));
200
+ } else Notify.error({
159
201
  title: "Unable to paste",
160
202
  caption: "The length of the pasted value exceeds the allowed limit"
161
203
  });
162
- }
163
- }).catch(() => {
204
+ });
205
+ } catch {
164
206
  Notify.error({
165
- title: "Paste failed"
207
+ title: "Paste failed",
208
+ caption: `Please allow the clipboard actions in browser settings for current domain: ${location.host}`
166
209
  });
167
- });
210
+ }
168
211
  };
169
212
  const scrollToInput = () => {
170
213
  if (!contentRef.value || !inputRef.value) return;
171
214
  contentRef.value.scrollTo({ left: contentRef.value.scrollWidth - inputRef.value.offsetWidth - 40 });
172
215
  };
173
216
  const wrapSelection = (value) => inputRef.value && "wrapSelection" in inputRef.value ? inputRef.value.wrapSelection(value) : void 0;
174
- const setCaret = (indexStart, indexEnd) => inputRef.value && "setCaret" in inputRef.value ? inputRef.value.setCaret(indexStart, indexEnd) : void 0;
175
- const getSelectionOffsets = () => inputRef.value && "getSelectionOffsets" in inputRef.value ? inputRef.value.getSelectionOffsets() : void 0;
176
217
  let timeout;
177
218
  const autofocusDebounced = () => {
178
219
  if (timeout) clearTimeout(timeout);
@@ -185,15 +226,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
185
226
  timeout = void 0;
186
227
  }, typeof props.autofocus === "number" ? props.autofocus : 250);
187
228
  };
188
- if (props.autofocus !== false && props.autofocus !== void 0) {
189
- useTabActiveListener(autofocusDebounced);
190
- }
229
+ if (props.autofocus !== false && props.autofocus !== void 0) useTabActiveListener(autofocusDebounced);
191
230
  watch(() => props.autofocus, (value) => {
192
231
  if (value === false || value === void 0) return;
193
232
  nextTick(autofocusDebounced);
194
233
  });
234
+ const handle = watch(() => props.modelValue, (value) => {
235
+ if (history.value.length === 0) {
236
+ if (value) {
237
+ addToHistory(value);
238
+ handle.stop();
239
+ }
240
+ } else handle.stop();
241
+ });
195
242
  onMounted(() => {
196
243
  if (props.autofocus !== false && props.autofocus !== void 0) autofocusDebounced();
244
+ if (props.modelValue) addToHistory(props.modelValue);
197
245
  });
198
246
  onBeforeUnmount(() => {
199
247
  if (timeout) {
@@ -206,9 +254,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
206
254
  blur,
207
255
  wrapSelection,
208
256
  setCaret,
209
- getSelectionOffsets,
257
+ getCaret,
210
258
  fieldRef: computed(() => fieldWrapperRef.value?.fieldRef),
211
- scrollToInput
259
+ scrollToInput,
260
+ undo,
261
+ redo
212
262
  });
213
263
  return (_ctx, _cache) => {
214
264
  return openBlock(), createBlock(_sfc_main$1, mergeProps({ ref: "fieldWrapper" }, props, {
@@ -273,13 +323,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
273
323
  key: 0,
274
324
  list: _ctx.toolbarActions,
275
325
  rich: _ctx.rich === true,
276
- onWrapSelection: wrapSelection
326
+ "is-undo": historyPosition.value !== 0,
327
+ "is-redo": historyPosition.value !== history.value.length - 1,
328
+ "text-secure": _ctx.textSecure ?? false,
329
+ onWrapSelection: wrapSelection,
330
+ onUndo: undo,
331
+ onRedo: redo
277
332
  }, {
278
333
  default: withCtx(() => [
279
334
  renderSlot(_ctx.$slots, "toolbar", normalizeProps(guardReactiveProps({ wrapSelection })))
280
335
  ]),
281
336
  _: 3
282
- }, 8, ["list", "rich"])) : createCommentVNode("", true),
337
+ }, 8, ["list", "rich", "is-undo", "is-redo", "text-secure"])) : createCommentVNode("", true),
283
338
  _ctx.icon ? (openBlock(), createElementBlock("div", {
284
339
  key: 1,
285
340
  class: normalizeClass(["flex h-full w-[--w-input-height,2.75rem] select-none items-center justify-center", {
@@ -351,7 +406,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
351
406
  _cache[3] || (_cache[3] = withKeys(withModifiers(($event) => {
352
407
  !unref(isDisabled) && !unref(isReadonly) && _ctx.$emit("keypress:delete", $event);
353
408
  handleBackspace($event);
354
- }, ["exact", "stop"]), ["delete"]))
409
+ }, ["exact", "stop"]), ["delete"])),
410
+ handleHistoryKeydown
355
411
  ],
356
412
  onFocus: ($event) => {
357
413
  _ctx.$emit("focus", $event);
@@ -418,9 +474,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
418
474
  ]),
419
475
  key: "4"
420
476
  } : void 0,
421
- _ctx.$slots.bottom ? {
477
+ _ctx.$slots.bottom || true ? {
422
478
  name: "bottom",
423
479
  fn: withCtx(() => [
480
+ createElementVNode("pre", null, toDisplayString(historyPosition.value), 1),
481
+ createElementVNode("pre", null, toDisplayString(history.value), 1),
424
482
  renderSlot(_ctx.$slots, "bottom")
425
483
  ]),
426
484
  key: "5"
@@ -16,10 +16,7 @@ declare function __VLS_template(): {
16
16
  scrollToInput: () => void | undefined;
17
17
  wrapSelection: (value: import('./types').WrapSelection) => void | undefined;
18
18
  setCaret: (indexStart: number, indexEnd?: number) => void | undefined;
19
- getSelectionOffsets: () => {
20
- start: number;
21
- end: number;
22
- } | undefined;
19
+ getCaret: () => import('./models/utils').CaretOffset | undefined;
23
20
  }> | null;
24
21
  };
25
22
  rootEl: any;
@@ -46,10 +43,7 @@ declare const __VLS_component: import('vue').DefineComponent<InputDateProps, {},
46
43
  scrollToInput: () => void | undefined;
47
44
  wrapSelection: (value: import('./types').WrapSelection) => void | undefined;
48
45
  setCaret: (indexStart: number, indexEnd?: number) => void | undefined;
49
- getSelectionOffsets: () => {
50
- start: number;
51
- end: number;
52
- } | undefined;
46
+ getCaret: () => import('./models/utils').CaretOffset | undefined;
53
47
  }> | null;
54
48
  }, any>;
55
49
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"WInputDate.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputDate.vue"],"names":[],"mappings":"AAiDA;AAmHA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAO3C,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAA;AAuEvD,iBAAS,cAAc;WA6HT,OAAO,IAA6B;;uBAbtB,GAAG;0BACA,GAAG;uBACN,GAAG;;;;;;;;;;;;;;;;;;EAgB9B;AAeD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;OASnB,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"}
1
+ {"version":3,"file":"WInputDate.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputDate.vue"],"names":[],"mappings":"AAiDA;AAmHA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAO3C,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAA;AAuEvD,iBAAS,cAAc;WA6HT,OAAO,IAA6B;;uBAbtB,GAAG;0BACA,GAAG;uBACN,GAAG;;;;;;;;;;;;;;;EAgB9B;AAeD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;OASnB,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"}
@@ -10,10 +10,7 @@ declare const _default: <Type extends InputType = "text">(__VLS_props: NonNullab
10
10
  scrollToInput: () => void | undefined;
11
11
  wrapSelection: (value: WrapSelection) => void | undefined;
12
12
  setCaret: (indexStart: number, indexEnd?: number) => void | undefined;
13
- getSelectionOffsets: () => {
14
- start: number;
15
- end: number;
16
- } | undefined;
13
+ getCaret: () => import('./models/utils').CaretOffset | undefined;
17
14
  }>): void;
18
15
  attrs: any;
19
16
  slots: Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"WInputSuggest.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputSuggest.vue"],"names":[],"mappings":"AAyHA;AAqOA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAE7D,OAAO,EAAC,KAAK,KAAK,EAAgC,MAAM,KAAK,CAAA;yBAe5C,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;WA4ZO,mBAAmB,CAAC,2CAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB;;;;;;+BA9VjB,aAAa;+BACb,MAAM,aAAa,MAAM;;;;;MA6Vc,GAAG,IAAI;WACpE,GAAG;;gBAnUD,MAAM,IAAI;iBACT,MAAM,IAAI;mBACR,MAAM,IAAI;kBACX,MAAM,IAAI;iBACX,CAAC,KAAK,EAAE;YAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;SAAC,KAAK,IAAI;gBAChD,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI;kBACpC,MAAM,KAAK,EAAE;;gBANf,MAAM,IAAI;iBACT,MAAM,IAAI;mBACR,MAAM,IAAI;kBACX,MAAM,IAAI;iBACX,CAAC,KAAK,EAAE;YAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;SAAC,KAAK,IAAI;gBAChD,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI;kBACpC,MAAM,KAAK,EAAE;;;YA9EnB,oBAAoB,mDAAsB,IAAI;YAC9C,gBAAgB,SAAS,aAAa,GAAG,IAAI;YAC7C,aAAa,SAAS,aAAa,GAAG,IAAI;YAC1C,eAAe,SAAS,aAAa,GAAG,IAAI;YAC5C,iBAAiB,SAAS,aAAa,GAAG,IAAI;YAC9C,MAAM,GAAG,IAAI;YACb,OAAO,GAAG,IAAI;YACd,aAAa,GAAG,IAAI;YACpB,OAAO,SAAS,UAAU,GAAG,SAAS,GAAG,IAAI;YAC7C,MAAM,SAAS,UAAU,GAAG,IAAI;;EAsYlC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AAvazE,wBAua4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"WInputSuggest.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputSuggest.vue"],"names":[],"mappings":"AAyHA;AAqOA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAE7D,OAAO,EAAC,KAAK,KAAK,EAAgC,MAAM,KAAK,CAAA;yBAe5C,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;WA4ZO,mBAAmB,CAAC,2CAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB;;;;;;+BA9VjB,aAAa;+BACb,MAAM,aAAa,MAAM;;MA6Vc,GAAG,IAAI;WACpE,GAAG;;gBAnUD,MAAM,IAAI;iBACT,MAAM,IAAI;mBACR,MAAM,IAAI;kBACX,MAAM,IAAI;iBACX,CAAC,KAAK,EAAE;YAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;SAAC,KAAK,IAAI;gBAChD,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI;kBACpC,MAAM,KAAK,EAAE;;gBANf,MAAM,IAAI;iBACT,MAAM,IAAI;mBACR,MAAM,IAAI;kBACX,MAAM,IAAI;iBACX,CAAC,KAAK,EAAE;YAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;SAAC,KAAK,IAAI;gBAChD,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI;kBACpC,MAAM,KAAK,EAAE;;;YA9EnB,oBAAoB,mDAAsB,IAAI;YAC9C,gBAAgB,SAAS,aAAa,GAAG,IAAI;YAC7C,aAAa,SAAS,aAAa,GAAG,IAAI;YAC1C,eAAe,SAAS,aAAa,GAAG,IAAI;YAC5C,iBAAiB,SAAS,aAAa,GAAG,IAAI;YAC9C,MAAM,GAAG,IAAI;YACb,OAAO,GAAG,IAAI;YACd,aAAa,GAAG,IAAI;YACpB,OAAO,SAAS,UAAU,GAAG,SAAS,GAAG,IAAI;YAC7C,MAAM,SAAS,UAAU,GAAG,IAAI;;EAsYlC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AAvazE,wBAua4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -99,7 +99,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
99
99
  const scrollToInput = () => inputRef.value?.scrollToInput();
100
100
  const wrapSelection = (value) => inputRef.value?.wrapSelection(value);
101
101
  const setCaret = (indexStart, indexEnd) => inputRef.value?.setCaret(indexStart, indexEnd);
102
- const getSelectionOffsets = () => inputRef.value?.getSelectionOffsets();
102
+ const getCaret = () => inputRef.value?.getCaret();
103
103
  const updateDropdown = () => dropdownMenuRef.value && "updateDropdown" in dropdownMenuRef.value ? dropdownMenuRef.value.updateDropdown() : void 0;
104
104
  __expose({
105
105
  focus,
@@ -109,7 +109,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
109
109
  scrollToInput,
110
110
  wrapSelection,
111
111
  setCaret,
112
- getSelectionOffsets
112
+ getCaret
113
113
  });
114
114
  return (_ctx, _cache) => {
115
115
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.static ? InputSuggestStatic : unref(isMobile) ? _sfc_main$1 : _sfc_main$2), mergeProps({ ref: "dropdownMenu" }, _ctx.static ? void 0 : unref(isMobile) ? {
@@ -1,11 +1,8 @@
1
- import { ToolbarAction, WrapSelection } from './types';
2
- type __VLS_Props = {
3
- action: ToolbarAction;
4
- };
5
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
6
- "wrap-selection": (value: WrapSelection) => any;
7
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
8
- "onWrap-selection"?: ((value: WrapSelection) => any) | undefined;
1
+ import { ToolbarAction } from './types';
2
+ declare const _default: import('vue').DefineComponent<ToolbarAction, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
3
+ click: (index: number | undefined) => any;
4
+ }, string, import('vue').PublicProps, Readonly<ToolbarAction> & Readonly<{
5
+ onClick?: ((index: number | undefined) => any) | undefined;
9
6
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
7
  export default _default;
11
8
  //# sourceMappingURL=WInputToolbarButton.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WInputToolbarButton.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputToolbarButton.vue"],"names":[],"mappings":"AA0CA;AAyFA,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAA;AAW1E,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,aAAa,CAAA;CACtB,CAAC;;;;;;AAoLF,wBAOG"}
1
+ {"version":3,"file":"WInputToolbarButton.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputToolbarButton.vue"],"names":[],"mappings":"AAmDA;AA+FA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAA;;;;;;AA2M1C,wBAOG"}