@shijiu/jsview-vue 0.9.502 → 0.9.631

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 (240) hide show
  1. package/dom/bin/jsview-browser-debug-dom.min.js +1 -1
  2. package/dom/bin/jsview-dom.min.js +1 -1
  3. package/dom/target_core_revision.js +4 -3
  4. package/index.js +10 -0
  5. package/package.json +8 -1
  6. package/patches/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +16 -5
  7. package/samples/AnimPicture/App.vue +89 -106
  8. package/samples/Basic/App.vue +65 -68
  9. package/samples/Basic/components/ContentBlock.vue +31 -36
  10. package/samples/Basic/components/anim/AnimGroup.vue +61 -75
  11. package/samples/Basic/components/anim/AnimKeyframeBasic.vue +54 -43
  12. package/samples/Basic/components/anim/AnimKeyframeComposite.vue +25 -31
  13. package/samples/Basic/components/anim/AnimTransition.vue +142 -105
  14. package/samples/Basic/components/div/DivBackground.vue +38 -16
  15. package/samples/Basic/components/div/DivClip.vue +143 -78
  16. package/samples/Basic/components/div/DivCssScoped.vue +10 -10
  17. package/samples/Basic/components/div/DivCssVar.vue +40 -42
  18. package/samples/Basic/components/div/DivGroup1.vue +45 -39
  19. package/samples/Basic/components/div/DivGroup2.vue +56 -45
  20. package/samples/Basic/components/div/DivLayout.vue +63 -5
  21. package/samples/Basic/components/div/DivRadius.vue +51 -42
  22. package/samples/Basic/components/div/DivTransform.vue +21 -16
  23. package/samples/Basic/components/panel/Panel1.vue +46 -44
  24. package/samples/Basic/components/panel/Panel2.vue +22 -26
  25. package/samples/Basic/components/panel/TitleBar.vue +12 -12
  26. package/samples/Basic/components/text/TextAlign.vue +54 -44
  27. package/samples/Basic/components/text/TextEmoji.vue +16 -20
  28. package/samples/Basic/components/text/TextFontStyle.vue +77 -53
  29. package/samples/Basic/components/text/TextGroup1.vue +46 -38
  30. package/samples/Basic/components/text/TextGroup2.vue +25 -28
  31. package/samples/Basic/components/text/TextOverflow.vue +78 -59
  32. package/samples/BasicFocusControl/App.vue +22 -43
  33. package/samples/BasicFocusControl/components/BaseBlock.vue +42 -43
  34. package/samples/BasicFocusControl/components/MainArea.vue +55 -70
  35. package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +11 -15
  36. package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +21 -24
  37. package/samples/BasicFocusControl/components/SideBar.vue +32 -47
  38. package/samples/BasicFocusControl/components/SideBarBlock.vue +20 -23
  39. package/samples/Collision/App.vue +452 -0
  40. package/samples/ColorSpace/App.vue +15 -24
  41. package/samples/DemoHomepage/App.vue +7 -11
  42. package/samples/DemoHomepage/components/BodyFrame.vue +21 -9
  43. package/samples/DemoHomepage/components/TabFrame.vue +7 -8
  44. package/samples/DemoHomepage/router.js +52 -33
  45. package/samples/DemoHomepage/views/Homepage.vue +18 -9
  46. package/samples/FilterDemo/AnimatePic.vue +58 -0
  47. package/samples/FilterDemo/App.vue +99 -61
  48. package/samples/FilterDemo/VideoLayer.vue +62 -0
  49. package/samples/FlipCard/App.vue +32 -41
  50. package/samples/FlipCard/FlipCard.vue +48 -54
  51. package/samples/GridDemo/App.vue +109 -77
  52. package/samples/GridDemo/ButtonBlock.vue +50 -49
  53. package/samples/GridDemo/FocusItem.vue +19 -38
  54. package/samples/GridDemo/Item.vue +46 -54
  55. package/samples/HashHistory/App.vue +63 -79
  56. package/samples/HashHistory/components/HorizontalButtonList.vue +72 -95
  57. package/samples/HashHistory/components/Item.vue +42 -56
  58. package/samples/HashHistory/router.js +23 -12
  59. package/samples/HashHistory/views/MainPage.vue +35 -46
  60. package/samples/HashHistory/views/SubPage.vue +34 -47
  61. package/samples/ImpactStop/App.vue +435 -0
  62. package/samples/Input/App.vue +8 -18
  63. package/samples/Input/FullKeyboard.vue +2 -6
  64. package/samples/Input/InputPanel.vue +18 -12
  65. package/samples/Input/KeyboardItem.vue +1 -1
  66. package/samples/LongImage/App.vue +11 -27
  67. package/samples/LongImage/Button.vue +50 -145
  68. package/samples/LongImage/ButtonItem.vue +44 -0
  69. package/samples/LongImage/LongImageScroll.vue +71 -106
  70. package/samples/LongImage/Scroll.vue +7 -9
  71. package/samples/LongText/App.vue +13 -28
  72. package/samples/LongText/Button.vue +43 -145
  73. package/samples/LongText/ButtonItem.vue +44 -0
  74. package/samples/LongText/LongTextScroll.vue +68 -101
  75. package/samples/LongText/Scroll.vue +7 -9
  76. package/samples/Marquee/App.vue +34 -37
  77. package/samples/MaskClip/App.vue +17 -30
  78. package/samples/MetroWidgetDemos/Advanced/App.vue +47 -0
  79. package/samples/MetroWidgetDemos/Advanced/ButtonItem.vue +90 -0
  80. package/samples/MetroWidgetDemos/Advanced/Buttons.vue +70 -0
  81. package/samples/MetroWidgetDemos/Advanced/Mixed.vue +77 -0
  82. package/samples/MetroWidgetDemos/Advanced/Widgets.vue +71 -0
  83. package/samples/MetroWidgetDemos/Item.vue +67 -0
  84. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/App.vue +80 -104
  85. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/Item.vue +7 -0
  86. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/bg.jpg +0 -0
  87. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_content.png +0 -0
  88. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_left.png +0 -0
  89. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_mid.png +0 -0
  90. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_right.png +0 -0
  91. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/focus_border.png +0 -0
  92. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/holder_logo.png +0 -0
  93. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/jrbm.png +0 -0
  94. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_left.png +0 -0
  95. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_mid.png +0 -0
  96. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_right.png +0 -0
  97. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/loading.png +0 -0
  98. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/logo.png +0 -0
  99. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/mcjx.png +0 -0
  100. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/tao.png +0 -0
  101. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/tmall.png +0 -0
  102. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/border.png +0 -0
  103. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/components/ContentItem.vue +60 -86
  104. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/components/MyTab.vue +0 -0
  105. package/samples/MetroWidgetDemos/PerformanceTest/data.js +45 -0
  106. package/samples/MetroWidgetDemos/PingPong/App.vue +135 -0
  107. package/samples/MetroWidgetDemos/PingPong/AppPage.vue +73 -0
  108. package/samples/MetroWidgetDemos/PingPong/AppTab.vue +62 -0
  109. package/samples/MetroWidgetDemos/PingPong/TabItem.vue +84 -0
  110. package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +214 -0
  111. package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +75 -0
  112. package/samples/MetroWidgetDemos/Simple/App.vue +45 -0
  113. package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +111 -0
  114. package/samples/MetroWidgetDemos/WidgetItem.vue +89 -0
  115. package/samples/MetroWidgetDemos/data.js +204 -0
  116. package/samples/NinePatchDemo/App.vue +114 -115
  117. package/samples/NinePatchDemo/Item.vue +7 -8
  118. package/samples/Preload/App.vue +67 -64
  119. package/samples/Preload/Item.vue +21 -29
  120. package/samples/QrcodeDemo/App.vue +24 -29
  121. package/samples/SoundPool/App.vue +77 -106
  122. package/samples/SprayView/App.vue +10 -8
  123. package/samples/SpriteImage/App.vue +1 -2
  124. package/samples/TextBox/App.vue +86 -101
  125. package/samples/TextBox/RenderCenter.vue +1 -1
  126. package/samples/TextBox/RenderLeft.vue +1 -1
  127. package/samples/TextBox/RenderOneLine.vue +1 -1
  128. package/samples/TextBox/RenderRight.vue +1 -1
  129. package/samples/TextShadowDemo/App.vue +1 -2
  130. package/samples/TextureAnimation/App.vue +16 -13
  131. package/samples/TextureAnimation/App2.vue +111 -0
  132. package/samples/TextureAnimation/assets/blackWhiteGrid.png +0 -0
  133. package/samples/TextureAnimation/assets/light.png +0 -0
  134. package/samples/TextureAnimation/assets/light2.png +0 -0
  135. package/samples/TextureAnimation/assets/mask.png +0 -0
  136. package/samples/TextureSize/App.vue +15 -25
  137. package/samples/ThrowMoveDemo/AccelerateDemo.vue +2 -4
  138. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +2 -3
  139. package/samples/ThrowMoveDemo/TargetDemo.vue +3 -4
  140. package/samples/ThrowMoveDemo/UDParabolicDemo.vue +2 -3
  141. package/samples/TouchSample/App.vue +2 -3
  142. package/samples/TouchSample/Item.vue +15 -13
  143. package/samples/TouchSample/MetroWidgetHorizontal.vue +2 -2
  144. package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
  145. package/samples/TouchSample/TouchContainerHorizontal.vue +4 -3
  146. package/samples/TouchSample/TouchContainerVertical.vue +3 -2
  147. package/samples/TransitPage/App.vue +20 -32
  148. package/samples/VideoDemo/App.vue +65 -81
  149. package/samples/VideoDemo/components/Button.vue +41 -52
  150. package/samples/VideoDemo/components/Controllor.vue +171 -169
  151. package/samples/VideoDemo/components/VideoFrame.vue +87 -99
  152. package/samples/VisibleSensorDemo/App.vue +234 -0
  153. package/scripts/jsview-jsmap-serve.js +42 -0
  154. package/scripts/jsview-post-install.js +1 -1
  155. package/tsconfig.json +3 -0
  156. package/utils/JsViewEngineWidget/JsvFocusBlock.vue +204 -193
  157. package/utils/JsViewEngineWidget/JsvFocusManager.js +30 -17
  158. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +1561 -1656
  159. package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.js +136 -0
  160. package/utils/JsViewEngineWidget/MetroWidget/ToolFunctions.js +18 -0
  161. package/utils/JsViewEngineWidget/TemplateParser.js +111 -1
  162. package/utils/JsViewEngineWidget/WidgetCommon.js +8 -2
  163. package/utils/JsViewEngineWidget/index.js +4 -4
  164. package/utils/JsViewPlugin/JsvPlayer/GetVersion.js +1 -1
  165. package/utils/JsViewPlugin/JsvPlayer/JsvMedia.js +301 -58
  166. package/utils/JsViewPlugin/JsvPlayer/JsvPlayer.vue +22 -3
  167. package/utils/JsViewPlugin/JsvPlayer/index.js +8 -1
  168. package/utils/JsViewPlugin/JsvPlayer/version.js +5 -5
  169. package/utils/JsViewVueTools/JsvImpactTracer.js +113 -0
  170. package/utils/JsViewVueTools/JsvRefTaker.js +35 -0
  171. package/utils/JsViewVueTools/index.js +20 -0
  172. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +11 -1
  173. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +8 -4
  174. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserTextureAnim.vue +203 -14
  175. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +2 -2
  176. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +2 -2
  177. package/utils/JsViewVueWidget/JsvFilterView.vue +59 -51
  178. package/utils/JsViewVueWidget/JsvGrid.vue +139 -41
  179. package/utils/JsViewVueWidget/JsvInput/Cursor.vue +4 -2
  180. package/utils/JsViewVueWidget/JsvInput/JsvInput.vue +13 -12
  181. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +3 -1
  182. package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +8 -17
  183. package/utils/JsViewVueWidget/JsvNinePatch.vue +1 -1
  184. package/utils/JsViewVueWidget/JsvPosterDiv.vue +37 -7
  185. package/utils/JsViewVueWidget/JsvPosterImage.vue +34 -13
  186. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +39 -53
  187. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +1 -1
  188. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +13 -10
  189. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +282 -285
  190. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +2 -3
  191. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +6 -1
  192. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +6 -1
  193. package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +142 -61
  194. package/utils/JsViewVueWidget/JsvTextureAnim/index.js +9 -5
  195. package/utils/JsViewVueWidget/JsvTransparentDiv.vue +7 -8
  196. package/utils/JsViewVueWidget/JsvVideo.vue +9 -12
  197. package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +141 -0
  198. package/utils/JsViewVueWidget/JsvVisibleSensor/index.js +9 -0
  199. package/utils/JsViewVueWidget/index.js +42 -0
  200. package/samples/AdvanceMetroWidget/App.vue +0 -123
  201. package/samples/AdvanceMetroWidget/Frame.vue +0 -102
  202. package/samples/AdvanceMetroWidget/Item.vue +0 -63
  203. package/samples/AdvanceMetroWidget/data.js +0 -137
  204. package/samples/ClassNameDemo/App.vue +0 -119
  205. package/samples/ClassNameDemo/components/ContentItem.vue +0 -253
  206. package/samples/ClassNameDemo/components/LoadingView.vue +0 -43
  207. package/samples/ClassNameDemo/components/TitleView.vue +0 -24
  208. package/samples/ClassNameDemo/data.js +0 -24
  209. package/samples/FlowMultiWidget/App.vue +0 -91
  210. package/samples/FlowMultiWidget/assets/nine_patch_focus.png +0 -0
  211. package/samples/FlowMultiWidget/components/Block.vue +0 -107
  212. package/samples/FlowMultiWidget/components/FlowPage.vue +0 -60
  213. package/samples/FlowMultiWidget/components/Item.vue +0 -103
  214. package/samples/FlowMultiWidget/components/MenuItem.vue +0 -72
  215. package/samples/FlowMultiWidget/components/MyMenu.vue +0 -90
  216. package/samples/FlowMultiWidget/data.js +0 -446
  217. package/samples/HashHistory/views/BasePage.vue +0 -19
  218. package/samples/HashHistory/views/SubPageFirst.vue +0 -10
  219. package/samples/HashHistory/views/SubPageSecond.vue +0 -10
  220. package/samples/SimpleWidgetDemo/assets/bg.jpg +0 -0
  221. package/samples/SimpleWidgetDemo/assets/coupon_content.png +0 -0
  222. package/samples/SimpleWidgetDemo/assets/coupon_left.png +0 -0
  223. package/samples/SimpleWidgetDemo/assets/coupon_mid.png +0 -0
  224. package/samples/SimpleWidgetDemo/assets/coupon_right.png +0 -0
  225. package/samples/SimpleWidgetDemo/assets/focus_border.png +0 -0
  226. package/samples/SimpleWidgetDemo/assets/holder_logo.png +0 -0
  227. package/samples/SimpleWidgetDemo/assets/jrbm.png +0 -0
  228. package/samples/SimpleWidgetDemo/assets/line_left.png +0 -0
  229. package/samples/SimpleWidgetDemo/assets/line_mid.png +0 -0
  230. package/samples/SimpleWidgetDemo/assets/line_right.png +0 -0
  231. package/samples/SimpleWidgetDemo/assets/loading.png +0 -0
  232. package/samples/SimpleWidgetDemo/assets/logo.png +0 -0
  233. package/samples/SimpleWidgetDemo/assets/mcjx.png +0 -0
  234. package/samples/SimpleWidgetDemo/assets/tao.png +0 -0
  235. package/samples/SimpleWidgetDemo/assets/tmall.png +0 -0
  236. package/samples/SimpleWidgetDemo/data.js +0 -124
  237. package/utils/JsViewEngineWidget/MetroWidget/ContentView.vue +0 -63
  238. package/utils/JsViewEngineWidget/MetroWidget/DivWrapper.vue +0 -51
  239. package/utils/JsViewEngineWidget/MetroWidget/ItemView.vue +0 -213
  240. package/utils/JsViewEngineWidget/MetroWidget/RootView.vue +0 -154
