/** * Copyright (c) 2014-2026 Alexandru Boia and Contributors * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ /// /// /// (function($) { "use strict"; $.fn.abp01Modal = function(spec:WpTripSummaryModalOptions): WpTripSummaryModal { var $me: JQuery = $(this); var myId: string|null = $me.get(0)?.id || null; var mySelector: string = `#${myId}`; var trigger: string|NodeList|null = spec.trigger || null; var $wrap: JQuery|null = null; var bsModal: bootstrap.Modal|null = null; function _wrap(): void { var wrapId: string = `${myId}-__wrap`; $me.wrap(``); $wrap = $(`#${wrapId}`); $wrap.append(''); } function _watchTrigger(): void { if (!!trigger) { $(document).on('click', trigger, _show); } } function _listen(): void { $me.on('show.bs.modal', function() { _showBackdrop(); }); $me.on('hide.bs.modal', function() { _hideBackdrop(); }); $me.on('hidden.bs.modal', function() { if (!!spec.onHide) { spec.onHide.apply($me); } }); $me.on('shown.bs.modal', function() { if (!!spec.onShow) { spec.onShow.apply($me); } }); } function _showBackdrop(): void { $wrap?.find('.modal-backdrop') .fadeIn('slow'); } function _hideBackdrop(): void { $wrap?.find('.modal-backdrop') .fadeOut('slow'); } function _show(): void { _init(); $wrap?.show(); bsModal?.show(); } function _init(): void { if (bsModal == null) { bsModal = new bootstrap.Modal(mySelector, { keyboard: false, backdrop: false, focus: true }); } } function _hide(): void { if (bsModal != null) { bsModal.hide(); } } function _findAnd(selector: string, callback: Function): JQuery { var $target: JQuery = $me.find(selector); if (!!callback) { callback($target); } return $target; } _wrap(); _listen(); _watchTrigger(); return { show: _show, hide: _hide, findAnd: _findAnd }; }; })(jQuery);