0.15.3 • Published 5 years ago

semantic-ui-calendar-react v0.15.3

Weekly downloads
21,951
License
MIT
Repository
github
Last release
5 years ago

:tada: Starting with version 0.8.0 it's css free. :warning: Uncompatible with semantic-ui-react version 0.83.0

semantic-ui-calendar-react

Datepicker react component based on semantic-ui-react components

My intention was to create something that looks like this https://github.com/mdehoog/Semantic-UI-Calendar.

Here you can find a live example https://arfedulov.github.io/semantic-ui-calendar-react

installation

npm

npm i semantic-ui-calendar-react

CDN

<script src="https://cdn.jsdelivr.net/npm/semantic-ui-calendar-react@latest/dist/umd/semantic-ui-calendar-react.js"></script>

Then you can access calendar components from your scripts like this:

const { DateInput } = SemanticUiCalendarReact;

usage

Let's create a form that needs date-related input fields.

Import input components:

import {
  DateInput,
  TimeInput,
  DateTimeInput,
  DatesRangeInput
} from 'semantic-ui-calendar-react';

Then build a form:

class DateTimeForm extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      date: '',
      time: '',
      dateTime: '',
      datesRange: ''
    };
  }

  handleChange = (event, {name, value}) => {
    if (this.state.hasOwnProperty(name)) {
      this.setState({ [name]: value });
    }
  }

  render() {
    return (
      <Form>
        <DateInput
          name="date"
          placeholder="Date"
          value={this.state.date}
          iconPosition="left"
          onChange={this.handleChange}
        />
        <TimeInput
          name="time"
          placeholder="Time"
          value={this.state.time}
          iconPosition="left"
          onChange={this.handleChange}
        />
        <DateTimeInput
          name="dateTime"
          placeholder="Date Time"
          value={this.state.dateTime}
          iconPosition="left"
          onChange={this.handleChange}
        />
        <DatesRangeInput
          name="datesRange"
          placeholder="From - To"
          value={this.state.datesRange}
          iconPosition="left"
          onChange={this.handleChange}
        />
      </Form>
    );
  }
}

Also you can build a form with inline pickers as inputs. Just set inline prop on input element and it will be displayed as inline picker:

class DateTimeFormInline extends React.Component {
 handleChange = (event, {name, value}) => {
    if (this.state.hasOwnProperty(name)) {
      this.setState({ [name]: value });
    }
  }

  render() {
    return (
      <Form>
        <DateInput
          inline
          name='date'
          value={this.state.date}
          onChange={this.handleDateChange}
        />
      </Form>
    );
  }
}

or you can make it cleanable in the following way,

class ClearableDateTimeForm extends React.Component {
  handleChange = (event, {name, value}) => {
    if (this.state.hasOwnProperty(name)) {
      this.setState({ [name]: value });
    }
  }

  render() {
    return (
      <Form>
        <DateInput
          clearable
          clearIcon={<Icon name="remove" color="red" />}
          name="date"
          value={this.state.date}
          onChange={this.handleDateChange}
        />
      </Form>
    );
  }
}

Locales support

Since semantic-ui-calendar-react uses moment.js it supports locales. You can set locale globally:

import moment from 'moment';
import 'moment/locale/ru';

You can also set locale for *Input component locally using localization prop.

<DateInput localization='ru' />

Supported elements

DateInput

