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
	 Dan Chadwick
						Dan Chadwick