jsbox-cview 1.3.4 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/components/alert/input-alert.ts +12 -6
  2. package/components/alert/login-alert.ts +11 -7
  3. package/components/alert/plain-alert.ts +9 -6
  4. package/components/alert/uialert.ts +3 -4
  5. package/components/base.ts +3 -4
  6. package/components/custom-navigation-bar.ts +52 -53
  7. package/components/dialogs/dialog-sheet.ts +10 -15
  8. package/components/dialogs/form-dialog.ts +5 -7
  9. package/components/dialogs/list-dialog.ts +9 -6
  10. package/components/dialogs/text-dialog.ts +7 -6
  11. package/components/dynamic-itemsize-matrix.ts +25 -26
  12. package/components/dynamic-preference-listview.ts +29 -31
  13. package/components/dynamic-rowheight-list.ts +10 -11
  14. package/components/enhanced-imageview.ts +4 -4
  15. package/components/flowlayout.ts +233 -0
  16. package/components/image-pager.ts +16 -10
  17. package/components/page-control.ts +16 -13
  18. package/components/pageviewer-titlebar.ts +15 -16
  19. package/components/pageviewer.ts +16 -15
  20. package/components/rotating-view.ts +27 -22
  21. package/components/searchbar.ts +30 -25
  22. package/components/sheet.ts +16 -17
  23. package/components/single-views.ts +107 -105
  24. package/components/spinners/loading-dual-ring.ts +15 -8
  25. package/components/spinners/loading-wedges.ts +8 -4
  26. package/components/spinners/spinner-androidstyle.ts +15 -16
  27. package/components/static-preference-listview.ts +94 -95
  28. package/components/symbol-button.ts +15 -23
  29. package/components/tabbar.ts +24 -25
  30. package/controller/base-controller.ts +57 -58
  31. package/controller/controller-router.ts +2 -3
  32. package/controller/pageviewer-controller.ts +16 -15
  33. package/controller/presented-page-controller.ts +14 -13
  34. package/controller/splitview-controller.ts +22 -13
  35. package/controller/tabbar-controller.ts +15 -15
  36. package/dist/components/alert/input-alert.js +12 -5
  37. package/dist/components/alert/login-alert.js +10 -5
  38. package/dist/components/alert/plain-alert.js +9 -5
  39. package/dist/components/alert/uialert.js +3 -3
  40. package/dist/components/base.js +4 -4
  41. package/dist/components/custom-navigation-bar.js +30 -30
  42. package/dist/components/dialogs/dialog-sheet.js +9 -12
  43. package/dist/components/dialogs/form-dialog.js +5 -5
  44. package/dist/components/dialogs/list-dialog.js +9 -5
  45. package/dist/components/dialogs/text-dialog.js +7 -5
  46. package/dist/components/dynamic-itemsize-matrix.js +15 -15
  47. package/dist/components/dynamic-preference-listview.js +4 -4
  48. package/dist/components/dynamic-rowheight-list.js +3 -3
  49. package/dist/components/enhanced-imageview.js +3 -3
  50. package/dist/components/flowlayout.js +184 -0
  51. package/dist/components/image-pager.js +14 -9
  52. package/dist/components/page-control.js +21 -18
  53. package/dist/components/pageviewer-titlebar.js +15 -15
  54. package/dist/components/pageviewer.js +16 -14
  55. package/dist/components/rotating-view.js +24 -19
  56. package/dist/components/searchbar.js +29 -24
  57. package/dist/components/sheet.js +13 -14
  58. package/dist/components/single-views.js +5 -5
  59. package/dist/components/spinners/loading-dual-ring.js +12 -5
  60. package/dist/components/spinners/loading-wedges.js +7 -3
  61. package/dist/components/spinners/spinner-androidstyle.js +13 -15
  62. package/dist/components/static-preference-listview.js +94 -94
  63. package/dist/components/symbol-button.js +10 -18
  64. package/dist/components/tabbar.js +24 -24
  65. package/dist/controller/base-controller.js +36 -36
  66. package/dist/controller/controller-router.js +2 -2
  67. package/dist/controller/pageviewer-controller.js +10 -8
  68. package/dist/controller/presented-page-controller.js +8 -6
  69. package/dist/controller/splitview-controller.js +19 -12
  70. package/dist/controller/tabbar-controller.js +3 -3
  71. package/dist/index.js +1 -2
  72. package/dist/test/flowlayout.js +74 -0
  73. package/index.ts +1 -2
  74. package/package.json +1 -1
  75. package/test/flowlayout.ts +77 -0
  76. package/components/artificial-flowlayout.ts +0 -321
  77. package/components/spinners/loading-double-rings.ts +0 -121
  78. package/dist/components/artificial-flowlayout.js +0 -258
  79. package/dist/components/spinners/loading-double-rings.js +0 -104
