This commit is contained in:
Dan Chadwick 2024-04-08 10:14:20 -07:00
commit 04b853864b
2 changed files with 69 additions and 0 deletions

50
lib/index.js Normal file
View 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
View 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"
}