@cqsjjb/course-res-design 0.0.4 → 0.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.
- package/Designable.d.ts +21 -27
- package/Designable.js +7 -7
- package/package.json +1 -1
package/Designable.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import React from 'react';
|
|
|
5
5
|
*/
|
|
6
6
|
export interface DesignableCloseData {
|
|
7
7
|
/** 课程资源ID */
|
|
8
|
-
|
|
8
|
+
courseId: string;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -14,12 +14,28 @@ export interface DesignableCloseData {
|
|
|
14
14
|
export interface DesignableProps {
|
|
15
15
|
/** 自定义样式 */
|
|
16
16
|
style?: React.CSSProperties;
|
|
17
|
+
/** iframe 的样式 */
|
|
18
|
+
iframeStyle?: React.CSSProperties;
|
|
17
19
|
/** 主机地址(协议 + 域名 + 端口),用于构建 iframe 的源地址 */
|
|
18
20
|
host?: string;
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
/** 课程资源设计器的数据 */
|
|
22
|
+
data?: {
|
|
23
|
+
// 课程ID
|
|
24
|
+
courseId: string;
|
|
25
|
+
// 课程类型 1: 公共资源课程 2: 私有资源课程
|
|
26
|
+
type?: 'public' | 'private';
|
|
27
|
+
// 是否禁用课程形式
|
|
28
|
+
resourceTypeDisabled?: boolean;
|
|
29
|
+
// 课程形式默认值
|
|
30
|
+
resourceTypeDefault?: string;
|
|
31
|
+
// 是否禁用学时规则
|
|
32
|
+
hourRuleDisabled?: boolean;
|
|
33
|
+
// 学时规则默认值
|
|
34
|
+
hourRuleDefault?: string;
|
|
35
|
+
// 接口前缀
|
|
36
|
+
apiBaseName?: 'res' | 'courseScd';
|
|
37
|
+
[key: string]: any;
|
|
38
|
+
};
|
|
23
39
|
/** 关闭事件回调 */
|
|
24
40
|
onClose?: (data: DesignableCloseData) => void;
|
|
25
41
|
/** iframe 的源地址,如果提供则优先级高于 host */
|
|
@@ -28,28 +44,6 @@ export interface DesignableProps {
|
|
|
28
44
|
visible?: boolean;
|
|
29
45
|
}
|
|
30
46
|
|
|
31
|
-
/**
|
|
32
|
-
* 打开课程资源设计器的消息类型
|
|
33
|
-
*/
|
|
34
|
-
export interface OpenCourseResDesignMessage {
|
|
35
|
-
/** 消息类型 */
|
|
36
|
-
type: 'EVENT_OPEN_COURSE_RES_DESIGN' | 'EVENT_CLOSE_COURSE_RES_DESIGN';
|
|
37
|
-
/** 课程资源ID */
|
|
38
|
-
id: string;
|
|
39
|
-
/** 额外参数 */
|
|
40
|
-
extraParams: Record<string, any>;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* 关闭课程资源设计器的消息类型
|
|
45
|
-
*/
|
|
46
|
-
export interface CloseCourseResDesignMessage {
|
|
47
|
-
/** 消息类型 */
|
|
48
|
-
type: 'EVENT_CLOSE_COURSE_RES_DESIGN';
|
|
49
|
-
/** 课程资源ID */
|
|
50
|
-
id: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
47
|
/**
|
|
54
48
|
* 课程资源设计器组件
|
|
55
49
|
*
|
package/Designable.js
CHANGED
|
@@ -4,9 +4,9 @@ const EVENT_OPEN_COURSE_RES_DESIGN = 'EVENT_OPEN_COURSE_RES_DESIGN';
|
|
|
4
4
|
const EVENT_CLOSE_COURSE_RES_DESIGN = 'EVENT_CLOSE_COURSE_RES_DESIGN';
|
|
5
5
|
export const Designable = ({
|
|
6
6
|
style,
|
|
7
|
+
iframeStyle,
|
|
7
8
|
host = window.location.origin,
|
|
8
|
-
|
|
9
|
-
extraParams = {},
|
|
9
|
+
data = {},
|
|
10
10
|
onClose,
|
|
11
11
|
src,
|
|
12
12
|
visible = true
|
|
@@ -22,8 +22,7 @@ export const Designable = ({
|
|
|
22
22
|
if (iframeRef.current?.contentWindow) {
|
|
23
23
|
iframeRef.current.contentWindow.postMessage({
|
|
24
24
|
type: EVENT_OPEN_COURSE_RES_DESIGN,
|
|
25
|
-
|
|
26
|
-
extraParams: extraParams || {}
|
|
25
|
+
data: data || {}
|
|
27
26
|
}, new URL(iframeSrc).origin);
|
|
28
27
|
}
|
|
29
28
|
};
|
|
@@ -38,12 +37,12 @@ export const Designable = ({
|
|
|
38
37
|
}
|
|
39
38
|
if (event.data && event.data.type === EVENT_CLOSE_COURSE_RES_DESIGN) {
|
|
40
39
|
const {
|
|
41
|
-
|
|
40
|
+
courseId
|
|
42
41
|
} = event.data;
|
|
43
42
|
// 调用 onClose 回调
|
|
44
43
|
if (onClose) {
|
|
45
44
|
onClose({
|
|
46
|
-
|
|
45
|
+
courseId: courseId || ''
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
48
|
}
|
|
@@ -52,7 +51,7 @@ export const Designable = ({
|
|
|
52
51
|
return () => {
|
|
53
52
|
window.removeEventListener('message', handleMessage);
|
|
54
53
|
};
|
|
55
|
-
}, [onClose, iframeSrc
|
|
54
|
+
}, [onClose, iframeSrc]);
|
|
56
55
|
if (!visible) {
|
|
57
56
|
return null;
|
|
58
57
|
}
|
|
@@ -63,6 +62,7 @@ export const Designable = ({
|
|
|
63
62
|
ref: iframeRef,
|
|
64
63
|
src: iframeSrc,
|
|
65
64
|
frameBorder: "0",
|
|
65
|
+
style: iframeStyle,
|
|
66
66
|
className: "course-res-designable-iframe",
|
|
67
67
|
title: "\u8BFE\u7A0B\u8D44\u6E90\u8BBE\u8BA1\u5668",
|
|
68
68
|
onLoad: handleIframeLoad
|