@@ -1,41 +1,49 @@
1
+ <script setup>
2
+ import ContentBlock from "../ContentBlock";
3
+ import TextAlign from "./TextAlign";
4
+ import TextFontStyle from "./TextFontStyle";
5
+ import TextOverflow from "./TextOverflow";
6
+
7
+ const props = defineProps({
8
+ contentClass: String,
9
+ itemSides: Object,
10
+ });
11
+
12
+ const contentBlockProps = {
13
+ colIndex: 0,
14
+ itemSides: props.itemSides,
15
+ };
16
+ </script>
17
+
1
18
  <template>
2
- <div id='item-root'>
3
- <ContentBlock :class=contentClass :style="{ top: itemSides.height*0}" :=contentBlockProps :index=0 title="文字对齐">
4
- <TextAlign/>
5
- </ContentBlock>
6
- <ContentBlock :class=contentClass :style="{ top: itemSides.height*1}" :=contentBlockProps :index=1 title="字体和字号">
7
- <TextFontStyle/>
8
- </ContentBlock>
9
- <ContentBlock :class=contentClass :style="{ top: itemSides.height*2}" :="{...contentBlockProps, itemSides: {...itemSides, height:290}}" :index=2 title="文字折行">
10
- <TextOverflow/>
11
- </ContentBlock>
12
- </div>
19
+ <div id="item-root">
20
+ <ContentBlock
21
+ :class="contentClass"
22
+ :style="{ top: itemSides.height * 0 }"
23
+ :="contentBlockProps"
24
+ :index="0"
25
+ title="文字对齐"
26
+ >
27
+ <TextAlign />
28
+ </ContentBlock>
29
+ <ContentBlock
30
+ :class="contentClass"
31
+ :style="{ top: itemSides.height * 1 }"
32
+ :="contentBlockProps"
33
+ :index="1"
34
+ title="字体和字号"
35
+ >
36
+ <TextFontStyle />
37
+ </ContentBlock>
38
+ <ContentBlock
39
+ :class="contentClass"
40
+ :style="{ top: itemSides.height * 2 }"
41
+ :="{ ...contentBlockProps, itemSides: { ...itemSides, height: 290 } }"
42
+ :index="2"
43
+ title="文字折行"
44
+ >
45
+ <TextOverflow />
46
+ </ContentBlock>
47
+ </div>
13
48
  </template>
