underpost 2.8.847 → 2.8.848
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/README.md +10 -2
- package/cli.md +2 -2
- package/conf.js +1 -1
- package/docker-compose.yml +1 -1
- package/manifests/deployment/dd-template-development/deployment.yaml +2 -2
- package/package.json +1 -1
- package/src/api/user/user.service.js +1 -4
- package/src/cli/run.js +7 -0
- package/src/client/Default.index.js +6 -2
- package/src/client/components/core/Account.js +1 -1
- package/src/client/components/core/Css.js +190 -14
- package/src/client/components/core/CssCore.js +1 -1
- package/src/client/components/core/Docs.js +4 -4
- package/src/client/components/core/LoadingAnimation.js +8 -15
- package/src/client/components/core/Modal.js +16 -8
- package/src/client/components/core/PanelForm.js +2 -3
- package/src/client/components/core/Router.js +22 -23
- package/src/client/components/core/SocketIo.js +3 -3
- package/src/client/components/core/VanillaJs.js +0 -3
- package/src/client/components/core/Worker.js +3 -1
- package/src/client/components/default/CssDefault.js +17 -3
- package/src/client/components/default/MenuDefault.js +241 -48
- package/src/client/components/default/RoutesDefault.js +6 -11
- package/src/client/public/default/assets/background/dark.jpg +0 -0
- package/src/client/public/default/assets/background/dark.svg +557 -0
- package/src/client/public/default/assets/logo/underpost.gif +0 -0
- package/src/index.js +1 -1
- package/src/server/client-build.js +1 -8
|
@@ -6,28 +6,29 @@ import { Worker } from './Worker.js';
|
|
|
6
6
|
|
|
7
7
|
// Router
|
|
8
8
|
|
|
9
|
+
const RouterEvents = {};
|
|
10
|
+
const closeModalRouteChangeEvents = {};
|
|
11
|
+
|
|
9
12
|
const logger = loggerFactory(import.meta);
|
|
10
13
|
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
14
|
+
const sanitizeRoute = (route) =>
|
|
15
|
+
!route || route === '/' || route === `\\`
|
|
16
|
+
? 'home'
|
|
17
|
+
: route.toLowerCase().replaceAll('/', '').replaceAll(`\\`, '').replaceAll(' ', '-');
|
|
18
|
+
|
|
19
|
+
const setDocTitle = (route) => {
|
|
20
|
+
const _route = sanitizeRoute(route);
|
|
21
|
+
// logger.warn('setDocTitle', _route);
|
|
22
|
+
const title = titleFormatted(_route);
|
|
23
|
+
htmls('title', html`${title}${title.match(Worker.title.toLowerCase()) ? '' : ` | ${Worker.title}`}`);
|
|
24
|
+
if (s(`.main-btn-${_route}`)) {
|
|
25
|
+
if (s(`.main-btn-menu-active`)) s(`.main-btn-menu-active`).classList.remove(`main-btn-menu-active`);
|
|
26
|
+
if (s(`.main-btn-${_route}`)) s(`.main-btn-${_route}`).classList.add(`main-btn-menu-active`);
|
|
24
27
|
}
|
|
25
28
|
};
|
|
26
29
|
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
const Router = function (options = { Routes: () => {}, e: new PopStateEvent(), NameApp: '' }) {
|
|
30
|
-
const { e, Routes, NameApp } = options;
|
|
30
|
+
const Router = function (options = { Routes: () => {}, e: new PopStateEvent() }) {
|
|
31
|
+
const { e, Routes } = options;
|
|
31
32
|
const proxyPath = getProxyPath();
|
|
32
33
|
let path = window.location.pathname;
|
|
33
34
|
logger.info(options);
|
|
@@ -43,7 +44,7 @@ const Router = function (options = { Routes: () => {}, e: new PopStateEvent(), N
|
|
|
43
44
|
|
|
44
45
|
if (path === pushPath) {
|
|
45
46
|
for (const event of Object.keys(RouterEvents)) RouterEvents[event](routerEvent);
|
|
46
|
-
setDocTitle(
|
|
47
|
+
setDocTitle(route);
|
|
47
48
|
return Routes()[`/${route}`].render();
|
|
48
49
|
}
|
|
49
50
|
}
|
|
@@ -79,7 +80,6 @@ const listenQueryPathInstance = ({ id, routeId, event }, queryKey = 'cid') => {
|
|
|
79
80
|
});
|
|
80
81
|
};
|
|
81
82
|
|
|
82
|
-
const closeModalRouteChangeEvents = {};
|
|
83
83
|
const triggerCloseModalRouteChangeEvents = (newPath) => {
|
|
84
84
|
console.warn('[closeModalRouteChangeEvent]', newPath);
|
|
85
85
|
for (const event of Object.keys(closeModalRouteChangeEvents)) closeModalRouteChangeEvents[event](newPath);
|
|
@@ -99,14 +99,14 @@ const closeModalRouteChangeEvent = (options = {}) => {
|
|
|
99
99
|
newPath = `${newPath}${Modal.Data[subIdModal].options.route}`;
|
|
100
100
|
triggerCloseModalRouteChangeEvents(newPath);
|
|
101
101
|
setPath(newPath);
|
|
102
|
+
setDocTitle(newPath);
|
|
102
103
|
Modal.setTopModalCallback(subIdModal);
|
|
103
|
-
return setDocTitle({ ...RouterInstance, route: Modal.Data[subIdModal].options.route });
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
newPath = `${newPath}${homeCid ? `?cid=${homeCid}` : ''}`;
|
|
107
107
|
triggerCloseModalRouteChangeEvents(newPath);
|
|
108
108
|
setPath(newPath);
|
|
109
|
-
|
|
109
|
+
setDocTitle(newPath);
|
|
110
110
|
}
|
|
111
111
|
};
|
|
112
112
|
|
|
@@ -121,7 +121,7 @@ const handleModalViewRoute = (options = {}) => {
|
|
|
121
121
|
|
|
122
122
|
if (path !== newPath) {
|
|
123
123
|
setPath(newPath);
|
|
124
|
-
setDocTitle(
|
|
124
|
+
setDocTitle(newPath);
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
127
|
|
|
@@ -135,5 +135,4 @@ export {
|
|
|
135
135
|
closeModalRouteChangeEvent,
|
|
136
136
|
handleModalViewRoute,
|
|
137
137
|
closeModalRouteChangeEvents,
|
|
138
|
-
renderTitle,
|
|
139
138
|
};
|
|
@@ -21,11 +21,11 @@ const SocketIo = {
|
|
|
21
21
|
},
|
|
22
22
|
Init: async function (options) {
|
|
23
23
|
if (this.socket) this.socket.disconnect();
|
|
24
|
-
this.host = getWsBaseUrl({ wsBasePath: '' });
|
|
24
|
+
this.host = options.host ?? getWsBaseUrl({ wsBasePath: '' });
|
|
25
25
|
logger.info(`ws host:`, this.host);
|
|
26
|
-
const path = getWsBasePath();
|
|
26
|
+
const path = typeof options.path === 'string' ? options.path : getWsBasePath();
|
|
27
27
|
const connectOptions = {
|
|
28
|
-
path,
|
|
28
|
+
path: path === '/' ? undefined : path,
|
|
29
29
|
// auth: {
|
|
30
30
|
// token: '',
|
|
31
31
|
// },
|
|
@@ -31,8 +31,6 @@ VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=bierner
|
|
|
31
31
|
|
|
32
32
|
*/
|
|
33
33
|
|
|
34
|
-
// Docs by https://mintlify.com
|
|
35
|
-
|
|
36
34
|
/**
|
|
37
35
|
* Query selector.
|
|
38
36
|
*
|
|
@@ -355,7 +353,6 @@ const getBlobFromUint8ArrayFile = (data = [[]], mimetype = 'application/octet-st
|
|
|
355
353
|
* @memberof VanillaJS
|
|
356
354
|
*/
|
|
357
355
|
const getProxyPath = () => {
|
|
358
|
-
// warning: evaluates headers html source
|
|
359
356
|
let path = location.pathname.split('/')[1] ? `/${location.pathname.split('/')[1]}/` : '/';
|
|
360
357
|
if (window.Routes && path !== '/' && path.slice(0, -1) in window.Routes()) path = '/';
|
|
361
358
|
return path;
|
|
@@ -12,7 +12,8 @@ const logger = loggerFactory(import.meta);
|
|
|
12
12
|
const Worker = {
|
|
13
13
|
devMode: () => location.origin.match('localhost') || location.origin.match('127.0.0.1'),
|
|
14
14
|
instance: async function ({ router, render }) {
|
|
15
|
-
|
|
15
|
+
Worker.title = `${s('title').textContent}`;
|
|
16
|
+
// logger.warn('Init worker', Worker.title);
|
|
16
17
|
window.ononline = async () => {
|
|
17
18
|
logger.warn('ononline');
|
|
18
19
|
};
|
|
@@ -81,6 +82,7 @@ const Worker = {
|
|
|
81
82
|
}
|
|
82
83
|
window.serviceWorkerReady = true;
|
|
83
84
|
},
|
|
85
|
+
|
|
84
86
|
// Get the current service worker registration.
|
|
85
87
|
getRegistration: async function () {
|
|
86
88
|
return await navigator.serviceWorker.getRegistration();
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
+
import { subThemeManager } from '../core/Css.js';
|
|
2
|
+
|
|
3
|
+
const CssCommonDefault = async () => {
|
|
4
|
+
// use #4f46e5, #7c3aed);
|
|
5
|
+
subThemeManager.setDarkTheme('#7c3aed');
|
|
6
|
+
subThemeManager.setLightTheme('#7c3aed');
|
|
7
|
+
|
|
8
|
+
return html``;
|
|
9
|
+
};
|
|
10
|
+
|
|
1
11
|
const CssDefaultDark = {
|
|
2
12
|
theme: 'default-dark',
|
|
3
13
|
dark: true,
|
|
4
|
-
render: async () =>
|
|
14
|
+
render: async () => {
|
|
15
|
+
return (await CssCommonDefault()) + html``;
|
|
16
|
+
},
|
|
5
17
|
};
|
|
6
18
|
|
|
7
19
|
const CssDefaultLight = {
|
|
8
20
|
theme: 'default-light',
|
|
9
21
|
dark: false,
|
|
10
|
-
render: async () =>
|
|
22
|
+
render: async () => {
|
|
23
|
+
return (await CssCommonDefault()) + html``;
|
|
24
|
+
},
|
|
11
25
|
};
|
|
12
26
|
|
|
13
|
-
export { CssDefaultDark, CssDefaultLight };
|
|
27
|
+
export { CssDefaultDark, CssCommonDefault, CssDefaultLight };
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { Account } from '../core/Account.js';
|
|
2
2
|
import { BtnIcon } from '../core/BtnIcon.js';
|
|
3
3
|
import { getId, newInstance } from '../core/CommonJs.js';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
borderChar,
|
|
6
|
+
boxShadow,
|
|
7
|
+
Css,
|
|
8
|
+
darkTheme,
|
|
9
|
+
extractBackgroundImageUrl,
|
|
10
|
+
renderCssAttr,
|
|
11
|
+
ThemeEvents,
|
|
12
|
+
Themes,
|
|
13
|
+
} from '../core/Css.js';
|
|
5
14
|
import { EventsUI } from '../core/EventsUI.js';
|
|
6
15
|
import { LogIn } from '../core/LogIn.js';
|
|
7
16
|
import { LogOut } from '../core/LogOut.js';
|
|
@@ -35,6 +44,7 @@ const MenuDefault = {
|
|
|
35
44
|
await Modal.Render({
|
|
36
45
|
id: 'modal-menu',
|
|
37
46
|
html: html`
|
|
47
|
+
<div class="style-lading-render"></div>
|
|
38
48
|
<div class="fl menu-btn-container">
|
|
39
49
|
${await BtnIcon.Render({
|
|
40
50
|
class: 'in wfa main-btn-menu main-btn-home main-btn-menu-active',
|
|
@@ -105,17 +115,6 @@ const MenuDefault = {
|
|
|
105
115
|
handleContainerClass: 'handle-btn-container',
|
|
106
116
|
tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('settings')),
|
|
107
117
|
})}
|
|
108
|
-
${await BtnIcon.Render({
|
|
109
|
-
class: 'in wfa main-btn-menu main-btn-docs hide',
|
|
110
|
-
label: renderMenuLabel({
|
|
111
|
-
icon: html`<i class="fas fa-book"></i>`,
|
|
112
|
-
text: html`<span class="menu-label-text">${Translate.Render('docs')}</span>`,
|
|
113
|
-
}),
|
|
114
|
-
attrs: `data-id="docs"`,
|
|
115
|
-
tabHref: `${getProxyPath()}docs`,
|
|
116
|
-
handleContainerClass: 'handle-btn-container',
|
|
117
|
-
tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('docs')),
|
|
118
|
-
})}
|
|
119
118
|
${await BtnIcon.Render({
|
|
120
119
|
class: 'in wfa main-btn-menu main-btn-recover hide',
|
|
121
120
|
label: renderMenuLabel({
|
|
@@ -166,21 +165,67 @@ const MenuDefault = {
|
|
|
166
165
|
title: NameApp,
|
|
167
166
|
// titleClass: 'hide',
|
|
168
167
|
titleRender: () => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
ThemeEvents['titleRender'] = () => {
|
|
169
|
+
const srcLogo = `${getProxyPath()}apple-touch-icon-114x114-precomposed.png`;
|
|
170
|
+
|
|
171
|
+
htmls(
|
|
172
|
+
'.action-btn-app-icon-render',
|
|
173
|
+
html`<img class="inl top-bar-app-icon ${darkTheme ? 'negative-color' : ''}" src="${srcLogo}" />`,
|
|
174
|
+
);
|
|
175
|
+
};
|
|
176
|
+
setTimeout(ThemeEvents['titleRender']);
|
|
172
177
|
return '';
|
|
173
178
|
},
|
|
174
179
|
mode: 'slide-menu',
|
|
175
180
|
RouterInstance,
|
|
176
181
|
heightTopBar,
|
|
177
182
|
heightBottomBar,
|
|
178
|
-
htmlMainBody:
|
|
183
|
+
htmlMainBody: async () => {
|
|
184
|
+
setTimeout(() => {
|
|
185
|
+
EventsUI.onClick('.get-started-button', (e) => {
|
|
186
|
+
e.preventDefault();
|
|
187
|
+
location.href = `https://www.nexodev.org/docs/?cid=src`;
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
return html`
|
|
191
|
+
<div class="landing-container">
|
|
192
|
+
<div class="content-wrapper">
|
|
193
|
+
<h1 class="animated-text">
|
|
194
|
+
<span class="greeting">Hello, World!</span>
|
|
195
|
+
<span class="subtitle">Welcome to Our Platform</span>
|
|
196
|
+
</h1>
|
|
197
|
+
|
|
198
|
+
<div class="features">
|
|
199
|
+
<div class="feature-card">
|
|
200
|
+
<i class="icon">🚀</i>
|
|
201
|
+
<h3>Fast & Reliable</h3>
|
|
202
|
+
<p>Lightning-fast performance with 99.9% uptime</p>
|
|
203
|
+
</div>
|
|
204
|
+
<div class="feature-card">
|
|
205
|
+
<i class="icon">🎨</i>
|
|
206
|
+
<h3>Beautiful UI</h3>
|
|
207
|
+
<p>Modern and intuitive user interface</p>
|
|
208
|
+
</div>
|
|
209
|
+
<div class="feature-card">
|
|
210
|
+
<i class="icon">⚡</i>
|
|
211
|
+
<h3>Powerful Features</h3>
|
|
212
|
+
<p>Everything you need in one place</p>
|
|
213
|
+
</div>
|
|
214
|
+
</div>
|
|
215
|
+
|
|
216
|
+
<button class="cta-button get-started-button">
|
|
217
|
+
Get Started
|
|
218
|
+
<span class="button-icon">→</span>
|
|
219
|
+
</button>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
`;
|
|
223
|
+
},
|
|
179
224
|
});
|
|
180
225
|
|
|
181
|
-
ThemeEvents['
|
|
226
|
+
ThemeEvents['main-theme-handler'] = () => {
|
|
182
227
|
if (darkTheme) {
|
|
183
|
-
const backgroundImage = `${getProxyPath()}assets/background/dark.
|
|
228
|
+
const backgroundImage = `${getProxyPath()}assets/background/dark.svg`;
|
|
184
229
|
htmls(
|
|
185
230
|
`.style-ssr-background-image`,
|
|
186
231
|
css`
|
|
@@ -200,9 +245,186 @@ const MenuDefault = {
|
|
|
200
245
|
`,
|
|
201
246
|
);
|
|
202
247
|
}
|
|
248
|
+
htmls(
|
|
249
|
+
`.style-lading-render`,
|
|
250
|
+
html` <style>
|
|
251
|
+
.landing-container {
|
|
252
|
+
min-height: calc(100vh - ${heightTopBar + heightBottomBar}px);
|
|
253
|
+
display: flex;
|
|
254
|
+
/* align-items: center; */
|
|
255
|
+
justify-content: center;
|
|
256
|
+
|
|
257
|
+
padding: 2rem;
|
|
258
|
+
color: ${darkTheme ? '#fff' : '#333'};
|
|
259
|
+
transition: all 0.3s ease;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.content-wrapper {
|
|
263
|
+
text-align: center;
|
|
264
|
+
max-width: 1200px;
|
|
265
|
+
width: 100%;
|
|
266
|
+
padding: 2rem;
|
|
267
|
+
animation: fadeIn 1s ease-out;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.animated-text {
|
|
271
|
+
margin-bottom: 3rem;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.greeting {
|
|
275
|
+
display: block;
|
|
276
|
+
font-size: 3.5rem;
|
|
277
|
+
font-weight: 700;
|
|
278
|
+
margin-bottom: 1rem;
|
|
279
|
+
background: linear-gradient(90deg, #4f46e5, #7c3aed);
|
|
280
|
+
-webkit-background-clip: text;
|
|
281
|
+
-webkit-text-fill-color: transparent;
|
|
282
|
+
animation: slideIn 1s ease-out;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.subtitle {
|
|
286
|
+
display: block;
|
|
287
|
+
font-size: 1.5rem;
|
|
288
|
+
color: ${darkTheme ? '#a0aec0' : '#4a5568'};
|
|
289
|
+
margin-top: 1rem;
|
|
290
|
+
opacity: 0;
|
|
291
|
+
animation: fadeInUp 0.8s ease-out 0.3s forwards;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.features {
|
|
295
|
+
display: grid;
|
|
296
|
+
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
297
|
+
gap: 2rem;
|
|
298
|
+
margin: 4rem 0;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.feature-card {
|
|
302
|
+
background: ${darkTheme ? 'rgba(255, 255, 255, 0.05)' : 'white'};
|
|
303
|
+
padding: 2rem;
|
|
304
|
+
border-radius: 12px;
|
|
305
|
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
|
|
306
|
+
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
|
307
|
+
opacity: 0;
|
|
308
|
+
animation: fadeInUp 0.6s ease-out forwards;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.feature-card:nth-child(1) {
|
|
312
|
+
animation-delay: 0.5s;
|
|
313
|
+
}
|
|
314
|
+
.feature-card:nth-child(2) {
|
|
315
|
+
animation-delay: 0.7s;
|
|
316
|
+
}
|
|
317
|
+
.feature-card:nth-child(3) {
|
|
318
|
+
animation-delay: 0.9s;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.feature-card:hover {
|
|
322
|
+
transform: translateY(-5px);
|
|
323
|
+
box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.feature-card .icon {
|
|
327
|
+
font-size: 2.5rem;
|
|
328
|
+
margin-bottom: 1rem;
|
|
329
|
+
display: inline-block;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.feature-card h3 {
|
|
333
|
+
font-size: 1.25rem;
|
|
334
|
+
margin-bottom: 0.75rem;
|
|
335
|
+
color: ${darkTheme ? '#e2e8f0' : '#2d3748'};
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.feature-card p {
|
|
339
|
+
color: ${darkTheme ? '#a0aec0' : '#4a5568'};
|
|
340
|
+
line-height: 1.6;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.cta-button {
|
|
344
|
+
background: linear-gradient(90deg, #4f46e5, #7c3aed);
|
|
345
|
+
color: white;
|
|
346
|
+
border: none;
|
|
347
|
+
padding: 1rem 2.5rem;
|
|
348
|
+
font-size: 1.1rem;
|
|
349
|
+
border-radius: 50px;
|
|
350
|
+
cursor: pointer;
|
|
351
|
+
display: inline-flex;
|
|
352
|
+
align-items: center;
|
|
353
|
+
gap: 0.5rem;
|
|
354
|
+
transition: all 0.3s ease;
|
|
355
|
+
box-shadow: 0 4px 15px rgba(79, 70, 229, 0.3);
|
|
356
|
+
opacity: 0;
|
|
357
|
+
animation: fadeIn 0.8s ease-out 1.2s forwards;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.cta-button:hover {
|
|
361
|
+
transform: translateY(-2px);
|
|
362
|
+
box-shadow: 0 6px 20px rgba(79, 70, 229, 0.4);
|
|
363
|
+
background: linear-gradient(90deg, #3e38b4, #602bbc);
|
|
364
|
+
color: white;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.cta-button:active {
|
|
368
|
+
transform: translateY(0);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.button-icon {
|
|
372
|
+
transition: transform 0.3s ease;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.cta-button:hover .button-icon {
|
|
376
|
+
transform: translateX(4px);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
@keyframes fadeIn {
|
|
380
|
+
from {
|
|
381
|
+
opacity: 0;
|
|
382
|
+
}
|
|
383
|
+
to {
|
|
384
|
+
opacity: 1;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
@keyframes fadeInUp {
|
|
389
|
+
from {
|
|
390
|
+
opacity: 0;
|
|
391
|
+
transform: translateY(20px);
|
|
392
|
+
}
|
|
393
|
+
to {
|
|
394
|
+
opacity: 1;
|
|
395
|
+
transform: translateY(0);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
@keyframes slideIn {
|
|
400
|
+
from {
|
|
401
|
+
opacity: 0;
|
|
402
|
+
transform: translateX(-30px);
|
|
403
|
+
}
|
|
404
|
+
to {
|
|
405
|
+
opacity: 1;
|
|
406
|
+
transform: translateX(0);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
@media (max-width: 768px) {
|
|
411
|
+
.greeting {
|
|
412
|
+
font-size: 2.5rem;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.subtitle {
|
|
416
|
+
font-size: 1.25rem;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.features {
|
|
420
|
+
grid-template-columns: 1fr;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
</style>`,
|
|
424
|
+
);
|
|
203
425
|
};
|
|
204
426
|
|
|
205
|
-
setTimeout(ThemeEvents['
|
|
427
|
+
setTimeout(ThemeEvents['main-theme-handler']);
|
|
206
428
|
|
|
207
429
|
this.Data[id].sortable = new Sortable(s(`.menu-btn-container`), {
|
|
208
430
|
animation: 150,
|
|
@@ -363,35 +585,6 @@ const MenuDefault = {
|
|
|
363
585
|
});
|
|
364
586
|
});
|
|
365
587
|
|
|
366
|
-
EventsUI.onClick(`.main-btn-docs`, async () => {
|
|
367
|
-
const { barConfig } = await Themes[Css.currentTheme]();
|
|
368
|
-
await Modal.Render({
|
|
369
|
-
id: 'modal-docs',
|
|
370
|
-
route: 'docs',
|
|
371
|
-
barConfig,
|
|
372
|
-
title: renderViewTitle({
|
|
373
|
-
icon: html`<i class="fas fa-book"></i>`,
|
|
374
|
-
text: Translate.Render('docs'),
|
|
375
|
-
}),
|
|
376
|
-
html: async () =>
|
|
377
|
-
await Docs.Init({
|
|
378
|
-
idModal: 'modal-docs',
|
|
379
|
-
modalOptions: {
|
|
380
|
-
barMode: undefined,
|
|
381
|
-
},
|
|
382
|
-
}),
|
|
383
|
-
handleType: 'bar',
|
|
384
|
-
observer: true,
|
|
385
|
-
maximize: true,
|
|
386
|
-
mode: 'view',
|
|
387
|
-
slideMenu: 'modal-menu',
|
|
388
|
-
RouterInstance,
|
|
389
|
-
heightTopBar,
|
|
390
|
-
heightBottomBar,
|
|
391
|
-
barMode,
|
|
392
|
-
});
|
|
393
|
-
});
|
|
394
|
-
|
|
395
588
|
EventsUI.onClick(`.main-btn-recover`, async () => {
|
|
396
589
|
const { barConfig } = await Themes[Css.currentTheme]();
|
|
397
590
|
await Modal.Render({
|
|
@@ -4,7 +4,7 @@ import { getProxyPath, s } from '../core/VanillaJs.js';
|
|
|
4
4
|
|
|
5
5
|
const logger = loggerFactory(import.meta);
|
|
6
6
|
|
|
7
|
-
const NameApp = html
|
|
7
|
+
const NameApp = html`<strong class="inl" style="font-family: system-ui">PWA</strong>`;
|
|
8
8
|
|
|
9
9
|
// Router
|
|
10
10
|
const RoutesDefault = () => {
|
|
@@ -15,27 +15,22 @@ const RoutesDefault = () => {
|
|
|
15
15
|
upperCase: false,
|
|
16
16
|
},
|
|
17
17
|
'/home': { title: 'home', render: () => Modal.onHomeRouterEvent() },
|
|
18
|
-
'/settings': { title: 'settings', render: () => s(`.main-btn-settings`).click()
|
|
19
|
-
'/log-in': { title: 'log-in', render: () => s(`.main-btn-log-in`).click()
|
|
20
|
-
'/sign-up': { title: 'sign-up', render: () => s(`.main-btn-sign-up`).click()
|
|
18
|
+
'/settings': { title: 'settings', render: () => s(`.main-btn-settings`).click() },
|
|
19
|
+
'/log-in': { title: 'log-in', render: () => s(`.main-btn-log-in`).click() },
|
|
20
|
+
'/sign-up': { title: 'sign-up', render: () => s(`.main-btn-sign-up`).click() },
|
|
21
21
|
'/log-out': {
|
|
22
22
|
title: 'log-out',
|
|
23
23
|
render: () => s(`.main-btn-log-out`).click(),
|
|
24
|
-
hideDisplay: true,
|
|
25
|
-
translateTitle: true,
|
|
26
24
|
},
|
|
27
25
|
'/account': {
|
|
28
26
|
title: 'account',
|
|
29
27
|
render: () => s(`.main-btn-account`).click(),
|
|
30
|
-
hideDisplay: true,
|
|
31
|
-
translateTitle: true,
|
|
32
28
|
},
|
|
33
|
-
'/docs': { title: 'docs', render: () => s(`.main-btn-docs`).click()
|
|
34
|
-
'/recover': { title: 'recover', render: () => s(`.main-btn-recover`).click()
|
|
29
|
+
'/docs': { title: 'docs', render: () => s(`.main-btn-docs`).click() },
|
|
30
|
+
'/recover': { title: 'recover', render: () => s(`.main-btn-recover`).click() },
|
|
35
31
|
'/default-management': {
|
|
36
32
|
title: 'default-management',
|
|
37
33
|
render: () => s(`.main-btn-default-management`).click(),
|
|
38
|
-
translateTitle: true,
|
|
39
34
|
},
|
|
40
35
|
'/404': { title: '404 Not Found', render: () => s(`.main-btn-404`).click() },
|
|
41
36
|
'/500': { title: '500 Server Error', render: () => s(`.main-btn-500`).click() },
|
|
Binary file
|