underpost 2.8.845 → 2.8.846

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 (64) hide show
  1. package/README.md +8 -2
  2. package/cli.md +4 -3
  3. package/docker-compose.yml +1 -1
  4. package/manifests/deployment/dd-template-development/deployment.yaml +2 -2
  5. package/package.json +1 -1
  6. package/src/cli/index.js +1 -7
  7. package/src/cli/run.js +7 -0
  8. package/src/client/Default.index.js +1 -1
  9. package/src/client/components/core/Chat.js +1 -1
  10. package/src/client/components/core/CommonJs.js +24 -22
  11. package/src/client/components/core/Content.js +1 -5
  12. package/src/client/components/core/Css.js +16 -2
  13. package/src/client/components/core/CssCore.js +5 -0
  14. package/src/client/components/core/DropDown.js +21 -12
  15. package/src/client/components/core/Modal.js +49 -12
  16. package/src/client/components/core/ObjectLayerEngine.js +638 -0
  17. package/src/client/components/core/Panel.js +156 -32
  18. package/src/client/components/core/Translate.js +4 -0
  19. package/src/client/components/default/MenuDefault.js +27 -1
  20. package/src/client/public/default/android-chrome-144x144.png +0 -0
  21. package/src/client/public/default/android-chrome-192x192.png +0 -0
  22. package/src/client/public/default/android-chrome-256x256.png +0 -0
  23. package/src/client/public/default/android-chrome-36x36.png +0 -0
  24. package/src/client/public/default/android-chrome-48x48.png +0 -0
  25. package/src/client/public/default/android-chrome-72x72.png +0 -0
  26. package/src/client/public/default/android-chrome-96x96.png +0 -0
  27. package/src/client/public/default/apple-touch-icon-114x114-precomposed.png +0 -0
  28. package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
  29. package/src/client/public/default/apple-touch-icon-120x120-precomposed.png +0 -0
  30. package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
  31. package/src/client/public/default/apple-touch-icon-144x144-precomposed.png +0 -0
  32. package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
  33. package/src/client/public/default/apple-touch-icon-152x152-precomposed.png +0 -0
  34. package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
  35. package/src/client/public/default/apple-touch-icon-180x180-precomposed.png +0 -0
  36. package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
  37. package/src/client/public/default/apple-touch-icon-57x57-precomposed.png +0 -0
  38. package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
  39. package/src/client/public/default/apple-touch-icon-60x60-precomposed.png +0 -0
  40. package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
  41. package/src/client/public/default/apple-touch-icon-72x72-precomposed.png +0 -0
  42. package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
  43. package/src/client/public/default/apple-touch-icon-76x76-precomposed.png +0 -0
  44. package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
  45. package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
  46. package/src/client/public/default/apple-touch-icon.png +0 -0
  47. package/src/client/public/default/assets/background/dark.jpg +0 -0
  48. package/src/client/public/default/assets/logo/base-icon.png +0 -0
  49. package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
  50. package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
  51. package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
  52. package/src/client/public/default/favicon-16x16.png +0 -0
  53. package/src/client/public/default/favicon-32x32.png +0 -0
  54. package/src/client/public/default/favicon.ico +0 -0
  55. package/src/client/public/default/mstile-144x144.png +0 -0
  56. package/src/client/public/default/mstile-150x150.png +0 -0
  57. package/src/client/public/default/mstile-310x150.png +0 -0
  58. package/src/client/public/default/mstile-310x310.png +0 -0
  59. package/src/client/public/default/mstile-70x70.png +0 -0
  60. package/src/client/public/default/safari-pinned-tab.svg +24 -0
  61. package/src/client/ssr/body/DefaultSplashScreen.js +2 -2
  62. package/src/index.js +1 -1
  63. package/src/server/client-build.js +4 -18
  64. package/src/server/conf.js +12 -5
package/README.md CHANGED
@@ -38,10 +38,13 @@ template
38
38
 
39
39
 
40
40
 
41
+
42
+
43
+
41
44
  <!-- badges -->
42
45
 
43
46
 