14
49
 
15
- <script>
16
- import ContentBlock from '../ContentBlock';
17
- import TextAlign from './TextAlign';
18
- import TextFontStyle from './TextFontStyle';
19
- import TextOverflow from './TextOverflow';
20
-
21
- export default {
22
- props: {
23
- contentClass: String,
24
- itemSides: Object
25
- },
26
- components: {
27
- ContentBlock,
28
- TextAlign,
29
- TextFontStyle,
30
- TextOverflow
31
- },
32
- computed: {
33
- contentBlockProps() {
34
- return {
35
- colIndex: 0,
36
- itemSides: this.itemSides
37
- }
38
- }
39
- }
40
- }
41
- </script>
@@ -1,31 +1,28 @@
1
+ <script setup>
2
+ import ContentBlock from "../ContentBlock";
3
+ import TextEmoji from "./TextEmoji";
4
+
5
+ const props = defineProps({
6
+ contentClass: String,
7
+ itemSides: Object,
8
+ });
9
+
10
+ const contentBlockProps = {
11
+ colIndex: 0,
12
+ itemSides: props.itemSides,
13
+ };
14
+ </script>
1
15
  <template>
2
- <div id='item-root'>
3
- <ContentBlock :class=contentClass :style="{ top: itemSides.height*0}" :=contentBlockProps :index=0 title="文字对齐">
4
- <TextEmoji/>
5
- </ContentBlock>
6
- </div>
16
+ <div id="item-root">
17
+ <ContentBlock
18
+ :class="contentClass"
19
+ :style="{ top: itemSides.height * 0 }"
20
+ :="contentBlockProps"
21
+ :index="0"
22
+ title="文字对齐"
23
+ >
24
+ <TextEmoji />
25
+ </ContentBlock>
26
+ </div>
7
27
  </template>
