{"version":3,"file":"LogActivityPostType.mocks.jsx","sourceRoot":"","sources":["../../../src/social/Feed/LogActivityPostType.mocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport type { Ref } from 'react';\n\nimport {\n  createUID,\n  Form,\n  ComboBox,\n  DateInput,\n  FileInput,\n  FileList,\n  Flex,\n  menuHelpers,\n  DateTimeDisplay,\n  FieldValueList\n} from '@pega/cosmos-react-core';\nimport type { FileItemProps, MenuItemProps, MenuProps } from '@pega/cosmos-react-core';\nimport { FeedRichText, FeedRichTextViewer } from '@pega/cosmos-react-social';\nimport type { RichTextEditorState } from '@pega/cosmos-react-rte';\n\nimport { getActivityTypeOptions } from './Feed.mocks';\n\nexport interface LogActivityPostContentProps {\n  activityType: MenuItemProps;\n  followUpDate?: string;\n  files?: FileItemProps[];\n  comments?: string;\n}\n\nexport interface LogActivityHandle {\n  clearForm: () => void;\n  getErrors: () => string[];\n  getFormData: () => LogActivityPostContentProps;\n}\n\ninterface LogActivityPostProps {\n  handle?: Ref<LogActivityHandle>;\n  data?: LogActivityPostContentProps;\n}\n\nexport const LogActivityPost = ({ handle, data }: LogActivityPostProps) => {\n  const [activityType, setActivityType] = useState(data?.activityType?.id ?? '');\n  const [activityTypeError, setActivityTypeError] = useState('');\n  const [followUpDate, setFollowUpDate] = useState(data?.followUpDate ?? '');\n  const [followUpDateError, setFollowUpDateError] = useState('');\n  const [files, setFiles] = useState<FileItemProps[]>(data?.files ?? []);\n  const [filesError, setFilesError] = useState('');\n  const rteRef = useRef<RichTextEditorState>(null);\n\n  const [activityTypes, setActivityTypes] = useState<MenuProps['items']>(\n    getActivityTypeOptions(data?.activityType?.id)\n  );\n\n  const selectedType = useMemo(() => menuHelpers.getSelected(activityTypes)[0], [activityTypes]);\n\n  const selectActivityType = useCallback((id: MenuItemProps['id']) => {\n    setActivityTypes(curr => menuHelpers.selectItem(curr, id, 'single-select'));\n    setActivityType(id);\n  }, []);\n\n  const onFilesAdded = async (addedFiles: File[]) => {\n    const fileItems: FileItemProps[] = addedFiles.map(file => {\n      const fileItem: FileItemProps = {\n        id: createUID(),\n        name: file.name,\n        format: file.name.split('.').pop(),\n        onDelete: () => {\n          setFiles(current => {\n            return current.filter(x => x.name !== file.name);\n          });\n        },\n        onCancel: () => {\n          setFiles(current => {\n            return current.filter(x => x.name !== file.name);\n          });\n        }\n      };\n\n      if (file.type.includes('image')) {\n        fileItem.thumbnail = URL.createObjectURL(file);\n      }\n      if (file.size / 1000000 > 100) {\n        fileItem.error = 'File size cannot exceed 100MB';\n      }\n\n      return fileItem;\n    });\n\n    setFiles(current => [...current, ...fileItems]);\n  };\n\n  useImperativeHandle(\n    handle,\n    () => ({\n      clearForm: () => {\n        setActivityTypes(getActivityTypeOptions());\n        setActivityType('');\n        setActivityTypeError('');\n        setFollowUpDate('');\n        setFollowUpDateError('');\n        setFiles([]);\n        setFilesError('');\n        rteRef.current?.clear();\n      },\n      getErrors: () => {\n        if (activityType === '') {\n          setActivityTypeError('Please select an activity type');\n        }\n        return [\n          activityType === '' ? 'Please select an activity type' : '',\n          followUpDateError,\n          filesError\n        ].filter(err => !!err);\n      },\n      getFormData: () => {\n        return {\n          activityType: selectedType,\n          followUpDate,\n          files,\n          comments: rteRef.current?.getPlainText() || ''\n        };\n      }\n    }),\n    [activityType, activityTypeError, followUpDate, followUpDateError, files, filesError]\n  );\n\n  useEffect(() => {\n    if (activityType) {\n      setActivityTypeError('');\n    }\n  }, [activityType]);\n\n  useEffect(() => {\n    setFollowUpDateError('');\n    if (followUpDate) {\n      const date = new Date(followUpDate);\n      const today = new Date();\n      if (date <= today) {\n        setFollowUpDateError('Follow-up date must be in the future');\n      }\n    }\n  }, [followUpDate]);\n\n  useEffect(() => {\n    if (files.some(file => !!file.error)) {\n      setFilesError('File size cannot exceed 100MB');\n    } else {\n      setFilesError('');\n    }\n  }, [files]);\n\n  return (\n    <Form>\n      <Flex container={{ direction: 'column', gap: 1 }}>\n        <ComboBox\n          label='Activity type'\n          info={activityTypeError}\n          status={activityTypeError ? 'error' : undefined}\n          required\n          selected={\n            selectedType\n              ? {\n                  items: {\n                    id: selectedType.id,\n                    text: selectedType.primary\n                  }\n                }\n              : undefined\n          }\n          menu={{\n            items: activityTypes,\n            onItemClick: selectActivityType\n          }}\n          onBlur={value => {\n            if (!value) setActivityTypeError('Please select an activity type');\n          }}\n        />\n        <DateInput\n          label='Follow-up date'\n          value={followUpDate}\n          info={followUpDateError}\n          status={followUpDateError ? 'error' : undefined}\n          onChange={({ valueAsISOString, state }) => {\n            if (state !== 'incomplete' && state !== 'invalid') {\n              setFollowUpDate(valueAsISOString || '');\n            }\n          }}\n        />\n        <FileInput\n          label='Upload files'\n          multiple\n          onFilesAdded={onFilesAdded}\n          files={files}\n          info={filesError}\n          status={filesError ? 'error' : undefined}\n        />\n        <FeedRichText label='Comments' ref={rteRef} defaultValue={data?.comments} />\n      </Flex>\n    </Form>\n  );\n};\n\nexport const LogActivityPostContent = ({\n  activityType,\n  followUpDate,\n  files = [],\n  comments = ''\n}: LogActivityPostContentProps) => {\n  return (\n    <Flex container={{ direction: 'column', gap: 1 }}>\n      <FieldValueList\n        fields={[\n          { name: 'Activity type', value: activityType.primary },\n          {\n            name: 'Follow-up date',\n            value: <DateTimeDisplay value={followUpDate} variant='date' format='long' />\n          }\n        ]}\n      />\n\n      {files.length > 0 && (\n        <FieldValueList\n          variant='stacked'\n          fields={[{ name: 'Files', value: <FileList items={files} type='item' /> }]}\n        />\n      )}\n\n      {!!comments && (\n        <FieldValueList\n          variant='stacked'\n          fields={[\n            {\n              name: 'Comments',\n              value: <FeedRichTextViewer content={comments} />\n            }\n          ]}\n        />\n      )}\n    </Flex>\n  );\n};\n"]}