diff --git a/src/components/breadcrumbs.tsx b/src/components/breadcrumbs.tsx index 90c9a4e..6a33655 100644 --- a/src/components/breadcrumbs.tsx +++ b/src/components/breadcrumbs.tsx @@ -1,21 +1,48 @@ -import { isArray } from "lodash"; -import React from "react"; +import React, { Children, ReactElement } from "react"; type Props = { - divider?: string; + divider: "dotted" | "slash"; children: React.ReactNode; -} -/* -------------------------------------------------------------------------- */ -/* use: <Breadcrumbs divider="/","●" or any> children </Breadcrumbs> */ -/* -------------------------------------------------------------------------- */ -export default function Breadcrumbs({divider ,children}: Props) { - return( - <> - {divider} { + className?: string; +} ; - isArray(children) ? children.join(' '+divider+' ') : children - } - {divider} - </> +/* ---------- a random number for a unique key (react requirement) ---------- */ + +function randomInteger( min: number, max: number ) { + let rand = min + Math.random() * (max + 1 - min); + return Math.floor(rand); + } + +/* ----------------------- get the divider as designed ---------------------- */ + +function GetDivider( symbol: string ) { + const dividers = { + 'dotted' : <span className='inline-block h-1 w-1 bg-gray-500 rounded m-1 text-center' key={ randomInteger(20, 1000) }></span>, + 'slash' : <span className='fz-12 f-gray-700 m-1' key={ randomInteger(20, 1000) }>/</span>, + } + return ( symbol === 'dotted') ? dividers.dotted : dividers.slash +} + +export default function Breadcrumbs( { divider ,children, className }: Props ) { + + /* -------------- Convert the children into an array and insert ------------- */ + /* ------------------the elements with the divider into it ------------------ */ + + let childrenToArray = React.Children.toArray(children) + let LinkAndDivider: any + LinkAndDivider = []; + + for( let i = 0; i < childrenToArray.length; i++ ) { + + let dividerComponent = GetDivider( divider ) + LinkAndDivider = LinkAndDivider.concat( childrenToArray[i] ).concat( dividerComponent ) + } + LinkAndDivider.pop(); + + return( + <div className={ className }> + { LinkAndDivider } + </div> + ) } \ No newline at end of file