@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,204 @@
1
+ <!--
2
+ * 【界面概述】
3
+ * 展示SimpleWidget控件的用法
4
+ *
5
+ * 【控件介绍】
6
+ * SimpleWidget:
7
+ * top {int} 控件的y,默认为0
8
+ * left {int} 控件的x, 默认为0
9
+ * width {int} (必选)控件的宽
10
+ * height {int} (必选)控件的高
11
+ *
12
+ * name {string} (必选)用于设置焦点的名称
13
+ * padding {object} 控件内边距, 默认为{left: 0, right: 0, top: 0, bottom: 0}
14
+ * direction {enum} (必选)控件方向 HROIZONTAL/VERTICAL
15
+ * loopFocus {boolean} 焦点到边界后自动转到下一行,默认false
16
+ * initFocusId {int} 初始焦点,默认为0
17
+ * slideStyle {SlideStyle} 页面滑动类型 seamless/wholepage
18
+ * slideSpeed {float} 页面滑动速度,默认为1.5
19
+ * slideEasing {string} 页面滑动动画easing
20
+
21
+ * data {array} (必选)数据列表
22
+ * dispatcher {SWidgetDispatcher} 用于设置SimpleWidget控件内部的状态,默认为null
23
+ * measures {function} (必选)返回item的模板信息的回调,
24
+ * @params item {object} data中的数据
25
+ * @return 模板信息,
26
+ {
27
+ width: item的宽,
28
+ height: item的高,
29
+ focusable: item是否可以获得焦点,
30
+ }
31
+ *
32
+ * onClick {function} item点击回调
33
+ * @params item data中的数据
34
+ * onFocus {function} 控件获取焦点的回调
35
+ * onBlur {function} 控件失去焦点的回调
36
+ * onEdge {function} 焦点移动到边缘时的回调
37
+ * @params {"direction": {EdgeDirection}边缘方向, "rect": 到达边缘时的区域{x: 0, y: 0, width: 0,height: 0}}
38
+ *
39
+ * enableTouch {boolean} 支持触控
40
+ * loadAll {boolean} 加载不显示的view,触控场景使用
41
+ *
42
+ * 【技巧说明】
43
+ * Q: 插槽props如何使用?
44
+ * A: data: 当前item的数据
45
+ * query: 获取一些额外信息的对象
46
+ {
47
+ id: {int} item的id,
48
+ position: {Function} 获取item坐标的函数
49
+ @params id {int} item的id
50
+ @return {object} item的位置 {xPos, yPos, width, height}
51
+ }
52
+ * onEdge: 若单元格内另有可接管按键的控件(如SimpleWidget),该控件到达边缘需要通知SimpleWidget时的回调
53
+ * onAction: 单元格内控件需要通过onAction.register方法向SimpleWidget注册onFocus, onBlur, onClick
54
+ *
55
+ * Q: 如何进行布局,定制每个格的尺寸?
56
+ * A: 首先选定一个布局的方式,一列列地横向布局(HROIZONTAL)还是一行行地纵向(VERTICAL)布局,设置给属性direction
57
+ * 然后将单元格尺寸反馈器(函数)设置到measures中,进行布局时,组件会回调measures函数获得每个单元格的尺寸,
58
+ * 当一列放满单元格后(如果是纵向布局,则是一行放满后),自动换列去布局下一列。
59
+ *
60
+ * Q: 单元格的普通状态,焦点状态,失焦状态如何渲染?
61
+ * A: 在单元的控件中通过往onAction注册的onFocus,onBlur控制显示
62
+ *
63
+ * Q: 控件中的导航处理(上下左右,OK键)需要什么响应的开发?
64
+ * A: 上下左右键已经由控件接管,不需要开发者额外处理,上下左右键会触发翻页时间,翻页的形式由属性slideStyle来定制。
65
+ * 另外,通过OnClick属性可以注册按键回调函数,来处理用户的OK键动作。
66
+ *
67
+ * Q: 边缘格获取焦点放大后显示不全?
68
+ * A: 设置padding,注意item的排布范围是控件的宽高减去对应的padding
69
+ *
70
+ * Q: 焦点怎么移出控件?
71
+ * A: 当焦点移动到控件边缘时,会调用onEdge回调。在回调中通过参数传递的值来决定焦点转移的行为
72
+ -->
73
+
74
+ <script>
75
+ import { Options, Vue } from "vue-class-component";
76
+ import { data1, data2 } from "./data";
77
+ import {
78
+ VERTICAL,
79
+ SimpleWidget,
80
+ EdgeDirection,
81
+ } from "jsview/utils/JsViewEngineWidget";
82
+ import JsvNinePatch from "jsview/utils/JsViewVueWidget/JsvNinePatch";
83
+ import borderImgPath from "./border.png";
84
+ import Item from "./components/ContentItem.vue";
85
+ import MyTab from "./components/MyTab.vue";
86
+
87
+ @Options({
88
+ components: {
89
+ SimpleWidget,
90
+ Item,
91
+ JsvNinePatch,
92
+ MyTab,
93
+ },
94
+ })
95
+ class App extends Vue {
96
+ constructor(props) {
97
+ super(props);
98
+ this.focusNode = null;
99
+ this.direction = VERTICAL;
100
+ this.contentData = data1;
101
+ this.focusImgPath = borderImgPath;
102
+ this.focusStyle = {};
103
+ console.log("image path " + this.focusImgPath);
104
+ }
105
+
106
+ onKeyDown(ev) {
107
+ // 8:Backspace, 27:Escape, 10000:盒子返回键
108
+ if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
109
+ this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
110
+ return true;
111
+ }
112
+ return false;
113
+ }
114
+
115
+ getMeasures() {
116
+ return {
117
+ width: 227,
118
+ height: 351,
119
+ focusable: true,
120
+ };
121
+ }
122
+ onFocus() {
123
+ console.log("App onFocus", this.$refs.rootNode);
124
+ this.$refs.rootNode.findBlockByName("simpleWidget").requestFocus();
125
+ }
126
+ onWidgetEdge(edge) {
127
+ if (edge.direction === EdgeDirection.top) {
128
+ this.$refs.rootNode.findBlockByName("tab").requestFocus();
129
+ }
130
+ }
131
+ onTabEdge() {
132
+ this.$refs.rootNode.findBlockByName("simpleWidget").requestFocus();
133
+ }
134
+ onItemFocus(id) {
135
+ this.contentData = id == 0 ? data1 : data2;
136
+ }
137
+ mounted() {}
138
+ }
139
+
140
+ export default App;
141
+ </script>
142
+
143
+ <template>
144
+ <jsv-focus-block
145
+ ref="rootNode"
146
+ autoFocus
147
+ :onKeyDown="onKeyDown"
148
+ :onFocus="onFocus"
149
+ >
150
+ <div class="rootSize">
151
+ <div :style="{ left: 50, top: 50 }">
152
+ <my-tab name="tab" :onEdgeDown="onTabEdge" :onItemFocus="onItemFocus" />
153
+ </div>
154
+
155
+ <div class="widgetPos">
156
+ <simple-widget
157
+ name="simpleWidget"
158
+ :data="contentData"
159
+ :width="1253"
160
+ :height="600"
161
+ :padding="{ left: 26, top: 36, right: 26, bottom: 36 }"
162
+ :direction="direction"
163
+ :measures="getMeasures"
164
+ :onEdge="onWidgetEdge"
165
+ >
166
+ <template #renderItem="{ data, query, onEdge, onAction }">
167
+ <Item
168
+ :data="data"
169
+ :query="query"
170
+ :onEdge="onEdge"
171
+ :onAction="onAction"
172
+ />
173
+ </template>
174
+ </simple-widget>
175
+ <div class="focusPos">
176
+ <JsvNinePatch
177
+ :style="focusStyle"
178
+ :imageUrl="focusImgPath"
179
+ :imageWidth="81"
180
+ :contentWidth="25"
181
+ :borderOutset="14"
182
+ :animTime="0.2"
183
+ />
184
+ </div>
185
+ </div>
186
+ </div>
187
+ </jsv-focus-block>
188
+ </template>
189
+
190
+ <style scoped>
191
+ .rootSize {
192
+ top: 0px;
193
+ }
194
+
195
+ .widgetPos {
196
+ top: 120;
197
+ left: 50;
198
+ }
199
+
200
+ .focusPos {
201
+ top: 10;
202
+ left: 10;
203
+ }
204
+ </style>
@@ -0,0 +1,83 @@
1
+ <script>
2
+ export default {
3
+ props: {
4
+ data: Object,
5
+ query: Object,
6
+ onEdge: Function,
7
+ onAction: Object,
8
+ },
9
+ methods: {
10
+ onFocus() {
11
+ this.focus = true;
12
+ this.anim = "focusScale 0.3s";
13
+ },
14
+ onBlur() {
15
+ this.focus = false;
16
+ this.anim = "blurScale 0.3s";
17
+ },
18
+ onClick() {
19
+ console.log("item click");
20
+ },
21
+ getStyle() {
22
+ const width = this.focus
23
+ ? (this.data.blocks.w - 10) * (1 / 0.8)
24
+ : this.data.blocks.w - 10;
25
+ const height = this.focus
26
+ ? (this.data.blocks.h - 10) * (1 / 0.8)
27
+ : this.data.blocks.h - 10;
28
+ const posx = this.focus ? (this.data.blocks.w - 10 - width) / 2 : 0;
29
+ const posy = this.focus ? (this.data.blocks.h - 10 - height) / 2 : 0;
30
+ return {
31
+ left: posx,
32
+ top: posy,
33
+ width: width,
34
+ height: height,
35
+ color: "#FFFFFF",
36
+ backgroundColor: this.focus ? "#FF0000" : this.data.color,
37
+ animation: this.anim,
38
+ };
39
+ },
40
+ },
41
+ data() {
42
+ return {
43
+ focus: false,
44
+ anim: null,
45
+ };
46
+ },
47
+ created() {
48
+ this.onAction.register("onFocus", this.onFocus);
49
+ this.onAction.register("onBlur", this.onBlur);
50
+ this.onAction.register("onClick", this.onClick);
51
+ },
52
+ };
53
+ </script>
54
+
55
+ <template>
56
+ <div :style="{ ...getStyle() }">
57
+ {{ data.content }}
58
+ </div>
59
+ </template>
60
+
61
+ <style scoped>
62
+ @keyframes focusScale {
63
+ from {
64
+ transform: scale3d(0.8, 0.8, 1);
65
+ transform-origin: center center;
66
+ }
67
+ to {
68
+ transform: scale3d(1, 1, 1);
69
+ transform-origin: center center;
70
+ }
71
+ }
72
+
73
+ @keyframes blurScale {
74
+ from {
75
+ transform: scale3d(1.25, 1.25, 1);
76
+ transform-origin: center center;
77
+ }
78
+ to {
79
+ transform: scale3d(1, 1, 1);
80
+ transform-origin: center center;
81
+ }
82
+ }
83
+ </style>