Code Monkey home page Code Monkey logo

mui-x's Introduction

MUI X logo

MUI X

MUI X is a collection of advanced React UI components for complex use cases. Use the native integration with Material UI or extend your design system. They feature state-of-the-art functionality and complex UX workflows for data-rich applications and support a wide range of use cases.

MUI X is open core—base components are MIT-licensed, while more advanced features require a Pro or Premium commercial license. See the Licensing page for details.

CII Best Practices

Components

Installation

Data Grid

Read the Data Grid Installation instructions in the MUI X docs.

Date and Time Pickers

Read the Date and Time Pickers Installation instructions in the MUI X docs.

Charts

Read the Charts Installation instructions in the MUI X docs.

Tree View

Read the Tree View Installation instructions in the MUI X docs.

MIT vs. commercial licenses

We has been building MIT-licensed React components since 2014, and we are committed to the continued advancement of the open-source libraries. Anything we release under an MIT license will remain MIT-licensed forever. You can learn more about our stewardship ethos in this document from our company handbook.

We offer commercial licenses to developers who need the most advanced features that cannot be easily maintained by the open-source community. Commercial licenses enable us to support a full-time staff of engineers, which is simply not possible through the MIT model.

Rest assured that when we release features commercially, it's only because we believe that you will not find a better MIT-licensed alternative anywhere else.

See the Pricing page for a detailed feature comparison.

Plans

Community plan

The free version of MUI X is published under an MIT license and is free forever. This version contains features that we believe are maintainable by contributions from the open-source community.

MIT licensed packages:

Pro plan

The Pro version of MUI X expands on the features of the free version with more advanced capabilities such as multi-filtering, multi-sorting, column resizing and column pinning for the data grid; as well as the date range picker component.

The Pro version is available under a commercial license—visit the Pricing page for details.

Pro packages:

Premium plan

The Premium version of MUI X covers the most advanced features of the data grid, such as row grouping, Excel export, and aggregation, in addition to everything that's included in the Pro plan.

The Premium version is available under a commercial license—visit the Pricing page for details.

Premium package:

Support

From community guidance to critical business support, we're here to help. Read the support guide.

Contributing

Read the contributing guide to learn about our development process, how to propose bug fixes and improvements, and how to build and test your changes.

Contributing to MUI X is about more than just issues and pull requests! There are many other ways to support MUI X beyond contributing to the code base.

Changelog

The changelog is regularly updated to reflect what's changed in each new release.

Roadmap

Future plans and high-priority features and enhancements can be found in the roadmap.

Security

For details of supported versions and contact details for reporting security issues, please refer to the security policy.

mui-x's People

Contributors

alexfauquette avatar bosselijah avatar cherniavskii avatar coldatnight avatar danailh avatar danilo-leal avatar dependabot-preview[bot] avatar dependabot[bot] avatar dtassone avatar flaviendelangle avatar gitstart avatar janpot avatar jcquintas avatar joserodolfofreitas avatar lukasty avatar m4theushw avatar mbilalshafi avatar michaldudak avatar michelengelen avatar mnajdova avatar noraleonte avatar oliviertassinari avatar renovate[bot] avatar romgrk avatar sai6855 avatar samuelsycamore avatar sebastianfrey avatar siriwatknp avatar yaredtsy avatar zeeshantamboli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mui-x's Issues

[DatePicker & TimePicker] New okLabel and cancelLabel props should accept nodes in addition to strings

Problem Description

My labels come from react-intl, so they are of type node (spans).
So I get:

Warning: Failed propType: Invalid prop cancelLabel of type object supplied to DatePicker, expected string. Check the render method of DatePickerWrapper

It would be better to accept both string and node.
See PropTypes in DatePicker/DatePickerDialog.js

Versions

  • Material-UI: 0.15.0-alpha.2
  • React: 0.14.8
  • Browser: Chrome 49 OSX

[TimePicker] Redesign as per material spec

Problem Description

Technically this is not an issue , but a mismatch in the design. Currently the material design spec does not throw much light on it for the 24hr format.

As per our implementation, the 24hr time picker looks like this (the first 12 hours are on the outer circle):

screen shot 2016-03-22 at 5 28 56 pm

This was probably designed as an addition to the 12 hr format and hence the first 12 hours are on the outer circle.

However, based on the actual implementations in the android based phones the 24 hr format looks like this: (with the first 12 hours along the inner circle)
screenshot_2016-03-22-17-26-14

I think the second one is more intuitive and make sense. Also 12 AM is shown as "00" than the current 0.

I'm gonna submit a PR for this.

