import { JSX } from '@babel/types'; import type { Component } from 'preact'; import { h, Fragment } from 'preact'; import { useRef } from 'preact/hooks'; export type CardLinkProps = { href: string; name: string; children: JSX | JSX[]; }; const CardLink: Component = ({ href, name, children, }: CardLinkProps): JSX.Element => { const Card = useRef(null); /** * Set Title Attribute when Hovering over Card * @param e - Mouse Enter Event */ function handleOnMouseEnter(e) { const cardBody = Card.current.querySelector('.card-body'); const cardThumb = Card.current.querySelector('.icon-image'); const cardImg = Card.current.querySelector('.heroImg'); if ( e.target === cardBody || e.target === cardThumb || e.target === cardImg ) { e.target.setAttribute( 'title', `Click to find out more about our ${name} template` ); } } /** * Click Link Card to Page * @param e - Click Event * @returns new window location */ function handleOnClick(e) { const card = e.target; const mainLink = card.querySelector('.main-link'); const clickableArea = ['.card-body', '.icon-image', '.heroImg']; for (let area of clickableArea) { if (e.currentTarget.classList.contains(area)) { return mainLink.click(); } } } return (
{children}
); }; export default CardLink;