Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-18 00:09:39 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-18 00:09:39 +0300
commit63b9a1e5bd6f67dd375e00c44eedf6a526f6653d (patch)
tree224c640358c560f6b827a3a7efff6df2d774bb70 /app/assets/javascripts/helpers
parent708ee0bcb2c20cc73db53c092a26f916139d15d4 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/helpers')
-rw-r--r--app/assets/javascripts/helpers/startup_css_helper.js84
1 files changed, 31 insertions, 53 deletions
diff --git a/app/assets/javascripts/helpers/startup_css_helper.js b/app/assets/javascripts/helpers/startup_css_helper.js
index 66cf0630a79..8e25e1421c0 100644
--- a/app/assets/javascripts/helpers/startup_css_helper.js
+++ b/app/assets/javascripts/helpers/startup_css_helper.js
@@ -1,3 +1,25 @@
+const CSS_LOADED_EVENT = 'CSSLoaded';
+const STARTUP_LINK_LOADED_EVENT = 'CSSStartupLinkLoaded';
+
+const getAllStartupLinks = (() => {
+ let links = null;
+ return () => {
+ if (!links) {
+ links = Array.from(document.querySelectorAll('link[data-startupcss]'));
+ }
+ return links;
+ };
+})();
+const isStartupLinkLoaded = ({ dataset }) => dataset.startupcss === 'loaded';
+const allLinksLoaded = () => getAllStartupLinks().every(isStartupLinkLoaded);
+
+const handleStartupEvents = () => {
+ if (allLinksLoaded()) {
+ document.dispatchEvent(new CustomEvent(CSS_LOADED_EVENT));
+ document.removeEventListener(STARTUP_LINK_LOADED_EVENT, handleStartupEvents);
+ }
+};
+
/* Wait for.... The methods can be used:
- with a callback (preferred),
waitFor(action)
@@ -8,61 +30,17 @@
- with await,
await waitFor;
action();
-*/
-
-const CSS_LOADED_EVENT = 'CSSLoaded';
-const DOM_LOADED_EVENT = 'DOMContentLoaded';
-const STARTUP_LINK_LOADED_EVENT = 'CSSStartupLinkLoaded';
-
-const isStartupLinkLoaded = ({ dataset }) => dataset.startupcss === 'loaded';
-
-export const handleLoadedEvents = (action = () => {}) => {
- let isCssLoaded = false;
- let eventsList = [CSS_LOADED_EVENT, DOM_LOADED_EVENT];
- return ({ type } = {}) => {
- eventsList = eventsList.filter(e => e !== type);
- if (isCssLoaded) {
- return;
- }
- if (!eventsList.length) {
- isCssLoaded = true;
+-*/
+export const waitForCSSLoaded = (action = () => {}) => {
+ if (!gon.features.startupCss || allLinksLoaded()) {
+ return new Promise(resolve => {
action();
- }
- };
-};
-
-export const handleStartupEvents = (action = () => {}) => {
- if (!gon.features.startupCss) {
- return action;
+ resolve();
+ });
}
- const startupLinks = Array.from(document.querySelectorAll('link[data-startupcss]'));
- return () => {
- if (startupLinks.every(isStartupLinkLoaded)) {
- action();
- }
- };
-};
-export const waitForStartupLinks = () => {
- let eventListener;
- const promise = new Promise(resolve => {
- eventListener = handleStartupEvents(resolve);
- document.addEventListener(STARTUP_LINK_LOADED_EVENT, eventListener);
- }).then(() => {
- document.dispatchEvent(new CustomEvent(CSS_LOADED_EVENT));
- document.removeEventListener(STARTUP_LINK_LOADED_EVENT, eventListener);
- });
- document.dispatchEvent(new CustomEvent(STARTUP_LINK_LOADED_EVENT));
- return promise;
-};
-
-export const waitForCSSLoaded = (action = () => {}) => {
- let eventListener;
- const promise = new Promise(resolve => {
- eventListener = handleLoadedEvents(resolve);
- document.addEventListener(DOM_LOADED_EVENT, eventListener, { once: true });
- document.addEventListener(CSS_LOADED_EVENT, eventListener, { once: true });
+ return new Promise(resolve => {
+ document.addEventListener(CSS_LOADED_EVENT, resolve, { once: true });
+ document.addEventListener(STARTUP_LINK_LOADED_EVENT, handleStartupEvents);
}).then(action);
- waitForStartupLinks();
- return promise;
};