DateTime Picker
KDateTimePicker - A date and time selection tool, displayed inside a popover.
Examples
Single date
Create a single date selection calendar, with an example of passing in a fixed pixel width for the input field, and an empty string for currentValue which defaults the input to the placeholder message.
Set the v-model to Single date time picker
<KDateTimePicker
v-model="currentValue"
@change="newVal => emitVal = newVal"
:range="false"
clear-button
placeholder="Please select a date"
mode="date"
width="250"
/>Single date and time
Set the v-model to Single date time picker
<KDateTimePicker
v-model="currentValue"
@change="newVal => emitVal = newVal"
clear-button
placeholder="Please select a date and time"
mode="dateTime"
:minute-increment="5"
:range="false"
/>Date range
Set the v-model to Range date time picker
<KDateTimePicker
v-model="currentValue"
@change="newVal => emitVal = newVal"
clear-button
placeholder="Please select a date range"
mode="date"
:range="true"
/>Date and time range
Set the v-model to Range date time picker
<KDateTimePicker
v-model="currentValue"
@change="newVal => emitVal = newVal"
clear-button
placeholder="Please select a date and time"
mode="dateTime"
:minute-increment="5"
:range="true"
/>Custom date and Relative time frames
Set the v-model to Range date time picker
Display both a calendar and relative time frames, passing in a preset week-long range. Hide the time. This instance also makes use of the minDate and maxDate parameters, which are both optional.
<KDateTimePicker
v-model="currentValue"
@change="newVal => emitVal = newVal"
placeholder="Please select a range"
mode="relativeDate"
width="415"
:min-date="minDate"
:max-date="maxDate"
:minute-increment="5"
:range="true"
:time-periods="[
{
section: 'Last',
values: [
{ key: '15m', prefix: 'Last', timeframeText: '15 minutes', start: function() {}, end: function() {} },
{ key: '12h', prefix: 'Last', timeframeText: '12 hours', start: function() {}, end: function() {} },
{ key: '24h', prefix: 'Last', timeframeText: '24 hours', start: function() {}, end: function() {}},
...
]
},
{
section: 'Current',
values: [
{ key: 'current_week', prefix: 'Current', timeframeText: 'week', start: function() {}, end: function() {} },
{ key: 'current_month', prefix: 'Current', timeframeText: 'month', start: function() {}, end: function() {} }
]
}
{
section: 'Previous',
values: [
{ key: 'previous_week', prefix: 'Previous', timeframeText: 'week', start: function() {}, end: function() {} },
{ key: 'previous_month', prefix: 'Previous', timeframeText: 'month', start: function() {}, end: function() {} }
]
}
]"
/>Custom date/time and Relative time frames
Set the v-model to Range date time picker
Display both a calendar and relative time frames, passing in a preset week-long range. This instance also makes use of the minDate and maxDate parameters, which are both optional.
<KDateTimePicker
v-model="currentValue"
@change="newVal => emitVal = newVal"
placeholder="Please select a range"
mode="relativeDateTime"
width="415"
:min-date="minDate"
:max-date="maxDate"
:minute-increment="5"
:range="true"
:time-periods="[
{
section: 'Last',
values: [
{ key: '15m', prefix: 'Last', timeframeText: '15 minutes', start: function() {}, end: function() {} },
{ key: '12h', prefix: 'Last', timeframeText: '12 hours', start: function() {}, end: function() {} },
{ key: '24h', prefix: 'Last', timeframeText: '24 hours', start: function() {}, end: function() {}},
...
]
},
{
section: 'Current',
values: [
{ key: 'current_week', prefix: 'Current', timeframeText: 'week', start: function() {}, end: function() {} },
{ key: 'current_month', prefix: 'Current', timeframeText: 'month', start: function() {}, end: function() {} }
]
}
{
section: 'Previous',
values: [
{ key: 'previous_week', prefix: 'Previous', timeframeText: 'week', start: function() {}, end: function() {} },
{ key: 'previous_month', prefix: 'Previous', timeframeText: 'month', start: function() {}, end: function() {} }
]
}
]"
/>Relative date and time
Set the v-model to Range date time picker This utilizes the same time frames as the previous example; however, in this example we are passing in a pre-selected time frame.
<KDateTimePicker
v-model="''"
@change="newVal => emitVal = newVal"
placeholder="Please select a time frame"
mode="relative"
width="480"
:min-date="minDate"
:max-date="maxDate"
:range="true"
:time-periods="[
{
section: 'Last',
values: [
{ key: '15m', prefix: 'Last', timeframeText: '15 minutes', start: function() {}, end: function() {} },
{ key: '12h', prefix: 'Last', timeframeText: '12 hours', start: function() {}, end: function() {} },
{ key: '24h', prefix: 'Last', timeframeText: '24 hours', start: function() {}, end: function() {} },
...
]
},
{
section: 'Current',
values: [
{ key: 'current_week', prefix: 'Current', timeframeText: 'week', start: function() {}, end: function() {} },
{ key: 'current_month', prefix: 'Current', timeframeText: 'month', start: function() {}, end: function() {} }
]
}
{
section: 'Previous',
values: [
{ key: 'previous_week', prefix: 'Previous', timeframeText: 'week', start: function() {}, end: function() {} },
{ key: 'previous_month', prefix: 'Previous', timeframeText: 'month', start: function() {}, end: function() {} }
]
}
]"
/>Props
v-model
Single date time picker v-model
A single date or time picker instance which can be seeded with a value as shown here, where currentValue is a valid Date object, eg: new Date() or an empty string, eg: '' which will display the placeholder message.
<KDateTimePicker
v-model="currentValue"
...
/>Range date time picker v-model
An instance that displays a date range or a series of relative time frames.
Can be seeded with a relative time frame by setting the v-model to currentValue as shown below:
currentValue = {
start: '',
end: '',
timePeriodsKey: TimeframeKeys.ONE_DAY
},Or, it can be seeded with a custom calendar range by setting v-model to:
const today = new Date()
const twoDaysAgo = new Date(today.getTime() - (2*24*60*60*1000))
currentValue = {
start: twoDaysAgo,
end: today
}clearButton
A Boolean to show/hide the Clear button.
default: false
icon
A Boolean to show/hide the calendar icon displayed within the display field.
default: true
minDate
A valid Date object (eg: Mon Aug 15 2022 08:00:00 GMT-0700 (Pacific Daylight Time)) which blocks out days/times that occur before the given timestamp. minDate gets passed down to the calendar component, and does not apply to relative time frames.
default: null
maxDate
A valid Date object (eg: Fri Aug 19 2022 12:00:00 GMT-0700 (Pacific Daylight Time)) which blocks out days/times that occur after the given timestamp. maxDate gets passed down to the calendar component, and does not apply to relative time frames.
default: null
minuteIncrement
A Number which sets the custom interval for the Minutes select dropdown.
default: 5
mode
Required String prop which accepts the following values:
date: denotes a datetime picker instance that allows a calendar date to be selectedtime: denotes an instance that allows a time to be selecteddateTime: denotes an instance that allows a calendar date and time to be selectedrelative: instance which only contains relative time framesrelativeDate: instance with relative time frames, and a calendar that supports date selectionrelativeDateTime: instance with relative time frames, and a calendar that supports date and time selection
placeholder
String containing the default message displayed in the date time picker input. Clearing any selected values will revert the input to display this placeholder message.
default: Select a time range
range
Boolean which determines whether the calendar allows selection of a single date or time, as opposed to a range of start and end values.
default: false
timePeriods
An array of time frame values to be displayed as buttons in the "Relative" section of the popover.
Please note that each timeframe's key attribute must be unique.
default: []
Example:
[
{
section: "Last",
values: [
{ key: "15m", prefix: "Last", timeframeText: "15 minutes", start: () => {}, end: () => {} },
{ key: "12h", prefix: "Last", timeframeText: "12 hours", start: () => {}, end: () => {} },
{ key: "24h", prefix: "Last", timeframeText: "24 hours", start: () => {}, end: () => {} },
]
},
{
section: "Current",
values: [
{ key: "current_week", prefix: "Current", timeframeText: "week", start: () => {}, end: () => {} },
{ key: "current_month", prefix: "Current", timeframeText: "month", start: () => {}, end: () => {} },
]
}
{
section: "Previous",
values: [
{ key: "previous_week", prefix: "Previous", timeframeText: "week", start: () => {}, end: () => {} },
{ key: "previous_month", prefix: "Previous", timeframeText: "month", start: () => {}, end: () => {} },
]
}
]Events
The events below will fire whenever Apply is clicked (assuming the user has made a custom calendar or relative timeframe selection). If Clear is clicked, the object shape remains the same, but the values are empty strings.
Single date time picker
Events: change, update:modelValue
Will emit a JavaScript Date object, or an empty string "Clear".
"2022-09-06T19:45:54.406Z" // ISO 8601 Date stringRange date time picker
Events: change, update:modelValue
Will emit an object containing the following values:
{
"start": "2022-09-06T19:45:54.406Z", // ISO 8601 Date string
"end": "2022-09-07T19:45:54.406Z", // ISO 8601 Date string
"timePeriodsKey": "24h" // or "" if not applicable
}
Kongponents