8
28
 
9
- <script>
10
- import ContentBlock from '../ContentBlock';
11
- import TextEmoji from './TextEmoji';
12
-
13
- export default {
14
- props: {
15
- contentClass: String,
16
- itemSides: Object
17
- },
18
- components: {
19
- ContentBlock,
20
- TextEmoji,
21
- },
22
- computed: {
23
- contentBlockProps() {
24
- return {
25
- colIndex: 0,
26
- itemSides: this.itemSides
27
- }
28
- }
29
- }
30
- }
31
- </script>
@@ -1,86 +1,105 @@
1
+ <script setup>
2
+ const gap = 5;
3
+ const blockSize = {
4
+ width: 180,
5
+ height: 35,
6
+ };
7
+ const baseStyle = {
8
+ width: blockSize.width,
9
+ height: blockSize.height,
10
+ backgroundColor: "rgba(255, 255, 0, 0.5)",
11
+ color: "rgba(255, 0, 0, 1)",
12
+ };
13
+ const multiLine =
14
+ "多行文字(末尾省略):" +
15
+ '\n第一行:我末尾有个"\\n"' +
16
+ "\n第二行:一二三四五六七八九十,一二三四五六七八九十,一二三四五六七八九十" +
17
+ "\n第三行:一二三四五六七八九十,一二三四五六七八九十,一二三四五六七八九十";
18
+ </script>
19
+
1
20
  <template>
