jsbox-cview 1.6.5 → 1.6.7

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 (164) hide show
  1. package/README.md +4 -0
  2. package/dist/components/alert/input-alert.d.ts +22 -0
  3. package/dist/components/alert/input-alert.js +1 -2
  4. package/dist/components/alert/login-alert.d.ts +21 -0
  5. package/dist/components/alert/login-alert.js +1 -2
  6. package/dist/components/alert/plain-alert.d.ts +15 -0
  7. package/dist/components/alert/plain-alert.js +1 -2
  8. package/dist/components/alert/uialert.d.ts +29 -0
  9. package/{components/base.ts → dist/components/base.d.ts} +9 -28
  10. package/dist/components/custom-navigation-bar.d.ts +117 -0
  11. package/dist/components/custom-navigation-bar.js +7 -1
  12. package/dist/components/dialogs/dialog-sheet.d.ts +46 -0
  13. package/dist/components/dialogs/dialog-sheet.js +3 -1
  14. package/dist/components/dialogs/form-dialog.d.ts +15 -0
  15. package/dist/components/dialogs/form-dialog.js +1 -2
  16. package/dist/components/dialogs/list-dialog.d.ts +23 -0
  17. package/dist/components/dialogs/list-dialog.js +2 -3
  18. package/dist/components/dialogs/text-dialog.d.ts +13 -0
  19. package/dist/components/dialogs/text-dialog.js +1 -2
  20. package/dist/components/dynamic-contextmenu-view.d.ts +40 -0
  21. package/dist/components/dynamic-contextmenu-view.js +5 -1
  22. package/dist/components/dynamic-itemsize-matrix.d.ts +79 -0
  23. package/dist/components/dynamic-itemsize-matrix.js +18 -15
  24. package/dist/components/dynamic-itemsize-section-matrix.d.ts +115 -0
  25. package/dist/components/dynamic-itemsize-section-matrix.js +293 -0
  26. package/dist/components/dynamic-preference-listview.d.ts +63 -0
  27. package/dist/components/dynamic-preference-listview.js +25 -16
  28. package/dist/components/dynamic-rowheight-list.d.ts +38 -0
  29. package/dist/components/dynamic-rowheight-list.js +10 -3
  30. package/dist/components/enhanced-imageview.d.ts +41 -0
  31. package/dist/components/enhanced-imageview.js +1 -1
  32. package/dist/components/flowlayout.d.ts +63 -0
  33. package/dist/components/flowlayout.js +10 -13
  34. package/dist/components/image-pager.d.ts +49 -0
  35. package/dist/components/image-pager.js +6 -1
  36. package/dist/components/oc-webview.d.ts +64 -0
  37. package/dist/components/oc-webview.js +13 -5
  38. package/dist/components/page-control.d.ts +45 -0
  39. package/dist/components/page-control.js +2 -13
  40. package/dist/components/pageviewer-titlebar.d.ts +48 -0
  41. package/dist/components/pageviewer-titlebar.js +7 -13
  42. package/dist/components/pageviewer.d.ts +41 -0
  43. package/dist/components/pageviewer.js +4 -1
  44. package/dist/components/refresh-button.d.ts +25 -0
  45. package/dist/components/refresh-button.js +3 -4
  46. package/dist/components/rotating-view.d.ts +45 -0
  47. package/dist/components/rotating-view.js +10 -2
  48. package/dist/components/searchbar.d.ts +118 -0
  49. package/dist/components/searchbar.js +8 -1
  50. package/dist/components/sheet.d.ts +42 -0
  51. package/dist/components/single-views.d.ts +289 -0
  52. package/dist/components/single-views.js +11 -4
  53. package/dist/components/spinners/loading-dual-ring.d.ts +18 -0
  54. package/dist/components/spinners/loading-wedges.d.ts +15 -0
  55. package/dist/components/spinners/spinner-androidstyle.d.ts +30 -0
  56. package/dist/components/spinners/spinner-androidstyle.js +7 -1
  57. package/dist/components/static-preference-listview.d.ts +389 -0
  58. package/dist/components/static-preference-listview.js +13 -10
  59. package/dist/components/symbol-button.d.ts +39 -0
  60. package/dist/components/symbol-button.js +8 -1
  61. package/dist/components/tabbar.d.ts +140 -0
  62. package/dist/components/tabbar.js +8 -1
  63. package/dist/controller/base-controller.d.ts +125 -0
  64. package/dist/controller/base-controller.js +11 -11
  65. package/dist/controller/controller-router.d.ts +48 -0
  66. package/dist/controller/pageviewer-controller.d.ts +38 -0
  67. package/dist/controller/pageviewer-controller.js +4 -1
  68. package/dist/controller/presented-page-controller.d.ts +41 -0
  69. package/dist/controller/presented-page-controller.js +7 -9
  70. package/dist/controller/splitview-controller.d.ts +90 -0
  71. package/dist/controller/splitview-controller.js +27 -11
  72. package/dist/controller/tabbar-controller.d.ts +49 -0
  73. package/dist/controller/tabbar-controller.js +12 -15
  74. package/{index.ts → dist/index.d.ts} +2 -0
  75. package/dist/index.js +2 -0
  76. package/dist/utils/colors.d.ts +7 -0
  77. package/dist/utils/cvid.d.ts +11 -0
  78. package/dist/utils/l10n.d.ts +1 -0
  79. package/dist/utils/l10n.js +1 -2
  80. package/dist/utils/path.d.ts +8 -0
  81. package/dist/utils/path.js +8 -9
  82. package/dist/utils/rect.d.ts +38 -0
  83. package/dist/utils/rect.js +8 -9
  84. package/dist/utils/uitools.d.ts +75 -0
  85. package/dist/utils/uitools.js +6 -6
  86. package/package.json +20 -5
  87. package/.prettierignore +0 -6
  88. package/.prettierrc +0 -3
  89. package/components/alert/input-alert.ts +0 -64
  90. package/components/alert/login-alert.ts +0 -66
  91. package/components/alert/plain-alert.ts +0 -39
  92. package/components/alert/uialert.ts +0 -107
  93. package/components/custom-navigation-bar.ts +0 -579
  94. package/components/dialogs/dialog-sheet.ts +0 -111
  95. package/components/dialogs/form-dialog.ts +0 -63
  96. package/components/dialogs/list-dialog.ts +0 -119
  97. package/components/dialogs/text-dialog.ts +0 -44
  98. package/components/dynamic-contextmenu-view.ts +0 -115
  99. package/components/dynamic-itemsize-matrix.ts +0 -206
  100. package/components/dynamic-preference-listview.ts +0 -684
  101. package/components/dynamic-rowheight-list.ts +0 -77
  102. package/components/enhanced-imageview.ts +0 -132
  103. package/components/flowlayout.ts +0 -248
  104. package/components/image-pager.ts +0 -180
  105. package/components/oc-webview.ts +0 -177
  106. package/components/page-control.ts +0 -93
  107. package/components/pageviewer-titlebar.ts +0 -166
  108. package/components/pageviewer.ts +0 -125
  109. package/components/refresh-button.ts +0 -83
  110. package/components/rotating-view.ts +0 -133
  111. package/components/searchbar.ts +0 -398
  112. package/components/sheet.ts +0 -104
  113. package/components/single-views.ts +0 -956
  114. package/components/spinners/loading-dual-ring.ts +0 -97
  115. package/components/spinners/loading-wedges.ts +0 -106
  116. package/components/spinners/spinner-androidstyle.ts +0 -269
  117. package/components/static-preference-listview.ts +0 -1282
  118. package/components/symbol-button.ts +0 -108
  119. package/components/tabbar.ts +0 -453
  120. package/controller/base-controller.ts +0 -214
  121. package/controller/controller-router.ts +0 -73
  122. package/controller/pageviewer-controller.ts +0 -93
  123. package/controller/presented-page-controller.ts +0 -76
  124. package/controller/splitview-controller.ts +0 -359
  125. package/controller/tabbar-controller.ts +0 -131
  126. package/dist/test/custom-navigation-bar.js +0 -40
  127. package/dist/test/dialog-sheet.js +0 -40
  128. package/dist/test/dynamic-contextmenu-view.js +0 -66
  129. package/dist/test/dynamic-itemsize-matrix.js +0 -74
  130. package/dist/test/dynamic-preference-listview.js +0 -150
  131. package/dist/test/flowlayout.js +0 -76
  132. package/dist/test/form-dialog.js +0 -51
  133. package/dist/test/oc-webview.js +0 -195
  134. package/dist/test/pageviewer-controller.js +0 -20
  135. package/dist/test/pageviewer-titlebar.js +0 -18
  136. package/dist/test/pageviewer.js +0 -32
  137. package/dist/test/refresh-button.js +0 -26
  138. package/dist/test/searchbar.js +0 -36
  139. package/dist/test/splitview-controller.js +0 -41
  140. package/dist/test/static-preference-listview.js +0 -143
  141. package/dist/test/tabbar-controller.js +0 -48
  142. package/test/custom-navigation-bar.ts +0 -40
  143. package/test/dialog-sheet.ts +0 -40
  144. package/test/dynamic-contextmenu-view.ts +0 -67
  145. package/test/dynamic-itemsize-matrix.ts +0 -74
  146. package/test/dynamic-preference-listview.ts +0 -151
  147. package/test/flowlayout.ts +0 -79
  148. package/test/form-dialog.ts +0 -48
  149. package/test/oc-webview.ts +0 -197
  150. package/test/pageviewer-controller.ts +0 -21
  151. package/test/pageviewer-titlebar.ts +0 -18
  152. package/test/pageviewer.ts +0 -31
  153. package/test/refresh-button.ts +0 -26
  154. package/test/searchbar.ts +0 -38
  155. package/test/splitview-controller.ts +0 -42
  156. package/test/static-preference-listview.ts +0 -142
  157. package/test/tabbar-controller.ts +0 -49
  158. package/tsconfig.json +0 -122
  159. package/utils/colors.ts +0 -17
  160. package/utils/cvid.ts +0 -32
  161. package/utils/l10n.ts +0 -42
  162. package/utils/path.ts +0 -97
  163. package/utils/rect.ts +0 -90
  164. package/utils/uitools.ts +0 -122
