@social-mail/social-mail-client 1.2.230 → 1.2.232
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.
- package/dist/admin/AdminAppIndex.pack.js +100 -53
- package/dist/admin/AdminAppIndex.pack.js.map +1 -1
- package/dist/admin/AdminAppIndex.pack.min.js +33 -5
- package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
- package/dist/common/controls/html/grapes-js/GrapesJSEditor.js +2 -2
- package/dist/common/controls/html/grapes-js/GrapesJSEditor.js.map +1 -1
- package/dist/common/pages/mailboxes/services/MailboxService.js +1 -1
- package/dist/common/pages/mailboxes/services/MailboxService.js.map +1 -1
- package/dist/public/store/Store.d.ts +6 -0
- package/dist/public/store/Store.d.ts.map +1 -0
- package/dist/public/store/Store.js +23 -0
- package/dist/public/store/Store.js.map +1 -0
- package/dist/public/store/Store.pack.js +20735 -0
- package/dist/public/store/Store.pack.js.map +1 -0
- package/dist/public/store/Store.pack.min.js +561 -0
- package/dist/public/store/Store.pack.min.js.map +1 -0
- package/dist/public/store/StoreItemDetailView.d.ts +4 -0
- package/dist/public/store/StoreItemDetailView.d.ts.map +1 -0
- package/dist/public/store/StoreItemDetailView.js +22 -0
- package/dist/public/store/StoreItemDetailView.js.map +1 -0
- package/dist/public/store/StoreItemListView.d.ts +13 -0
- package/dist/public/store/StoreItemListView.d.ts.map +1 -1
- package/dist/public/store/StoreItemListView.js +99 -4
- package/dist/public/store/StoreItemListView.js.map +1 -1
- package/dist/site-editor/editor/HtmlPageEditor.d.ts +2 -2
- package/dist/site-editor/editor/HtmlPageEditor.d.ts.map +1 -1
- package/dist/site-editor/editor/HtmlPageEditor.js +34 -30
- package/dist/site-editor/editor/HtmlPageEditor.js.map +1 -1
- package/dist/site-editor/editor/WebSitePageEditor.d.ts.map +1 -1
- package/dist/site-editor/editor/WebSitePageEditor.js +15 -11
- package/dist/site-editor/editor/WebSitePageEditor.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/web/AppIndex.pack.js +100 -53
- package/dist/web/AppIndex.pack.js.map +1 -1
- package/dist/web/AppIndex.pack.min.js +34 -6
- package/dist/web/AppIndex.pack.min.js.map +1 -1
- package/dist/web/page/files/media/ChooseMediaPage.d.ts +4 -3
- package/dist/web/page/files/media/ChooseMediaPage.d.ts.map +1 -1
- package/dist/web/page/files/media/ChooseMediaPage.js +50 -11
- package/dist/web/page/files/media/ChooseMediaPage.js.map +1 -1
- package/package.json +3 -2
- package/src/common/controls/html/grapes-js/GrapesJSEditor.tsx +1 -1
- package/src/common/pages/mailboxes/services/MailboxService.ts +1 -1
- package/src/public/store/Store.tsx +15 -0
- package/src/public/store/StoreItemDetailView.tsx +16 -0
- package/src/public/store/StoreItemListView.tsx +112 -1
- package/src/site-editor/editor/HtmlPageEditor.tsx +28 -26
- package/src/site-editor/editor/WebSitePageEditor.tsx +11 -7
- package/src/web/page/files/media/ChooseMediaPage.tsx +54 -10
|
@@ -6,19 +6,20 @@ export default class ChooseMediaPage extends PopupWindowPage<{
|
|
|
6
6
|
}, {
|
|
7
7
|
file: IAppFile;
|
|
8
8
|
size: number;
|
|
9
|
-
}> {
|
|
9
|
+
}[]> {
|
|
10
10
|
parameters: any;
|
|
11
11
|
selectedFolder: IAppFile;
|
|
12
12
|
private cloudFileService;
|
|
13
13
|
private search;
|
|
14
14
|
private version;
|
|
15
15
|
private size;
|
|
16
|
-
private
|
|
16
|
+
private selectedFiles;
|
|
17
|
+
private filesRepeater;
|
|
17
18
|
init(): Promise<void>;
|
|
18
19
|
selectFile(): Promise<{
|
|
19
20
|
file: IAppFile;
|
|
20
21
|
size: number;
|
|
21
|
-
}>;
|
|
22
|
+
}[]>;
|
|
22
23
|
onFilesUploaded(): Promise<void>;
|
|
23
24
|
}
|
|
24
25
|
//# sourceMappingURL=ChooseMediaPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChooseMediaPage.d.ts","sourceRoot":"","sources":["../../../../../src/web/page/files/media/ChooseMediaPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChooseMediaPage.d.ts","sourceRoot":"","sources":["../../../../../src/web/page/files/media/ChooseMediaPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAoFnD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,eAAe,CACxD;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CACjC;IAEM,UAAU,MAAC;IAEX,cAAc,EAAE,QAAQ,CAAC;IAGhC,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,MAAM,CAAM;IAEpB,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,CAAC,IAAI,CAAO;IAEnB,OAAO,CAAC,aAAa,CAAkB;IAEvC,OAAO,CAAC,aAAa,CAAe;IAE9B,IAAI;IAwFJ,UAAU;;;;IAMV,eAAe;CAIxB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
System.register(["tslib", "@web-atoms/web-controls/dist/mobile-app/MobileApp", "@web-atoms/core/dist/core/XNode", "../../../../common/controls/tree/FileTreeView", "@web-atoms/web-controls/dist/basic/AtomRepeater", "@web-atoms/core/dist/core/Bind", "@web-atoms/core/dist/core/InjectProperty", "../service/CloudFileService", "@web-atoms/core/dist/style/styled", "../../../../common/controls/drag-drop/FilesDragDrop", "@web-atoms/core/dist/view-model/Action", "@web-atoms/web-controls/dist/basic/UploadEvent", "../../../../common/controls/buttons/IconButton", "../../../../common/apiPath"], function (_export, _context) {
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
-
var __awaiter, __decorate, __metadata, PopupWindowPage, XNode, FolderTreeView, AtomRepeater, Bind, InjectProperty, CloudFileService, styled, FilesDragDrop, Action, UploadEvent, SaveIconTextButton, apiPath, ChooseMediaPage, css;
|
|
4
|
+
var __awaiter, __decorate, __metadata, PopupWindowPage, XNode, FolderTreeView, AtomRepeater, SelectAll, SelectorCheckBox, Bind, InjectProperty, CloudFileService, styled, FilesDragDrop, Action, UploadEvent, SaveIconTextButton, apiPath, ChooseMediaPage, css;
|
|
5
5
|
_export("default", void 0);
|
|
6
6
|
return {
|
|
7
7
|
setters: [function (_tslib) {
|
|
@@ -16,6 +16,8 @@ System.register(["tslib", "@web-atoms/web-controls/dist/mobile-app/MobileApp", "
|
|
|
16
16
|
FolderTreeView = _commonControlsTreeFileTreeView.FolderTreeView;
|
|
17
17
|
}, function (_webAtomsWebControlsDistBasicAtomRepeater) {
|
|
18
18
|
AtomRepeater = _webAtomsWebControlsDistBasicAtomRepeater.default;
|
|
19
|
+
SelectAll = _webAtomsWebControlsDistBasicAtomRepeater.SelectAll;
|
|
20
|
+
SelectorCheckBox = _webAtomsWebControlsDistBasicAtomRepeater.SelectorCheckBox;
|
|
19
21
|
}, function (_webAtomsCoreDistCoreBind) {
|
|
20
22
|
Bind = _webAtomsCoreDistCoreBind.default;
|
|
21
23
|
}, function (_webAtomsCoreDistCoreInjectProperty) {
|
|
@@ -59,11 +61,39 @@ System.register(["tslib", "@web-atoms/web-controls/dist/mobile-app/MobileApp", "
|
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
& .media-file {
|
|
62
|
-
display: inline-
|
|
63
|
-
max-height:
|
|
64
|
+
display: inline-grid;
|
|
65
|
+
max-height: 350px;
|
|
64
66
|
border: solid 5px transparent;
|
|
65
67
|
overflow: hidden;
|
|
66
68
|
cursor: pointer;
|
|
69
|
+
grid-template-columns: auto 1fr;
|
|
70
|
+
grid-template-rows: auto 1fr;
|
|
71
|
+
position: relative;
|
|
72
|
+
|
|
73
|
+
& > [data-selector=checkbox] {
|
|
74
|
+
grid-row: 1;
|
|
75
|
+
grid-column: 1;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
& > .file-name {
|
|
79
|
+
grid-row: 1;
|
|
80
|
+
grid-column: 2;
|
|
81
|
+
overflow: hidden;
|
|
82
|
+
white-space: nowrap;
|
|
83
|
+
text-overflow: ellipsis;
|
|
84
|
+
position: absolute;
|
|
85
|
+
left: 0;
|
|
86
|
+
top: 5px;
|
|
87
|
+
width: 100%;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
& > .file-preview {
|
|
91
|
+
grid-row: 2;
|
|
92
|
+
grid-column: 1 / span 2;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
67
97
|
&:hover {
|
|
68
98
|
border-color: lightblue;
|
|
69
99
|
}
|
|
@@ -82,7 +112,7 @@ System.register(["tslib", "@web-atoms/web-controls/dist/mobile-app/MobileApp", "
|
|
|
82
112
|
this.search = "";
|
|
83
113
|
this.version = 1;
|
|
84
114
|
this.size = 700;
|
|
85
|
-
this.
|
|
115
|
+
this.selectedFiles = [];
|
|
86
116
|
}
|
|
87
117
|
init() {
|
|
88
118
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -129,8 +159,10 @@ System.register(["tslib", "@web-atoms/web-controls/dist/mobile-app/MobileApp", "
|
|
|
129
159
|
});
|
|
130
160
|
})
|
|
131
161
|
})), XNode.create(AtomRepeater, {
|
|
162
|
+
presenter: Bind.presenter(c => this.filesRepeater = c),
|
|
132
163
|
selectOnClick: true,
|
|
133
|
-
|
|
164
|
+
selectedItems: this.selectedFiles,
|
|
165
|
+
allowMultipleSelection: this.parameters.multiple,
|
|
134
166
|
header: true,
|
|
135
167
|
headerRenderer: item => XNode.create("div", {
|
|
136
168
|
"data-position": "sticky-top",
|
|
@@ -146,14 +178,22 @@ System.register(["tslib", "@web-atoms/web-controls/dist/mobile-app/MobileApp", "
|
|
|
146
178
|
})),
|
|
147
179
|
itemRenderer: item => XNode.create("div", {
|
|
148
180
|
class: "media-file"
|
|
149
|
-
}, XNode.create("
|
|
181
|
+
}, this.parameters.multiple && XNode.create(SelectorCheckBox, null), XNode.create("label", {
|
|
182
|
+
class: "file-name",
|
|
183
|
+
title: item.name,
|
|
184
|
+
text: item.name
|
|
185
|
+
}), XNode.create("img", {
|
|
186
|
+
class: "file-preview",
|
|
150
187
|
src: apiPath(`/api/files/webp(300)/${item.appFileID}/${item.fileContentID}/${item.name}.300.webp`)
|
|
151
188
|
}))
|
|
152
189
|
})));
|
|
153
190
|
this.footerRenderer = () => XNode.create("div", {
|
|
154
|
-
"style-display": Bind.oneWay(() => this.
|
|
191
|
+
"style-display": Bind.oneWay(() => this.selectedFiles.length > 0),
|
|
155
192
|
"data-layout": "row"
|
|
156
|
-
}, XNode.create(
|
|
193
|
+
}, XNode.create(SelectAll, {
|
|
194
|
+
items: Bind.oneWay(() => this.filesRepeater.items),
|
|
195
|
+
selectedItems: this.selectedFiles
|
|
196
|
+
}), XNode.create("input", {
|
|
157
197
|
type: "range",
|
|
158
198
|
min: "100",
|
|
159
199
|
max: "2000",
|
|
@@ -169,12 +209,11 @@ System.register(["tslib", "@web-atoms/web-controls/dist/mobile-app/MobileApp", "
|
|
|
169
209
|
}
|
|
170
210
|
selectFile() {
|
|
171
211
|
return __awaiter(this, void 0, void 0, function* () {
|
|
172
|
-
const file = this.selectedFile;
|
|
173
212
|
const size = this.size;
|
|
174
|
-
return {
|
|
213
|
+
return this.selectedFiles.map(file => ({
|
|
175
214
|
file,
|
|
176
215
|
size
|
|
177
|
-
};
|
|
216
|
+
}));
|
|
178
217
|
});
|
|
179
218
|
}
|
|
180
219
|
onFilesUploaded() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ChooseMediaPage","css","_export","setters","_tslib","PopupWindowPage","_webAtomsWebControlsDistMobileAppMobileApp","_webAtomsCoreDistCoreXNode","XNode","default","_commonControlsTreeFileTreeView","FolderTreeView","_webAtomsWebControlsDistBasicAtomRepeater","AtomRepeater","_webAtomsCoreDistCoreBind","Bind","_webAtomsCoreDistCoreInjectProperty","InjectProperty","_serviceCloudFileService","CloudFileService","_webAtomsCoreDistStyleStyled","styled","_commonControlsDragDropFilesDragDrop","FilesDragDrop","_webAtomsCoreDistViewModelAction","Action","_webAtomsWebControlsDistBasicUploadEvent","UploadEvent","_commonControlsButtonsIconButton","SaveIconTextButton","_commonApiPath","apiPath","execute","installLocal","constructor","search","version","size","
|
|
1
|
+
{"version":3,"names":["ChooseMediaPage","css","_export","setters","_tslib","PopupWindowPage","_webAtomsWebControlsDistMobileAppMobileApp","_webAtomsCoreDistCoreXNode","XNode","default","_commonControlsTreeFileTreeView","FolderTreeView","_webAtomsWebControlsDistBasicAtomRepeater","AtomRepeater","SelectAll","SelectorCheckBox","_webAtomsCoreDistCoreBind","Bind","_webAtomsCoreDistCoreInjectProperty","InjectProperty","_serviceCloudFileService","CloudFileService","_webAtomsCoreDistStyleStyled","styled","_commonControlsDragDropFilesDragDrop","FilesDragDrop","_webAtomsCoreDistViewModelAction","Action","_webAtomsWebControlsDistBasicUploadEvent","UploadEvent","_commonControlsButtonsIconButton","SaveIconTextButton","_commonApiPath","apiPath","execute","installLocal","constructor","search","version","size","selectedFiles","init","title","accept","parameters","selectedFolder","folder","element","style","minWidth","minHeight","renderer","create","class","folderId","appFileID","selectedItem","twoWaysImmediate","type","value","Object","assign","AttachUploadAction","multiple","extra","oneWay","_a","JSON","stringify","parentID","presenter","c","filesRepeater","selectOnClick","selectedItems","allowMultipleSelection","header","headerRenderer","item","items","oneWayAsync","e","cancelToken","cloudFileService","files","showFolder","itemRenderer","name","text","src","fileContentID","footerRenderer","length","min","max","step","selectFile","map","file","onFilesUploaded","__decorate","onEvent","close"],"sources":["../../../../../src/web/page/files/media/ChooseMediaPage.tsx"],"sourcesContent":[null],"mappings":";;;6OAqFqBA,eAAgB,EAAAC,GAAA;EAAAC,OAAA;EAAA;IAAAC,OAAA,aAAAC,MAAA;;;;;MArF5BC,eAAe,GAAAC,0CAAA,CAAfD,eAAe;IAAA,aAAAE,0BAAA;MAEjBC,KAAK,GAAAD,0BAAA,CAAAE,OAAA;IAAA,aAAAC,+BAAA;MACHC,cAAc,GAAAD,+BAAA,CAAdC,cAAc;IAAA,aAAAC,yCAAA;MAChBC,YAAY,GAAAD,yCAAA,CAAAH,OAAA;MAAIK,SAAS,GAAAF,yCAAA,CAATE,SAAS;MAAEC,gBAAgB,GAAAH,yCAAA,CAAhBG,gBAAgB;IAAA,aAAAC,yBAAA;MAC3CC,IAAI,GAAAD,yBAAA,CAAAP,OAAA;IAAA,aAAAS,mCAAA;MACJC,cAAc,GAAAD,mCAAA,CAAAT,OAAA;IAAA,aAAAW,wBAAA;MACdC,gBAAgB,GAAAD,wBAAA,CAAAX,OAAA;IAAA,aAAAa,4BAAA;MAChBC,MAAM,GAAAD,4BAAA,CAAAb,OAAA;IAAA,aAAAe,oCAAA;MACJC,aAAa,GAAAD,oCAAA,CAAbC,aAAa;IAAA,aAAAC,gCAAA;MACfC,MAAM,GAAAD,gCAAA,CAAAjB,OAAA;IAAA,aAAAmB,wCAAA;MACNC,WAAW,GAAAD,wCAAA,CAAAnB,OAAA;IAAA,aAAAqB,gCAAA;MACTC,kBAAkB,GAAAD,gCAAA,CAAlBC,kBAAkB;IAAA,aAAAC,cAAA;MAClBC,OAAO,GAAAD,cAAA,CAAPC,OAAO;IAAA;IAAAC,OAAA,WAAAA,CAAA;MAGVjC,GAAG,GAAGsB,MAAM,CAACtB,GAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmEtB,CAACkC,YAAY,EAAE;MAAAjC,OAAA,YAEKF,eAAgB,GAAvB,MAAOA,eAAgB,SAAQK,eAGxC;QAHL+B,YAAA;;UAYY,KAAAC,MAAM,GAAG,EAAE;UAEX,KAAAC,OAAO,GAAG,CAAC;UAEX,KAAAC,IAAI,GAAG,GAAG;UAEV,KAAAC,aAAa,GAAe,EAAE;QAsG1C;QAlGUC,IAAIA,CAAA;;YACN,IAAI,CAACC,KAAK,GAAG,cAAc;YAE3B,MAAM;cAAEC,MAAM,GAAG;YAA2B,CAAE,GAAG,IAAI,CAACC,UAAU;YAEhE,IAAI,CAACC,cAAc,GAAG,IAAI,CAACD,UAAU,CAACE,MAAM;YAE5C,IAAI,CAACC,OAAO,CAACC,KAAK,CAACC,QAAQ,GAAG,KAAK;YACnC,IAAI,CAACF,OAAO,CAACC,KAAK,CAACE,SAAS,GAAG,KAAK;YAEpC,IAAI,CAACC,QAAQ,GAAG3C,KAAA,CAAA4C,MAAA;cAAKC,KAAK,EAAEpD;YAAG,GAC3BO,KAAA,CAAA4C,MAAA,CAACzC,cAAc;cACX0C,KAAK,EAAC,aAAa;cACnBV,MAAM,EAAEA,MAAM;cACdW,QAAQ,EAAE,IAAI,CAACV,UAAU,CAACE,MAAM,CAACS,SAAS;cAC1CC,YAAY,EAAEvC,IAAI,CAACwC,gBAAgB,CAAC,MAAM,IAAI,CAACZ,cAAc;YAAC,EAC5D,EACNrC,KAAA,CAAA4C,MAAA;cAAKC,KAAK,EAAC,QAAQ;cAAA,eAAa;YAAK,GACjC7C,KAAA,CAAA4C,MAAA;cAAOM,IAAI,EAAC,QAAQ;cAACC,KAAK,EAAE1C,IAAI,CAACwC,gBAAgB,CAAC,MAAM,IAAI,CAACpB,MAAM;YAAC,EAAG,EACvE7B,KAAA,CAAA4C,MAAA,WAAAQ,MAAA,CAAAC,MAAA;cAAA,eACgB;YAAoB,GAC1BhC,WAAW,CAACiC,kBAAkB,CAAC;cACjCC,QAAQ,EAAE,IAAI;cACdC,KAAK,EAAE/C,IAAI,CAACgD,MAAM,CAAC,MAAK;gBAAA,IAAAC,EAAA;gBAAC,OAAAC,IAAI,CAACC,SAAS,CAAC;kBAAEC,QAAQ,EAAE,CAAAH,EAAA,OAAI,CAACrB,cAAc,cAAAqB,EAAA,uBAAAA,EAAA,CAAEX;gBAAS,CAAC,CAAC;cAAA,EAAC;cACrFZ;aACH,CAAC,GACFnC,KAAA,CAAA4C,MAAA;cAAGC,KAAK,EAAC;YAAe,EAAE,E,SAErB,CACP,EACN7C,KAAA,CAAA4C,MAAA,QAAAQ,MAAA,CAAAC,MAAA;cACIR,KAAK,EAAC;YAAW,GACX5B,aAAa,CAAC;cAChBuC,KAAK,EAAE/C,IAAI,CAACgD,MAAM,CAAC,MAAK;gBAAA,IAAAC,EAAA;gBAAC,OAAAC,IAAI,CAACC,SAAS,CAAC;kBAAEC,QAAQ,EAAE,CAAAH,EAAA,OAAI,CAACrB,cAAc,cAAAqB,EAAA,uBAAAA,EAAA,CAAEX;gBAAS,CAAC,CAAC;cAAA;aACvF,CAAC,GAEF/C,KAAA,CAAA4C,MAAA,CAACvC,YAAY;cACTyD,SAAS,EAAErD,IAAI,CAACqD,SAAS,CAAEC,CAAC,IAAK,IAAI,CAACC,aAAa,GAAGD,CAAC,CAAC;cACxDE,aAAa,EAAE,IAAI;cACnBC,aAAa,EAAE,IAAI,CAAClC,aAAa;cACjCmC,sBAAsB,EAAE,IAAI,CAAC/B,UAAU,CAACmB,QAAQ;cAChDa,MAAM,EAAE,IAAI;cACZC,cAAc,EAAGC,IAAI,IAAKtE,KAAA,CAAA4C,MAAA;gBAAA,iBACR,YAAY;gBAAA,eACd;cAAY,EACtB;cACN2B,KAAK,EAAE9D,IAAI,CAAC+D,WAAW,CAAC,CAACT,CAAC,EAAEU,CAAC,EAAEC,WAAW,KACtC,IAAI,CAACC,gBAAgB,CAACC,KAAK,CAAC;gBACxB/C,MAAM,EAAE,IAAI,CAACA,MAAM;gBACnBS,MAAM,EAAE,IAAI,CAACD,cAAc;gBAC3BP,OAAO,EAAE,IAAI,CAACA,OAAO;gBACrB+C,UAAU,EAAE,KAAK;gBACjB1C,MAAM;gBACNuC;eACH,CAAC,CACL;cACDI,YAAY,EAAGR,IAAc,IAAKtE,KAAA,CAAA4C,MAAA;gBAAKC,KAAK,EAAC;cAAY,GACnD,IAAI,CAACT,UAAU,CAACmB,QAAQ,IAAIvD,KAAA,CAAA4C,MAAA,CAACrC,gBAAgB,OAAE,EACjDP,KAAA,CAAA4C,MAAA;gBAAOC,KAAK,EAAC,WAAW;gBAACX,KAAK,EAAEoC,IAAI,CAACS,IAAI;gBAAEC,IAAI,EAAEV,IAAI,CAACS;cAAI,EAAG,EAC7D/E,KAAA,CAAA4C,MAAA;gBACIC,KAAK,EAAC,cAAc;gBACpBoC,GAAG,EAAGxD,OAAO,CAAC,wBAAwB6C,IAAI,CAACvB,SAAS,IAAIuB,IAAI,CAACY,aAAa,IAAIZ,IAAI,CAACS,IAAI,WAAW;cAAC,EAAI;YACzG,EACJ,CACJ,CACJ;YAEN,IAAI,CAACI,cAAc,GAAG,MAClBnF,KAAA,CAAA4C,MAAA;cAAA,iBACmBnC,IAAI,CAACgD,MAAM,CAAC,MAAM,IAAI,CAACzB,aAAa,CAACoD,MAAM,GAAG,CAAC,CAAC;cAAA,eACnD;YAAK,GAEjBpF,KAAA,CAAA4C,MAAA,CAACtC,SAAS;cACNiE,KAAK,EAAE9D,IAAI,CAACgD,MAAM,CAAC,MAAM,IAAI,CAACO,aAAa,CAACO,KAAK,CAAC;cAClDL,aAAa,EAAE,IAAI,CAAClC;YAAa,EAC/B,EAENhC,KAAA,CAAA4C,MAAA;cAAOM,IAAI,EAAC,OAAO;cAACmC,GAAG,EAAC,KAAK;cAACC,GAAG,EAAC,MAAM;cAACC,IAAI,EAAC,KAAK;cAACpC,KAAK,EAAE1C,IAAI,CAACwC,gBAAgB,CAAC,MAAM,IAAI,CAAClB,IAAI;YAAC,EAAI,EACrG/B,KAAA,CAAA4C,MAAA;cAAMoC,IAAI,EAAEvE,IAAI,CAACgD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC1B,IAAI,IAAI;YAAC,EAAG,EAClD/B,KAAA,CAAA4C,MAAA,CAACrB,kBAAkB;cAAA,oBACE,aAAa;cAC9ByD,IAAI,EAAC;YAAQ,EACX,CACJ;UAEd,CAAC;;QAGKQ,UAAUA,CAAA;;YACZ,MAAMzD,IAAI,GAAG,IAAI,CAACA,IAAI;YACtB,OAAO,IAAI,CAACC,aAAa,CAACyD,GAAG,CAAEC,IAAI,KAAM;cAAEA,IAAI;cAAE3D;YAAI,CAAE,CAAC,CAAC;UAC7D,CAAC;;QAGK4D,eAAeA,CAAA;;YACjB,IAAI,CAAC7D,OAAO,EAAE;UAClB,CAAC;;OAEJ;MA/GG8D,UAAA,EAACjF,cAAc,E,0BACWE,gBAAgB,E,wDAAC;MAoGrC+E,UAAA,EADLzE,MAAM,CAAC;QAAE0E,OAAO,EAAE,aAAa;QAAEC,KAAK,EAAE;MAAI,CAAE,CAAC,E,mKAI/C;MAGKF,UAAA,EADLzE,MAAM,CAAC;QAAE0E,OAAO,EAAE;MAAiB,CAAC,CAAC,E,wKAGrC;IAAA;EAAA;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@social-mail/social-mail-client",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.232",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "node --enable-source-maps ./test.mjs",
|
|
8
|
-
"postversion": "git push --follow-tags"
|
|
8
|
+
"postversion": "git push --follow-tags",
|
|
9
|
+
"push": "git add -A && git commit -m \"dep vb\" && npm version patch"
|
|
9
10
|
},
|
|
10
11
|
"author": "",
|
|
11
12
|
"license": "ISC",
|
|
@@ -104,7 +104,7 @@ export default class GrapesJSEditor extends AtomControl {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
async selectFile(accept = "image/*, video/*") {
|
|
107
|
-
const { file, size } = await PageNavigator.pushPageForResult(ChooseMediaPage, { folder: this.folder, accept });
|
|
107
|
+
const [{ file, size }] = await PageNavigator.pushPageForResult(ChooseMediaPage, { folder: this.folder, accept });
|
|
108
108
|
const src = `/api/site/asset/jpg(${size})/${this.folder.appFileID}/${file.appFileID}/${file.fileContentID}/${file.name}.${size}.jpg`;
|
|
109
109
|
return {
|
|
110
110
|
extend: "image",
|
|
@@ -43,7 +43,7 @@ export default class MailboxService {
|
|
|
43
43
|
const all = await this.entityService.query(UserPushSubscription)
|
|
44
44
|
.where({ ids, userID }, (p) =>
|
|
45
45
|
(x) => x.userID === p.userID
|
|
46
|
-
&&
|
|
46
|
+
&& x.mailboxID in p.ids
|
|
47
47
|
&& x.emailAddressID === null)
|
|
48
48
|
.toArray();
|
|
49
49
|
const map = new Map(all.map((x) => [x.mailboxID, x]));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "../../style/GlobalStyle";
|
|
2
|
+
import Pack from "@web-atoms/core/dist/Pack";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
const url = new URL(location.href);
|
|
6
|
+
(window as any).pageUrl = url;
|
|
7
|
+
const { default: view } = await (/\/store\/\d+/.test(url.pathname) || url.searchParams.has("detail")
|
|
8
|
+
? import("./StoreItemDetailView")
|
|
9
|
+
: import("./StoreItemListView")) as any;
|
|
10
|
+
|
|
11
|
+
@Pack
|
|
12
|
+
export default class Empty extends view {
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AtomControl } from "@web-atoms/core/dist/web/controls/AtomControl";
|
|
2
|
+
|
|
3
|
+
const url = (window as any).pageUrl as URL;
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
let {1: storeID = "1", 2: itemID = "2a" } = /^\/channels\/([^\/]+)\/([^\/]+)\//.exec(url?.pathname) ?? {} as any;
|
|
7
|
+
|
|
8
|
+
storeID = parseInt(storeID, 36);
|
|
9
|
+
itemID = parseInt(itemID, 36);
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export default class StoreItemDetailView extends AtomControl {
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
}
|
|
@@ -1,5 +1,116 @@
|
|
|
1
|
+
import Bind from "@web-atoms/core/dist/core/Bind";
|
|
2
|
+
import XNode from "@web-atoms/core/dist/core/XNode";
|
|
3
|
+
import styled from "@web-atoms/core/dist/style/styled";
|
|
1
4
|
import { AtomControl } from "@web-atoms/core/dist/web/controls/AtomControl";
|
|
5
|
+
import AtomRepeater from "@web-atoms/web-controls/dist/basic/AtomRepeater";
|
|
6
|
+
import InfiniteRepeater from "../../common/controls/repeater/InfiniteRepeater";
|
|
7
|
+
import InjectProperty from "@web-atoms/core/dist/core/InjectProperty";
|
|
8
|
+
import EntityService from "../../services/EntityService";
|
|
9
|
+
import { IStoreItem, StoreItem } from "../../model/model";
|
|
10
|
+
import { Sql } from "../../common/Sql";
|
|
11
|
+
|
|
12
|
+
styled.css `
|
|
13
|
+
|
|
14
|
+
display:grid;
|
|
15
|
+
grid-template-rows: auto 1fr auto;
|
|
16
|
+
|
|
17
|
+
& > header {
|
|
18
|
+
grid-row:1;
|
|
19
|
+
padding: 10px;
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-wrap: wrap;
|
|
22
|
+
|
|
23
|
+
gap: 10px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
& > section {
|
|
27
|
+
grid-row: 2;
|
|
28
|
+
padding: 10px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
& > footer {
|
|
32
|
+
grid-row: 3;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
`.installGlobal("[data-shopping-cart-list=shopping-cart-list]");
|
|
36
|
+
|
|
2
37
|
|
|
3
38
|
export default class StoreItemListView extends AtomControl {
|
|
4
|
-
|
|
39
|
+
|
|
40
|
+
search = "";
|
|
41
|
+
|
|
42
|
+
items: IStoreItem[] = [];
|
|
43
|
+
|
|
44
|
+
@InjectProperty
|
|
45
|
+
entityService: EntityService;
|
|
46
|
+
|
|
47
|
+
constructor(app, e) {
|
|
48
|
+
super(app, e);
|
|
49
|
+
this.element.setAttribute("data-shopping-cart-list", "shopping-cart-list");
|
|
50
|
+
this.runAfterInit(() => this.app.runAsync(() => this.init()));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async init() {
|
|
54
|
+
|
|
55
|
+
this.render(<div>
|
|
56
|
+
<header>
|
|
57
|
+
<input type="search" value={Bind.twoWaysImmediate(() => this.search)}/>
|
|
58
|
+
</header>
|
|
59
|
+
<AtomRepeater
|
|
60
|
+
for="section"
|
|
61
|
+
items={this.items}
|
|
62
|
+
{ ... InfiniteRepeater.pagedItems((start) =>
|
|
63
|
+
(c, e, cancelToken) =>
|
|
64
|
+
this.searchItems({
|
|
65
|
+
start,
|
|
66
|
+
search: this.search,
|
|
67
|
+
cancelToken
|
|
68
|
+
})
|
|
69
|
+
)}
|
|
70
|
+
itemRenderer={(item: IStoreItem) => <div>
|
|
71
|
+
<label text={item.name}/>
|
|
72
|
+
</div>}
|
|
73
|
+
/>
|
|
74
|
+
<footer>
|
|
75
|
+
</footer>
|
|
76
|
+
</div>);
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
async searchItems({
|
|
82
|
+
start,
|
|
83
|
+
search,
|
|
84
|
+
size = 50,
|
|
85
|
+
cancelToken
|
|
86
|
+
}) {
|
|
87
|
+
let q = this.entityService.query(StoreItem, "storeQuery")
|
|
88
|
+
.where((x) =>
|
|
89
|
+
x.itemType in [ "product", "service", "resource"]
|
|
90
|
+
&& x.sizeForID === null
|
|
91
|
+
&& x.variantForID === null
|
|
92
|
+
);
|
|
93
|
+
if (search) {
|
|
94
|
+
search = search + "%";
|
|
95
|
+
q = q.where({ search }, (p) => (x) =>
|
|
96
|
+
(Sql.text.iLike(x.name, p.search)
|
|
97
|
+
|| Sql.text.iLike(x.description, p.search)
|
|
98
|
+
|| x.sizes.some((s) => Sql.text.iLike(s.name, p.search) || Sql.text.iLike(s.description, p.search))
|
|
99
|
+
|| x.variants.some((s) => Sql.text.iLike(s.name, p.search) || Sql.text.iLike(s.description, p.search))
|
|
100
|
+
)
|
|
101
|
+
&& x.sizeForID === null
|
|
102
|
+
&& x.variantForID === null
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
return q.orderByDescending((x) => x.storeItemID)
|
|
106
|
+
.include((x) => [
|
|
107
|
+
x.storeItemPrices,
|
|
108
|
+
x.storeItemTags.forEach((t) => t.tag)
|
|
109
|
+
])
|
|
110
|
+
.toPagedList({
|
|
111
|
+
start,
|
|
112
|
+
size,
|
|
113
|
+
cancelToken
|
|
114
|
+
});
|
|
115
|
+
}
|
|
5
116
|
}
|
|
@@ -494,37 +494,39 @@ export default class HtmlPageEditor extends AtomControl {
|
|
|
494
494
|
}
|
|
495
495
|
}
|
|
496
496
|
|
|
497
|
-
async insertImage(
|
|
498
|
-
let img: HTMLImageElement;
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
img.src = src;
|
|
497
|
+
async insertImage( ... images: { src: string, style?: { [key: string]: string} , [key: string]: any }[]) {
|
|
498
|
+
let img: HTMLImageElement = this.selection?.isImage ? this.selection.element : null as any;
|
|
499
|
+
const container = img ? img.parentElement : this.selection.element;
|
|
500
|
+
for (const { src, style, ... a} of images) {
|
|
501
|
+
if(!img) {
|
|
502
|
+
img = this.htmlDocument.createElement("img");
|
|
503
|
+
container.appendChild(img);
|
|
504
|
+
container.appendChild(document.createTextNode("\n"));
|
|
505
|
+
}
|
|
508
506
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
img.onload =
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
507
|
+
img.src = src;
|
|
508
|
+
const i = img;
|
|
509
|
+
img.onload = () => {
|
|
510
|
+
this.selection.update();
|
|
511
|
+
i.onload = null;
|
|
512
|
+
};
|
|
513
|
+
if (style) {
|
|
514
|
+
for (const key in style) {
|
|
515
|
+
if (Object.prototype.hasOwnProperty.call(style, key)) {
|
|
516
|
+
const element = style[key];
|
|
517
|
+
img.style[key] = element;
|
|
518
|
+
}
|
|
518
519
|
}
|
|
519
520
|
}
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
521
|
+
if (a) {
|
|
522
|
+
for (const key in a) {
|
|
523
|
+
if (Object.prototype.hasOwnProperty.call(a, key)) {
|
|
524
|
+
const element = a[key];
|
|
525
|
+
img.setAttribute(key, element);
|
|
526
|
+
}
|
|
526
527
|
}
|
|
527
528
|
}
|
|
529
|
+
img = null;
|
|
528
530
|
}
|
|
529
531
|
this.commit();
|
|
530
532
|
}
|
|
@@ -21,13 +21,17 @@ export default class WebSitePageEditor extends HtmlPageEditor {
|
|
|
21
21
|
private cloudFileService: CloudFileService;
|
|
22
22
|
|
|
23
23
|
async changeImage() {
|
|
24
|
-
const { file, size } = await PageNavigator.pushPageForResult(ChooseMediaPage, {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
src,
|
|
29
|
-
srcset
|
|
24
|
+
const files: { file: IAppFile, size: number}[] = await PageNavigator.pushPageForResult(ChooseMediaPage, {
|
|
25
|
+
folder: this.folder,
|
|
26
|
+
accept: "image/*",
|
|
27
|
+
multiple: true
|
|
30
28
|
});
|
|
29
|
+
const images = files.map(({ file, size}) => {
|
|
30
|
+
const src = imageUrl(this.folder, file, size);
|
|
31
|
+
const srcset = srcSetUrl(this.folder, file);
|
|
32
|
+
return { src, srcset };
|
|
33
|
+
});
|
|
34
|
+
await this.insertImage( ... images);
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
@Action({ onEvent: "open-variables"})
|
|
@@ -70,7 +74,7 @@ export default class WebSitePageEditor extends HtmlPageEditor {
|
|
|
70
74
|
script.setAttribute("defer", "true");
|
|
71
75
|
this.htmlDocument.head.appendChild(script);
|
|
72
76
|
}
|
|
73
|
-
script.setAttribute("src", "//cdn.jsdelivr.net/npm/@social-mail/web-components@1.0.
|
|
77
|
+
script.setAttribute("src", "//cdn.jsdelivr.net/npm/@social-mail/web-components@1.0.44/dist/components.webpack.js");
|
|
74
78
|
}
|
|
75
79
|
|
|
76
80
|
|
|
@@ -2,7 +2,7 @@ import { PopupWindowPage } from "@web-atoms/web-controls/dist/mobile-app/MobileA
|
|
|
2
2
|
import { IAppFile } from "../../../../model/model";
|
|
3
3
|
import XNode from "@web-atoms/core/dist/core/XNode";
|
|
4
4
|
import { FolderTreeView } from "../../../../common/controls/tree/FileTreeView";
|
|
5
|
-
import AtomRepeater from "@web-atoms/web-controls/dist/basic/AtomRepeater";
|
|
5
|
+
import AtomRepeater, { SelectAll, SelectorCheckBox } from "@web-atoms/web-controls/dist/basic/AtomRepeater";
|
|
6
6
|
import Bind from "@web-atoms/core/dist/core/Bind";
|
|
7
7
|
import InjectProperty from "@web-atoms/core/dist/core/InjectProperty";
|
|
8
8
|
import CloudFileService from "../service/CloudFileService";
|
|
@@ -37,11 +37,39 @@ const css = styled.css `
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
& .media-file {
|
|
40
|
-
display: inline-
|
|
41
|
-
max-height:
|
|
40
|
+
display: inline-grid;
|
|
41
|
+
max-height: 350px;
|
|
42
42
|
border: solid 5px transparent;
|
|
43
43
|
overflow: hidden;
|
|
44
44
|
cursor: pointer;
|
|
45
|
+
grid-template-columns: auto 1fr;
|
|
46
|
+
grid-template-rows: auto 1fr;
|
|
47
|
+
position: relative;
|
|
48
|
+
|
|
49
|
+
& > [data-selector=checkbox] {
|
|
50
|
+
grid-row: 1;
|
|
51
|
+
grid-column: 1;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
& > .file-name {
|
|
55
|
+
grid-row: 1;
|
|
56
|
+
grid-column: 2;
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
white-space: nowrap;
|
|
59
|
+
text-overflow: ellipsis;
|
|
60
|
+
position: absolute;
|
|
61
|
+
left: 0;
|
|
62
|
+
top: 5px;
|
|
63
|
+
width: 100%;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
& > .file-preview {
|
|
67
|
+
grid-row: 2;
|
|
68
|
+
grid-column: 1 / span 2;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
45
73
|
&:hover {
|
|
46
74
|
border-color: lightblue;
|
|
47
75
|
}
|
|
@@ -55,7 +83,10 @@ const css = styled.css `
|
|
|
55
83
|
}
|
|
56
84
|
`.installLocal();
|
|
57
85
|
|
|
58
|
-
export default class ChooseMediaPage extends PopupWindowPage<
|
|
86
|
+
export default class ChooseMediaPage extends PopupWindowPage<
|
|
87
|
+
{folder: IAppFile, accept: string},
|
|
88
|
+
{ file: IAppFile, size: number }[]
|
|
89
|
+
> {
|
|
59
90
|
|
|
60
91
|
public parameters;
|
|
61
92
|
|
|
@@ -70,7 +101,9 @@ export default class ChooseMediaPage extends PopupWindowPage<{folder: IAppFile,
|
|
|
70
101
|
|
|
71
102
|
private size = 700;
|
|
72
103
|
|
|
73
|
-
private
|
|
104
|
+
private selectedFiles: IAppFile[] = [];
|
|
105
|
+
|
|
106
|
+
private filesRepeater: AtomRepeater;
|
|
74
107
|
|
|
75
108
|
async init() {
|
|
76
109
|
this.title = "Choose Media";
|
|
@@ -109,8 +142,10 @@ export default class ChooseMediaPage extends PopupWindowPage<{folder: IAppFile,
|
|
|
109
142
|
})}
|
|
110
143
|
>
|
|
111
144
|
<AtomRepeater
|
|
145
|
+
presenter={Bind.presenter((c) => this.filesRepeater = c)}
|
|
112
146
|
selectOnClick={true}
|
|
113
|
-
|
|
147
|
+
selectedItems={this.selectedFiles}
|
|
148
|
+
allowMultipleSelection={this.parameters.multiple}
|
|
114
149
|
header={true}
|
|
115
150
|
headerRenderer={(item) => <div
|
|
116
151
|
data-position="sticky-top"
|
|
@@ -127,7 +162,11 @@ export default class ChooseMediaPage extends PopupWindowPage<{folder: IAppFile,
|
|
|
127
162
|
})
|
|
128
163
|
)}
|
|
129
164
|
itemRenderer={(item: IAppFile) => <div class="media-file">
|
|
130
|
-
|
|
165
|
+
{ this.parameters.multiple && <SelectorCheckBox/>}
|
|
166
|
+
<label class="file-name" title={item.name} text={item.name}/>
|
|
167
|
+
<img
|
|
168
|
+
class="file-preview"
|
|
169
|
+
src={ apiPath(`/api/files/webp(300)/${item.appFileID}/${item.fileContentID}/${item.name}.300.webp`)} />
|
|
131
170
|
</div>}
|
|
132
171
|
/>
|
|
133
172
|
</div>
|
|
@@ -135,8 +174,14 @@ export default class ChooseMediaPage extends PopupWindowPage<{folder: IAppFile,
|
|
|
135
174
|
|
|
136
175
|
this.footerRenderer = () =>
|
|
137
176
|
<div
|
|
138
|
-
style-display={Bind.oneWay(() => this.
|
|
177
|
+
style-display={Bind.oneWay(() => this.selectedFiles.length > 0)}
|
|
139
178
|
data-layout="row">
|
|
179
|
+
|
|
180
|
+
<SelectAll
|
|
181
|
+
items={Bind.oneWay(() => this.filesRepeater.items)}
|
|
182
|
+
selectedItems={this.selectedFiles}
|
|
183
|
+
/>
|
|
184
|
+
|
|
140
185
|
<input type="range" min="100" max="2000" step="100" value={Bind.twoWaysImmediate(() => this.size)} />
|
|
141
186
|
<span text={Bind.oneWay(() => `${this.size}px`)}/>
|
|
142
187
|
<SaveIconTextButton
|
|
@@ -149,9 +194,8 @@ export default class ChooseMediaPage extends PopupWindowPage<{folder: IAppFile,
|
|
|
149
194
|
|
|
150
195
|
@Action({ onEvent: "select-file", close: true })
|
|
151
196
|
async selectFile() {
|
|
152
|
-
const file = this.selectedFile;
|
|
153
197
|
const size = this.size;
|
|
154
|
-
return { file, size };
|
|
198
|
+
return this.selectedFiles.map((file) => ({ file, size }));
|
|
155
199
|
}
|
|
156
200
|
|
|
157
201
|
@Action({ onEvent: "files-available"})
|