/** Core */
import { EventArgs } from "cmf.taura/src/base/base.mediator";
import { CoreComponent } from "cmf.core/src/core";
/** Angular2 */
import * as ng from "@angular/core";
/** External - JQuery */
import "node_modules/cmf.core.controls/assets/datetimepicker.min.js";
import moment from "moment";
export declare enum DateTimeRangePickerSpinnerType {
Hour = 0,
Day = 1,
Week = 2,
Month = 3,
Year = 4
}
export declare enum DateFormats {
DateTime = 0,
Date = 1,
Hour = 2,
Day = 3,
DayOfWeek = 4,
WeekOfMonth = 5,
WeekOfMonthYear = 6,
Month = 7,
MonthOfYear = 8,
Year = 9,
Time = 10
}
/**
* @whatItDoes
* DateTimeRangePicker base component is used to pick dateTime range. Based on the rangePickerType
* property the nested component(s) can be DateTimePickers or a DateTimeSpinner.
* It also accepts different date-time formats. The displayed value depends on the format property.
*
* @howToUse
* This component is used with the inputs and outputs mentioned below.
*
* ### Inputs
* `DateTimeRangePickerSpinnerType | string` : **spinner-type** - The spinner-type of this component (Hour | Day | Week | Month | Year) ;
* `any` : **date-time-format** - The date-time-format of this component (Ex: DD/MM/YYYY HH:mm:ss) ;
* `moment.Moment` : **startdatevalue** - The start date value of this component (Date | Moment | string) ;
* `moment.Moment` : **enddatevalue** - The end date value of this component (Date | Moment | string).
*
* ### Outputs
* `any` : **startdatevalueChange** - Triggered when the start date value change ;
* `any` : **enddatevalueChange** - Triggered when the end date value change .
*
* ### Example
* To use the component, assume this HTML Template as an example:
*
* ```HTML
*
*
*
*
*
*
*
*
*
* ```
*
*/
export declare class DateTimeRangePicker extends CoreComponent implements ng.OnInit, ng.OnChanges {
/**
* List item classes. The value to be used depends on the property _listSelectedItemBorderLocation
*
* @property {Array} List of css classes
*/
static MOMENT_FORMATS: string[];
/**
* Spinner content classes, to be used depending on the content type.
*
* @property {Array} List of css classes
*/
static SPINNER_CONTENT_CLASSES: string[];
/**
* The spinner type of the date-time-range picker
*
* @property {SpinnerType} spinner type. Possible values: Hour, Day, Week, Month, Year.
*/
private _spinnerType;
/**
* The Date Time Format used by Moment
*
* @property {string} Moment date format. Default is "DD/MM/YYYY HH:mm:ss"
*/
private _dateTimeMomentFormat;
/**
* The start date value change event, so the picker can inform the upper components that the value has changed
*
* @property {ng.EventEmitter} init event
*/
startDateValueChanged: ng.EventEmitter;
/**
* The end date value change event, so the picker can inform the upper components that the value has changed
*
* @property {ng.EventEmitter} init event
*/
endDateValueChanged: ng.EventEmitter;
s: any;
/**
* The start date moment value of the date-time-range picker
*
* @property {Moment} picker start date time value in the given format
*/
_startDateValue: moment.Moment;
/**
* The end date moment value of the date-time-range picker
*
* @property {Moment} picker end date time value in the given format
*/
_endDateValue: moment.Moment;
/**
* The spinner content class
*
* @property {string} spinner content class.
*/
_spinnerContentClass: string;
/**
* The spinner content
*
* @property {string} spinner text content.
*/
_spinnerContent: string;
/**
* Property _spinnerType getter
*
* @return {SpinnerType} current value of property _spinnerType
* @method spinnerType
*/
/**
* Property _spinnerType setter
*
* @param {SpinnerType} [value] new value for property _spinnerType
* @method spinnerType
*/
spinnerType: DateTimeRangePickerSpinnerType | string;
/**
* Property _startDateValue getter
*
* @return {moment.Moment} value of property start date value
* @method startDateValue
*/
/**
* Property _startDateValue setter
*
* @param {moment.Moment} [value] new value for property start date value
* @method startDateValue
*/
startDateValue: moment.Moment;
/**
* Property _endDateValue getter
*
* @return {moment.Moment} value of property end date value
* @method endDateValue
*/
/**
* Property _endDateValue setter
*
* @param {moment.Moment} [value] new value for property end date value
* @method endDateValue
*/
endDateValue: moment.Moment;
/**
* @method constructor
*/
constructor(elementRef: ng.ElementRef);
/**
* Based on start and end date values updates Spinner
*
* @method _setDates
*/
private _setDates;
/**
* Based on the current spinner type get unit of time
*
* @method _getUnitOfTime
*/
private _getUnitOfTime;
/**
* Based on the current dates, and the spinner type, updates dates and spinner text content
*
* @method _navigateSpinner
*/
private _navigateSpinner;
/**
* Gets week of month - first week is zero
*
* @method _getWeekOfMonth
*/
private _getWeekOfMonth;
/**
* Based on the current dates, and the spinner type, updates spinner text content
*
* @method _updateSpinnerContent
*/
private _updateSpinnerContent;
/**
* When spinner navigation previous is clicked - change dates and update spinner text content
*
* @param {Taura.EventArgs} [event] object containing event data
* @method onSpinnerPreviousClick
*/
onSpinnerPreviousClick(event: EventArgs): void;
/**
* When spinner navigation next is clicked - change dates and update spinner text content
*
* @param {Taura.EventArgs} [event] object containing event data
* @method onSpinnerNextClick
*/
onSpinnerNextClick(event: EventArgs): void;
/**
* When start date value changes - notify parent component
*
* @param {Event} [event] updated object
* @method onStartDateValueChange
*/
onStartDateValueChange(value: moment.Moment): void;
/**
* When end date value changes - notify parent component
*
* @param {Event} [event] updated object
* @method onEndDateValueChange
*/
onEndDateValueChange(value: moment.Moment): void;
/**
* On component initialization.
*/
ngOnInit(): void;
/**
* On changes method - update...
*/
ngOnChanges(changes: any): void;
}
export declare class DateTimeRangePickerModule {
}