@shijiu/jsview-vue 0.9.254 → 0.9.267

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 (168) 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 +1 -5
  7. package/samples/AdvanceMetroWidget/App.vue +122 -122
  8. package/samples/AdvanceMetroWidget/Frame.vue +100 -100
  9. package/samples/AdvanceMetroWidget/Item.vue +57 -57
  10. package/samples/AdvanceMetroWidget/data.js +136 -136
  11. package/samples/AnimPicture/App.vue +223 -223
  12. package/samples/Basic/App.vue +128 -128
  13. package/samples/Basic/components/TitleBar.vue +28 -28
  14. package/samples/Basic/components/anim/AnimGroup.vue +67 -67
  15. package/samples/Basic/components/anim/AnimKeyframeBasic.vue +101 -101
  16. package/samples/Basic/components/anim/AnimKeyframeComposite.vue +52 -52
  17. package/samples/Basic/components/anim/AnimTransition.vue +116 -116
  18. package/samples/Basic/components/div/DivBackground.vue +14 -14
  19. package/samples/Basic/components/div/DivClip.vue +80 -80
  20. package/samples/Basic/components/div/DivCssScoped.vue +26 -26
  21. package/samples/Basic/components/div/DivCssVar.vue +49 -49
  22. package/samples/Basic/components/div/DivGroup1.vue +32 -32
  23. package/samples/Basic/components/div/DivGroup2.vue +40 -40
  24. package/samples/Basic/components/div/DivLayout.vue +11 -11
  25. package/samples/Basic/components/div/DivRadius.vue +46 -46
  26. package/samples/Basic/components/text/TextAlign.vue +47 -47
  27. package/samples/Basic/components/text/TextFontStyle.vue +57 -57
  28. package/samples/Basic/components/text/TextGroup.vue +31 -31
  29. package/samples/Basic/components/text/TextOverflow.vue +77 -77
  30. package/samples/BasicFocusControl/App.vue +124 -124
  31. package/samples/BasicFocusControl/components/BaseBlock.vue +50 -50
  32. package/samples/BasicFocusControl/components/MainArea.vue +97 -97
  33. package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +20 -20
  34. package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +29 -29
  35. package/samples/BasicFocusControl/components/SideBar.vue +72 -72
  36. package/samples/BasicFocusControl/components/SideBarBlock.vue +29 -29
  37. package/samples/ClassNameDemo/App.vue +119 -119
  38. package/samples/ClassNameDemo/components/ContentItem.vue +252 -252
  39. package/samples/ClassNameDemo/components/LoadingView.vue +43 -43
  40. package/samples/ClassNameDemo/components/TitleView.vue +24 -24
  41. package/samples/ClassNameDemo/data.js +24 -24
  42. package/samples/ColorSpace/App.vue +134 -134
  43. package/samples/DemoHomepage/App.vue +31 -31
  44. package/samples/DemoHomepage/components/BodyFrame.vue +81 -81
  45. package/samples/DemoHomepage/components/Dialog.vue +93 -93
  46. package/samples/DemoHomepage/components/Item.vue +76 -76
  47. package/samples/DemoHomepage/components/TabFrame.vue +86 -86
  48. package/samples/DemoHomepage/router.js +132 -132
  49. package/samples/DemoHomepage/views/Homepage.vue +186 -186
  50. package/samples/FlipCard/App.vue +80 -80
  51. package/samples/FlipCard/FlipCard.vue +123 -123
  52. package/samples/FlipCard/data.js +12 -12
  53. package/samples/FlowMultiWidget/App.vue +90 -90
  54. package/samples/FlowMultiWidget/components/Block.vue +106 -106
  55. package/samples/FlowMultiWidget/components/FlowPage.vue +59 -59
  56. package/samples/FlowMultiWidget/components/Item.vue +102 -102
  57. package/samples/FlowMultiWidget/components/MenuItem.vue +71 -71
  58. package/samples/FlowMultiWidget/components/MyMenu.vue +89 -89
  59. package/samples/FlowMultiWidget/data.js +446 -446
  60. package/samples/HashHistory/App.vue +124 -124
  61. package/samples/HashHistory/components/HorizontalButtonList.vue +113 -113
  62. package/samples/HashHistory/components/Item.vue +73 -73
  63. package/samples/HashHistory/router.js +29 -29
  64. package/samples/HashHistory/views/BasePage.vue +18 -18
  65. package/samples/HashHistory/views/MainPage.vue +67 -67
  66. package/samples/HashHistory/views/SubPage.vue +78 -78
  67. package/samples/HashHistory/views/SubPageFirst.vue +9 -9
  68. package/samples/HashHistory/views/SubPageSecond.vue +9 -9
  69. package/samples/LongImage/App.vue +96 -96
  70. package/samples/LongImage/Button.vue +153 -153
  71. package/samples/LongImage/LongImageScroll.vue +126 -126
  72. package/samples/LongImage/Scroll.vue +15 -15
  73. package/samples/LongText/App.vue +111 -111
  74. package/samples/LongText/Button.vue +153 -153
  75. package/samples/LongText/LongTextScroll.vue +224 -224
  76. package/samples/LongText/Scroll.vue +15 -15
  77. package/samples/Preload/App.vue +145 -145
  78. package/samples/Preload/data.js +22 -22
  79. package/samples/Preload/preloadItem.vue +21 -21
  80. package/samples/QrcodeDemo/App.vue +72 -72
  81. package/samples/SimpleWidgetDemo/App.vue +203 -203
  82. package/samples/SimpleWidgetDemo/Item.vue +82 -82
  83. package/samples/SimpleWidgetDemo/components/ContentItem.vue +411 -411
  84. package/samples/SimpleWidgetDemo/components/MyTab.vue +116 -116
  85. package/samples/SimpleWidgetDemo/data.js +110 -110
  86. package/samples/SprayView/App.vue +269 -269
  87. package/samples/SpriteImage/App.vue +174 -174
  88. package/samples/SpriteImage/images/egg_break.json +116 -116
  89. package/samples/TextBox/App.vue +178 -178
  90. package/samples/TextBox/RenderCenter.vue +108 -108
  91. package/samples/TextBox/RenderLeft.vue +108 -108
  92. package/samples/TextBox/RenderOneLine.vue +119 -119
  93. package/samples/TextBox/RenderRight.vue +106 -106
  94. package/samples/TextShadowDemo/App.vue +97 -97
  95. package/samples/TextureSize/App.vue +141 -141
  96. package/samples/ThrowMoveDemo/AccelerateDemo.vue +117 -117
  97. package/samples/ThrowMoveDemo/App.vue +113 -113
  98. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +115 -115
  99. package/samples/ThrowMoveDemo/TargetDemo.vue +116 -116
  100. package/samples/ThrowMoveDemo/UDParabolicDemo.vue +121 -121
  101. package/samples/TransitPage/App.vue +40 -40
  102. package/samples/VideoDemo/App.vue +137 -137
  103. package/samples/VideoDemo/components/Button.vue +68 -68
  104. package/samples/VideoDemo/components/Controllor.vue +195 -195
  105. package/samples/VideoDemo/components/VideoFrame.vue +152 -152
  106. package/scripts/common.js +57 -115
  107. package/scripts/jsview-install-local-packages.js +73 -73
  108. package/scripts/jsview-post-build.js +127 -127
  109. package/scripts/jsview-post-install.js +78 -78
  110. package/scripts/jsview-run-android.js +64 -64
  111. package/utils/JsViewEngineWidget/bin/index.js +1 -1
  112. package/utils/JsViewEngineWidget/bin/package.json +11 -11
  113. package/utils/JsViewVueTools/JsvHashHistory.js +111 -111
  114. package/utils/JsViewVueTools/JsvRuntimeBridge.js +417 -417
  115. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +80 -80
  116. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +147 -147
  117. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserSpray.vue +54 -54
  118. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/ApicDataBase.js +28 -28
  119. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/BrowserApic.vue +123 -123
  120. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/GifData.js +83 -83
  121. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/LoopToolBase.js +25 -25
  122. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/NormalLoopTool.js +61 -61
  123. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/PartLoopTool.js +119 -119
  124. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/Viewer.js +106 -106
  125. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/WebpData.js +141 -141
  126. package/utils/JsViewVueWidget/BrowserDebugWidget/WidgetLoader.js +20 -20
  127. package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +204 -204
  128. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +63 -63
  129. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +426 -426
  130. package/utils/JsViewVueWidget/JsvActorMove/index.js +12 -12
  131. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +178 -178
  132. package/utils/JsViewVueWidget/JsvApic/index.js +17 -17
  133. package/utils/JsViewVueWidget/JsvMarquee.vue +196 -196
  134. package/utils/JsViewVueWidget/JsvNinePatch.vue +76 -76
  135. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +350 -350
  136. package/utils/JsViewVueWidget/JsvPreload/index.js +21 -21
  137. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +140 -140
  138. package/utils/JsViewVueWidget/JsvQrcode/index.js +18 -18
  139. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +139 -139
  140. package/utils/JsViewVueWidget/JsvSpray/index.js +14 -14
  141. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +447 -447
  142. package/utils/JsViewVueWidget/JsvSpriteAnim/SpriteController.js +56 -56
  143. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +6 -6
  144. package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +34 -34
  145. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +494 -494
  146. package/utils/JsViewVueWidget/JsvSwiper/index.js +9 -9
  147. package/utils/JsViewVueWidget/JsvSwiper3D/Indicator.vue +34 -34
  148. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +403 -403
  149. package/utils/JsViewVueWidget/JsvSwiper3D/index.js +9 -9
  150. package/utils/JsViewVueWidget/JsvTextBox.vue +110 -110
  151. package/utils/JsViewVueWidget/JsvVideo.vue +35 -35
  152. package/patches/node_modules/@babel/preset-env/lib/available-plugins.js +0 -219
  153. package/patches/node_modules/@vue/cli-plugin-typescript/index.js +0 -100
  154. package/patches/node_modules/@vue/cli-service/lib/commands/serve.js +0 -395
  155. package/patches/node_modules/@vue/cli-service/lib/config/app.js +0 -272
  156. package/patches/node_modules/@vue/cli-service/lib/config/assets.js +0 -70
  157. package/patches/node_modules/@vue/cli-service/lib/config/base.js +0 -212
  158. package/patches/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js +0 -2566
  159. package/patches/node_modules/@vue/compiler-sfc/dist/jsview-css-to-js.js +0 -274
  160. package/patches/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js +0 -1596
  161. package/patches/node_modules/postcss-js/objectifier.js +0 -90
  162. package/patches/node_modules/vue-loader/dist/resolveScript.js +0 -70
  163. package/scripts/deploy-fast-pack.js +0 -17
  164. package/scripts/deploy-fast-publish.js +0 -44
  165. package/scripts/deploy-git-commit-empty.js +0 -21
  166. package/scripts/deploy-prepare.js +0 -56
  167. package/scripts/make-js.sh +0 -181
  168. package/vetur.config.js +0 -5
@@ -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>