@v-c/util 0.0.16 → 0.0.18

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.
@@ -46,8 +46,26 @@ function limitTabRange(node, e) {
46
46
  }
47
47
  }
48
48
  }
49
+ function triggerFocus(element, option) {
50
+ if (!element) return;
51
+ element.focus(option);
52
+ const { cursor } = option || {};
53
+ if (cursor) {
54
+ const len = element.value.length;
55
+ switch (cursor) {
56
+ case "start":
57
+ element.setSelectionRange(0, 0);
58
+ break;
59
+ case "end":
60
+ element.setSelectionRange(len, len);
61
+ break;
62
+ default: element.setSelectionRange(0, len);
63
+ }
64
+ }
65
+ }
49
66
  exports.backLastFocusNode = backLastFocusNode;
50
67
  exports.clearLastFocusNode = clearLastFocusNode;
51
68
  exports.getFocusNodeList = getFocusNodeList;
52
69
  exports.limitTabRange = limitTabRange;
53
70
  exports.saveLastFocusNode = saveLastFocusNode;
71
+ exports.triggerFocus = triggerFocus;
@@ -6,3 +6,7 @@ export declare function clearLastFocusNode(): void;
6
6
  /** @deprecated Do not use since this may failed when used in async */
7
7
  export declare function backLastFocusNode(): void;
8
8
  export declare function limitTabRange(node: HTMLElement, e: KeyboardEvent): void;
9
+ export interface InputFocusOptions extends FocusOptions {
10
+ cursor?: 'start' | 'end' | 'all';
11
+ }
12
+ export declare function triggerFocus(element?: HTMLInputElement | HTMLTextAreaElement, option?: InputFocusOptions): void;
package/dist/Dom/focus.js CHANGED
@@ -46,4 +46,21 @@ function limitTabRange(node, e) {
46
46
  }
47
47
  }
48
48
  }
