@shijiu/jsview-vue 0.9.246 → 0.9.254

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.
Files changed (173) hide show
  1. package/dom/bin/package.json +11 -11
  2. package/dom/browser-root-style.css +21 -21
  3. package/loader/jsview-main.js +41 -41
  4. package/loader/jsview.config.default.js +37 -37
  5. package/loader/jsview.default.config.js +37 -37
  6. package/package.json +6 -6
  7. package/patches/node_modules/@babel/preset-env/lib/available-plugins.js +218 -218
  8. package/patches/node_modules/@vue/cli-plugin-typescript/index.js +100 -100
  9. package/patches/node_modules/@vue/cli-service/lib/commands/serve.js +395 -395
  10. package/patches/node_modules/@vue/cli-service/lib/config/app.js +272 -272
  11. package/patches/node_modules/@vue/cli-service/lib/config/assets.js +70 -70
  12. package/patches/node_modules/@vue/cli-service/lib/config/base.js +212 -212
  13. package/patches/node_modules/postcss-js/objectifier.js +90 -90
  14. package/patches/node_modules/vue-loader/dist/resolveScript.js +70 -70
  15. package/samples/AdvanceMetroWidget/App.vue +122 -122
  16. package/samples/AdvanceMetroWidget/Frame.vue +100 -100
  17. package/samples/AdvanceMetroWidget/Item.vue +57 -57
  18. package/samples/AdvanceMetroWidget/data.js +136 -136
  19. package/samples/AnimPicture/App.vue +223 -223
  20. package/samples/Basic/App.vue +128 -128
  21. package/samples/Basic/components/TitleBar.vue +28 -28
  22. package/samples/Basic/components/anim/AnimGroup.vue +67 -67
  23. package/samples/Basic/components/anim/AnimKeyframeBasic.vue +101 -101
  24. package/samples/Basic/components/anim/AnimKeyframeComposite.vue +52 -52
  25. package/samples/Basic/components/anim/AnimTransition.vue +116 -116
  26. package/samples/Basic/components/div/DivBackground.vue +14 -14
  27. package/samples/Basic/components/div/DivClip.vue +80 -80
  28. package/samples/Basic/components/div/DivCssScoped.vue +26 -26
  29. package/samples/Basic/components/div/DivCssVar.vue +49 -49
  30. package/samples/Basic/components/div/DivGroup1.vue +32 -32
  31. package/samples/Basic/components/div/DivGroup2.vue +40 -40
  32. package/samples/Basic/components/div/DivLayout.vue +11 -11
  33. package/samples/Basic/components/div/DivRadius.vue +46 -46
  34. package/samples/Basic/components/text/TextAlign.vue +47 -47
  35. package/samples/Basic/components/text/TextFontStyle.vue +57 -57
  36. package/samples/Basic/components/text/TextGroup.vue +31 -31
  37. package/samples/Basic/components/text/TextOverflow.vue +77 -77
  38. package/samples/BasicFocusControl/App.vue +124 -124
  39. package/samples/BasicFocusControl/components/BaseBlock.vue +50 -50
  40. package/samples/BasicFocusControl/components/MainArea.vue +97 -97
  41. package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +20 -20
  42. package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +29 -29
  43. package/samples/BasicFocusControl/components/SideBar.vue +72 -72
  44. package/samples/BasicFocusControl/components/SideBarBlock.vue +29 -29
  45. package/samples/ClassNameDemo/App.vue +119 -119
  46. package/samples/ClassNameDemo/components/ContentItem.vue +252 -252
  47. package/samples/ClassNameDemo/components/LoadingView.vue +43 -43
  48. package/samples/ClassNameDemo/components/TitleView.vue +24 -24
  49. package/samples/ClassNameDemo/data.js +24 -24
  50. package/samples/ColorSpace/App.vue +134 -134
  51. package/samples/DemoHomepage/App.vue +31 -31
  52. package/samples/DemoHomepage/components/BodyFrame.vue +81 -81
  53. package/samples/DemoHomepage/components/Dialog.vue +93 -93
  54. package/samples/DemoHomepage/components/Item.vue +76 -76
  55. package/samples/DemoHomepage/components/TabFrame.vue +86 -86
  56. package/samples/DemoHomepage/router.js +132 -132
  57. package/samples/DemoHomepage/views/Homepage.vue +186 -186
  58. package/samples/FlipCard/App.vue +80 -80
  59. package/samples/FlipCard/FlipCard.vue +123 -123
  60. package/samples/FlipCard/data.js +12 -12
  61. package/samples/FlowMultiWidget/App.vue +90 -90
  62. package/samples/FlowMultiWidget/components/Block.vue +106 -106
  63. package/samples/FlowMultiWidget/components/FlowPage.vue +59 -59
  64. package/samples/FlowMultiWidget/components/Item.vue +102 -102
  65. package/samples/FlowMultiWidget/components/MenuItem.vue +71 -71
  66. package/samples/FlowMultiWidget/components/MyMenu.vue +89 -89
  67. package/samples/FlowMultiWidget/data.js +446 -446
  68. package/samples/HashHistory/App.vue +124 -124
  69. package/samples/HashHistory/components/HorizontalButtonList.vue +113 -113
  70. package/samples/HashHistory/components/Item.vue +73 -73
  71. package/samples/HashHistory/router.js +29 -29
  72. package/samples/HashHistory/views/BasePage.vue +18 -18
  73. package/samples/HashHistory/views/MainPage.vue +67 -67
  74. package/samples/HashHistory/views/SubPage.vue +78 -78
  75. package/samples/HashHistory/views/SubPageFirst.vue +9 -9
  76. package/samples/HashHistory/views/SubPageSecond.vue +9 -9
  77. package/samples/LongImage/App.vue +96 -96
  78. package/samples/LongImage/Button.vue +153 -153
  79. package/samples/LongImage/LongImageScroll.vue +126 -126
  80. package/samples/LongImage/Scroll.vue +15 -15
  81. package/samples/LongText/App.vue +111 -111
  82. package/samples/LongText/Button.vue +153 -153
  83. package/samples/LongText/LongTextScroll.vue +224 -224
  84. package/samples/LongText/Scroll.vue +15 -15
  85. package/samples/Preload/App.vue +145 -145
  86. package/samples/Preload/data.js +22 -22
  87. package/samples/Preload/preloadItem.vue +21 -21
  88. package/samples/QrcodeDemo/App.vue +72 -72
  89. package/samples/SimpleWidgetDemo/App.vue +203 -203
  90. package/samples/SimpleWidgetDemo/Item.vue +82 -82
  91. package/samples/SimpleWidgetDemo/components/ContentItem.vue +411 -411
  92. package/samples/SimpleWidgetDemo/components/MyTab.vue +116 -116
  93. package/samples/SimpleWidgetDemo/data.js +110 -110
  94. package/samples/SprayView/App.vue +269 -269
  95. package/samples/SpriteImage/App.vue +174 -174
  96. package/samples/SpriteImage/images/egg_break.json +116 -116
  97. package/samples/TextBox/App.vue +178 -178
  98. package/samples/TextBox/RenderCenter.vue +108 -108
  99. package/samples/TextBox/RenderLeft.vue +108 -108
  100. package/samples/TextBox/RenderOneLine.vue +119 -119
  101. package/samples/TextBox/RenderRight.vue +106 -106
  102. package/samples/TextShadowDemo/App.vue +97 -97
  103. package/samples/TextureSize/App.vue +141 -141
  104. package/samples/ThrowMoveDemo/AccelerateDemo.vue +117 -117
  105. package/samples/ThrowMoveDemo/App.vue +113 -113
  106. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +115 -115
  107. package/samples/ThrowMoveDemo/TargetDemo.vue +116 -116
  108. package/samples/ThrowMoveDemo/UDParabolicDemo.vue +121 -121
  109. package/samples/TransitPage/App.vue +40 -40
  110. package/samples/VideoDemo/App.vue +137 -137
  111. package/samples/VideoDemo/components/Button.vue +68 -68
  112. package/samples/VideoDemo/components/Controllor.vue +195 -195
  113. package/samples/VideoDemo/components/VideoFrame.vue +152 -152
  114. package/scripts/common.js +115 -92
  115. package/scripts/deploy-fast-pack.js +17 -0
  116. package/scripts/deploy-fast-publish.js +44 -0
  117. package/scripts/{git-commit-empty.js → deploy-git-commit-empty.js} +21 -21
  118. package/scripts/{pre-pack.js → deploy-prepare.js} +56 -39
  119. package/scripts/{install-local-packages.js → jsview-install-local-packages.js} +73 -73
  120. package/scripts/{post-build.js → jsview-post-build.js} +127 -127
  121. package/scripts/{post-install.js → jsview-post-install.js} +78 -78
  122. package/scripts/{run-android.js → jsview-run-android.js} +64 -64
  123. package/scripts/make-js.sh +181 -181
  124. package/utils/JsViewEngineWidget/bin/index.js +1 -1
  125. package/utils/JsViewEngineWidget/bin/package.json +11 -11
  126. package/utils/JsViewVueTools/JsvHashHistory.js +111 -111
  127. package/utils/JsViewVueTools/JsvRuntimeBridge.js +417 -417
  128. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +80 -80
  129. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +147 -147
  130. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserSpray.vue +54 -54
  131. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/ApicDataBase.js +28 -28
  132. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/BrowserApic.vue +123 -123
  133. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/GifData.js +83 -83
  134. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/LoopToolBase.js +25 -25
  135. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/NormalLoopTool.js +61 -61
  136. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/PartLoopTool.js +119 -119
  137. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/Viewer.js +106 -106
  138. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/WebpData.js +141 -141
  139. package/utils/JsViewVueWidget/BrowserDebugWidget/WidgetLoader.js +20 -20
  140. package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +204 -204
  141. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +63 -63
  142. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +426 -426
  143. package/utils/JsViewVueWidget/JsvActorMove/index.js +12 -12
  144. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +178 -178
  145. package/utils/JsViewVueWidget/JsvApic/index.js +17 -17
  146. package/utils/JsViewVueWidget/JsvMarquee.vue +196 -196
  147. package/utils/JsViewVueWidget/JsvNinePatch.vue +76 -76
  148. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +350 -350
  149. package/utils/JsViewVueWidget/JsvPreload/index.js +21 -21
  150. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +140 -140
  151. package/utils/JsViewVueWidget/JsvQrcode/index.js +18 -18
  152. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +139 -139
  153. package/utils/JsViewVueWidget/JsvSpray/index.js +14 -14
  154. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +447 -447
  155. package/utils/JsViewVueWidget/JsvSpriteAnim/SpriteController.js +56 -56
  156. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +6 -6
  157. package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +34 -34
  158. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +494 -494
  159. package/utils/JsViewVueWidget/JsvSwiper/index.js +9 -9
  160. package/utils/JsViewVueWidget/JsvSwiper3D/Indicator.vue +34 -34
  161. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +403 -403
  162. package/utils/JsViewVueWidget/JsvSwiper3D/index.js +9 -9
  163. package/utils/JsViewVueWidget/JsvTextBox.vue +110 -110
  164. package/utils/JsViewVueWidget/JsvVideo.vue +35 -35
  165. package/vetur.config.js +5 -5
  166. package/.gitmodules +0 -6
  167. package/README.md +0 -15
  168. package/doc/IMPORT_CHANGE_LOG.txt +0 -3
  169. package/doc/about-project-postinstall.md +0 -0
  170. package/doc/git_commit.md +0 -15
  171. package/doc/test_version_up.txt +0 -1
  172. package/scripts/update-version.js +0 -32
  173. package/shijiu-jsview-vue-0.9.246.tgz +0 -0
