@pega/cosmos-react-dnd 9.0.0-build.24.2 → 9.0.0-build.24.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,7 @@ declare const _default: import("react").ForwardRefExoticComponent<Omit<StandardD
8
8
  text: string;
9
9
  onClick: import("react").MouseEventHandler;
10
10
  href?: string;
11
+ onPreview?: import("@pega/cosmos-react-core").LinkProps["onPreview"];
11
12
  } & import("@pega/cosmos-react-core").ForwardProps);
12
13
  secondary?: string;
13
14
  status?: {
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,UAAU,EAIX,MAAM,OAAO,CAAC;AA0Bf,OAAO,KAAK,EAAmC,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAwB3F,OAAO,KAAK,EACV,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,8BAA8B,CAAC;;;;;;;YAa9B,CAAJ;;;;;;;;;;;;;;;;;WAFW,6BAA6B,EAAE;sBACpB,yBAAyB,CAAC,iBAAiB,CAAC;YACtD,yBAAyB,CAAC,QAAQ,CAAC;cACjC,yBAAyB,CAAC,UAAU,CAAC;;;;AAqoBvD,wBAAiF"}
1
+ {"version":3,"file":"StandardDragDropList.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,UAAU,EAIX,MAAM,OAAO,CAAC;AA2Bf,OAAO,KAAK,EAAmC,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAwB3F,OAAO,KAAK,EACV,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,8BAA8B,CAAC;;;;;;;YAaI,CAAC;iBACzB,CAAA;;;;;;;;;;;;;;;;;WAHH,6BAA6B,EAAE;sBACpB,yBAAyB,CAAC,iBAAiB,CAAC;YACtD,yBAAyB,CAAC,QAAQ,CAAC;cACjC,yBAAyB,CAAC,UAAU,CAAC;;;;AAupBvD,wBAAiF"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { createContext, forwardRef, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
3
- import { Flex, registerIcon, Icon, Text, Button, useI18n, EmptyState, ExpandCollapse, useUID, Tooltip, useElement, useTestIds, withTestIds, AdditionalInfo, Checkbox, HiddenText, useLiveLog, useFocusWithin, useConsolidatedRef, useArrows, getFocusables, useEvent } from '@pega/cosmos-react-core';
3
+ import { Flex, registerIcon, Icon, Text, Button, Link, useI18n, EmptyState, ExpandCollapse, useUID, Tooltip, useElement, useTestIds, withTestIds, AdditionalInfo, Checkbox, HiddenText, useLiveLog, useFocusWithin, useConsolidatedRef, useArrows, getFocusables, useEvent } from '@pega/cosmos-react-core';
4
4
  import * as DragIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/drag.icon';
5
5
  import * as PlusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';
6
6
  import * as CaretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';
@@ -62,6 +62,9 @@ type, accept, primary, secondary, draggable = true, status, items, icon, onConfi
62
62
  if (typeof primary === 'string') {
63
63
  return (_jsxs("span", { ref: setPrimaryTextEl, children: [primaryText, tooltip] }));
64
64
  }
65
+ if (primary.onPreview && primary.href) {
66
+ return (_jsx(Link, { "data-testid": testIds.primary, href: primary.href, onClick: primary.onClick, onPreview: primary.onPreview, ref: setPrimaryTextEl, previewable: true, children: _jsxs(StyledPrimary, { children: [primaryText, tooltip] }) }));
67
+ }
65
68
  return (_jsx(Button, { "data-testid": testIds.primary, variant: 'link', onClick: primary.onClick, href: primary.href, ref: setPrimaryTextEl, children: _jsxs(StyledPrimary, { children: [primaryText, tooltip] }) }));
66
69
  }, [t, items, primary, collapsed, expandCollpaseId, primaryTextEl]);
67
70
  return (_jsxs(Flex, { "data-testid": testIds.root, ...restProps, container: { direction: 'column' }, as: StyledStandardDragDropListItem, ref: containerRef, isDragging: isDragging, hasActions: hasActions, role: 'listitem', "aria-label": primary, tabIndex: tabKeyNavigation ? -1 : 0, children: [_jsxs(Flex, { container: { alignItems: 'center' }, as: StyledListItemInner, isDraggable: draggable, isSelectable: !!onItemSelection, hasActions: hasActions, hasVisual: !!status || !!icon, children: [draggable && (_jsx(DragHandle, { itemId: id, ref: dragRef, "data-testid": testIds.dragHandle, "aria-label": typeof primary === 'string' ? primary : primary.text })), _jsx(Flex, { container: { alignItems: 'center', gap: 0.5 }, item: { grow: 1, shrink: 1 }, children: _jsxs(Flex, { container: { alignItems: 'center', gap: status || icon ? 1 : undefined, pad: 0.5 }, as: StyledItemContent, children: [onItemSelection && !data.items && (_jsx(Checkbox, { "data-testid": testIds.checkbox, "aria-label": typeof primary === 'string' ? primary : primary.text, checked: selected, onChange: e => onItemSelection({ ...data, selected: e.target.checked }) })), status && _jsx(ItemStatus, { type: status?.type, message: status?.message }), icon && !items && _jsx(Icon, { "data-testid": testIds.icon, ...icon, size: 's' }), primaryEl] }) }), secondary && (_jsx(Flex, { container: { alignItems: 'center', justify: 'end', gap: 0.5 },
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n PropsWithoutRef,\n Ref,\n SetStateAction\n} from 'react';\n\nimport {\n Flex,\n registerIcon,\n Icon,\n Text,\n Button,\n useI18n,\n EmptyState,\n ExpandCollapse,\n useUID,\n Tooltip,\n useElement,\n useTestIds,\n withTestIds,\n AdditionalInfo,\n Checkbox,\n HiddenText,\n useLiveLog,\n useFocusWithin,\n useConsolidatedRef,\n useArrows,\n getFocusables,\n useEvent\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent, OmitStrict } from '@pega/cosmos-react-core';\nimport * as DragIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/drag.icon';\nimport * as PlusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';\nimport * as CaretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as DiamondMinusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/diamond-minus.icon';\nimport * as WarnSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/warn-solid.icon';\n\nimport DragDropList from '../DragDropList';\nimport type { ItemRendererProps } from '../DragDropList';\nimport type { DraggableItem } from '../Draggable';\nimport DragHandle from '../DragHandle';\n\nimport {\n StyledStandardDragDropList,\n StyledStandardDragDropListItem,\n StyledExpandCollapseToggle,\n StyledItemActions,\n StyledItemContent,\n StyledItemStatus,\n StyledPrimary,\n StyledSecondary,\n StyledListItemInner,\n StyledItemSecondaryContainer\n} from './StandardDragDropList.styles';\nimport type {\n StandardDragDropListProps,\n StandardDragDropListItemProps\n} from './StandardDragDropList.types';\nimport {\n getItemRendererTestIds,\n getStandardDragDropListTestIds\n} from './StandardDragDropList.test-ids';\n\nregisterIcon(DragIcon, PlusIcon, CaretDownIcon, DiamondMinusIcon, WarnSolidIcon);\n\ntype InternalStandardDragDropListItemProps = StandardDragDropListItemProps &\n (\n | {\n items: StandardDragDropListItemProps[];\n onItemSelection?: StandardDragDropListProps['onItemSelection'];\n accept: StandardDragDropListProps['accept'];\n onChange: StandardDragDropListProps['onChange'];\n }\n | {\n items?: undefined;\n onItemSelection?: StandardDragDropListProps['onItemSelection'];\n accept?: never;\n onChange?: never;\n }\n );\n\nlet BaseStandardDragDropList: ForwardRefForwardPropsComponent<\n OmitStrict<StandardDragDropListProps, 'ref'> & { ref: Ref<HTMLUListElement> }\n>;\n\ninterface TabKeyNavigationContextValue {\n tabKeyNavigation: boolean;\n setTabKeyNavigation: Dispatch<SetStateAction<boolean>>;\n}\n\nconst tabKeyNavigationContext = createContext<TabKeyNavigationContextValue>({\n tabKeyNavigation: false,\n setTabKeyNavigation: () => {}\n});\n\nconst ItemStatus = ({\n message,\n type\n}: Partial<NonNullable<StandardDragDropListItemProps['status']>>) => {\n const [ttt, setTTT] = useElement(null);\n const iconName = type === 'warning' ? 'diamond-minus' : 'warn-solid';\n\n return (\n <StyledItemStatus aria-live='polite' role='status'>\n {message && (\n <Text variant='secondary' status={type}>\n <Flex container={{ gap: 0.5 }}>\n <Icon ref={setTTT} name={iconName} role='status' tabIndex={0} aria-label={type} />\n <Tooltip target={ttt} aria-hidden showDelay='none' hideDelay='none'>\n {message}\n </Tooltip>\n </Flex>\n </Text>\n )}\n </StyledItemStatus>\n );\n};\n\nconst getFlattenedIds = (\n items: StandardDragDropListItemProps[]\n): StandardDragDropListItemProps['id'][] => {\n return items.flatMap(item => {\n return item.items ? [item.id, ...item.items.map(({ id }) => id)] : [item.id];\n });\n};\n\nconst ItemRenderer = ({\n testId,\n dragRef,\n previewRef,\n isDragging,\n data: {\n id,\n // Remove type for DOM restProps\n type,\n accept,\n primary,\n secondary,\n draggable = true,\n status,\n items,\n icon,\n onConfigure,\n onRemove,\n onAddTo,\n onChange,\n onItemSelection,\n selected,\n ...restProps\n },\n data\n}: ItemRendererProps<InternalStandardDragDropListItemProps>) => {\n const t = useI18n();\n const [collapsed, setCollapsed] = useState(false);\n const expandCollpaseId = useUID();\n const testIds = useTestIds(testId, getItemRendererTestIds);\n const { tabKeyNavigation, setTabKeyNavigation } = useContext(tabKeyNavigationContext);\n const listItemRef = useRef<HTMLLIElement>(null);\n const containerRef = useConsolidatedRef<HTMLLIElement>(listItemRef, previewRef);\n\n const hasActions = !!(onConfigure ?? onRemove ?? onAddTo);\n const numberOfActions = [onConfigure, onRemove, onAddTo].filter(Boolean).length;\n\n const [primaryTextEl, setPrimaryTextEl] = useElement<\n HTMLSpanElement | HTMLAnchorElement | HTMLButtonElement\n >(null);\n const [secondaryTextEl, setSecondaryTextEl] = useElement<HTMLSpanElement>(null);\n\n useEvent(\n 'keydown',\n e => {\n if (e.key === 'Enter' && !tabKeyNavigation) {\n e.preventDefault();\n setTabKeyNavigation(true);\n getFocusables(listItemRef)[0]?.focus();\n }\n if (e.key === 'Escape' && tabKeyNavigation) {\n e.preventDefault();\n setTabKeyNavigation(false);\n listItemRef.current?.focus();\n }\n },\n { target: listItemRef, dependencies: [tabKeyNavigation] }\n );\n\n const primaryEl = useMemo(() => {\n const primaryText = typeof primary === 'string' ? primary : primary.text;\n\n const tooltip = (\n <Tooltip smart target={primaryTextEl} showDelay='none' hideDelay='none'>\n {primaryText}\n </Tooltip>\n );\n\n const labelText = collapsed ? t('expand') : t('collapse');\n\n if (items) {\n return (\n <>\n <StyledExpandCollapseToggle\n data-testid={testIds.expandCollapseButton}\n variant='simple'\n icon\n label={labelText}\n aria-label={`${labelText} - ${primaryText}`}\n onClick={() => setCollapsed(cur => !cur)}\n aria-owns={expandCollpaseId}\n aria-expanded={!collapsed}\n tabIndex={tabKeyNavigation ? 0 : -1}\n >\n <Icon name='caret-down' />\n </StyledExpandCollapseToggle>\n <span ref={setPrimaryTextEl}>\n {primaryText}\n {tooltip}\n </span>\n </>\n );\n }\n\n if (typeof primary === 'string') {\n return (\n <span ref={setPrimaryTextEl}>\n {primaryText}\n {tooltip}\n </span>\n );\n }\n\n return (\n <Button\n data-testid={testIds.primary}\n variant='link'\n onClick={primary.onClick}\n href={primary.href}\n ref={setPrimaryTextEl}\n >\n <StyledPrimary>\n {primaryText}\n {tooltip}\n </StyledPrimary>\n </Button>\n );\n }, [t, items, primary, collapsed, expandCollpaseId, primaryTextEl]);\n\n return (\n <Flex\n data-testid={testIds.root}\n {...restProps}\n container={{ direction: 'column' }}\n as={StyledStandardDragDropListItem}\n ref={containerRef}\n isDragging={isDragging}\n hasActions={hasActions}\n role='listitem'\n aria-label={primary}\n tabIndex={tabKeyNavigation ? -1 : 0}\n >\n <Flex\n container={{ alignItems: 'center' }}\n as={StyledListItemInner}\n isDraggable={draggable}\n isSelectable={!!onItemSelection}\n hasActions={hasActions}\n hasVisual={!!status || !!icon}\n >\n {draggable && (\n <DragHandle\n itemId={id}\n ref={dragRef}\n data-testid={testIds.dragHandle}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n />\n )}\n <Flex container={{ alignItems: 'center', gap: 0.5 }} item={{ grow: 1, shrink: 1 }}>\n <Flex\n container={{ alignItems: 'center', gap: status || icon ? 1 : undefined, pad: 0.5 }}\n as={StyledItemContent}\n >\n {onItemSelection && !data.items && (\n <Checkbox\n data-testid={testIds.checkbox}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n checked={selected}\n onChange={e => onItemSelection({ ...data, selected: e.target.checked })}\n />\n )}\n {status && <ItemStatus type={status?.type} message={status?.message} />}\n {icon && !items && <Icon data-testid={testIds.icon} {...icon} size='s' />}\n\n {primaryEl}\n </Flex>\n </Flex>\n\n {secondary && (\n <Flex\n container={{ alignItems: 'center', justify: 'end', gap: 0.5 }}\n // flex-shrink: 100000 to crush secondary text before primary\n item={{ grow: 0, shrink: 100000 }}\n numberOfActions={numberOfActions}\n as={StyledItemSecondaryContainer}\n >\n {secondary && (\n <StyledSecondary variant='secondary' ref={setSecondaryTextEl}>\n {secondary}\n <Tooltip smart target={secondaryTextEl} showDelay='none' hideDelay='none'>\n {secondary}\n </Tooltip>\n </StyledSecondary>\n )}\n </Flex>\n )}\n\n {hasActions && (\n <Flex container={{ alignItems: 'center', gap: 0.5 }} as={StyledItemActions}>\n {onAddTo && (\n <span>\n <Button\n data-testid={testIds.addButton}\n icon\n variant='simple'\n label={t('add')}\n aria-label={t('add_noun', [typeof primary === 'string' ? primary : primary.text])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onAddTo?.(id, e);\n }}\n >\n <Icon name='plus' />\n </Button>\n </span>\n )}\n\n {onConfigure && (\n <span>\n <Button\n data-testid={testIds.configureButton}\n icon\n variant='simple'\n label={t('configure')}\n aria-label={t('configure_noun', [\n typeof primary === 'string' ? primary : primary.text\n ])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onConfigure?.(id, e);\n }}\n >\n <Icon name='gear' />\n </Button>\n </span>\n )}\n\n {onRemove && (\n <span>\n <Button\n data-testid={testIds.removeButton}\n icon\n variant='simple'\n label={t('remove')}\n aria-label={t('remove_noun', [\n typeof primary === 'string' ? primary : primary.text\n ])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onRemove?.(id, e);\n }}\n >\n <Icon name='trash' />\n </Button>\n </span>\n )}\n </Flex>\n )}\n </Flex>\n\n {/* Using data here so TS can track conditional type. */}\n {data.items && data.items.length > 0 && (\n <ExpandCollapse collapsed={collapsed} id={expandCollpaseId}>\n <BaseStandardDragDropList\n accept={data.accept}\n items={data.items}\n onChange={data.onChange}\n onItemSelection={data.onItemSelection}\n />\n </ExpandCollapse>\n )}\n </Flex>\n );\n};\n\nconst ItemRendererWithTestIds = withTestIds(ItemRenderer, getItemRendererTestIds);\n\nBaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction(\n {\n testId,\n accept,\n items: itemsProp,\n onChange: onChangeProp,\n onEnter,\n onItemSelection,\n pushMode,\n pullMode,\n ...restProps\n }: PropsWithoutRef<StandardDragDropListProps>,\n ref: Ref<HTMLUListElement>\n) {\n const flatIds = useMemo(() => getFlattenedIds(itemsProp), [itemsProp]);\n const { tabKeyNavigation } = useContext(tabKeyNavigationContext);\n\n const timerRef = useRef<number>();\n const newItemsRef = useRef<StandardDragDropListItemProps[]>();\n\n const mergeChangeHandler = useCallback(\n (newItems: StandardDragDropListItemProps[]) => {\n if (typeof timerRef.current === 'number' && newItemsRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = undefined;\n const refedItems = newItemsRef.current;\n newItemsRef.current = undefined;\n\n const reffedItemsCount = getFlattenedIds(refedItems).length;\n const newItemsCount = getFlattenedIds(newItems).length;\n\n // Item moved between the top level list and nested list.\n if (Math.abs(reffedItemsCount - newItemsCount) === 2) {\n const itemsWithDuplicate = reffedItemsCount > newItemsCount ? refedItems : newItems;\n\n const flatItemsWithDuplicate = getFlattenedIds(itemsWithDuplicate);\n\n const duplicateItemId = flatItemsWithDuplicate.find(\n (id, idx) => flatItemsWithDuplicate.indexOf(id) !== idx\n );\n\n // Should never happen.\n if (!duplicateItemId) return;\n\n // The duplicate was top level before.\n if (itemsProp.some(({ id }) => id === duplicateItemId)) {\n onChangeProp?.(itemsWithDuplicate.filter(({ id }) => id !== duplicateItemId));\n }\n\n // The duplicate was nested before.\n else {\n onChangeProp?.(\n itemsWithDuplicate.map(innerItem => {\n if (!innerItem.items) return innerItem;\n\n if (\n itemsProp\n .find(({ id }) => id === innerItem.id)\n ?.items?.some(({ id: subItemId }) => subItemId === duplicateItemId)\n ) {\n return {\n ...innerItem,\n items: innerItem.items.filter(({ id }) => id !== duplicateItemId)\n };\n }\n\n return innerItem;\n })\n );\n }\n } else {\n // Failsafe for two unrelated change events within 100ms.\n onChangeProp?.(refedItems);\n onChangeProp?.(newItems);\n }\n } else {\n newItemsRef.current = newItems;\n timerRef.current = window.setTimeout(() => {\n onChangeProp?.(newItems);\n }, 100);\n }\n },\n [onChangeProp, itemsProp]\n );\n\n const itemsToRender: DraggableItem<InternalStandardDragDropListItemProps>[] = useMemo(\n () =>\n itemsProp.map(item => {\n const newItem = {\n id: item.id,\n type: item.type,\n data: {\n ...item,\n onItemSelection,\n draggable: item.draggable && !!onChangeProp\n } as InternalStandardDragDropListItemProps\n };\n if (!item.items) return newItem;\n\n return {\n ...newItem,\n data: {\n ...item,\n onItemSelection,\n accept: item.accept ?? accept,\n draggable: item.draggable && !!onChangeProp,\n onChange: onChangeProp\n ? (newItems: InternalStandardDragDropListItemProps[]) => {\n const newContentItems = itemsProp.map(topLevelItem =>\n topLevelItem.id === item.id && topLevelItem.items\n ? { ...topLevelItem, items: newItems }\n : topLevelItem\n );\n\n const flatNewItems = getFlattenedIds(newContentItems);\n\n if (\n itemsProp.some(propItem => !!propItem.items) &&\n flatIds.length !== flatNewItems.length\n ) {\n // An item may be \"removed\" or \"duplicated\".\n mergeChangeHandler(newContentItems);\n } else {\n onChangeProp(newContentItems);\n }\n }\n : undefined\n } as InternalStandardDragDropListItemProps\n };\n }),\n [accept, itemsProp, onChangeProp, tabKeyNavigation, flatIds, mergeChangeHandler]\n );\n\n const onChange = useCallback(\n (newItems: DraggableItem<InternalStandardDragDropListItemProps>[]) => {\n const newContentItems = newItems.map(({ data: { onChange: _, ...data } }) => {\n return data;\n });\n const flatNewItems = getFlattenedIds(newContentItems);\n\n if (itemsProp.some(propItem => !!propItem.items) && flatIds.length !== flatNewItems.length) {\n // An item may be \"removed\" or \"duplicated\".\n mergeChangeHandler(newContentItems);\n } else {\n onChangeProp?.(newContentItems);\n }\n },\n [onChangeProp, flatIds, mergeChangeHandler]\n );\n\n return (\n <DragDropList\n testId={testId}\n {...restProps}\n ref={ref}\n accept={accept}\n items={itemsToRender}\n pushMode={pushMode}\n pullMode={pullMode}\n itemRenderer={ItemRendererWithTestIds}\n emptyRenderer={EmptyState}\n onChange={onChange}\n onEnter={\n onEnter as (\n item: DraggableItem<InternalStandardDragDropListItemProps>\n ) => DraggableItem<InternalStandardDragDropListItemProps>\n }\n />\n );\n});\n\ntype CombinedProps = StandardDragDropListProps & InternalStandardDragDropListItemProps;\n\nconst StandardDragDropList = forwardRef<HTMLDivElement, CombinedProps>(\n (\n {\n testId,\n accept,\n pushMode,\n pullMode,\n items: itemsProp,\n heading: title,\n info,\n footer,\n headingTag = 'h2',\n additionalInfo,\n onChange,\n onEnter,\n onItemSelection,\n ...restProps\n }: PropsWithoutRef<StandardDragDropListProps>,\n ref: StandardDragDropListProps['ref']\n ) => {\n const [tabKeyNavigation, setTabKeyNavigation] = useState(false);\n const contextValue = useMemo(\n () => ({ tabKeyNavigation, setTabKeyNavigation }),\n [tabKeyNavigation]\n );\n const containerRef = useConsolidatedRef(ref);\n const listRef = useRef<HTMLUListElement>(null);\n const t = useI18n();\n const testIds = useTestIds(testId, getStandardDragDropListTestIds);\n const { announceAssertive } = useLiveLog();\n const [firstListElement, setFirstListElement] = useElement<HTMLLIElement>(null);\n\n useEffect(() => {\n setFirstListElement(\n listRef.current?.querySelector<HTMLLIElement>('[role=\"listitem\"]') ?? null\n );\n }, [itemsProp]);\n\n const arrowNavigationRef = tabKeyNavigation ? { current: null } : listRef;\n\n const heading = title ? (\n <Text variant={headingTag} role='heading'>\n {title}\n </Text>\n ) : null;\n\n const infoText = info ? <Text variant='primary'>{info}</Text> : undefined;\n\n useFocusWithin([containerRef], isFocused => {\n if (isFocused) {\n announceAssertive({ message: (title ?? '') + info });\n }\n });\n\n useFocusWithin([listRef], isFocused => {\n if (!isFocused) {\n setTabKeyNavigation(false);\n }\n });\n\n useEvent(\n 'keydown',\n e => {\n if (e.key === 'Tab' && !tabKeyNavigation && listRef.current) {\n listRef.current.inert = true; // Prevents focus from moving to the list items\n setTimeout(() => {\n if (listRef.current) listRef.current.inert = false;\n }, 0);\n }\n },\n { target: listRef }\n );\n\n useArrows(\n arrowNavigationRef,\n {\n cycle: false,\n selector: '[role=\"listitem\"]',\n dir: 'up-down',\n initialFocusElement: firstListElement\n },\n [tabKeyNavigation, firstListElement]\n );\n\n const descriptionId = useUID();\n\n return (\n <tabKeyNavigationContext.Provider value={contextValue}>\n <StyledStandardDragDropList ref={containerRef} data-testid={testIds.root} {...restProps}>\n {heading && (\n <Flex container={{ direction: 'column', gap: 1, pad: [1, undefined] }}>\n <Flex\n data-testid={testIds.header}\n container={{\n justify: 'between',\n alignItems: 'center',\n gap: 1\n }}\n as='header'\n >\n {additionalInfo ? (\n <Flex container>\n {heading}\n {/* Can assert title when heading is defined */}\n <AdditionalInfo heading={additionalInfo.heading ?? title!}>\n {additionalInfo.content}\n </AdditionalInfo>\n </Flex>\n ) : (\n heading\n )}\n </Flex>\n {infoText}\n </Flex>\n )}\n <BaseStandardDragDropList\n testId={testId}\n accept={accept}\n pushMode={pushMode}\n pullMode={pullMode}\n items={itemsProp}\n onChange={onChange}\n onEnter={onEnter}\n onItemSelection={onItemSelection}\n aria-describedby={descriptionId}\n ref={listRef}\n />\n {footer && (\n <Flex\n container={{\n alignItems: 'center',\n itemGap: 1,\n pad: [1, undefined]\n }}\n as='footer'\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Tab' && e.shiftKey && firstListElement) {\n e.preventDefault();\n firstListElement.tabIndex = 0;\n firstListElement?.focus();\n }\n }}\n >\n {footer}\n </Flex>\n )}\n <HiddenText id={descriptionId}>{t('list_item_nav_instructions')}</HiddenText>\n </StyledStandardDragDropList>\n </tabKeyNavigationContext.Provider>\n );\n }\n);\n\nexport default withTestIds(StandardDragDropList, getStandardDragDropListTestIds);\n"]}
1
+ {"version":3,"file":"StandardDragDropList.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n PropsWithoutRef,\n Ref,\n SetStateAction\n} from 'react';\n\nimport {\n Flex,\n registerIcon,\n Icon,\n Text,\n Button,\n Link,\n useI18n,\n EmptyState,\n ExpandCollapse,\n useUID,\n Tooltip,\n useElement,\n useTestIds,\n withTestIds,\n AdditionalInfo,\n Checkbox,\n HiddenText,\n useLiveLog,\n useFocusWithin,\n useConsolidatedRef,\n useArrows,\n getFocusables,\n useEvent\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent, OmitStrict } from '@pega/cosmos-react-core';\nimport * as DragIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/drag.icon';\nimport * as PlusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';\nimport * as CaretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as DiamondMinusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/diamond-minus.icon';\nimport * as WarnSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/warn-solid.icon';\n\nimport DragDropList from '../DragDropList';\nimport type { ItemRendererProps } from '../DragDropList';\nimport type { DraggableItem } from '../Draggable';\nimport DragHandle from '../DragHandle';\n\nimport {\n StyledStandardDragDropList,\n StyledStandardDragDropListItem,\n StyledExpandCollapseToggle,\n StyledItemActions,\n StyledItemContent,\n StyledItemStatus,\n StyledPrimary,\n StyledSecondary,\n StyledListItemInner,\n StyledItemSecondaryContainer\n} from './StandardDragDropList.styles';\nimport type {\n StandardDragDropListProps,\n StandardDragDropListItemProps\n} from './StandardDragDropList.types';\nimport {\n getItemRendererTestIds,\n getStandardDragDropListTestIds\n} from './StandardDragDropList.test-ids';\n\nregisterIcon(DragIcon, PlusIcon, CaretDownIcon, DiamondMinusIcon, WarnSolidIcon);\n\ntype InternalStandardDragDropListItemProps = StandardDragDropListItemProps &\n (\n | {\n items: StandardDragDropListItemProps[];\n onItemSelection?: StandardDragDropListProps['onItemSelection'];\n accept: StandardDragDropListProps['accept'];\n onChange: StandardDragDropListProps['onChange'];\n }\n | {\n items?: undefined;\n onItemSelection?: StandardDragDropListProps['onItemSelection'];\n accept?: never;\n onChange?: never;\n }\n );\n\nlet BaseStandardDragDropList: ForwardRefForwardPropsComponent<\n OmitStrict<StandardDragDropListProps, 'ref'> & { ref: Ref<HTMLUListElement> }\n>;\n\ninterface TabKeyNavigationContextValue {\n tabKeyNavigation: boolean;\n setTabKeyNavigation: Dispatch<SetStateAction<boolean>>;\n}\n\nconst tabKeyNavigationContext = createContext<TabKeyNavigationContextValue>({\n tabKeyNavigation: false,\n setTabKeyNavigation: () => {}\n});\n\nconst ItemStatus = ({\n message,\n type\n}: Partial<NonNullable<StandardDragDropListItemProps['status']>>) => {\n const [ttt, setTTT] = useElement(null);\n const iconName = type === 'warning' ? 'diamond-minus' : 'warn-solid';\n\n return (\n <StyledItemStatus aria-live='polite' role='status'>\n {message && (\n <Text variant='secondary' status={type}>\n <Flex container={{ gap: 0.5 }}>\n <Icon ref={setTTT} name={iconName} role='status' tabIndex={0} aria-label={type} />\n <Tooltip target={ttt} aria-hidden showDelay='none' hideDelay='none'>\n {message}\n </Tooltip>\n </Flex>\n </Text>\n )}\n </StyledItemStatus>\n );\n};\n\nconst getFlattenedIds = (\n items: StandardDragDropListItemProps[]\n): StandardDragDropListItemProps['id'][] => {\n return items.flatMap(item => {\n return item.items ? [item.id, ...item.items.map(({ id }) => id)] : [item.id];\n });\n};\n\nconst ItemRenderer = ({\n testId,\n dragRef,\n previewRef,\n isDragging,\n data: {\n id,\n // Remove type for DOM restProps\n type,\n accept,\n primary,\n secondary,\n draggable = true,\n status,\n items,\n icon,\n onConfigure,\n onRemove,\n onAddTo,\n onChange,\n onItemSelection,\n selected,\n ...restProps\n },\n data\n}: ItemRendererProps<InternalStandardDragDropListItemProps>) => {\n const t = useI18n();\n const [collapsed, setCollapsed] = useState(false);\n const expandCollpaseId = useUID();\n const testIds = useTestIds(testId, getItemRendererTestIds);\n const { tabKeyNavigation, setTabKeyNavigation } = useContext(tabKeyNavigationContext);\n const listItemRef = useRef<HTMLLIElement>(null);\n const containerRef = useConsolidatedRef<HTMLLIElement>(listItemRef, previewRef);\n\n const hasActions = !!(onConfigure ?? onRemove ?? onAddTo);\n const numberOfActions = [onConfigure, onRemove, onAddTo].filter(Boolean).length;\n\n const [primaryTextEl, setPrimaryTextEl] = useElement<\n HTMLSpanElement | HTMLAnchorElement | HTMLButtonElement\n >(null);\n const [secondaryTextEl, setSecondaryTextEl] = useElement<HTMLSpanElement>(null);\n\n useEvent(\n 'keydown',\n e => {\n if (e.key === 'Enter' && !tabKeyNavigation) {\n e.preventDefault();\n setTabKeyNavigation(true);\n getFocusables(listItemRef)[0]?.focus();\n }\n if (e.key === 'Escape' && tabKeyNavigation) {\n e.preventDefault();\n setTabKeyNavigation(false);\n listItemRef.current?.focus();\n }\n },\n { target: listItemRef, dependencies: [tabKeyNavigation] }\n );\n\n const primaryEl = useMemo(() => {\n const primaryText = typeof primary === 'string' ? primary : primary.text;\n\n const tooltip = (\n <Tooltip smart target={primaryTextEl} showDelay='none' hideDelay='none'>\n {primaryText}\n </Tooltip>\n );\n\n const labelText = collapsed ? t('expand') : t('collapse');\n\n if (items) {\n return (\n <>\n <StyledExpandCollapseToggle\n data-testid={testIds.expandCollapseButton}\n variant='simple'\n icon\n label={labelText}\n aria-label={`${labelText} - ${primaryText}`}\n onClick={() => setCollapsed(cur => !cur)}\n aria-owns={expandCollpaseId}\n aria-expanded={!collapsed}\n tabIndex={tabKeyNavigation ? 0 : -1}\n >\n <Icon name='caret-down' />\n </StyledExpandCollapseToggle>\n <span ref={setPrimaryTextEl}>\n {primaryText}\n {tooltip}\n </span>\n </>\n );\n }\n\n if (typeof primary === 'string') {\n return (\n <span ref={setPrimaryTextEl}>\n {primaryText}\n {tooltip}\n </span>\n );\n }\n\n if (primary.onPreview && primary.href) {\n return (\n <Link\n data-testid={testIds.primary}\n href={primary.href}\n onClick={primary.onClick}\n onPreview={primary.onPreview}\n ref={setPrimaryTextEl}\n previewable\n >\n <StyledPrimary>\n {primaryText}\n {tooltip}\n </StyledPrimary>\n </Link>\n );\n }\n\n return (\n <Button\n data-testid={testIds.primary}\n variant='link'\n onClick={primary.onClick}\n href={primary.href}\n ref={setPrimaryTextEl}\n >\n <StyledPrimary>\n {primaryText}\n {tooltip}\n </StyledPrimary>\n </Button>\n );\n }, [t, items, primary, collapsed, expandCollpaseId, primaryTextEl]);\n\n return (\n <Flex\n data-testid={testIds.root}\n {...restProps}\n container={{ direction: 'column' }}\n as={StyledStandardDragDropListItem}\n ref={containerRef}\n isDragging={isDragging}\n hasActions={hasActions}\n role='listitem'\n aria-label={primary}\n tabIndex={tabKeyNavigation ? -1 : 0}\n >\n <Flex\n container={{ alignItems: 'center' }}\n as={StyledListItemInner}\n isDraggable={draggable}\n isSelectable={!!onItemSelection}\n hasActions={hasActions}\n hasVisual={!!status || !!icon}\n >\n {draggable && (\n <DragHandle\n itemId={id}\n ref={dragRef}\n data-testid={testIds.dragHandle}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n />\n )}\n <Flex container={{ alignItems: 'center', gap: 0.5 }} item={{ grow: 1, shrink: 1 }}>\n <Flex\n container={{ alignItems: 'center', gap: status || icon ? 1 : undefined, pad: 0.5 }}\n as={StyledItemContent}\n >\n {onItemSelection && !data.items && (\n <Checkbox\n data-testid={testIds.checkbox}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n checked={selected}\n onChange={e => onItemSelection({ ...data, selected: e.target.checked })}\n />\n )}\n {status && <ItemStatus type={status?.type} message={status?.message} />}\n {icon && !items && <Icon data-testid={testIds.icon} {...icon} size='s' />}\n\n {primaryEl}\n </Flex>\n </Flex>\n\n {secondary && (\n <Flex\n container={{ alignItems: 'center', justify: 'end', gap: 0.5 }}\n // flex-shrink: 100000 to crush secondary text before primary\n item={{ grow: 0, shrink: 100000 }}\n numberOfActions={numberOfActions}\n as={StyledItemSecondaryContainer}\n >\n {secondary && (\n <StyledSecondary variant='secondary' ref={setSecondaryTextEl}>\n {secondary}\n <Tooltip smart target={secondaryTextEl} showDelay='none' hideDelay='none'>\n {secondary}\n </Tooltip>\n </StyledSecondary>\n )}\n </Flex>\n )}\n\n {hasActions && (\n <Flex container={{ alignItems: 'center', gap: 0.5 }} as={StyledItemActions}>\n {onAddTo && (\n <span>\n <Button\n data-testid={testIds.addButton}\n icon\n variant='simple'\n label={t('add')}\n aria-label={t('add_noun', [typeof primary === 'string' ? primary : primary.text])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onAddTo?.(id, e);\n }}\n >\n <Icon name='plus' />\n </Button>\n </span>\n )}\n\n {onConfigure && (\n <span>\n <Button\n data-testid={testIds.configureButton}\n icon\n variant='simple'\n label={t('configure')}\n aria-label={t('configure_noun', [\n typeof primary === 'string' ? primary : primary.text\n ])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onConfigure?.(id, e);\n }}\n >\n <Icon name='gear' />\n </Button>\n </span>\n )}\n\n {onRemove && (\n <span>\n <Button\n data-testid={testIds.removeButton}\n icon\n variant='simple'\n label={t('remove')}\n aria-label={t('remove_noun', [\n typeof primary === 'string' ? primary : primary.text\n ])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onRemove?.(id, e);\n }}\n >\n <Icon name='trash' />\n </Button>\n </span>\n )}\n </Flex>\n )}\n </Flex>\n\n {/* Using data here so TS can track conditional type. */}\n {data.items && data.items.length > 0 && (\n <ExpandCollapse collapsed={collapsed} id={expandCollpaseId}>\n <BaseStandardDragDropList\n accept={data.accept}\n items={data.items}\n onChange={data.onChange}\n onItemSelection={data.onItemSelection}\n />\n </ExpandCollapse>\n )}\n </Flex>\n );\n};\n\nconst ItemRendererWithTestIds = withTestIds(ItemRenderer, getItemRendererTestIds);\n\nBaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction(\n {\n testId,\n accept,\n items: itemsProp,\n onChange: onChangeProp,\n onEnter,\n onItemSelection,\n pushMode,\n pullMode,\n ...restProps\n }: PropsWithoutRef<StandardDragDropListProps>,\n ref: Ref<HTMLUListElement>\n) {\n const flatIds = useMemo(() => getFlattenedIds(itemsProp), [itemsProp]);\n const { tabKeyNavigation } = useContext(tabKeyNavigationContext);\n\n const timerRef = useRef<number>();\n const newItemsRef = useRef<StandardDragDropListItemProps[]>();\n\n const mergeChangeHandler = useCallback(\n (newItems: StandardDragDropListItemProps[]) => {\n if (typeof timerRef.current === 'number' && newItemsRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = undefined;\n const refedItems = newItemsRef.current;\n newItemsRef.current = undefined;\n\n const reffedItemsCount = getFlattenedIds(refedItems).length;\n const newItemsCount = getFlattenedIds(newItems).length;\n\n // Item moved between the top level list and nested list.\n if (Math.abs(reffedItemsCount - newItemsCount) === 2) {\n const itemsWithDuplicate = reffedItemsCount > newItemsCount ? refedItems : newItems;\n\n const flatItemsWithDuplicate = getFlattenedIds(itemsWithDuplicate);\n\n const duplicateItemId = flatItemsWithDuplicate.find(\n (id, idx) => flatItemsWithDuplicate.indexOf(id) !== idx\n );\n\n // Should never happen.\n if (!duplicateItemId) return;\n\n // The duplicate was top level before.\n if (itemsProp.some(({ id }) => id === duplicateItemId)) {\n onChangeProp?.(itemsWithDuplicate.filter(({ id }) => id !== duplicateItemId));\n }\n\n // The duplicate was nested before.\n else {\n onChangeProp?.(\n itemsWithDuplicate.map(innerItem => {\n if (!innerItem.items) return innerItem;\n\n if (\n itemsProp\n .find(({ id }) => id === innerItem.id)\n ?.items?.some(({ id: subItemId }) => subItemId === duplicateItemId)\n ) {\n return {\n ...innerItem,\n items: innerItem.items.filter(({ id }) => id !== duplicateItemId)\n };\n }\n\n return innerItem;\n })\n );\n }\n } else {\n // Failsafe for two unrelated change events within 100ms.\n onChangeProp?.(refedItems);\n onChangeProp?.(newItems);\n }\n } else {\n newItemsRef.current = newItems;\n timerRef.current = window.setTimeout(() => {\n onChangeProp?.(newItems);\n }, 100);\n }\n },\n [onChangeProp, itemsProp]\n );\n\n const itemsToRender: DraggableItem<InternalStandardDragDropListItemProps>[] = useMemo(\n () =>\n itemsProp.map(item => {\n const newItem = {\n id: item.id,\n type: item.type,\n data: {\n ...item,\n onItemSelection,\n draggable: item.draggable && !!onChangeProp\n } as InternalStandardDragDropListItemProps\n };\n if (!item.items) return newItem;\n\n return {\n ...newItem,\n data: {\n ...item,\n onItemSelection,\n accept: item.accept ?? accept,\n draggable: item.draggable && !!onChangeProp,\n onChange: onChangeProp\n ? (newItems: InternalStandardDragDropListItemProps[]) => {\n const newContentItems = itemsProp.map(topLevelItem =>\n topLevelItem.id === item.id && topLevelItem.items\n ? { ...topLevelItem, items: newItems }\n : topLevelItem\n );\n\n const flatNewItems = getFlattenedIds(newContentItems);\n\n if (\n itemsProp.some(propItem => !!propItem.items) &&\n flatIds.length !== flatNewItems.length\n ) {\n // An item may be \"removed\" or \"duplicated\".\n mergeChangeHandler(newContentItems);\n } else {\n onChangeProp(newContentItems);\n }\n }\n : undefined\n } as InternalStandardDragDropListItemProps\n };\n }),\n [accept, itemsProp, onChangeProp, tabKeyNavigation, flatIds, mergeChangeHandler]\n );\n\n const onChange = useCallback(\n (newItems: DraggableItem<InternalStandardDragDropListItemProps>[]) => {\n const newContentItems = newItems.map(({ data: { onChange: _, ...data } }) => {\n return data;\n });\n const flatNewItems = getFlattenedIds(newContentItems);\n\n if (itemsProp.some(propItem => !!propItem.items) && flatIds.length !== flatNewItems.length) {\n // An item may be \"removed\" or \"duplicated\".\n mergeChangeHandler(newContentItems);\n } else {\n onChangeProp?.(newContentItems);\n }\n },\n [onChangeProp, flatIds, mergeChangeHandler]\n );\n\n return (\n <DragDropList\n testId={testId}\n {...restProps}\n ref={ref}\n accept={accept}\n items={itemsToRender}\n pushMode={pushMode}\n pullMode={pullMode}\n itemRenderer={ItemRendererWithTestIds}\n emptyRenderer={EmptyState}\n onChange={onChange}\n onEnter={\n onEnter as (\n item: DraggableItem<InternalStandardDragDropListItemProps>\n ) => DraggableItem<InternalStandardDragDropListItemProps>\n }\n />\n );\n});\n\ntype CombinedProps = StandardDragDropListProps & InternalStandardDragDropListItemProps;\n\nconst StandardDragDropList = forwardRef<HTMLDivElement, CombinedProps>(\n (\n {\n testId,\n accept,\n pushMode,\n pullMode,\n items: itemsProp,\n heading: title,\n info,\n footer,\n headingTag = 'h2',\n additionalInfo,\n onChange,\n onEnter,\n onItemSelection,\n ...restProps\n }: PropsWithoutRef<StandardDragDropListProps>,\n ref: StandardDragDropListProps['ref']\n ) => {\n const [tabKeyNavigation, setTabKeyNavigation] = useState(false);\n const contextValue = useMemo(\n () => ({ tabKeyNavigation, setTabKeyNavigation }),\n [tabKeyNavigation]\n );\n const containerRef = useConsolidatedRef(ref);\n const listRef = useRef<HTMLUListElement>(null);\n const t = useI18n();\n const testIds = useTestIds(testId, getStandardDragDropListTestIds);\n const { announceAssertive } = useLiveLog();\n const [firstListElement, setFirstListElement] = useElement<HTMLLIElement>(null);\n\n useEffect(() => {\n setFirstListElement(\n listRef.current?.querySelector<HTMLLIElement>('[role=\"listitem\"]') ?? null\n );\n }, [itemsProp]);\n\n const arrowNavigationRef = tabKeyNavigation ? { current: null } : listRef;\n\n const heading = title ? (\n <Text variant={headingTag} role='heading'>\n {title}\n </Text>\n ) : null;\n\n const infoText = info ? <Text variant='primary'>{info}</Text> : undefined;\n\n useFocusWithin([containerRef], isFocused => {\n if (isFocused) {\n announceAssertive({ message: (title ?? '') + info });\n }\n });\n\n useFocusWithin([listRef], isFocused => {\n if (!isFocused) {\n setTabKeyNavigation(false);\n }\n });\n\n useEvent(\n 'keydown',\n e => {\n if (e.key === 'Tab' && !tabKeyNavigation && listRef.current) {\n listRef.current.inert = true; // Prevents focus from moving to the list items\n setTimeout(() => {\n if (listRef.current) listRef.current.inert = false;\n }, 0);\n }\n },\n { target: listRef }\n );\n\n useArrows(\n arrowNavigationRef,\n {\n cycle: false,\n selector: '[role=\"listitem\"]',\n dir: 'up-down',\n initialFocusElement: firstListElement\n },\n [tabKeyNavigation, firstListElement]\n );\n\n const descriptionId = useUID();\n\n return (\n <tabKeyNavigationContext.Provider value={contextValue}>\n <StyledStandardDragDropList ref={containerRef} data-testid={testIds.root} {...restProps}>\n {heading && (\n <Flex container={{ direction: 'column', gap: 1, pad: [1, undefined] }}>\n <Flex\n data-testid={testIds.header}\n container={{\n justify: 'between',\n alignItems: 'center',\n gap: 1\n }}\n as='header'\n >\n {additionalInfo ? (\n <Flex container>\n {heading}\n {/* Can assert title when heading is defined */}\n <AdditionalInfo heading={additionalInfo.heading ?? title!}>\n {additionalInfo.content}\n </AdditionalInfo>\n </Flex>\n ) : (\n heading\n )}\n </Flex>\n {infoText}\n </Flex>\n )}\n <BaseStandardDragDropList\n testId={testId}\n accept={accept}\n pushMode={pushMode}\n pullMode={pullMode}\n items={itemsProp}\n onChange={onChange}\n onEnter={onEnter}\n onItemSelection={onItemSelection}\n aria-describedby={descriptionId}\n ref={listRef}\n />\n {footer && (\n <Flex\n container={{\n alignItems: 'center',\n itemGap: 1,\n pad: [1, undefined]\n }}\n as='footer'\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Tab' && e.shiftKey && firstListElement) {\n e.preventDefault();\n firstListElement.tabIndex = 0;\n firstListElement?.focus();\n }\n }}\n >\n {footer}\n </Flex>\n )}\n <HiddenText id={descriptionId}>{t('list_item_nav_instructions')}</HiddenText>\n </StyledStandardDragDropList>\n </tabKeyNavigationContext.Provider>\n );\n }\n);\n\nexport default withTestIds(StandardDragDropList, getStandardDragDropListTestIds);\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { MouseEvent, MouseEventHandler, ReactNode, Ref } from 'react';
2
- import type { TestIdProp, OmitStrict, BaseProps, NoChildrenProp, ForwardProps, HeadingTag, AdditionalInfoProps, IconProps, FormControlProps } from '@pega/cosmos-react-core';
2
+ import type { LinkProps, TestIdProp, OmitStrict, BaseProps, NoChildrenProp, ForwardProps, HeadingTag, AdditionalInfoProps, IconProps, FormControlProps } from '@pega/cosmos-react-core';
3
3
  import type { DragDropListProps } from '../DragDropList';
4
4
  export interface StandardDragDropListProps extends OmitStrict<DragDropListProps<StandardDragDropListItemProps>, 'dragHandles' | 'itemRenderer' | 'emptyRenderer' | 'items' | 'onChange'>, BaseProps, NoChildrenProp, TestIdProp {
5
5
  /** The contents of the list. */
@@ -41,6 +41,7 @@ export type StandardDragDropListItemProps = ForwardProps & {
41
41
  text: string;
42
42
  onClick: MouseEventHandler;
43
43
  href?: string;
44
+ onPreview?: LinkProps['onPreview'];
44
45
  } & ForwardProps);
45
46
  /** An additional textual representation for the item e.g. metadata. */
46
47
  secondary?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.types.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StandardDragDropList.types.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.types.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { MouseEvent, MouseEventHandler, ReactNode, Ref } from 'react';\n\nimport type {\n TestIdProp,\n OmitStrict,\n BaseProps,\n NoChildrenProp,\n ForwardProps,\n HeadingTag,\n AdditionalInfoProps,\n IconProps,\n FormControlProps\n} from '@pega/cosmos-react-core';\n\nimport type { DragDropListProps } from '../DragDropList';\n\nexport interface StandardDragDropListProps\n extends OmitStrict<\n DragDropListProps<StandardDragDropListItemProps>,\n 'dragHandles' | 'itemRenderer' | 'emptyRenderer' | 'items' | 'onChange'\n >,\n BaseProps,\n NoChildrenProp,\n TestIdProp {\n /** The contents of the list. */\n items: StandardDragDropListItemProps[];\n /** A title for the list. */\n heading?: string;\n /** Renders a button that when clicked presents additional information for the list. */\n additionalInfo?: {\n heading?: AdditionalInfoProps['heading'];\n content: AdditionalInfoProps['children'];\n };\n /** For use in providing instructional information about the list. */\n info?: FormControlProps['info'];\n /**\n * Select the heading tag for header\n * @default h2\n */\n headingTag?: HeadingTag;\n /** Enables list item selection rendering checkboxes for each. */\n onItemSelection?: (item: StandardDragDropListItemProps) => void;\n /** A region for various list level actions */\n footer?: ReactNode;\n /**\n * Called when the list's content changes by way of drag for reorder, add or remove.\n * The handler is provided an array of items representing the new state.\n */\n onChange?: (items: StandardDragDropListProps['items']) => void;\n /** A ref to the root HTMLElement for the component. */\n ref?: Ref<HTMLDivElement>;\n}\n\ntype ItemAction = (\n id: StandardDragDropListItemProps['id'],\n e: MouseEvent<HTMLButtonElement>\n) => void;\n\nexport type StandardDragDropListItemProps = ForwardProps & {\n /** An identifier unique within the entire list hierarchy. */\n id: string;\n /** Indicates the type of item for determining drop acceptance by a target list. */\n type: string;\n /** The primary textual representation for the item or props for a linkable resource. */\n primary: string | ({ text: string; onClick: MouseEventHandler; href?: string } & ForwardProps);\n /** An additional textual representation for the item e.g. metadata. */\n secondary?: string;\n /** Presents the item as being in an invalidate state. */\n status?: {\n type: 'error' | 'warning';\n message: string;\n };\n /** Whether or not the item can be reordered with drag. */\n draggable?: boolean;\n /** Selected state of the item. */\n selected?: boolean;\n /** Defines the props of the icon passed to the list item */\n icon?: OmitStrict<IconProps, 'size'>;\n /**\n * If the item is configurable pass a callback to render a button.\n * The item's id and an event argument provides access to the underlying HTMLButtonElement.\n */\n onConfigure?: ItemAction;\n /**\n * If the item can be removed form the list pass a callback to render a button.\n * The handler's event argument provides access to the underlying HTMLButtonElement.\n */\n onRemove?: ItemAction;\n} & (\n | {\n /** If the item can possess a nested list of items. */\n items: StandardDragDropListItemProps[];\n /** Type of items allowed to be dropped on the list. If not passed it will inherit accept from the parent list. */\n accept?: StandardDragDropListProps['accept'];\n /** Optionally render an add button for parent item types. */\n onAddTo?: ItemAction;\n }\n | {\n items?: undefined;\n accept?: never;\n onAddTo?: never;\n }\n );\n"]}
1
+ {"version":3,"file":"StandardDragDropList.types.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { MouseEvent, MouseEventHandler, ReactNode, Ref } from 'react';\n\nimport type {\n LinkProps,\n TestIdProp,\n OmitStrict,\n BaseProps,\n NoChildrenProp,\n ForwardProps,\n HeadingTag,\n AdditionalInfoProps,\n IconProps,\n FormControlProps\n} from '@pega/cosmos-react-core';\n\nimport type { DragDropListProps } from '../DragDropList';\n\nexport interface StandardDragDropListProps\n extends OmitStrict<\n DragDropListProps<StandardDragDropListItemProps>,\n 'dragHandles' | 'itemRenderer' | 'emptyRenderer' | 'items' | 'onChange'\n >,\n BaseProps,\n NoChildrenProp,\n TestIdProp {\n /** The contents of the list. */\n items: StandardDragDropListItemProps[];\n /** A title for the list. */\n heading?: string;\n /** Renders a button that when clicked presents additional information for the list. */\n additionalInfo?: {\n heading?: AdditionalInfoProps['heading'];\n content: AdditionalInfoProps['children'];\n };\n /** For use in providing instructional information about the list. */\n info?: FormControlProps['info'];\n /**\n * Select the heading tag for header\n * @default h2\n */\n headingTag?: HeadingTag;\n /** Enables list item selection rendering checkboxes for each. */\n onItemSelection?: (item: StandardDragDropListItemProps) => void;\n /** A region for various list level actions */\n footer?: ReactNode;\n /**\n * Called when the list's content changes by way of drag for reorder, add or remove.\n * The handler is provided an array of items representing the new state.\n */\n onChange?: (items: StandardDragDropListProps['items']) => void;\n /** A ref to the root HTMLElement for the component. */\n ref?: Ref<HTMLDivElement>;\n}\n\ntype ItemAction = (\n id: StandardDragDropListItemProps['id'],\n e: MouseEvent<HTMLButtonElement>\n) => void;\n\nexport type StandardDragDropListItemProps = ForwardProps & {\n /** An identifier unique within the entire list hierarchy. */\n id: string;\n /** Indicates the type of item for determining drop acceptance by a target list. */\n type: string;\n /** The primary textual representation for the item or props for a linkable resource. */\n primary:\n | string\n | ({\n text: string;\n onClick: MouseEventHandler;\n href?: string;\n onPreview?: LinkProps['onPreview'];\n } & ForwardProps);\n /** An additional textual representation for the item e.g. metadata. */\n secondary?: string;\n /** Presents the item as being in an invalidate state. */\n status?: {\n type: 'error' | 'warning';\n message: string;\n };\n /** Whether or not the item can be reordered with drag. */\n draggable?: boolean;\n /** Selected state of the item. */\n selected?: boolean;\n /** Defines the props of the icon passed to the list item */\n icon?: OmitStrict<IconProps, 'size'>;\n /**\n * If the item is configurable pass a callback to render a button.\n * The item's id and an event argument provides access to the underlying HTMLButtonElement.\n */\n onConfigure?: ItemAction;\n /**\n * If the item can be removed form the list pass a callback to render a button.\n * The handler's event argument provides access to the underlying HTMLButtonElement.\n */\n onRemove?: ItemAction;\n} & (\n | {\n /** If the item can possess a nested list of items. */\n items: StandardDragDropListItemProps[];\n /** Type of items allowed to be dropped on the list. If not passed it will inherit accept from the parent list. */\n accept?: StandardDragDropListProps['accept'];\n /** Optionally render an add button for parent item types. */\n onAddTo?: ItemAction;\n }\n | {\n items?: undefined;\n accept?: never;\n onAddTo?: never;\n }\n );\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-dnd",
3
- "version": "9.0.0-build.24.2",
3
+ "version": "9.0.0-build.24.4",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "author": "Pegasystems",
6
6
  "sideEffects": false,
@@ -14,7 +14,7 @@
14
14
  "build": "tsc -b tsconfig.build.json"
15
15
  },
16
16
  "dependencies": {
17
- "@pega/cosmos-react-core": "9.0.0-build.24.2",
17
+ "@pega/cosmos-react-core": "9.0.0-build.24.4",
18
18
  "@types/react": "^17.0.62 || ^18.3.3",
19
19
  "@types/react-dom": "^17.0.20 || ^18.3.0",
20
20
  "dnd-core": "14.0.1",