Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

VueJS component to select dates & time, including a range mode

License

NotificationsYou must be signed in to change notification settings

chronotruck/vue-ctk-date-time-picker

Repository files navigation

A vue component for select dates (range mode available) & time

Build Status

This documentation is for v2.*. Find v1 documentationhere

vue-ctk-date-time-picker

Dark mode

vue-ctk-date-time-picker

Demo

Enjoy

Installation

Yarn

yarn add vue-ctk-date-time-picker

NPM

npm i --save vue-ctk-date-time-picker

Usage

ES6 Modules / CommonJS

importVueCtkDateTimePickerfrom'vue-ctk-date-time-picker';import'vue-ctk-date-time-picker/dist/vue-ctk-date-time-picker.css';Vue.component('VueCtkDateTimePicker',VueCtkDateTimePicker);
<VueCtkDateTimePickerv-model="yourValue"/>

UMD

<linkrel="stylesheet"type="text/css"href="${YOUR_PATH}/vue-ctk-date-time-picker.css"/><divid="app"><VueCtkDateTimePickerv-model="yourValue"></VueCtkDateTimePicker></div><scriptsrc="https://unpkg.com/vue"charset="utf-8"></script><scriptsrc="${YOUR_PATH}/vue-ctk-date-time-picker.umd.min.js"charset="utf-8"></script><scripttype="text/javascript">Vue.component('vue-ctk-date-time-picker',window['vue-ctk-date-time-picker']);newVue({el:'#app',data(){return{yourValue:null};}});</script>

Here is an example ofUMD implementation.

Use custom element to trigger the component

<VueCtkDateTimePicker:no-value-to-custom-elem="(true|false)"/>  ...<inputtype="text"/>  ... or<buttontype="button">Label</button>  ...</VueCtkDateTimePicker>

Props API

PropsTypeRequiredDefault
v-modelStringyes-
formatStringno'YYYY-MM-DD hh:mm a'
formattedStringno'llll' (momentjs format)
labelStringnoSelect date & time
hint (1)Stringno-
error (2)Booleannofalse
color (3)String (hex)nododgerblue
button-color (4)String (hex)no#00C853
positionStringnonull
locale (5)StringnoBrowser Locale
persistentBooleannofalse
minute-intervalIntegerno1
output-formatStringnonull
only-timeBooleannofalse
only-dateBooleannofalse
no-labelBooleannofalse
no-headerBooleannofalse
no-value-to-custom-elem (6)Booleannofalse
min-date (7)Stringno-
max-date (7)Stringno-
no-weekends-daysBooleannofalse
auto-closeBooleannofalse
inlineBooleannofalse
overlayBooleannofalse
rangeBooleannofalse
darkBooleannofalse
no-shortcutsBooleannofalse
no-buttonBooleannofalse
input-sizeString (sm or lg)nonull
button-now-translationStringno'Now'
no-button-nowBooleannofalse
first-day-of-weekInt (0 to 7)no-
disabled-dates (8)Array<string>no[]
disabled-hours (9)Array<string>no-
shortcutStringno-
custom-shortcuts (10)Array<object>no-
disabled-weekly (11)Array<integer>no[]
no-keyboard (12)Booleannofalse
right (13)Booleannofalse
noClearButtonBooleannofalse
behaviourObjectnoSee behaviour
id (14)Stringnoundefined

(1) hint : Is a text that replaces the label/placeholder (Ex : Error designation)

(2) error : When istrue --> Input border & label are red

(3) color: Replace color for the hint, the borders & picker color

(4) button-color: Replace color for the buttons on bottom (validation & 'now')

(5) locale : Default value is the locale of the browser - Ex : Setlocale="fr" to force to French language

(6) no-value-to-custom-elem : No value will set to your elem (you can get the formatted value with @formatted-value event)

(7) min-date && max-date should be in the same format as property format specified. If format not set - it is set to 'YYYY-MM-DD hh:mm a' by default

(8) Disabled-Dates is an Array of dates in 'YYYY-MM-DD' format (ex:['2018-04-03', '2018-04-07', '2018-04-09'])

(9) disabled-hours : Must be an Array of hours in 24h format ('00' to '23') :['00','01','02','03','04','05','06','07','19','20','21','22','23']

(10) custom-shortcuts - It's an array of objects. Each object represents a single shortcut.

