@jetlinks-web/components 2.0.2 → 2.0.3
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/es/AMap/Map.js +124 -0
- package/es/AMap/index.js +2 -0
- package/es/AMap/util.js +56 -0
- package/es/BadgeStatus/Badge.js +54 -0
- package/es/BadgeStatus/color.js +21 -0
- package/es/BadgeStatus/index.js +3 -0
- package/es/CardSelect/CardSelect.js +123 -0
- package/es/CardSelect/index.js +2 -0
- package/es/CheckButton/CheckButton.js +121 -0
- package/es/CheckButton/index.js +2 -0
- package/es/ConfigProvider/context.js +12 -0
- package/es/ConfigProvider/index.js +31 -0
- package/es/Echarts/Echarts.js +47 -0
- package/es/Echarts/index.js +2 -0
- package/es/Ellipsis/Ellipsis.js +189 -0
- package/es/Ellipsis/index.js +2 -0
- package/es/Empty/Empty.js +56 -0
- package/es/Empty/image.js +2 -0
- package/es/Empty/index.js +2 -0
- package/es/FullPage/FullPage.js +31 -0
- package/es/FullPage/index.js +2 -0
- package/es/Icon/icon.js +42 -0
- package/{src/Icon/index.ts → es/Icon/index.js} +2 -3
- package/es/MonacoEditor/Monaco.js +238 -0
- package/es/MonacoEditor/index.js +2 -0
- package/es/PermissionButton/index.js +117 -0
- package/es/ProLayout/Basic/BasicLayout.js +259 -0
- package/es/ProLayout/Basic/Header.js +97 -0
- package/es/ProLayout/PageContainer/index.js +324 -0
- package/es/ProLayout/PageContainer/typings.js +1 -0
- package/es/ProLayout/RouteContext.js +22 -0
- package/es/ProLayout/SiderMenu/BaseMenu.js +285 -0
- package/es/ProLayout/SiderMenu/SiderMenu.js +278 -0
- package/es/ProLayout/SiderMenu/index.js +2 -0
- package/es/ProLayout/SiderMenu/typings.js +1 -0
- package/es/ProLayout/TopHeader/index.js +163 -0
- package/es/ProLayout/defaultSettings.js +66 -0
- package/{src/ProLayout/index.ts → es/ProLayout/index.js} +4 -6
- package/{src → es}/ProLayout/style/default.less +4 -4
- package/es/ProLayout/style/index.js +1 -0
- package/es/ProLayout/typings.js +1 -0
- package/es/ProLayout/util.js +61 -0
- package/es/ProTable/index.js +411 -0
- package/es/ProTable/proTableTypes.js +11 -0
- package/es/ProTable/style/index.css +65 -0
- package/es/ProTable/style/index.js +1 -0
- package/es/Scrollbar/Bar.js +114 -0
- package/es/Scrollbar/Scrollbar.js +212 -0
- package/es/Scrollbar/Thumb.js +189 -0
- package/es/Scrollbar/constants.js +1 -0
- package/es/Scrollbar/index.js +2 -0
- package/es/Scrollbar/scrollbarProps.js +100 -0
- package/es/Scrollbar/thumbProps.js +10 -0
- package/es/Scrollbar/util.js +30 -0
- package/es/Search/Advanced/History.js +183 -0
- package/es/Search/Advanced/SaveHistory.js +153 -0
- package/es/Search/Advanced/index.js +520 -0
- package/es/Search/Item.js +497 -0
- package/es/Search/Search.js +249 -0
- package/es/Search/hooks/index.js +1 -0
- package/es/Search/hooks/useSearchItems.js +40 -0
- package/es/Search/index.js +4 -0
- package/es/Search/setting.js +91 -0
- package/es/Search/style/Item.less +33 -0
- package/es/Search/style/Search.less +179 -0
- package/es/Search/style/index.js +2 -0
- package/es/Search/typing.js +1 -0
- package/es/Search/util.js +234 -0
- package/es/ValueItem/ValueItem.js +233 -0
- package/es/ValueItem/index.js +2 -0
- package/es/ValueItem/util.js +16 -0
- package/es/index.js +24 -0
- package/es/style/index.js +3 -0
- package/es/style/variable.css +0 -0
- package/{src → es}/style/variable.less +0 -2
- package/es/style.js +3 -0
- package/lib/AMap/Map.js +124 -0
- package/lib/AMap/index.js +9 -0
- package/lib/AMap/util.js +62 -0
- package/lib/BadgeStatus/Badge.js +54 -0
- package/lib/BadgeStatus/color.js +27 -0
- package/lib/BadgeStatus/index.js +22 -0
- package/lib/CardSelect/CardSelect.js +123 -0
- package/lib/CardSelect/index.js +9 -0
- package/lib/CheckButton/CheckButton.js +121 -0
- package/lib/CheckButton/index.js +9 -0
- package/lib/ConfigProvider/context.js +19 -0
- package/lib/ConfigProvider/index.js +37 -0
- package/lib/Echarts/Echarts.js +47 -0
- package/lib/Echarts/index.js +9 -0
- package/lib/Ellipsis/Ellipsis.js +189 -0
- package/lib/Ellipsis/index.js +9 -0
- package/lib/Empty/Empty.js +56 -0
- package/lib/Empty/image.js +8 -0
- package/lib/Empty/index.js +9 -0
- package/lib/FullPage/FullPage.js +31 -0
- package/lib/FullPage/index.js +9 -0
- package/lib/Icon/icon.js +52 -0
- package/lib/Icon/index.js +9 -0
- package/lib/MonacoEditor/Monaco.js +238 -0
- package/lib/MonacoEditor/index.js +9 -0
- package/lib/PermissionButton/index.js +124 -0
- package/lib/ProLayout/Basic/BasicLayout.js +268 -0
- package/lib/ProLayout/Basic/BasicLayout.less +66 -0
- package/lib/ProLayout/Basic/Header.js +103 -0
- package/lib/ProLayout/Basic/Header.less +8 -0
- package/lib/ProLayout/PageContainer/index.js +327 -0
- package/lib/ProLayout/PageContainer/index.less +103 -0
- package/lib/ProLayout/PageContainer/typings.js +5 -0
- package/lib/ProLayout/RouteContext.js +28 -0
- package/lib/ProLayout/SiderMenu/BaseMenu.js +290 -0
- package/lib/ProLayout/SiderMenu/SiderMenu.js +287 -0
- package/lib/ProLayout/SiderMenu/index.js +20 -0
- package/lib/ProLayout/SiderMenu/index.less +212 -0
- package/lib/ProLayout/SiderMenu/typings.js +5 -0
- package/lib/ProLayout/TopHeader/index.js +168 -0
- package/lib/ProLayout/TopHeader/index.less +174 -0
- package/lib/ProLayout/defaultSettings.js +72 -0
- package/lib/ProLayout/index.js +16 -0
- package/lib/ProLayout/style/default.less +4 -0
- package/lib/ProLayout/style/index.js +3 -0
- package/lib/ProLayout/style/style.less +7 -0
- package/lib/ProLayout/typings.js +5 -0
- package/lib/ProLayout/util.js +72 -0
- package/lib/ProTable/index.js +417 -0
- package/lib/ProTable/proTableTypes.js +17 -0
- package/lib/ProTable/style/index.css +65 -0
- package/lib/ProTable/style/index.js +3 -0
- package/lib/ProTable/style/index.less +92 -0
- package/lib/Scrollbar/Bar.js +114 -0
- package/lib/Scrollbar/Scrollbar.js +212 -0
- package/lib/Scrollbar/Thumb.js +189 -0
- package/lib/Scrollbar/constants.js +7 -0
- package/lib/Scrollbar/index.js +9 -0
- package/{src/Scrollbar/scrollbar.ts → lib/Scrollbar/scrollbarProps.js} +106 -108
- package/lib/Scrollbar/thumbProps.js +16 -0
- package/lib/Scrollbar/util.js +37 -0
- package/lib/Search/Advanced/History.js +183 -0
- package/lib/Search/Advanced/SaveHistory.js +153 -0
- package/lib/Search/Advanced/index.js +520 -0
- package/lib/Search/Item.js +497 -0
- package/lib/Search/Search.js +249 -0
- package/lib/Search/hooks/index.js +16 -0
- package/lib/Search/hooks/useSearchItems.js +47 -0
- package/lib/Search/index.js +16 -0
- package/lib/Search/setting.js +97 -0
- package/lib/Search/style/Item.less +33 -0
- package/lib/Search/style/Search.less +179 -0
- package/lib/Search/style/index.js +4 -0
- package/lib/Search/typing.js +5 -0
- package/lib/Search/util.js +241 -0
- package/lib/ValueItem/ValueItem.js +233 -0
- package/lib/ValueItem/index.js +9 -0
- package/lib/ValueItem/util.js +22 -0
- package/lib/index.js +158 -0
- package/lib/style/components.less +1 -0
- package/lib/style/index.js +4 -0
- package/lib/style/variable.css +0 -0
- package/lib/style/variable.less +2 -0
- package/lib/style.js +5 -0
- package/package.json +122 -13
- package/index.ts +0 -64
- package/src/AMap/Map.vue +0 -110
- package/src/AMap/index.ts +0 -1
- package/src/AMap/util.ts +0 -56
- package/src/BadgeStatus/Badge.vue +0 -41
- package/src/BadgeStatus/color.ts +0 -25
- package/src/BadgeStatus/index.ts +0 -4
- package/src/CardSelect/CardSelect.vue +0 -136
- package/src/CardSelect/index.ts +0 -3
- package/src/CheckButton/CheckButton.vue +0 -146
- package/src/CheckButton/index.md +0 -27
- package/src/CheckButton/index.ts +0 -3
- package/src/ConfigProvider/context.ts +0 -17
- package/src/ConfigProvider/index.tsx +0 -42
- package/src/Echarts/Echarts.vue +0 -43
- package/src/Echarts/index.ts +0 -3
- package/src/Ellipsis/Ellipsis.vue +0 -182
- package/src/Ellipsis/index.ts +0 -3
- package/src/Empty/Empty.vue +0 -43
- package/src/Empty/image.ts +0 -3
- package/src/Empty/index.ts +0 -2
- package/src/FullPage/FullPage.vue +0 -30
- package/src/FullPage/index.ts +0 -3
- package/src/Icon/icon.tsx +0 -40
- package/src/MonacoEditor/Monaco.vue +0 -242
- package/src/MonacoEditor/index.md +0 -26
- package/src/MonacoEditor/index.ts +0 -2
- package/src/PermissionButton/index.tsx +0 -110
- package/src/ProLayout/Basic/BasicLayout.tsx +0 -392
- package/src/ProLayout/Basic/Header.tsx +0 -115
- package/src/ProLayout/PageContainer/index.tsx +0 -441
- package/src/ProLayout/PageContainer/typings.ts +0 -56
- package/src/ProLayout/RouteContext.ts +0 -87
- package/src/ProLayout/SiderMenu/BaseMenu.tsx +0 -296
- package/src/ProLayout/SiderMenu/SiderMenu.tsx +0 -320
- package/src/ProLayout/SiderMenu/index.ts +0 -2
- package/src/ProLayout/SiderMenu/typings.ts +0 -49
- package/src/ProLayout/TopHeader/index.tsx +0 -210
- package/src/ProLayout/defaultSettings.ts +0 -106
- package/src/ProLayout/style/index.ts +0 -1
- package/src/ProLayout/typings.ts +0 -87
- package/src/ProLayout/util.ts +0 -64
- package/src/ProTable/index.md +0 -53
- package/src/ProTable/index.tsx +0 -551
- package/src/ProTable/proTableTypes.ts +0 -70
- package/src/ProTable/style/index.ts +0 -1
- package/src/Scrollbar/Bar.vue +0 -75
- package/src/Scrollbar/Scrollbar.vue +0 -260
- package/src/Scrollbar/Thumb.vue +0 -163
- package/src/Scrollbar/constants.ts +0 -10
- package/src/Scrollbar/index.ts +0 -4
- package/src/Scrollbar/thumb.ts +0 -16
- package/src/Scrollbar/util.ts +0 -38
- package/src/Search/Advanced/History.vue +0 -140
- package/src/Search/Advanced/SaveHistory.vue +0 -108
- package/src/Search/Advanced/index.vue +0 -435
- package/src/Search/Item.vue +0 -525
- package/src/Search/Search.vue +0 -398
- package/src/Search/hooks/index.ts +0 -1
- package/src/Search/hooks/useSearchItems.ts +0 -68
- package/src/Search/index.md +0 -57
- package/src/Search/index.ts +0 -5
- package/src/Search/setting.ts +0 -55
- package/src/Search/typing.ts +0 -76
- package/src/Search/util.ts +0 -263
- package/src/ValueItem/ValueItem.vue +0 -192
- package/src/ValueItem/index.ts +0 -3
- package/src/ValueItem/util.ts +0 -16
- package/src/style/index.ts +0 -3
- /package/{src → es}/ProLayout/Basic/BasicLayout.less +0 -0
- /package/{src → es}/ProLayout/Basic/Header.less +0 -0
- /package/{src → es}/ProLayout/PageContainer/index.less +0 -0
- /package/{src → es}/ProLayout/SiderMenu/index.less +0 -0
- /package/{src → es}/ProLayout/TopHeader/index.less +0 -0
- /package/{src → es}/ProLayout/style/style.less +0 -0
- /package/{src → es}/ProTable/style/index.less +0 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { Fragment as _Fragment } from "vue";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
|
+
import { createTextVNode as _createTextVNode } from "vue";
|
|
4
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
|
+
import { createVNode as _createVNode, isVNode as _isVNode } from "vue";
|
|
6
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
7
|
+
var _excluded = ["title", "tabList", "tabActiveKey", "content", "pageHeaderRender", "header", "extraContent", "prefixedClassName", "prefixCls", "fixedHeader", "showBack"];
|
|
8
|
+
import { withInstall } from 'ant-design-vue/es/_util/type';
|
|
9
|
+
import { Affix, Spin, PageHeader, Tabs, Button } from 'ant-design-vue';
|
|
10
|
+
import { defineComponent, unref, toRefs, computed } from 'vue';
|
|
11
|
+
import { pageHeaderProps } from 'ant-design-vue/es/page-header';
|
|
12
|
+
import { useRouteContext } from '../RouteContext';
|
|
13
|
+
import { getSlotVNode } from '../util';
|
|
14
|
+
import 'ant-design-vue/es/_util/type';
|
|
15
|
+
import './index.less';
|
|
16
|
+
function _isSlot(s) {
|
|
17
|
+
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !_isVNode(s);
|
|
18
|
+
}
|
|
19
|
+
export var pageHeaderTabConfig = {
|
|
20
|
+
/**
|
|
21
|
+
* @name tabs 的列表
|
|
22
|
+
*/
|
|
23
|
+
tabList: {
|
|
24
|
+
type: [Object, Function, Array],
|
|
25
|
+
default: function _default() {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
/**
|
|
30
|
+
* @name 当前选中 tab 的 key
|
|
31
|
+
*/
|
|
32
|
+
tabActiveKey: String,
|
|
33
|
+
/**
|
|
34
|
+
* @name tab 上多余的区域
|
|
35
|
+
*/
|
|
36
|
+
tabBarExtraContent: {
|
|
37
|
+
type: [Object, Function],
|
|
38
|
+
default: function _default() {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* @name tabs 的其他配置
|
|
44
|
+
*/
|
|
45
|
+
tabProps: {
|
|
46
|
+
type: Object,
|
|
47
|
+
default: function _default() {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* @name 固定 PageHeader 到页面顶部
|
|
53
|
+
*/
|
|
54
|
+
fixedHeader: Boolean,
|
|
55
|
+
// events
|
|
56
|
+
onTabChange: Function,
|
|
57
|
+
pure: Boolean
|
|
58
|
+
};
|
|
59
|
+
export var pageContainerProps = _objectSpread(_objectSpread(_objectSpread({}, pageHeaderTabConfig), pageHeaderProps), {}, {
|
|
60
|
+
prefixCls: {
|
|
61
|
+
type: String,
|
|
62
|
+
default: 'ant-pro'
|
|
63
|
+
},
|
|
64
|
+
title: {
|
|
65
|
+
type: [Object, String, Boolean, Function],
|
|
66
|
+
default: function _default() {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
subTitle: {
|
|
71
|
+
type: [Object, String, Boolean, Function],
|
|
72
|
+
default: function _default() {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
content: {
|
|
77
|
+
type: [Object, String, Boolean, Function],
|
|
78
|
+
default: function _default() {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
extra: {
|
|
83
|
+
type: [Object, String, Boolean, Function],
|
|
84
|
+
default: function _default() {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
extraContent: {
|
|
89
|
+
type: [Object, String, Boolean, Function],
|
|
90
|
+
default: function _default() {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
header: {
|
|
95
|
+
type: [Object, String, Boolean, Function],
|
|
96
|
+
default: function _default() {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
pageHeaderRender: {
|
|
101
|
+
type: [Object, Function, Boolean],
|
|
102
|
+
default: function _default() {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
affixProps: {
|
|
107
|
+
type: [Object, Function]
|
|
108
|
+
},
|
|
109
|
+
ghost: {
|
|
110
|
+
type: Boolean,
|
|
111
|
+
default: function _default() {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
loading: {
|
|
116
|
+
type: Boolean,
|
|
117
|
+
default: function _default() {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
childrenFullHeight: {
|
|
122
|
+
type: Boolean,
|
|
123
|
+
default: function _default() {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
pure: {
|
|
128
|
+
type: Boolean,
|
|
129
|
+
default: false
|
|
130
|
+
},
|
|
131
|
+
showBack: {
|
|
132
|
+
type: Boolean,
|
|
133
|
+
default: false
|
|
134
|
+
},
|
|
135
|
+
contentStyle: {
|
|
136
|
+
type: Object,
|
|
137
|
+
default: function _default() {
|
|
138
|
+
return {};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
var renderFooter = function renderFooter(props) {
|
|
143
|
+
var tabList = props.tabList,
|
|
144
|
+
tabActiveKey = props.tabActiveKey,
|
|
145
|
+
onTabChange = props.onTabChange,
|
|
146
|
+
tabBarExtraContent = props.tabBarExtraContent,
|
|
147
|
+
tabProps = props.tabProps;
|
|
148
|
+
var tabPane = function tabPane(item) {
|
|
149
|
+
return _createVNode("span", {
|
|
150
|
+
"class": item.class || "tab-pane-".concat(item.key)
|
|
151
|
+
}, [item.tab]);
|
|
152
|
+
};
|
|
153
|
+
if (tabList && tabList.length) {
|
|
154
|
+
var _slot;
|
|
155
|
+
return _createVNode(Tabs, _objectSpread({
|
|
156
|
+
"class": "page-container-tabs",
|
|
157
|
+
"activeKey": tabActiveKey,
|
|
158
|
+
"onChange": function onChange(key) {
|
|
159
|
+
if (onTabChange) {
|
|
160
|
+
onTabChange(key);
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"tabBarExtraContent": tabBarExtraContent
|
|
164
|
+
}, tabProps), _isSlot(_slot = tabList.map(function (item) {
|
|
165
|
+
return _createVNode(Tabs.TabPane, _objectSpread(_objectSpread({}, item), {}, {
|
|
166
|
+
"tab": tabPane(item),
|
|
167
|
+
"key": item.key
|
|
168
|
+
}), null);
|
|
169
|
+
})) ? _slot : {
|
|
170
|
+
default: function _default() {
|
|
171
|
+
return [_slot];
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
};
|
|
177
|
+
var renderPageHeader = function renderPageHeader(content, extraContent, prefixedClassName) {
|
|
178
|
+
if (!content && !extraContent) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
return _createVNode("div", {
|
|
182
|
+
"class": "".concat(prefixedClassName, "-detail")
|
|
183
|
+
}, [_createVNode("div", {
|
|
184
|
+
"class": "".concat(prefixedClassName, "-main")
|
|
185
|
+
}, [_createVNode("div", {
|
|
186
|
+
"class": "".concat(prefixedClassName, "-row")
|
|
187
|
+
}, [content && _createVNode("div", {
|
|
188
|
+
"class": "".concat(prefixedClassName, "-content")
|
|
189
|
+
}, [
|
|
190
|
+
// @ts-ignore
|
|
191
|
+
typeof content === 'function' && content() || content]), extraContent && _createVNode("div", {
|
|
192
|
+
"class": "".concat(prefixedClassName, "-extraContent")
|
|
193
|
+
}, [
|
|
194
|
+
// @ts-ignore
|
|
195
|
+
typeof extraContent === 'function' && extraContent() || extraContent])])])]);
|
|
196
|
+
};
|
|
197
|
+
var ProPageHeader = function ProPageHeader(props) {
|
|
198
|
+
var title = props.title,
|
|
199
|
+
tabList = props.tabList,
|
|
200
|
+
tabActiveKey = props.tabActiveKey,
|
|
201
|
+
content = props.content,
|
|
202
|
+
pageHeaderRender = props.pageHeaderRender,
|
|
203
|
+
header = props.header,
|
|
204
|
+
extraContent = props.extraContent,
|
|
205
|
+
prefixedClassName = props.prefixedClassName,
|
|
206
|
+
prefixCls = props.prefixCls,
|
|
207
|
+
_ = props.fixedHeader,
|
|
208
|
+
showBack = props.showBack,
|
|
209
|
+
restProps = _objectWithoutProperties(props, _excluded);
|
|
210
|
+
var value = useRouteContext();
|
|
211
|
+
if (pageHeaderRender === false) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
if (pageHeaderRender) {
|
|
215
|
+
return pageHeaderRender(_objectSpread({}, props));
|
|
216
|
+
}
|
|
217
|
+
var pageHeaderTitle = title;
|
|
218
|
+
if (!title && title !== false) {
|
|
219
|
+
pageHeaderTitle = value.title;
|
|
220
|
+
}
|
|
221
|
+
var unrefBreadcrumb = unref(value.breadcrumb || {});
|
|
222
|
+
var breadcrumb = props.breadcrumb || _objectSpread(_objectSpread({}, unrefBreadcrumb), {}, {
|
|
223
|
+
routes: unrefBreadcrumb.routes,
|
|
224
|
+
itemRender: unrefBreadcrumb.itemRender
|
|
225
|
+
});
|
|
226
|
+
var backProps = {};
|
|
227
|
+
if (showBack) {
|
|
228
|
+
// @ts-ignore
|
|
229
|
+
backProps.backIcon = _createVNode(Button, null, {
|
|
230
|
+
default: function _default() {
|
|
231
|
+
return [_createTextVNode("\u8FD4\u56DE")];
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
backProps.onBack = function () {
|
|
235
|
+
var _value$back;
|
|
236
|
+
(_value$back = value.back) === null || _value$back === void 0 ? void 0 : _value$back.call(value);
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
return _createVNode("div", {
|
|
240
|
+
"class": "".concat(prefixedClassName, "-wrap")
|
|
241
|
+
}, [_createVNode(PageHeader, _objectSpread(_objectSpread(_objectSpread({}, backProps), restProps), {}, {
|
|
242
|
+
"title": pageHeaderTitle,
|
|
243
|
+
"breadcrumb": breadcrumb,
|
|
244
|
+
"footer": renderFooter(_objectSpread(_objectSpread({}, restProps), {}, {
|
|
245
|
+
tabList: tabList,
|
|
246
|
+
tabActiveKey: tabActiveKey
|
|
247
|
+
})),
|
|
248
|
+
"prefixCls": prefixCls
|
|
249
|
+
}), {
|
|
250
|
+
default: function _default() {
|
|
251
|
+
return [header || renderPageHeader(content, extraContent, prefixedClassName)];
|
|
252
|
+
}
|
|
253
|
+
})]);
|
|
254
|
+
};
|
|
255
|
+
var PageContainer = defineComponent({
|
|
256
|
+
name: 'JPageContainer',
|
|
257
|
+
inheritAttrs: false,
|
|
258
|
+
props: pageContainerProps,
|
|
259
|
+
setup: function setup(props, _ref) {
|
|
260
|
+
var slots = _ref.slots,
|
|
261
|
+
attrs = _ref.attrs;
|
|
262
|
+
var _toRefs = toRefs(props),
|
|
263
|
+
loading = _toRefs.loading,
|
|
264
|
+
affixProps = _toRefs.affixProps,
|
|
265
|
+
ghost = _toRefs.ghost,
|
|
266
|
+
childrenFullHeight = _toRefs.childrenFullHeight;
|
|
267
|
+
var value = useRouteContext();
|
|
268
|
+
var getPrefixCls = value.getPrefixCls;
|
|
269
|
+
var prefixCls = props.prefixCls || getPrefixCls();
|
|
270
|
+
var prefixedClassName = computed(function () {
|
|
271
|
+
return "".concat(prefixCls, "-page-container");
|
|
272
|
+
});
|
|
273
|
+
var classNames = computed(function () {
|
|
274
|
+
return _defineProperty(_defineProperty({}, prefixedClassName.value, true), "".concat(prefixCls, "-page-container-ghost"), ghost.value);
|
|
275
|
+
});
|
|
276
|
+
var headerDom = computed(function () {
|
|
277
|
+
// const tags = getSlotVNode<DefaultPropRender>(slots, props, 'tags');
|
|
278
|
+
var headerContent = getSlotVNode(slots, props, 'content');
|
|
279
|
+
var extra = getSlotVNode(slots, props, 'extra');
|
|
280
|
+
var extraContent = getSlotVNode(slots, props, 'extraContent');
|
|
281
|
+
var subTitle = getSlotVNode(slots, props, 'subTitle');
|
|
282
|
+
var title = getSlotVNode(slots, props, 'title');
|
|
283
|
+
// @ts-ignore
|
|
284
|
+
return _createVNode(ProPageHeader, _objectSpread(_objectSpread({}, props), {}, {
|
|
285
|
+
"prefixCls": undefined,
|
|
286
|
+
"prefixedClassName": prefixedClassName.value,
|
|
287
|
+
"ghost": ghost.value,
|
|
288
|
+
"title": title,
|
|
289
|
+
"subTitle": subTitle,
|
|
290
|
+
"content": headerContent,
|
|
291
|
+
"extra": extra,
|
|
292
|
+
"extraContent": extraContent
|
|
293
|
+
}), null);
|
|
294
|
+
});
|
|
295
|
+
return function () {
|
|
296
|
+
var _slots$default;
|
|
297
|
+
var fixedHeader = props.fixedHeader,
|
|
298
|
+
pure = props.pure;
|
|
299
|
+
return _createVNode(_Fragment, null, [pure ? _createVNode("div", {
|
|
300
|
+
"class": classNames.value
|
|
301
|
+
}, [(_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]) : _createVNode("div", {
|
|
302
|
+
"class": classNames.value,
|
|
303
|
+
"style": _objectSpread({}, attrs.style || {})
|
|
304
|
+
}, [fixedHeader && headerDom.value ? _createVNode(Affix, _objectSpread(_objectSpread({}, affixProps.value), {}, {
|
|
305
|
+
"offsetTop": value.hasHeader && value.fixedHeader ? value.headerHeight : 0
|
|
306
|
+
}), {
|
|
307
|
+
default: function _default() {
|
|
308
|
+
return [headerDom.value];
|
|
309
|
+
}
|
|
310
|
+
}) : headerDom.value, _createVNode("div", {
|
|
311
|
+
"class": "".concat(prefixedClassName.value, "-grid-content")
|
|
312
|
+
}, [loading.value ? _createVNode(Spin, null, null) : slots.default ? _createVNode("div", null, [_createVNode("div", {
|
|
313
|
+
"class": "".concat(prefixedClassName.value, "-children-content ").concat(childrenFullHeight.value ? 'children-full-height' : ''),
|
|
314
|
+
"style": _objectSpread({}, props.contentStyle || {})
|
|
315
|
+
}, [slots.default()]), value.hasFooterToolbar && _createVNode("div", {
|
|
316
|
+
"style": {
|
|
317
|
+
height: 48,
|
|
318
|
+
marginTop: 24
|
|
319
|
+
}
|
|
320
|
+
}, null)]) : null])])]);
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
export default withInstall(PageContainer);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { provide, reactive } from 'vue';
|
|
2
|
+
import { useContext } from '@jetlinks-web/hooks';
|
|
3
|
+
export var defaultPrefixCls = 'ant-pro';
|
|
4
|
+
export var getPrefixCls = function getPrefixCls(suffixCls, customizePrefixCls) {
|
|
5
|
+
if (customizePrefixCls) return customizePrefixCls;
|
|
6
|
+
return suffixCls ? "".concat(defaultPrefixCls, "-").concat(suffixCls) : defaultPrefixCls;
|
|
7
|
+
};
|
|
8
|
+
export var defaultRouteContext = reactive({
|
|
9
|
+
getPrefixCls: getPrefixCls,
|
|
10
|
+
locale: function locale(t) {
|
|
11
|
+
return t;
|
|
12
|
+
},
|
|
13
|
+
contentWidth: 'Fluid',
|
|
14
|
+
hasFooterToolbar: false
|
|
15
|
+
});
|
|
16
|
+
export var routeContextInjectKey = Symbol('jetlinks-route-context');
|
|
17
|
+
export var provideRouteContext = function provideRouteContext(value) {
|
|
18
|
+
provide(routeContextInjectKey, value);
|
|
19
|
+
};
|
|
20
|
+
export var useRouteContext = function useRouteContext() {
|
|
21
|
+
return useContext(routeContextInjectKey, defaultRouteContext);
|
|
22
|
+
};
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import { isVNode as _isVNode } from "vue";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
5
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
6
|
+
import { createVNode as _createVNode } from "vue";
|
|
7
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
8
|
+
import { defaultSettingProps } from '../defaultSettings';
|
|
9
|
+
import { defineComponent, getCurrentInstance, isVNode, resolveComponent, watchEffect, withCtx } from 'vue';
|
|
10
|
+
import { defaultPrefixCls } from '../RouteContext';
|
|
11
|
+
import IconFont from '../../Icon';
|
|
12
|
+
import { regular } from '@jetlinks-web/utils';
|
|
13
|
+
import { Menu } from 'ant-design-vue';
|
|
14
|
+
import { createFromIconfontCN } from '@ant-design/icons-vue';
|
|
15
|
+
function _isSlot(s) {
|
|
16
|
+
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !_isVNode(s);
|
|
17
|
+
}
|
|
18
|
+
export var baseMenuProps = _objectSpread(_objectSpread({}, defaultSettingProps), {}, {
|
|
19
|
+
prefixCls: {
|
|
20
|
+
type: String,
|
|
21
|
+
default: function _default() {
|
|
22
|
+
return defaultPrefixCls;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
locale: {
|
|
26
|
+
type: [Function, Boolean],
|
|
27
|
+
default: function _default(t) {
|
|
28
|
+
return t;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
menuData: {
|
|
32
|
+
type: Array,
|
|
33
|
+
default: function _default() {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
mode: {
|
|
38
|
+
type: String,
|
|
39
|
+
default: 'inline'
|
|
40
|
+
},
|
|
41
|
+
theme: {
|
|
42
|
+
type: String,
|
|
43
|
+
default: 'dark'
|
|
44
|
+
},
|
|
45
|
+
collapsed: {
|
|
46
|
+
type: Boolean,
|
|
47
|
+
default: function _default() {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
openKeys: {
|
|
52
|
+
type: Array,
|
|
53
|
+
default: function _default() {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
selectedKeys: {
|
|
58
|
+
type: Array,
|
|
59
|
+
default: function _default() {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
menuProps: {
|
|
64
|
+
type: Object,
|
|
65
|
+
default: function _default() {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
menuItemRender: {
|
|
70
|
+
type: [Object, Function, Boolean],
|
|
71
|
+
default: function _default() {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
subMenuItemRender: {
|
|
76
|
+
type: [Object, Function, Boolean],
|
|
77
|
+
default: function _default() {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
onClick: [Function, Object]
|
|
82
|
+
});
|
|
83
|
+
var AntdIconFont = createFromIconfontCN({
|
|
84
|
+
scriptUrl: ''
|
|
85
|
+
});
|
|
86
|
+
var LazyIcon = function LazyIcon(props) {
|
|
87
|
+
var icon = props.icon,
|
|
88
|
+
iconUrl = props.iconUrl,
|
|
89
|
+
_props$prefixCls = props.prefixCls,
|
|
90
|
+
prefixCls = _props$prefixCls === void 0 ? defaultPrefixCls : _props$prefixCls;
|
|
91
|
+
if (!icon) return null;
|
|
92
|
+
if (isVNode(icon)) {
|
|
93
|
+
return icon;
|
|
94
|
+
}
|
|
95
|
+
if (typeof icon === 'string' && icon !== '') {
|
|
96
|
+
if (regular.isUrl(icon) || regular.isImg(icon)) {
|
|
97
|
+
return _createVNode("img", {
|
|
98
|
+
"src": icon,
|
|
99
|
+
"alt": "icon",
|
|
100
|
+
"class": "".concat(prefixCls, "-sider-menu-icon")
|
|
101
|
+
}, null);
|
|
102
|
+
}
|
|
103
|
+
return iconUrl ? _createVNode(AntdIconFont, {
|
|
104
|
+
"type": icon
|
|
105
|
+
}, null) : _createVNode(IconFont, {
|
|
106
|
+
"type": icon
|
|
107
|
+
}, null);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
var MenuUtil = /*#__PURE__*/_createClass(function MenuUtil(_props, ctx) {
|
|
111
|
+
var _this = this;
|
|
112
|
+
_classCallCheck(this, MenuUtil);
|
|
113
|
+
_defineProperty(this, "getNavMenuItems", function () {
|
|
114
|
+
var menusData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
115
|
+
return menusData.map(function (item) {
|
|
116
|
+
return _this.getSubMenuOrItem(item);
|
|
117
|
+
}).filter(function (item) {
|
|
118
|
+
return item;
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
_defineProperty(this, "getSubMenuOrItem", function (item) {
|
|
122
|
+
var _item$meta, _item$meta2, _item$meta7, _item$meta8;
|
|
123
|
+
if (Array.isArray(item.children) && item.children.length > 0 && !(item === null || item === void 0 ? void 0 : (_item$meta = item.meta) === null || _item$meta === void 0 ? void 0 : _item$meta.hideInMenu) && !(item === null || item === void 0 ? void 0 : (_item$meta2 = item.meta) === null || _item$meta2 === void 0 ? void 0 : _item$meta2.hideChildrenInMenu)) {
|
|
124
|
+
var _slot;
|
|
125
|
+
var _item$meta3, _item$meta4, _item$meta5, _item$meta6;
|
|
126
|
+
if (_this.props.subMenuItemRender) {
|
|
127
|
+
var subMenuItemRender = withCtx(_this.props.subMenuItemRender, _this.ctx);
|
|
128
|
+
return subMenuItemRender({
|
|
129
|
+
item: item,
|
|
130
|
+
children: _this.getNavMenuItems(item.children)
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
var _this$props = _this.props,
|
|
134
|
+
prefixCls = _this$props.prefixCls,
|
|
135
|
+
locale = _this$props.locale;
|
|
136
|
+
var menuTitle = locale && locale((_item$meta3 = item.meta) === null || _item$meta3 === void 0 ? void 0 : _item$meta3.title) || ((_item$meta4 = item.meta) === null || _item$meta4 === void 0 ? void 0 : _item$meta4.title);
|
|
137
|
+
var defaultTitle = ((_item$meta5 = item.meta) === null || _item$meta5 === void 0 ? void 0 : _item$meta5.icon) ? _createVNode("span", {
|
|
138
|
+
"class": "".concat(prefixCls, "-menu-item")
|
|
139
|
+
}, [_createVNode("span", {
|
|
140
|
+
"class": "".concat(prefixCls, "-menu-item-title")
|
|
141
|
+
}, _isSlot(menuTitle) ? menuTitle : {
|
|
142
|
+
default: function _default() {
|
|
143
|
+
return [menuTitle];
|
|
144
|
+
}
|
|
145
|
+
})]) : _createVNode("span", {
|
|
146
|
+
"class": "".concat(prefixCls, "-menu-item")
|
|
147
|
+
}, _isSlot(menuTitle) ? menuTitle : {
|
|
148
|
+
default: function _default() {
|
|
149
|
+
return [menuTitle];
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
return _createVNode(Menu.SubMenu, {
|
|
153
|
+
"title": defaultTitle,
|
|
154
|
+
"key": item.path,
|
|
155
|
+
"popupClassName": "".concat(prefixCls, "-menu-popup"),
|
|
156
|
+
"icon": _createVNode(LazyIcon, {
|
|
157
|
+
"iconUrl": _this.props.iconfontUrl,
|
|
158
|
+
"icon": (_item$meta6 = item.meta) === null || _item$meta6 === void 0 ? void 0 : _item$meta6.icon
|
|
159
|
+
}, null)
|
|
160
|
+
}, _isSlot(_slot = _this.getNavMenuItems(item.children)) ? _slot : {
|
|
161
|
+
default: function _default() {
|
|
162
|
+
return [_slot];
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
var menuItemRender = _this.props.menuItemRender && withCtx(_this.props.menuItemRender, _this.ctx);
|
|
167
|
+
var _this$getMenuItem = _this.getMenuItem(item),
|
|
168
|
+
_this$getMenuItem2 = _slicedToArray(_this$getMenuItem, 2),
|
|
169
|
+
title = _this$getMenuItem2[0],
|
|
170
|
+
icon = _this$getMenuItem2[1];
|
|
171
|
+
return menuItemRender && menuItemRender({
|
|
172
|
+
item: item,
|
|
173
|
+
title: title,
|
|
174
|
+
icon: icon
|
|
175
|
+
}) || _createVNode(Menu.Item, {
|
|
176
|
+
"disabled": (_item$meta7 = item.meta) === null || _item$meta7 === void 0 ? void 0 : _item$meta7.disabled,
|
|
177
|
+
"danger": (_item$meta8 = item.meta) === null || _item$meta8 === void 0 ? void 0 : _item$meta8.danger,
|
|
178
|
+
"key": item.path
|
|
179
|
+
}, _isSlot(title) ? title : {
|
|
180
|
+
default: function _default() {
|
|
181
|
+
return [title];
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
_defineProperty(this, "getMenuItem", function (item) {
|
|
186
|
+
var _slot2;
|
|
187
|
+
var _item$meta9, _item$meta10, _item$meta11, _item$meta12, _item$meta13;
|
|
188
|
+
var meta = _objectSpread({}, item.meta);
|
|
189
|
+
var target = meta.target || null;
|
|
190
|
+
var hasUrl = regular.isUrl(item.path);
|
|
191
|
+
var CustomTag = target && 'a' || _this.RouterLink;
|
|
192
|
+
var props = {
|
|
193
|
+
to: _objectSpread({
|
|
194
|
+
name: item.name
|
|
195
|
+
}, item.meta)
|
|
196
|
+
};
|
|
197
|
+
var attrs = hasUrl || target ? _objectSpread(_objectSpread({}, item.meta), {}, {
|
|
198
|
+
href: item.path,
|
|
199
|
+
target: target
|
|
200
|
+
}) : {};
|
|
201
|
+
var _this$props2 = _this.props,
|
|
202
|
+
prefixCls = _this$props2.prefixCls,
|
|
203
|
+
locale = _this$props2.locale;
|
|
204
|
+
var icon = ((_item$meta9 = item.meta) === null || _item$meta9 === void 0 ? void 0 : _item$meta9.icon) && _createVNode(LazyIcon, {
|
|
205
|
+
"iconUrl": _this.props.iconfontUrl,
|
|
206
|
+
"icon": (_item$meta10 = item.meta) === null || _item$meta10 === void 0 ? void 0 : _item$meta10.icon
|
|
207
|
+
}, null) || undefined;
|
|
208
|
+
var menuTitle = locale && locale((_item$meta11 = item.meta) === null || _item$meta11 === void 0 ? void 0 : _item$meta11.title) || ((_item$meta12 = item.meta) === null || _item$meta12 === void 0 ? void 0 : _item$meta12.title);
|
|
209
|
+
var defaultTitle = ((_item$meta13 = item.meta) === null || _item$meta13 === void 0 ? void 0 : _item$meta13.icon) ? _createVNode(CustomTag, _objectSpread(_objectSpread(_objectSpread({}, attrs), props), {}, {
|
|
210
|
+
"class": "".concat(prefixCls, "-menu-item")
|
|
211
|
+
}), {
|
|
212
|
+
default: function _default() {
|
|
213
|
+
return [icon, _createVNode("span", {
|
|
214
|
+
"class": "".concat(prefixCls, "-menu-item-title")
|
|
215
|
+
}, _isSlot(menuTitle) ? menuTitle : {
|
|
216
|
+
default: function _default() {
|
|
217
|
+
return [menuTitle];
|
|
218
|
+
}
|
|
219
|
+
})];
|
|
220
|
+
}
|
|
221
|
+
}) : _createVNode(CustomTag, _objectSpread(_objectSpread(_objectSpread({}, attrs), props), {}, {
|
|
222
|
+
"class": "".concat(prefixCls, "-menu-item")
|
|
223
|
+
}), _isSlot(_slot2 = _createVNode("span", null, _isSlot(menuTitle) ? menuTitle : {
|
|
224
|
+
default: function _default() {
|
|
225
|
+
return [menuTitle];
|
|
226
|
+
}
|
|
227
|
+
})) ? _slot2 : {
|
|
228
|
+
default: function _default() {
|
|
229
|
+
return [_slot2];
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
return [defaultTitle, icon];
|
|
233
|
+
});
|
|
234
|
+
this.props = _props;
|
|
235
|
+
this.ctx = ctx;
|
|
236
|
+
this.RouterLink = resolveComponent('router-link');
|
|
237
|
+
});
|
|
238
|
+
export default defineComponent({
|
|
239
|
+
name: 'BaseMenu',
|
|
240
|
+
props: baseMenuProps,
|
|
241
|
+
emits: ['update:openKeys', 'update:selectedKeys', 'click'],
|
|
242
|
+
setup: function setup(props, _ref) {
|
|
243
|
+
var emit = _ref.emit;
|
|
244
|
+
var ctx = getCurrentInstance();
|
|
245
|
+
var menuUtil = new MenuUtil(props, ctx);
|
|
246
|
+
watchEffect(function () {
|
|
247
|
+
if (props.iconfontUrl) {
|
|
248
|
+
AntdIconFont = createFromIconfontCN({
|
|
249
|
+
scriptUrl: props.iconfontUrl
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
var handleOpenChange = function handleOpenChange(openKeys) {
|
|
254
|
+
emit('update:openKeys', openKeys);
|
|
255
|
+
};
|
|
256
|
+
var handleSelect = function handleSelect(args) {
|
|
257
|
+
// ignore https? link handle selectkeys
|
|
258
|
+
if (regular.isUrl(args.key)) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
emit('update:selectedKeys', args.selectedKeys);
|
|
262
|
+
};
|
|
263
|
+
var handleClick = function handleClick(args) {
|
|
264
|
+
emit('click', args);
|
|
265
|
+
};
|
|
266
|
+
return function () {
|
|
267
|
+
var _slot3;
|
|
268
|
+
return _createVNode(Menu, _objectSpread({
|
|
269
|
+
"key": "Menu",
|
|
270
|
+
"inlineIndent": 16,
|
|
271
|
+
"mode": props.mode,
|
|
272
|
+
"theme": props.theme,
|
|
273
|
+
"openKeys": props.openKeys === false ? [] : props.openKeys,
|
|
274
|
+
"selectedKeys": props.selectedKeys || [],
|
|
275
|
+
"onOpenChange": handleOpenChange,
|
|
276
|
+
"onSelect": handleSelect,
|
|
277
|
+
"onClick": handleClick
|
|
278
|
+
}, props.menuProps), _isSlot(_slot3 = menuUtil.getNavMenuItems(props.menuData)) ? _slot3 : {
|
|
279
|
+
default: function _default() {
|
|
280
|
+
return [_slot3];
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
});
|