44
- [![Node.js CI](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/docker-image.yml) [![Test](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/coverall.yml) [![Downloads](https://img.shields.io/npm/dm/underpost.svg)](https://www.npmjs.com/package/underpost) [![Socket Badge](https://socket.dev/api/badge/npm/package/underpost/2.8.845)](https://socket.dev/npm/package/underpost/overview/2.8.845) [![Coverage Status](https://coveralls.io/repos/github/underpostnet/engine/badge.svg?branch=master)](https://coveralls.io/github/underpostnet/engine?branch=master) [![Version](https://img.shields.io/npm/v/underpost.svg)](https://www.npmjs.org/package/underpost) [![License](https://img.shields.io/npm/l/underpost.svg)](https://www.npmjs.com/package/underpost)
47
+ [![Node.js CI](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/docker-image.yml) [![Test](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/coverall.yml) [![Downloads](https://img.shields.io/npm/dm/underpost.svg)](https://www.npmjs.com/package/underpost) [![Socket Badge](https://socket.dev/api/badge/npm/package/underpost/2.8.846)](https://socket.dev/npm/package/underpost/overview/2.8.846) [![Coverage Status](https://coveralls.io/repos/github/underpostnet/engine/badge.svg?branch=master)](https://coveralls.io/github/underpostnet/engine?branch=master) [![Version](https://img.shields.io/npm/v/underpost.svg)](https://www.npmjs.org/package/underpost) [![License](https://img.shields.io/npm/l/underpost.svg)](https://www.npmjs.com/package/underpost)
45
48
 
46
49
 
47
50
  <!-- end-badges -->
@@ -62,6 +65,9 @@ template
62
65
 
63
66
 
64
67
 
68
+
69
+
70
+
65
71
  </div>
66
72
 
67
73
  <div align="center">
@@ -106,7 +112,7 @@ Run dev client server
106
112
  npm run dev
107
113
  ```
108
114
  <!-- -->
109
- ## underpost ci/cd cli v2.8.845
115
+ ## underpost ci/cd cli v2.8.846
110
116
 
111
117
  ### Usage: `underpost [options] [command]`
112
118
  ```
package/cli.md CHANGED
@@ -1,4 +1,4 @@
1
- ## underpost ci/cd cli v2.8.845
1
+ ## underpost ci/cd cli v2.8.846
2
2
 
3
3
  ### Usage: `underpost [options] [command]`
4
4
  ```
@@ -118,7 +118,8 @@ options.
118
118
  Arguments:
119
119
  path The absolute or relative directory path of the repository.
120
120
  commit-type The type of commit to perform. Options: feat, fix, docs, style,
121
- refactor, perf, cd, test, build, ci, chore, revert, backup.
121
+ refactor, perf, ci, cd, infra, build, test, chore, revert,
122
+ backup.
122
123
  module-tag Optional: Sets a specific module tag for the commit.
123
124
  message Optional: Provides an additional custom message for the commit.
124
125
 
@@ -558,7 +559,7 @@ Options:
558
559
  Runs a script from the specified path.
559
560
 
560
561
  Arguments:
561
- runner-id The runner ID to run. Options: spark-template, rmi, kill, secret, gpu-env, tf-gpu-test, dev-cluster, cyberia-ide, engine-ide, ide, monitor, db-client, cluster, deploy, tf-vae-test, deploy-job.
562
+ runner-id The runner ID to run. Options: spark-template, rmi, kill, secret, gpu-env, tf-gpu-test, dev-cluster, cyberia-ide, engine-ide, ssh-deploy, ide, monitor, db-client, cluster, deploy, tf-vae-test, deploy-job.
562
563
  path The absolute or relative directory path where the script is located.
563
564
 
564
565
  Options:
@@ -58,7 +58,7 @@ services:
58
58
  cpus: '0.25'
59
59
  memory: 20M
60
60
  labels: # labels in Compose file instead of Dockerfile
61
- engine.version: '2.8.845'
61
+ engine.version: '2.8.846'
62
62
  networks:
63
63
  - load-balancer
64
64
 
@@ -17,7 +17,7 @@ spec:
17
17
  spec:
18
18
  containers:
19
19
  - name: dd-template-development-blue
20
- image: localhost/rockylinux9-underpost:v2.8.845
20
+ image: localhost/rockylinux9-underpost:v2.8.846
21
21
  # resources:
22
22
  # requests:
23
23
  # memory: "124Ki"
@@ -100,7 +100,7 @@ spec:
100
100
  spec:
101
101
  containers:
102
102
  - name: dd-template-development-green
103
- image: localhost/rockylinux9-underpost:v2.8.845
103
+ image: localhost/rockylinux9-underpost:v2.8.846
104
104
  # resources:
105
105
  # requests:
106
106
  # memory: "124Ki"
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "type": "module",
3
3
  "main": "src/index.js",
4
4
  "name": "underpost",
5
- "version": "2.8.845",
5
+ "version": "2.8.846",
6
6
  "description": "pwa api rest template",
7
7
  "scripts": {
8
8
  "start": "env-cmd -f .env.production node --max-old-space-size=8192 src/server",
package/src/cli/index.js CHANGED
@@ -86,13 +86,7 @@ program
86
86
  .argument('<deploy-id>', `The deployment configuration ID. Use 'clean' to restore default environment settings.`)
87
87
  .argument('[env]', 'Optional: The environment to set (e.g., "production", "development"). Defaults to "production".')
88
88
  .description('Sets environment variables and configurations related to a specific deployment ID.')
89
- .action((...args) => {
90
- if (args[0] === 'current') {
91
- console.log(process.env.DEPLOY_ID);
92
- return;
93
- }
94
- loadConf(...args);
95
- });
89
+ .action(loadConf);
96
90
 
97
91
  // 'config' command: Manage Underpost configurations
98
92
  program
package/src/cli/run.js CHANGED
@@ -86,6 +86,13 @@ class UnderpostRun {
86
86
  shellExec(`${baseCommand} run ide /home/dd/engine`);
87
87
  shellExec(`${baseCommand} run ide /home/dd/engine/engine-private`);
88
88
  },
89
+ 'ssh-deploy': (path, options = UnderpostRun.DEFAULT_OPTION) => {
90
+ const baseCommand = options.dev || true ? 'node bin' : 'underpost';
91
+ shellCd('/home/dd/engine');
92
+ shellExec(`git reset`);
93
+ shellExec(`${baseCommand} cmt . --empty cd ssh-${path}`);
94
+ shellExec(`${baseCommand} push . underpostnet/engine`);
95
+ },
89
96
  ide: (path, options = UnderpostRun.DEFAULT_OPTION) => {
90
97
  const { underpostRoot } = options;
91
98
  shellExec(`node ${underpostRoot}/bin/vs ${path}`);
@@ -18,7 +18,7 @@ import { ElementsDefault } from './components/default/ElementsDefault.js';
18
18
  import { Scroll } from './components/core/Scroll.js';
19
19
 
20
20
  const htmlMainBody = async () => {
21
- return html`<span style="color: black; padding: 5px">Hello World!!</span>`;
21
+ return html`<span>Hello World!!</span>`;
22
22
  };
23
23
 
24
24
  window.onload = () =>
@@ -53,7 +53,7 @@ const Chat = {
53
53
  html`
54
54
  <div class="in">
55
55
  <span class="chat-message-header">${getIsoDate(new Date())} | ${id}:</span><br />
56
- ${message}
56
+ <span class="chat-message-body"> ${message}</span>
57
57
  </div>
58
58
  `,
59
59
  );
@@ -822,70 +822,72 @@ const generateRandomPasswordSelection = (length) => {
822
822
 
823
823
  const commitData = {
824
824
  feat: {
825
- description: 'A new feature',
825
+ description: 'New feature or enhancement (frontend, backend, API, or UX)',
826
826
  title: 'Features',
827
827
  emoji: '✨',
828
828
  },
829
829
  fix: {
830
- description: 'A bug fix',
830
+ description: 'Fix a bug',
831
831
  title: 'Bug Fixes',
832
832
  emoji: '🐛',
833
833
  },
834
834
  docs: {
835
- description: 'Documentation only changes',
835
+ description: 'Documentation changes',
836
836
  title: 'Documentation',
837
837
  emoji: '📚',
838
838
  },
839
839
  style: {
840
- description:
841
- 'Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)',
840
+ description: 'Formatting, whitespace, semicolons, code style',
842
841
  title: 'Styles',
843
842
  emoji: '💎',
844
843
  },
845
844
  refactor: {
846
- description: 'A code change that neither fixes a bug nor adds a feature',
845
+ description: 'Code refactor.',
847
846
  title: 'Code Refactoring',
848
847
  emoji: '📦',
849
848
  },
850
849
  perf: {
851
- description: 'A code change that improves performance',
850
+ description: 'Performance improvements across the stack.',
852
851
  title: 'Performance Improvements',
853
852
  emoji: '⚡️',
854
853
  },
854
+ ci: {
855
+ description: 'CI pipeline changes (GitHub Actions, runners, caching)',
856
+ title: 'Continuous Integration',
857
+ emoji: '⚙️',
858
+ },
855
859
  cd: {
856
- description:
857
- 'Changes to our Continuous Delivery configuration files and scripts (example scopes: Jenkins, Spinnaker, ArgoCD)',
860
+ description: 'CD / deployment changes (Remote ssh deployment scripts)',
858
861
  title: 'Continuous Delivery',
859
862
  emoji: '🚀',
860
863
  },
861
- test: {
862
- description: 'Adding missing tests or correcting existing tests',
863
- title: 'Tests',
864
- emoji: '🚨',
864
+ infra: {
865
+ description: 'Infrastructure changes (MAAS, LXD, cloud infra, networking, provisioning).',
866
+ title: 'Infrastructure',
867
+ emoji: '🏗️',
865
868
  },
866
869
  build: {
867
- description: 'Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)',
870
+ description: 'Build system or dependency changes (tooling, bundler, build scripts).',
868
871
  title: 'Builds',
869
872
  emoji: '🛠',
870
873
  },
871
- ci: {
872
- description:
873
- 'Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)',
874
- title: 'Continuous Integrations',
875
- emoji: '⚙️',
874
+ test: {
875
+ description: 'Unit or integration tests added/updated, test helpers, flake fixes.',
876
+ title: 'Tests',
877
+ emoji: '🚨',
876
878
  },
877
879
  chore: {
878
- description: "Other changes that don't modify src or test files",
880
+ description: "Other changes that don't modify src or tests (automation, housekeeping).",
879
881
  title: 'Chores',
880
882
  emoji: '♻️',
881
883
  },
882
884
  revert: {
883
- description: 'Reverts a previous commit',
885
+ description: 'Revert a previous commit or change.',
884
886
  title: 'Reverts',
885
887
  emoji: '🗑',
886
888
  },
887
889
  backup: {
888
- description: 'Changes related to backups, including creation, restoration, and maintenance.',
890
+ description: 'Backups, snapshotting, restore scripts, or backup docs.',
889
891
  title: 'Backups',
890
892
  emoji: '💾',
891
893
  },
@@ -105,7 +105,6 @@ const Content = {
105
105
  class: '',
106
106
  container: '',
107
107
  url: '',
108
- aHrefOptions: { disable: false },
109
108
  raw: false,
110
109
  },
111
110
  ) {
@@ -143,10 +142,7 @@ const Content = {
143
142
  ? getApiBaseUrl({ id: file._id, endpoint: 'file/blob' })
144
143
  : URL.createObjectURL(getBlobFromUint8ArrayFile(file.data.data, file.mimetype));
145
144
  const imgRender = html`<img class="in ${options.class}" ${options.style} src="${url}" />`;
146
- render += html`${options.aHrefOptions?.disable
147
- ? imgRender
148
- : html`<a href="${url}" target="_top">${imgRender}</a>`}`;
149
-
145
+ render += imgRender;
150
146
  break;
151
147
  }
152
148
  case 'pdf': {
@@ -212,13 +212,13 @@ const addTheme = (options) => {
212
212
  };
213
213
  };
214
214
 
215
- const borderChar = (px, color, selectors) => {
215
+ const borderChar = (px, color, selectors, hover = false) => {
216
216
  if (selectors) {
217
217
  return selectors
218
218
  .map(
219
219
  (selector) => html`
220
220
  <style>
221
- ${selector} {
221
+ ${selector}${hover ? ':hover' : ''} {
222
222
  text-shadow: ${px}px -${px}px ${px}px ${color}, -${px}px ${px}px ${px}px ${color},
223
223
  -${px}px -${px}px ${px}px ${color}, ${px}px ${px}px ${px}px ${color};
224
224
  }
@@ -854,6 +854,18 @@ const imageShimmer = () => html`<div
854
854
  </div>
855
855
  </div>`;
856
856
 
857
+ const renderChessPattern = () => `background: repeating-conic-gradient(#808080 0 25%, #0000 0 50%) 50% / 20px 20px`;
858
+
859
+ const extractBackgroundImageUrl = (element) => {
860
+ const style = window.getComputedStyle(element);
861
+ const imageString = style.backgroundImage;
862
+ const foundUrlRaw = imageString.match(/^url\(?(.+)\)$/i)[1];
863
+ if (!foundUrlRaw) return null;
864
+ const foundUrl = foundUrlRaw.replace(/^['|"| ]*/, '').replace(/['" ]*$/, '');
865
+ if (!foundUrl) return null;
866
+ return foundUrl;
867
+ };
868
+
857
869
  const simpleIconsRender = (selector) => {
858
870
  sa(selector).forEach((el) => {
859
871
  el.src = `https://cdn.simpleicons.org/coveralls/${rgbToHex(window.getComputedStyle(s('html')).color)}`;
@@ -893,4 +905,6 @@ export {
893
905
  cssEffect,
894
906
  imageShimmer,
895
907
  simpleIconsRender,
908
+ extractBackgroundImageUrl,
909
+ renderChessPattern,
896
910
  };
@@ -122,6 +122,7 @@ const CssCommonCore = async () => {
122
122
  left: 0;
123
123
  width: 100%;
124
124
  z-index: 1;
125
+ transition: 0.3s;
125
126
  }
126
127
  @keyframes ripple {
127
128
  to {
@@ -607,6 +608,10 @@ const CssCoreLight = {
607
608
  background: gray;
608
609
  transition: 0.3s;
609
610
  }
611
+ .bar-default-modal-icon {
612
+ width: 15px;
613
+ height: 15px;
614
+ }
610
615
  .slide-menu-top-bar {
611
616
  width: 100%;
612
617
  top: 0;
@@ -8,7 +8,12 @@ const DropDown = {
8
8
  Tokens: {},
9
9
  Render: async function (options) {
10
10
  const id = options.id ? options.id : getId(this.Tokens, 'dropdown-');
11
- this.Tokens[id] = { onClickEvents: {}, lastSelectValue: undefined, oncheckvalues: {} };
11
+ this.Tokens[id] = {
12
+ onClickEvents: {},
13
+ lastSelectValue: undefined,
14
+ oncheckvalues: {},
15
+ originData: options.data ? newInstance(options.data) : [],
16
+ };
12
17
 
13
18
  options.data.push({
14
19
  value: 'reset',
@@ -65,17 +70,21 @@ const DropDown = {
65
70
  if (options.type === 'checkbox' && ToggleSwitch.Tokens[`checkbox-role-${valueDisplay}`])
66
71
  ToggleSwitch.Tokens[`checkbox-role-${valueDisplay}`].click();
67
72
  if (optionData.value !== 'close') {
68
- if (optionData.value !== 'reset')
69
- htmls(
70
- `.dropdown-current-${id}`,
71
- options.type === 'checkbox'
72
- ? data
73
- .filter((d) => d.checked)
74
- .map((v, i, a) => `${v.display}${i < a.length - 1 ? ',' : ''}`)
75
- .join('')
76
- : optionData.display,
77
- );
78
- else htmls(`.dropdown-current-${id}`, '');
73
+ if (optionData.value !== 'reset') {
74
+ if (options.type === 'checkbox') {
75
+ // const _instanValue = data
76
+ // .filter((d) => d.checked)
77
+ // .map((v, i, a) => `${v.display}${i < a.length - 1 ? ',' : ''}`)
78
+ // .join('');
79
+ const value = Object.keys(DropDown.Tokens[id].oncheckvalues);
80
+ htmls(
81
+ `.dropdown-current-${id}`,
82
+ value.map((v) => DropDown.Tokens[id].originData.find((_v) => _v.value === v).display),
83
+ );
84
+ } else {
85
+ htmls(`.dropdown-current-${id}`, optionData.display);
86
+ }
87
+ } else htmls(`.dropdown-current-${id}`, '');
79
88
 
80
89
  this.Tokens[id].value =
81
90
  options.type === 'checkbox' ? data.filter((d) => d.checked).map((d) => d.data) : optionData.data;
@@ -243,8 +243,17 @@ const Modal = {
243
243
  style="top: ${options.heightTopBar + 50}px; z-index: 9; ${true ||
244
244
  (options.mode && options.mode.match('right'))
245
245
  ? 'right'
246
- : 'left'}: 50px; width: 50px; height: 100px; transition: .3s"
246
+ : 'left'}: 50px; width: 50px; height: 150px; transition: .3s"
247
247
  >
248
+ <div
249
+ class="abs main-body-btn main-body-btn-ui"
250
+ style="top: 0px; ${true || (options.mode && options.mode.match('right')) ? 'right' : 'left'}: 0px"
251
+ >
252
+ <div class="abs center">
253
+ <i class="fas fa-caret-down main-body-btn-ui-open hide"></i>
254
+ <i class="fas fa-caret-up main-body-btn-ui-close"></i>
255
+ </div>
256
+ </div>
248
257
  <div
249
258
  class="abs main-body-btn main-body-btn-menu"
250
259
  style="top: 50px; ${true || (options.mode && options.mode.match('right'))
@@ -257,15 +266,16 @@ const Modal = {
257
266
  </div>
258
267
  </div>
259
268
  <div
260
- class="abs main-body-btn main-body-btn-ui"
261
- style="top: 0px; ${true || (options.mode && options.mode.match('right')) ? 'right' : 'left'}: 0px"
269
+ class="abs main-body-btn main-body-btn-bar-custom ${options?.slideMenuTopBarFix ? '' : 'hide'}"
270
+ style="top: 100px; ${true || (options.mode && options.mode.match('right'))
271
+ ? 'right'
272
+ : 'left'}: 0px"
262
273
  >
263
274
  <div class="abs center">
264
- <i class="fas fa-caret-down main-body-btn-ui-open hide"></i>
265
- <i class="fas fa-caret-up main-body-btn-ui-close"></i>
275
+ <i class="fa-solid fa-magnifying-glass main-body-btn-ui-bar-custom-open"></i>
276
+ <i class="fa-solid fa-home hide main-body-btn-ui-bar-custom-close"></i>
266
277
  </div>
267
278
  </div>
268
- <div class="main-body-btn-container-custom"></div>
269
279
  </div>
270
280
  `,
271
281
  );
@@ -274,6 +284,22 @@ const Modal = {
274
284
  Modal.actionBtnCenter();
275
285
  };
276
286
 
287
+ s(`.main-body-btn-bar-custom`).onclick = () => {
288
+ if (s(`.main-body-btn-ui-close`).classList.contains('hide')) {
289
+ s(`.main-body-btn-ui`).click();
290
+ }
291
+ if (s(`.main-body-btn-ui-bar-custom-open`).classList.contains('hide')) {
292
+ s(`.main-body-btn-ui-bar-custom-open`).classList.remove('hide');
293
+ s(`.main-body-btn-ui-bar-custom-close`).classList.add('hide');
294
+ s(`.slide-menu-top-bar-fix`).style.top = '0px';
295
+ } else {
296
+ s(`.main-body-btn-ui-bar-custom-open`).classList.add('hide');
297
+ s(`.main-body-btn-ui-bar-custom-close`).classList.remove('hide');
298
+ s(`.slide-menu-top-bar-fix`).style.top = '-100px';
299
+ s(`.top-bar-search-box-container`).click();
300
+ }
301
+ };
302
+
277
303
  let _heightTopBar, _heightBottomBar, _topMenu;
278
304
  s(`.main-body-btn-ui`).onclick = () => {
279
305
  if (s(`.main-body-btn-ui-open`).classList.contains('hide')) {
@@ -404,7 +430,10 @@ const Modal = {
404
430
  </div>
405
431
  </div>
406
432
  ${options?.slideMenuTopBarFix
407
- ? html`<div class="abs modal slide-menu-top-bar-fix" style="height: ${options.heightTopBar}px">
433
+ ? html`<div
434
+ class="abs modal slide-menu-top-bar-fix"
435
+ style="height: ${options.heightTopBar}px; top: 0px"
436
+ >
408
437
  ${await options.slideMenuTopBarFix()}
409
438
  </div>`
410
439
  : ''}
@@ -598,7 +627,16 @@ const Modal = {
598
627
  Modal.removeModal(searchBoxHistoryId);
599
628
  return;
600
629
  }
601
- setTimeout(() => getResultSearchBox(validatorData));
630
+ setTimeout(() => {
631
+ getResultSearchBox(validatorData);
632
+
633
+ if (
634
+ s(`.slide-menu-top-bar-fix`) &&
635
+ !s(`.main-body-btn-ui-bar-custom-open`).classList.contains('hide')
636
+ ) {
637
+ s(`.main-body-btn-bar-custom`).click();
638
+ }
639
+ });
602
640
  };
603
641
 
604
642
  const getDefaultSearchBoxSelector = () => `.search-result-btn-${currentKeyBoardSearchBoxIndex}`;
@@ -691,7 +729,6 @@ const Modal = {
691
729
  Modal.MoveTitleToBar(id);
692
730
 
693
731
  prepend(`.btn-bar-modal-container-${id}`, html`<div class="hide">${inputInfoNode.outerHTML}</div>`);
694
- if (s(`.slide-menu-top-bar-fix`)) s(`.slide-menu-top-bar-fix`).classList.add('hide');
695
732
  }
696
733
  };
697
734
 
@@ -711,7 +748,6 @@ const Modal = {
711
748
  } catch (e) {}
712
749
  }
713
750
  Modal.removeModal(searchBoxHistoryId);
714
- if (s(`.slide-menu-top-bar-fix`)) s(`.slide-menu-top-bar-fix`).classList.remove('hide');
715
751
  };
716
752
  s('.top-bar-search-box').onblur = () => {
717
753
  hoverFocusCtl.checkDismiss();
@@ -1025,7 +1061,7 @@ const Modal = {
1025
1061
  await Modal.onHomeRouterEvent();
1026
1062
  Object.keys(this.Data[idModal].onHome).map((keyListener) => this.Data[idModal].onHome[keyListener]());
1027
1063
  });
1028
- EventsUI.onClick(`.action-btn-app-icon`, () => Modal.onHomeRouterEvent());
1064
+ EventsUI.onClick(`.action-btn-app-icon`, () => s(`.action-btn-home`).click());
1029
1065
  Keyboard.instanceMultiPressKey({
1030
1066
  id: 'input-shortcut-global-escape',
1031
1067
  keys: ['Escape'],
@@ -1435,7 +1471,8 @@ const Modal = {
1435
1471
  setDocTitle({ ...options.RouterInstance, route: '' });
1436
1472
  };
1437
1473
  s(`.main-btn-home`).onclick = async () => {
1438
- await this.onHomeRouterEvent();
1474
+ // await this.onHomeRouterEvent();
1475
+ s(`.action-btn-home`).click();
1439
1476
  };
1440
1477
  EventsUI.onClick(`.btn-icon-menu-back`, backMenuButtonEvent);
1441
1478
  EventsUI.onClick(`.btn-icon-menu-mode`, () => {