Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Summary of essential components #9

Closed
9 of 11 tasks
juliushaertl opened this issue Aug 18, 2018 · 37 comments
Closed
9 of 11 tasks

Summary of essential components #9

juliushaertl opened this issue Aug 18, 2018 · 37 comments
Labels
component Component discussion and/or suggestion enhancement New feature or request

Comments

@juliushaertl
Copy link
Contributor

juliushaertl commented Aug 18, 2018

This is just a collection of what might be a good starting point for components.

@skjnldsv @ChristophWurst

@juliushaertl juliushaertl added the enhancement New feature or request label Aug 18, 2018
@ChristophWurst
Copy link
Contributor

Suggestion: KeyboardShortcuts, FilePicker, buttons, checkboxes

@ChristophWurst
Copy link
Contributor

ContentList https://docs.nextcloud.com/server/14/developer_manual/design/list.html

In this context we should think about a refresh/reload mechanism that might be used by some apps (e.g. load new messages in Mail, pull in synced contacts in Contacts).

@skjnldsv
Copy link
Contributor

skjnldsv commented Aug 20, 2018

ContentList: https://github.com/nextcloud/contacts/blob/6713a73479c9cb054034e3466ffa2167a9f74055/src/components/ContentList.vue
https://github.com/nextcloud/contacts/blob/6713a73479c9cb054034e3466ffa2167a9f74055/src/components/ContentList/ContentListItem.vue

Needs to be adapted for more standardised variables name (no contacts), but works fine :)
I still need to add custom options and such. I'll probably work on it Thursday of something :)

@dartcafe
Copy link
Contributor

I would add a date and a time picker to get rid of using jQuery with vue.

@ChristophWurst

This comment has been minimized.

@juliushaertl
Copy link
Contributor Author

juliushaertl commented Aug 24, 2018

Something that came up in Mail: a moment-js-like timestamp, like x seconds ago.

https://github.com/brockpetrie/vue-moment https://github.com/egoist/vue-timeago looks good for that. Should we just keep a list of recommended vue libs for small stuff like that? I don't think it is worth to add a wrapper for it to the nextcloud vue components.

@georgehrke
Copy link
Contributor

Will Dialog also cover in-dialog input fields like here?
7cf052e6-f939-4061-bc67-3a64de33fdf0

@skjnldsv
Copy link
Contributor

@georgehrke the idea is to support the same features as the designer guide :)

@ChristophWurst

This comment has been minimized.

@skjnldsv
Copy link
Contributor

Any good datepicker? :)

@georgehrke
Copy link
Contributor

An autocomplete component would be highly appreciated :)
with label, value, and avatar / icon / plain color.

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 1, 2018

@georgehrke with dropdown?
vue-multiselect is already here for that :)

@dartcafe
Copy link
Contributor

dartcafe commented Sep 1, 2018

What about vuetify? OK, it could start a new discussion about using material design, but it has many useful components.

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 1, 2018

@dartcafe the idea is not to port other components into nextcloud. Let's keep our simplified and unified design. :)
If you find any other reusable components we use on nc or associated apps then let's add them on this list ;)

This was referenced Sep 4, 2018
@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 4, 2018

Date-time picker? https://mengxiong10.github.io/vue2-datepicker/demo/index.html
That's the only one I found that seems to fit our need :/

Material: https://github.com/mariomka/vue-datetime
Findings: https://vuejsexamples.com/tag/picker/

@jancborchardt
Copy link
Contributor

There should also be components for list elements, and grid view elements, right?

We already use the list view in lots of places. And the grid view is being experimented with in Bookmarks: http://github.com/nextcloud/bookmarks/ and Files: nextcloud/server#11050

@jancborchardt
Copy link
Contributor

And let’s make sure that these components use HTML standard elements as much as possible. Buttons/links instead of divs etc – so we get a lot of the accessibility parts for free.

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 5, 2018

@jancborchardt I'm not sure. The idea is small individuals components that are simple and reusable everywhere. Big lists or stuff like that can be standardised for the html/css but will be far too complicated for a vue component.

@jancborchardt
Copy link
Contributor

