Skip to content

Commit ec83d47

Browse files
committed
feat: quasarframework#29 Finalized Datetime for Material Theme; Add Utils.throttle()
1 parent 555b744 commit ec83d47

File tree

6 files changed

+57
-25
lines changed

6 files changed

+57
-25
lines changed

src/utils.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import openURL from './utils/open-url'
22
import debounce from './utils/debounce'
3+
import throttle from './utils/throttle'
34
import * as dom from './utils/dom'
45
import * as event from './utils/event'
56
import extend from './utils/extend'
@@ -8,6 +9,7 @@ import uid from './utils/uid'
89
export default {
910
openURL,
1011
debounce,
12+
throttle,
1113
extend,
1214
dom,
1315
uid,

src/utils/debounce.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
let now = Date.now
33

4-
export default function (func, wait, immediate) {
4+
export default function (fn, wait = 250, immediate) {
55
let
66
timeout, args, context, timestamp, result,
77
later = () => {
@@ -13,7 +13,7 @@ export default function (func, wait, immediate) {
1313
else {
1414
timeout = null
1515
if (!immediate) {
16-
result = func.apply(context, args)
16+
result = fn.apply(context, args)
1717
if (!timeout) {
1818
context = args = null
1919
}
@@ -31,7 +31,7 @@ export default function (func, wait, immediate) {
3131
timeout = setTimeout(later, wait)
3232
}
3333
if (callNow) {
34-
result = func.apply(context, args)
34+
result = fn.apply(context, args)
3535
context = args = null
3636
}
3737

src/utils/throttle.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export default function (fn, limit = 250) {
2+
let wait = false
3+
4+
return function (...args) {
5+
if (wait) {
6+
return
7+
}
8+
9+
wait = true
10+
fn.apply(this, args)
11+
setTimeout(() => {
12+
wait = false
13+
}, limit)
14+
}
15+
}

src/vue-components/datetime/datetime-modal.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<div>
3-
<quasar-inline-datetime :model.sync="model" :type="type">
3+
<quasar-inline-datetime :model.sync="model" :type="type" class="no-border">
44
<div class="modal-buttons row full-width">
55
<button @click="close()" class="primary clear">{{ cancelLabel }}</button>
66
<button @click="set(model)" class="primary clear">{{ okLabel }}</button>

src/vue-components/datetime/datetime.mat.styl

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
.quasar-datetime-time
2020
padding 10px 0
2121

22+
div + .quasar-datetime-time
23+
padding-top 0
24+
2225
.quasar-datetime-ampm
2326
font-size .9rem
2427

@@ -36,7 +39,7 @@
3639
.quasar-datetime-clockstring
3740
font-size 2.7rem
3841

39-
.quasar-datetime-selecter
42+
.quasar-datetime-selector
4043
height 330px
4144
overflow auto
4245

@@ -80,6 +83,7 @@
8083
.quasar-datetime-view-year, .quasar-datetime-view-month
8184
button
8285
font-weight normal
86+
text-transform capitalize
8387
color rgba(0, 0, 0, .87) !important
8488
&.active
8589
font-size 1.5rem
@@ -146,32 +150,34 @@
146150
padding 0
147151
transform translate(-50%, -50%)
148152
border-radius 50%
149-
&:hover
150-
background $grey-2
151153
&.active
152154
color opposite-non-color($primary)
153155
background $primary
154156

157+
body.desktop .quasar-datetime-clock-position:hover
158+
background $grey-2
159+
155160
for $pos in 0..12
156-
$angle = 30 * $pos
157-
$degree = (270 + $angle)
161+
$degree = (270 + 30 * $pos)
158162
.quasar-datetime-clock-pos-{$pos}
159163
top (((1 + sin($degree * 1deg)) * 100%) / 2)
160-
left (((1 + cos($degree * 1 deg)) * 100%) / 2)
164+
left (((1 + cos($degree * 1deg)) * 100%) / 2)
161165

162166
@media (max-width $layout-medium-max)
163-
.quasar-datetime
164-
width 290px
165167
.quasar-datetime-ampm
166168
margin-left 1.5rem
167169
.quasar-datetime-datestring span
168170
margin 10px 5px
169171
&.small
170172
margin-top 1.3rem
173+
.quasar-datetime
174+
width 290px
175+
&:not(.no-border) .quasar-datetime-content
176+
border-width 0 1px 1px 1px
177+
border-style solid
178+
border-color $grey-4
171179

172180
@media (min-width $layout-big-min)
173-
.quasar-datetime
174-
width 520px
175181
.quasar-datetime-datestring
176182
padding 10px 0
177183
.quasar-datetime-ampm
@@ -188,3 +194,9 @@ for $pos in 0..12
188194
right 0
189195
.quasar-datetime-content
190196
width 290px
197+
.quasar-datetime
198+
width 520px
199+
&:not(.no-border) .quasar-datetime-content
200+
border-width 1px 1px 1px 0
201+
border-style solid
202+
border-color $grey-4

src/vue-components/datetime/inline-datetime.vue

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@
6363
</div>
6464
</div>
6565
<div class="quasar-datetime-content auto column">
66-
<div v-el:selecter class="quasar-datetime-selecter auto row items-center justify-center">
66+
<div v-el:selector class="quasar-datetime-selector auto row items-center justify-center">
6767
<div
68-
v-show="view === 'year'"
68+
v-if="view === 'year'"
6969
class="quasar-datetime-view-year full-width full-height"
7070
>
7171
<button
@@ -79,7 +79,7 @@
7979
</div>
8080

8181
<div
82-
v-show="view === 'month'"
82+
v-if="view === 'month'"
8383
class="quasar-datetime-view-month full-width full-height"
8484
>
8585
<button
@@ -93,7 +93,7 @@
9393
</div>
9494

9595
<div
96-
v-show="view === 'day'"
96+
v-if="view === 'day'"
9797
class="quasar-datetime-view-day quasar-datetime-animate"
9898
>
9999
<div class="row items-center content-center">
@@ -136,12 +136,12 @@
136136
</div>
137137

138138
<div
139-
v-show="view === 'hour' || view === 'minute'"
139+
v-if="view === 'hour' || view === 'minute'"
140140
v-el:clock
141141
class="column items-center content-center justify-center"
142142
>
143143
<div
144-
v-show="view === 'hour'"
144+
v-if="view === 'hour'"
145145
class="quasar-datetime-clock cursor-pointer"
146146
@mousedown="__dragStart"
147147
@mousemove="__dragMove"
@@ -166,7 +166,7 @@
166166
</div>
167167

168168
<div
169-
v-show="view === 'minute'"
169+
v-if="view === 'minute'"
170170
class="quasar-datetime-clock cursor-pointer"
171171
@mousedown="__dragStart"
172172
@mousemove="__dragMove"
@@ -247,7 +247,7 @@ export default {
247247
}
248248
249249
let
250-
view = this.$els.selecter,
250+
view = this.$els.selector,
251251
rows = value === 'year' ? this.year - 1900 : this.month
252252
253253
this.$nextTick(() => {
@@ -351,9 +351,8 @@ export default {
351351
return (unit < 10 ? filler || '0' : '') + unit
352352
},
353353
__dragStart (ev) {
354-
if (this.dragging) {
355-
return
356-
}
354+
ev.stopPropagation()
355+
ev.preventDefault()
357356
358357
let
359358
clock = this.$els.clock,
@@ -371,9 +370,13 @@ export default {
371370
if (!this.dragging) {
372371
return
373372
}
373+
ev.stopPropagation()
374+
ev.preventDefault()
374375
this.__updateClock(ev)
375376
},
376377
__dragStop (ev) {
378+
ev.stopPropagation()
379+
ev.preventDefault()
377380
this.dragging = false
378381
if (this.view === 'hour') {
379382
this.view = 'minute'

0 commit comments

Comments
 (0)