Versions

  • Material-UI: 0.15.02 alpha
  • React: 0.14.7
  • Browser: All browsers

Timepicker onchange registers no event

<TimePicker hintText="12hr Format" onChange={(e) => console.log(e)} />

The above line returns null. How do i catch the time value in my onchange function.

datepicker is unusable on android phones

I have a Nexus 5 with the latest android, the datepicker on the material-ui demo website is not usable, the bottom part of the dialog is cutt-off.

This is similar to issue mui/material-ui#1261, but for android too (and for an official google phone no less).

[DatePicker] Floating label eats click events

Problem description

When a DatePicker component is used with a floatingLabelText prop, clicking the label has no effect. In order to open the date picker dialog, you have to click on the component, but outside the label.

Steps to reproduce

  1. Go to the Material-UI DatePicker examples page
  2. Scroll down to the "Ranged example" section
  3. Click on the "Ranged Date Picker" label:
    • Nothing happens
  4. Click next to the "Ranged Date Picker" label but inside the DatePicker component:
    • The date picker dialog opens

Versions

  • Material-UI: Confirmed in 0.15.0 and 0.14.4
  • React: 15
  • Browser: Chrome

datepicker hook when selecting a date

I would need to add a property onChange on the datepicker object to know when a user select a date using this component.

What do you guys think about this? (I can do the PR myself if required, but I'd like some feedback before proceeding).

[DatePicker] Not Responding

Hello,

There is another issue similar to this, however it was closed and I didn't want to reopen it.

Basically my datepicker is rendering, displaying hint text if I add it however when clicked on it doesn't do anything. There are no errors or anything to suggest it is broke.

I've done quite a bit of searching and only came up with adding this:

var injectTapEventPlugin = require("react-tap-event-plugin");
injectTapEventPlugin();

This did not fix the issue. Also note that everything from Material-UI is working fine this is the only component I've encountered an issue with.

Any advice would be great.

Regards

Michael

Range Picker in Docs not working

The Range picker in the docs doesn't seem to let you select a range of dates. It simply selects one value. Here is a video. I also tried using additional keys like holding shift, CTL, etc. nothing seems to work.

here is an example
example

Versions

  • Material-UI: Docs Version?
  • React: Docs Version?
  • Browser: Chrome v55.0.2883.95

[DatePicker] Use keyboard to write date

The only thing preventing me to use the date picker from material-ui is the fact that the user is not capable to use keyboard to write a date.

Sometimes its just faster or more suitable to just use keyboard to select dates.

Imagine a scenario where the user has a form with a lot of TextFields, he can keep pressing tab and filling the form, but once he encounters a Date picker he needs to use the mouse to open the date picker... And if wants to select a really old date he will have a nightmare selecting the year... Its just not nearly as fast as just typing it.

Related issue mui/material-ui#5612.

DatePicker on mobile / narrow screens

On my iPhone (or if I make my browser window narrow), the DatePicker dialog does not pop up if I tap the hint text, or the date text after a date has been selected.
Since this text fills most of the available input space, I thought this was completely broken because it was unresponsive to all of my clicks until I happened to click on the far right of the field.

[DataGrid] Implement Cell editing

As far as I understood material-ui follows Material Design spec

Material-UI is a set of React components that implement Google's Material Design specification.

But as for me it lacks in following the specification in some components, especially in Table component.
https://material.google.com/components/data-tables.html#data-tables-interaction (Edit section). The specification clearly says about the edit possibility with the help of small or large edit dialogs. But using material-ui Table component it's impossible to organize something like this because cell clicks always trigger row selection.

So my proposition here is to divide concepts following Google's Material Design and make:

  1. Row selection
    • on desktop: only with checkbox(additionally we can add the possibility to select row with ctrl button)
    • on mobile: with checkbox or with long press action.
  2. Cell edit: click on cell.

So what do you guys think about this?

Create Date/DateTime picker

Please add a date/ Datetime picker. Unless you know of one that works well, and looks good with material.

Time Picker - Unable to Select Hour and/or minutes depending on browser used.

I'm having some issues with the Time Picker Component.

  1. On Android Chrome: not possible to select Hour or Minutes. Touching an hour just moves to the minute selection, hour stays at 12. Clicking any minute does nothing.

  2. On Chrome OS X: hour can be selected, but not the minutes.

  3. On Safari OS X: All the hours and minutes are overlaid on each other.

[TimePicker] uncontrolled timepicker doesn't work

Problem Description

I just tried out 0.15.0-alpha.2 and found out that my TimePicker's no longer function. All TimePickers are regarded as controlled instances because the following function is incorrect:

  _isControlled() {
    return this.props.value !== null;
  },

So if value is undefined (which it is in my case because I set defaultTime) then the picker thinks it is a controlled instance.

Versions

  • Material-UI: 0.15.0-alpha.2
  • React: 0.14.7
  • Browser: Chrome 49.0.2623.87

[DatePicker] Call dismiss when date changed

Feature request

Description

I think it's ok to call dismiss function when date is changed. My case:
I have two DatePickers, when I select date from first one, it closes (autoOk prop) and then I open second picker automatically with prefilled date (based on value in first picker). If user doesn't change value in second picker, and just close it, it will trigger dismiss function. If user change date, it will trigger only handleTouchTapOk function. I think it's more logical to trigger dismiss always when open changes to false.
For now I must use same handler for onDismiss and onChange to catch this case, and I really don't like this solution.

Possible solution

before

  handleTouchTapOk = () => {
    if (this.props.onAccept && !this.refs.calendar.isSelectedDateDisabled()) {
      this.props.onAccept(this.refs.calendar.getSelectedDate());
    }

    this.setState({
      open: false,
    });
  };

after

  handleTouchTapOk = () => {
    if (this.props.onAccept && !this.refs.calendar.isSelectedDateDisabled()) {
      this.props.onAccept(this.refs.calendar.getSelectedDate());
    }

    this.dismiss();
  };

I can create PR for this.

[TimePicker] hours and minutes incorrectly placed

Problem description

The TimePicker dialog is incorrect. Hours and minutes are shifted to the left. See attached screenshot.

Steps to reproduce

I upgraded from alpha-2 to 0.15.0 and besides that I upgraded from react 0.14.x to 15.0.2.

Versions

  • Material-UI: 0.15.0
  • React: 15.0.2
  • Browser: Chrome latest and greatest

Description

Images & references

timepicker

TimePicker docs page.

Methods description copy-pasted from DatePicker. Description of events is missed.

[DatePicker] not Responsive

The Date Picker doesn't work on an iPhone 5s at all, since the Portrait view is too tall and the landscape view is too wide for the screen.

Since many phone screens are this size or smaller, it would be nice to have a working date picker component, since it's so pretty!

Calendar should have more methods

Need to implement start and end dates for calendars.. in other case it's hard to use them on travel sites where we need to set borders

[TimePicker] display of 12 hour clock values is sub-optimal

2 improvements:

If this makes sense, I'm happy to make a pull request.

[DatePicker] Update date picker to match new material design specs

The datepicker is too large for mobiles and does not get centered. You cant get to the buttons, or even the last 2 weeks on an iphone 4. Even on my nexus 5 I cannot see to the buttons. It needs reducing in size and centring on the screen.

datepicker

There are 2 similar things being used for positioning the dialogue which I don't see the reason for, maybe someone can explain. The container has some dynamic padding and then the actual dialogue has a translate3d based on some theme desktopKeylineIncrement. Surely this can be achieved with one or the other?

contentsWhenOpen: {
  opacity: 1,
  top: 0,
  transform: 'translate3d(0, ' + this.getSpacing().desktopKeylineIncrement + 'px, 0)'
}
var paddingTop = Math.max(((containerHeight - dialogWindowHeight) / 2) - 64, 0);

[DatePickerDialog][TimePickerDialog] inconsistent behaviour default value

Problem description

Timepicker consider that value is controlled if this.props.value === null whereas Datepicker consider controlled if this.props.hasOwnProperty('value')

I find that Timepicker behaviour is more practical as it is possible to connect this.props.value to a potentially null value but still have the default value when value is null.

I'd like to make the datepicker behave the same as the timepicker. I'll make a PR if it sounds good to you

DatePicker.getDate is undefined

let startDatePicker = <DatePicker autoOk={true} defaultDate={startDate}
        minDate={startDate} maxDate={endDate} style={style}
        onChange={(instance, val) => {
                console.log(startDatePicker.getDate)
        }} />

it reports: getDate is undefined

ps. why use onChange(null, val), use onChange(val) is better.

[DatePicker] Year overflow broken

Problem description

I noticed in the docs that the datepicker should go 100 years backwards and 100 years forwards by default, however in the docs and in any datepicker I make it only goes to 2013. I found the issue to be justify-content: center. This centers the flex item vertically because the flex-direction is column. For some reason overflow doesn't take into account the height before the center point of the flex item. Setting the flex-direction to row (default value) fixes this issue and I can see all the way to 1916. Unfortunately this breaks positioning of datepicker ranges that do not overflow. They are no longer vertically centered. Setting align-items: center to center non-overflowed ranges will subsequently break our original fix of overflowed ranges for the same reason that justify-content breaks it in the current implementation.

TL;DR: Flexbox centering and overflow don't work nicely.

Steps to reproduce

Look at the Simple example in the docs.

Versions

  • Material-UI: 15
  • React: 15
  • Browser: Chrome/Firefox

Images & references

[DatePicker] Date display width is 270 but component width is 310

Problem description

The date display of the DatePicker component in portrait is fixed to 270, but the component width is fixed to 310.

This means that the color on the top of the date display does not reach all the way across the component.

screen shot 2016-05-13 at 1 53 36 pm

Steps to reproduce

Create a DatePicker in an environment where box-sizing: border-box for all elements and open it.

Versions

  • Material-UI: 0.15.0
  • React: 15.0.2
  • Browser: Chrome 50.0.2661.94

[DatePicker] wrong week days when using `formatDate`

With error:

image

const dateTimeFormat = new Intl.DateTimeFormat('en-AU');
<DatePicker DateTimeFormat={() => dateTimeFormat} formatDate={dateTimeFormat.format} locale="en-AU" />

Without error

image

<DatePicker />

I think the component is using the formatDate method everywhere and that's causing the error

[DatePicker] There is no show() method for the <DatePicker/> component

The component currently does not have a method to toggle show/hide. The picker is only accessible by pressing on a textfield that the component automatically renders. I did notice that there is a date-picker-dialog component in the code but it has not been exposed yet outside of the framework. Making the dialog available would greatly improve the flexibility of the date picker API I think. Any thoughts?

[DatePicker] Visual bug: stretched vertically off screen

My DatePicker looks like this out of the box with no style modifications:

image

The code used was just a simple DatePicker with no modifications:

App.js:

import React from 'react';
import MuiMixin from '../mixins/MuiMixin'
import {Paper, DatePicker} from 'material-ui';

var App = React.createClass({
  mixins: [MuiMixin],

  render() {
    return (
      <DatePicker />
    );
  }
})

export default App;

MuiMixin.js:

import React from 'react';
import mui from 'material-ui';

var ThemeManager = new mui.Styles.ThemeManager();

export default {
  childContextTypes: {
    muiTheme: React.PropTypes.object
  },

  getChildContext: function() {
    return {
      muiTheme: ThemeManager.getCurrentTheme()
    };
  },
};

I'm using WebPack to minify/build my app. Any ideas on what's causing this visual bug?

[TimePicker] Ref is accessed just after being removed

Problem Description

This bug is hard to reproduce and only happens sometimes: when selecting a time, I get this:

TypeError: Cannot read property 'getSelectedTime' of undefined

File "webpack:///./~/material-ui/TimePicker/TimePickerDialog.js" line 68 col 1 in r.handleTouchTapOK
_this.props.onAccept(_this.refs.clock.getSelectedTime());

File "webpack:///./~/material-ui/TimePicker/Clock.js" line 111 col 1 in [anonymous]
onChangeMinutes(time);

I believe it could be because the Clock is sometimes unmounted just before it is accessed through its ref: https://github.com/callemall/material-ui/blob/a76c0889055fbc7cc854b391f915cd477f3687a8/src/TimePicker/TimePickerDialog.js#L60

Maybe calling this.dismiss(); at the end of the function would help?

Versions

  • Material-UI: 0.15.0-beta.2
  • React: 15.0.1
  • Browser: Chrome 49 on Windows & Chrome Mobile 50 on Android

Usecase for Datepicker: Select your Date of Birth!

Usecase for Datepicker: Select your Date of Birth!
It explains all. How many clicks we actually needs!

I am sure that It is not a right place to add this issue for "Google material design". but just in case.

DatePicker / TimePicker not working ( no error shown )

Hello,

I don't know if it's a bug or that i did something wrong, but after searching everywhere i'm not able to make those 2 components works. They simply don't show, nothing happens when i click on them and i tab doesn't focus them.

I also called theinjectTapEventPlugin(); at the beginning of my app.js

 <DatePicker
        hintText="Test"
        value={this.state.startDate}
        onChange={this.handleChange}
      />
 <TimePicker
          ref="picker12hr"
          format="ampm"
          hintText="test"
          onChange={this.handleTimeChange}
        />

DatePicker on dialog not working

I'm using

<DatePicker hintText='Starts on' container='inline' />

I got

Each child in an array or iterator should have a unique "key" prop. Check the render method

and also

React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components). Check the render method

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.