the script has been reworked and tested

This commit is contained in:
filantrop 2022-07-31 20:34:56 +03:00
parent 5fe9f484d3
commit 78f4e3c196

View File

@ -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}&nbsp;{
className?: string;
} ;
/* ---------- 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>
isArray(children) ? children.join(' '+divider+' ') : children
}
&nbsp;{divider}
</>
)
}