2
- <div id='layout-root'>
3
- <div class="content-font" :style="{ ...baseStyle,
21
+ <div id="layout-root">
22
+ <div
23
+ class="content-font"
24
+ :style="{
25
+ ...baseStyle,
4
26
  whiteSpace: 'nowrap',
5
27
  textOverflow: 'clip',
6
- overflow: 'hidden'}">
7
- 1.长文字截断,后面的文字你可能看不到
28
+ overflow: 'hidden',
29
+ }"
30
+ >
31
+ 1.长文字截断,后面的文字你可能看不到
8
32
  </div>
9
33
 
10
- <div class="content-font" :style="{ ...baseStyle,
11
- top: blockSize.height+gap,
34
+ <div
35
+ class="content-font"
36
+ :style="{
37
+ ...baseStyle,
38
+ top: blockSize.height + gap,
12
39
  whiteSpace: 'nowrap',
13
40
  textOverflow: 'ellipsis',
14
- overflow: 'hidden'}">
15
- 2.长文字省略,后面的文字你可能看不到
41
+ overflow: 'hidden',
42
+ }"
43
+ >
44
+ 2.长文字省略,后面的文字你可能看不到
16
45
  </div>
17
46
 
18
- <div class="content-font" :style="{ ...baseStyle,
19
- top: (blockSize.height+gap)*2,
47
+ <div
48
+ class="content-font"
49
+ :style="{
50
+ ...baseStyle,
51
+ top: (blockSize.height + gap) * 2,
20
52
  whiteSpace: 'pre-wrap',
21
53
  textOverflow: 'clip',
22
- overflow: 'hidden'}">
23
- 3.长文字折行+截断,后面的文字你可能看不到,与PC效果有区别,一二三四五六七八九十
54
+ overflow: 'hidden',
55
+ }"
56
+ >
57
+ 3.长文字折行+截断,后面的文字你可能看不到,与PC效果有区别,一二三四五六七八九十
24
58
  </div>
25
59
 
26
- <div class="content-font" :style="{ ...baseStyle,
27
- top: (blockSize.height+gap)*3,
60
+ <div
61
+ class="content-font"
62
+ :style="{
63
+ ...baseStyle,
64
+ top: (blockSize.height + gap) * 3,
28
65
  whiteSpace: 'pre-wrap',
29
66
  textOverflow: 'ellipsis',
30
- overflow: 'hidden'}">
31
- 4.长文字折行+省略,后面的文字你可能看不到,与PC效果有区别,一二三四五六七八九十
67
+ overflow: 'hidden',
68
+ }"
69
+ >
70
+ 4.长文字折行+省略,后面的文字你可能看不到,与PC效果有区别,一二三四五六七八九十
32
71
  </div>
33
72
 
34
- <div class="content-font" :style="{ ...baseStyle,
35
- top: (blockSize.height+gap)*4, height: 65,
73
+ <div
74
+ class="content-font"
75
+ :style="{
76
+ ...baseStyle,
77
+ top: (blockSize.height + gap) * 4,
78
+ height: 65,
36
79
  whiteSpace: 'pre-wrap',