@@ -1,111 +1,111 @@
1
- <!--
2
- * 【界面概述】
3
- * 协议书的示例
4
- *
5
- * 【控件介绍】
6
- * SimpleWidget:见simpleMetrowidget
7
- *
8
- * 【技巧说明】
9
- * Q: 如何长文字div的高度自适应?
10
- * A: 描画长文字的div的高度不设置即可
11
- * 并通过element.clientHeight获取渲染后的自动高度,以决定滚动轴的总高度
12
- *
13
- * Q: 长段文字如何换行?
14
- * A: 若文字内容中需要折行,则需要把要显示内容放入字符串中,并加入'\n'来达到换行效果,例如:
15
- * <div>{"第一行
16
- * 第二行"}</div>
17
- * =======需要改成=======
18
- * <div>{"第一行\n\
19
- * 第二行"}</div>
20
- *
21
- * Q: 文字首行缩进如何做?
22
- * A: 目前系统只支持通过空格进行首行缩进,行首加入期望的空格数量即可达到缩进,因为盒子字体库和PC不尽相同,
23
- * 所以务必在盒子上实际测试缩进效果。
24
- -->
25
-
26
- <script lang="ts">
27
- import { Options, Vue } from "vue-class-component";
28
- import LongTextScroll from "./LongTextScroll.vue";
29
- import Button from "./Button.vue";
30
- import { jJsvRuntimeBridge } from "jsview/utils/JsViewVueTools/JsvRuntimeBridge";
31
-
32
- interface KeyEvent {
33
- keyCode: Number;
34
- }
35
-
36
- @Options({
37
- components: {
38
- LongTextScroll,
39
- Button,
40
- },
41
- })
42
- class App extends Vue {
43
- constructor(props: any) {
44
- super(props);
45
- }
46
-
47
- onKeyDown(ev: KeyEvent): Boolean {
48
- if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
49
- this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
50
- }
51
- return true;
52
- }
53
-
54
- mounted() {
55
- // 调试接口,对接JSCenter平台去掉启动图的处理
56
- jJsvRuntimeBridge.notifyPageLoaded();
57
- }
58
- }
59
- export default App;
60
- </script>
61
-
62
- <template>
63
- <jsv-focus-block
64
- autoFocus
65
- :onAction="{
66
- onKeyDown: onKeyDown,
67
- }"
68
- >
69
- <div>
70
- <div
71
- :style="{
72
- textAlign: 'center',
73
- fontSize: '30px',
74
- lineHeight: '50px',
75
- color: '#ffffff',
76
- left: 140,
77
- top: 20,
78
- width: 1000,
79
- height: 50,
80
- backgroundColor: 'rgba(27,38,151,0.8)',
81
- }"
82
- >
83
- 可展示篇幅超过一屏的文字
84
- </div>
85
- <div :style="{ left: 140, top: 100 }">
86
- <LongTextScroll
87
- :style="{ width: 1000, height: 500, backgroundColor: '#EEEEEE' }"
88
- :textStyle="{ color: '#000000', fontSize: 20 }"
89
- :scrollBlockStyle="{
90
- width: 10,
91
- height: 30,
92
- backgroundColor: '#555555',
93
- }"
94
- :scrollStyle="{
95
- left: 1005,
96
- width: 10,
97
- height: 500,
98
- backgroundColor: '#DDDDDD',
99
- }"
100
- :step="20"
101
- >
102
- </LongTextScroll>
103
- <div :style="{ left: 400, top: 550 }">
104
- <Button />
105
- </div>
106
- </div>
107
- </div>
108
- </jsv-focus-block>
109
- </template>
110
-
111
-
1
+ <!--
2
+ * 【界面概述】
3
+ * 协议书的示例
4
+ *
5
+ * 【控件介绍】
6
+ * SimpleWidget:见simpleMetrowidget
7
+ *
8
+ * 【技巧说明】
9
+ * Q: 如何长文字div的高度自适应?
10
+ * A: 描画长文字的div的高度不设置即可
11
+ * 并通过element.clientHeight获取渲染后的自动高度,以决定滚动轴的总高度
12
+ *
13
+ * Q: 长段文字如何换行?
14
+ * A: 若文字内容中需要折行,则需要把要显示内容放入字符串中,并加入'\n'来达到换行效果,例如:
15
+ * <div>{"第一行
16
+ * 第二行"}</div>
17
+ * =======需要改成=======
18
+ * <div>{"第一行\n\
19
+ * 第二行"}</div>
20
+ *
21
+ * Q: 文字首行缩进如何做?
22
+ * A: 目前系统只支持通过空格进行首行缩进,行首加入期望的空格数量即可达到缩进,因为盒子字体库和PC不尽相同,
23
+ * 所以务必在盒子上实际测试缩进效果。
24
+ -->
25
+
26
+ <script lang="ts">
27
+ import { Options, Vue } from "vue-class-component";
28
+ import LongTextScroll from "./LongTextScroll.vue";
29
+ import Button from "./Button.vue";
30
+ import { jJsvRuntimeBridge } from "jsview/utils/JsViewVueTools/JsvRuntimeBridge";
31
+
32
+ interface KeyEvent {
33
+ keyCode: Number;
34
+ }
35
+
36
+ @Options({
37
+ components: {
38
+ LongTextScroll,
39
+ Button,
40
+ },
41
+ })
42
+ class App extends Vue {
43
+ constructor(props: any) {
44
+ super(props);
45
+ }
46
+
47
+ onKeyDown(ev: KeyEvent): Boolean {
48
+ if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
49
+ this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
50
+ }
51
+ return true;
52
+ }
53
+
54
+ mounted() {
55
+ // 调试接口,对接JSCenter平台去掉启动图的处理
56
+ jJsvRuntimeBridge.notifyPageLoaded();
57
+ }
58
+ }
59
+ export default App;
60
+ </script>
61
+
62
+ <template>
63
+ <jsv-focus-block
64
+ autoFocus
65
+ :onAction="{
66
+ onKeyDown: onKeyDown,
67
+ }"
68
+ >
69
+ <div>
70
+ <div
71
+ :style="{
72
+ textAlign: 'center',
73
+ fontSize: '30px',
74
+ lineHeight: '50px',
75
+ color: '#ffffff',
76
+ left: 140,
77
+ top: 20,
78
+ width: 1000,
79
+ height: 50,
80
+ backgroundColor: 'rgba(27,38,151,0.8)',
81
+ }"
82
+ >
83
+ 可展示篇幅超过一屏的文字
84
+ </div>
85
+ <div :style="{ left: 140, top: 100 }">
86
+ <LongTextScroll
87
+ :style="{ width: 1000, height: 500, backgroundColor: '#EEEEEE' }"
88
+ :textStyle="{ color: '#000000', fontSize: 20 }"
89
+ :scrollBlockStyle="{
90
+ width: 10,
91
+ height: 30,
92
+ backgroundColor: '#555555',
93
+ }"
94
+ :scrollStyle="{
95
+ left: 1005,
96
+ width: 10,
97
+ height: 500,
98
+ backgroundColor: '#DDDDDD',
99
+ }"
100
+ :step="20"
101
+ >
102
+ </LongTextScroll>
103
+ <div :style="{ left: 400, top: 550 }">
104
+ <Button />
105
+ </div>
106
+ </div>
107
+ </div>
108
+ </jsv-focus-block>
109
+ </template>
110
+
111
+
@@ -1,153 +1,153 @@
1
- <script lang="ts">
2
- import { Vue } from "vue-class-component";
3
- export default class Button extends Vue {
4
- constructor(props: any) {
5
- super(props);
6
- }
7
- private onKeyDown?: Function = undefined;
8
- private leftRef: any = null;
9
- private rightRef: any = null;
10
- private focusId: Number = 0; // 0:button未获得焦点/焦点移出。 1:button获取焦点切焦点在按钮1上。 2:button获取焦点切焦点在按钮2上。
11
- private focusName: String = "";
12
-
13
- onleftRef(ref: any) {
14
- this.leftRef = ref;
15
- }
16
-
17
- onRightRef(ref: any) {
18
- this.rightRef = ref;
19
- }
20
-
21
- private getLeftActionCallback() {
22
- const onAction = {
23
- // onKeyDown: this.onKeyDown,
24
- onKeyDown: (ev: any) => {
25
- let keyUsed = true;
26
- switch (ev.keyCode) {
27
- case 37:
28
- this.focusName = "btn_left";
29
- break;
30
- case 38:
31
- this.focusName = "LongTextScroll";
32
- break;
33
- case 39:
34
- this.focusName = "btn_right";
35
- break;
36
- default:
37
- keyUsed = false;
38
- }
39
- if (keyUsed) {
40
- console.log("Button requestFocusName = ", this.focusName);
41
- this.leftRef.findBlockByName(this.focusName).requestFocus();
42
- }
43
- return keyUsed;
44
- },
45
- onFocus: () => {
46
- console.log("btn_left getFocus");
47
- this.focusId = 1;
48
- },
49
- onBlur: () => {
50
- console.log("btn_left loseFocus");
51
- this.focusId = 0;
52
- },
53
- };
54
- return onAction;
55
- }
56
-
57
- private getRightActionCallback() {
58
- const onAction = {
59
- // onKeyDown: this.onKeyDown,
60
- onKeyDown: (ev: any) => {
61
- let keyUsed = true;
62
- switch (ev.keyCode) {
63
- case 37:
64
- this.focusName = "btn_left";
65
- break;
66
- case 38:
67
- this.focusName = "LongTextScroll";
68
- break;
69
- case 39:
70
- this.focusName = "btn_right";
71
- break;
72
- default:
73
- keyUsed = false;
74
- }
75
- if (keyUsed) {
76
- this.leftRef.findBlockByName(this.focusName).requestFocus();
77
- }
78
- return keyUsed;
79
- },
80
- onFocus: () => {
81
- console.log("btn_left getFocus");
82
- this.focusId = 2;
83
- },
84
- onBlur: () => {
85
- console.log("btn_left loseFocus");
86
- this.focusId = 0;
87
- },
88
- };
89
- return onAction;
90
- }
91
- }
92
- </script>
93
-
94
- <template>
95
- <div>
96
- <jsv-focus-block
97
- :ref="onleftRef"
98
- namespace="btn_left"
99
- :onAction="getLeftActionCallback()"
100
- >
101
- <div
102
- :style="{
103
- width: 100,
104
- height: 60,
105
- left: -10,
106
- top: -5,
107
- backgroundColor: this.focusId === 1 ? '#DD0000' : '#FFFFFF',
108
- }"
109
- ></div>
110
- <div
111
- :style="{
112
- width: 90,
113
- height: 50,
114
- left: -5,
115
- fontSize: '30px',
116
- textAlign: 'center',
117
- lineHeight: '50px',
118
- backgroundColor: '#EEEEEE',
119
- }"
120
- >
121
- 同意
122
- </div>
123
- </jsv-focus-block>
124
- <jsv-focus-block
125
- :ref="onRightRef"
126
- namespace="btn_right"
127
- :onAction="getRightActionCallback()"
128
- >
129
- <div
130
- :style="{
131
- width: 100,
132
- height: 60,
133
- left: 110,
134
- top: -5,
135
- backgroundColor: this.focusId === 2 ? '#DD0000' : '#FFFFFF',
136
- }"
137
- ></div>
138
- <div
139
- :style="{
140
- width: 90,
141
- height: 50,
142
- left: 115,
143
- fontSize: '30px',
144
- textAlign: 'center',
145
- lineHeight: '50px',
146
- backgroundColor: '#EEEEEE',
147
- }"
148
- >
149
- 取消
150
- </div>
151
- </jsv-focus-block>
152
- </div>
153
- </template>
1
+ <script lang="ts">
2
+ import { Vue } from "vue-class-component";
3
+ export default class Button extends Vue {
4
+ constructor(props: any) {
5
+ super(props);
6
+ }
7
+ private onKeyDown?: Function = undefined;
8
+ private leftRef: any = null;
9
+ private rightRef: any = null;
10
+ private focusId: Number = 0; // 0:button未获得焦点/焦点移出。 1:button获取焦点切焦点在按钮1上。 2:button获取焦点切焦点在按钮2上。
11
+ private focusName: String = "";
12
+
13
+ onleftRef(ref: any) {
14
+ this.leftRef = ref;
15
+ }
16
+
17
+ onRightRef(ref: any) {
18
+ this.rightRef = ref;
19
+ }
20
+
21
+ private getLeftActionCallback() {
22
+ const onAction = {
23
+ // onKeyDown: this.onKeyDown,
24
+ onKeyDown: (ev: any) => {
25
+ let keyUsed = true;
26
+ switch (ev.keyCode) {
27
+ case 37:
28
+ this.focusName = "btn_left";
29
+ break;
30
+ case 38:
31
+ this.focusName = "LongTextScroll";
32
+ break;
33
+ case 39:
34
+ this.focusName = "btn_right";
35
+ break;
36
+ default:
37
+ keyUsed = false;
38
+ }
39
+ if (keyUsed) {
40
+ console.log("Button requestFocusName = ", this.focusName);
41
+ this.leftRef.findBlockByName(this.focusName).requestFocus();
42
+ }
43
+ return keyUsed;
44
+ },
45
+ onFocus: () => {
46
+ console.log("btn_left getFocus");
47
+ this.focusId = 1;
48
+ },
49
+ onBlur: () => {
50
+ console.log("btn_left loseFocus");
51
+ this.focusId = 0;
52
+ },
53
+ };
54
+ return onAction;
55
+ }
56
+
57
+ private getRightActionCallback() {
58
+ const onAction = {
59
+ // onKeyDown: this.onKeyDown,
60
+ onKeyDown: (ev: any) => {
61
+ let keyUsed = true;
62
+ switch (ev.keyCode) {
63
+ case 37:
64
+ this.focusName = "btn_left";
65
+ break;
66
+ case 38:
67
+ this.focusName = "LongTextScroll";
68
+ break;
69
+ case 39:
70
+ this.focusName = "btn_right";
71
+ break;
72
+ default:
73
+ keyUsed = false;
74
+ }
75
+ if (keyUsed) {
76
+ this.leftRef.findBlockByName(this.focusName).requestFocus();
77
+ }
78
+ return keyUsed;
79
+ },
80
+ onFocus: () => {
81
+ console.log("btn_left getFocus");
82
+ this.focusId = 2;
83
+ },
84
+ onBlur: () => {
85
+ console.log("btn_left loseFocus");
86
+ this.focusId = 0;
87
+ },
88
+ };
89
+ return onAction;
90
+ }
91
+ }
92
+ </script>
93
+
94
+ <template>
95
+ <div>
96
+ <jsv-focus-block
97
+ :ref="onleftRef"
98
+ namespace="btn_left"
99
+ :onAction="getLeftActionCallback()"
100
+ >
101
+ <div
102
+ :style="{
103
+ width: 100,
104
+ height: 60,
105
+ left: -10,
106
+ top: -5,
107
+ backgroundColor: this.focusId === 1 ? '#DD0000' : '#FFFFFF',
108
+ }"
109
+ ></div>
110
+ <div
111
+ :style="{
112
+ width: 90,
113
+ height: 50,
114
+ left: -5,
115
+ fontSize: '30px',
116
+ textAlign: 'center',
117
+ lineHeight: '50px',
118
+ backgroundColor: '#EEEEEE',
119
+ }"
120
+ >
121
+ 同意
122
+ </div>
123
+ </jsv-focus-block>
124
+ <jsv-focus-block
125
+ :ref="onRightRef"
126
+ namespace="btn_right"
127
+ :onAction="getRightActionCallback()"
128
+ >
129
+ <div
130
+ :style="{
131
+ width: 100,
132
+ height: 60,
133
+ left: 110,
134
+ top: -5,
135
+ backgroundColor: this.focusId === 2 ? '#DD0000' : '#FFFFFF',
136
+ }"
137
+ ></div>
138
+ <div
139
+ :style="{
140
+ width: 90,
141
+ height: 50,
142
+ left: 115,
143
+ fontSize: '30px',
144
+ textAlign: 'center',
145
+ lineHeight: '50px',
146
+ backgroundColor: '#EEEEEE',
147
+ }"
148
+ >
149
+ 取消
150
+ </div>
151
+ </jsv-focus-block>
152
+ </div>
153
+ </template>