+19
-8
lines changedFilter options
+19
-8
lines changed Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ import { keys } from '../../utils/object'
16
16
const EVENT_SHOW = 'bv::show::modal'
17
17
18
18
// Prop name we use to store info on root element
19
-
const HANDLER = '__bv_modal_directive__'
19
+
const PROPERTY = '__bv_modal_directive__'
20
20
21
21
const EVENT_OPTS = { passive: true }
22
22
@@ -64,7 +64,7 @@ const bind = (el, binding, vnode) => {
64
64
}
65
65
}
66
66
}
67
-
el[HANDLER] = handler
67
+
el[PROPERTY] = { handler, target, trigger }
68
68
// If element is not a button, we add `role="button"` for accessibility
69
69
setRole(trigger)
70
70
// Listen for click events
@@ -78,19 +78,30 @@ const bind = (el, binding, vnode) => {
78
78
}
79
79
80
80
const unbind = el => {
81
-
const trigger = getTriggerElement(el)
82
-
const handler = el ? el[HANDLER] : null
81
+
const oldProp = el[PROPERTY] || {}
82
+
const trigger = oldProp.trigger
83
+
const handler = oldProp.handler
83
84
if (trigger && handler) {
84
85
eventOff(trigger, 'click', handler, EVENT_OPTS)
85
86
eventOff(trigger, 'keydown', handler, EVENT_OPTS)
87
+
eventOff(el, 'click', handler, EVENT_OPTS)
88
+
eventOff(el, 'keydown', handler, EVENT_OPTS)
86
89
}
87
-
delete el[HANDLER]
90
+
delete el[PROPERTY]
88
91
}
89
92
90
93
const componentUpdated = (el, binding, vnode) => {
91
-
// We bind and rebind just in case target changes
92
-
unbind(el, binding, vnode)
93
-
bind(el, binding, vnode)
94
+
const oldProp = el[PROPERTY] || {}
95
+
const target = getTarget(binding)
96
+
const trigger = getTriggerElement(el)
97
+
if (target !== oldProp.target || trigger !== oldProp.trigger) {
98
+
// We bind and rebind if the target or trigger changes
99
+
unbind(el, binding, vnode)
100
+
bind(el, binding, vnode)
101
+
}
102
+
// If trigger element is not a button, ensure `role="button"`
103
+
// is still set for accessibility
104
+
setRole(trigger)
94
105
}
95
106
96
107
const updated = () => {}
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4