yuche / vue-strap

Bootstrap components built with Vue.js
http://yuche.github.io/vue-strap/
MIT License
4.72k stars 933 forks source link

Vuejs 2.0 Migration #378

Open Humeira opened 7 years ago

Humeira commented 7 years ago

I have started working on migrating vue-strap to vue 2.0, I'll be grateful if someone can create a new branch v2 here.

Some folks have show interest in migrating to 2.0 as well https://github.com/yuche/vue-strap/issues/372 https://github.com/yuche/vue-strap/issues/374

purepear commented 7 years ago

I just found today this one for vue 2 and bootstrap 4 https://github.com/pi0/bootstrap-vue I haven't tested it properly yet cause it's tricky to run it with vueify and without scss.. but i think if you use webpack it's good to go

Humeira commented 7 years ago

@purepear Yes it kind of have the same thing as vue-strap. But, vue-strap has more users I reckon it will be a really idea to start migrating this one, than moving to another completely different repo.

Humeira commented 7 years ago

@wffranco Hello is it possible for you to create a new branch v2 on this repo?

yuche commented 7 years ago

@Humeira done.

Humeira commented 7 years ago

@yuche cool thanks!

wffranco commented 7 years ago

Well, i done a vue2 branch and started the migration, not finished yet. https://github.com/wffranco/vue-strap/tree/vue2

incomplete the documentation.

Humeira commented 7 years ago

@wffranco can you merge to the new branch v2 with a comment of what you have done, so that we are both not working on same components.

wffranco commented 7 years ago

yep when i finish the migration i do the merge :smile:

Humeira commented 7 years ago

@wffranco you have already done most part? 🤔 i just started doing the same thing.

psi-4ward commented 7 years ago

so we should probably make it more transparent and list alle components in the first comment of this issue and track the progress here.

wffranco commented 7 years ago

I migrated all the components, but had a lot of errors in the documentation, the first one I don't understand it...

I maybe will test the components apart of the project, to know if they work right.

If you can help me to detect what happen with the docs I will appreciate your help.

Humeira commented 7 years ago

@wffranco where can i get your changes?

druppy commented 7 years ago

@wffranco I have cloned you repos, and it build nicely locally, but then i tried the vue-migration-helper, and it came up with 166 errors.

Especially all the errors related to coerce properties and twoWayneed some attention.

The Datepicker.vue has this dispatch error.

If we could find a common solution for these errors, then it is just a question of fixing the Components one at a time (make a list and spit it in 3 ?). Is it possible to work directly on your fork somehow ?

wffranco commented 7 years ago

Sorry I'm really busy with 2 projects, so I have no time to continue the migration right now. @druppy I run the migration helper 3 days ago in src and fix all the errors, let me check if I forgot to push the last changes.

Edit: Nope, I check and I do the last commit 2 days ago and have no migration errors, I fix all that things, even the dispatch errors... maybe need some extra adjustment for a better working, but not related with migration errors.

ropeladder commented 7 years ago

Can confirm that the src directory of the vue2 branch on wffranco's fork returns no errors. I'm getting a build error though because for some reason ButtonGroup.vue got renamed to buttonGroup.vue; otherwise it seems to build fine.

purepear commented 7 years ago

@ropeladder haven't tried it yet but might be a linux/mac/windows - uppercase/lowercase filesystem thing

wffranco commented 7 years ago

I think the best option is testing the components individually, maybe in a clean window... But like I said I have no time right now.

druppy commented 7 years ago

@wffranco Nice work !, please let me know where to get these changes, or when you have time to commit it onto the fork. I have cloned your fork, so I can test it from there.

@ropeladder how did you test that ? I still get 166 errors from the vue-migration-helper tool :-)

ropeladder commented 7 years ago

@druppy Just like this:

git clone https://github.com/wffranco/vue-strap.git
cd vue-strap
git checkout vue2
cd src
vue-migration-helper
wffranco commented 7 years ago

@ropeladder you right I renamed the buttongroup, now match with the standard in the project. But the real problem is that I comment almost all the documentation files and still not working... so I think that need to be tested one by one.

druppy commented 7 years ago

@ropeladder Sorry, I still need to work at my black belt as git ninja :-) git will not checkout isdist has some build js files ... sight.

