 

DateRange creates a calendar view based UI component that is connected to date fields. It is used for filtering results by a date like property.
Example uses:
- picking a date range for booking a hotel room.
- finding search results from a database based on date range.
Usage
Basic Usage
<DateRange componentId="DateSensor" dataField="mtime" />Usage With All Props
<DateRange
	componentId="DateSensor"
	dataField="mtime"
	defaultSelected={{
		start: '2017-01-17',
		end: '2017-01-23',
	}}
	initialMonth="2017-01-01"
	queryFormat="date"
	placeholder="Pick date"
	showFilter={true}
	filterLabel="Date"
/>Props
- componentId Stringunique identifier of the component, can be referenced in other components'reactprop.
- dataField Stringdata field to be connected to the component's UI view.
- defaultSelected Object[optional] pre-selects a date range. Accepts thestartandendkey withStringvalues.
- initialMonth String[optional] starts the calendar view from the specified month.
- placeholder String[optional] placeholder to be displayed in the dropdown searchbox. Defaults to "Select a date".
- showFilter Boolean[optional] show as filter when a value is selected in a global selected filters view. Defaults totrue.
- filterLabel String[optional] An optional label to display for the component in the global selected filters view. This is only applicable ifshowFilteris enabled. Default value used here iscomponentId.
- queryFormat String[optional] sets the date format to be used in the query, can accept one of the following:
| queryFormat | Representation as elasticsearch date | 
|---|---|
| epoch_millis(default) | epoch_millis | 
| epoch_second | epoch_second | 
| basic_time | HHmmss.SSSZ | 
| basic_time_no_millis | HHmmssZ | 
| date | yyyy-MM-dd | 
| basic_date | yyyyMMdd | 
| basic_date_time | yyyyMMdd'T'HHmmss.SSSZ | 
| basic_date_time_no_millis | yyyyMMdd'T'HHmmssZ | 
| date_time_no_millis | yyyy-MM-dd'T'HH:mm:ssZZ | 
- innerProps Object[optional] specifies additional props for the internal components. Accepts an object with the specified keys. Read more about the usage here
| Key | Explanation | 
|---|---|
| item | The wrapping Item component from native-base | 
| icon | Icon component from native-base | 
| button | Button component from native-base | 
| header | Header component from native-base | 
| title | Title component from native-base | 
| calendar | Calendar component from react-native-calendars | 
| text | Text component from react-native | 
| modal | Modal component from react-native | 
Demo
Styles
DateRange component supports style prop. Read more about it here.
It also supports an innerStyle prop with the following keys:
- label
- left
- button
- icon
- right
- body
- title
- calendar
Read more about it here
Extending
DateRange component can be extended to
- customize the look and feel with style,
- update the underlying DB query with customQuery,
- connect with external interfaces using beforeValueChange,onValueChangeandonQueryChange
<DateRange
  ...
  style={{ paddingBottom: 10 }}
  customQuery={
    function(value, props) {
      return {
        match: {
          data_field: "this is a test"
        }
      }
    }
  }
  beforeValueChange={
    function(value) {
      // called before the value is set
      // returns a promise
      return new Promise((resolve, reject) => {
        // update state or component props
        resolve()
        // or reject()
      })
    }
  }
  onValueChange={
    function(value) {
      console.log("current value: ", value)
      // set the state
      // use the value with other js code
    }
  }
  onQueryChange={
    function(prevQuery, nextQuery) {
      // use the query with other js code
      console.log('prevQuery', prevQuery);
      console.log('nextQuery', nextQuery);
    }
  }
/>- style ObjectCSS styles to be applied to the DateRange component.
- customQuery Functiontakes value and props as parameters and returns the data query to be applied to the component, as defined in Elasticsearch Query DSL.Note:customQuery is called on value changes in the DateRange component as long as the component is a part ofreactdependency of at least one other component.
- beforeValueChange Functionis a callback function which accepts component's future value as a parameter and returns a promise. It is called everytime before a component's value changes. The promise, if and when resolved, triggers the execution of the component's query and if rejected, kills the query execution. This method can act as a gatekeeper for query execution, since it only executes the query after the provided promise has been resolved.
- onValueChange Functionis a callback function which accepts component's current value as a parameter. It is called everytime the component's value changes. This prop is handy in cases where you want to generate a side-effect on value selection. For example: You want to show a pop-up modal with the valid discount coupon code when a user searches for something in the DateRange.
- onQueryChange Functionis a callback function which accepts component's prevQuery and nextQuery as parameters. It is called everytime the component's query changes. This prop is handy in cases where you want to generate a side-effect whenever the component's query would change.