import * as React from 'react'; import { Announced } from '@fluentui/react/lib/Announced'; import { DetailsList, DetailsListLayoutMode, Selection, IColumn, IDetailsList } from '@fluentui/react/lib/DetailsList'; import { IconButton, PrimaryButton, IButtonStyles } from '@fluentui/react/lib/Button'; import { Dialog, DialogFooter } from '@fluentui/react/lib/Dialog'; import { TextField, ITextField } from '@fluentui/react/lib/TextField'; import { createArray } from '@fluentui/react/lib/Utilities'; import { useConst } from '@fluentui/react-hooks'; const iconButtonStyles: Partial = { root: { float: 'right', height: 'inherit' } }; interface IExampleItem { key: number; name: string; } export const AnnouncedQuickActionsExample: React.FunctionComponent = () => { const detailsList = React.useRef(null); const textField = React.useRef(null); const selection = useConst(() => new Selection()); const [items, setItems] = React.useState(() => createArray(20, i => ({ key: i, name: 'Item ' + i, })), ); const [dialogContent, setDialogContent] = React.useState(undefined); const [announced, setAnnounced] = React.useState(undefined); const deleteItem = React.useCallback((index: number): void => { setItems(prevItems => prevItems.filter((item, i) => i !== index)); setAnnounced(); }, []); const renameItem = React.useCallback((item: IExampleItem, index: number): void => { const updateItemName = () => { if (textField && textField.current) { setItems(prevItems => { const renamedItems = [...prevItems]; renamedItems[index] = { ...prevItems[index], name: textField.current?.value || renamedItems[index].name }; return renamedItems; }); setDialogContent(undefined); setAnnounced(); } }; setDialogContent( <> , ); }, []); const columns = useConst((): IColumn[] => [ { name: 'Name', fieldName: 'name', key: 'name', minWidth: 100, maxWidth: 200, onRender: (item: IExampleItem, index: number) => (
{item.name} deleteItem(index), }, { key: 'rename', text: 'Rename', onClick: () => renameItem(item, index), }, ], }} />
), }, ]); const closeRenameDialog = React.useCallback((): void => { setDialogContent(undefined); }, []); return ( <> {announced} ); };