kopia lustrzana https://github.com/shoelace-style/shoelace
				
				
				
			Add default slot detection to hasSlot
							rodzic
							
								
									0aa1c9a741
								
							
						
					
					
						commit
						23d9ff9096
					
				|  | @ -37,8 +37,28 @@ export function getTextContent(slot: HTMLSlotElement): string { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //
 | //
 | ||||||
| // Determines whether a slot with the given name exists in an element.
 | // Determines whether an element has a slot. If name is specified, the function will look for a corresponding named
 | ||||||
|  | // slot, otherwise it will look for a "default" slot (e.g. a non-empty text node or an element with no slot attribute).
 | ||||||
| //
 | //
 | ||||||
| export function hasSlot(el: HTMLElement, name: string) { | export function hasSlot(el: HTMLElement, name?: string) { | ||||||
|   return el.querySelector(`[slot="${name}"]`) !== null; |   // Look for a named slot
 | ||||||
|  |   if (name) { | ||||||
|  |     return el.querySelector(`[slot="${name}"]`) !== null; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   // Look for a default slot
 | ||||||
|  |   return [...el.childNodes].some(node => { | ||||||
|  |     if (node.nodeType === node.TEXT_NODE && node.textContent.trim() !== '') { | ||||||
|  |       return true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (node.nodeType === node.ELEMENT_NODE) { | ||||||
|  |       const el = node as HTMLElement; | ||||||
|  |       if (!el.hasAttribute('slot')) { | ||||||
|  |         return true; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return false; | ||||||
|  |   }); | ||||||
| } | } | ||||||
|  |  | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 Cory LaViska
						Cory LaViska