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

Investigate making Data Table component #57

Open
traviskaufman opened this Issue Dec 5, 2016 · 54 comments

Comments

Projects
None yet
@traviskaufman
Copy link
Contributor

traviskaufman commented Dec 5, 2016

Spec reference: https://material.io/go/design-data-tables

Copied from google/material-design-lite#4504

@traviskaufman traviskaufman added this to the Post-Release milestone Dec 5, 2016

@sgomes sgomes changed the title Implement Data Table v2 Component Implement Data Table Component Dec 19, 2016

@rj33

This comment has been minimized.

Copy link

rj33 commented Jan 3, 2017

I realise not everything can get first-release priority, but it would be nice if the components that already exist in MDL could be given priority over newer components, as it would make migrating from MDL to MDC much less painful for those who are making extensive use of the full set of MDL components, but are keen to move on to MDC as soon as possible.

@sgomes

This comment has been minimized.

Copy link
Contributor

sgomes commented Jan 3, 2017

Thanks for the info, @rj33! Since we are reimplementing everything from scratch, we prioritised components a bit differently, based on what we expected demand for them to be. Unfortunately, data table is pretty far down that list, although our priorities could always change.

If you want to migrate to MDC-Web in the meantime (event though it's still in alpha), you might have some luck extracting and isolating mdl-data-table from MDL, since it doesn't depend on a lot of other components.

@rj33

This comment has been minimized.

Copy link

rj33 commented Jan 4, 2017

Thanks @sgomes, I'll give the mdl-data-table extraction idea a go.

@koutsenko

This comment has been minimized.

Copy link

koutsenko commented Jan 15, 2017

Please add the "fixed header" feature, to make data scrolling with visible headers possible. Thanks.

@Garbee

This comment has been minimized.

Copy link
Contributor

Garbee commented Jan 15, 2017

@koutsenko position: sticky on the current header should work just fine and you can get it in the current table for MDL. Just a little bit of custom code will do the trick for that one in modern browsers.

@koutsenko

This comment has been minimized.

Copy link

koutsenko commented Jan 15, 2017

@Garbee I use react-mdl, because MDL v1 hasn't framework bindings itself.
So when I modified my JSX to something like you suggested

  buildHeader: function(headings) {
    return headings.map(function(heading, index) {
      return <TableHeader position="sticky" name={index.toString()} key={Date.now() + '_' + index}>{heading}</TableHeader>; 
    });
  }, 

But I got JS error
Warning: Unknown prop position on <th> tag. Remove this prop from the element.

Moreother, react-mdl DataTable isn't scrollable by itself . It means that I need to wrap entire DataTable into scrollable div. I tried to fix position by css hacks, but it's very unstable solution. MDL v2 was announced with framework compatibility feature, it means no need for wrappers such as react-mdl. That's why I'm asking here.

@Garbee

This comment has been minimized.

Copy link
Contributor

Garbee commented Jan 15, 2017

You don't set it as an attribute. It is a style, which also needs some other rules to get working right. As far as I am aware, sticky positioning will work without the Element needing to scroll on its own. I understand why you're asking here and that is OK. I am simply informing you that you can get it now with a little amount of custom styles.

@koutsenko

This comment has been minimized.

Copy link

koutsenko commented Jan 15, 2017

@Garbee it's almost unsupported feature and needs a JS polyfill, but it may be better than my already tried css hacks. I'll try to test it. Thanks for the idea.

@traviskaufman There is no any information about scrolling in specs, does it means that only paging should be implemented? Regardless of "sticky" test results, i'd want to leave "Fixed table header with scrollable body" here as a feature request... Seems it's can be simple when table is composed by div elements instead of monolitic table/th/tr/td elements...

@Garbee

This comment has been minimized.

Copy link
Contributor

Garbee commented Jan 26, 2017

Let's make sure in this version to make general text and numeric a modifier. That way it is more natural to most people to have left-aligned text by default. Ref: Issue 5020 on MDL

@victorhooi

This comment has been minimized.

Copy link

victorhooi commented Apr 2, 2017

Is there an update on this component?

Any idea on ETA?

@traviskaufman

This comment has been minimized.

Copy link
Contributor

traviskaufman commented Apr 3, 2017

The best place to track progress in within our public Pivotal Tracker. Simply search for the GH issue URL and you should find the story. Where the story is determines when we'll work on it. Data Table is still pretty low priority right now. If someone is interested in working on it, please comment on this issues before submitting a Pull Request so we can work with you on the best way to implement it. Thanks! 😄

@djensen47

This comment has been minimized.

Copy link

djensen47 commented May 27, 2017

I'm interested in working on it. What do I need to know?

@mikaturk

This comment has been minimized.

Copy link

mikaturk commented Jun 3, 2017

It's been a couple of months but does anyone have any kind of ETA?

@djensen47

This comment has been minimized.

Copy link

djensen47 commented Jun 5, 2017

If someone is interested in working on it, please comment on this issues before submitting a Pull Request so we can work with you on the best way to implement it. Thanks!

🙋‍♂️ 👋 Hi, I'm still willing to work on this feature. Looking at tracker, it looks this project, as a whole, won't be complete for 12+ months. I'm sure you'd be happy with any help you can get. 😄

@traviskaufman

This comment has been minimized.

Copy link
Contributor

traviskaufman commented Jun 5, 2017

Hey @djensen47,

Sorry for the delayed response! We certainly appreciate all the help we can get 😄 thanks for offering!

If you are interested in working on this, the best place to start would be to look at our contributing docs for our development process. After that, you'll want to look at our authoring components guide. Because you'd be working on a core component, then entire document would apply.

For all components we require an Eng Outline before we'd be willing to look at a PR. This is so we have a general idea of how you'll be architecting the code, and what a public API would look like.

I'm usually on our discord channel during the day, so I'm happy to chat more in person on there, or if you run into any issues while implementing this.

@traviskaufman traviskaufman self-assigned this Jun 5, 2017

@djensen47

This comment has been minimized.

Copy link

djensen47 commented Jun 5, 2017

Sounds good. I'll start looking at the docs this week.

@jonathanperis

This comment has been minimized.

Copy link

jonathanperis commented Jun 6, 2017

Sounds good. I'll start looking at the docs this week.

Nice! I'm really looking foward at this component. Such necessary to make enterprise web applications with this framework. 😄

@mikaturk

This comment has been minimized.

Copy link

mikaturk commented Jun 6, 2017

Looking forward to seeing this happen, thanks a lot 😀

@djensen47

This comment has been minimized.

Copy link

djensen47 commented Jun 6, 2017

Thanks ... we'll see though. There's quite a bit overhead to do this, which is actually great because it ensures a high quality component, but it might take me a lot more time than I originally anticipated.

@traviskaufman

This comment has been minimized.

Copy link
Contributor

traviskaufman commented Jun 6, 2017

That's precisely why we ask for the docs upfront! We want to ensure that all of our contributors (including ourselves) know exactly what they're getting into before diving straight into the implementation 😄 Before we did the eng outlines, we'd have very inconvenient, very lengthy discussions on PRs about basic design choices and whether or not certain requirements like Dark Mode and RTL were thought through. The goal of the eng outlines and the authoring components info is to alleviate that, so I appreciate you understanding that it's all for a good cause and not just for us to be bureaucratic 😉

@aaronhudon

This comment has been minimized.

Copy link
Contributor

aaronhudon commented Jul 28, 2017

@rj33 please pass along your results for extracting the MDL data table for the rest of us

@rj33

This comment has been minimized.

Copy link

rj33 commented Oct 8, 2017

@aaronhudon I've deferred work on MDC until they get closer to a 1.0 release. I'm still planning to move from MDL to MDC, and if there is no datatable by then, I'll work on an extraction, but given the time lines, it looks like others may get to it before I do.

@thiagovilla

This comment has been minimized.

Copy link

thiagovilla commented Jun 8, 2018

Is there anything we can do to speed this up?

@iFaxity

This comment has been minimized.

Copy link

iFaxity commented Jun 8, 2018

@djensen Ok doing that now. @acdvorak @traviskaufman @lynnjepsen . I hope i'm not being annoying tho so if i was sorry.

If there is no answer i can maybe post a repo myself so the people who want to try out an early version can do that.

@yabhis I'll look into fixed columns but for now it seems that native tables doesn't like to make fixed tabs. I would want that feature too. Otherwise making a div version instead of table can maybe be done.

@djensen47

This comment has been minimized.

Copy link

djensen47 commented Jun 8, 2018

@iFaxity It might take about 5 business days to get a response but if you don't hear anything by then, I think your own repo would be great! I think it was @acdvorak that recommended putting "contrib" in the name of the component if you create your own.

@Garbee

This comment has been minimized.

Copy link
Contributor

Garbee commented Jun 8, 2018

The primary concern I have with the suggestion is how much of the checkbox logic is put into data table directly. One lesson we learned in MDL that was originally intended to come forward into MCW was only handling style with data tables. Then letting developers build the exact logic they need around checkbox handling on their own. This reduces the abstraction needed internally and provides a more robust experience for developers.

@kfranqueiro

This comment has been minimized.

Copy link
Contributor

kfranqueiro commented Jun 8, 2018

As someone who has experience trying to maintain a library that did only data grid things for several years, I agree wholeheartedly with @Garbee. Data Tables haven't been kicked off with engineering yet and they're not in the immediate roadmap, but I think our primary goal for them within MDC Web will be in providing styles to accomplish layouts.

Developing features in JavaScript for Data Tables could quickly balloon in complexity (moreso when they're combined), especially given potential use cases such as lazy loading, which not only requires some sort of API for interacting with data, but also complicates features that some consumers probably want, such as selecting all items. MDC Web should aim to provide a baseline that has a realistic chance of benefiting everyone without getting in anyone's way.

@iFaxity

This comment has been minimized.

Copy link

iFaxity commented Jun 8, 2018

Yeah that was an issue I came across making the component & outline doc. I started making only the styles because I needed it in an internal Vue project. So the JS implementation is something I thought of for a while. However the component doesn't need the JS to work basically. If any more advanced table management is needed then it's not too hard to do it alone. Either way data tables are only used in a context of viewing data in a nice way and is not used in many apps and websites. Maybe the interactions and JS should be left to the programmers.

@iFaxity

This comment has been minimized.

Copy link

iFaxity commented Jun 16, 2018

Ok so i just created a repository as per @djensen47 recommendation for the data table component styles i've made. As you know its not finished and when the material.io page changed some time ago the spec changed a bit for the data table component. So i've made some changes but they are not final. For now there are only styles because for now i think the interactions should be dependent on the developer as the usage of the component varies. I've only used it for hobby projects but it takes not a lot of code to get the checkboxes & selection working.

The repo is https://github.com/iFaxity/mdc-data-table
And please don't use this in production code. However feel free to fork or such to add or change code.

@Veryfaraj

This comment has been minimized.

Copy link

Veryfaraj commented Jun 28, 2018

Faraj

@jonathanperis

This comment has been minimized.

Copy link

jonathanperis commented Aug 17, 2018

Hello guys,

Did you give up creating the component? He has been withdrawn from the milestones recently. Please do not give up! It is an important component for development for desktop / web applications with corporate appeal

@kfranqueiro

This comment has been minimized.

Copy link
Contributor

kfranqueiro commented Aug 17, 2018

The milestone removal was an artifact due to cleaning up old milestones in github that have been unused, since we use Pivotal's backlog.

This is not currently on the overall Material roadmap, though I would like to propose it be added to the roadmap sometime soon given how many people seem to want it. The first/latest major addition to the roadmap has been dialog which is also under heavy demand to be updated against the latest spec, but once that is done I'd like to try to pitch this one in there.

@nickkhan

This comment has been minimized.

Copy link

nickkhan commented Sep 6, 2018

yes please i want it too.

@jamesmfriedman

This comment has been minimized.

Copy link
Contributor

jamesmfriedman commented Sep 14, 2018

For anyone using React, and anyone needing it, here is a port / refactor of the one from MDL that plays nicely with theming and other components from mat-web. https://jamesmfriedman.github.io/rmwc/data-tables

@CyborgSemon

This comment has been minimized.

Copy link

CyborgSemon commented Oct 22, 2018

+1 this would be really handy

@emri99

This comment has been minimized.

Copy link

emri99 commented Nov 30, 2018

@kfranqueiro
Can we expect this component to be implement in a near future ?
Can you advise us an alternative in the mean time ?

We really need such component for desktop/web app.

@TaaviE

This comment has been minimized.

Copy link

TaaviE commented Nov 30, 2018

It's been three years, it'd be really nice if I could migrate.

@bohdan-shulha

This comment has been minimized.

Copy link

bohdan-shulha commented Jan 23, 2019

The Captain's Journal

Record #737081

It is Jan 23, 2019 now. Human race still trying to implement material design tables, but they are too hard for them. Humans stick to sending cars to Mars and vegetables to Moon.

@talhaishtiaq

This comment has been minimized.

Copy link

talhaishtiaq commented Jan 23, 2019

@AndryHTC

This comment has been minimized.

Copy link

AndryHTC commented Jan 24, 2019

This is crazy... Also this components seems to be neglected. ALL HERE SEEMS TO BE NEGLECTED

I'm not starting other projects with MDC anymore; I think I will start to use Vaadin components or something else ( Do anyone knows a complete web component library? Vaadin looks amazing)......... And for older project, I resign myself: they will remain with an inconsistent design, due to an unreliable roadmap...

@s-aska

This comment has been minimized.

Copy link

s-aska commented Jan 24, 2019

I am using Vuetify, sometimes I want a library not dependent on Vue, I welcome any information.

@kfranqueiro

This comment has been minimized.

Copy link
Contributor

kfranqueiro commented Jan 24, 2019

Firstly, to address the notion of components being neglected: we are actively adding features and improvements to this repository month by month, as seen in our changelog. However, as with any project, there are far more numerous things we could work on than resources actually allow.

That being said, we are aware that data tables remain possibly the most-requested component in the community, despite it failing to appear in the higher level roadmap, and we definitely want to get to it soon. We are currently in the middle of two major projects that encompass the entire repository during Q1, but I want to push hard for data tables in Q2.

We've also received interest from a couple of parties in terms of possible contributions that I intend to follow up on at that point. One potential source is James Friedman's RMWC, which wraps MDC Web for React and also includes data tables implemented with close attention to the spec.

I would kindly ask that we refrain from veering completely off the topic of this issue (and even this repository) into other UI libraries, especially those that don't implement Material Design (e.g. Vaadin looks to be an extremely loose interpretation at best). There are certainly alternatives if your goal is simply to find a comprehensive UI library regardless of what design it follows, but there are probably more fitting places to discuss that outside of an issue related to one specific component for MDC Web in particular.

@AndryHTC

This comment has been minimized.

Copy link

AndryHTC commented Feb 6, 2019

@kfranqueiro thank you very much for your reply.
Really, Vaadin implements material design, so I don't think is off topic...
What I mean is that it is a shame that after years of development a lot of essential components are still in a pre-alpha status.

Come on... You are Google, not independent developers who use their free time. The Changelog is not as rich as expected, with very minimal changes to components that already work very well: you can not hide behind these justifications ...

Many people have invested time and resources to implement the MDC library, obtaining only an incomplete and fragmented design

@CyborgSemon

This comment has been minimized.

Copy link

CyborgSemon commented Feb 6, 2019

@AndryHTC Don't be so harsh. Yes they may Google, but all good things take time.
Any large project always end up being more complex the more you get into it. And the dev team could easily just focus on making new components, but then this liberty wouldn't be as bug free and robust as it is today

Anyone knows that the more you get into a project, you discover things that you could have done better in the past, so you would want to change it now so it doesn't hang over you for the rest of the development process. Especially when it comes to infrastructure where the more you ignore it, the bigger the problem becomes. Which is part of the reason why there hasn't been much change in the past 2 months.

Firstly, we had Christmas break so the gap in development is understandable. Everyone needs a break after all. And secondly for the past month now the team has been working hard on moving the entire liberty over to TypeScript instead of regular Javascript which will have a number of great improvements down the line. This is something that will take along time to finish as @kfranqueiro has said on numerous occasions. You can check out the progress on that here and this is expected to take most, if not all of Q1 2019

Just because they are Google, doesn't mean that they can just throw a bunch of resources at a project and it comes out fine. Plus, they are doing this for free for everyone! If this was paid software, then I can kinda see where you are coming from. But it's not. So I don't think we can complain about how fast or how slow they work. The team will work at a pace that is right for them.

If you really want a data table that much @AndryHTC that you are prepared to ban mouth the dev team for it, then maybe you should either try to make it your self to see how hard it is, or use another material framework like Angular Material, Material Lite or even Materialize. There are a ton of great options that have all of the components ready to be used.

I just think that if anything, we should congratulate the Dev team for sticking with us and ensuring that all of our questions and issues get answered. I can say with confidence that this dev team has been the most engaged dev team that I have eve worked with when it comes to communicating with their community and listening / acting on feedback and suggestions.
So, well done MDC Web team. This resources truly is amazing. 🎉🎉🎉

@AndryHTC

This comment was marked as off-topic.

Copy link

AndryHTC commented Feb 6, 2019

@kfranqueiro

This comment has been minimized.

Copy link
Contributor

kfranqueiro commented Feb 6, 2019

While I appreciate everyone's passion, I'd like to again ask that we try to keep the thread on-topic, and reiterate that I'm very much pressing for us to fulfill data tables during Q2 2019.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment