@pega/cosmos-react-build 9.0.0-build.6.9 → 9.0.0-build.7.1

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.
Files changed (63) hide show
  1. package/lib/components/AuthoringPanel/AuthoringPanel.styles.d.ts.map +1 -1
  2. package/lib/components/AuthoringPanel/AuthoringPanel.styles.js +6 -1
  3. package/lib/components/AuthoringPanel/AuthoringPanel.styles.js.map +1 -1
  4. package/lib/components/DynamicInput/BooleanControl.d.ts +1 -1
  5. package/lib/components/DynamicInput/BooleanControl.d.ts.map +1 -1
  6. package/lib/components/DynamicInput/BooleanControl.js.map +1 -1
  7. package/lib/components/DynamicInput/ConstantControl.d.ts +2 -2
  8. package/lib/components/DynamicInput/ConstantControl.d.ts.map +1 -1
  9. package/lib/components/DynamicInput/ConstantControl.js.map +1 -1
  10. package/lib/components/DynamicInput/DynamicInput.styles.d.ts +0 -1
  11. package/lib/components/DynamicInput/DynamicInput.styles.d.ts.map +1 -1
  12. package/lib/components/DynamicInput/DynamicInput.styles.js +49 -43
  13. package/lib/components/DynamicInput/DynamicInput.styles.js.map +1 -1
  14. package/lib/components/Expression/Expression.d.ts +1 -1
  15. package/lib/components/Expression/Expression.d.ts.map +1 -1
  16. package/lib/components/Expression/Expression.js +8 -7
  17. package/lib/components/Expression/Expression.js.map +1 -1
  18. package/lib/components/Expression/Expression.styles.d.ts +5 -1
  19. package/lib/components/Expression/Expression.styles.d.ts.map +1 -1
  20. package/lib/components/Expression/Expression.styles.js +15 -3
  21. package/lib/components/Expression/Expression.styles.js.map +1 -1
  22. package/lib/components/Expression/Expression.test-ids.d.ts +1 -1
  23. package/lib/components/Expression/Expression.test-ids.d.ts.map +1 -1
  24. package/lib/components/Expression/Expression.test-ids.js +2 -1
  25. package/lib/components/Expression/Expression.test-ids.js.map +1 -1
  26. package/lib/components/Expression/ExpressionBuilderModal.d.ts +6 -0
  27. package/lib/components/Expression/ExpressionBuilderModal.d.ts.map +1 -0
  28. package/lib/components/Expression/ExpressionBuilderModal.js +53 -0
  29. package/lib/components/Expression/ExpressionBuilderModal.js.map +1 -0
  30. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.d.ts.map +1 -1
  31. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js +2 -2
  32. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js.map +1 -1
  33. package/lib/components/ExpressionBuilder/ExpressionBuilder.d.ts.map +1 -1
  34. package/lib/components/ExpressionBuilder/ExpressionBuilder.js +2 -2
  35. package/lib/components/ExpressionBuilder/ExpressionBuilder.js.map +1 -1
  36. package/lib/components/LifeCycle/Category.d.ts.map +1 -1
  37. package/lib/components/LifeCycle/Category.js +4 -11
  38. package/lib/components/LifeCycle/Category.js.map +1 -1
  39. package/lib/components/LifeCycle/LifeCycle.types.d.ts +4 -0
  40. package/lib/components/LifeCycle/LifeCycle.types.d.ts.map +1 -1
  41. package/lib/components/LifeCycle/LifeCycle.types.js.map +1 -1
  42. package/lib/components/LifeCycle/LifeCycleDragDropList.d.ts.map +1 -1
  43. package/lib/components/LifeCycle/LifeCycleDragDropList.js +8 -2
  44. package/lib/components/LifeCycle/LifeCycleDragDropList.js.map +1 -1
  45. package/lib/components/LifeCycle/TaskGroup.d.ts +2 -2
  46. package/lib/components/LifeCycle/TaskGroup.d.ts.map +1 -1
  47. package/lib/components/LifeCycle/TaskGroup.js +6 -11
  48. package/lib/components/LifeCycle/TaskGroup.js.map +1 -1
  49. package/lib/components/LifeCycle/utils.d.ts +2 -1
  50. package/lib/components/LifeCycle/utils.d.ts.map +1 -1
  51. package/lib/components/LifeCycle/utils.js +80 -41
  52. package/lib/components/LifeCycle/utils.js.map +1 -1
  53. package/lib/components/ObjectSelect/useCreateModal.d.ts +6 -2
  54. package/lib/components/ObjectSelect/useCreateModal.d.ts.map +1 -1
  55. package/lib/components/ObjectSelect/useCreateModal.js +7 -4
  56. package/lib/components/ObjectSelect/useCreateModal.js.map +1 -1
  57. package/lib/components/PageTemplates/PageTemplate.styles.d.ts.map +1 -1
  58. package/lib/components/PageTemplates/PageTemplate.styles.js +24 -8
  59. package/lib/components/PageTemplates/PageTemplate.styles.js.map +1 -1
  60. package/lib/components/PageTemplates/PageTemplates.d.ts.map +1 -1
  61. package/lib/components/PageTemplates/PageTemplates.js +2 -2
  62. package/lib/components/PageTemplates/PageTemplates.js.map +1 -1
  63. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"LifeCycleDragDropList.js","sourceRoot":"","sources":["../../../src/components/LifeCycle/LifeCycleDragDropList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useRef, useMemo, useContext, useLayoutEffect, useEffect } from 'react';\nimport type { ComponentType, ReactNode, RefObject } from 'react';\nimport type { DragSourceMonitor, DropTargetMonitor } from 'react-dnd';\n\nimport { useElement, useUID } from '@pega/cosmos-react-core';\nimport type {\n AsProp,\n BaseProps,\n ForwardProps,\n NoChildrenProp,\n OmitStrict,\n TestIdProp\n} from '@pega/cosmos-react-core';\nimport { Draggable, DragDropListContext, Droppable } from '@pega/cosmos-react-dnd';\nimport type { DraggableItem, DragDropListContextValue } from '@pega/cosmos-react-dnd';\n\nimport type {\n IndexData,\n LifeCycleDragDropEvent,\n LifeCycleDragItemType,\n LifeCycleProps\n} from './LifeCycle.types';\nimport type { StageComponentProps } from './Stage';\nimport type { StepComponentProps } from './Step';\nimport type { TaskComponentProps } from './Task';\nimport LifeCycleContext from './LifeCycleContext';\nimport { getListLocation } from './utils';\n\ninterface LifeCycleDragDropListProps<T extends object = object>\n extends AsProp,\n BaseProps,\n NoChildrenProp,\n TestIdProp,\n Pick<LifeCycleProps, 'onDragDrop'> {\n /** Unique identifier for the list */\n id?: string;\n /** The type of item within the list. */\n type: LifeCycleDragItemType;\n /** A set of indices that identify the list's location within the LifeCycle. */\n listLocation: IndexData;\n /** Array of data objects used for the list. */\n items: DraggableItem<T>[];\n /** User defined function that should return content for the draggable element. */\n itemRenderer: ComponentType<T>;\n /** A region for non-list item elements to be included in the droppable region. */\n additionalDropZone?: ReactNode;\n}\n\ninterface LifeCycleDragDropListItem<T extends object = object> extends DraggableItem<T> {\n /** Returns the dragged item to its original position. */\n returnToSource?: (item: DraggableItem<T>) => void;\n /** Removes the dragged item from its original position. */\n removeFromSource?: () => void;\n /** Triggers onDragDrop with data related to the new item position. */\n changeTarget?: (item: LifeCycleDragDropListItem<T>) => void;\n /** Data related to the item being dragged. */\n sourceData?: LifeCycleDragDropEvent['sourceData'];\n /** Data related to the target position of the dragged item. */\n targetData?: LifeCycleDragDropEvent['targetData'];\n /** The id of the list that the dragged item originated from. */\n sourceListId?: string;\n /** The id of the list that the item was dropped into. */\n targetListId?: string;\n /** Ref for the items in the droppable list. */\n targetItemsRef?: RefObject<LifeCycleDragDropListItem<T>[]>;\n}\n\nconst LifeCycleDragDropList = <T extends object = object>({\n testId,\n id: idProp,\n type,\n listLocation,\n items,\n itemRenderer: ItemRenderer,\n additionalDropZone,\n onDragDrop,\n as: Component = 'ul',\n ...restProps\n}: LifeCycleDragDropListProps<T> & ForwardProps) => {\n const { lifeCycleData, dragDropConfig, draggedItem, setDraggedItem } =\n useContext(LifeCycleContext);\n const [clonedItems, setClonedItems] = useState<LifeCycleDragDropListItem<T>[]>(items);\n const draggedItemRef = useRef<LifeCycleDragDropListItem<T> | null>(null);\n const draggedItemElRef = useRef<HTMLElement | null>(null);\n const itemHoveringRef = useRef(false);\n const itemRectsRef = useRef<DOMRect[] | null>(null);\n const [listEl, setListEl] = useElement<HTMLElement>();\n const uniqueId = useUID();\n const listId = idProp ?? uniqueId;\n\n const normalizedType = type.replace('alternate-', '') as LifeCycleDragDropEvent['type'];\n\n const getItemData = (\n item: LifeCycleDragDropListItem<T>,\n newIndex?: number\n ): LifeCycleDragDropEvent['sourceData'] => {\n if (item.type === 'stage' || item.type === 'alternate-stage') {\n const data = item.data as StageComponentProps;\n return { alternate: !!data.item.alternate, stage: newIndex ?? data.item.index };\n }\n if (item.type === 'step' || item.type === 'alternate-step') {\n const data = item.data as StepComponentProps;\n return {\n alternate: !!data.item.alternate,\n stage: data.stageItem.index,\n category: data.categoryItem.index,\n task: data.taskItem.index,\n subTask: data.taskItem.subIndex,\n step: newIndex ?? data.item.index\n };\n }\n\n if (item.type === 'task' || item.type === 'alternate-task') {\n const data = item.data as TaskComponentProps;\n\n return {\n alternate: !!data.stageItem.alternate,\n stage: data.stageItem.index,\n category: data.categoryItem.index,\n task: newIndex ?? data.item.index,\n subTask: data.item.subIndex\n };\n }\n\n return { alternate: false, stage: -1 };\n };\n\n const getItemRects = (): DOMRect[] | null => {\n if (!listEl || listEl.children.length === 0) return null;\n return [...listEl.children].map(itemEl => {\n return itemEl.getBoundingClientRect();\n });\n };\n\n useLayoutEffect(() => {\n if (\n !dragDropConfig.loading &&\n (!draggedItem?.navigatingWithKeyboard ||\n (draggedItem?.navigatingWithKeyboard && !draggedItemRef.current))\n ) {\n setClonedItems(items);\n }\n }, [items]);\n\n const internalItemsRef = useRef(clonedItems);\n internalItemsRef.current = clonedItems;\n\n const triggerOnChange = (\n sourceData?: LifeCycleDragDropEvent['sourceData'],\n targetData?: LifeCycleDragDropEvent['targetData']\n ) => {\n if (\n !onDragDrop ||\n !sourceData ||\n !targetData ||\n JSON.stringify(sourceData) === JSON.stringify(targetData)\n )\n return;\n onDragDrop({\n type: normalizedType,\n sourceData,\n targetData\n });\n };\n\n const getInsertIndex = (\n item: DraggableItem<T>,\n monitor: DropTargetMonitor | DragSourceMonitor\n ): number => {\n itemRectsRef.current = getItemRects();\n const { current: itemRects } = itemRectsRef;\n let insertIndex = -1;\n const prevIndex = clonedItems.findIndex(({ id }) => id === item.id);\n\n const clientXY = monitor.getClientOffset();\n if (!itemRects || !clientXY) return insertIndex;\n\n // If dragging stages, position must be calculated on the x-axis rather than the y-axis\n const dragPreviewRectAnchor = normalizedType === 'stage' ? clientXY.x : clientXY.y;\n const orientation = normalizedType === 'stage' ? 'horizontal' : 'vertical';\n\n const calculateMiddle = ({ left, right, top, bottom }: DOMRect): number => {\n if (orientation === 'horizontal') {\n return left + (right - left) / 2;\n }\n return top + (bottom - top) / 2;\n };\n\n const atHead = dragPreviewRectAnchor < calculateMiddle(itemRects[0]);\n const atTail = dragPreviewRectAnchor >= calculateMiddle(itemRects[itemRects.length - 1]);\n\n if (atHead) {\n insertIndex = 0;\n } else if (atTail) {\n insertIndex = prevIndex === itemRects.length - 1 ? prevIndex : itemRects.length;\n } else {\n itemRects.some((rect, i, rects) => {\n if (i === rects.length - 1) {\n if (prevIndex === i) insertIndex = i;\n return true;\n }\n const afterCurrent = dragPreviewRectAnchor >= calculateMiddle(rect);\n const beforeNext = dragPreviewRectAnchor < calculateMiddle(rects[i + 1]);\n\n if (afterCurrent && beforeNext) {\n if (prevIndex !== -1 && i >= prevIndex) insertIndex = i;\n else insertIndex = i + 1;\n return true;\n }\n return false;\n });\n }\n\n return insertIndex;\n };\n\n // Re-arrange items within the applicable lists in relation to the position of the item being dragged\n const positionItems = (item: LifeCycleDragDropListItem<T>, monitor: DropTargetMonitor): void => {\n if (!monitor.canDrop() || !monitor.isOver({ shallow: true })) return;\n\n const prevIndex = clonedItems.findIndex(({ id }) => id === item.id);\n\n const insertIndex = getInsertIndex(item, monitor);\n const targetData = { ...listLocation };\n\n if (normalizedType === 'task' && listLocation.subTask === undefined) {\n targetData.task = listLocation.task;\n targetData.subTask = insertIndex;\n } else {\n targetData[normalizedType] = insertIndex;\n }\n\n item.targetData = targetData;\n item.targetListId = listId;\n\n item.changeTarget = i => triggerOnChange(i.sourceData, i.targetData);\n item.targetItemsRef = internalItemsRef;\n\n let newItems: DraggableItem<T>[];\n\n if (prevIndex !== -1) {\n if (insertIndex === prevIndex) return;\n\n newItems = clonedItems.filter(({ id }) => id !== item.id);\n newItems.splice(insertIndex, 0, item);\n\n setClonedItems(newItems);\n } else {\n newItems = [...clonedItems];\n newItems.splice(insertIndex, 0, item);\n\n setClonedItems(newItems);\n }\n };\n\n // Setup data to manage the item being dragged\n const onBegin =\n (itemId: DraggableItem<T>['id']) =>\n (): OmitStrict<LifeCycleDragDropListItem<T>, keyof DraggableItem<T>> => {\n setDraggedItem({ type: normalizedType, id: itemId, navigatingWithKeyboard: false });\n\n const initialIndex = clonedItems.findIndex(({ id }) => id === itemId);\n const itemToDrag = clonedItems[initialIndex];\n draggedItemRef.current = { ...itemToDrag, sourceListId: listId };\n if (listEl) {\n draggedItemElRef.current = listEl.querySelector(`[id=\"${itemToDrag.id}\"]`);\n if (draggedItemElRef.current) {\n draggedItemElRef.current.setAttribute('style', 'opacity: 0.5');\n }\n }\n const itemData = getItemData(itemToDrag);\n\n return {\n returnToSource: (item: DraggableItem<T>) => {\n setClonedItems(currentItems => {\n const newItems = currentItems.filter(({ id }) => id !== itemId);\n newItems.splice(initialIndex, 0, item);\n return newItems;\n });\n },\n removeFromSource: () => {\n setClonedItems(currentItems => currentItems.filter(({ id }) => id !== itemId));\n },\n changeTarget: i => triggerOnChange(i.sourceData, i.targetData),\n targetItemsRef: internalItemsRef,\n sourceData: itemData,\n targetData: itemData,\n sourceListId: listId,\n targetListId: listId\n };\n };\n\n // Execute necessary actions for when the item is dropped\n const onEnd = (item: LifeCycleDragDropListItem<T> | undefined, monitor: DragSourceMonitor) => {\n if (!item) return;\n\n if (monitor.didDrop()) {\n if (JSON.stringify(item.sourceData) === JSON.stringify(item.targetData)) {\n setDraggedItem(undefined);\n } else {\n item.changeTarget?.(item);\n if (item.sourceListId !== item.targetListId) {\n item.removeFromSource?.();\n }\n }\n } else {\n setDraggedItem(undefined);\n item.returnToSource?.(item);\n }\n draggedItemRef.current = null;\n if (draggedItemElRef.current) {\n draggedItemElRef.current.setAttribute('style', 'opacity: unset');\n draggedItemElRef.current = null;\n }\n };\n\n const contextValue: DragDropListContextValue = useMemo(\n () => ({\n orientation: normalizedType === 'stage' ? 'horizontal' : 'vertical',\n keyboardDragStart: itemId => {\n const index = clonedItems.findIndex(({ id }) => id === itemId);\n if (index === -1) return;\n\n const itemToDrag = clonedItems[index];\n\n if (itemToDrag) {\n setDraggedItem({ type: normalizedType, id: itemId, navigatingWithKeyboard: true });\n const itemData = getItemData(itemToDrag);\n\n itemToDrag.returnToSource = (item: DraggableItem<T>) => {\n setClonedItems(currentItems => {\n const newItems = currentItems.filter(({ id }) => id !== itemId);\n newItems.splice(index, 0, item);\n return newItems;\n });\n };\n itemToDrag.sourceData = itemData;\n itemToDrag.targetData = itemData;\n itemToDrag.sourceListId = listId;\n itemToDrag.targetListId = listId;\n\n draggedItemRef.current = itemToDrag;\n setClonedItems(currentItems => {\n const newItems = currentItems.filter(({ id }) => id !== itemId);\n newItems.splice(index, 0, itemToDrag);\n return newItems;\n });\n }\n },\n keyboardDragEnd: itemId => {\n const item = clonedItems.find(({ id }) => id === itemId);\n if (!item) return;\n\n draggedItemRef.current = null;\n triggerOnChange(item.sourceData, item.targetData);\n },\n keyboardDragCancel: itemId => {\n const index = clonedItems.findIndex(({ id }) => id === itemId);\n if (index === -1) return;\n\n setDraggedItem(undefined);\n draggedItemRef.current = null;\n clonedItems[index].returnToSource?.(clonedItems[index]);\n },\n keyboardReorderItem: (itemId, direction) => {\n const index = clonedItems.findIndex(({ id }) => id === itemId);\n if (index === -1) return;\n\n const itemData = getItemData(clonedItems[index]);\n\n const newItems = [...clonedItems];\n\n if (direction === 'prev' && index !== 0) {\n const item = newItems.splice(index, 1)[0];\n newItems.splice(index - 1, 0, {\n ...item,\n targetData: { ...itemData, [normalizedType]: index - 1 }\n });\n setClonedItems(newItems);\n } else if (direction === 'next' && index !== clonedItems.length - 1) {\n const item = newItems.splice(index, 1)[0];\n newItems.splice(index + 1, 0, {\n ...item,\n targetData: { ...itemData, [normalizedType]: index + 1 }\n });\n setClonedItems(newItems);\n }\n },\n keyboardMoveLists: (itemId, direction) => {\n const item = clonedItems.find(({ id }) => id === itemId);\n if (!item) return;\n\n draggedItemRef.current = null;\n setDraggedItem({ type: normalizedType, id: itemId, navigatingWithKeyboard: false });\n const itemData = getItemData(item);\n\n const targetListLocation = getListLocation(\n listLocation,\n normalizedType,\n lifeCycleData,\n direction\n );\n\n if (targetListLocation) {\n triggerOnChange(itemData, targetListLocation);\n }\n }\n }),\n [clonedItems, triggerOnChange, normalizedType, listLocation, lifeCycleData]\n );\n\n return (\n <DragDropListContext.Provider value={contextValue}>\n <Droppable\n accept={dragDropConfig[type].accept}\n onHover={positionItems}\n onDrop={positionItems}\n >\n {({ dropRef, collected: { isOver } }) => {\n // Reset list items to original state if the item is no longer hovering over the list\n // The useEffect is necessary for setting state within a render function\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (!isOver && itemHoveringRef.current) {\n const sourceItem = clonedItems.find(i => i.id === draggedItemRef.current?.id);\n if (!sourceItem && !dragDropConfig.loading) {\n // If item dragged away from target list, reset the items in that list to their original state\n setClonedItems(items);\n }\n }\n itemHoveringRef.current = isOver;\n }, [isOver]);\n\n return (\n <Component\n ref={(el: HTMLElement) => {\n dropRef(el);\n setListEl(el);\n }}\n {...restProps}\n >\n {clonedItems.map(item => {\n return (\n <Draggable\n key={item.id}\n id={item.id}\n type={item.type}\n data={item.data}\n onBegin={onBegin(item.id)}\n onEnd={onEnd}\n >\n {({ dragRef, previewRef, collected }) => {\n return (\n <ItemRenderer\n testId={testId}\n id={item.id}\n type={item.type}\n {...item.data}\n dragRef={dragRef}\n previewRef={previewRef}\n {...collected}\n isDragging={!!item.sourceListId}\n />\n );\n }}\n </Draggable>\n );\n })}\n\n {additionalDropZone}\n </Component>\n );\n }}\n </Droppable>\n </DragDropListContext.Provider>\n );\n};\n\nexport default LifeCycleDragDropList;\n"]}
1
+ {"version":3,"file":"LifeCycleDragDropList.js","sourceRoot":"","sources":["../../../src/components/LifeCycle/LifeCycleDragDropList.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useRef, useMemo, useContext, useLayoutEffect, useEffect } from 'react';\nimport type { ComponentType, ReactNode, RefObject } from 'react';\nimport type { DragSourceMonitor, DropTargetMonitor } from 'react-dnd';\n\nimport { useElement, useUID } from '@pega/cosmos-react-core';\nimport type {\n AsProp,\n BaseProps,\n ForwardProps,\n NoChildrenProp,\n OmitStrict,\n TestIdProp\n} from '@pega/cosmos-react-core';\nimport { Draggable, DragDropListContext, Droppable } from '@pega/cosmos-react-dnd';\nimport type { DraggableItem, DragDropListContextValue } from '@pega/cosmos-react-dnd';\n\nimport type {\n IndexData,\n LifeCycleDragDropEvent,\n LifeCycleDragItemType,\n LifeCycleProps\n} from './LifeCycle.types';\nimport type { StageComponentProps } from './Stage';\nimport type { StepComponentProps } from './Step';\nimport type { TaskComponentProps } from './Task';\nimport LifeCycleContext from './LifeCycleContext';\nimport { getListLocation } from './utils';\n\ninterface LifeCycleDragDropListProps<T extends object = object>\n extends AsProp,\n BaseProps,\n NoChildrenProp,\n TestIdProp,\n Pick<LifeCycleProps, 'onDragDrop'> {\n /** Unique identifier for the list */\n id?: string;\n /** The type of item within the list. */\n type: LifeCycleDragItemType;\n /** A set of indices that identify the list's location within the LifeCycle. */\n listLocation: IndexData;\n /** Array of data objects used for the list. */\n items: DraggableItem<T>[];\n /** User defined function that should return content for the draggable element. */\n itemRenderer: ComponentType<T>;\n /** A region for non-list item elements to be included in the droppable region. */\n additionalDropZone?: ReactNode;\n}\n\ninterface LifeCycleDragDropListItem<T extends object = object> extends DraggableItem<T> {\n /** Returns the dragged item to its original position. */\n returnToSource?: (item: DraggableItem<T>) => void;\n /** Removes the dragged item from its original position. */\n removeFromSource?: () => void;\n /** Triggers onDragDrop with data related to the new item position. */\n changeTarget?: (item: LifeCycleDragDropListItem<T>) => void;\n /** Data related to the item being dragged. */\n sourceData?: LifeCycleDragDropEvent['sourceData'];\n /** Data related to the target position of the dragged item. */\n targetData?: LifeCycleDragDropEvent['targetData'];\n /** The id of the list that the dragged item originated from. */\n sourceListId?: string;\n /** The id of the list that the item was dropped into. */\n targetListId?: string;\n /** Ref for the items in the droppable list. */\n targetItemsRef?: RefObject<LifeCycleDragDropListItem<T>[]>;\n}\n\nconst LifeCycleDragDropList = <T extends object = object>({\n testId,\n id: idProp,\n type,\n listLocation,\n items,\n itemRenderer: ItemRenderer,\n additionalDropZone,\n onDragDrop,\n as: Component = 'ul',\n ...restProps\n}: LifeCycleDragDropListProps<T> & ForwardProps) => {\n const { lifeCycleData, dragDropConfig, draggedItem, setDraggedItem } =\n useContext(LifeCycleContext);\n const [clonedItems, setClonedItems] = useState<LifeCycleDragDropListItem<T>[]>(items);\n const draggedItemRef = useRef<LifeCycleDragDropListItem<T> | null>(null);\n const draggedItemElRef = useRef<HTMLElement | null>(null);\n const itemHoveringRef = useRef(false);\n const itemRectsRef = useRef<DOMRect[] | null>(null);\n const [listEl, setListEl] = useElement<HTMLElement>();\n const uniqueId = useUID();\n const listId = idProp ?? uniqueId;\n\n const normalizedType = type.replace('alternate-', '') as LifeCycleDragDropEvent['type'];\n\n const getItemData = (\n item: LifeCycleDragDropListItem<T>,\n newIndex?: number\n ): LifeCycleDragDropEvent['sourceData'] => {\n if (item.type === 'stage' || item.type === 'alternate-stage') {\n const data = item.data as StageComponentProps;\n return { alternate: !!data.item.alternate, stage: newIndex ?? data.item.index };\n }\n if (item.type === 'step' || item.type === 'alternate-step') {\n const data = item.data as StepComponentProps;\n return {\n alternate: !!data.item.alternate,\n stage: data.stageItem.index,\n category: data.categoryItem.index,\n task: data.taskItem.index,\n subTask: data.taskItem.subIndex,\n step: newIndex ?? data.item.index\n };\n }\n\n if (item.type === 'task' || item.type === 'alternate-task') {\n const data = item.data as TaskComponentProps;\n\n return {\n alternate: !!data.stageItem.alternate,\n stage: data.stageItem.index,\n category: data.categoryItem.index,\n task: newIndex ?? data.item.index,\n subTask: data.item.subIndex\n };\n }\n\n return { alternate: false, stage: -1 };\n };\n\n const getItemRects = (): DOMRect[] | null => {\n if (!listEl || listEl.children.length === 0) return null;\n return [...listEl.children].map(itemEl => {\n return itemEl.getBoundingClientRect();\n });\n };\n\n useLayoutEffect(() => {\n if (\n !dragDropConfig.loading &&\n (!draggedItem?.navigatingWithKeyboard ||\n (draggedItem?.navigatingWithKeyboard && !draggedItemRef.current))\n ) {\n setClonedItems(items);\n }\n }, [items]);\n\n const internalItemsRef = useRef(clonedItems);\n internalItemsRef.current = clonedItems;\n\n const triggerOnChange = (\n sourceData?: LifeCycleDragDropEvent['sourceData'],\n targetData?: LifeCycleDragDropEvent['targetData']\n ) => {\n if (\n !onDragDrop ||\n !sourceData ||\n !targetData ||\n JSON.stringify(sourceData) === JSON.stringify(targetData)\n )\n return;\n onDragDrop({\n type: normalizedType,\n sourceData,\n targetData\n });\n };\n\n const getInsertIndex = (\n item: DraggableItem<T>,\n monitor: DropTargetMonitor | DragSourceMonitor\n ): number => {\n itemRectsRef.current = getItemRects();\n const { current: itemRects } = itemRectsRef;\n let insertIndex = -1;\n const prevIndex = clonedItems.findIndex(({ id }) => id === item.id);\n\n const clientXY = monitor.getClientOffset();\n if (!itemRects || !clientXY) return insertIndex;\n\n // If dragging stages, position must be calculated on the x-axis rather than the y-axis\n const dragPreviewRectAnchor = normalizedType === 'stage' ? clientXY.x : clientXY.y;\n const orientation = normalizedType === 'stage' ? 'horizontal' : 'vertical';\n\n const calculateMiddle = ({ left, right, top, bottom }: DOMRect): number => {\n if (orientation === 'horizontal') {\n return left + (right - left) / 2;\n }\n return top + (bottom - top) / 2;\n };\n\n const atHead = dragPreviewRectAnchor < calculateMiddle(itemRects[0]);\n const atTail = dragPreviewRectAnchor >= calculateMiddle(itemRects[itemRects.length - 1]);\n\n if (atHead) {\n insertIndex = 0;\n } else if (atTail) {\n insertIndex = prevIndex === itemRects.length - 1 ? prevIndex : itemRects.length;\n } else {\n itemRects.some((rect, i, rects) => {\n if (i === rects.length - 1) {\n if (prevIndex === i) insertIndex = i;\n return true;\n }\n const afterCurrent = dragPreviewRectAnchor >= calculateMiddle(rect);\n const beforeNext = dragPreviewRectAnchor < calculateMiddle(rects[i + 1]);\n\n if (afterCurrent && beforeNext) {\n if (prevIndex !== -1 && i >= prevIndex) insertIndex = i;\n else insertIndex = i + 1;\n return true;\n }\n return false;\n });\n }\n\n return insertIndex;\n };\n\n // Re-arrange items within the applicable lists in relation to the position of the item being dragged\n const positionItems = (item: LifeCycleDragDropListItem<T>, monitor: DropTargetMonitor): void => {\n if (!monitor.canDrop() || !monitor.isOver({ shallow: true })) return;\n\n const prevIndex = clonedItems.findIndex(({ id }) => id === item.id);\n\n const insertIndex = getInsertIndex(item, monitor);\n const targetData = { ...listLocation };\n\n if (normalizedType === 'task' && listLocation.subTask === undefined) {\n targetData.task = listLocation.task;\n targetData.subTask = insertIndex;\n } else {\n targetData[normalizedType] = insertIndex;\n }\n\n item.targetData = targetData;\n item.targetListId = listId;\n\n item.changeTarget = i => triggerOnChange(i.sourceData, i.targetData);\n item.targetItemsRef = internalItemsRef;\n\n let newItems: DraggableItem<T>[];\n\n if (prevIndex !== -1) {\n if (insertIndex === prevIndex) return;\n\n newItems = clonedItems.filter(({ id }) => id !== item.id);\n newItems.splice(insertIndex, 0, item);\n\n setClonedItems(newItems);\n } else {\n newItems = [...clonedItems];\n newItems.splice(insertIndex, 0, item);\n\n setClonedItems(newItems);\n }\n };\n\n // Setup data to manage the item being dragged\n const onBegin =\n (itemId: DraggableItem<T>['id']) =>\n (): OmitStrict<LifeCycleDragDropListItem<T>, keyof DraggableItem<T>> => {\n setDraggedItem({ type: normalizedType, id: itemId, navigatingWithKeyboard: false });\n\n const initialIndex = clonedItems.findIndex(({ id }) => id === itemId);\n const itemToDrag = clonedItems[initialIndex];\n draggedItemRef.current = { ...itemToDrag, sourceListId: listId };\n if (listEl) {\n draggedItemElRef.current = listEl.querySelector(`[id=\"${itemToDrag.id}\"]`);\n if (draggedItemElRef.current) {\n draggedItemElRef.current.setAttribute('style', 'opacity: 0.5');\n }\n }\n const itemData = getItemData(itemToDrag);\n\n return {\n returnToSource: (item: DraggableItem<T>) => {\n setClonedItems(currentItems => {\n const newItems = currentItems.filter(({ id }) => id !== itemId);\n newItems.splice(initialIndex, 0, item);\n return newItems;\n });\n },\n removeFromSource: () => {\n setClonedItems(currentItems => currentItems.filter(({ id }) => id !== itemId));\n },\n changeTarget: i => triggerOnChange(i.sourceData, i.targetData),\n targetItemsRef: internalItemsRef,\n sourceData: itemData,\n targetData: itemData,\n sourceListId: listId,\n targetListId: listId\n };\n };\n\n // Execute necessary actions for when the item is dropped\n const onEnd = (item: LifeCycleDragDropListItem<T> | undefined, monitor: DragSourceMonitor) => {\n if (!item) return;\n\n if (monitor.didDrop()) {\n if (JSON.stringify(item.sourceData) === JSON.stringify(item.targetData)) {\n setDraggedItem(undefined);\n } else {\n item.changeTarget?.(item);\n if (item.sourceListId !== item.targetListId) {\n item.removeFromSource?.();\n }\n }\n } else {\n setDraggedItem(undefined);\n item.returnToSource?.(item);\n }\n draggedItemRef.current = null;\n if (draggedItemElRef.current) {\n draggedItemElRef.current.setAttribute('style', 'opacity: unset');\n draggedItemElRef.current = null;\n }\n };\n\n const contextValue: DragDropListContextValue = useMemo(\n () => ({\n orientation: normalizedType === 'stage' ? 'horizontal' : 'vertical',\n keyboardDragStart: itemId => {\n const index = clonedItems.findIndex(({ id }) => id === itemId);\n if (index === -1) return;\n\n const itemToDrag = clonedItems[index];\n\n if (itemToDrag) {\n setDraggedItem({ type: normalizedType, id: itemId, navigatingWithKeyboard: true });\n const itemData = getItemData(itemToDrag);\n\n itemToDrag.returnToSource = (item: DraggableItem<T>) => {\n setClonedItems(currentItems => {\n const newItems = currentItems.filter(({ id }) => id !== itemId);\n newItems.splice(index, 0, item);\n return newItems;\n });\n };\n itemToDrag.sourceData = itemData;\n itemToDrag.targetData = itemData;\n itemToDrag.sourceListId = listId;\n itemToDrag.targetListId = listId;\n\n draggedItemRef.current = itemToDrag;\n setClonedItems(currentItems => {\n const newItems = currentItems.filter(({ id }) => id !== itemId);\n newItems.splice(index, 0, itemToDrag);\n return newItems;\n });\n }\n },\n keyboardDragEnd: itemId => {\n const item = clonedItems.find(({ id }) => id === itemId);\n if (!item) return;\n\n draggedItemRef.current = null;\n triggerOnChange(item.sourceData, item.targetData);\n },\n keyboardDragCancel: itemId => {\n const index = clonedItems.findIndex(({ id }) => id === itemId);\n if (index === -1) return;\n\n setDraggedItem(undefined);\n draggedItemRef.current = null;\n clonedItems[index].returnToSource?.(clonedItems[index]);\n },\n keyboardReorderItem: (itemId, direction) => {\n const index = clonedItems.findIndex(({ id }) => id === itemId);\n if (index === -1) return;\n\n const itemData = getItemData(clonedItems[index]);\n\n const newItems = [...clonedItems];\n\n if (direction === 'prev' && index !== 0) {\n const item = newItems.splice(index, 1)[0];\n newItems.splice(index - 1, 0, {\n ...item,\n targetData: {\n ...itemData,\n [normalizedType === 'task' ? 'subTask' : normalizedType]: index - 1\n }\n });\n setClonedItems(newItems);\n } else if (direction === 'next' && index !== clonedItems.length - 1) {\n const item = newItems.splice(index, 1)[0];\n newItems.splice(index + 1, 0, {\n ...item,\n targetData: {\n ...itemData,\n [normalizedType === 'task' ? 'subTask' : normalizedType]: index + 1\n }\n });\n setClonedItems(newItems);\n }\n },\n keyboardMoveLists: (itemId, direction) => {\n const item = clonedItems.find(({ id }) => id === itemId);\n if (!item) return;\n\n draggedItemRef.current = null;\n setDraggedItem({ type: normalizedType, id: itemId, navigatingWithKeyboard: false });\n const itemData = getItemData(item);\n\n const targetListLocation = getListLocation(\n listLocation,\n normalizedType,\n lifeCycleData,\n direction\n );\n\n if (targetListLocation) {\n triggerOnChange(itemData, targetListLocation);\n }\n }\n }),\n [clonedItems, triggerOnChange, normalizedType, listLocation, lifeCycleData]\n );\n\n return (\n <DragDropListContext.Provider value={contextValue}>\n <Droppable\n accept={dragDropConfig[type].accept}\n onHover={positionItems}\n onDrop={positionItems}\n >\n {({ dropRef, collected: { isOver } }) => {\n // Reset list items to original state if the item is no longer hovering over the list\n // The useEffect is necessary for setting state within a render function\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (!isOver && itemHoveringRef.current) {\n const sourceItem = clonedItems.find(i => i.id === draggedItemRef.current?.id);\n if (!sourceItem && !dragDropConfig.loading) {\n // If item dragged away from target list, reset the items in that list to their original state\n setClonedItems(items);\n }\n }\n itemHoveringRef.current = isOver;\n }, [isOver]);\n\n return (\n <Component\n ref={(el: HTMLElement) => {\n dropRef(el);\n setListEl(el);\n }}\n {...restProps}\n >\n {clonedItems.map(item => {\n return (\n <Draggable\n key={item.id}\n id={item.id}\n type={item.type}\n data={item.data}\n onBegin={onBegin(item.id)}\n onEnd={onEnd}\n >\n {({ dragRef, previewRef, collected }) => {\n return (\n <ItemRenderer\n testId={testId}\n id={item.id}\n type={item.type}\n {...item.data}\n dragRef={dragRef}\n previewRef={previewRef}\n {...collected}\n isDragging={!!item.sourceListId}\n />\n );\n }}\n </Draggable>\n );\n })}\n\n {additionalDropZone}\n </Component>\n );\n }}\n </Droppable>\n </DragDropListContext.Provider>\n );\n};\n\nexport default LifeCycleDragDropList;\n"]}
@@ -4,8 +4,8 @@ interface CategoryLabelProp {
4
4
  label: string | undefined;
5
5
  }