PropDescription
all that can be used with SUIR Form.Input
value{string} Currently selected value; must have format dateFormat.
dateFormat{string} Date formatting string. You can use here anything that can be passed to moment().format. Default: DD-MM-YYYY
popupPosition{string} One of 'top left', 'top right', 'bottom left', 'bottom right', 'right center', 'left center', 'top center', 'bottom center'. Default: top left
inline{bool} If true inline picker displayed. Default: false
startMode{string} Display mode to start. One of 'year', 'month', 'day'. Default: day
closable{bool} If true, popup closes after selecting a date
initialDate{string|moment|Date} Date on which calendar opens. By default it opens on today's date. (Do not be confused by property name. For setting some default value just set into value prop).
disable{string|moment|Date|string[]|moment[]|Date[]} Date or list of dates that are displayed as disabled
enable{string[]|moment[]|Date[]} Date or list of dates that are enabled (the rest are disabled)
maxDate{string|moment} Maximum date that can be selected
minDate{string|moment} Minimum date that can be selected
inlineLabel{bool} A field can have its label next to instead of above it.
closeOnMouseLeave{bool} Should close when cursor leaves calendar popup. Default: true
preserveViewMode{bool} Preserve last mode (day, hour, minute) each time user opens dialog. Default true
mountNode{any} The node where the picker should mount.
onClear{func} Called after clear icon has clicked.
clearable{boolean} Using the clearable setting will let users remove their selection from a calendar.
clearIcon{any} Optional Icon to display inside the clearable Input.
pickerWidth{string} Optional width value for picker (any string value that could be assigned to style.width).
pickerStyle{object} Optional style object for picker.
duration{number} Optional duration of the CSS transition animation in milliseconds. Default: 200
animation{string} Optional named animation event to used. Must be defined in CSS. Default: 'scale'
marked{moment|Date|moment[]|Date[]} Date or list of dates that are displayed as marked
markColor{string|SemanticCOLORs} String specifying the mark color. Must be one of the Semantic UI colors
localization{string} Sets Moment date locale locally for this component.
icon{string|false} icon to display inside Input.
iconPosition{'left'|'right'} icon position inside Input. Default: 'right'.
hideMobileKeyboard{bool} Try to prevent mobile keyboard appearing.

TimeInput

PropDescription
all that can be used with SUIR Form.Input
value{string} Currently selected value; must have format dateFormat.
popupPosition{string} One of 'top left', 'top right', 'bottom left', 'bottom right', 'right center', 'left center', 'top center', 'bottom center'. Default: top left
inline{bool} If true inline picker displayed. Default: false
closable{bool} If true, popup closes after selecting a time
inlineLabel{bool} A field can have its label next to instead of above it.
closeOnMouseLeave{bool} Should close when cursor leaves calendar popup. Default: true
timeFormat{string} One of "24", "AMPM", "ampm". Default: "24"
disableMinute{bool} If true, minutes picker won't be shown after picking the hour. Default: false
mountNode{any} The node where the picker should mount.
onClear{func} Called after clear icon has clicked.
clearable{boolean} Using the clearable setting will let users remove their selection from a calendar.
clearIcon{any} Optional Icon to display inside the clearable Input.
pickerWidth{string} Optional width value for picker (any string value that could be assigned to style.width).
pickerStyle{object} Optional style object for picker.
duration{number} Optional duration of the CSS transition animation in milliseconds. Default: 200
animation{string} Optional named animation event to used. Must be defined in CSS. Default: 'scale'
localization{string} Sets Moment date locale locally for this component.
icon{string|false} icon to display inside Input.
iconPosition{'left'|'right'} icon position inside Input. Default: 'right'.
hideMobileKeyboard{bool} Try to prevent mobile keyboard appearing.

DateTimeInput

PropDescription
all that can be used with SUIR Form.Input
value{string} Currently selected value; must have format dateFormat.
dateTimeFormat{string} Datetime formatting string for the input's value. You can use any string here that can be passed to moment().format. If provided, it overrides dateFormat, divider, and timeFormat. Note: this does not affect the formats used to display the pop-up date and time pickers; it only affects the format of the input's value field. Default: null
dateFormat{string} Date formatting string. You can use any string here that can be passed to moment().format. Default: DD-MM-YYYY. This formats only the date component of the datetime.
timeFormat{string} One of "24", "AMPM", "ampm". Default: "24"
divider{string} Date and time divider. Default:
disableMinute{bool} If true, minutes picker won't be shown after picking the hour. Default: false
popupPosition{string} One of 'top left', 'top right', 'bottom left', 'bottom right', 'right center', 'left center', 'top center', 'bottom center'. Default: top left
inline{bool} If true inline picker displayed. Default: false
startMode{string} Display mode to start. One of 'year', 'month', 'day'. Default: day
closable{bool} If true, popup closes after selecting a date-time
initialDate{string|moment|Date} Date on which calendar opens. By default it opens on today's date. (Do not be confused by property name. For setting some default value just set into value prop).
disable{string|moment|string[]|moment[]} Date or list of dates that are displayed as disabled
maxDate{string|moment} Maximum date that can be selected
minDate{string|moment} Minimum date that can be selected
inlineLabel{bool} A field can have its label next to instead of above it.
closeOnMouseLeave{bool} Should close when cursor leaves calendar popup. Default: true
preserveViewMode{bool} Preserve last mode (day, hour, minute) each time user opens dialog. Default true
mountNode{any} The node where the picker should mount.
onClear{func} Called after clear icon has clicked.
clearable{boolean} Using the clearable setting will let users remove their selection from a calendar.
clearIcon{any} Optional Icon to display inside the clearable Input.
pickerWidth{string} Optional width value for picker (any string value that could be assigned to style.width).
pickerStyle{object} Optional style object for picker.
duration{number} Optional duration of the CSS transition animation in milliseconds. Default: 200
animation{string} Optional named animation event to used. Must be defined in CSS. Default: 'scale'
marked{moment|Date|moment[]|Date[]} Date or list of dates that are displayed as marked
markColor{string|SemanticCOLORs} String specifying the mark color. Must be one of the Semantic UI colors
localization{string} Sets Moment date locale locally for this component.
icon{string|false} icon to display inside Input.
iconPosition{'left'|'right'} icon position inside Input. Default: 'right'.
hideMobileKeyboard{bool} Try to prevent mobile keyboard appearing.

