From 2fa0a0ef97043aa2c64b5c60f248da912aaf60a6 Mon Sep 17 00:00:00 2001 From: Volodymyr Makukha Date: Fri, 19 Nov 2021 14:49:53 +0200 Subject: [PATCH 1/4] feat: allow script tags in spinner customHTML --- ilc/client/TransactionManager.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ilc/client/TransactionManager.js b/ilc/client/TransactionManager.js index a6d06cc0..11997ffb 100644 --- a/ilc/client/TransactionManager.js +++ b/ilc/client/TransactionManager.js @@ -143,8 +143,19 @@ export class TransactionManager { this.#globalSpinner.showModal(); } else { this.#globalSpinner = document.createElement('div'); + this.#globalSpinner.classList.add('wrapperIlcSpinner'); this.#globalSpinner.innerHTML = this.#spinnerConfig.customHTML; document.body.appendChild(this.#globalSpinner); + + // run script tags + this.#globalSpinner.querySelectorAll('script').forEach(oldScript => { + const newScript = document.createElement('script'); + + newScript.innerHTML = oldScript.innerHTML; + + oldScript.parentNode.insertBefore(newScript, oldScript); + oldScript.remove(); + }); } }, 200); }; From 2a30b5db2d7b87525a2d748524933489085b9cad Mon Sep 17 00:00:00 2001 From: Volodymyr Makukha Date: Fri, 19 Nov 2021 14:52:19 +0200 Subject: [PATCH 2/4] test: run scripts in spinner customHTML --- ilc/client/TransactionManager.spec.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ilc/client/TransactionManager.spec.js b/ilc/client/TransactionManager.spec.js index 8cd3d1b1..cc974f07 100644 --- a/ilc/client/TransactionManager.spec.js +++ b/ilc/client/TransactionManager.spec.js @@ -478,4 +478,27 @@ describe('TransactionManager', () => { await clock.runAllAsync(); chai.expect(spinner.getRef()).to.be.null; }); + + it('should run scripts in customHTML', async () => { + const expectedClass = 'iAmSetFromCustomHTML'; + + const transactionManager = new TransactionManager({ + enabled: true, + customHTML: ` +
Hello! I am Spinner
+ + ` + }); + handlePageTransaction = transactionManager.handlePageTransaction.bind(transactionManager); + + applications.navbar.appendApplication(); + applications.body.appendApplication(); + + handlePageTransaction(slots.body.id, slotWillBe.rerendered); + + await clock.runAllAsync(); + + chai.expect(spinner.getRef()).to.be.not.null; + chai.expect(spinner.getRef().classList.value).to.include(expectedClass); + }); }); From 425ec4387afd494be8c76946acee99bac646d7b1 Mon Sep 17 00:00:00 2001 From: Volodymyr Makukha Date: Fri, 19 Nov 2021 15:45:18 +0200 Subject: [PATCH 3/4] test: clean spinner customHTML --- ilc/client/TransactionManager.spec.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ilc/client/TransactionManager.spec.js b/ilc/client/TransactionManager.spec.js index cc974f07..a434365a 100644 --- a/ilc/client/TransactionManager.spec.js +++ b/ilc/client/TransactionManager.spec.js @@ -489,7 +489,7 @@ describe('TransactionManager', () => { ` }); - handlePageTransaction = transactionManager.handlePageTransaction.bind(transactionManager); + const handlePageTransaction = transactionManager.handlePageTransaction.bind(transactionManager); applications.navbar.appendApplication(); applications.body.appendApplication(); @@ -500,5 +500,7 @@ describe('TransactionManager', () => { chai.expect(spinner.getRef()).to.be.not.null; chai.expect(spinner.getRef().classList.value).to.include(expectedClass); + + spinner.getRef().remove(); }); }); From abe2685f9813aa0f0b3e937f3308c9edcaf2b932 Mon Sep 17 00:00:00 2001 From: Volodymyr Makukha Date: Fri, 19 Nov 2021 16:42:35 +0200 Subject: [PATCH 4/4] chore: change spinner clasName --- ilc/client/TransactionManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ilc/client/TransactionManager.js b/ilc/client/TransactionManager.js index 11997ffb..eeda3a8f 100644 --- a/ilc/client/TransactionManager.js +++ b/ilc/client/TransactionManager.js @@ -143,7 +143,7 @@ export class TransactionManager { this.#globalSpinner.showModal(); } else { this.#globalSpinner = document.createElement('div'); - this.#globalSpinner.classList.add('wrapperIlcSpinner'); + this.#globalSpinner.classList.add('ilcSpinnerWrapper'); this.#globalSpinner.innerHTML = this.#spinnerConfig.customHTML; document.body.appendChild(this.#globalSpinner);