6
6
  export interface TaskGroupProps extends BaseProps, TaskProps {
7
- /** A single task item or array of task items to be rendered in parallel */
8
- taskItem: TaskItemProps | TaskItemProps[];
7
+ /** An array of task items to be rendered */
8
+ taskItem: TaskItemProps[];
9
9
  /** The index position of this task group within its parent category */
10
10
  index: number;
11
11
  /** The parent stage data that contains this task group */
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGroup.d.ts","sourceRoot":"","sources":["../../../src/components/LifeCycle/TaskGroup.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAQ3B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS,EAAE,SAAS;IAC1D,2EAA2E;IAC3E,QAAQ,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IAC1C,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,SAAS,EAAE,cAAc,CAAC;IAC1B,uEAAuE;IACvE,YAAY,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACpD,4EAA4E;IAC5E,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,oNAcxB,CAAC;AAIH,QAAA,MAAM,SAAS,GAAI,4EAQhB,cAAc,4CAsIhB,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"TaskGroup.d.ts","sourceRoot":"","sources":["../../../src/components/LifeCycle/TaskGroup.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAQ3B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS,EAAE,SAAS;IAC1D,4CAA4C;IAC5C,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,SAAS,EAAE,cAAc,CAAC;IAC1B,uEAAuE;IACvE,YAAY,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IACpD,4EAA4E;IAC5E,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,oNAcxB,CAAC;AAIH,QAAA,MAAM,SAAS,GAAI,4EAQhB,cAAc,4CA8HhB,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -27,17 +27,13 @@ StyledAddTask.defaultProps = defaultThemeProp;
27
27
  const TaskGroup = ({ taskItem, index, stageItem, categoryItem, task, parallel, ...restProps }) => {
28
28
  const t = useI18n();
29
29
  const { readOnly, dragEnabled, dragDropConfig, onDragDrop } = useContext(LifeCycleContext);
30
- const taskItemIsArray = Array.isArray(taskItem);
31
- const isEmptyCategory = !taskItem || (taskItemIsArray && taskItem.length === 0);
30
+ const isEmptyCategory = taskItem.length === 0;
32
31
  const isAlternate = !!stageItem.alternate;
33
32
  const categoryTestID = generateDynamicTestId([stageItem.label, categoryItem?.label]);
34
33
  const taskTestIds = useTestIds(categoryTestID, getTaskTestIds);
35
34
  const taskType = isAlternate ? 'alternate-task' : 'task';
36
35
  const showDragHandle = dragEnabled && dragDropConfig?.[taskType].enabled;
37
- let shouldShowAddTaskButton = true;
38
- if (task?.addTask?.showOnce && categoryItem?.tasks?.length !== 0) {
39
- shouldShowAddTaskButton = false;
40
- }
36
+ const shouldShowAddTaskButton = !(task?.addTask?.showOnce && categoryItem?.tasks?.length !== 0);
41
37
  const onAddTaskClick = (e) => {
42
38
  task?.addTask?.onAddTask?.({
43
39
  category: categoryItem,
@@ -75,21 +71,20 @@ const TaskGroup = ({ taskItem, index, stageItem, categoryItem, task, parallel, .
75
71
  subTask: undefined
76
72
  }, items: [], itemRenderer: Task, onDragDrop: onDragDrop, additionalDropZone: addTaskItem, as: StyledList }));
77
73
  }
78
- const tasks = taskItemIsArray ? taskItem : [taskItem];
79
74
  if (!showDragHandle) {
80
- return (_jsxs(_Fragment, { children: [parallelTitle, _jsxs(StyledList, { children: [tasks.map((item, subIndex) => (_jsx(Task, { ...createTaskData(item, taskItemIsArray ? subIndex : undefined) }, item.id))), addTaskItem] })] }));
75
+ return (_jsxs(_Fragment, { children: [parallelTitle, _jsxs(StyledList, { children: [taskItem.map((item, subIndex) => (_jsx(Task, { ...createTaskData(item, subIndex) }, item.id))), addTaskItem] })] }));
81
76
  }
82
77
  const listLocation = {
83
78
  alternate: isAlternate,
84
79
  stage: stageItem.index,
85
80
  category: categoryItem.index,
86
81
  task: index,
87
- ...(taskItemIsArray && { subTask: undefined })
82
+ subTask: undefined
88
83
  };
89
- const items = tasks.map((item, subIndex) => ({
84
+ const items = taskItem.map((item, subIndex) => ({
90
85
  id: item.id,
91
86
  type: taskType,
92
- data: createTaskData(item, taskItemIsArray ? subIndex : undefined)
87
+ data: createTaskData(item, subIndex)
93
88
  }));
94
89
  return (_jsxs(_Fragment, { children: [parallelTitle, _jsx(LifeCycleDragDropList, { type: taskType, listLocation: listLocation, items: items, itemRenderer: Task, onDragDrop: onDragDrop, additionalDropZone: addTaskItem, as: StyledList })] }));
95
90
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGroup.js","sourceRoot":"","sources":["../../../src/components/LifeCycle/TaskGroup.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, type MouseEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Flex, useI18n, Button, Icon, defaultThemeProp, useTestIds } from '@pega/cosmos-react-core';\nimport type { BaseProps } from '@pega/cosmos-react-core';\n\nimport type {\n TaskItemProps,\n StageItemProps,\n TaskProps,\n CategoryItemProps\n} from './LifeCycle.types';\nimport Task from './Task';\nimport { StyledList, StyledParallelTitle } from './Category';\nimport LifeCycleContext from './LifeCycleContext';\nimport LifeCycleDragDropList from './LifeCycleDragDropList';\nimport { generateDynamicTestId } from './utils';\nimport { getTaskTestIds } from './LifeCycle.test-ids';\n\ninterface CategoryLabelProp {\n label: string | undefined;\n}\n\nexport interface TaskGroupProps extends BaseProps, TaskProps {\n /** A single task item or array of task items to be rendered in parallel */\n taskItem: TaskItemProps | TaskItemProps[];\n /** The index position of this task group within its parent category */\n index: number;\n /** The parent stage data that contains this task group */\n stageItem: StageItemProps;\n /** The parent category data with optional label for this task group */\n categoryItem: CategoryItemProps & CategoryLabelProp;\n /** Task configuration and behavior props, undefined for empty categories */\n task: TaskProps | undefined;\n /** Whether this task group represents parallel tasks (array of tasks) */\n parallel: boolean;\n}\n\nexport const StyledAddTask = styled(Button)(({ theme }) => {\n return css`\n margin-block-end: calc(${theme.base.spacing});\n background: ${theme.base.palette['secondary-background']};\n border-radius: calc(0.5 * ${theme.base['border-radius']});\n width: 100%;\n justify-content: flex-start;\n padding-inline: calc(1.75 * ${theme.base.spacing});\n padding-block: calc(1 * ${theme.base.spacing});\n\n & > :last-child {\n margin-inline: calc(2 * ${theme.base.spacing});\n }\n `;\n});\n\nStyledAddTask.defaultProps = defaultThemeProp;\n\nconst TaskGroup = ({\n taskItem,\n index,\n stageItem,\n categoryItem,\n task,\n parallel,\n ...restProps\n}: TaskGroupProps) => {\n const t = useI18n();\n const { readOnly, dragEnabled, dragDropConfig, onDragDrop } = useContext(LifeCycleContext);\n const taskItemIsArray = Array.isArray(taskItem);\n const isEmptyCategory = !taskItem || (taskItemIsArray && taskItem.length === 0);\n const isAlternate = !!stageItem.alternate;\n const categoryTestID = generateDynamicTestId([stageItem.label, categoryItem?.label]);\n const taskTestIds = useTestIds(categoryTestID, getTaskTestIds);\n const taskType = isAlternate ? 'alternate-task' : 'task';\n const showDragHandle = dragEnabled && dragDropConfig?.[taskType].enabled;\n\n let shouldShowAddTaskButton = true;\n\n if (task?.addTask?.showOnce && categoryItem?.tasks?.length !== 0) {\n shouldShowAddTaskButton = false;\n }\n\n const onAddTaskClick = (e: MouseEvent<HTMLButtonElement>) => {\n task?.addTask?.onAddTask?.(\n {\n category: categoryItem,\n stage: stageItem\n },\n e\n );\n };\n\n const addTaskItem =\n (shouldShowAddTaskButton || isEmptyCategory) && !readOnly && !!task?.addTask ? (\n <li>\n <StyledAddTask\n data-testid={taskTestIds.addButton}\n variant='simple'\n label={t('add_noun', [task.addTask.title])}\n icon\n onClick={onAddTaskClick}\n >\n <Icon name='plus' />\n <span>{task.addTask.title}</span>\n </StyledAddTask>\n </li>\n ) : null;\n\n const createTaskData = (item: TaskItemProps, subIndex?: number) => ({\n ...task,\n ...restProps,\n value: item.label,\n item: {\n ...item,\n index,\n ...(subIndex !== undefined && { subIndex }),\n alternate: isAlternate\n },\n id: item.id,\n visual: item.visual,\n stageItem,\n dragEnabled: showDragHandle,\n categoryItem: {\n ...categoryItem\n },\n error: item.error,\n onAddStep: task?.onAddStep\n });\n\n const parallelTitle = parallel ? (\n <Flex as={StyledParallelTitle} container={{ justify: 'center' }}>\n <span>{t('parallel')}</span>\n </Flex>\n ) : null;\n\n if (isEmptyCategory && showDragHandle) {\n return (\n <LifeCycleDragDropList\n type={taskType}\n listLocation={{\n alternate: isAlternate,\n stage: stageItem.index,\n category: categoryItem.index,\n task: 0,\n subTask: undefined\n }}\n items={[]}\n itemRenderer={Task}\n onDragDrop={onDragDrop}\n additionalDropZone={addTaskItem}\n as={StyledList}\n />\n );\n }\n\n const tasks = taskItemIsArray ? taskItem : [taskItem];\n\n if (!showDragHandle) {\n return (\n <>\n {parallelTitle}\n <StyledList>\n {tasks.map((item, subIndex) => (\n <Task key={item.id} {...createTaskData(item, taskItemIsArray ? subIndex : undefined)} />\n ))}\n {addTaskItem}\n </StyledList>\n </>\n );\n }\n\n const listLocation = {\n alternate: isAlternate,\n stage: stageItem.index,\n category: categoryItem.index,\n task: index,\n ...(taskItemIsArray && { subTask: undefined })\n };\n\n const items = tasks.map((item, subIndex) => ({\n id: item.id,\n type: taskType,\n data: createTaskData(item, taskItemIsArray ? subIndex : undefined)\n }));\n\n return (\n <>\n {parallelTitle}\n <LifeCycleDragDropList\n type={taskType}\n listLocation={listLocation}\n items={items}\n itemRenderer={Task}\n onDragDrop={onDragDrop}\n additionalDropZone={addTaskItem}\n as={StyledList}\n />\n </>\n );\n};\n\nexport default TaskGroup;\n"]}
1
+ {"version":3,"file":"TaskGroup.js","sourceRoot":"","sources":["../../../src/components/LifeCycle/TaskGroup.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, type MouseEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Flex, useI18n, Button, Icon, defaultThemeProp, useTestIds } from '@pega/cosmos-react-core';\nimport type { BaseProps } from '@pega/cosmos-react-core';\n\nimport type {\n TaskItemProps,\n StageItemProps,\n TaskProps,\n CategoryItemProps\n} from './LifeCycle.types';\nimport Task from './Task';\nimport { StyledList, StyledParallelTitle } from './Category';\nimport LifeCycleContext from './LifeCycleContext';\nimport LifeCycleDragDropList from './LifeCycleDragDropList';\nimport { generateDynamicTestId } from './utils';\nimport { getTaskTestIds } from './LifeCycle.test-ids';\n\ninterface CategoryLabelProp {\n label: string | undefined;\n}\n\nexport interface TaskGroupProps extends BaseProps, TaskProps {\n /** An array of task items to be rendered */\n taskItem: TaskItemProps[];\n /** The index position of this task group within its parent category */\n index: number;\n /** The parent stage data that contains this task group */\n stageItem: StageItemProps;\n /** The parent category data with optional label for this task group */\n categoryItem: CategoryItemProps & CategoryLabelProp;\n /** Task configuration and behavior props, undefined for empty categories */\n task: TaskProps | undefined;\n /** Whether this task group represents parallel tasks (array of tasks) */\n parallel: boolean;\n}\n\nexport const StyledAddTask = styled(Button)(({ theme }) => {\n return css`\n margin-block-end: calc(${theme.base.spacing});\n background: ${theme.base.palette['secondary-background']};\n border-radius: calc(0.5 * ${theme.base['border-radius']});\n width: 100%;\n justify-content: flex-start;\n padding-inline: calc(1.75 * ${theme.base.spacing});\n padding-block: calc(1 * ${theme.base.spacing});\n\n & > :last-child {\n margin-inline: calc(2 * ${theme.base.spacing});\n }\n `;\n});\n\nStyledAddTask.defaultProps = defaultThemeProp;\n\nconst TaskGroup = ({\n taskItem,\n index,\n stageItem,\n categoryItem,\n task,\n parallel,\n ...restProps\n}: TaskGroupProps) => {\n const t = useI18n();\n const { readOnly, dragEnabled, dragDropConfig, onDragDrop } = useContext(LifeCycleContext);\n const isEmptyCategory = taskItem.length === 0;\n const isAlternate = !!stageItem.alternate;\n const categoryTestID = generateDynamicTestId([stageItem.label, categoryItem?.label]);\n const taskTestIds = useTestIds(categoryTestID, getTaskTestIds);\n const taskType = isAlternate ? 'alternate-task' : 'task';\n const showDragHandle = dragEnabled && dragDropConfig?.[taskType].enabled;\n const shouldShowAddTaskButton = !(task?.addTask?.showOnce && categoryItem?.tasks?.length !== 0);\n\n const onAddTaskClick = (e: MouseEvent<HTMLButtonElement>) => {\n task?.addTask?.onAddTask?.(\n {\n category: categoryItem,\n stage: stageItem\n },\n e\n );\n };\n\n const addTaskItem =\n (shouldShowAddTaskButton || isEmptyCategory) && !readOnly && !!task?.addTask ? (\n <li>\n <StyledAddTask\n data-testid={taskTestIds.addButton}\n variant='simple'\n label={t('add_noun', [task.addTask.title])}\n icon\n onClick={onAddTaskClick}\n >\n <Icon name='plus' />\n <span>{task.addTask.title}</span>\n </StyledAddTask>\n </li>\n ) : null;\n\n const createTaskData = (item: TaskItemProps, subIndex?: number) => ({\n ...task,\n ...restProps,\n value: item.label,\n item: {\n ...item,\n index,\n ...(subIndex !== undefined && { subIndex }),\n alternate: isAlternate\n },\n id: item.id,\n visual: item.visual,\n stageItem,\n dragEnabled: showDragHandle,\n categoryItem: {\n ...categoryItem\n },\n error: item.error,\n onAddStep: task?.onAddStep\n });\n\n const parallelTitle = parallel ? (\n <Flex as={StyledParallelTitle} container={{ justify: 'center' }}>\n <span>{t('parallel')}</span>\n </Flex>\n ) : null;\n\n if (isEmptyCategory && showDragHandle) {\n return (\n <LifeCycleDragDropList\n type={taskType}\n listLocation={{\n alternate: isAlternate,\n stage: stageItem.index,\n category: categoryItem.index,\n task: 0,\n subTask: undefined\n }}\n items={[]}\n itemRenderer={Task}\n onDragDrop={onDragDrop}\n additionalDropZone={addTaskItem}\n as={StyledList}\n />\n );\n }\n\n if (!showDragHandle) {\n return (\n <>\n {parallelTitle}\n <StyledList>\n {taskItem.map((item, subIndex) => (\n <Task key={item.id} {...createTaskData(item, subIndex)} />\n ))}\n {addTaskItem}\n </StyledList>\n </>\n );\n }\n\n const listLocation = {\n alternate: isAlternate,\n stage: stageItem.index,\n category: categoryItem.index,\n task: index,\n subTask: undefined\n };\n\n const items = taskItem.map((item, subIndex) => ({\n id: item.id,\n type: taskType,\n data: createTaskData(item, subIndex)\n }));\n\n return (\n <>\n {parallelTitle}\n <LifeCycleDragDropList\n type={taskType}\n listLocation={listLocation}\n items={items}\n itemRenderer={Task}\n onDragDrop={onDragDrop}\n additionalDropZone={addTaskItem}\n as={StyledList}\n />\n </>\n );\n};\n\nexport default TaskGroup;\n"]}
@@ -1,7 +1,8 @@
1
- import type { DragDropConfig, IndexData, LifeCycleDragDropEvent, StageItemProps } from './LifeCycle.types';
1
+ import type { DragDropConfig, IndexData, LifeCycleDragDropEvent, StageItemProps, TaskItemProps } from './LifeCycle.types';
2
2
  import type { LifeCycleContextValue } from './LifeCycleContext';
3
3
  export declare const defaultDragDropConfig: DragDropConfig;
4
4
  export declare const generateDynamicTestId: (arr: (string | undefined)[]) => string;
5
+ export declare const isSingleTaskArray: (tasks: TaskItemProps[] | TaskItemProps[][]) => tasks is TaskItemProps[];
5
6
  export declare const moveStage: (event: LifeCycleDragDropEvent, stages: StageItemProps[], alternateStages: StageItemProps[]) => {
6
7
  stages: StageItemProps[];
7
8
  alternateStages: StageItemProps[];
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/LifeCycle/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,sBAAsB,EACtB,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,eAAO,MAAM,qBAAqB,EAAE,cAyBnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,WAKhE,CAAC;AAgCF,eAAO,MAAM,SAAS,GACpB,OAAO,sBAAsB,EAC7B,QAAQ,cAAc,EAAE,EACxB,iBAAiB,cAAc,EAAE;;;aA0BlC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,sBAAsB,EAC7B,QAAQ,cAAc,EAAE,EACxB,iBAAiB,cAAc,EAAE;;;aA+BlC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,sBAAsB,EAC7B,QAAQ,cAAc,EAAE,EACxB,iBAAiB,cAAc,EAAE;;;aA0DlC,CAAC;AAmKF,eAAO,MAAM,eAAe,GAC1B,qBAAqB,SAAS,EAC9B,MAAM,sBAAsB,CAAC,MAAM,CAAC,EACpC,eAAe,qBAAqB,CAAC,eAAe,CAAC,EACrD,WAAW,MAAM,GAAG,MAAM,KACzB,SAAS,GAAG,SAqFd,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/LifeCycle/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EAET,sBAAsB,EACtB,cAAc,EAEd,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,eAAO,MAAM,qBAAqB,EAAE,cAyBnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,WAKhE,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,aAAa,EAAE,GAAG,aAAa,EAAE,EAAE,KACzC,KAAK,IAAI,aAAa,EAExB,CAAC;AAgCF,eAAO,MAAM,SAAS,GACpB,OAAO,sBAAsB,EAC7B,QAAQ,cAAc,EAAE,EACxB,iBAAiB,cAAc,EAAE;;;aA0BlC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,sBAAsB,EAC7B,QAAQ,cAAc,EAAE,EACxB,iBAAiB,cAAc,EAAE;;;aA+BlC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,sBAAsB,EAC7B,QAAQ,cAAc,EAAE,EACxB,iBAAiB,cAAc,EAAE;;;aA8DlC,CAAC;AA4OF,eAAO,MAAM,eAAe,GAC1B,qBAAqB,SAAS,EAC9B,MAAM,sBAAsB,CAAC,MAAM,CAAC,EACpC,eAAe,qBAAqB,CAAC,eAAe,CAAC,EACrD,WAAW,MAAM,GAAG,MAAM,KACzB,SAAS,GAAG,SAuDd,CAAC"}
@@ -30,6 +30,9 @@ export const generateDynamicTestId = (arr) => {
30
30
  .map(element => element?.replace(/\s+/g, '-').toLowerCase())
31
31
  .join('_');
32
32
  };
33
+ export const isSingleTaskArray = (tasks) => {
34
+ return tasks.every(taskItem => !Array.isArray(taskItem));
35
+ };
33
36
  const getStageData = (stages, indexData) => {
34
37
  if (indexData.stage === undefined)
35
38
  return;
@@ -128,44 +131,102 @@ export const moveTask = (event, stages, alternateStages) => {
128
131
  if (!sourceCategory ||
129
132
  !targetCategory ||
130
133
  event.sourceData.task === undefined ||
131
- event.targetData.task === undefined) {
134
+ event.targetData.task === undefined ||
135
+ event.sourceData.subTask === undefined ||
136
+ event.targetData.subTask === undefined) {
132
137
  return;
133
138
  }
134
139
  // Get the task to move
135
- const sourceTaskGroup = sourceCategory.tasks[event.sourceData.task];
136
140
  let taskToMove;
137
- if (Array.isArray(sourceTaskGroup)) {
138
- if (event.sourceData.subTask === undefined) {
139
- return;
140
- }
141
- taskToMove = sourceTaskGroup[event.sourceData.subTask];
141
+ const sourceTasks = sourceCategory.tasks;
142
+ if (isSingleTaskArray(sourceTasks)) {
143
+ taskToMove = sourceTasks[event.sourceData.subTask];
144
+ }
145
+ else if (event.sourceData.task >= sourceTasks.length || event.sourceData.task < 0) {
146
+ return;
142
147
  }
143
148
  else {
144
- taskToMove = sourceTaskGroup;
149
+ taskToMove = sourceTasks[event.sourceData.task][event.sourceData.subTask];
145
150
  }
146
151
  if (!taskToMove) {
147
152
  return;
148
153
  }
149
154
  // Remove the task from source
150
- if (Array.isArray(sourceTaskGroup)) {
151
- sourceTaskGroup.splice(event.sourceData.subTask, 1);
152
- if (sourceTaskGroup.length === 0) {
153
- sourceCategory.tasks.splice(event.sourceData.task, 1);
154
- }
155
+ if (isSingleTaskArray(sourceTasks)) {
156
+ sourceTasks.splice(event.sourceData.subTask, 1);
155
157
  }
156
158
  else {
157
- sourceCategory.tasks.splice(event.sourceData.task, 1);
159
+ sourceTasks[event.sourceData.task].splice(event.sourceData.subTask, 1);
158
160
  }
159
161
  // Insert the task at target
160
- const targetTaskGroup = targetCategory.tasks[event.targetData.task];
161
- if (Array.isArray(targetTaskGroup) && event.targetData.subTask !== undefined) {
162
- targetTaskGroup.splice(event.targetData.subTask, 0, taskToMove);
162
+ const targetTasks = targetCategory.tasks;
163
+ if (isSingleTaskArray(targetTasks)) {
164
+ targetTasks.splice(event.targetData.subTask, 0, taskToMove);
163
165
  }
164
166
  else {
165
- targetCategory.tasks.splice(event.targetData.task, 0, taskToMove);
167
+ targetTasks[event.targetData.task].splice(event.targetData.subTask, 0, taskToMove);
168
+ }
169
+ // Delete task array if it's parallel
170
+ if (!isSingleTaskArray(sourceTasks)) {
171
+ const sourceTaskGroup = sourceTasks[event.sourceData.task];
172
+ if (sourceTaskGroup.length === 0 && sourceTasks.length > 1) {
173
+ sourceCategory.tasks.splice(event.sourceData.task, 1);
174
+ }
166
175
  }
167
176
  return { stages: stagesClone, alternateStages: alternateStagesClone };
168
177
  };
178
+ const getNextTaskLocation = (primaryStages, alternateStages, currentListLocation, direction) => {
179
+ const { stage, category, task, alternate } = currentListLocation;
180
+ const jump = direction === 'next' ? 1 : -1;
181
+ if (stage === undefined ||
182
+ category === undefined ||
183
+ task === undefined ||
184
+ alternate === undefined) {
185
+ return;
186
+ }
187
+ const getTaskGroupsFromStages = (stages, isAlternate) => {
188
+ const taskGroups = [];
189
+ for (let stageIdx = 0; stageIdx <= stages.length - 1; stageIdx += 1) {
190
+ for (let categoryIdx = 0; categoryIdx <= stages[stageIdx].categories.length - 1; categoryIdx += 1) {
191
+ const tasks = stages[stageIdx].categories[categoryIdx].tasks;
192
+ if (isSingleTaskArray(tasks)) {
193
+ taskGroups.push({
194
+ alternate: isAlternate,
195
+ stage: stageIdx,
196
+ category: categoryIdx,
197
+ task: 0,
198
+ subTask: direction === 'next' ? 0 : tasks.length
199
+ });
200
+ }
201
+ else {
202
+ for (let taskGroupIdx = 0; taskGroupIdx <= tasks.length - 1; taskGroupIdx += 1) {
203
+ taskGroups.push({
204
+ alternate: isAlternate,
205
+ stage: stageIdx,
206
+ category: categoryIdx,
207
+ task: taskGroupIdx,
208
+ subTask: direction === 'next' ? 0 : tasks.length
209
+ });
210
+ }
211
+ }
212
+ }
213
+ }
214
+ return taskGroups;
215
+ };
216
+ const allTaskGroups = [
217
+ ...getTaskGroupsFromStages(primaryStages, false),
218
+ ...getTaskGroupsFromStages(alternateStages, true)
219
+ ];
220
+ if (allTaskGroups.length <= 1) {
221
+ return;
222
+ }
223
+ const currentIndex = allTaskGroups.findIndex(taskGroup => taskGroup.stage === stage &&
224
+ taskGroup.category === category &&
225
+ taskGroup.task === task &&
226
+ taskGroup.alternate === alternate);
227
+ const nextIndex = (currentIndex + jump + allTaskGroups.length) % allTaskGroups.length;
228
+ return allTaskGroups[nextIndex];
229
+ };
169
230
  const getTargetTaskLocation = (stages, currentListLocation, direction, layer) => {
170
231
  const { stage, category, task } = currentListLocation;
171
232
  if (currentListLocation[layer] === undefined || stage === undefined) {
@@ -289,29 +350,7 @@ export const getListLocation = (currentListLocation, type, lifeCycleData, direct
289
350
  return { stage: direction === 'next' ? 0 : targetList.length, alternate: !alternate };
290
351
  }
291
352
  if (type === 'task') {
292
- const { stage, category } = currentListLocation;
293
- if (stage === undefined || category === undefined) {
294
- return;
295
- }
296
- const targetList = alternate ? stages : alternateStages;
297
- if (targetList.length === 0) {
298
- return;
299
- }
300
- for (let stageIndex = 0; stageIndex < targetList.length; stageIndex += 1) {
301
- const targetStage = targetList[stageIndex];
302
- for (let categoryIndex = 0; categoryIndex < targetStage.categories.length; categoryIndex += 1) {
303
- const targetCategory = targetStage.categories[categoryIndex];
304
- if (targetCategory.tasks.length > 0) {
305
- return {
306
- alternate: !alternate,
307
- stage: stageIndex,
308
- category: categoryIndex,
309
- task: direction === 'next' ? 0 : targetCategory.tasks.length
310
- };
311
- }
312
- }
313
- }
314
- return;
353
+ return getNextTaskLocation(stages, alternateStages, currentListLocation, direction);
315
354
  }
316
355
  if (type === 'step') {
317
356
  const { stage, category, task } = currentListLocation;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/LifeCycle/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n DragDropConfig,\n IndexData,\n LifeCycleDragDropEvent,\n StageItemProps,\n StepItemProps,\n TaskItemProps\n} from './LifeCycle.types';\nimport type { LifeCycleContextValue } from './LifeCycleContext';\n\nexport const defaultDragDropConfig: DragDropConfig = {\n stage: {\n enabled: true,\n accept: ['stage', 'alternate-stage']\n },\n step: {\n enabled: true,\n accept: ['step', 'alternate-step']\n },\n task: {\n enabled: true,\n accept: ['task', 'alternate-task']\n },\n 'alternate-stage': {\n enabled: true,\n accept: ['stage', 'alternate-stage']\n },\n 'alternate-step': {\n enabled: true,\n accept: ['step', 'alternate-step']\n },\n 'alternate-task': {\n enabled: true,\n accept: ['task', 'alternate-task']\n }\n};\n\nexport const generateDynamicTestId = (arr: (string | undefined)[]) => {\n return arr\n .filter(element => element)\n .map(element => element?.replace(/\\s+/g, '-').toLowerCase())\n .join('_');\n};\n\nconst getStageData = (stages: StageItemProps[], indexData: IndexData) => {\n if (indexData.stage === undefined) return;\n return stages[indexData.stage];\n};\n\nconst getCategoryData = (stages: StageItemProps[], indexData: IndexData) => {\n if (indexData.category === undefined) return;\n const stage = getStageData(stages, indexData);\n if (!stage) return;\n return stage.categories[indexData.category];\n};\n\nconst getTaskData = (stages: StageItemProps[], indexData: IndexData) => {\n if (indexData.task === undefined) return;\n const category = getCategoryData(stages, indexData);\n if (!category) return;\n if (Array.isArray(category.tasks[indexData.task])) {\n if (indexData.subTask === undefined) return;\n return (category.tasks[indexData.task] as TaskItemProps[])[indexData.subTask];\n }\n return category.tasks[indexData.task] as TaskItemProps;\n};\n\nconst getStepData = (stages: StageItemProps[], indexData: IndexData) => {\n if (indexData.step === undefined) return;\n const task = getTaskData(stages, indexData);\n if (!task) return;\n return task.steps[indexData.step];\n};\n\nexport const moveStage = (\n event: LifeCycleDragDropEvent,\n stages: StageItemProps[],\n alternateStages: StageItemProps[]\n) => {\n let stagesClone: StageItemProps[] = JSON.parse(JSON.stringify(stages));\n let alternateStagesClone: StageItemProps[] = JSON.parse(JSON.stringify(alternateStages));\n\n // Remove the stage from its original position\n let sourceData = event.sourceData.alternate ? alternateStagesClone : stagesClone;\n const stage = getStageData(sourceData, event.sourceData);\n if (!stage || event.targetData.stage === undefined) return;\n sourceData = sourceData.filter((item: StageItemProps) => item.id !== stage.id);\n if (event.sourceData.alternate) {\n alternateStagesClone = sourceData;\n } else {\n stagesClone = sourceData;\n }\n\n // Insert the stage in its new position\n const targetData = event.targetData.alternate ? alternateStagesClone : stagesClone;\n targetData.splice(event.targetData.stage, 0, stage);\n if (event.targetData.alternate) {\n alternateStagesClone = targetData;\n } else {\n stagesClone = targetData;\n }\n\n return { stages: stagesClone, alternateStages: alternateStagesClone };\n};\n\nexport const moveStep = (\n event: LifeCycleDragDropEvent,\n stages: StageItemProps[],\n alternateStages: StageItemProps[]\n) => {\n const stagesClone: StageItemProps[] = JSON.parse(JSON.stringify(stages));\n const alternateStagesClone: StageItemProps[] = JSON.parse(JSON.stringify(alternateStages));\n\n const sourceData = event.sourceData.alternate ? alternateStagesClone : stagesClone;\n const targetData = event.targetData.alternate ? alternateStagesClone : stagesClone;\n\n const sourceCategory = getCategoryData(sourceData, event.sourceData);\n if (!sourceCategory || event.sourceData.task === undefined) return;\n\n const sourceTaskGroup = sourceCategory.tasks[event.sourceData.task];\n if (!sourceTaskGroup) return;\n\n if (Array.isArray(sourceTaskGroup) && event.sourceData.subTask === undefined) {\n return;\n }\n\n // Remove the step from its original position\n const parentTask = getTaskData(sourceData, event.sourceData);\n const step = getStepData(sourceData, event.sourceData);\n if (!parentTask || !step) return;\n parentTask.steps = parentTask.steps.filter((item: StepItemProps) => item.id !== step.id);\n\n // Insert the step in its new position\n const targetTask = getTaskData(targetData, event.targetData);\n if (!targetTask || event.targetData.step === undefined) return;\n targetTask.steps = targetTask.steps || [];\n targetTask.steps.splice(event.targetData.step, 0, step);\n\n return { stages: stagesClone, alternateStages: alternateStagesClone };\n};\n\nexport const moveTask = (\n event: LifeCycleDragDropEvent,\n stages: StageItemProps[],\n alternateStages: StageItemProps[]\n) => {\n const stagesClone: StageItemProps[] = JSON.parse(JSON.stringify(stages));\n const alternateStagesClone: StageItemProps[] = JSON.parse(JSON.stringify(alternateStages));\n\n const sourceData = event.sourceData.alternate ? alternateStagesClone : stagesClone;\n const targetData = event.targetData.alternate ? alternateStagesClone : stagesClone;\n\n const sourceCategory = getCategoryData(sourceData, event.sourceData);\n const targetCategory = getCategoryData(targetData, event.targetData);\n\n if (\n !sourceCategory ||\n !targetCategory ||\n event.sourceData.task === undefined ||\n event.targetData.task === undefined\n ) {\n return;\n }\n\n // Get the task to move\n const sourceTaskGroup = sourceCategory.tasks[event.sourceData.task];\n let taskToMove: TaskItemProps;\n\n if (Array.isArray(sourceTaskGroup)) {\n if (event.sourceData.subTask === undefined) {\n return;\n }\n taskToMove = sourceTaskGroup[event.sourceData.subTask];\n } else {\n taskToMove = sourceTaskGroup as TaskItemProps;\n }\n\n if (!taskToMove) {\n return;\n }\n\n // Remove the task from source\n if (Array.isArray(sourceTaskGroup)) {\n sourceTaskGroup.splice(event.sourceData.subTask!, 1);\n\n if (sourceTaskGroup.length === 0) {\n sourceCategory.tasks.splice(event.sourceData.task, 1);\n }\n } else {\n sourceCategory.tasks.splice(event.sourceData.task, 1);\n }\n\n // Insert the task at target\n const targetTaskGroup = targetCategory.tasks[event.targetData.task];\n\n if (Array.isArray(targetTaskGroup) && event.targetData.subTask !== undefined) {\n targetTaskGroup.splice(event.targetData.subTask, 0, taskToMove);\n } else {\n targetCategory.tasks.splice(event.targetData.task, 0, taskToMove);\n }\n\n return { stages: stagesClone, alternateStages: alternateStagesClone };\n};\n\nconst getTargetTaskLocation = (\n stages: StageItemProps[],\n currentListLocation: IndexData,\n direction: 'prev' | 'next',\n layer: 'stage' | 'category' | 'task' | 'subTask'\n): IndexData | false | undefined => {\n const { stage, category, task } = currentListLocation;\n\n if (currentListLocation[layer] === undefined || stage === undefined) {\n return;\n }\n\n const jump = direction === 'next' ? 1 : -1;\n let targetIndex = currentListLocation[layer] + jump;\n\n if (layer === 'subTask') {\n if (category === undefined || task === undefined) {\n return;\n }\n const parentList = stages[stage].categories[category].tasks[task];\n if (!Array.isArray(parentList)) {\n return;\n }\n\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n return getTargetTaskLocation(\n stages,\n { ...currentListLocation, subTask: undefined },\n direction,\n 'task'\n );\n }\n return { ...currentListLocation, subTask: targetIndex, step: 0 };\n }\n\n if (layer === 'task') {\n if (category === undefined) {\n return;\n }\n const parentList = stages[stage].categories[category].tasks;\n if (!Array.isArray(parentList)) {\n return;\n }\n\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n return getTargetTaskLocation(\n stages,\n { ...currentListLocation, task: undefined },\n direction,\n 'category'\n );\n }\n if (Array.isArray(parentList[targetIndex])) {\n return {\n ...currentListLocation,\n task: targetIndex,\n subTask: direction === 'next' ? 0 : (parentList[targetIndex] as TaskItemProps[]).length - 1,\n step: 0\n };\n }\n return { ...currentListLocation, task: targetIndex, step: 0 };\n }\n\n if (layer === 'category') {\n const parentList = stages[stage].categories;\n if (!Array.isArray(parentList)) {\n return;\n }\n\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n return getTargetTaskLocation(\n stages,\n { ...currentListLocation, category: undefined },\n direction,\n 'stage'\n );\n }\n\n while (parentList[targetIndex].tasks.length === 0) {\n targetIndex += jump;\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n return getTargetTaskLocation(\n stages,\n { ...currentListLocation, category: undefined },\n direction,\n 'stage'\n );\n }\n }\n\n const taskIndex = direction === 'next' ? 0 : parentList[targetIndex].tasks.length - 1;\n if (Array.isArray(parentList[targetIndex].tasks[taskIndex])) {\n return {\n ...currentListLocation,\n category: targetIndex,\n task: taskIndex,\n subTask:\n direction === 'next'\n ? 0\n : (parentList[targetIndex].tasks[taskIndex] as TaskItemProps[]).length - 1,\n step: 0\n };\n }\n return { ...currentListLocation, category: targetIndex, task: taskIndex, step: 0 };\n }\n\n if (layer === 'stage') {\n const parentList = stages;\n if (!Array.isArray(parentList)) {\n return;\n }\n\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n // Returns false to indicate that the target may be in an adjacent stages list\n return false;\n }\n if (\n parentList[targetIndex].categories.length === 0 ||\n parentList[targetIndex].categories[0].tasks.length === 0\n ) {\n while (\n parentList[targetIndex].categories.length === 0 ||\n parentList[targetIndex].categories[0].tasks.length === 0\n ) {\n targetIndex += jump;\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n // Returns false to indicate that the target may be in an adjacent stages list\n return false;\n }\n }\n }\n const categoryIndex = direction === 'next' ? 0 : parentList[targetIndex].categories.length - 1;\n const taskIndex =\n direction === 'next' ? 0 : parentList[targetIndex].categories[categoryIndex].tasks.length - 1;\n if (Array.isArray(parentList[targetIndex].categories[categoryIndex].tasks[taskIndex])) {\n return {\n ...currentListLocation,\n stage: targetIndex,\n category: categoryIndex,\n task: taskIndex,\n subTask:\n direction === 'next'\n ? 0\n : (\n parentList[targetIndex].categories[categoryIndex].tasks[\n taskIndex\n ] as TaskItemProps[]\n ).length - 1,\n step: 0\n };\n }\n return {\n ...currentListLocation,\n stage: targetIndex,\n category: categoryIndex,\n task: taskIndex,\n step: 0\n };\n }\n};\n\nexport const getListLocation = (\n currentListLocation: IndexData,\n type: LifeCycleDragDropEvent['type'],\n lifeCycleData: LifeCycleContextValue['lifeCycleData'],\n direction: 'prev' | 'next'\n): IndexData | undefined => {\n const { stages, alternateStages } = lifeCycleData;\n const alternate = currentListLocation.alternate;\n\n if (type === 'stage') {\n const targetList = alternate ? stages : alternateStages;\n if (targetList.length === 0) {\n return;\n }\n return { stage: direction === 'next' ? 0 : targetList.length, alternate: !alternate };\n }\n\n if (type === 'task') {\n const { stage, category } = currentListLocation;\n if (stage === undefined || category === undefined) {\n return;\n }\n\n const targetList = alternate ? stages : alternateStages;\n\n if (targetList.length === 0) {\n return;\n }\n\n for (let stageIndex = 0; stageIndex < targetList.length; stageIndex += 1) {\n const targetStage = targetList[stageIndex];\n for (\n let categoryIndex = 0;\n categoryIndex < targetStage.categories.length;\n categoryIndex += 1\n ) {\n const targetCategory = targetStage.categories[categoryIndex];\n if (targetCategory.tasks.length > 0) {\n return {\n alternate: !alternate,\n stage: stageIndex,\n category: categoryIndex,\n task: direction === 'next' ? 0 : targetCategory.tasks.length\n };\n }\n }\n }\n\n return;\n }\n\n if (type === 'step') {\n const { stage, category, task } = currentListLocation;\n if (stage === undefined || category === undefined || task === undefined) {\n return;\n }\n\n const sourceList = alternate ? alternateStages : stages;\n const currentStage = sourceList[stage];\n const currentCategory = currentStage.categories[category];\n const currentTask = currentCategory.tasks[task];\n\n let targetTaskLocation = getTargetTaskLocation(\n sourceList,\n currentListLocation,\n direction,\n Array.isArray(currentTask) ? 'subTask' : 'task'\n );\n\n // If the target task location is false, it means that the target could be in an adjacent list\n if (targetTaskLocation === false) {\n const adjacentList = alternate ? stages : alternateStages;\n // Set the entry point to 1 index out of bounds since getTargetTaskLocation will move the target index by 1\n const entryPoint = direction === 'next' ? -1 : adjacentList.length;\n\n targetTaskLocation = getTargetTaskLocation(\n adjacentList,\n { alternate: !alternate, stage: entryPoint },\n direction,\n 'stage'\n );\n\n // If the target is not in an adjacent list, return undefined\n if (targetTaskLocation === false) {\n return;\n }\n }\n\n return targetTaskLocation;\n }\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/LifeCycle/utils.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,KAAK,EAAE;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC;KACrC;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACnC;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACnC;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC;KACrC;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACnC;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACnC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAA2B,EAAE,EAAE;IACnE,OAAO,GAAG;SACP,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;SAC1B,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAA0C,EAChB,EAAE;IAC5B,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,MAAwB,EAAE,SAAoB,EAAE,EAAE;IACtE,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO;IAC1C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,MAAwB,EAAE,SAAoB,EAAE,EAAE;IACzE,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO;IAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAE,SAAoB,EAAE,EAAE;IACrE,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO;IACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClD,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO;QAC5C,OAAQ,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAkB,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAE,SAAoB,EAAE,EAAE;IACrE,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO;IACzC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,KAA6B,EAC7B,MAAwB,EACxB,eAAiC,EACjC,EAAE;IACF,IAAI,WAAW,GAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,IAAI,oBAAoB,GAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAEzF,8CAA8C;IAC9C,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;IACjF,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO;IAC3D,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/E,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC/B,oBAAoB,GAAG,UAAU,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,uCAAuC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;IACnF,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC/B,oBAAoB,GAAG,UAAU,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,KAA6B,EAC7B,MAAwB,EACxB,eAAiC,EACjC,EAAE;IACF,MAAM,WAAW,GAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,MAAM,oBAAoB,GAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;IACnF,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;IAEnF,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO;IAEnE,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,eAAe;QAAE,OAAO;IAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,6CAA6C;IAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI;QAAE,OAAO;IACjC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IAEzF,sCAAsC;IACtC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO;IAC/D,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;IAC1C,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAExD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,KAA6B,EAC7B,MAAwB,EACxB,eAAiC,EACjC,EAAE;IACF,MAAM,WAAW,GAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,MAAM,oBAAoB,GAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;IACnF,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;IAEnF,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAErE,IACE,CAAC,cAAc;QACf,CAAC,cAAc;QACf,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QACnC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;QACnC,KAAK,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS;QACtC,KAAK,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS,EACtC,CAAC;QACD,OAAO;IACT,CAAC;IAED,uBAAuB;IACvB,IAAI,UAAyB,CAAC;IAE9B,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;IACzC,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO;IACT,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,4BAA4B;IAC5B,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;IACzC,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACrF,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,aAA+B,EAC/B,eAAiC,EACjC,mBAA8B,EAC9B,SAAqC,EACd,EAAE;IACzB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC;IACjE,MAAM,IAAI,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3C,IACE,KAAK,KAAK,SAAS;QACnB,QAAQ,KAAK,SAAS;QACtB,IAAI,KAAK,SAAS;QAClB,SAAS,KAAK,SAAS,EACvB,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,uBAAuB,GAAG,CAAC,MAAwB,EAAE,WAAoB,EAAE,EAAE;QACjF,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;YACpE,KACE,IAAI,WAAW,GAAG,CAAC,EACnB,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EACrD,WAAW,IAAI,CAAC,EAChB,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;gBAC7D,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,UAAU,CAAC,IAAI,CAAC;wBACd,SAAS,EAAE,WAAW;wBACtB,KAAK,EAAE,QAAQ;wBACf,QAAQ,EAAE,WAAW;wBACrB,IAAI,EAAE,CAAC;wBACP,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;qBACjD,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC;wBAC/E,UAAU,CAAC,IAAI,CAAC;4BACd,SAAS,EAAE,WAAW;4BACtB,KAAK,EAAE,QAAQ;4BACf,QAAQ,EAAE,WAAW;4BACrB,IAAI,EAAE,YAAY;4BAClB,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;yBACjD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAgB;QACjC,GAAG,uBAAuB,CAAC,aAAa,EAAE,KAAK,CAAC;QAChD,GAAG,uBAAuB,CAAC,eAAe,EAAE,IAAI,CAAC;KAClD,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAC1C,SAAS,CAAC,EAAE,CACV,SAAS,CAAC,KAAK,KAAK,KAAK;QACzB,SAAS,CAAC,QAAQ,KAAK,QAAQ;QAC/B,SAAS,CAAC,IAAI,KAAK,IAAI;QACvB,SAAS,CAAC,SAAS,KAAK,SAAS,CACpC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;IAEtF,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,MAAwB,EACxB,mBAA8B,EAC9B,SAA0B,EAC1B,KAAgD,EACjB,EAAE;IACjC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC;IAEtD,IAAI,mBAAmB,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAEpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACxD,OAAO,qBAAqB,CAC1B,MAAM,EACN,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,EAC9C,SAAS,EACT,MAAM,CACP,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACxD,OAAO,qBAAqB,CAC1B,MAAM,EACN,EAAE,GAAG,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,EAC3C,SAAS,EACT,UAAU,CACX,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,GAAG,mBAAmB;gBACtB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,UAAU,CAAC,WAAW,CAAqB,CAAC,MAAM,GAAG,CAAC;gBAC3F,IAAI,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,GAAG,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACxD,OAAO,qBAAqB,CAC1B,MAAM,EACN,EAAE,GAAG,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,EAC/C,SAAS,EACT,OAAO,CACR,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,WAAW,IAAI,IAAI,CAAC;YACpB,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACxD,OAAO,qBAAqB,CAC1B,MAAM,EACN,EAAE,GAAG,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,EAC/C,SAAS,EACT,OAAO,CACR,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtF,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO;gBACL,GAAG,mBAAmB;gBACtB,QAAQ,EAAE,WAAW;gBACrB,IAAI,EAAE,SAAS;gBACf,OAAO,EACL,SAAS,KAAK,MAAM;oBAClB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAE,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,SAAS,CAAqB,CAAC,MAAM,GAAG,CAAC;gBAC9E,IAAI,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,GAAG,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrF,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACxD,8EAA8E;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IACE,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAC/C,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EACxD,CAAC;YACD,OACE,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;gBAC/C,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EACxD,CAAC;gBACD,WAAW,IAAI,IAAI,CAAC;gBACpB,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACxD,8EAA8E;oBAC9E,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/F,MAAM,SAAS,GACb,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACtF,OAAO;gBACL,GAAG,mBAAmB;gBACtB,KAAK,EAAE,WAAW;gBAClB,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,SAAS;gBACf,OAAO,EACL,SAAS,KAAK,MAAM;oBAClB,CAAC,CAAC,CAAC;oBACH,CAAC,CACG,UAAU,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,KAAK,CACrD,SAAS,CAEZ,CAAC,MAAM,GAAG,CAAC;gBAClB,IAAI,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;QACD,OAAO;YACL,GAAG,mBAAmB;YACtB,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,mBAA8B,EAC9B,IAAoC,EACpC,aAAqD,EACrD,SAA0B,EACH,EAAE;IACzB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC;IAClD,MAAM,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;IAEhD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC;QACxD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC;IACxF,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC;QACtD,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxE,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC;QACxD,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,kBAAkB,GAAG,qBAAqB,CAC5C,UAAU,EACV,mBAAmB,EACnB,SAAS,EACT,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAChD,CAAC;QAEF,8FAA8F;QAC9F,IAAI,kBAAkB,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC;YAC1D,2GAA2G;YAC3G,MAAM,UAAU,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;YAEnE,kBAAkB,GAAG,qBAAqB,CACxC,YAAY,EACZ,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,EAC5C,SAAS,EACT,OAAO,CACR,CAAC;YAEF,6DAA6D;YAC7D,IAAI,kBAAkB,KAAK,KAAK,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;QACH,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC","sourcesContent":["import type {\n DragDropConfig,\n IndexData,\n LifeCycleDragDropDirection,\n LifeCycleDragDropEvent,\n StageItemProps,\n StepItemProps,\n TaskItemProps\n} from './LifeCycle.types';\nimport type { LifeCycleContextValue } from './LifeCycleContext';\n\nexport const defaultDragDropConfig: DragDropConfig = {\n stage: {\n enabled: true,\n accept: ['stage', 'alternate-stage']\n },\n step: {\n enabled: true,\n accept: ['step', 'alternate-step']\n },\n task: {\n enabled: true,\n accept: ['task', 'alternate-task']\n },\n 'alternate-stage': {\n enabled: true,\n accept: ['stage', 'alternate-stage']\n },\n 'alternate-step': {\n enabled: true,\n accept: ['step', 'alternate-step']\n },\n 'alternate-task': {\n enabled: true,\n accept: ['task', 'alternate-task']\n }\n};\n\nexport const generateDynamicTestId = (arr: (string | undefined)[]) => {\n return arr\n .filter(element => element)\n .map(element => element?.replace(/\\s+/g, '-').toLowerCase())\n .join('_');\n};\n\nexport const isSingleTaskArray = (\n tasks: TaskItemProps[] | TaskItemProps[][]\n): tasks is TaskItemProps[] => {\n return tasks.every(taskItem => !Array.isArray(taskItem));\n};\n\nconst getStageData = (stages: StageItemProps[], indexData: IndexData) => {\n if (indexData.stage === undefined) return;\n return stages[indexData.stage];\n};\n\nconst getCategoryData = (stages: StageItemProps[], indexData: IndexData) => {\n if (indexData.category === undefined) return;\n const stage = getStageData(stages, indexData);\n if (!stage) return;\n return stage.categories[indexData.category];\n};\n\nconst getTaskData = (stages: StageItemProps[], indexData: IndexData) => {\n if (indexData.task === undefined) return;\n const category = getCategoryData(stages, indexData);\n if (!category) return;\n if (Array.isArray(category.tasks[indexData.task])) {\n if (indexData.subTask === undefined) return;\n return (category.tasks[indexData.task] as TaskItemProps[])[indexData.subTask];\n }\n return category.tasks[indexData.task] as TaskItemProps;\n};\n\nconst getStepData = (stages: StageItemProps[], indexData: IndexData) => {\n if (indexData.step === undefined) return;\n const task = getTaskData(stages, indexData);\n if (!task) return;\n return task.steps[indexData.step];\n};\n\nexport const moveStage = (\n event: LifeCycleDragDropEvent,\n stages: StageItemProps[],\n alternateStages: StageItemProps[]\n) => {\n let stagesClone: StageItemProps[] = JSON.parse(JSON.stringify(stages));\n let alternateStagesClone: StageItemProps[] = JSON.parse(JSON.stringify(alternateStages));\n\n // Remove the stage from its original position\n let sourceData = event.sourceData.alternate ? alternateStagesClone : stagesClone;\n const stage = getStageData(sourceData, event.sourceData);\n if (!stage || event.targetData.stage === undefined) return;\n sourceData = sourceData.filter((item: StageItemProps) => item.id !== stage.id);\n if (event.sourceData.alternate) {\n alternateStagesClone = sourceData;\n } else {\n stagesClone = sourceData;\n }\n\n // Insert the stage in its new position\n const targetData = event.targetData.alternate ? alternateStagesClone : stagesClone;\n targetData.splice(event.targetData.stage, 0, stage);\n if (event.targetData.alternate) {\n alternateStagesClone = targetData;\n } else {\n stagesClone = targetData;\n }\n\n return { stages: stagesClone, alternateStages: alternateStagesClone };\n};\n\nexport const moveStep = (\n event: LifeCycleDragDropEvent,\n stages: StageItemProps[],\n alternateStages: StageItemProps[]\n) => {\n const stagesClone: StageItemProps[] = JSON.parse(JSON.stringify(stages));\n const alternateStagesClone: StageItemProps[] = JSON.parse(JSON.stringify(alternateStages));\n\n const sourceData = event.sourceData.alternate ? alternateStagesClone : stagesClone;\n const targetData = event.targetData.alternate ? alternateStagesClone : stagesClone;\n\n const sourceCategory = getCategoryData(sourceData, event.sourceData);\n if (!sourceCategory || event.sourceData.task === undefined) return;\n\n const sourceTaskGroup = sourceCategory.tasks[event.sourceData.task];\n if (!sourceTaskGroup) return;\n\n if (Array.isArray(sourceTaskGroup) && event.sourceData.subTask === undefined) {\n return;\n }\n\n // Remove the step from its original position\n const parentTask = getTaskData(sourceData, event.sourceData);\n const step = getStepData(sourceData, event.sourceData);\n if (!parentTask || !step) return;\n parentTask.steps = parentTask.steps.filter((item: StepItemProps) => item.id !== step.id);\n\n // Insert the step in its new position\n const targetTask = getTaskData(targetData, event.targetData);\n if (!targetTask || event.targetData.step === undefined) return;\n targetTask.steps = targetTask.steps || [];\n targetTask.steps.splice(event.targetData.step, 0, step);\n\n return { stages: stagesClone, alternateStages: alternateStagesClone };\n};\n\nexport const moveTask = (\n event: LifeCycleDragDropEvent,\n stages: StageItemProps[],\n alternateStages: StageItemProps[]\n) => {\n const stagesClone: StageItemProps[] = JSON.parse(JSON.stringify(stages));\n const alternateStagesClone: StageItemProps[] = JSON.parse(JSON.stringify(alternateStages));\n\n const sourceData = event.sourceData.alternate ? alternateStagesClone : stagesClone;\n const targetData = event.targetData.alternate ? alternateStagesClone : stagesClone;\n\n const sourceCategory = getCategoryData(sourceData, event.sourceData);\n const targetCategory = getCategoryData(targetData, event.targetData);\n\n if (\n !sourceCategory ||\n !targetCategory ||\n event.sourceData.task === undefined ||\n event.targetData.task === undefined ||\n event.sourceData.subTask === undefined ||\n event.targetData.subTask === undefined\n ) {\n return;\n }\n\n // Get the task to move\n let taskToMove: TaskItemProps;\n\n const sourceTasks = sourceCategory.tasks;\n if (isSingleTaskArray(sourceTasks)) {\n taskToMove = sourceTasks[event.sourceData.subTask];\n } else if (event.sourceData.task >= sourceTasks.length || event.sourceData.task < 0) {\n return;\n } else {\n taskToMove = sourceTasks[event.sourceData.task][event.sourceData.subTask];\n }\n\n if (!taskToMove) {\n return;\n }\n\n // Remove the task from source\n if (isSingleTaskArray(sourceTasks)) {\n sourceTasks.splice(event.sourceData.subTask, 1);\n } else {\n sourceTasks[event.sourceData.task].splice(event.sourceData.subTask, 1);\n }\n\n // Insert the task at target\n const targetTasks = targetCategory.tasks;\n if (isSingleTaskArray(targetTasks)) {\n targetTasks.splice(event.targetData.subTask, 0, taskToMove);\n } else {\n targetTasks[event.targetData.task].splice(event.targetData.subTask, 0, taskToMove);\n }\n\n // Delete task array if it's parallel\n if (!isSingleTaskArray(sourceTasks)) {\n const sourceTaskGroup = sourceTasks[event.sourceData.task];\n if (sourceTaskGroup.length === 0 && sourceTasks.length > 1) {\n sourceCategory.tasks.splice(event.sourceData.task, 1);\n }\n }\n\n return { stages: stagesClone, alternateStages: alternateStagesClone };\n};\n\nconst getNextTaskLocation = (\n primaryStages: StageItemProps[],\n alternateStages: StageItemProps[],\n currentListLocation: IndexData,\n direction: LifeCycleDragDropDirection\n): IndexData | undefined => {\n const { stage, category, task, alternate } = currentListLocation;\n const jump = direction === 'next' ? 1 : -1;\n\n if (\n stage === undefined ||\n category === undefined ||\n task === undefined ||\n alternate === undefined\n ) {\n return;\n }\n\n const getTaskGroupsFromStages = (stages: StageItemProps[], isAlternate: boolean) => {\n const taskGroups: IndexData[] = [];\n for (let stageIdx = 0; stageIdx <= stages.length - 1; stageIdx += 1) {\n for (\n let categoryIdx = 0;\n categoryIdx <= stages[stageIdx].categories.length - 1;\n categoryIdx += 1\n ) {\n const tasks = stages[stageIdx].categories[categoryIdx].tasks;\n if (isSingleTaskArray(tasks)) {\n taskGroups.push({\n alternate: isAlternate,\n stage: stageIdx,\n category: categoryIdx,\n task: 0,\n subTask: direction === 'next' ? 0 : tasks.length\n });\n } else {\n for (let taskGroupIdx = 0; taskGroupIdx <= tasks.length - 1; taskGroupIdx += 1) {\n taskGroups.push({\n alternate: isAlternate,\n stage: stageIdx,\n category: categoryIdx,\n task: taskGroupIdx,\n subTask: direction === 'next' ? 0 : tasks.length\n });\n }\n }\n }\n }\n return taskGroups;\n };\n\n const allTaskGroups: IndexData[] = [\n ...getTaskGroupsFromStages(primaryStages, false),\n ...getTaskGroupsFromStages(alternateStages, true)\n ];\n\n if (allTaskGroups.length <= 1) {\n return;\n }\n\n const currentIndex = allTaskGroups.findIndex(\n taskGroup =>\n taskGroup.stage === stage &&\n taskGroup.category === category &&\n taskGroup.task === task &&\n taskGroup.alternate === alternate\n );\n\n const nextIndex = (currentIndex + jump + allTaskGroups.length) % allTaskGroups.length;\n\n return allTaskGroups[nextIndex];\n};\n\nconst getTargetTaskLocation = (\n stages: StageItemProps[],\n currentListLocation: IndexData,\n direction: 'prev' | 'next',\n layer: 'stage' | 'category' | 'task' | 'subTask'\n): IndexData | false | undefined => {\n const { stage, category, task } = currentListLocation;\n\n if (currentListLocation[layer] === undefined || stage === undefined) {\n return;\n }\n\n const jump = direction === 'next' ? 1 : -1;\n let targetIndex = currentListLocation[layer] + jump;\n\n if (layer === 'subTask') {\n if (category === undefined || task === undefined) {\n return;\n }\n const parentList = stages[stage].categories[category].tasks[task];\n if (!Array.isArray(parentList)) {\n return;\n }\n\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n return getTargetTaskLocation(\n stages,\n { ...currentListLocation, subTask: undefined },\n direction,\n 'task'\n );\n }\n return { ...currentListLocation, subTask: targetIndex, step: 0 };\n }\n\n if (layer === 'task') {\n if (category === undefined) {\n return;\n }\n const parentList = stages[stage].categories[category].tasks;\n if (!Array.isArray(parentList)) {\n return;\n }\n\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n return getTargetTaskLocation(\n stages,\n { ...currentListLocation, task: undefined },\n direction,\n 'category'\n );\n }\n if (Array.isArray(parentList[targetIndex])) {\n return {\n ...currentListLocation,\n task: targetIndex,\n subTask: direction === 'next' ? 0 : (parentList[targetIndex] as TaskItemProps[]).length - 1,\n step: 0\n };\n }\n return { ...currentListLocation, task: targetIndex, step: 0 };\n }\n\n if (layer === 'category') {\n const parentList = stages[stage].categories;\n if (!Array.isArray(parentList)) {\n return;\n }\n\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n return getTargetTaskLocation(\n stages,\n { ...currentListLocation, category: undefined },\n direction,\n 'stage'\n );\n }\n\n while (parentList[targetIndex].tasks.length === 0) {\n targetIndex += jump;\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n return getTargetTaskLocation(\n stages,\n { ...currentListLocation, category: undefined },\n direction,\n 'stage'\n );\n }\n }\n\n const taskIndex = direction === 'next' ? 0 : parentList[targetIndex].tasks.length - 1;\n if (Array.isArray(parentList[targetIndex].tasks[taskIndex])) {\n return {\n ...currentListLocation,\n category: targetIndex,\n task: taskIndex,\n subTask:\n direction === 'next'\n ? 0\n : (parentList[targetIndex].tasks[taskIndex] as TaskItemProps[]).length - 1,\n step: 0\n };\n }\n return { ...currentListLocation, category: targetIndex, task: taskIndex, step: 0 };\n }\n\n if (layer === 'stage') {\n const parentList = stages;\n if (!Array.isArray(parentList)) {\n return;\n }\n\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n // Returns false to indicate that the target may be in an adjacent stages list\n return false;\n }\n if (\n parentList[targetIndex].categories.length === 0 ||\n parentList[targetIndex].categories[0].tasks.length === 0\n ) {\n while (\n parentList[targetIndex].categories.length === 0 ||\n parentList[targetIndex].categories[0].tasks.length === 0\n ) {\n targetIndex += jump;\n if (targetIndex < 0 || targetIndex >= parentList.length) {\n // Returns false to indicate that the target may be in an adjacent stages list\n return false;\n }\n }\n }\n const categoryIndex = direction === 'next' ? 0 : parentList[targetIndex].categories.length - 1;\n const taskIndex =\n direction === 'next' ? 0 : parentList[targetIndex].categories[categoryIndex].tasks.length - 1;\n if (Array.isArray(parentList[targetIndex].categories[categoryIndex].tasks[taskIndex])) {\n return {\n ...currentListLocation,\n stage: targetIndex,\n category: categoryIndex,\n task: taskIndex,\n subTask:\n direction === 'next'\n ? 0\n : (\n parentList[targetIndex].categories[categoryIndex].tasks[\n taskIndex\n ] as TaskItemProps[]\n ).length - 1,\n step: 0\n };\n }\n return {\n ...currentListLocation,\n stage: targetIndex,\n category: categoryIndex,\n task: taskIndex,\n step: 0\n };\n }\n};\n\nexport const getListLocation = (\n currentListLocation: IndexData,\n type: LifeCycleDragDropEvent['type'],\n lifeCycleData: LifeCycleContextValue['lifeCycleData'],\n direction: 'prev' | 'next'\n): IndexData | undefined => {\n const { stages, alternateStages } = lifeCycleData;\n const alternate = currentListLocation.alternate;\n\n if (type === 'stage') {\n const targetList = alternate ? stages : alternateStages;\n if (targetList.length === 0) {\n return;\n }\n return { stage: direction === 'next' ? 0 : targetList.length, alternate: !alternate };\n }\n\n if (type === 'task') {\n return getNextTaskLocation(stages, alternateStages, currentListLocation, direction);\n }\n\n if (type === 'step') {\n const { stage, category, task } = currentListLocation;\n if (stage === undefined || category === undefined || task === undefined) {\n return;\n }\n\n const sourceList = alternate ? alternateStages : stages;\n const currentStage = sourceList[stage];\n const currentCategory = currentStage.categories[category];\n const currentTask = currentCategory.tasks[task];\n\n let targetTaskLocation = getTargetTaskLocation(\n sourceList,\n currentListLocation,\n direction,\n Array.isArray(currentTask) ? 'subTask' : 'task'\n );\n\n // If the target task location is false, it means that the target could be in an adjacent list\n if (targetTaskLocation === false) {\n const adjacentList = alternate ? stages : alternateStages;\n // Set the entry point to 1 index out of bounds since getTargetTaskLocation will move the target index by 1\n const entryPoint = direction === 'next' ? -1 : adjacentList.length;\n\n targetTaskLocation = getTargetTaskLocation(\n adjacentList,\n { alternate: !alternate, stage: entryPoint },\n direction,\n 'stage'\n );\n\n // If the target is not in an adjacent list, return undefined\n if (targetTaskLocation === false) {\n return;\n }\n }\n\n return targetTaskLocation;\n }\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { ComponentType } from 'react';
2
- import type { ModalProps } from '@pega/cosmos-react-core';
3
- export interface UseCreateModalConfig<P extends object = object> {
2
+ import type { ModalProps, TestIdProp } from '@pega/cosmos-react-core';
3
+ export interface UseCreateModalConfig<P extends object = object> extends TestIdProp, Pick<ModalProps, 'autoWidth' | 'center'> {
4
4
  /**
5
5
  * Heading for the Modal.
6
6
  * @default 'Create new'
@@ -20,6 +20,10 @@ export interface UseCreateModalConfig<P extends object = object> {
20
20
  onBeforeOpen?: ModalProps['onBeforeOpen'];
21
21
  /** Called after the modal closes. */
22
22
  onAfterClose?: ModalProps['onAfterClose'];
23
+ /** formactions Submit testId of modal */
24
+ formActionSubmitTestId?: TestIdProp['testId'];
25
+ /** formactions Cancel testId of modal */
26
+ formActionCancelTestId?: TestIdProp['testId'];
23
27
  }
24
28
  export interface CreateModalActionProps<P extends object = object> {
25
29
  loading?: boolean;