diff --git a/app/assets/styles/overrides-components.scss b/app/assets/styles/overrides-components.scss index 36d445d..9282d71 100644 --- a/app/assets/styles/overrides-components.scss +++ b/app/assets/styles/overrides-components.scss @@ -14,6 +14,22 @@ .input { box-shadow: none; } + +.button { + box-shadow: none; +} + +.delete { + --bulma-delete-background-alpha: 0.3; +} + +.modal-card { + border-radius: var(--bulma-modal-card-head-radius); +} + +.modal-card-head { + --bulma-shadow: 0 0.125em 0 0 hsla(var(--bulma-shadow-h), var(--bulma-shadow-s), var(--bulma-shadow-l), 0.1); +} // might break lots of stuff // .skeleton-block:not(:last-child), .media:not(:last-child), .level:not(:last-child), .fixed-grid:not(:last-child), .grid:not(:last-child), .tabs:not(:last-child), .pagination:not(:last-child), .message:not(:last-child), .card:not(:last-child), .breadcrumb:not(:last-child), .field:not(:last-child), .file:not(:last-child), .title:not(:last-child), .subtitle:not(:last-child), .tags:not(:last-child), .table:not(:last-child), .table-container:not(:last-child), .progress:not(:last-child), .notification:not(:last-child), .content:not(:last-child), .buttons:not(:last-child), .box:not(:last-child), .block:not(:last-child) { // margin-bottom: inherit; diff --git a/app/components/Modal.vue b/app/components/Modal.vue index 0bc3460..0cd6b5d 100644 --- a/app/components/Modal.vue +++ b/app/components/Modal.vue @@ -1,7 +1,10 @@ @@ -24,6 +28,7 @@ import { onMounted } from "vue"; import { useRoute } from "vue-router"; import SnackBar from "@/components/snackbar/SnackBar.vue"; import Modal from "@/components/Modal.vue"; + const route = useRoute(); const { $getdata, $requestLogin, $store } = useNuxtApp(); var authorized = ref(false); diff --git a/app/plugins/02-connection.js b/app/plugins/02-connection.js index 92b56f4..4bbfc9b 100644 --- a/app/plugins/02-connection.js +++ b/app/plugins/02-connection.js @@ -1097,7 +1097,7 @@ export default defineNuxtPlugin((nuxtApp) => { ? $snackbar("Data has been successfully saved to the system.", "Success", "Success") : $snackbar("Dữ liệu đã được lưu vào hệ thống", "Thành công", "Success"); } - return rs.data; + return rs; } catch (err) { console.log(err); return "error"; diff --git a/app/plugins/04-components.js b/app/plugins/04-components.js index 6cc5973..0c226f1 100644 --- a/app/plugins/04-components.js +++ b/app/plugins/04-components.js @@ -71,7 +71,6 @@ import MenuAccount from "~/components/menu/MenuAccount.vue"; import PhaseAdvance from "~/components/application/PhaseAdvance.vue"; import ImageLayout from "@/components/media/ImageLayout.vue"; import ProjectDocuments from "~/components/product/ProjectDocuments.vue"; -import ProductEdit from "~/components/product/ProductEdit.vue"; import Cart from "~/components/product/Cart.vue"; import CountdownTimer from "~/components/common/CountdownTimer.vue"; diff --git a/package-lock.json b/package-lock.json index 6c29727..4adbe4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,7 @@ "vue3-quill": "^0.3.1" }, "devDependencies": { + "@iconify-json/material-symbols": "^1.2.69", "@nuxt/icon": "^2.2.1", "nuxt": "^4.2.0", "prettier": "3.8.3", @@ -1289,6 +1290,15 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@iconify-json/material-symbols": { + "version": "1.2.69", + "resolved": "https://registry.npmjs.org/@iconify-json/material-symbols/-/material-symbols-1.2.69.tgz", + "integrity": "sha512-N5n1p1vXsSJag9RmorZAwN5f5rs0lJfYa5xKs1FGKNV9DerVlMqG4nCYOoCb7XjwWWT1o+1Dc9Uu/cmDtCnb8Q==", + "dev": true, + "dependencies": { + "@iconify/types": "*" + } + }, "node_modules/@iconify/collections": { "version": "1.0.670", "resolved": "https://registry.npmjs.org/@iconify/collections/-/collections-1.0.670.tgz", diff --git a/package.json b/package.json index 233e2de..1c06aab 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "vue": "latest" }, "devDependencies": { + "@iconify-json/material-symbols": "^1.2.69", "@nuxt/icon": "^2.2.1", "nuxt": "^4.2.0", "prettier": "3.8.3", diff --git a/server/api/hello.js b/server/api/hello.js new file mode 100644 index 0000000..46e7f7e --- /dev/null +++ b/server/api/hello.js @@ -0,0 +1,12 @@ +export default defineEventHandler(async (event) => { + const query = getQuery(event); + const response = await $fetch.raw(query.url, { responseType: "arrayBuffer" }); + + // Copy the content-type from the upstream response + const contentType = response.headers.get("content-type") || "application/octet-stream"; + + setHeader(event, "Content-Type", contentType); + setHeader(event, "Content-Disposition", `attachment; filename="download"`); + + return response._data; +});