adminforth 1.0.24 → 1.0.26

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 (67) hide show
  1. package/dataConnectors/mongo.ts +2 -2
  2. package/dist/dataConnectors/mongo.js +1 -1
  3. package/dist/modules/codeInjector.js +9 -0
  4. package/dist/spa/.eslintrc.cjs +14 -0
  5. package/dist/spa/.vscode/extensions.json +6 -0
  6. package/dist/spa/README.md +39 -0
  7. package/dist/spa/env.d.ts +1 -0
  8. package/dist/spa/index.html +23 -0
  9. package/dist/spa/package-lock.json +4158 -0
  10. package/dist/spa/package.json +41 -0
  11. package/dist/spa/postcss.config.js +6 -0
  12. package/dist/spa/public/favicon.ico +0 -0
  13. package/dist/spa/src/App.vue +172 -0
  14. package/dist/spa/src/assets/base.css +0 -0
  15. package/dist/spa/src/assets/logo.svg +1 -0
  16. package/dist/spa/src/components/AcceptModal.vue +52 -0
  17. package/dist/spa/src/components/Breadcrumbs.vue +40 -0
  18. package/dist/spa/src/components/BreadcrumbsWithButtons.vue +26 -0
  19. package/dist/spa/src/components/CustomDatePicker.vue +161 -0
  20. package/dist/spa/src/components/CustomDateRangePicker.vue +209 -0
  21. package/dist/spa/src/components/Dropdown.vue +154 -0
  22. package/dist/spa/src/components/Filters.vue +157 -0
  23. package/dist/spa/src/components/HelloWorld.vue +17 -0
  24. package/dist/spa/src/components/MenuLink.vue +24 -0
  25. package/dist/spa/src/components/ResourceForm.vue +205 -0
  26. package/dist/spa/src/components/SingleSkeletLoader.vue +13 -0
  27. package/dist/spa/src/components/ValueRenderer.vue +44 -0
  28. package/dist/spa/src/components/icons/IconCalendar.vue +5 -0
  29. package/dist/spa/src/components/icons/IconCommunity.vue +7 -0
  30. package/dist/spa/src/components/icons/IconDocumentation.vue +7 -0
  31. package/dist/spa/src/components/icons/IconEcosystem.vue +7 -0
  32. package/dist/spa/src/components/icons/IconSupport.vue +7 -0
  33. package/dist/spa/src/components/icons/IconTime.vue +5 -0
  34. package/dist/spa/src/components/icons/IconTooling.vue +19 -0
  35. package/dist/spa/src/index.scss +26 -0
  36. package/dist/spa/src/main.ts +18 -0
  37. package/dist/spa/src/router/index.ts +53 -0
  38. package/dist/spa/src/stores/core.ts +138 -0
  39. package/dist/spa/src/stores/modal.ts +38 -0
  40. package/dist/spa/src/utils.ts +44 -0
  41. package/dist/spa/src/views/CreateView.vue +103 -0
  42. package/dist/spa/src/views/EditView.vue +103 -0
  43. package/dist/spa/src/views/HomeView.vue +8 -0
  44. package/dist/spa/src/views/ListView.vue +528 -0
  45. package/dist/spa/src/views/LoginView.vue +122 -0
  46. package/dist/spa/src/views/ResourceParent.vue +18 -0
  47. package/dist/spa/src/views/ShowView.vue +93 -0
  48. package/dist/spa/tailwind.config.js +12 -0
  49. package/dist/spa/tsconfig.app.json +14 -0
  50. package/dist/spa/tsconfig.json +11 -0
  51. package/dist/spa/tsconfig.node.json +19 -0
  52. package/dist/spa/vite.config.ts +43 -0
  53. package/modules/codeInjector.ts +12 -0
  54. package/package.json +2 -2
  55. package/dist/spa/src/main.js +0 -16
  56. package/dist/spa/src/router/index.js +0 -79
  57. package/dist/spa/src/stores/core.js +0 -154
  58. package/dist/spa/src/stores/modal.js +0 -35
  59. package/dist/spa/src/utils.js +0 -59
  60. package/dist/spa/vite.config.js +0 -44
  61. package/dist/spa_tmp/src/custom/custom/vueUses.js +0 -10
  62. package/dist/spa_tmp/src/main.js +0 -29
  63. package/dist/spa_tmp/src/router/index.js +0 -83
  64. package/dist/spa_tmp/src/stores/core.js +0 -150
  65. package/dist/spa_tmp/src/stores/modal.js +0 -35
  66. package/dist/spa_tmp/src/utils.js +0 -59
  67. package/dist/spa_tmp/vite.config.js +0 -43
