orion-design 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. package/README.md +5 -5
  2. package/dist/components/Button/index.js +11 -10
  3. package/dist/components/Button/index.js.map +1 -1
  4. package/dist/components/Form/FileInput/FileInput.vue.d.ts +1 -1
  5. package/dist/components/Form/hooks/FormItemValidateTrigger.d.ts +15 -0
  6. package/dist/components/Form/hooks/FormItemValidateTrigger.js +18 -0
  7. package/dist/components/Form/hooks/FormItemValidateTrigger.js.map +1 -0
  8. package/dist/components/Form/hooks/index.d.ts +10 -0
  9. package/dist/components/Form/hooks/index.js +83 -0
  10. package/dist/components/Form/hooks/index.js.map +1 -0
  11. package/dist/components/Form/index.js +180 -182
  12. package/dist/components/Form/index.js.map +1 -1
  13. package/dist/components/Pagetable/columns/PagetableCellButton.d.ts +7 -7
  14. package/dist/components/Pagetable/index.js +182 -180
  15. package/dist/components/Pagetable/index.js.map +1 -1
  16. package/dist/components/Pagetable/utils/index.js +82 -82
  17. package/dist/components/Pagetable/utils/index.js.map +1 -1
  18. package/dist/components/_util/arrays.js.map +1 -1
  19. package/dist/components/_util/browser.js.map +1 -1
  20. package/dist/components/_util/dom/aria.js.map +1 -1
  21. package/dist/components/_util/dom/element.js.map +1 -1
  22. package/dist/components/_util/dom/event.js.map +1 -1
  23. package/dist/components/_util/dom/position.js.map +1 -1
  24. package/dist/components/_util/dom/scroll.js.map +1 -1
  25. package/dist/components/_util/dom/style.js.map +1 -1
  26. package/dist/components/_util/easings.js.map +1 -1
  27. package/dist/components/_util/error.js.map +1 -1
  28. package/dist/components/_util/i18n.js.map +1 -1
  29. package/dist/components/_util/objects.js.map +1 -1
  30. package/dist/components/_util/raf.js.map +1 -1
  31. package/dist/components/_util/rand.js.map +1 -1
  32. package/dist/components/_util/strings.js.map +1 -1
  33. package/dist/components/_util/throttleByRaf.js.map +1 -1
  34. package/dist/components/_util/types.js.map +1 -1
  35. package/dist/components/_util/typescript.js.map +1 -1
  36. package/dist/components/_util/vue/global-node.js.map +1 -1
  37. package/dist/components/_util/vue/icon.js.map +1 -1
  38. package/dist/components/_util/vue/install.js.map +1 -1
  39. package/dist/components/_util/vue/props/runtime.js.map +1 -1
  40. package/dist/components/_util/vue/refs.js.map +1 -1
  41. package/dist/components/_util/vue/size.js.map +1 -1
  42. package/dist/components/_util/vue/validator.js.map +1 -1
  43. package/dist/components/_util/vue/vnode.js.map +1 -1
  44. package/dist/index.css +1 -1
  45. package/dist/version/version.d.ts +1 -1
  46. package/dist/version/version.js +1 -1
  47. package/dist/version/version.js.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/components/Form/hooks/useForm.d.ts +0 -10
  50. package/dist/components/Form/hooks/useForm.js +0 -82
  51. package/dist/components/Form/hooks/useForm.js.map +0 -1
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
- # Vue 3 + TypeScript + Vite
2
-
3
- This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
4
-
5
- Learn more about the recommended Project Setup and IDE Support in the [Vue Docs TypeScript Guide](https://vuejs.org/guide/typescript/overview.html#project-setup).
1
+ # Vue 3 + TypeScript + Vite
2
+
3
+ This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
4
+
5
+ Learn more about the recommended Project Setup and IDE Support in the [Vue Docs TypeScript Guide](https://vuejs.org/guide/typescript/overview.html#project-setup).
@@ -1,32 +1,33 @@
1
1
  import "lodash-es";
2
- import { defineComponent as r, openBlock as n, createBlock as p, unref as u, withCtx as l, renderSlot as a, computed as m, createElementBlock as s, normalizeStyle as i, createVNode as c } from "vue";
2
+ import { defineComponent as o, openBlock as n, createBlock as s, unref as u, withCtx as l, renderSlot as a, computed as i, createElementBlock as p, normalizeStyle as m, createVNode as c } from "vue";
3
3
  import { withInstall as f } from "../_util/vue/install.js";
4
4
  import { ElButton as _ } from "element-plus";
5
5
  import { S as d } from "../../index-BbsXWo7C.js";
6
- const g = /* @__PURE__ */ r({
6
+ const g = /* @__PURE__ */ o({
7
7
  name: "OButton",
8
8
  __name: "Button",
9
- setup(o) {
10
- return (t, e) => (n(), p(u(_), null, {
9
+ setup(r) {
10
+ return (t, e) => (n(), s(u(_), null, {
11
11
  default: l(() => [
12
12
  a(t.$slots, "default")
13
13
  ]),
14
14
  _: 3
15
15
  }));
16
16
  }
17
- }), B = /* @__PURE__ */ r({
17
+ }), B = /* @__PURE__ */ o({
18
18
  name: "OButtongroup",
19
+ inheritAttrs: !1,
19
20
  __name: "ButtonGroup",
20
21
  props: {
21
22
  gutter: { type: [Boolean, String] },
22
23
  align: { default: "right" }
23
24
  },
24
- setup(o) {
25
- const t = m(() => ({
26
- textAlign: o.align
25
+ setup(r) {
26
+ const t = i(() => ({
27
+ textAlign: r.align
27
28
  }));
28
- return (e, h) => (n(), s("div", {
29
- style: i(t.value)
29
+ return (e, h) => (n(), p("div", {
30
+ style: m(t.value)
30
31
  }, [
31
32
  c(u(d), { gutter: e.gutter }, {
32
33
  default: l(() => [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Button/ButtonGroup/ButtonGroup.vue","../../../src/components/Button/index.ts"],"sourcesContent":["<template>\r\n <div :style=\"style\">\r\n <space :gutter=\"gutter\"> <slot></slot> </space>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, CSSProperties } from 'vue'\r\nimport type { ButtonGroupProps } from './ButtonGroup'\r\nimport Space from '../../Space'\r\n\r\ndefineOptions({ name: 'OButtongroup' })\r\n\r\nconst { gutter, align = 'right' } = defineProps<ButtonGroupProps>()\r\nconst style = computed<CSSProperties>(() => {\r\n return {\r\n textAlign: align\r\n }\r\n})\r\n</script>\r\n","import { withInstall } from '../_util'\r\n\r\nimport Button from './Button.vue'\r\nimport ButtonGroup from './ButtonGroup/ButtonGroup.vue'\r\n\r\nexport default withInstall<typeof Button, { ButtonGroup: typeof ButtonGroup }>(Button, {\r\n ButtonGroup\r\n})\r\n"],"names":["style","computed","__props","index","withInstall","Button","ButtonGroup"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAcM,UAAAA,IAAQC,EAAwB,OAC7B;AAAA,MACL,WAAWC;MAEd;;;;;;;;;;;;ICbcC,IAAAC,EAAgEC,GAAQ;AAAA,EAAA,aACrFC;AACF,CAAC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Button/ButtonGroup/ButtonGroup.vue","../../../src/components/Button/index.ts"],"sourcesContent":["<template>\r\n <div :style=\"style\">\r\n <space :gutter=\"gutter\"> <slot></slot> </space>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, CSSProperties } from 'vue'\r\nimport type { ButtonGroupProps } from './ButtonGroup'\r\nimport Space from '../../Space'\r\n\r\ndefineOptions({ name: 'OButtongroup', inheritAttrs: false })\r\n\r\nconst { gutter, align = 'right' } = defineProps<ButtonGroupProps>()\r\nconst style = computed<CSSProperties>(() => {\r\n return {\r\n textAlign: align,\r\n }\r\n})\r\n</script>\r\n","import { withInstall } from '../_util'\r\n\r\nimport Button from './Button.vue'\r\nimport ButtonGroup from './ButtonGroup/ButtonGroup.vue'\r\n\r\nexport default withInstall<typeof Button, { ButtonGroup: typeof ButtonGroup }>(Button, {\r\n ButtonGroup\r\n})\r\n"],"names":["style","computed","__props","index","withInstall","Button","ButtonGroup"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAcM,UAAAA,IAAQC,EAAwB,OAC7B;AAAA,MACL,WAAWC,EAAA;AAAA,IAAA,EAEd;;;;;;;;;;;;ICbcC,IAAAC,EAAgEC,GAAQ;AAAA,EAAA,aACrFC;AACF,CAAC;"}
@@ -164,7 +164,7 @@ declare const _default: import('vue').DefineComponent<FileInputProps, {}, {}, {}
164
164
  $root: import('vue').ComponentPublicInstance | null;
165
165
  $parent: import('vue').ComponentPublicInstance | null;
166
166
  $host: Element | null;
167
- $emit: ((event: "input", value: string) => void) & ((event: "clear") => void) & ((event: "focus", evt: FocusEvent) => void) & ((event: "update:modelValue", value: string) => void) & ((event: "change", value: string) => void) & ((event: "blur", evt: FocusEvent) => void) & ((event: "compositionend", evt: CompositionEvent) => void) & ((event: "compositionstart", evt: CompositionEvent) => void) & ((event: "compositionupdate", evt: CompositionEvent) => void) & ((event: "keydown", evt: Event | KeyboardEvent) => void) & ((event: "mouseenter", evt: MouseEvent) => void) & ((event: "mouseleave", evt: MouseEvent) => void);
167
+ $emit: ((event: "input", value: string) => void) & ((event: "clear") => void) & ((event: "focus", evt: FocusEvent) => void) & ((event: "update:modelValue", value: string) => void) & ((event: "blur", evt: FocusEvent) => void) & ((event: "change", value: string) => void) & ((event: "compositionend", evt: CompositionEvent) => void) & ((event: "compositionstart", evt: CompositionEvent) => void) & ((event: "compositionupdate", evt: CompositionEvent) => void) & ((event: "keydown", evt: Event | KeyboardEvent) => void) & ((event: "mouseenter", evt: MouseEvent) => void) & ((event: "mouseleave", evt: MouseEvent) => void);
168
168
  $el: any;
169
169
  $options: import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
170
170
  readonly ariaLabel: StringConstructor;
@@ -0,0 +1,15 @@
1
+ declare const _default: {
2
+ OFormString: string;
3
+ OFormSingleselect: string;
4
+ OFormMultiselect: string;
5
+ OFormRadiogroup: string;
6
+ OFormCheckboxgroup: string;
7
+ OFormCheckbox: string;
8
+ OFormSwitch: string;
9
+ OFormTextarea: string;
10
+ OFormPassword: string;
11
+ OFormDate: string;
12
+ OFormFile: string;
13
+ OFormDiy: string;
14
+ };
15
+ export default _default;
@@ -0,0 +1,18 @@
1
+ const r = {
2
+ OFormString: "blur",
3
+ OFormSingleselect: "change",
4
+ OFormMultiselect: "change",
5
+ OFormRadiogroup: "change",
6
+ OFormCheckboxgroup: "change",
7
+ OFormCheckbox: "change",
8
+ OFormSwitch: "change",
9
+ OFormTextarea: "blur",
10
+ OFormPassword: "blur",
11
+ OFormDate: "blur",
12
+ OFormFile: "blur",
13
+ OFormDiy: "blur"
14
+ };
15
+ export {
16
+ r as default
17
+ };
18
+ //# sourceMappingURL=FormItemValidateTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormItemValidateTrigger.js","sources":["../../../../src/components/Form/hooks/FormItemValidateTrigger.ts"],"sourcesContent":["export default {\r\n OFormString: 'blur',\r\n OFormSingleselect: 'change',\r\n OFormMultiselect: 'change',\r\n OFormRadiogroup: 'change',\r\n OFormCheckboxgroup: 'change',\r\n OFormCheckbox: 'change',\r\n OFormSwitch: 'change',\r\n OFormTextarea: 'blur',\r\n OFormPassword: 'blur',\r\n OFormDate: 'blur',\r\n OFormFile: 'blur',\r\n OFormDiy: 'blur',\r\n}\r\n"],"names":["formItemValidateTrigger"],"mappings":"AAAA,MAAeA,IAAA;AAAA,EACb,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,eAAe;AAAA,EACf,eAAe;AAAA,EACf,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AACZ;"}
@@ -0,0 +1,10 @@
1
+ import { CodeItem } from '../../types';
2
+ declare const useFormContext: () => import('..').FormContext | undefined;
3
+ declare const useFormItemSpan: () => import('vue').ComputedRef<number>;
4
+ declare const useFormItemRules: () => import('vue').ComputedRef<import('element-plus').FormItemRule[]>;
5
+ declare const useFormItemDisabled: () => import('vue').ComputedRef<boolean>;
6
+ declare const useFormItemCode: () => import('vue').ComputedRef<CodeItem[]>;
7
+ declare const useFormItemStringModel: () => import('vue').WritableComputedRef<string, string>;
8
+ declare const useFormItemMultiModel: () => import('vue').WritableComputedRef<string[] | undefined, string[] | undefined>;
9
+ declare const useFormItemBooleanModel: () => import('vue').WritableComputedRef<boolean, boolean>;
10
+ export { useFormContext, useFormItemSpan, useFormItemRules, useFormItemDisabled, useFormItemCode, useFormItemStringModel, useFormItemMultiModel, useFormItemBooleanModel, };
@@ -0,0 +1,83 @@
1
+ import { inject as C, getCurrentInstance as s, computed as n } from "vue";
2
+ import { formContextKey as M } from "../Form.js";
3
+ import V from "../../../Throne/index.js";
4
+ import { castArray as p, isString as x, isArray as I } from "lodash-es";
5
+ import f from "../../../error/OrionError.js";
6
+ import F from "./FormItemValidateTrigger.js";
7
+ const u = () => C(M), S = () => {
8
+ const e = u(), { props: r } = s();
9
+ return n(() => r.span ? r.span : e.itemSpan);
10
+ }, O = () => {
11
+ const e = u(), { props: r, type: o } = s(), { name: t, label: l, required: m } = r;
12
+ let a = F[o.name];
13
+ return a || (a = "change"), n(() => {
14
+ const c = [];
15
+ let i = !0;
16
+ return m && (r.rules && (c.push(...p(r.rules)), i = !c.some((d) => Object.keys(d).includes("required"))), e.rules && e.rules[t] && (i = !p(e.rules[t]).some((g) => Object.keys(g).includes("required")))), i && c.push({
17
+ required: !0,
18
+ message: `必填项[${l || t}]不能为空`,
19
+ trigger: a
20
+ }), c;
21
+ });
22
+ }, R = () => {
23
+ const e = u(), { props: r } = s();
24
+ return n(() => e.disabled || r.disabled);
25
+ }, k = () => {
26
+ let e;
27
+ const { props: r } = s(), { code: o } = r;
28
+ if (o)
29
+ if (x(o))
30
+ e = V.getCode(o).value;
31
+ else if (I(o))
32
+ e = o;
33
+ else
34
+ throw new f("code类型错误");
35
+ else throw new f("code为空");
36
+ return n(() => e);
37
+ }, w = () => {
38
+ const e = u(), { props: r } = s(), { name: o } = r;
39
+ return n({
40
+ get: () => {
41
+ const t = e.modelValue[o];
42
+ return t || "";
43
+ },
44
+ set: (t) => {
45
+ t ? e.updateModelValue(o, t) : e.updateModelValue(o, "");
46
+ }
47
+ });
48
+ }, A = () => {
49
+ const e = u(), { props: r } = s(), { name: o } = r;
50
+ return n({
51
+ get: () => {
52
+ const t = e.modelValue[o];
53
+ if (t)
54
+ return t.split(",");
55
+ },
56
+ set: (t) => {
57
+ t ? e.updateModelValue(o, t.join(",")) : e.updateModelValue(o, "");
58
+ }
59
+ });
60
+ }, D = () => {
61
+ const e = u(), { props: r } = s(), { name: o } = r;
62
+ return n({
63
+ get: () => {
64
+ const t = e.modelValue[o];
65
+ return t ? t == "1" : !1;
66
+ },
67
+ set: (t) => {
68
+ const l = e.modelValue[o], m = t ? "1" : "0";
69
+ (l || t) && e.updateModelValue(o, m);
70
+ }
71
+ });
72
+ };
73
+ export {
74
+ u as useFormContext,
75
+ D as useFormItemBooleanModel,
76
+ k as useFormItemCode,
77
+ R as useFormItemDisabled,
78
+ A as useFormItemMultiModel,
79
+ O as useFormItemRules,
80
+ S as useFormItemSpan,
81
+ w as useFormItemStringModel
82
+ };
83
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Form/hooks/index.ts"],"sourcesContent":["import { inject, getCurrentInstance, computed } from 'vue'\r\nimport { formContextKey, FormItemRule } from '../Form'\r\nimport Throne from '../../../Throne'\r\nimport { CodeItem } from '../../types'\r\nimport { castArray, isArray, isString } from 'lodash-es'\r\nimport OrionError from '../../../error/OrionError'\r\nimport formItemValidateTrigger from './FormItemValidateTrigger'\r\n\r\nconst useFormContext = () => {\r\n return inject(formContextKey)\r\n}\r\n\r\nconst useFormItemSpan = () => {\r\n const formContext = useFormContext()!\r\n const { props } = getCurrentInstance()!\r\n\r\n return computed(() => (props.span ? (props.span as number) : formContext.itemSpan))\r\n}\r\n\r\nconst useFormItemRules = () => {\r\n const formContext = useFormContext()!\r\n const { props, type } = getCurrentInstance()!\r\n const { name, label, required } = props\r\n let trigger = formItemValidateTrigger[type.name!]\r\n if (!trigger) {\r\n trigger = 'change'\r\n }\r\n\r\n return computed(() => {\r\n const rules: FormItemRule[] = []\r\n let flag = true\r\n\r\n if (required) {\r\n if (props.rules) {\r\n rules.push(...castArray(props.rules))\r\n flag = !rules.some((rule) => Object.keys(rule).includes('required'))\r\n }\r\n if (formContext.rules && formContext.rules[name as string]) {\r\n const formRules = castArray(formContext.rules[name as string])\r\n flag = !formRules.some((rule) => Object.keys(rule).includes('required'))\r\n }\r\n }\r\n\r\n if (flag) {\r\n rules.push({\r\n required: true,\r\n message: `必填项[${label ? label : name}]不能为空`,\r\n trigger: trigger,\r\n })\r\n }\r\n\r\n return rules\r\n })\r\n}\r\n\r\nconst useFormItemDisabled = () => {\r\n const formContext = useFormContext()!\r\n const { props } = getCurrentInstance()!\r\n return computed(() => formContext.disabled || (props.disabled as boolean))\r\n}\r\n\r\nconst useFormItemCode = () => {\r\n let codeData: Array<CodeItem>\r\n const { props } = getCurrentInstance()!\r\n const { code } = props\r\n if (!code) {\r\n throw new OrionError('code为空')\r\n } else if (isString(code)) {\r\n codeData = Throne.getCode(code).value\r\n } else if (isArray<CodeItem>(code)) {\r\n codeData = code\r\n } else {\r\n throw new OrionError('code类型错误')\r\n }\r\n return computed(() => codeData)\r\n}\r\n\r\nconst useFormItemStringModel = () => {\r\n const formContext = useFormContext()!\r\n const { props } = getCurrentInstance()!\r\n const { name } = props\r\n\r\n return computed<string>({\r\n get: () => {\r\n const value = formContext.modelValue[name as string]\r\n if (!value) {\r\n return ''\r\n }\r\n return value as string\r\n },\r\n set: (newValue) => {\r\n if (!newValue) {\r\n formContext.updateModelValue(name as string, '')\r\n } else {\r\n formContext.updateModelValue(name as string, newValue)\r\n }\r\n },\r\n })\r\n}\r\n\r\nconst useFormItemMultiModel = () => {\r\n const formContext = useFormContext()!\r\n const { props } = getCurrentInstance()!\r\n const { name } = props\r\n\r\n return computed<string[] | undefined>({\r\n get: () => {\r\n const value = formContext.modelValue[name as string]\r\n if (!value) {\r\n return undefined\r\n }\r\n return (value as string).split(',')\r\n },\r\n set: (newValue) => {\r\n if (!newValue) {\r\n formContext.updateModelValue(name as string, '')\r\n } else {\r\n formContext.updateModelValue(name as string, newValue.join(','))\r\n }\r\n },\r\n })\r\n}\r\n\r\nconst useFormItemBooleanModel = () => {\r\n const formContext = useFormContext()!\r\n const { props } = getCurrentInstance()!\r\n const { name } = props\r\n\r\n return computed<boolean>({\r\n get: () => {\r\n const value = formContext.modelValue[name as string]\r\n if (!value) {\r\n return false\r\n }\r\n return (value as string) == '1'\r\n },\r\n set: (_newValue) => {\r\n const oldValue = formContext.modelValue[name as string]\r\n const newValue = _newValue ? '1' : '0'\r\n if (oldValue) {\r\n formContext.updateModelValue(name as string, newValue)\r\n } else {\r\n if (_newValue) {\r\n formContext.updateModelValue(name as string, newValue)\r\n }\r\n }\r\n },\r\n })\r\n}\r\n\r\nexport {\r\n useFormContext,\r\n useFormItemSpan,\r\n useFormItemRules,\r\n useFormItemDisabled,\r\n useFormItemCode,\r\n useFormItemStringModel,\r\n useFormItemMultiModel,\r\n useFormItemBooleanModel,\r\n}\r\n"],"names":["useFormContext","inject","formContextKey","useFormItemSpan","formContext","props","getCurrentInstance","computed","useFormItemRules","type","name","label","required","trigger","formItemValidateTrigger","rules","flag","castArray","rule","useFormItemDisabled","useFormItemCode","codeData","code","isString","Throne","isArray","OrionError","useFormItemStringModel","value","newValue","useFormItemMultiModel","useFormItemBooleanModel","_newValue","oldValue"],"mappings":"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"}