UNPKG

@awsui/components-react

Version:

On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en

42 lines 2.13 kB
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { useRef } from 'react'; export default function useLiveAnnouncements({ items, itemDefinition, isDragging, liveAnnouncementDndStarted, liveAnnouncementDndItemReordered, liveAnnouncementDndItemCommitted, liveAnnouncementDndDiscarded, }) { const isFirstAnnouncement = useRef(true); if (!isDragging) { isFirstAnnouncement.current = true; } return { onDragStart({ active }) { if (active && liveAnnouncementDndStarted) { const index = items.findIndex(item => itemDefinition.id(item) === active.id); return liveAnnouncementDndStarted(index + 1, items.length); } }, onDragOver({ active, over }) { if (liveAnnouncementDndItemReordered) { // Don't announce on the first dragOver because it's redundant with onDragStart. if (isFirstAnnouncement.current) { isFirstAnnouncement.current = false; if (!over || over.id === active.id) { return; } } const initialIndex = items.findIndex(item => itemDefinition.id(item) === active.id); const currentIdex = over ? items.findIndex(item => itemDefinition.id(item) === over.id) : initialIndex; return liveAnnouncementDndItemReordered(initialIndex + 1, currentIdex + 1, items.length); } }, onDragEnd({ active, over }) { if (liveAnnouncementDndItemCommitted) { const initialIndex = items.findIndex(item => itemDefinition.id(item) === active.id); const finalIndex = over ? items.findIndex(item => itemDefinition.id(item) === over.id) : initialIndex; return liveAnnouncementDndItemCommitted(initialIndex + 1, finalIndex + 1, items.length); } }, onDragCancel() { return liveAnnouncementDndDiscarded; }, }; } //# sourceMappingURL=use-live-announcements.js.map