@@ -0,0 +1,93 @@
1
+ <template>
2
+ <div class="relative">
3
+ <BreadcrumbsWithButtons>
4
+ <RouterLink :to="{ name: 'resource-edit', params: { resourceId: $route.params.resourceId, primaryKey: $route.params.primaryKey } }"
5
+ class="flex items-center py-1 px-3 me-2 mb-2 text-sm font-medium text-gray-900 focus:outline-none bg-white rounded border border-gray-300 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-100 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700"
6
+ >
7
+ <IconPenSolid class="w-4 h-4" />
8
+ Edit
9
+ </RouterLink>
10
+
11
+ <button @click="deleteRecord"
12
+ class="flex items-center py-1 px-3 mb-2 text-sm font-medium text-red-600 focus:outline-none bg-white rounded border border-gray-300 hover:bg-gray-100 hover:text-red-700 focus:z-10 focus:ring-4 focus:ring-gray-100 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-red-500 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700"
13
+ >
14
+ <IconTrashBinSolid class="w-4 h-4" />
15
+ Delete
16
+ </button>
17
+ </BreadcrumbsWithButtons>
18
+
19
+ <div v-if="loading" role="status" class="max-w-sm animate-pulse">
20
+ <div class="h-2.5 bg-gray-200 rounded-full dark:bg-gray-700 w-48 mb-4"></div>
21
+ <div class="h-2 bg-gray-200 rounded-full dark:bg-gray-700 max-w-[360px] mb-2.5"></div>
22
+ <div class="h-2 bg-gray-200 rounded-full dark:bg-gray-700 mb-2.5"></div>
23
+ <div class="h-2 bg-gray-200 rounded-full dark:bg-gray-700 max-w-[330px] mb-2.5"></div>
24
+ <div class="h-2 bg-gray-200 rounded-full dark:bg-gray-700 max-w-[300px] mb-2.5"></div>
25
+ <div class="h-2 bg-gray-200 rounded-full dark:bg-gray-700 max-w-[360px]"></div>
26
+ <span class="sr-only">Loading...</span>
27
+ </div>
28
+ <div
29
+ v-else
30
+ class="relative overflow-x-auto shadow-md sm:rounded-lg"
31
+ >
32
+ <table class="w-full text-sm text-left rtl:text-right text-gray-500 dark:text-gray-400">
33
+ <thead class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
34
+ <tr>
35
+ <th scope="col" class="px-6 py-3">
36
+ Field
37
+ </th>
38
+ <th scope="col" class="px-6 py-3 w-4/6">
39
+ Value
40
+ </th>
41
+ </tr>
42
+ </thead>
43
+ <tbody>
44
+ <tr v-for="column in coreStore.resourceColumns?.filter(c => c.showIn.includes('show'))" :key="column.name"
45
+ class="odd:bg-white odd:dark:bg-gray-900 even:bg-gray-50 even:dark:bg-gray-800 border-b dark:border-gray-700"
46
+ >
47
+ <td class="px-6 py-4 whitespace-nowrap">
48
+ {{ column.label }}
49
+ </td>
50
+ <td class="px-6 py-4 whitespace-nowrap whitespace-pre-wrap">
51
+ <ValueRenderer :column="column" :row="coreStore.record" />
52
+ </td>
53
+ </tr>
54
+
55
+ </tbody>
56
+ </table>
57
+ </div>
58
+
59
+
60
+ </div>
61
+ </template>
62
+
63
+
64
+ <script setup>
65
+
66
+ import { ref, computed, onMounted } from 'vue';
67
+ import { useRoute } from 'vue-router';
68
+ import { callAdminForthApi } from '@/utils';
69
+ import BreadcrumbsWithButtons from '@/components/BreadcrumbsWithButtons.vue';
70
+ import { IconPenSolid, IconTrashBinSolid } from '@iconify-prerendered/vue-flowbite';
71
+ import { useCoreStore } from '@/stores/core';
72
+ import ValueRenderer from '@/components/ValueRenderer.vue';
73
+
74
+
75
+ const item = ref(null);
76
+ const route = useRoute();
77
+ const loading = ref(false);
78
+
79
+ const coreStore = useCoreStore();
80
+
81
+ onMounted(async () => {
82
+ loading.value = true;
83
+ await coreStore.fetchColumns({
84
+ resourceId: route.params.resourceId
85
+ });
86
+ await coreStore.fetchRecord({
87
+ resourceId: route.params.resourceId,
88
+ primaryKey: route.params.primaryKey,
89
+ });
90
+ loading.value = false;
91
+ });
92
+
93
+ </script>
@@ -0,0 +1,12 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ export default {
3
+ content: ["./src/**/*.{vue, js}", "./node_modules/flowbite/**/*.js"],
4
+ theme: {
5
+ extend: {},
6
+ },
7
+ darkMode: 'class',
8
+ plugins: [
9
+ require('flowbite/plugin'),
10
+ ],
11
+ }
12
+
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
3
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
4
+ "exclude": ["src/**/__tests__/*"],
5
+ "compilerOptions": {
6
+ "composite": true,
7
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
8
+
9
+ "baseUrl": ".",
10
+ "paths": {
11
+ "@/*": ["./src/*"]
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ {
5
+ "path": "./tsconfig.node.json"
6
+ },
7
+ {
8
+ "path": "./tsconfig.app.json"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "extends": "@tsconfig/node20/tsconfig.json",
3
+ "include": [
4
+ "vite.config.*",
5
+ "vitest.config.*",
6
+ "cypress.config.*",
7
+ "nightwatch.conf.*",
8
+ "playwright.config.*"
9
+ ],
10
+ "compilerOptions": {
11
+ "composite": true,
12
+ "noEmit": true,
13
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
14
+
15
+ "module": "ESNext",
16
+ "moduleResolution": "Bundler",
17
+ "types": ["node"]
18
+ }
19
+ }
@@ -0,0 +1,43 @@
1
+ import { fileURLToPath, URL } from 'node:url'
2
+
3
+ import { defineConfig } from 'vite'
4
+ import vue from '@vitejs/plugin-vue'
5
+
6
+
7
+ const customLogger = {
8
+ info(msg: string) {
9
+ // Filter out the lines containing '➜ Local:' or '➜ Network:'
10
+ if (!msg.includes('➜')) {
11
+ console.log(msg);
12
+ }
13
+ },
14
+ warn(msg: string) {
15
+ console.warn(msg);
16
+ },
17
+ error(msg: string) {
18
+ console.error(msg);
19
+ },
20
+ clear() {
21
+ console.clear();
22
+ },
23
+ hasWarned: false,
24
+ };
25
+
26
+ // https://vitejs.dev/config/
27
+ export default defineConfig({
28
+ base: process.env.VITE_ADMINFORTH_PUBLIC_PATH || '/',
29
+ server: {
30
+ port: 5173,
31
+ strictPort: true, // better predictability
32
+ },
33
+ customLogger,
34
+ plugins: [
35
+ vue(),
36
+ ],
37
+ resolve: {
38
+ alias: {
39
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
40
+ '@@': fileURLToPath(new URL('./src/custom', import.meta.url)),
41
+ }
42
+ }
43
+ })
@@ -127,10 +127,22 @@ class CodeInjector {
127
127
  const src = path.join(__dirname, 'spa', file);
128
128
  const dest = path.join(spaTmpPath, file);
129
129
  await fsExtra.copy(src, dest);
130
+ if (process.env.HEAVY_DEBUG) {
131
+ console.log('🪲 await fsExtra.copy filtering', src, dest);
132
+ }
133
+
130
134
  }));
