UNPKG

laravel-jstools

Version:

JS tools for building front-side of Laravel applications

211 lines (210 loc) 7.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Modal = void 0; const laravel_jstools_di_1 = require("laravel-jstools-di"); const ModalUsageEnum_1 = require("./ModalUsageEnum"); const JSToolsAbstractMap_1 = require("../../app/JSToolsAbstractMap"); const ContextTypeEnum_1 = require("../../types/ContextTypeEnum"); class Modal extends laravel_jstools_di_1.Service { constructor(modalId, modalUsage, modalData, showNoty) { super(); this.serviceDependsList = [ JSToolsAbstractMap_1.JSToolsAbstractMap.AxiosServiceContract, JSToolsAbstractMap_1.JSToolsAbstractMap.NotyServiceContract, ]; this.extraSpinners = null; this.preloadCallback = null; this.modalId = modalId; this.modalData = modalData; this.modalUsage = modalUsage; this.showNoty = showNoty; this.form = null; } hasPreload() { return !!this.modalData.preloadData; } reset() { this.modalOverlayHide(); this.modalSubmitSpinnerHide(); this.modalExtraSpinnerHide(); this.modalClearAlerts(); this.modalButtonsEnable(); switch (this.modalUsage) { case ModalUsageEnum_1.ModalUsageEnum.info: this.modalSubmitHide(); break; case ModalUsageEnum_1.ModalUsageEnum.confirm: this.modalSubmitShow(); break; case ModalUsageEnum_1.ModalUsageEnum.form: this.modalSubmitShow(); break; } } getModalData() { return this.modalData; } getForm() { return this.form; } showOverlay() { this.modalOverlayShow(); } hideOverlay() { this.modalOverlayHide(); } showSubmitSpinner() { this.modalSubmitSpinnerShow(); } hideSubmitSpinner() { this.modalSubmitSpinnerHide(); } showLoadingSpinner() { this.modalLoadingSpinnerShow(); } hideLoadingSpinner() { this.modalLoadingSpinnerHide(); } showExtraSpinners() { this.modalExtraSpinnerShow(); } hideExtraSpinners() { this.modalExtraSpinnerHide(); } enableButtons() { this.modalButtonsEnable(); } disableButtons() { this.modalButtonsDisable(); } setPreloadCallback(callback) { this.preloadCallback = callback; } show() { var _a; this.prepareElements(); this.reset(); this.modalShow(); if (this.hasPreload()) { if (typeof this.modalData.preloadData !== 'undefined') { this.send(this.modalData.preloadData, false, { start: () => { this.modalSubmitSpinnerShow(); this.modalExtraSpinnerShow(); this.modalButtonsDisable(); this.modalOverlayShow(); this.modalClearAlerts(); }, finish: () => { this.modalSubmitSpinnerHide(); this.modalExtraSpinnerHide(); this.modalButtonsEnable(); this.modalOverlayHide(); }, success: (data) => { var _a; (_a = this.form) === null || _a === void 0 ? void 0 : _a.setInitData(data); if (this.preloadCallback) { this.preloadCallback(data); } }, }); } } else if (typeof this.modalData.initDataCallback !== 'undefined') { (_a = this.form) === null || _a === void 0 ? void 0 : _a.setInitData(this.modalData.initDataCallback()); } } setExtraSpinners(spinnerList) { this.extraSpinners = spinnerList; } send(data, showNoty, callbackList) { const axiosService = this.getService(JSToolsAbstractMap_1.JSToolsAbstractMap.AxiosServiceContract); const send = axiosService.send(Object.assign(data, { headers: { 'X-Requested-With': 'XMLHttpRequest', }, }), callbackList, showNoty); send.then((res) => { if (res.result && !res.data.status) { this.modalShowAlerts(res.data.errors, ContextTypeEnum_1.ContextTypeEnum.danger); return; } if (!res.result && typeof res.data.status === 'undefined') { this.modalShowAlerts([res.data], ContextTypeEnum_1.ContextTypeEnum.warning); } }); } hide() { this.modalHide(); } onHiddenCallback() { var _a; (_a = this.form) === null || _a === void 0 ? void 0 : _a.clear(); } submit() { var _a; switch (this.modalUsage) { case ModalUsageEnum_1.ModalUsageEnum.info: break; case ModalUsageEnum_1.ModalUsageEnum.confirm: if (typeof this.modalData.submitData !== 'undefined') { this.send(this.modalData.submitData, this.showNoty, { start: () => { this.modalSubmitSpinnerShow(); this.modalExtraSpinnerShow(); this.modalButtonsDisable(); this.modalOverlayShow(); this.modalClearAlerts(); }, finish: () => { this.modalSubmitSpinnerHide(); this.modalExtraSpinnerHide(); this.modalButtonsEnable(); this.modalOverlayHide(); }, success: (data) => { this.modalHide(); this.callSubmitCallback(); }, }); return; } this.modalHide(); this.callSubmitCallback(); break; case ModalUsageEnum_1.ModalUsageEnum.form: (_a = this.form) === null || _a === void 0 ? void 0 : _a.submit(); break; } } callSubmitCallback() { if (typeof this.modalData.submitCallback !== 'undefined') { this.modalData.submitCallback(); } } setForm(form) { if (form !== null) { form.attachToModal(this); } this.form = form; } prepareElements() { if (this.modalData.title) { this.modalSetTitle(this.modalData.title); } if (this.modalData.submitText) { this.modalSetSubmitText(this.modalData.submitText); } if (this.modalData.cancelText) { this.modalSetCancelText(this.modalData.cancelText); } if (this.modalData.bodyCaption) { this.modalSetBodyCaption(this.modalData.bodyCaption); } if (this.modalData.bodyText) { this.modalSetBodyText(this.modalData.bodyText); } } } exports.Modal = Modal;