@shijiu/jsview-vue 0.0.1-beta.0

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 (252) hide show
  1. package/docs/IMPORT_CHANGE_LOG.txt +3 -0
  2. package/docs/git_commit.md +15 -0
  3. package/docs/test_version_up.txt +1 -0
  4. package/dom/bin/jsview-dom-1.0.313.tgz +0 -0
  5. package/dom/browser-root-style.css +21 -0
  6. package/dom/jsv-browser-debug-dom.js +8 -0
  7. package/dom/jsv-dom.js +6 -0
  8. package/dom/jsv-forge-define.js +6 -0
  9. package/dom/target_core_revision.js +14 -0
  10. package/load/header_script_loader.js +134 -0
  11. package/load/jsview-main.js +42 -0
  12. package/load/jsview.config.default.js +37 -0
  13. package/load/jsview.default.config.js +37 -0
  14. package/load/loader.js +172 -0
  15. package/load/loader_webkit.js +40 -0
  16. package/package.json +27 -0
  17. package/patch/node_modules/@babel/preset-env/lib/available-plugins.js +219 -0
  18. package/patch/node_modules/@vue/cli-plugin-typescript/index.js +100 -0
  19. package/patch/node_modules/@vue/cli-service/lib/commands/serve.js +395 -0
  20. package/patch/node_modules/@vue/cli-service/lib/config/app.js +272 -0
  21. package/patch/node_modules/@vue/cli-service/lib/config/assets.js +70 -0
  22. package/patch/node_modules/@vue/cli-service/lib/config/base.js +212 -0
  23. package/patch/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js +2566 -0
  24. package/patch/node_modules/@vue/compiler-sfc/dist/jsview-css-to-js.js +274 -0
  25. package/patch/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js +1596 -0
  26. package/patch/node_modules/postcss-js/objectifier.js +90 -0
  27. package/patch/node_modules/vue-loader/dist/resolveScript.js +70 -0
  28. package/patch/package-lock.json +30051 -0
  29. package/samples/AdvanceMetroWidget/App.vue +123 -0
  30. package/samples/AdvanceMetroWidget/Frame.vue +101 -0
  31. package/samples/AdvanceMetroWidget/Item.vue +58 -0
  32. package/samples/AdvanceMetroWidget/data.js +137 -0
  33. package/samples/AnimPicture/App.vue +224 -0
  34. package/samples/AnimPicture/assets/animated_webp.webp +0 -0
  35. package/samples/AnimPicture/assets/ball_3.webp +0 -0
  36. package/samples/AnimPicture/assets/girl_run.gif +0 -0
  37. package/samples/AnimPicture/assets/quan.webp +0 -0
  38. package/samples/Basic/App.vue +129 -0
  39. package/samples/Basic/assets/border.png +0 -0
  40. package/samples/Basic/assets/border2.png +0 -0
  41. package/samples/Basic/assets/icon.png +0 -0
  42. package/samples/Basic/assets/test.jpg +0 -0
  43. package/samples/Basic/components/ContentBlock.vue +36 -0
  44. package/samples/Basic/components/FontStyle.css +10 -0
  45. package/samples/Basic/components/TitleBar.vue +29 -0
  46. package/samples/Basic/components/anim/AnimGroup.vue +68 -0
  47. package/samples/Basic/components/anim/AnimKeyframeBasic.vue +102 -0
  48. package/samples/Basic/components/anim/AnimKeyframeComposite.vue +53 -0
  49. package/samples/Basic/components/anim/AnimTransition.vue +116 -0
  50. package/samples/Basic/components/div/DivBackground.vue +15 -0
  51. package/samples/Basic/components/div/DivClip.vue +81 -0
  52. package/samples/Basic/components/div/DivCssScoped.vue +27 -0
  53. package/samples/Basic/components/div/DivCssVar.vue +50 -0
  54. package/samples/Basic/components/div/DivGroup1.vue +33 -0
  55. package/samples/Basic/components/div/DivGroup2.vue +41 -0
  56. package/samples/Basic/components/div/DivLayout.vue +12 -0
  57. package/samples/Basic/components/div/DivRadius.vue +47 -0
  58. package/samples/Basic/components/text/TextAlign.vue +48 -0
  59. package/samples/Basic/components/text/TextFontStyle.vue +58 -0
  60. package/samples/Basic/components/text/TextGroup.vue +32 -0
  61. package/samples/Basic/components/text/TextOverflow.vue +78 -0
  62. package/samples/BasicFocusControl/App.vue +125 -0
  63. package/samples/BasicFocusControl/components/BaseBlock.vue +51 -0
  64. package/samples/BasicFocusControl/components/MainArea.vue +98 -0
  65. package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +21 -0
  66. package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +30 -0
  67. package/samples/BasicFocusControl/components/SideBar.vue +73 -0
  68. package/samples/BasicFocusControl/components/SideBarBlock.vue +30 -0
  69. package/samples/ClassNameDemo/App.vue +119 -0
  70. package/samples/ClassNameDemo/assets/bg.jpg +0 -0
  71. package/samples/ClassNameDemo/assets/coupon_content.png +0 -0
  72. package/samples/ClassNameDemo/assets/coupon_left.png +0 -0
  73. package/samples/ClassNameDemo/assets/coupon_mid.png +0 -0
  74. package/samples/ClassNameDemo/assets/coupon_right.png +0 -0
  75. package/samples/ClassNameDemo/assets/focus_border.png +0 -0
  76. package/samples/ClassNameDemo/assets/holder_logo.png +0 -0
  77. package/samples/ClassNameDemo/assets/jrbm.png +0 -0
  78. package/samples/ClassNameDemo/assets/line_left.png +0 -0
  79. package/samples/ClassNameDemo/assets/line_mid.png +0 -0
  80. package/samples/ClassNameDemo/assets/line_right.png +0 -0
  81. package/samples/ClassNameDemo/assets/loading.png +0 -0
  82. package/samples/ClassNameDemo/assets/logo.png +0 -0
  83. package/samples/ClassNameDemo/assets/mcjx.png +0 -0
  84. package/samples/ClassNameDemo/assets/tao.png +0 -0
  85. package/samples/ClassNameDemo/assets/tmall.png +0 -0
  86. package/samples/ClassNameDemo/components/ContentItem.vue +253 -0
  87. package/samples/ClassNameDemo/components/LoadingView.vue +43 -0
  88. package/samples/ClassNameDemo/components/TitleView.vue +24 -0
  89. package/samples/ClassNameDemo/data.js +24 -0
  90. package/samples/ColorSpace/App.vue +135 -0
  91. package/samples/ColorSpace/bmpDemo.bmp +0 -0
  92. package/samples/ColorSpace/jpegDemo.jpeg +0 -0
  93. package/samples/ColorSpace/pngDemo.png +0 -0
  94. package/samples/ColorSpace/pngNoAlphaDemo.png +0 -0
  95. package/samples/DemoHomepage/App.vue +31 -0
  96. package/samples/DemoHomepage/components/BodyFrame.vue +82 -0
  97. package/samples/DemoHomepage/components/Dialog.vue +94 -0
  98. package/samples/DemoHomepage/components/Item.vue +77 -0
  99. package/samples/DemoHomepage/components/TabFrame.vue +86 -0
  100. package/samples/DemoHomepage/router.js +132 -0
  101. package/samples/DemoHomepage/views/Homepage.vue +186 -0
  102. package/samples/FlipCard/App.vue +80 -0
  103. package/samples/FlipCard/FlipCard.vue +124 -0
  104. package/samples/FlipCard/assets/blue_egg.png +0 -0
  105. package/samples/FlipCard/assets/red_egg.png +0 -0
  106. package/samples/FlipCard/data.js +13 -0
  107. package/samples/FlowMultiWidget/App.vue +91 -0
  108. package/samples/FlowMultiWidget/assets/nine_patch_focus.png +0 -0
  109. package/samples/FlowMultiWidget/components/Block.vue +107 -0
  110. package/samples/FlowMultiWidget/components/FlowPage.vue +60 -0
  111. package/samples/FlowMultiWidget/components/Item.vue +103 -0
  112. package/samples/FlowMultiWidget/components/MenuItem.vue +72 -0
  113. package/samples/FlowMultiWidget/components/MyMenu.vue +90 -0
  114. package/samples/FlowMultiWidget/data.js +446 -0
  115. package/samples/HashHistory/App.vue +124 -0
  116. package/samples/HashHistory/components/HorizontalButtonList.vue +114 -0
  117. package/samples/HashHistory/components/Item.vue +74 -0
  118. package/samples/HashHistory/router.js +30 -0
  119. package/samples/HashHistory/views/BasePage.vue +19 -0
  120. package/samples/HashHistory/views/MainPage.vue +68 -0
  121. package/samples/HashHistory/views/SubPage.vue +79 -0
  122. package/samples/HashHistory/views/SubPageFirst.vue +10 -0
  123. package/samples/HashHistory/views/SubPageSecond.vue +10 -0
  124. package/samples/LongImage/App.vue +96 -0
  125. package/samples/LongImage/Button.vue +153 -0
  126. package/samples/LongImage/LongImageScroll.vue +127 -0
  127. package/samples/LongImage/Scroll.vue +16 -0
  128. package/samples/LongImage/assets/1280x7200.jpg +0 -0
  129. package/samples/LongText/App.vue +111 -0
  130. package/samples/LongText/Button.vue +153 -0
  131. package/samples/LongText/LongTextScroll.vue +225 -0
  132. package/samples/LongText/Scroll.vue +16 -0
  133. package/samples/Preload/App.vue +146 -0
  134. package/samples/Preload/data.js +23 -0
  135. package/samples/Preload/images/awesomeface.png +0 -0
  136. package/samples/Preload/images/cat.jpg +0 -0
  137. package/samples/Preload/images/rank.png +0 -0
  138. package/samples/Preload/images/rank_focus.png +0 -0
  139. package/samples/Preload/images/rule.png +0 -0
  140. package/samples/Preload/images/rule_focus.png +0 -0
  141. package/samples/Preload/images/start.png +0 -0
  142. package/samples/Preload/images/start_focus.png +0 -0
  143. package/samples/Preload/preloadItem.vue +22 -0
  144. package/samples/QrcodeDemo/App.vue +73 -0
  145. package/samples/SimpleWidgetDemo/App.vue +204 -0
  146. package/samples/SimpleWidgetDemo/Item.vue +83 -0
  147. package/samples/SimpleWidgetDemo/assets/bg.jpg +0 -0
  148. package/samples/SimpleWidgetDemo/assets/coupon_content.png +0 -0
  149. package/samples/SimpleWidgetDemo/assets/coupon_left.png +0 -0
  150. package/samples/SimpleWidgetDemo/assets/coupon_mid.png +0 -0
  151. package/samples/SimpleWidgetDemo/assets/coupon_right.png +0 -0
  152. package/samples/SimpleWidgetDemo/assets/focus_border.png +0 -0
  153. package/samples/SimpleWidgetDemo/assets/holder_logo.png +0 -0
  154. package/samples/SimpleWidgetDemo/assets/jrbm.png +0 -0
  155. package/samples/SimpleWidgetDemo/assets/line_left.png +0 -0
  156. package/samples/SimpleWidgetDemo/assets/line_mid.png +0 -0
  157. package/samples/SimpleWidgetDemo/assets/line_right.png +0 -0
  158. package/samples/SimpleWidgetDemo/assets/loading.png +0 -0
  159. package/samples/SimpleWidgetDemo/assets/logo.png +0 -0
  160. package/samples/SimpleWidgetDemo/assets/mcjx.png +0 -0
  161. package/samples/SimpleWidgetDemo/assets/tao.png +0 -0
  162. package/samples/SimpleWidgetDemo/assets/tmall.png +0 -0
  163. package/samples/SimpleWidgetDemo/border.png +0 -0
  164. package/samples/SimpleWidgetDemo/components/ContentItem.vue +412 -0
  165. package/samples/SimpleWidgetDemo/components/MyTab.vue +117 -0
  166. package/samples/SimpleWidgetDemo/data.js +110 -0
  167. package/samples/SprayView/App.vue +270 -0
  168. package/samples/SprayView/assets/snow.png +0 -0
  169. package/samples/SpriteImage/App.vue +174 -0
  170. package/samples/SpriteImage/images/cat_run.png +0 -0
  171. package/samples/SpriteImage/images/egg_break.json +116 -0
  172. package/samples/SpriteImage/images/egg_break.png +0 -0
  173. package/samples/SpriteImage/images/sprite.png +0 -0
  174. package/samples/TextBox/App.vue +179 -0
  175. package/samples/TextBox/RenderCenter.vue +109 -0
  176. package/samples/TextBox/RenderLeft.vue +109 -0
  177. package/samples/TextBox/RenderOneLine.vue +120 -0
  178. package/samples/TextBox/RenderRight.vue +107 -0
  179. package/samples/TextShadowDemo/App.vue +98 -0
  180. package/samples/TextureSize/App.vue +142 -0
  181. package/samples/TextureSize/bmpDemo.bmp +0 -0
  182. package/samples/TextureSize/jpegDemo.jpeg +0 -0
  183. package/samples/TextureSize/jpgDemo.jpg +0 -0
  184. package/samples/TextureSize/pngDemo.png +0 -0
  185. package/samples/TextureSize/pngNoAlphaDemo.png +0 -0
  186. package/samples/ThrowMoveDemo/AccelerateDemo.vue +118 -0
  187. package/samples/ThrowMoveDemo/App.vue +114 -0
  188. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +116 -0
  189. package/samples/ThrowMoveDemo/TargetDemo.vue +117 -0
  190. package/samples/ThrowMoveDemo/UDParabolicDemo.vue +122 -0
  191. package/samples/TransitPage/App.vue +41 -0
  192. package/samples/VideoDemo/App.vue +137 -0
  193. package/samples/VideoDemo/components/Button.vue +69 -0
  194. package/samples/VideoDemo/components/Controllor.vue +195 -0
  195. package/samples/VideoDemo/components/VideoFrame.vue +152 -0
  196. package/scripts/git-commit-empty.js +21 -0
  197. package/scripts/install-local-packages.js +121 -0
  198. package/scripts/make-js.sh +181 -0
  199. package/scripts/post-build.js +132 -0
  200. package/scripts/post-install.js +127 -0
  201. package/scripts/pre-pack.js +2 -0
  202. package/scripts/run-android.js +64 -0
  203. package/utils/JsViewEngineWidget/bin/shijiu-jsview-vue-widget-1.0.1.tgz +0 -0
  204. package/utils/JsViewEngineWidget/index.d.ts +32 -0
  205. package/utils/JsViewEngineWidget/index.js +6 -0
  206. package/utils/JsViewVueTools/DebugContentShellJBridge.js +16 -0
  207. package/utils/JsViewVueTools/DebugTool.js +21 -0
  208. package/utils/JsViewVueTools/DefaultKeyMap.js +12 -0
  209. package/utils/JsViewVueTools/JsvDynamicCssStyle.js +73 -0
  210. package/utils/JsViewVueTools/JsvDynamicKeyFrames.js +128 -0
  211. package/utils/JsViewVueTools/JsvHashHistory.js +112 -0
  212. package/utils/JsViewVueTools/JsvRuntimeBridge.js +417 -0
  213. package/utils/JsViewVueTools/JsvStyleClass.js +290 -0
  214. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +80 -0
  215. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +148 -0
  216. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserSpray.vue +55 -0
  217. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/ApicDataBase.js +29 -0
  218. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/BrowserApic.vue +124 -0
  219. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/GifData.js +83 -0
  220. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/LoopToolBase.js +25 -0
  221. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/NormalLoopTool.js +61 -0
  222. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/PartLoopTool.js +119 -0
  223. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/Viewer.js +106 -0
  224. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/WebpData.js +141 -0
  225. package/utils/JsViewVueWidget/BrowserDebugWidget/WidgetLoader.js +20 -0
  226. package/utils/JsViewVueWidget/BrowserDebugWidget/WidgetWrapper.js +11 -0
  227. package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +204 -0
  228. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +64 -0
  229. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +427 -0
  230. package/utils/JsViewVueWidget/JsvActorMove/index.js +12 -0
  231. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +179 -0
  232. package/utils/JsViewVueWidget/JsvApic/index.js +17 -0
  233. package/utils/JsViewVueWidget/JsvMarquee.vue +197 -0
  234. package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +92 -0
  235. package/utils/JsViewVueWidget/JsvNinePatch.vue +76 -0
  236. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +351 -0
  237. package/utils/JsViewVueWidget/JsvPreload/index.js +21 -0
  238. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +140 -0
  239. package/utils/JsViewVueWidget/JsvQrcode/index.js +18 -0
  240. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +140 -0
  241. package/utils/JsViewVueWidget/JsvSpray/index.js +15 -0
  242. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +448 -0
  243. package/utils/JsViewVueWidget/JsvSpriteAnim/SpriteController.js +57 -0
  244. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +6 -0
  245. package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +35 -0
  246. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +495 -0
  247. package/utils/JsViewVueWidget/JsvSwiper/index.js +10 -0
  248. package/utils/JsViewVueWidget/JsvSwiper3D/Indicator.vue +35 -0
  249. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +404 -0
  250. package/utils/JsViewVueWidget/JsvSwiper3D/index.js +10 -0
  251. package/utils/JsViewVueWidget/JsvTextBox.vue +111 -0
  252. package/utils/JsViewVueWidget/JsvVideo.vue +36 -0
