flatpickr
Version:
A lightweight, powerful javascript datetime picker
694 lines (554 loc) • 15.2 kB
text/stylus
@require "./_vars.styl"
@keyframes fpFadeInDown
from
opacity 0
transform translate3d(0, -20px, 0)
to
opacity 1
transform translate3d(0, 0, 0)
@keyframes fpSlideLeft
from
transform translate3d(0px, 0px, 0px)
to
transform translate3d(-100%, 0px, 0px)
@keyframes fpSlideLeftNew
from
transform translate3d(100%, 0px, 0px)
to
transform translate3d(0px, 0px, 0px)
@keyframes fpSlideRight
from
transform translate3d(0, 0, 0px)
to
transform translate3d(100%, 0px, 0px)
@keyframes fpSlideRightNew
from
transform translate3d(-100%, 0, 0px)
to
transform translate3d(0, 0, 0px)
@keyframes fpFadeOut
from
opacity 1
to
opacity 0
@keyframes fpFadeIn
from
opacity 0
to
opacity 1
.flatpickr-calendar
background transparent
overflow hidden
max-height 0
opacity 0
visibility hidden
text-align center
padding 0
animation none
direction ltr
border 0
font-size 14px
line-height 24px
border-radius 5px
position absolute
width $calendarWidth
box-sizing border-box
touch-action manipulation
if $noCalendarBorder is defined
box-shadow 0 3px 13px alpha(black, 0.08)
else
background $calendarBackground
box-shadow 1px 0 0 $calendarBorderColor,
-1px 0 0 $calendarBorderColor,
0 1px 0 $calendarBorderColor,
0 -1px 0 $calendarBorderColor,
0 3px 13px alpha(black, 0.08)
&.open, &.inline
opacity 1
visibility visible
overflow visible
max-height 640px
&.open
display inline-block
z-index 99999
&.animate.open
animation fpFadeInDown 300ms $bezier
&.inline
display block
position relative
top 2px
&.static
position absolute
top calc(100% + 2px)
&.open
z-index 999
display block
&.hasWeeks
width auto
.hasWeeks, .hasTime
.dayContainer
border-bottom 0
border-bottom-right-radius 0
border-bottom-left-radius 0
if $noCalendarBorder
.hasWeeks .dayContainer
border-left 0
&.showTimeInput.hasTime
.flatpickr-time
height $timeHeight
border-top 1px solid $calendarBorderColor
if $noCalendarBorder is defined
.flatpickr-innerContainer
border-bottom 0
.flatpickr-time
border 1px solid $calendarBorderColor
&.noCalendar.hasTime
.flatpickr-time
height auto
&:before, &:after
position absolute
display block
pointer-events none
border solid transparent
content ''
height 0
width 0
left 22px
&.rightMost
&:before, &:after
left auto
right 22px
&:before
border-width 5px
margin 0 -5px
&:after
border-width 4px
margin 0 -4px
&.arrowTop
&:before, &:after
bottom 100%
&:before
border-bottom-color $calendarBorderColor
&:after
if $noCalendarBorder is defined
border-bottom-color $monthBackground
else
border-bottom-color $calendarBackground
&.arrowBottom
&:before, &:after
top 100%
&:before
border-top-color $calendarBorderColor
&:after
if $noCalendarBorder is defined
border-top-color $monthBackground
else
border-top-color $calendarBackground
&:focus
outline 0
.flatpickr-wrapper
position relative
display inline-block
.flatpickr-month
if $noCalendarBorder is defined
border-radius 5px 5px 0 0
background $monthBackground
color $monthForeground
fill $monthForeground
height $monthNavHeight
line-height 1
text-align center
position relative
user-select none
overflow hidden
.flatpickr-prev-month, .flatpickr-next-month
text-decoration none
cursor pointer
position absolute
top 0px
line-height 16px
height $monthNavHeight
padding 10px calc(3.57% - 1.5px)
z-index 3
i
position relative
&.flatpickr-prev-month
/*!
/*rtl:begin:ignore*//*
*/
left 0
/*!
/*rtl:end:ignore*//*
*/
&.flatpickr-next-month
/*!
/*rtl:begin:ignore*//*
*/
right 0
/*!
/*rtl:end:ignore*//*
*/
&:hover
color $todayColor
svg
if $arrow_hover_color is defined
fill $arrow_hover_color
else
fill $todayColor
svg
width 14px
path
transition fill 0.1s
fill inherit
.numInputWrapper
position relative
height auto
input, span
display inline-block
input
width 100%
span
position absolute
right 0
width 14px
padding 0 4px 0 2px
height 50%
line-height 50%
opacity 0
cursor pointer
border 1px solid alpha($dayForeground, 0.05)
box-sizing border-box
&:hover
background: alpha($invertedBg, 0.1)
&:active
background: alpha($invertedBg, 0.2)
&:after
display block
content ""
position absolute
top 33%
&.arrowUp
top 0
border-bottom 0
&:after
border-left 4px solid transparent
border-right 4px solid transparent
border-bottom 4px solid alpha($dayForeground, 0.6)
&.arrowDown
top 50%
&:after
border-left 4px solid transparent
border-right 4px solid transparent
border-top 4px solid alpha($dayForeground, 0.6)
svg
width inherit
height auto
path
fill alpha($monthForeground, 0.5)
&:hover
background: alpha($invertedBg, 0.05)
span
opacity 1
.flatpickr-current-month
font-size 135%
line-height inherit
font-weight 300
color inherit
position absolute
width 75%
left 12.5%
padding (0.22*$monthNavHeight) 0 0 0
line-height 1
height $monthNavHeight
display inline-block
text-align center
transform translate3d(0px, 0px, 0px)
&.slideLeft
transform translate3d(-100%, 0px, 0px)
animation fpFadeOut $slideTime ease, fpSlideLeft $slideTime $bezier
&.slideLeftNew
transform translate3d(100%, 0px, 0px)
animation fpFadeIn $slideTime ease, fpSlideLeftNew $slideTime $bezier
&.slideRight
transform translate3d(100%, 0px, 0px)
animation fpFadeOut $slideTime ease, fpSlideRight $slideTime $bezier
&.slideRightNew
transform translate3d(0, 0, 0px)
animation fpFadeIn $slideTime ease, fpSlideRightNew $slideTime $bezier
span.cur-month
font-family inherit
font-weight 700
color inherit
display inline-block
margin-left 0.5ch
padding 0
&:hover
background: alpha($invertedBg, 0.05)
.numInputWrapper
width 6ch
width unquote("7ch\0")
display inline-block
span.arrowUp:after
border-bottom-color $monthForeground
span.arrowDown:after
border-top-color $monthForeground
input.cur-year
background transparent
box-sizing border-box
color inherit
cursor default
padding 0 0 0 0.5ch
margin 0
display inline-block
font-size inherit
font-family inherit
font-weight 300
line-height inherit
height initial
border 0
border-radius 0
vertical-align initial
&:focus
outline 0
&[disabled], &[disabled]:hover
font-size 100%
color alpha($monthForeground, 0.5)
background transparent
pointer-events none
.flatpickr-weekdays
background $weekdaysBackground
text-align center
overflow hidden
width 100%
display flex
align-items center
height $weekdaysHeight
span.flatpickr-weekday
cursor default
font-size 90%
background $monthBackground
color $weekdaysForeground
line-height 1
margin 0
text-align center
display block
flex 1
font-weight bolder
.dayContainer, .flatpickr-weeks
padding 1px 0 0 0
.flatpickr-days
position: relative;
overflow: hidden;
display flex
width $daysWidth
&:focus
outline 0
if $noCalendarBorder is defined
border-left 1px solid $calendarBorderColor
border-right 1px solid $calendarBorderColor
.dayContainer
padding 0
outline 0
text-align left
width ($daysWidth)
min-width ($daysWidth)
max-width ($daysWidth)
box-sizing border-box
display inline-block
display -ms-flexbox
display flex
flex-wrap wrap
-ms-flex-wrap wrap
-ms-flex-pack: justify
justify-content space-around
transform: translate3d(0px, 0px, 0px);
opacity 1
.flatpickr-calendar.animate .dayContainer
&.slideLeft
animation fpFadeOut $slideTime $bezier, fpSlideLeft $slideTime $bezier
&.slideLeft, &.slideLeftNew
transform: translate3d(-100%, 0px, 0px);
&.slideLeftNew
animation fpFadeIn $slideTime $bezier, fpSlideLeft $slideTime $bezier
&.slideRight
animation fpFadeOut $slideTime $bezier, fpSlideRight $slideTime $bezier
transform: translate3d(100%, 0px, 0px);
&.slideRightNew
animation fpFadeIn $slideTime $bezier, fpSlideRightNew $slideTime $bezier
.flatpickr-day
background none
border 1px solid transparent
border-radius 150px
box-sizing border-box
color $dayForeground
cursor pointer
font-weight 400
width 14.2857143%
flex-basis 14.2857143%
max-width $daySize
height $daySize
line-height $daySize
margin 0
display inline-block
position relative
justify-content center
text-align center
&, &.prevMonthDay, &.nextMonthDay
&.inRange, &.today.inRange, &:hover, &:focus
cursor pointer
outline 0
background $dayHoverBackground
border-color $dayHoverBackground
&.today
border-color $todayColor
&:hover, &:focus
border-color $todayColor
background $todayColor
if $today_fg_color is defined
color $today_fg_color
else
color white
&.selected, &.startRange, &.endRange
&, &.inRange, &:focus, &:hover, &.prevMonthDay, &.nextMonthDay
background $selectedDayBackground
box-shadow none
if $selectedDayForeground is defined
color $selectedDayForeground
else
color white
border-color $selectedDayBackground
&.startRange
border-radius 50px 0 0 50px
//box-shadow: (2.5*$dayMargin) 0 0 $selectedDayBackground
&.endRange
border-radius 0 50px 50px 0
//
&.startRange + .endRange
box-shadow: (-5*$dayMargin) 0 0 $selectedDayBackground
&.startRange.endRange
border-radius 50px
&.inRange
border-radius 0
box-shadow: (-2.5*$dayMargin) 0 0 $dayHoverBackground, (2.5*$dayMargin) 0 0 $dayHoverBackground
&.disabled, &.disabled:hover
pointer-events none
&.disabled, &.disabled:hover,
&.prevMonthDay, &.nextMonthDay,
&.notAllowed, &.notAllowed.prevMonthDay, &.notAllowed.nextMonthDay
if $disabled_day_color is defined
color $disabled_day_color
else
color alpha($dayForeground, 0.3)
background transparent
if $disabled_border_color is defined
border-color $disabled_border_color
else
border-color transparent
cursor default
&.week.selected
border-radius 0
box-shadow: (-2.5*$dayMargin) 0 0 $selectedDayBackground,
(2.5*$dayMargin) 0 0 $selectedDayBackground
.rangeMode .flatpickr-day
margin-top 1px
.flatpickr-weekwrapper
display inline-block
float left
.flatpickr-weeks
padding 0 12px
if $noCalendarBorder is defined
border-left 1px solid $calendarBorderColor
else
box-shadow 1px 0 0 $calendarBorderColor
.flatpickr-weekday
float none
width 100%
line-height $weekdaysHeight
span.flatpickr-day
display block
width 100%
max-width none
.flatpickr-innerContainer
display block
display flex
box-sizing border-box
overflow: hidden;
if $noCalendarBorder is defined
background $calendarBackground
border-bottom 1px solid $calendarBorderColor
.flatpickr-rContainer
display inline-block
padding 0
box-sizing border-box
.flatpickr-time
text-align center
outline 0
display block
height 0 // hide initially
line-height $timeHeight
max-height $timeHeight
box-sizing border-box
overflow hidden
display flex
if $noCalendarBorder is defined
background $calendarBackground
border-radius 0 0 5px 5px
&:after
content ""
display table
clear both
.numInputWrapper
flex 1
width 40%
height $timeHeight
float left
span.arrowUp:after
border-bottom-color $dayForeground
span.arrowDown:after
border-top-color $dayForeground
&.hasSeconds .numInputWrapper
width 26%
&.time24hr .numInputWrapper
width 49%
input
background transparent
box-shadow none
border 0
border-radius 0
text-align center
margin 0
padding 0
height inherit
line-height inherit
cursor pointer
color $dayForeground
font-size 14px
position relative
box-sizing border-box
&.flatpickr-hour
font-weight bold
&.flatpickr-minute, &.flatpickr-second
font-weight 400
&:focus
outline 0
border 0
.flatpickr-time-separator, .flatpickr-am-pm
height inherit
display inline-block
float left
line-height inherit
color $dayForeground
font-weight bold
width 2%
user-select none
align-self center
.flatpickr-am-pm
outline 0
width 18%
cursor pointer
text-align center
font-weight 400
&:hover, &:focus
background lighten($dayHoverBackground, 4)
.flatpickr-input[readonly]
cursor pointer