diff --git a/index.html b/index.html index bc123b6d..95094d16 100644 --- a/index.html +++ b/index.html @@ -81,7 +81,10 @@ + + + @@ -97,6 +100,8 @@ + + diff --git a/public/assets/js/extended-ui-blockui.js b/public/assets/js/extended-ui-blockui.js new file mode 100644 index 00000000..77a02c51 --- /dev/null +++ b/public/assets/js/extended-ui-blockui.js @@ -0,0 +1,504 @@ +/** + * Block UI (jquery) + */ + +'use strict'; + +$(function () { + var section = $('#section-block'), + sectionBlock = $('.btn-section-block'), + sectionBlockOverlay = $('.btn-section-block-overlay'), + sectionBlockSpinner = $('.btn-section-block-spinner'), + sectionBlockCustom = $('.btn-section-block-custom'), + sectionBlockMultiple = $('.btn-section-block-multiple'), + cardSection = $('#card-block'), + cardBlock = $('.btn-card-block'), + cardBlockOverlay = $('.btn-card-block-overlay'), + cardBlockSpinner = $('.btn-card-block-spinner'), + cardBlockCustom = $('.btn-card-block-custom'), + cardBlockMultiple = $('.btn-card-block-multiple'), + pageBlock = $('.btn-page-block'), + pageBlockOverlay = $('.btn-page-block-overlay'), + pageBlockSpinner = $('.btn-page-block-spinner'), + pageBlockCustom = $('.btn-page-block-custom'), + pageBlockMultiple = $('.btn-page-block-multiple'), + formSection = $('.form-block'), + formBlock = $('.btn-form-block'), + formBlockOverlay = $('.btn-form-block-overlay'), + formBlockSpinner = $('.btn-form-block-spinner'), + formBlockCustom = $('.btn-form-block-custom'), + formBlockMultiple = $('.btn-form-block-multiple'); + + // Block UI + // -------------------------------------------------------------------- + + // Default + if (sectionBlock.length && section.length) { + sectionBlock.on('click', function () { + $('#section-block').block({ + message: '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Overlay Color + if (sectionBlockOverlay.length && section.length) { + sectionBlockOverlay.on('click', function () { + $('#section-block').block({ + message: '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + backgroundColor: '#fff', + opacity: 0.8 + } + }); + }); + } + // Custom Spinner + if (sectionBlockSpinner.length && section.length) { + sectionBlockSpinner.on('click', function () { + $('#section-block').block({ + message: + '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Custom Message + if (sectionBlockCustom.length && section.length) { + sectionBlockCustom.on('click', function () { + $('#section-block').block({ + message: + '

Please wait...

', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Multiple Message + if (sectionBlockMultiple.length && section.length) { + sectionBlockMultiple.on('click', function () { + $('#section-block').block({ + message: + '

Please wait...

', + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + }, + timeout: 1000, + onUnblock: function () { + $('#section-block').block({ + message: '

Almost Done...

', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.25 + }, + onUnblock: function () { + $('#section-block').block({ + message: '
Success
', + timeout: 500, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.25 + } + }); + } + }); + } + }); + }); + } + + // Card Blocking + // -------------------------------------------------------------------- + + // Default + if (cardBlock.length && cardSection.length) { + cardBlock.on('click', function () { + $('#card-block').block({ + message: '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Overlay Color + if (cardBlockOverlay.length && cardSection.length) { + cardBlockOverlay.on('click', function () { + $('#card-block').block({ + message: '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + backgroundColor: '#fff', + opacity: 0.8 + } + }); + }); + } + // Custom Spinner + if (cardBlockSpinner.length && cardSection.length) { + cardBlockSpinner.on('click', function () { + $('#card-block').block({ + message: + '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Custom Message + if (cardBlockCustom.length && cardSection.length) { + cardBlockCustom.on('click', function () { + $('#card-block').block({ + message: + '

Please wait...

', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Multiple Message + if (cardBlockMultiple.length && cardSection.length) { + cardBlockMultiple.on('click', function () { + $('#card-block').block({ + message: + '

Please wait...

', + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + }, + timeout: 1000, + onUnblock: function () { + $('#card-block').block({ + message: '

Almost Done...

', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.25 + }, + onUnblock: function () { + $('#card-block').block({ + message: '
Success
', + timeout: 500, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.25 + } + }); + } + }); + } + }); + }); + } + + // Page Blocking + // -------------------------------------------------------------------- + + // Default + if (pageBlock.length) { + pageBlock.on('click', function () { + $.blockUI({ + message: '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Overlay Color + if (pageBlockOverlay.length) { + pageBlockOverlay.on('click', function () { + $.blockUI({ + message: '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + backgroundColor: '#fff', + opacity: 0.8 + } + }); + }); + } + // Custom Spinner + if (pageBlockSpinner.length) { + pageBlockSpinner.on('click', function () { + $.blockUI({ + message: + '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Custom Message + if (pageBlockCustom.length) { + pageBlockCustom.on('click', function () { + $.blockUI({ + message: + '

Please wait...

', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Multiple Message + if (pageBlockMultiple.length) { + pageBlockMultiple.on('click', function () { + $.blockUI({ + message: + '

Please wait...

', + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + }, + timeout: 1000, + onUnblock: function () { + $.blockUI({ + message: '

Almost Done...

', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + }, + onUnblock: function () { + $.blockUI({ + message: '
Success
', + timeout: 500, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + } + }); + } + }); + }); + } + + // Form Blocking + // -------------------------------------------------------------------- + + // Default + if (formBlock.length && formSection.length) { + formBlock.on('click', function () { + formSection.block({ + message: '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Overlay Color + if (formBlockOverlay.length && formSection.length) { + formBlockOverlay.on('click', function () { + formSection.block({ + message: '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + backgroundColor: '#fff', + opacity: 0.8 + } + }); + }); + } + // Custom Spinner + if (formBlockSpinner.length && formSection.length) { + formBlockSpinner.on('click', function () { + formSection.block({ + message: + '
', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Custom Message + if (formBlockCustom.length && formSection.length) { + formBlockCustom.on('click', function () { + formSection.block({ + message: + '

Please wait...

', + timeout: 1000, + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + } + }); + }); + } + // Multiple Message + if (formBlockMultiple.length && formSection.length) { + formBlockMultiple.on('click', function () { + formSection.block({ + message: + '

Please wait...

', + css: { + backgroundColor: 'transparent', + color: '#fff', + border: '0' + }, + overlayCSS: { + opacity: 0.5 + }, + timeout: 1000, + onUnblock: function () { + formSection.block({ + message: '

Almost Done...

', + timeout: 1000, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + opacity: 0.25 + }, + onUnblock: function () { + formSection.block({ + message: '
Success
', + timeout: 500, + css: { + backgroundColor: 'transparent', + border: '0' + }, + overlayCSS: { + opacity: 0.25 + } + }); + } + }); + } + }); + }); + } +}); diff --git a/src/components/UserSubscription/ProcessedPayment.jsx b/src/components/UserSubscription/ProcessedPayment.jsx index fa2963c1..9d018e52 100644 --- a/src/components/UserSubscription/ProcessedPayment.jsx +++ b/src/components/UserSubscription/ProcessedPayment.jsx @@ -12,6 +12,7 @@ import { PaymentRepository } from "../../repositories/PaymentRepository"; import { useMakePayment } from "../../hooks/usePayment"; import { useDispatch } from "react-redux"; import { setSelfTenant } from "../../slices/localVariablesSlice"; +import { unblockUI } from "../../utils/blockUI"; const ProcessedPayment = ({ onNext, resetPaymentStep }) => { const { frequency, planName } = useParams(); @@ -62,9 +63,11 @@ const ProcessedPayment = ({ onNext, resetPaymentStep }) => { const { mutate: MakePayment, isPending } = useMakePayment( (response) => { + unblockUI() onNext(response); }, (fail) => { + unblockUI() setFailPayment(fail); onNext(fail); }, diff --git a/src/components/UserSubscription/SubscriptionForm.jsx b/src/components/UserSubscription/SubscriptionForm.jsx index e310bc8e..b033fb65 100644 --- a/src/components/UserSubscription/SubscriptionForm.jsx +++ b/src/components/UserSubscription/SubscriptionForm.jsx @@ -10,6 +10,7 @@ import { orgSize, reference } from "../../utils/constants"; import DatePicker from "../common/DatePicker"; import { useCreateTenant, useIndustries } from "../../hooks/useTenant"; import { useCreateSelfTenant } from "../../hooks/useAuth"; +import { blockUI } from "../../utils/blockUI"; const SubscriptionForm = ({currentStep, setCurrentStep, @@ -41,7 +42,7 @@ const SubscriptionForm = ({currentStep, // reset(); }; return ( -
+
diff --git a/src/hooks/usePayment.jsx b/src/hooks/usePayment.jsx index 72078e6f..b1699526 100644 --- a/src/hooks/usePayment.jsx +++ b/src/hooks/usePayment.jsx @@ -2,8 +2,9 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { PaymentRepository } from "../repositories/PaymentRepository"; import showToast from "../services/toastService"; import { useSelector } from "react-redux"; +import { blockUI } from "../utils/blockUI"; -export function removeRazorpayArtifacts() { +export const removeRazorpayArtifacts=()=> { try { document .querySelectorAll("iframe[src*='razorpay'], iframe[name^='__PRIVATE']") @@ -40,7 +41,7 @@ export function removeRazorpayArtifacts() { } } -function closeRazorpayPopup() { +const closeRazorpayPopup=()=> { try { if (window.Razorpay && typeof window.Razorpay.close === "function") { window.Razorpay.close(); @@ -166,6 +167,7 @@ export const useMakePayment = ( }); try { + blockUI("Please Wait...") razorpay.open(); } catch (err) { alert("This browser is not supported. Please try another browser."); diff --git a/src/pages/Home/MakeSubscription.jsx b/src/pages/Home/MakeSubscription.jsx index 24b88891..3f9449c7 100644 --- a/src/pages/Home/MakeSubscription.jsx +++ b/src/pages/Home/MakeSubscription.jsx @@ -10,7 +10,7 @@ const MakeSubscription = () => { const [responsePayment, setResponsePayment] = useState(null); const [stepStatus, setStepStatus] = useState({ - 1: "success", + 1: "pending", 2: "pending", 3: "pending", }); diff --git a/src/utils/blockUI.js b/src/utils/blockUI.js new file mode 100644 index 00000000..b516e059 --- /dev/null +++ b/src/utils/blockUI.js @@ -0,0 +1,32 @@ +export const blockUI = (message = 'Please wait...') => { + if (window.$ && window.$.blockUI) { + window.$.blockUI({ + message: ` +
+
+
+
+
+
+
+
+

${message}

+
`, + css: { + backgroundColor: 'transparent', + border: '0', + color: '#fff', + }, + overlayCSS: { + opacity: 0.5, + cursor: 'wait', + }, + }); + } +}; + +export const unblockUI = () => { + if (window.$ && window.$.unblockUI) { + window.$.unblockUI(); + } +};