import { action } from '@storybook/addon-actions';
import { useState, useMemo, useEffect } from 'react';
import { HierarchicalAssignments } from '@pega/cosmos-react-work';
import { AIButtonFormDemo } from '../../core/AIButton/AIButton.stories';
import MockHierarchicalAssignments, { task } from './HierarchicalAssignments.mock';
export default {
    title: 'Work/HierarchicalAssignments',
    component: HierarchicalAssignments
};
export const HierarchicalAssignmentsDemo = (args) => {
    const [progress, setProgress] = useState(args.collapsed);
    const [open, setOpen] = useState(true);
    useEffect(() => {
        setOpen(args.collapsed);
    }, [args.collapsed]);
    const onToggleCollapsed = (collapsed) => {
        setOpen(collapsed);
        if (collapsed)
            setProgress(true);
        else
            setTimeout(() => {
                setProgress(false);
            }, 2000);
    };
    return (<MockHierarchicalAssignments name={args.name} onToggleCollapsed={onToggleCollapsed} progress={args?.progress || progress} showAction={args?.showAction} collapsed={open} showTask={args.showTask} expandAllCases={args.expandAllCases}/>);
};
HierarchicalAssignmentsDemo.args = {
    progress: false,
    showAction: true,
    collapsed: false,
    showTask: false,
    name: 'Hierarchical Assignments'
};
HierarchicalAssignmentsDemo.argTypes = {
    progress: { control: { type: 'boolean' } },
    showAction: { control: { type: 'boolean' } },
    name: { control: { type: 'text' } },
    showTask: { control: { type: 'boolean' } },
    collapsed: { control: { type: 'boolean' } }
};
export const HierarchicalAssignmentListDemo = (args) => {
    const [taskOpened, setTaskOpened] = useState();
    const [progress, setProgress] = useState(args.collapsed);
    const [open, setOpen] = useState(true);
    useEffect(() => {
        setOpen(args.collapsed);
    }, [args.collapsed]);
    const getTask = (id) => {
        return {
            ...task,
            id,
            name: `Task ${id}`,
            content: (<AIButtonFormDemo onCancel={() => setTaskOpened(undefined)} onSubmit={() => setTaskOpened(undefined)}/>)
        };
    };
    const onToggleCollapsed = (collapsed) => {
        setOpen(collapsed);
        if (collapsed)
            setProgress(true);
        else
            setTimeout(() => {
                setProgress(false);
            }, 2000);
    };
    const onAssigneeClick = (id) => {
        action(`Show Assignee's Profile (${id})`)();
    };
    const getAssignmentContent = (id) => {
        setTaskOpened(getTask(id));
    };
    useEffect(() => {
        if (args.showTask) {
            getAssignmentContent('Assignment');
        }
        else {
            setTaskOpened(undefined);
        }
    }, [args.showTask]);
    const HierarchicalAssignmentsListMock = useMemo(() => {
        const assignmentAction = args.showAction ? { onOpen: getAssignmentContent } : {};
        return {
            assignments: [
                {
                    id: 'ASSIGN-WORKLIST LOANPROC-WORK S-69001!SUBCASELEVEL11_FLOW_1_New45',
                    processName: 'Develop',
                    name: 'Complete Develop',
                    sla: '2025-04-21T10:56:27.000Z',
                    urgency: 95,
                    assigneeName: 'Una Newton',
                    assigneeId: 'una01',
                    onAssigneeClick,
                    ...assignmentAction
                },
                {
                    id: 'ASSIGN-WORKLIST LOANPROC-WORK S-69001!SUBCASELEVEL11_FLOW_1_New45-1',
                    name: 'Collect information',
                    processName: 'Sprinting',
                    sla: '2025-04-21T10:56:27.000Z',
                    urgency: 95,
                    assigneeName: 'Una Newton',
                    assigneeId: 'una01',
                    onAssigneeClick,
                    ...assignmentAction
                },
                {
                    id: 'ASSIGN-WORKLIST LOANPROC-WORK S-69001!SUBCASELEVEL11_FLOW_1_New45-2',
                    name: 'Send references',
                    sla: '2025-04-21T10:56:27.000Z',
                    urgency: 95,
                    assigneeName: 'Una Newton',
                    assigneeId: 'una01',
                    onAssigneeClick,
                    ...assignmentAction
                }
            ]
        };
    }, [args.showAction]);
    return (<HierarchicalAssignments assignments={HierarchicalAssignmentsListMock.assignments} collapsed={open} onToggleCollapsed={onToggleCollapsed} openItem={taskOpened} progress={args?.progress || progress} name={args.name}/>);
};
HierarchicalAssignmentListDemo.args = {
    progress: false,
    showAction: true,
    name: 'Assignment List',
    collapsed: false,
    showTask: false
};
HierarchicalAssignmentListDemo.argTypes = {
    progress: { control: { type: 'boolean' } },
    showAction: { control: { type: 'boolean' } },
    name: { control: { type: 'text' } },
    collapsed: { control: { type: 'boolean' } },
    showTask: { control: { type: 'boolean' } }
};
//# sourceMappingURL=HierarchicalAssignments.stories.jsx.map