So, time to test components ... thanks !

ropeladder commented 7 years ago

I'm trying out dropdowns and they appear to work correctly, but Vue gives a warning that they should not be mutating the value property. I don't really understand well enough how the component is built to know what the correct way to refactor would be.

wffranco commented 7 years ago

well, I needed select component so I fix it and fixed the helpers for supporting of laravel 5.3 (give some errors because this uses buble-loader to convert ES2015 and have some limitations).

nobody else have working over my branch? if somebody want to help just tell me or make a push request if you're done something.

Here the branch again if somebody need it: https://github.com/wffranco/vue-strap/tree/vue2

wffranco commented 7 years ago

According to vue2, twoway binding is not supported, except for v-model. But I think on a simple feature to make a twoway binding for any property, compatible with vue 1 and 2, but not tested yet.

druppy commented 7 years ago

@wffranco I have just tried to fix a few build docs errors, but I have no access to the branch :-)

ERROR: Permission to wffranco/vue-strap.git denied to druppy.

wffranco commented 7 years ago

make a pull request? anyway, let me see if I can add you :stuck_out_tongue: EDIT: done, try again.

druppy commented 7 years ago

Yes, thanks ... tried some small changes, time for some more work, now that it is not in vain :-)

Any reason for dist and build content to be added to the repos, git complains about it after a re-build.

wffranco commented 7 years ago

By for now I only will fix the components I need, have a lot of work, but need some components in vue 2 (the documentation are not working, so I test and fix the components in another project).

Next to fix:

webnoob commented 7 years ago

@wffranco Is there a way to see everything that has been ported to vue2 and what is left outstanding?

I'd like to start using this in my project but need to know what's available (and I might be able to help with the migration for the bits I need personally).

Also, with regards to using the Vue2 version, how do we go about that, just npm install vue-sharp as normal or is there a special version we should be installing?

Humeira commented 7 years ago

@webnoob It's still a work in progress. You can find the changes on @wffranco branch vue2. If you want to see vue-strap with vue.js 2.x, just switch to that branch and do a npm install. Everything already in the package.json.

druppy commented 7 years ago

I have tried to fix npm run docs so that it again works and compiles against vue2, this make testing much more simple :) Hope others may find this useful too ...

webnoob commented 7 years ago

@druppy Thanks! I too had noticed it wasn't working and thought it might be useful to have it fixed.

Unfortunately, I don't think my knowledge is good enough with Vue / vue-strap to help out much on this at the moment so appreciate the work you guys are putting in.

wffranco commented 7 years ago

I finally made the docs work in vue 2. But I detected that selectDocs crash my chrome. So I commented the most of the documentations. When you enable something, try to do it one by one.

wffranco commented 7 years ago

Fixed:

Fixed, but have to check them again:

Input return some errors in the docs, and selectDocs crash so maybe must be something in the select component.

druppy commented 7 years ago

@wffranco nice with some progress :-) We ended up changing in the same part of the code, lets see if we can avoid that, in the name of progress. I had the whole docs page rendering with all exiting components, but it is ok to just enable them one at a time.

I will try to focus on the Modal then, as you are working on the other important parts.

webnoob commented 7 years ago

I'd be eternally grateful if someone could work on the Datepicker, my vue knowledge isn't good enough to tackle that beast!

druppy commented 7 years ago

@webnoob Noted :-)

wffranco commented 7 years ago

@druppy if you handle the datepicker I have an idea for a long time but never had time to do it, and is convert the datepicker in a wrapper, something closer to the tooltip / popover, then we can use the datepicker with an input or a button (in some mobile phones the native datepicker looks very good, so I think that in a button you can chose what datepicker to use). Or maybe can be changed to a directive... Just thinking in some options :stuck_out_tongue:

webnoob commented 7 years ago

Just an FYI, I'm occasionally getting this on v-select (using the vue2 branch)

