Skip to content

Commit 05bf7c8

Browse files
committed
Merge branch 'alanbosco-feature-backdrop' into v1.x
* alanbosco-feature-backdrop: Added new props for and hide backdrop Added new props for backdrop-click
2 parents e917282 + d6770a1 commit 05bf7c8

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ auto | `Boolean` | `false` | Auto continue/close on select.
119119
week-start | `Number` | auto from locale if _weekstart_ is available or `1` | First day of the week. 1 is Monday and 7 is Sunday.
120120
flow | `Array` | Depends of *type* | Customize steps flow, steps available: time, date, month, year. Example: ['year', 'date', 'time']
121121
title | `String` | `''` | Popup title.
122+
hide-backdrop | `Boolean` | `false` | Show/Hide backdrop.
123+
backdrop-click | `Boolean` | `true` | Enable/Disable backdrop click to cancel (outside click).
122124

123125
Input inherits all props not defined above but `style` and `class` will be inherited by root element. [See inheritAttrs option](https://vuejs.org/v2/api/#inheritAttrs)
124126

src/Datetime.vue

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<input v-if="hiddenName" type="hidden" :name="hiddenName" :value="value" @input="setValue">
1515
<slot name="after"></slot>
1616
<transition-group name="vdatetime-fade" tag="div">
17-
<div key="overlay" v-if="isOpen" class="vdatetime-overlay" @click.self="cancel"></div>
17+
<div key="overlay" v-if="isOpen && !hideBackdrop" class="vdatetime-overlay" @click.self="clickOutside"></div>
1818
<datetime-popup
1919
key="popup"
2020
v-if="isOpen"
@@ -134,6 +134,14 @@ export default {
134134
},
135135
title: {
136136
type: String
137+
},
138+
hideBackdrop: {
139+
type: Boolean,
140+
default: false
141+
},
142+
backdropClick: {
143+
type: Boolean,
144+
default: true
137145
}
138146
},
139147
@@ -217,6 +225,9 @@ export default {
217225
cancel () {
218226
this.close()
219227
},
228+
clickOutside () {
229+
if (this.backdropClick === true) { this.cancel() }
230+
},
220231
newPopupDatetime () {
221232
let datetime = DateTime.utc().setZone(this.zone).set({ seconds: 0, milliseconds: 0 })
222233

test/specs/Datetime.spec.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -875,6 +875,40 @@ describe('Datetime.vue', function () {
875875
})
876876
})
877877
})
878+
879+
it('should not close when clicking the overlay', function (done) {
880+
const vm = createVM(this,
881+
`<Datetime :backdropClick="false"></Datetime>`,
882+
{
883+
components: { Datetime }
884+
})
885+
886+
vm.$('.vdatetime-input').click()
887+
888+
vm.$nextTick(() => {
889+
vm.$('.vdatetime-overlay').click()
890+
vm.$nextTick(() => {
891+
expect(vm.$('.vdatetime-overlay')).to.exist
892+
expect(vm.$('.vdatetime-popup')).to.exist
893+
done()
894+
})
895+
})
896+
})
897+
898+
it('should not render overlay', function (done) {
899+
const vm = createVM(this,
900+
`<Datetime :hideBackdrop="true"></Datetime>`,
901+
{
902+
components: { Datetime }
903+
})
904+
905+
vm.$('.vdatetime-input').click()
906+
907+
vm.$nextTick(() => {
908+
expect(vm.$('.vdatetime-overlay')).to.not.exist
909+
done()
910+
})
911+
})
878912
})
879913

880914
describe('events', function () {

0 commit comments

Comments
 (0)