37
- textOverflow: 'ellipsis',
38
- overflow: 'hidden'}">
39
- 5.{{multiLine}}
80
+ textOverflow: 'clip',
81
+ overflow: 'hidden',
82
+ }"
83
+ >
84
+ 5.{{ multiLine }}
40
85
  </div>
41
86
 
42
- <div class="content-font" :style="{ ...baseStyle,
43
- top: (blockSize.height+gap)*4+67, height: 65,
87
+ <div
88
+ class="content-font"
89
+ :style="{
90
+ ...baseStyle,
91
+ top: (blockSize.height + gap) * 4 + 67,
92
+ height: 65,
44
93
  whiteSpace: 'pre-wrap',
45
- textOverflow: 'clip',
46
- overflow: 'hidden'}">
47
- 6.{{multiLine}}
94
+ textOverflow: 'ellipsis',
95
+ overflow: 'hidden',
96
+ }"
97
+ >
98
+ 6.{{ multiLine }}
48
99
  </div>
49
-
50
- </div>
100
+ </div>
51
101
  </template>
52
102
 
53
- <script>
54
- export default {
55
- computed: {
56
- gap() {
57
- return 5;
58
- },
59
- blockSize() {
60
- return {
61
- width: 180,
62
- height: 35,
63
- }
64
- },
65
- baseStyle() {
66
- return {
67
- width: this.blockSize.width, height: this.blockSize.height,
68
- backgroundColor: 'rgba(255, 255, 0, 0.5)',
69
- color: 'rgba(255, 0, 0, 1)',
70
- }
71
- },
72
- // 多行的处理,在PC端依靠CSS属性 white-space: pre-line,在JsView平台不需要特别属性
73
- multiLine() {
74
- return "多行文字(末尾省略):"
75
- + "\n第一行:我末尾有个\"\\n\""
76
- + "\n第二行:一二三四五六七八九十,一二三四五六七八九十,一二三四五六七八九十"
77
- + "\n第三行:一二三四五六七八九十,一二三四五六七八九十,一二三四五六七八九十";
78
- }
79
- }
80
- }
81
-
82
- </script>
83
-
84
103
  <style>
85
104
  @import "../FontStyle.css";
86
105
  </style>
@@ -56,53 +56,32 @@
56
56
  *
57
57
  -->
58
58
 
59
- <script lang="ts">
60
- import { Options, Vue } from "vue-class-component";
61
- import MainArea from "./components/MainArea.vue"
62
- import SideBar from "./components/SideBar.vue"
59
+ <script setup>
60
+ import { useRouter } from "vue-router";
61
+ import MainArea from "./components/MainArea.vue";
62
+ import SideBar from "./components/SideBar.vue";
63
63
 
64
- @Options({
65
- components: {
66
- MainArea,
67
- SideBar
64
+ const router = useRouter();
65
+ const onKeyDown = (ev) => {
66
+ // 有router时,是从DemoHomepage进入,回退,和本demo功能无关
67
+ // 8:Backspace, 27:Escape, 10000:盒子返回键
68
+ if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
69
+ router.go(-1);
70
+ return true;
68
71
  }
69
- })
70
- export default
71
- class App extends Vue {
72
- constructor(props: object) {
73
- super(props);
74
- }
75
-
76
- onDidRef(ref: any) {
77
- // 如果使用这种全局切换焦点的方式,请换一个唯一的函数名,防止二次集成时出现函数覆盖。
78
- (this.$root as any).changeFocusInDemoSpace = (relativeName: String) => {
79
- console.log('Change focus to: ' + relativeName)
80
- ref.findBlockByName(relativeName).requestFocus()
81
- }
82
- }
83
-
84
- onKeyDown(ev: any) {
85
- // 有router时,是从DemoHomepage进入,回退,和本demo功能无关
86
- // 8:Backspace, 27:Escape, 10000:盒子返回键
87
- if(ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
88
- console.log("Basic has this.$router: ", !!(this as any).$router);
89
- (this as any).$router?.go(-1);
90
- return true
91
- }
92
- return false;
93
- }
94
- }
72
+ return false;
73
+ };
95
74
  </script>
96
75
 
97
76
  <template>
98
- <!-- 这里的jsv-focus-block只是为了获取到一个base focus节点,并不是必须的 -->
99
- <jsv-focus-block :ref="onDidRef" :onKeyDown="onKeyDown">
100
- <div class="title">可上下左右切换焦点</div>
101
- <div class="body">
102
- <MainArea :style="{left: 0}"/>
103
- <SideBar :style="{left: 300}"/>
104
- </div>
105
- </jsv-focus-block>
77
+ <!-- 这里的jsv-focus-block只是为了获取到一个base focus节点,并不是必须的 -->
78
+ <jsv-focus-block :onKeyDown="onKeyDown">
79
+ <div class="title">可上下左右切换焦点</div>
80
+ <div class="body">
81
+ <MainArea :style="{ left: 0 }" />
82
+ <SideBar :style="{ left: 300 }" />
83
+ </div>
84
+ </jsv-focus-block>
106
85
  </template>
