{"version":3,"sources":["enquiryCustomFields/selectors/CustomFieldTypeSelector.tsx","contexts/TimerContext.tsx","enquiryCustomFields/common/getField.tsx","enquiryCustomFields/CustomFieldRepositores.ts","enquiryCustomFields/tabs/customFieldLookUpLists/CustomFieldLookUpListsTab.tsx","enquiryCustomFields/dialogs/CustomFieldGroupDialog.tsx","enquiryCustomFields/selectors/CustomFieldLookupListSelector.tsx","enquiryCustomFields/dialogs/CustomFieldGroupItemDialog.tsx","enquiryCustomFields/tabs/customFieldGroups/CustomFieldGroupSelectedTab.tsx","enquiryCustomFields/dialogs/CustomFieldPreviewDialog.tsx","enquiryCustomFields/tabs/customFieldGroups/CustomFieldGroupsTab.tsx","enquiryCustomFields/tabs/customFieldLookUpLists/CustomFieldLookUpListSelectedTab.tsx","enquiryCustomFields/EnquiryCustomFieldsPage.tsx","emailTemplatesConfiguration/EmailTemplateRespository.tsx"],"names":["useStyles","theme","root","width","CustomFieldTypeSelector","props","classes","options","value","label","handleChange","event","console","log","onSelection","name","getInputProps","params","isLoading","InputProps","endAdornment","Fragment","color","size","className","multiple","disabled","onChange","onBlur","disableCloseOnSelect","disablePortal","getOptionLabel","option","getOptionSelected","renderInput","variant","fullWidth","margin","required","error","helperText","renderOption","inputValue","matches","parts","map","part","index","key","style","fontWeight","highlight","text","FieldType","Text","Integer","Number","Currency","Date","FieldTypeReverseMapping","Object","keys","reduce","acc","TimerContext","state","setTimerTotal","bind","setInitialTimerTotal","isTimerOpen","totalTimer","total","operation","this","setState","render","Provider","children","undefined","getField","field","customFieldGroupGuid","customFieldType","Label","display","gap","alignItems","description","instructions","arrow","title","dangerouslySetInnerHTML","__html","guid","subscription","touched","validate","isMandatory","input","meta","type","customFieldValue","tempValue","customFieldGuid","customFieldId","target","parseInt","multiline","minRows","parseFloat","inputComponent","NumberFormatCustom","format","placeholder","animateYearScrolling","autoOk","allowKeyboardControl","inputProps","autocomplete","InputLabelProps","shrink","date","component","flex","flexDirection","control","checked","_","checkedIcon","customFieldLookupItems","item","guidId","sort","a","b","sequence","inputRef","other","getInputRef","onValueChange","values","thousandSeparator","isNumericString","prefix","CustomFieldByHierarchyQuery","makeStyles","createStyles","paper","marginBottom","spacing","position","loadingWrapper","zIndex","top","right","left","bottom","justifyContent","backgroundColor","icon","BrandColors","TemplatePrimary","tableCell","paddingTop","paddingBottom","textField","minWidth","maxWidth","dragIcon","marginLeft","marginRight","tableContentWrapper","cursor","useToolbarStyles","paddingLeft","paddingRight","palette","secondary","main","light","primary","dark","rightToolbarWrapper","tableTitle","tableHeading","chip","EnhancedTableToolbar","search","setSearch","Toolbar","Typography","Chip","count","TextField","startAdornment","InputAdornment","fontSize","IconButton","onClick","onSearch","Tooltip","onClickAdd","CustomFieldLookUpListsTab","history","location","tab","URLSearchParams","get","CustomFieldLookupListQuery","loading","data","refetch","items","isAdd","isEdit","isDelete","crm","customFieldLookupList","prevState","customFieldLookupListItemCount","subscribeFirmObj","subscribeFirm","unsubscribe","onDragEndComponent","subscribe","fetchPolicy","query","CustomFieldLookupNotificationSubscription","variables","next","results","lookupNotification","status","message","err","onEditRowEnable","indexOf","onCancelEditRow","onEditRow","mutate","mutation","UpdateCustomFieldLookupListMutation","then","catch","reason","tdata","onDeleteRowEnable","onCancelDeleteRow","onDeleteRow","DeleteCustomFieldLookupListMutation","tItems","splice","onClickTagCounts","push","pathname","DraggableComponent","draggableId","provided","snapshot","TableRow","ref","innerRef","draggableProps","dragHandleProps","isDragging","draggableStyle","background","TableCell","align","Badge","badgeContent","colSpan","defaultValue","Paper","CircularProgress","length","TableContainer","Table","TableHead","TableBody","result","destination","list","startIndex","endIndex","Array","from","removed","reorder","source","UpdateCustomFieldSequenceLookupListMutation","lookupSequences","onDragEnd","droppableId","direction","droppableProps","CreateCustomFieldLookupListMutation","createCustomFieldLookupList","filteredItems","filter","toLowerCase","getDraggableRows","header","textTransform","buttonContainer","button","CustomFieldGroupDialog","useState","showDiscard","setShowDiscard","initialValues","isFormSubmit","areaOfLaw","areaOfLawGuid","groupId","isActive","handleClose","form","onClose","onRequired","validateGroupId","DialogBox","content","show","isAgree","agree","disAgreeLabel","agreeLabel","onSubmit","UpdateEnquiryCustomFieldGroupMutation","groupName","updateEnquiryCustomFieldGroup","CreateEnquiryCustomFieldGroupMutation","createEnquiryCustomFieldGroup","keepDirtyOnReinitialize","initialValuesEqual","submitting","pristine","errors","handleSubmit","onFieldRequiredError","id","Dialog","DialogTitle","DialogContent","Grid","container","xs","sm","md","lg","AreaOfLawSelector","selection","FormControlLabel","Checkbox","DialogActions","Button","change","submit","controlButtonComponent","CustomFieldLookupListSelector","customFieldLookupListQuery","Autocomplete","editorClassName","padding","minHeight","wrapperClassName","border","flexFlow","toolbarClassName","formLabel","CustomFieldGroupItemDialog","customFieldLookupListGuid","customFieldLookupListDescription","paddedCount","String","padStart","generateId","validateId","startsWith","includes","UpdateEnquiryCustomFieldMutation","enquiryCustomFieldGroupGuid","updateEnquiryCustomField","CreateEnquiryCustomFieldMutation","createEnquiryCustomField","disableEnforceFocus","FormLabel","Editor","onEditorChange","standarFields","breadcrumbsWrapper","breadcrumbs","breadcrumbsTitle","Breadcrumbs","separator","Link","href","preventDefault","goBack","subTitle","onPreview","CustomFieldGroupSelectedTab","searchParams","locationGuid","titleDescription","CustomFieldListQuery","skip","selectedData","customField","customFieldGroupName","EnquiryCustomFieldNotificationSubscription","enquiryCustomFieldNotification","isFormOpen","DeleteEnquiryCustomFieldMutation","open","isPreviewOpen","CustomFieldPreviewDialog","UpdateEnquiryCustomFieldSequenceMutation","dropZoneFont","dropZone","customFields","setCustomFields","customFieldListQuery","customFeildGroupData","DialogContentText","height","fill","countFieldWrapper","CustomFieldGroupsTab","columns","onClickCounts","rowData","isCustomPreviewOpen","tableIcons","Add","Check","Clear","Delete","DetailPanel","Edit","Export","Filter","FirstPage","LastPage","NextPage","PreviousPage","ResetSearch","Search","SortArrow","ThirdStateCheck","ViewColumn","customFieldGroupQuery","CustomFieldGroupQuery","customFieldGroup","icons","addRowPosition","paging","pageSize","pageSizeOptions","draggable","actionsColumnIndex","actions","tooltip","isFreeAction","editable","onRowDelete","oldData","Promise","resolve","setTimeout","DeleteEnquiryCustomFieldGroupMutation","deleteEnquiryCustomFieldGroup","deleteRowData","CustomFieldLookUpListSelectedTab","customFieldLookupListItem","temp","UpdateCustomFieldLookupListItemMutation","DeleteCustomFieldLookupListItemMutation","UpdateCustomFieldSequenceLookupListItemMutation","CreateCustomFieldLookupListItemMutation","EnquiryCustomFieldsList","wrapper","sidebar","sidebarInner","sidebarList","overflow","flexGrow","tabLoaderWrapper","EnquiryCustomFieldsPage","selectedTab","split","pop","tabSelected","CustomFieldGroups","tabKey","pageState","selectedTable","tabs","internalName","CustomFieldLookUpLists","isTabLoading","FirmSettingConfigurationBanner","onClickBack","List","ListItem","selected","ListItemAvatar","Avatar","ListItemText","EmailTemplateTypeEnum","retrieveEmailTemplateData","refreshData","onSuccess","onError","EmailTemplateQuery","isInternalRole","roleId","selectedUserId","emailType","UpdateEmailTemplate","DeleteEmailTemplate","subscriptionEmailTemplate","retrieveEmailTemplateListData","EmailTemplateListQuery","integrationTemplateId"],"mappings":"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","file":"static/js/main~21833f8f.ef9b1b4c.chunk.js","sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { Autocomplete, RenderInputParams } from '@material-ui/lab';\r\nimport { TextField, CircularProgress } from '@material-ui/core';\r\nimport match from 'autosuggest-highlight/match';\r\nimport parse from 'autosuggest-highlight/parse';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n })\r\n);\r\n\r\ninterface CustomFieldTypeSelectorProps {\r\n disabled?: boolean;\r\n required?: boolean;\r\n multiple?: boolean;\r\n // tslint:disable-next-line: no-any\r\n value?: CustomFieldTypeItem | any; // value only available in single select\r\n error?: boolean;\r\n onSelection?: (value: CustomFieldTypeItem | CustomFieldTypeItem[], name: string) => void;\r\n className?: string;\r\n helperText?: string;\r\n name?: string;\r\n label?: string;\r\n disablePortal?: boolean;\r\n disableCloseOnSelect?: boolean;\r\n onBlur?: React.FocusEventHandler;\r\n}\r\n\r\nexport const CustomFieldTypeSelector = (props: CustomFieldTypeSelectorProps) => {\r\n\r\n const classes = useStyles();\r\n\r\n const options: CustomFieldTypeItem[] = [\r\n { value: 0, label: 'Text' },\r\n { value: 1, label: 'Multi Line' },\r\n { value: 2, label: 'Integer' },\r\n { value: 3, label: 'Number' },\r\n { value: 4, label: 'Currency' },\r\n { value: 5, label: 'Date' },\r\n { value: 6, label: 'Date/Time' },\r\n { value: 7, label: 'Yes/No'},\r\n { value: 8, label: 'Lookup List' }, \r\n // { value: 9, label: 'File Upload' },\r\n { value: 10, label: 'Label' }\r\n ];\r\n\r\n // tslint:disable-next-line: no-any\r\n const handleChange = (event: React.ChangeEvent<{}>, value: any) => {\r\n // tslint:disable-next-line: no-console\r\n console.log('onChange', value);\r\n if (props.onSelection) {\r\n props.onSelection(value, props.name ? props.name : '');\r\n }\r\n };\r\n\r\n const getInputProps = (params: RenderInputParams, isLoading?: boolean) => {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n };\r\n\r\n return (\r\n
\r\n { props.multiple ? \r\n (\r\n option.label} \r\n getOptionSelected={(option, value) => value.value === option.value} \r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderInput={params => (\r\n \r\n )}\r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderOption={(option, { inputValue }) => {\r\n const matches = match(option.label, inputValue);\r\n const parts = parse(option.label, matches);\r\n \r\n return (\r\n
\r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n
\r\n );\r\n }}\r\n />\r\n )\r\n :\r\n (\r\n option.label} \r\n getOptionSelected={(option, value) => value.value === option.value} \r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderInput={params => (\r\n \r\n )}\r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderOption={(option, { inputValue }) => {\r\n const matches = match(option.label, inputValue);\r\n const parts = parse(option.label, matches);\r\n \r\n return (\r\n
\r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n
\r\n );\r\n }}\r\n />\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\n\r\nexport const FieldType = {\r\n Text: 0,\r\n 'Multi Line': 1,\r\n Integer: 2,\r\n Number: 3,\r\n Currency: 4,\r\n Date: 5,\r\n 'Date/Time': 6,\r\n 'Yes/No': 7,\r\n 'Lookup List': 8,\r\n // 'File Upload': 9\r\n 'Label': 10\r\n} as const;\r\n\r\nexport type FieldTypeKey = keyof typeof FieldType;\r\n\r\nexport type FieldTypeValue = typeof FieldType[FieldTypeKey];\r\n\r\nexport type CustomFieldTypeItem = {\r\n value: FieldTypeValue;\r\n label: FieldTypeKey;\r\n}\r\n\r\nexport const FieldTypeReverseMapping: { [key: number]: FieldTypeKey } = Object.keys(FieldType)\r\n .reduce((acc, key) => {\r\n const value = FieldType[key as FieldTypeKey];\r\n acc[value] = key as FieldTypeKey;\r\n return acc;\r\n }, {} as { [key: number]: FieldTypeKey });","import * as React from 'react';\r\n\r\nexport const TimerContext = React.createContext({});\r\n\r\ninterface TimerContextProps {}\r\n\r\ninterface TimerContextState {\r\n isTimerOpen: boolean;\r\n totalTimer: number;\r\n}\r\n\r\nclass TimerContextProvider extends React.Component {\r\n constructor(props: TimerContextProps, state: TimerContextState) {\r\n super(props, state);\r\n\r\n // this.toggleTimerDrawer = this.toggleTimerDrawer.bind(this);\r\n // this.tollgeTimerDrawerClosed = this.tollgeTimerDrawerClosed.bind(this);\r\n this.setTimerTotal = this.setTimerTotal.bind(this);\r\n this.setInitialTimerTotal = this.setInitialTimerTotal.bind(this);\r\n\r\n this.state = {\r\n isTimerOpen: false,\r\n totalTimer: 0,\r\n };\r\n }\r\n\r\n // toggleTimerDrawer() {\r\n // this.setState({ isTimerOpen: !this.state.isTimerOpen });\r\n // }\r\n\r\n // tollgeTimerDrawerClosed() {\r\n // this.setState({ isTimerOpen: false });\r\n // }\r\n\r\n setTimerTotal(total: number, operation: 'minus' | 'add') {\r\n if (operation === 'add') {\r\n this.setState({\r\n totalTimer: this.state.totalTimer + 1,\r\n });\r\n } else {\r\n this.setState({\r\n totalTimer: this.state.totalTimer - 1,\r\n });\r\n }\r\n }\r\n\r\n setInitialTimerTotal(total: number) {\r\n this.setState({\r\n totalTimer: total\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TimerContextProvider;\r\n","import React from 'react';\r\nimport { FieldType } from '../selectors/CustomFieldTypeSelector';\r\nimport { Field } from 'react-final-form';\r\nimport { Checkbox, FormControl, FormControlLabel, FormGroup, FormHelperText, FormLabel, TextField } from '@material-ui/core';\r\n// import { CurrencyInput2 } from '../../components/CurrencyInput';\r\nimport { KeyboardDatePicker } from '@material-ui/pickers/DatePicker/DatePicker';\r\nimport { KeyboardDateTimePicker } from '@material-ui/pickers/DateTimePicker/DateTimePicker';\r\n// import { DropzoneArea } from 'material-ui-dropzone';\r\n// import { DocumentFile } from '../../types/DocumentFile';\r\nimport { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport NumberFormat from 'react-number-format';\r\nimport { LightTooltip } from '../../helpers/commonHelper';\r\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\r\nimport { CustomField } from '../CustomFieldRepositores';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\n\r\nexport interface CustomFieldKeyProps {\r\n customFieldGuid: string;\r\n customFieldGroupGuid: string;\r\n customFieldId: string;\r\n customFieldType: number;\r\n customFieldValue: any;\r\n [key: string]: any;\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nconst required = (value: any) => {\r\n return value ? undefined : 'Required';\r\n};\r\n\r\nexport const getField = (field: CustomField, index: number, customFieldGroupGuid?: string ) => {\r\n\r\n if (field.customFieldType === FieldType.Label) {\r\n return (\r\n \r\n
\r\n {field.description}\r\n
\r\n \r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n } else if (field.customFieldType === FieldType.Integer) { \r\n return (\r\n \r\n {({ input, meta }) => (\r\n \r\n {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: event.target.value ? parseInt(event.target.value) : null,\r\n }\r\n input.onChange(tempValue);\r\n }}\r\n \r\n />\r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n if (field.customFieldType === FieldType['Multi Line']) { \r\n return (\r\n \r\n {({ input, meta }) => (\r\n \r\n {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: event.target.value,\r\n }\r\n input.onChange(tempValue);\r\n }}\r\n />\r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n if (field.customFieldType === FieldType.Number) { \r\n return (\r\n \r\n {({ input, meta }) => (\r\n \r\n {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: event.target.value ? parseFloat(event.target.value) : null,\r\n }\r\n input.onChange(tempValue);\r\n }}\r\n />\r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n if (field.customFieldType === FieldType.Currency) {\r\n return (\r\n \r\n {({ input, meta }) => (\r\n \r\n {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: event.target.value ? parseFloat(event.target.value) : null,\r\n }\r\n input.onChange(tempValue);\r\n }}\r\n />\r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n if (field.customFieldType === FieldType.Date) {\r\n return (\r\n \r\n {({ input, meta }) => (\r\n \r\n {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: date,\r\n };\r\n input.onChange(tempValue);\r\n }}\r\n />\r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n if (field.customFieldType === FieldType['Date/Time']) {\r\n return (\r\n \r\n {({ input, meta }) => (\r\n \r\n {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: date,\r\n };\r\n input.onChange(tempValue);\r\n }}\r\n />\r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n if (field.customFieldType === FieldType['Yes/No']) {\r\n \r\n return (\r\n \r\n {({ input, meta }) => {\r\n \r\n const helperText = meta.error && meta.touched ? meta.error : field.name;\r\n\r\n return (\r\n \r\n \r\n \r\n {field.description}\r\n \r\n \r\n {\r\n if (input.value.customFieldValue === true) { \r\n input.onChange(undefined);\r\n } else {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: true,\r\n }\r\n input.onChange(tempValue);\r\n }\r\n }}\r\n checkedIcon={}\r\n />\r\n }\r\n label=\"Yes\"\r\n />\r\n {\r\n if (input.value.customFieldValue === false) { \r\n input.onChange(undefined);\r\n } else {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: false,\r\n }\r\n input.onChange(tempValue);\r\n }\r\n }}\r\n checkedIcon={}\r\n />\r\n }\r\n label=\"No\"\r\n />\r\n \r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n {helperText && (\r\n {helperText}\r\n )}\r\n \r\n );\r\n }}\r\n \r\n );\r\n }\r\n\r\n // if (field.customFieldType === FieldType['File Upload']) {\r\n // return (\r\n // \r\n // {({ input, meta }) => (\r\n // \r\n // \r\n // \r\n // }\r\n // >\r\n // \r\n // \r\n // \r\n // {\r\n // let existingFiles: DocumentFile[] = [...input.value as any];\r\n // const newFiles = files.filter((file: File) => {\r\n // return !existingFiles.some((item: DocumentFile) => {\r\n // return item.name === file.name && item.status !== 2;\r\n // });\r\n // });\r\n // if (newFiles && newFiles.length > 0) {\r\n // newFiles.forEach((file: File) => {\r\n // const documentFile: DocumentFile = {\r\n // guidID: null,\r\n // file: file,\r\n // status: 1,\r\n // name: file.name,\r\n // url: ''\r\n // };\r\n // existingFiles.push(documentFile);\r\n // });\r\n\r\n // const tempValue: CustomFieldKeyProps = {\r\n // customFieldGuid: field.guid,\r\n // customFieldGroupGuid: customFieldGroupGuid || '',\r\n // customFieldId: field.customFieldId,\r\n // customFieldType: field.customFieldType,\r\n // customFieldValue: existingFiles,\r\n // };\r\n\r\n // input.onChange(tempValue);\r\n // }\r\n // }}\r\n // onDelete={(file: File) => {\r\n // let existingFiles: DocumentFile[] = [...input.value as any];\r\n // // eslint-disable-next-line array-callback-return\r\n // existingFiles.map((item: DocumentFile) => {\r\n // if (file.name === item.name) {\r\n // item.file = file;\r\n // item.status = 2; // deleted\r\n // }\r\n // });\r\n // // tslint:disable-next-line: max-line-length\r\n // const filteredFiles = existingFiles.filter((item: DocumentFile) => {\r\n // return item.status !== 2 || item.guidID !== null;\r\n // });\r\n // input.onChange(filteredFiles);\r\n // }}\r\n // // tslint:disable-next-line\r\n // onDrop={(files: File[], event: any) => {\r\n // // let existingFiles: DocumentFile[] = [...input.value];\r\n // // tslint:disable-next-line: max-line-length\r\n // // const existingFile = existingFiles.find((item: DocumentFile) => item.name === file)\r\n // // tslint:disable-next-line:no-console\r\n // console.log(event);\r\n // }}\r\n // onDropRejected={() => {\r\n // // return input.errorNotice('Maximum file upload size is 15MB');\r\n // }}\r\n // initialFiles={input.value ? input.value.customFieldValue.map((file: { url: string; }) => file.url) : []}\r\n // />\r\n // \r\n // )}\r\n // \r\n // );\r\n // }\r\n\r\n if (field.customFieldType === FieldType['Lookup List'] && field.customFieldLookupItems) {\r\n\r\n const options: IAutoCompleteItem[] = field.customFieldLookupItems.map((item) => {\r\n return { \r\n ...item,\r\n value: item.guidId, \r\n label: item.description \r\n };\r\n }).sort((a, b) => a.sequence - b.sequence);\r\n\r\n return (\r\n \r\n {({ input, meta }) => {\r\n return (\r\n \r\n option.label}\r\n onChange={(_, value) => {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: value,\r\n }\r\n input.onChange(tempValue);\r\n }}\r\n // getOptionSelected={(option, value) => option.v === input.value.customFieldValue}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n );\r\n }}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {({ input, meta }) => (\r\n \r\n {\r\n const tempValue: CustomFieldKeyProps = {\r\n customFieldGuid: field.guid,\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n customFieldId: field.customFieldId,\r\n customFieldType: field.customFieldType,\r\n customFieldValue: event.target.value,\r\n }\r\n input.onChange(tempValue);\r\n }}\r\n />\r\n {field.instructions && (\r\n \r\n }\r\n >\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n \r\n};\r\n\r\ninterface NumberFormatCustomProps {\r\n inputRef: (instance: NumberFormat | null) => void;\r\n onChange: (event: { target: { name: string; value: string } }) => void;\r\n name: string;\r\n prefix?: string;\r\n }\r\n \r\nfunction NumberFormatCustom(props: NumberFormatCustomProps) {\r\n const { inputRef, onChange, ...other } = props;\r\n \r\n return (\r\n {\r\n onChange({\r\n target: {\r\n name: props.name,\r\n value: values.value,\r\n },\r\n });\r\n }}\r\n thousandSeparator\r\n isNumericString\r\n prefix={props.prefix || '$'}\r\n />\r\n );\r\n}","import gql from \"graphql-tag\";\r\n\r\nexport type CustomFieldByHierarchyQueryParams = {\r\n customFieldGroupGuid: string | null;\r\n areaOfLawGuid: string | null;\r\n};\r\n\r\nexport type CustomFieldByHierarchyData = {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n crm: CRM;\r\n};\r\n\r\nexport type CRM = {\r\n customFieldByHierarchy: CustomFieldByHierarchy[];\r\n};\r\n\r\nexport type CustomFieldByHierarchy = {\r\n customFieldGroupGuid: string;\r\n customFieldGroupName: string;\r\n customFieldGroupDescription: string;\r\n count: number;\r\n customField: CustomField[];\r\n};\r\n\r\nexport type CustomField = {\r\n guid: string;\r\n customFieldId: string;\r\n name: string;\r\n description: null | string;\r\n instructions: null | string;\r\n customFieldType: number;\r\n customFieldLookupListGuid: null | string;\r\n customFieldLookupListDescription: null | string;\r\n isMandatory: boolean;\r\n isActive: boolean;\r\n sequence: number;\r\n customFieldLookupItems: CustomFieldLookupItem[] | null;\r\n};\r\n\r\nexport type CustomFieldLookupItem = {\r\n guidId: string;\r\n description: string;\r\n sequence: number;\r\n};\r\n\r\nexport const CustomFieldByHierarchyQuery = gql`\r\n query CustomFieldByHierarchy ($customFieldGroupGuid: String, $areaOfLawGuid: String) {\r\n crm {\r\n customFieldByHierarchy (customFieldGroupGuid: $customFieldGroupGuid, areaOfLawGuid: $areaOfLawGuid) {\r\n customFieldGroupGuid\r\n customFieldGroupName\r\n customFieldGroupDescription\r\n count\r\n customField {\r\n guid\r\n customFieldId\r\n name\r\n description\r\n instructions\r\n customFieldType\r\n customFieldLookupListGuid\r\n customFieldLookupListDescription\r\n isMandatory\r\n isActive\r\n sequence\r\n customFieldLookupItems {\r\n guidId\r\n description\r\n sequence\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;","import { \r\n Badge,\r\n Chip,\r\n CircularProgress,\r\n createStyles,\r\n IconButton,\r\n InputAdornment,\r\n lighten,\r\n makeStyles, \r\n Paper, \r\n Table, \r\n TableBody, \r\n TableCell, \r\n TableContainer, \r\n TableHead, \r\n TableRow, \r\n TextField, \r\n Theme, \r\n Toolbar,\r\n Tooltip,\r\n Typography\r\n} from '@material-ui/core';\r\nimport React, { useEffect, useState } from 'react';\r\n// tslint:disable-next-line: max-line-length\r\nimport { \r\n DragDropContext, \r\n Draggable, \r\n // DraggableProvided, \r\n // DraggableStateSnapshot, \r\n Droppable, \r\n DropResult, \r\n ResponderProvided \r\n} from 'react-beautiful-dnd';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport AddBoxRoundedIcon from '@material-ui/icons/AddBoxRounded';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Check from '@material-ui/icons/Check';\r\nimport _ from 'lodash';\r\nimport { useQuery } from 'react-apollo';\r\nimport gql from 'graphql-tag';\r\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\r\nimport LocalOfferOutlinedIcon from '@material-ui/icons/LocalOfferOutlined';\r\nimport { mainTheme } from '../../../Theme';\r\nimport { client } from '../../..';\r\nimport { showNotification } from '../../../App';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n paper: {\r\n width: '100%',\r\n marginBottom: theme.spacing(2),\r\n position: 'relative'\r\n },\r\n loadingWrapper: {\r\n position: 'absolute',\r\n zIndex: 1,\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: 'rgba(255,255,255, 0.6)',\r\n },\r\n icon: {\r\n color: mainTheme.BrandColors.TemplatePrimary,\r\n },\r\n tableCell: {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n '&:hover': {\r\n '& .drag-icon': {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n }\r\n }\r\n },\r\n textField: {\r\n minWidth: 200,\r\n maxWidth: '100%',\r\n },\r\n dragIcon: {\r\n marginLeft: '-10px',\r\n marginRight: 10,\r\n color: '#BDBDBD'\r\n },\r\n tableContentWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n description: {\r\n cursor: 'pointer'\r\n }\r\n })\r\n);\r\n\r\nconst useToolbarStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(1),\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n highlight:\r\n theme.palette.type === 'light'\r\n ? {\r\n color: theme.palette.secondary.main,\r\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\r\n }\r\n : {\r\n color: theme.palette.text.primary,\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n title: {\r\n flex: '1 1 100%',\r\n },\r\n icon: {\r\n color: mainTheme.BrandColors.TemplatePrimary,\r\n },\r\n rightToolbarWrapper: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n tableTitle: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n },\r\n tableHeading: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n chip: {\r\n marginLeft: '8px'\r\n },\r\n })\r\n);\r\n\r\ninterface EnhancedTableToolbarProps {\r\n title: string;\r\n count?: React.ReactNode;\r\n onClickAdd?: () => void;\r\n onSearch?: (search: string) => void;\r\n}\r\n\r\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\r\n\r\n const classes = useToolbarStyles();\r\n\r\n const [search, setSearch] = useState('');\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n \r\n setSearch(event.target.value);\r\n\r\n if (props.onSearch) {\r\n props.onSearch(event.target.value);\r\n }\r\n };\r\n\r\n const clearSearch = () => {\r\n setSearch('');\r\n if (props.onSearch) {\r\n props.onSearch('');\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n {props.title}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n ),\r\n endAdornment: (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }}\r\n onChange={handleChange}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\ninterface CustomFieldLookUpListsTabItem extends CustomFieldLookupList {\r\n isEdit: boolean;\r\n isDelete: boolean;\r\n}\r\n\r\ninterface CustomFieldLookUpListsTabState {\r\n items: CustomFieldLookUpListsTabItem[];\r\n isAdd: boolean;\r\n search: string;\r\n isDelete: boolean;\r\n isEdit: boolean;\r\n}\r\n\r\nexport default function CustomFieldLookUpListsTab() {\r\n\r\n const classes = useStyles();\r\n \r\n const history = useHistory();\r\n\r\n const location = useLocation();\r\n\r\n const searchParams = new URLSearchParams(location.search);\r\n\r\n const tab = searchParams.get('tab');\r\n\r\n const { loading, error, data, refetch } = useQuery(CustomFieldLookupListQuery);\r\n\r\n const [state, setState] = useState({\r\n items: [],\r\n isAdd: false,\r\n search: '',\r\n isEdit: false,\r\n isDelete: false,\r\n });\r\n\r\n const textFieldPlaceHolder = 'Description';\r\n\r\n useEffect(() => {\r\n if (!error && data && data.crm && data.crm.customFieldLookupList ) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n items: data.crm.customFieldLookupList.map((value) => {\r\n return { \r\n guidId: value.guidId,\r\n description: value.description,\r\n sequence: value.sequence,\r\n customFieldLookupListItemCount: value.customFieldLookupListItemCount,\r\n isDelete: false,\r\n isEdit: false\r\n };\r\n }).sort((a, b) => a.sequence < b.sequence ? -1 : a.sequence > b.sequence ? 1 : 0)\r\n };\r\n });\r\n }\r\n // tslint:disable-next-line: align\r\n }, [data, error, loading]);\r\n\r\n useEffect(() => {\r\n \r\n const subscribeFirmObj = subscribeFirm();\r\n\r\n return () => {\r\n subscribeFirmObj.unsubscribe();\r\n };\r\n // tslint:disable-next-line: align\r\n }, []);\r\n\r\n const subscribeFirm = () => {\r\n return (\r\n // let subscription =\r\n client\r\n .subscribe({\r\n fetchPolicy: 'no-cache',\r\n query: CustomFieldLookupNotificationSubscription,\r\n variables: {},\r\n })\r\n .subscribe({\r\n // tslint:disable-next-line:no-any\r\n next(results) {\r\n if (results.data?.lookupNotification.status) {\r\n\r\n const { lookupNotification } = results.data;\r\n\r\n showNotification('Success', lookupNotification.message, 'info');\r\n\r\n refetch();\r\n\r\n } else {\r\n showNotification('Failed', results.data?.lookupNotification.message || '', 'error');\r\n }\r\n },\r\n // tslint:disable-next-line:no-any\r\n error(err: any) {\r\n // tslint:disable-next-line:no-console\r\n console.error(err);\r\n showNotification(null, err, 'error');\r\n },\r\n })\r\n );\r\n };\r\n \r\n let textField = '';\r\n\r\n // itemInputRef.current = getItems(10).map((ref, index) => itemInputRef.current[index] = React.createRef());\r\n\r\n const reorder = (list: CustomFieldLookUpListsTabItem[], startIndex: number, endIndex: number) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n \r\n return result;\r\n };\r\n\r\n const onDragEnd = (result: DropResult, provided: ResponderProvided) => {\r\n // dropped outside the list\r\n if (!result.destination) {\r\n return;\r\n }\r\n \r\n const items = reorder(\r\n state.items,\r\n result.source.index,\r\n result.destination.index\r\n ).map((item: CustomFieldLookUpListsTabItem, index: number) => {\r\n return {\r\n ...item,\r\n sequence: index\r\n };\r\n });\r\n\r\n setState((prevState) => {\r\n \r\n client\r\n .mutate({\r\n mutation: UpdateCustomFieldSequenceLookupListMutation,\r\n variables: {\r\n lookupSequences: items.map((item: CustomFieldLookUpListsTabItem) => {\r\n return {\r\n guidId: item.guidId, \r\n sequence: item.sequence\r\n };\r\n })\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to update Task Type Group sorting', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to update Task Type Group sorting', reason, 'error');\r\n });\r\n\r\n return {\r\n ...prevState,\r\n items\r\n };\r\n });\r\n\r\n };\r\n\r\n // const getListStyle = (isDraggingOver: boolean) => ({\r\n // background: isDraggingOver ? 'lightblue' : 'lightgrey',\r\n // padding: grid,\r\n // width: 250\r\n // });\r\n\r\n // tslint:disable-next-line: no-any\r\n const getItemStyle = (isDragging: boolean, draggableStyle: any) => ({\r\n // styles we need to apply on draggables\r\n ...draggableStyle,\r\n\r\n ...(isDragging && {\r\n background: 'rgb(235,235,235)'\r\n }),\r\n position: 'static',\r\n zIndex: 1\r\n });\r\n\r\n const onClickAdd = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isAdd: true\r\n };\r\n });\r\n };\r\n\r\n const onClickCancel = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isAdd: false,\r\n isEdit: false,\r\n isDelete: false,\r\n };\r\n });\r\n };\r\n\r\n const onSearch = (search: string) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n search\r\n };\r\n });\r\n };\r\n\r\n const onEditRowEnable = (item: CustomFieldLookUpListsTabItem) => () => {\r\n const items = [...state.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isEdit = true;\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n items,\r\n isEdit: true,\r\n };\r\n });\r\n };\r\n\r\n const onCancelEditRow = (item: CustomFieldLookUpListsTabItem) => () => {\r\n // code here..\r\n const items = [...state.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isEdit = false;\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n items,\r\n isEdit: false,\r\n };\r\n });\r\n };\r\n\r\n const onEditRow = (item: CustomFieldLookUpListsTabItem, index: number) => () => {\r\n\r\n if (textField) {\r\n\r\n setState((prevState) => {\r\n client\r\n .mutate({\r\n mutation: UpdateCustomFieldLookupListMutation,\r\n variables: {\r\n guidId: item.guidId,\r\n description: textField,\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to Update Task Type Group', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Update Task Type Group', reason, 'error');\r\n });\r\n\r\n const tdata = [...prevState.items];\r\n tdata[tdata.indexOf(item)].isEdit = false;\r\n tdata[tdata.indexOf(item)].description = textField;\r\n \r\n return { \r\n ...prevState, \r\n data: tdata,\r\n isEdit: false\r\n };\r\n });\r\n }\r\n };\r\n\r\n const onDeleteRowEnable = (item: CustomFieldLookUpListsTabItem) => () => {\r\n\r\n setState((prevState) => {\r\n\r\n const items = [...prevState.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isDelete = true;\r\n\r\n return {\r\n ...prevState,\r\n items,\r\n isDelete: true\r\n };\r\n });\r\n };\r\n\r\n const onCancelDeleteRow = (item: CustomFieldLookUpListsTabItem) => () => {\r\n // code here..\r\n\r\n setState((prevState) => {\r\n\r\n const items = [...prevState.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isDelete = false;\r\n\r\n return {\r\n ...prevState,\r\n items,\r\n isDelete: false\r\n };\r\n });\r\n };\r\n\r\n const onDeleteRow = (item: CustomFieldLookUpListsTabItem) => () => {\r\n \r\n setState((prevState) => {\r\n\r\n client\r\n .mutate({\r\n mutation: DeleteCustomFieldLookupListMutation,\r\n variables: {\r\n guidId: item.guidId,\r\n description: item.description\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to Delete Task Type Group', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Delete Task Type Group', reason, 'error');\r\n });\r\n\r\n const tItems = [...prevState.items];\r\n tItems.splice(tItems.indexOf(item), 1);\r\n\r\n return {\r\n ...prevState,\r\n isDelete: false,\r\n items: tItems\r\n };\r\n });\r\n };\r\n\r\n const onAddItem = () => {\r\n \r\n if (textField) {\r\n\r\n client\r\n .mutate({\r\n mutation: CreateCustomFieldLookupListMutation,\r\n variables: {\r\n description: textField,\r\n sequence: state.items.length + 1,\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results) => {\r\n if (results.data) {\r\n if (!results.data.createCustomFieldLookupList) {\r\n showNotification(null, 'Failed to create custom field', 'error');\r\n } else {\r\n showNotification(null, 'Create custom field submitted', 'info');\r\n setState((prevState) => {\r\n\r\n // const tItems = [...prevState.items];\r\n \r\n // tItems.push({\r\n // guidId: '',\r\n // description: textField,\r\n // sequence: prevState.items.length,\r\n // customFieldLookupListItemCount: 0,\r\n // isEdit: false,\r\n // isDelete: false,\r\n // });\r\n \r\n return {\r\n ...prevState,\r\n isAdd: false,\r\n // items: tItems\r\n };\r\n });\r\n }\r\n \r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to create Task Type Group', reason, 'error');\r\n });\r\n }\r\n \r\n };\r\n\r\n const onClickTagCounts = (item: CustomFieldLookUpListsTabItem) => () => {\r\n \r\n history.push({\r\n pathname: 'enquiryCustomFieldsConfiguration',\r\n search: `?tab=${tab}&tabKey=${item.guidId}&title=${item.description}`,\r\n });\r\n\r\n };\r\n\r\n const onChangeUpdate = (item: CustomFieldLookUpListsTabItem, index: number) => (event: React.ChangeEvent) => {\r\n textField = event.target.value;\r\n };\r\n\r\n const onChangeAdd = (event: React.ChangeEvent) => {\r\n textField = event.target.value;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const DroppableComponent = (onDragEndComponent: (result: DropResult, provided: ResponderProvided) => void) => (props: any) => {\r\n return (\r\n \r\n \r\n {(provided) => {\r\n return (\r\n \r\n {props.children}\r\n {provided.placeholder}\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const DraggableComponent = (item: CustomFieldLookUpListsTabItem, index: number) => (props: any) => {\r\n return (\r\n \r\n {(provided, snapshot) => (\r\n \r\n {!!(!item.isDelete && !item.isEdit) && (\r\n <>\r\n \r\n
\r\n \r\n \r\n {item.description}\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {!!(item.isDelete && state.isDelete) && (\r\n <>\r\n \r\n Are you sure you want to delete this row?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!!(item.isEdit && state.isEdit) && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n const getDraggableRows = () => {\r\n let filteredItems = state.items;\r\n \r\n if (state.search) {\r\n filteredItems = state.items.filter((item: CustomFieldLookUpListsTabItem) => {\r\n return item.description.toLowerCase().indexOf(state.search) >= 0;\r\n });\r\n } \r\n\r\n return (\r\n _.map(filteredItems, (item, index) => {\r\n return (\r\n \r\n );\r\n })\r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n {!!loading && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n Description\r\n Count\r\n Actions\r\n \r\n \r\n \r\n {!!state.isAdd && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {\r\n getDraggableRows()\r\n }\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\ninterface CustomFieldLookupListData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n crm: CRM;\r\n};\r\n\r\ntype CRM = {\r\n customFieldLookupList: CustomFieldLookupList[];\r\n};\r\n\r\ntype CustomFieldLookupList = {\r\n guidId: string;\r\n description: string;\r\n customFieldLookupListItemCount: number;\r\n sequence: number;\r\n};\r\n\r\n\r\nconst CustomFieldLookupListQuery = gql`\r\n query CustomFieldLookupList {\r\n crm {\r\n customFieldLookupList {\r\n guidId\r\n description\r\n customFieldLookupListItemCount\r\n sequence\r\n }\r\n }\r\n }\r\n`;\r\n\r\ntype CustomFieldLookupNotificationSubscriptionData = {\r\n lookupNotification: LookupNotification;\r\n};\r\n\r\ntype LookupNotification = {\r\n id: number;\r\n guidId: null;\r\n lookupDescription: null;\r\n message: string;\r\n status: boolean;\r\n};\r\n\r\n\r\nconst CustomFieldLookupNotificationSubscription = gql`\r\n subscription customFieldLookupNotification {\r\n lookupNotification{\r\n id,\r\n guidId,\r\n lookupDescription,\r\n message,\r\n status\r\n }\r\n }\r\n`;\r\n\r\ntype CreateCustomFieldLookupListMutationParams = {\r\n description: string;\r\n sequence: number;\r\n};\r\n\r\ntype CreateCustomFieldLookupListMutationData = {\r\n createCustomFieldLookupList: boolean;\r\n};\r\n\r\nconst CreateCustomFieldLookupListMutation = gql`\r\n mutation CreateCustomFieldLookupList($description: String, $sequence: Int) {\r\n createCustomFieldLookupList(description: $description, sequence: $sequence)\r\n }\r\n`;\r\n\r\nconst UpdateCustomFieldLookupListMutation = gql`\r\n mutation UpdateCustomFieldLookupList($description: String, $guidId: String) {\r\n updateCustomFieldLookupList(description: $description, guidId: $guidId)\r\n }\r\n`;\r\n\r\nconst DeleteCustomFieldLookupListMutation = gql`\r\n mutation DeleteCustomFieldLookupList($description: String, $guidId: String) {\r\n deleteCustomFieldLookupList(description: $description, guidId: $guidId)\r\n }\r\n`;\r\n\r\nconst UpdateCustomFieldSequenceLookupListMutation = gql`\r\n mutation UpdateCustomFieldSequenceLookupList($lookupSequences: [LookupSequence]) {\r\n updateCustomFieldLookupListSequence(lookupSequences: $lookupSequences)\r\n }\r\n`;","import React from 'react';\r\nimport Dialog, { DialogProps } from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { Button, Checkbox, FormControlLabel, Grid, TextField, Theme, createStyles, makeStyles } from '@material-ui/core';\r\nimport { Field, Form } from 'react-final-form';\r\nimport { FormApi, ValidationErrors } from 'final-form';\r\nimport { checkIfIntialValuesIsEqualToValues } from '../../helpers/commonHelper';\r\nimport DialogBox from '../../Dashboard/Component/DialogBox';\r\nimport { AreaOfLawSelector, IAreaOfLawAutoCompleteItem } from '../../enquirySummary/selectors/AreaOfLawSelector';\r\n// import { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport gql from 'graphql-tag';\r\nimport { client } from '../..';\r\nimport { showNotification } from '../../App';\r\nimport { CustomFieldGroup } from '../tabs/customFieldGroups/CustomFieldGroupsTab';\r\n// import { OfficeSelector } from '../../MailingList/selectors/OfficeSelector';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n textTransform: 'capitalize',\r\n },\r\n buttonContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n minWidth: '83px',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n }),\r\n);\r\n\r\ninterface CustomFieldGroupDialogProps extends Pick {\r\n data?: CustomFieldGroup;\r\n}\r\n\r\ninterface CustomFieldForm {\r\n isFormSubmit: boolean;\r\n name: string | null;\r\n groupId: string | null;\r\n description: string | null;\r\n areaOfLaw: IAreaOfLawAutoCompleteItem | null;\r\n // location: IAutoCompleteItem | null;\r\n isActive: boolean;\r\n}\r\n\r\nexport const CustomFieldGroupDialog: React.FC = (props) => {\r\n const classes = useStyles();\r\n\r\n const [showDiscard, setShowDiscard] = React.useState(false);\r\n \r\n const initialValues: CustomFieldForm = {\r\n isFormSubmit: false,\r\n name: props.data ? props.data.name : null,\r\n areaOfLaw: props.data && props.data.areaOfLaw && props.data.areaOfLawGuid ? { label: props.data.areaOfLaw, value: props.data.areaOfLawGuid } as any : null,\r\n description: props.data ? props.data.description : null,\r\n groupId: props.data ? props.data.groupId : null,\r\n isActive: props.data ? props.data.isActive : false,\r\n // location: props.data && props.data.location && props.data.locationGuid ? { label: props.data.location, value: props.data.locationGuid } : null,\r\n };\r\n\r\n const handleClose = (form: FormApi, values: CustomFieldForm) => () => {\r\n\r\n const areValuesEqual = checkIfIntialValuesIsEqualToValues(initialValues, values);\r\n\r\n if (!areValuesEqual) {\r\n setShowDiscard(true);\r\n } else {\r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n }\r\n };\r\n\r\n const onDiscardChanges = (agree: boolean) => {\r\n if (agree) {\r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n }\r\n setShowDiscard(false);\r\n };\r\n\r\n const onSubmit = (values: CustomFieldForm, form: FormApi) => {\r\n // tslint:disable-next-line: no-console\r\n console.log('onSubmit', values);\r\n\r\n if (!props.data) {\r\n client.mutate({\r\n mutation: CreateEnquiryCustomFieldGroupMutation,\r\n variables: {\r\n areaOfLawGuid: values.areaOfLaw ? values.areaOfLaw.value : null,\r\n description: values.description,\r\n groupId: values.groupId || '',\r\n groupName: values.name || '',\r\n isActive: values.isActive,\r\n // locationGuid: values.location ? values.location.value : null,\r\n }\r\n })\r\n .then((results) => { \r\n if (results.data) {\r\n if (results.data.createEnquiryCustomFieldGroup.status && results.data.createEnquiryCustomFieldGroup.error === null) {\r\n showNotification(null, 'Create custom field submitted', 'info'); \r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n } else {\r\n showNotification(null, 'Create custom field failed', 'error');\r\n }\r\n } \r\n }) // tslint:disable-next-line:no-any\r\n .catch((reason) => { \r\n showNotification(null, reason, 'error'); \r\n });\r\n } else {\r\n\r\n console.log('values', values);\r\n\r\n client.mutate({\r\n mutation: UpdateEnquiryCustomFieldGroupMutation,\r\n variables: {\r\n guidId: props.data.guid,\r\n areaOfLawGuid: values.areaOfLaw ? values.areaOfLaw.value : null,\r\n description: values.description,\r\n groupId: values.groupId || '',\r\n groupName: values.name || '',\r\n isActive: values.isActive,\r\n // locationGuid: values.location ? values.location.value : null,\r\n }\r\n })\r\n .then((results) => { \r\n if (results.data) {\r\n if (results.data.updateEnquiryCustomFieldGroup.status && results.data.updateEnquiryCustomFieldGroup.error === null) {\r\n showNotification(null, 'Create custom field submitted', 'info'); \r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n } else {\r\n showNotification(null, 'Create custom field failed', 'error');\r\n }\r\n } \r\n }) // tslint:disable-next-line:no-any\r\n .catch((reason) => { \r\n showNotification(null, reason, 'error'); \r\n });\r\n }\r\n };\r\n\r\n const onValdiate = (values: CustomFieldForm) => {\r\n return undefined;\r\n };\r\n\r\n const onRequired = (value: CustomFieldForm) => (value ? undefined : 'Required');\r\n\r\n const validateGroupId = (value: string) => {\r\n if (!value) {\r\n return 'Required';\r\n }\r\n if (value.length !== 3) {\r\n return 'Group ID must be at least 3 characters';\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n const onFieldRequiredError = (errors: ValidationErrors, form: FormApi, values: CustomFieldForm) => {\r\n // code here\r\n console.log('errors', errors);\r\n };\r\n \r\n const controlButtonComponent = (form: FormApi, submitting: boolean, pristine: boolean, values: CustomFieldForm) => {\r\n return (\r\n
\r\n {/* */}\r\n
\r\n {\r\n form.change('isFormSubmit', true);\r\n form.submit();\r\n }}\r\n >\r\n Save\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n };\r\n \r\n const standarFields = (form: FormApi, submitting: boolean, pristine: boolean, values: CustomFieldForm) => {\r\n return (\r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n {\r\n input.onChange(selection);\r\n }}\r\n onBlur={input.onBlur}\r\n />\r\n )}\r\n \r\n \r\n {/* \r\n \r\n {({ input, meta }) => (\r\n \r\n input.onChange(selection)\r\n }\r\n helperText={meta.error && meta.touched\r\n ? 'Location is required'\r\n : ''\r\n }\r\n />\r\n )}\r\n \r\n */}\r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Active\"\r\n />\r\n )}\r\n \r\n \r\n \r\n );\r\n };\r\n \r\n return (\r\n <>\r\n \r\n\r\n true}\r\n // debug={(values) => {\r\n // // tslint:disable-next-line: no-console\r\n // console.log('Debug Values', values);\r\n // }}\r\n subscription={{ submitting: true, pristine: true, values: true, errors: true }}\r\n render={({ errors, handleSubmit, form, submitting, pristine, values }) => {\r\n if (values.isFormSubmit) {\r\n onFieldRequiredError(errors, form, values);\r\n }\r\n\r\n return (\r\n
\r\n \r\n Custom Field Group\r\n {standarFields(form, submitting, pristine, values)}\r\n {controlButtonComponent(form, submitting, pristine, values)}\r\n \r\n
\r\n );\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\n\r\n\r\ntype CreateEnquiryCustomFieldGroupMutationParams = {\r\n groupId: string;\r\n groupName: string;\r\n description: string | null;\r\n areaOfLawGuid: string | null;\r\n // locationGuid: string | null;\r\n isActive: boolean | null;\r\n};\r\n\r\ntype CreateEnquiryCustomFieldGroupMutationData = {\r\n createEnquiryCustomFieldGroup: CreateEnquiryCustomFieldGroup;\r\n};\r\n\r\ntype CreateEnquiryCustomFieldGroup = {\r\n error: null;\r\n status: boolean;\r\n};\r\n\r\nconst CreateEnquiryCustomFieldGroupMutation = gql`\r\n mutation CreateEnquiryCustomFieldGroup (\r\n $groupId: String,\r\n $groupName: String,\r\n $description: String,\r\n $areaOfLawGuid: String,\r\n $locationGuid: String,\r\n $isActive: Boolean\r\n ) {\r\n createEnquiryCustomFieldGroup(\r\n groupId: $groupId,\r\n groupName: $groupName,\r\n description: $description,\r\n areaOfLawGuid: $areaOfLawGuid,\r\n locationGuid: $locationGuid,\r\n isActive: $isActive\r\n ) {\r\n error\r\n status\r\n }\r\n }\r\n`;\r\n\r\ntype UpdateEnquiryCustomFieldGroupMutationParams = {\r\n guidId: string;\r\n groupId: string;\r\n groupName: string;\r\n description: string | null;\r\n areaOfLawGuid: string | null;\r\n // locationGuid: string | null;\r\n isActive: boolean | null;\r\n};\r\n\r\ntype UpdateEnquiryCustomFieldGroupMutationData = {\r\n updateEnquiryCustomFieldGroup: UpdateEnquiryCustomFieldGroup;\r\n};\r\n\r\ntype UpdateEnquiryCustomFieldGroup = {\r\n error: null;\r\n status: boolean;\r\n};\r\n\r\nconst UpdateEnquiryCustomFieldGroupMutation = gql`\r\n mutation UpdateEnquiryCustomFieldGroup (\r\n $guidId: String,\r\n $groupId: String,\r\n $groupName: String,\r\n $description: String,\r\n $areaOfLawGuid: String,\r\n $locationGuid: String,\r\n $isActive: Boolean\r\n ) {\r\n updateEnquiryCustomFieldGroup(\r\n guidId: $guidId,\r\n groupId: $groupId,\r\n groupName: $groupName,\r\n description: $description,\r\n areaOfLawGuid: $areaOfLawGuid,\r\n locationGuid: $locationGuid,\r\n isActive: $isActive\r\n ) {\r\n error\r\n status\r\n }\r\n }\r\n`;","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { Autocomplete, RenderInputParams } from '@material-ui/lab';\r\nimport { TextField, CircularProgress } from '@material-ui/core';\r\nimport match from 'autosuggest-highlight/match';\r\nimport parse from 'autosuggest-highlight/parse';\r\nimport gql from 'graphql-tag';\r\nimport { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n })\r\n);\r\n\r\nexport type CustomFieldLookUpListItem = IAutoCompleteItem;\r\n\r\ninterface CustomFieldLookupListSelectorProps {\r\n disabled?: boolean;\r\n required?: boolean;\r\n multiple?: boolean;\r\n // tslint:disable-next-line: no-any\r\n value?: CustomFieldLookUpListItem | any; // value only available in single select\r\n error?: boolean;\r\n onSelection?: (value: CustomFieldLookUpListItem | CustomFieldLookUpListItem[], name: string) => void;\r\n className?: string;\r\n helperText?: string;\r\n name?: string;\r\n label?: string;\r\n disablePortal?: boolean;\r\n disableCloseOnSelect?: boolean;\r\n onBlur?: React.FocusEventHandler;\r\n}\r\n\r\nexport const CustomFieldLookupListSelector = (props: CustomFieldLookupListSelectorProps) => {\r\n\r\n const classes = useStyles();\r\n\r\n const customFieldLookupListQuery = useQuery(CustomFieldLookupListQuery);\r\n\r\n const handleChange = (event: React.ChangeEvent<{}>, value: CustomFieldLookUpListItem[]) => {\r\n // tslint:disable-next-line: no-console\r\n console.log('onChange', value);\r\n\r\n if (props.onSelection) {\r\n props.onSelection(value, props.name ? props.name : 'office');\r\n }\r\n };\r\n\r\n const getInputProps = (params: RenderInputParams, isLoading?: boolean) => {\r\n return ({ \r\n ...params.InputProps,\r\n endAdornment: (\r\n \r\n {isLoading ? : null}\r\n {params.InputProps.endAdornment}\r\n \r\n ), \r\n });\r\n };\r\n\r\n const options = customFieldLookupListQuery.data?.crm.customFieldLookupList.map((item) => {\r\n return {\r\n ...item,\r\n value: item.guidId,\r\n label: item.description,\r\n };\r\n });\r\n\r\n return (\r\n
\r\n { props.multiple ? \r\n (\r\n \r\n loading={customFieldLookupListQuery.loading}\r\n value={props.value}\r\n multiple={true}\r\n disabled={props.disabled}\r\n onChange={handleChange}\r\n options={options}\r\n onBlur={props.onBlur}\r\n disableCloseOnSelect={props.disableCloseOnSelect}\r\n disablePortal={props.disablePortal} // to Stop the dropdown select from closing the form\r\n // tslint:disable-next-line: jsx-no-lambda\r\n getOptionLabel={(option: CustomFieldLookUpListItem) => option.label} \r\n getOptionSelected={(option, value) => value.value === option.value} \r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderInput={params => (\r\n \r\n )}\r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderOption={(option, { inputValue }) => {\r\n const matches = match(option.label, inputValue);\r\n const parts = parse(option.label, matches);\r\n \r\n return (\r\n
\r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n
\r\n );\r\n }}\r\n />\r\n )\r\n :\r\n (\r\n option.label} \r\n getOptionSelected={(option, value) => value.value === option.value} \r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderInput={params => (\r\n \r\n )}\r\n // tslint:disable-next-line: jsx-no-lambda\r\n renderOption={(option, { inputValue }) => {\r\n const matches = match(option.label, inputValue);\r\n const parts = parse(option.label, matches);\r\n \r\n return (\r\n
\r\n {parts.map((part, index) => (\r\n \r\n {part.text}\r\n \r\n ))}\r\n
\r\n );\r\n }}\r\n />\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\ninterface CustomFieldLookupListData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n crm: CRM;\r\n};\r\n\r\ntype CRM = {\r\n customFieldLookupList: CustomFieldLookupList[];\r\n};\r\n\r\ntype CustomFieldLookupList = {\r\n guidId: string;\r\n description: string;\r\n customFieldLookupListItemCount: number;\r\n sequence: number;\r\n};\r\n\r\nconst CustomFieldLookupListQuery = gql`\r\n query CustomFieldLookupList {\r\n crm {\r\n customFieldLookupList {\r\n guidId\r\n description\r\n customFieldLookupListItemCount\r\n sequence\r\n }\r\n }\r\n }\r\n`;","import React from 'react';\r\nimport Dialog, { DialogProps } from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { Button, Checkbox, FormControlLabel, FormLabel, Grid, TextField, Theme, createStyles, makeStyles } from '@material-ui/core';\r\nimport { Field, Form } from 'react-final-form';\r\nimport { FormApi, ValidationErrors } from 'final-form';\r\nimport { checkIfIntialValuesIsEqualToValues } from '../../helpers/commonHelper';\r\nimport DialogBox from '../../Dashboard/Component/DialogBox';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport { CustomFieldTypeSelector, FieldType, FieldTypeReverseMapping } from '../selectors/CustomFieldTypeSelector';\r\nimport gql from 'graphql-tag';\r\nimport { client } from '../..';\r\nimport { showNotification } from '../../App';\r\nimport { IAutoCompleteItemV2 } from '../../typings/autoComplete';\r\nimport { CustomField } from '../tabs/customFieldGroups/CustomFieldGroupSelectedTab';\r\nimport { CustomFieldLookUpListItem, CustomFieldLookupListSelector } from '../selectors/CustomFieldLookupListSelector';\r\nimport { EditorWrapper } from '../../components/Editor';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n textTransform: 'capitalize',\r\n },\r\n buttonContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n minWidth: '83px',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n editorClassName: {\r\n padding: '0 10px',\r\n minHeight: '100px',\r\n },\r\n wrapperClassName: {\r\n border: '1px solid #949494',\r\n display: 'flex',\r\n flexFlow: 'column-reverse',\r\n },\r\n toolbarClassName: {\r\n border: 0,\r\n // borderBottom: '1px solid #F1F1F1',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n formLabel: {\r\n paddingBottom: '10px',\r\n },\r\n }),\r\n);\r\n\r\ninterface CustomFieldGroupItemDialogProps extends Pick {\r\n enquiryCustomFieldGroupGuid: string;\r\n groupId: string;\r\n count: number;\r\n data: CustomField | null;\r\n customFieldId: string[];\r\n}\r\n\r\ninterface CustomFieldForm {\r\n isFormSubmit: boolean;\r\n name: string | null;\r\n description: string | null;\r\n instructions: string | null;\r\n customFieldType: IAutoCompleteItemV2 | null;\r\n customFieldLookupList: CustomFieldLookUpListItem | null;\r\n isMandatory: boolean;\r\n isActive: boolean;\r\n sequence: number;\r\n id: string | null;\r\n}\r\n\r\nexport const CustomFieldGroupItemDialog: React.FC = (props) => {\r\n const classes = useStyles();\r\n\r\n const [showDiscard, setShowDiscard] = React.useState(false);\r\n\r\n const generateId = () => {\r\n const paddedCount = String(props.count + 1).padStart(3, '0');\r\n return `${props.groupId}${paddedCount}`;\r\n };\r\n\r\n const initialValues: CustomFieldForm = {\r\n isFormSubmit: false,\r\n customFieldLookupList: props.data && props.data.customFieldLookupListGuid && props.data.customFieldLookupListDescription ? { value: props.data.customFieldLookupListGuid, label: props.data.customFieldLookupListDescription } : null,\r\n customFieldType: props.data && props.data.customFieldType !== null ? { label: FieldTypeReverseMapping[props.data.customFieldType], value: props.data.customFieldType } : null,\r\n description: props.data && props.data.description ? props.data.description : null,\r\n instructions: props.data && props.data.instructions ? props.data.instructions : null,\r\n isActive: props.data && props.data.isActive ? props.data.isActive : false,\r\n isMandatory: props.data && props.data.isMandatory ? props.data.isMandatory : false,\r\n name: props.data && props.data.name ? props.data.name : null,\r\n sequence: props.data && props.data.sequence ? props.data.sequence : props.count + 1,\r\n id: props.data && props.data.customFieldId ? props.data.customFieldId : generateId(),\r\n };\r\n\r\n const handleClose = (form: FormApi, values: CustomFieldForm) => () => {\r\n\r\n const areValuesEqual = checkIfIntialValuesIsEqualToValues(initialValues, values);\r\n\r\n if (!areValuesEqual) {\r\n setShowDiscard(true);\r\n } else {\r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n }\r\n };\r\n\r\n const onDiscardChanges = (agree: boolean) => {\r\n if (agree) {\r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n }\r\n setShowDiscard(false);\r\n };\r\n\r\n const onSubmit = (values: CustomFieldForm, form: FormApi) => {\r\n // tslint:disable-next-line: no-console\r\n\r\n if (!props.data) {\r\n\r\n client.mutate({\r\n mutation: CreateEnquiryCustomFieldMutation,\r\n variables: {\r\n customFieldGroupGuid: props.enquiryCustomFieldGroupGuid,\r\n id: values.id,\r\n name: values.name,\r\n description: values.description,\r\n customFieldLookupListGuid: values.customFieldType?.value === FieldType['Lookup List'] && values.customFieldLookupList?.value ? values.customFieldLookupList.value : null,\r\n customFieldType: values.customFieldType ? values.customFieldType.value : null,\r\n instructions: values.instructions,\r\n isMandatory: values.isMandatory,\r\n isActive: values.isActive,\r\n sequence: values.sequence\r\n }\r\n })\r\n .then((results) => { \r\n if (results.data) {\r\n if (results.data.createEnquiryCustomField.status && results.data.createEnquiryCustomField.error === null) {\r\n showNotification(null, 'Create custom field submitted', 'info'); \r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n } else {\r\n showNotification(null, 'Create custom field failed', 'error');\r\n }\r\n } \r\n }) // tslint:disable-next-line:no-any\r\n .catch((reason) => { \r\n showNotification(null, reason, 'error'); \r\n });\r\n } else {\r\n \r\n client.mutate({\r\n mutation: UpdateEnquiryCustomFieldMutation,\r\n variables: {\r\n guidId: props.data.guid,\r\n customFieldGroupGuid: props.enquiryCustomFieldGroupGuid,\r\n id: values.id,\r\n name: values.name,\r\n description: values.description,\r\n customFieldLookupListGuid: values.customFieldLookupList?.value || null,\r\n customFieldType: values.customFieldType ? values.customFieldType.value : null,\r\n instructions: values.instructions,\r\n isMandatory: values.isMandatory,\r\n isActive: values.isActive,\r\n sequence: values.sequence\r\n }\r\n })\r\n .then((results) => { \r\n if (results.data) {\r\n if (results.data.updateEnquiryCustomField.status && results.data.updateEnquiryCustomField.error === null) {\r\n showNotification(null, 'Create custom field submitted', 'info'); \r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n } else {\r\n showNotification(null, 'Create custom field failed', 'error');\r\n }\r\n } \r\n }) // tslint:disable-next-line:no-any\r\n .catch((reason) => { \r\n showNotification(null, reason, 'error'); \r\n });\r\n\r\n }\r\n \r\n };\r\n\r\n const onValdiate = (values: CustomFieldForm) => {\r\n return undefined;\r\n };\r\n\r\n const onRequired = (value: CustomFieldForm) => (value ? undefined : 'Required');\r\n\r\n const onFieldRequiredError = (errors: ValidationErrors, form: FormApi, values: CustomFieldForm) => {\r\n // code here\r\n console.log('errors', errors);\r\n };\r\n \r\n const controlButtonComponent = (form: FormApi, submitting: boolean, pristine: boolean, values: CustomFieldForm) => {\r\n return (\r\n
\r\n {/* */}\r\n
\r\n {\r\n form.change('isFormSubmit', true);\r\n form.submit();\r\n }}\r\n >\r\n Save\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n };\r\n \r\n const validateId = (value: string) => {\r\n if (!value) {\r\n return 'Required';\r\n }\r\n \r\n if (!value.startsWith(props.groupId)) {\r\n return `ID must start with ${props.groupId}`;\r\n }\r\n\r\n if ((props.customFieldId.includes(value) && !props.data) || (props.data && props.data.customFieldId !== value && props.customFieldId.includes(value))) {\r\n return 'ID already exists';\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n const standarFields = (form: FormApi, submitting: boolean, pristine: boolean, values: CustomFieldForm) => {\r\n return (\r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n {...input}\r\n label=\"Custom Field Type\"\r\n name=\"office\"\r\n required={true}\r\n value={input.value ? input.value : null}\r\n className={classes.textField}\r\n error={meta.error && meta.touched}\r\n helperText={meta.error && meta.touched ? meta.error : ''}\r\n onSelection={(selection, name: string) =>\r\n input.onChange(selection)\r\n }\r\n />\r\n )}\r\n \r\n \r\n {values.customFieldType && values.customFieldType.value === 8 && (\r\n \r\n \r\n {({ input, meta }) => (\r\n \r\n input.onChange(selection)\r\n }\r\n />\r\n )}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Mandatory\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n }\r\n />\r\n }\r\n label=\"Active\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {({ input, meta }) => (\r\n <>\r\n Instructions\r\n {\r\n input.onChange(content);\r\n }}\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n };\r\n \r\n return (\r\n <>\r\n \r\n\r\n true}\r\n // debug={(values) => {\r\n // // tslint:disable-next-line: no-console\r\n // console.log('Debug Values', values);\r\n // }}\r\n subscription={{ submitting: true, pristine: true, values: true, errors: true }}\r\n render={({ errors, handleSubmit, form, submitting, pristine, values }) => {\r\n if (values.isFormSubmit) {\r\n onFieldRequiredError(errors, form, values);\r\n }\r\n\r\n return (\r\n
\r\n \r\n Custom Field\r\n {standarFields(form, submitting, pristine, values)}\r\n {controlButtonComponent(form, submitting, pristine, values)}\r\n \r\n
\r\n );\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\ntype CreateEnquiryCustomFieldParams = {\r\n customFieldGroupGuid?: string;\r\n id: string | null;\r\n name: string | null;\r\n description: string | null;\r\n instructions: string | null;\r\n customFieldType: number | null;\r\n customFieldLookupListGuid: string | null;\r\n isMandatory: boolean | null;\r\n isActive: boolean | null;\r\n sequence: number | null;\r\n};\r\n\r\ntype CreateEnquiryCustomFieldData = {\r\n createEnquiryCustomField: CreateEnquiryCustomField;\r\n};\r\n\r\ntype CreateEnquiryCustomField = {\r\n error: null;\r\n status: boolean;\r\n};\r\n\r\nconst CreateEnquiryCustomFieldMutation = gql`\r\n mutation CreateEnquiryCustomField (\r\n $customFieldGroupGuid: String,\r\n $id: String,\r\n $name: String,\r\n $description: String,\r\n $instructions: String,\r\n $customFieldType: Int,\r\n $customFieldLookupListGuid: String,\r\n $isMandatory: Boolean,\r\n $isActive: Boolean,\r\n $sequence: Int\r\n ) {\r\n createEnquiryCustomField(\r\n customFieldGroupGuid: $customFieldGroupGuid,\r\n id: $id,\r\n name: $name,\r\n description: $description,\r\n instructions: $instructions,\r\n customFieldType: $customFieldType,\r\n customFieldLookupListGuid: $customFieldLookupListGuid,\r\n isMandatory: $isMandatory,\r\n isActive: $isActive,\r\n sequence: $sequence\r\n ) {\r\n error\r\n status\r\n }\r\n }\r\n`;\r\n\r\ntype UpdateEnquiryCustomFieldMutationParams = {\r\n customFieldGroupGuid?: string;\r\n guidId: string | null;\r\n id: string | null;\r\n name: string | null;\r\n description: string | null;\r\n instructions: string | null;\r\n customFieldType: number | null;\r\n customFieldLookupListGuid: string | null;\r\n isMandatory: boolean | null;\r\n isActive: boolean | null;\r\n sequence: number | null;\r\n};\r\n\r\ntype UpdateEnquiryCustomFieldMutationData = {\r\n updateEnquiryCustomField: UpdateEnquiryCustomField;\r\n}\r\n\r\ntype UpdateEnquiryCustomField = {\r\n error: null;\r\n status: boolean;\r\n}\r\n\r\n\r\nconst UpdateEnquiryCustomFieldMutation = gql`\r\n mutation UpdateEnquiryCustomField (\r\n $customFieldGroupGuid: String,\r\n $guidId: String,\r\n $id: String,\r\n $name: String,\r\n $description: String,\r\n $instructions: String,\r\n $customFieldType: Int,\r\n $customFieldLookupListGuid: String,\r\n $isMandatory: Boolean,\r\n $isActive: Boolean,\r\n $sequence: Int\r\n ) {\r\n updateEnquiryCustomField(\r\n customFieldGroupGuid: $customFieldGroupGuid,\r\n guidId: $guidId,\r\n id: $id,\r\n name: $name,\r\n description: $description,\r\n instructions: $instructions,\r\n customFieldType: $customFieldType,\r\n customFieldLookupListGuid: $customFieldLookupListGuid,\r\n isMandatory: $isMandatory,\r\n isActive: $isActive,\r\n sequence: $sequence\r\n ) {\r\n error\r\n status\r\n }\r\n }\r\n`;","import { \r\n Breadcrumbs,\r\n Chip,\r\n CircularProgress,\r\n createStyles,\r\n IconButton,\r\n InputAdornment,\r\n lighten,\r\n Link,\r\n makeStyles, \r\n Paper, \r\n Table, \r\n TableBody, \r\n TableCell, \r\n TableContainer, \r\n TableHead, \r\n TableRow, \r\n TextField, \r\n Theme, \r\n Toolbar,\r\n Tooltip,\r\n Typography\r\n} from '@material-ui/core';\r\nimport React, { useEffect, useState } from 'react';\r\n// tslint:disable-next-line: max-line-length\r\nimport { \r\n DragDropContext, \r\n Draggable, \r\n // DraggableProvided, \r\n // DraggableStateSnapshot, \r\n Droppable, \r\n DropResult, \r\n ResponderProvided \r\n} from 'react-beautiful-dnd';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport AddBoxRoundedIcon from '@material-ui/icons/AddBoxRounded';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Check from '@material-ui/icons/Check';\r\nimport _ from 'lodash';\r\nimport { useQuery } from 'react-apollo';\r\nimport gql from 'graphql-tag';\r\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\r\nimport { mainTheme } from '../../../Theme';\r\nimport { client } from '../../..';\r\nimport { showNotification } from '../../../App';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport { CustomFieldGroupItemDialog } from '../../dialogs/CustomFieldGroupItemDialog';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport { FieldTypeReverseMapping } from '../../selectors/CustomFieldTypeSelector';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport { CustomFieldPreviewDialog } from '../../dialogs/CustomFieldPreviewDialog';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n paper: {\r\n width: '100%',\r\n marginBottom: theme.spacing(2),\r\n position: 'relative'\r\n },\r\n loadingWrapper: {\r\n position: 'absolute',\r\n zIndex: 1,\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: 'rgba(255,255,255, 0.6)',\r\n },\r\n icon: {\r\n color: mainTheme.BrandColors.TemplatePrimary,\r\n },\r\n tableCell: {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n '&:hover': {\r\n '& .drag-icon': {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n }\r\n }\r\n },\r\n textField: {\r\n minWidth: 200,\r\n maxWidth: '100%',\r\n },\r\n dragIcon: {\r\n marginLeft: '-10px',\r\n marginRight: 10,\r\n color: '#BDBDBD'\r\n },\r\n tableContentWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n description: {\r\n cursor: 'pointer'\r\n }\r\n })\r\n);\r\n\r\nconst useToolbarStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(1),\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n highlight:\r\n theme.palette.type === 'light'\r\n ? {\r\n color: theme.palette.secondary.main,\r\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\r\n }\r\n : {\r\n color: theme.palette.text.primary,\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n title: {\r\n flex: '1 1 100%',\r\n },\r\n icon: {\r\n color: mainTheme.BrandColors.TemplatePrimary,\r\n },\r\n rightToolbarWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n tableTitle: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n },\r\n tableHeading: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n chip: {\r\n marginLeft: '8px'\r\n },\r\n breadcrumbsWrapper: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n breadcrumbs: {\r\n\r\n },\r\n breadcrumbsTitle: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n })\r\n);\r\n\r\ninterface EnhancedTableToolbarProps {\r\n title: string;\r\n subTitle: string;\r\n count?: React.ReactNode;\r\n onClickAdd?: () => void;\r\n onSearch?: (search: string) => void;\r\n onPreview?: () => void;\r\n}\r\n\r\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\r\n\r\n const classes = useToolbarStyles();\r\n\r\n const history = useHistory();\r\n\r\n const [search, setSearch] = useState('');\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n \r\n setSearch(event.target.value);\r\n\r\n if (props.onSearch) {\r\n props.onSearch(event.target.value);\r\n }\r\n };\r\n\r\n const clearSearch = () => {\r\n setSearch('');\r\n if (props.onSearch) {\r\n props.onSearch('');\r\n }\r\n };\r\n\r\n const handleBreadCrumbClick = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n history.goBack();\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n Custom Field Groups\r\n \r\n {props.subTitle}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n endAdornment: (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }}\r\n onChange={handleChange}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\ninterface CustomFieldGroupSelectedTabItem extends CustomField {\r\n isEdit: boolean;\r\n isDelete: boolean;\r\n}\r\n\r\ninterface CustomFieldGroupSelectedTabState {\r\n items: CustomFieldGroupSelectedTabItem[];\r\n isAdd: boolean;\r\n search: string;\r\n isDelete: boolean;\r\n isEdit: boolean;\r\n isFormOpen?: boolean;\r\n selectedData: CustomField | null;\r\n isPreviewOpen?: boolean;\r\n}\r\n\r\nexport default function CustomFieldGroupSelectedTab() {\r\n\r\n const location = useLocation();\r\n\r\n const searchParams = new URLSearchParams(location.search);\r\n \r\n const customFieldGroupGuid = searchParams.get('tabKey');\r\n const areaOfLawGuid = searchParams.get('areaOfLawGuid');\r\n const locationGuid = searchParams.get('locationGuid');\r\n const groupId = searchParams.get('groupId');\r\n const title = searchParams.get('title');\r\n const titleDescription = searchParams.get('description');\r\n\r\n const classes = useStyles();\r\n\r\n const { loading, error, data, refetch } = useQuery(CustomFieldListQuery, {\r\n variables: {\r\n areaOfLawGuid: areaOfLawGuid,\r\n customFieldGroupGuid: customFieldGroupGuid,\r\n locationGuid: locationGuid\r\n },\r\n skip: !customFieldGroupGuid\r\n });\r\n\r\n const [state, setState] = useState({\r\n items: [],\r\n isAdd: false,\r\n search: '',\r\n isEdit: false,\r\n isDelete: false,\r\n selectedData: null\r\n });\r\n\r\n const textFieldPlaceHolder = 'Description';\r\n\r\n useEffect(() => {\r\n if (!error && data && data.crm && data.crm.customField ) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n items: data.crm.customField.map((value) => {\r\n return { \r\n guid: value.guid,\r\n customFieldGroupGuid: value.customFieldGroupGuid,\r\n customFieldGroupName: value.customFieldGroupName,\r\n customFieldId: value.customFieldId,\r\n name: value.name,\r\n description: value.description,\r\n instructions: value.instructions,\r\n customFieldLookupListGuid: value.customFieldLookupListGuid,\r\n customFieldLookupListDescription: value.customFieldLookupListDescription,\r\n isMandatory: value.isMandatory,\r\n isActive: value.isActive,\r\n sequence: value.sequence,\r\n customFieldType: value.customFieldType,\r\n customFieldLookupItems: value.customFieldLookupItems,\r\n isDelete: false,\r\n isEdit: false\r\n };\r\n }).sort((a, b) => a.sequence < b.sequence ? -1 : a.sequence > b.sequence ? 1 : 0)\r\n };\r\n });\r\n }\r\n // tslint:disable-next-line: align\r\n }, [data, error, loading]);\r\n\r\n useEffect(() => {\r\n \r\n const subscribeFirmObj = subscribeFirm();\r\n\r\n return () => {\r\n subscribeFirmObj.unsubscribe();\r\n };\r\n // tslint:disable-next-line: align\r\n }, []);\r\n\r\n const subscribeFirm = () => {\r\n return (\r\n // let subscription =\r\n client\r\n .subscribe({\r\n fetchPolicy: 'no-cache',\r\n query: EnquiryCustomFieldNotificationSubscription,\r\n variables: {},\r\n })\r\n .subscribe({\r\n // tslint:disable-next-line:no-any\r\n next(results) {\r\n if (results.data?.enquiryCustomFieldNotification.status) {\r\n\r\n const { enquiryCustomFieldNotification } = results.data;\r\n\r\n showNotification('Success', enquiryCustomFieldNotification.message, 'info');\r\n\r\n refetch();\r\n\r\n } else {\r\n showNotification('Failed', results.data?.enquiryCustomFieldNotification.message || '', 'error');\r\n }\r\n },\r\n // tslint:disable-next-line:no-any\r\n error(err: any) {\r\n // tslint:disable-next-line:no-console\r\n console.error(err);\r\n showNotification(null, err, 'error');\r\n },\r\n })\r\n );\r\n };\r\n \r\n // itemInputRef.current = getItems(10).map((ref, index) => itemInputRef.current[index] = React.createRef());\r\n\r\n const reorder = (list: CustomFieldGroupSelectedTabItem[], startIndex: number, endIndex: number) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n \r\n return result;\r\n };\r\n\r\n const onDragEnd = (result: DropResult, provided: ResponderProvided) => {\r\n // dropped outside the list\r\n if (!result.destination) {\r\n return;\r\n }\r\n \r\n const items = reorder(\r\n state.items,\r\n result.source.index,\r\n result.destination.index\r\n ).map((item: CustomFieldGroupSelectedTabItem, index: number) => {\r\n return {\r\n ...item,\r\n sequence: index\r\n };\r\n });\r\n\r\n setState((prevState) => {\r\n \r\n client\r\n .mutate({\r\n mutation: UpdateEnquiryCustomFieldSequenceMutation,\r\n variables: {\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n input: items.map((item: CustomFieldGroupSelectedTabItem) => {\r\n return {\r\n guidId: item.guid, \r\n sequence: item.sequence,\r\n };\r\n })\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to update Task Type Group sorting', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to update Task Type Group sorting', reason, 'error');\r\n });\r\n\r\n return {\r\n ...prevState,\r\n items\r\n };\r\n });\r\n\r\n };\r\n\r\n // const getListStyle = (isDraggingOver: boolean) => ({\r\n // background: isDraggingOver ? 'lightblue' : 'lightgrey',\r\n // padding: grid,\r\n // width: 250\r\n // });\r\n\r\n // tslint:disable-next-line: no-any\r\n const getItemStyle = (isDragging: boolean, draggableStyle: any) => ({\r\n // styles we need to apply on draggables\r\n ...draggableStyle,\r\n\r\n ...(isDragging && {\r\n background: 'rgb(235,235,235)'\r\n }),\r\n position: 'static',\r\n zIndex: 1\r\n });\r\n\r\n const onClickAdd = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n // isAdd: true\r\n isFormOpen: true,\r\n selectedData: null\r\n };\r\n });\r\n };\r\n\r\n const onClickCancel = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isAdd: false,\r\n isEdit: false,\r\n isDelete: false,\r\n };\r\n });\r\n };\r\n\r\n const onSearch = (search: string) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n search\r\n };\r\n });\r\n };\r\n\r\n const onPreview = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isPreviewOpen: true\r\n };\r\n });\r\n };\r\n\r\n const onEditRowEnable = (item: CustomFieldGroupSelectedTabItem) => () => {\r\n // const items = [...state.items];\r\n \r\n // const index = items.indexOf(item);\r\n\r\n // items[index].isEdit = true;\r\n\r\n // setState((prevState) => {\r\n // return {\r\n // ...prevState,\r\n // items,\r\n // isEdit: true,\r\n // };\r\n // });\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormOpen: true,\r\n selectedData: item\r\n };\r\n });\r\n\r\n };\r\n\r\n const onCancelEditRow = (item: CustomFieldGroupSelectedTabItem) => () => {\r\n // code here..\r\n const items = [...state.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isEdit = false;\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n items,\r\n isEdit: false,\r\n };\r\n });\r\n };\r\n\r\n const onEditRow = (item: CustomFieldGroupSelectedTabItem, index: number) => () => {\r\n // code here\r\n };\r\n\r\n const onDeleteRowEnable = (item: CustomFieldGroupSelectedTabItem) => () => {\r\n\r\n setState((prevState) => {\r\n\r\n const items = [...prevState.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isDelete = true;\r\n\r\n return {\r\n ...prevState,\r\n items,\r\n isDelete: true\r\n };\r\n });\r\n };\r\n\r\n const onCancelDeleteRow = (item: CustomFieldGroupSelectedTabItem) => () => {\r\n // code here..\r\n\r\n setState((prevState) => {\r\n\r\n const items = [...prevState.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isDelete = false;\r\n\r\n return {\r\n ...prevState,\r\n items,\r\n isDelete: false\r\n };\r\n });\r\n };\r\n\r\n const onDeleteRow = (item: CustomFieldGroupSelectedTabItem) => () => {\r\n \r\n setState((prevState) => {\r\n\r\n client\r\n .mutate({\r\n mutation: DeleteEnquiryCustomFieldMutation,\r\n variables: {\r\n customFieldGroupGuid: customFieldGroupGuid || '',\r\n guidId: item.guid\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to Delete Custom Field', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Delete Custom Field', reason, 'error');\r\n });\r\n\r\n const tItems = [...prevState.items];\r\n tItems.splice(tItems.indexOf(item), 1);\r\n\r\n return {\r\n ...prevState,\r\n isDelete: false,\r\n items: tItems\r\n };\r\n });\r\n };\r\n\r\n const onAddItem = () => {\r\n // code here\r\n };\r\n\r\n const onChangeUpdate = (item: CustomFieldGroupSelectedTabItem, index: number) => (event: React.ChangeEvent) => {\r\n // textField = event.target.value;\r\n };\r\n\r\n const onChangeAdd = (event: React.ChangeEvent) => {\r\n // textField = event.target.value;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const DroppableComponent = (onDragEndComponent: (result: DropResult, provided: ResponderProvided) => void) => (props: any) => {\r\n return (\r\n \r\n \r\n {(provided) => {\r\n return (\r\n \r\n {props.children}\r\n {provided.placeholder}\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const DraggableComponent = (item: CustomFieldGroupSelectedTabItem, index: number) => (props: any) => {\r\n return (\r\n \r\n {(provided, snapshot) => (\r\n \r\n {!!(!item.isDelete && !item.isEdit) && (\r\n <>\r\n \r\n
\r\n \r\n \r\n {item.customFieldId}\r\n
\r\n \r\n
\r\n \r\n {item.name}\r\n \r\n \r\n {FieldTypeReverseMapping[item.customFieldType]}\r\n \r\n \r\n {item.description}\r\n \r\n {/* \r\n {item.instructions}\r\n */}\r\n \r\n {item.isMandatory && (\r\n \r\n )}\r\n \r\n \r\n {item.isActive && (\r\n \r\n )}\r\n \r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {!!(item.isDelete && state.isDelete) && (\r\n <>\r\n \r\n Are you sure you want to delete this row?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!!(item.isEdit && state.isEdit) && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n )}\r\n \r\n );\r\n };\r\n\r\n const getDraggableRows = () => {\r\n let filteredItems = state.items;\r\n \r\n if (state.search) {\r\n filteredItems = state.items.filter((item: CustomFieldGroupSelectedTabItem) => {\r\n return item.description.toLowerCase().indexOf(state.search) >= 0;\r\n });\r\n } \r\n\r\n return (\r\n _.map(filteredItems, (item, index) => {\r\n return (\r\n \r\n );\r\n })\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {state.isFormOpen && !loading && data && (\r\n item.customFieldId)}\r\n onClose={() => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormOpen: false,\r\n };\r\n });\r\n }}\r\n />\r\n )}\r\n \r\n {state.isPreviewOpen && (\r\n {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isPreviewOpen: false,\r\n };\r\n });\r\n }}\r\n />\r\n )}\r\n\r\n
\r\n \r\n {!!loading && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n ID\r\n Name\r\n Custom Field Type\r\n Description\r\n {/* Instructions */}\r\n Mandatory\r\n Active\r\n Actions\r\n \r\n \r\n \r\n {!!state.isAdd && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {\r\n getDraggableRows()\r\n }\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport type CustomFieldListParams = {\r\n customFieldGroupGuid: string | null;\r\n areaOfLawGuid: string | null;\r\n locationGuid: string | null;\r\n};\r\n\r\nexport type CustomFieldListData = {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n crm: CRM;\r\n};\r\n\r\nexport type CRM = {\r\n customField: CustomField[];\r\n};\r\n\r\nexport type CustomField = {\r\n guid: string;\r\n customFieldGroupGuid: string;\r\n customFieldGroupName: string;\r\n customFieldId: string;\r\n name: string;\r\n description: string;\r\n instructions: string;\r\n customFieldLookupListGuid: string;\r\n customFieldLookupListDescription: string;\r\n isMandatory: boolean;\r\n isActive: boolean;\r\n sequence: number;\r\n customFieldType: number;\r\n customFieldLookupItems: CustomFieldLookupItem[];\r\n};\r\n\r\nexport type CustomFieldLookupItem = {\r\n description: string;\r\n guidId: string;\r\n sequence: number;\r\n};\r\n\r\n\r\nexport const CustomFieldListQuery = gql`\r\n query CustomFieldList($customFieldGroupGuid: String, $areaOfLawGuid: String, $locationGuid: String) {\r\n crm {\r\n customField(customFieldGroupGuid: $customFieldGroupGuid, areaOfLawGuid: $areaOfLawGuid, locationGuid: $locationGuid) {\r\n guid\r\n customFieldGroupGuid\r\n customFieldGroupName\r\n customFieldId\r\n name\r\n description\r\n instructions\r\n customFieldLookupListGuid\r\n customFieldLookupListDescription\r\n isMandatory\r\n isActive\r\n sequence\r\n customFieldType\r\n customFieldLookupItems {\r\n description\r\n guidId\r\n sequence\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\ntype EnquiryCustomFieldNotificationSubscriptionData = {\r\n enquiryCustomFieldNotification: EnquiryCustomFieldNotification;\r\n};\r\n\r\n\r\ntype EnquiryCustomFieldNotification = {\r\n customFieldGroupGuid: null | string;\r\n description: null | string;\r\n guidId: string;\r\n id: number;\r\n status: boolean;\r\n message: string;\r\n}\r\n\r\nconst EnquiryCustomFieldNotificationSubscription = gql`\r\n subscription enquiryCustomFieldNotification {\r\n enquiryCustomFieldNotification {\r\n id\r\n customFieldGroupGuid\r\n description\r\n guidId\r\n status\r\n message\r\n }\r\n }\r\n`;\r\n\r\ntype DeleteEnquiryCustomFieldMutationParams = {\r\n customFieldGroupGuid: string;\r\n guidId: string;\r\n};\r\n\r\ntype DeleteEnquiryCustomFieldMutationData = {\r\n deleteEnquiryCustomField: DeleteEnquiryCustomField;\r\n};\r\n\r\ntype DeleteEnquiryCustomField = {\r\n error: null;\r\n status: boolean;\r\n};\r\n\r\nconst DeleteEnquiryCustomFieldMutation = gql`\r\n mutation DeleteEnquiryCustomField($customFieldGroupGuid: String, $guidId: String){\r\n deleteEnquiryCustomField(customFieldGroupGuid: $customFieldGroupGuid, guidId: $guidId) {\r\n error\r\n status\r\n }\r\n }\r\n`;\r\n\r\ntype EnquiryCustomFieldInput = {\r\n guidId: string;\r\n sequence: number;\r\n};\r\n\r\ntype UpdateEnquiryCustomFieldSequenceMutationParams = {\r\n input: EnquiryCustomFieldInput[];\r\n customFieldGroupGuid: string;\r\n};\r\n\r\ntype UpdateEnquiryCustomFieldSequenceMutationData = {\r\n updateEnquiryCustomFieldSequence: UpdateEnquiryCustomFieldSequence;\r\n};\r\n\r\ntype UpdateEnquiryCustomFieldSequence = {\r\n error: null;\r\n status: boolean;\r\n};\r\n\r\nconst UpdateEnquiryCustomFieldSequenceMutation = gql`\r\n mutation UpdateEnquiryCustomFieldSequence($input: [LookupSequence], $customFieldGroupGuid: String){\r\n updateEnquiryCustomFieldSequence(input: $input, customFieldGroupGuid: $customFieldGroupGuid){\r\n error\r\n status\r\n }\r\n }\r\n`;","import React, { useEffect } from 'react';\r\nimport Dialog, { DialogProps } from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { Button, DialogContentText, Grid, Theme, createStyles, makeStyles } from '@material-ui/core';\r\nimport { Form } from 'react-final-form';\r\nimport { FormApi, ValidationErrors } from 'final-form';\r\nimport { checkIfIntialValuesIsEqualToValues } from '../../helpers/commonHelper';\r\nimport DialogBox from '../../Dashboard/Component/DialogBox';\r\nimport { useQuery } from 'react-apollo';\r\nimport { RvLoader } from '../../components/Loader';\r\nimport { CustomField, CustomFieldListData, CustomFieldListParams, CustomFieldListQuery } from '../tabs/customFieldGroups/CustomFieldGroupSelectedTab';\r\nimport { getField } from '../common/getField';\r\nimport { CustomFieldGroup } from '../tabs/customFieldGroups/CustomFieldGroupsTab';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n textTransform: 'capitalize',\r\n },\r\n buttonContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n button: {\r\n margin: theme.spacing(1),\r\n minWidth: '83px',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n dropZoneFont: {\r\n '& .MuiDropzoneArea-text': {\r\n fontSize: '1em',\r\n }\r\n },\r\n dropZone: {\r\n minHeight: 'fit-content !important',\r\n '& .MuiDropzoneArea-root': {\r\n minHeight: 'fit-content !important'\r\n }\r\n },\r\n }),\r\n);\r\n\r\ninterface CustomFieldPreviewDialogProps extends Pick {\r\n title?: string;\r\n description?: string;\r\n data?: CustomField[];\r\n customFeildGroupData?: CustomFieldGroup;\r\n}\r\n\r\ninterface CustomFieldForm {\r\n isFormSubmit: boolean;\r\n [key: string]: any;\r\n}\r\n\r\nexport const CustomFieldPreviewDialog: React.FC = (props) => {\r\n const classes = useStyles();\r\n\r\n const [showDiscard, setShowDiscard] = React.useState(false);\r\n\r\n const [customFields, setCustomFields] = React.useState(props.data || []);\r\n\r\n const customFieldListQuery = useQuery(CustomFieldListQuery, {\r\n variables: {\r\n areaOfLawGuid: props.customFeildGroupData?.areaOfLawGuid || null,\r\n customFieldGroupGuid: props.customFeildGroupData?.guid || null,\r\n locationGuid: props.customFeildGroupData?.locationGuid || null\r\n },\r\n skip: props.data !== undefined\r\n });\r\n\r\n useEffect(() => {\r\n\r\n if (customFieldListQuery.data && customFieldListQuery.data.crm && customFieldListQuery.data.crm.customField) {\r\n setCustomFields(customFieldListQuery.data.crm.customField);\r\n }\r\n\r\n }, [customFieldListQuery.data, customFieldListQuery.loading, customFieldListQuery.error]);\r\n \r\n const initialValues: CustomFieldForm = {\r\n isFormSubmit: false,\r\n };\r\n\r\n const handleClose = (form: FormApi, values: CustomFieldForm) => () => {\r\n\r\n const areValuesEqual = checkIfIntialValuesIsEqualToValues(initialValues, values);\r\n\r\n if (!areValuesEqual) {\r\n setShowDiscard(true);\r\n } else {\r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n }\r\n };\r\n\r\n const onDiscardChanges = (agree: boolean) => {\r\n if (agree) {\r\n if (props.onClose) {\r\n props.onClose({}, 'backdropClick');\r\n }\r\n }\r\n setShowDiscard(false);\r\n };\r\n\r\n const onSubmit = (values: CustomFieldForm, form: FormApi) => {\r\n // tslint:disable-next-line: no-console\r\n console.log('onSubmit', values);\r\n\r\n \r\n };\r\n\r\n const onValdiate = (values: CustomFieldForm) => {\r\n return undefined;\r\n };\r\n\r\n const onFieldRequiredError = (errors: ValidationErrors, form: FormApi, values: CustomFieldForm) => {\r\n // code here\r\n console.log('errors', errors);\r\n };\r\n\r\n const controlButtonComponent = (form: FormApi, submitting: boolean, pristine: boolean, values: CustomFieldForm) => {\r\n return (\r\n
\r\n {/* */}\r\n {/*
\r\n {\r\n form.change('isFormSubmit', true);\r\n form.submit();\r\n }}\r\n >\r\n Save\r\n \r\n
*/}\r\n
\r\n \r\n
\r\n
\r\n );\r\n };\r\n \r\n const standarFields = (form: FormApi, submitting: boolean, pristine: boolean, values: CustomFieldForm) => {\r\n \r\n if (customFields.length === 0) {\r\n return (\r\n
\r\n No Custom Fields Found\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n\r\n {customFields.filter((field) => field.isActive).map((field, index) => (\r\n \r\n {getField(field, index)}\r\n \r\n ))}\r\n \r\n );\r\n };\r\n \r\n if (customFieldListQuery.loading) {\r\n return (\r\n \r\n {props.title}\r\n \r\n {props.description && (\r\n \r\n {props.description}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n true}\r\n // debug={(values) => {\r\n // // tslint:disable-next-line: no-console\r\n // console.log('Debug Values', values);\r\n // }}\r\n subscription={{ submitting: true, pristine: true, values: true, errors: true }}\r\n render={({ errors, handleSubmit, form, submitting, pristine, values }) => {\r\n if (values.isFormSubmit) {\r\n onFieldRequiredError(errors, form, values);\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n {props.title}\r\n \r\n \r\n {props.description && (\r\n \r\n {props.description}\r\n \r\n )}\r\n {standarFields(form, submitting, pristine, values)}\r\n \r\n {controlButtonComponent(form, submitting, pristine, values)}\r\n \r\n
\r\n );\r\n }}\r\n />\r\n \r\n );\r\n};","import React, { useEffect } from 'react';\r\nimport MaterialTable, { Column, Icons } from 'material-table';\r\nimport { forwardRef } from 'react';\r\n\r\nimport AddBox from '@material-ui/icons/AddBox';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\n// import { useStyles } from '../common/tabsStyle';\r\nimport { Badge, Chip, IconButton, makeStyles, Typography } from '@material-ui/core';\r\n// import { TaskflowDialog } from '../dialogs/TaskflowDialog';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport { mainTheme } from '../../../Theme';\r\nimport gql from 'graphql-tag';\r\nimport { useQuery, useSubscription } from 'react-apollo';\r\nimport { CustomFieldGroupDialog } from '../../dialogs/CustomFieldGroupDialog';\r\nimport { client } from '../../..';\r\nimport { showNotification } from '../../../App';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport { CustomFieldPreviewDialog } from '../../dialogs/CustomFieldPreviewDialog';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport LocalOfferOutlinedIcon from '@material-ui/icons/LocalOfferOutlined';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n '& .MuiSvgIcon-root': {\r\n color: '#5173FF'\r\n },\r\n '& .MuiTypography-h6': {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n\r\n '& .MuiTable-root': {\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& .MuiTableCell-root': {\r\n '& .MuiIconButton-colorInherit': {\r\n color: '#5173FF !important'\r\n },\r\n },\r\n '& thead.MuiTableHead-root': {\r\n display: 'flex',\r\n flex: 1,\r\n '& tr.MuiTableRow-head': {\r\n display: 'flex',\r\n flex: 1,\r\n alignItems: 'stretch',\r\n '& th.MuiTableCell-root': {\r\n padding: '0 10px',\r\n }\r\n },\r\n '& th.MuiTableCell-paddingNone': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 'auto !important',\r\n },\r\n '& th.MuiTableCell-paddingCheckbox': {\r\n width: 'auto !important',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n minWidth: '100px',\r\n },\r\n '& th.MuiTableCell-alignLeft': {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: 'auto !important'\r\n },\r\n },\r\n '& tbody.MuiTableBody-root': {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& tr.MuiTableRow-root': {\r\n display: 'flex',\r\n flex: 1,\r\n alignItems: 'stretch',\r\n height: 'auto !important',\r\n },\r\n '& .MuiTableCell-root': {\r\n width: '100%',\r\n padding: '0 10px',\r\n '& .Mui-disabled .check-button': {\r\n color: 'rgba(0, 0, 0, 0.26) !important'\r\n },\r\n '& .check-button': {\r\n color: '#5173FF'\r\n },\r\n '& .icon-button-color': {\r\n color: '#5173FF'\r\n }\r\n },\r\n '& tr.MuiTableRow-root[mode=\"add\"]': {\r\n '& .MuiTableCell-root': {\r\n padding: '10px'\r\n }\r\n },\r\n '& td.MuiTableCell-paddingNone': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 'auto !important',\r\n },\r\n '& .MuiTableCell-alignLeft': {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n }\r\n },\r\n },\r\n '& .Mui-checked': {\r\n '& .MuiSvgIcon-root': {\r\n fill: mainTheme.BrandColors.TemplatePrimary,\r\n }\r\n }\r\n },\r\n tableTitle: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n },\r\n tableHeading: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n chip: {\r\n marginLeft: '8px'\r\n },\r\n countFieldWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '5px 0'\r\n }\r\n});\r\n\r\ninterface TableState {\r\n columns: Column[];\r\n data: RowData[];\r\n isFormOpen?: boolean;\r\n selectedData?: RowData;\r\n isCustomPreviewOpen?: boolean;\r\n}\r\n\r\nexport default function CustomFieldGroupsTab() {\r\n const classes = useStyles();\r\n\r\n const history = useHistory();\r\n\r\n const location = useLocation();\r\n\r\n const searchParams = new URLSearchParams(location.search);\r\n\r\n const tab = searchParams.get('tab') || 'CustomFieldGroups';\r\n\r\n const [state, setState] = React.useState>({\r\n columns: [\r\n {\r\n field: 'areaOfLaw',\r\n title: 'Area of Law',\r\n },\r\n {\r\n field: 'groupId',\r\n title: 'Group ID',\r\n }, \r\n {\r\n field: 'name',\r\n title: 'Group Name',\r\n },\r\n {\r\n field: 'description',\r\n title: 'Description',\r\n },\r\n {\r\n field: 'count',\r\n title: 'Fields',\r\n render: (data, type) => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n },\r\n // {\r\n // field: 'location',\r\n // title: 'Location',\r\n // },\r\n {\r\n field: 'isActive',\r\n title: 'Active',\r\n render: (rowData) => (\r\n
\r\n {rowData.isActive && (\r\n \r\n )}\r\n
\r\n )\r\n },\r\n ],\r\n data: [],\r\n isFormOpen: false,\r\n isCustomPreviewOpen: false,\r\n });\r\n\r\n const tableIcons: Icons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => ),\r\n };\r\n\r\n const customFieldGroupQuery = useQuery(CustomFieldGroupQuery);\r\n\r\n const lookupNotification = useSubscription(EnquiryCustomFieldNotificationSubscription);\r\n\r\n useEffect(() => {\r\n\r\n if (lookupNotification.data && !lookupNotification.loading) {\r\n\r\n if (lookupNotification.data?.enquiryCustomFieldNotification.status) {\r\n\r\n const { enquiryCustomFieldNotification } = lookupNotification.data;\r\n\r\n showNotification('Success', enquiryCustomFieldNotification.message, 'info');\r\n\r\n customFieldGroupQuery.refetch();\r\n\r\n } else {\r\n showNotification('Failed', lookupNotification.data?.enquiryCustomFieldNotification.message || '', 'error');\r\n }\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [lookupNotification.data, lookupNotification.loading, lookupNotification.error, customFieldGroupQuery.refetch]);\r\n\r\n useEffect(() => {\r\n\r\n if (customFieldGroupQuery.data && !customFieldGroupQuery.loading) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n data: customFieldGroupQuery.data?.crm.customFieldGroup || []\r\n };\r\n });\r\n }\r\n\r\n }, [customFieldGroupQuery.data, customFieldGroupQuery.loading, customFieldGroupQuery.error]);\r\n\r\n // const handleDeletePriority = (oldData: any) => {\r\n // client\r\n // .mutate({\r\n // mutation: DeletePriority,\r\n // variables: {\r\n // guidId: oldData.guidId,\r\n // description: oldData.description,\r\n // },\r\n // })\r\n // // tslint:disable-next-line: no-any\r\n // .then((results: { data: any }) => {\r\n // if (results.data) {\r\n // if (results.data.error !== undefined) {\r\n // showNotification( 'Failed to Delete Lead Source', results.data.error, 'error');\r\n // }\r\n // }\r\n // })\r\n // // tslint:disable-next-line:no-any\r\n // .catch((reason: any) => {\r\n // showNotification('Failed to Delete Lead Source', reason, 'error');\r\n // });\r\n // };\r\n\r\n const onClickCounts = (data: CustomFieldGroup) => () => {\r\n history.push({\r\n pathname: 'enquiryCustomFieldsConfiguration',\r\n search: `?tab=${tab}&tabKey=${data.guid}&areaOfLawGuid=${data.areaOfLawGuid}&locationGuid=${data.locationGuid}&groupId=${data.groupId}&title=${data.name}&description=${data.description}`,\r\n });\r\n };\r\n\r\n const deleteRowData = (oldData: CustomFieldGroup) => {\r\n\r\n client.mutate({\r\n mutation: DeleteEnquiryCustomFieldGroupMutation,\r\n variables: {\r\n guidId: oldData.guid\r\n }\r\n })\r\n .then((results) => { \r\n if (results.data) {\r\n if (results.data.deleteEnquiryCustomFieldGroup.status && results.data.deleteEnquiryCustomFieldGroup.error === null) {\r\n showNotification(null, 'Create custom field submitted', 'info'); \r\n\r\n setState((prevState) => {\r\n const tdata = [...prevState.data];\r\n tdata.splice(tdata.indexOf(oldData), 1);\r\n return {\r\n ...prevState,\r\n data: tdata,\r\n };\r\n });\r\n\r\n } else {\r\n showNotification(null, 'Create custom field failed', 'error');\r\n }\r\n } \r\n }) // tslint:disable-next-line:no-any\r\n .catch((reason) => { \r\n showNotification(null, reason, 'error'); \r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onAdd = (event: any) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n selectedData: undefined,\r\n isFormOpen: true,\r\n };\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const onEdit = (event: any, data: CustomFieldGroup) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormOpen: true,\r\n selectedData: data\r\n };\r\n });\r\n };\r\n\r\n const onPreview = (event: React.MouseEvent, rowData: CustomFieldGroup) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isCustomPreviewOpen: true,\r\n selectedData: rowData\r\n };\r\n });\r\n };\r\n\r\n // const onRowClick = (event?: React.MouseEvent, rowData?: CustomFieldGroup, toggleDetailPanel?: (panelIndex?: number) => void) => {\r\n // if (!rowData) {\r\n // return;\r\n // }\r\n\r\n // history.push({\r\n // pathname: 'enquiryCustomFieldsConfiguration',\r\n // search: `?tab=${tab}&tabKey=${rowData.guid}&areaOfLawGuid=${rowData.areaOfLawGuid}&locationGuid=${rowData.locationGuid}&groupId=${rowData.groupId}&title=${rowData.name}&description=${rowData.description}`,\r\n // });\r\n // };\r\n\r\n const onClose = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isFormOpen: false\r\n };\r\n });\r\n };\r\n\r\n const getTitle = (title: string, count: number) => {\r\n return (\r\n
\r\n {title}\r\n \r\n
\r\n );\r\n };\r\n\r\n return (\r\n
\r\n {state.isFormOpen && (\r\n \r\n )}\r\n {state.isCustomPreviewOpen && (\r\n {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isCustomPreviewOpen: false,\r\n };\r\n });\r\n }}\r\n />\r\n )}\r\n \r\n icons={tableIcons}\r\n isLoading={customFieldGroupQuery.loading}\r\n title={getTitle('Custom Field Groups', state.data.length)}\r\n columns={state.columns}\r\n data={state.data}\r\n // onRowClick={onRowClick}\r\n options={{\r\n addRowPosition: 'first',\r\n paging: true,\r\n pageSize: 10,\r\n pageSizeOptions: [10, 20, 30, 40, 50],\r\n draggable: true,\r\n actionsColumnIndex: -1,\r\n }}\r\n actions={[\r\n {\r\n icon: VisibilityIcon,\r\n tooltip: 'Preview',\r\n position: 'row',\r\n onClick: onPreview\r\n },\r\n {\r\n icon: AddBox,\r\n tooltip: 'Add',\r\n isFreeAction: true,\r\n onClick: onAdd\r\n },\r\n {\r\n icon: Edit,\r\n tooltip: 'Edit',\r\n position: 'row',\r\n onClick: onEdit\r\n }\r\n ]}\r\n editable={{\r\n onRowDelete: (oldData) =>\r\n // tslint:disable-next-line: no-any\r\n new Promise((resolve: any) => {\r\n setTimeout(() => {\r\n resolve();\r\n if (oldData) {\r\n // handleDeletePriority(oldData);\r\n deleteRowData(oldData);\r\n }\r\n // tslint:disable-next-line: align\r\n }, 600);\r\n }),\r\n }}\r\n />\r\n
\r\n );\r\n}\r\n\r\ntype CustomFieldGroupData = {\r\n crm: CRM;\r\n};\r\n\r\ntype CRM = {\r\n customFieldGroup: CustomFieldGroup[];\r\n};\r\n\r\nexport type CustomFieldGroup = {\r\n guid: string;\r\n groupId: string;\r\n name: string;\r\n description: string;\r\n areaOfLawGuid: null;\r\n areaOfLaw: string;\r\n locationGuid: string;\r\n location: string;\r\n isActive: boolean;\r\n count: number;\r\n};\r\n\r\nconst CustomFieldGroupQuery = gql`\r\n query CustomFierldGroup {\r\n crm {\r\n customFieldGroup {\r\n guid\r\n groupId\r\n name\r\n description\r\n areaOfLawGuid\r\n areaOfLaw\r\n locationGuid\r\n location\r\n isActive\r\n count\r\n }\r\n }\r\n }\r\n`;\r\n\r\ntype EnquiryCustomFieldNotificationSubscriptionData = {\r\n enquiryCustomFieldNotification: EnquiryCustomFieldNotification;\r\n};\r\n\r\ntype EnquiryCustomFieldNotification = {\r\n customFieldGroupGuid: string | null;\r\n description: string | null;\r\n guidId: string;\r\n id: number;\r\n status: boolean;\r\n message: string;\r\n}\r\n\r\nconst EnquiryCustomFieldNotificationSubscription = gql`\r\n subscription enquiryCustomFieldNotification {\r\n enquiryCustomFieldNotification {\r\n id\r\n customFieldGroupGuid\r\n description\r\n guidId\r\n status\r\n message\r\n }\r\n }\r\n`;\r\n\r\ntype DeleteEnquiryCustomFieldGroupMutationParams = {\r\n guidId: string;\r\n};\r\n\r\ntype DeleteEnquiryCustomFieldGroupMutationData = {\r\n deleteEnquiryCustomFieldGroup: DeleteEnquiryCustomFieldGroup;\r\n}\r\n\r\ntype DeleteEnquiryCustomFieldGroup = {\r\n error: null;\r\n status: boolean;\r\n}\r\n\r\nconst DeleteEnquiryCustomFieldGroupMutation = gql`\r\n mutation DeleteEnquiryCustomFieldGroup($guidId: String) {\r\n deleteEnquiryCustomFieldGroup(guidId: $guidId){\r\n error\r\n status\r\n }\r\n }\r\n`;","import { \r\n Breadcrumbs,\r\n Chip,\r\n CircularProgress,\r\n createStyles,\r\n IconButton,\r\n InputAdornment,\r\n lighten,\r\n Link,\r\n makeStyles, \r\n Paper, \r\n Table, \r\n TableBody, \r\n TableCell, \r\n TableContainer, \r\n TableHead, \r\n TableRow, \r\n TextField, \r\n Theme, \r\n Toolbar,\r\n Tooltip,\r\n Typography\r\n} from '@material-ui/core';\r\nimport React, { useEffect, useState } from 'react';\r\n// tslint:disable-next-line: max-line-length\r\nimport { \r\n DragDropContext, \r\n Draggable, \r\n // DraggableProvided, \r\n // DraggableStateSnapshot, \r\n Droppable, \r\n DropResult, \r\n ResponderProvided \r\n} from 'react-beautiful-dnd';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport AddBoxRoundedIcon from '@material-ui/icons/AddBoxRounded';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Check from '@material-ui/icons/Check';\r\nimport _ from 'lodash';\r\nimport { useQuery } from 'react-apollo';\r\nimport gql from 'graphql-tag';\r\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator';\r\nimport { mainTheme } from '../../../Theme';\r\nimport { client } from '../../..';\r\nimport { showNotification } from '../../../App';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n paper: {\r\n width: '100%',\r\n marginBottom: theme.spacing(2),\r\n position: 'relative'\r\n },\r\n loadingWrapper: {\r\n position: 'absolute',\r\n zIndex: 1,\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: 'rgba(255,255,255, 0.6)',\r\n },\r\n icon: {\r\n color: mainTheme.BrandColors.TemplatePrimary,\r\n },\r\n tableCell: {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n '&:hover': {\r\n '& .drag-icon': {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n }\r\n }\r\n },\r\n textField: {\r\n minWidth: 200,\r\n maxWidth: '100%',\r\n },\r\n dragIcon: {\r\n marginLeft: '-10px',\r\n marginRight: 10,\r\n color: '#BDBDBD'\r\n },\r\n tableContentWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n description: {\r\n cursor: 'pointer'\r\n }\r\n })\r\n);\r\n\r\nconst useToolbarStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(1),\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n highlight:\r\n theme.palette.type === 'light'\r\n ? {\r\n color: theme.palette.secondary.main,\r\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\r\n }\r\n : {\r\n color: theme.palette.text.primary,\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n title: {\r\n flex: '1 1 100%',\r\n },\r\n icon: {\r\n color: mainTheme.BrandColors.TemplatePrimary,\r\n },\r\n rightToolbarWrapper: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n tableTitle: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n },\r\n tableHeading: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n chip: {\r\n marginLeft: '8px'\r\n },\r\n breadcrumbsWrapper: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n breadcrumbs: {\r\n\r\n },\r\n breadcrumbsTitle: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n })\r\n);\r\n\r\ninterface EnhancedTableToolbarProps {\r\n title: string;\r\n subTitle: string;\r\n count?: React.ReactNode;\r\n onClickAdd?: () => void;\r\n onSearch?: (search: string) => void;\r\n}\r\n\r\nconst EnhancedTableToolbar = (props: EnhancedTableToolbarProps) => {\r\n\r\n const classes = useToolbarStyles();\r\n\r\n const history = useHistory();\r\n\r\n const [search, setSearch] = useState('');\r\n\r\n const handleChange = (event: React.ChangeEvent) => {\r\n \r\n setSearch(event.target.value);\r\n\r\n if (props.onSearch) {\r\n props.onSearch(event.target.value);\r\n }\r\n };\r\n\r\n const clearSearch = () => {\r\n setSearch('');\r\n if (props.onSearch) {\r\n props.onSearch('');\r\n }\r\n };\r\n\r\n const handleBreadCrumbClick = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n history.goBack();\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n Custom Field Lookup Lists\r\n \r\n {props.subTitle}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n ),\r\n endAdornment: (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }}\r\n onChange={handleChange}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\ninterface CustomFieldLookUpListSelectedTabItem extends CustomFieldLookupListItem {\r\n isEdit: boolean;\r\n isDelete: boolean;\r\n}\r\n\r\ninterface CustomFieldLookUpListSelectedTabState {\r\n items: CustomFieldLookUpListSelectedTabItem[];\r\n isAdd: boolean;\r\n search: string;\r\n isDelete: boolean;\r\n isEdit: boolean;\r\n}\r\n\r\nexport default function CustomFieldLookUpListSelectedTab() {\r\n\r\n const location = useLocation();\r\n\r\n const searchParams = new URLSearchParams(location.search);\r\n const customFieldLookupListGuid = searchParams.get('tabKey');\r\n const title = searchParams.get('title') || '';\r\n\r\n const classes = useStyles();\r\n\r\n const { loading, error, data } = useQuery(CustomFieldLookupListQuery, {\r\n variables: {\r\n customFieldLookupListGuid: customFieldLookupListGuid || ''\r\n },\r\n skip: !customFieldLookupListGuid\r\n });\r\n\r\n const [state, setState] = useState({\r\n items: [],\r\n isAdd: false,\r\n search: '',\r\n isEdit: false,\r\n isDelete: false,\r\n });\r\n\r\n const textFieldPlaceHolder = 'Description';\r\n\r\n useEffect(() => {\r\n if (!error && data && data.crm && data.crm.customFieldLookupListItem ) {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n items: data.crm.customFieldLookupListItem.map((value) => {\r\n return { \r\n guidId: value.guidId,\r\n description: value.description,\r\n sequence: value.sequence,\r\n customFieldLookupListGuid: value.customFieldLookupListGuid,\r\n isDelete: false,\r\n isEdit: false\r\n };\r\n }).sort((a, b) => a.sequence < b.sequence ? -1 : a.sequence > b.sequence ? 1 : 0)\r\n };\r\n });\r\n }\r\n // tslint:disable-next-line: align\r\n }, [data, error, loading]);\r\n\r\n useEffect(() => {\r\n \r\n const subscribeFirmObj = subscribeFirm();\r\n\r\n return () => {\r\n subscribeFirmObj.unsubscribe();\r\n };\r\n // tslint:disable-next-line: align\r\n }, []);\r\n\r\n const subscribeFirm = () => {\r\n return (\r\n // let subscription =\r\n client\r\n .subscribe({\r\n fetchPolicy: 'no-cache',\r\n query: CustomFieldLookupNotificationSubscription,\r\n variables: {},\r\n })\r\n .subscribe({\r\n // tslint:disable-next-line:no-any\r\n next(results) {\r\n if (results.data?.lookupNotification.status) {\r\n\r\n const { lookupNotification } = results.data;\r\n\r\n showNotification('Success', lookupNotification.message, 'info');\r\n\r\n if (lookupNotification.message.includes('Created successfully')) {\r\n \r\n setState((prevState) => {\r\n\r\n const tdata = [...prevState.items];\r\n\r\n const temp = tdata[tdata.length - 1];\r\n\r\n tdata[tdata.length - 1] = {\r\n ...temp,\r\n guidId: lookupNotification.guidId || ''\r\n };\r\n\r\n return {\r\n ...prevState,\r\n items: tdata\r\n };\r\n });\r\n }\r\n\r\n } else {\r\n showNotification('Failed', results.data?.lookupNotification.message || '', 'error');\r\n }\r\n },\r\n // tslint:disable-next-line:no-any\r\n error(err: any) {\r\n // tslint:disable-next-line:no-console\r\n console.error(err);\r\n showNotification(null, err, 'error');\r\n },\r\n })\r\n );\r\n };\r\n \r\n let textField = '';\r\n\r\n // itemInputRef.current = getItems(10).map((ref, index) => itemInputRef.current[index] = React.createRef());\r\n\r\n const reorder = (list: CustomFieldLookUpListSelectedTabItem[], startIndex: number, endIndex: number) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n \r\n return result;\r\n };\r\n\r\n const onDragEnd = (result: DropResult, provided: ResponderProvided) => {\r\n // dropped outside the list\r\n if (!result.destination) {\r\n return;\r\n }\r\n \r\n const items = reorder(\r\n state.items,\r\n result.source.index,\r\n result.destination.index\r\n ).map((item: CustomFieldLookUpListSelectedTabItem, index: number) => {\r\n return {\r\n ...item,\r\n sequence: index\r\n };\r\n });\r\n\r\n setState((prevState) => {\r\n \r\n client\r\n .mutate({\r\n mutation: UpdateCustomFieldSequenceLookupListItemMutation,\r\n variables: {\r\n lookupSequences: items.map((item: CustomFieldLookUpListSelectedTabItem) => {\r\n return {\r\n guidId: item.guidId, \r\n sequence: item.sequence\r\n };\r\n })\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to update Task Type Group sorting', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to update Task Type Group sorting', reason, 'error');\r\n });\r\n\r\n return {\r\n ...prevState,\r\n items\r\n };\r\n });\r\n\r\n };\r\n\r\n // const getListStyle = (isDraggingOver: boolean) => ({\r\n // background: isDraggingOver ? 'lightblue' : 'lightgrey',\r\n // padding: grid,\r\n // width: 250\r\n // });\r\n\r\n // tslint:disable-next-line: no-any\r\n const getItemStyle = (isDragging: boolean, draggableStyle: any) => ({\r\n // styles we need to apply on draggables\r\n ...draggableStyle,\r\n\r\n ...(isDragging && {\r\n background: 'rgb(235,235,235)'\r\n }),\r\n position: 'static',\r\n zIndex: 1\r\n });\r\n\r\n const onClickAdd = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isAdd: true\r\n };\r\n });\r\n };\r\n\r\n const onClickCancel = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isAdd: false,\r\n isEdit: false,\r\n isDelete: false,\r\n };\r\n });\r\n };\r\n\r\n const onSearch = (search: string) => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n search\r\n };\r\n });\r\n };\r\n\r\n const onEditRowEnable = (item: CustomFieldLookUpListSelectedTabItem) => () => {\r\n const items = [...state.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isEdit = true;\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n items,\r\n isEdit: true,\r\n };\r\n });\r\n };\r\n\r\n const onCancelEditRow = (item: CustomFieldLookUpListSelectedTabItem) => () => {\r\n // code here..\r\n const items = [...state.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isEdit = false;\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n items,\r\n isEdit: false,\r\n };\r\n });\r\n };\r\n\r\n const onEditRow = (item: CustomFieldLookUpListSelectedTabItem, index: number) => () => {\r\n\r\n if (textField) {\r\n\r\n setState((prevState) => {\r\n client\r\n .mutate({\r\n mutation: UpdateCustomFieldLookupListItemMutation,\r\n variables: {\r\n guidId: item.guidId,\r\n description: textField,\r\n customFieldLookupListGuid: item.customFieldLookupListGuid,\r\n sequence: item.sequence\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to Update Task Type Group', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Update Task Type Group', reason, 'error');\r\n });\r\n\r\n const tdata = [...prevState.items];\r\n tdata[tdata.indexOf(item)].isEdit = false;\r\n tdata[tdata.indexOf(item)].description = textField;\r\n \r\n return { \r\n ...prevState, \r\n data: tdata,\r\n isEdit: false\r\n };\r\n });\r\n }\r\n };\r\n\r\n const onDeleteRowEnable = (item: CustomFieldLookUpListSelectedTabItem) => () => {\r\n\r\n setState((prevState) => {\r\n\r\n const items = [...prevState.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isDelete = true;\r\n\r\n return {\r\n ...prevState,\r\n items,\r\n isDelete: true\r\n };\r\n });\r\n };\r\n\r\n const onCancelDeleteRow = (item: CustomFieldLookUpListSelectedTabItem) => () => {\r\n // code here..\r\n\r\n setState((prevState) => {\r\n\r\n const items = [...prevState.items];\r\n \r\n const index = items.indexOf(item);\r\n\r\n items[index].isDelete = false;\r\n\r\n return {\r\n ...prevState,\r\n items,\r\n isDelete: false\r\n };\r\n });\r\n };\r\n\r\n const onDeleteRow = (item: CustomFieldLookUpListSelectedTabItem) => () => {\r\n \r\n setState((prevState) => {\r\n\r\n client\r\n .mutate({\r\n mutation: DeleteCustomFieldLookupListItemMutation,\r\n variables: {\r\n guidId: item.guidId,\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to Delete Task Type Group', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to Delete Task Type Group', reason, 'error');\r\n });\r\n\r\n const tItems = [...prevState.items];\r\n tItems.splice(tItems.indexOf(item), 1);\r\n\r\n return {\r\n ...prevState,\r\n isDelete: false,\r\n items: tItems\r\n };\r\n });\r\n };\r\n\r\n const onAddItem = () => {\r\n \r\n if (textField) {\r\n\r\n setState((prevState) => {\r\n\r\n client\r\n .mutate({\r\n mutation: CreateCustomFieldLookupListItemMutation,\r\n variables: {\r\n description: textField,\r\n sequence: prevState.items.length,\r\n customFieldLookupListGuid: customFieldLookupListGuid\r\n },\r\n })\r\n // tslint:disable-next-line: no-any\r\n .then((results: { data: any }) => {\r\n if (results.data) {\r\n if (results.data.error !== undefined) {\r\n showNotification( 'Failed to create Task Type Group', results.data.error, 'error');\r\n }\r\n }\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n showNotification('Failed to create Task Type Group', reason, 'error');\r\n });\r\n\r\n const tItems = [...prevState.items];\r\n \r\n tItems.push({\r\n guidId: '',\r\n description: textField,\r\n sequence: prevState.items.length,\r\n customFieldLookupListGuid: customFieldLookupListGuid || '',\r\n isEdit: false,\r\n isDelete: false,\r\n });\r\n \r\n return {\r\n ...prevState,\r\n isAdd: false,\r\n items: tItems\r\n };\r\n });\r\n }\r\n \r\n };\r\n\r\n const onChangeUpdate = (item: CustomFieldLookUpListSelectedTabItem, index: number) => (event: React.ChangeEvent) => {\r\n textField = event.target.value;\r\n };\r\n\r\n const onChangeAdd = (event: React.ChangeEvent) => {\r\n textField = event.target.value;\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const DroppableComponent = (onDragEndComponent: (result: DropResult, provided: ResponderProvided) => void) => (props: any) => {\r\n return (\r\n \r\n \r\n {(provided) => {\r\n return (\r\n \r\n {props.children}\r\n {provided.placeholder}\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n const DraggableComponent = (item: CustomFieldLookUpListSelectedTabItem, index: number) => (props: any) => {\r\n return (\r\n \r\n {(provided, snapshot) => (\r\n \r\n {!!(!item.isDelete && !item.isEdit) && (\r\n <>\r\n \r\n
\r\n \r\n \r\n {item.description}\r\n
\r\n \r\n
\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {!!(item.isDelete && state.isDelete) && (\r\n <>\r\n \r\n Are you sure you want to delete this row?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!!(item.isEdit && state.isEdit) && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n )}\r\n \r\n );\r\n };\r\n\r\n const getDraggableRows = () => {\r\n let filteredItems = state.items;\r\n \r\n if (state.search) {\r\n filteredItems = state.items.filter((item: CustomFieldLookUpListSelectedTabItem) => {\r\n return item.description.toLowerCase().indexOf(state.search) >= 0;\r\n });\r\n } \r\n\r\n return (\r\n _.map(filteredItems, (item, index) => {\r\n return (\r\n \r\n );\r\n })\r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n {!!loading && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n Description\r\n {/* Count */}\r\n Actions\r\n \r\n \r\n \r\n {!!state.isAdd && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {\r\n getDraggableRows()\r\n }\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\ntype CustomFieldLookupListItemParams = {\r\n customFieldLookupListGuid: string;\r\n};\r\n\r\ntype CustomFieldLookupListItemData = {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n crm: CRM;\r\n};\r\n\r\ntype CRM = {\r\n customFieldLookupListItem: CustomFieldLookupListItem[];\r\n};\r\n\r\ntype CustomFieldLookupListItem = {\r\n guidId: string;\r\n description: string;\r\n customFieldLookupListGuid: string;\r\n sequence: number;\r\n};\r\n\r\nconst CustomFieldLookupListQuery = gql`\r\n query CustomFieldLookupListItem ($customFieldLookupListGuid: String){\r\n crm {\r\n customFieldLookupListItem (customFieldLookupListGuid: $customFieldLookupListGuid){\r\n guidId\r\n description\r\n customFieldLookupListGuid\r\n sequence\r\n }\r\n }\r\n }\r\n`;\r\n\r\ntype CustomFieldLookupNotificationSubscriptionData = {\r\n lookupNotification: LookupNotification;\r\n};\r\n\r\ntype LookupNotification = {\r\n id: number;\r\n guidId: null;\r\n lookupDescription: null;\r\n message: string;\r\n status: boolean;\r\n};\r\n\r\nconst CustomFieldLookupNotificationSubscription = gql`\r\n subscription customFieldLookupNotification {\r\n lookupNotification{\r\n id,\r\n guidId,\r\n lookupDescription,\r\n message,\r\n status\r\n }\r\n }\r\n`;\r\n\r\nconst CreateCustomFieldLookupListItemMutation = gql`\r\n mutation CreateCustomFieldLookupListItem(\r\n $description: String\r\n $sequence: Int\r\n $customFieldLookupListGuid: String\r\n ) {\r\n createCustomFieldLookupListItem(\r\n description: $description\r\n sequence: $sequence\r\n customFieldLookupListGuid: $customFieldLookupListGuid\r\n )\r\n }\r\n`;\r\n\r\nconst UpdateCustomFieldLookupListItemMutation = gql`\r\n mutation UpdateCustomFieldLookupListItem(\r\n $description: String\r\n $guidId: String\r\n $customFieldLookupListGuid: String\r\n $sequence: Int\r\n ) {\r\n updateCustomFieldLookupListItem(\r\n description: $description\r\n guidId: $guidId\r\n customFieldLookupListGuid: $customFieldLookupListGuid\r\n sequence: $sequence\r\n )\r\n }\r\n`;\r\n\r\nconst DeleteCustomFieldLookupListItemMutation = gql`\r\n mutation DeleteCustomFieldLookupListItem($guidId: String) {\r\n deleteCustomFieldLookupListItem(guidId: $guidId)\r\n }\r\n`;\r\n\r\nconst UpdateCustomFieldSequenceLookupListItemMutation = gql`\r\n mutation UpdateCustomFieldSequenceLookupListItem($lookupSequences: [LookupSequence]) {\r\n updateCustomFieldLookupListItemSequence(lookupSequences: $lookupSequences)\r\n }\r\n`;","import React, { useState } from 'react';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport { RvLoader } from '../components/Loader';\r\nimport { FirmSettingConfigurationBanner } from '../firmSettingConfiguration/FirmSettingConfigurationBanner';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\nimport CustomFieldLookUpListsTab from './tabs/customFieldLookUpLists/CustomFieldLookUpListsTab';\r\nimport CustomFieldGroupsTab from './tabs/customFieldGroups/CustomFieldGroupsTab';\r\nimport CustomFieldLookUpListSelectedTab from './tabs/customFieldLookUpLists/CustomFieldLookUpListSelectedTab';\r\nimport CustomFieldGroupSelectedTab from './tabs/customFieldGroups/CustomFieldGroupSelectedTab';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n },\r\n wrapper: {\r\n flex: 1,\r\n display: 'flex',\r\n backgroundColor: '#fff',\r\n margin: '0 -15px',\r\n padding: '15px',\r\n },\r\n sidebar: {\r\n padding: '0 15px',\r\n maxWidth: '400px',\r\n minWidth: '400px',\r\n width: '100%',\r\n position: 'relative',\r\n flex: 1,\r\n display: 'flex',\r\n },\r\n sidebarInner: {\r\n position: 'relative',\r\n flex: 1,\r\n // left: 0,\r\n // right: 0,\r\n // top: 0,\r\n // bottom: 0,\r\n // overflow: 'auto',\r\n },\r\n sidebarList: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n bottom: 0,\r\n overflow: 'auto',\r\n paddingRight: '10px',\r\n '& .Mui-selected': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)'\r\n },\r\n '& .Mui-selected:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.2)'\r\n }\r\n },\r\n content: {\r\n padding: '0 15px',\r\n flexGrow: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n },\r\n tabLoaderWrapper: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flex: 1,\r\n }\r\n});\r\n\r\nenum EnquiryCustomFieldsList {\r\n CustomFieldGroups = 'CustomFieldGroups',\r\n CustomFieldLookUpLists = 'CustomFieldLookUpLists',\r\n}\r\n\r\ntype SettingName = {\r\n title: string;\r\n description: string;\r\n internalName: string;\r\n}\r\n\r\ninterface EnquiryCustomFieldsPageState {\r\n selectedTable: EnquiryCustomFieldsList;\r\n tabs: SettingName[];\r\n isTabLoading: boolean;\r\n}\r\n\r\ninterface EnquiryCustomFieldsPageProps {\r\n\r\n}\r\n\r\nexport default function EnquiryCustomFieldsPage(props: EnquiryCustomFieldsPageProps) {\r\n\r\n const classes = useStyles();\r\n\r\n const location = useLocation();\r\n\r\n const history = useHistory();\r\n\r\n const selectedTab = location.pathname.split('/').pop();\r\n\r\n const searchParams = new URLSearchParams(location.search);\r\n\r\n const tabSelected = searchParams.get('tab') || EnquiryCustomFieldsList.CustomFieldGroups;\r\n const tabKey = searchParams.get('tabKey');\r\n \r\n const [pageState] = useState({\r\n selectedTable: selectedTab && selectedTab !== 'enquiryCustomFieldsConfiguration' ? selectedTab as EnquiryCustomFieldsList : EnquiryCustomFieldsList.CustomFieldGroups,\r\n tabs: [\r\n {\r\n title: 'Custom Field Groups',\r\n description: 'Group of user defined custom fields',\r\n internalName: EnquiryCustomFieldsList.CustomFieldGroups,\r\n },\r\n {\r\n title: 'Custom Field Look Up Lists',\r\n description: 'Look up lists used for the validation of custom fields',\r\n internalName: EnquiryCustomFieldsList.CustomFieldLookUpLists,\r\n },\r\n ],\r\n isTabLoading: false,\r\n });\r\n\r\n const getIcon = (internalName: string) => {\r\n\r\n // tslint:disable-next-line: max-line-length\r\n if (internalName === EnquiryCustomFieldsList[EnquiryCustomFieldsList.CustomFieldGroups]) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n if (internalName === EnquiryCustomFieldsList[EnquiryCustomFieldsList.CustomFieldLookUpLists]) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const isHasAccess = (internalName: string): boolean => {\r\n \r\n // if (internalName === EnquiryCustomFieldsList[EnquiryCustomFieldsList.EmailConfiguration]) {\r\n // return UserFeature.HasAccess(UserFeatureEnum.hasInnographyLink);\r\n // }\r\n\r\n // if (internalName === EnquiryCustomFieldsList[EnquiryCustomFieldsList.EnquiryDefaultConfiguration]) {\r\n // return UserFeature.HasAccess(UserFeatureEnum.hasVisionSix);\r\n // }\r\n\r\n return true;\r\n };\r\n\r\n const onClickBack = () => {\r\n history.push('/configurationDashboard');\r\n };\r\n\r\n const onClickTab = (value: EnquiryCustomFieldsList) => () => {\r\n\r\n history.push({\r\n pathname: 'enquiryCustomFieldsConfiguration',\r\n search: `?tab=${value}`,\r\n });\r\n \r\n // setPageState({\r\n // ...pageState,\r\n // selectedTable: value\r\n // });\r\n\r\n // props.history.push(`/enquiryCustomFieldsConfiguration/${value}`);\r\n };\r\n \r\n return (\r\n
\r\n \r\n
\r\n {pageState.isTabLoading ? (\r\n
\r\n \r\n
\r\n ) : (\r\n <>\r\n
\r\n
\r\n \r\n {pageState.tabs.map((tab: SettingName) => isHasAccess(tab.internalName) && (\r\n \r\n \r\n {getIcon(tab.internalName)}\r\n \r\n \r\n \r\n )\r\n )}\r\n \r\n
\r\n
\r\n
\r\n {(tabSelected === EnquiryCustomFieldsList.CustomFieldGroups && !tabKey) && (\r\n \r\n )}\r\n {(tabSelected === EnquiryCustomFieldsList.CustomFieldGroups && tabKey) && (\r\n \r\n )}\r\n {(tabSelected === EnquiryCustomFieldsList.CustomFieldLookUpLists && !tabKey) && (\r\n \r\n )}\r\n {(tabSelected === EnquiryCustomFieldsList.CustomFieldLookUpLists && tabKey) && (\r\n \r\n )}\r\n
\r\n \r\n )}\r\n
\r\n
\r\n );\r\n}","import gql from 'graphql-tag';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport { client } from '..';\r\n\r\nexport enum EmailTemplateTypeEnum {\r\n MFA = 0,\r\n NEW_USER_CREATED,\r\n LEAP_CONTACT_US,\r\n PASSWORD_RESET,\r\n LEAP_FIRM_PROVISIONING,\r\n NEW_INTERNAL_USER_CREATED,\r\n NEW_MATTER_MESSAGE_SENT,\r\n NEW_DOCUMENT_UPLOADED,\r\n NEW_LEAD_ASSIGNED,\r\n OTHER,\r\n WELCOME_EMAIL,\r\n NEW_LEAD,\r\n NEW_CLIENT = 12,\r\n NEW_MATTER_DOCUMENT = 13,\r\n ENQUIRY_MENTIONS = 14,\r\n TASK_ASSIGNED = 15,\r\n TASK_COMPLETED = 16,\r\n PHONE_MESSAGE,\r\n NEW_ENQUIRY_RESPONSE = 18,\r\n MEETING_BOOKING = 19,\r\n EMAIL_RESPONSE = 20,\r\n FOLLOW_UP_ENQUIRY_REMINDER = 21,\r\n FOLLOW_UP_ENQUIRY_OVER_DUE_REMINDER = 22,\r\n NEW_TENANT_PROVISIONED = 23,\r\n TENANT_DE_PROVISIONED = 24,\r\n NEW_MEETING_NOTIFICATION = 25,\r\n RecordCreatedConfirmation = 26,\r\n RecordCreationFailed = 27,\r\n TaskMessage = 28,\r\n TASK_REMINDER = 29,\r\n TASK_OVER_DUE_REMINDER = 30,\r\n InstructMatter = 31,\r\n UnassignedEnquiry = 32,\r\n EmailSendFailureNotification = 33\r\n}\r\n\r\nexport interface EmailTemplateQueryParams {\r\n isInternalRole: boolean | null;\r\n roleId: string | null;\r\n selectedUserId: string | null; \r\n emailType: string | null;\r\n}\r\n\r\nexport interface EmailTemplateData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n templates: Templates;\r\n}\r\n\r\nexport interface Templates {\r\n emailTemplate: EmailTemplate;\r\n}\r\n\r\nexport interface EmailTemplate {\r\n emailTemplateGuid: null;\r\n emailType: number;\r\n isInternalRole: null;\r\n roleGuid: null;\r\n subject: string;\r\n template: string;\r\n templateType: null;\r\n userGuid: null;\r\n ccAssistant: boolean;\r\n matchedPropertys: MatchedPropertys;\r\n}\r\nexport interface MatchedPropertys {\r\n entity: string;\r\n matchedProperty: MatchedProperty[];\r\n}\r\nexport interface MatchedProperty {\r\n key: string;\r\n keyDescription: string;\r\n recipient: string;\r\n recipientDescription: string;\r\n scope: string;\r\n scopeDescription: string;\r\n source: string;\r\n sourceDescription: string;\r\n location: string;\r\n locationDescription: string;\r\n assignee: string;\r\n assigneeDescription: string;\r\n}\r\n\r\nexport function retrieveEmailTemplateData(\r\n query: EmailTemplateQueryParams, \r\n refreshData: boolean,\r\n onSuccess: (data: EmailTemplateData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void)\r\n : void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client.query({\r\n query: EmailTemplateQuery,\r\n variables: {\r\n isInternalRole: query.isInternalRole,\r\n roleId: query.roleId,\r\n selectedUserId: query.selectedUserId,\r\n emailType: query.emailType\r\n },\r\n fetchPolicy: fetchPolicy\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any; }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any ) => { \r\n onError(reason); \r\n });\r\n}\r\n\r\nexport const UpdateEmailTemplate = gql`\r\n mutation UpdateEmailTemplate(\r\n $emailType: EmailType, \r\n $isInternalRole: Boolean, \r\n $roleId: String,\r\n $selectedUserId: String, \r\n $template: String, \r\n $subject: String,\r\n $matchedProperties: MatchedPropertiesInput,\r\n $ccAssistant: Boolean\r\n ){\r\n updateEmailTemplate(\r\n emailType: $emailType, \r\n isInternalRole: \r\n $isInternalRole, \r\n roleId: $roleId, \r\n selectedUserId: \r\n $selectedUserId, \r\n template: $template, \r\n subject: $subject,\r\n matchedProperties: $matchedProperties,\r\n ccAssistant: $ccAssistant\r\n ) {\r\n status\r\n error\r\n }\r\n \r\n }\r\n`;\r\nexport const DeleteEmailTemplate = gql`\r\n mutation DeleteEmailTemplate(\r\n $emailType: EmailType, \r\n $isInternalRole: Boolean, \r\n $roleId: String,\r\n $selectedUserId: String\r\n ){\r\n deleteEmailTemplate(\r\n emailType: $emailType, \r\n isInternalRole: $isInternalRole, \r\n roleId: $roleId, \r\n selectedUserId: $selectedUserId\r\n )\r\n }\r\n`;\r\n \r\nexport const UpdateSplashScreenSubscription = gql`\r\n subscription updateSplashScreenSubscription{\r\n splashScreenNotification{\r\n id,\r\n description,\r\n message,\r\n status\r\n }\r\n }\r\n`;\r\n\r\nexport const EmailTemplateQuery = gql`\r\n query EmailTemplate(\r\n $isInternalRole: Boolean, \r\n $roleId: String, \r\n $selectedUserId: String, \r\n $emailType: EmailType\r\n ) {\r\n templates {\r\n emailTemplate(\r\n isInternalRole: $isInternalRole, \r\n roleId: $roleId, \r\n selectedUserId: $selectedUserId, \r\n emailType: $emailType\r\n ) {\r\n emailTemplateGuid\r\n emailType\r\n isInternalRole\r\n roleGuid\r\n subject\r\n template\r\n emailStyle\r\n userGuid\r\n ccAssistant\r\n matchedPropertys {\r\n entity\r\n matchedProperty {\r\n key\r\n keyDescription\r\n recipient\r\n recipientDescription\r\n scope\r\n scopeDescription\r\n source\r\n \tsourceDescription\r\n location\r\n locationDescription\r\n assignee\r\n assigneeDescription\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const subscriptionEmailTemplate = gql`\r\n subscription SubscriptionEmailTemplate{\r\n emailTemplateNotification{\r\n id,\r\n message,\r\n status,\r\n emailType\r\n }\r\n }\r\n`;\r\n\r\nexport interface EmailTemplateListQueryParams {\r\n emailType: string | null;\r\n integrationTemplateId: string | null;\r\n}\r\n\r\nexport interface EmailTemplateListQueryData {\r\n loading?: boolean;\r\n networkStatus?: number;\r\n templates: Templates;\r\n}\r\n\r\nexport interface Templates {\r\n emailTemplateList: EmailTemplateList[];\r\n}\r\n\r\nexport interface EmailTemplateList {\r\n emailTemplateGuid: string;\r\n emailType: number;\r\n isInternalRole: null;\r\n roleGuid: null;\r\n subject: string;\r\n template: string;\r\n emailStyle: number;\r\n userGuid: null;\r\n ccAssistant: boolean;\r\n integrationTemplateId: null;\r\n integrationTemplateName: null;\r\n description: string;\r\n name: string;\r\n matchedPropertys: MatchedPropertys;\r\n isActive: boolean;\r\n}\r\n\r\nexport function retrieveEmailTemplateListData(\r\n query: EmailTemplateListQueryParams, \r\n refreshData: boolean,\r\n onSuccess: (data: EmailTemplateListQueryData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void)\r\n : void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client.query({\r\n query: EmailTemplateListQuery,\r\n variables: {\r\n emailType: query.emailType,\r\n integrationTemplateId: query.integrationTemplateId\r\n },\r\n fetchPolicy: fetchPolicy\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any; }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any ) => { \r\n onError(reason); \r\n });\r\n}\r\n\r\nexport const EmailTemplateListQuery = gql`\r\n query EmailTemplateList($emailType: EmailType, $integrationTemplateId: String) {\r\n templates {\r\n emailTemplateList(emailType:$emailType, integrationTemplateId: $integrationTemplateId){\r\n emailTemplateGuid\r\n emailType\r\n isInternalRole\r\n roleGuid\r\n subject\r\n template\r\n emailStyle\r\n userGuid\r\n ccAssistant\r\n integrationTemplateId,\r\n integrationTemplateName\r\n description\r\n name\r\n isActive\r\n matchedPropertys {\r\n entity\r\n matchedProperty {\r\n key\r\n keyDescription\r\n recipient\r\n recipientDescription\r\n scope\r\n scopeDescription\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;"],"sourceRoot":""}