From c32ee4b71cee6269abf201b955fd5734697a15cd Mon Sep 17 00:00:00 2001 From: Arlen Johnson Date: Thu, 31 Mar 2022 17:13:06 -0400 Subject: [PATCH] Provide "click outside" behavior for Time Picker (CFM-107) --- app/src/View/Helper/FieldHelper.php | 21 ++++++++++++++++++- .../datepicker/cm-datetimepicker.js | 6 ++++++ .../components/datepicker/cm-timepicker.js | 6 +++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/app/src/View/Helper/FieldHelper.php b/app/src/View/Helper/FieldHelper.php index 797a01430..4aa4c9a06 100644 --- a/app/src/View/Helper/FieldHelper.php +++ b/app/src/View/Helper/FieldHelper.php @@ -141,7 +141,26 @@ public function control(string $fieldName, components: { CmDateTimePicker } - }).mount("#' . $pickerId . '-container"); + }); + + // Add custom global directives available to all child components. + // "clickout" allows us to pass a function to a click outside behavior which + // is registered and destroyed as the component is mounted and unmounted. + app.directive("clickout", { + mounted(el, binding, vnode) { + el.clickOutEvent = function(event) { + if (!(el === event.target || el.contains(event.target))) { + binding.value(event, el); + } + }; + document.body.addEventListener("click", el.clickOutEvent); + }, + unmounted(el) { + document.body.removeEventListener("click", el.clickOutEvent); + } + }); + + app.mount("#' . $pickerId . '-container");
+
{{ txt.hour }}