DatesRangeInput

PropDescription
all that can be used with SUIR Form.Input
value{string} Currently selected value; must have format dateFormat.
dateFormat{string} Date formatting string. You can use here anything that can be passed to moment().format. Default: DD.MM.YY
popupPosition{string} One of 'top left', 'top right', 'bottom left', 'bottom right', 'right center', 'left center', 'top center', 'bottom center'. Default: top left
inline{bool} If true inline picker displayed. Default: false
closable{bool} If true, popup closes after selecting a dates range
initialDate{string|moment|Date} Date on which calendar opens. By default it opens on today's date. (Do not be confused by property name. For setting some default value just set into value prop).
maxDate{string|moment} Maximum date that can be selected
minDate{string|moment} Minimum date that can be selected
inlineLabel{bool} A field can have its label next to instead of above it.
closeOnMouseLeave{bool} Should close when cursor leaves calendar popup. Default: true
mountNode{any} The node where the picker should mount.
onClear{func} Called after clear icon has clicked.
clearable{boolean} Using the clearable setting will let users remove their selection from a calendar.
clearIcon{any} Optional Icon to display inside the clearable Input.
pickerWidth{string} Optional width value for picker (any string value that could be assigned to style.width).
pickerStyle{object} Optional style object for picker.
duration{number} Optional duration of the CSS transition animation in milliseconds. Default: 200
animation{string} Optional named animation event to used. Must be defined in CSS. Default: 'scale'
marked{moment|Date|moment[]|Date[]} Date or list of dates that are displayed as marked
markColor{string|SemanticCOLORs} String specifying the mark color. Must be one of the Semantic UI colors
localization{string} Sets Moment date locale locally for this component.
icon{string|false} icon to display inside Input.
iconPosition{'left'|'right'} icon position inside Input. Default: 'right'.
allowSameEndDate{boolean} Allow end date to be the same as start date.
hideMobileKeyboard{bool} Try to prevent mobile keyboard appearing.

YearInput

PropDescription
all that can be used with SUIR Form.Input
value{string} Currently selected value; must have format dateFormat.
popupPosition{string} One of 'top left', 'top right', 'bottom left', 'bottom right', 'right center', 'left center', 'top center', 'bottom center'. Default: top left
inline{bool} If true inline picker displayed. Default: false
closable{bool} If true, popup closes after selecting a year
inlineLabel{bool} A field can have its label next to instead of above it.
closeOnMouseLeave{bool} Should close when cursor leaves calendar popup. Default: true
initialDate{string|moment|Date} Date on which calendar opens. By default it opens on today's date. (Do not be confused by property name. For setting some default value just set into value prop).
mountNode{any} The node where the picker should mount.
onClear{func} Called after clear icon has clicked.
clearable{boolean} Using the clearable setting will let users remove their selection from a calendar.
clearIcon{any} Optional Icon to display inside the clearable Input.
pickerWidth{string} Optional width value for picker (any string value that could be assigned to style.width).
pickerStyle{object} Optional style object for picker.
duration{number} Optional duration of the CSS transition animation in milliseconds. Default: 200
animation{string} Optional named animation event to used. Must be defined in CSS. Default: 'scale'
localization{string} Sets Moment date locale locally for this component.
icon{string|false} icon to display inside Input.
iconPosition{'left'|'right'} icon position inside Input. Default: 'right'.
hideMobileKeyboard{bool} Try to prevent mobile keyboard appearing.

MonthInput

