@shijiu/jsview-vue 0.9.500 → 0.9.602
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/dom/bin/jsview-browser-debug-dom.min.js +1 -1
- package/dom/bin/jsview-dom.min.js +1 -1
- package/dom/target_core_revision.js +4 -3
- package/index.js +10 -0
- package/package.json +8 -1
- package/patches/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +16 -5
- package/samples/AnimPicture/App.vue +89 -106
- package/samples/Basic/App.vue +65 -68
- package/samples/Basic/components/ContentBlock.vue +31 -36
- package/samples/Basic/components/anim/AnimGroup.vue +61 -75
- package/samples/Basic/components/anim/AnimKeyframeBasic.vue +54 -43
- package/samples/Basic/components/anim/AnimKeyframeComposite.vue +25 -31
- package/samples/Basic/components/anim/AnimTransition.vue +142 -105
- package/samples/Basic/components/div/DivBackground.vue +38 -16
- package/samples/Basic/components/div/DivClip.vue +143 -78
- package/samples/Basic/components/div/DivCssScoped.vue +10 -10
- package/samples/Basic/components/div/DivCssVar.vue +40 -42
- package/samples/Basic/components/div/DivGroup1.vue +45 -39
- package/samples/Basic/components/div/DivGroup2.vue +56 -45
- package/samples/Basic/components/div/DivLayout.vue +63 -5
- package/samples/Basic/components/div/DivRadius.vue +51 -42
- package/samples/Basic/components/div/DivTransform.vue +21 -16
- package/samples/Basic/components/panel/Panel1.vue +46 -44
- package/samples/Basic/components/panel/Panel2.vue +22 -26
- package/samples/Basic/components/panel/TitleBar.vue +12 -12
- package/samples/Basic/components/text/TextAlign.vue +54 -44
- package/samples/Basic/components/text/TextEmoji.vue +16 -20
- package/samples/Basic/components/text/TextFontStyle.vue +77 -53
- package/samples/Basic/components/text/TextGroup1.vue +46 -38
- package/samples/Basic/components/text/TextGroup2.vue +25 -28
- package/samples/Basic/components/text/TextOverflow.vue +76 -57
- package/samples/BasicFocusControl/App.vue +22 -43
- package/samples/BasicFocusControl/components/BaseBlock.vue +42 -43
- package/samples/BasicFocusControl/components/MainArea.vue +55 -70
- package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +11 -15
- package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +21 -24
- package/samples/BasicFocusControl/components/SideBar.vue +32 -47
- package/samples/BasicFocusControl/components/SideBarBlock.vue +20 -23
- package/samples/ColorSpace/App.vue +15 -24
- package/samples/DemoHomepage/App.vue +7 -11
- package/samples/DemoHomepage/components/BodyFrame.vue +19 -9
- package/samples/DemoHomepage/components/TabFrame.vue +7 -8
- package/samples/DemoHomepage/router.js +33 -34
- package/samples/DemoHomepage/views/Homepage.vue +24 -8
- package/samples/FilterDemo/AnimatePic.vue +58 -0
- package/samples/FilterDemo/App.vue +99 -61
- package/samples/FilterDemo/VideoLayer.vue +62 -0
- package/samples/FlipCard/App.vue +32 -41
- package/samples/FlipCard/FlipCard.vue +48 -54
- package/samples/GridDemo/App.vue +109 -77
- package/samples/GridDemo/ButtonBlock.vue +50 -49
- package/samples/GridDemo/FocusItem.vue +19 -38
- package/samples/GridDemo/Item.vue +46 -54
- package/samples/HashHistory/App.vue +63 -79
- package/samples/HashHistory/components/HorizontalButtonList.vue +72 -95
- package/samples/HashHistory/components/Item.vue +42 -56
- package/samples/HashHistory/router.js +23 -12
- package/samples/HashHistory/views/MainPage.vue +35 -46
- package/samples/HashHistory/views/SubPage.vue +34 -47
- package/samples/Input/App.vue +2 -3
- package/samples/Input/FullKeyboard.vue +2 -6
- package/samples/Input/InputPanel.vue +2 -3
- package/samples/Input/KeyboardItem.vue +1 -1
- package/samples/LongImage/App.vue +11 -27
- package/samples/LongImage/Button.vue +50 -145
- package/samples/LongImage/ButtonItem.vue +44 -0
- package/samples/LongImage/LongImageScroll.vue +71 -106
- package/samples/LongImage/Scroll.vue +7 -9
- package/samples/LongText/App.vue +13 -28
- package/samples/LongText/Button.vue +43 -145
- package/samples/LongText/ButtonItem.vue +44 -0
- package/samples/LongText/LongTextScroll.vue +68 -101
- package/samples/LongText/Scroll.vue +7 -9
- package/samples/Marquee/App.vue +34 -37
- package/samples/MaskClip/App.vue +17 -30
- package/samples/MetroWidgetDemos/Advanced/App.vue +47 -0
- package/samples/MetroWidgetDemos/Advanced/ButtonItem.vue +90 -0
- package/samples/MetroWidgetDemos/Advanced/Buttons.vue +70 -0
- package/samples/MetroWidgetDemos/Advanced/Mixed.vue +77 -0
- package/samples/MetroWidgetDemos/Advanced/Widgets.vue +71 -0
- package/samples/MetroWidgetDemos/Item.vue +67 -0
- package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/App.vue +80 -104
- package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/Item.vue +7 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/bg.jpg +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_content.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_left.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_mid.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_right.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/focus_border.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/holder_logo.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/jrbm.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_left.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_mid.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_right.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/loading.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/logo.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/mcjx.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/tao.png +0 -0
- package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/tmall.png +0 -0
- package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/border.png +0 -0
- package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/components/ContentItem.vue +60 -86
- package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/components/MyTab.vue +0 -0
- package/samples/MetroWidgetDemos/PerformanceTest/data.js +45 -0
- package/samples/MetroWidgetDemos/PingPong/App.vue +135 -0
- package/samples/MetroWidgetDemos/PingPong/AppPage.vue +58 -0
- package/samples/MetroWidgetDemos/PingPong/AppTab.vue +69 -0
- package/samples/MetroWidgetDemos/PingPong/Item.vue +92 -0
- package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +214 -0
- package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +75 -0
- package/samples/MetroWidgetDemos/Simple/App.vue +45 -0
- package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +111 -0
- package/samples/MetroWidgetDemos/WidgetItem.vue +89 -0
- package/samples/MetroWidgetDemos/data.js +204 -0
- package/samples/NinePatchDemo/App.vue +114 -115
- package/samples/NinePatchDemo/Item.vue +7 -8
- package/samples/Preload/App.vue +61 -63
- package/samples/Preload/Item.vue +21 -29
- package/samples/QrcodeDemo/App.vue +24 -29
- package/samples/SoundPool/App.vue +77 -106
- package/samples/SprayView/App.vue +10 -8
- package/samples/SpriteImage/App.vue +1 -2
- package/samples/TextBox/App.vue +86 -101
- package/samples/TextBox/RenderCenter.vue +1 -1
- package/samples/TextBox/RenderLeft.vue +1 -1
- package/samples/TextBox/RenderOneLine.vue +1 -1
- package/samples/TextBox/RenderRight.vue +1 -1
- package/samples/TextShadowDemo/App.vue +1 -2
- package/samples/TextureAnimation/App.vue +16 -13
- package/samples/TextureSize/App.vue +15 -25
- package/samples/ThrowMoveDemo/AccelerateDemo.vue +2 -4
- package/samples/ThrowMoveDemo/LRParabolicDemo.vue +2 -3
- package/samples/ThrowMoveDemo/TargetDemo.vue +3 -4
- package/samples/ThrowMoveDemo/UDParabolicDemo.vue +2 -3
- package/samples/TouchSample/App.vue +2 -3
- package/samples/TouchSample/Item.vue +15 -13
- package/samples/TouchSample/MetroWidgetHorizontal.vue +2 -2
- package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
- package/samples/TouchSample/TouchContainerHorizontal.vue +4 -3
- package/samples/TouchSample/TouchContainerVertical.vue +3 -2
- package/samples/TransitPage/App.vue +20 -32
- package/samples/VideoDemo/App.vue +65 -81
- package/samples/VideoDemo/components/Button.vue +41 -52
- package/samples/VideoDemo/components/Controllor.vue +171 -169
- package/samples/VideoDemo/components/VideoFrame.vue +87 -99
- package/samples/VisibleSensorDemo/App.vue +167 -0
- package/scripts/jsview-jsmap-serve.js +42 -0
- package/scripts/jsview-post-install.js +1 -1
- package/tsconfig.json +3 -0
- package/utils/JsViewEngineWidget/JsvFocusBlock.vue +204 -193
- package/utils/JsViewEngineWidget/JsvFocusManager.js +30 -17
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +1561 -1656
- package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.js +136 -0
- package/utils/JsViewEngineWidget/MetroWidget/ToolFunctions.js +18 -0
- package/utils/JsViewEngineWidget/TemplateParser.js +111 -1
- package/utils/JsViewEngineWidget/WidgetCommon.js +8 -2
- package/utils/JsViewEngineWidget/index.js +4 -4
- package/utils/JsViewPlugin/JsvPlayer/GetVersion.js +1 -1
- package/utils/JsViewPlugin/JsvPlayer/JsvMedia.js +266 -57
- package/utils/JsViewPlugin/JsvPlayer/JsvPlayer.vue +5 -1
- package/utils/JsViewPlugin/JsvPlayer/version.js +5 -5
- package/utils/JsViewVueTools/JsvRefTaker.js +35 -0
- package/utils/JsViewVueTools/index.js +19 -0
- package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +8 -4
- package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +2 -2
- package/utils/JsViewVueWidget/JsvFilterView.vue +59 -51
- package/utils/JsViewVueWidget/JsvGrid.vue +139 -41
- package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +3 -1
- package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +8 -17
- package/utils/JsViewVueWidget/JsvNinePatch.vue +1 -1
- package/utils/JsViewVueWidget/JsvPosterDiv.vue +37 -7
- package/utils/JsViewVueWidget/JsvPosterImage.vue +34 -13
- package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +2 -12
- package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +1 -1
- package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +13 -10
- package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +2 -3
- package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +6 -1
- package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +6 -1
- package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +25 -21
- package/utils/JsViewVueWidget/JsvTransparentDiv.vue +7 -8
- package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +141 -0
- package/utils/JsViewVueWidget/JsvVisibleSensor/index.js +9 -0
- package/utils/JsViewVueWidget/index.js +42 -0
- package/samples/AdvanceMetroWidget/App.vue +0 -123
- package/samples/AdvanceMetroWidget/Frame.vue +0 -102
- package/samples/AdvanceMetroWidget/Item.vue +0 -63
- package/samples/AdvanceMetroWidget/data.js +0 -137
- package/samples/ClassNameDemo/App.vue +0 -119
- package/samples/ClassNameDemo/components/ContentItem.vue +0 -253
- package/samples/ClassNameDemo/components/LoadingView.vue +0 -43
- package/samples/ClassNameDemo/components/TitleView.vue +0 -24
- package/samples/ClassNameDemo/data.js +0 -24
- package/samples/FlowMultiWidget/App.vue +0 -91
- package/samples/FlowMultiWidget/assets/nine_patch_focus.png +0 -0
- package/samples/FlowMultiWidget/components/Block.vue +0 -107
- package/samples/FlowMultiWidget/components/FlowPage.vue +0 -60
- package/samples/FlowMultiWidget/components/Item.vue +0 -103
- package/samples/FlowMultiWidget/components/MenuItem.vue +0 -72
- package/samples/FlowMultiWidget/components/MyMenu.vue +0 -90
- package/samples/FlowMultiWidget/data.js +0 -446
- package/samples/HashHistory/views/BasePage.vue +0 -19
- package/samples/HashHistory/views/SubPageFirst.vue +0 -10
- package/samples/HashHistory/views/SubPageSecond.vue +0 -10
- package/samples/SimpleWidgetDemo/assets/bg.jpg +0 -0
- package/samples/SimpleWidgetDemo/assets/coupon_content.png +0 -0
- package/samples/SimpleWidgetDemo/assets/coupon_left.png +0 -0
- package/samples/SimpleWidgetDemo/assets/coupon_mid.png +0 -0
- package/samples/SimpleWidgetDemo/assets/coupon_right.png +0 -0
- package/samples/SimpleWidgetDemo/assets/focus_border.png +0 -0
- package/samples/SimpleWidgetDemo/assets/holder_logo.png +0 -0
- package/samples/SimpleWidgetDemo/assets/jrbm.png +0 -0
- package/samples/SimpleWidgetDemo/assets/line_left.png +0 -0
- package/samples/SimpleWidgetDemo/assets/line_mid.png +0 -0
- package/samples/SimpleWidgetDemo/assets/line_right.png +0 -0
- package/samples/SimpleWidgetDemo/assets/loading.png +0 -0
- package/samples/SimpleWidgetDemo/assets/logo.png +0 -0
- package/samples/SimpleWidgetDemo/assets/mcjx.png +0 -0
- package/samples/SimpleWidgetDemo/assets/tao.png +0 -0
- package/samples/SimpleWidgetDemo/assets/tmall.png +0 -0
- package/samples/SimpleWidgetDemo/data.js +0 -124
- package/utils/JsViewEngineWidget/MetroWidget/ContentView.vue +0 -63
- package/utils/JsViewEngineWidget/MetroWidget/DivWrapper.vue +0 -51
- package/utils/JsViewEngineWidget/MetroWidget/ItemView.vue +0 -213
- package/utils/JsViewEngineWidget/MetroWidget/RootView.vue +0 -154
|
@@ -116,7 +116,7 @@ export default {
|
|
|
116
116
|
if (this.jsvBaseView === null) {
|
|
117
117
|
this.jsvBaseView = new Forge.LayoutView();
|
|
118
118
|
this.innerViewId = ForgeExtension.RootActivity.ViewStore.add(
|
|
119
|
-
new Forge.ViewInfo(this.jsvBaseView
|
|
119
|
+
new Forge.ViewInfo(this.jsvBaseView)
|
|
120
120
|
);
|
|
121
121
|
}
|
|
122
122
|
// 构建QRCdoe view
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
<script>
|
|
35
35
|
import { Forge, ForgeExtension } from "../../../dom/jsv-forge-define";
|
|
36
36
|
|
|
37
|
-
let buildForgeView = (pointRes, sprayStyle) => {
|
|
37
|
+
let buildForgeView = (pointRes, sprayStyle, sizeRef) => {
|
|
38
38
|
if (!pointRes) {
|
|
39
39
|
return -1;
|
|
40
40
|
}
|
|
@@ -88,13 +88,10 @@ let buildForgeView = (pointRes, sprayStyle) => {
|
|
|
88
88
|
sprayStyle.deltaWidth === 0 ? 1 : 2 * sprayStyle.deltaWidth;
|
|
89
89
|
const view_height =
|
|
90
90
|
sprayStyle.deltaHeight === 0 ? 1 : 2 * sprayStyle.deltaHeight;
|
|
91
|
+
sizeRef.width = view_width;
|
|
92
|
+
sizeRef.height = view_height;
|
|
91
93
|
return ForgeExtension.RootActivity.ViewStore.add(
|
|
92
|
-
new Forge.ViewInfo(spray_view
|
|
93
|
-
x: 0,
|
|
94
|
-
y: 0,
|
|
95
|
-
width: view_width,
|
|
96
|
-
height: view_height,
|
|
97
|
-
})
|
|
94
|
+
new Forge.ViewInfo(spray_view)
|
|
98
95
|
);
|
|
99
96
|
};
|
|
100
97
|
|
|
@@ -111,6 +108,10 @@ export default {
|
|
|
111
108
|
},
|
|
112
109
|
data() {
|
|
113
110
|
return {
|
|
111
|
+
size: {
|
|
112
|
+
width: 0,
|
|
113
|
+
height: 0
|
|
114
|
+
},
|
|
114
115
|
viewId: -1,
|
|
115
116
|
};
|
|
116
117
|
},
|
|
@@ -123,11 +124,11 @@ export default {
|
|
|
123
124
|
},
|
|
124
125
|
},
|
|
125
126
|
created() {
|
|
126
|
-
this.viewId = buildForgeView(this.pointRes, this.sprayStyle);
|
|
127
|
+
this.viewId = buildForgeView(this.pointRes, this.sprayStyle, this.size);
|
|
127
128
|
},
|
|
128
129
|
updated() {
|
|
129
130
|
this.unloadView();
|
|
130
|
-
this.viewId = buildForgeView(this.pointRes, this.sprayStyle);
|
|
131
|
+
this.viewId = buildForgeView(this.pointRes, this.sprayStyle, this.size);
|
|
131
132
|
},
|
|
132
133
|
beforeUnmount() {
|
|
133
134
|
this.unloadView();
|
|
@@ -136,5 +137,7 @@ export default {
|
|
|
136
137
|
</script>
|
|
137
138
|
|
|
138
139
|
<template>
|
|
139
|
-
<div
|
|
140
|
+
<div
|
|
141
|
+
:style="{width: size.width, height: size.height}"
|
|
142
|
+
:jsv_innerview="viewId"></div>
|
|
140
143
|
</template>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import JsvSpriteAnim from
|
|
2
|
-
import SpriteController from
|
|
1
|
+
import JsvSpriteAnim from "./JsvSpriteAnim.vue";
|
|
2
|
+
import { SpriteController } from "./SpriteController.js";
|
|
3
3
|
|
|
4
4
|
export default JsvSpriteAnim;
|
|
5
5
|
export { SpriteController };
|
|
6
|
-
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* onBlur {Function} 失去焦点的回调
|
|
22
22
|
* swipeType {String} 切换方式,目前只支持 translate,之后可能会添加 opacity 等方式
|
|
23
23
|
* smoothTranslate {boolean} 平滑模式动画开关
|
|
24
|
+
* reverseSwipe {boolean} 反转滚动方向,默认值为false. 默认滚动方向是正向, 既向index增大的方向, 反转后为反向, 既向index减小的方向
|
|
24
25
|
* public methods:
|
|
25
26
|
* slideTo
|
|
26
27
|
* @description 滚动到指定id
|
|
@@ -123,6 +124,10 @@ export default {
|
|
|
123
124
|
type: Boolean,
|
|
124
125
|
default: false,
|
|
125
126
|
},
|
|
127
|
+
reverseSwipe: {
|
|
128
|
+
type: Boolean,
|
|
129
|
+
default: false,
|
|
130
|
+
}
|
|
126
131
|
},
|
|
127
132
|
computed: {
|
|
128
133
|
indicatorLayout() {
|
|
@@ -263,7 +268,7 @@ export default {
|
|
|
263
268
|
clearInterval(this.timeoutHandler);
|
|
264
269
|
}
|
|
265
270
|
this.timeoutHandler = setInterval(() => {
|
|
266
|
-
this._trigger(1);
|
|
271
|
+
this._trigger(this.reverseSwipe ? -1 : 1);
|
|
267
272
|
}, this.autoplayInterval);
|
|
268
273
|
}
|
|
269
274
|
},
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
* backgroundImage {String} 组件背景图
|
|
24
24
|
* backgroundColor {String} 组件背景颜色
|
|
25
25
|
* scale {float} 当前 item 的放大倍数, 默认为1
|
|
26
|
+
* reverseSwipe {boolean} 反转滚动方向,默认值为false. 默认滚动方向是正向, 既向index增大的方向, 反转后为反向, 既向index减小的方向
|
|
26
27
|
-->
|
|
27
28
|
|
|
28
29
|
<script>
|
|
@@ -120,6 +121,10 @@ export default {
|
|
|
120
121
|
backgroundColor: {
|
|
121
122
|
type: String,
|
|
122
123
|
},
|
|
124
|
+
reverseSwipe: {
|
|
125
|
+
type: Boolean,
|
|
126
|
+
default: false,
|
|
127
|
+
}
|
|
123
128
|
},
|
|
124
129
|
computed: {
|
|
125
130
|
indicatorLayout() {
|
|
@@ -311,7 +316,7 @@ export default {
|
|
|
311
316
|
if (this.autoplayInterval > 0) {
|
|
312
317
|
this.intervalHandler = setInterval(() => {
|
|
313
318
|
this.preOffset = this.offset;
|
|
314
|
-
this.offset = this.offset + 1;
|
|
319
|
+
this.offset = this.offset + this.reverseSwipe ? -1 : 1;
|
|
315
320
|
}, this.autoplayInterval);
|
|
316
321
|
}
|
|
317
322
|
},
|
|
@@ -204,7 +204,8 @@ export default {
|
|
|
204
204
|
|
|
205
205
|
if (decorate && decorate.type == DECORATE_NINEPATCH_ALPHA_MIX && decorate.animTime > 0) {
|
|
206
206
|
// Ninepatch模式可以设置长宽的过渡动画
|
|
207
|
-
|
|
207
|
+
let anim_time = decorate.animTime;
|
|
208
|
+
transition = `left ${anim_time}s, top ${anim_time}s, width ${anim_time}s, height ${anim_time}s`;
|
|
208
209
|
}
|
|
209
210
|
|
|
210
211
|
return transition;
|
|
@@ -237,21 +238,25 @@ export default {
|
|
|
237
238
|
}
|
|
238
239
|
|
|
239
240
|
// 4.设置texture的动画形变
|
|
240
|
-
this.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
1,
|
|
245
|
-
1
|
|
246
|
-
);
|
|
247
|
-
this.forgeAnimation.EnableDelay(this.delay).SetRepeat(this.repeat);
|
|
248
|
-
this.forgeAnimation.SetAnimationListener(
|
|
249
|
-
new Forge.AnimationListener(
|
|
241
|
+
if (this.animation) {
|
|
242
|
+
this.forgeAnimation = new Forge.CssKeyframeAnimation(
|
|
243
|
+
"@keyframes test" + this.animation,
|
|
244
|
+
this.duration,
|
|
250
245
|
null,
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
)
|
|
254
|
-
|
|
246
|
+
1,
|
|
247
|
+
1
|
|
248
|
+
);
|
|
249
|
+
this.forgeAnimation.EnableDelay(this.delay).SetRepeat(this.repeat);
|
|
250
|
+
this.forgeAnimation.SetAnimationListener(
|
|
251
|
+
new Forge.AnimationListener(
|
|
252
|
+
null,
|
|
253
|
+
this._onAnimationEnd,
|
|
254
|
+
null
|
|
255
|
+
)
|
|
256
|
+
);
|
|
257
|
+
} else {
|
|
258
|
+
this.forgeAnimation = null;
|
|
259
|
+
}
|
|
255
260
|
|
|
256
261
|
// 5. inner view标准处理
|
|
257
262
|
this.viewStoreRef = ForgeExtension.RootActivity
|
|
@@ -259,12 +264,7 @@ export default {
|
|
|
259
264
|
: Forge.sViewStore;
|
|
260
265
|
|
|
261
266
|
this.innerViewId = this.viewStoreRef.add(
|
|
262
|
-
new Forge.ViewInfo(this.innerView
|
|
263
|
-
x: 0,
|
|
264
|
-
y: 0,
|
|
265
|
-
width: this.width,
|
|
266
|
-
height: this.height,
|
|
267
|
-
})
|
|
267
|
+
new Forge.ViewInfo(this.innerView)
|
|
268
268
|
);
|
|
269
269
|
}
|
|
270
270
|
},
|
|
@@ -285,6 +285,10 @@ export default {
|
|
|
285
285
|
<template>
|
|
286
286
|
<div
|
|
287
287
|
:style="{
|
|
288
|
+
top: top,
|
|
289
|
+
left: left,
|
|
290
|
+
width: width,
|
|
291
|
+
height: height,
|
|
288
292
|
transition: getTransition(),
|
|
289
293
|
}"
|
|
290
294
|
:jsv_innerview="innerViewId">
|
|
@@ -41,15 +41,9 @@ export default {
|
|
|
41
41
|
// 通过内置函数构造定制的LayoutView
|
|
42
42
|
this.innerView = new Forge.LayoutView(textureSetting);
|
|
43
43
|
this.innerViewId = ForgeExtension.RootActivity.ViewStore.add(
|
|
44
|
-
new Forge.ViewInfo(this.innerView
|
|
44
|
+
new Forge.ViewInfo(this.innerView)
|
|
45
45
|
);
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
// 更新宽高
|
|
49
|
-
this.innerView.ResetLayoutParams({
|
|
50
|
-
width: this.style.width,
|
|
51
|
-
height: this.style.height,
|
|
52
|
-
});
|
|
53
47
|
},
|
|
54
48
|
},
|
|
55
49
|
created() {
|
|
@@ -81,7 +75,12 @@ export default {
|
|
|
81
75
|
></div>
|
|
82
76
|
<div
|
|
83
77
|
:jsv_innerview="innerViewId"
|
|
84
|
-
:style="{
|
|
78
|
+
:style="{
|
|
79
|
+
left: style.left,
|
|
80
|
+
top: style.top,
|
|
81
|
+
width: style.width,
|
|
82
|
+
height: style.height
|
|
83
|
+
}"
|
|
85
84
|
>
|
|
86
85
|
<slot></slot>
|
|
87
86
|
</div>
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* 【模块 export 内容】
|
|
3
|
+
* JsvVisibleSensor: 可视区域监控器
|
|
4
|
+
* props说明:
|
|
5
|
+
* horizonShown {number} (可选, 可响应式, 默认1.0完全露出)横轴百分比区域完全显示时(左边或右边完全露出,仅中间段判断会失效),
|
|
6
|
+
* 横轴切换到显示状态,否则为不可视状态
|
|
7
|
+
* verticalShown {number} (可选, 可响应式)纵轴百分比区域完全显示时(上边或下边完全露出,仅中间段判断会失效),
|
|
8
|
+
* 纵轴切换到显示状态,否则为不可视状态
|
|
9
|
+
* left {number} (可选, 可响应式)可视检测区域的left
|
|
10
|
+
* top {number} (可选, 可响应式)可视检测区域的top
|
|
11
|
+
* width {number} (可选, 可响应式)可视检测区域的width
|
|
12
|
+
* height {number} (可选, 可响应式)可视检测区域的height
|
|
13
|
+
*
|
|
14
|
+
* container {div reference} (可选, 可响应式)子区域参照,若为null,则认为检测可视区域为全屏幕
|
|
15
|
+
*
|
|
16
|
+
* callback {function} (必须, 可响应式)可视变化时的回调处理, 参数
|
|
17
|
+
* (old_horizantal_visible, new_horizantal_visible, old_vertical_visible, new_vertical_visible)
|
|
18
|
+
-->
|
|
19
|
+
|
|
20
|
+
<template>
|
|
21
|
+
<div ref="viewRef" :style="{
|
|
22
|
+
top: props.top,
|
|
23
|
+
left: props.left,
|
|
24
|
+
width: props.width,
|
|
25
|
+
height: props.height,
|
|
26
|
+
}" >
|
|
27
|
+
<slot/>
|
|
28
|
+
</div>
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
<script setup>
|
|
32
|
+
import { reactive, ref, toRaw, watchEffect, onMounted, defineExpose } from 'vue'
|
|
33
|
+
import { Forge } from "jsview/dom/jsv-forge-define";
|
|
34
|
+
|
|
35
|
+
const props = defineProps({
|
|
36
|
+
// (支持reactive)可视区域设定
|
|
37
|
+
horizonShown: Number,
|
|
38
|
+
verticalShown: Number,
|
|
39
|
+
|
|
40
|
+
// (支持reactive)Container, 父区域的div引用,
|
|
41
|
+
container: Object,
|
|
42
|
+
|
|
43
|
+
// (不支持reactive)回调处理
|
|
44
|
+
callback: Function,
|
|
45
|
+
|
|
46
|
+
// (支持reactive)位置信息
|
|
47
|
+
left: {
|
|
48
|
+
type: Number,
|
|
49
|
+
default: 0,
|
|
50
|
+
},
|
|
51
|
+
top: {
|
|
52
|
+
type: Number,
|
|
53
|
+
default: 0,
|
|
54
|
+
},
|
|
55
|
+
width: {
|
|
56
|
+
type: Number,
|
|
57
|
+
require: true,
|
|
58
|
+
},
|
|
59
|
+
height: {
|
|
60
|
+
type: Number,
|
|
61
|
+
require: true,
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
// (支持reactive)是否激活,仍然在渲染树时,非必须可以通过enable关闭以节省CPU开销
|
|
65
|
+
enable: {
|
|
66
|
+
type: Boolean,
|
|
67
|
+
default: true,
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// 内部状态变量
|
|
72
|
+
const viewRef = ref(null);
|
|
73
|
+
const viewMounted = reactive({status: false})
|
|
74
|
+
let sensorRef = null;
|
|
75
|
+
|
|
76
|
+
// 变更检测范围
|
|
77
|
+
watchEffect(()=>{
|
|
78
|
+
if (viewMounted.status) {
|
|
79
|
+
let horizon = fixAreaValue(props.horizonShown);
|
|
80
|
+
let vertical = fixAreaValue(props.verticalShown);
|
|
81
|
+
|
|
82
|
+
sensorRef.ResetArea({horizon, vertical})
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
// 变更enable状态
|
|
87
|
+
watchEffect(()=>{
|
|
88
|
+
if (viewMounted.status) {
|
|
89
|
+
sensorRef.Enable(props.enable)
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
// 检测container变化
|
|
94
|
+
watchEffect(()=>{
|
|
95
|
+
if (viewMounted.status) {
|
|
96
|
+
if (props.container) {
|
|
97
|
+
window.MyContainerView = toRaw(props.container);
|
|
98
|
+
|
|
99
|
+
let jsv_main_view_ref = toRaw(props.container).jsvMainView;
|
|
100
|
+
if (jsv_main_view_ref) {
|
|
101
|
+
sensorRef.ResetContainer(toRaw(props.container).jsvMainView);
|
|
102
|
+
} else {
|
|
103
|
+
console.error("Error: container is NOT a div");
|
|
104
|
+
}
|
|
105
|
+
} else {
|
|
106
|
+
sensorRef.ResetContainer(null); // 无container
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
onMounted(()=>{
|
|
112
|
+
console.log("JsvVisibleSensor: on mounted");
|
|
113
|
+
|
|
114
|
+
sensorRef = new Forge.VisibleSensor(toRaw(viewRef.value).jsvMainView, (old_h, new_h, old_v, new_v)=>{
|
|
115
|
+
// 获得横向和纵向的新旧状态值
|
|
116
|
+
if (props.callback) {
|
|
117
|
+
props.callback(old_h, new_h, old_v, new_v);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
viewMounted.status = true;
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
// 外部方法
|
|
124
|
+
defineExpose({
|
|
125
|
+
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
// 内部方法
|
|
129
|
+
function fixAreaValue(origin_value) {
|
|
130
|
+
if (origin_value > 1) {
|
|
131
|
+
console.warn(`will limited to 1 origin=${origin_value}`);
|
|
132
|
+
return 1;
|
|
133
|
+
} else if (origin_value < 0) {
|
|
134
|
+
console.warn(`will limited to 0 origin=${origin_value}`);
|
|
135
|
+
return 0;
|
|
136
|
+
} else {
|
|
137
|
+
return origin_value;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
</script>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//考虑到.vue文件除了export default的component外,还有可能export其他对象,因此使用import * as
|
|
2
|
+
import * as JsvVisibleSensor from "./JsvVisibleSensor.vue";
|
|
3
|
+
|
|
4
|
+
let _JsvVisibleSensor = JsvVisibleSensor;
|
|
5
|
+
// if (window.JsvWidgetWrapperGroup && window.JsvWidgetWrapperGroup.BrowserVisibleSensor) {
|
|
6
|
+
// JsvVisibleSensor = window.JsvWidgetWrapperGroup.BrowserVisibleSensor;
|
|
7
|
+
// }
|
|
8
|
+
|
|
9
|
+
export default _JsvVisibleSensor.default
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: ChenChanghua
|
|
3
|
+
* @Date: 2022-07-05 11:00:51
|
|
4
|
+
* @LastEditors: ChenChanghua
|
|
5
|
+
* @LastEditTime: 2022-07-08 17:08:08
|
|
6
|
+
* @Description: file content
|
|
7
|
+
*/
|
|
8
|
+
export { default as JsvActorMove, JsvActorMoveControl } from "./JsvActorMove";
|
|
9
|
+
export { default as JsvApic, LoopType } from "./JsvApic";
|
|
10
|
+
export { default as JsvInput, InputType } from "./JsvInput";
|
|
11
|
+
export {
|
|
12
|
+
default as JsvPreload,
|
|
13
|
+
buildPreloadInfo,
|
|
14
|
+
buildDownloadInfo,
|
|
15
|
+
} from "./JsvPreload";
|
|
16
|
+
export { default as JsvQrcode } from "./JsvQrcode";
|
|
17
|
+
export { default as JsvSpray } from "./JsvSpray";
|
|
18
|
+
export { default as JsvSpriteAnim, SpriteController } from "./JsvSpriteAnim";
|
|
19
|
+
export { default as JsvSwiper } from "./JsvSwiper";
|
|
20
|
+
export { default as JsvSwiper3D } from "./JsvSwiper3D";
|
|
21
|
+
export { default as JsvTextureAnim } from "./JsvTextureAnim";
|
|
22
|
+
export { default as JsvVisibleSensor } from "./JsvVisibleSensor";
|
|
23
|
+
export { default as JsvFilterView } from "./JsvFilterView.vue";
|
|
24
|
+
export {
|
|
25
|
+
default as JsvGrid,
|
|
26
|
+
PageType,
|
|
27
|
+
LineType,
|
|
28
|
+
FocusMoveType,
|
|
29
|
+
} from "./JsvGrid.vue";
|
|
30
|
+
export { default as JsvHole } from "./JsvHole.js";
|
|
31
|
+
export { default as JsvMarquee } from "./JsvMarquee.vue";
|
|
32
|
+
export { default as JsvMaskClipDiv } from "./JsvMaskClipDiv.vue";
|
|
33
|
+
export { default as JsvNativeSharedDiv } from "./JsvNativeSharedDiv.vue";
|
|
34
|
+
export { default as JsvNinePatch } from "./JsvNinePatch.vue";
|
|
35
|
+
export { default as JsvPosterDiv } from "./JsvPosterDiv.vue";
|
|
36
|
+
export { default as JsvPosterImage } from "./JsvPosterImage.vue";
|
|
37
|
+
export { default as JsvScaleTextBox } from "./JsvScaleTextBox.vue";
|
|
38
|
+
export { JsvSoundPool } from "./JsvSoundPool.js";
|
|
39
|
+
export { default as JsvTextBox } from "./JsvTextBox.vue";
|
|
40
|
+
export { default as JsvTouchContainer } from "./JsvTouchContainer.vue";
|
|
41
|
+
export { default as JsvTransparentDiv } from "./JsvTransparentDiv.vue";
|
|
42
|
+
export { default as JsvVideo } from "./JsvVideo.vue";
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
* 【界面概述】
|
|
3
|
-
* 展示SimpleWidget控件的嵌套用法
|
|
4
|
-
*
|
|
5
|
-
* 【控件介绍】
|
|
6
|
-
* SimpleWidget:见simpleMetroWidget
|
|
7
|
-
* SWidgetDispatcher:向SimpleWidget分发消息的对象,用于设置SimpleWidget内部状态
|
|
8
|
-
* 成员函数:
|
|
9
|
-
* dispatch
|
|
10
|
-
* @params msg {obj} 消息体,{type: SWidgetDispatcher.Type, data: 数据}
|
|
11
|
-
* SWidgetDispatcher.Type: 消息的类型
|
|
12
|
-
* "setFocusId": Focus时初始的焦点id data为int
|
|
13
|
-
* "setFocusRect": Focus时距离某区域最近的item获得焦点 data为{type:EdgeDirection, rect:{x:0, y:0, widht:0, height:0}}
|
|
14
|
-
* "updateItem": 重新描画某个item data为int
|
|
15
|
-
* "slideToItem": 界面移到某个item处 data为int
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* 【技巧说明】
|
|
19
|
-
* Q: 如何实现嵌套?
|
|
20
|
-
* A: 当SimpleWidget的measure回调返回值中hasSub为true时,该item的renderItem就可以返回可获得焦点的控件
|
|
21
|
-
*
|
|
22
|
-
* Q: 如何实现焦点的就近切换?
|
|
23
|
-
* A: 通过dispatcher向将要获得焦点的控件发送setFocusRect消息。
|
|
24
|
-
-->
|
|
25
|
-
|
|
26
|
-
<script>
|
|
27
|
-
import { frameData, itemData } from "./data";
|
|
28
|
-
import {
|
|
29
|
-
HORIZONTAL,
|
|
30
|
-
SimpleWidget,
|
|
31
|
-
} from "jsview/utils/JsViewEngineWidget";
|
|
32
|
-
import Frame from "./Frame.vue";
|
|
33
|
-
|
|
34
|
-
const measures = (item) => {
|
|
35
|
-
return {
|
|
36
|
-
width: item.blocks.w,
|
|
37
|
-
height: item.blocks.h,
|
|
38
|
-
focusable: item.focusable,
|
|
39
|
-
hasSub: item.hasSub,
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
export default {
|
|
43
|
-
components: { SimpleWidget, Frame },
|
|
44
|
-
setup() {
|
|
45
|
-
return {
|
|
46
|
-
measures,
|
|
47
|
-
name: "/advanceMetroWidget",
|
|
48
|
-
direction: HORIZONTAL,
|
|
49
|
-
frameData,
|
|
50
|
-
itemData,
|
|
51
|
-
};
|
|
52
|
-
},
|
|
53
|
-
methods: {
|
|
54
|
-
onKeyDown(ev) {
|
|
55
|
-
// 8:Backspace, 27:Escape, 10000:盒子返回键
|
|
56
|
-
if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
|
|
57
|
-
this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
return false;
|
|
61
|
-
},
|
|
62
|
-
onFocus() {
|
|
63
|
-
this.$refs.focusNode.findBlockByName("/advanceMetroWidget").requestFocus();
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
|
|
67
|
-
data() {
|
|
68
|
-
return {};
|
|
69
|
-
},
|
|
70
|
-
mounted() {},
|
|
71
|
-
};
|
|
72
|
-
</script>
|
|
73
|
-
|
|
74
|
-
<template>
|
|
75
|
-
<div class="rootSize">
|
|
76
|
-
<jsv-focus-block
|
|
77
|
-
autoFocus
|
|
78
|
-
ref="focusNode"
|
|
79
|
-
:onAction="{
|
|
80
|
-
onKeyDown: onKeyDown,
|
|
81
|
-
onFocus: onFocus,
|
|
82
|
-
}"
|
|
83
|
-
>
|
|
84
|
-
<simple-widget
|
|
85
|
-
:name="name"
|
|
86
|
-
:data="frameData"
|
|
87
|
-
:width="680"
|
|
88
|
-
:height="680"
|
|
89
|
-
:direction="direction"
|
|
90
|
-
:measures="measures"
|
|
91
|
-
>
|
|
92
|
-
<template #renderItem="{ data, query, onEdge, onAction }">
|
|
93
|
-
<frame
|
|
94
|
-
:name="name + '/frame_' + query.id"
|
|
95
|
-
:data="data"
|
|
96
|
-
:itemData="itemData"
|
|
97
|
-
:query="query"
|
|
98
|
-
:onEdge="onEdge"
|
|
99
|
-
:onAction="onAction"
|
|
100
|
-
/>
|
|
101
|
-
</template>
|
|
102
|
-
</simple-widget>
|
|
103
|
-
</jsv-focus-block>
|
|
104
|
-
</div>
|
|
105
|
-
</template>
|
|
106
|
-
|
|
107
|
-
<style scoped>
|
|
108
|
-
.rootSize {
|
|
109
|
-
width: 1920;
|
|
110
|
-
height: 1080;
|
|
111
|
-
background-color: #334c4c;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.widgetPos {
|
|
115
|
-
top: 120;
|
|
116
|
-
left: 50;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
.focusPos {
|
|
120
|
-
top: 10;
|
|
121
|
-
left: 10;
|
|
122
|
-
}
|
|
123
|
-
</style>
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
HORIZONTAL,
|
|
4
|
-
SimpleWidget,
|
|
5
|
-
SWidgetDispatcher,
|
|
6
|
-
} from "jsview/utils/JsViewEngineWidget";
|
|
7
|
-
import Item from "./Item.vue";
|
|
8
|
-
|
|
9
|
-
export default {
|
|
10
|
-
components: { SimpleWidget, Item },
|
|
11
|
-
props: {
|
|
12
|
-
itemData: Object,
|
|
13
|
-
data: Object,
|
|
14
|
-
query: Object,
|
|
15
|
-
onEdge: Function,
|
|
16
|
-
onAction: Object,
|
|
17
|
-
name: String,
|
|
18
|
-
},
|
|
19
|
-
data() {
|
|
20
|
-
return {};
|
|
21
|
-
},
|
|
22
|
-
setup() {
|
|
23
|
-
let dispatcher = new SWidgetDispatcher();
|
|
24
|
-
return {
|
|
25
|
-
direction: HORIZONTAL,
|
|
26
|
-
dispatcher,
|
|
27
|
-
};
|
|
28
|
-
},
|
|
29
|
-
methods: {
|
|
30
|
-
onFocus(enterRect) {
|
|
31
|
-
if (enterRect) {
|
|
32
|
-
const foucsInfo = {
|
|
33
|
-
type: SWidgetDispatcher.Type.setFocusRect,
|
|
34
|
-
data: enterRect,
|
|
35
|
-
};
|
|
36
|
-
this.dispatcher.dispatch(foucsInfo);
|
|
37
|
-
}
|
|
38
|
-
this.$refs.focusNode.findBlockByName(this.name).requestFocus();
|
|
39
|
-
},
|
|
40
|
-
onBlur() {},
|
|
41
|
-
onClick() {},
|
|
42
|
-
measures(item) {
|
|
43
|
-
return {
|
|
44
|
-
width: item.blocks.w,
|
|
45
|
-
height: item.blocks.h,
|
|
46
|
-
focusable: item.focusable,
|
|
47
|
-
hasSub: item.hasSub,
|
|
48
|
-
};
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
created() {
|
|
53
|
-
this.onAction.register("onFocus", this.onFocus);
|
|
54
|
-
this.onAction.register("onBlur", this.onBlur);
|
|
55
|
-
this.onAction.register("onClick", this.onClick);
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
</script>
|
|
59
|
-
|
|
60
|
-
<template>
|
|
61
|
-
<jsv-focus-block ref="focusNode">
|
|
62
|
-
<simple-widget
|
|
63
|
-
:name="name"
|
|
64
|
-
:enableTouch="true"
|
|
65
|
-
:data="itemData"
|
|
66
|
-
:width="data.blocks.w"
|
|
67
|
-
:height="data.blocks.h"
|
|
68
|
-
:padding="{ left: 10, top: 10, right: 10, bottom: 10 }"
|
|
69
|
-
:direction="direction"
|
|
70
|
-
:measures="measures"
|
|
71
|
-
:onEdge="onEdge"
|
|
72
|
-
:dispatcher="dispatcher"
|
|
73
|
-
>
|
|
74
|
-
<template #renderItem="{ data, query, onEdge, onAction }">
|
|
75
|
-
<item
|
|
76
|
-
:data="data"
|
|
77
|
-
:query="query"
|
|
78
|
-
:onEdge="onEdge"
|
|
79
|
-
:onAction="onAction"
|
|
80
|
-
/>
|
|
81
|
-
</template>
|
|
82
|
-
</simple-widget>
|
|
83
|
-
</jsv-focus-block>
|
|
84
|
-
</template>
|
|
85
|
-
|
|
86
|
-
<style scoped>
|
|
87
|
-
.rootSize {
|
|
88
|
-
width: 1920;
|
|
89
|
-
height: 1080;
|
|
90
|
-
background-color: "#FFFF00";
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.widgetPos {
|
|
94
|
-
top: 120;
|
|
95
|
-
left: 50;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
.focusPos {
|
|
99
|
-
top: 10;
|
|
100
|
-
left: 10;
|
|
101
|
-
}
|
|
102
|
-
</style>
|