diff --git a/.adonisjs/server/pages.d.ts b/.adonisjs/server/pages.d.ts index f6a826b..d2c4aa1 100644 --- a/.adonisjs/server/pages.d.ts +++ b/.adonisjs/server/pages.d.ts @@ -37,5 +37,6 @@ declare module '@adonisjs/inertia/types' { 'widgets/SimpleGallery': ExtractProps<(typeof import('../../inertia/pages/widgets/SimpleGallery.vue'))['default']> 'widgets/TableComponent': ExtractProps<(typeof import('../../inertia/pages/widgets/TableComponent.vue'))['default']> 'widgets/ValidationError': ExtractProps<(typeof import('../../inertia/pages/widgets/ValidationError.vue'))['default']> + 'widgets/FilterDropdown': ExtractProps<(typeof import('../../inertia/pages/widgets/FilterDropdown.vue'))['default']> } } diff --git a/app/validators/Auth/register.ts b/app/validators/Auth/register.ts deleted file mode 100644 index c5fce1c..0000000 --- a/app/validators/Auth/register.ts +++ /dev/null @@ -1,15 +0,0 @@ -import vine from '@vinejs/vine' - -export const registerValidator = vine.compile( - vine.object({ - name: vine.string().minLength(3).maxLength(64), - email: vine - .string() - .email() - .unique(async (query, field) => { - const user = await query.from('users').where('email', field).first() - return !user - }), - password: vine.string().minLength(8).maxLength(32), - }) -) diff --git a/MIGRATION_CHECKLIST.md b/docs/migration-history/MIGRATION_CHECKLIST.md similarity index 100% rename from MIGRATION_CHECKLIST.md rename to docs/migration-history/MIGRATION_CHECKLIST.md diff --git a/MIGRATION_COMPLETE.md b/docs/migration-history/MIGRATION_COMPLETE.md similarity index 100% rename from MIGRATION_COMPLETE.md rename to docs/migration-history/MIGRATION_COMPLETE.md diff --git a/MIGRATION_PAGES_SUMMARY.md b/docs/migration-history/MIGRATION_PAGES_SUMMARY.md similarity index 100% rename from MIGRATION_PAGES_SUMMARY.md rename to docs/migration-history/MIGRATION_PAGES_SUMMARY.md diff --git a/inertia/pages/components/edit.vue b/inertia/pages/components/edit.vue index 4ca2301..f4f0078 100644 --- a/inertia/pages/components/edit.vue +++ b/inertia/pages/components/edit.vue @@ -3,14 +3,14 @@ import { reactive } from 'vue' import { Link } from '@adonisjs/inertia/vue' import { usePage } from '@inertiajs/vue3' import CustomSelect from '~/pages/widgets/CustomSelect.vue' +import type { Component, ComponentType } from '~/pages/types/UITypes' const { props } = usePage<{ - component: any - types: any[] - origin: string + component: Component + types: ComponentType[] errors?: Record }>() -const { component, types, origin } = props +const { component, types } = props const form = reactive({ id: component.id, @@ -18,7 +18,6 @@ const form = reactive({ price: component.price, typeId: component.type.id, purchaseDate: component.purchaseDate, - origin: origin, }) diff --git a/inertia/pages/computers/create.vue b/inertia/pages/computers/create.vue index 9981a92..28fd668 100644 --- a/inertia/pages/computers/create.vue +++ b/inertia/pages/computers/create.vue @@ -1,11 +1,12 @@ diff --git a/inertia/pages/widgets/ComponentsViewer.vue b/inertia/pages/widgets/ComponentsViewer.vue index 9113335..7934c3f 100644 --- a/inertia/pages/widgets/ComponentsViewer.vue +++ b/inertia/pages/widgets/ComponentsViewer.vue @@ -1,6 +1,7 @@  diff --git a/inertia/pages/widgets/ComputersViewer.vue b/inertia/pages/widgets/ComputersViewer.vue index f955fb4..68a7820 100644 --- a/inertia/pages/widgets/ComputersViewer.vue +++ b/inertia/pages/widgets/ComputersViewer.vue @@ -3,106 +3,45 @@ import { noImagePlaceholder } from '~/assets/images' import { usePage } from '@inertiajs/vue3' import Computer from '#models/computer' import ComputerCard from '~/pages/widgets/ComputerCard.vue' -import { computed, reactive, ref } from 'vue' +import FilterDropdown from '~/pages/widgets/FilterDropdown.vue' +import { computed, ref } from 'vue' const { computers } = usePage<{ computers: Computer[] }>().props -const stateDropdownOpen = ref(false) -function toggleDropdown() { - stateDropdownOpen.value = !stateDropdownOpen.value -} - -const filters = reactive({ +const filters = ref>({ onGoing: true, finished: true, sold: false, }) + +const stateToFilterKey: Record = { + ON_GOING: 'onGoing', + FINISHED: 'finished', + SOLD: 'sold', +} + const filteredComputers = computed(() => { return computers.filter((computer) => { - const isOnGoing = filters.onGoing && computer.state.name == 'ON_GOING' - const isFinished = filters.finished && computer.state.name == 'FINISHED' - const isSold = filters.sold && computer.state.name == 'SOLD' - return isOnGoing || isFinished || isSold + const key = stateToFilterKey[computer.state.name] + return key ? filters.value[key] : false }) }) - - diff --git a/inertia/pages/widgets/FilterDropdown.vue b/inertia/pages/widgets/FilterDropdown.vue new file mode 100644 index 0000000..c89970a --- /dev/null +++ b/inertia/pages/widgets/FilterDropdown.vue @@ -0,0 +1,72 @@ + + +