@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,90 +1,90 @@
1
- let camelcase = require('camelcase-css')
2
-
3
- let UNITLESS = {
4
- // QCode Added >>>>>
5
- left: true,
6
- top: true,
7
- width: true,
8
- height: true,
9
- // QCode Added <<<<<
10
-
11
- boxFlex: true,
12
- boxFlexGroup: true,
13
- columnCount: true,
14
- flex: true,
15
- flexGrow: true,
16
- flexPositive: true,
17
- flexShrink: true,
18
- flexNegative: true,
19
- fontWeight: true,
20
- lineClamp: true,
21
- lineHeight: true,
22
- opacity: true,
23
- order: true,
24
- orphans: true,
25
- tabSize: true,
26
- widows: true,
27
- zIndex: true,
28
- zoom: true,
29
- fillOpacity: true,
30
- strokeDashoffset: true,
31
- strokeOpacity: true,
32
- strokeWidth: true
33
- }
34
-
35
- function atRule (node) {
36
- if (typeof node.nodes === 'undefined') {
37
- return true
38
- } else {
39
- return process(node)
40
- }
41
- }
42
-
43
- function process (node) {
44
- let name
45
- let result = {}
46
-
47
- node.each(child => {
48
- if (child.type === 'atrule') {
49
- name = '@' + child.name
50
- if (child.params) name += ' ' + child.params
51
- if (typeof result[name] === 'undefined') {
52
- result[name] = atRule(child)
53
- } else if (Array.isArray(result[name])) {
54
- result[name].push(atRule(child))
55
- } else {
56
- result[name] = [result[name], atRule(child)]
57
- }
58
- } else if (child.type === 'rule') {
59
- let body = process(child)
60
- if (result[child.selector]) {
61
- for (let i in body) {
62
- result[child.selector][i] = body[i]
63
- }
64
- } else {
65
- result[child.selector] = body
66
- }
67
- } else if (child.type === 'decl') {
68
- if (child.prop[0] === '-' && child.prop[1] === '-') {
69
- name = child.prop
70
- } else {
71
- name = camelcase(child.prop)
72
- }
73
- let value = child.value
74
- if (!isNaN(child.value) && UNITLESS[name]) {
75
- value = parseFloat(child.value)
76
- }
77
- if (child.important) value += ' !important'
78
- if (typeof result[name] === 'undefined') {
79
- result[name] = value
80
- } else if (Array.isArray(result[name])) {
81
- result[name].push(value)
82
- } else {
83
- result[name] = [result[name], value]
84
- }
85
- }
86
- })
87
- return result
88
- }
89
-
90
- module.exports = process
1
+ let camelcase = require('camelcase-css')
2
+
3
+ let UNITLESS = {
4
+ // QCode Added >>>>>
5
+ left: true,
6
+ top: true,
7
+ width: true,
8
+ height: true,
9
+ // QCode Added <<<<<
10
+
11
+ boxFlex: true,
12
+ boxFlexGroup: true,
13
+ columnCount: true,
14
+ flex: true,
15
+ flexGrow: true,
16
+ flexPositive: true,
17
+ flexShrink: true,
18
+ flexNegative: true,
19
+ fontWeight: true,
20
+ lineClamp: true,
21
+ lineHeight: true,
22
+ opacity: true,
23
+ order: true,
24
+ orphans: true,
25
+ tabSize: true,
26
+ widows: true,
27
+ zIndex: true,
28
+ zoom: true,
29
+ fillOpacity: true,
30
+ strokeDashoffset: true,
31
+ strokeOpacity: true,
32
+ strokeWidth: true
33
+ }
34
+
35
+ function atRule (node) {
36
+ if (typeof node.nodes === 'undefined') {
37
+ return true
38
+ } else {
39
+ return process(node)
40
+ }
41
+ }
42
+
43
+ function process (node) {
44
+ let name
45
+ let result = {}
46
+
47
+ node.each(child => {
48
+ if (child.type === 'atrule') {
49
+ name = '@' + child.name
50
+ if (child.params) name += ' ' + child.params
51
+ if (typeof result[name] === 'undefined') {
52
+ result[name] = atRule(child)
53
+ } else if (Array.isArray(result[name])) {
54
+ result[name].push(atRule(child))
55
+ } else {
56
+ result[name] = [result[name], atRule(child)]
57
+ }
58
+ } else if (child.type === 'rule') {
59
+ let body = process(child)
60
+ if (result[child.selector]) {
61
+ for (let i in body) {
62
+ result[child.selector][i] = body[i]
63
+ }
64
+ } else {
65
+ result[child.selector] = body
66
+ }
67
+ } else if (child.type === 'decl') {
68
+ if (child.prop[0] === '-' && child.prop[1] === '-') {
69
+ name = child.prop
70
+ } else {
71
+ name = camelcase(child.prop)
72
+ }
73
+ let value = child.value
74
+ if (!isNaN(child.value) && UNITLESS[name]) {
75
+ value = parseFloat(child.value)
76
+ }
77
+ if (child.important) value += ' !important'
78
+ if (typeof result[name] === 'undefined') {
79
+ result[name] = value
80
+ } else if (Array.isArray(result[name])) {
81
+ result[name].push(value)
82
+ } else {
83
+ result[name] = [result[name], value]
84
+ }
85
+ }
86
+ })
87
+ return result
88
+ }
89
+
90
+ module.exports = process
@@ -1,70 +1,70 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveScript = exports.canInlineTemplate = void 0;
4
- const compiler_sfc_1 = require("@vue/compiler-sfc");
5
- const clientCache = new WeakMap();
6
- const serverCache = new WeakMap();
7
- /**
8
- * inline template mode can only be enabled if:
9
- * - is production (separate compilation needed for HMR during dev)
10
- * - template has no pre-processor (separate loader chain required)
11
- * - template is not using src
12
- */
13
- function canInlineTemplate(descriptor, isProd) {
14
- const templateLang = descriptor.template && descriptor.template.lang;
15
- const templateSrc = descriptor.template && descriptor.template.src;
16
- return false; // QCode Modified
17
- }
18
- exports.canInlineTemplate = canInlineTemplate;
19
- function resolveScript(descriptor, scopeId, options, loaderContext) {
20
- var _a;
21
- if (!descriptor.script && !descriptor.scriptSetup) {
22
- return null;
23
- }
24
- const isProd = loaderContext.mode === 'production' || process.env.NODE_ENV === 'production';
25
- const isServer = (_a = options.isServerBuild) !== null && _a !== void 0 ? _a : loaderContext.target === 'node';
26
- const enableInline = canInlineTemplate(descriptor, isProd);
27
- const cacheToUse = isServer ? serverCache : clientCache;
28
- const cached = cacheToUse.get(descriptor);
29
- if (cached) {
30
- return cached;
31
- }
32
- let resolved = null;
33
- let compiler;
34
- if (typeof options.compiler === 'string') {
35
- compiler = require(options.compiler);
36
- }
37
- else {
38
- compiler = options.compiler;
39
- }
40
- if (compiler_sfc_1.compileScript) {
41
- try {
42
- resolved = compiler_sfc_1.compileScript(descriptor, {
43
- id: scopeId,
44
- isProd,
45
- inlineTemplate: enableInline,
46
- refSugar: options.refSugar,
47
- babelParserPlugins: options.babelParserPlugins,
48
- templateOptions: {
49
- ssr: isServer,
50
- compiler,
51
- compilerOptions: options.compilerOptions,
52
- transformAssetUrls: options.transformAssetUrls || true,
53
- },
54
- });
55
- }
56
- catch (e) {
57
- loaderContext.emitError(e);
58
- }
59
- }
60
- else if (descriptor.scriptSetup) {
61
- loaderContext.emitError(`<script setup> is not supported by the installed version of ` +
62
- `@vue/compiler-sfc - please upgrade.`);
63
- }
64
- else {
65
- resolved = descriptor.script;
66
- }
67
- cacheToUse.set(descriptor, resolved);
68
- return resolved;
69
- }
70
- exports.resolveScript = resolveScript;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveScript = exports.canInlineTemplate = void 0;
4
+ const compiler_sfc_1 = require("@vue/compiler-sfc");
5
+ const clientCache = new WeakMap();
6
+ const serverCache = new WeakMap();
7
+ /**
8
+ * inline template mode can only be enabled if:
9
+ * - is production (separate compilation needed for HMR during dev)
10
+ * - template has no pre-processor (separate loader chain required)
11
+ * - template is not using src
12
+ */
13
+ function canInlineTemplate(descriptor, isProd) {
14
+ const templateLang = descriptor.template && descriptor.template.lang;
15
+ const templateSrc = descriptor.template && descriptor.template.src;
16
+ return false; // QCode Modified
17
+ }
18
+ exports.canInlineTemplate = canInlineTemplate;
19
+ function resolveScript(descriptor, scopeId, options, loaderContext) {
20
+ var _a;
21
+ if (!descriptor.script && !descriptor.scriptSetup) {
22
+ return null;
23
+ }
24
+ const isProd = loaderContext.mode === 'production' || process.env.NODE_ENV === 'production';
25
+ const isServer = (_a = options.isServerBuild) !== null && _a !== void 0 ? _a : loaderContext.target === 'node';
26
+ const enableInline = canInlineTemplate(descriptor, isProd);
27
+ const cacheToUse = isServer ? serverCache : clientCache;
28
+ const cached = cacheToUse.get(descriptor);
29
+ if (cached) {
30
+ return cached;
31
+ }
32
+ let resolved = null;
33
+ let compiler;
34
+ if (typeof options.compiler === 'string') {
35
+ compiler = require(options.compiler);
36
+ }
37
+ else {
38
+ compiler = options.compiler;
39
+ }
40
+ if (compiler_sfc_1.compileScript) {
41
+ try {
42
+ resolved = compiler_sfc_1.compileScript(descriptor, {
43
+ id: scopeId,
44
+ isProd,
45
+ inlineTemplate: enableInline,
46
+ refSugar: options.refSugar,
47
+ babelParserPlugins: options.babelParserPlugins,
48
+ templateOptions: {
49
+ ssr: isServer,
50
+ compiler,
51
+ compilerOptions: options.compilerOptions,
52
+ transformAssetUrls: options.transformAssetUrls || true,
53
+ },
54
+ });
55
+ }
56
+ catch (e) {
57
+ loaderContext.emitError(e);
58
+ }
59
+ }
60
+ else if (descriptor.scriptSetup) {
61
+ loaderContext.emitError(`<script setup> is not supported by the installed version of ` +
62
+ `@vue/compiler-sfc - please upgrade.`);
63
+ }
64
+ else {
65
+ resolved = descriptor.script;
66
+ }
67
+ cacheToUse.set(descriptor, resolved);
68
+ return resolved;
69
+ }
70
+ exports.resolveScript = resolveScript;
@@ -1,123 +1,123 @@
1
- <!--
2
- * 【界面概述】
3
- * 展示SimpleWidget控件的嵌套用法
4
- *
5
- * 【控件介绍】
6
- * SimpleWidget:见simpleMetroWidget
7
- * SWidgetDispatcher:向SimpleWidget分发消息的对象,用于设置SimpleWidget内部状态
8
- * 成员函数:
9
- * dispatch
10
- * @params msg {obj} 消息体,{type: SWidgetDispatcher.Type, data: 数据}
11
- * SWidgetDispatcher.Type: 消息的类型
12
- * "setFocusId": Focus时初始的焦点id data为int
13
- * "setFocusRect": Focus时距离某区域最近的item获得焦点 data为{type:EdgeDirection, rect:{x:0, y:0, widht:0, height:0}}
14
- * "updateItem": 重新描画某个item data为int
15
- * "slideToItem": 界面移到某个item处 data为int
16
- *
17
- *
18
- * 【技巧说明】
19
- * Q: 如何实现嵌套?
20
- * A: 当SimpleWidget的measure回调返回值中hasSub为true时,该item的renderItem就可以返回可获得焦点的控件
21
- *
22
- * Q: 如何实现焦点的就近切换?
23
- * A: 通过dispatcher向将要获得焦点的控件发送setFocusRect消息。
24
- -->
25
-
26
- <script>
27
- import { frameData, itemData } from "./data";
28
- import {
29
- HORIZONTAL,
30
- SimpleWidget,
31
- } from "jsview/utils/JsViewEngineWidget";
32
- import Frame from "./Frame.vue";
33
-
34
- const measures = (item) => {
35
- return {
36
- width: item.blocks.w,
37
- height: item.blocks.h,
38
- focusable: item.focusable,
39
- hasSub: item.hasSub,
40
- };
41
- };
42
- export default {
43
- components: { SimpleWidget, Frame },
44
- setup() {
45
- return {
46
- measures,
47
- name: "/advanceMetroWidget",
48
- direction: HORIZONTAL,
49
- frameData,
50
- itemData,
51
- };
52
- },
53
- methods: {
54
- onKeyDown(ev) {
55
- // 8:Backspace, 27:Escape, 10000:盒子返回键
56
- if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
57
- this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
58
- return true;
59
- }
60
- return false;
61
- },
62
- onFocus() {
63
- this.$refs.focusNode.findBlockByName("/advanceMetroWidget").requestFocus();
64
- },
65
- },
66
-
67
- data() {
68
- return {};
69
- },
70
- mounted() {},
71
- };
72
- </script>
73
-
74
- <template>
75
- <div class="rootSize">
76
- <jsv-focus-block
77
- autoFocus
78
- ref="focusNode"
79
- :onAction="{
80
- onKeyDown: onKeyDown,
81
- onFocus: onFocus,
82
- }"
83
- >
84
- <simple-widget
85
- :name="name"
86
- :data="frameData"
87
- :width="680"
88
- :height="680"
89
- :direction="direction"
90
- :measures="measures"
91
- >
92
- <template #renderItem="{ data, query, onEdge, onAction }">
93
- <frame
94
- :name="name + '/frame_' + query.id"
95
- :data="data"
96
- :itemData="itemData"
97
- :query="query"
98
- :onEdge="onEdge"
99
- :onAction="onAction"
100
- />
101
- </template>
102
- </simple-widget>
103
- </jsv-focus-block>
104
- </div>
105
- </template>
106
-
107
- <style scoped>
108
- .rootSize {
109
- width: 1920;
110
- height: 1080;
111
- background-color: #334c4c;
112
- }
113
-
114
- .widgetPos {
115
- top: 120;
116
- left: 50;
117
- }
118
-
119
- .focusPos {
120
- top: 10;
121
- left: 10;
122
- }
1
+ <!--
2
+ * 【界面概述】
3
+ * 展示SimpleWidget控件的嵌套用法
4
+ *
5
+ * 【控件介绍】
6
+ * SimpleWidget:见simpleMetroWidget
7
+ * SWidgetDispatcher:向SimpleWidget分发消息的对象,用于设置SimpleWidget内部状态
8
+ * 成员函数:
9
+ * dispatch
10
+ * @params msg {obj} 消息体,{type: SWidgetDispatcher.Type, data: 数据}
11
+ * SWidgetDispatcher.Type: 消息的类型
12
+ * "setFocusId": Focus时初始的焦点id data为int
13
+ * "setFocusRect": Focus时距离某区域最近的item获得焦点 data为{type:EdgeDirection, rect:{x:0, y:0, widht:0, height:0}}
14
+ * "updateItem": 重新描画某个item data为int
15
+ * "slideToItem": 界面移到某个item处 data为int
16
+ *
17
+ *
18
+ * 【技巧说明】
19
+ * Q: 如何实现嵌套?
20
+ * A: 当SimpleWidget的measure回调返回值中hasSub为true时,该item的renderItem就可以返回可获得焦点的控件
21
+ *
22
+ * Q: 如何实现焦点的就近切换?
23
+ * A: 通过dispatcher向将要获得焦点的控件发送setFocusRect消息。
24
+ -->
25
+
26
+ <script>
27
+ import { frameData, itemData } from "./data";
28
+ import {
29
+ HORIZONTAL,
30
+ SimpleWidget,
31
+ } from "jsview/utils/JsViewEngineWidget";
32
+ import Frame from "./Frame.vue";
33
+
34
+ const measures = (item) => {
35
+ return {
36
+ width: item.blocks.w,
37
+ height: item.blocks.h,
38
+ focusable: item.focusable,
39
+ hasSub: item.hasSub,
40
+ };
41
+ };
42
+ export default {
43
+ components: { SimpleWidget, Frame },
44
+ setup() {
45
+ return {
46
+ measures,
47
+ name: "/advanceMetroWidget",
48
+ direction: HORIZONTAL,
49
+ frameData,
50
+ itemData,
51
+ };
52
+ },
53
+ methods: {
54
+ onKeyDown(ev) {
55
+ // 8:Backspace, 27:Escape, 10000:盒子返回键
56
+ if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
57
+ this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
58
+ return true;
59
+ }
60
+ return false;
61
+ },
62
+ onFocus() {
63
+ this.$refs.focusNode.findBlockByName("/advanceMetroWidget").requestFocus();
64
+ },
65
+ },
66
+
67
+ data() {
68
+ return {};
69
+ },
70
+ mounted() {},
71
+ };
72
+ </script>
73
+
74
+ <template>
75
+ <div class="rootSize">
76
+ <jsv-focus-block
77
+ autoFocus
78
+ ref="focusNode"
79
+ :onAction="{
80
+ onKeyDown: onKeyDown,
81
+ onFocus: onFocus,
82
+ }"
83
+ >
84
+ <simple-widget
85
+ :name="name"
86
+ :data="frameData"
87
+ :width="680"
88
+ :height="680"
89
+ :direction="direction"
90
+ :measures="measures"
91
+ >
92
+ <template #renderItem="{ data, query, onEdge, onAction }">
93
+ <frame
94
+ :name="name + '/frame_' + query.id"
95
+ :data="data"
96
+ :itemData="itemData"
97
+ :query="query"
98
+ :onEdge="onEdge"
99
+ :onAction="onAction"
100
+ />
101
+ </template>
102
+ </simple-widget>
103
+ </jsv-focus-block>
104
+ </div>
105
+ </template>
106
+
107
+ <style scoped>
108
+ .rootSize {
109
+ width: 1920;
110
+ height: 1080;
111
+ background-color: #334c4c;
112
+ }
113
+
114
+ .widgetPos {
115
+ top: 120;
116
+ left: 50;
117
+ }
118
+
119
+ .focusPos {
120
+ top: 10;
121
+ left: 10;
122
+ }
123
123
  </style>