0.5.0 • Published 7 months ago

react-native-material-datetime-picker-ext v0.5.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

📙 About The Project

Product Screen Shot

This library is a React Native date & time picker component for Android, using Google's latest Material Design components. It only works on Android, as iOS has its own native date & time picker components. For iOS, you can use the RNDateTimePicker or DatePickerIOS (deprecated).

⚙️ Getting Started

Prerequisites

  • Material Design Components for Android
    • Starting from version 0.4.0 you have to change app theme Theme.Material3.* in styles.xml.
    • Starting from version 0.2.0, you no longer have to install the Material Design Components library and update your app theme. Please make sure to remove it from your project if you have it installed.

Installation

yarn add react-native-material-datetime-picker-ext

Rebuild the project. Since iOS is not currently supported, running npx pod-install is optional.

logo-type-a Expo Support

This library should work with the EAS development client library, but it has not been tested. For managed projects, a config plugin might be needed. If you would like to contribute a config plugin, please open an issue.

⚒️ Usage (Android)

Imperative API

import { MaterialDatetimePickerAndroid } from 'react-native-material-datetime-picker';

export const App = () => {
  const [date, setDate] = useState(new Date());
  const [time, setTime] = useState(new Date());

  const showTimePicker = () => {
    MaterialDatetimePickerAndroid.show({
      value: time,
      titleText: 'Select flight time',
      mode: AndroidPickerMode.TIME,
      is24Hours: true,
      inputMode: AndroidTimeInputMode.CLOCK,
      onConfirm: (time) => {
        setTime(time);
      },
    });
  };

  const showDatePicker = () => {
    MaterialDatetimePickerAndroid.show({
      value: date,
      titleText: 'Select booking date',
      mode: AndroidPickerMode.DATE,
      minimumDate: subWeeks(today, 3),
      maximumDate: addWeeks(today, 4),
      inputMode: AndroidDateInputMode.CALENDAR,
      type: AndroidDatePickerType.DEFAULT,
      onConfirm: (date) => {
        setDate(date);
      },
    });
  };

  return (
    <View>
      <Button onPress={showDatePicker} title="Show date picker" />
      <Button onPress={showTimePicker} title="Show time picker" />
      <Text>Date: {date.toLocaleString()}</Text>
      <Text>Time: {time.toLocaleString()}</Text>
    </View>
  );
};

Declarative API

import RNMaterialDatetimePicker from 'react-native-material-datetime-picker';

export const App = () => {
  const [currentDate, setCurrentDate] = useState(new Date());
  const [isVisible, setIsVisible] = useState(false);

  return (
    <View>
      {isVisible && (
        <RNMaterialDatetimePicker
          mode={AndroidPickerMode.DATE}
          value={currentDate}
          minimumDate={subWeeks(today, 3)}
          maximumDate={addWeeks(today, 4)}
          onConfirm={(date) => {
            setCurrentDate(date);
            setIsVisible(false);
          }}
        />
      )}
    </View>
  );
};

Props

Common Options

NameTypeDefaultRequiredDescription
modeAndroidPickerModeAndroidPickerMode.DATEThe mode of picker to show. Can be either AndroidPickerMode.DATE or AndroidPickerMode.TIME.
valueDateThe current value of the picker
titleTextstringThe title to be shown on the top left
positiveButtonTextstringThe text used in the positive action button
negativeButtonTextstringThe text used in the negative action button
onConfirm(date: Date) => stringThe callback invoked when a new date or time is selected
onError(error: unknown) => voidThe callback invoked when an error occured while selecting a new value

Date Picker Options

NameTypeDefaultRequiredDescription
minimumDateDateThe minimum date allowed to be selected
maximumDateDateThe maximum date allowed to be selected
startDateDateThe start date when using a date range picker
endDateDateThe end date when using a date range picker
inputModeAndroidDateInputModeThe input mode to launch the date picker in
fullscreenbooleanWhether to show the date picker in fullscreen mode
typeAndroidDatePickerTypeThe type of date picker to launch. Can be either AndroidDatePickerType.DEFAULT for the regular date picker or AndroidDatePickerType.RANGE for the date range picker
onConfirmDateRange(startDate: Date, endDate: Date) => voidThe callback invoked when a date range is selected

Time Picker Options

NameTypeDefaultRequiredDescription
is24HoursbooleanThe time format to launch the time picker in
inputModeAndroidTimeInputModeThe input mode to launch the time picker in

🙋 Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'feat: add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

Distributed under the MIT License. See LICENSE for more information.

🙇 Acknowledgments

0.5.0

7 months ago

0.4.1

1 year ago

0.4.0

1 year ago

0.3.0

1 year ago