init
This commit is contained in:
commit
04b853864b
50
lib/index.js
Normal file
50
lib/index.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
let headers = new Headers({
|
||||||
|
"user-agent": "DCJS Fetcher",
|
||||||
|
});
|
||||||
|
|
||||||
|
const dcTriggerMap = {
|
||||||
|
load: "load",
|
||||||
|
hover: "mouseover",
|
||||||
|
}
|
||||||
|
|
||||||
|
async function renderContentToTarget(content, target) {
|
||||||
|
let elementToReplace = document.querySelector("#" + target);
|
||||||
|
elementToReplace.innerHTML = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handleDcjs() {
|
||||||
|
// need to add a way to show that this is LOADING :-).
|
||||||
|
// Look for custom data attributes in DOM.
|
||||||
|
let elementsUsingGet = document.querySelectorAll('[dc-get]');
|
||||||
|
if (elementsUsingGet.length > 0) {
|
||||||
|
const reqUrl = location.protocol + '//' + location.host;
|
||||||
|
for (let i = 0; i < elementsUsingGet.length; i++) {
|
||||||
|
let dcTrigger = "click";
|
||||||
|
let dcjsElem = elementsUsingGet[i];
|
||||||
|
|
||||||
|
if (dcjsElem.hasAttribute('dc-trigger')) {
|
||||||
|
dcTrigger = elementsUsingGet[i].getAttribute('dc-trigger');
|
||||||
|
dcTrigger = dcTriggerMap[dcTrigger];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dom is already loaded, so just insert content.
|
||||||
|
if (dcTrigger == "load") {
|
||||||
|
let getPath = dcjsElem.getAttribute('dc-get');
|
||||||
|
let targetElement = dcjsElem.getAttribute('dc-target');
|
||||||
|
|
||||||
|
fetch(reqUrl + getPath)
|
||||||
|
.then(res => res.text())
|
||||||
|
.then(async swap => await renderContentToTarget(swap, targetElement))
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
elementsUsingGet[i].addEventListener(dcTrigger, (e) => {
|
||||||
|
let getPath = e.target.getAttribute('dc-get');
|
||||||
|
let targetElement = e.target.getAttribute('dc-target');
|
||||||
|
fetch(reqUrl + getPath)
|
||||||
|
.then(res => res.text())
|
||||||
|
.then(async swap => await renderContentToTarget(swap, targetElement))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
19
package.json
Normal file
19
package.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "dcjs",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "HTMX type library",
|
||||||
|
"main": "./lib/index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/dan612/dcjs.git"
|
||||||
|
},
|
||||||
|
"author": "Dan Chadwick",
|
||||||
|
"license": "ISC",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/dan612/dcjs/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/dan612/dcjs#readme"
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user