@veltra/compositions 1.0.3 → 1.0.5

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.
@@ -1,4 +1,4 @@
1
- import { ComponentSize } from "@veltra/utils/types";
1
+ import { ComponentSize } from "@veltra/utils";
2
2
 
3
3
  //#region src/use-config/index.d.ts
4
4
  interface State {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/use-config/index.ts"],"sourcesContent":["import { isObj } from '@cat-kit/core'\nimport type { ComponentSize } from '@veltra/utils/types'\nimport { reactive, readonly, watch } from 'vue'\n\ninterface State {\n /** 是否开启动画,机器老可以关闭动画来获得性能 */\n animation: boolean\n /** 组件尺寸大小 */\n size: ComponentSize\n /** 表单 */\n form: {\n /** 标签宽度 */\n labelWidth?: number | number\n }\n paginator: { pageSize: number; pageSizeOptions: number[] }\n}\n\nconst state = reactive<State>({\n animation: true,\n size: 'default',\n form: { labelWidth: 80 },\n paginator: { pageSize: 40, pageSizeOptions: [40, 100, 200, 500, 1000] }\n})\n\nexport function setDocumentSize(size: ComponentSize, oldSize?: ComponentSize): void {\n if (typeof document === 'undefined') return\n if (oldSize) {\n document.documentElement.classList.remove(oldSize)\n }\n document.documentElement.classList.add(size)\n}\n\nlet stopDocumentSizeSync: (() => void) | null = null\n\nfunction ensureDocumentSizeSync(): void {\n if (stopDocumentSizeSync) return\n if (typeof document === 'undefined') return\n\n stopDocumentSizeSync = watch(\n () => state.size,\n (size, oldSize) => setDocumentSize(size, oldSize)\n )\n}\n\nfunction deepSet(original: Record<string, any>, extend: Record<string, any>) {\n Object.keys(extend).forEach((key) => {\n const val = original[key]\n const targetVal = extend[key]\n if (isObj(val)) {\n if (isObj(targetVal)) {\n deepSet(val, targetVal)\n } else {\n console.warn(`extend['${key}']应该是一个对象`)\n }\n } else {\n original[key] = targetVal\n }\n })\n}\n\nexport function useConfig(): {\n config: Readonly<State>\n setConfig: (conf: Partial<State>) => void\n} {\n ensureDocumentSizeSync()\n return {\n /** 全局配置 */\n config: readonly(state) as Readonly<State>,\n /**\n * 设置全局配置项\n * @param conf\n */\n setConfig(conf: Partial<State>) {\n deepSet(state, conf)\n }\n }\n}\n"],"mappings":";;;AAiBA,MAAM,QAAQ,SAAgB;CAC5B,WAAW;CACX,MAAM;CACN,MAAM,EAAE,YAAY,IAAI;CACxB,WAAW;EAAE,UAAU;EAAI,iBAAiB;GAAC;GAAI;GAAK;GAAK;GAAK;GAAK;EAAE;CACxE,CAAC;AAEF,SAAgB,gBAAgB,MAAqB,SAA+B;AAClF,KAAI,OAAO,aAAa,YAAa;AACrC,KAAI,QACF,UAAS,gBAAgB,UAAU,OAAO,QAAQ;AAEpD,UAAS,gBAAgB,UAAU,IAAI,KAAK;;AAG9C,IAAI,uBAA4C;AAEhD,SAAS,yBAA+B;AACtC,KAAI,qBAAsB;AAC1B,KAAI,OAAO,aAAa,YAAa;AAErC,wBAAuB,YACf,MAAM,OACX,MAAM,YAAY,gBAAgB,MAAM,QAAQ,CAClD;;AAGH,SAAS,QAAQ,UAA+B,QAA6B;AAC3E,QAAO,KAAK,OAAO,CAAC,SAAS,QAAQ;EACnC,MAAM,MAAM,SAAS;EACrB,MAAM,YAAY,OAAO;AACzB,MAAI,MAAM,IAAI,CACZ,KAAI,MAAM,UAAU,CAClB,SAAQ,KAAK,UAAU;MAEvB,SAAQ,KAAK,WAAW,IAAI,WAAW;MAGzC,UAAS,OAAO;GAElB;;AAGJ,SAAgB,YAGd;AACA,yBAAwB;AACxB,QAAO;EAEL,QAAQ,SAAS,MAAM;EAKvB,UAAU,MAAsB;AAC9B,WAAQ,OAAO,KAAK;;EAEvB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/use-config/index.ts"],"sourcesContent":["import { isObj } from '@cat-kit/core'\nimport type { ComponentSize } from '@veltra/utils'\nimport { reactive, readonly, watch } from 'vue'\n\ninterface State {\n /** 是否开启动画,机器老可以关闭动画来获得性能 */\n animation: boolean\n /** 组件尺寸大小 */\n size: ComponentSize\n /** 表单 */\n form: {\n /** 标签宽度 */\n labelWidth?: number | number\n }\n paginator: { pageSize: number; pageSizeOptions: number[] }\n}\n\nconst state = reactive<State>({\n animation: true,\n size: 'default',\n form: { labelWidth: 80 },\n paginator: { pageSize: 40, pageSizeOptions: [40, 100, 200, 500, 1000] }\n})\n\nexport function setDocumentSize(size: ComponentSize, oldSize?: ComponentSize): void {\n if (typeof document === 'undefined') return\n if (oldSize) {\n document.documentElement.classList.remove(oldSize)\n }\n document.documentElement.classList.add(size)\n}\n\nlet stopDocumentSizeSync: (() => void) | null = null\n\nfunction ensureDocumentSizeSync(): void {\n if (stopDocumentSizeSync) return\n if (typeof document === 'undefined') return\n\n stopDocumentSizeSync = watch(\n () => state.size,\n (size, oldSize) => setDocumentSize(size, oldSize)\n )\n}\n\nfunction deepSet(original: Record<string, any>, extend: Record<string, any>) {\n Object.keys(extend).forEach((key) => {\n const val = original[key]\n const targetVal = extend[key]\n if (isObj(val)) {\n if (isObj(targetVal)) {\n deepSet(val, targetVal)\n } else {\n console.warn(`extend['${key}']应该是一个对象`)\n }\n } else {\n original[key] = targetVal\n }\n })\n}\n\nexport function useConfig(): {\n config: Readonly<State>\n setConfig: (conf: Partial<State>) => void\n} {\n ensureDocumentSizeSync()\n return {\n /** 全局配置 */\n config: readonly(state) as Readonly<State>,\n /**\n * 设置全局配置项\n * @param conf\n */\n setConfig(conf: Partial<State>) {\n deepSet(state, conf)\n }\n }\n}\n"],"mappings":";;;AAiBA,MAAM,QAAQ,SAAgB;CAC5B,WAAW;CACX,MAAM;CACN,MAAM,EAAE,YAAY,IAAI;CACxB,WAAW;EAAE,UAAU;EAAI,iBAAiB;GAAC;GAAI;GAAK;GAAK;GAAK;GAAK;EAAE;CACxE,CAAC;AAEF,SAAgB,gBAAgB,MAAqB,SAA+B;AAClF,KAAI,OAAO,aAAa,YAAa;AACrC,KAAI,QACF,UAAS,gBAAgB,UAAU,OAAO,QAAQ;AAEpD,UAAS,gBAAgB,UAAU,IAAI,KAAK;;AAG9C,IAAI,uBAA4C;AAEhD,SAAS,yBAA+B;AACtC,KAAI,qBAAsB;AAC1B,KAAI,OAAO,aAAa,YAAa;AAErC,wBAAuB,YACf,MAAM,OACX,MAAM,YAAY,gBAAgB,MAAM,QAAQ,CAClD;;AAGH,SAAS,QAAQ,UAA+B,QAA6B;AAC3E,QAAO,KAAK,OAAO,CAAC,SAAS,QAAQ;EACnC,MAAM,MAAM,SAAS;EACrB,MAAM,YAAY,OAAO;AACzB,MAAI,MAAM,IAAI,CACZ,KAAI,MAAM,UAAU,CAClB,SAAQ,KAAK,UAAU;MAEvB,SAAQ,KAAK,WAAW,IAAI,WAAW;MAGzC,UAAS,OAAO;GAElB;;AAGJ,SAAgB,YAGd;AACA,yBAAwB;AACxB,QAAO;EAEL,QAAQ,SAAS,MAAM;EAKvB,UAAU,MAAsB;AAC9B,WAAQ,OAAO,KAAK;;EAEvB"}
@@ -1,5 +1,5 @@
1
+ import { ComponentSize } from "@veltra/utils";
1
2
  import { ComputedRef } from "vue";
2
- import { ComponentSize } from "@veltra/utils/types";
3
3
 
4
4
  //#region src/use-fallback-props/index.d.ts
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/use-fallback-props/index.ts"],"sourcesContent":["import type { ComponentSize } from '@veltra/utils/types'\nimport { computed, type ComputedRef } from 'vue'\n\nimport { useConfig } from '../use-config'\n\n/**\n * 使用回滚属性,用于控制多级属性的使用优先级,如果多级属性中不存在该值,则使用全局配置中的属性,如再不存在则为undefined\n * @param propsList 属性列表,最右边的属性优先级最高\n * @param fallbackProps 要回滚的属性和默认值\n */\nexport function useFallbackProps<\n F extends Record<string, any>,\n R extends {\n [key in keyof F]: ComputedRef<F[key]>\n }\n>(propsList: Record<string, any>[], fallbackProps: F): R {\n const { config } = useConfig()\n\n let result = {} as R\n\n for (const key in fallbackProps) {\n if (fallbackProps.hasOwnProperty(key)) {\n const defaultValue = fallbackProps[key]\n const ref = computed<any>(() => {\n for (let i = propsList.length - 1; i > -1; --i) {\n const props = propsList[i]!\n\n if (props[key] !== undefined) {\n return props[key]\n }\n }\n\n return config[key as string] ?? defaultValue\n })\n\n result[key as keyof F] = ref as R[keyof F]\n }\n }\n\n return result\n}\n\ntype FormFallbackProps = { size: ComponentSize; disabled: boolean; readonly: boolean }\n\n/**\n * 表单组件的回滚属性\n * @param propsList props列表\n * @returns\n */\nexport function useFormFallbackProps(propsList: Record<string, any>[]): {\n [key in keyof FormFallbackProps]: ComputedRef<FormFallbackProps[key]>\n}\n\n/**\n * 表单组件的回滚属性\n * @param propsList props列表\n * @param fallbackProps 回滚属性,可以只指定部分表单属性\n * @returns\n */\nexport function useFormFallbackProps<F extends Partial<FormFallbackProps>>(\n propsList: Record<string, any>[],\n fallbackProps: F\n): {\n [key in keyof F]: key extends keyof FormFallbackProps\n ? ComputedRef<FormFallbackProps[key]>\n : never\n}\nexport function useFormFallbackProps(\n propsList: Record<string, any>[],\n fallbackProps?: Record<string, any>\n): any {\n if (!fallbackProps) {\n fallbackProps = { size: 'default', disabled: false, readonly: false }\n }\n return useFallbackProps(propsList, fallbackProps)\n}\n"],"mappings":";;;;;;;;AAUA,SAAgB,iBAKd,WAAkC,eAAqB;CACvD,MAAM,EAAE,WAAW,WAAW;CAE9B,IAAI,SAAS,EAAE;AAEf,MAAK,MAAM,OAAO,cAChB,KAAI,cAAc,eAAe,IAAI,EAAE;EACrC,MAAM,eAAe,cAAc;AAanC,SAAO,OAZK,eAAoB;AAC9B,QAAK,IAAI,IAAI,UAAU,SAAS,GAAG,IAAI,IAAI,EAAE,GAAG;IAC9C,MAAM,QAAQ,UAAU;AAExB,QAAI,MAAM,SAAS,KAAA,EACjB,QAAO,MAAM;;AAIjB,UAAO,OAAO,QAAkB;IAChC;;AAMN,QAAO;;AA4BT,SAAgB,qBACd,WACA,eACK;AACL,KAAI,CAAC,cACH,iBAAgB;EAAE,MAAM;EAAW,UAAU;EAAO,UAAU;EAAO;AAEvE,QAAO,iBAAiB,WAAW,cAAc"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/use-fallback-props/index.ts"],"sourcesContent":["import type { ComponentSize } from '@veltra/utils'\nimport { computed, type ComputedRef } from 'vue'\n\nimport { useConfig } from '../use-config'\n\n/**\n * 使用回滚属性,用于控制多级属性的使用优先级,如果多级属性中不存在该值,则使用全局配置中的属性,如再不存在则为undefined\n * @param propsList 属性列表,最右边的属性优先级最高\n * @param fallbackProps 要回滚的属性和默认值\n */\nexport function useFallbackProps<\n F extends Record<string, any>,\n R extends {\n [key in keyof F]: ComputedRef<F[key]>\n }\n>(propsList: Record<string, any>[], fallbackProps: F): R {\n const { config } = useConfig()\n\n let result = {} as R\n\n for (const key in fallbackProps) {\n if (fallbackProps.hasOwnProperty(key)) {\n const defaultValue = fallbackProps[key]\n const ref = computed<any>(() => {\n for (let i = propsList.length - 1; i > -1; --i) {\n const props = propsList[i]!\n\n if (props[key] !== undefined) {\n return props[key]\n }\n }\n\n return config[key as string] ?? defaultValue\n })\n\n result[key as keyof F] = ref as R[keyof F]\n }\n }\n\n return result\n}\n\ntype FormFallbackProps = { size: ComponentSize; disabled: boolean; readonly: boolean }\n\n/**\n * 表单组件的回滚属性\n * @param propsList props列表\n * @returns\n */\nexport function useFormFallbackProps(propsList: Record<string, any>[]): {\n [key in keyof FormFallbackProps]: ComputedRef<FormFallbackProps[key]>\n}\n\n/**\n * 表单组件的回滚属性\n * @param propsList props列表\n * @param fallbackProps 回滚属性,可以只指定部分表单属性\n * @returns\n */\nexport function useFormFallbackProps<F extends Partial<FormFallbackProps>>(\n propsList: Record<string, any>[],\n fallbackProps: F\n): {\n [key in keyof F]: key extends keyof FormFallbackProps\n ? ComputedRef<FormFallbackProps[key]>\n : never\n}\nexport function useFormFallbackProps(\n propsList: Record<string, any>[],\n fallbackProps?: Record<string, any>\n): any {\n if (!fallbackProps) {\n fallbackProps = { size: 'default', disabled: false, readonly: false }\n }\n return useFallbackProps(propsList, fallbackProps)\n}\n"],"mappings":";;;;;;;;AAUA,SAAgB,iBAKd,WAAkC,eAAqB;CACvD,MAAM,EAAE,WAAW,WAAW;CAE9B,IAAI,SAAS,EAAE;AAEf,MAAK,MAAM,OAAO,cAChB,KAAI,cAAc,eAAe,IAAI,EAAE;EACrC,MAAM,eAAe,cAAc;AAanC,SAAO,OAZK,eAAoB;AAC9B,QAAK,IAAI,IAAI,UAAU,SAAS,GAAG,IAAI,IAAI,EAAE,GAAG;IAC9C,MAAM,QAAQ,UAAU;AAExB,QAAI,MAAM,SAAS,KAAA,EACjB,QAAO,MAAM;;AAIjB,UAAO,OAAO,QAAkB;IAChC;;AAMN,QAAO;;AA4BT,SAAgB,qBACd,WACA,eACK;AACL,KAAI,CAAC,cACH,iBAAgB;EAAE,MAAM;EAAW,UAAU;EAAO,UAAU;EAAO;AAEvE,QAAO,iBAAiB,WAAW,cAAc"}
@@ -1,4 +1,4 @@
1
- import { FormContextInjectProps } from "@veltra/utils/types";
1
+ import { FormContextInjectProps } from "@veltra/utils";
2
2
 