vue-strap.min.js:2 Uncaught (in promise) TypeError: $(...).offBlur is not a function(…)beforeDestroy @ vue-strap.min.js:2callHook @ vue.common.js?e881:1795Vue.$destroy @ vue.common.js?e881:1759destroy$1 @ vue.common.js?e881:1968invokeDestroyHook @ vue.common.js?e881:3883invokeDestroyHook @ vue.common.js?e881:3887invokeDestroyHook @ vue.common.js?e881:3891invokeDestroyHook @ vue.common.js?e881:3891invokeDestroyHook @ vue.common.js?e881:3891invokeDestroyHook @ vue.common.js?e881:3891invokeDestroyHook @ vue.common.js?e881:3891invokeDestroyHook @ vue.common.js?e881:3891invokeDestroyHook @ vue.common.js?e881:3891invokeDestroyHook @ vue.common.js?e881:3887invokeDestroyHook @ vue.common.js?e881:3887removeVnodes @ vue.common.js?e881:3902updateChildren @ vue.common.js?e881:4009patchVnode @ vue.common.js?e881:4042updateChildren @ vue.common.js?e881:3960patchVnode @ vue.common.js?e881:4042patch @ vue.common.js?e881:4151Vue._update @ vue.common.js?e881:1689(anonymous function) @ vue.common.js?e881:1662get @ vue.common.js?e881:729run @ vue.common.js?e881:798flushSchedulerQueue @ vue.common.js?e881:616nextTickHandler @ vue.common.js?e881:396

I'm using hot reload so I don't know if that's the issue but it breaks the page from then on.

druppy commented 7 years ago

@wffranco I have worked a bit on the datepicker (included in docs again), and it seems to work, but select are strange and I still have a some mutate warnings, that I need to understand more.

madr commented 7 years ago

FWIW, I have tested the dist files in the vue2 branch in @wffranco s fork, and I noticed that the input field of the typeahead component silently ignores all keydowns and keyups: you type, but no chars appear in the input field.

I also tried to clone the repo and built the dist files locally from the last commit, but no luck there either.

I have just started with Vue and have no clue, sadly. I could take a look though if someone might give me a hint.

wffranco commented 7 years ago

@webnoob I don't compiled the vuestrap by for now because is not ready. I don't know if @druppy do it, but if he don't, the vue-strap.min.js will not work.

EDIT: Same responce for you @madr, the dist should be some of the last versions for vue1.

druppy commented 7 years ago

@wffranco I don't compile it either I use the npm run docs until all works ... hopefully soon.

webnoob commented 7 years ago

@wffranco @druppy I cloned the source and did "npm run build" myself so the vue-strap.min.js file should be Ok shouldn't it (assuming I stick to only those components that have been migrated). I'm not getting any other errors using those components and I would have expected a lot if I was using components that have not yet been migrated.

Anyways, I only posted that just in case it was something that had been missed. Don't let me distract your fine progress and hard work. Your efforts are appreciated.

druppy commented 7 years ago

@webnoob Thanks, so nice to hear, @wffranco have made a lot of this possible

IanGrainger commented 7 years ago

Ah - this might partly answer a question I just put on SO.com here: http://stackoverflow.com/questions/40266688/typeahead-with-vue-js-2-0 ;)

webnoob commented 7 years ago

@druppy @wffranco There is definitely an issue with the select component. I've updated my source and re-built. The offending line is line 242 in Select.vue $(this.$refs.select).offBlur(). I've commented the line out for now in my version whilst I'm developing but noting here so it can be tracked down later (as I know it's a component that has already been migrated)

druppy commented 7 years ago

@wffranco I have added a Modal that works ... once. I have changed it to let the open state be handled by the parent, as you can see in the docs. If you could give me an idea as to why it will not open second time I would be happy to fix it.

When all this is done, there may be an idea in remove the pseudo jQuery layer and make a prober Vue2 code base :-)

wffranco commented 7 years ago

@druppy move to the branch v2 https://github.com/wffranco/vue-strap/tree/v2

And check the input, I was working over it and you too... I mix both but I think your blur/focus events are not necessary, I was fixed that before

druppy commented 7 years ago

@wffranco ok, I moved to v2, and will look at input and the blur/focus events.

The Accordion.vue works for me, but the css effect are strange, any idear :-)

Select is also strange, I will try to look at its auto close function.

I try to remove as much dependency on NodeList.js as possible, and a saw @wffranco has tried to use only one single version. The more we can use Vue2 as it is intended the better :-)

Could we get a vue-strap2 gitter or something ?