diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2024-02-18 08:10:09 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-18 13:10:09 +0000 |
commit | 6cf38229b54efbbc3ae7bc174c3999f9dfa7b1d2 (patch) | |
tree | 1d47e64bf80ef2f7fd082dde956d0b214946f189 /ext/js/dom/html-template-collection.js | |
parent | c48cd6ff6d8dcced7baf1b27ce3ac2449944f5d7 (diff) |
Html templates update (#707)
* Simplify display template loading
* Add helper
* Rename file
* Rename for simplicity
* Create templates file
* Load
* Remove templates
* Move permissions templates
* Remove "templates" from comments
* Fix prepare
Diffstat (limited to 'ext/js/dom/html-template-collection.js')
-rw-r--r-- | ext/js/dom/html-template-collection.js | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/ext/js/dom/html-template-collection.js b/ext/js/dom/html-template-collection.js index 981d5528..a71d954f 100644 --- a/ext/js/dom/html-template-collection.js +++ b/ext/js/dom/html-template-collection.js @@ -16,6 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +import {fetchText} from '../core/fetch-utilities.js'; + export class HtmlTemplateCollection { constructor() { /** @type {Map<string, HTMLTemplateElement>} */ @@ -23,17 +25,23 @@ export class HtmlTemplateCollection { } /** - * @param {string|Document} source + * @param {string[]} urls */ - load(source) { - const sourceNode = ( - typeof source === 'string' ? - new DOMParser().parseFromString(source, 'text/html') : - source - ); + async loadFromFiles(urls) { + const htmlRawArray = await Promise.all(urls.map((url) => fetchText(url))); + const domParser = new DOMParser(); + for (const htmlRaw of htmlRawArray) { + const templatesDocument = domParser.parseFromString(htmlRaw, 'text/html'); + this.load(templatesDocument); + } + } + /** + * @param {Document} source + */ + load(source) { const pattern = /^([\w\W]+)-template$/; - for (const template of sourceNode.querySelectorAll('template')) { + for (const template of source.querySelectorAll('template')) { const match = pattern.exec(template.id); if (match === null) { continue; } this._prepareTemplate(template); |