@@ -1,4 +1,40 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseController = exports.ControllerRootView = void 0;
4
+ const base_1 = require("../components/base");
5
+ const single_views_1 = require("../components/single-views");
6
+ const cvid_1 = require("../utils/cvid");
7
+ const controller_router_1 = require("./controller-router");
8
+ /**
9
+ * status
10
+ * - created = 0 被创建,未被加载
11
+ * - loaded = 1 被加载,显示状态未知
12
+ * - appeared= 2 处于可显示状态
13
+ * - disappeared = 3 处于不显示状态
14
+ * - removed = 4 根视图被移除
15
+ * 其中只有 2 和 3 可以相互转化,其他不可以
16
+ */
17
+ const controllerStatus = {
18
+ created: 0,
19
+ loaded: 1,
20
+ appeared: 2,
21
+ disappeared: 3,
22
+ removed: 4
23
+ };
24
+ class ControllerRootView extends single_views_1.ContentView {
25
+ constructor({ props, layout, events }) {
26
+ super({ props, layout, events });
27
+ }
28
+ set views(views) {
29
+ const _views = views.map(v => {
30
+ if (v instanceof base_1.Base)
31
+ return v.definition;
32
+ return v;
33
+ });
34
+ this._views = _views;
35
+ }
36
+ }
37
+ exports.ControllerRootView = ControllerRootView;
2
38
  /**
3
39
  * # CView Base Controller
4
40
  *
@@ -58,42 +94,6 @@
58
94
  *
59
95
  * - rootView 可以直接通过 rootView.views 设置其_views 属性,其中元素可以为 view 定义也可以为 cview
60
96
  */
