@shijiu/jsview-vue 0.9.684 → 0.9.783
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/bin/jsview-engine-js-browser.min.js +1 -1
- package/dom/bin/jsview-forge-define.min.js +1 -1
- package/dom/jsv-engine-js-browser.js +6 -0
- package/dom/target_core_revision.js +4 -4
- package/loader/loader.js +4 -0
- package/package.json +1 -1
- package/patches/node_modules/@vue/cli-service/lib/config/base.js +1 -1
- package/samples/AnimPicture/App.vue +5 -5
- package/samples/Basic/components/div/DivLayout.vue +1 -1
- package/samples/Basic/components/img/ImageGroup.vue +2 -2
- package/samples/Basic/components/img/ImgLayout.vue +79 -15
- package/samples/Basic/components/text/TextDirection.vue +104 -0
- package/samples/Basic/components/text/TextEmoji.vue +1 -1
- package/samples/Basic/components/text/TextGroup1.vue +1 -1
- package/samples/Basic/components/text/TextGroup2.vue +11 -1
- package/samples/BasicFocusControl/components/BaseBlock.vue +2 -2
- package/samples/Collision/App.vue +11 -11
- package/samples/DemoHomepage/App.vue +67 -8
- package/samples/DemoHomepage/components/TabFrame.vue +7 -0
- package/samples/DemoHomepage/router.js +27 -26
- package/samples/DemoHomepage/views/Homepage.vue +89 -98
- package/samples/FilterDemo/App.vue +1 -1
- package/samples/FlipCard/App.vue +2 -2
- package/samples/FlipCard/FlipCard.vue +3 -3
- package/samples/FocusBlockDemos/AutoFocus/App.vue +51 -0
- package/samples/FocusBlockDemos/AutoFocus/BaseBlock.vue +82 -0
- package/samples/FocusBlockDemos/AutoFocus/DialogBlock.vue +89 -0
- package/samples/FocusBlockDemos/AutoFocus/DialogContorls.js +42 -0
- package/samples/FocusBlockDemos/AutoFocus/FocusNamesDefine.js +9 -0
- package/samples/FocusBlockDemos/AutoFocus/PlaneBlock.vue +71 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/App.vue +78 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/BaseBlock.vue +77 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/DownPlaneBlock.vue +83 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/FocusNamesDefine.js +12 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/UpPlaneBlock.vue +83 -0
- package/samples/GridDemo/App.vue +3 -3
- package/samples/GridDemo/ButtonBlock.vue +2 -2
- package/samples/GridDemo/FocusItem.vue +2 -2
- package/samples/GridDemo/Item.vue +1 -1
- package/samples/HashHistory/App.vue +10 -3
- package/samples/HashHistory/components/Item.vue +1 -1
- package/samples/ImpactStop/App.vue +15 -11
- package/samples/Input/InputPanel.vue +1 -1
- package/samples/LongImage/Button.vue +1 -1
- package/samples/LongImage/ButtonItem.vue +1 -1
- package/samples/LongImage/LongImageScroll.vue +2 -2
- package/samples/LongText/App.vue +1 -1
- package/samples/LongText/Button.vue +1 -1
- package/samples/LongText/ButtonItem.vue +1 -1
- package/samples/LongText/LongTextScroll.vue +3 -3
- package/samples/Marquee/App.vue +34 -3
- package/samples/Marquee/longText.js +2 -2
- package/samples/MetroWidgetDemos/PerformanceTest/App.vue +4 -4
- package/samples/MetroWidgetDemos/PerformanceTest/components/ContentItem.vue +1 -1
- package/samples/MetroWidgetDemos/PerformanceTest/components/MyTab.vue +3 -3
- package/samples/MetroWidgetDemos/PingPong/App.vue +22 -11
- package/samples/MetroWidgetDemos/PingPong/AppPage.vue +5 -5
- package/samples/MetroWidgetDemos/{Item.vue → PingPong/Item.vue} +3 -21
- package/samples/MetroWidgetDemos/PingPong/TabItem.vue +1 -1
- package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +5 -5
- package/samples/MetroWidgetDemos/{WidgetItem.vue → PingPong/WidgetItem.vue} +8 -4
- package/samples/MetroWidgetDemos/basic/App.vue +162 -0
- package/samples/MetroWidgetDemos/basic/Item.vue +43 -0
- package/samples/MetroWidgetDemos/direction/App.vue +158 -0
- package/samples/MetroWidgetDemos/direction/Item.vue +45 -0
- package/samples/MetroWidgetDemos/focusableItemBasic/App.vue +67 -0
- package/samples/MetroWidgetDemos/{Advanced → focusableItemBasic}/ButtonItem.vue +17 -21
- package/samples/MetroWidgetDemos/focusableItemMetroWidget/App.vue +74 -0
- package/samples/MetroWidgetDemos/{Advanced/widgets → focusableItemMetroWidget}/Item.vue +13 -32
- package/samples/MetroWidgetDemos/{Advanced/widgets → focusableItemMetroWidget}/WidgetItem.vue +12 -12
- package/samples/MetroWidgetDemos/focusableItemMix/App.vue +88 -0
- package/samples/MetroWidgetDemos/focusableItemMix/ButtonItem.vue +86 -0
- package/samples/MetroWidgetDemos/focusableItemMix/Item.vue +43 -0
- package/samples/MetroWidgetDemos/index.js +6 -0
- package/samples/MetroWidgetDemos/layoutType/App.vue +180 -0
- package/samples/MetroWidgetDemos/layoutType/Item.vue +45 -0
- package/samples/MetroWidgetDemos/padding/App.vue +222 -0
- package/samples/MetroWidgetDemos/padding/Item.vue +64 -0
- package/samples/MetroWidgetDemos/routeList.js +64 -0
- package/samples/MetroWidgetDemos/slideSetting/App.vue +225 -0
- package/samples/MetroWidgetDemos/slideSetting/Item.vue +45 -0
- package/samples/NinePatchDemo/App.vue +78 -122
- package/samples/NinePatchDemo/Item.vue +29 -27
- package/samples/Preload/App.vue +1 -1
- package/samples/Preload/Item.vue +1 -1
- package/samples/QrcodeDemo/App.vue +1 -1
- package/samples/SoundPool/App.vue +3 -3
- package/samples/SpriteImage/App.vue +5 -0
- package/samples/Swiper/App.vue +148 -0
- package/samples/TextBox/App.vue +2 -1
- package/samples/TextureAnimation/App2.vue +1 -1
- package/samples/ThrowMoveDemo/LRParabolicDemo.vue +33 -47
- package/samples/TouchSample/MetroWidgetHorizontal.vue +1 -1
- package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
- package/samples/TransitPage/App.vue +1 -1
- package/samples/VideoDemo/App.vue +8 -8
- package/samples/VideoDemo/components/Button.vue +1 -1
- package/samples/VideoDemo/components/Controllor.vue +1 -1
- package/samples/VisibleSensorDemo/App.vue +3 -3
- package/scripts/jsview-run-android.js +5 -4
- package/utils/JsViewEngineWidget/JsvFocusBlock.vue +4 -4
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +79 -50
- package/utils/JsViewEngineWidget/TemplateParser.js +144 -147
- package/utils/JsViewEngineWidget/WidgetCommon.js +12 -3
- package/utils/JsViewPlugin/BrowserPluginLoader.js +4 -2
- package/utils/JsViewPlugin/JsvAudio/AudioProxy.js +302 -0
- package/utils/JsViewPlugin/JsvAudio/CheckType.js +68 -0
- package/utils/JsViewPlugin/JsvAudio/Events.js +17 -0
- package/utils/JsViewPlugin/JsvAudio/JsvAudio.vue +176 -0
- package/utils/JsViewPlugin/JsvAudio/JsvAudioBridgeProxy.js +40 -0
- package/utils/JsViewPlugin/JsvAudio/JsvAudioBrowser.vue +46 -0
- package/utils/JsViewPlugin/JsvAudio/PluginLoader.js +140 -0
- package/utils/JsViewPlugin/JsvAudio/index.js +26 -0
- package/utils/JsViewPlugin/JsvAudio/version.js +24 -0
- package/utils/JsViewPlugin/JsvPlayer/index.js +1 -1
- package/utils/JsViewPlugin/JsvPlayer/version.js +5 -5
- package/utils/JsViewVueTools/JsvHashHistory.js +34 -8
- package/utils/JsViewVueTools/JsvImpactTracer.js +2 -2
- package/utils/JsViewVueTools/JsvRuntimeBridge.js +46 -8
- package/utils/JsViewVueTools/JsvStyleClass.js +9 -0
- package/utils/{JsViewVueWidget/utils/text.js → JsViewVueTools/JsvTextTools.js} +24 -4
- package/utils/JsViewVueTools/TypeCheckAndSet.js +3 -3
- package/utils/JsViewVueTools/index.js +2 -1
- package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserTextureAnim.vue +5 -7
- package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +20 -22
- package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +4 -4
- package/utils/JsViewVueWidget/JsvGrid.vue +1 -9
- package/utils/JsViewVueWidget/JsvInput/Cursor.vue +1 -1
- package/utils/JsViewVueWidget/JsvMarquee.vue +91 -20
- package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +1 -1
- package/utils/JsViewVueWidget/JsvNinePatch.vue +63 -53
- package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +10 -5
- package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +2 -2
- package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +116 -80
- package/utils/JsViewVueWidget/JsvSwiper/index.js +3 -2
- package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +1 -1
- package/utils/JsViewVueWidget/JsvTextBox.vue +11 -31
- package/utils/JsViewVueWidget/JsvTouchContainer.vue +2 -2
- package/utils/JsViewVueWidget/JsvTransparentDiv.vue +1 -1
- package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +5 -5
- package/utils/JsViewVueWidget/index.js +8 -8
- package/samples/MetroWidgetDemos/Advanced/App.vue +0 -46
- package/samples/MetroWidgetDemos/Advanced/Buttons.vue +0 -70
- package/samples/MetroWidgetDemos/Advanced/Mixed.vue +0 -77
- package/samples/MetroWidgetDemos/Advanced/widgets/Widgets.vue +0 -116
- package/samples/MetroWidgetDemos/Advanced/widgets/focus1.png +0 -0
- package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +0 -75
- package/samples/MetroWidgetDemos/Simple/App.vue +0 -45
- package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +0 -111
- package/samples/MetroWidgetDemos/data.js +0 -205
- package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +0 -35
- package/utils/JsViewVueWidget/utils/index.js +0 -8
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
* @Author: ChenChanghua
|
|
3
3
|
* @Date: 2021-09-22 16:08:58
|
|
4
|
-
* @LastEditors:
|
|
5
|
-
* @LastEditTime:
|
|
4
|
+
* @LastEditors: Please set LastEditors
|
|
5
|
+
* @LastEditTime: 2023-03-09 11:17:00
|
|
6
6
|
* @Description: file content
|
|
7
7
|
-->
|
|
8
8
|
|
|
@@ -23,14 +23,20 @@
|
|
|
23
23
|
* name {string} 用于设置焦点的名称
|
|
24
24
|
* padding {object} 控件内边距, 默认为{left: 0, right: 0, top: 0, bottom: 0}
|
|
25
25
|
* direction {enum} (必选)控件方向 HORIZONTAL/VERTICAL
|
|
26
|
-
*
|
|
26
|
+
* focusMoveType {int} 焦点移动的模式, 可通过 | 运算进行组合
|
|
27
|
+
NO_ADJUST: 无特殊处理
|
|
28
|
+
COLUMN_LOOP: 到达列首/尾后跳转到上/下一列, 只在水平滚动时生效
|
|
29
|
+
ROW_LOOP: 到达行首/尾后跳转到上/下一行, 只在竖直滚动时生效
|
|
30
|
+
COLUMN_FIND_NEAR: 一列中没有下一个元素时是否跳转到相邻列
|
|
31
|
+
ROW_FIND_NEAR: 一行中没有下一个元素时是否跳转到相邻行
|
|
32
|
+
|
|
27
33
|
* initFocusId {int} 初始焦点,默认为0
|
|
28
34
|
* slideSetting {SlideSetting} 页面滑动的设置, 目前SlideSetting有三个子类, 具体见 WidgetCommon 中的说明
|
|
29
35
|
WholePageSlide
|
|
30
36
|
@description 整页滚动的设置类
|
|
31
37
|
@constructor {Object} {speed, easing, boundProtect}
|
|
32
38
|
SeamlessSlide
|
|
33
|
-
@description
|
|
39
|
+
@description 无缝滚动的设置类
|
|
34
40
|
@constructor {Object} {startPercent, endPercent, speed, easing, boundProtect}
|
|
35
41
|
FixPositionSlide
|
|
36
42
|
@description 固定位置滚动的设置类
|
|
@@ -80,6 +86,7 @@
|
|
|
80
86
|
* loadAll {boolean} 加载不显示的view,触控场景使用
|
|
81
87
|
* flingPageWidth {}
|
|
82
88
|
* flingPageEdge {}
|
|
89
|
+
* disableClip {boolean} 取消显示范围的clipView
|
|
83
90
|
* methods:
|
|
84
91
|
getFocusBlockRef 获取此MetroWidget的 jsv-focus-block句柄,可以使用requestFocus完成获焦
|
|
85
92
|
|
|
@@ -364,7 +371,7 @@ const props = defineProps({
|
|
|
364
371
|
slideSetting: {
|
|
365
372
|
type: SlideSetting,
|
|
366
373
|
default() {
|
|
367
|
-
return new SeamlessSlide(0.2, 0.8);
|
|
374
|
+
return new SeamlessSlide({ startPercent: 0.2, endPercent: 0.8 });
|
|
368
375
|
},
|
|
369
376
|
},
|
|
370
377
|
layoutType: {
|
|
@@ -397,6 +404,14 @@ const props = defineProps({
|
|
|
397
404
|
onScroll: {
|
|
398
405
|
type: Function,
|
|
399
406
|
},
|
|
407
|
+
focusMoveType: {
|
|
408
|
+
type: Number,
|
|
409
|
+
default: 0,
|
|
410
|
+
},
|
|
411
|
+
disableClip: {
|
|
412
|
+
type: Boolean,
|
|
413
|
+
default: false,
|
|
414
|
+
},
|
|
400
415
|
});
|
|
401
416
|
|
|
402
417
|
let dataUpdateToken = ref(0);
|
|
@@ -423,7 +438,7 @@ let itemRender = ref(!props.enableItemRenderBreak);
|
|
|
423
438
|
let permanentItemList = [];
|
|
424
439
|
let preUpdateVisibleStart = 0;
|
|
425
440
|
let mounted = false;
|
|
426
|
-
let focusNode =
|
|
441
|
+
let focusNode = shallowRef(null);
|
|
427
442
|
let pageRange = vertical ? props.height : props.width;
|
|
428
443
|
|
|
429
444
|
let slideLock = false;
|
|
@@ -464,8 +479,8 @@ let visibleInfo = {
|
|
|
464
479
|
},
|
|
465
480
|
};
|
|
466
481
|
|
|
467
|
-
let locateDiv =
|
|
468
|
-
let slideDiv =
|
|
482
|
+
let locateDiv = shallowRef(null);
|
|
483
|
+
let slideDiv = shallowRef(null);
|
|
469
484
|
let renderData = shallowRef([]);
|
|
470
485
|
let slideDivLeft = ref(0);
|
|
471
486
|
let slideDivTop = ref(0);
|
|
@@ -483,7 +498,7 @@ const _onFocusChange = (id) => {
|
|
|
483
498
|
const _getCurrentId = () => {
|
|
484
499
|
return {
|
|
485
500
|
id: focusId,
|
|
486
|
-
index: templateParser.
|
|
501
|
+
index: templateParser.IdToIndex(focusId),
|
|
487
502
|
};
|
|
488
503
|
};
|
|
489
504
|
|
|
@@ -533,24 +548,26 @@ const _dispatchEvent = (event) => {
|
|
|
533
548
|
};
|
|
534
549
|
|
|
535
550
|
const onItemClick = (index) => {
|
|
536
|
-
if (isFocus && innerData[index]
|
|
551
|
+
if (isFocus && innerData[index]?.callbacks.callable("onClick")) {
|
|
537
552
|
innerData[index].callbacks.onClick();
|
|
538
553
|
}
|
|
539
554
|
};
|
|
540
555
|
|
|
541
556
|
const onItemBlur = (index) => {
|
|
542
|
-
if (isFocus && innerData[index]
|
|
557
|
+
if (isFocus && innerData[index]?.callbacks.callable("onBlur")) {
|
|
543
558
|
innerData[index].callbacks.onBlur();
|
|
544
559
|
}
|
|
545
560
|
};
|
|
546
561
|
|
|
547
562
|
const onItemFocus = (index, rect) => {
|
|
548
563
|
if (isFocus) {
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
innerData[index].callbacks.onFocus
|
|
552
|
-
|
|
553
|
-
|
|
564
|
+
if (innerData[index]) {
|
|
565
|
+
_itemOnFocusSideEffect(innerData[index], rect);
|
|
566
|
+
if (innerData[index].callbacks.callable("onFocus")) {
|
|
567
|
+
innerData[index].callbacks.onFocus(rect);
|
|
568
|
+
} else {
|
|
569
|
+
callFocusAfterUpdate = true;
|
|
570
|
+
}
|
|
554
571
|
}
|
|
555
572
|
}
|
|
556
573
|
};
|
|
@@ -563,7 +580,7 @@ const setFocusId = (id, needSlide = true, doAnim = false, extraSetting) => {
|
|
|
563
580
|
let next_focus_item = templateParser.GetItemById(id);
|
|
564
581
|
if (next_focus_item) {
|
|
565
582
|
if (needSlide) {
|
|
566
|
-
slideToItem(templateParser.
|
|
583
|
+
slideToItem(templateParser.IdToIndex(id), doAnim);
|
|
567
584
|
}
|
|
568
585
|
let unlock = null;
|
|
569
586
|
if (extraSetting) {
|
|
@@ -589,8 +606,8 @@ const setFocusId = (id, needSlide = true, doAnim = false, extraSetting) => {
|
|
|
589
606
|
};
|
|
590
607
|
_updateBlurItem();
|
|
591
608
|
_updateFocusItem();
|
|
592
|
-
onItemBlur(templateParser.
|
|
593
|
-
onItemFocus(templateParser.
|
|
609
|
+
onItemBlur(templateParser.IdToIndex(preFocusId));
|
|
610
|
+
onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
|
|
594
611
|
unlock?.();
|
|
595
612
|
}
|
|
596
613
|
};
|
|
@@ -797,7 +814,7 @@ const refreshData = (force_update) => {
|
|
|
797
814
|
dataUpdateToken.value++;
|
|
798
815
|
pageUpdater.apply();
|
|
799
816
|
_updateFocusItem();
|
|
800
|
-
onItemFocus(templateParser.
|
|
817
|
+
onItemFocus(templateParser.IdToIndex(focusId), null);
|
|
801
818
|
if (needSlide) {
|
|
802
819
|
_slideTo(visibleInfo.start, null);
|
|
803
820
|
} else if (need_update_content) {
|
|
@@ -1053,7 +1070,7 @@ const onKeyDown = (ev) => {
|
|
|
1053
1070
|
_moveToNext(horizontal_direction, vertical_direction);
|
|
1054
1071
|
break;
|
|
1055
1072
|
case 13:
|
|
1056
|
-
onItemClick(templateParser.
|
|
1073
|
+
onItemClick(templateParser.IdToIndex(focusId));
|
|
1057
1074
|
break;
|
|
1058
1075
|
default:
|
|
1059
1076
|
//只接受上下左右确定键
|
|
@@ -1093,7 +1110,7 @@ const _onTemplateAdd = (item) => {
|
|
|
1093
1110
|
this.slotMounted.value = true;
|
|
1094
1111
|
if (callFocusAfterUpdate && this.data.id === focusId) {
|
|
1095
1112
|
nextTick(() => {
|
|
1096
|
-
onItemFocus(templateParser.
|
|
1113
|
+
onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
|
|
1097
1114
|
});
|
|
1098
1115
|
callFocusAfterUpdate = false;
|
|
1099
1116
|
}
|
|
@@ -1198,7 +1215,9 @@ const _onCustomerEvent = (ev) => {
|
|
|
1198
1215
|
yPos: item_layout.top,
|
|
1199
1216
|
width: item_layout.width,
|
|
1200
1217
|
height: item_layout.height,
|
|
1201
|
-
|
|
1218
|
+
centerYPos: Math.floor(item_layout.top + item_layout.height / 2),
|
|
1219
|
+
centerXPos: Math.floor(item_layout.left + item_layout.width / 2),
|
|
1220
|
+
index: templateParser.IdToIndex(focusId),
|
|
1202
1221
|
};
|
|
1203
1222
|
|
|
1204
1223
|
let cur_slide = _calculateVisibleStart(obj, direction);
|
|
@@ -1244,15 +1263,14 @@ const _moveToNext = (
|
|
|
1244
1263
|
item_edge_rect
|
|
1245
1264
|
) => {
|
|
1246
1265
|
let cur_focus_item = templateParser.GetItemById(focusId);
|
|
1247
|
-
let
|
|
1266
|
+
let next_focus_item = templateParser.GetNextItem(
|
|
1248
1267
|
focusId,
|
|
1249
1268
|
vertical_direction,
|
|
1250
1269
|
horizontal_direction,
|
|
1251
|
-
props.
|
|
1270
|
+
props.focusMoveType
|
|
1252
1271
|
);
|
|
1253
|
-
if (
|
|
1272
|
+
if (next_focus_item !== null) {
|
|
1254
1273
|
preFocusId = focusId;
|
|
1255
|
-
let next_focus_item = templateParser.GetItemById(next_item_id);
|
|
1256
1274
|
templateItemAdder.tryAddItem(next_focus_item, 1);
|
|
1257
1275
|
focusId = next_focus_item.id;
|
|
1258
1276
|
|
|
@@ -1261,8 +1279,7 @@ const _moveToNext = (
|
|
|
1261
1279
|
|
|
1262
1280
|
let cur_visible_start = _calculateVisibleStart(next_focus_item, direction);
|
|
1263
1281
|
if (
|
|
1264
|
-
!innerData[templateParser.
|
|
1265
|
-
?.takeOverSlide &&
|
|
1282
|
+
!innerData[templateParser.IdToIndex(focusId)].itemConfig?.takeOverSlide &&
|
|
1266
1283
|
visibleInfo.start !== cur_visible_start
|
|
1267
1284
|
) {
|
|
1268
1285
|
if (next_focus_item.doSlide) {
|
|
@@ -1284,7 +1301,7 @@ const _moveToNext = (
|
|
|
1284
1301
|
1,
|
|
1285
1302
|
visibleInfo.endWithPadding + props.keepTraceRange * pageRange
|
|
1286
1303
|
),
|
|
1287
|
-
|
|
1304
|
+
next_focus_item.id,
|
|
1288
1305
|
false,
|
|
1289
1306
|
permanentItemList
|
|
1290
1307
|
);
|
|
@@ -1294,7 +1311,7 @@ const _moveToNext = (
|
|
|
1294
1311
|
templateParser,
|
|
1295
1312
|
cur_visible_start,
|
|
1296
1313
|
cur_visible_start + visibleInfo.range + visibleInfo.padding.end - 1,
|
|
1297
|
-
|
|
1314
|
+
next_focus_item.id,
|
|
1298
1315
|
false,
|
|
1299
1316
|
permanentItemList
|
|
1300
1317
|
);
|
|
@@ -1305,7 +1322,7 @@ const _moveToNext = (
|
|
|
1305
1322
|
let rect;
|
|
1306
1323
|
let x_off_set = cur_focus_item.xPos - next_focus_item.xPos;
|
|
1307
1324
|
let y_off_set = cur_focus_item.yPos - next_focus_item.yPos;
|
|
1308
|
-
if (item_edge_rect) {
|
|
1325
|
+
if (item_edge_rect && item_edge_rect.rect) {
|
|
1309
1326
|
item_edge_rect.rect.x += x_off_set;
|
|
1310
1327
|
item_edge_rect.rect.y += y_off_set;
|
|
1311
1328
|
rect = item_edge_rect;
|
|
@@ -1333,8 +1350,8 @@ const _moveToNext = (
|
|
|
1333
1350
|
preEdgeRect = rect;
|
|
1334
1351
|
_updateBlurItem();
|
|
1335
1352
|
_updateFocusItem();
|
|
1336
|
-
onItemBlur(templateParser.
|
|
1337
|
-
onItemFocus(templateParser.
|
|
1353
|
+
onItemBlur(templateParser.IdToIndex(preFocusId));
|
|
1354
|
+
onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
|
|
1338
1355
|
} else {
|
|
1339
1356
|
let x_off_set = props.direction === VERTICAL ? 0 : visibleInfo.start;
|
|
1340
1357
|
let y_off_set = props.direction === VERTICAL ? visibleInfo.start : 0;
|
|
@@ -1358,7 +1375,7 @@ const _moveToNext = (
|
|
|
1358
1375
|
height: cur_focus_item.height,
|
|
1359
1376
|
};
|
|
1360
1377
|
props.onEdge?.({ direction: edge, rect: rect });
|
|
1361
|
-
innerData[templateParser.
|
|
1378
|
+
innerData[templateParser.IdToIndex(focusId)].callbacks.onWidgetEdge?.({
|
|
1362
1379
|
direction: edge,
|
|
1363
1380
|
});
|
|
1364
1381
|
}
|
|
@@ -1384,9 +1401,17 @@ const _calculateVisibleStart = (target_item, direction) => {
|
|
|
1384
1401
|
);
|
|
1385
1402
|
break;
|
|
1386
1403
|
case SlideSetting.Type.WHOLE_PAGE:
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1404
|
+
if (typeof target_item.pageHeadIndex == "undefined") {
|
|
1405
|
+
//TODO 子控制滚动时whole page滚动
|
|
1406
|
+
console.error(
|
|
1407
|
+
"child controlled whole page slide type is not supported."
|
|
1408
|
+
);
|
|
1409
|
+
} else {
|
|
1410
|
+
new_visible_start = templateParser.GetItem(target_item.pageHeadIndex)[
|
|
1411
|
+
pos_key
|
|
1412
|
+
];
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1390
1415
|
break;
|
|
1391
1416
|
case SlideSetting.Type.SEAMLESS:
|
|
1392
1417
|
if (
|
|
@@ -1528,12 +1553,13 @@ const _onFocus = (params) => {
|
|
|
1528
1553
|
focus_id = _ifValidEnterRect(enterFocusRect)
|
|
1529
1554
|
? _calculateNearestItemByRect(pageUpdater.getRange(), enterFocusRect)
|
|
1530
1555
|
: focus_id;
|
|
1556
|
+
|
|
1531
1557
|
preEdgeRect = enterFocusRect;
|
|
1532
1558
|
focusId = focus_id;
|
|
1533
1559
|
enterFocusId = -1;
|
|
1534
1560
|
enterFocusRect = null;
|
|
1535
1561
|
_updateFocusItem();
|
|
1536
|
-
onItemFocus(templateParser.
|
|
1562
|
+
onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
|
|
1537
1563
|
props.onFocus?.();
|
|
1538
1564
|
};
|
|
1539
1565
|
|
|
@@ -1547,7 +1573,7 @@ const _onBlur = () => {
|
|
|
1547
1573
|
}
|
|
1548
1574
|
preFocusId = focusId;
|
|
1549
1575
|
_updateBlurItem();
|
|
1550
|
-
innerData[templateParser.
|
|
1576
|
+
innerData[templateParser.IdToIndex(preFocusId)].callbacks.onBlur();
|
|
1551
1577
|
|
|
1552
1578
|
props.onBlur?.();
|
|
1553
1579
|
};
|
|
@@ -1560,11 +1586,11 @@ const _onSlideEnd = (event) => {
|
|
|
1560
1586
|
};
|
|
1561
1587
|
|
|
1562
1588
|
const _updateFocusItem = () => {
|
|
1563
|
-
_setZIndex(templateParser.
|
|
1589
|
+
_setZIndex(templateParser.IdToIndex(focusId), innerData.length, true);
|
|
1564
1590
|
};
|
|
1565
1591
|
|
|
1566
1592
|
const _updateBlurItem = () => {
|
|
1567
|
-
_setZIndex(templateParser.
|
|
1593
|
+
_setZIndex(templateParser.IdToIndex(preFocusId), 0, false);
|
|
1568
1594
|
};
|
|
1569
1595
|
|
|
1570
1596
|
const _updateFocusByDragInfo = (viewX, viewY) => {
|
|
@@ -1712,8 +1738,8 @@ const _onScroll = () => {
|
|
|
1712
1738
|
const _updatePosition = (x, y, anim_info) => {
|
|
1713
1739
|
if (slideLock) return;
|
|
1714
1740
|
if (toRaw(slideDiv.value)) {
|
|
1715
|
-
let pre_left =
|
|
1716
|
-
pre_top =
|
|
1741
|
+
let pre_left = slideDivLeft.value,
|
|
1742
|
+
pre_top = slideDivTop.value;
|
|
1717
1743
|
//jsvMaskView的位置更新时会被设置位0,因此不能通过ResetLayoutParams设置位置
|
|
1718
1744
|
slideDivLeft.value = x;
|
|
1719
1745
|
slideDivTop.value = y;
|
|
@@ -1734,7 +1760,9 @@ const _updatePosition = (x, y, anim_info) => {
|
|
|
1734
1760
|
slide_animation.SetAnimationListener(
|
|
1735
1761
|
new Forge.AnimationListener(anim_info.onstart, anim_info.onend, null)
|
|
1736
1762
|
);
|
|
1737
|
-
toRaw(slideDiv.value)
|
|
1763
|
+
toRaw(slideDiv.value)
|
|
1764
|
+
.jsvGetProxyView(true)
|
|
1765
|
+
.StartAnimation(slide_animation);
|
|
1738
1766
|
}
|
|
1739
1767
|
_onScroll();
|
|
1740
1768
|
}
|
|
@@ -1742,7 +1770,7 @@ const _updatePosition = (x, y, anim_info) => {
|
|
|
1742
1770
|
|
|
1743
1771
|
const _initRootTouch = () => {
|
|
1744
1772
|
if (props.enableTouch && toRaw(slideDiv.value)) {
|
|
1745
|
-
let view = toRaw(slideDiv.value).
|
|
1773
|
+
let view = toRaw(slideDiv.value).jsvGetProxyView(true);
|
|
1746
1774
|
var drag_setting = new Forge.DragSetting(
|
|
1747
1775
|
dragDirection,
|
|
1748
1776
|
20,
|
|
@@ -1759,7 +1787,7 @@ const _initItemViewTouch = (itemDivRef, index) => {
|
|
|
1759
1787
|
if (props.enableTouch) {
|
|
1760
1788
|
if (itemDivRef) {
|
|
1761
1789
|
// 为view添加触控处理
|
|
1762
|
-
let view = itemDivRef.
|
|
1790
|
+
let view = itemDivRef.jsvGetProxyView(true);
|
|
1763
1791
|
let dragSetting = new Forge.DragSetting(
|
|
1764
1792
|
Forge.DragSetting.DIRECTION_DISABLE,
|
|
1765
1793
|
20,
|
|
@@ -1808,6 +1836,7 @@ templateParser = _getTemplateParser(
|
|
|
1808
1836
|
props.supportHistoryPath,
|
|
1809
1837
|
props.layoutType
|
|
1810
1838
|
);
|
|
1839
|
+
|
|
1811
1840
|
templateItemAdder = new TemplateItemAdder(
|
|
1812
1841
|
templateParser,
|
|
1813
1842
|
dataList,
|
|
@@ -1846,7 +1875,7 @@ slidePile = new Forge.RectArea(
|
|
|
1846
1875
|
let init_focus_id = 0;
|
|
1847
1876
|
let cur_visible_start = 0;
|
|
1848
1877
|
|
|
1849
|
-
if (typeof props.initFocusId ==
|
|
1878
|
+
if (typeof props.initFocusId == "number") {
|
|
1850
1879
|
templateItemAdder.tryAddItemById(props.initFocusId);
|
|
1851
1880
|
const item = templateParser.GetItemById(props.initFocusId);
|
|
1852
1881
|
if (item) {
|
|
@@ -1884,7 +1913,7 @@ onMounted(() => {
|
|
|
1884
1913
|
_slideTo(visibleInfo.start, null);
|
|
1885
1914
|
}
|
|
1886
1915
|
|
|
1887
|
-
onItemFocus(templateParser.
|
|
1916
|
+
onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
|
|
1888
1917
|
|
|
1889
1918
|
if (props.enableItemRenderBreak) {
|
|
1890
1919
|
nextTick(() => {
|
|
@@ -1918,7 +1947,7 @@ defineExpose(exportObject);
|
|
|
1918
1947
|
top: top,
|
|
1919
1948
|
width: width,
|
|
1920
1949
|
height: height,
|
|
1921
|
-
overflow: 'hidden',
|
|
1950
|
+
overflow: disableClip ? null : 'hidden',
|
|
1922
1951
|
}"
|
|
1923
1952
|
>
|
|
1924
1953
|
<div :style="{ left: innerPadding.left, top: innerPadding.top }">
|