Hm – I would say it’s very comparable to the ContentList component though? https://docs.nextcloud.com/server/14/developer_manual/design/list.html

And of course "grid view" is a bit of a big part. But a component would be a "tiled element", or "preview component with a title component below and action menu right next to it".

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 5, 2018

Content list is very simple, you have like 5 différents options, tops.
The file list is crazy complicated. And having everything in a single component would greatly lower down the possibilities of working with all the vue features.

Remember, that for those components, you cannot edit the inner data or structure. You just give it an object ant vue does the rest. This exclude all custom ideas you might want to add into your app or other complex methods.

And as a developer, I really like the idea of having small snippets/components to speed up the development of my app, but I would totally hate having an entire structured component preventing me from doing whatever I want to do.

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 5, 2018

And of course "grid view" is a bit of a big part. But a component would be a "tiled element", or "preview component with a title component below and action menu right next to it".

But small stuff like that, yes definitely 😬 👍 💯

@dartcafe
Copy link
Contributor

dartcafe commented Sep 7, 2018

Did we mention a sharing component?

@splitt3r
Copy link

splitt3r commented Sep 7, 2018

Sidebar with SidebarTab would be nice too.

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 7, 2018

@splitt3r again, complicated components. :)
Let's only focus on simple and reusable ones.

@dartcafe what do you mean?

@splitt3r
Copy link

splitt3r commented Sep 7, 2018

Ok 👍

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 7, 2018

@splitt3r though, we have a pending discussion to standardise the sidebar ;)
nextcloud/server#10289

@dartcafe
Copy link
Contributor

dartcafe commented Sep 7, 2018

This one:
grafik

I think it would be helpful to have this componement to select users from a list.

@ChristophWurst
Copy link
Contributor

Also, we can just have separate tickets for these kinds of components that would be nice to have, but are not essential right now? I mean we're happy for all feedback and I'm sure the number of components will grow over time, so there's nothing wrong with proposing (exotic) ones right now 😉

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 7, 2018

@ChristophWurst Yes! If the component is not something that is used by almost all of the apps, then please create a new issue :)

@juliushaertl
Copy link
Contributor Author

I think we could still provide a basic tab component with slots for the content. So devs at least don't need to mess with the tab switching for example.

@skjnldsv
Copy link
Contributor

skjnldsv commented Sep 7, 2018

@juliushaertl yes for the tabs, seems simple enough :)

@skjnldsv
Copy link
Contributor

About some external components, like the date-time picker for example : https://github.com/mengxiong10/vue2-datepicker

How should we handle theming?
Should we create a component that just forward everything to this component? Should we fork it?
I like the idea of just creating a "fake" component that provide all the data from the datepicker and we just add our css on top and ship it like it is our component. We'd still have to update the datepicker from the origin repo once in a while, but dependabot sure can manage that? :)

@ChristophWurst
Copy link
Contributor

I like the idea of just creating a "fake" component that provide all the data from the datepicker and we just add our css on top and ship it like it is our component. We'd still have to update the datepicker from the origin repo once in a while, but dependabot sure can manage that

👍 on that. Let's try to reuse as much as possible without forking/duplicating.

@skjnldsv
Copy link
Contributor

Implemented :)
capture d ecran_2018-09-11_10-15-55

@skjnldsv skjnldsv added the component Component discussion and/or suggestion label Sep 11, 2018
@jancborchardt
Copy link
Contributor

@skjnldsv the datepicker look different from the one in core, like top bar arrows are different, week day names are too present? The design should at least start out with the way it currently is. 🙂
screenshot from 2018-10-02 19-36-30

@skjnldsv
Copy link
Contributor

skjnldsv commented Oct 2, 2018

@jancborchardt I used most of the design we had on the one we added on server, but there was a lot of part missing (year pick, month pick)!
But I really feel like it fit our current design and it's a nice improvement. I find this one far cleaner and easy to use compare to the jQuery one ;)
Could you do a review of it and create a new issue here to follow what we can do to improve it? :)
You can try this datepicker in the new contacts alpha if you want :)

@skjnldsv
Copy link
Contributor

Closing now, most of them have their own issue or already exists :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component Component discussion and/or suggestion enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

7 participants