mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
* code fixes * code fixes * more code fixes * even more fixes * add missing typescript for cli * rollback info drawer test changes * use npx for cli commands * restore attach providers
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
/*!
|
|
* @license
|
|
* Copyright 2019 Alfresco Software, Ltd.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
/**
|
|
* Class for managing stylesheets. Stylesheets are loaded into named slots so that they can be
|
|
* removed or changed later.
|
|
*/
|
|
@Injectable({ providedIn: 'root' })
|
|
export class StyleManager {
|
|
/**
|
|
* Set the stylesheet with the specified key.
|
|
*/
|
|
setStyle(key: string, href: string) {
|
|
getLinkElementForKey(key).setAttribute('href', href);
|
|
}
|
|
|
|
/**
|
|
* Remove the stylesheet with the specified key.
|
|
*/
|
|
removeStyle(key: string) {
|
|
const existingLinkElement = getExistingLinkElementByKey(key);
|
|
if (existingLinkElement) {
|
|
document.head.removeChild(existingLinkElement);
|
|
}
|
|
}
|
|
}
|
|
|
|
function getLinkElementForKey(key: string) {
|
|
return getExistingLinkElementByKey(key) || createLinkElementWithKey(key);
|
|
}
|
|
|
|
function getExistingLinkElementByKey(key: string) {
|
|
return document.head.querySelector(`link[rel="stylesheet"].${getClassNameForKey(key)}`);
|
|
}
|
|
|
|
function createLinkElementWithKey(key: string) {
|
|
const linkEl = document.createElement('link');
|
|
linkEl.setAttribute('rel', 'stylesheet');
|
|
linkEl.setAttribute('type', 'text/css');
|
|
linkEl.classList.add(getClassNameForKey(key));
|
|
document.head.appendChild(linkEl);
|
|
return linkEl;
|
|
}
|
|
|
|
function getClassNameForKey(key: string) {
|
|
return `style-manager-${key}`;
|
|
}
|