@social-mail/social-mail-client 1.2.641 → 1.2.643

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 (139) hide show
  1. package/dist/admin/AdminAppIndex.pack.js +526 -566
  2. package/dist/admin/AdminAppIndex.pack.js.map +1 -1
  3. package/dist/admin/AdminAppIndex.pack.min.js +9 -13
  4. package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
  5. package/dist/admin/commands/AdminCommands.d.ts +0 -1
  6. package/dist/admin/commands/AdminCommands.d.ts.map +1 -1
  7. package/dist/admin/commands/AdminCommands.js +0 -4
  8. package/dist/admin/commands/AdminCommands.js.map +1 -1
  9. package/dist/admin/drawer/AdminDrawer.d.ts.map +1 -1
  10. package/dist/admin/drawer/AdminDrawer.js +0 -4
  11. package/dist/admin/drawer/AdminDrawer.js.map +1 -1
  12. package/dist/common/commands/CommonCommands.d.ts +1 -1
  13. package/dist/common/commands/CommonCommands.d.ts.map +1 -1
  14. package/dist/common/commands/CommonCommands.js +3 -3
  15. package/dist/common/commands/CommonCommands.js.map +1 -1
  16. package/dist/common/controls/phone-editor/PhoneEditor.d.ts +3 -0
  17. package/dist/common/controls/phone-editor/PhoneEditor.d.ts.map +1 -1
  18. package/dist/common/controls/phone-editor/PhoneEditor.js +25 -4
  19. package/dist/common/controls/phone-editor/PhoneEditor.js.map +1 -1
  20. package/dist/common/pages/stores/StoreDetailPage.d.ts +2 -2
  21. package/dist/common/pages/stores/StoreDetailPage.d.ts.map +1 -1
  22. package/dist/common/pages/stores/StoreDetailPage.js +2 -8
  23. package/dist/common/pages/stores/StoreDetailPage.js.map +1 -1
  24. package/dist/common/pages/stores/payment-gateway/PaymentGatewayEditorPage.d.ts +10 -0
  25. package/dist/common/pages/stores/payment-gateway/PaymentGatewayEditorPage.d.ts.map +1 -0
  26. package/dist/common/pages/stores/payment-gateway/PaymentGatewayEditorPage.js +87 -0
  27. package/dist/common/pages/stores/payment-gateway/PaymentGatewayEditorPage.js.map +1 -0
  28. package/dist/common/pages/stores/payment-gateway/PaymentGatewayListPage.d.ts +23 -0
  29. package/dist/common/pages/stores/payment-gateway/PaymentGatewayListPage.d.ts.map +1 -0
  30. package/dist/common/pages/stores/payment-gateway/PaymentGatewayListPage.js +129 -0
  31. package/dist/common/pages/stores/payment-gateway/PaymentGatewayListPage.js.map +1 -0
  32. package/dist/common/pages/stores/products/EditProductListPage.d.ts +2 -2
  33. package/dist/common/pages/stores/products/EditProductListPage.d.ts.map +1 -1
  34. package/dist/common/pages/stores/products/EditProductListPage.js.map +1 -1
  35. package/dist/common/pages/stores/settings/EditSettingsPage.d.ts +2 -2
  36. package/dist/common/pages/stores/settings/EditSettingsPage.d.ts.map +1 -1
  37. package/dist/common/pages/stores/settings/EditSettingsPage.js +4 -4
  38. package/dist/common/pages/stores/settings/EditSettingsPage.js.map +1 -1
  39. package/dist/model/model.d.ts +50 -51
  40. package/dist/model/model.d.ts.map +1 -1
  41. package/dist/model/model.js +195 -205
  42. package/dist/model/model.js.map +1 -1
  43. package/dist/public/channel/ChannelView.pack.js +303 -261
  44. package/dist/public/channel/ChannelView.pack.js.map +1 -1
  45. package/dist/public/channel/ChannelView.pack.min.js +2 -2
  46. package/dist/public/channel/ChannelView.pack.min.js.map +1 -1
  47. package/dist/public/preview/zip/DownloadZip.pack.js +303 -261
  48. package/dist/public/preview/zip/DownloadZip.pack.js.map +1 -1
  49. package/dist/public/preview/zip/DownloadZip.pack.min.js +1 -1
  50. package/dist/public/preview/zip/DownloadZip.pack.min.js.map +1 -1
  51. package/dist/public/store/Store.d.ts +2 -2
  52. package/dist/public/store/Store.d.ts.map +1 -1
  53. package/dist/public/store/Store.js +29 -7
  54. package/dist/public/store/Store.js.map +1 -1
  55. package/dist/public/store/Store.pack.js +19655 -18064
  56. package/dist/public/store/Store.pack.js.map +1 -1
  57. package/dist/public/store/Store.pack.min.js +370 -161
  58. package/dist/public/store/Store.pack.min.js.map +1 -1
  59. package/dist/public/store/StoreItemDetailView.d.ts +1 -0
  60. package/dist/public/store/StoreItemDetailView.d.ts.map +1 -1
  61. package/dist/public/store/StoreItemDetailView.js +24 -8
  62. package/dist/public/store/StoreItemDetailView.js.map +1 -1
  63. package/dist/public/store/StoreItemListView.d.ts.map +1 -1
  64. package/dist/public/store/StoreItemListView.js +7 -4
  65. package/dist/public/store/StoreItemListView.js.map +1 -1
  66. package/dist/public/store/StoreUrlService.d.ts +22 -15
  67. package/dist/public/store/StoreUrlService.d.ts.map +1 -1
  68. package/dist/public/store/StoreUrlService.js +39 -12
  69. package/dist/public/store/StoreUrlService.js.map +1 -1
  70. package/dist/public/store/cart/ShoppingCart.pack.js +303 -261
  71. package/dist/public/store/cart/ShoppingCart.pack.js.map +1 -1
  72. package/dist/public/store/cart/ShoppingCart.pack.min.js +2 -2
  73. package/dist/public/store/cart/ShoppingCart.pack.min.js.map +1 -1
  74. package/dist/public/user/SiteLogin.d.ts +28 -0
  75. package/dist/public/user/SiteLogin.d.ts.map +1 -0
  76. package/dist/public/user/SiteLogin.js +224 -0
  77. package/dist/public/user/SiteLogin.js.map +1 -0
  78. package/dist/public/user/WebSiteUserService.d.ts +10 -0
  79. package/dist/public/user/WebSiteUserService.d.ts.map +1 -0
  80. package/dist/public/user/WebSiteUserService.js +52 -0
  81. package/dist/public/user/WebSiteUserService.js.map +1 -0
  82. package/dist/services/store/StoreItemService.d.ts +1 -1
  83. package/dist/services/store/StoreItemService.d.ts.map +1 -1
  84. package/dist/services/store/StoreItemService.js +6 -6
  85. package/dist/services/store/StoreItemService.js.map +1 -1
  86. package/dist/services/store/StoreService.d.ts +5 -5
  87. package/dist/services/store/StoreService.d.ts.map +1 -1
  88. package/dist/services/store/StoreService.js +7 -7
  89. package/dist/services/store/StoreService.js.map +1 -1
  90. package/dist/tsconfig.tsbuildinfo +1 -1
  91. package/dist/web/AppIndex.pack.js +528 -301
  92. package/dist/web/AppIndex.pack.js.map +1 -1
  93. package/dist/web/AppIndex.pack.min.js +8 -8
  94. package/dist/web/AppIndex.pack.min.js.map +1 -1
  95. package/dist/web/drawer/AppDrawer.d.ts +1 -1
  96. package/dist/web/drawer/AppDrawer.js +2 -2
  97. package/dist/web/drawer/AppDrawer.js.map +1 -1
  98. package/node_modules/@web-atoms/entity/dist/services/BaseEntityService.d.ts +1 -1
  99. package/node_modules/@web-atoms/entity/dist/services/BaseEntityService.d.ts.map +1 -1
  100. package/node_modules/@web-atoms/entity/dist/services/BaseEntityService.js +108 -56
  101. package/node_modules/@web-atoms/entity/dist/services/BaseEntityService.js.map +1 -1
  102. package/node_modules/@web-atoms/entity/dist/tsconfig.tsbuildinfo +1 -1
  103. package/node_modules/@web-atoms/entity/package.json +1 -1
  104. package/node_modules/@web-atoms/entity/src/services/BaseEntityService.ts +109 -54
  105. package/package.json +2 -2
  106. package/src/admin/commands/AdminCommands.ts +0 -5
  107. package/src/admin/drawer/AdminDrawer.tsx +0 -5
  108. package/src/common/commands/CommonCommands.ts +3 -4
  109. package/src/common/controls/phone-editor/PhoneEditor.tsx +24 -1
  110. package/src/common/pages/stores/StoreDetailPage.tsx +4 -8
  111. package/src/common/pages/stores/payment-gateway/PaymentGatewayEditorPage.tsx +62 -0
  112. package/src/common/pages/stores/payment-gateway/PaymentGatewayListPage.tsx +94 -0
  113. package/src/common/pages/stores/products/EditProductListPage.tsx +2 -2
  114. package/src/common/pages/stores/settings/EditSettingsPage.tsx +3 -3
  115. package/src/model/model.ts +69 -86
  116. package/src/public/store/Store.tsx +18 -4
  117. package/src/public/store/StoreItemDetailView.tsx +17 -4
  118. package/src/public/store/StoreItemListView.tsx +4 -2
  119. package/src/public/store/StoreUrlService.ts +62 -27
  120. package/src/public/user/SiteLogin.tsx +239 -0
  121. package/src/public/user/WebSiteUserService.ts +39 -0
  122. package/src/services/store/StoreItemService.ts +6 -4
  123. package/src/services/store/StoreService.ts +11 -11
  124. package/src/web/drawer/AppDrawer.tsx +2 -2
  125. package/dist/admin/pages/stores/AdminStoreDetailPage.d.ts +0 -11
  126. package/dist/admin/pages/stores/AdminStoreDetailPage.d.ts.map +0 -1
  127. package/dist/admin/pages/stores/AdminStoreDetailPage.js +0 -122
  128. package/dist/admin/pages/stores/AdminStoreDetailPage.js.map +0 -1
  129. package/dist/admin/pages/stores/AdminStoreList.d.ts +0 -13
  130. package/dist/admin/pages/stores/AdminStoreList.d.ts.map +0 -1
  131. package/dist/admin/pages/stores/AdminStoreList.js +0 -131
  132. package/dist/admin/pages/stores/AdminStoreList.js.map +0 -1
  133. package/dist/common/pages/stores/templates/EditStoreTemplatesPage.d.ts +0 -11
  134. package/dist/common/pages/stores/templates/EditStoreTemplatesPage.d.ts.map +0 -1
  135. package/dist/common/pages/stores/templates/EditStoreTemplatesPage.js +0 -28
  136. package/dist/common/pages/stores/templates/EditStoreTemplatesPage.js.map +0 -1
  137. package/src/admin/pages/stores/AdminStoreDetailPage.tsx +0 -102
  138. package/src/admin/pages/stores/AdminStoreList.tsx +0 -109
  139. package/src/common/pages/stores/templates/EditStoreTemplatesPage.tsx +0 -19