107
86
 
108
87
  <style scoped>
@@ -115,7 +94,7 @@ class App extends Vue {
115
94
  top: 50;
116
95
  width: 400;
117
96
  height: 50;
118
- background-color: rgba(27,38,151,0.8);
97
+ background-color: rgba(27, 38, 151, 0.8);
119
98
  }
120
99
 
121
100
  .body {
@@ -1,51 +1,50 @@
1
- <script lang="ts">
2
- import { Options, Vue } from "vue-class-component";
3
-
4
- @Options({
5
- props: {
6
- name: String,
7
- style: { type:Object, default: {}},
8
- onKeyDown: Function
1
+ <script setup>
2
+ import { ref, onMounted } from "vue";
3
+ const props = defineProps({
4
+ name: String,
5
+ style: {
6
+ type: Object,
7
+ default() {
8
+ return {};
9
+ },
9
10
  },
10
- })
11
- export default
12
- class BaseBlock extends Vue {
13
- constructor(props: object) {
14
- super(props);
15
- }
16
-
17
- mounted() {
18
- this.fullName = this.blockRef.getName();
19
- }
20
-
21
- private getActionCallback() {
22
- const onAction = {
23
- onKeyDown: this.onKeyDown,
24
- onFocus: () => {
25
- this.hasFocused = true;
26
- },
27
- onBlur: () => {
28
- this.hasFocused = false;
29
- }
30
- }
11
+ onKeyDown: Function,
12
+ });
31
13
 
32
- return onAction;
33
- }
14
+ const fullName = ref("");
15
+ const blockRef = ref(null);
16
+ const hasFocused = ref(false);
34
17
 
35
- private onKeyDown?: Function = undefined;
36
- private hasFocused: Boolean = false;
37
- private fullName: String = "";
38
- private readonly blockRef: any = null;
39
- }
18
+ onMounted(() => {
19
+ fullName.value = blockRef.value.getName();
20
+ });
21
+ const onFocus = () => {
22
+ hasFocused.value = true;
23
+ };
24
+ const onBlur = () => {
25
+ hasFocused.value = false;
26
+ };
40
27
  </script>
41
28
 
42
29
  <template>
43
- <jsv-focus-block ref="blockRef" :name="name" :onAction="getActionCallback()">
44
- <div :style="{...$props.style,
45
- width: 100, height: 100,
46
- backgroundColor: (hasFocused ? 'rgba(255,0,0,1)' : 'rgba(0,255,0,1)')}"
30
+ <jsv-focus-block
31
+ ref="blockRef"
32
+ :name="name"
33
+ :onAction="{
34
+ onKeyDown,
35
+ onFocus,
36
+ onBlur,
37
+ }"
47
38
  >
48
- {{ fullName }}
49
- </div>
50
- </jsv-focus-block>
39
+ <div
40
+ :style="{
41
+ ...$props.style,
42
+ width: 100,
43
+ height: 100,
44
+ backgroundColor: hasFocused ? 'rgba(255,0,0,1)' : 'rgba(0,255,0,1)',
45
+ }"
46
+ >
47
+ {{ fullName }}
48
+ </div>
49
+ </jsv-focus-block>
51
50
  </template>
@@ -1,81 +1,66 @@
1
- <script lang="ts">
2
- import { JsvFocusEvent } from "jsview/utils/JsViewEngineWidget";
3
- import { Options, Vue } from "vue-class-component";
4
- import MainAreaLeftBlock from "./MainAreaLeftBlock.vue"
5
- import MainAreaRightBlock from "./MainAreaRightBlock.vue"
1
+ <script setup>
2
+ import MainAreaLeftBlock from "./MainAreaLeftBlock.vue";
3
+ import MainAreaRightBlock from "./MainAreaRightBlock.vue";
4
+ import { useFocusHub } from "jsview";
6
5
 