PropDescription
all that can be used with SUIR Form.Input
value{string} Currently selected value; must have format dateFormat.
popupPosition{string} One of 'top left', 'top right', 'bottom left', 'bottom right', 'right center', 'left center', 'top center', 'bottom center'. Default: top left
inline{bool} If true inline picker displayed. Default: false
closable{bool} If true, popup closes after selecting a month
inlineLabel{bool} A field can have its label next to instead of above it.
closeOnMouseLeave{bool} Should close when cursor leaves calendar popup. Default: true
dateFormat{string} Moment date formatting string. Default: "MMM"
disable{string|Moment|Date|string[]|Moment[]|Date[]} Date or list of dates that are displayed as disabled.
maxDate{string|Moment|Date|string[]|Moment[]|Date[]} Maximum date that can be selected.
minDate{string|Moment|Date|string[]|Moment[]|Date[]} Minimum date that can be selected.
mountNode{any} The node where the picker should mount.
onClear{func} Called after clear icon has clicked.
clearable{boolean} Using the clearable setting will let users remove their selection from a calendar.
clearIcon{any} Optional Icon to display inside the clearable Input.
pickerWidth{string} Optional width value for picker (any string value that could be assigned to style.width).
pickerStyle{object} Optional style object for picker.
duration{number} Optional duration of the CSS transition animation in milliseconds. Default: 200
animation{string} Optional named animation event to used. Must be defined in CSS. Default: 'scale'
localization{string} Sets Moment date locale locally for this component.
icon{string|false} icon to display inside Input.
iconPosition{'left'|'right'} icon position inside Input. Default: 'right'.
hideMobileKeyboard{bool} Try to prevent mobile keyboard appearing.

MonthRangeInput

PropDescription
all that can be used with SUIR Form.Input
value{string} Currently selected value; must have format dateFormat.
popupPosition{string} One of 'top left', 'top right', 'bottom left', 'bottom right', 'right center', 'left center', 'top center', 'bottom center'. Default: top left
inline{bool} If true inline picker displayed. Default: false
closable{bool} If true, popup closes after selecting a month
inlineLabel{bool} A field can have its label next to instead of above it.
closeOnMouseLeave{bool} Should close when cursor leaves calendar popup. Default: true
dateFormat{string} Moment date formatting string. Default: "MMM"
maxDate{string|Moment|Date|string[]|Moment[]|Date[]} Maximum date that can be selected.
minDate{string|Moment|Date|string[]|Moment[]|Date[]} Minimum date that can be selected.
mountNode{any} The node where the picker should mount.
onClear{func} Called after clear icon has clicked.
clearable{boolean} Using the clearable setting will let users remove their selection from a calendar.
clearIcon{any} Optional Icon to display inside the clearable Input.
pickerWidth{string} Optional width value for picker (any string value that could be assigned to style.width).
pickerStyle{object} Optional style object for picker.
duration{number} Optional duration of the CSS transition animation in milliseconds. Default: 200
animation{string} Optional named animation event to used. Must be defined in CSS. Default: 'scale'
localization{string} Sets Moment date locale locally for this component.
icon{string|false} icon to display inside Input.
iconPosition{'left'|'right'} icon position inside Input. Default: 'right'.
hideMobileKeyboard{bool} Try to prevent mobile keyboard appearing.
0.15.3

5 years ago

0.15.2

5 years ago

0.15.1

5 years ago

0.15.0

5 years ago

0.14.4

5 years ago

0.14.3

5 years ago

0.14.2

5 years ago

0.14.1

5 years ago

0.14.0

5 years ago

0.13.0

5 years ago

0.12.2

5 years ago

0.12.1

5 years ago

0.12.0

5 years ago

0.11.0

5 years ago

0.11.0-alpha

5 years ago

0.10.0

6 years ago

0.9.1

6 years ago

0.9.0

6 years ago

0.9.0-alpha.2

6 years ago

0.9.0-alpha.1

6 years ago

0.9.0-alpha

6 years ago

0.8.0-alpha.2

6 years ago

0.8.0-alpha.1

6 years ago

0.8.0

6 years ago

0.8.0-alpha.0

6 years ago

0.8.0-alpha

6 years ago

0.7.1

6 years ago

0.7.1-alpha.1

6 years ago

0.7.1-alpha

6 years ago

0.7.0

6 years ago

0.6.0

6 years ago

0.5.0

6 years ago

0.4.6

6 years ago

0.4.5

6 years ago

0.4.3

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.0

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.5-alpha.1

6 years ago

0.1.5-alpha

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

1.0.0-alpha

6 years ago

1.0.0

6 years ago