@aspire-ui/element-component-pro 1.0.15 → 1.0.16
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/ProForm/ApiSelect.vue.d.ts +1 -0
- package/dist/ProForm/ProForm.vue.d.ts +2 -5
- package/dist/ProForm/useForm.d.ts +3 -0
- package/dist/element-component-pro.es.js +559 -540
- package/dist/element-component-pro.es.js.map +1 -1
- package/dist/element-component-pro.umd.js +2 -2
- package/dist/element-component-pro.umd.js.map +1 -1
- package/dist/index.d.ts +2 -8
- package/dist/style.css +1 -1
- package/dist/types/index.d.ts +13 -9
- package/package.json +1 -1
- package/src/ProForm/ApiSelect.vue +5 -0
- package/src/ProForm/ProForm.vue +8 -5
- package/src/ProForm/useForm.ts +21 -0
- package/src/types/index.ts +15 -3
package/dist/index.d.ts
CHANGED
|
@@ -1714,10 +1714,7 @@ declare const _default: {
|
|
|
1714
1714
|
removeSchemaByField: (field: string | string[]) => Promise<void>;
|
|
1715
1715
|
setProps: (props: Partial<import('./types').ProFormProps>) => Promise<void>;
|
|
1716
1716
|
getComponentInstance: (field: string) => import('vue').ComponentPublicInstance | null;
|
|
1717
|
-
getFieldOptions: (
|
|
1718
|
-
label: string;
|
|
1719
|
-
value: unknown;
|
|
1720
|
-
}>;
|
|
1717
|
+
getFieldOptions: import('./types').GetFieldOptions;
|
|
1721
1718
|
isFieldLoading: (field: string) => boolean;
|
|
1722
1719
|
}> & import('vue/types/v3-component-options').ExtractComputedReturns<{}> & import('vue').ComponentCustomProperties & Readonly<import('vue').ExtractPropTypes<{
|
|
1723
1720
|
disabled: {
|
|
@@ -1966,10 +1963,7 @@ declare const _default: {
|
|
|
1966
1963
|
removeSchemaByField: (field: string | string[]) => Promise<void>;
|
|
1967
1964
|
setProps: (props: Partial<import('./types').ProFormProps>) => Promise<void>;
|
|
1968
1965
|
getComponentInstance: (field: string) => import('vue').ComponentPublicInstance | null;
|
|
1969
|
-
getFieldOptions: (
|
|
1970
|
-
label: string;
|
|
1971
|
-
value: unknown;
|
|
1972
|
-
}>;
|
|
1966
|
+
getFieldOptions: import('./types').GetFieldOptions;
|
|
1973
1967
|
isFieldLoading: (field: string) => boolean;
|
|
1974
1968
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
1975
1969
|
submit: (values: Record<string, unknown>) => void;
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.ecp-pro-table[data-v-f3d27813]{padding:16px;background:#fff;width:100%;box-sizing:border-box}.ecp-pro-table[data-v-f3d27813] .el-table{width:100%!important}.ecp-pro-table__header[data-v-f3d27813]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.ecp-pro-table__title-wrapper[data-v-f3d27813]{display:flex;align-items:center;gap:4px}.ecp-pro-table__title[data-v-f3d27813]{font-size:16px;font-weight:600}.ecp-pro-table__help[data-v-f3d27813]{color:#909399;cursor:help}.ecp-pro-table__toolbar[data-v-f3d27813]{display:flex;align-items:center;gap:8px}.ecp-pro-table__body[data-v-f3d27813]{width:100%}.ecp-pro-table__pagination[data-v-f3d27813]{margin-top:16px;display:flex;justify-content:flex-end}.ecp-pro-table__col-help[data-v-f3d27813]{margin-left:4px;color:#909399;cursor:help}.ecp-table-action[data-v-45a58e7c],.ecp-table-action__item[data-v-45a58e7c]{display:inline-flex;align-items:center;gap:4px}.ecp-table-action__icon[data-v-45a58e7c]{margin-right:4px}.ecp-table-action__more[data-v-45a58e7c]{display:inline-flex;align-items:center}.ecp-table-action__dropdown-item[data-v-45a58e7c]{display:inline-flex;align-items:center;gap:4px}.ecp-tree-select[data-v-f30bba11]{position:relative;width:100%}.ecp-tree-select__filter-inner[data-v-f30bba11]{margin-bottom:8px}.ecp-tree-select__dropdown[data-v-f30bba11]{position:absolute;top:100%;left:0;right:0;max-height:280px;overflow:auto;background:#fff;border:1px solid #dcdfe6;border-radius:4px;margin-top:4px;z-index:1000;padding:8px}.ecp-tree-select__loading[data-v-f30bba11]{padding:24px;text-align:center;color:#909399;font-size:14px}.ecp-pro-form-item__colon[data-v-48d7960b]{margin-right:2px}.ecp-pro-form-item__help-icon[data-v-48d7960b]{margin-left:4px;color:#909399;cursor:help;font-size:14px}.ecp-pro-form-item__help-icon[data-v-48d7960b]:hover{color:#409eff}.ecp-pro-form-item__help-item[data-v-48d7960b]{margin-bottom:4px}.ecp-pro-form-item__help-item[data-v-48d7960b]:last-child{margin-bottom:0}.ecp-form-actions[data-v-489c88d2]{text-align:right}.ecp-form-actions__advance[data-v-489c88d2]{margin-right:8px}.el-icon-d-arrow-left.up[data-v-489c88d2]{transform:rotate(90deg)}.el-icon-d-arrow-left.down[data-v-489c88d2]{transform:rotate(-90deg)}.ecp-pro-form[data-v-
|
|
1
|
+
.ecp-pro-table[data-v-f3d27813]{padding:16px;background:#fff;width:100%;box-sizing:border-box}.ecp-pro-table[data-v-f3d27813] .el-table{width:100%!important}.ecp-pro-table__header[data-v-f3d27813]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.ecp-pro-table__title-wrapper[data-v-f3d27813]{display:flex;align-items:center;gap:4px}.ecp-pro-table__title[data-v-f3d27813]{font-size:16px;font-weight:600}.ecp-pro-table__help[data-v-f3d27813]{color:#909399;cursor:help}.ecp-pro-table__toolbar[data-v-f3d27813]{display:flex;align-items:center;gap:8px}.ecp-pro-table__body[data-v-f3d27813]{width:100%}.ecp-pro-table__pagination[data-v-f3d27813]{margin-top:16px;display:flex;justify-content:flex-end}.ecp-pro-table__col-help[data-v-f3d27813]{margin-left:4px;color:#909399;cursor:help}.ecp-table-action[data-v-45a58e7c],.ecp-table-action__item[data-v-45a58e7c]{display:inline-flex;align-items:center;gap:4px}.ecp-table-action__icon[data-v-45a58e7c]{margin-right:4px}.ecp-table-action__more[data-v-45a58e7c]{display:inline-flex;align-items:center}.ecp-table-action__dropdown-item[data-v-45a58e7c]{display:inline-flex;align-items:center;gap:4px}.ecp-tree-select[data-v-f30bba11]{position:relative;width:100%}.ecp-tree-select__filter-inner[data-v-f30bba11]{margin-bottom:8px}.ecp-tree-select__dropdown[data-v-f30bba11]{position:absolute;top:100%;left:0;right:0;max-height:280px;overflow:auto;background:#fff;border:1px solid #dcdfe6;border-radius:4px;margin-top:4px;z-index:1000;padding:8px}.ecp-tree-select__loading[data-v-f30bba11]{padding:24px;text-align:center;color:#909399;font-size:14px}.ecp-pro-form-item__colon[data-v-48d7960b]{margin-right:2px}.ecp-pro-form-item__help-icon[data-v-48d7960b]{margin-left:4px;color:#909399;cursor:help;font-size:14px}.ecp-pro-form-item__help-icon[data-v-48d7960b]:hover{color:#409eff}.ecp-pro-form-item__help-item[data-v-48d7960b]{margin-bottom:4px}.ecp-pro-form-item__help-item[data-v-48d7960b]:last-child{margin-bottom:0}.ecp-form-actions[data-v-489c88d2]{text-align:right}.ecp-form-actions__advance[data-v-489c88d2]{margin-right:8px}.el-icon-d-arrow-left.up[data-v-489c88d2]{transform:rotate(90deg)}.el-icon-d-arrow-left.down[data-v-489c88d2]{transform:rotate(-90deg)}.ecp-pro-form[data-v-80bac8be]{padding:16px;position:relative}.ecp-pro-form__advance[data-v-80bac8be]{margin-bottom:16px}.ecp-pro-form_col[data-v-80bac8be]{position:relative;float:right}.el-icon-d-arrow-left.up[data-v-80bac8be]{transform:rotate(90deg)}.el-icon-d-arrow-left.down[data-v-80bac8be]{transform:rotate(-90deg)}.ecp-form-actions__advance[data-v-80bac8be]{position:absolute;bottom:0;left:50%;transform:translate(-50%,-50%)}.ecp-pro-descriptions[data-v-656036f6]{width:100%;box-sizing:border-box}.ecp-pro-descriptions__header[data-v-656036f6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:12px}.ecp-pro-descriptions__title-wrap[data-v-656036f6]{display:flex;align-items:center;gap:6px}.ecp-pro-descriptions__title[data-v-656036f6]{font-size:16px;font-weight:600;color:#303133}.ecp-pro-descriptions__help[data-v-656036f6],.ecp-pro-descriptions__toggle[data-v-656036f6]{color:#909399}.ecp-pro-descriptions__toggle .el-icon-arrow-down[data-v-656036f6]{margin-left:4px;transition:transform .2s ease}.ecp-pro-descriptions__toggle .el-icon-arrow-down.is-expanded[data-v-656036f6]{transform:rotate(180deg)}.ecp-pro-descriptions__body[data-v-656036f6]{display:grid;border-top:1px solid #ebeef5;border-left:1px solid #ebeef5;overflow:hidden}.ecp-pro-descriptions__body.is-collapsed[data-v-656036f6]{overflow:hidden}.ecp-pro-descriptions__body[data-v-656036f6]:not(.is-bordered){border-top:0;border-left:0;gap:12px 16px}.ecp-pro-descriptions__item[data-v-656036f6]{display:flex;min-width:0;border-right:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.ecp-pro-descriptions__body:not(.is-bordered) .ecp-pro-descriptions__item[data-v-656036f6]{border-right:0;border-bottom:0}.ecp-pro-descriptions__label[data-v-656036f6],.ecp-pro-descriptions__content[data-v-656036f6]{min-width:0;box-sizing:border-box;word-break:break-word}.ecp-pro-descriptions__label[data-v-656036f6]{flex:0 0 120px;padding:12px 16px;color:#606266;background:#fafafa}.ecp-pro-descriptions__content[data-v-656036f6]{flex:1;padding:12px 16px;color:#303133;background:#fff}.ecp-pro-descriptions__body:not(.is-bordered) .ecp-pro-descriptions__label[data-v-656036f6]{flex-basis:auto;padding:0;margin-right:8px;background:transparent;font-weight:500}.ecp-pro-descriptions__body:not(.is-bordered) .ecp-pro-descriptions__content[data-v-656036f6]{padding:0;background:transparent}.ecp-pro-descriptions__body.is-small .ecp-pro-descriptions__label[data-v-656036f6],.ecp-pro-descriptions__body.is-small .ecp-pro-descriptions__content[data-v-656036f6]{padding-top:8px;padding-bottom:8px;font-size:13px}@media (max-width: 767px){.ecp-pro-descriptions__item[data-v-656036f6]{flex-direction:column}.ecp-pro-descriptions__label[data-v-656036f6]{flex-basis:auto}}.ecp-pro-table-form__form[data-v-44aa7592] .el-form-item{margin-bottom:0}.ecp-pro-table-form__cell-item[data-v-44aa7592]{width:100%}.ecp-pro-table-form__cell-item[data-v-44aa7592] .el-form-item__content{margin-left:0!important;line-height:normal}.ecp-pro-table-form__fixed-label[data-v-44aa7592]{color:#303133;font-size:14px}.ecp-pro-table-form__req[data-v-44aa7592]{color:#f56c6c;margin-right:2px}.ecp-pro-table-form__th-text[data-v-44aa7592]{font-weight:500;color:#606266}.ecp-pro-table-form__action-title[data-v-44aa7592]{margin-right:8px;font-size:13px;color:#606266}.ecp-pro-table-form__add-btn[data-v-44aa7592]{padding:0;font-size:14px}.ecp-pro-table-form__del-btn[data-v-44aa7592]{padding:0;color:#909399}.ecp-pro-table-form__del-btn[data-v-44aa7592]:not(:disabled){color:#409eff}.ecp-pro-table-form .ecp-pro-table-form__header-cell{background:#f5f7fa!important}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -28,12 +28,19 @@ export interface ScrollToFieldOptions {
|
|
|
28
28
|
/** 行内对齐 */
|
|
29
29
|
inline?: ScrollLogicalPosition;
|
|
30
30
|
}
|
|
31
|
+
export interface ProFormFieldOption {
|
|
32
|
+
label: string;
|
|
33
|
+
value: unknown;
|
|
34
|
+
}
|
|
35
|
+
export interface GetFieldOptions {
|
|
36
|
+
(field: string): ProFormFieldOption[];
|
|
37
|
+
(field: string, raw: false): ProFormFieldOption[];
|
|
38
|
+
(field: string, raw: true): unknown[];
|
|
39
|
+
}
|
|
31
40
|
/** ApiSelect 暴露的实例类型 */
|
|
32
41
|
export interface ApiSelectInstance {
|
|
33
|
-
options:
|
|
34
|
-
|
|
35
|
-
value: unknown;
|
|
36
|
-
}>;
|
|
42
|
+
options: ProFormFieldOption[];
|
|
43
|
+
rawOptions: unknown[];
|
|
37
44
|
loading: boolean;
|
|
38
45
|
fetchOptions: () => Promise<void>;
|
|
39
46
|
}
|
|
@@ -53,11 +60,8 @@ export interface FormActionType {
|
|
|
53
60
|
setProps: (props: Partial<ProFormProps>) => Promise<void>;
|
|
54
61
|
/** 获取指定字段的组件实例 */
|
|
55
62
|
getComponentInstance: (field: string) => ComponentPublicInstance | null;
|
|
56
|
-
/** 获取 api-select 字段的 options */
|
|
57
|
-
getFieldOptions:
|
|
58
|
-
label: string;
|
|
59
|
-
value: unknown;
|
|
60
|
-
}>;
|
|
63
|
+
/** 获取 api-select 字段的 options,raw=true 时返回接口原始列表数据 */
|
|
64
|
+
getFieldOptions: GetFieldOptions;
|
|
61
65
|
/** 获取 api-select 字段的加载状态 */
|
|
62
66
|
isFieldLoading: (field: string) => boolean;
|
|
63
67
|
}
|
package/package.json
CHANGED
|
@@ -34,6 +34,7 @@ defineEmits<{ (e: 'input', value: unknown): void; (e: 'change', value: unknown):
|
|
|
34
34
|
|
|
35
35
|
const loading = ref(false)
|
|
36
36
|
const options = ref<Array<{ label: string; value: unknown }>>([])
|
|
37
|
+
const rawOptions = ref<unknown[]>([])
|
|
37
38
|
const cachedParams = ref<string>('')
|
|
38
39
|
|
|
39
40
|
const onVisibleChange = (visible: boolean) => {
|
|
@@ -55,6 +56,7 @@ const fetchOptions = async () => {
|
|
|
55
56
|
: ((res as Record<string, unknown>)?.list as unknown[]) ??
|
|
56
57
|
((res as Record<string, unknown>)?.data as unknown[]) ??
|
|
57
58
|
[]
|
|
59
|
+
rawOptions.value = raw
|
|
58
60
|
const labelKey = props.labelField ?? 'label'
|
|
59
61
|
const valueKey = props.valueField ?? 'value'
|
|
60
62
|
options.value = raw.map((item: unknown) => {
|
|
@@ -72,6 +74,7 @@ const fetchOptions = async () => {
|
|
|
72
74
|
|
|
73
75
|
defineExpose({
|
|
74
76
|
options,
|
|
77
|
+
rawOptions,
|
|
75
78
|
loading,
|
|
76
79
|
fetchOptions,
|
|
77
80
|
})
|
|
@@ -84,12 +87,14 @@ watch(() => props.api, () => {
|
|
|
84
87
|
fetchOptions()
|
|
85
88
|
} else {
|
|
86
89
|
options.value = []
|
|
90
|
+
rawOptions.value = []
|
|
87
91
|
}
|
|
88
92
|
}, { deep: true }
|
|
89
93
|
)
|
|
90
94
|
watch(() => props.params, () => {
|
|
91
95
|
if (props.lazy) {
|
|
92
96
|
options.value = []
|
|
97
|
+
rawOptions.value = []
|
|
93
98
|
} else {
|
|
94
99
|
fetchOptions()
|
|
95
100
|
}
|
package/src/ProForm/ProForm.vue
CHANGED
|
@@ -422,15 +422,18 @@ const getComponentInstance = (field: string): ComponentPublicInstance | null =>
|
|
|
422
422
|
return fieldInstanceMap.value.get(field) ?? null
|
|
423
423
|
}
|
|
424
424
|
|
|
425
|
-
/** 获取 api-select 字段的 options */
|
|
426
|
-
|
|
425
|
+
/** 获取 api-select 字段的 options,raw=true 时返回接口原始数据 */
|
|
426
|
+
function getFieldOptions(field: string): Array<{ label: string; value: unknown }>
|
|
427
|
+
function getFieldOptions(field: string, raw: false): Array<{ label: string; value: unknown }>
|
|
428
|
+
function getFieldOptions(field: string, raw: true): unknown[]
|
|
429
|
+
function getFieldOptions(field: string, raw = false): Array<{ label: string; value: unknown }> | unknown[] {
|
|
427
430
|
const instance = fieldInstanceMap.value.get(field)
|
|
428
431
|
if (!instance) return []
|
|
429
432
|
const apiSelectInstance = instance as unknown as ApiSelectInstance
|
|
430
|
-
if (
|
|
431
|
-
return apiSelectInstance
|
|
433
|
+
if (raw) {
|
|
434
|
+
return apiSelectInstance?.rawOptions ?? []
|
|
432
435
|
}
|
|
433
|
-
return []
|
|
436
|
+
return apiSelectInstance?.options ?? []
|
|
434
437
|
}
|
|
435
438
|
|
|
436
439
|
/** 获取 api-select 字段的加载状态 */
|
package/src/ProForm/useForm.ts
CHANGED
|
@@ -24,6 +24,9 @@ export interface UseFormReturn {
|
|
|
24
24
|
appendSchemaByField: (schema: ProFormSchema, prefixField?: string, first?: boolean) => Promise<void>
|
|
25
25
|
removeSchemaByField: (field: string | string[]) => Promise<void>
|
|
26
26
|
setProps: (props: Partial<ProFormProps>) => Promise<void>
|
|
27
|
+
getComponentInstance: FormActionType['getComponentInstance']
|
|
28
|
+
getFieldOptions: FormActionType['getFieldOptions']
|
|
29
|
+
isFieldLoading: FormActionType['isFieldLoading']
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
export function useForm(props?: UseFormPropsReactive): [UseFormReturn['register'], Omit<UseFormReturn, 'register'>] {
|
|
@@ -92,6 +95,21 @@ export function useForm(props?: UseFormPropsReactive): [UseFormReturn['register'
|
|
|
92
95
|
await formAction.value?.setProps(formProps)
|
|
93
96
|
}
|
|
94
97
|
|
|
98
|
+
const getComponentInstance: FormActionType['getComponentInstance'] = (field) =>
|
|
99
|
+
formAction.value?.getComponentInstance(field) ?? null
|
|
100
|
+
|
|
101
|
+
function getFieldOptions(field: string): Array<{ label: string; value: unknown }>
|
|
102
|
+
function getFieldOptions(field: string, raw: false): Array<{ label: string; value: unknown }>
|
|
103
|
+
function getFieldOptions(field: string, raw: true): unknown[]
|
|
104
|
+
function getFieldOptions(field: string, raw = false): Array<{ label: string; value: unknown }> | unknown[] {
|
|
105
|
+
if (!formAction.value) return []
|
|
106
|
+
if (raw) return formAction.value.getFieldOptions(field, true)
|
|
107
|
+
return formAction.value.getFieldOptions(field)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const isFieldLoading: FormActionType['isFieldLoading'] = (field) =>
|
|
111
|
+
formAction.value?.isFieldLoading(field) ?? false
|
|
112
|
+
|
|
95
113
|
const result: UseFormReturn = {
|
|
96
114
|
register,
|
|
97
115
|
formAction,
|
|
@@ -107,6 +125,9 @@ export function useForm(props?: UseFormPropsReactive): [UseFormReturn['register'
|
|
|
107
125
|
appendSchemaByField,
|
|
108
126
|
removeSchemaByField,
|
|
109
127
|
setProps,
|
|
128
|
+
getComponentInstance,
|
|
129
|
+
getFieldOptions,
|
|
130
|
+
isFieldLoading,
|
|
110
131
|
}
|
|
111
132
|
|
|
112
133
|
return [register, result]
|
package/src/types/index.ts
CHANGED
|
@@ -32,9 +32,21 @@ export interface ScrollToFieldOptions {
|
|
|
32
32
|
inline?: ScrollLogicalPosition
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
export interface ProFormFieldOption {
|
|
36
|
+
label: string
|
|
37
|
+
value: unknown
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface GetFieldOptions {
|
|
41
|
+
(field: string): ProFormFieldOption[]
|
|
42
|
+
(field: string, raw: false): ProFormFieldOption[]
|
|
43
|
+
(field: string, raw: true): unknown[]
|
|
44
|
+
}
|
|
45
|
+
|
|
35
46
|
/** ApiSelect 暴露的实例类型 */
|
|
36
47
|
export interface ApiSelectInstance {
|
|
37
|
-
options:
|
|
48
|
+
options: ProFormFieldOption[]
|
|
49
|
+
rawOptions: unknown[]
|
|
38
50
|
loading: boolean
|
|
39
51
|
fetchOptions: () => Promise<void>
|
|
40
52
|
}
|
|
@@ -55,8 +67,8 @@ export interface FormActionType {
|
|
|
55
67
|
setProps: (props: Partial<ProFormProps>) => Promise<void>
|
|
56
68
|
/** 获取指定字段的组件实例 */
|
|
57
69
|
getComponentInstance: (field: string) => ComponentPublicInstance | null
|
|
58
|
-
/** 获取 api-select 字段的 options */
|
|
59
|
-
getFieldOptions:
|
|
70
|
+
/** 获取 api-select 字段的 options,raw=true 时返回接口原始列表数据 */
|
|
71
|
+
getFieldOptions: GetFieldOptions
|
|
60
72
|
/** 获取 api-select 字段的加载状态 */
|
|
61
73
|
isFieldLoading: (field: string) => boolean
|
|
62
74
|
}
|