import * as React from 'react'; import styles from './IconsStoriesAllFooter.scss'; import { Text } from '../text/Text/Text'; import FlySelect from '../inputs/FlySelect/FlySelect'; import { IconStoriesAllContext } from './IconsStoriesAll'; import { useContext, useEffect, useState } from 'react'; import CheckmarkIcon from './svgs/CheckmarkIcon'; import FileFolderClosedIcon from './svgs/FileFolderClosedIcon'; import FileFolderOpenedIcon from './svgs/FileFolderOpenedIcon'; import { Tooltip } from '../overlays/Tooltip/Tooltip'; export const IconsStoriesAllFooter = () => { const { additionalPropChanges, changedAdditionalProps, doShowAdditionalProps, selectedIconData, setAdditionalPropChanges, setDoShowAdditionalProps, } = useContext(IconStoriesAllContext); const [snippet, setSnippet] = useState(''); const [useIndividualImportOption, setUseIndividualImportOption] = useState(true); const [doShowCopiedTimeoutRef, setDoShowCopiedTimeoutRef] = useState(); const clearCopyTimeout = () => { if (doShowCopiedTimeoutRef) { clearTimeout(doShowCopiedTimeoutRef as number); setDoShowCopiedTimeoutRef(undefined); } } useEffect(() => { let snippetText = useIndividualImportOption ? `<${selectedIconData?.exportIconName}` : ` { snippetText += ` ${propName}="${propValue}"`; }); snippetText += ' />'; setSnippet(snippetText); // if changing settings or the icon selected, make sure this hides clearCopyTimeout(); return () => { clearCopyTimeout(); } }, [changedAdditionalProps, selectedIconData, useIndividualImportOption]); const onClickCopyToClipboard = async() => { await navigator.clipboard.writeText(snippet); clearCopyTimeout(); const timeout = setTimeout(() => { setDoShowCopiedTimeoutRef(undefined); }, 1500); setDoShowCopiedTimeoutRef(timeout); }; return (
{!!selectedIconData ? ( <> {selectedIconData.meta.additionalProps && doShowAdditionalProps && (
{selectedIconData.meta.additionalProps.map((propData) => { return ( {propData.propName}: setAdditionalPropChanges({ ...additionalPropChanges, ...{ [propData.propName]: value, } })} value={propData.default} /> ) })}
)}
{selectedIconData.meta.additionalProps && (
setDoShowAdditionalProps(!doShowAdditionalProps)} > additional props {' '} {doShowAdditionalProps ? '(-)' : '(+)'}
)} {snippet} {doShowCopiedTimeoutRef && (
Copied to clipboard
)}
Import by namespace
} position="top" >
setUseIndividualImportOption(!useIndividualImportOption)}> {useIndividualImportOption ? ( ) : ( ) }
preview
) : ( Select an Icon to see how to use it )}
); };