[{key:'thisWeek',label:'This week',value:'isoWeek'},{key:'lastWeek',label:'Last week',value:'-isoWeek'},{key:'last7Days',label:'Last 7 days',value:7},{key:'last30Days',label:'Last 30 days',value:30},{key:'thisMonth',label:'This month',value:'month'},{key:'lastMonth',label:'Last month',value:'-month'},{key:'thisYear',label:'This year',value:'year'},{key:'lastYear',label:'Last year',value:'-year'}];

Shortcut types allowed are :['day', '-day', 'isoWeek', '-isoWeek', 'quarter', 'month', '-month', 'year', '-year', 'week', '-week']For each shortcut, akey,label andvalue must be specified. Thekey is a unique key for that specific shortcut.Additional values can be passed as acallback function that will be called whenever the user clicks on the shortcut. The callback receives an object as first argument with thestart andend values, with theshortcut object itself.You can use this feature for translate existings shortcuts.If thevalue of shortcut is a number (Integer), this number correspond to number of day (for 5 --> Last 5 days).

If thevalue of shortcut is a function, we'll use it to generate thestart andend values. This function should return an object with the start & end values. Both valuesmust be a moment object. The function is called when the user clicks on the shortcut button.

[{key:'customValue',label:'My custom thing',value:()=>{return{start:moment(),end:moment().add(2,'days')}},callback:({ start, end })=>{console.log('My shortcut was clicked with values: ',start,end)}},];

With theshortcut property, you can specify a shortcut that's selected by default by passing it'skey value.

  :shortcut="'thisMonth'"

(11) disabled-weekly : Days of the week which are disabled every week, in Array format with day index, Sunday as 0 and Saturday as 6:[0,4,6]

(12) no-keyboard : Disable keyboard accessibility & navigation

(13) right : add this attribute to align the picker on right

(14) id : it assign id such as 'passedstring-input' to input help diffrentiate between two date-time-picker on same component.

Any additionnal attribute passed to the component will be automatically be binded to the input component. (eg. if you passes atype attribute, the<input> will receive it).

Behaviour

In order to avoid having too much properties in the component, We're adding abehaviour property that is an object including some annex behaviour values.

The default value for this object is:

{  time:{    nearestIfDisabled:true;}}

To override those values, pass a new object with the values you want to override:

<ctk-date-time-picker:behaviour="{    time: {      nearestIfDisabled: false    }  }"/>
BehaviourDescriptionTypeDefault
time.nearestIfDisabledIftrue, it will select the nearest available hour in the timepicker, if the current selected hour is disabled. Per example, if the hour is 12 but all the hours have been disabled until 14, then the 14 will be selected by default. Setfalse to disable this behaviour; the current hour will remain selected even if it has been disabled. The user cannot re-select it.Booleantrue

Events API

EventReturn
inputvalue (formatted with 'format' props)
formatted-valuevalue (formatted with 'formatted' props)
is-shownComponent is shown
is-hiddenComponent is hidden
validateClick on validate button (so component is closed)
destroyComponent is destroy

Keyboard Accessible

KeyAction
Arrow RightNext Day
Arrow LeftPrevious Day
Arrow DownSame day on next week
Arrow UpSame day on previous week
Page DownSame day on previous month
Page UpSame day on next month
Enter or SpaceSelect day
EscapeClose component

Upcoming features (Todo)

  • Double Calendar on RangeDatePicker (issue : #33)
  • Inputs Text to choose values (issue #30)
  • TimePicker seconds support (issue : #79)

Contribute

Setting up development server

Without Docker

Ensure you have Node and npm in your machine. Minimal config is:

  • node >= 6.0
  • npm >= 3.0

This project is built withnode@10.x.

Install the development dependencies by running:

npm install

or

npm ci# Recommanded if you have node > 10.x

Once your dependencies are installed, start the development server with:

npm run serve

This will start the development server available athttp://localhost:8080.

Docker

To easily set-up your development environment, you can spin up a container containing the development app.For that, you need Docker with docker-compose in your machine.

Once you've everything running, you can simply run the following command to start the dev server:

docker-compose up -d

This will start the development server inside a container and accessible throughhttp://localhost:8080.

Compiles and hot-reloads for development

npm run serve

Linter

npm run lint

Tests

Work in progress

License

This project is licensed underMIT License

Credit

Open source time proudly sponsored byChronotruck


[8]ページ先頭

©2009-2025 Movatter.jp