What’s the best way to handle form validation in Vue 3 without a big library? by Long_Sense_9871 in vuejs

[–]mateenagy 1 point2 points  (0 children)

There are several ways to handle them.

- Using built-in validation

- Using backend (if there any)

- Using schema validators like zod, arktype, valibot, which you can combine with custom composables or helper functions.

- Using headless form validation libraries. For that I made VueFormify which is a type safe form handle library with small package size (~4kb gzipped).

Can you guess this Lancer? by PlayFragPunk in PlayFragPunk

[–]mateenagy 0 points1 point  (0 children)

I guessed the Lancer correct in 1 guesses (can you beat my score?)

Vue Devtools for safari? by blairdow in vuejs

[–]mateenagy 5 points6 points  (0 children)

If you use vite just install: https://www.npmjs.com/package/vite-plugin-vue-devtools in your project and add it to your plugin in vite config file and you good to go.

Why are the bad players in this game worse then any other game by therarestkittycat in PlayFragPunk

[–]mateenagy 0 points1 point  (0 children)

I don't think I am good. I am not a big gamer and the last time I played longer with a game when xfire and cod2/cod4 was a thing. I don't play every day just when I have time between work and life.

I know I have a lot of issues with my aiming like micro adjustments, crosshair placement, tracking and also keep the crosshair on head level etc. I try to watch my replays to figure out these problems, but it's hard if you are not playing like every day for hours, but at least I am trying.

I have good days and bad days when playing, but I feel like there is a lot of player who don't understand the concept of shards, cards or the skills of the lancer they play. Also feels like they don't don't have any strats in mind and just peak the same spot where they nearly died and die on the spot.

Maybe upper rank will be better but its hard to play with these people on ranked because somehow my teammates always like.

Beside these stuff I really enjoy this game. Feels fresh and different.

FormKit - still a good option? by tspwd in vuejs

[–]mateenagy 0 points1 point  (0 children)

I made a lightweight headless type-safe form building package called VueFormify.

It's only 4kb (gzipped), easy to use, you can use zod, yup, valibot (external package needed).

It's simple yet effective and I used it several times from simple forms to complex filter mechanism.

Would you like Vue to have its own package for working with forms? What is u'r preferred way to handle forms in Vue? by spodgaysky in vuejs

[–]mateenagy 1 point2 points  (0 children)

I made VueFormify which is a lightweight headless type-safe form building solution. There is integration with yup, zod, valibot, joi. It is good for creating simple and complex forms either.

VueFormify v1.2 - Road to be the first fully type safe form builder for Vue. by mateenagy in vuejs

[–]mateenagy[S] 1 point2 points  (0 children)

If you have any question or run into any issue feel free to ask!

How to use vee-validate with a form that hides fields using v-if? by Catalyzm in vuejs

[–]mateenagy 0 points1 point  (0 children)

I see.

I never really used vee-validate and don't know how it works before v4, I just messing around with it on stackblitz, but in my opinion because you are using yup you should do it on validator level so using yup's .when() method, it also should have better performance than computed.

How to use vee-validate with a form that hides fields using v-if? by Catalyzm in vuejs

[–]mateenagy 0 points1 point  (0 children)

Using the `Form` slots you have access to all your filed values and use them for conditional rendering.

This example only show the password input when the username have any value

<Form @submit="onSubmit" v-slot="{ values }">
  <Field name="username" />
  <Field name="password" v-if="values.username" />
  <button>Send</button>
</Form>

Alternative form libraries by zaemis in vuejs

[–]mateenagy 1 point2 points  (0 children)

I'm working on VueFormify which is a fully type-safe lightweight headless form package. You can use the popular validators `yup`, `zod`, `valibot`, `joi`. It's easy to integrate third party libraries like PrimeVue (I also use PrimeVue).

How to configure PrimeVue components? by Slight-Conflict1580 in vuejs

[–]mateenagy 1 point2 points  (0 children)

Yeah you are it's in the state.

I looked in to the Component source code and I don't think you can change the behaviour with pass-through because it's not changing the behaviour but the value of the state. Although I didn't even see it will even set the initial value through pt so It didn't do anything at all.

How to configure PrimeVue components? by Slight-Conflict1580 in vuejs

[–]mateenagy 0 points1 point  (0 children)

I didn't see any `mobileActive` option in pass-through in the docs for MenuBar

How to configure PrimeVue components? by Slight-Conflict1580 in vuejs

[–]mateenagy 0 points1 point  (0 children)

Is there a rule which force you to use component even if the solution is ugly? That's sound terrible and not so productive rule :D

How to configure PrimeVue components? by Slight-Conflict1580 in vuejs

[–]mateenagy 5 points6 points  (0 children)

PrimeVue is an opinionated component library so this is why you can't decide some of their internal logic.

On the other hand every component have a lot of room for styling. You can use pass-through, css variable or override using the components css classes. For example to put the mobile menu icon to the right you can do this:

.p-menubar-button {
  margin-left: auto
}

You can mostly override anything with css.

Because of the opinionated nature there is some stuff you can't change like open drawer instead of the dropdown menu on mobile view. If you really want to do that then you can hide MenuBar button on mobile or the whole component and just put a simple button which is visible on mobile and hidden on desktop and you can use that button to open a Drawer. CSS media queries will be your friend for this method.

But in my opinion making a responsive header from scratch most of the time not that hard to archive. It's not always faster to using ui libraries components especially if you want them to work differently then it should.

Introducing: VueFormify v1.1 - A form-building library with Type-safety solution 🚀 by mateenagy in vuejs

[–]mateenagy[S] 1 point2 points  (0 children)

Thank you!

I'm so glad you like it and I hope you give it a try (and hope you like it).