3
3
  //#region src/use-form-component/index.d.ts
4
4
  type DIContext = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/use-form-component/index.ts"],"sourcesContent":["import type { FormContextInjectProps } from '@veltra/utils/types'\nimport { type InjectionKey, inject, provide } from 'vue'\n\ntype DIContext = {\n /** 表单属性 */\n formProps: FormContextInjectProps\n}\n\nconst FormComponentDIKey: InjectionKey<DIContext> = Symbol('FormComponentDIKey')\n\n/**\n * 表单组件本身的组合式方法\n * @param props 表单属性\n * @returns\n */\nexport function useFormComponent(props: FormContextInjectProps): void\n/**\n * 表单内的组件的组合式方法\n * @returns 提供一个form的上下文\n */\nexport function useFormComponent(): {\n /** 是否在表单中 */\n inForm: boolean\n} & Partial<DIContext>\nexport function useFormComponent(props?: any): any {\n if (props) {\n return provide(FormComponentDIKey, { formProps: props })\n }\n const context = inject(FormComponentDIKey, undefined) || {}\n return { inForm: !!context, ...context }\n}\n"],"mappings":";;AAQA,MAAM,qBAA8C,OAAO,qBAAqB;AAgBhF,SAAgB,iBAAiB,OAAkB;AACjD,KAAI,MACF,QAAO,QAAQ,oBAAoB,EAAE,WAAW,OAAO,CAAC;CAE1D,MAAM,UAAU,OAAO,oBAAoB,KAAA,EAAU,IAAI,EAAE;AAC3D,QAAO;EAAE,QAAQ,CAAC,CAAC;EAAS,GAAG;EAAS"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/use-form-component/index.ts"],"sourcesContent":["import type { FormContextInjectProps } from '@veltra/utils'\nimport { type InjectionKey, inject, provide } from 'vue'\n\ntype DIContext = {\n /** 表单属性 */\n formProps: FormContextInjectProps\n}\n\nconst FormComponentDIKey: InjectionKey<DIContext> = Symbol('FormComponentDIKey')\n\n/**\n * 表单组件本身的组合式方法\n * @param props 表单属性\n * @returns\n */\nexport function useFormComponent(props: FormContextInjectProps): void\n/**\n * 表单内的组件的组合式方法\n * @returns 提供一个form的上下文\n */\nexport function useFormComponent(): {\n /** 是否在表单中 */\n inForm: boolean\n} & Partial<DIContext>\nexport function useFormComponent(props?: any): any {\n if (props) {\n return provide(FormComponentDIKey, { formProps: props })\n }\n const context = inject(FormComponentDIKey, undefined) || {}\n return { inForm: !!context, ...context }\n}\n"],"mappings":";;AAQA,MAAM,qBAA8C,OAAO,qBAAqB;AAgBhF,SAAgB,iBAAiB,OAAkB;AACjD,KAAI,MACF,QAAO,QAAQ,oBAAoB,EAAE,WAAW,OAAO,CAAC;CAE1D,MAAM,UAAU,OAAO,oBAAoB,KAAA,EAAU,IAAI,EAAE;AAC3D,QAAO;EAAE,QAAQ,CAAC,CAAC;EAAS,GAAG;EAAS"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veltra/compositions",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "files": [
