fx-platform-ui 0.0.13-alpha2 → 0.0.13-alpha20
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/lib/fx-platform-ui.mjs +33230 -64089
- package/lib/fx-platform-ui.umd.js +69 -113
- package/lib/packages/components/area/src/index.vue.d.ts +2 -2
- package/lib/packages/components/confirm/index.d.ts +2 -0
- package/lib/packages/components/confirm/src/confirm.vue.d.ts +2 -0
- package/lib/packages/components/confirm/src/index.d.ts +2 -0
- package/lib/packages/components/editor/src/index.vue.d.ts +3 -6
- package/lib/packages/components/editor/src/plat-editor-emits.d.ts +1 -0
- package/lib/style.css +1 -1
- package/package.json +1 -1
- package/packages/.DS_Store +0 -0
- package/packages/component.ts +3 -2
- package/packages/components/confirm/index.ts +9 -0
- package/packages/components/confirm/src/confirm.vue +75 -0
- package/packages/components/confirm/src/index.module.less +61 -0
- package/packages/components/confirm/src/index.tsx +91 -0
- package/packages/components/confirm/src/plat-confirm-props.ts +39 -0
- package/packages/components/editor/src/index.vue +25 -22
- package/packages/components/editor/src/plat-editor-emits.ts +1 -1
- package/packages/components/table/src/hook/useTableMethods.tsx +1 -1
- package/packages/components/table/src/plat-table-emits.ts +1 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<Modal
|
|
4
|
+
ref="confirmRef"
|
|
5
|
+
class="pl-confirm-info"
|
|
6
|
+
v-bind="getProps"
|
|
7
|
+
@ok="handleOnOk"
|
|
8
|
+
@cancel="handleOnCancel"
|
|
9
|
+
>
|
|
10
|
+
<div>
|
|
11
|
+
<span>{{ getProps.content }}</span>
|
|
12
|
+
</div>
|
|
13
|
+
<template #footer>
|
|
14
|
+
<div class="pl-confirm-footer">
|
|
15
|
+
<div
|
|
16
|
+
v-if="getProps.cancelShow"
|
|
17
|
+
class="pl-confirm-flex pl-confirm-cancel"
|
|
18
|
+
>
|
|
19
|
+
<AButton
|
|
20
|
+
type="link"
|
|
21
|
+
style="color: #666"
|
|
22
|
+
v-bind="getProps.cancelButtonProps"
|
|
23
|
+
@click="handleOnCancel"
|
|
24
|
+
>{{ getProps.cancelText ?? '取消' }}</AButton
|
|
25
|
+
>
|
|
26
|
+
</div>
|
|
27
|
+
<div v-if="getProps.okShow" class="pl-confirm-flex pl-confirm-ok">
|
|
28
|
+
<AButton
|
|
29
|
+
type="link"
|
|
30
|
+
v-bind="getProps.okButtonProps"
|
|
31
|
+
:loading="getProps.confirmLoading"
|
|
32
|
+
@click="handleOnOk"
|
|
33
|
+
>{{ getProps.okText ?? '确定' }}</AButton
|
|
34
|
+
>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</template>
|
|
38
|
+
</Modal>
|
|
39
|
+
</div>
|
|
40
|
+
</template>
|
|
41
|
+
<script lang="tsx" setup>
|
|
42
|
+
import { computed, ref } from 'vue'
|
|
43
|
+
import { Modal } from 'ant-design-vue'
|
|
44
|
+
import { isFunction } from '../../../utils/is'
|
|
45
|
+
import { platConfirmProps } from './plat-confirm-props'
|
|
46
|
+
defineOptions({
|
|
47
|
+
name: 'PlConfirm'
|
|
48
|
+
})
|
|
49
|
+
const props = defineProps(platConfirmProps)
|
|
50
|
+
const confirmRef = ref(null)
|
|
51
|
+
const getProps = computed(() => props as Recordable)
|
|
52
|
+
const handleOnOk = async () => {
|
|
53
|
+
if (isFunction(props.onOk)) {
|
|
54
|
+
const res = await props.onOk()
|
|
55
|
+
if (res) {
|
|
56
|
+
props.close!()
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
await props.close!()
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const handleOnCancel = async () => {
|
|
63
|
+
if (isFunction(props.onCancel)) {
|
|
64
|
+
const res = await props.onCancel()
|
|
65
|
+
if (res) {
|
|
66
|
+
await props.close!()
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
await props.close!()
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
</script>
|
|
73
|
+
<style lang="less">
|
|
74
|
+
@import 'index.module';
|
|
75
|
+
</style>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
.pl-confirm-info {
|
|
2
|
+
.ant-modal-content {
|
|
3
|
+
border-radius: 10px;
|
|
4
|
+
}
|
|
5
|
+
.ant-modal-header {
|
|
6
|
+
border-radius: 10px;
|
|
7
|
+
border-bottom: 0;
|
|
8
|
+
padding: 24px 24px 0 24px;
|
|
9
|
+
text-align: center;
|
|
10
|
+
.ant-modal-title {
|
|
11
|
+
font-weight: 500;
|
|
12
|
+
font-size: 20px;
|
|
13
|
+
color: #222;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
.ant-modal-body {
|
|
17
|
+
padding: 40px 24px;
|
|
18
|
+
font-size: 16px;
|
|
19
|
+
font-weight: 400;
|
|
20
|
+
text-align: center;
|
|
21
|
+
}
|
|
22
|
+
.ant-modal-footer {
|
|
23
|
+
padding: 0;
|
|
24
|
+
height: 58px;
|
|
25
|
+
.pl-confirm-footer {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
font-size: 16px;
|
|
29
|
+
color: #409eff;
|
|
30
|
+
position: relative;
|
|
31
|
+
height: 100%;
|
|
32
|
+
.pl-confirm-flex {
|
|
33
|
+
display: flex;
|
|
34
|
+
justify-content: center;
|
|
35
|
+
flex: 1;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
.ant-btn {
|
|
39
|
+
font-size: 16px;
|
|
40
|
+
width: 100%;
|
|
41
|
+
height: 100%;
|
|
42
|
+
}
|
|
43
|
+
.pl-confirm-cancel:before {
|
|
44
|
+
position: absolute;
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
content: ' ';
|
|
47
|
+
pointer-events: none;
|
|
48
|
+
top: -50%;
|
|
49
|
+
bottom: -50%;
|
|
50
|
+
left: 50%;
|
|
51
|
+
transform: scale(0.5);
|
|
52
|
+
border-right: 1px solid #f0f0f0;
|
|
53
|
+
color: #f0f0f0;
|
|
54
|
+
}
|
|
55
|
+
.pl-flex {
|
|
56
|
+
display: flex;
|
|
57
|
+
justify-content: center;
|
|
58
|
+
align-items: center;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { createVNode, render as vueRender } from 'vue'
|
|
2
|
+
import PlConfirm from './confirm.vue'
|
|
3
|
+
import type { PlatConfirmProps } from './plat-confirm-props'
|
|
4
|
+
|
|
5
|
+
const confirm = (props: any) => {
|
|
6
|
+
let confirmDialogInstance: any = null
|
|
7
|
+
const container = document.createDocumentFragment()
|
|
8
|
+
const close = (data?, args?) => {
|
|
9
|
+
currentConfig = {
|
|
10
|
+
...currentConfig,
|
|
11
|
+
visible: false,
|
|
12
|
+
afterClose: () => {
|
|
13
|
+
if (typeof props.afterClose === 'function') {
|
|
14
|
+
props.afterClose()
|
|
15
|
+
}
|
|
16
|
+
destroy.apply(data, args)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
update(currentConfig)
|
|
20
|
+
}
|
|
21
|
+
let currentConfig = {
|
|
22
|
+
maskClosable: false,
|
|
23
|
+
visible: true,
|
|
24
|
+
close,
|
|
25
|
+
type: 'info',
|
|
26
|
+
centered: true,
|
|
27
|
+
closable: false,
|
|
28
|
+
width: '360px',
|
|
29
|
+
height: '225px',
|
|
30
|
+
...props
|
|
31
|
+
}
|
|
32
|
+
const destroy = (...args) => {
|
|
33
|
+
if (confirmDialogInstance) {
|
|
34
|
+
// destroy
|
|
35
|
+
vueRender(null, container as any)
|
|
36
|
+
confirmDialogInstance.component.update()
|
|
37
|
+
confirmDialogInstance = null
|
|
38
|
+
}
|
|
39
|
+
const triggerCancel = args.some((param) => param && param.triggerCancel)
|
|
40
|
+
if (props.onCancel && triggerCancel) {
|
|
41
|
+
props.onCancel(...args)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const update = (configUpdate: PlatConfirmProps) => {
|
|
45
|
+
currentConfig = {
|
|
46
|
+
...currentConfig,
|
|
47
|
+
...configUpdate
|
|
48
|
+
}
|
|
49
|
+
if (confirmDialogInstance) {
|
|
50
|
+
Object.assign(confirmDialogInstance.component.props, currentConfig)
|
|
51
|
+
confirmDialogInstance.component.update()
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const Wrapper = (p) => {
|
|
55
|
+
return <PlConfirm {...p}></PlConfirm>
|
|
56
|
+
}
|
|
57
|
+
const render = (arg: PlatConfirmProps) => {
|
|
58
|
+
console.log(arg)
|
|
59
|
+
const vm = createVNode(Wrapper, { ...arg })
|
|
60
|
+
vm.appContext = props.parentContext || props.appContext || vm.appContext
|
|
61
|
+
vueRender(vm, container as any)
|
|
62
|
+
return vm
|
|
63
|
+
}
|
|
64
|
+
confirmDialogInstance = render(currentConfig)
|
|
65
|
+
return {
|
|
66
|
+
destroy: close,
|
|
67
|
+
update
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const info = (props) => {
|
|
72
|
+
return {
|
|
73
|
+
okShow: true,
|
|
74
|
+
cancelShow: true,
|
|
75
|
+
...props
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// const PlConfirm = {
|
|
80
|
+
// info: (props) => {
|
|
81
|
+
// return confirm(info(props))
|
|
82
|
+
// }
|
|
83
|
+
// }
|
|
84
|
+
|
|
85
|
+
// PlConfirm.install = function (app: App) {
|
|
86
|
+
// app.component(Modal.name, Modal)
|
|
87
|
+
// return app
|
|
88
|
+
// }
|
|
89
|
+
PlConfirm.info = (props) => confirm(info(props))
|
|
90
|
+
|
|
91
|
+
export default PlConfirm
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { VNode, PropType, ExtractPropTypes } from 'vue'
|
|
2
|
+
import { modalProps } from 'ant-design-vue/es/modal/Modal'
|
|
3
|
+
|
|
4
|
+
export const platConfirmProps = {
|
|
5
|
+
...modalProps(),
|
|
6
|
+
okShow: {
|
|
7
|
+
type: Boolean,
|
|
8
|
+
default: true
|
|
9
|
+
},
|
|
10
|
+
cancelShow: {
|
|
11
|
+
type: Boolean,
|
|
12
|
+
default: true
|
|
13
|
+
},
|
|
14
|
+
// 内容
|
|
15
|
+
content: {
|
|
16
|
+
type: [Object, String] as PropType<VNode | string>,
|
|
17
|
+
default: null
|
|
18
|
+
},
|
|
19
|
+
// 关闭函数
|
|
20
|
+
onCancel: {
|
|
21
|
+
type: Function as PropType<() => Promise<any>>
|
|
22
|
+
},
|
|
23
|
+
// 确认函数
|
|
24
|
+
onOk: {
|
|
25
|
+
type: Function as PropType<() => Promise<any>>
|
|
26
|
+
},
|
|
27
|
+
// 销毁函数
|
|
28
|
+
destroy: {
|
|
29
|
+
type: Function as PropType<(() => Promise<any>) | undefined>,
|
|
30
|
+
default: null
|
|
31
|
+
},
|
|
32
|
+
close: {
|
|
33
|
+
type: Function as PropType<() => Promise<any>>
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type PlatConfirmProps = Partial<
|
|
38
|
+
ExtractPropTypes<typeof platConfirmProps>
|
|
39
|
+
>
|
|
@@ -8,36 +8,39 @@
|
|
|
8
8
|
import { onMounted, watch, ref } from 'vue'
|
|
9
9
|
//在js中引入所需的主题和组件
|
|
10
10
|
import tinymce from 'tinymce/tinymce'
|
|
11
|
-
import 'tinymce/skins/content/default/content.css'
|
|
12
|
-
import Editor from '@tinymce/tinymce-vue'
|
|
13
|
-
import 'tinymce/themes/silver'
|
|
14
|
-
import 'tinymce/themes/silver/theme'
|
|
15
|
-
import 'tinymce/icons/default' //引入编辑器图标icon,不引入则不显示对应图标
|
|
16
|
-
import 'tinymce/models/dom' // 这里是个坑 一定要引入
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
import 'tinymce/
|
|
20
|
-
import 'tinymce/
|
|
21
|
-
import 'tinymce/
|
|
22
|
-
import 'tinymce/
|
|
23
|
-
import 'tinymce/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
import 'tinymce/
|
|
27
|
-
import 'tinymce/plugins/
|
|
28
|
-
import 'tinymce/plugins/
|
|
29
|
-
import 'tinymce/plugins/
|
|
30
|
-
import 'tinymce/plugins/
|
|
31
|
-
import 'tinymce/plugins/
|
|
32
|
-
import 'tinymce/plugins/
|
|
12
|
+
// import 'tinymce/skins/content/default/content.css'
|
|
13
|
+
import Editor from '@tinymce/tinymce-vue'
|
|
14
|
+
// import 'tinymce/themes/silver'
|
|
15
|
+
// import 'tinymce/themes/silver/theme'
|
|
16
|
+
// import 'tinymce/icons/default' //引入编辑器图标icon,不引入则不显示对应图标
|
|
17
|
+
// import 'tinymce/models/dom' // 这里是个坑 一定要引入
|
|
18
|
+
//
|
|
19
|
+
// //在TinyMce.vue中接着引入相关插件
|
|
20
|
+
// import 'tinymce/icons/default/icons'
|
|
21
|
+
// import 'tinymce/plugins/image' // 插入上传图片插件
|
|
22
|
+
// import 'tinymce/plugins/media' // 插入视频插件
|
|
23
|
+
// import 'tinymce/plugins/table' // 插入表格插件
|
|
24
|
+
// import 'tinymce/plugins/lists' // 列表插件
|
|
25
|
+
// import 'tinymce/plugins/wordcount' // 字数统计插件
|
|
26
|
+
// import 'tinymce/plugins/code' // 源码
|
|
27
|
+
// import 'tinymce/plugins/fullscreen' //全屏
|
|
28
|
+
// import 'tinymce/plugins/pagebreak' //插入分页符
|
|
29
|
+
// import 'tinymce/plugins/codesample'
|
|
30
|
+
// import 'tinymce/plugins/searchreplace'
|
|
31
|
+
// import 'tinymce/plugins/link'
|
|
32
|
+
// import 'tinymce/plugins/autolink'
|
|
33
|
+
// import 'tinymce/plugins/anchor'
|
|
33
34
|
|
|
34
35
|
import { platEditorProps } from './plat-editor-props'
|
|
36
|
+
import { platEditorEmits } from './plat-editor-emits'
|
|
35
37
|
import { useEditorState } from './hook'
|
|
38
|
+
|
|
36
39
|
defineOptions({
|
|
37
40
|
name: 'PlEditor'
|
|
38
41
|
})
|
|
39
42
|
const props = defineProps(platEditorProps)
|
|
40
|
-
const emit = defineEmits(
|
|
43
|
+
const emit = defineEmits(platEditorEmits)
|
|
41
44
|
|
|
42
45
|
const { init, modelValue } = useEditorState(props)
|
|
43
46
|
const editorBorder = ref('1px solid #d9d9d9')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const platEditorEmits = ['
|
|
1
|
+
export const platEditorEmits = ['update:value', 'change']
|