@@ -1,197 +0,0 @@
1
- import { OCWebView } from "../components/oc-webview";
2
-
3
- const initialURL = "https://www.example.com";
4
-
5
- const normalizeURL = (value: string) => {
6
- const url = value.trim();
7
- if (!url) return initialURL;
8
- if (/^[a-z][a-z\d+\-.]*:\/\//i.test(url)) return url;
9
- return `https://${url}`;
10
- };
11
-
12
- const currentURL = (sender: any) => {
13
- const nsurl = sender.invoke("URL");
14
- return nsurl ? nsurl.invoke("absoluteString").rawValue() : "";
15
- };
16
-
17
- const currentTitle = (sender: any) => {
18
- const title = sender.invoke("title");
19
- return title ? title.rawValue() : "";
20
- };
21
-
22
- const syncAddress = (sender: any) => {
23
- const input = $("oc-webview-url") as UIInputView | undefined;
24
- if (!input) return;
25
- const url = currentURL(sender);
26
- if (url) input.text = url;
27
- };
28
-
29
- const logState = (event: string, sender: any, error?: NSError | null) => {
30
- const url = currentURL(sender);
31
- const title = currentTitle(sender);
32
- const message = error ? ` error=${error.localizedDescription}` : "";
33
- console.log(`[${event}] url=${url} title=${title}${message}`);
34
- };
35
-
36
- const localStorageScript = `
37
- (() => {
38
- const data = {};
39
- for (let i = 0; i < localStorage.length; i++) {
40
- const key = localStorage.key(i);
41
- if (key !== null) data[key] = localStorage.getItem(key);
42
- }
43
- return JSON.stringify(data);
44
- })()
45
- `;
46
-
47
- const webView = new OCWebView({
48
- props: {
49
- url: initialURL,
50
- },
51
- layout: (make, view) => {
52
- make.top.equalTo($("oc-webview-toolbar").bottom);
53
- make.left.right.bottom.inset(0);
54
- },
55
- events: {
56
- didStart: (sender) => {
57
- syncAddress(sender);
58
- logState("didStart", sender);
59
- },
60
- didFinish: async (sender) => {
61
- syncAddress(sender);
62
- logState("didFinish", sender);
63
- try {
64
- const localStorage = await webView.exec<string>(localStorageScript);
65
- console.log(`[localStorage] ${localStorage || "{}"}`);
66
- } catch (error: any) {
67
- console.log(`[localStorage] error=${error?.localizedDescription || error}`);
68
- }
69
- },
70
- didFail: (sender, error) => {
71
- syncAddress(sender);
72
- logState("didFail", sender, error);
73
- },
74
- },
75
- });
76
-
77
- const loadURL = (value: string) => {
78
- const url = normalizeURL(value);
79
- const input = $("oc-webview-url") as UIInputView | undefined;
80
- if (input) input.text = url;
81
- const nsurl = $objc("NSURL").invoke("URLWithString:", url);
82
- const request = $objc("NSURLRequest").invoke("requestWithURL:", nsurl);
83
- webView.webView.invoke("loadRequest:", request);
84
- };
85
-
86
- $ui.render({
87
- views: [
88
- {
89
- type: "view",
90
- props: {
91
- id: "oc-webview-toolbar",
92
- },
93
- layout: (make, view) => {
94
- make.top.equalTo(view.super.safeAreaTop);
95
- make.left.right.inset(0);
96
- make.height.equalTo(88);
97
- },
98
- views: [
99
- {
100
- type: "input",
101
- props: {
102
- id: "oc-webview-url",
103
- text: initialURL,
104
- type: $kbType.url,
105
- bgcolor: $color("secondarySurface"),
106
- radius: 8,
107
- placeholder: "输入网址后回车",
108
- },
109
- layout: (make, view) => {
110
- make.top.inset(12);
111
- make.left.right.inset(12);
112
- make.height.equalTo(36);
113
- },
114
- events: {
115
- returned: (sender) => {
116
- loadURL(sender.text);
117
- },
118
- },
119
- },
120
- {
121
- type: "view",
122
- props: {},
123
- layout: (make, view) => {
124
- make.top.equalTo(view.prev.bottom).offset(8);
125
- make.left.right.bottom.inset(12);
126
- },
127
- views: [
128
- {
129
- type: "button",
130
- props: {
131
- title: "后退",
132
- },
133
- layout: (make, view) => {
134
- make.left.top.bottom.inset(0);
135
- make.width.equalTo(72);
136
- },
137
- events: {
138
- tapped: () => {
139
- webView.goBack();
140
- },
141
- },
142
- },
143
- {
144
- type: "button",
145
- props: {
146
- title: "前进",
147
- },
148
- layout: (make, view) => {
149
- make.left.equalTo(view.prev.right).offset(8);
150
- make.top.bottom.equalTo(view.prev);
151
- make.width.equalTo(72);
152
- },
153
- events: {
154
- tapped: () => {
155
- webView.goForward();
156
- },
157
- },
158
- },
159
- {
160
- type: "button",
161
- props: {
162
- title: "刷新",
163
- },
164
- layout: (make, view) => {
165
- make.left.equalTo(view.prev.right).offset(8);
166
- make.top.bottom.equalTo(view.prev);
167
- make.width.equalTo(72);
168
- },
169
- events: {
170
- tapped: () => {
171
- webView.reload();
172
- },
173
- },
174
- },
175
- {
176
- type: "button",
177
- props: {
178
- title: "分享",
179
- },
180
- layout: (make, view) => {
181
- make.left.equalTo(view.prev.right).offset(8);
182
- make.top.bottom.equalTo(view.prev);
183
- make.width.equalTo(72);
184
- },
185
- events: {
186
- tapped: () => {
187
- $share.sheet(currentURL(webView.webView) || initialURL);
188
- },
189
- },
190
- },
191
- ],
192
- },
193
- ],
194
- },
195
- webView.definition,
196
- ],
197
- });
@@ -1,21 +0,0 @@
1
- import { PageViewerController } from "../controller/pageviewer-controller";
2
- import { BaseController } from "../controller/base-controller";
3
-
4
- const items = [
5
- {
6
- controller: new BaseController({ props: { bgcolor: $color("red") } }),
7
- title: "Page 1",
8
- },
9
- {
10
- controller: new BaseController({ props: { bgcolor: $color("yellow") } }),
11
- title: "Page 2",
12
- },
13
- ];
14
-
15
- const pageViewerController = new PageViewerController({
16
- props: {
17
- items,
18
- },
19
- });
20
-
21
- pageViewerController.uirender({});
@@ -1,18 +0,0 @@
1
- import { PageViewerTitleBar } from "../components/pageviewer-titlebar";
2
-
3
- const pageViewerTitleBar = new PageViewerTitleBar({
4
- props: {
5
- items: ["Page 1", "Page 2", "Page 3"],
6
- index: 0,
7
- },
8
- layout: (make, view) => {
9
- make.left.right.inset(0);
10
- make.top.equalTo(view.super.safeAreaTop);
11
- make.height.equalTo(44);
12
- },
13
- events: {},
14
- });
15
-
16
- $ui.render({
17
- views: [pageViewerTitleBar.definition],
18
- });
@@ -1,31 +0,0 @@
1
- import { PageViewer } from "../components/pageviewer";
2
- import { ContentView } from "../components/single-views";
3
- const pageViewer = new PageViewer({
4
- props: {
5
- page: 0,
6
- cviews: [
7
- new ContentView({
8
- props: { bgcolor: $color("red") },
9
- layout: $layout.fill,
10
- }),
11
- new ContentView({
12
- props: { bgcolor: $color("green") },
13
- layout: $layout.fill,
14
- }),
15
- new ContentView({
16
- props: { bgcolor: $color("blue") },
17
- layout: $layout.fill,
18
- }),
19
- ],
20
- },
21
- layout: $layout.fill,
22
- events: {
23
- floatPageChanged: (cview, floatPage) => {
24
- console.log(floatPage);
25
- },
26
- },
27
- });
28
-
29
- $ui.render({
30
- views: [pageViewer.definition],
31
- });
@@ -1,26 +0,0 @@
1
- import { RefreshButton } from "../components/refresh-button";
2
-
3
- const refreshButton = new RefreshButton({
4
- props: {
5
- tintColor: $color("primaryText"),
6
- enabled: true,
7
- hidden: false,
8
- },
9
- layout: (make, view) => {
10
- make.width.equalTo(50);
11
- make.height.equalTo(50);
12
- make.top.inset(100);
13
- make.centerX.equalTo(view.super);
14
- },
15
- events: {
16
- tapped: async () => {
17
- refreshButton.loading = true;
18
- await $wait(2);
19
- refreshButton.loading = false;
20
- },
21
- },
22
- });
23
-
24
- $ui.render({
25
- views: [refreshButton.definition],
26
- });
package/test/searchbar.ts DELETED
@@ -1,38 +0,0 @@
1
- import { SearchBar } from "../components/searchbar";
2
-
3
- const s0 = new SearchBar({
4
- props: {
5
- style: 0,
6
- },
7
- layout: (make, view) => {
8
- make.centerX.equalTo(view.super);
9
- make.size.equalTo($size(300, 44));
10
- make.top.equalTo(view.super).inset(50);
11
- },
12
- });
13
-
14
- const s1 = new SearchBar({
15
- props: {
16
- style: 1,
17
- },
18
- layout: (make, view) => {
19
- make.centerX.equalTo(view.super);
20
- make.size.equalTo($size(300, 44));
21
- make.top.equalTo(view.super).inset(125);
22
- },
23
- });
24
-
25
- const s2 = new SearchBar({
26
- props: {
27
- style: 2,
28
- },
29
- layout: (make, view) => {
30
- make.centerX.equalTo(view.super);
31
- make.size.equalTo($size(300, 44));
32
- make.top.equalTo(view.super).inset(200);
33
- },
34
- });
35
-
36
- $ui.render({
37
- views: [s0.definition, s1.definition, s2.definition],
38
- });
@@ -1,42 +0,0 @@
1
- import { SplitViewController } from "../controller/splitview-controller";
2
- import { BaseController } from "../controller/base-controller";
3
-
4
- const items = [
5
- {
6
- controller: new BaseController({
7
- props: { bgcolor: $color("red") },
8
- events: {
9
- didAppear: () => {
10
- console.log("Page 1 did appear");
11
- },
12
- didDisappear: () => {
13
- console.log("Page 1 did disappear");
14
- },
15
- },
16
- }),
17
- bgcolor: $color("red"),
18
- },
19
- {
20
- controller: new BaseController({
21
- props: { bgcolor: $color("yellow") },
22
- events: {
23
- didAppear: () => {
24
- console.log("Page 2 did appear");
25
- },
26
- didDisappear: () => {
27
- console.log("Page 2 did disappear");
28
- },
29
- },
30
- }),
31
- bgcolor: $color("green"),
32
- },
33
- ];
34
-
35
- const pageViewerController = new SplitViewController({
36
- props: {
37
- items,
38
- },
39
- events: {},
40
- });
41
-
42
- pageViewerController.uirender();
@@ -1,142 +0,0 @@
1
- import { PreferenceListView, PreferenceSection } from "../components/static-preference-listview";
2
- const sections: PreferenceSection[] = [
3
- {
4
- title: "Section 1",
5
- rows: [
6
- {
7
- type: "string",
8
- title: "string",
9
- key: "string",
10
- value: "测试一号测试二号测试三号测试四号测试五号测试六号",
11
- },
12
- {
13
- type: "number",
14
- title: "number",
15
- key: "number",
16
- value: 1111.1,
17
- },
18
- {
19
- type: "integer",
20
- title: "integer",
21
- key: "integer",
22
- value: 1111,
23
- },
24
- {
25
- type: "stepper",
26
- title: "stepper",
27
- key: "stepper",
28
- value: 2,
29
- min: 2,
30
- max: 5,
31
- },
32
- ],
33
- },
34
- {
35
- title: "Section 2",
36
- rows: [
37
- {
38
- type: "boolean",
39
- title: "boolean",
40
- key: "boolean",
41
- value: true,
42
- },
43
- {
44
- type: "slider",
45
- title: "slider",
46
- key: "slider",
47
- value: 1,
48
- decimal: 0,
49
- min: 0,
50
- max: 100,
51
- },
52
- {
53
- type: "list",
54
- title: "list",
55
- key: "list",
56
- items: ["测试一号", "测试bbb"],
57
- value: 0,
58
- },
59
- {
60
- type: "tab",
61
- title: "tab",
62
- key: "tab",
63
- items: ["测试aaa", "测试bbb"],
64
- value: 0,
65
- },
66
- {
67
- type: "date",
68
- title: "date",
69
- key: "date",
70
- //value: new Date()
71
- mode: 1,
72
- },
73
- ],
74
- },
75
- {
76
- title: "Section 3",
77
- rows: [
78
- {
79
- type: "info",
80
- title: "info",
81
- value: "this is info",
82
- },
83
- {
84
- type: "link",
85
- title: "link",
86
- value: "https://apple.com",
87
- },
88
- {
89
- type: "symbol-action",
90
- title: "种类1",
91
- symbol: "checkmark",
92
- tintColor: $color("systemLink"),
93
- titleColor: $color("systemLink"),
94
- value: () => console.info(0),
95
- },
96
- {
97
- type: "action",
98
- title: "action",
99
- value: () => console.info(0),
100
- },
101
- ],
102
- },
103
- {
104
- title: "Section 4",
105
- rows: [
106
- {
107
- type: "interactive-info",
108
- title: "interactive-info",
109
- key: "interactive-info",
110
- value: "测试一号测试二号测试三号测试四号测试五号测试六号",
111
- },
112
- {
113
- type: "interactive-info",
114
- title: "interactive-info2",
115
- key: "interactive-info2",
116
- value: "测试一号测试二号测试三号测试四号测试五号测试六号",
117
- copyable: true,
118
- },
119
- ],
120
- },
121
- ];
122
- const v = new PreferenceListView({
123
- props: { data: [] },
124
- sections: sections,
125
- layout: $layout.fill,
126
- events: {
127
- changed: (values: any) => console.info(values),
128
- },
129
- });
130
-
131
- $ui.render({
132
- props: {
133
- title: "",
134
- navButtons: [
135
- {
136
- symbol: "plus",
137
- handler: () => {},
138
- },
139
- ],
140
- },
141
- views: [v.definition],
142
- });
@@ -1,49 +0,0 @@
1
- import { TabBarController } from "../controller/tabbar-controller";
2
- import { BaseController } from "../controller/base-controller";
3
-
4
- const items = [
5
- {
6
- controller: new BaseController({
7
- props: { bgcolor: $color("red") },
8
- events: {
9
- didAppear: () => {
10
- console.log("Page 1 did appear");
11
- },
12
- didDisappear: () => {
13
- console.log("Page 1 did disappear");
14
- },
15
- },
16
- }),
17
- title: "Page 1",
18
- },
19
- {
20
- controller: new BaseController({
21
- props: { bgcolor: $color("yellow") },
22
- events: {
23
- didAppear: () => {
24
- console.log("Page 2 did appear");
25
- },
26
- didDisappear: () => {
27
- console.log("Page 2 did disappear");
28
- },
29
- },
30
- }),
31
- title: "Page 2",
32
- },
33
- ];
34
-
35
- const pageViewerController = new TabBarController({
36
- props: {
37
- items,
38
- },
39
- events: {
40
- changed: (sender, index) => {
41
- console.log(`Index changed to ${index}`);
42
- },
43
- doubleTapped: (sender, index) => {
44
- console.log(`Double tapped on index ${index}`);
45
- },
46
- },
47
- });
48
-
49
- pageViewerController.uirender({});