@@ -71,44 +71,9 @@ export interface ICollection<T> extends Array<T> {
71
71
  }
72
72
 
73
73
  const ArrayPrototype = Array.prototype as any;
74
- ArrayPrototype.where = ArrayPrototype.filter;
75
- ArrayPrototype.any = ArrayPrototype.some;
76
- ArrayPrototype.select = ArrayPrototype.map;
77
- ArrayPrototype.selectMany = function(x) {
78
- const r = [];
79
- for (const iterator of this) {
80
- const items = x(iterator);
81
- if (Array.isArray(items)) {
82
- r.push(... items);
83
- }
84
- }
85
- return r;
86
- };
87
- ArrayPrototype.firstOrDefault = function(f) {
88
- if (f) {
89
- return ArrayPrototype.find.apply(this, arguments);
90
- }
91
- return this[0];
92
- };
93
- ArrayPrototype.sum = function(f) {
94
- let n = 0;
95
- for (const iterator of this) {
96
- n += f(iterator) ?? 0;
97
- }
98
- return n;
99
- };
100
- ArrayPrototype.average = function(f) {
101
- if (this.length === 0) {
102
- return 0;
103
- }
104
- let n = 0;
105
- for (const iterator of this) {
106
- n += f(iterator) ?? 0;
107
- }
108
- return n / this.length;
109
- };
110
- ArrayPrototype.orderBy = function(f) {
111
- return this.sort((a, b) => {
74
+
75
+ const orderBy = function (f) {
76
+ return [].concat(this).sort((a, b) => {
112
77
  const ak = f(a);
113
78
  const bk = f(b);
114
79
  if (typeof ak === "string") {
@@ -117,9 +82,9 @@ ArrayPrototype.orderBy = function(f) {
117
82
  return ak - bk;
118
83
  });
119
84
  };
120
- ArrayPrototype.thenBy = ArrayPrototype.orderBy;
121
- ArrayPrototype.orderByDescending = function(f) {
122
- return this.sort((a, b) => {
85
+
86
+ const orderByDescending = function (f) {
87
+ return [].concat(this).sort((a, b) => {
123
88
  const ak = f(a);
124
89
  const bk = f(b);
125
90
  if (typeof ak === "string") {
@@ -128,19 +93,109 @@ ArrayPrototype.orderByDescending = function(f) {
128
93
  return bk - ak;
129
94
  });
130
95
  };
131
- ArrayPrototype.thenByDescending = ArrayPrototype.orderByDescending;
132
- ArrayPrototype.count = function(f) {
133
- if (!f) {
134
- return this.length;
135
- }
136
- let length = 0;
137
- for (const iterator of this) {
138
- if (f(iterator)) {
139
- length++;
140
- }
96
+
97
+ Object.defineProperties(ArrayPrototype, {
98
+ where: {
99
+ enumerable: false,
100
+ value: ArrayPrototype.filter,
101
+ configurable: true
102
+ },
103
+ any: {
104
+ enumerable: false,
105
+ value: ArrayPrototype.some,
106
+ configurable: true
107
+ },
108
+ select: {
109
+ enumerable: false,
110
+ value: ArrayPrototype.map,
111
+ configurable: true
112
+ },
113
+ selectMany: {
114
+ enumerable: false,
115
+ value(x) {
116
+ const r = [];
117
+ for (const iterator of this) {
118
+ const items = x(iterator);
119
+ if (Array.isArray(items)) {
120
+ r.push(... items);
121
+ }
122
+ }
123
+ return r;
124
+ },
125
+ configurable: true
126
+ },
127
+ firstOrDefault: {
128
+ enumerable: false,
129
+ value(f) {
130
+ if (f) {
131
+ return ArrayPrototype.find.apply(this, arguments);
132
+ }
133
+ return this[0];
134
+ },
135
+ configurable: true
136
+ },
137
+ sum: {
138
+ enumerable: false,
139
+ value(f) {
140
+ let n = 0;
141
+ for (const iterator of this) {
142
+ n += f(iterator) ?? 0;
143
+ }
144
+ return n;
145
+ },
146
+ configurable: true
147
+ },
148
+ average: {
149
+ enumerable: false,
150
+ value(f) {
151
+ if (this.length === 0) {
152
+ return 0;
153
+ }
154
+ let n = 0;
155
+ for (const iterator of this) {
156
+ n += f(iterator) ?? 0;
157
+ }
158
+ return n / this.length;
159
+ },
160
+ configurable: true
161
+ },
162
+ orderBy: {
163
+ enumerable: false,
164
+ value: orderBy,
165
+ configurable: true
166
+ },
167
+ thenBy: {
168
+ enumerable: false,
169
+ value: orderBy, configurable: false
170
+ },
171
+ orderByDescending: {
172
+ enumerable: false,
173
+ value: orderByDescending,
174
+ configurable: true
175
+ },
176
+ thenByDescending: {
177
+ enumerable: false,
178
+ value: orderByDescending,
179
+ configurable: false
180
+ },
181
+ count: {
182
+ enumerable: false,
183
+ value(f) {
184
+ if (!f) {
185
+ return this.length;
186
+ }
187
+ let length = 0;
188
+ for (const iterator of this) {
189
+ if (f(iterator)) {
190
+ length++;
191
+ }
192
+ }
193
+ return length;
194
+ },
195
+ configurable: false
141
196
  }
142
- return length;
143
- };
197
+
198
+ });
144
199
 
145
200
  export interface IMethod {
146
201
  select?: [string, ... any[]];
@@ -380,7 +435,7 @@ export default abstract class BaseEntityService extends HttpSession {
380
435
  entity,
381
436
  args
382
437
  }
383
- });
438
+ }) as Promise<T>;
384
439
  }
385
440
 
386
441
  public save<T extends IClrEntity>(body: T, cloner?: (c: Cloner<T>) => Cloner<T>, trace?: boolean): Promise<T>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-client",
3
- "version": "1.2.641",
3
+ "version": "1.2.643",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -17,7 +17,7 @@
17
17
  "@web-atoms/data-styles": "^1.0.123",
18
18
  "@web-atoms/date-time": "^1.1.0",
19
19
  "@web-atoms/email-dom": "^1.0.32",
20
- "@web-atoms/entity": "^2.4.58",
20
+ "@web-atoms/entity": "^2.4.60",
21
21
  "@web-atoms/module-loader": "^2.1.43",
22
22
  "@web-atoms/web-controls": "^2.4.56",
23
23
  "reflect-metadata": "^0.1.13",
@@ -47,11 +47,6 @@ export default class AdminCommands extends CommonCommands {
47
47
  openPage: () => import("../pages/repair/RepairPage")
48
48
  });
49
49
 
50
- static editStores = Command.create({
51
- route: "/admin/stores",
52
- openPage: () => import("../pages/stores/AdminStoreList")
53
- });
54
-
55
50
  static editSmsSources = Command.create({
56
51
  route: "/admin/sms-sources",
57
52
  openPage: () => import("../pages/incoming-sms-sources/EditIncomingSmsSourcePage")
@@ -81,11 +81,6 @@ export default class AdminDrawer extends Drawer {
81
81
  label="Sms Sources"
82
82
  commandLink={AdminCommands.editSmsSources.displayRoute({})}
83
83
  />
84
- <MenuItem
85
- icon="fas fa-dollar"
86
- label="Stores"
87
- commandLink={AdminCommands.editStores.displayRoute({})}
88
- />
89
84
  <MenuItem
90
85
  icon="fas fa-gear"
91
86
  label="Config"
@@ -75,12 +75,11 @@ export default class CommonCommands extends Commands {
75
75
  openPage: () => import("../pages/stores/settings/EditSettingsPage")
76
76
  });
77
77
 
78
- static editStoreTemplates = Command.create({
79
- route: "/stores/templates/{storeID}",
80
- openPage: () => import("../pages/stores/templates/EditStoreTemplatesPage")
78
+ static paymentConfig = Command.create({
79
+ route: "/stores/payment-gateways/{storeID}",
80
+ openPage: () => import("../pages/stores/payment-gateway/PaymentGatewayListPage")
81
81
  });
82
82
 
83
-
84
83
  static editProduct = Command.create({
85
84
  route: "/stores/product/{storeItemID}",
86
85
  routeOrder: 200,
@@ -1,12 +1,35 @@
1
1
  import XNode from "@web-atoms/core/dist/core/XNode";
2
2
  import { AtomControl } from "@web-atoms/core/dist/web/controls/AtomControl";
3
- import { CountrySelect } from "../countries/CountrySelect";
3
+ import { CountrySelect, formatForCountry, isdForCountry } from "../countries/CountrySelect";
4
+ import Bind from "@web-atoms/core/dist/core/Bind";
5
+ import MaskedInput from "@web-atoms/web-controls/dist/basic/MaskedInput";
4
6
 
5
7
  export default class PhoneEditor extends AtomControl {
8
+
9
+ country: any;
10
+
11
+ phoneNumberText: any;
12
+
13
+ value: any;
14
+
6
15
  protected preCreate(): void {
16
+ this.country = "IN";
17
+ this.phoneNumberText = "";
18
+ this.value = null;
7
19
  this.render(<div data-layout="row">
8
20
  <CountrySelect
21
+ value={Bind.twoWaysImmediate(() => this.country)}
22
+ />
23
+ <MaskedInput
24
+ data-mask={Bind.oneWayAsync(() => formatForCountry(this.country))}
25
+ value={Bind.twoWaysImmediate(() => this.phoneNumberText)}
9
26
  />
10
27
  </div>);
28
+
29
+ this.bindEvent(this.element, "input", async () => {
30
+ const isdCode = await isdForCountry(this.country);
31
+ const phoneNumber = this.phoneNumberText.replace(/[^0-9]/g,"");
32
+ this.value = isdCode.startsWith("+") ? isdCode + phoneNumber: `+${isdCode}${phoneNumber}`;
33
+ });
11
34
  }
12
35
  }
@@ -4,7 +4,7 @@ import AtomRepeater from "@web-atoms/web-controls/dist/basic/AtomRepeater";
4
4
  import { ContentPage } from "@web-atoms/web-controls/dist/mobile-app/MobileApp";
5
5
  import StoreService from "../../../services/store/StoreService";
6
6
  import InjectProperty from "@web-atoms/core/dist/core/InjectProperty";
7
- import { IStore, IStoreInsight, IStoreJournal } from "../../../model/model";
7
+ import { IStoreJournal, IWebSiteFolder } from "../../../model/model";
8
8
  import Bind from "@web-atoms/core/dist/core/Bind";
9
9
  import AppCommands from "../../../web/commands/AppCommands";
10
10
  import CommonCommands from "../../commands/CommonCommands";
@@ -23,7 +23,7 @@ export default class StoreDetailPage extends ContentPage<{ id: any }> {
23
23
  @InjectProperty
24
24
  storeOrderService: StoreOrderService;
25
25
 
26
- model: IStore;
26
+ model: IWebSiteFolder;
27
27
 
28
28
  items: IStoreJournal[] = [];
29
29
  selectedItem: IStoreJournal = null;
@@ -34,7 +34,7 @@ export default class StoreDetailPage extends ContentPage<{ id: any }> {
34
34
 
35
35
  this.model = await this.storeService.get(this.parameters.id);
36
36
 
37
- this.title = `${this.model.name} Orders`;
37
+ this.title = `${this.model.folder.name} Orders`;
38
38
 
39
39
  this.headerRenderer = () => <div data-layout="flex-wrap-padding">
40
40
  <input type="search" value={Bind.twoWaysImmediate(() => this.search)}/>
@@ -44,13 +44,9 @@ export default class StoreDetailPage extends ContentPage<{ id: any }> {
44
44
  text="Products"
45
45
  />
46
46
  <a data-click-event="route"
47
- href={CommonCommands.editConfig.displayRoute({ storeID: this.parameters.id})}
47
+ href={CommonCommands.paymentConfig.displayRoute({ storeID: this.parameters.id})}
48
48
  text="Settings"
49
49
  ></a>
50
- <a data-click-event="route"
51
- href={CommonCommands.editStoreTemplates.displayRoute({ storeID: this.parameters.id})}
52
- text="Templates"
53
- ></a>
54
50
  </div>;
55
51
 
56
52
  this.renderer = <div>
@@ -0,0 +1,62 @@
1
+ import { ContentPage } from "@web-atoms/web-controls/dist/mobile-app/MobileApp";
2
+ import { IStoreLedger, StoreLedgerPaymentGatewayArray } from "../../../../model/model";
3
+ import XNode from "@web-atoms/core/dist/core/XNode";
4
+ import Form from "@web-atoms/web-controls/dist/basic/Form";
5
+ import FormField from "@web-atoms/web-controls/dist/basic/FormField";
6
+ import Bind from "@web-atoms/core/dist/core/Bind";
7
+ import Select from "@web-atoms/web-controls/dist/basic/Select";
8
+ import { SaveIconTextButton } from "../../../controls/buttons/IconButton";
9
+ import Action from "@web-atoms/core/dist/view-model/Action";
10
+ import InjectProperty from "@web-atoms/core/dist/core/InjectProperty";
11
+ import EntityService from "../../../../services/EntityService";
12
+
13
+ export default class PaymentGatewayEditorPage extends ContentPage<IStoreLedger> {
14
+
15
+ model: IStoreLedger;
16
+
17
+ @InjectProperty
18
+ entityService: EntityService;
19
+
20
+ async init() {
21
+
22
+ this.title = "Payment Gateway";
23
+
24
+ this.model = this.parameters;
25
+
26
+ this.renderer = <div>
27
+ <Form>
28
+ <FormField label="Type">
29
+ <Select
30
+ items={StoreLedgerPaymentGatewayArray}
31
+ value={Bind.twoWaysImmediate(() => this.model.paymentGateway)}
32
+ />
33
+ </FormField>
34
+ <FormField label="Name">
35
+ <input value={Bind.twoWaysImmediate(() => this.model.name)}/>
36
+ </FormField>
37
+ <FormField label="Description">
38
+ <input value={Bind.twoWaysImmediate(() => this.model.description)}/>
39
+ </FormField>
40
+ <FormField label="MerchantID">
41
+ <input value={Bind.twoWaysImmediate(() => this.model.merchantID)}/>
42
+ </FormField>
43
+ <FormField label="Username/Access ID/Key Index">
44
+ <input value={Bind.twoWaysImmediate(() => this.model.username)}/>
45
+ </FormField>
46
+ <FormField label="Password/Secret/Key">
47
+ <input value={Bind.twoWaysImmediate(() => this.model.password)}/>
48
+ </FormField>
49
+ <div data-layout="sticky-command-row">
50
+ <SaveIconTextButton data-submit-event="submitForm" />
51
+ </div>
52
+ </Form>
53
+ </div>;
54
+ }
55
+
56
+ @Action({ onEvent: "submitForm", close: true })
57
+ async submitForm() {
58
+ await this.entityService.save(this.model, (c) => c);
59
+ return this.model;
60
+ }
61
+
62
+ }
@@ -0,0 +1,94 @@
1
+ import InjectProperty from "@web-atoms/core/dist/core/InjectProperty";
2
+ import XNode from "@web-atoms/core/dist/core/XNode";
3
+ import { Inject } from "@web-atoms/core/dist/di/Inject";
4
+ import AtomRepeater from "@web-atoms/web-controls/dist/basic/AtomRepeater";
5
+ import MasterDetailPage from "@web-atoms/web-controls/dist/mobile-app/MasterDetailPage";
6
+ import EntityService from "../../../../services/EntityService";
7
+ import InfiniteRepeater from "../../../controls/repeater/InfiniteRepeater";
8
+ import { IStoreLedger, StoreLedger } from "../../../../model/model";
9
+ import Bind from "@web-atoms/core/dist/core/Bind";
10
+ import { Sql } from "../../../Sql";
11
+ import Action from "@web-atoms/core/dist/view-model/Action";
12
+ import PageNavigator from "@web-atoms/web-controls/dist/PageNavigator";
13
+ import PaymentGatewayEditorPage from "./PaymentGatewayEditorPage";
14
+ import { AddIconButton, AddIconTextButton } from "../../../controls/buttons/IconButton";
15
+
16
+ export default class PaymentGatewayListPage extends MasterDetailPage {
17
+
18
+ parameters: { storeID };
19
+
20
+ @InjectProperty
21
+ entityService: EntityService;
22
+
23
+ search: string = "";
24
+
25
+ items: IStoreLedger[] = [];
26
+
27
+ repeater: AtomRepeater;
28
+
29
+ async init() {
30
+
31
+ this.headerRenderer = () => <div>
32
+ <input type="search" value={Bind.twoWaysImmediate(() => this.search)}/>
33
+ </div>;
34
+
35
+ this.renderer = <div>
36
+ <AtomRepeater
37
+ data-layout="data-grid"
38
+ data-selection-updated-event="itemSelected"
39
+ data-items-updated-event="itemsLoaded"
40
+ presenter={Bind.presenter((c) => this.repeater = c)}
41
+ items={this.items}
42
+ { ... InfiniteRepeater.pagedItems((start) => (c, e, cancelToken) => this.load({ start, search: this.search, cancelToken }))}
43
+ itemRenderer={(x: IStoreLedger) => <div>
44
+ <label text={x.ledgerID}/>
45
+ <label text={x.paymentGateway}/>
46
+ <label text={x.name}/>
47
+ </div>}
48
+ />
49
+ </div>;
50
+
51
+ this.footerRenderer = () => <div>
52
+ <AddIconTextButton data-click-event="addItem" />
53
+ </div>;
54
+ }
55
+
56
+ load( { start, cancelToken, search } ) {
57
+ const { storeID } = this.parameters;
58
+ let q = this.entityService.query(StoreLedger)
59
+ .where({ storeID }, (p) => (x) => x.storeID === p.storeID && x.paymentGateway !== null);
60
+ if (search) {
61
+ q = q.where({ search }, (p) => (x) => Sql.text.iLike(x.description, p.search));
62
+ }
63
+ return q.toPagedList({
64
+ start,
65
+ cancelToken
66
+ });
67
+ }
68
+
69
+ @Action({ onEvent: "itemSelected"})
70
+ itemSelected() {
71
+ const data = this.repeater.selectedItem;
72
+ if (!data) {
73
+ return;
74
+ }
75
+ this.openDetail(PaymentGatewayEditorPage, data);
76
+ }
77
+
78
+ @Action({ onEvent: "itemsLoaded"})
79
+ itemsLoaded() {
80
+ this.repeater.selectedItem = this.items[0];
81
+ }
82
+
83
+ @Action({ onEvent: "addItem"})
84
+ addItem() {
85
+ const { storeID } = this.parameters;
86
+ const item = StoreLedger.create({
87
+ storeID,
88
+ head: "Income"
89
+ });
90
+ this.items.add(item);
91
+ this.repeater.selectedItem = item;
92
+ }
93
+
94
+ }
@@ -1,5 +1,5 @@
1
1
  import { ContentPage } from "@web-atoms/web-controls/dist/mobile-app/MobileApp";
2
- import { IStore, IStoreItem, StoreItem } from "../../../../model/model";
2
+ import { IStoreItem, IWebSiteFolder, StoreItem } from "../../../../model/model";
3
3
  import XNode from "@web-atoms/core/dist/core/XNode";
4
4
  import AtomRepeater, { SelectorCheckBox } from "@web-atoms/web-controls/dist/basic/AtomRepeater";
5
5
  import InfiniteRepeater from "../../../controls/repeater/InfiniteRepeater";
@@ -21,7 +21,7 @@ export default class EditProductListPage extends ContentPage<{ storeID }> {
21
21
 
22
22
  items: IStoreItem[] = [];
23
23
 
24
- store: IStore = null;
24
+ store: IWebSiteFolder = null;
25
25
 
26
26
  selectedItem = null;
27
27
 
@@ -3,7 +3,7 @@ import XNode from "@web-atoms/core/dist/core/XNode";
3
3
  import AtomRepeater from "@web-atoms/web-controls/dist/basic/AtomRepeater";
4
4
  import { ContentPage } from "@web-atoms/web-controls/dist/mobile-app/MobileApp";
5
5
  import EntityService from "../../../../services/EntityService";
6
- import { IStore, IStoreConfig, Store, StoreConfig } from "../../../../model/model";
6
+ import { IStoreConfig, IWebSiteFolder, StoreConfig, WebSiteFolder } from "../../../../model/model";
7
7
  import CollectionEditorEx from "../../../controls/collection-editor/CollectionEditorEx";
8
8
  import Bind from "@web-atoms/core/dist/core/Bind";
9
9
 
@@ -12,13 +12,13 @@ export default class EditSettingsPage extends ContentPage<{storeID}> {
12
12
  @InjectProperty
13
13
  entityService: EntityService;
14
14
 
15
- model: IStore = null;
15
+ model: IWebSiteFolder = null;
16
16
 
17
17
  async init() {
18
18
 
19
19
  const { storeID } = this.parameters;
20
20
 
21
- this.model = await this.entityService.query(Store).where({ storeID}, (p) => (x) => x.storeID === p.storeID)
21
+ this.model = await this.entityService.query(WebSiteFolder).where({ storeID}, (p) => (x) => x.folderID === p.storeID)
22
22
  .include((x) => [x.configs])
23
23
  .firstOrDefault();
24
24