61
- Object.defineProperty(exports, "__esModule", { value: true });
62
- exports.BaseController = exports.ControllerRootView = void 0;
63
- const base_1 = require("../components/base");
64
- const single_views_1 = require("../components/single-views");
65
- const cvid_1 = require("../utils/cvid");
66
- const controller_router_1 = require("./controller-router");
67
- /**
68
- * status
69
- * - created = 0 被创建,未被加载
70
- * - loaded = 1 被加载,显示状态未知
71
- * - appeared= 2 处于可显示状态
72
- * - disappeared = 3 处于不显示状态
73
- * - removed = 4 根视图被移除
74
- * 其中只有 2 和 3 可以相互转化,其他不可以
75
- */
76
- const controllerStatus = {
77
- created: 0,
78
- loaded: 1,
79
- appeared: 2,
80
- disappeared: 3,
81
- removed: 4
82
- };
83
- class ControllerRootView extends single_views_1.ContentView {
84
- constructor({ props, layout, events }) {
85
- super({ props, layout, events });
86
- }
87
- set views(views) {
88
- const _views = views.map(v => {
89
- if (v instanceof base_1.Base)
90
- return v.definition;
91
- return v;
92
- });
93
- this._views = _views;
94
- }
95
- }
96
- exports.ControllerRootView = ControllerRootView;
97
97
  class BaseController {
98
98
  constructor({ props, layout = $layout.fill, events = {} } = {}) {
99
99
  this._props = props || {};
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.router = void 0;
2
4
  /**
3
5
  * 控制器的路由器,用于管理控制器的集合和操作。
4
6
  *
@@ -13,8 +15,6 @@
13
15
  * - `get(id: string)`:根据控制器的ID获取控制器。
14
16
  *
15
17
  */
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.router = void 0;
18
18
  class Router {
19
19
  constructor() {
20
20
  this._set = new Set();
@@ -1,4 +1,10 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PageViewerController = void 0;
4
+ const base_controller_1 = require("./base-controller");
5
+ const pageviewer_1 = require("../components/pageviewer");
6
+ const pageviewer_titlebar_1 = require("../components/pageviewer-titlebar");
7
+ const custom_navigation_bar_1 = require("../components/custom-navigation-bar");
2
8
  /**
3
9
  * # CView PageViewer Controller
4
10
  *
@@ -9,18 +15,14 @@
9
15
  * - items: { controller: Controller, title: string }[]
10
16
  * - navBarProps: {} 可用于 navBar 的其他属性,不包括 title 和 titleView
11
17
  */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.PageViewerController = void 0;
14
- const base_controller_1 = require("./base-controller");
15
- const pageviewer_1 = require("../components/pageviewer");
16
- const pageviewer_titlebar_1 = require("../components/pageviewer-titlebar");
17
- const custom_navigation_bar_1 = require("../components/custom-navigation-bar");
18
18
  class PageViewerController extends base_controller_1.BaseController {
19
19
  constructor({ props, layout, events = {} }) {
20
- super({ props: {
20
+ super({
21
+ props: {
21
22
  id: props.id,
22
23
  bgcolor: props.bgcolor
23
- }, layout, events });
24
+ }, layout, events
25
+ });
24
26
  this._props = props;
25
27
  this.cviews = {};
26
28
  this.cviews.pageviewer = new pageviewer_1.PageViewer({
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PresentedPageController = void 0;
4
+ const base_controller_1 = require("./base-controller");
5
+ const sheet_1 = require("../components/sheet");
2
6
  /** # CView PresentedPageController
3
7
  *
4
8
  * ## Props
@@ -16,15 +20,13 @@
16
20
  * ## 布局
17
21
  * 此控制器的 layout 必定为 `$layout.fill`,无需自行设定
18
22
  */
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.PresentedPageController = void 0;
21
- const base_controller_1 = require("./base-controller");
22
- const sheet_1 = require("../components/sheet");
23
23
  class PresentedPageController extends base_controller_1.BaseController {
24
24
  constructor({ props, layout, events } = {}) {
25
- super({ props: {
25
+ super({
26
+ props: {
26
27
  id: props === null || props === void 0 ? void 0 : props.id
27
- }, layout, events });
28
+ }, layout, events
29
+ });
28
30
  this._sheet = new sheet_1.Sheet({
29
31
  presentMode: (props === null || props === void 0 ? void 0 : props.presentMode) || 1,
30
32
  animated: (props === null || props === void 0 ? void 0 : props.animated) || true,
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- /** # CView SplitView Controller
3
- *
4
- * 实现左右分栏布局的控制器, 本身不提供除了分割线以外的视觉效果
5
- *
6
- * 此控制器加载后,会禁用原本的ScreenEdgePanGesture,此控制器应该作为根控制器使用
7
- *
8
- * ## Props
9
- *
10
- * - 只写 items: { controller: Controller, bgcolor: UIColor }[] 其中第一个放在主视图上, 第二个放在次视图上
11
- * - 读写 sideBarShown: boolean = false 侧栏是否显示
12
- */
13
2
  Object.defineProperty(exports, "__esModule", { value: true });
14
3
  exports.SplitViewController = void 0;
15
4
  const base_controller_1 = require("./base-controller");
@@ -129,6 +118,17 @@ class MaskView extends base_1.Base {
129
118
  this.view.hidden = true;
130
119
  }
131
120
  }
121
+ /** # CView SplitView Controller
122
+ *
123
+ * 实现左右分栏布局的控制器, 本身不提供除了分割线以外的视觉效果
124
+ *
125
+ * 此控制器加载后,会禁用原本的ScreenEdgePanGesture,此控制器应该作为根控制器使用
126
+ *
127
+ * ## Props
128
+ *
129
+ * - 只写 items: { controller: Controller, bgcolor: UIColor }[] 其中第一个放在主视图上, 第二个放在次视图上
130
+ * - 读写 sideBarShown: boolean = false 侧栏是否显示
131
+ */
132
132
  class SplitViewController extends base_controller_1.BaseController {
133
133
  constructor({ props, layout, events }) {
134
134
  super({
@@ -138,6 +138,7 @@ class SplitViewController extends base_controller_1.BaseController {
138
138
  }, layout, events
139
139
  });
140
140
  this._sideBarShown = false;
141
+ this._canShowSidebar = true;
141
142
  this.cviews = {};
142
143
  this.cviews.secondaryView = new SecondaryView({
143
144
  props: {
@@ -172,7 +173,7 @@ class SplitViewController extends base_controller_1.BaseController {
172
173
  ]
173
174
  });
174
175
  this._screenEdgePanGestureObject = this._defineGestureObject(() => {
175
- if (!this.sideBarShown)
176
+ if (!this.sideBarShown && this._canShowSidebar)
176
177
  this.sideBarShown = true;
177
178
  });
178
179
  this.rootView.views = [this.cviews.secondaryView, this.cviews.primaryView];
@@ -248,5 +249,11 @@ class SplitViewController extends base_controller_1.BaseController {
248
249
  }
249
250
  this._sideBarShown = bool;
250
251
  }
252
+ get canShowSidebar() {
253
+ return this._canShowSidebar;
254
+ }
255
+ set canShowSidebar(bool) {
256
+ this._canShowSidebar = bool;
257
+ }
251
258
  }
252
259
  exports.SplitViewController = SplitViewController;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TabBarController = void 0;
4
+ const base_controller_1 = require("./base-controller");
5
+ const single_views_1 = require("../components/single-views");
6
+ const tabbar_1 = require("../components/tabbar");
4
7
  /**
5
8
  * # CView TabBar Controller
6
9
  *
@@ -16,9 +19,6 @@ exports.TabBarController = void 0;
16
19
  * controller: Controller}[]
17
20
  * - index: number = 0
18
21
  */
19
- const base_controller_1 = require("./base-controller");
20
- const single_views_1 = require("../components/single-views");
21
- const tabbar_1 = require("../components/tabbar");
22
22
  class TabBarController extends base_controller_1.BaseController {
23
23
  constructor({ props, layout, events = {} }) {
24
24
  super({
package/dist/index.js CHANGED
@@ -14,13 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./components/artificial-flowlayout"), exports);
18
17
  __exportStar(require("./components/base"), exports);
19
18
  __exportStar(require("./components/custom-navigation-bar"), exports);
20
19
  __exportStar(require("./components/dynamic-itemsize-matrix"), exports);
21
20
  __exportStar(require("./components/dynamic-preference-listview"), exports);
22
21
  __exportStar(require("./components/dynamic-rowheight-list"), exports);
23
22
  __exportStar(require("./components/enhanced-imageview"), exports);
23
+ __exportStar(require("./components/flowlayout"), exports);
24
24
  __exportStar(require("./components/image-pager"), exports);
25
25
  __exportStar(require("./components/page-control"), exports);
26
26
  __exportStar(require("./components/pageviewer-titlebar"), exports);
@@ -52,7 +52,6 @@ __exportStar(require("./components/dialogs/dialog-sheet"), exports);
52
52
  __exportStar(require("./components/dialogs/form-dialog"), exports);
53
53
  __exportStar(require("./components/dialogs/list-dialog"), exports);
54
54
  __exportStar(require("./components/dialogs/text-dialog"), exports);
55
- __exportStar(require("./components/spinners/loading-double-rings"), exports);
56
55
  __exportStar(require("./components/spinners/loading-dual-ring"), exports);
57
56
  __exportStar(require("./components/spinners/loading-wedges"), exports);
58
57
  __exportStar(require("./components/spinners/spinner-androidstyle"), exports);
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const flowlayout_1 = require("../components/flowlayout");
4
+ const single_views_1 = require("../components/single-views");
5
+ class FlowlayoutItem extends single_views_1.Label {
6
+ constructor(text) {
7
+ super({
8
+ props: {
9
+ text: text,
10
+ borderWidth: 1,
11
+ },
12
+ layout: $layout.fill
13
+ });
14
+ this._text = text;
15
+ }
16
+ itemWidth() {
17
+ return this._text.length * 10;
18
+ }
19
+ }
20
+ const flowlayout = new flowlayout_1.Flowlayout({
21
+ props: {
22
+ items: [new FlowlayoutItem('Hello'), new FlowlayoutItem('World'), new FlowlayoutItem('Flowlayout')],
23
+ spacing: 10,
24
+ itemHeight: 30,
25
+ fixedRows: 2,
26
+ fixedHeight: true,
27
+ menu: {
28
+ items: [{
29
+ symbol: "plus",
30
+ handler: sender => console.log("here")
31
+ }]
32
+ }
33
+ },
34
+ layout: (make, view) => {
35
+ make.left.right.inset(10);
36
+ make.top.inset(100);
37
+ make.height.equalTo(70);
38
+ },
39
+ events: {
40
+ didSelect: (sender, index, item) => {
41
+ $ui.alert(item.view.text);
42
+ }
43
+ }
44
+ });
45
+ $ui.render({
46
+ props: {
47
+ navButtons: [
48
+ {
49
+ symbol: "plus",
50
+ handler: () => {
51
+ flowlayout.items = [
52
+ new FlowlayoutItem('Hello'),
53
+ new FlowlayoutItem('World'),
54
+ new FlowlayoutItem('Flowlayout'),
55
+ new FlowlayoutItem('New Item'),
56
+ new FlowlayoutItem('Hello'),
57
+ new FlowlayoutItem('World'),
58
+ new FlowlayoutItem('FlowlayoutFlowlayoutFlowlayout'),
59
+ new FlowlayoutItem('New Item'),
60
+ new FlowlayoutItem('Hello'),
61
+ new FlowlayoutItem('World'),
62
+ new FlowlayoutItem('FlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayout'),
63
+ new FlowlayoutItem('New Item'),
64
+ new FlowlayoutItem('Hello'),
65
+ new FlowlayoutItem('World'),
66
+ new FlowlayoutItem('FlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayout'),
67
+ new FlowlayoutItem('New Item'),
68
+ ];
69
+ }
70
+ }
71
+ ],
72
+ },
73
+ views: [flowlayout.definition]
74
+ });
package/index.ts CHANGED
@@ -1,10 +1,10 @@
1
- export * from './components/artificial-flowlayout';
2
1
  export * from './components/base';
3
2
  export * from './components/custom-navigation-bar';
4
3
  export * from './components/dynamic-itemsize-matrix';
5
4
  export * from './components/dynamic-preference-listview';
6
5
  export * from './components/dynamic-rowheight-list';
7
6
  export * from './components/enhanced-imageview';
7
+ export * from './components/flowlayout';
8
8
  export * from './components/image-pager';
9
9
  export * from './components/page-control';
10
10
  export * from './components/pageviewer-titlebar';
@@ -36,7 +36,6 @@ export * from './components/dialogs/dialog-sheet';
36
36
  export * from './components/dialogs/form-dialog';
37
37
  export * from './components/dialogs/list-dialog';
38
38
  export * from './components/dialogs/text-dialog';
39
- export * from './components/spinners/loading-double-rings';
40
39
  export * from './components/spinners/loading-dual-ring';
41
40
  export * from './components/spinners/loading-wedges';
42
41
  export * from './components/spinners/spinner-androidstyle';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsbox-cview",
3
- "version": "1.3.4",
3
+ "version": "1.4.0",
4
4
  "description": "为 JSBox 设计的微型框架",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,77 @@
1
+ import { Flowlayout } from '../components/flowlayout';
2
+ import { Label } from '../components/single-views';
3
+
4
+ class FlowlayoutItem extends Label {
5
+ private _text: string;
6
+ constructor(text: string) {
7
+ super({
8
+ props: {
9
+ text: text,
10
+ borderWidth: 1,
11
+ },
12
+ layout: $layout.fill
13
+ });
14
+ this._text = text;
15
+ }
16
+
17
+ itemWidth() {
18
+ return this._text.length * 10;
19
+ }
20
+ }
21
+
22
+ const flowlayout = new Flowlayout({
23
+ props: {
24
+ items: [new FlowlayoutItem('Hello'), new FlowlayoutItem('World'), new FlowlayoutItem('Flowlayout')],
25
+ spacing: 10,
26
+ itemHeight: 30,
27
+ fixedRows: 2,
28
+ fixedHeight: true,
29
+ menu: {
30
+ items: [{
31
+ symbol: "plus",
32
+ handler: sender => console.log("here")
33
+ }]
34
+ }
35
+ },
36
+ layout: (make, view) => {
37
+ make.left.right.inset(10);
38
+ make.top.inset(100);
39
+ make.height.equalTo(70);
40
+ },
41
+ events: {
42
+ didSelect: (sender, index, item) =>{
43
+ $ui.alert(item.view.text);
44
+ }
45
+ }
46
+ });
47
+
48
+ $ui.render({
49
+ props: {
50
+ navButtons:[
51
+ {
52
+ symbol: "plus",
53
+ handler: () => {
54
+ flowlayout.items = [
55
+ new FlowlayoutItem('Hello'),
56
+ new FlowlayoutItem('World'),
57
+ new FlowlayoutItem('Flowlayout'),
58
+ new FlowlayoutItem('New Item'),
59
+ new FlowlayoutItem('Hello'),
60
+ new FlowlayoutItem('World'),
61
+ new FlowlayoutItem('FlowlayoutFlowlayoutFlowlayout'),
62
+ new FlowlayoutItem('New Item'),
63
+ new FlowlayoutItem('Hello'),
64
+ new FlowlayoutItem('World'),
65
+ new FlowlayoutItem('FlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayout'),
66
+ new FlowlayoutItem('New Item'),
67
+ new FlowlayoutItem('Hello'),
68
+ new FlowlayoutItem('World'),
69
+ new FlowlayoutItem('FlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayoutFlowlayout'),
70
+ new FlowlayoutItem('New Item'),
71
+ ];
72
+ }
73
+ }
74
+ ],
75
+ },
76
+ views: [flowlayout.definition]
77
+ });