diff --git a/src/BootstrapWidgetTrait.php b/src/BootstrapWidgetTrait.php index 5c3ce9e..61199e4 100644 --- a/src/BootstrapWidgetTrait.php +++ b/src/BootstrapWidgetTrait.php @@ -27,10 +27,6 @@ * ``` * * This field is not present in the trait in order to avoid possible PHP Fatal error on definition conflict. - * - * @author Antonio Ramirez <amigo.cobos@gmail.com> - * @author Qiang Xue <qiang.xue@gmail.com> - * @author Paul Klimov <klimov.paul@gmail.com> */ trait BootstrapWidgetTrait { @@ -100,7 +96,14 @@ protected function registerPlugin(string $name) $name = ucfirst($name); $id = $this->options['id']; $options = empty($this->clientOptions) ? '{}' : Json::htmlEncode($this->clientOptions); - $view->registerJs("(new bootstrap.$name('#$id', $options));"); + $view->registerJs( +<<<JS +var bs5pluginElement = document.getElementById('$id'); +if (bs5pluginElement.lenght > 0) { + (new bootstrap.$name('#$id', $options)); +} +JS + ); } $this->registerClientEvents(); @@ -114,10 +117,14 @@ protected function registerClientEvents() { if (!empty($this->clientEvents)) { $id = $this->options['id']; - $js = []; + $js = [ + "var bs5pluginElement = document.getElementById('$id');", + "if (bs5pluginElement.lenght > 0) {", + ]; foreach ($this->clientEvents as $event => $handler) { - $js[] = "document.getElementById('$id').addEventListener('$event', $handler);"; + $js[] = " bs5pluginElement.addEventListener('$event', $handler);"; } + $js[] = "}"; $this->getView()->registerJs(implode("\n", $js)); } }