49
- export { backLastFocusNode, clearLastFocusNode, getFocusNodeList, limitTabRange, saveLastFocusNode };
49
+ function triggerFocus(element, option) {
50
+ if (!element) return;
51
+ element.focus(option);
52
+ const { cursor } = option || {};
53
+ if (cursor) {
54
+ const len = element.value.length;
55
+ switch (cursor) {
56
+ case "start":
57
+ element.setSelectionRange(0, 0);
58
+ break;
59
+ case "end":
60
+ element.setSelectionRange(len, len);
61
+ break;
62
+ default: element.setSelectionRange(0, len);
63
+ }
64
+ }
65
+ }
66
+ export { backLastFocusNode, clearLastFocusNode, getFocusNodeList, limitTabRange, saveLastFocusNode, triggerFocus };
@@ -0,0 +1,32 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ const require_index = require("./props-util/index.cjs");
3
+ let vue = require("vue");
4
+ function checkIsBaseType(value) {
5
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") return true;
6
+ return typeof value === "undefined" || value === null;
7
+ }
8
+ var RenderComponent_default = (0, vue.defineComponent)((props, { attrs }) => {
9
+ return () => {
10
+ const render = props.render;
11
+ if (render && typeof render === "function") {
12
+ const _render = render?.();
13
+ if (Array.isArray(_render)) return require_index.filterEmpty(_render).map((v) => {
14
+ if ((0, vue.isVNode)(v)) return (0, vue.createVNode)(v, { ...attrs });
15
+ else return v;
16
+ });
17
+ return _render;
18
+ } else if (Array.isArray(render)) return require_index.filterEmpty(render).map((v) => {
19
+ if ((0, vue.isVNode)(v)) return (0, vue.createVNode)(v, { ...attrs });
20
+ return v;
21
+ });
22
+ else if (checkIsBaseType(render)) return render;
23
+ if ((0, vue.isVNode)(render)) return (0, vue.createVNode)(render, { ...attrs });
24
+ console.log(render, "render");
25
+ return render;
26
+ };
27
+ }, {
28
+ inheritAttrs: false,
29
+ name: "RenderComponent",
30
+ props: ["render"]
31
+ });
32
+ exports.default = RenderComponent_default;
@@ -0,0 +1,6 @@
1
+ declare const _default: import('vue').DefineSetupFnComponent<{
2
+ render?: any;
3
+ }, {}, {}, {
4
+ render?: any;
5
+ } & {}, import('vue').PublicProps>;
6
+ export default _default;
@@ -0,0 +1,31 @@
1
+ import { filterEmpty } from "./props-util/index.js";
2
+ import { createVNode, defineComponent, isVNode } from "vue";
3
+ function checkIsBaseType(value) {
4
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") return true;
5
+ return typeof value === "undefined" || value === null;
6
+ }
7
+ var RenderComponent_default = defineComponent((props, { attrs }) => {
8
+ return () => {
9
+ const render$1 = props.render;
10
+ if (render$1 && typeof render$1 === "function") {
11
+ const _render = render$1?.();
12
+ if (Array.isArray(_render)) return filterEmpty(_render).map((v) => {
13
+ if (isVNode(v)) return createVNode(v, { ...attrs });
14
+ else return v;
15
+ });
16
+ return _render;
17
+ } else if (Array.isArray(render$1)) return filterEmpty(render$1).map((v) => {
18
+ if (isVNode(v)) return createVNode(v, { ...attrs });
19
+ return v;
20
+ });
21
+ else if (checkIsBaseType(render$1)) return render$1;
22
+ if (isVNode(render$1)) return createVNode(render$1, { ...attrs });
23
+ console.log(render$1, "render");
24
+ return render$1;
25
+ };
26
+ }, {
27
+ inheritAttrs: false,
28
+ name: "RenderComponent",
29
+ props: ["render"]
30
+ });
31
+ export { RenderComponent_default as default };
@@ -10,12 +10,12 @@ function getTransitionProps(transitionName, opt = {}) {
10
10
  return transitionName ? {
11
11
  name: transitionName,
12
12
  appear: true,
13
- enterFromClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-prepare ${transitionName}-enter-prepare ${transitionName}-enter-start`,
14
- enterActiveClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-prepare ${transitionName}-enter-prepare `,
15
- enterToClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`,
16
- leaveFromClass: ` ${transitionName}-leave`,
17
- leaveActiveClass: `${transitionName}-leave ${transitionName}-leave-active`,
18
- leaveToClass: `${transitionName}-leave ${transitionName}-leave-active`,
13
+ enterFromClass: `${transitionName} ${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-prepare ${transitionName}-enter-prepare ${transitionName}-enter-start`,
14
+ enterActiveClass: `${transitionName} ${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-prepare ${transitionName}-enter-prepare `,
15
+ enterToClass: `${transitionName} ${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`,
16
+ leaveFromClass: `${transitionName} ${transitionName}-leave`,
17
+ leaveActiveClass: `${transitionName} ${transitionName}-leave ${transitionName}-leave-active`,
18
+ leaveToClass: `${transitionName} ${transitionName}-leave ${transitionName}-leave-active`,
19
19
  ...opt
20
20
  } : {
21
21
  css: false,
@@ -10,12 +10,12 @@ function getTransitionProps(transitionName, opt = {}) {
10
10
  return transitionName ? {
11
11
  name: transitionName,
12
12
  appear: true,
13
- enterFromClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-prepare ${transitionName}-enter-prepare ${transitionName}-enter-start`,
14
- enterActiveClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-prepare ${transitionName}-enter-prepare `,
15
- enterToClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`,
16
- leaveFromClass: ` ${transitionName}-leave`,
17
- leaveActiveClass: `${transitionName}-leave ${transitionName}-leave-active`,
18
- leaveToClass: `${transitionName}-leave ${transitionName}-leave-active`,
13
+ enterFromClass: `${transitionName} ${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-prepare ${transitionName}-enter-prepare ${transitionName}-enter-start`,
14
+ enterActiveClass: `${transitionName} ${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-prepare ${transitionName}-enter-prepare `,
15
+ enterToClass: `${transitionName} ${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`,
16
+ leaveFromClass: `${transitionName} ${transitionName}-leave`,
17
+ leaveActiveClass: `${transitionName} ${transitionName}-leave ${transitionName}-leave-active`,
18
+ leaveToClass: `${transitionName} ${transitionName}-leave ${transitionName}-leave-active`,
19
19
  ...opt
20
20
  } : {
21
21
  css: false,
package/dist/vnode.cjs CHANGED
@@ -1,6 +1,6 @@
1
+ const require_index = require("./props-util/index.cjs");
1
2
  const require_warning = require("./warning.cjs");
2
3
  const require_findDOMNode = require("./Dom/findDOMNode.cjs");
3
- const require_index = require("./props-util/index.cjs");
4
4
  let vue = require("vue");
5
5
  function cloneElement(vnode, nodeProps = {}, override = true, mergeRef = false) {
6
6
  let ele = vnode;
@@ -61,5 +61,6 @@ exports.cloneElement = cloneElement;
61
61
  exports.cloneVNodes = cloneVNodes;
62
62
  exports.customRenderSlot = customRenderSlot;
63
63
  exports.deepCloneElement = deepCloneElement;
64
+ exports.ensureValidVNode = ensureValidVNode;
64
65
  exports.resolveToElement = resolveToElement;
65
66
  exports.triggerVNodeUpdate = triggerVNodeUpdate;
package/dist/vnode.d.ts CHANGED
@@ -7,6 +7,7 @@ export declare function cloneElement<T, U>(vnode: VNode<T, U> | VNode<T, U>[], n
7
7
  export declare function cloneVNodes(vnodes: any, nodeProps?: {}, override?: boolean): any;
8
8
  export declare function deepCloneElement<T, U>(vnode: VNode<T, U> | VNode<T, U>[], nodeProps?: NodeProps, override?: boolean, mergeRef?: boolean): any;
9
9
  export declare function triggerVNodeUpdate(vm: VNode, attrs: Record<string, any>, dom: any): void;
10
+ export declare function ensureValidVNode<T extends Array<unknown>>(slot: T | null): T;
10
11
  export declare function customRenderSlot(slots: Slots, name: string, props: Record<string, unknown>, fallback?: () => VNodeArrayChildren): VNodeArrayChildren;
11
12
  export declare function resolveToElement(node: any): any;
12
13
  export {};
package/dist/vnode.js CHANGED
@@ -1,6 +1,6 @@
1
+ import { filterEmpty } from "./props-util/index.js";
1
2
  import warning_default from "./warning.js";
2
3
  import { isDOM } from "./Dom/findDOMNode.js";
3
- import { filterEmpty } from "./props-util/index.js";
4
4
  import { Comment, Fragment, cloneVNode, isVNode, render } from "vue";
5
5
  function cloneElement(vnode, nodeProps = {}, override = true, mergeRef = false) {
6
6
  let ele = vnode;
@@ -57,4 +57,4 @@ function resolveToElement(node) {
57
57
  }
58
58
  return null;
59
59
  }
60
- export { cloneElement, cloneVNodes, customRenderSlot, deepCloneElement, resolveToElement, triggerVNodeUpdate };
60
+ export { cloneElement, cloneVNodes, customRenderSlot, deepCloneElement, ensureValidVNode, resolveToElement, triggerVNodeUpdate };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@v-c/util",
3
3
  "type": "module",
4
- "version": "0.0.16",
4
+ "version": "0.0.18",
5
5
  "description": "Vue3 components utils",
6
6
  "publishConfig": {
7
7
  "access": "public"