5
5
  "dist",
6
6
  "src"
@@ -20,7 +20,7 @@
20
20
  "@cat-kit/core": "^1.0.1",
21
21
  "@floating-ui/dom": "^1.7.6",
22
22
  "@tanstack/vue-virtual": "^3.13.23",
23
- "@veltra/utils": "1.0.3"
23
+ "@veltra/utils": "1.0.5"
24
24
  },
25
25
  "devDependencies": {
26
26
  "tsdown": "^0.21.7"
@@ -1,5 +1,5 @@
1
1
  import { isObj } from '@cat-kit/core'
2
- import type { ComponentSize } from '@veltra/utils/types'
2
+ import type { ComponentSize } from '@veltra/utils'
3
3
  import { reactive, readonly, watch } from 'vue'
4
4
 
5
5
  interface State {
@@ -1,4 +1,4 @@
1
- import type { ComponentSize } from '@veltra/utils/types'
1
+ import type { ComponentSize } from '@veltra/utils'
2
2
  import { computed, type ComputedRef } from 'vue'
3
3
 
4
4
  import { useConfig } from '../use-config'
@@ -1,4 +1,4 @@
1
- import type { FormContextInjectProps } from '@veltra/utils/types'
1
+ import type { FormContextInjectProps } from '@veltra/utils'
2
2
  import { type InjectionKey, inject, provide } from 'vue'
3
3
 
4
4
  type DIContext = {