1.0.0 • Published 2 years ago

react-native-mdc-datepicker v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

React Native Material Design Datepicker

Screenshots

Installation

npm install react-native-mdc-datepicker --save

or

yarn add react-native-mdc-datepicker

MDCDatePicker Api

import { MDCDatePicker } from "react-native-mdc-datepicker"

MDCDatePicker.present(options ? : PickerDefaultOptions)
:
Promise <Date>

MDCDatePicker.presentRange(options ? : PickerRangeOptions)
:
Promise <{ start: Date, end: Date }>

MDCTimePicker Api

import { MDCTimePicker } from "react-native-mdc-datepicker"

MDCTimePicker.present(options ? : TimePickerOptions)
:
Promise <{ hour: number, minute: number }>

DatePicker Usage (Declarative Api)

import { DatePicker } from 'react-native-mdc-datepicker';

const [visible, setVisible] = useState(false);
const [selected, setSelected] = useState<Date | null>(null);

return (
  <DatePicker
    visible={visible}
    onClose={() => setVisible(false)}
    value={selected}
    minDate={minDate}
    dynamicColors
    maxDate={maxDate}
    onSelect={setSelected}
  />
)

DateRangePicker Usage (Declarative Api)

import { DatePicker } from 'react-native-mdc-datepicker';

const [visible, setVisible] = useState(false);
const [selectedRange, setSelectedRange] = useState<{
  start: Date | null;
  end: Date | null;
}>({ start: null, end: null });

return (
  <DatePicker
    mode="range"
    visible={visible}
    onClose={() => setVisible(false)}
    minDate={minDate}
    maxDate={maxDate}
    onSelect={setSelectedRange}
    {...selectedRange}
  />
)

TimePicker Usage (Declarative Api)

import { TimePicker, type TimePickerResult } from 'react-native-mdc-datepicker';

const [visible, setVisible] = useState(false);
const [time, setTime] = useState<TimePickerResult | null>(null)
return (
  <TimePicker
    visible={visible}
    onClose={() => setVisible(false)}
    format="24"
    mode="clock"
    onSelect={setTime}
  />
)

Usage (Imperative Api)

const [selected, setSelected] = useState<Date | null>(null);

const [selectedRange, setSelectedRange] = useState<{
  start: Date | null;
  end: Date | null;
}>({ start: null, end: null });

const presentDefault = async () => {
  try {
    const date = await MDCDatePicker.present();
    setSelected(date);
  } catch (err) {
  }
}

const presentRange = async () => {
  try {
    const value = await MDCDatePicker.presentRange();
    setSelectedRange(val);
  } catch {
  }
}

Picker Options

PropTypeRequiredDescription
valueDate or nullNOSelected value
initialDateDateNOInitially selected value
minDateDateNOMinimum date that can be selected
maxDateDateNOMaximum date that can be selected
fullScreenboolean (default - false)NOIf true datepicker will be presented in full screen
dynamicColorsboolean (default - false)NOIf true will aplly system dynamic colors
titlestringNOTitle of the picker
confirmTextstringNOConfirm text of the picker
cancelTextstringNOCancel text of the picker
theme'system'(default) | 'dark' | 'light'NODefines picker theme

Range Picker Options

PropTypeRequiredDescription
startDate or nullNOSelected start value
endDate or nullNOSelected end value
initialStartDateNOInitially selected value for start
initialEndDateNOInitially selected value for end
minDateDateNOMinimum date that can be selected
maxDateDateNOMaximum date that can be selected
fullScreenboolean (default - true)NOIf true datepicker will be presented in full screen
dynamicColorsboolean (default - false)NOIf true will aplly system dynamic colors
titlestringNOTitle of the picker
confirmTextstringNOConfirm text of the picker
theme'system'(default) | 'dark' | 'light'NODefines picker theme

TimePicker Options

PropTypeRequiredDescription
value{hour, minute} | nullNOSelected time
initialTime{hour, minute} | nullNOInitially selected time
format'24' or '12'NODefines time format of the picker
mode'input' or 'clock'NODefines start mode of the picker
dynamicColorsboolean (default - false)NOIf true will aplly system dynamic colors
titlestringNOTitle of the picker
confirmTextstringNOConfirm text of the picker
cancelTextstringNOCancel text of the picker
theme'system'(default) | 'dark' | 'light'NODefines picker theme

Customization

For customization pickers you need to define styles in your src/main/res/values/styles.xml

For different themes will be used different styles

You can learn about picker customization on resources: Date picker, Time picker

Date Picker

<!-- theme = 'system' fullScreen={false}  -->
<style name="MaterialCalendarTheme" parent="BaseMaterialCalendarTheme"></style>
  <!-- theme = 'light' fullScreen={false}  -->
<style name="MaterialCalendarLightTheme" parent="BaseMaterialCalendarTheme"></style>
  <!-- theme = 'dark' fullScreen={false} -->
<style name="MaterialCalendarDarkTheme" parent="BaseMaterialCalendarTheme"></style>
<!-- theme = 'system' fullScreen={true} -->
<style name="MaterialCalendarFullScreenTheme" parent="BaseMaterialCalendarFullScreenTheme"></style>
  <!-- theme = 'dark' fullScreen={true} -->
<style name="MaterialCalendarFullScreenDarkTheme" parent="BaseMaterialCalendarFullScreenTheme"></style>
  <!-- theme = 'light' fullScreen={true} -->
<style name="MaterialCalendarFullScreenLightTheme" parent="BaseMaterialCalendarFullScreenTheme"></style>

Time Picker

  <!-- theme = 'system' -->
<style name="MaterialTimePickerTheme" parent="BaseMaterialTimePickerTheme"></style>
  <!-- theme = 'dark' -->
<style name="MaterialTimePickerDarkTheme" parent="BaseMaterialTimePickerTheme"></style>
  <!-- theme = 'light' -->
<style name="MaterialTimePickerLightTheme" parent="BaseMaterialTimePickerTheme"></style>

Example

<DatePicker
  theme="light"
/>
<style name="MaterialCalendarLightTheme" parent="BaseMaterialCalendarTheme">
  <item name="colorPrimary">#809A54</item>
  <item name="colorOnPrimary">#3B333D</item>
  <item name="colorSurface">#FFFFFF</item>
  <item name="colorOnSurface">#3B333D</item>
  <item name="colorOnSurfaceVariant">#809A54</item>
</style>
<DatePicker
  theme="dark"
/>
<style name="MaterialCalendarDarkTheme" parent="BaseMaterialCalendarTheme">
  <item name="colorPrimary">#007AFF</item>
  <item name="colorOnPrimary">#FFFFFF</item>
  <item name="colorSurface">#241f28</item>
  <item name="colorOnSurface">#FFFFFF</item>
  <item name="colorOnSurfaceVariant">#007AFF</item>
</style>
1.0.0

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago