-
+
+
Belum ada varian
-
+ @click="getVariantPrice(variant) && addToCart(product, variant)">
@@ -284,14 +275,8 @@ function submit() {
-
-
@@ -326,7 +311,7 @@ function submit() {
-
+
@@ -344,7 +329,7 @@ function submit() {
-
+
@@ -369,7 +354,7 @@ function submit() {
-
+
Diskon
-
+
Biaya Marketplace
-
+
Net
@@ -461,7 +445,7 @@ function submit() {
Keterangan
-
+
diff --git a/resources/js/components/admin/manage/purchases/PurchasePosForm.vue b/resources/js/components/admin/manage/purchases/PurchasePosForm.vue
index 36ea949..67cb369 100644
--- a/resources/js/components/admin/manage/purchases/PurchasePosForm.vue
+++ b/resources/js/components/admin/manage/purchases/PurchasePosForm.vue
@@ -35,6 +35,7 @@ import {
import { Separator } from '@/components/ui/separator';
import { Textarea } from '@/components/ui/textarea';
import { getFirstCoverImage } from '@/lib/catalog-cover';
+import { formErrors } from '@/lib/form';
import { formatRupiah, parseRupiah } from '@/lib/rupiah';
import type { MediaItem } from '@/types/media';
import { appendRootPhotosToFormData, createMediaUploadState } from '@/types/media';
@@ -180,10 +181,6 @@ function buildFormData(): FormData {
return formData;
}
-function formError(key: string): string | undefined {
- return (form.errors as Record)[key];
-}
-
function submit() {
if (cart.value.length === 0) {
toast.error('Tambahkan minimal satu bahan baku ke keranjang.');
@@ -232,30 +229,20 @@ function submit() {
-
+
{{ rawMaterial.unit_label }}
-
+
Belum ada varian
-
+ @click="addToCart(rawMaterial, price)">
@@ -265,13 +252,8 @@ function submit() {
{{ price.price_formatted }}
-
+
@@ -306,7 +288,7 @@ function submit() {
-
+
Diskon
-
+
Total
@@ -393,11 +375,11 @@ function submit() {
Keterangan
-
+
+ :errors="formErrors(form, 'photos')" />
diff --git a/resources/js/components/admin/master/categories/CategoryFormModal.vue b/resources/js/components/admin/master/categories/CategoryFormModal.vue
index 123b3c3..2d75cf3 100644
--- a/resources/js/components/admin/master/categories/CategoryFormModal.vue
+++ b/resources/js/components/admin/master/categories/CategoryFormModal.vue
@@ -19,6 +19,7 @@ import {
FieldSet,
} from '@/components/ui/field';
import { Input } from '@/components/ui/input';
+import { formErrors } from '@/lib/form';
import type { CategoryFormData, CategoryListItem } from '@/types/category';
const open = defineModel('open', { default: false });
@@ -96,7 +97,7 @@ function submit() {
Nama
-
+
diff --git a/resources/js/components/admin/master/customers/CustomerFormModal.vue b/resources/js/components/admin/master/customers/CustomerFormModal.vue
index bde316e..c6b1211 100644
--- a/resources/js/components/admin/master/customers/CustomerFormModal.vue
+++ b/resources/js/components/admin/master/customers/CustomerFormModal.vue
@@ -21,7 +21,8 @@ import {
import { Input } from '@/components/ui/input';
import { PhoneNumberInput } from '@/components/ui/phone-number-input';
import { Textarea } from '@/components/ui/textarea';
-import type { CustomerFormData, CustomerListItem } from '@/types/customer';
+import { formErrors } from '@/lib/form';
+import type { CustomerFormData, CustomerListItem } from '@/types/customers';
const open = defineModel('open', { default: false });
@@ -102,19 +103,19 @@ function submit() {
Nama
-
+
Nomor Telepon
-
+
Alamat
-
+
diff --git a/resources/js/components/admin/master/products/ProductForm.vue b/resources/js/components/admin/master/products/ProductForm.vue
index 13c9365..efd6224 100644
--- a/resources/js/components/admin/master/products/ProductForm.vue
+++ b/resources/js/components/admin/master/products/ProductForm.vue
@@ -16,6 +16,7 @@ import {
import { Input } from '@/components/ui/input';
import { RupiahInput } from '@/components/ui/rupiah-input';
import { Textarea } from '@/components/ui/textarea';
+import { formErrors } from '@/lib/form';
import { parseRupiah } from '@/lib/rupiah';
import { appendMediaToFormData, createMediaUploadState } from '@/types/media';
import {
@@ -282,7 +283,7 @@ function submit() {
Nama Produk
-
+
@@ -290,7 +291,7 @@ function submit() {
-
+
diff --git a/resources/js/components/admin/master/raw-materials/RawMaterialForm.vue b/resources/js/components/admin/master/raw-materials/RawMaterialForm.vue
index e47601f..cc3fbf2 100644
--- a/resources/js/components/admin/master/raw-materials/RawMaterialForm.vue
+++ b/resources/js/components/admin/master/raw-materials/RawMaterialForm.vue
@@ -22,6 +22,7 @@ import {
SelectTrigger,
SelectValue,
} from '@/components/ui/select';
+import { formErrors } from '@/lib/form';
import { parseRupiah } from '@/lib/rupiah';
import { appendMediaToFormData, createMediaUploadState } from '@/types/media';
import type {
@@ -228,7 +229,7 @@ function submit() {
Nama Bahan Baku
-
+
@@ -243,7 +244,7 @@ function submit() {
-
+
@@ -334,7 +335,7 @@ function submit() {
-
+
diff --git a/resources/js/components/admin/master/suppliers/SupplierFormModal.vue b/resources/js/components/admin/master/suppliers/SupplierFormModal.vue
index 785e16a..c7a8550 100644
--- a/resources/js/components/admin/master/suppliers/SupplierFormModal.vue
+++ b/resources/js/components/admin/master/suppliers/SupplierFormModal.vue
@@ -21,6 +21,7 @@ import {
import { Input } from '@/components/ui/input';
import { PhoneNumberInput } from '@/components/ui/phone-number-input';
import { Textarea } from '@/components/ui/textarea';
+import { formErrors } from '@/lib/form';
import type { SupplierFormData, SupplierListItem } from '@/types/supplier';
const open = defineModel('open', { default: false });
@@ -102,19 +103,19 @@ function submit() {
Nama
-
+
Nomor Telepon
-
+
Alamat
-
+
diff --git a/resources/js/lib/form.ts b/resources/js/lib/form.ts
new file mode 100644
index 0000000..4e814ff
--- /dev/null
+++ b/resources/js/lib/form.ts
@@ -0,0 +1,10 @@
+import type { InertiaForm } from '@inertiajs/vue3';
+
+export function formErrors>(
+ form: InertiaForm,
+ key: keyof T | string,
+): string[] {
+ const error = form.errors[key as keyof typeof form.errors];
+
+ return error ? [error] : [];
+}
diff --git a/resources/js/pages/admin/account/Appearance.vue b/resources/js/pages/admin/account/Appearance.vue
index 9207469..11127de 100644
--- a/resources/js/pages/admin/account/Appearance.vue
+++ b/resources/js/pages/admin/account/Appearance.vue
@@ -7,14 +7,13 @@ import { Card, CardContent } from '@/components/ui/card';
import {
Field,
FieldError,
- FieldGroup,
- FieldLabel,
- FieldSet,
+ FieldGroup, FieldSet
} from '@/components/ui/field';
import { Label } from '@/components/ui/label';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { applyAppearance } from '@/composables/useAppearance';
import AccountLayout from '@/layouts/AccountLayout.vue';
+import { formErrors } from '@/lib/form';
import { cn } from '@/lib/utils';
import type { AppearanceFormData, AppearanceMode } from '@/types/account';
@@ -102,7 +101,7 @@ function submit() {
-
+
diff --git a/resources/js/pages/admin/account/Password.vue b/resources/js/pages/admin/account/Password.vue
index cfca036..4280849 100644
--- a/resources/js/pages/admin/account/Password.vue
+++ b/resources/js/pages/admin/account/Password.vue
@@ -13,6 +13,7 @@ import {
} from '@/components/ui/field';
import { Input } from '@/components/ui/input';
import AccountLayout from '@/layouts/AccountLayout.vue';
+import { formErrors } from '@/lib/form';
import type { PasswordFormData } from '@/types/account';
const form = useForm({
@@ -50,8 +51,7 @@ function submit() {
-
+
@@ -60,7 +60,7 @@ function submit() {
-
+
@@ -69,8 +69,7 @@ function submit() {
-
+
diff --git a/resources/js/pages/admin/account/Profile.vue b/resources/js/pages/admin/account/Profile.vue
index d01889c..040e6dc 100644
--- a/resources/js/pages/admin/account/Profile.vue
+++ b/resources/js/pages/admin/account/Profile.vue
@@ -17,6 +17,7 @@ import { PhoneNumberInput } from '@/components/ui/phone-number-input';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Textarea } from '@/components/ui/textarea';
import AccountLayout from '@/layouts/AccountLayout.vue';
+import { formErrors } from '@/lib/form';
import type { EnumOption, ProfileFormData, ProfileUser } from '@/types/account';
const props = defineProps<{
@@ -60,7 +61,7 @@ function submit() {
-
+
@@ -68,7 +69,7 @@ function submit() {
Username
-
+
@@ -77,7 +78,7 @@ function submit() {
-
+
@@ -85,7 +86,7 @@ function submit() {
Nomor Telepon
-
+
@@ -93,7 +94,7 @@ function submit() {
Tanggal Lahir
-
+
@@ -109,7 +110,7 @@ function submit() {
-
+
@@ -118,7 +119,7 @@ function submit() {
-
+
diff --git a/resources/js/types/category.ts b/resources/js/types/category.ts
index 1ea0dc4..631b545 100644
--- a/resources/js/types/category.ts
+++ b/resources/js/types/category.ts
@@ -6,7 +6,6 @@ export type CategoryListItem = {
export type CategoryFormData = {
name: string;
- slug: string;
};
export type CategoryFilters = {