131
135
  } else {
136
+ if (process.env.HEAVY_DEBUG) {
137
+ console.log(`🪲 await fsExtra.copy from ${path.join(__dirname, 'spa')}, ${spaTmpPath}`);
138
+ }
139
+
132
140
  await fsExtra.copy(path.join(__dirname, 'spa'), spaTmpPath, {
133
141
  filter: (src) => {
142
+ if (process.env.HEAVY_DEBUG) {
143
+ console.log('🪲 await fsExtra.copy filtering', src);
144
+ }
145
+
134
146
  return !src.includes('/adminforth/spa/node_modules') && !src.includes('/adminforth/spa/dist');
135
147
  },
136
148
  });
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "adminforth",
3
- "version": "1.0.24",
3
+ "version": "1.0.26",
4
4
  "description": "OpenSource Vue3 powered forth-generation admin panel",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "echo \"Error: no test specified\" && exit 1",
9
9
  "build": "tsc",
10
- "rollout": "tsc && npm version patch && npm publish"
10
+ "rollout": "tsc && cp -r spa dist/spa && npm version patch && npm publish"
11
11
  },
12
12
  "author": "devforth.io",
13
13
  "license": "ISC",
@@ -1,16 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const vue_1 = require("vue");
7
- const pinia_1 = require("pinia");
8
- /* IMPORTANT:ADMINFORTH IMPORTS */
9
- const App_vue_1 = __importDefault(require("./App.vue"));
10
- const router_1 = __importDefault(require("./router"));
11
- const app = (0, vue_1.createApp)(App_vue_1.default);
12
- /* IMPORTANT:ADMINFORTH COMPONENT REGISTRATIONS */
13
- app.use((0, pinia_1.createPinia)());
14
- app.use(router_1.default);
15
- /* IMPORTANT:ADMINFORTH CUSTOM USES */
16
- app.mount('#app');
@@ -1,79 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const vue_router_1 = require("vue-router");
30
- const HomeView_vue_1 = __importDefault(require("../views/HomeView.vue"));
31
- const ResourceParent_vue_1 = __importDefault(require("@/views/ResourceParent.vue"));
32
- const ListView_vue_1 = __importDefault(require("@/views/ListView.vue"));
33
- const ShowView_vue_1 = __importDefault(require("@/views/ShowView.vue"));
34
- const EditView_vue_1 = __importDefault(require("@/views/EditView.vue"));
35
- const CreateView_vue_1 = __importDefault(require("@/views/CreateView.vue"));
36
- const router = (0, vue_router_1.createRouter)({
37
- history: (0, vue_router_1.createWebHistory)(import.meta.env.BASE_URL),
38
- routes: [
39
- {
40
- path: '/',
41
- name: 'home',
42
- component: HomeView_vue_1.default
43
- },
44
- {
45
- path: '/login',
46
- name: 'login',
47
- component: () => Promise.resolve().then(() => __importStar(require('@/views/LoginView.vue')))
48
- },
49
- {
50
- path: '/resource/:resourceId',
51
- component: ResourceParent_vue_1.default,
52
- name: 'resource',
53
- children: [
54
- {
55
- path: '',
56
- component: ListView_vue_1.default,
57
- name: 'resource-list'
58
- },
59
- {
60
- path: 'show/:primaryKey',
61
- component: ShowView_vue_1.default,
62
- name: 'resource-show'
63
- },
64
- {
65
- path: 'edit/:primaryKey',
66
- component: EditView_vue_1.default,
67
- name: 'resource-edit'
68
- },
69
- {
70
- path: 'create',
71
- component: CreateView_vue_1.default,
72
- name: 'resource-create'
73
- },
74
- ]
75
- },
76
- /* IMPORTANT:ADMINFORTH ROUTES */
77
- ]
78
- });
79
- exports.default = router;
@@ -1,154 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.useCoreStore = void 0;
16
- const vue_1 = require("vue");
17
- const pinia_1 = require("pinia");
18
- const utils_1 = require("@/utils");
19
- const router_1 = __importDefault(require("@/router"));
20
- function findHomepage(menu) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- for (const item of menu) {
23
- if (item.homepage) {
24
- return item;
25
- }
26
- if (item.children) {
27
- const res = findHomepage(item.children);
28
- if (res) {
29
- return res;
30
- }
31
- }
32
- }
33
- return null;
34
- });
35
- }
36
- exports.useCoreStore = (0, pinia_1.defineStore)('core', () => {
37
- const resourceById = (0, vue_1.ref)([]);
38
- const menu = (0, vue_1.ref)([]);
39
- const config = (0, vue_1.ref)({});
40
- const record = (0, vue_1.ref)({});
41
- const resourceColumns = (0, vue_1.ref)(null);
42
- const resourceColumnsError = (0, vue_1.ref)('');
43
- const resourceColumnsId = (0, vue_1.ref)(null);
44
- const user = (0, vue_1.ref)(null);
45
- function fetchMenuAndResource() {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- const resp = yield (0, utils_1.callAdminForthApi)({
48
- path: '/get_base_config',
49
- method: 'GET',
50
- });
51
- menu.value = resp.menu;
52
- resourceById.value = resp.resources.reduce((acc, resource) => {
53
- acc[resource.resourceId] = resource;
54
- return acc;
55
- }, {});
56
- config.value = resp.config;
57
- user.value = resp.user;
58
- // find homepage:true in menu recuresively
59
- if (import.meta.env.DEV) {
60
- return;
61
- }
62
- else {
63
- const homepage = yield findHomepage(menu.value);
64
- if (homepage) {
65
- if (homepage.resourceId) {
66
- // redirect to homepage
67
- router_1.default.push({ name: 'resource-list', params: { resourceId: homepage.resourceId } });
68
- }
69
- else {
70
- // redirect to path
71
- router_1.default.push(homepage.path);
72
- }
73
- }
74
- }
75
- });
76
- }
77
- function fetchRecord(_a) {
78
- return __awaiter(this, arguments, void 0, function* ({ resourceId, primaryKey }) {
79
- record.value = null;
80
- record.value = yield (0, utils_1.callAdminForthApi)({
81
- path: '/get_record',
82
- method: 'POST',
83
- body: {
84
- resourceId: resourceId,
85
- primaryKey: primaryKey,
86
- }
87
- });
88
- });
89
- }
90
- function fetchColumns(_a) {
91
- return __awaiter(this, arguments, void 0, function* ({ resourceId }) {
92
- if (resourceColumnsId.value === resourceId && resourceColumns.value) {
93
- // already fetched
94
- return;
95
- }
96
- resourceColumnsId.value = resourceId;
97
- resourceColumns.value = null;
98
- resourceColumnsError.value = '';
99
- const res = yield (0, utils_1.callAdminForthApi)({
100
- path: '/get_resource_columns',
101
- method: 'POST',
102
- body: {
103
- resourceId,
104
- }
105
- });
106
- if (res.error) {
107
- resourceColumnsError.value = res.error;
108
- }
109
- else {
110
- resourceColumns.value = res.resource.columns;
111
- }
112
- });
113
- }
114
- function getPublicConfig() {
115
- return __awaiter(this, void 0, void 0, function* () {
116
- const res = yield (0, utils_1.callAdminForthApi)({
117
- path: '/get_public_config',
118
- method: 'GET',
119
- });
120
- config.value = Object.assign(Object.assign({}, config.value), res);
121
- });
122
- }
123
- function logout() {
124
- return __awaiter(this, void 0, void 0, function* () {
125
- yield (0, utils_1.callAdminForthApi)({
126
- path: '/logout',
127
- method: 'POST',
128
- });
129
- });
130
- }
131
- const username = (0, vue_1.computed)(() => {
132
- const usernameField = config.value.usernameField;
133
- return user.value && user.value[usernameField];
134
- });
135
- const userFullname = (0, vue_1.computed)(() => {
136
- const userFullnameField = config.value.userFullnameField;
137
- return user.value && user.value[userFullnameField];
138
- });
139
- return {
140
- config,
141
- resourceById,
142
- menu,
143
- username,
144
- userFullname,
145
- getPublicConfig,
146
- fetchMenuAndResource,
147
- fetchRecord,
148
- record,
149
- resourceColumns,
150
- fetchColumns,
151
- resourceColumnsError,
152
- logout
153
- };
154
- });
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useModalStore = void 0;
4
- const vue_1 = require("vue");
5
- const pinia_1 = require("pinia");
6
- exports.useModalStore = (0, pinia_1.defineStore)('modal', () => {
7
- const modalContent = (0, vue_1.ref)({
8
- title: 'title',
9
- content: 'content',
10
- acceptText: 'acceptText',
11
- cancelText: 'cancelText',
12
- });
13
- const isOpened = (0, vue_1.ref)(false);
14
- const onAcceptFunction = (0, vue_1.ref)(() => { });
15
- function togleModal() {
16
- isOpened.value = !isOpened.value;
17
- }
18
- function setOnAcceptFunction(func) {
19
- onAcceptFunction.value = func;
20
- }
21
- function setModalContent(content) {
22
- modalContent.value = content;
23
- }
24
- function resetmodalState() {
25
- isOpened.value = false;
26
- modalContent.value = {
27
- title: 'title',
28
- content: 'content',
29
- acceptText: 'acceptText',
30
- cancelText: 'cancelText',
31
- };
32
- setOnAcceptFunction(() => { });
33
- }
34
- return { isOpened, setModalContent, togleModal, modalContent, setOnAcceptFunction, onAcceptFunction, resetmodalState };
35
- });
@@ -1,59 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getIcon = exports.callAdminForthApi = exports.callApi = void 0;
16
- const vue_1 = require("vue");
17
- const router_1 = __importDefault(require("./router"));
18
- function callApi(_a) {
19
- return __awaiter(this, arguments, void 0, function* ({ path, method, body = undefined }) {
20
- const options = {
21
- method,
22
- headers: {
23
- 'Content-Type': 'application/json',
24
- },
25
- body: JSON.stringify(body),
26
- };
27
- const fullPath = `${import.meta.env.VITE_ADMINFORTH_PUBLIC_PATH || ''}${path}`;
28
- const r = yield fetch(fullPath, options);
29
- if (r.status == 401) {
30
- console.log('router', router_1.default);
31
- router_1.default.push({ name: 'login' });
32
- return null;
33
- }
34
- return yield r.json();
35
- });
36
- }
37
- exports.callApi = callApi;
38
- function callAdminForthApi(_a) {
39
- return __awaiter(this, arguments, void 0, function* ({ path, method, body = undefined }) {
40
- try {
41
- return callApi({ path: `/adminapi/v1${path}`, method, body });
42
- }
43
- catch (e) {
44
- console.error('error', e);
45
- return { error: `Unexpected error: ${e}` };
46
- }
47
- });
48
- }
49
- exports.callAdminForthApi = callAdminForthApi;
50
- function getIcon(icon) {
51
- // icon format is "feather:icon-name". We need to get IconName in pascal case
52
- if (!icon.includes(':')) {
53
- throw new Error('Icon name should be in format "icon-set:icon-name"');
54
- }
55
- const [iconSet, iconName] = icon.split(':');
56
- const compName = 'Icon' + iconName.split('-').map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join('');
57
- return (0, vue_1.resolveComponent)(compName);
58
- }
59
- exports.getIcon = getIcon;
@@ -1,44 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_url_1 = require("node:url");
7
- const vite_1 = require("vite");
8
- const plugin_vue_1 = __importDefault(require("@vitejs/plugin-vue"));
9
- const customLogger = {
10
- info(msg) {
11
- // Filter out the lines containing '➜ Local:' or '➜ Network:'
12
- if (!msg.includes('➜')) {
13
- console.log(msg);
14
- }
15
- },
16
- warn(msg) {
17
- console.warn(msg);
18
- },
19
- error(msg) {
20
- console.error(msg);
21
- },
22
- clear() {
23
- console.clear();
24
- },
25
- hasWarned: false,
26
- };
27
- // https://vitejs.dev/config/
28
- exports.default = (0, vite_1.defineConfig)({
29
- base: process.env.VITE_ADMINFORTH_PUBLIC_PATH || '/',
30
- server: {
31
- port: 5173,
32
- strictPort: true, // better predictability
33
- },
34
- customLogger,
35
- plugins: [
36
- (0, plugin_vue_1.default)(),
37
- ],
38
- resolve: {
39
- alias: {
40
- '@': (0, node_url_1.fileURLToPath)(new node_url_1.URL('./src', import.meta.url)),
41
- '@@': (0, node_url_1.fileURLToPath)(new node_url_1.URL('./src/custom', import.meta.url)),
42
- }
43
- }
44
- });
@@ -1,10 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const highcharts_vue_1 = __importDefault(require("highcharts-vue"));
7
- function default_1(app) {
8
- app.use(highcharts_vue_1.default);
9
- }
10
- exports.default = default_1;
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const vue_1 = require("vue");
7
- const pinia_1 = require("pinia");
8
- const vue_flowbite_1 = require("@iconify-prerendered/vue-flowbite");
9
- const vue_flowbite_2 = require("@iconify-prerendered/vue-flowbite");
10
- const vue_flowbite_3 = require("@iconify-prerendered/vue-flowbite");
11
- const vue_flowbite_4 = require("@iconify-prerendered/vue-flowbite");
12
- const vue_flowbite_5 = require("@iconify-prerendered/vue-flowbite");
13
- const vue_typcn_1 = require("@iconify-prerendered/vue-typcn");
14
- const vue_flowbite_6 = require("@iconify-prerendered/vue-flowbite");
15
- const vueUses_ts_1 = __importDefault(require("@/custom/./custom/vueUses.ts"));
16
- const App_vue_1 = __importDefault(require("./App.vue"));
17
- const router_1 = __importDefault(require("./router"));
18
- const app = (0, vue_1.createApp)(App_vue_1.default);
19
- app.component('IconChartPieSolid', vue_flowbite_1.IconChartPieSolid);
20
- app.component('IconBrainSolid', vue_flowbite_2.IconBrainSolid);
21
- app.component('IconHomeSolid', vue_flowbite_3.IconHomeSolid);
22
- app.component('IconCaretRightSolid', vue_flowbite_4.IconCaretRightSolid);
23
- app.component('IconUserSolid', vue_flowbite_5.IconUserSolid);
24
- app.component('IconArchive', vue_typcn_1.IconArchive);
25
- app.component('IconTrashBinOutline', vue_flowbite_6.IconTrashBinOutline);
26
- app.use((0, pinia_1.createPinia)());
27
- app.use(router_1.default);
28
- (0, vueUses_ts_1.default)(app);
29
- app.mount('#app');