@@ -0,0 +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 = "LongImageScroll";
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 = "LongImageScroll";
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: 130,
104
+ height: 60,
105
+ left: -25,
106
+ top: -5,
107
+ backgroundColor: this.focusId === 1 ? '#DD0000' : '#FFFFFF',
108
+ }"
109
+ ></div>
110
+ <div
111
+ :style="{
112
+ width: 120,
113
+ height: 50,
114
+ left: -20,
115
+ fontSize: '30px',
116
+ textAlign: 'center',
117
+ lineHeight: '50px',
118
+ backgroundColor: '#EEEEEE',
119
+ }"
120
+ >
121
+ 按钮1
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: 130,
132
+ height: 60,
133
+ left: 125,
134
+ top: -5,
135
+ backgroundColor: this.focusId === 2 ? '#DD0000' : '#FFFFFF',
136
+ }"
137
+ ></div>
138
+ <div
139
+ :style="{
140
+ width: 120,
141
+ height: 50,
142
+ left: 130,
143
+ fontSize: '30px',
144
+ textAlign: 'center',
145
+ lineHeight: '50px',
146
+ backgroundColor: '#EEEEEE',
147
+ }"
148
+ >
149
+ 按钮2
150
+ </div>
151
+ </jsv-focus-block>
152
+ </div>
153
+ </template>
@@ -0,0 +1,127 @@
1
+ <script lang="ts">
2
+ import Scroll from "./Scroll.vue";
3
+ import { Options, Vue } from "vue-class-component";
4
+
5
+ @Options({
6
+ components: {
7
+ Scroll,
8
+ },
9
+ props: {
10
+ step: Number,
11
+ style: Object,
12
+ scrollStyle: Object,
13
+ scrollBlockStyle: Object,
14
+ imageSrc: String,
15
+ },
16
+ })
17
+ export default class LongImageScroll extends Vue {
18
+ constructor(props: any) {
19
+ super(props);
20
+ }
21
+
22
+ onMainRef(ref: any) {
23
+ this.rootRef = ref;
24
+ }
25
+
26
+ private getActionCallback() {
27
+ const onAction = {
28
+ onKeyDown: (ev: any) => {
29
+ const valid =
30
+ this.element &&
31
+ this.element.clientHeight &&
32
+ this.element.clientHeight > this.style.height;
33
+ // let keyUsed = true;
34
+ if (valid) {
35
+ let text_y;
36
+ switch (ev.keyCode) {
37
+ case 38:
38
+ if (this.textY !== 0) {
39
+ text_y =
40
+ this.textY + this.step >= 0 ? 0 : this.textY + this.step;
41
+ (this.textY = text_y),
42
+ (this.scrollY =
43
+ (-text_y /
44
+ (this.element.clientHeight - this.style.height)) *
45
+ (this.scrollStyle.height - this.scrollBlockStyle.height));
46
+ }
47
+ break;
48
+ case 40:
49
+ if (
50
+ this.textY !==
51
+ this.style.height - this.element.clientHeight
52
+ ) {
53
+ text_y =
54
+ this.textY - this.step <=
55
+ this.style.height - this.element.clientHeight
56
+ ? this.style.height - this.element.clientHeight
57
+ : this.textY - this.step;
58
+ (this.textY = text_y),
59
+ (this.scrollY =
60
+ (-text_y /
61
+ (this.element.clientHeight - this.style.height)) *
62
+ (this.scrollStyle.height - this.scrollBlockStyle.height));
63
+ } else {
64
+ this.rootRef.findBlockByName("btn_left").requestFocus();
65
+ }
66
+ break;
67
+ }
68
+ }
69
+ },
70
+ onFocus: () => {
71
+ console.log("LongImageScroll getFocus");
72
+ },
73
+ onBlur: () => {
74
+ console.log("LongImageScroll loseFocus");
75
+ },
76
+ };
77
+ return onAction;
78
+ }
79
+
80
+ OnLoad = () => {
81
+ // 图片加载完成的回调
82
+ console.log("Image loaded!");
83
+ };
84
+
85
+ private element: any = null;
86
+ private scrollY: Number = 0;
87
+ private textY: any = 0;
88
+ private rootRef: any = null;
89
+ private step: any = 0;
90
+ private style: any = null;
91
+ private scrollStyle: any = null;
92
+ private scrollBlockStyle: any = null;
93
+ private imageSrc: any = null;
94
+
95
+ mounted() {
96
+ this.rootRef.requestFocus();
97
+ }
98
+ }
99
+ </script>
100
+
101
+
102
+ <template>
103
+ <jsv-focus-block
104
+ :ref="onMainRef"
105
+ namespace="LongImageScroll"
106
+ :onAction="getActionCallback()"
107
+ >
108
+ <div :style="{ overflow: 'hidden', ...style }">
109
+ <img
110
+ :alt="{}"
111
+ :ref="
112
+ (ele) => {
113
+ this.element = ele;
114
+ }
115
+ "
116
+ :src="imageSrc"
117
+ :style="{ top: this.textY, width: style.width }"
118
+ :onLoad="OnLoad"
119
+ />
120
+ </div>
121
+ <Scroll
122
+ :top="this.scrollY"
123
+ :scrollStyle="scrollStyle"
124
+ :scrollBlockStyle="scrollBlockStyle"
125
+ />
126
+ </jsv-focus-block>
127
+ </template>
@@ -0,0 +1,16 @@
1
+ <script>
2
+ export default {
3
+ props: {
4
+ scrollStyle: Object,
5
+ top: Number,
6
+ scrollBlockStyle: Object,
7
+ },
8
+ };
9
+ </script>
10
+ <template>
11
+ <div :style="{ ...scrollStyle }">
12
+ <div :style="{ top: top }">
13
+ <div :style="{ ...scrollBlockStyle }" />
14
+ </div>
15
+ </div>
16
+ </template>
@@ -0,0 +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
+
@@ -0,0 +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>