{"version":3,"file":"RemindersScreen.mjs","names":["React","useCallback","useEffect","useMemo","useRef","useState","UdpRichTextField","makeStyles","TextField","LinearProgress","Field","Form","FluentTextFieldAutoComplete","useTranslation","useActionState","constructBusinessObjectArrFromTree","LayoutUnit","UdpEnums","useHandleAxiosSnackbar","useUser","differenceWith","executeQueryAdHoc","getBaseMethod","executeQueryWithParameters","ShortcutContentFinder","AmbientCard","useShellStore","FluentDatePicker","useActionStore","FILE_TO_TYPES","getSearchObject","useStyles","root","row","display","justifyContent","input","height","padding","formTextInput","fontSize","labelRoot","RemindersScreen","props","$","_c","formRef","onSubmit","shortcutContentFinderEnabled","id","viewOnly","reloadReminders","filedForNode","reminder","setReminder","t0","Symbol","for","typeOptions","setTypeOptions","t1","templateOptions","setTemplateOptions","reminderId","setReminderId","t2","existingReminderFiledFor","setExistingReminderFiledFor","existingReminderObj","setExistingReminderObj","loading","setLoading","classes","t","actionState","shellHidden","_temp","menuListState","catalogPromotedEntities","handleSuccessSnackbar","handleErrorSnackbar","user","editorRef","selectedNode","_temp2","t3","bb0","menuList","length","selectedMenuIndex","selectedMenu","t4","Udp_Reminder","reminderGetFullApiMethod","t5","Udp_Reminder_Type","reminderTypeSearchApiMethod","t6","Udp_Reminder_Template","reminderTemplateSearchApiMethod","t7","createReminderApiMethod","t8","updateReminderApiMethod","t9","Udp_Reminder_Filed_For","createReminderFiledForApiMethod","t10","updateReminderFiledForApiMethod","t11","deleteReminderFiledForApiMethod","disabled","t12","defaultValue","t13","t14","labelKeys","1","2","map","option","label","value","fileToTypeOptions","t15","currentTenantId","familyName","firstName","values","response","reminderDate","Date","setHours","data","requestBody","tenantId","typeCode","type","code","subject","content","unityUserId","userDisplayName","toDateString","apiMethodId","catch","e","e_0","status","handleSaveReminder","reminderFiledForToComparator","_temp3","t16","values_0","reminderdIdToFileFor","reminderFiledForToDelete","fileTo","reminderFiledForToCreate","deletedPromises","forEach","nftd","data_0","push","Promise","all","_temp5","then","responses","console","warn","createdPromises","nftc","data_1","entityBusinessKey","domainObject","fileToType","_temp7","responses_0","response_0","matchingReminderFiledFor","find","nftc_0","updatedPromises","nftu","data_2","_temp9","responses_1","response_1","entityBusinessKey_0","matchingReminderFiledFor_0","nftu_0","handleReminderFiledFor","t17","values_1","reminderdIdToFileFor_0","handleOnSubmit","t18","reminder_0","handleTextEditorChange","t19","current","form","change","option_0","onTemplateChange","t20","shortcutContent","insertTextAtCursor","handleShortcutOnSelect","t21","options","t22","fileToOptions","getTypeOptions","options_0","filterElements","searchObject","data_3","typesResponse","pageList","t23","t24","getTemplateOptions","options_1","filterElements_0","searchObject_0","data_4","templatesResponse","t25","t26","t27","getExistingReminder","existingReminderObj_0","data_5","reminderResponse","e_4","error","t28","t29","initialFileTos","filter","option_1","reminderFiledFor","nff","t30","t31","initialType","option_2","t32","t33","t34","t35","t36","properties","catalogReturnObject","matchingReminderFiledFor_1","rff","initialFileToType","option_3","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","width","t49","t50","t51","t52","marginLeft","t53","t54","t55","t56","t57","t58","t59","t60","t61","t62","t63","t64","t65","event","target","t66","t67","t68","t69","t70","state","state_0","nftc1","nftc2","_temp4","e_1","p","_temp6","e_2","p_0","_temp8","e_3","p_1"],"sources":["../../src/reminders/RemindersScreen.jsx"],"sourcesContent":["import React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { UdpRichTextField } from '../UI/fluent-web-components/UdpRichTextField';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash-es';\nimport {\n  executeQueryAdHoc,\n  getBaseMethod,\n  executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { FluentDatePicker } from '../UI/inputs/pickers/FluentDatePicker';\nimport { useActionStore } from '../stores/actionStore';\nimport { FILE_TO_TYPES } from '../constants/reminderConstants';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles(() => ({\n  root: {},\n  row: {\n    display: 'flex',\n    justifyContent: 'space-between'\n  },\n  input: {\n    height: 34,\n    padding: 0\n  },\n  formTextInput: {\n    fontSize: 14\n  },\n  labelRoot: {\n    fontSize: 14\n  }\n}));\n\nexport const RemindersScreen = (props) => {\n  const {\n    formRef,\n    onSubmit,\n    shortcutContentFinderEnabled,\n    id,\n    viewOnly,\n    reloadReminders,\n    // Filed-for tree passed directly by the caller (v2 inquiry); falls back\n    // to the legacy ActionProvider menuListState mirror for v1 callers.\n    filedForNode\n  } = props;\n  const [reminder, setReminder] = useState('');\n  const [typeOptions, setTypeOptions] = useState([]);\n  const [templateOptions, setTemplateOptions] = useState([]);\n  const [reminderId, setReminderId] = useState(id || '');\n  const [existingReminderFiledFor, setExistingReminderFiledFor] = useState([]);\n  const [existingReminderObj, setExistingReminderObj] = useState(null);\n  const [loading, setLoading] = useState(false);\n  const classes = useStyles(props);\n  const { t } = useTranslation();\n  const actionState = useActionState();\n  const shellHidden = useShellStore((state) => state.shellHidden);\n  const { menuListState, catalogPromotedEntities } = actionState;\n  const { handleSuccessSnackbar, handleErrorSnackbar } =\n    useHandleAxiosSnackbar();\n  const user = useUser();\n  const editorRef = useRef(null);\n  const selectedNode = useActionStore((state) => state.selectedNode);\n\n  const selectedMenu = useMemo(() => {\n    if (filedForNode) {\n      return filedForNode;\n    }\n    if (menuListState.menuList.length) {\n      return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n    }\n    return null;\n  }, [filedForNode, menuListState]);\n\n  const reminderGetFullApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder,\n      'unityBaseGetFullMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const reminderTypeSearchApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder_Type,\n      'unityBaseSearchMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const reminderTemplateSearchApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder_Template,\n      'unityBaseSearchMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const createReminderApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder,\n      'unityBaseCreateMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const updateReminderApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder,\n      'unityBaseUpdateMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const createReminderFiledForApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder_Filed_For,\n      'unityBaseCreateMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const updateReminderFiledForApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder_Filed_For,\n      'unityBaseUpdateMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const deleteReminderFiledForApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Reminder_Filed_For,\n      'unityBaseDeleteMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const disabled = useMemo(() => {\n    return viewOnly;\n  }, [viewOnly]);\n\n  const fileToTypeOptions = useMemo(() => {\n    const labelKeys = {\n      1: t('reminders.fileToType.user', { defaultValue: 'User' }),\n      2: t('reminders.fileToType.system', { defaultValue: 'System' })\n    };\n    return FILE_TO_TYPES.map((option) => ({\n      ...option,\n      label: labelKeys[option.value] || option.label\n    }));\n  }, [t]);\n\n  const handleSaveReminder = useCallback(\n    async (values) => {\n      let response = null;\n      const reminderDate = new Date(values?.reminderDate?.setHours(0, 0, 0, 0));\n      const data = {\n        requestBody: {\n          tenantId: user?.currentTenantId,\n          typeCode: values?.type?.code,\n          subject: values?.subject,\n          content: values?.reminder,\n          unityUserId: user?.id,\n          userDisplayName: `${user?.firstName} ${user?.familyName}`,\n          reminderDate: reminderDate.toDateString()\n        }\n      };\n      if (reminderId) {\n        if (updateReminderApiMethod) {\n          // Set the url parameter for updating reminder\n          data['{iD}'] = reminderId;\n          response = await executeQueryWithParameters(\n            { data },\n            updateReminderApiMethod.apiMethodId\n          ).catch((e) =>\n            handleErrorSnackbar(\n              e,\n              t('reminders.errors.updateFailed', {\n                defaultValue: 'Could not Update Reminder'\n              })\n            )\n          );\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('reminders.errors.updateMethodNotPromoted', {\n              defaultValue: 'Update Reminder Method Not Promoted'\n            })\n          );\n        }\n      } else {\n        if (createReminderApiMethod) {\n          response = await executeQueryWithParameters(\n            { data },\n            createReminderApiMethod.apiMethodId\n          ).catch((e) =>\n            handleErrorSnackbar(\n              e,\n              t('reminders.errors.saveFailed', {\n                defaultValue: 'Could not Save Reminder'\n              })\n            )\n          );\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('reminders.errors.createMethodNotPromoted', {\n              defaultValue: 'Create Reminder Method Not Promoted'\n            })\n          );\n        }\n      }\n\n      if (response?.status === 200) {\n        if (!reminderId) {\n          setReminderId(response.data.id || '');\n          handleSuccessSnackbar(\n            t('reminders.snackbar.saved', { defaultValue: 'Reminder Saved' })\n          );\n        } else {\n          handleSuccessSnackbar(\n            t('reminders.snackbar.updated', { defaultValue: 'Reminder Updated' })\n          );\n        }\n        if (reloadReminders) {\n          reloadReminders();\n        }\n        return response.data.id || reminderId;\n      }\n\n      return reminderId;\n    },\n    [\n      createReminderApiMethod,\n      updateReminderApiMethod,\n      reminderId,\n      setReminderId,\n      handleErrorSnackbar,\n      handleSuccessSnackbar,\n      user,\n      reloadReminders,\n      t\n    ]\n  );\n\n  const reminderFiledForToComparator = (nftc1, nftc2) => {\n    return nftc1?.value === nftc2?.value;\n  };\n\n  const handleReminderFiledFor = useCallback(\n    async (values, reminderdIdToFileFor) => {\n      // Get the reminderFiledFor objects to delete\n      const reminderFiledForToDelete = differenceWith(\n        existingReminderFiledFor,\n        values?.fileTo,\n        reminderFiledForToComparator\n      );\n\n      // Get the reminderFiledFor objects to create\n      const reminderFiledForToCreate = differenceWith(\n        values?.fileTo,\n        existingReminderFiledFor,\n        reminderFiledForToComparator\n      );\n\n      if (reminderdIdToFileFor) {\n        if (deleteReminderFiledForApiMethod) {\n          const deletedPromises = [];\n          reminderFiledForToDelete.forEach((nftd) => {\n            const data = {};\n            data['{reminderID}'] = reminderdIdToFileFor;\n            data['{entityBusinessKey}'] = nftd.value;\n\n            deletedPromises.push(\n              executeQueryWithParameters(\n                { data },\n                deleteReminderFiledForApiMethod.apiMethodId\n              )\n            );\n          });\n\n          await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n            (responses) => {\n              if (responses.length !== deletedPromises.length) {\n                console.warn(`Not all Reminder Filed For deleted`);\n              }\n            }\n          );\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('reminders.errors.deleteFiledForMethodNotPromoted', {\n              defaultValue: 'Delete Reminder Filed For Method Not Promoted'\n            })\n          );\n        }\n\n        if (createReminderFiledForApiMethod) {\n          const createdPromises = [];\n          reminderFiledForToCreate.forEach((nftc) => {\n            const data = {\n              requestBody: {\n                reminderId: reminderdIdToFileFor,\n                entityBusinessKey: nftc.value,\n                domainObject: nftc.domainObject,\n                type: values?.fileToType?.value || 1\n              }\n            };\n            createdPromises.push(\n              executeQueryWithParameters(\n                { data },\n                createReminderFiledForApiMethod.apiMethodId\n              )\n            );\n          });\n          await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n            (responses) => {\n              responses.forEach((response) => {\n                if (response.status === 200) {\n                  const entityBusinessKey = response.data.entityBusinessKey;\n                  const matchingReminderFiledFor =\n                    reminderFiledForToCreate.find(\n                      (nftc) => nftc.value === entityBusinessKey\n                    );\n                  if (!matchingReminderFiledFor) {\n                    console.warn(\n                      `Reminder Filed For not created for all file to entities`\n                    );\n                  }\n                }\n              });\n            }\n          );\n          setExistingReminderFiledFor(values?.fileTo);\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('reminders.errors.createFiledForMethodNotPromoted', {\n              defaultValue: 'Create Reminder Filed For Method Not Promoted'\n            })\n          );\n        }\n\n        if (updateReminderFiledForApiMethod) {\n          const updatedPromises = [];\n          values?.fileTo?.forEach((nftu) => {\n            const data = {\n              requestBody: {\n                reminderId: reminderdIdToFileFor,\n                entityBusinessKey: nftu.value,\n                domainObject: nftu.domainObject,\n                type: values?.fileToType?.value || 1\n              }\n            };\n            data['{reminderID}'] = reminderdIdToFileFor;\n            data['{entityBusinessKey}'] = nftu.value;\n            updatedPromises.push(\n              executeQueryWithParameters(\n                { data },\n                updateReminderFiledForApiMethod.apiMethodId\n              )\n            );\n          });\n          await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n            (responses) => {\n              responses.forEach((response) => {\n                if (response.status === 200) {\n                  const entityBusinessKey = response.data.entityBusinessKey;\n                  const matchingReminderFiledFor = values?.fileTo?.find(\n                    (nftu) => nftu.value === entityBusinessKey\n                  );\n                  if (!matchingReminderFiledFor) {\n                    console.warn(\n                      `Reminder Filed For not updated for all file to entities`\n                    );\n                  }\n                }\n              });\n            }\n          );\n          setExistingReminderFiledFor(values?.fileTo);\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('reminders.errors.updateFiledForMethodNotPromoted', {\n              defaultValue: 'Update Reminder Filed For Method Not Promoted'\n            })\n          );\n        }\n      }\n    },\n    [\n      createReminderFiledForApiMethod,\n      updateReminderFiledForApiMethod,\n      deleteReminderFiledForApiMethod,\n      handleErrorSnackbar,\n      existingReminderFiledFor,\n      setExistingReminderFiledFor,\n      t\n    ]\n  );\n\n  const handleOnSubmit = useCallback(\n    async (values) => {\n      if (onSubmit) {\n        onSubmit({ reminder, ...values });\n      } else {\n        const reminderdIdToFileFor = await handleSaveReminder({\n          reminder,\n          ...values\n        });\n        await handleReminderFiledFor(\n          { reminder, ...values },\n          reminderdIdToFileFor\n        );\n      }\n    },\n    [reminder, onSubmit, handleSaveReminder, handleReminderFiledFor]\n  );\n\n  const handleTextEditorChange = (reminder) => {\n    setReminder(reminder);\n  };\n\n  const onTemplateChange = useCallback(\n    (value) => {\n      formRef?.current?.form?.change('subject', value?.subject || '');\n      const type = typeOptions.find((option) => option.code === value.typeCode);\n      formRef?.current?.form?.change('type', type || null);\n      formRef?.current?.form?.change(\n        'reminderDate',\n        value.reminderDate === '0001-01-01T00:00:00'\n          ? new Date()\n          : new Date(value.reminderDate)\n      );\n      setReminder(value?.content || '');\n    },\n    [setReminder, formRef, typeOptions]\n  );\n\n  const handleShortcutOnSelect = useCallback((shortcutContent) => {\n    // The editor emits its change event after the insert, which flows back through\n    // handleTextEditorChange — no manual state write is needed here.\n    void editorRef?.current?.insertTextAtCursor(shortcutContent);\n  }, []);\n\n  const fileToOptions = useMemo(() => {\n    let options = [];\n    if (selectedMenu) {\n      options = constructBusinessObjectArrFromTree(selectedMenu);\n    }\n    return options;\n  }, [selectedMenu]);\n\n  useEffect(() => {\n    // TODO: update to use getAll reminderTypes\n    const getTypeOptions = async () => {\n      let options = [];\n      if (reminderTypeSearchApiMethod) {\n        const filterElements = [];\n        const searchObject = getSearchObject(filterElements, 1, 200, true);\n        const data = { data: searchObject };\n        const typesResponse = await executeQueryAdHoc(\n          data,\n          reminderTypeSearchApiMethod.apiMethodId\n        );\n        if (typesResponse?.status === 200) {\n          options = typesResponse.data?.pageList || [];\n        }\n      }\n      setTypeOptions(options);\n    };\n    getTypeOptions();\n  }, [reminderTypeSearchApiMethod, setTypeOptions, user]);\n\n  useEffect(() => {\n    // TODO: update to use getAll reminderTemplates\n    const getTemplateOptions = async () => {\n      let options = [];\n      if (reminderTemplateSearchApiMethod) {\n        const filterElements = [];\n        const searchObject = getSearchObject(filterElements, 1, 200, true);\n        const data = { data: searchObject };\n        const templatesResponse = await executeQueryAdHoc(\n          data,\n          reminderTemplateSearchApiMethod.apiMethodId\n        );\n        if (templatesResponse?.status === 200) {\n          options = templatesResponse.data?.pageList || [];\n        }\n      }\n      setTemplateOptions(options);\n    };\n    getTemplateOptions();\n  }, [reminderTemplateSearchApiMethod, setTemplateOptions, user]);\n\n  useEffect(() => {\n    const getExistingReminder = async () => {\n      let existingReminderObj = null;\n      const data = {};\n      if (reminderGetFullApiMethod) {\n        setLoading(true);\n        data['{iD}'] = id;\n        const reminderResponse = await executeQueryWithParameters(\n          { data },\n          reminderGetFullApiMethod.apiMethodId\n        ).catch((e) => {\n          console.error(e);\n          setLoading(false);\n        });\n        if (reminderResponse?.status === 200) {\n          existingReminderObj = reminderResponse.data;\n        }\n      }\n      setExistingReminderObj(existingReminderObj);\n      setReminder(existingReminderObj?.content);\n      setLoading(false);\n    };\n    if (id) {\n      getExistingReminder();\n    }\n  }, [id, reminderGetFullApiMethod]);\n\n  useEffect(() => {\n    if (!existingReminderObj || !fileToOptions?.length) {\n      return;\n    }\n    const initialFileTos = fileToOptions.filter((option) => {\n      return existingReminderObj.reminderFiledFor.find(\n        (nff) => option.value === nff.entityBusinessKey\n      );\n    });\n    setExistingReminderFiledFor(initialFileTos);\n    formRef?.current?.form?.change('fileTo', initialFileTos);\n  }, [existingReminderObj, fileToOptions, formRef]);\n\n  useEffect(() => {\n    if (!existingReminderObj || !typeOptions?.length) {\n      return;\n    }\n    const initialType = typeOptions.find(\n      (option) => option.code === existingReminderObj.typeCode\n    );\n    formRef?.current?.form?.change('type', initialType || null);\n  }, [existingReminderObj, typeOptions, formRef]);\n\n  useEffect(() => {\n    if (!existingReminderObj) {\n      return;\n    }\n    formRef?.current?.form?.change(\n      'subject',\n      existingReminderObj?.subject || ''\n    );\n  }, [existingReminderObj, formRef]);\n\n  useEffect(() => {\n    if (!existingReminderObj?.reminderDate) {\n      return;\n    }\n    formRef?.current?.form?.change(\n      'reminderDate',\n      new Date(existingReminderObj.reminderDate)\n    );\n  }, [existingReminderObj, formRef]);\n\n  useEffect(() => {\n    if (!existingReminderObj) {\n      return;\n    }\n    const matchingReminderFiledFor = existingReminderObj.reminderFiledFor?.find(\n      (rff) =>\n        rff.domainObject === selectedNode?.properties?.catalogReturnObject\n    );\n    const initialFileToType = fileToTypeOptions.find(\n      (option) => option.value === matchingReminderFiledFor?.type\n    );\n    formRef?.current?.form?.change('fileToType', initialFileToType || null);\n  }, [existingReminderObj, typeOptions, formRef, selectedNode, fileToTypeOptions]);\n\n  return (\n    <div className={classes.root}>\n      {loading && <LinearProgress color='secondary' />}\n      <AmbientCard fullWidth={true} header={true}>\n        <Form onSubmit={handleOnSubmit} ref={formRef}>\n          <Field\n            component={FluentTextFieldAutoComplete}\n            label={t('reminders.form.fileTo', { defaultValue: 'File To' })}\n            name='fileTo'\n            id='fileTo'\n            fullWidth\n            variant='outlined'\n            margin='dense'\n            size='small'\n            options={fileToOptions || []}\n            optionKey={'label'}\n            required={true}\n            limitTags={!viewOnly ? 2 : -1}\n            isMultiple={true}\n            disabled={disabled}\n          />\n          <Field\n            component={FluentTextFieldAutoComplete}\n            label={t('reminders.form.fileToType', { defaultValue: 'File To Type' })}\n            name='fileToType'\n            id='fileToType'\n            fullWidth\n            variant='outlined'\n            margin='dense'\n            size='small'\n            options={fileToTypeOptions || []}\n            optionKey={'label'}\n            required={true}\n            disabled={disabled}\n          />\n          <div className={classes.row}>\n            <div style={{ width: '100%' }}>\n              <Field\n                component={FluentTextFieldAutoComplete}\n                label={t('reminders.form.type', { defaultValue: 'Type' })}\n                name='type'\n                id='type'\n                fullWidth\n                variant='outlined'\n                margin='dense'\n                size='small'\n                options={typeOptions || []}\n                optionKey={'name'}\n                required={true}\n                disabled={disabled}\n              />\n            </div>\n            {!viewOnly && (\n              <div style={{ width: '100%', marginLeft: 8 }}>\n                <Field\n                  component={FluentTextFieldAutoComplete}\n                  label={t('reminders.form.template', { defaultValue: 'Template' })}\n                  name='template'\n                  id='template'\n                  fullWidth\n                  variant='outlined'\n                  margin='dense'\n                  size='small'\n                  options={templateOptions || []}\n                  optionKey={'name'}\n                  additionalOnChangeAction={onTemplateChange}\n                />\n              </div>\n            )}\n          </div>\n          <Field\n            component={FluentDatePicker}\n            label={t('reminders.form.reminderDate', { defaultValue: 'Reminder Date' })}\n            name='reminderDate'\n            id='reminderDate'\n            fullWidth\n            variant='outlined'\n            size='small'\n            margin='dense'\n            required\n            disabled={disabled}\n          />\n          <Field\n            component={TextField}\n            label={t('reminders.form.subject', { defaultValue: 'Subject' })}\n            name='subject'\n            id='subject'\n            fullWidth\n            variant='outlined'\n            size='small'\n            margin='dense'\n            required\n            disabled={disabled}\n            InputProps={{\n              classes: {\n                root: classes?.input,\n                input: classes?.formTextInput\n              }\n            }}\n            InputLabelProps={{\n              classes: {\n                root: classes?.labelRoot\n              }\n            }}\n          />\n          <LayoutUnit unit='nudge' />\n          <UdpRichTextField\n            ref={editorRef}\n            ariaLabel={t('reminders.form.details', { defaultValue: 'Details' })}\n            value={reminder}\n            onChange={(event) => handleTextEditorChange(event.target.value)}\n            readonly={disabled}\n          />\n        </Form>\n      </AmbientCard>\n      <LayoutUnit unit='nudge' />\n      {shortcutContentFinderEnabled && (\n        <AmbientCard\n          fullWidth={true}\n          header={true}\n          lastChildBottomPadding={'0px'}\n          cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n        >\n          <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n        </AmbientCard>\n      )}\n    </div>\n  );\n};\n"],"mappings":"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"}