{"version":3,"file":"app-7b2ae2ca.prod.dc4ca809705577771031.js","mappings":"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","sources":["webpack://landing-page/./site/settings/Admin/Applications/ConfirmDeleteModal.js","webpack://landing-page/./site/settings/Admin/Applications/style.less?4e6b","webpack://landing-page/./site/settings/Admin/Applications/CreateApplicationModal.js","webpack://landing-page/./site/settings/Admin/Applications/EditApplicationModal.js","webpack://landing-page/./site/settings/Admin/Applications/index.js","webpack://landing-page/./site/settings/Admin/Category/EditCategoryModal.js","webpack://landing-page/./site/settings/Admin/Category/CreateCategoryModal.js","webpack://landing-page/./site/settings/Admin/Category/index.js","webpack://landing-page/./site/settings/CompanyProfile/index.js","webpack://landing-page/./site/settings/Notifications/CreateNotificationModal.js","webpack://landing-page/./site/settings/Notifications/EditNotificationModal.js","webpack://landing-page/./site/settings/Notifications/index.js","webpack://landing-page/./site/settings/Releases/CreateReleaseModal.js","webpack://landing-page/./site/settings/Releases/EditReleaseModal.js","webpack://landing-page/./site/settings/Releases/index.js","webpack://landing-page/./site/settings/ReturnToApp/index.js","webpack://landing-page/./site/settings/UserProfile/index.js","webpack://landing-page/./site/settings/Users/style.less?5544","webpack://landing-page/./site/settings/Users/EditUserModal.js","webpack://landing-page/./site/settings/Users/AddUserToProfileModal.js","webpack://landing-page/./site/settings/Users/UsersTable.js","webpack://landing-page/./site/settings/Users/CreateUserModal.js","webpack://landing-page/./site/settings/Users/index.js","webpack://landing-page/./site/settings/Admin/Applications/style.less","webpack://landing-page/./site/settings/Users/style.less"],"sourcesContent":["import PropTypes from 'prop-types';\r\nimport { Modal } from 'antd';\r\nimport { useI18nLocalization } from '../../../i18nLocalization/useI18nLocalization';\r\n\r\nconst ConfirmDeleteModal = ({\r\n\tdeleteModalIsVisible,\r\n\tonConfirmDeleteCallback,\r\n\tonCancelDeleteCallback,\r\n\tapplicationName\r\n}) => {\r\n\tconst { t } = useI18nLocalization();\r\n\tconst handleCancel = () => {\r\n\t\tonCancelDeleteCallback();\r\n\t};\r\n\r\n\tconst handleDelete = () => {\r\n\t\tonConfirmDeleteCallback();\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t{t('Are you sure you want to delete') + ' '}\r\n\t\t\t\t{applicationName}\r\n\t\t\t\t{'? ' + t('This action cannot be undone') + '.'}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nConfirmDeleteModal.propTypes = {\r\n\tdeleteModalIsVisible: PropTypes.bool.isRequired,\r\n\tonConfirmDeleteCallback: PropTypes.func.isRequired,\r\n\tonCancelDeleteCallback: PropTypes.func.isRequired,\r\n\tapplicationName: PropTypes.string.isRequired\r\n};\r\n\r\nexport default ConfirmDeleteModal;\r\n","\n import API from \"!../../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../.yarn/__virtual__/css-loader-virtual-5f091185ca/0/cache/css-loader-npm-6.5.1-a34b2a752f-5a3bedecb4.zip/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../.yarn/__virtual__/less-loader-virtual-070e38b319/0/cache/less-loader-npm-10.2.0-9c6619a5c0-42a2b56a9d.zip/node_modules/less-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./style.less\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../.yarn/__virtual__/css-loader-virtual-5f091185ca/0/cache/css-loader-npm-6.5.1-a34b2a752f-5a3bedecb4.zip/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../.yarn/__virtual__/less-loader-virtual-070e38b319/0/cache/less-loader-npm-10.2.0-9c6619a5c0-42a2b56a9d.zip/node_modules/less-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./style.less\";\n export default content && content.locals ? content.locals : undefined;\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { Modal, Form, notification, Row, Input, Col, Button, Upload, Radio, Select } from 'antd';\r\nimport { useI18nLocalization } from '../../../i18nLocalization/useI18nLocalization';\r\nimport { UploadOutlined } from '@ant-design/icons';\r\nimport { useApplicationsLogic } from '../../useApplicationsLogic';\r\nimport { useUtilities } from '../../../utilities/utils';\r\nimport { HexColorPicker, HexColorInput } from 'react-colorful';\r\nimport { applicationName, applicationDescription } from '../../../validation/regex';\r\nimport './style.less';\r\nimport _ from 'lodash';\r\n\r\nconst CreateApplicationModal = ({ isVisible, onSaveCallback, onCloseCallback, appNameList, categories }) => {\r\n\tdayjs.extend(utc);\r\n\r\n\tconst applicationLogic = useApplicationsLogic();\r\n\tconst utilities = useUtilities();\r\n\r\n\tconst { t } = useI18nLocalization();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [form] = Form.useForm();\r\n\tconst [areFormErrors, setAreFormErrors] = useState(true);\r\n\tconst [appEnabled, setAppEnabled] = useState(true);\r\n\tconst [iconFile, setIconFile] = useState(null);\r\n\tconst [logoFile, setLogoFile] = useState(null);\r\n\tconst [displayColorPicker, setDisplayColorPicker] = useState(false);\r\n\tconst [color, setColor] = useState('');\r\n\r\n\tconst { TextArea } = Input;\r\n\tconst { Option } = Select;\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tclearStateVariables();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearStateVariables = () => {\r\n\t\tsetDisplayColorPicker(false);\r\n\t\tsetColor('');\r\n\t\tsetIconFile(null);\r\n\t\tsetLogoFile(null);\r\n\t};\r\n\r\n\tconst getNewAplication = async (formValues) => {\r\n\t\tconst newApplicationObject = {\r\n\t\t\tenabled: appEnabled,\r\n\t\t\tname: formValues.appName,\r\n\t\t\tdescription: formValues.appDescription,\r\n\t\t\turl: formValues.appUrl,\r\n\t\t\ticon: await utilities.convertToBase64(iconFile).then(function (result) {\r\n\t\t\t\treturn result;\r\n\t\t\t}),\r\n\t\t\tlogo: await utilities.convertToBase64(logoFile).then(function (result) {\r\n\t\t\t\treturn result;\r\n\t\t\t}),\r\n\t\t\tsupportUrl: formValues.appHelpUrl,\r\n\t\t\tcolor: formValues.appColor,\r\n\t\t\tcategoryId: formValues.appCategory\r\n\t\t};\r\n\t\treturn newApplicationObject;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\r\n\t\tconst newApplication = await getNewAplication(formValues);\r\n\t\tconst successful = await applicationLogic.createApplication(newApplication);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`Application Created!`),\r\n\t\t\t\tduration: 5\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t\tclearStateVariables();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t(\r\n\t\t\t\t\t`We encountered an error creating the application. Please try again. If it persists, please submit an EntDev Helpdesk ticket.`\r\n\t\t\t\t),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\tconst enabledChange = (e) => {\r\n\t\tsetAppEnabled(e.target.value);\r\n\t};\r\n\r\n\tconst handleColorPick = () => {\r\n\t\tsetDisplayColorPicker(!displayColorPicker);\r\n\t};\r\n\r\n\tconst handleColorChangeComplete = (color) => {\r\n\t\tsetDisplayColorPicker(color);\r\n\t\tsetColor(color);\r\n\t\tform.setFieldsValue({\r\n\t\t\tappColor: color\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\trequiredMark\r\n\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t\tinitialValues={{ appInternalBoolean: true, appEnabledBoolean: true }}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (appNameList.includes(value)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name cannot be used by another application')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value.match(applicationName)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name must contain only letters, numbers, and symbols')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Description is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value.match(applicationDescription)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew Error(t('Description must contain only letters, numbers, and symbols'))\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Url is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value || !(value && value.file && value.file.status !== 'removed')) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Application must have an icon')));\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.type !== 'image/png' &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.type !== 'image/jpeg'\r\n\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file = null;\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetIconFile(null);\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Only PNGs and JPG(E)s are allowed')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonChange={(info) => {\r\n\t\t\t\t\t\t\t\t\t\tlet file = info.file;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (file && (file.type === 'image/png' || file.type === 'image/jpeg')) {\r\n\t\t\t\t\t\t\t\t\t\t\tsetIconFile(file);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tsetIconFile(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonRemove={() => {\r\n\t\t\t\t\t\t\t\t\t\tsetIconFile(null);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value || !(value && value.file && value.file.status !== 'removed')) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Application must have a logo')));\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.type !== 'image/png' &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.type !== 'image/jpeg'\r\n\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file = null;\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetLogoFile(null);\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Only PNGs and JPG(E)s are allowed')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonChange={(info) => {\r\n\t\t\t\t\t\t\t\t\t\tlet file = info.file;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (file && (file.type === 'image/png' || file.type === 'image/jpeg')) {\r\n\t\t\t\t\t\t\t\t\t\t\tsetLogoFile(file);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tsetLogoFile(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonRemove={() => {\r\n\t\t\t\t\t\t\t\t\t\tsetLogoFile(null);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{t('Enabled')}\r\n\t\t\t\t\t\t\t\t\t{t('Disabled')}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!displayColorPicker ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{displayColorPicker ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\t{displayColorPicker && (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tsetDisplayColorPicker(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nCreateApplicationModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired,\r\n\tappNameList: PropTypes.array.isRequired,\r\n\tcategories: PropTypes.array.isRequired\r\n};\r\n\r\nexport default CreateApplicationModal;\r\n","import { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { Modal, Form, notification, Row, Input, Col, Radio, Button, Upload, Select } from 'antd';\r\nimport { UploadOutlined } from '@ant-design/icons';\r\nimport { useI18nLocalization } from '../../../i18nLocalization/useI18nLocalization';\r\nimport { useApplicationsLogic } from '../../useApplicationsLogic';\r\nimport ConfirmDeleteModal from './ConfirmDeleteModal';\r\nimport { useUtilities } from '../../../utilities/utils';\r\nimport { HexColorPicker, HexColorInput } from 'react-colorful';\r\nimport { applicationName, applicationDescription } from '../../../validation/regex';\r\nimport './style.less';\r\n\r\nconst EditApplicationModal = ({ isVisible, onSaveCallback, onCloseCallback, application, appNameList, categories }) => {\r\n\tdayjs.extend(utc);\r\n\r\n\tconst applicationLogic = useApplicationsLogic();\r\n\tconst utilities = useUtilities();\r\n\r\n\tconst { t } = useI18nLocalization();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [form] = Form.useForm();\r\n\tconst [areFormErrors, setAreFormErrors] = useState(true);\r\n\tconst [appEnabled, setAppEnabled] = useState(application.enabled);\r\n\tconst [deleteModalVisible, setDeleteModalVisible] = useState(false);\r\n\tconst [iconFile, setIconFile] = useState(null);\r\n\tconst [logoFile, setLogoFile] = useState(null);\r\n\tconst [displayColorPicker, setDisplayColorPicker] = useState(false);\r\n\tconst [color, setColor] = useState(null);\r\n\r\n\tconst { TextArea } = Input;\r\n\tconst { Option } = Select;\r\n\r\n\tuseEffect(() => {\r\n\t\tform.setFieldsValue({\r\n\t\t\tappEnabledBoolean: application.enabled,\r\n\t\t\tappName: application.name,\r\n\t\t\tappDescription: application.description,\r\n\t\t\tappUrl: application.url,\r\n\t\t\t//icon //-- icon/logo isn't displayed, will only change if new one is uploaded\r\n\t\t\t//logo\r\n\t\t\tappSupportUrl: application.supportUrl,\r\n\t\t\tappColor: application.color,\r\n\t\t\tappInternalBoolean: application.internal,\r\n\t\t\tappCategory: application.categoryId\r\n\t\t});\r\n\t\tsetColor(application.color);\r\n\t}, [JSON.stringify(application)]);\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst getUpdatedAplication = async (formValues) => {\r\n\t\tconst newApplicationObject = {\r\n\t\t\tenabled: appEnabled,\r\n\t\t\tname: formValues.appName,\r\n\t\t\tdescription: formValues.appDescription,\r\n\t\t\turl: formValues.appUrl,\r\n\t\t\ticon: iconFile\r\n\t\t\t\t? await utilities.convertToBase64(iconFile).then(function (result) {\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t })\r\n\t\t\t\t: application.icon,\r\n\t\t\tlogo: logoFile\r\n\t\t\t\t? await utilities.convertToBase64(logoFile).then(function (result) {\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t })\r\n\t\t\t\t: application.logo,\r\n\t\t\tsupportUrl: formValues.appSupportUrl,\r\n\t\t\tcolor: formValues.appColor,\r\n\t\t\tid: application.id,\r\n\t\t\tcategoryId: formValues.appCategory\r\n\t\t};\r\n\t\treturn newApplicationObject;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\r\n\t\tconst updatedApplication = await getUpdatedAplication(formValues);\r\n\t\tconst successful = await applicationLogic.updateApplication(updatedApplication);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: `${application.name} ` + t('Updated') + '!',\r\n\t\t\t\tduration: 5\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t('ApplicationUpdateError'),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst handleDelete = async () => {\r\n\t\tsetIsSaving(true);\r\n\r\n\t\tconst applicationToDeleteId = application.id;\r\n\t\tconst successful = await applicationLogic.deleteApplication({ id: applicationToDeleteId });\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: `${application.name} ` + t('Deleted')\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t('ApplicationUpdateError'),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\tconst enabledChange = (e) => {\r\n\t\tsetAppEnabled(e.target.value);\r\n\t};\r\n\r\n\tconst handleColorPick = () => {\r\n\t\tsetDisplayColorPicker(!displayColorPicker);\r\n\t};\r\n\r\n\tconst handleColorChangeComplete = (color) => {\r\n\t\tsetDisplayColorPicker(color);\r\n\t\tsetColor(color);\r\n\t\tform.setFieldsValue({\r\n\t\t\tappColor: color\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t\tforceRender\r\n\t\t\t\tfooter={[\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tsetDeleteModalVisible(true);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{t('Delete')}\r\n\t\t\t\t\t,\r\n\t\t\t\t\t,\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tform.submit();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{t('Save')}\r\n\t\t\t\t\t\r\n\t\t\t\t]}\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\thandleDelete();\r\n\t\t\t\t\t\tsetDeleteModalVisible(false);\r\n\t\t\t\t\t\tonSaveCallback();\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonCancelDeleteCallback={() => {\r\n\t\t\t\t\t\tsetDeleteModalVisible(false);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tapplicationName={application.name}\r\n\t\t\t\t>\r\n\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\trequiredMark\r\n\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (value != application.name && appNameList.includes(value)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name cannot be used by another application')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value.match(applicationName)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name must contain only letters, numbers, and symbols')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Description is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value.match(applicationDescription)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew Error(t('Description must contain only letters, numbers, and symbols'))\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Url is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.status !== 'removed' &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.type !== 'image/png' &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.type !== 'image/jpeg'\r\n\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file = null;\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetIconFile(null);\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Only PNGs and JPG(E)s are allowed')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonChange={(info) => {\r\n\t\t\t\t\t\t\t\t\t\tlet file = info.file;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (file && (file.type === 'image/png' || file.type === 'image/jpeg')) {\r\n\t\t\t\t\t\t\t\t\t\t\tsetIconFile(file);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tsetIconFile(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonRemove={() => {\r\n\t\t\t\t\t\t\t\t\t\tsetIconFile(null);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.status !== 'removed' &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.type !== 'image/png' &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file.type !== 'image/jpeg'\r\n\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue.file = null;\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetIconFile(null);\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Only PNGs and JPG(E)s are allowed')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonChange={(info) => {\r\n\t\t\t\t\t\t\t\t\t\tlet file = info.file;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (file && (file.type === 'image/png' || file.type === 'image/jpeg')) {\r\n\t\t\t\t\t\t\t\t\t\t\tsetLogoFile(file);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tsetLogoFile(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tonRemove={() => {\r\n\t\t\t\t\t\t\t\t\t\tsetLogoFile(null);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{t('Enabled')}\r\n\t\t\t\t\t\t\t\t\t{t('Disabled')}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!displayColorPicker ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{displayColorPicker ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\t{displayColorPicker && (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tsetDisplayColorPicker(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nEditApplicationModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired,\r\n\tapplication: PropTypes.object,\r\n\tappNameList: PropTypes.array.isRequired,\r\n\tcategories: PropTypes.array.isRequired\r\n};\r\n\r\nexport default EditApplicationModal;\r\n","import { useState, useEffect } from 'react';\r\nimport { List, Row, Col, Spin, Button, Tooltip, Affix, Switch, notification, Space, Select, Input } from 'antd';\r\nimport { PlusOutlined, SettingOutlined } from '@ant-design/icons';\r\nimport { useApplicationsLogic } from '../../useApplicationsLogic';\r\nimport CreateApplicationModal from './CreateApplicationModal';\r\nimport { useI18nLocalization } from '../../../i18nLocalization/useI18nLocalization';\r\nimport EditApplicationModal from './EditApplicationModal';\r\nimport PageContent from '../../../structure/PageContent';\r\nimport { useCategoriesLogic } from '../../useCategoriesLogic';\r\n\r\nconst Admin = () => {\r\n\tconst applicationsLogic = useApplicationsLogic();\r\n\tconst categoryLogic = useCategoriesLogic();\r\n\tconst [applications, setApplications] = useState(null);\r\n\tconst [appNamesList, setAppNamesList] = useState(null);\r\n\tconst [listData, setListData] = useState(null);\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\tconst [createApplicationModalIsVisible, setApplicationModalIsVisible] = useState(false);\r\n\tconst [editApplicationModalIsVisible, setEditApplicationModalIsVisible] = useState(false);\r\n\tconst [selectedApp, setSelectedApp] = useState(null);\r\n\tconst [categories, setCategories] = useState(null);\r\n\r\n\t//filter variables\r\n\tconst [categoryFilter, setCategoryFilter] = useState(null);\r\n\tconst [enabledFilter, setEnabledFilter] = useState(null);\r\n\tconst [visibleFilter, setVisibleFilter] = useState(null);\r\n\tconst [searchFilter, setSearchFilter] = useState('');\r\n\r\n\tconst { Option } = Select;\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!applications) {\r\n\t\t\tgetApplications();\r\n\t\t}\r\n\r\n\t\tif (!categories) {\r\n\t\t\tgetCategories();\r\n\t\t}\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (applications) {\r\n\t\t\tapplyFilters();\r\n\t\t}\r\n\t}, [categoryFilter, enabledFilter, visibleFilter, searchFilter, JSON.stringify(applications)]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (applications) {\r\n\t\t\tconst listDataTemp = applications.map((app) => {\r\n\t\t\t\tconst appInfo = {\r\n\t\t\t\t\tid: app.id,\r\n\t\t\t\t\tname: app.name,\r\n\t\t\t\t\tdescription: app.description,\r\n\t\t\t\t\turl: app.url,\r\n\t\t\t\t\tsupportUrl: app.supportUrl,\r\n\t\t\t\t\tlogo: app.logo,\r\n\t\t\t\t\ticon: app.icon,\r\n\t\t\t\t\tshow: app.show,\r\n\t\t\t\t\tcolor: app.color,\r\n\t\t\t\t\tenabled: app.enabled,\r\n\t\t\t\t\tcategoryId: app.categoryId\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn appInfo;\r\n\t\t\t});\r\n\t\t\tsetListData(listDataTemp);\r\n\t\t\tapplyFilters();\r\n\t\t}\r\n\t}, [JSON.stringify(applications)]);\r\n\r\n\t//helper function for async (cant do async in useffect)\r\n\tconst getApplications = async () => {\r\n\t\tconst apps = await applicationsLogic.getApplications();\r\n\t\tsetApplications(apps);\r\n\t\tsetAppNamesList(\r\n\t\t\tapps.map((app) => {\r\n\t\t\t\treturn app.name;\r\n\t\t\t})\r\n\t\t);\r\n\t};\r\n\r\n\tconst getCategories = async () => {\r\n\t\tconst cats = await categoryLogic.getCategories();\r\n\t\tsetCategories(cats);\r\n\t};\r\n\r\n\tconst updateShow = async (id, name, checked) => {\r\n\t\tconst updatedAppModel = {\r\n\t\t\tid: id,\r\n\t\t\tshow: checked\r\n\t\t};\r\n\r\n\t\tconst successful = await applicationsLogic.updateApplicationVisibility(updatedAppModel);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: checked ? t(`${name} is now visible`) : t(`${name} has been hidden from view`),\r\n\t\t\t\tduration: 3\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t(`We encountered an error.`),\r\n\t\t\t\tduration: 3\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tconst getSelectedApp = () => {\r\n\t\treturn selectedApp;\r\n\t};\r\n\r\n\tconst setCategory = (value) => {\r\n\t\tif (value === undefined) {\r\n\t\t\tsetCategoryFilter(null);\r\n\t\t} else {\r\n\t\t\tconst categorySelection = value;\r\n\t\t\tsetCategoryFilter(categorySelection);\r\n\t\t}\r\n\t};\r\n\r\n\tconst setEnabled = (value) => {\r\n\t\tif (value === undefined) {\r\n\t\t\tsetEnabledFilter(null);\r\n\t\t} else {\r\n\t\t\tconst enabledBool = value === 'enabled' ? true : false;\r\n\t\t\tsetEnabledFilter(enabledBool);\r\n\t\t}\r\n\t};\r\n\r\n\tconst setVisible = (value) => {\r\n\t\tif (value === undefined) {\r\n\t\t\tsetVisibleFilter(null);\r\n\t\t} else {\r\n\t\t\tconst visibleBool = value === 'visible' ? true : false;\r\n\t\t\tsetVisibleFilter(visibleBool);\r\n\t\t}\r\n\t};\r\n\r\n\tconst setSearch = (input) => {\r\n\t\tsetSearchFilter(input.target.value);\r\n\t};\r\n\r\n\tconst applyFilters = () => {\r\n\t\tlet filteredApps = applications.map((app) => {\r\n\t\t\treturn app;\r\n\t\t});\r\n\t\tif (categoryFilter !== null) {\r\n\t\t\tfilteredApps = filteredApps.filter((app) => app.categoryId === categoryFilter);\r\n\t\t}\r\n\t\tif (enabledFilter !== null) {\r\n\t\t\tfilteredApps = filteredApps.filter((app) => app.enabled === enabledFilter);\r\n\t\t}\r\n\t\tif (visibleFilter !== null) {\r\n\t\t\tfilteredApps = filteredApps.filter((app) => app.show === visibleFilter);\r\n\t\t}\r\n\t\tif (searchFilter != '') {\r\n\t\t\tfilteredApps = filteredApps.filter((app) => {\r\n\t\t\t\treturn app.name.toLowerCase().includes(searchFilter.toLowerCase());\r\n\t\t\t});\r\n\t\t}\r\n\t\tsetListData(filteredApps);\r\n\t};\r\n\r\n\treturn !listData || !categories || !appNamesList ? (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t) : (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\tactions={[\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tsetEditApplicationModalIsVisible(true);\r\n\t\t\t\t\t\t\t\t\t\t\tsetSelectedApp(item);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\ttype='text'\r\n\t\t\t\t\t\t\t\t\t\ticon={}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{t('Edit')}\r\n\t\t\t\t\t\t\t\t,\r\n\t\t\t\t\t\t\t\t updateShow(item.id, item.name, checked)}\r\n\t\t\t\t\t\t\t\t\tkey='list-switch'\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t/>\r\n\t\t\t{getSelectedApp() && (\r\n\t\t\t\t {\r\n\t\t\t\t\t\tgetApplications();\r\n\t\t\t\t\t\tsetEditApplicationModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedApp(null);\r\n\t\t\t\t\t\tapplyFilters();\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\tsetEditApplicationModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedApp(null);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tapplication={selectedApp}\r\n\t\t\t\t\tappNameList={appNamesList}\r\n\t\t\t\t\tcategories={categories}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tsetApplicationModalIsVisible(true);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tgetApplications();\r\n\t\t\t\t\t\t\tsetApplicationModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\t\tsetApplicationModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tappNameList={appNamesList}\r\n\t\t\t\t\t\tcategories={categories}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Admin;\r\n","import { useEffect, useState } from 'react';\r\nimport { Modal, Form, Row, Col, Input, Button, notification, List, Tooltip } from 'antd';\r\nimport PropTypes from 'prop-types';\r\nimport { useI18nLocalization } from '../../../i18nLocalization/useI18nLocalization';\r\nimport { useCategoriesLogic } from '../../useCategoriesLogic';\r\nimport { useApplicationsLogic } from '../../useApplicationsLogic';\r\nimport ConfirmDeleteModal from '../Applications/ConfirmDeleteModal';\r\nimport { categoryName } from '../../../validation/regex';\r\n\r\nconst EditCategoryModal = ({ isVisible, category, onCloseCallback, onSaveCallback, categoryNames }) => {\r\n\tconst categoriesLogic = useCategoriesLogic();\r\n\tconst applicationLogic = useApplicationsLogic();\r\n\r\n\tconst { t } = useI18nLocalization();\r\n\tconst [form] = Form.useForm();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [categoryApps, setCategoryApps] = useState(null);\r\n\tconst [deleteModalVisible, setDeleteModalVisible] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!categoryApps) {\r\n\t\t\tgetCategoryApps();\r\n\t\t}\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tform.setFieldsValue({\r\n\t\t\tcategoryName: category.name\r\n\t\t});\r\n\t}, [JSON.stringify(category)]);\r\n\r\n\tconst getCategoryApps = async () => {\r\n\t\tconst apps = await applicationLogic.getApplications();\r\n\t\tconst filteredApps = apps.filter((app) => {\r\n\t\t\tif (app.categoryId === category.id) {\r\n\t\t\t\treturn app;\r\n\t\t\t}\r\n\t\t});\r\n\t\tsetCategoryApps(filteredApps);\r\n\t};\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst updatedCategory = getUpdatedCategory(formValues);\r\n\t\tconst successful = await categoriesLogic.updateCategoryName(updatedCategory);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: category.name + ' ' + t('Updated') + '!',\r\n\t\t\t\tduration: 5\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t(\r\n\t\t\t\t\t`We encountered an error updating the category. Please try again. If it persists, please submit an EntDev Helpdesk ticket.`\r\n\t\t\t\t),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst handleDelete = async () => {\r\n\t\tsetIsSaving(true);\r\n\r\n\t\tconst successful = await categoriesLogic.deleteCategory(category.id);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`${category.name} has been deleted`)\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t(\r\n\t\t\t\t\t`We encountered an error updating the category. Please try again. If it persists, please submit an EntDev Helpdesk ticket.`\r\n\t\t\t\t),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst getUpdatedCategory = (formValues) => {\r\n\t\tconst newCategoryObject = {\r\n\t\t\tid: category.id,\r\n\t\t\tnewName: formValues.categoryName\r\n\t\t};\r\n\t\treturn newCategoryObject;\r\n\t};\r\n\r\n\treturn (\r\n\t\tcategoryApps && (\r\n\t\t\t {\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tforceRender\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t\tfooter={[\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{!categoryApps.length ? (\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetDeleteModalVisible(true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{t('Delete')}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
,\r\n\t\t\t\t\t,\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tform.submit();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{t('Save')}\r\n\t\t\t\t\t\r\n\t\t\t\t]}\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\thandleDelete();\r\n\t\t\t\t\t\tsetDeleteModalVisible(false);\r\n\t\t\t\t\t\tonSaveCallback();\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonCancelDeleteCallback={() => {\r\n\t\t\t\t\t\tsetDeleteModalVisible(false);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tapplicationName={category.name}\r\n\t\t\t\t>\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (value != category.name && categoryNames.includes(value)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name cannot be used by another category')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value.match(categoryName)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name must be alpha characters')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t>\r\n\t\t\t\r\n\t\t)\r\n\t);\r\n};\r\n\r\nEditCategoryModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tcategory: PropTypes.object.isRequired,\r\n\tcategoryNames: PropTypes.array.isRequired\r\n};\r\n\r\nexport default EditCategoryModal;\r\n","import { useState } from 'react';\r\nimport { Modal, Form, Row, Col, Input, Button, notification } from 'antd';\r\nimport { useI18nLocalization } from '../../../i18nLocalization/useI18nLocalization';\r\nimport { useCategoriesLogic } from '../../useCategoriesLogic';\r\nimport { categoryName } from '../../../validation/regex';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst CreateCategoryModal = ({ isVisible, onSaveCallback, onCloseCallback, categoryNames }) => {\r\n\tconst categoriesLogic = useCategoriesLogic();\r\n\tconst { t } = useI18nLocalization();\r\n\tconst [form] = Form.useForm();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst categoryName = formValues.categoryName;\r\n\t\tconst successful = await categoriesLogic.createCategory(categoryName);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`New Category Created!`),\r\n\t\t\t\tduration: 5\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t(\r\n\t\t\t\t\t`We encountered an error creating the category. Please try again. If it persists, please submit an EntDev Helpdesk ticket.`\r\n\t\t\t\t),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tform.submit();\r\n\t\t\t}}\r\n\t\t\tcancelText={t('Cancel')}\r\n\t\t\tonCancel={handleOnCancel}\r\n\t\t\tforceRender\r\n\t\t\tconfirmLoading={isSaving}\r\n\t\t\tfooter={[\r\n\t\t\t\t,\r\n\t\t\t\t {\r\n\t\t\t\t\t\tform.submit();\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{t('Save')}\r\n\t\t\t\t\r\n\t\t\t]}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name is required')));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (categoryNames.includes(value)) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name cannot be used by another category')));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (!value.match(categoryName)) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Name must be alpha characters')));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nCreateCategoryModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tcategoryNames: PropTypes.array.isRequired\r\n};\r\n\r\nexport default CreateCategoryModal;\r\n","import { useState, useEffect } from 'react';\r\nimport { useCategoriesLogic } from '../../useCategoriesLogic';\r\nimport { Row, Col, Spin, List, Space, Button, Affix, Tooltip } from 'antd';\r\nimport { SettingOutlined, PlusOutlined } from '@ant-design/icons';\r\nimport PageContent from '../../../structure/PageContent';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport EditCategoryModal from './EditCategoryModal';\r\nimport CreateCatagoryModal from './CreateCategoryModal';\r\nimport { useI18nLocalization } from '../../../i18nLocalization/useI18nLocalization';\r\n\r\nconst Category = () => {\r\n\tconst categoryLogic = useCategoriesLogic();\r\n\r\n\tconst [categories, setCategories] = useState(null);\r\n\tconst [editCategoryModalIsVisible, setEditCategoryModalIsVisible] = useState(false);\r\n\tconst [createCategoryModalIsVisible, setCreateCategoryModalIsVisible] = useState(false);\r\n\tconst [selectedCategory, setSelectedCategory] = useState(null);\r\n\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!categories) {\r\n\t\t\tgetCategories();\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst getCategories = async () => {\r\n\t\tconst cats = await categoryLogic.getCategories();\r\n\t\tsetCategories(cats);\r\n\t};\r\n\r\n\tconst onDragEnd = async (result) => {\r\n\t\tif (!result.destination) {\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\tconst catObj = {\r\n\t\t\t\tId: result.draggableId,\r\n\t\t\t\tNewIndex: result.destination.index\r\n\t\t\t};\r\n\t\t\tupdateOrder(catObj);\r\n\t\t\treorder(result.source.index, result.destination.index);\r\n\t\t}\r\n\t};\r\n\r\n\tconst reorder = (fromIndex, toIndex) => {\r\n\t\tconst newOrder = [...categories];\r\n\t\tconst removed = newOrder.splice(fromIndex, 1);\r\n\t\tnewOrder.splice(toIndex, 0, removed[0]);\r\n\t\tsetCategories(newOrder);\r\n\t};\r\n\r\n\tconst updateOrder = async (cat) => {\r\n\t\tawait categoryLogic.updateCategoryOrder(cat);\r\n\t\tgetCategories();\r\n\t};\r\n\r\n\tconst getCategoryNames = () => {\r\n\t\tconst names = categories.map((cat) => {\r\n\t\t\treturn cat.name;\r\n\t\t});\r\n\t\treturn names;\r\n\t};\r\n\r\n\treturn !categories ? (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t) : (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{(provided) => (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{(provided) => (\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditCategoryModalIsVisible(true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedCategory(item);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype='text'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t('Edit')}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{provided.placeholder}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t{editCategoryModalIsVisible && (\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetEditCategoryModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedCategory(null);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonSaveCallback={() => {\r\n\t\t\t\t\t\tsetEditCategoryModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedCategory(null);\r\n\t\t\t\t\t\tgetCategories();\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tcategoryNames={getCategoryNames()}\r\n\t\t\t\t>\r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tsetCreateCategoryModalIsVisible(true);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tsetCreateCategoryModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonSaveCallback={() => {\r\n\t\t\t\t\t\t\tsetCreateCategoryModalIsVisible(false);\r\n\t\t\t\t\t\t\tgetCategories();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tcategoryNames={getCategoryNames()}\r\n\t\t\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Category;\r\n","import { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { notification, Row, Col, Spin, Form, Input, Select, Button } from 'antd';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\nimport { useCompanySettingsLogic } from '../useCompanySettingsLogic';\r\nimport PageContent from '../../structure/PageContent';\r\n\r\nconst CompanyProfile = () => {\r\n\tconst company = useSelector((state) => state.company);\r\n\tconst { availableLocalesAsSortedArray, t } = useI18nLocalization();\r\n\tconst companySettingsLogic = useCompanySettingsLogic();\r\n\r\n\tconst [form] = Form.useForm();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\r\n\tconst getCompanySettings = (formValues) => {\r\n\t\tconst companySettingsObj = {\r\n\t\t\tenterpriseProfileId: company.enterpriseProfileId,\r\n\t\t\thomeLocale: formValues.homeLocale\r\n\t\t};\r\n\t\treturn companySettingsObj;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst companySettingsToUpdate = getCompanySettings(formValues);\r\n\r\n\t\tconst successful = await companySettingsLogic.updateCompanySettings(companySettingsToUpdate);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`Settings saved!`)\r\n\t\t\t});\r\n\t\t\tsetIsSaving(false);\r\n\t\t\tclearForm();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: `We encountered an error saving the settings. Please try again. If it persists, please submit an EntDev Helpdesk ticket.`,\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t\tsetIsSaving(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\treturn !company ? (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t) : (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t('Some enterprise profiles may have this intentionally left blank')}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default CompanyProfile;\r\n","import { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { Modal, Form, Input, Select, DatePicker, Switch, notification } from 'antd';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\nimport { useNotificationsLogic } from '../useNotificationsLogic';\r\nimport { useApplicationsLogic } from '../useApplicationsLogic';\r\nimport { title } from '../../validation/regex';\r\n\r\nconst CreateNotificationModal = ({ isVisible, onSaveCallback, onCloseCallback }) => {\r\n\tdayjs.extend(utc);\r\n\r\n\tconst notificationsLogic = useNotificationsLogic();\r\n\tconst applicationsLogic = useApplicationsLogic();\r\n\r\n\tconst [form] = Form.useForm();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [areFormErrors, setAreFormErrors] = useState(true);\r\n\r\n\tconst { t, getDateFormat, getAntLocale } = useI18nLocalization();\r\n\r\n\t//-- defaultChecked doesn't play nice with the form, so I'll track it manually\r\n\tconst [isEnabled, setIsEnabled] = useState(true);\r\n\r\n\tconst [notificationTypes, setNotificationTypes] = useState(null);\r\n\tconst [applications, setApplications] = useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!notificationTypes) {\r\n\t\t\tgetNotificationTypes();\r\n\t\t}\r\n\t}, [JSON.stringify(notificationTypes)]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!applications) {\r\n\t\t\tgetApplications();\r\n\t\t}\r\n\t}, [JSON.stringify(applications)]);\r\n\r\n\tconst getNotificationTypes = async () => {\r\n\t\tconst nts = await notificationsLogic.getNotificationTypes();\r\n\t\tsetNotificationTypes(nts);\r\n\t};\r\n\r\n\tconst getApplications = async () => {\r\n\t\tconst apps = await applicationsLogic.getApplications();\r\n\t\tsetApplications(apps);\r\n\t};\r\n\r\n\t//-- Gather the form data\r\n\tconst getNewNotification = (formValues) => {\r\n\t\tconst newNotificationObj = {\r\n\t\t\tenabled: isEnabled,\r\n\t\t\tnotificationType: formValues.notificationType,\r\n\t\t\tbanner: formValues.displayType,\r\n\t\t\ttitle: formValues.title,\r\n\t\t\tmessage: formValues.message,\r\n\t\t\tnotifyThroughDateUtc: formValues.notifyThroughDateUtc.utc().format(),\r\n\t\t\tdismissable: formValues.dismissable ? true : false,\r\n\t\t\tapplicationId: formValues.applicationId\r\n\t\t};\r\n\t\treturn newNotificationObj;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst newNotification = getNewNotification(formValues);\r\n\t\tconst successful = await notificationsLogic.createNotification(newNotification);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: `${t(`NotificationCreated`)}!`\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t('CreateNotificationError'),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\t//-- Will trigger the form's onFinish event\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\trequiredMark\r\n\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetIsEnabled(checked);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Notify Through Date is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Title is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (!value.match(title)) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(`1-50 ${t('alpha and some special chars (inclusive)')}`));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('MessageRequired')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nCreateNotificationModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired\r\n};\r\n\r\nexport default CreateNotificationModal;\r\n","import { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { Modal, Form, Input, Select, DatePicker, Switch, notification } from 'antd';\r\nimport { useNotificationsLogic } from '../useNotificationsLogic';\r\nimport { title } from '../../validation/regex';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\n\r\nconst EditNotificationModal = ({ isVisible, onSaveCallback, onCloseCallback, ntificn }) => {\r\n\tdayjs.extend(utc);\r\n\r\n\tconst notificationsLogic = useNotificationsLogic();\r\n\r\n\tconst [form] = Form.useForm();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [areFormErrors, setAreFormErrors] = useState(false);\r\n\r\n\tconst { t, getDateFormat, getAntLocale } = useI18nLocalization();\r\n\r\n\tconst [notificationTypes, setNotificationTypes] = useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!notificationTypes) {\r\n\t\t\tgetNotificationTypes();\r\n\t\t}\r\n\t}, [JSON.stringify(notificationTypes)]);\r\n\r\n\tconst getNotificationTypes = async () => {\r\n\t\tconst nts = await notificationsLogic.getNotificationTypes();\r\n\t\tsetNotificationTypes(nts);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tform.setFieldsValue({\r\n\t\t\tenabled: ntificn?.enabled,\r\n\t\t\tnotificationType: ntificn?.notificationType,\r\n\t\t\tdisplayType: ntificn?.banner,\r\n\t\t\ttitle: ntificn?.title,\r\n\t\t\tmessage: ntificn?.message,\r\n\t\t\tnotifyThroughDateUtc: dayjs(ntificn?.notifyThroughDateUtc),\r\n\t\t\tdismissable: ntificn?.dismissable\r\n\t\t});\r\n\t}, [JSON.stringify(ntificn)]);\r\n\r\n\tconst getUpdatedNotification = (formValues) => {\r\n\t\tconst updatedNotificationObj = {\r\n\t\t\tenabled: formValues.enabled,\r\n\t\t\tnotificationType: formValues.notificationType,\r\n\t\t\tbanner: formValues.displayType,\r\n\t\t\toldTitle: ntificn.title,\r\n\t\t\ttitle: formValues.title,\r\n\t\t\tmessage: formValues.message,\r\n\t\t\toldNotifyThroughDateUtc: ntificn.notifyThroughDateUtc,\r\n\t\t\tnotifyThroughDateUtc: formValues.notifyThroughDateUtc.utc().format(),\r\n\t\t\tdismissable: formValues.dismissable ? true : false\r\n\t\t};\r\n\t\treturn updatedNotificationObj;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst updatedNotification = getUpdatedNotification(formValues);\r\n\t\tconst successful = await notificationsLogic.updateNotification(updatedNotification);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: `${t(`NotificationSaved`)}!`\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t('UpdateNotificationError'),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\t//-- Will trigger the form's onFinish event\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t\tforceRender //-- Needed b/c of using form.setFieldsValue to set the value of the fields\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\trequiredMark\r\n\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('NotifyThroughDateRequired')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Title is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (!value.match(title)) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(`1-50 ${t('alpha and some special chars (inclusive)')}`));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('MessageRequired')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nEditNotificationModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired,\r\n\tntificn: PropTypes.object\r\n};\r\n\r\nexport default EditNotificationModal;\r\n","import { useEffect, useState } from 'react';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { Row, Col, Spin, Empty, Typography, Space, Divider, Affix, Button, Tooltip, Modal, notification } from 'antd';\r\nimport { PlusOutlined, ExclamationCircleOutlined } from '@ant-design/icons';\r\nimport { useAuthZ } from '../../authZ/useAuthZ';\r\nimport PageContent from '../../structure/PageContent';\r\nimport { useNotificationsLogic } from '../useNotificationsLogic';\r\nimport CreateNotificationModal from './CreateNotificationModal';\r\nimport EditNotificationModal from './EditNotificationModal';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\n\r\nconst Notifications = () => {\r\n\tdayjs.extend(utc);\r\n\r\n\tconst authZ = useAuthZ();\r\n\tconst notificationsLogic = useNotificationsLogic();\r\n\r\n\t//-- Used for translations of text\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\t//-- Data source\r\n\tconst [notifications, setNotifications] = useState(null);\r\n\tconst [selectedNotification, setSelectedNotification] = useState(null);\r\n\r\n\tconst [createNotificationModalIsVisible, setCreateNotificationModalIsVisible] = useState(false);\r\n\tconst [editNotificationModalIsVisible, setEditNotificationModalIsVisible] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!notifications) {\r\n\t\t\tgetNotifications();\r\n\t\t}\r\n\t}, []);\r\n\r\n\t//-- Get notifications from the API\r\n\tconst getNotifications = async () => {\r\n\t\tlet nots = await notificationsLogic.getNotifications();\r\n\r\n\t\tnots = _.map(nots, (n) => {\r\n\t\t\tif (n.enabled && dayjs().isSameOrBefore(dayjs(n.notifyThroughDateUtc))) {\r\n\t\t\t\treturn _.extend({}, n, { status: 'active' });\r\n\t\t\t} else {\r\n\t\t\t\treturn _.extend({}, n, { status: 'inactive' });\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsetNotifications(nots);\r\n\t};\r\n\r\n\tconst deleteNotification = async (title, notifyThroughDateUtc) => {\r\n\t\tconst successful = await notificationsLogic.deleteNotification(title, notifyThroughDateUtc);\r\n\r\n\t\tif (successful) {\r\n\t\t\tnotificationsLogic.refreshCurrentNotifications(); //-- Update displayed notifications\r\n\t\t\tgetNotifications(); //-- Get new list for notifications page\r\n\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`NotificationDeleted`)\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t('DeleteNotificationError'),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\treturn !notifications ? (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t) : !notifications.length ? (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{t('NoNotifications')}} />\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{renderNewEditButton(\r\n\t\t\t\tauthZ,\r\n\t\t\t\tcreateNotificationModalIsVisible,\r\n\t\t\t\tsetCreateNotificationModalIsVisible,\r\n\t\t\t\tgetNotifications,\r\n\t\t\t\tnotificationsLogic,\r\n\t\t\t\tsetSelectedNotification,\r\n\t\t\t\teditNotificationModalIsVisible,\r\n\t\t\t\tsetEditNotificationModalIsVisible,\r\n\t\t\t\tselectedNotification,\r\n\t\t\t\tt\r\n\t\t\t)}\r\n\t\t\r\n\t) : (\r\n\t\t<>\r\n\t\t\t{_.map(notifications, (n) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{n.title}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{authZ.userIsEntDevAdmin() && (\r\n\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t|}>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{t('Enabled')}:{' '}\r\n\t\t\t\t\t\t\t\t\t\t\t\t{n.enabled ? t('True') : t('False')}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{t('Type')}: {t(n.notificationType)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{t('DisplayType')}:{' '}\r\n\t\t\t\t\t\t\t\t\t\t\t\t{n.banner ? t('Banner') : t('Toast')}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{t('CreatedDate')}:{' '}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{t('{{date}}', { date: dayjs(n.createdDateTimeUtc).utc().local() })}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{n.banner && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t('Dismissable')}:{' '}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{n.dismissable ? t('True') : t('False')}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t{n.applicationId && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t('Application')}: {n.applicationName}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{authZ.userIsEntDevAdmin() && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedNotification(n);\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetEditNotificationModalIsVisible(true);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tModal.confirm({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle: `${t('Delete')} '${n.title}'`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon: ,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: `${t('ConfirmDelete')} ${t('This action cannot be undone')}.`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tokText: `${t('Delete')}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcancelText: `${t('Cancel')}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonOk() {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteNotification(n.title, n.notifyThroughDateUtc);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{t('{{date}}', { date: dayjs(n.notifyThroughDateUtc).utc().local() })}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{n.message}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t\t{renderNewEditButton(\r\n\t\t\t\tauthZ,\r\n\t\t\t\tcreateNotificationModalIsVisible,\r\n\t\t\t\tsetCreateNotificationModalIsVisible,\r\n\t\t\t\tgetNotifications,\r\n\t\t\t\tnotificationsLogic,\r\n\t\t\t\tsetSelectedNotification,\r\n\t\t\t\teditNotificationModalIsVisible,\r\n\t\t\t\tsetEditNotificationModalIsVisible,\r\n\t\t\t\tselectedNotification,\r\n\t\t\t\tt\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst renderNewEditButton = (\r\n\tauthZ,\r\n\tcreateNotificationModalIsVisible,\r\n\tsetCreateNotificationModalIsVisible,\r\n\tgetNotifications,\r\n\tnotificationsLogic,\r\n\tsetSelectedNotification,\r\n\teditNotificationModalIsVisible,\r\n\tsetEditNotificationModalIsVisible,\r\n\tselectedNotification,\r\n\tt\r\n) => {\r\n\treturn (\r\n\t\tauthZ.userIsEntDevAdmin() && (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tstyle={{ boxShadow: '2px 2px 5px grey' }}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tsetCreateNotificationModalIsVisible(true);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tgetNotifications();\r\n\t\t\t\t\t\tnotificationsLogic.refreshCurrentNotifications();\r\n\t\t\t\t\t\tsetCreateNotificationModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedNotification(null);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\tsetCreateNotificationModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedNotification(null);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tgetNotifications();\r\n\t\t\t\t\t\tnotificationsLogic.refreshCurrentNotifications();\r\n\t\t\t\t\t\tsetEditNotificationModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedNotification(null);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\tsetEditNotificationModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedNotification(null);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tntificn={selectedNotification}\r\n\t\t\t\t/>\r\n\t\t\t\r\n\t\t)\r\n\t);\r\n};\r\n\r\nexport default Notifications;\r\n","import { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { Modal, Form, Input, DatePicker, notification, Select } from 'antd';\r\nimport { useReleasesLogic } from '../useReleasesLogic';\r\nimport { version, title } from '../../validation/regex';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\nimport { useApplicationsLogic } from '../useApplicationsLogic';\r\n\r\nconst CreateReleaseModal = ({ isVisible, onSaveCallback, onCloseCallback }) => {\r\n\tdayjs.extend(utc);\r\n\r\n\tconst releasesLogic = useReleasesLogic();\r\n\tconst applicationsLogic = useApplicationsLogic();\r\n\r\n\tconst [form] = Form.useForm();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [areFormErrors, setAreFormErrors] = useState(true);\r\n\tconst [applications, setApplications] = useState(null);\r\n\r\n\tconst { t, getDateFormat, getAntLocale } = useI18nLocalization();\r\n\tconst { Option } = Select;\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!applications) {\r\n\t\t\tgetApplications();\r\n\t\t}\r\n\t}, [JSON.stringify(applications)]);\r\n\r\n\tconst getApplications = async () => {\r\n\t\tconst apps = await applicationsLogic.getApplications();\r\n\t\tsetApplications(apps);\r\n\t};\r\n\r\n\t//-- Gather the form data\r\n\tconst getNewRelease = (formValues) => {\r\n\t\tconst newReleaseObj = {\r\n\t\t\tapplicationId: formValues.applicationId,\r\n\t\t\tversion: formValues.version,\r\n\t\t\treleaseDateTimeUtc: formValues.releaseDate.utc().format(),\r\n\t\t\ttitle: formValues.title,\r\n\t\t\tnotes: formValues.notes\r\n\t\t};\r\n\t\treturn newReleaseObj;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst newRelease = getNewRelease(formValues);\r\n\t\tconst successful = await releasesLogic.createRelease(newRelease);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`Release created!`)\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t('CreateReleaseError'),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\t//-- Will trigger the form's onFinish event\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\trequiredMark\r\n\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Version is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (!value.match(version) || value.length > 14) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(`1-14 ${t('chars (inclusive)')}; M -- M.m -- M.m.b`));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Release Date is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Title is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (!value.match(title)) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(`1-50 ${t('alpha and some special chars (inclusive)')}`));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Notes are required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nCreateReleaseModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired\r\n};\r\n\r\nexport default CreateReleaseModal;\r\n","import { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { Modal, Form, Input, DatePicker, notification, Select } from 'antd';\r\nimport { useReleasesLogic } from '../useReleasesLogic';\r\nimport { version, title } from '../../validation/regex';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\nimport { useApplicationsLogic } from '../useApplicationsLogic';\r\n\r\nconst EditReleaseModal = ({ isVisible, onSaveCallback, onCloseCallback, release }) => {\r\n\tdayjs.extend(utc);\r\n\r\n\tconst releasesLogic = useReleasesLogic();\r\n\tconst applicationsLogic = useApplicationsLogic();\r\n\r\n\tconst [form] = Form.useForm();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [areFormErrors, setAreFormErrors] = useState(false);\r\n\tconst [applications, setApplications] = useState(null);\r\n\r\n\tconst { t, getDateFormat, getAntLocale } = useI18nLocalization();\r\n\tconst { Option } = Select;\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!applications) {\r\n\t\t\tgetApplications();\r\n\t\t}\r\n\t}, [JSON.stringify(applications)]);\r\n\r\n\tconst getApplications = async () => {\r\n\t\tconst apps = await applicationsLogic.getApplications();\r\n\t\tsetApplications(apps);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (applications && release) {\r\n\t\t\tconst appId = applications.find((app) => app.name === release.applicationName);\r\n\t\t\tform.setFieldsValue({\r\n\t\t\t\tversion: release?.version,\r\n\t\t\t\treleaseDate: dayjs(release?.releaseDateTimeUtc),\r\n\t\t\t\ttitle: release?.title,\r\n\t\t\t\tnotes: release?.notes,\r\n\t\t\t\tapplicationId: appId.id\r\n\t\t\t});\r\n\t\t}\r\n\t}, [JSON.stringify(release), JSON.stringify(applications)]);\r\n\r\n\tconst getUpdatedRelease = (formValues) => {\r\n\t\tconst updatedReleaseObj = {\r\n\t\t\toldVersion: release.version,\r\n\t\t\tversion: formValues.version,\r\n\t\t\treleaseDateTimeUtc: formValues.releaseDate.utc().format(),\r\n\t\t\ttitle: formValues.title,\r\n\t\t\tnotes: formValues.notes,\r\n\t\t\treleaseId: release.id,\r\n\t\t\tapplicationId: formValues.applicationId\r\n\t\t};\r\n\t\treturn updatedReleaseObj;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst updatedRelease = getUpdatedRelease(formValues);\r\n\t\tconst successful = await releasesLogic.updateRelease(updatedRelease);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`Release saved!`)\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t('UpdateReleaseError'),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\t//-- Will trigger the form's onFinish event\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t\tforceRender //-- Needed b/c of using form.setFieldsValue to set the value of the fields\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\trequiredMark\r\n\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Version is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (!value.match(version) || value.length > 14) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(`1-14 ${t('chars (inclusive)')}; M -- M.m -- M.m.b`));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Release Date is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Title is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (!value.match(title)) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(`1-50 ${t('alpha and some special chars (inclusive)')}`));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Notes are required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nEditReleaseModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired,\r\n\trelease: PropTypes.object\r\n};\r\n\r\nexport default EditReleaseModal;\r\n","import { useEffect, useState } from 'react';\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { Row, Col, Spin, Empty, Typography, Space, Divider, Affix, Button, Tooltip, Modal, notification } from 'antd';\r\nimport { PlusOutlined, ExclamationCircleOutlined } from '@ant-design/icons';\r\nimport { useAuthZ } from '../../authZ/useAuthZ';\r\nimport PageContent from '../../structure/PageContent';\r\nimport { useReleasesLogic } from '../useReleasesLogic';\r\nimport { useNotificationsLogic } from '../useNotificationsLogic';\r\nimport CreateReleaseModal from './CreateReleaseModal';\r\nimport EditReleaseModal from './EditReleaseModal';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\n\r\nconst Releases = () => {\r\n\tdayjs.extend(utc);\r\n\r\n\tconst authZ = useAuthZ();\r\n\tconst releasesLogic = useReleasesLogic();\r\n\tconst notificationsLogic = useNotificationsLogic();\r\n\r\n\t//-- Used for translations of text\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\t//-- Data source\r\n\tconst [releases, setReleases] = useState(null);\r\n\tconst [selectedRelease, setSelectedRelease] = useState(null);\r\n\r\n\tconst [createReleaseModalIsVisible, setCreateReleaseModalIsVisible] = useState(false);\r\n\tconst [editReleaseModalIsVisible, setEditReleaseModalIsVisible] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!releases) {\r\n\t\t\tgetReleases();\r\n\t\t}\r\n\t}, []);\r\n\r\n\t//-- Get releases from the API\r\n\tconst getReleases = async () => {\r\n\t\tconst rels = await releasesLogic.getReleases();\r\n\t\tsetReleases(rels);\r\n\t};\r\n\r\n\tconst deleteRelease = async (id) => {\r\n\t\tconst successful = await releasesLogic.deleteRelease(id);\r\n\r\n\t\tif (successful) {\r\n\t\t\tgetReleases();\r\n\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`Release deleted`)\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t('DeleteReleaseError'),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\treturn !releases ? (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t) : !releases.length ? (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{t('NoReleases')}} />\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{renderNewEditButton(\r\n\t\t\t\tauthZ,\r\n\t\t\t\tsetCreateReleaseModalIsVisible,\r\n\t\t\t\tcreateReleaseModalIsVisible,\r\n\t\t\t\tgetReleases,\r\n\t\t\t\tnotificationsLogic,\r\n\t\t\t\tsetSelectedRelease,\r\n\t\t\t\teditReleaseModalIsVisible,\r\n\t\t\t\tsetEditReleaseModalIsVisible,\r\n\t\t\t\tselectedRelease,\r\n\t\t\t\tt\r\n\t\t\t)}\r\n\t\t\r\n\t) : (\r\n\t\t<>\r\n\t\t\t{_.map(releases, (r) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{r.applicationName}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tv{r.version}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{r.title}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{t('{{date}}', { date: dayjs(r.releaseDateTimeUtc).utc().local() })}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t{authZ.userIsEntDevAdmin() && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedRelease(r);\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetEditReleaseModalIsVisible(true);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tModal.confirm({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle: `${t('Delete')} '${r.version}: ${r.title}'`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon: ,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: `${t('Are you sure you want to delete this release?')} ${t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'This action cannot be undone'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}.`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tokText: `${t('Delete')}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcancelText: `${t('Cancel')}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonOk() {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteRelease(r.id);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{r.notes}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t\t{renderNewEditButton(\r\n\t\t\t\tauthZ,\r\n\t\t\t\tsetCreateReleaseModalIsVisible,\r\n\t\t\t\tcreateReleaseModalIsVisible,\r\n\t\t\t\tgetReleases,\r\n\t\t\t\tnotificationsLogic,\r\n\t\t\t\tsetSelectedRelease,\r\n\t\t\t\teditReleaseModalIsVisible,\r\n\t\t\t\tsetEditReleaseModalIsVisible,\r\n\t\t\t\tselectedRelease,\r\n\t\t\t\tt\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst renderNewEditButton = (\r\n\tauthZ,\r\n\tsetCreateReleaseModalIsVisible,\r\n\tcreateReleaseModalIsVisible,\r\n\tgetReleases,\r\n\tnotificationsLogic,\r\n\tsetSelectedRelease,\r\n\teditReleaseModalIsVisible,\r\n\tsetEditReleaseModalIsVisible,\r\n\tselectedRelease,\r\n\tt\r\n) => {\r\n\treturn (\r\n\t\tauthZ.userIsEntDevAdmin() && (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tstyle={{ boxShadow: '2px 2px 5px grey' }}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tsetCreateReleaseModalIsVisible(true);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\tgetReleases();\r\n\t\t\t\t\t\tsetCreateReleaseModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedRelease(null);\r\n\t\t\t\t\t\tnotificationsLogic.refreshCurrentNotifications();\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\tsetCreateReleaseModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedRelease(null);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tgetReleases();\r\n\t\t\t\t\t\tsetEditReleaseModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedRelease(null);\r\n\t\t\t\t\t\tnotificationsLogic.refreshCurrentNotifications();\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\tsetEditReleaseModalIsVisible(false);\r\n\t\t\t\t\t\tsetSelectedRelease(null);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\trelease={selectedRelease}\r\n\t\t\t\t/>\r\n\t\t\t\r\n\t\t)\r\n\t);\r\n};\r\n\r\nexport default Releases;\r\n","import { useEffect } from 'react';\r\nimport { Row, Col, Spin } from 'antd';\r\nimport { useAuthN } from '../../authN/useAuthN';\r\nimport { useNav } from '../../routing/useNav';\r\n\r\nconst ReturnToApp = () => {\r\n\tconst { isAuthenticated, isInProgress, signIn } = useAuthN();\r\n\r\n\tconst nav = useNav();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isAuthenticated) {\r\n\t\t\tnav.goHome();\r\n\t\t} else if (!isInProgress) {\r\n\t\t\tsignIn();\r\n\t\t}\r\n\t}, [isAuthenticated]);\r\n\r\n\t//-- Using a spinner here prevents a flash of the sign in page when auto signing in\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ReturnToApp;\r\n","import PropTypes from 'prop-types';\r\nimport { useSelector } from 'react-redux';\r\nimport { Row, Col, Spin, Form, Input, Space, Switch } from 'antd';\r\nimport PageContent from '../../structure/PageContent';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\n\r\nconst UserProfile = () => {\r\n\tconst user = useSelector((state) => state.user);\r\n\tconst roles = useSelector((state) => state.company?.roles ?? []);\r\n\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\treturn !user ? (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t) : (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t r.roleId)} />\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\n//-- Need to do this beceause the validator requires an onChange event be on the top-most element of Form.Input\r\nconst RoleList = ({ roles, userRoleIds }) => {\r\n\tconst sortedRoles = _.orderBy(roles, ['name'], ['asc']);\r\n\tconst { t } = useI18nLocalization();\r\n\treturn (\r\n\t\t\r\n\t\t\t{_.map(sortedRoles, (sr) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{sr.name} ({t(sr.description)})\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t\r\n\t);\r\n};\r\n\r\nRoleList.propTypes = {\r\n\troles: PropTypes.array.isRequired,\r\n\tuserRoleIds: PropTypes.array.isRequired\r\n};\r\n\r\nexport default UserProfile;\r\n","\n import API from \"!../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../.yarn/__virtual__/style-loader-virtual-aaa4b0fe69/0/cache/style-loader-npm-3.3.1-4bbb6ec77f-470feef680.zip/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../.yarn/__virtual__/css-loader-virtual-5f091185ca/0/cache/css-loader-npm-6.5.1-a34b2a752f-5a3bedecb4.zip/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../.yarn/__virtual__/less-loader-virtual-070e38b319/0/cache/less-loader-npm-10.2.0-9c6619a5c0-42a2b56a9d.zip/node_modules/less-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./style.less\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../.yarn/__virtual__/css-loader-virtual-5f091185ca/0/cache/css-loader-npm-6.5.1-a34b2a752f-5a3bedecb4.zip/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../.yarn/__virtual__/less-loader-virtual-070e38b319/0/cache/less-loader-npm-10.2.0-9c6619a5c0-42a2b56a9d.zip/node_modules/less-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./style.less\";\n export default content && content.locals ? content.locals : undefined;\n","import { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from 'react-redux';\r\nimport { Modal, Row, Col, Spin, Form, Input, Space, Switch, notification } from 'antd';\r\nimport { useUserSettingsLogic } from '../useUserSettingsLogic';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\nimport './style.less';\r\n\r\nconst EditUserModal = ({ isVisible, onSaveCallback, onCloseCallback, user }) => {\r\n\tconst reduxUser = useSelector((state) => state.user);\r\n\tconst roles = useSelector((state) => state.company?.roles ?? []);\r\n\r\n\tconst userSettingsLogic = useUserSettingsLogic();\r\n\r\n\tconst [form] = Form.useForm();\r\n\tconst [isEditingSelf, setIsEditingSelf] = useState(false);\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [areFormErrors, setAreFormErrors] = useState(false);\r\n\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\tconst [userRoleIds, setUserRoleIds] = useState([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (reduxUser && user) {\r\n\t\t\tsetUser();\r\n\t\t\tsetIsEditingSelf(reduxUser.profile.userId === user.profile.userId);\r\n\t\t}\r\n\t}, [reduxUser?.profile?.userId, user?.profile.userId, isVisible]);\r\n\r\n\tconst setUser = () => {\r\n\t\tsetUserRoleIds(user.roles.map((r) => r.roleId));\r\n\t};\r\n\r\n\tconst getUpdatedUser = (formValues) => {\r\n\t\tconst updatedUserObj = {\r\n\t\t\tuserId: user.profile.userId,\r\n\t\t\troleIds: userRoleIds,\r\n\t\t\tuserEnabled: formValues.isActive\r\n\t\t};\r\n\t\treturn updatedUserObj;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst updatedUser = getUpdatedUser(formValues);\r\n\t\tconst successful = await userSettingsLogic.updateUser(updatedUser);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: isEditingSelf\r\n\t\t\t\t\t? t(`User saved! You'll need to refresh for your changes to take effect.`)\r\n\t\t\t\t\t: t(`User saved!`)\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t(\r\n\t\t\t\t\t`We encountered an error saving this user. Please try again. If it persists, please submit an EntDev Helpdesk ticket.`\r\n\t\t\t\t),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t\tsetUserRoleIds([]);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\t//-- Will trigger the form's onFinish event\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t>\r\n\t\t\t\t{!user?.profile.userId ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\t\trequiredMark\r\n\t\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tlet adminRoles = APP_SETTINGS.adminRoles;\r\n\t\t\t\t\t\t\t\t\t\tadminRoles = adminRoles.map((ar) => ar.toLowerCase());\r\n\r\n\t\t\t\t\t\t\t\t\t\tconst adminRoleObjects = roles.filter((r) => adminRoles.includes(r.name.toLowerCase()));\r\n\r\n\t\t\t\t\t\t\t\t\t\tconst currentNumAdminRoles = reduxUser.roles.filter((r) =>\r\n\t\t\t\t\t\t\t\t\t\t\tadminRoles.includes(r.role.toLowerCase())\r\n\t\t\t\t\t\t\t\t\t\t).length;\r\n\t\t\t\t\t\t\t\t\t\tconst newNumAdminRoles = adminRoleObjects.filter((aro) => userRoleIds.includes(aro.id)).length;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (isEditingSelf && currentNumAdminRoles > newNumAdminRoles) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('You cannot remove an admin role from yourself')));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (userRoleIds.length === 0) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('A user must have at least one role')));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tif (isEditingSelf && !value) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('You cannot deactivate yourself')));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nEditUserModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired,\r\n\tuser: PropTypes.object\r\n};\r\n\r\n//-- Need to do this beceause the validator requires an onChange event be on the top-most element of Form.Input\r\nconst RoleList = ({ roles, userRoleIds, setUserRoleIds, onChange }) => {\r\n\tconst sortedRoles = _.orderBy(roles, ['name'], ['asc']);\r\n\tconst { t } = useI18nLocalization();\r\n\treturn (\r\n\t\t\r\n\t\t\t{_.map(sortedRoles, (sr) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t//-- Adding the role\r\n\t\t\t\t\t\t\t\tif (newValue) {\r\n\t\t\t\t\t\t\t\t\tsetUserRoleIds(userRoleIds.concat([sr.id]));\r\n\t\t\t\t\t\t\t\t\tonChange();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//-- Removing the role\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tsetUserRoleIds(userRoleIds.filter((urid) => urid !== sr.id));\r\n\t\t\t\t\t\t\t\t\tonChange();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{sr.name} ({t(sr.description)})\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t\r\n\t);\r\n};\r\n\r\nRoleList.propTypes = {\r\n\troles: PropTypes.array.isRequired,\r\n\tuserRoleIds: PropTypes.array.isRequired,\r\n\tsetUserRoleIds: PropTypes.func.isRequired,\r\n\tonChange: PropTypes.func.isRequired\r\n};\r\n\r\nexport default EditUserModal;\r\n","import { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from 'react-redux';\r\nimport { Modal, Row, Col, Spin, Alert, Form, Input, Space, Switch, Select, notification } from 'antd';\r\nimport { useUserSettingsLogic } from '../useUserSettingsLogic';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\nimport './style.less';\r\n\r\nconst AddUserToProfileModal = ({ isVisible, onSaveCallback, onCloseCallback, user }) => {\r\n\tconst enterpriseProfiles = useSelector((state) => state.enterpriseProfiles);\r\n\tconst reduxUser = useSelector((state) => state.user);\r\n\tconst roles = useSelector((state) => state.company?.roles ?? []);\r\n\r\n\tconst userSettingsLogic = useUserSettingsLogic();\r\n\r\n\tconst [form] = Form.useForm();\r\n\tconst [isAddingSelf, setIsAddingSelf] = useState(false);\r\n\tconst [isAdding, setIsAdding] = useState(false);\r\n\tconst [areFormErrors, setAreFormErrors] = useState(true);\r\n\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\tconst [userRoleIds, setUserRoleIds] = useState([]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (reduxUser && user) {\r\n\t\t\tsetUser();\r\n\t\t\tsetIsAddingSelf(reduxUser.profile.userId === user.profile.userId);\r\n\t\t}\r\n\t}, [reduxUser?.profile?.userId, user?.profile.userId, isVisible]);\r\n\r\n\tconst setUser = () => {\r\n\t\tsetUserRoleIds(user.roles.map((r) => r.roleId));\r\n\t};\r\n\r\n\tconst getUserToAdd = (formValues) => {\r\n\t\tconst userToAddObj = {\r\n\t\t\tuserId: user.profile.userId,\r\n\t\t\troleIds: userRoleIds,\r\n\t\t\tuserEnabled: formValues.isActive,\r\n\t\t\tenterpriseProfileId: formValues.addToEnterpriseProfileId\r\n\t\t};\r\n\t\treturn userToAddObj;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsAdding(true);\r\n\t\tconst userToAdd = getUserToAdd(formValues);\r\n\t\tconst successful = await userSettingsLogic.addUserToProfile(userToAdd);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: isAddingSelf\r\n\t\t\t\t\t? t(`User added! You'll need to refresh for your changes to take effect.`)\r\n\t\t\t\t\t: t(`User added!`)\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t(\r\n\t\t\t\t\t`We encountered an error adding this user. Please try again. If it persists, please submit an EntDev Helpdesk ticket.`\r\n\t\t\t\t),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsAdding(false);\r\n\t};\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsAdding(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t\tsetUserRoleIds([]);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\t//-- Will trigger the form's onFinish event\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tconfirmLoading={isAdding}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t>\r\n\t\t\t\t{!user?.profile.userId ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\t\t\t\t\trequiredMark\r\n\t\t\t\t\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlet adminRoles = APP_SETTINGS.adminRoles;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tadminRoles = adminRoles.map((ar) => ar.toLowerCase());\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst adminRoleObjects = roles.filter((r) => adminRoles.includes(r.name.toLowerCase()));\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst currentNumAdminRoles = reduxUser.roles.filter((r) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tadminRoles.includes(r.role.toLowerCase())\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t).length;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst newNumAdminRoles = adminRoleObjects.filter((aro) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tuserRoleIds.includes(aro.id)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t).length;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (isAddingSelf && currentNumAdminRoles > newNumAdminRoles) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('You cannot remove an admin role from yourself')));\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (userRoleIds.length === 0) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('A user must have at least one role')));\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nAddUserToProfileModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired,\r\n\tuser: PropTypes.object\r\n};\r\n\r\n//-- Need to do this beceause the validator requires an onChange event be on the top-most element of Form.Input\r\nconst RoleList = ({ roles, userRoleIds, setUserRoleIds, onChange }) => {\r\n\tconst sortedRoles = _.orderBy(roles, ['name'], ['asc']);\r\n\tconst { t } = useI18nLocalization();\r\n\treturn (\r\n\t\t\r\n\t\t\t{_.map(sortedRoles, (sr) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t//-- Adding the role\r\n\t\t\t\t\t\t\t\tif (newValue) {\r\n\t\t\t\t\t\t\t\t\tsetUserRoleIds(userRoleIds.concat([sr.id]));\r\n\t\t\t\t\t\t\t\t\tonChange();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//-- Removing the role\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tsetUserRoleIds(userRoleIds.filter((urid) => urid !== sr.id));\r\n\t\t\t\t\t\t\t\t\tonChange();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{sr.name} ({t(sr.description)})\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t\r\n\t);\r\n};\r\n\r\nRoleList.propTypes = {\r\n\troles: PropTypes.array.isRequired,\r\n\tuserRoleIds: PropTypes.array.isRequired,\r\n\tsetUserRoleIds: PropTypes.func.isRequired,\r\n\tonChange: PropTypes.func.isRequired\r\n};\r\n\r\nexport default AddUserToProfileModal;\r\n","import { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ConfigProvider, Space, Table } from 'antd';\r\nimport { useAuthZ } from '../../authZ/useAuthZ';\r\nimport EditUserModal from './EditUserModal';\r\nimport AddUserToProfileModal from './AddUserToProfileModal';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\n\r\nconst UsersTable = ({ users, refreshUserList, ...rest }) => {\r\n\tconst authZ = useAuthZ();\r\n\r\n\tconst [isLoading, setIsLoading] = useState(true);\r\n\tconst [usersList, setUsersList] = useState([]);\r\n\tconst [selectedUser, setSelectedUser] = useState(null);\r\n\tconst [editUserModalIsVisible, setEditUserModalIsVisible] = useState(false);\r\n\tconst [addUserToProfileModalIsVisible, setAddUserToProfileModalIsVisible] = useState(false);\r\n\tconst { t, getAntLocale } = useI18nLocalization();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (users) {\r\n\t\t\tsetUsersList(getUsersList());\r\n\t\t\tsetIsLoading(false);\r\n\t\t}\r\n\t}, [JSON.stringify(users), isLoading]);\r\n\r\n\tconst getUsersList = () => {\r\n\t\tconst usersList = _.map(users, (u) => {\r\n\t\t\tconst userListItem = {\r\n\t\t\t\tkey: u.profile.userId,\r\n\t\t\t\tactive: u.profile.userEnabled,\r\n\t\t\t\tfirstName: u.profile.firstName,\r\n\t\t\t\tlastName: u.profile.lastName,\r\n\t\t\t\temployeeId: u.profile.employeeId,\r\n\t\t\t\temailAddress: u.profile.emailAddress,\r\n\t\t\t\tjobTitle: u.profile.jobTitle,\r\n\t\t\t\troles: u.roles\r\n\t\t\t};\r\n\t\t\treturn userListItem;\r\n\t\t});\r\n\r\n\t\treturn usersList;\r\n\t};\r\n\r\n\tconst handleShowEditUserModal = (userSelected) => {\r\n\t\tconst su = users.find((u) => {\r\n\t\t\treturn u.profile.userId === userSelected.key;\r\n\t\t});\r\n\t\tsetSelectedUser(su);\r\n\t\tsetEditUserModalIsVisible(true);\r\n\t};\r\n\r\n\tconst handleShowAddUserToProfileModal = (userSelected) => {\r\n\t\tconst su = users.find((u) => {\r\n\t\t\treturn u.profile.userId === userSelected.key;\r\n\t\t});\r\n\t\tsetSelectedUser(su);\r\n\t\tsetAddUserToProfileModalIsVisible(true);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t (total === 1 ? `${total} ${t('user')}` : `${total} ${t('users')}`)\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tloading={isLoading}\r\n\t\t\t\t\t{...rest}\r\n\t\t\t\t>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\treturn a.firstName < b.firstName ? -1 : a.firstName > b.firstName ? 1 : 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\treturn a.lastName < b.lastName ? -1 : a.lastName > b.lastName ? 1 : 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\treturn a.employeeId < b.employeeId ? -1 : a.employeeId > b.employeeId ? 1 : 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tresponsive={['lg']}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\treturn a.emailAddress < b.emailAddress ? -1 : a.emailAddress > b.emailAddress ? 1 : 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tresponsive={['lg']}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\treturn a.jobTitle < b.jobTitle ? -1 : a.jobTitle > b.jobTitle ? 1 : 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tresponsive={['xl']}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{_.map(_.orderBy(user.roles, ['role'], ['asc']), (r) => {\r\n\t\t\t\t\t\t\t\t\t\treturn {r.role};\r\n\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tresponsive={['md']}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\treturn a.active < b.active ? -1 : a.active > b.active ? 1 : 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\talign='center'\r\n\t\t\t\t\t\trender={(text, user) => {\r\n\t\t\t\t\t\t\treturn user.active ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tresponsive={['md']}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{authZ.userIsEntDevAdmin() && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\thandleShowEditUserModal(user);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\thandleShowAddUserToProfileModal(user);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{authZ.userIsEntDevAdmin() && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\trefreshUserList();\r\n\t\t\t\t\t\t\tsetEditUserModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\t\tsetEditUserModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tuser={selectedUser}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tsetAddUserToProfileModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\t\tsetAddUserToProfileModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tuser={selectedUser}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nUsersTable.propTypes = {\r\n\tusers: PropTypes.array,\r\n\trefreshUserList: PropTypes.func.isRequired\r\n};\r\n\r\nexport default UsersTable;\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useSelector } from 'react-redux';\r\nimport { Modal, Form, Row, Col, Input, Space, Switch, notification } from 'antd';\r\nimport { useUserSettingsLogic } from '../useUserSettingsLogic';\r\nimport { firstName, lastName, emailRegex } from '../../validation/regex';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\nimport './style.less';\r\n\r\nconst CreateUserModal = ({ isVisible, onSaveCallback, onCloseCallback }) => {\r\n\tconst roles = useSelector((state) => state.company?.roles ?? []);\r\n\r\n\tconst userSettingsLogic = useUserSettingsLogic();\r\n\r\n\tconst [form] = Form.useForm();\r\n\tconst [isSaving, setIsSaving] = useState(false);\r\n\tconst [areFormErrors, setAreFormErrors] = useState(true);\r\n\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\t//-- Need to manually keep track of the roles assigned to the user b/c the control for this in the form is custom\r\n\tconst [userRoleIds, setUserRoleIds] = useState([]);\r\n\r\n\t//-- Put the form values in to the structure expected by the API\r\n\tconst getNewUser = (formValues) => {\r\n\t\tconst newUserObj = {\r\n\t\t\tfirstName: formValues.firstName,\r\n\t\t\tlastName: formValues.lastName,\r\n\t\t\temailAddress: formValues.emailAddress,\r\n\t\t\troleIds: userRoleIds,\r\n\t\t\tuserEnabled: formValues.isActive\r\n\t\t};\r\n\t\treturn newUserObj;\r\n\t};\r\n\r\n\tconst handleOnSave = async (formValues) => {\r\n\t\tsetIsSaving(true);\r\n\t\tconst newUser = getNewUser(formValues);\r\n\t\tconst successful = await userSettingsLogic.createUser(newUser);\r\n\t\tif (successful) {\r\n\t\t\tnotification['success']({\r\n\t\t\t\tmessage: t(`User created!`)\r\n\t\t\t});\r\n\r\n\t\t\tclearForm();\r\n\t\t\tonSaveCallback();\r\n\t\t} else {\r\n\t\t\tnotification['error']({\r\n\t\t\t\tmessage: t(\r\n\t\t\t\t\t`We encountered an error creating the user for this profile. Please try again. If it persists, please submit an EntDev Helpdesk ticket.`\r\n\t\t\t\t),\r\n\t\t\t\tduration: 10\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsetIsSaving(false);\r\n\t};\r\n\r\n\tconst handleOnCancel = () => {\r\n\t\tsetIsSaving(false);\r\n\t\tclearForm();\r\n\t\tonCloseCallback();\r\n\t};\r\n\r\n\tconst clearForm = () => {\r\n\t\tform.resetFields();\r\n\t\tsetUserRoleIds([]);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t {\r\n\t\t\t\t\t//-- Will trigger the form's onFinish event\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t}}\r\n\t\t\t\tokButtonProps={{ disabled: areFormErrors }}\r\n\t\t\t\tconfirmLoading={isSaving}\r\n\t\t\t\tonCancel={handleOnCancel}\r\n\t\t\t\tcancelText={t('Cancel')}\r\n\t\t\t>\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst areErrors = form.getFieldsError().some((fe) => fe.errors.length > 0);\r\n\t\t\t\t\t\tsetAreFormErrors(areErrors);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tlayout='vertical'\r\n\t\t\t\t\trequiredMark\r\n\t\t\t\t\tscrollToFirstError\r\n\t\t\t\t\tonFinish={handleOnSave}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('First name is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value.match(firstName)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(`1-50 ${t('alpha chars (inclusive)')}`));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Last name is required')));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif (!value.match(lastName)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(`1-50 ${t('alpha chars (inclusive)')}`));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (!value.match(emailRegex)) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('Email address is required')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (userRoleIds.length === 0) {\r\n\t\t\t\t\t\t\t\t\t\treturn Promise.reject(new Error(t('A user must have at least one role')));\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn Promise.resolve();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nCreateUserModal.propTypes = {\r\n\tisVisible: PropTypes.bool.isRequired,\r\n\tonSaveCallback: PropTypes.func.isRequired,\r\n\tonCloseCallback: PropTypes.func.isRequired\r\n};\r\n\r\n//-- Need to do this beceause the validator requires an onChange event be on the top-most child element of Form.Input\r\n//--\tIt also requires a value prop, but this control will have multiple values, so we'll manually keep track of it's values\r\n//--\tSetting up RoleList this way allows us to use the nice rules validator in Form.Input\r\nconst RoleList = ({ roles, userRoleIds, setUserRoleIds, onChange }) => {\r\n\tconst sortedRoles = _.orderBy(roles, ['name'], ['asc']);\r\n\tconst { t } = useI18nLocalization();\r\n\treturn (\r\n\t\t\r\n\t\t\t{_.map(sortedRoles, (sr) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t//-- Adding the role\r\n\t\t\t\t\t\t\t\tif (newValue) {\r\n\t\t\t\t\t\t\t\t\tsetUserRoleIds(userRoleIds.concat([sr.id]));\r\n\t\t\t\t\t\t\t\t\tonChange();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//-- Removing the role\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tsetUserRoleIds(userRoleIds.filter((urid) => urid !== sr.id));\r\n\t\t\t\t\t\t\t\t\tonChange();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{sr.name} ({t(sr.description)})\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t\r\n\t);\r\n};\r\n\r\nRoleList.propTypes = {\r\n\troles: PropTypes.array.isRequired,\r\n\tuserRoleIds: PropTypes.array.isRequired,\r\n\tsetUserRoleIds: PropTypes.func.isRequired,\r\n\tonChange: PropTypes.func.isRequired\r\n};\r\n\r\nexport default CreateUserModal;\r\n","import { useEffect, useState } from 'react';\r\nimport { Collapse, Row, Col, Select, Typography, Affix, Button, Tooltip } from 'antd';\r\nimport { UserAddOutlined } from '@ant-design/icons';\r\nimport { useAuthZ } from '../../authZ/useAuthZ';\r\nimport { useUserSettingsLogic } from '../useUserSettingsLogic';\r\nimport UsersTable from './UsersTable';\r\nimport CreateUserModal from './CreateUserModal';\r\nimport { useI18nLocalization } from '../../i18nLocalization/useI18nLocalization';\r\n\r\nconst Users = () => {\r\n\tconst authZ = useAuthZ();\r\n\tconst userSettingsLogic = useUserSettingsLogic();\r\n\r\n\t//-- Used for translations of text\r\n\tconst { t } = useI18nLocalization();\r\n\r\n\t//-- Data source\r\n\tconst [users, setUsers] = useState([]);\r\n\r\n\t//-- Filters\r\n\tconst [userOptions, setUserOptions] = useState([]);\r\n\tconst [userFilter, setUserFilter] = useState([]);\r\n\tconst [roleOptions, setRoleOptions] = useState([]);\r\n\tconst [roleFilter, setRoleFilter] = useState([]);\r\n\r\n\t//-- List after filters applied\r\n\tconst [filteredUsers, setFilteredUsers] = useState([]);\r\n\r\n\tconst [createUserModalIsVisible, setCreateUserModalIsVisible] = useState(false);\r\n\r\n\t//-- When the list of users changes, perform updates\r\n\tuseEffect(() => {\r\n\t\tif (users.length === 0) {\r\n\t\t\tgetUsers();\r\n\t\t} else {\r\n\t\t\tcreateUserFilterOptions();\r\n\t\t\tcreateRoleFilterOptions();\r\n\t\t\thandleFilter();\r\n\t\t}\r\n\t}, [JSON.stringify(users)]);\r\n\r\n\t//-- Trigger a filter event whenever a filter changes\r\n\tuseEffect(() => {\r\n\t\thandleFilter();\r\n\t}, [JSON.stringify(userFilter), JSON.stringify(roleFilter)]);\r\n\r\n\t//-- Get users from the API\r\n\tconst getUsers = async () => {\r\n\t\tconst usrs = await userSettingsLogic.getUsers();\r\n\t\tsetUsers(usrs);\r\n\t};\r\n\r\n\t//-- Create the user filter options from the available users\r\n\tconst createUserFilterOptions = () => {\r\n\t\tconst uOptions = _.map(\r\n\t\t\t_.orderBy(users, (user) => user.profile.lastName, ['asc']),\r\n\t\t\t(u) => {\r\n\t\t\t\tconst uOpt = {\r\n\t\t\t\t\tvalue: u.profile.emailAddress,\r\n\t\t\t\t\tlabel: `${u.profile.lastName}, ${u.profile.firstName}`\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn uOpt;\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tsetUserOptions(uOptions);\r\n\t};\r\n\r\n\t//-- Create the role filter options from the available users\r\n\tconst createRoleFilterOptions = () => {\r\n\t\tconst roles = [\r\n\t\t\t...new Set(\r\n\t\t\t\tusers\r\n\t\t\t\t\t.map((u) => u.roles)\r\n\t\t\t\t\t.flat()\r\n\t\t\t\t\t.map((r) => r.role)\r\n\t\t\t)\r\n\t\t];\r\n\t\tconst rOptions = _.map(\r\n\t\t\t_.orderBy(roles, (r) => r, ['asc']),\r\n\t\t\t(r) => {\r\n\t\t\t\tconst rOpt = {\r\n\t\t\t\t\tvalue: r,\r\n\t\t\t\t\tlabel: r\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn rOpt;\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tsetRoleOptions(rOptions);\r\n\t};\r\n\r\n\tconst handleFilter = () => {\r\n\t\tconst filterdList = users.filter((u) => {\r\n\t\t\tconst included =\r\n\t\t\t\t//-- Users\r\n\t\t\t\t(userFilter.length === 0 || userFilter.some((uf) => uf.match(new RegExp(u.profile.emailAddress, 'i')))) &&\r\n\t\t\t\t//-- Roles\r\n\t\t\t\t(roleFilter.length == 0 || roleFilter.some((rf) => u.roles.some((r) => r.role.match(new RegExp(rf, 'i')))));\r\n\r\n\t\t\treturn included;\r\n\t\t});\r\n\r\n\t\tsetFilteredUsers(filterdList);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\t\t{t('Filters')}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\tkey='filters'\r\n\t\t\t\t\textra={}\r\n\t\t\t\t\tshowArrow={false}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t('Users')}\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\toption.value.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||\r\n\t\t\t\t\t\t\t\t\t\toption.label.toLowerCase().indexOf(input.toLowerCase()) >= 0\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tonSelect={(value) => setUserFilter(userFilter.concat([value]))}\r\n\t\t\t\t\t\t\t\tonDeselect={(value) => setUserFilter(userFilter.filter((uf) => uf !== value))}\r\n\t\t\t\t\t\t\t\tstyle={{ width: '100%' }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t('Roles')}\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\toption.value.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||\r\n\t\t\t\t\t\t\t\t\t\toption.label.toLowerCase().indexOf(input.toLowerCase()) >= 0\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tonSelect={(value) => setRoleFilter(roleFilter.concat([value]))}\r\n\t\t\t\t\t\t\t\tonDeselect={(value) => setRoleFilter(roleFilter.filter((uf) => uf !== value))}\r\n\t\t\t\t\t\t\t\tstyle={{ width: '100%' }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t{authZ.userIsEntDevAdmin() && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstyle={{ boxShadow: '2px 2px 5px grey' }}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCreateUserModalIsVisible(true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tgetUsers();\r\n\t\t\t\t\t\t\tsetCreateUserModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonCloseCallback={() => {\r\n\t\t\t\t\t\t\tsetCreateUserModalIsVisible(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Users;\r\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../.yarn/__virtual__/css-loader-virtual-5f091185ca/0/cache/css-loader-npm-6.5.1-a34b2a752f-5a3bedecb4.zip/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../.yarn/__virtual__/css-loader-virtual-5f091185ca/0/cache/css-loader-npm-6.5.1-a34b2a752f-5a3bedecb4.zip/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".color-picker {\\n -webkit-animation: fadein 1s;\\n /* Safari, Chrome and Opera > 12.1 */\\n -moz-animation: fadein 1s;\\n /* Firefox < 16 */\\n -ms-animation: fadein 1s;\\n /* Internet Explorer */\\n -o-animation: fadein 1s;\\n /* Opera < 12.1 */\\n animation: fadein 1s;\\n}\\n@keyframes fadein {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n/* Firefox < 16 */\\n@-moz-keyframes fadein {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n/* Safari, Chrome and Opera > 12.1 */\\n@-webkit-keyframes fadein {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n/* Internet Explorer */\\n@-ms-keyframes fadein {\\n from {\\n opacity: 0;\\n }\\n to {\\n opacity: 1;\\n }\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./site/settings/Admin/Applications/style.less\"],\"names\":[],\"mappings\":\"AAAA;EACC,4BAAA;EACC,oCAAoC;EAArC,yBAAA;EAEC,iBAAiB;EADlB,wBAAA;EAGC,sBAAsB;EAFvB,uBAAA;EAIC,iBAAiB;EAHlB,oBAAA;AAKD;AAFA;EACC;IACC,UAAA;EAIA;EAFD;IACC,UAAA;EAIA;AACF;AACA,iBAAiB;AADjB;EACC;IACC,UAAA;EAGA;EADD;IACC,UAAA;EAGA;AACF;AACA,oCAAoC;AAApC;EACC;IACC,UAAA;EAEA;EAAD;IACC,UAAA;EAEA;AACF;AACA,sBAAsB;AACtB;EACC;IACC,UAAA;EACA;EACD;IACC,UAAA;EACA;AACF\",\"sourcesContent\":[\".color-picker {\\n\\t-webkit-animation: fadein 1s; /* Safari, Chrome and Opera > 12.1 */\\n\\t-moz-animation: fadein 1s; /* Firefox < 16 */\\n\\t-ms-animation: fadein 1s; /* Internet Explorer */\\n\\t-o-animation: fadein 1s; /* Opera < 12.1 */\\n\\tanimation: fadein 1s;\\n}\\n\\n@keyframes fadein {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t}\\n\\tto {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n/* Firefox < 16 */\\n@-moz-keyframes fadein {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t}\\n\\tto {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n/* Safari, Chrome and Opera > 12.1 */\\n@-webkit-keyframes fadein {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t}\\n\\tto {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n/* Internet Explorer */\\n@-ms-keyframes fadein {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t}\\n\\tto {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"color-picker\": \"color-picker\",\n\t\"fadein\": \"fadein\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../.yarn/__virtual__/css-loader-virtual-5f091185ca/0/cache/css-loader-npm-6.5.1-a34b2a752f-5a3bedecb4.zip/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../.yarn/__virtual__/css-loader-virtual-5f091185ca/0/cache/css-loader-npm-6.5.1-a34b2a752f-5a3bedecb4.zip/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\", \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["ConfirmDeleteModal","deleteModalIsVisible","onConfirmDeleteCallback","onCancelDeleteCallback","applicationName","t","useI18nLocalization","title","centered","visible","onCancel","onOk","propTypes","PropTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","CreateApplicationModal","isVisible","onSaveCallback","onCloseCallback","appNameList","categories","dayjs","utc","applicationLogic","useApplicationsLogic","utilities","useUtilities","useState","isSaving","setIsSaving","form","areFormErrors","setAreFormErrors","appEnabled","setAppEnabled","iconFile","setIconFile","logoFile","setLogoFile","displayColorPicker","setDisplayColorPicker","color","setColor","TextArea","Option","clearStateVariables","getNewAplication","formValues","appName","appDescription","appUrl","convertToBase64","then","result","appHelpUrl","appColor","appCategory","newApplicationObject","enabled","name","description","url","icon","logo","supportUrl","categoryId","handleOnSave","newApplication","createApplication","notification","message","duration","clearForm","resetFields","handleColorChangeComplete","setFieldsValue","okText","submit","okButtonProps","disabled","cancelText","confirmLoading","onFieldsChange","areErrors","getFieldsError","some","fe","errors","length","layout","requiredMark","scrollToFirstError","onFinish","initialValues","appInternalBoolean","appEnabledBoolean","span","label","required","rules","validator","field","value","includes","Promise","reject","Error","match","resolve","placeholder","_","category","id","applicationDescription","maxLength","showCount","gutter","file","status","type","accept","multiple","fileList","concat","beforeUpload","onChange","info","onRemove","UploadOutlined","e","target","style","width","autoComplete","onClick","className","position","zIndex","top","left","marginLeft","autoFocus","right","bottom","EditApplicationModal","application","deleteModalVisible","setDeleteModalVisible","useEffect","appSupportUrl","internal","JSON","stringify","handleOnCancel","getUpdatedAplication","updatedApplication","updateApplication","handleDelete","applicationToDeleteId","deleteApplication","forceRender","footer","float","map","applicationsLogic","categoryLogic","useCategoriesLogic","applications","setApplications","appNamesList","setAppNamesList","listData","setListData","createApplicationModalIsVisible","setApplicationModalIsVisible","editApplicationModalIsVisible","setEditApplicationModalIsVisible","selectedApp","setSelectedApp","setCategories","categoryFilter","setCategoryFilter","enabledFilter","setEnabledFilter","visibleFilter","setVisibleFilter","searchFilter","setSearchFilter","getApplications","getCategories","applyFilters","listDataTemp","app","show","apps","cats","updateShow","checked","updatedAppModel","updateApplicationVisibility","filteredApps","filter","toLowerCase","input","allowClear","undefined","itemLayout","dataSource","renderItem","item","PageContent","extra","align","height","src","maxWidth","maxHeight","actions","SettingOutlined","defaultChecked","checkedChildren","unCheckedChildren","avatar","shape","PlusOutlined","justify","EditCategoryModal","categoryNames","categoriesLogic","categoryApps","setCategoryApps","getCategoryApps","categoryName","updatedCategory","getUpdatedCategory","updateCategoryName","deleteCategory","newName","size","header","CreateCategoryModal","createCategory","editCategoryModalIsVisible","setEditCategoryModalIsVisible","createCategoryModalIsVisible","setCreateCategoryModalIsVisible","selectedCategory","setSelectedCategory","onDragEnd","destination","catObj","Id","draggableId","NewIndex","index","updateOrder","reorder","source","fromIndex","toIndex","newOrder","removed","splice","cat","updateCategoryOrder","getCategoryNames","droppableId","provided","droppableProps","ref","innerRef","displayOrder","draggableProps","dragHandleProps","company","useSelector","state","availableLocalesAsSortedArray","companySettingsLogic","useCompanySettingsLogic","getCompanySettings","enterpriseProfileId","homeLocale","companySettingsToUpdate","updateCompanySettings","lg","profile","displayName","officeLocation","emailDomain","initialValue","settings","flex","textAlign","htmlType","loading","CreateNotificationModal","notificationsLogic","useNotificationsLogic","getDateFormat","getAntLocale","isEnabled","setIsEnabled","notificationTypes","setNotificationTypes","getNotificationTypes","nts","getNewNotification","notificationType","banner","displayType","notifyThroughDateUtc","format","dismissable","applicationId","newNotification","createNotification","valuePropName","nt","fontStyle","tooltip","locale","DatePicker","rows","whiteSpace","EditNotificationModal","ntificn","getUpdatedNotification","oldTitle","oldNotifyThroughDateUtc","updatedNotification","updateNotification","renderNewEditButton","authZ","createNotificationModalIsVisible","setCreateNotificationModalIsVisible","getNotifications","setSelectedNotification","editNotificationModalIsVisible","setEditNotificationModalIsVisible","selectedNotification","userIsEntDevAdmin","placement","boxShadow","refreshCurrentNotifications","useAuthZ","notifications","setNotifications","nots","n","isSameOrBefore","extend","deleteNotification","marginBottom","direction","level","wrap","split","date","createdDateTimeUtc","local","marginTop","paddingLeft","ExclamationCircleOutlined","content","italic","margin","CreateReleaseModal","releasesLogic","useReleasesLogic","getNewRelease","version","releaseDateTimeUtc","releaseDate","notes","newRelease","createRelease","EditReleaseModal","release","appId","find","getUpdatedRelease","oldVersion","releaseId","updatedRelease","updateRelease","setCreateReleaseModalIsVisible","createReleaseModalIsVisible","getReleases","setSelectedRelease","editReleaseModalIsVisible","setEditReleaseModalIsVisible","selectedRelease","releases","setReleases","rels","deleteRelease","r","xs","useAuthN","isAuthenticated","isInProgress","signIn","nav","useNav","goHome","RoleList","roles","userRoleIds","sortedRoles","orderBy","sr","user","firstName","lastName","emailAddress","employeeId","oid","objectSid","jobTitle","roleId","userEnabled","EditUserModal","reduxUser","userSettingsLogic","useUserSettingsLogic","isEditingSelf","setIsEditingSelf","setUserRoleIds","setUser","userId","getUpdatedUser","roleIds","isActive","updatedUser","updateUser","adminRoles","APP_SETTINGS","ar","adminRoleObjects","currentNumAdminRoles","role","newNumAdminRoles","aro","newValue","urid","AddUserToProfileModal","enterpriseProfiles","isAddingSelf","setIsAddingSelf","isAdding","setIsAdding","getUserToAdd","addToEnterpriseProfileId","userToAdd","addUserToProfile","UsersTable","users","refreshUserList","rest","isLoading","setIsLoading","usersList","setUsersList","selectedUser","setSelectedUser","editUserModalIsVisible","setEditUserModalIsVisible","addUserToProfileModalIsVisible","setAddUserToProfileModalIsVisible","getUsersList","u","key","active","pagination","defaultPageSize","showSizeChanger","pageSizeOptions","showTotal","total","dataIndex","sorter","compare","a","b","responsive","render","text","userSelected","su","CreateUserModal","getNewUser","newUser","createUser","emailRegex","setUsers","userOptions","setUserOptions","userFilter","setUserFilter","roleOptions","setRoleOptions","roleFilter","setRoleFilter","filteredUsers","setFilteredUsers","createUserModalIsVisible","setCreateUserModalIsVisible","getUsers","createUserFilterOptions","createRoleFilterOptions","handleFilter","usrs","uOptions","Set","flat","rOptions","filterdList","uf","RegExp","rf","bordered","defaultActiveKey","display","showArrow","showSearch","mode","filterOption","option","indexOf","onSelect","onDeselect","UserAddOutlined","___CSS_LOADER_EXPORT___","push","module","locals"],"sourceRoot":""}