7
- @Options({
8
- components: {
9
- MainAreaLeftBlock,
10
- MainAreaRightBlock
6
+ const focusHub = useFocusHub();
7
+ window.focusHub = focusHub
8
+ let focusRow = 0;
9
+ let focusColumn = 0;
10
+ const onKeyDown = (ev) => {
11
+ // 子节点未处理的按键事件会流向此节点
12
+ let keyUsed = true;
13
+ switch (ev.keyCode) {
14
+ case 38: // Up
15
+ focusRow = 0;
16
+ break;
17
+ case 40: // Down
18
+ focusRow = 1;
19
+ break;
20
+ case 37: // Left
21
+ focusColumn = 0;
22
+ break;
23
+ case 39: // Right
24
+ focusColumn = 1;
25
+ break;
26
+ default:
27
+ keyUsed = false;
11
28
  }
12
- })
13
- export default
14
- class MainArea extends Vue {
15
- constructor(props: object) {
16
- super(props);
17
- }
18
-
19
- private getActionCallback() {
20
- const onAction = {
21
- onKeyDown: (ev: JsvFocusEvent) => {
22
- // 子节点未处理的按键事件会流向此节点
23
- let keyUsed = true;
24
- switch (ev.keyCode) {
25
- case 38: // Up
26
- this.focusRow = 0;
27
- break;
28
- case 40: // Down
29
- this.focusRow = 1;
30
- break;
31
- case 37: // Left
32
- this.focusColumn= 0;
33
- break;
34
- case 39: // Right
35
- this.focusColumn= 1;
36
- break;
37
- default:
38
- keyUsed = false;
39
- }
40
-
41
- if (keyUsed) {
42
- // 焦点与之前相同时也可以重复调用,焦点管理系统内容有是否变更的判断处理
43
- const name = `main.R${this.focusRow}C${this.focusColumn}`;
44
- (this.$root as any).changeFocusInDemoSpace(name);
45
- }
46
29
 
47
- return keyUsed;
48
- },
49
-
50
- onFocus: () => {
51
- // this.focusRow = 0;
52
- // this.focusColumn = 0;
53
- const name = `main.R${this.focusRow}C${this.focusColumn}`;
54
- (this.$root as any).changeFocusInDemoSpace(name);
55
- }
56
- };
57
- return onAction;
30
+ if (keyUsed) {
31
+ // 焦点与之前相同时也可以重复调用,焦点管理系统内容有是否变更的判断处理
32
+ const name = `main.R${focusRow}C${focusColumn}`;
33
+ focusHub.setFocus(name);
58
34
  }
59
35
 
60
- private focusRow: number = 0;
61
- private focusColumn: number = 0;
62
- }
36
+ return keyUsed;
37
+ };
38
+
39
+ const onFocus = () => {
40
+ const name = `main.R${focusRow}C${focusColumn}`;
41
+ focusHub.setFocus(name);
42
+ };
63
43
  </script>
64
44
 
65
45
  <template>
66
- <!--jsv-focus-block是不可描画节点,所以如果想接收style等属性,不要放在顶级-->
67
- <div>
68
- <!-- 这里的jsv-focus-block只是一个namesapce的样例,并不是必须的,
46
+ <!--jsv-focus-block是不可描画节点,所以如果想接收style等属性,不要放在顶级-->
47
+ <div>
48
+ <!-- 这里的jsv-focus-block只是一个namesapce的样例,并不是必须的,
69
49
  如果你App中的焦点在一个命名空间下,这里可以用name,参考SideBar。 -->
70
- <jsv-focus-block namespace="main"
71
- autoFocus :onAction="getActionCallback()"
72
- >
73
- <MainAreaLeftBlock name="R0C0" :style="{ left: 0, top: 0 }"/>
74
- <MainAreaLeftBlock name="R1C0" :style="{ left: 0, top: 120 }"/>
75
- <MainAreaRightBlock name="R0C1" :style="{ left: 120, top: 0 }"/>
76
- <MainAreaRightBlock name="R1C1" :style="{ left: 120, top: 120 }"/>
77
- </jsv-focus-block>
78
- </div>
50
+ <jsv-focus-block
51
+ namespace="main"
52
+ autoFocus
53
+ :onAction="{
54
+ onKeyDown,
55
+ onFocus,
56
+ }"
57
+ >
58
+ <MainAreaLeftBlock name="R0C0" :style="{ left: 0, top: 0 }" />
59
+ <MainAreaLeftBlock name="R1C0" :style="{ left: 0, top: 120 }" />
60
+ <MainAreaRightBlock name="R0C1" :style="{ left: 120, top: 0 }" />
61
+ <MainAreaRightBlock name="R1C1" :style="{ left: 120, top: 120 }" />
62
+ </jsv-focus-block>
63
+ </div>
79
64
  </template>
80
65
 
81
66
  <style scoped>
@@ -88,7 +73,7 @@ class MainArea extends Vue {
88
73
  top: 50;
89
74
  width: 400;
90
75
  height: 50;
91
- background-color: rgba(27,38,151,0.8);
76
+ background-color: rgba(27, 38, 151, 0.8);
92
77
  }
93
78
 
94
79
  .body {
@@ -1,21 +1,17 @@
1
- <script lang="ts">
2
- import { Options, Vue } from "vue-class-component";
3
- import BaseBlock from "./BaseBlock.vue"
1
+ <script setup>
2
+ import BaseBlock from "./BaseBlock.vue";
4
3
 
5
- @Options({
6
- props: {
7
- name: String,
8
- style: { type:Object, default: {}}
4
+ defineProps({
5
+ name: String,
6
+ style: {
7
+ type: Object,
8
+ default() {
9
+ return {};
10
+ },
9
11
  },
10
- components: {
11
- BaseBlock
12
- }
13
- })
14
- export default
15
- class MainAreaLeftBlock extends Vue {
16
- }
12
+ });
17
13
  </script>
18
14
 
19
15
  <template>
20
- <BaseBlock :name="$props.name" :style="$props.style"/>
16
+ <BaseBlock :name="name" :style="style" />
21
17
  </template>