gi-component 0.0.49 → 0.0.50
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/components/button/index.d.ts +2 -1
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/src/{button.vue.d.ts → button.d.ts} +5 -3
- package/dist/components/button/src/button.d.ts.map +1 -0
- package/dist/components/button/src/type.d.ts +1 -0
- package/dist/components/button/src/type.d.ts.map +1 -0
- package/dist/components/card/index.d.ts +2 -1
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/card/src/card.d.ts +37 -0
- package/dist/components/card/src/card.d.ts.map +1 -0
- package/dist/components/card/src/type.d.ts +1 -0
- package/dist/components/card/src/type.d.ts.map +1 -0
- package/dist/components/descriptions/index.d.ts +2 -2
- package/dist/components/descriptions/index.d.ts.map +1 -0
- package/dist/components/descriptions/src/descriptions.d.ts +25 -0
- package/dist/components/descriptions/src/descriptions.d.ts.map +1 -0
- package/dist/components/descriptions/src/type.d.ts +25 -11
- package/dist/components/descriptions/src/type.d.ts.map +1 -0
- package/dist/components/dialog/index.d.ts +2 -1
- package/dist/components/dialog/index.d.ts.map +1 -0
- package/dist/components/dialog/src/dialog-content.d.ts +11 -0
- package/dist/components/dialog/src/dialog-content.d.ts.map +1 -0
- package/dist/components/dialog/src/dialog.d.ts +16 -0
- package/dist/components/dialog/src/dialog.d.ts.map +1 -0
- package/dist/components/dialog/src/type.d.ts +1 -0
- package/dist/components/dialog/src/type.d.ts.map +1 -0
- package/dist/components/dot/index.d.ts +2 -1
- package/dist/components/dot/index.d.ts.map +1 -0
- package/dist/components/dot/src/dot.d.ts +9 -0
- package/dist/components/dot/src/dot.d.ts.map +1 -0
- package/dist/components/dot/src/type.d.ts +1 -0
- package/dist/components/dot/src/type.d.ts.map +1 -0
- package/dist/components/drawer/index.d.ts +2 -1
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/drawer/src/drawer.d.ts +1 -0
- package/dist/components/drawer/src/drawer.d.ts.map +1 -0
- package/dist/components/drawer/src/type.d.ts +1 -0
- package/dist/components/drawer/src/type.d.ts.map +1 -0
- package/dist/components/edit-table/index.d.ts +2 -1
- package/dist/components/edit-table/index.d.ts.map +1 -0
- package/dist/components/edit-table/src/type.d.ts +1 -0
- package/dist/components/edit-table/src/type.d.ts.map +1 -0
- package/dist/components/flex/index.d.ts +2 -1
- package/dist/components/flex/index.d.ts.map +1 -0
- package/dist/components/flex/src/{flex.vue.d.ts → flex.d.ts} +4 -2
- package/dist/components/flex/src/flex.d.ts.map +1 -0
- package/dist/components/flex/src/type.d.ts +1 -0
- package/dist/components/flex/src/type.d.ts.map +1 -0
- package/dist/components/form/index.d.ts +2 -1
- package/dist/components/form/index.d.ts.map +1 -0
- package/dist/components/form/src/type.d.ts +1 -0
- package/dist/components/form/src/type.d.ts.map +1 -0
- package/dist/components/grid/index.d.ts +3 -2
- package/dist/components/grid/index.d.ts.map +1 -0
- package/dist/components/grid/src/context.d.ts +1 -0
- package/dist/components/grid/src/context.d.ts.map +1 -0
- package/dist/components/grid/src/{grid-item.vue.d.ts → grid-item.d.ts} +9 -8
- package/dist/components/grid/src/grid-item.d.ts.map +1 -0
- package/dist/components/grid/src/{grid.vue.d.ts → grid.d.ts} +7 -6
- package/dist/components/grid/src/grid.d.ts.map +1 -0
- package/dist/components/grid/src/hook/use-index.d.ts +3 -2
- package/dist/components/grid/src/hook/use-index.d.ts.map +1 -0
- package/dist/components/grid/src/hook/use-responsive-state.d.ts +3 -2
- package/dist/components/grid/src/hook/use-responsive-state.d.ts.map +1 -0
- package/dist/components/grid/src/hook/use-responsive-value.d.ts +3 -2
- package/dist/components/grid/src/hook/use-responsive-value.d.ts.map +1 -0
- package/dist/components/grid/src/interface.d.ts +1 -0
- package/dist/components/grid/src/interface.d.ts.map +1 -0
- package/dist/components/grid/src/type.d.ts +1 -0
- package/dist/components/grid/src/type.d.ts.map +1 -0
- package/dist/components/grid/src/utils/global-config.d.ts +1 -0
- package/dist/components/grid/src/utils/global-config.d.ts.map +1 -0
- package/dist/components/grid/src/utils/index.d.ts +1 -0
- package/dist/components/grid/src/utils/index.d.ts.map +1 -0
- package/dist/components/grid/src/utils/is.d.ts +1 -0
- package/dist/components/grid/src/utils/is.d.ts.map +1 -0
- package/dist/components/grid/src/utils/responsive-observe.d.ts +1 -0
- package/dist/components/grid/src/utils/responsive-observe.d.ts.map +1 -0
- package/dist/components/input-group/index.d.ts +2 -1
- package/dist/components/input-group/index.d.ts.map +1 -0
- package/dist/components/input-group/src/{input-group.vue.d.ts → input-group.d.ts} +3 -1
- package/dist/components/input-group/src/input-group.d.ts.map +1 -0
- package/dist/components/input-group/src/type.d.ts +1 -0
- package/dist/components/input-group/src/type.d.ts.map +1 -0
- package/dist/components/input-search/index.d.ts +2 -1
- package/dist/components/input-search/index.d.ts.map +1 -0
- package/dist/components/input-search/src/{input-search.vue.d.ts → input-search.d.ts} +6 -4
- package/dist/components/input-search/src/input-search.d.ts.map +1 -0
- package/dist/components/input-search/src/type.d.ts +1 -0
- package/dist/components/input-search/src/type.d.ts.map +1 -0
- package/dist/components/nav-tabs/index.d.ts +2 -1
- package/dist/components/nav-tabs/index.d.ts.map +1 -0
- package/dist/components/nav-tabs/src/{nav-tabs.vue.d.ts → nav-tabs.d.ts} +6 -4
- package/dist/components/nav-tabs/src/nav-tabs.d.ts.map +1 -0
- package/dist/components/nav-tabs/src/type.d.ts +1 -0
- package/dist/components/nav-tabs/src/type.d.ts.map +1 -0
- package/dist/components/page-layout/index.d.ts +2 -1
- package/dist/components/page-layout/index.d.ts.map +1 -0
- package/dist/components/page-layout/src/page-layout.d.ts +219 -0
- package/dist/components/page-layout/src/page-layout.d.ts.map +1 -0
- package/dist/components/page-layout/src/{split-button.vue.d.ts → split-button.d.ts} +5 -3
- package/dist/components/page-layout/src/split-button.d.ts.map +1 -0
- package/dist/components/page-layout/src/type.d.ts +8 -0
- package/dist/components/page-layout/src/type.d.ts.map +1 -0
- package/dist/components/page-layout/src/useAutoCollapse.d.ts +1 -0
- package/dist/components/page-layout/src/useAutoCollapse.d.ts.map +1 -0
- package/dist/components/table/index.d.ts +5 -2
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/src/{TableColumn.vue.d.ts → table-column.d.ts} +1 -0
- package/dist/components/table/src/table-column.d.ts.map +1 -0
- package/dist/components/table/src/type.d.ts +7 -6
- package/dist/components/table/src/type.d.ts.map +1 -0
- package/dist/components/tabs/index.d.ts +2 -1
- package/dist/components/tabs/index.d.ts.map +1 -0
- package/dist/components/tabs/src/{tabs.vue.d.ts → tabs.d.ts} +16 -14
- package/dist/components/tabs/src/tabs.d.ts.map +1 -0
- package/dist/components/tabs/src/type.d.ts +1 -0
- package/dist/components/tabs/src/type.d.ts.map +1 -0
- package/dist/components/tag/index.d.ts +2 -1
- package/dist/components/tag/index.d.ts.map +1 -0
- package/dist/components/tag/src/{tag.vue.d.ts → tag.d.ts} +7 -5
- package/dist/components/tag/src/tag.d.ts.map +1 -0
- package/dist/components/tag/src/type.d.ts +1 -0
- package/dist/components/tag/src/type.d.ts.map +1 -0
- package/dist/components/tree-transfer/index.d.ts +2 -1
- package/dist/components/tree-transfer/index.d.ts.map +1 -0
- package/dist/components/tree-transfer/src/tree-transfer.d.ts +14438 -0
- package/dist/components/tree-transfer/src/tree-transfer.d.ts.map +1 -0
- package/dist/components/tree-transfer/src/type.d.ts +1 -0
- package/dist/components/tree-transfer/src/type.d.ts.map +1 -0
- package/dist/components/tree-transfer/src/utils.d.ts +1 -0
- package/dist/components/tree-transfer/src/utils.d.ts.map +1 -0
- package/dist/gi.css +1 -1
- package/dist/global.d.ts +26 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/useBemClass.d.ts +1 -0
- package/dist/hooks/useBemClass.d.ts.map +1 -0
- package/dist/hooks/useNavTabs.d.ts +1 -0
- package/dist/hooks/useNavTabs.d.ts.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es.js +39 -36
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/types/tool.d.ts +1 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/utils/createSelectDialog.d.ts +1 -0
- package/dist/utils/createSelectDialog.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/package.json +7 -6
- package/dist/components/card/src/card.vue.d.ts +0 -35
- package/dist/components/descriptions/src/descriptions.vue.d.ts +0 -20
- package/dist/components/dialog/src/dialog-content.vue.d.ts +0 -9
- package/dist/components/dialog/src/dialog.vue.d.ts +0 -43
- package/dist/components/dot/src/dot.vue.d.ts +0 -7
- package/dist/components/drawer/src/drawer.vue.d.ts +0 -47
- package/dist/components/page-layout/src/page-layout.vue.d.ts +0 -21
- package/dist/components/plus-tabs/index.d.ts +0 -8
- package/dist/components/plus-tabs/src/context.d.ts +0 -26
- package/dist/components/plus-tabs/src/plus-tab-pane.vue.d.ts +0 -39
- package/dist/components/plus-tabs/src/plus-tabs.vue.d.ts +0 -78
- package/dist/components/plus-tabs/src/type.d.ts +0 -5
- package/dist/components/tab/index.d.ts +0 -2
- package/dist/components/tab/src/context.d.ts +0 -10
- package/dist/components/tab/src/tab-item.vue.d.ts +0 -26
- package/dist/components/tab/src/tab.vue.d.ts +0 -44
- package/dist/components/tab/src/type.d.ts +0 -21
- package/dist/components/tab/src/use-nav-tabs.d.ts +0 -2
- package/dist/components/tab/src/use-tabs.d.ts +0 -13
- package/dist/components/table/src/table.d.ts +0 -4
- package/dist/components/table/src/table.vue.d.ts +0 -4
- package/dist/components/table-pro/index.d.ts +0 -4
- package/dist/components/table-pro/src/table-pro-column-setting.vue.d.ts +0 -13
- package/dist/components/table-pro/src/type.d.ts +0 -5
- package/dist/components/tree-transfer/src/tree-transfer.vue.d.ts +0 -14436
- package/dist/components.d.ts +0 -27
- package/packages/components/button/index.ts +0 -5
- package/packages/components/button/src/button.vue +0 -60
- package/packages/components/button/src/type.ts +0 -15
- package/packages/components/card/index.ts +0 -5
- package/packages/components/card/src/card.vue +0 -171
- package/packages/components/card/src/type.ts +0 -12
- package/packages/components/descriptions/index.ts +0 -5
- package/packages/components/descriptions/src/descriptions.vue +0 -72
- package/packages/components/descriptions/src/type.ts +0 -44
- package/packages/components/dialog/index.ts +0 -6
- package/packages/components/dialog/src/dialog-content.vue +0 -40
- package/packages/components/dialog/src/dialog.ts +0 -131
- package/packages/components/dialog/src/dialog.vue +0 -114
- package/packages/components/dialog/src/type.ts +0 -16
- package/packages/components/dot/index.ts +0 -5
- package/packages/components/dot/src/dot.vue +0 -107
- package/packages/components/dot/src/type.ts +0 -6
- package/packages/components/drawer/index.ts +0 -6
- package/packages/components/drawer/src/drawer.ts +0 -84
- package/packages/components/drawer/src/drawer.vue +0 -114
- package/packages/components/drawer/src/type.ts +0 -15
- package/packages/components/edit-table/index.ts +0 -5
- package/packages/components/edit-table/src/edit-table.vue +0 -201
- package/packages/components/edit-table/src/type.ts +0 -51
- package/packages/components/flex/index.ts +0 -5
- package/packages/components/flex/src/flex.vue +0 -95
- package/packages/components/flex/src/type.ts +0 -18
- package/packages/components/form/index.ts +0 -5
- package/packages/components/form/src/form.vue +0 -424
- package/packages/components/form/src/type.ts +0 -85
- package/packages/components/grid/index.ts +0 -8
- package/packages/components/grid/src/context.ts +0 -30
- package/packages/components/grid/src/grid-item.vue +0 -143
- package/packages/components/grid/src/grid.vue +0 -151
- package/packages/components/grid/src/hook/use-index.ts +0 -63
- package/packages/components/grid/src/hook/use-responsive-state.ts +0 -66
- package/packages/components/grid/src/hook/use-responsive-value.ts +0 -36
- package/packages/components/grid/src/interface.ts +0 -74
- package/packages/components/grid/src/type.ts +0 -0
- package/packages/components/grid/src/utils/global-config.ts +0 -6
- package/packages/components/grid/src/utils/index.ts +0 -73
- package/packages/components/grid/src/utils/is.ts +0 -9
- package/packages/components/grid/src/utils/responsive-observe.ts +0 -135
- package/packages/components/input-group/index.ts +0 -5
- package/packages/components/input-group/src/input-group.vue +0 -79
- package/packages/components/input-group/src/type.ts +0 -1
- package/packages/components/input-search/index.ts +0 -5
- package/packages/components/input-search/src/input-search.vue +0 -48
- package/packages/components/input-search/src/type.ts +0 -6
- package/packages/components/nav-tabs/index.ts +0 -8
- package/packages/components/nav-tabs/src/nav-tabs.vue +0 -235
- package/packages/components/nav-tabs/src/type.ts +0 -24
- package/packages/components/page-layout/index.ts +0 -5
- package/packages/components/page-layout/src/page-layout.vue +0 -203
- package/packages/components/page-layout/src/split-button.vue +0 -107
- package/packages/components/page-layout/src/type.ts +0 -16
- package/packages/components/page-layout/src/useAutoCollapse.ts +0 -88
- package/packages/components/table/index.ts +0 -5
- package/packages/components/table/src/TableColumn.vue +0 -43
- package/packages/components/table/src/table.vue +0 -89
- package/packages/components/table/src/type.ts +0 -24
- package/packages/components/tabs/index.ts +0 -5
- package/packages/components/tabs/src/tabs.vue +0 -139
- package/packages/components/tabs/src/type.ts +0 -15
- package/packages/components/tag/index.ts +0 -5
- package/packages/components/tag/src/tag.vue +0 -355
- package/packages/components/tag/src/type.ts +0 -38
- package/packages/components/tree-transfer/index.ts +0 -5
- package/packages/components/tree-transfer/src/tree-transfer.vue +0 -225
- package/packages/components/tree-transfer/src/type.ts +0 -7
- package/packages/components/tree-transfer/src/utils.ts +0 -23
- package/packages/components.d.ts +0 -34
- package/packages/hooks/index.ts +0 -2
- package/packages/hooks/useBemClass.ts +0 -11
- package/packages/hooks/useNavTabs.ts +0 -497
- package/packages/index.ts +0 -118
- package/packages/styles/el.scss +0 -90
- package/packages/styles/index.scss +0 -141
- package/packages/styles/var.scss +0 -1
- package/packages/types/global.d.ts +0 -7
- package/packages/types/tool.ts +0 -14
- package/packages/utils/createSelectDialog.ts +0 -74
- package/packages/utils/index.ts +0 -1
package/dist/components.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
// Generated by scripts/generate-components-dts.js - 用于主项目全局组件类型提示
|
|
4
|
-
export {}
|
|
5
|
-
|
|
6
|
-
declare module 'vue' {
|
|
7
|
-
export interface GlobalComponents {
|
|
8
|
-
GiButton: typeof import('./components/button/src/button.vue')['default']
|
|
9
|
-
GiCard: typeof import('./components/card/src/card.vue')['default']
|
|
10
|
-
GiDialog: typeof import('./components/dialog/src/dialog.vue')['default']
|
|
11
|
-
GiDialogContent: typeof import('./components/dialog/src/dialog-content.vue')['default']
|
|
12
|
-
GiDot: typeof import('./components/dot/src/dot.vue')['default']
|
|
13
|
-
GiDrawer: typeof import('./components/drawer/src/drawer.vue')['default']
|
|
14
|
-
GiEditTable: typeof import('./components/edit-table/src/edit-table.vue')['default']
|
|
15
|
-
GiForm: typeof import('./components/form/src/form.vue')['default']
|
|
16
|
-
GiGrid: typeof import('./components/grid/src/grid.vue')['default']
|
|
17
|
-
GiGridItem: typeof import('./components/grid/src/grid-item.vue')['default']
|
|
18
|
-
GiInputGroup: typeof import('./components/input-group/src/input-group.vue')['default']
|
|
19
|
-
GiInputSearch: typeof import('./components/input-search/src/input-search.vue')['default']
|
|
20
|
-
GiPageLayout: typeof import('./components/page-layout/src/page-layout.vue')['default']
|
|
21
|
-
GiSplitButton: typeof import('./components/page-layout/src/split-button.vue')['default']
|
|
22
|
-
GiTable: typeof import('./components/table/src/table.vue')['default']
|
|
23
|
-
GiTableColumn: typeof import('./components/table/src/TableColumn.vue')['default']
|
|
24
|
-
GiTabs: typeof import('./components/tabs/src/tabs.vue')['default']
|
|
25
|
-
GiTreeTransfer: typeof import('./components/tree-transfer/src/tree-transfer.vue')['default']
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<ElButton :class="b('button')" v-bind="bindProps" @click="(e: MouseEvent) => emit('click', e)">
|
|
3
|
-
<slot>{{ btnText }}</slot>
|
|
4
|
-
</ElButton>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<script setup lang="ts">
|
|
8
|
-
import type { ButtonProps as ElButtonProps } from 'element-plus'
|
|
9
|
-
import type { ButtonProps } from './type.ts'
|
|
10
|
-
import {
|
|
11
|
-
Delete,
|
|
12
|
-
Download,
|
|
13
|
-
Edit,
|
|
14
|
-
Plus,
|
|
15
|
-
Printer,
|
|
16
|
-
Search,
|
|
17
|
-
Upload
|
|
18
|
-
} from '@element-plus/icons-vue'
|
|
19
|
-
import { ElButton } from 'element-plus'
|
|
20
|
-
import { computed, useAttrs } from 'vue'
|
|
21
|
-
import { useBemClass } from '../../../hooks'
|
|
22
|
-
|
|
23
|
-
const props = withDefaults(defineProps<ButtonProps>(), {
|
|
24
|
-
type: ''
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
const emit = defineEmits<{
|
|
28
|
-
(e: 'click', event: MouseEvent): void
|
|
29
|
-
}>()
|
|
30
|
-
|
|
31
|
-
const attrs = useAttrs()
|
|
32
|
-
|
|
33
|
-
const { b } = useBemClass()
|
|
34
|
-
|
|
35
|
-
const obj: Record<string, { btnProps: Partial<ButtonProps>, btnText: string }>
|
|
36
|
-
= {
|
|
37
|
-
add: { btnProps: { icon: Plus, type: 'primary' }, btnText: '新增' },
|
|
38
|
-
edit: { btnProps: { icon: Edit, type: 'primary' }, btnText: '编辑' },
|
|
39
|
-
delete: { btnProps: { icon: Delete, type: 'danger' }, btnText: '删除' },
|
|
40
|
-
search: { btnProps: { icon: Search, type: 'primary' }, btnText: '搜索' },
|
|
41
|
-
reset: { btnProps: { type: undefined }, btnText: '重置' },
|
|
42
|
-
upload: { btnProps: { icon: Upload }, btnText: '上传' },
|
|
43
|
-
download: {
|
|
44
|
-
btnProps: { icon: Download },
|
|
45
|
-
btnText: '下载'
|
|
46
|
-
},
|
|
47
|
-
print: { btnProps: { icon: Printer }, btnText: '打印' }
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const bindProps = computed(() => {
|
|
51
|
-
const btnProps = obj?.[props.type]?.btnProps || { type: props.type }
|
|
52
|
-
return { ...attrs, ...props, ...btnProps } as Omit<ElButtonProps, 'type'>
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
const btnText = computed(() => {
|
|
56
|
-
return obj?.[props.type]?.btnText || ''
|
|
57
|
-
})
|
|
58
|
-
</script>
|
|
59
|
-
|
|
60
|
-
<style lang="scss" scoped></style>
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { ButtonProps as ElButtonProps } from 'element-plus'
|
|
2
|
-
|
|
3
|
-
export interface ButtonProps extends Partial<Omit<ElButtonProps, 'type'>> {
|
|
4
|
-
type?:
|
|
5
|
-
| 'add'
|
|
6
|
-
| 'edit'
|
|
7
|
-
| 'delete'
|
|
8
|
-
| 'search'
|
|
9
|
-
| 'reset'
|
|
10
|
-
| 'upload'
|
|
11
|
-
| 'download'
|
|
12
|
-
| 'print'
|
|
13
|
-
| ''
|
|
14
|
-
| ElButtonProps['type']
|
|
15
|
-
}
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div :class="getCardClass">
|
|
3
|
-
<section :class="getHeaderClass" :style="props.headerStyle">
|
|
4
|
-
<div :class="b('card-header__title')">
|
|
5
|
-
<slot name="title">{{ props.title }}</slot>
|
|
6
|
-
</div>
|
|
7
|
-
<div :class="b('card-header__extra')">
|
|
8
|
-
<ElSpace>
|
|
9
|
-
<slot name="extra">{{ props.extra }}</slot>
|
|
10
|
-
</ElSpace>
|
|
11
|
-
</div>
|
|
12
|
-
</section>
|
|
13
|
-
<section :class="b('card-body')" :style="props.bodyStyle">
|
|
14
|
-
<slot></slot>
|
|
15
|
-
</section>
|
|
16
|
-
<section v-if="slot.footer" :class="b('card-footer')">
|
|
17
|
-
<slot name="footer"></slot>
|
|
18
|
-
</section>
|
|
19
|
-
</div>
|
|
20
|
-
</template>
|
|
21
|
-
|
|
22
|
-
<script lang="ts" setup>
|
|
23
|
-
import type { CardProps } from './type'
|
|
24
|
-
import { ElSpace } from 'element-plus'
|
|
25
|
-
import { computed, useSlots } from 'vue'
|
|
26
|
-
import { useBemClass } from '../../../hooks'
|
|
27
|
-
|
|
28
|
-
const props = withDefaults(defineProps<CardProps>(), {
|
|
29
|
-
title: '',
|
|
30
|
-
extra: '',
|
|
31
|
-
size: 'middle' as const,
|
|
32
|
-
bordered: false,
|
|
33
|
-
headerBordered: true,
|
|
34
|
-
headerStyle: () => ({}),
|
|
35
|
-
bodyStyle: () => ({}),
|
|
36
|
-
inner: false
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
defineSlots<{
|
|
40
|
-
default: () => void
|
|
41
|
-
title: () => void
|
|
42
|
-
extra: () => void
|
|
43
|
-
footer: () => void
|
|
44
|
-
}>()
|
|
45
|
-
|
|
46
|
-
const slot = useSlots()
|
|
47
|
-
const { b } = useBemClass()
|
|
48
|
-
|
|
49
|
-
const getCardClass = computed(() => {
|
|
50
|
-
const arr: string[] = [b('card')]
|
|
51
|
-
if (props.bordered) {
|
|
52
|
-
arr.push(b('card--bordered'))
|
|
53
|
-
}
|
|
54
|
-
arr.push(b(`card--${props.size}`))
|
|
55
|
-
if (props.inner) {
|
|
56
|
-
arr.push(b('card--inner'))
|
|
57
|
-
}
|
|
58
|
-
return arr.join(' ')
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
const getHeaderClass = computed(() => {
|
|
62
|
-
const arr: string[] = [b('card-header')]
|
|
63
|
-
if (props.headerBordered) {
|
|
64
|
-
arr.push(b('card-header--bordered'))
|
|
65
|
-
}
|
|
66
|
-
return arr.join(' ')
|
|
67
|
-
})
|
|
68
|
-
</script>
|
|
69
|
-
|
|
70
|
-
<style lang="scss" scoped>
|
|
71
|
-
@use '../../../styles/var.scss' as a;
|
|
72
|
-
|
|
73
|
-
.#{a.$prefix}-card {
|
|
74
|
-
width: 100%;
|
|
75
|
-
background-color: var(--el-bg-color);
|
|
76
|
-
display: flex;
|
|
77
|
-
flex-direction: column;
|
|
78
|
-
overflow: hidden;
|
|
79
|
-
box-sizing: border-box;
|
|
80
|
-
--card-padding-x: var(--padding);
|
|
81
|
-
--card-padding-x-small: 10px;
|
|
82
|
-
--card-padding-y: var(--padding);
|
|
83
|
-
--card-padding-y-small: 10px;
|
|
84
|
-
|
|
85
|
-
&--bordered {
|
|
86
|
-
border: 1px solid var(--el-border-color);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.#{a.$prefix}-card-header {
|
|
91
|
-
height: 46px;
|
|
92
|
-
padding: 0 var(--card-padding-x);
|
|
93
|
-
display: flex;
|
|
94
|
-
justify-content: space-between;
|
|
95
|
-
align-items: center;
|
|
96
|
-
color: var(--el-text-color-primary);
|
|
97
|
-
box-sizing: border-box;
|
|
98
|
-
position: relative;
|
|
99
|
-
flex-shrink: 0;
|
|
100
|
-
|
|
101
|
-
&__title {
|
|
102
|
-
position: relative;
|
|
103
|
-
line-height: 1.3em;
|
|
104
|
-
overflow: hidden;
|
|
105
|
-
white-space: nowrap;
|
|
106
|
-
text-overflow: ellipsis;
|
|
107
|
-
box-sizing: border-box;
|
|
108
|
-
font-weight: 500;
|
|
109
|
-
font-size: 16px;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
&__extra {
|
|
113
|
-
display: flex;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
&--bordered {
|
|
117
|
-
border-bottom: 1px solid var(--el-border-color);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
.#{a.$prefix}-card-body {
|
|
122
|
-
padding: var(--card-padding-x);
|
|
123
|
-
box-sizing: border-box;
|
|
124
|
-
overflow: hidden;
|
|
125
|
-
height: 100%;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.#{a.$prefix}-card-footer {
|
|
129
|
-
padding: var(--card-padding-y) var(--card-padding-x);
|
|
130
|
-
box-sizing: border-box;
|
|
131
|
-
border-top: 1px solid var(--el-border-color);
|
|
132
|
-
box-sizing: border-box;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.#{a.$prefix}-card--small {
|
|
136
|
-
.#{a.$prefix}-card-header {
|
|
137
|
-
height: 36px;
|
|
138
|
-
padding: 0 var(--card-padding-x-small);
|
|
139
|
-
|
|
140
|
-
&__title {
|
|
141
|
-
font-size: 14px;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
.#{a.$prefix}-card-body {
|
|
146
|
-
padding: var(--card-padding-x-small);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
.#{a.$prefix}-card-footer {
|
|
150
|
-
padding: var(--card-padding-y-small) var(--card-padding-x-small);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
.#{a.$prefix}-card--full {
|
|
155
|
-
.#{a.$prefix}-card-body {
|
|
156
|
-
flex: 1;
|
|
157
|
-
display: flex;
|
|
158
|
-
flex-direction: column;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
.#{a.$prefix}-card--inner {
|
|
163
|
-
|
|
164
|
-
.#{a.$prefix}-card-header,
|
|
165
|
-
.#{a.$prefix}-card-body,
|
|
166
|
-
.#{a.$prefix}-card-footer {
|
|
167
|
-
padding-left: 0;
|
|
168
|
-
padding-right: 0;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
</style>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { CSSProperties } from 'vue'
|
|
2
|
-
|
|
3
|
-
export interface CardProps {
|
|
4
|
-
title?: string
|
|
5
|
-
extra?: string
|
|
6
|
-
bordered?: boolean
|
|
7
|
-
size?: 'small' | 'middle'
|
|
8
|
-
headerBordered?: boolean
|
|
9
|
-
headerStyle?: CSSProperties
|
|
10
|
-
bodyStyle?: CSSProperties
|
|
11
|
-
inner?: boolean // 内嵌模式
|
|
12
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<ElDescriptions :border="border" :column="column" :direction="direction" :size="size" :title="title" :extra="extra">
|
|
3
|
-
<template v-if="$slots.title" #title>
|
|
4
|
-
<slot name="title" />
|
|
5
|
-
</template>
|
|
6
|
-
<template v-if="$slots.extra" #extra>
|
|
7
|
-
<slot name="extra" />
|
|
8
|
-
</template>
|
|
9
|
-
<template v-if="useColumns">
|
|
10
|
-
<ElDescriptionsItem v-for="(col, idx) in columns" :key="col.value ?? idx"
|
|
11
|
-
:label="typeof col.label === 'string' ? col.label : ''" :span="col.span ?? 1" :width="col.width"
|
|
12
|
-
:min-width="col.minWidth" :align="col.align ?? 'left'" :label-align="col.labelAlign" :class-name="col.className"
|
|
13
|
-
:label-class-name="col.labelClassName">
|
|
14
|
-
<template v-if="typeof col.label === 'function'" #label>
|
|
15
|
-
<NodeRenderer :get-node="() => (col.label as (c: DescriptionsColumnItem) => any)(col)" />
|
|
16
|
-
</template>
|
|
17
|
-
<slot v-if="hasColumnSlot(col.value)" :name="col.value" :value="getFieldValue(col)" :data="data" :column="col" />
|
|
18
|
-
<NodeRenderer v-else-if="col.render && data" :get-node="() => col.render!({ value: getFieldValue(col), data, column: col })" />
|
|
19
|
-
<span v-else>{{ getFieldValue(col) }}</span>
|
|
20
|
-
</ElDescriptionsItem>
|
|
21
|
-
</template>
|
|
22
|
-
<template v-else>
|
|
23
|
-
<slot />
|
|
24
|
-
</template>
|
|
25
|
-
</ElDescriptions>
|
|
26
|
-
</template>
|
|
27
|
-
|
|
28
|
-
<script setup lang="ts">
|
|
29
|
-
import type { DescriptionsColumnItem, DescriptionsProps } from './type'
|
|
30
|
-
import { ElDescriptions, ElDescriptionsItem } from 'element-plus'
|
|
31
|
-
import { computed, defineComponent, useSlots } from 'vue'
|
|
32
|
-
|
|
33
|
-
const props = withDefaults(defineProps<DescriptionsProps>(), {
|
|
34
|
-
columns: () => [],
|
|
35
|
-
data: () => ({}),
|
|
36
|
-
border: false,
|
|
37
|
-
column: 3,
|
|
38
|
-
direction: 'horizontal',
|
|
39
|
-
size: 'default',
|
|
40
|
-
title: '',
|
|
41
|
-
extra: ''
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
defineSlots<{
|
|
45
|
-
default?: () => any
|
|
46
|
-
title?: () => any
|
|
47
|
-
extra?: () => any
|
|
48
|
-
}>()
|
|
49
|
-
|
|
50
|
-
const NodeRenderer = defineComponent({
|
|
51
|
-
name: 'NodeRenderer',
|
|
52
|
-
props: {
|
|
53
|
-
getNode: { type: Function, required: true }
|
|
54
|
-
},
|
|
55
|
-
setup(props: { getNode: () => any }) {
|
|
56
|
-
return () => props.getNode()
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
const slots = useSlots()
|
|
61
|
-
const useColumns = computed(() => (props.columns?.length ?? 0) > 0)
|
|
62
|
-
|
|
63
|
-
function hasColumnSlot(name: string | undefined): boolean {
|
|
64
|
-
return !!name && !!(slots as Record<string, unknown>)[name]
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function getFieldValue(col: DescriptionsColumnItem) {
|
|
68
|
-
if (!props.data || col.value === undefined || col.value === null)
|
|
69
|
-
return ''
|
|
70
|
-
return props.data[col.value]
|
|
71
|
-
}
|
|
72
|
-
</script>
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { VNode } from 'vue'
|
|
2
|
-
|
|
3
|
-
/** 描述列表列配置(对应 data 的字段与展示) */
|
|
4
|
-
export interface DescriptionsColumnItem {
|
|
5
|
-
/** 对应 data 的字段名 */
|
|
6
|
-
value?: string
|
|
7
|
-
/** 标签文本,或返回 VNode 的函数 */
|
|
8
|
-
label?: string | ((columnItem: DescriptionsColumnItem) => VNode)
|
|
9
|
-
/** 列的数量(占据几列) */
|
|
10
|
-
span?: number
|
|
11
|
-
/** 列宽度(如无 border,宽度包含标签与内容) */
|
|
12
|
-
width?: string | number
|
|
13
|
-
/** 列最小宽度,剩余宽度按比例分配给设置了 minWidth 的列 */
|
|
14
|
-
minWidth?: string | number
|
|
15
|
-
/** 列内容对齐方式 */
|
|
16
|
-
align?: 'left' | 'center' | 'right'
|
|
17
|
-
/** 列标签对齐方式(无 border 时用 align) */
|
|
18
|
-
labelAlign?: 'left' | 'center' | 'right'
|
|
19
|
-
/** 列内容自定义类名 */
|
|
20
|
-
className?: string
|
|
21
|
-
/** 列标签自定义类名 */
|
|
22
|
-
labelClassName?: string
|
|
23
|
-
/** 自定义渲染内容:({ value, data, column }) => VNode */
|
|
24
|
-
render?: (params: { value: any; data: Record<string, any>; column: DescriptionsColumnItem }) => VNode
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface DescriptionsProps {
|
|
28
|
-
/** 描述列表配置项,与 data 配合使用 */
|
|
29
|
-
columns?: DescriptionsColumnItem[]
|
|
30
|
-
/** 详情数据(与 columns 配合,按 value 取字段) */
|
|
31
|
-
data?: Record<string, any>
|
|
32
|
-
/** 是否带边框 */
|
|
33
|
-
border?: boolean
|
|
34
|
-
/** 一行 Descriptions Item 的数量 */
|
|
35
|
-
column?: number
|
|
36
|
-
/** 排列方向 */
|
|
37
|
-
direction?: 'vertical' | 'horizontal'
|
|
38
|
-
/** 列表尺寸 */
|
|
39
|
-
size?: 'large' | 'default' | 'small'
|
|
40
|
-
/** 标题文本,显示在左上方,也可用 title 插槽 */
|
|
41
|
-
title?: string
|
|
42
|
-
/** 操作区,显示在右上方,也可用 extra 插槽 */
|
|
43
|
-
extra?: string
|
|
44
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="el-message-box__container" :class="b('dialog-content')">
|
|
3
|
-
<el-icon class="el-message-box__status" :class="`el-message-box-icon--${props.type}`">
|
|
4
|
-
<InfoFilled v-if="props.type === 'info'" />
|
|
5
|
-
<SuccessFilled v-else-if="props.type === 'success'" />
|
|
6
|
-
<WarningFilled v-else-if="props.type === 'warning'" />
|
|
7
|
-
<CircleCloseFilled v-else-if="props.type === 'error'" />
|
|
8
|
-
</el-icon>
|
|
9
|
-
<div class="el-message-box__message">
|
|
10
|
-
<p>{{ props.content }}</p>
|
|
11
|
-
</div>
|
|
12
|
-
</div>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<script setup lang="ts">
|
|
16
|
-
import { CircleCloseFilled, InfoFilled, SuccessFilled, WarningFilled } from '@element-plus/icons-vue'
|
|
17
|
-
import { useBemClass } from '../../../hooks'
|
|
18
|
-
|
|
19
|
-
interface Props {
|
|
20
|
-
type?: 'info' | 'success' | 'warning' | 'error'
|
|
21
|
-
content?: string
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
25
|
-
type: 'info',
|
|
26
|
-
content: ''
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
const { b } = useBemClass()
|
|
30
|
-
</script>
|
|
31
|
-
|
|
32
|
-
<style lang="scss" scoped>
|
|
33
|
-
@use '../../../styles/var.scss' as a;
|
|
34
|
-
|
|
35
|
-
.#{a.$prefix}-dialog-content {
|
|
36
|
-
.el-message-box__message {
|
|
37
|
-
font-size: 15px;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
</style>
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import type { DialogInstance } from '../index'
|
|
2
|
-
import ElementPlus from 'element-plus'
|
|
3
|
-
import { createApp, h, ref } from 'vue'
|
|
4
|
-
import DialogContent from './dialog-content.vue'
|
|
5
|
-
import GiDialog from './dialog.vue'
|
|
6
|
-
|
|
7
|
-
export type DialogOptions = Partial<DialogInstance['$props']>
|
|
8
|
-
|
|
9
|
-
export interface DialogReturnObject {
|
|
10
|
-
close: () => void
|
|
11
|
-
update: (newProps?: Record<string, any>) => void
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const DEF_OPTIONS: DialogOptions = {
|
|
15
|
-
// width: '600px',
|
|
16
|
-
// center: false,
|
|
17
|
-
// footer: true,
|
|
18
|
-
// closeOnClickModal: true
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export function createDialog() {
|
|
22
|
-
const Dialog = {
|
|
23
|
-
_context: {},
|
|
24
|
-
// 核心创建方法
|
|
25
|
-
create(options: DialogOptions): DialogReturnObject {
|
|
26
|
-
const mergedOptions = { ...DEF_OPTIONS, ...options }
|
|
27
|
-
// 创建容器
|
|
28
|
-
const container = document.createElement('div')
|
|
29
|
-
document.body.appendChild(container)
|
|
30
|
-
|
|
31
|
-
// 状态管理
|
|
32
|
-
const visible = ref(true)
|
|
33
|
-
const dialogOptions = ref(mergedOptions || {})
|
|
34
|
-
|
|
35
|
-
// 创建弹窗应用
|
|
36
|
-
const dialogApp = createApp({
|
|
37
|
-
setup() {
|
|
38
|
-
// 关闭处理
|
|
39
|
-
const closed = () => {
|
|
40
|
-
dialogApp.unmount()
|
|
41
|
-
container.remove()
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return () =>
|
|
45
|
-
h(GiDialog, {
|
|
46
|
-
...dialogOptions.value,
|
|
47
|
-
'modelValue': visible.value,
|
|
48
|
-
'onUpdate:modelValue': (val: boolean) => (visible.value = val),
|
|
49
|
-
'onClosed': () => closed()
|
|
50
|
-
})
|
|
51
|
-
}
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
dialogApp.use(ElementPlus)
|
|
55
|
-
|
|
56
|
-
// 继承主应用的上下文
|
|
57
|
-
Object.assign(dialogApp._context, Dialog._context)
|
|
58
|
-
|
|
59
|
-
// 挂载
|
|
60
|
-
dialogApp.mount(container)
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
/** 关闭对话框 */
|
|
64
|
-
close: () => {
|
|
65
|
-
visible.value = false
|
|
66
|
-
setTimeout(() => {
|
|
67
|
-
dialogApp.unmount()
|
|
68
|
-
container.remove()
|
|
69
|
-
}, 300)
|
|
70
|
-
},
|
|
71
|
-
/** 更新对话框 */
|
|
72
|
-
update: (newProps?: Record<string, any>) => {
|
|
73
|
-
dialogOptions.value = { ...dialogOptions.value, ...newProps }
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
/** 对话框-打开 */
|
|
79
|
-
open(options: DialogOptions) {
|
|
80
|
-
return this.create(options)
|
|
81
|
-
},
|
|
82
|
-
|
|
83
|
-
info(options: DialogOptions) {
|
|
84
|
-
return this.create({
|
|
85
|
-
...options,
|
|
86
|
-
content: () => h(DialogContent, { type: 'info', content: options.content as string }),
|
|
87
|
-
simple: true,
|
|
88
|
-
style: { maxWidth: '420px', ...options.style },
|
|
89
|
-
lockScroll: false
|
|
90
|
-
})
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
success(options: DialogOptions) {
|
|
94
|
-
return this.create({
|
|
95
|
-
...options,
|
|
96
|
-
content: () => h(DialogContent, { type: 'success', content: options.content as string }),
|
|
97
|
-
simple: true,
|
|
98
|
-
style: { maxWidth: '420px', ...options.style },
|
|
99
|
-
lockScroll: false
|
|
100
|
-
})
|
|
101
|
-
},
|
|
102
|
-
|
|
103
|
-
warning(options: DialogOptions) {
|
|
104
|
-
return this.create({
|
|
105
|
-
...options,
|
|
106
|
-
content: () => h(DialogContent, { type: 'warning', content: options.content as string }),
|
|
107
|
-
simple: true,
|
|
108
|
-
style: { maxWidth: '420px', ...options.style },
|
|
109
|
-
lockScroll: false
|
|
110
|
-
})
|
|
111
|
-
},
|
|
112
|
-
|
|
113
|
-
error(options: DialogOptions) {
|
|
114
|
-
return this.create({
|
|
115
|
-
...options,
|
|
116
|
-
content: () => h(DialogContent, { type: 'error', content: options.content as string }),
|
|
117
|
-
simple: true,
|
|
118
|
-
style: { maxWidth: '420px', ...options.style },
|
|
119
|
-
lockScroll: false
|
|
120
|
-
})
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return Dialog
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// 默认导出实例
|
|
128
|
-
export const Dialog = createDialog()
|
|
129
|
-
|
|
130
|
-
// 防止打包时 tree-shake 掉 info/success/warning/error(此处引用保证被打包)
|
|
131
|
-
void [Dialog.info, Dialog.success, Dialog.warning, Dialog.error]
|