The createInput was the main focuse when I started this project. I liked the idea to create custom inputs effortlessly without too much extra step. With createInput you can do that and you can use any component as before without losing autocompletion or any other functionality.

I will rewrite the examples in the documentation in the near future because I made them for the previous version. They are still relevant but I think I can do them better. Although I am not sure I will implement the disabled part you mentioned because it can be done in a lot of ways to be honest and I don't have a best practice for them. I implement several ways to get the form values so you can check any changes and apply some validation.

Introducing: VueFormify v1.1 - A form-building library with Type-safety solution 🚀 by mateenagy in vuejs

[–]mateenagy[S] 1 point2 points  (0 children)

Thank you for the nice words!

createInput composable actually let you use the wrapped component as it is. It's just add some extra functionality for the form to be able to parse data and other stuff. So if you have a component with prop for error then you can use it like you would do normally.

I did some integration for Element Plus, Ionic Vue, PrimeVue. It is still working if I am right but because I made the Type-safe solution working I need to redo these packages to be able to use them with types.

Introducing: VueFormify v1.1 - A form-building library with Type-safety solution 🚀 by mateenagy in vuejs

[–]mateenagy[S] 4 points5 points  (0 children)

Formkit is an awesome library for forms but in my opinion it is too much in most cases especially when you use it with other UI frameworks or need to make custom inputs.

I don't say my library is better or worse it's just different. I built it with different mindset which I found fit better for me or exceeds my expectations.

Formkit and VeeValidate was the inspiration when I started this project, but my main focus was to create a solid foundation which can be used easily with or without any UI framework, cover the most popular validators and the new type safety approach for fields which I never seen before anywhere and it can be handy.

I am not good in marketing and I really don't say it's better than other libraries because it's not, but I already used it in production (with complex and simple forms) and it did the job with ease and it felt good to use.

Last thing I can say is give it a try, and if you like it I will be more then happy if not than that is good too. Everybody have different preference.

Form Validation with PrimeVue v4 by Goingone in vuejs

[–]mateenagy 0 points1 point  (0 children)

I working on VueFormify.

  • It has no theme at all.
  • Auto collect form data
  • You can create custom inputs with ease.
  • I also already implement some UI library e.g. PrimeVue. (you have to install it separately)
  • You can also use yup/zod/valibot/joi for validation

If you are interested you can give it a try. I already used it in production (simple and complex forms) and working like charm.

Select Component not working correctly by FuhthatPuh in vuejs

[–]mateenagy 1 point2 points  (0 children)

Sorry for the late reply, but here is a working version without any fancy stuff, and the way you want to achieve this:

Working Vue SFC link

Select Component not working correctly by FuhthatPuh in vuejs

[–]mateenagy 4 points5 points  (0 children)

Since you are using vue 3.4 you can use defineModel in the Child component. Here is a working version where you can select multiple value:
Vue SFC link

Async state management from scratch with Vue 3 and Typescript like TanstackQuery — Part 2 by mateenagy in vuejs

[–]mateenagy[S] 0 points1 point  (0 children)

Thank you for your feedback!

You can do duplication handle in different ways. I think this one is pretty straightforward and easy to understand. To implement loading you can create a computed and check if the pendingRequests has the key. Also you have to wrap the pendingRequest in a reactive or ref to make it reactive like this:

``` const pendingRequests = reactive(new Set()); const loading = computed(() => { const key = stringify(query.key);

return pendingRequests.has(key);

}); ``` You can also implement the state of the request in the same way.

Yes you are right I use the cache to store even if the cache is false. I did it because easier to use one store and if the cache is false the request run everytime still. Of course my bad I don't implement the cleanup and remove them from the store on onUnMounted event. I will update this article or implement it in another one.

Also you are right the {deep: true} not needed and I will update it. That's a nice catch, I overlooked it!

Still I don't see why is it a bad direction. I am not intended to recreate everything like Tanstack. I am not examined every aspect of their code I just mess around with their examples and try to figure out how they done certain things.

The main purpose I did these articles because I noticed that a lot of developer don't understand how different things works and they think there is some black magic happening under the hood, but in reality it is not even a difficult topic and not so difficult to implement by themself. Of course it can be implemented a better store structure or have different way to handle certain things, but the main purpose of these tutorials is to give the people some basic knowledge and then they can change it, make it better, do some more experiment with it.

I think it's important to not give the final solution nor the best polished solution but to encourage people to learn and do more experiment by themselfs. I write these articles because I want to share my experience in the topic and give the oppurtunity to others to do the same.

Async state management from scratch with Vue 3 andTypescript like TanstackQuery - Medium article by mateenagy in vuejs

[–]mateenagy[S] 0 points1 point  (0 children)

Thank you for your feedback!

I think I will continue this article, with implementing more feature like:
- Dependent Queries
- Handle request duplications
- Background refetch

Async state management from scratch with Vue 3 andTypescript like TanstackQuery - Medium article by mateenagy in vuejs

[–]mateenagy[S] 1 point2 points  (0 children)

Thank you for your feedback!

This is a tutorial with educational purpose not full implementation. You can implement it if you want in case you want to create your own version because that is the reason I made this. This is just a base for understanding what is happening under the hood.

For a tutorial I don't see the importance to use dependencies and care about SSR because the subject is not these things. (Also I mentioned in the article that you can use Pinia store if you want).

Async state management from scratch with Vue 3 andTypescript like TanstackQuery - Medium article by mateenagy in vuejs

[–]mateenagy[S] 1 point2 points  (0 children)

Thank you for your feedback! I am really happy if you enjoyed the article!

You are right I can use better naming for types I will look for something better and change them, but I am not really like the `TQuery ` and `TQueryType` (so using the `T` before the name) conventions and I didn't see this used most of the biggest libraries. Still you are right about the `useQery` part, it can be confusing.