Giter Site home page Giter Site logo

shahzore-qureshi / react-native-modal-datetime-picker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mmazzarolo/react-native-modal-datetime-picker

0.0 1.0 0.0 1.68 MB

A React-Native datetime-picker for Android and iOS

License: MIT License

JavaScript 67.01% Python 8.96% Java 6.09% Objective-C 17.94%

react-native-modal-datetime-picker's Introduction

react-native-modal-datetime-picker

npm version Supports Android and iOS

A declarative cross-platform react-native datetime-picker.

This library exposes a cross-platform interface for showing the native date-picker and time-picker inside a modal, providing a unified user and developer experience.

Under the hood this library is using react-native-modal for the iOS modal implementation.

Setup

Install the library using npm or yarn:

# using npm
$ npm install react-native-modal-datetime-picker --save

# using yarn
$ yarn add react-native-modal-datetime-picker

Usage

import React, { Component } from "react";
import { Button, View } from "react-native";
import DateTimePicker from "react-native-modal-datetime-picker";

export default class DateTimePickerTester extends Component {
  constructor(props) {
    super(props);
    this.state = {
      isDateTimePickerVisible: false
    };
  }

  showDateTimePicker = () => {
    this.setState({ isDateTimePickerVisible: true });
  };

  hideDateTimePicker = () => {
    this.setState({ isDateTimePickerVisible: false });
  };

  handleDatePicked = date => {
    console.log("A date has been picked: ", date);
    this.hideDateTimePicker();
  };

  render() {
    return (
      <>
        <Button title="Show DatePicker" onPress={this.showDateTimePicker} />
        <DateTimePicker
          isVisible={this.state.isDateTimePickerVisible}
          onConfirm={this.handleDatePicked}
          onCancel={this.hideDateTimePicker}
        />
      </>
    );
  }
}

Available props

Name Type Default Description
cancelTextIOS string 'Cancel' The text on the cancel button on iOS
cancelTextStyle style The style of the cancel button text on iOS
confirmTextIOS string 'Confirm' The text on the confirm button on iOS
confirmTextStyle style The style of the confirm button text on iOS
customCancelButtonIOS node A custom component for the cancel button on iOS
customConfirmButtonIOS node A custom component for the confirm button on iOS
customDatePickerIOS node A custom component that will replace the default DatePicker on iOS (Example)
customTitleContainerIOS node A custom component for the title container on iOS
date obj new Date() Initial selected date/time
datePickerContainerStyleIOS style The style of the container on iOS
datePickerModeAndroid string 'default' Display as 'spinner' or 'calendar' or 'default' (based on Android version)
dismissOnBackdropPressIOS bool true Dismiss the picker on backdrop press (on iOS)?
hideTitleContainerIOS bool false If true, hide the modal title container on iOS
is24Hour bool true If false, the picker shows an AM/PM chooser on Android
isVisible bool false Show the datetime picker?
maximumDate Date undefined Max Date. Does not work with 'time' picker on Android
minimumDate Date undefined Min Date. Does not work with 'time' picker on Android
minuteInterval number 1 Interval for time picker on iOS
neverDisableConfirmIOS bool false If true, do not disable the confirm button on any touch events; see #82
onCancel func REQUIRED Function called on dismiss
onConfirm func REQUIRED Function called on date or time picked. It returns the date or time as a JavaScript Date object
onHideAfterConfirm func () => {} Called after the hiding animation if a date was picked
mode string 'date' Datepicker? 'date' Timepicker? 'time' Both? 'datetime'
pickerRefCb func Called after picker has mounted, contains a ref
reactNativeModalPropsIOS object Additional props for react-native-modal on iOS
timePickerModeAndroid string 'default' Display as 'spinner' or 'clock' or 'default' (based on Android version)
titleIOS string 'Pick a date' The title text on iOS
titleStyle style The style of the title text on iOS

All the DatePickerIOS props are also supported!

Frequently Asked Questions

The component is not working as expected

Under the hood react-native-modal-datetime-picker uses react-native original DatePickerAndroid, TimePickerAndroid and DatePickerIOS. Before reporting a bug, try swapping react-native-datetime-picker with react-native original date/time pickers and, if the issue persists, check if it has already been reported as a react-native issue.

How can I show the timepicker instead of the datepicker?

Just set the mode prop to time. You can also display both the datepicker and the timepicker in one step by setting the mode prop to datetime.

Why is the selected start date being shown in the input field of the end date?

If you have both a start date/time and end date/time picker on the same screen, you will need to have showDateTimePicker, hideDateTimePicker, and handleDatePicked functions for both.

showStartDateTimePicker = () =>
  this.setState({ startDateTimePickerVisible: true });

showEndDateTimePicker = () => this.setState({ endDateTimePickerVisible: true });

hideStartDateTimePicker = () =>
  this.setState({ startDateTimePickerVisible: false });

hideEndDateTimePicker = () =>
  this.setState({ endDateTimePickerVisible: false });

handleStartDatePicked = date => {
  console.log("A date has been picked: ", date);
  this.hideStartDateTimePicker();
};

handleEndDatePicked = date => {
  console.log("A date has been picked: ", date);
  this.hideEndDateTimePicker();
};

How do I change the color of the Android date and time pickers?

This is more a React-Native specific question than a react-native-modal-datetime-picker one.
See issue #29 and #106 for some solutions.

How to set 24 hours in iOS ?

The is24Hour prop is only available on Android but you can use a small hack for enabling it on iOS by setting the picker timezone to en_GB:

<DatePicker
  mode="time"
  locale="en_GB" // Use "en_GB" here
  date={new Date()}
/>

How to set automatic locale in iOS

Datepicker can adjust by itself locale (fr_FR, en_GB...) depending user's device locale. Edit your AppDelegate.m file, and add:

// Force DatePicker locale to current language (for: 24h or 12h format, full day names etc...)
NSString *currentLanguage = [[NSLocale preferredLanguages] firstObject];
[[UIDatePicker appearance] setLocale:[[NSLocale alloc]initWithLocaleIdentifier:currentLanguage]];

How do I make it work with snapshot testing?

See issue #216 for a possible workaround.

Contributing

Please see the contributing guide.

License

The library is released under the MIT license. For more information see LICENSE.

react-native-modal-datetime-picker's People

Watchers

 avatar

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.