@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,204 +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
- }
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
204
  </style>
@@ -1,83 +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
- }
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
83
  </style>