@deviceinsight/ng-ui-scale-lib 10.2.0 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/{AccessEditModal-Rn7DKmYR.js → AccessEditModal-EVgqtRQn.js} +17 -17
  2. package/dist/{AccessEditModal-Rn7DKmYR.js.map → AccessEditModal-EVgqtRQn.js.map} +1 -1
  3. package/dist/{BundleManagementContainer-TrGIe0YX.js → BundleManagementContainer-48Mfx5AV.js} +4 -4
  4. package/dist/{BundleManagementContainer-TrGIe0YX.js.map → BundleManagementContainer-48Mfx5AV.js.map} +1 -1
  5. package/dist/{BundlesContainer-DBDS1cey.js → BundlesContainer-nZS9tMML.js} +40 -40
  6. package/dist/{BundlesContainer-DBDS1cey.js.map → BundlesContainer-nZS9tMML.js.map} +1 -1
  7. package/dist/{DatapointImport-DmBB5IO_.js → DatapointImport-DGgPh1uk.js} +10 -10
  8. package/dist/DatapointImport-DGgPh1uk.js.map +1 -0
  9. package/dist/{FileUploadInput-DWMYm62d.js → FileUploadInput-COocUgkB.js} +2 -2
  10. package/dist/{FileUploadInput-DWMYm62d.js.map → FileUploadInput-COocUgkB.js.map} +1 -1
  11. package/dist/{Files-DZoDxerS.js → Files-DfQGLE39.js} +3 -3
  12. package/dist/{Files-DZoDxerS.js.map → Files-DfQGLE39.js.map} +1 -1
  13. package/dist/{GlobalPowerBiReports-B0FFOZL6.js → GlobalPowerBiReports-B1nYGKvp.js} +2 -2
  14. package/dist/{GlobalPowerBiReports-B0FFOZL6.js.map → GlobalPowerBiReports-B1nYGKvp.js.map} +1 -1
  15. package/dist/{JsonSettingWidget-DdS4dPsa.js → JsonSettingWidget-CGANHs8P.js} +9 -9
  16. package/dist/JsonSettingWidget-CGANHs8P.js.map +1 -0
  17. package/dist/{LicensesEditPage-DPJ4lLaV.js → LicensesEditPage-D1I6dogi.js} +11 -11
  18. package/dist/{LicensesEditPage-DPJ4lLaV.js.map → LicensesEditPage-D1I6dogi.js.map} +1 -1
  19. package/dist/{LicensesList-CkgWMSnM.js → LicensesList-CYyuylk_.js} +2 -2
  20. package/dist/{LicensesList-CkgWMSnM.js.map → LicensesList-CYyuylk_.js.map} +1 -1
  21. package/dist/{PropertiesEditPage--t5jnFmT.js → PropertiesEditPage-BOlFs_u9.js} +29 -29
  22. package/dist/{PropertiesEditPage--t5jnFmT.js.map → PropertiesEditPage-BOlFs_u9.js.map} +1 -1
  23. package/dist/{PropertiesList-BwbcDHUj.js → PropertiesList-DCPkWqaf.js} +5 -5
  24. package/dist/{PropertiesList-BwbcDHUj.js.map → PropertiesList-DCPkWqaf.js.map} +1 -1
  25. package/dist/{TemplateEditPage-IqiYJ6eB.js → TemplateEditPage-BeV5ZSVV.js} +25 -25
  26. package/dist/{TemplateEditPage-IqiYJ6eB.js.map → TemplateEditPage-BeV5ZSVV.js.map} +1 -1
  27. package/dist/{TemplateTextInput-bjR36XPj.js → TemplateTextInput-EDyDopjf.js} +2 -2
  28. package/dist/{TemplateTextInput-bjR36XPj.js.map → TemplateTextInput-EDyDopjf.js.map} +1 -1
  29. package/dist/{TemplatesListPage-Cv2vJe8b.js → TemplatesListPage-BVAiLKAE.js} +13 -13
  30. package/dist/{TemplatesListPage-Cv2vJe8b.js.map → TemplatesListPage-BVAiLKAE.js.map} +1 -1
  31. package/dist/{UserGroupAssignments-wEhudUHe.js → UserGroupAssignments-C7c3INUy.js} +10 -10
  32. package/dist/{UserGroupAssignments-wEhudUHe.js.map → UserGroupAssignments-C7c3INUy.js.map} +1 -1
  33. package/dist/{UserGroupTheme-C16SwuPr.js → UserGroupTheme-CFaudF3q.js} +5 -5
  34. package/dist/{UserGroupTheme-C16SwuPr.js.map → UserGroupTheme-CFaudF3q.js.map} +1 -1
  35. package/dist/api.js +23 -23
  36. package/dist/index.js +1144 -1122
  37. package/dist/index.js.map +1 -1
  38. package/dist/{setTitle-OKcazNTt.js → setTitle-Cyf8DxtL.js} +4976 -4964
  39. package/dist/setTitle-Cyf8DxtL.js.map +1 -0
  40. package/package.json +23 -21
  41. package/dist/DatapointImport-DmBB5IO_.js.map +0 -1
  42. package/dist/JsonSettingWidget-DdS4dPsa.js.map +0 -1
  43. package/dist/api.d.ts +0 -1195
  44. package/dist/index.d.ts +0 -7
  45. package/dist/setTitle-OKcazNTt.js.map +0 -1
  46. package/dist/setupRuntimeEnv.js +0 -27
@@ -1 +1 @@
1
- {"version":3,"file":"UserGroupAssignments-wEhudUHe.js","sources":["../ng-ui-scale/src/modules/userGroupAssignments/EditUserGroupAssignmentsRuleModal.tsx","../ng-ui-scale/src/modules/userGroupAssignments/UserGroupAssignmentsTable.tsx","../ng-ui-scale/src/modules/userGroupAssignments/useUserGroupAssignmentRules.ts","../ng-ui-scale/src/modules/userGroupAssignments/UserGroupAssignments.tsx"],"sourcesContent":["import axios from 'axios';\nimport {Controller, useForm} from 'react-hook-form';\n\nimport type {InitialAccountGroupAssignmentRule} from '@deviceinsight/ng-ui-api-client';\nimport {Button, Modal} from '@deviceinsight/ng-ui-basic-components';\nimport {messageBoxError} from '@deviceinsight/ng-ui-components';\n\nimport TextInput from 'components/inputs/textInput/TextInput';\nimport {UserGroupSelectInput} from 'components/inputs/UserGroupSelectInput';\nimport {Trans, useTranslation} from 'i18n';\n\ntype Props = {\n\tonSubmit: (rule: InitialAccountGroupAssignmentRule) => Promise<void>;\n\tonClose: () => void;\n\tvalue?: InitialAccountGroupAssignmentRule;\n};\n\ntype ErrorResponse = {\n\tfieldErrors?: Array<{field: string}>;\n};\n\nfunction parseValidationError(error: unknown): string[] | undefined {\n\tif (axios.isAxiosError(error) && error.response?.data) {\n\t\tconst {fieldErrors} = error.response.data as ErrorResponse;\n\t\tif (fieldErrors) {\n\t\t\treturn fieldErrors.map(({field}) => field);\n\t\t}\n\t}\n}\n\nexport function EditUserGroupAssignmentsRuleModal({onSubmit, onClose, value}: Props) {\n\tconst {\n\t\thandleSubmit,\n\t\tformState: {isSubmitting},\n\t\tcontrol,\n\t\tsetError,\n\t} = useForm<InitialAccountGroupAssignmentRule>({\n\t\tdefaultValues: value ?? {name: '', displayName: '', acceptedEmailHostname: ''},\n\t});\n\tconst {t} = useTranslation();\n\n\tconst required = {\n\t\trequired: t('userGroupAssignments.ruleModal.validation.required', {\n\t\t\tdefaultValue: 'Required field',\n\t\t}),\n\t};\n\n\tconst submit = handleSubmit(async rule => {\n\t\ttry {\n\t\t\tawait onSubmit(rule);\n\t\t} catch (error: unknown) {\n\t\t\tconst invalidFields = parseValidationError(error);\n\t\t\tif (invalidFields) {\n\t\t\t\tfor (const field of invalidFields) {\n\t\t\t\t\tsetError(field as keyof InitialAccountGroupAssignmentRule, {\n\t\t\t\t\t\tmessage: t('userGroupAssignments.ruleModal.validation.invalid', {\n\t\t\t\t\t\t\tdefaultValue: 'Invalid value',\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (axios.isAxiosError(error)) {\n\t\t\t\tmessageBoxError(\n\t\t\t\t\terror.response?.data?.message ??\n\t\t\t\t\t\tt('userGroupAssignments.ruleModal.validation.unknownError', {\n\t\t\t\t\t\t\tdefaultValue: 'An error occurred',\n\t\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn (\n\t\t<Modal\n\t\t\twidth={500}\n\t\t\theader={\n\t\t\t\tvalue ? (\n\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.editTitle\">Edit Rule</Trans>\n\t\t\t\t) : (\n\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.createTitle\">Create Rule</Trans>\n\t\t\t\t)\n\t\t\t}\n\t\t\tcontent={\n\t\t\t\t<div className=\"rule-modal\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.info\">\n\t\t\t\t\t\t\tRules regulate from which e-mail addresses (hostnames) logins will be accepted. Users\n\t\t\t\t\t\t\t{`'`} Rights will finally depend on the User Group they are assigned to.\n\t\t\t\t\t\t</Trans>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\trules={required}\n\t\t\t\t\t\trender={({field: {ref: _, ...inputProps}, fieldState: {error}}) => (\n\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\tlabel={<Trans i18nKey=\"userGroupAssignments.ruleModal.name\">Name</Trans>}\n\t\t\t\t\t\t\t\tdata-testid=\"nameField\"\n\t\t\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\t\t\terror={error?.message}\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\tname=\"displayName\"\n\t\t\t\t\t\trules={required}\n\t\t\t\t\t\trender={({field: {ref: _, ...inputProps}, fieldState: {error}}) => (\n\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\tlabel={<Trans i18nKey=\"userGroupAssignments.ruleModal.displayName\">Display Name</Trans>}\n\t\t\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\t\t\terror={error?.message}\n\t\t\t\t\t\t\t\tdata-testid=\"displayNameField\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\tname=\"acceptedEmailHostname\"\n\t\t\t\t\t\trules={required}\n\t\t\t\t\t\trender={({field: {ref: _, ...inputProps}, fieldState: {error}}) => (\n\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.acceptedEmailHostname\">\n\t\t\t\t\t\t\t\t\t\tE-Mail Hostname\n\t\t\t\t\t\t\t\t\t</Trans>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\t\t\tdata-testid=\"acceptedEmailHostnameField\"\n\t\t\t\t\t\t\t\terror={error?.message}\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<hr />\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\tname=\"accountGroupId\"\n\t\t\t\t\t\trules={required}\n\t\t\t\t\t\trender={({field: {ref: _, ...inputProps}, fieldState: {error}}) => (\n\t\t\t\t\t\t\t<UserGroupSelectInput\n\t\t\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.accountGroupId\">\n\t\t\t\t\t\t\t\t\t\tin Target User Group\n\t\t\t\t\t\t\t\t\t</Trans>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdata-testid=\"accountGroupIdField\"\n\t\t\t\t\t\t\t\terror={error?.message}\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\tfooter={\n\t\t\t\t<>\n\t\t\t\t\t<Button primary onClick={submit} disabled={isSubmitting}>\n\t\t\t\t\t\t<Trans i18nKey=\"general.actions.apply\">Apply</Trans>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button onClick={onClose} disabled={isSubmitting}>\n\t\t\t\t\t\t<Trans i18nKey=\"general.actions.cancel\">Cancel</Trans>\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t}\n\t\t/>\n\t);\n}\n","import type {InitialAccountGroupAssignmentRule} from '@deviceinsight/ng-ui-api-client';\nimport {Button, Icon} from '@deviceinsight/ng-ui-basic-components';\nimport {\n\ttype PaginationSettings,\n\ttype ReactableColumnDef,\n\tReactableWithClientSidePagination,\n} from '@deviceinsight/ng-ui-components';\n\nimport {HasAuthorities} from 'components/auth/HasAuthorities';\nimport {UserGroupName} from 'components/usergroups/UserGroupName';\n\ntype Props = {\n\trules: InitialAccountGroupAssignmentRule[];\n\tonEditRuleClick: (rule: InitialAccountGroupAssignmentRule) => void;\n\tonDeleteRuleClick: (ruleName: string) => void;\n};\n\nconst INITIAL_PAGINATION_SETTINGS: PaginationSettings = {\n\tpage: 0,\n\tsize: 10,\n\tsort: {direction: 'ASC', property: 'name'},\n};\n\nexport const createColumnDefs = (\n\tonEdit: (rule: InitialAccountGroupAssignmentRule) => void,\n\tonRemove: (ruleName: string) => void,\n): Array<ReactableColumnDef<InitialAccountGroupAssignmentRule>> => [\n\t{\n\t\tname: 'name',\n\t\tsortable: true,\n\t\tlabel: {id: 'userGroupAssignments.col.name', defaultValue: 'Name'},\n\t\trender: ({name}: InitialAccountGroupAssignmentRule) => name,\n\t},\n\t{\n\t\tname: 'displayName',\n\t\tsortable: true,\n\t\tlabel: {id: 'userGroupAssignments.col.displayName', defaultValue: 'Display Name'},\n\t\trender: ({displayName}: InitialAccountGroupAssignmentRule) => displayName,\n\t},\n\t{\n\t\tname: 'acceptedEmailHostname',\n\t\tsortable: true,\n\t\tlabel: {id: 'userGroupAssignments.col.acceptedEmailHostname', defaultValue: 'Accepted Email Hostname'},\n\t\trender: ({acceptedEmailHostname}: InitialAccountGroupAssignmentRule) => acceptedEmailHostname,\n\t},\n\t{\n\t\tname: 'accountGroup',\n\t\tsortable: false,\n\t\tlabel: {id: 'userGroupAssignments.col.accountGroup', defaultValue: 'Account Group'},\n\t\trender: ({accountGroupId}: InitialAccountGroupAssignmentRule) => <UserGroupName id={accountGroupId} />,\n\t},\n\t{\n\t\tname: 'actions',\n\t\tsortable: true,\n\t\tlabel: '',\n\t\twidth: '1%',\n\t\trender: (item: InitialAccountGroupAssignmentRule) => (\n\t\t\t<>\n\t\t\t\t<HasAuthorities authorities={['WRITE_INITIAL_ACCOUNT_GROUP_ASSIGNMENT_RULE']}>\n\t\t\t\t\t<Button naked onClick={() => onEdit(item)} data-testid=\"edit-rule-button\">\n\t\t\t\t\t\t<Icon edit />\n\t\t\t\t\t</Button>\n\t\t\t\t</HasAuthorities>\n\t\t\t\t<HasAuthorities authorities={['DELETE_INITIAL_ACCOUNT_GROUP_ASSIGNMENT_RULE']}>\n\t\t\t\t\t<Button naked onClick={() => onRemove(item.name)} data-testid=\"delete-rule-button\">\n\t\t\t\t\t\t<Icon del />\n\t\t\t\t\t</Button>\n\t\t\t\t</HasAuthorities>\n\t\t\t</>\n\t\t),\n\t},\n];\n\nexport function UserGroupAssignmentsTable({onEditRuleClick, onDeleteRuleClick, rules}: Props) {\n\treturn (\n\t\t<ReactableWithClientSidePagination\n\t\t\tcolumnDefs={createColumnDefs(onEditRuleClick, onDeleteRuleClick)}\n\t\t\tuniqueItemKey={item => item.name}\n\t\t\tpaginationSettings={INITIAL_PAGINATION_SETTINGS}\n\t\t\titems={rules}\n\t\t\tisLoading={false}\n\t\t\tdata-testid=\"user-group-assignments-table\"\n\t\t\ttableName={'userGroupAssignments'}\n\t\t/>\n\t);\n}\n","import {useEffect, useState} from 'react';\n\nimport {\n\tcreateInitialAccountGroupAssignmentRule,\n\tdeleteInitialAccountGroupAssignmentRule,\n\tgetInitialAccountGroupAssignmentRules,\n\ttype InitialAccountGroupAssignmentRule,\n\tupdateInitialAccountGroupAssignmentRule,\n} from '@deviceinsight/ng-ui-api-client';\n\ntype UseUserGroupAssignmentRules = {\n\trules: InitialAccountGroupAssignmentRule[];\n\tisLoading: boolean;\n\terror: unknown;\n\tcreateRule: (rule: InitialAccountGroupAssignmentRule) => Promise<void>;\n\teditRule: (ruleName: string, rule: InitialAccountGroupAssignmentRule) => Promise<void>;\n\tdeleteRule: (ruleName: string) => Promise<void>;\n};\n\nexport function useUserGroupAssignmentRules(): UseUserGroupAssignmentRules {\n\tconst [rules, setRules] = useState<InitialAccountGroupAssignmentRule[]>([]);\n\tconst [isLoading, setIsLoading] = useState<boolean>(false);\n\tconst [error, setError] = useState<unknown>(null);\n\n\tuseEffect(() => {\n\t\tsetIsLoading(true);\n\t\tlet canceled = false;\n\n\t\tgetInitialAccountGroupAssignmentRules()\n\t\t\t.then(rules => {\n\t\t\t\tif (!canceled) {\n\t\t\t\t\tsetRules(rules);\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tif (!canceled) {\n\t\t\t\t\tsetError(error);\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t});\n\n\t\treturn () => {\n\t\t\tcanceled = true;\n\t\t};\n\t}, []);\n\n\tasync function createRule(rule: InitialAccountGroupAssignmentRule) {\n\t\ttry {\n\t\t\tsetIsLoading(true);\n\t\t\tconst createdRule = await createInitialAccountGroupAssignmentRule(rule);\n\t\t\tsetRules([...rules, createdRule]);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}\n\n\tasync function editRule(name: string, rule: InitialAccountGroupAssignmentRule) {\n\t\ttry {\n\t\t\tsetIsLoading(true);\n\t\t\tconst updatedRule = await updateInitialAccountGroupAssignmentRule(name, rule);\n\t\t\tsetRules(rules.map(r => (r.name === name ? updatedRule : r)));\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}\n\n\tasync function deleteRule(name: string) {\n\t\ttry {\n\t\t\tsetIsLoading(true);\n\t\t\tawait deleteInitialAccountGroupAssignmentRule(name);\n\t\t\tsetRules(rules.filter(r => r.name !== name));\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}\n\n\treturn {rules, isLoading, error, createRule, editRule, deleteRule};\n}\n","import axios from 'axios';\nimport {useEffect, useState} from 'react';\n\nimport type {InitialAccountGroupAssignmentRule} from '@deviceinsight/ng-ui-api-client';\nimport {Button, SpinnerContainer, useConfirm} from '@deviceinsight/ng-ui-basic-components';\nimport {ContentHeader, messageBoxError} from '@deviceinsight/ng-ui-components';\n\nimport {HasAuthorities} from 'components/auth/HasAuthorities';\nimport {Trans, useTranslation} from 'i18n';\nimport {EditUserGroupAssignmentsRuleModal} from './EditUserGroupAssignmentsRuleModal';\nimport {UserGroupAssignmentsTable} from './UserGroupAssignmentsTable';\nimport {useUserGroupAssignmentRules} from './useUserGroupAssignmentRules';\nimport './UserGroupAssignments.scss';\n\nexport default function UserGroupAssignments() {\n\tconst {isLoading, rules, error, createRule, editRule, deleteRule} = useUserGroupAssignmentRules();\n\tconst [createModalOpen, setCreateModalOpen] = useState(false);\n\tconst [editModalValue, setEditModalValue] = useState<InitialAccountGroupAssignmentRule | null>(null);\n\tconst confirm = useConfirm();\n\tconst {t} = useTranslation();\n\n\tuseEffect(() => {\n\t\tif (error && axios.isAxiosError(error)) {\n\t\t\tmessageBoxError(\n\t\t\t\t<Trans i18nKey=\"userGroupAssignments.fetchError\">\n\t\t\t\t\tAn error occurred while loading the initial user group assignment rules\n\t\t\t\t</Trans>,\n\t\t\t);\n\t\t\tconsole.error('Error loading initial user group assignment rules', error);\n\t\t}\n\t}, [error]);\n\n\tasync function handleCreateRule(rule: InitialAccountGroupAssignmentRule) {\n\t\tawait createRule(rule);\n\t\tsetCreateModalOpen(false);\n\t}\n\n\tasync function handleEditRule(rule: InitialAccountGroupAssignmentRule) {\n\t\tif (editModalValue) {\n\t\t\tawait editRule(editModalValue.name, rule);\n\t\t\tsetEditModalValue(null);\n\t\t}\n\t}\n\n\tasync function handleDeleteRule(ruleName: string) {\n\t\tif (\n\t\t\tawait confirm({\n\t\t\t\ttitle: t('userGroupAssignments.deleteConfirmTitle', {defaultValue: 'Delete Rule'}),\n\t\t\t\tmessage: t('userGroupAssignments.deleteConfirm', {\n\t\t\t\t\tdefaultValue: 'Do you really want to delete the rule?',\n\t\t\t\t}),\n\t\t\t})\n\t\t) {\n\t\t\tawait deleteRule(ruleName);\n\t\t}\n\t}\n\treturn (\n\t\t<div className=\"di user-group-assignments\">\n\t\t\t<SpinnerContainer show={isLoading} data-testid=\"spinner-container\">\n\t\t\t\t<ContentHeader\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'route.label.userGroupAssignments.name',\n\t\t\t\t\t\tdefaultValue: 'User Group Assignments',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t{!isLoading && !!error && (\n\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.fetchError\">\n\t\t\t\t\t\tAn error occurred while loading the initial user group assignment rules\n\t\t\t\t\t</Trans>\n\t\t\t\t)}\n\n\t\t\t\t{!isLoading && !error && rules.length === 0 && (\n\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.emptyList\">\n\t\t\t\t\t\tNo initial user group assignment rules available yet.\n\t\t\t\t\t</Trans>\n\t\t\t\t)}\n\n\t\t\t\t{rules.length > 0 && (\n\t\t\t\t\t<UserGroupAssignmentsTable\n\t\t\t\t\t\trules={rules}\n\t\t\t\t\t\tonEditRuleClick={setEditModalValue}\n\t\t\t\t\t\tonDeleteRuleClick={handleDeleteRule}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<HasAuthorities authorities={['WRITE_INITIAL_ACCOUNT_GROUP_ASSIGNMENT_RULE']}>\n\t\t\t\t\t<div className=\"footer\">\n\t\t\t\t\t\t<Button data-testid=\"create-rule-button\" onClick={() => setCreateModalOpen(true)}>\n\t\t\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.createRule\">Create Rule</Trans>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</HasAuthorities>\n\t\t\t</SpinnerContainer>\n\n\t\t\t{createModalOpen && (\n\t\t\t\t<EditUserGroupAssignmentsRuleModal\n\t\t\t\t\tonClose={() => setCreateModalOpen(false)}\n\t\t\t\t\tonSubmit={handleCreateRule}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{editModalValue && (\n\t\t\t\t<EditUserGroupAssignmentsRuleModal\n\t\t\t\t\tonClose={() => setEditModalValue(null)}\n\t\t\t\t\tonSubmit={handleEditRule}\n\t\t\t\t\tvalue={editModalValue}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"names":["parseValidationError","error","axios","fieldErrors","field","EditUserGroupAssignmentsRuleModal","onSubmit","onClose","value","handleSubmit","isSubmitting","control","setError","useForm","t","useTranslation","required","submit","rule","invalidFields","messageBoxError","jsx","Modal","Trans","jsxs","Controller","_","inputProps","TextInput","UserGroupSelectInput","Fragment","Button","INITIAL_PAGINATION_SETTINGS","createColumnDefs","onEdit","onRemove","name","displayName","acceptedEmailHostname","accountGroupId","UserGroupName","item","HasAuthorities","Icon","UserGroupAssignmentsTable","onEditRuleClick","onDeleteRuleClick","rules","ReactableWithClientSidePagination","useUserGroupAssignmentRules","setRules","useState","isLoading","setIsLoading","useEffect","canceled","getInitialAccountGroupAssignmentRules","createRule","createdRule","createInitialAccountGroupAssignmentRule","editRule","updatedRule","updateInitialAccountGroupAssignmentRule","r","deleteRule","deleteInitialAccountGroupAssignmentRule","UserGroupAssignments","createModalOpen","setCreateModalOpen","editModalValue","setEditModalValue","confirm","useConfirm","handleCreateRule","handleEditRule","handleDeleteRule","ruleName","SpinnerContainer","ContentHeader"],"mappings":";;;;;;;;AAqBA,SAASA,EAAqBC,GAAsC;AACnE,MAAIC,EAAM,aAAaD,CAAK,KAAKA,EAAM,UAAU,MAAM;AACtD,UAAM,EAAC,aAAAE,EAAA,IAAeF,EAAM,SAAS;AACrC,QAAIE;AACH,aAAOA,EAAY,IAAI,CAAC,EAAC,OAAAC,EAAA,MAAWA,CAAK;AAAA,EAE3C;AACD;AAEO,SAASC,EAAkC,EAAC,UAAAC,GAAU,SAAAC,GAAS,OAAAC,KAAe;AACpF,QAAM;AAAA,IACL,cAAAC;AAAA,IACA,WAAW,EAAC,cAAAC,EAAA;AAAA,IACZ,SAAAC;AAAA,IACA,UAAAC;AAAA,EAAA,IACGC,EAA2C;AAAA,IAC9C,eAAeL,KAAS,EAAC,MAAM,IAAI,aAAa,IAAI,uBAAuB,GAAA;AAAA,EAAE,CAC7E,GACK,EAAC,GAAAM,EAAA,IAAKC,EAAA,GAENC,IAAW;AAAA,IAChB,UAAUF,EAAE,sDAAsD;AAAA,MACjE,cAAc;AAAA,IAAA,CACd;AAAA,EAAA,GAGIG,IAASR,EAAa,OAAMS,MAAQ;AACzC,QAAI;AACH,YAAMZ,EAASY,CAAI;AAAA,IACpB,SAASjB,GAAgB;AACxB,YAAMkB,IAAgBnB,EAAqBC,CAAK;AAChD,UAAIkB;AACH,mBAAWf,KAASe;AACnB,UAAAP,EAASR,GAAkD;AAAA,YAC1D,SAASU,EAAE,qDAAqD;AAAA,cAC/D,cAAc;AAAA,YAAA,CACd;AAAA,UAAA,CACD;AAAA,UAEH,CAAWZ,EAAM,aAAaD,CAAK,KAClCmB;AAAA,QACCnB,EAAM,UAAU,MAAM,WACrBa,EAAE,0DAA0D;AAAA,UAC3D,cAAc;AAAA,QAAA,CACd;AAAA,MAAA;AAAA,IAGL;AAAA,EACD,CAAC;AAED,SACC,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,OAAO;AAAA,MACP,QACCd,IACC,gBAAAa,EAACE,GAAA,EAAM,SAAQ,4CAA2C,UAAA,YAAA,CAAS,IAEnE,gBAAAF,EAACE,GAAA,EAAM,SAAQ,8CAA6C,UAAA,eAAW;AAAA,MAGzE,SACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,cACd,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAA,EACA,UAAA,gBAAAG,EAACD,GAAA,EAAM,SAAQ,uCAAsC,UAAA;AAAA,UAAA;AAAA,UAEnD;AAAA,UAAI;AAAA,QAAA,EAAA,CACN,EAAA,CACD;AAAA,QACA,gBAAAF;AAAA,UAACI;AAAA,UAAA;AAAA,YACA,SAAAd;AAAA,YACA,MAAK;AAAA,YACL,OAAOK;AAAA,YACP,QAAQ,CAAC,EAAC,OAAO,EAAC,KAAKU,GAAG,GAAGC,EAAA,GAAa,YAAY,EAAC,OAAA1B,EAAA,QACtD,gBAAAoB;AAAA,cAACO;AAAA,cAAA;AAAA,gBACA,OAAO,gBAAAP,EAACE,GAAA,EAAM,SAAQ,uCAAsC,UAAA,QAAI;AAAA,gBAChE,eAAY;AAAA,gBACX,GAAGI;AAAA,gBACJ,OAAO1B,GAAO;AAAA,gBACd,UAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACT;AAAA,QAAA;AAAA,QAGF,gBAAAoB;AAAA,UAACI;AAAA,UAAA;AAAA,YACA,SAAAd;AAAA,YACA,MAAK;AAAA,YACL,OAAOK;AAAA,YACP,QAAQ,CAAC,EAAC,OAAO,EAAC,KAAKU,GAAG,GAAGC,EAAA,GAAa,YAAY,EAAC,OAAA1B,EAAA,QACtD,gBAAAoB;AAAA,cAACO;AAAA,cAAA;AAAA,gBACA,OAAO,gBAAAP,EAACE,GAAA,EAAM,SAAQ,8CAA6C,UAAA,gBAAY;AAAA,gBAC9E,GAAGI;AAAA,gBACJ,OAAO1B,GAAO;AAAA,gBACd,eAAY;AAAA,gBACZ,UAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACT;AAAA,QAAA;AAAA,QAGF,gBAAAoB;AAAA,UAACI;AAAA,UAAA;AAAA,YACA,SAAAd;AAAA,YACA,MAAK;AAAA,YACL,OAAOK;AAAA,YACP,QAAQ,CAAC,EAAC,OAAO,EAAC,KAAKU,GAAG,GAAGC,EAAA,GAAa,YAAY,EAAC,OAAA1B,EAAA,QACtD,gBAAAoB;AAAA,cAACO;AAAA,cAAA;AAAA,gBACA,OACC,gBAAAP,EAACE,GAAA,EAAM,SAAQ,wDAAuD,UAAA,mBAEtE;AAAA,gBAEA,GAAGI;AAAA,gBACJ,eAAY;AAAA,gBACZ,OAAO1B,GAAO;AAAA,gBACd,UAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACT;AAAA,QAAA;AAAA,0BAID,MAAA,EAAG;AAAA,QACJ,gBAAAoB;AAAA,UAACI;AAAA,UAAA;AAAA,YACA,SAAAd;AAAA,YACA,MAAK;AAAA,YACL,OAAOK;AAAA,YACP,QAAQ,CAAC,EAAC,OAAO,EAAC,KAAKU,GAAG,GAAGC,EAAA,GAAa,YAAY,EAAC,OAAA1B,EAAA,QACtD,gBAAAoB;AAAA,cAACQ;AAAA,cAAA;AAAA,gBACC,GAAGF;AAAA,gBACJ,OACC,gBAAAN,EAACE,GAAA,EAAM,SAAQ,iDAAgD,UAAA,wBAE/D;AAAA,gBAED,eAAY;AAAA,gBACZ,OAAOtB,GAAO;AAAA,gBACd,UAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACT;AAAA,QAAA;AAAA,MAEF,GACD;AAAA,MAED,QACC,gBAAAuB,EAAAM,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAT,EAACU,GAAA,EAAO,SAAO,IAAC,SAASd,GAAQ,UAAUP,GAC1C,UAAA,gBAAAW,EAACE,GAAA,EAAM,SAAQ,yBAAwB,UAAA,QAAA,CAAK,GAC7C;AAAA,QACA,gBAAAF,EAACU,GAAA,EAAO,SAASxB,GAAS,UAAUG,GACnC,UAAA,gBAAAW,EAACE,GAAA,EAAM,SAAQ,0BAAyB,UAAA,SAAA,CAAM,EAAA,CAC/C;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAAA;AAIJ;ACxJA,MAAMS,IAAkD;AAAA,EACvD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM,EAAC,WAAW,OAAO,UAAU,OAAA;AACpC,GAEaC,IAAmB,CAC/BC,GACAC,MACkE;AAAA,EAClE;AAAA,IACC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO,EAAC,IAAI,iCAAiC,cAAc,OAAA;AAAA,IAC3D,QAAQ,CAAC,EAAC,MAAAC,QAA6CA;AAAA,EAAA;AAAA,EAExD;AAAA,IACC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO,EAAC,IAAI,wCAAwC,cAAc,eAAA;AAAA,IAClE,QAAQ,CAAC,EAAC,aAAAC,QAAoDA;AAAA,EAAA;AAAA,EAE/D;AAAA,IACC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO,EAAC,IAAI,kDAAkD,cAAc,0BAAA;AAAA,IAC5E,QAAQ,CAAC,EAAC,uBAAAC,QAA8DA;AAAA,EAAA;AAAA,EAEzE;AAAA,IACC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO,EAAC,IAAI,yCAAyC,cAAc,gBAAA;AAAA,IACnE,QAAQ,CAAC,EAAC,gBAAAC,EAAA,MAAuD,gBAAAlB,EAACmB,GAAA,EAAc,IAAID,EAAA,CAAgB;AAAA,EAAA;AAAA,EAErG;AAAA,IACC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ,CAACE,MACR,gBAAAjB,EAAAM,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAT,EAACqB,GAAA,EAAe,aAAa,CAAC,6CAA6C,GAC1E,UAAA,gBAAArB,EAACU,GAAA,EAAO,OAAK,IAAC,SAAS,MAAMG,EAAOO,CAAI,GAAG,eAAY,oBACtD,4BAACE,GAAA,EAAK,MAAI,IAAC,EAAA,CACZ,EAAA,CACD;AAAA,MACA,gBAAAtB,EAACqB,KAAe,aAAa,CAAC,8CAA8C,GAC3E,UAAA,gBAAArB,EAACU,GAAA,EAAO,OAAK,IAAC,SAAS,MAAMI,EAASM,EAAK,IAAI,GAAG,eAAY,sBAC7D,4BAACE,GAAA,EAAK,KAAG,GAAA,CAAC,EAAA,CACX,EAAA,CACD;AAAA,IAAA,EAAA,CACD;AAAA,EAAA;AAGH;AAEO,SAASC,EAA0B,EAAC,iBAAAC,GAAiB,mBAAAC,GAAmB,OAAAC,KAAe;AAC7F,SACC,gBAAA1B;AAAA,IAAC2B;AAAA,IAAA;AAAA,MACA,YAAYf,EAAiBY,GAAiBC,CAAiB;AAAA,MAC/D,eAAe,OAAQL,EAAK;AAAA,MAC5B,oBAAoBT;AAAA,MACpB,OAAOe;AAAA,MACP,WAAW;AAAA,MACX,eAAY;AAAA,MACZ,WAAW;AAAA,IAAA;AAAA,EAAA;AAGd;AClEO,SAASE,IAA2D;AAC1E,QAAM,CAACF,GAAOG,CAAQ,IAAIC,EAA8C,CAAA,CAAE,GACpE,CAACC,GAAWC,CAAY,IAAIF,EAAkB,EAAK,GACnD,CAAClD,GAAOW,CAAQ,IAAIuC,EAAkB,IAAI;AAEhD,EAAAG,EAAU,MAAM;AACf,IAAAD,EAAa,EAAI;AACjB,QAAIE,IAAW;AAEf,WAAAC,EAAA,EACE,KAAK,CAAAT,MAAS;AACd,MAAKQ,MACJL,EAASH,CAAK,GACdM,EAAa,EAAK;AAAA,IAEpB,CAAC,EACA,MAAM,CAAApD,MAAS;AACf,MAAKsD,MACJ3C,EAASX,CAAK,GACdoD,EAAa,EAAK;AAAA,IAEpB,CAAC,GAEK,MAAM;AACZ,MAAAE,IAAW;AAAA,IACZ;AAAA,EACD,GAAG,CAAA,CAAE;AAEL,iBAAeE,EAAWvC,GAAyC;AAClE,QAAI;AACH,MAAAmC,EAAa,EAAI;AACjB,YAAMK,IAAc,MAAMC,EAAwCzC,CAAI;AACtE,MAAAgC,EAAS,CAAC,GAAGH,GAAOW,CAAW,CAAC;AAAA,IACjC,UAAA;AACC,MAAAL,EAAa,EAAK;AAAA,IACnB;AAAA,EACD;AAEA,iBAAeO,EAASxB,GAAclB,GAAyC;AAC9E,QAAI;AACH,MAAAmC,EAAa,EAAI;AACjB,YAAMQ,IAAc,MAAMC,EAAwC1B,GAAMlB,CAAI;AAC5E,MAAAgC,EAASH,EAAM,IAAI,CAAAgB,MAAMA,EAAE,SAAS3B,IAAOyB,IAAcE,CAAE,CAAC;AAAA,IAC7D,UAAA;AACC,MAAAV,EAAa,EAAK;AAAA,IACnB;AAAA,EACD;AAEA,iBAAeW,EAAW5B,GAAc;AACvC,QAAI;AACH,MAAAiB,EAAa,EAAI,GACjB,MAAMY,EAAwC7B,CAAI,GAClDc,EAASH,EAAM,OAAO,CAAAgB,MAAKA,EAAE,SAAS3B,CAAI,CAAC;AAAA,IAC5C,UAAA;AACC,MAAAiB,EAAa,EAAK;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAC,OAAAN,GAAO,WAAAK,GAAW,OAAAnD,GAAO,YAAAwD,GAAY,UAAAG,GAAU,YAAAI,EAAA;AACxD;AChEA,SAAwBE,KAAuB;AAC9C,QAAM,EAAC,WAAAd,GAAW,OAAAL,GAAO,OAAA9C,GAAO,YAAAwD,GAAY,UAAAG,GAAU,YAAAI,EAAA,IAAcf,EAAA,GAC9D,CAACkB,GAAiBC,CAAkB,IAAIjB,EAAS,EAAK,GACtD,CAACkB,GAAgBC,CAAiB,IAAInB,EAAmD,IAAI,GAC7FoB,IAAUC,EAAA,GACV,EAAC,GAAA1D,EAAA,IAAKC,EAAA;AAEZ,EAAAuC,EAAU,MAAM;AACf,IAAIrD,KAASC,EAAM,aAAaD,CAAK,MACpCmB;AAAA,MACC,gBAAAC,EAACE,GAAA,EAAM,SAAQ,mCAAkC,UAAA,0EAAA,CAEjD;AAAA,IAAA,GAED,QAAQ,MAAM,qDAAqDtB,CAAK;AAAA,EAE1E,GAAG,CAACA,CAAK,CAAC;AAEV,iBAAewE,EAAiBvD,GAAyC;AACxE,UAAMuC,EAAWvC,CAAI,GACrBkD,EAAmB,EAAK;AAAA,EACzB;AAEA,iBAAeM,EAAexD,GAAyC;AACtE,IAAImD,MACH,MAAMT,EAASS,EAAe,MAAMnD,CAAI,GACxCoD,EAAkB,IAAI;AAAA,EAExB;AAEA,iBAAeK,EAAiBC,GAAkB;AACjD,IACC,MAAML,EAAQ;AAAA,MACb,OAAOzD,EAAE,2CAA2C,EAAC,cAAc,eAAc;AAAA,MACjF,SAASA,EAAE,sCAAsC;AAAA,QAChD,cAAc;AAAA,MAAA,CACd;AAAA,IAAA,CACD,KAED,MAAMkD,EAAWY,CAAQ;AAAA,EAE3B;AACA,SACC,gBAAApD,EAAC,OAAA,EAAI,WAAU,6BACd,UAAA;AAAA,IAAA,gBAAAA,EAACqD,GAAA,EAAiB,MAAMzB,GAAW,eAAY,qBAC9C,UAAA;AAAA,MAAA,gBAAA/B;AAAA,QAACyD;AAAA,QAAA;AAAA,UACA,OAAO;AAAA,YACN,IAAI;AAAA,YACJ,cAAc;AAAA,UAAA;AAAA,QACf;AAAA,MAAA;AAAA,MAGA,CAAC1B,KAAa,CAAC,CAACnD,KAChB,gBAAAoB,EAACE,GAAA,EAAM,SAAQ,mCAAkC,UAAA,2EAEjD;AAAA,MAGA,CAAC6B,KAAa,CAACnD,KAAS8C,EAAM,WAAW,KACzC,gBAAA1B,EAACE,GAAA,EAAM,SAAQ,kCAAiC,UAAA,wDAAA,CAEhD;AAAA,MAGAwB,EAAM,SAAS,KACf,gBAAA1B;AAAA,QAACuB;AAAA,QAAA;AAAA,UACA,OAAAG;AAAA,UACA,iBAAiBuB;AAAA,UACjB,mBAAmBK;AAAA,QAAA;AAAA,MAAA;AAAA,MAIrB,gBAAAtD,EAACqB,GAAA,EAAe,aAAa,CAAC,6CAA6C,GAC1E,UAAA,gBAAArB,EAAC,OAAA,EAAI,WAAU,UACd,UAAA,gBAAAA,EAACU,GAAA,EAAO,eAAY,sBAAqB,SAAS,MAAMqC,EAAmB,EAAI,GAC9E,UAAA,gBAAA/C,EAACE,GAAA,EAAM,SAAQ,mCAAkC,UAAA,cAAA,CAAW,EAAA,CAC7D,EAAA,CACD,EAAA,CACD;AAAA,IAAA,GACD;AAAA,IAEC4C,KACA,gBAAA9C;AAAA,MAAChB;AAAA,MAAA;AAAA,QACA,SAAS,MAAM+D,EAAmB,EAAK;AAAA,QACvC,UAAUK;AAAA,MAAA;AAAA,IAAA;AAAA,IAIXJ,KACA,gBAAAhD;AAAA,MAAChB;AAAA,MAAA;AAAA,QACA,SAAS,MAAMiE,EAAkB,IAAI;AAAA,QACrC,UAAUI;AAAA,QACV,OAAOL;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,GAEF;AAEF;"}
1
+ {"version":3,"file":"UserGroupAssignments-C7c3INUy.js","sources":["../ng-ui-scale/src/modules/userGroupAssignments/EditUserGroupAssignmentsRuleModal.tsx","../ng-ui-scale/src/modules/userGroupAssignments/UserGroupAssignmentsTable.tsx","../ng-ui-scale/src/modules/userGroupAssignments/useUserGroupAssignmentRules.ts","../ng-ui-scale/src/modules/userGroupAssignments/UserGroupAssignments.tsx"],"sourcesContent":["import axios from 'axios';\nimport {Controller, useForm} from 'react-hook-form';\n\nimport type {InitialAccountGroupAssignmentRule} from '@deviceinsight/ng-ui-api-client';\nimport {Button, Modal} from '@deviceinsight/ng-ui-basic-components';\nimport {messageBoxError} from '@deviceinsight/ng-ui-components';\n\nimport TextInput from 'components/inputs/textInput/TextInput';\nimport {UserGroupSelectInput} from 'components/inputs/UserGroupSelectInput';\nimport {Trans, useTranslation} from 'i18n';\n\ntype Props = {\n\tonSubmit: (rule: InitialAccountGroupAssignmentRule) => Promise<void>;\n\tonClose: () => void;\n\tvalue?: InitialAccountGroupAssignmentRule;\n};\n\ntype ErrorResponse = {\n\tfieldErrors?: Array<{field: string}>;\n};\n\nfunction parseValidationError(error: unknown): string[] | undefined {\n\tif (axios.isAxiosError(error) && error.response?.data) {\n\t\tconst {fieldErrors} = error.response.data as ErrorResponse;\n\t\tif (fieldErrors) {\n\t\t\treturn fieldErrors.map(({field}) => field);\n\t\t}\n\t}\n}\n\nexport function EditUserGroupAssignmentsRuleModal({onSubmit, onClose, value}: Props) {\n\tconst {\n\t\thandleSubmit,\n\t\tformState: {isSubmitting},\n\t\tcontrol,\n\t\tsetError,\n\t} = useForm<InitialAccountGroupAssignmentRule>({\n\t\tdefaultValues: value ?? {name: '', displayName: '', acceptedEmailHostname: ''},\n\t});\n\tconst {t} = useTranslation();\n\n\tconst required = {\n\t\trequired: t('userGroupAssignments.ruleModal.validation.required', {\n\t\t\tdefaultValue: 'Required field',\n\t\t}),\n\t};\n\n\tconst submit = handleSubmit(async rule => {\n\t\ttry {\n\t\t\tawait onSubmit(rule);\n\t\t} catch (error: unknown) {\n\t\t\tconst invalidFields = parseValidationError(error);\n\t\t\tif (invalidFields) {\n\t\t\t\tfor (const field of invalidFields) {\n\t\t\t\t\tsetError(field as keyof InitialAccountGroupAssignmentRule, {\n\t\t\t\t\t\tmessage: t('userGroupAssignments.ruleModal.validation.invalid', {\n\t\t\t\t\t\t\tdefaultValue: 'Invalid value',\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (axios.isAxiosError(error)) {\n\t\t\t\tmessageBoxError(\n\t\t\t\t\terror.response?.data?.message ??\n\t\t\t\t\t\tt('userGroupAssignments.ruleModal.validation.unknownError', {\n\t\t\t\t\t\t\tdefaultValue: 'An error occurred',\n\t\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn (\n\t\t<Modal\n\t\t\twidth={500}\n\t\t\theader={\n\t\t\t\tvalue ? (\n\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.editTitle\">Edit Rule</Trans>\n\t\t\t\t) : (\n\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.createTitle\">Create Rule</Trans>\n\t\t\t\t)\n\t\t\t}\n\t\t\tcontent={\n\t\t\t\t<div className=\"rule-modal\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.info\">\n\t\t\t\t\t\t\tRules regulate from which e-mail addresses (hostnames) logins will be accepted. Users\n\t\t\t\t\t\t\t{`'`} Rights will finally depend on the User Group they are assigned to.\n\t\t\t\t\t\t</Trans>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\trules={required}\n\t\t\t\t\t\trender={({field: {ref: _, ...inputProps}, fieldState: {error}}) => (\n\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\tlabel={<Trans i18nKey=\"userGroupAssignments.ruleModal.name\">Name</Trans>}\n\t\t\t\t\t\t\t\tdata-testid=\"nameField\"\n\t\t\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\t\t\terror={error?.message}\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\tname=\"displayName\"\n\t\t\t\t\t\trules={required}\n\t\t\t\t\t\trender={({field: {ref: _, ...inputProps}, fieldState: {error}}) => (\n\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\tlabel={<Trans i18nKey=\"userGroupAssignments.ruleModal.displayName\">Display Name</Trans>}\n\t\t\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\t\t\terror={error?.message}\n\t\t\t\t\t\t\t\tdata-testid=\"displayNameField\"\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\tname=\"acceptedEmailHostname\"\n\t\t\t\t\t\trules={required}\n\t\t\t\t\t\trender={({field: {ref: _, ...inputProps}, fieldState: {error}}) => (\n\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.acceptedEmailHostname\">\n\t\t\t\t\t\t\t\t\t\tE-Mail Hostname\n\t\t\t\t\t\t\t\t\t</Trans>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\t\t\tdata-testid=\"acceptedEmailHostnameField\"\n\t\t\t\t\t\t\t\terror={error?.message}\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<hr />\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\tname=\"accountGroupId\"\n\t\t\t\t\t\trules={required}\n\t\t\t\t\t\trender={({field: {ref: _, ...inputProps}, fieldState: {error}}) => (\n\t\t\t\t\t\t\t<UserGroupSelectInput\n\t\t\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.ruleModal.accountGroupId\">\n\t\t\t\t\t\t\t\t\t\tin Target User Group\n\t\t\t\t\t\t\t\t\t</Trans>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdata-testid=\"accountGroupIdField\"\n\t\t\t\t\t\t\t\terror={error?.message}\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\tfooter={\n\t\t\t\t<>\n\t\t\t\t\t<Button primary onClick={submit} disabled={isSubmitting}>\n\t\t\t\t\t\t<Trans i18nKey=\"general.actions.apply\">Apply</Trans>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button onClick={onClose} disabled={isSubmitting}>\n\t\t\t\t\t\t<Trans i18nKey=\"general.actions.cancel\">Cancel</Trans>\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t}\n\t\t/>\n\t);\n}\n","import type {InitialAccountGroupAssignmentRule} from '@deviceinsight/ng-ui-api-client';\nimport {Button, Icon} from '@deviceinsight/ng-ui-basic-components';\nimport {\n\ttype PaginationSettings,\n\ttype ReactableColumnDef,\n\tReactableWithClientSidePagination,\n} from '@deviceinsight/ng-ui-components';\n\nimport {HasAuthorities} from 'components/auth/HasAuthorities';\nimport {UserGroupName} from 'components/usergroups/UserGroupName';\n\ntype Props = {\n\trules: InitialAccountGroupAssignmentRule[];\n\tonEditRuleClick: (rule: InitialAccountGroupAssignmentRule) => void;\n\tonDeleteRuleClick: (ruleName: string) => void;\n};\n\nconst INITIAL_PAGINATION_SETTINGS: PaginationSettings = {\n\tpage: 0,\n\tsize: 10,\n\tsort: {direction: 'ASC', property: 'name'},\n};\n\nexport const createColumnDefs = (\n\tonEdit: (rule: InitialAccountGroupAssignmentRule) => void,\n\tonRemove: (ruleName: string) => void,\n): Array<ReactableColumnDef<InitialAccountGroupAssignmentRule>> => [\n\t{\n\t\tname: 'name',\n\t\tsortable: true,\n\t\tlabel: {id: 'userGroupAssignments.col.name', defaultValue: 'Name'},\n\t\trender: ({name}: InitialAccountGroupAssignmentRule) => name,\n\t},\n\t{\n\t\tname: 'displayName',\n\t\tsortable: true,\n\t\tlabel: {id: 'userGroupAssignments.col.displayName', defaultValue: 'Display Name'},\n\t\trender: ({displayName}: InitialAccountGroupAssignmentRule) => displayName,\n\t},\n\t{\n\t\tname: 'acceptedEmailHostname',\n\t\tsortable: true,\n\t\tlabel: {id: 'userGroupAssignments.col.acceptedEmailHostname', defaultValue: 'Accepted Email Hostname'},\n\t\trender: ({acceptedEmailHostname}: InitialAccountGroupAssignmentRule) => acceptedEmailHostname,\n\t},\n\t{\n\t\tname: 'accountGroup',\n\t\tsortable: false,\n\t\tlabel: {id: 'userGroupAssignments.col.accountGroup', defaultValue: 'Account Group'},\n\t\trender: ({accountGroupId}: InitialAccountGroupAssignmentRule) => <UserGroupName id={accountGroupId} />,\n\t},\n\t{\n\t\tname: 'actions',\n\t\tsortable: true,\n\t\tlabel: '',\n\t\twidth: '1%',\n\t\trender: (item: InitialAccountGroupAssignmentRule) => (\n\t\t\t<>\n\t\t\t\t<HasAuthorities authorities={['WRITE_INITIAL_ACCOUNT_GROUP_ASSIGNMENT_RULE']}>\n\t\t\t\t\t<Button naked onClick={() => onEdit(item)} data-testid=\"edit-rule-button\">\n\t\t\t\t\t\t<Icon edit />\n\t\t\t\t\t</Button>\n\t\t\t\t</HasAuthorities>\n\t\t\t\t<HasAuthorities authorities={['DELETE_INITIAL_ACCOUNT_GROUP_ASSIGNMENT_RULE']}>\n\t\t\t\t\t<Button naked onClick={() => onRemove(item.name)} data-testid=\"delete-rule-button\">\n\t\t\t\t\t\t<Icon del />\n\t\t\t\t\t</Button>\n\t\t\t\t</HasAuthorities>\n\t\t\t</>\n\t\t),\n\t},\n];\n\nexport function UserGroupAssignmentsTable({onEditRuleClick, onDeleteRuleClick, rules}: Props) {\n\treturn (\n\t\t<ReactableWithClientSidePagination\n\t\t\tcolumnDefs={createColumnDefs(onEditRuleClick, onDeleteRuleClick)}\n\t\t\tuniqueItemKey={item => item.name}\n\t\t\tpaginationSettings={INITIAL_PAGINATION_SETTINGS}\n\t\t\titems={rules}\n\t\t\tisLoading={false}\n\t\t\tdata-testid=\"user-group-assignments-table\"\n\t\t\ttableName={'userGroupAssignments'}\n\t\t/>\n\t);\n}\n","import {useEffect, useState} from 'react';\n\nimport {\n\tcreateInitialAccountGroupAssignmentRule,\n\tdeleteInitialAccountGroupAssignmentRule,\n\tgetInitialAccountGroupAssignmentRules,\n\ttype InitialAccountGroupAssignmentRule,\n\tupdateInitialAccountGroupAssignmentRule,\n} from '@deviceinsight/ng-ui-api-client';\n\ntype UseUserGroupAssignmentRules = {\n\trules: InitialAccountGroupAssignmentRule[];\n\tisLoading: boolean;\n\terror: unknown;\n\tcreateRule: (rule: InitialAccountGroupAssignmentRule) => Promise<void>;\n\teditRule: (ruleName: string, rule: InitialAccountGroupAssignmentRule) => Promise<void>;\n\tdeleteRule: (ruleName: string) => Promise<void>;\n};\n\nexport function useUserGroupAssignmentRules(): UseUserGroupAssignmentRules {\n\tconst [rules, setRules] = useState<InitialAccountGroupAssignmentRule[]>([]);\n\tconst [isLoading, setIsLoading] = useState<boolean>(false);\n\tconst [error, setError] = useState<unknown>(null);\n\n\tuseEffect(() => {\n\t\tsetIsLoading(true);\n\t\tlet canceled = false;\n\n\t\tgetInitialAccountGroupAssignmentRules()\n\t\t\t.then(rules => {\n\t\t\t\tif (!canceled) {\n\t\t\t\t\tsetRules(rules);\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tif (!canceled) {\n\t\t\t\t\tsetError(error);\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t}\n\t\t\t});\n\n\t\treturn () => {\n\t\t\tcanceled = true;\n\t\t};\n\t}, []);\n\n\tasync function createRule(rule: InitialAccountGroupAssignmentRule) {\n\t\ttry {\n\t\t\tsetIsLoading(true);\n\t\t\tconst createdRule = await createInitialAccountGroupAssignmentRule(rule);\n\t\t\tsetRules([...rules, createdRule]);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}\n\n\tasync function editRule(name: string, rule: InitialAccountGroupAssignmentRule) {\n\t\ttry {\n\t\t\tsetIsLoading(true);\n\t\t\tconst updatedRule = await updateInitialAccountGroupAssignmentRule(name, rule);\n\t\t\tsetRules(rules.map(r => (r.name === name ? updatedRule : r)));\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}\n\n\tasync function deleteRule(name: string) {\n\t\ttry {\n\t\t\tsetIsLoading(true);\n\t\t\tawait deleteInitialAccountGroupAssignmentRule(name);\n\t\t\tsetRules(rules.filter(r => r.name !== name));\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}\n\n\treturn {rules, isLoading, error, createRule, editRule, deleteRule};\n}\n","import axios from 'axios';\nimport {useEffect, useState} from 'react';\n\nimport type {InitialAccountGroupAssignmentRule} from '@deviceinsight/ng-ui-api-client';\nimport {Button, SpinnerContainer, useConfirm} from '@deviceinsight/ng-ui-basic-components';\nimport {ContentHeader, messageBoxError} from '@deviceinsight/ng-ui-components';\n\nimport {HasAuthorities} from 'components/auth/HasAuthorities';\nimport {Trans, useTranslation} from 'i18n';\nimport {EditUserGroupAssignmentsRuleModal} from './EditUserGroupAssignmentsRuleModal';\nimport {UserGroupAssignmentsTable} from './UserGroupAssignmentsTable';\nimport {useUserGroupAssignmentRules} from './useUserGroupAssignmentRules';\nimport './UserGroupAssignments.scss';\n\nexport default function UserGroupAssignments() {\n\tconst {isLoading, rules, error, createRule, editRule, deleteRule} = useUserGroupAssignmentRules();\n\tconst [createModalOpen, setCreateModalOpen] = useState(false);\n\tconst [editModalValue, setEditModalValue] = useState<InitialAccountGroupAssignmentRule | null>(null);\n\tconst confirm = useConfirm();\n\tconst {t} = useTranslation();\n\n\tuseEffect(() => {\n\t\tif (error && axios.isAxiosError(error)) {\n\t\t\tmessageBoxError(\n\t\t\t\t<Trans i18nKey=\"userGroupAssignments.fetchError\">\n\t\t\t\t\tAn error occurred while loading the initial user group assignment rules\n\t\t\t\t</Trans>,\n\t\t\t);\n\t\t\tconsole.error('Error loading initial user group assignment rules', error);\n\t\t}\n\t}, [error]);\n\n\tasync function handleCreateRule(rule: InitialAccountGroupAssignmentRule) {\n\t\tawait createRule(rule);\n\t\tsetCreateModalOpen(false);\n\t}\n\n\tasync function handleEditRule(rule: InitialAccountGroupAssignmentRule) {\n\t\tif (editModalValue) {\n\t\t\tawait editRule(editModalValue.name, rule);\n\t\t\tsetEditModalValue(null);\n\t\t}\n\t}\n\n\tasync function handleDeleteRule(ruleName: string) {\n\t\tif (\n\t\t\tawait confirm({\n\t\t\t\ttitle: t('userGroupAssignments.deleteConfirmTitle', {defaultValue: 'Delete Rule'}),\n\t\t\t\tmessage: t('userGroupAssignments.deleteConfirm', {\n\t\t\t\t\tdefaultValue: 'Do you really want to delete the rule?',\n\t\t\t\t}),\n\t\t\t})\n\t\t) {\n\t\t\tawait deleteRule(ruleName);\n\t\t}\n\t}\n\treturn (\n\t\t<div className=\"di user-group-assignments\">\n\t\t\t<SpinnerContainer show={isLoading} data-testid=\"spinner-container\">\n\t\t\t\t<ContentHeader\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'route.label.userGroupAssignments.name',\n\t\t\t\t\t\tdefaultValue: 'User Group Assignments',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t{!isLoading && !!error && (\n\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.fetchError\">\n\t\t\t\t\t\tAn error occurred while loading the initial user group assignment rules\n\t\t\t\t\t</Trans>\n\t\t\t\t)}\n\n\t\t\t\t{!isLoading && !error && rules.length === 0 && (\n\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.emptyList\">\n\t\t\t\t\t\tNo initial user group assignment rules available yet.\n\t\t\t\t\t</Trans>\n\t\t\t\t)}\n\n\t\t\t\t{rules.length > 0 && (\n\t\t\t\t\t<UserGroupAssignmentsTable\n\t\t\t\t\t\trules={rules}\n\t\t\t\t\t\tonEditRuleClick={setEditModalValue}\n\t\t\t\t\t\tonDeleteRuleClick={handleDeleteRule}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<HasAuthorities authorities={['WRITE_INITIAL_ACCOUNT_GROUP_ASSIGNMENT_RULE']}>\n\t\t\t\t\t<div className=\"footer\">\n\t\t\t\t\t\t<Button data-testid=\"create-rule-button\" onClick={() => setCreateModalOpen(true)}>\n\t\t\t\t\t\t\t<Trans i18nKey=\"userGroupAssignments.createRule\">Create Rule</Trans>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</HasAuthorities>\n\t\t\t</SpinnerContainer>\n\n\t\t\t{createModalOpen && (\n\t\t\t\t<EditUserGroupAssignmentsRuleModal\n\t\t\t\t\tonClose={() => setCreateModalOpen(false)}\n\t\t\t\t\tonSubmit={handleCreateRule}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{editModalValue && (\n\t\t\t\t<EditUserGroupAssignmentsRuleModal\n\t\t\t\t\tonClose={() => setEditModalValue(null)}\n\t\t\t\t\tonSubmit={handleEditRule}\n\t\t\t\t\tvalue={editModalValue}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"names":["parseValidationError","error","axios","fieldErrors","field","EditUserGroupAssignmentsRuleModal","onSubmit","onClose","value","handleSubmit","isSubmitting","control","setError","useForm","t","useTranslation","required","submit","rule","invalidFields","messageBoxError","jsx","Modal","Trans","jsxs","Controller","_","inputProps","TextInput","UserGroupSelectInput","Fragment","Button","INITIAL_PAGINATION_SETTINGS","createColumnDefs","onEdit","onRemove","name","displayName","acceptedEmailHostname","accountGroupId","UserGroupName","item","HasAuthorities","Icon","UserGroupAssignmentsTable","onEditRuleClick","onDeleteRuleClick","rules","ReactableWithClientSidePagination","useUserGroupAssignmentRules","setRules","useState","isLoading","setIsLoading","useEffect","canceled","getInitialAccountGroupAssignmentRules","createRule","createdRule","createInitialAccountGroupAssignmentRule","editRule","updatedRule","updateInitialAccountGroupAssignmentRule","r","deleteRule","deleteInitialAccountGroupAssignmentRule","UserGroupAssignments","createModalOpen","setCreateModalOpen","editModalValue","setEditModalValue","confirm","useConfirm","handleCreateRule","handleEditRule","handleDeleteRule","ruleName","SpinnerContainer","ContentHeader"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as s, jsxs as u, Fragment as v } from "react/jsx-runtime";
2
2
  import * as C from "react";
3
3
  import { PureComponent as m, useContext as w } from "react";
4
- import { c4 as P, c5 as S, a as c, c6 as g, y as T, T as r, c7 as l, c8 as U, c9 as y } from "./setTitle-OKcazNTt.js";
5
- import { isEqual as x } from "lodash";
4
+ import { c5 as P, c6 as S, a as c, c7 as g, z as T, T as r, c8 as l, c9 as U, ca as x } from "./setTitle-Cyf8DxtL.js";
5
+ import { isEqual as y } from "lodash";
6
6
  import { Prompt as D } from "react-router-dom";
7
7
  import { Button as d, ButtonRow as b, SpinnerContainer as I } from "@deviceinsight/ng-ui-basic-components";
8
8
  import { GradientColorPicker as L, ContentHeader as O } from "@deviceinsight/ng-ui-components";
@@ -190,7 +190,7 @@ class A extends m {
190
190
  e();
191
191
  }, this.hasUnsavedChanges = () => {
192
192
  const { config: e, savedConfig: t } = this.state;
193
- return !x(e, t);
193
+ return !y(e, t);
194
194
  };
195
195
  }
196
196
  componentDidMount() {
@@ -257,7 +257,7 @@ const M = ({ usergroup: { id: o } }) => {
257
257
  }
258
258
  }, a = async (i, h) => {
259
259
  try {
260
- return await y(i, h), t(i) ? (r.setUserTheme(h), r.setTheme(r.getUserTheme()), h) : await l(i);
260
+ return await x(i, h), t(i) ? (r.setUserTheme(h), r.setTheme(r.getUserTheme()), h) : await l(i);
261
261
  } catch (f) {
262
262
  return console.error(f), await l(i);
263
263
  }
@@ -276,4 +276,4 @@ const M = ({ usergroup: { id: o } }) => {
276
276
  export {
277
277
  M as default
278
278
  };
279
- //# sourceMappingURL=UserGroupTheme-C16SwuPr.js.map
279
+ //# sourceMappingURL=UserGroupTheme-CFaudF3q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserGroupTheme-C16SwuPr.js","sources":["../ng-ui-scale/src/modules/usergroups/components/theme/themeeditor/rgbToHex.ts","../ng-ui-scale/src/modules/usergroups/components/theme/themeeditor/ColorPickerInput.tsx","../ng-ui-scale/src/modules/usergroups/components/theme/themeeditor/ThemeForm.tsx","../ng-ui-scale/src/modules/usergroups/components/theme/themeeditor/ThemeEditor.tsx","../ng-ui-scale/src/modules/usergroups/components/theme/UserGroupTheme.tsx"],"sourcesContent":["const getHex = (color: string) => {\n\treturn ('0' + parseInt(color).toString(16)).slice(-2);\n};\n\nexport const rgbToHex = (rgbOrRgbaColor: string): string => {\n\tif (rgbOrRgbaColor.includes('#')) return rgbOrRgbaColor;\n\tconst rgb = rgbOrRgbaColor.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n\treturn rgb && rgb.length === 4 ? `#${getHex(rgb[1])}${getHex(rgb[2])}${getHex(rgb[3])}` : '';\n};\n","import * as React from 'react';\n\nimport {Button} from '@deviceinsight/ng-ui-basic-components';\nimport {GradientColorPicker} from '@deviceinsight/ng-ui-components';\n\nimport {Trans, type TranslationDescriptor} from 'i18n';\nimport {ContentOrDefaultImage} from './ContentOrDefaultImage';\nimport {rgbToHex} from './rgbToHex';\nimport {UserGroupThemeField} from './UserGroupThemeField';\n\ntype Props = {\n\ttitle: TranslationDescriptor;\n\tdescription: TranslationDescriptor;\n\tonChange: (arg0?: string | null | undefined) => void;\n\tvalue: string | null | undefined;\n};\n\ntype State = {\n\tisOpen: boolean;\n};\n\nconst DEFAULT_INITIAL_COLOR = '#0077bb';\n\nexport default class ColorPickerInput extends React.PureComponent<Props, State> {\n\tstate: State = {\n\t\tisOpen: false,\n\t};\n\n\ttoggleIsOpen: () => void = () => {\n\t\tconst {value} = this.props;\n\t\tconst {isOpen} = this.state;\n\n\t\tif (!value) {\n\t\t\tthis.handleChange(DEFAULT_INITIAL_COLOR);\n\t\t}\n\n\t\tthis.setState({\n\t\t\tisOpen: !isOpen,\n\t\t});\n\t};\n\n\thandleChange: (color: string) => void = (color: string) => {\n\t\tconst {onChange} = this.props;\n\t\tconst hexColor = rgbToHex(color);\n\t\tonChange(hexColor);\n\t};\n\n\thandleUnset: (event: React.SyntheticEvent<EventTarget>) => void = (event: React.SyntheticEvent<any>) => {\n\t\tevent.stopPropagation();\n\t\tconst {onChange} = this.props;\n\t\tonChange();\n\t\tthis.setState({\n\t\t\tisOpen: false,\n\t\t});\n\t};\n\n\trender() {\n\t\tconst {isOpen} = this.state;\n\t\tconst {value, title, description} = this.props;\n\t\treturn (\n\t\t\t<div className=\"di with-bottom-margin\">\n\t\t\t\t<UserGroupThemeField title={title} description={description}>\n\t\t\t\t\t<ContentOrDefaultImage content={value} onClick={this.toggleIsOpen}>\n\t\t\t\t\t\t<GradientColorPicker\n\t\t\t\t\t\t\tdirection=\"right\"\n\t\t\t\t\t\t\tinline={false}\n\t\t\t\t\t\t\tisOpen={isOpen}\n\t\t\t\t\t\t\tallowTextInput={true}\n\t\t\t\t\t\t\tvalue={value || ''}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tfloat: 'left',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonPick={this.handleChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{value && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tonClick={this.handleUnset}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tmarginLeft: 10,\n\t\t\t\t\t\t\t\t\tmarginTop: 3,\n\t\t\t\t\t\t\t\t\tfloat: 'left',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Trans i18nKey=\"usergroups.detail.theme.resetColor\">Reset Color</Trans>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ContentOrDefaultImage>\n\t\t\t\t</UserGroupThemeField>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import {PureComponent} from 'react';\n\nimport {Button, ButtonRow} from '@deviceinsight/ng-ui-basic-components';\n\nimport type {ThemeConfig} from 'customization/types';\nimport {Trans} from 'i18n';\nimport ColorPickerInput from './ColorPickerInput';\nimport FileUploadInput from './FileUploadInput';\n\ntype Props = {\n\tconfig: ThemeConfig;\n\tonChangeConfig: (arg0: ThemeConfig) => void;\n\tonSubmit: () => void;\n\tonStartPreview: () => void;\n\tonStopPreview: () => void;\n\thasUnsavedChanges: boolean;\n};\n\ntype State = {\n\tisPreview: boolean;\n};\n\nexport default class ThemeForm extends PureComponent<Props, State> {\n\tstate: State = {\n\t\tisPreview: false,\n\t};\n\n\tcomponentDidUpdate(prevProps: Props) {\n\t\tconst {isPreview} = this.state;\n\n\t\tif (isPreview && prevProps.config !== this.props.config) {\n\t\t\tthis.startPreview();\n\t\t}\n\n\t\tif (!this.props.hasUnsavedChanges) this.stopPreview();\n\t}\n\n\tchangeConfig: (field: keyof ThemeConfig) => (value: string | null | undefined) => void =\n\t\t(field: keyof ThemeConfig) => (value: string | null | undefined) => {\n\t\t\tconst {config, onChangeConfig} = this.props;\n\t\t\tconst newConfig: ThemeConfig = {...config};\n\n\t\t\tif (value) {\n\t\t\t\tnewConfig[field] = value;\n\t\t\t} else {\n\t\t\t\t// we need to delete the field so the merge\n\t\t\t\t// with defaults in ThemeAPI works\n\t\t\t\tdelete newConfig[field];\n\t\t\t}\n\n\t\t\tonChangeConfig(newConfig);\n\t\t};\n\n\thandleSubmit: () => void = () => {\n\t\tconst {onSubmit} = this.props;\n\t\tonSubmit();\n\t};\n\n\tstopPreview: () => void = () => {\n\t\tconst {onStopPreview} = this.props;\n\t\tthis.setState({\n\t\t\tisPreview: false,\n\t\t});\n\t\tonStopPreview();\n\t};\n\n\tstartPreview: () => void = () => {\n\t\tconst {onStartPreview} = this.props;\n\t\tthis.setState({\n\t\t\tisPreview: true,\n\t\t});\n\t\tonStartPreview();\n\t};\n\n\ttogglePreview: () => void = () => {\n\t\tconst {isPreview} = this.state;\n\n\t\tif (isPreview) {\n\t\t\tthis.stopPreview();\n\t\t} else {\n\t\t\tthis.startPreview();\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {isPreview} = this.state;\n\t\tconst {config, hasUnsavedChanges} = this.props;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<FileUploadInput\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.logo',\n\t\t\t\t\t\tdefaultValue: 'Logo',\n\t\t\t\t\t}}\n\t\t\t\t\tdescription={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.logoDescription',\n\t\t\t\t\t\tdefaultValue: 'Change the header logo (max height: 40px)',\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={config.logo}\n\t\t\t\t\tonChange={this.changeConfig('logo')}\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tmaxHeight: 40,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tsrc={config.logo}\n\t\t\t\t\t\talt=\"Logo\"\n\t\t\t\t\t/>\n\t\t\t\t</FileUploadInput>\n\t\t\t\t<FileUploadInput\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.favicon',\n\t\t\t\t\t\tdefaultValue: 'Favicon',\n\t\t\t\t\t}}\n\t\t\t\t\tdescription={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.faviconDescription',\n\t\t\t\t\t\tdefaultValue: 'Change the favicon',\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={config.favicon}\n\t\t\t\t\tonChange={this.changeConfig('favicon')}\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tmaxHeight: 16,\n\t\t\t\t\t\t\tmaxWidth: 16,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tsrc={config.favicon}\n\t\t\t\t\t\talt=\"Favicon\"\n\t\t\t\t\t/>\n\t\t\t\t</FileUploadInput>\n\t\t\t\t<ColorPickerInput\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.primaryColor',\n\t\t\t\t\t\tdefaultValue: 'Primary Color',\n\t\t\t\t\t}}\n\t\t\t\t\tdescription={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.primaryColorDescription',\n\t\t\t\t\t\tdefaultValue: 'Change the main color (will be used with white text)',\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={config.primaryColor}\n\t\t\t\t\tonChange={this.changeConfig('primaryColor')}\n\t\t\t\t/>\n\t\t\t\t<ButtonRow dividing>\n\t\t\t\t\t<Button primary disabled={!hasUnsavedChanges} onClick={this.handleSubmit}>\n\t\t\t\t\t\t<Trans i18nKey={'usergroups.detail.theme.save'}>Save</Trans>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button disabled={!hasUnsavedChanges} onClick={this.togglePreview}>\n\t\t\t\t\t\t{isPreview ? (\n\t\t\t\t\t\t\t<Trans i18nKey={'usergroups.detail.theme.preview'}>Stop Preview</Trans>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey={'usergroups.detail.theme.preview'}>Preview</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t</ButtonRow>\n\t\t\t</>\n\t\t);\n\t}\n}\n","import {isEqual} from 'lodash';\nimport {PureComponent} from 'react';\nimport {Prompt} from 'react-router-dom';\n\nimport {SpinnerContainer} from '@deviceinsight/ng-ui-basic-components';\nimport {ContentHeader} from '@deviceinsight/ng-ui-components';\n\nimport type {ThemeConfig} from 'customization/types';\nimport ThemeForm from './ThemeForm';\n\ntype Props = {\n\tonSave: (arg0: ThemeConfig) => Promise<ThemeConfig>;\n\tonFetch: () => Promise<ThemeConfig>;\n\tonDelete: () => Promise<ThemeConfig>;\n\tsetTheme: (arg0: ThemeConfig) => void;\n\tunsetTheme: () => void;\n};\n\ntype State = {\n\tisLoading: boolean;\n\tconfig: ThemeConfig;\n\tsavedConfig: ThemeConfig;\n};\n\nexport default class ThemeEditor extends PureComponent<Props, State> {\n\tstate: State = {\n\t\tisLoading: true,\n\t\tconfig: {},\n\t\tsavedConfig: {},\n\t};\n\n\tcomponentDidMount() {\n\t\tthis.fetchTheme();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (this.hasUnsavedChanges()) this.handleStopPreview();\n\t}\n\n\tfetchTheme() {\n\t\tconst {onFetch} = this.props;\n\t\tthis.handleRequestStatus(onFetch());\n\t}\n\n\tsaveTheme: () => void = () => {\n\t\tconst {onSave, onDelete} = this.props;\n\t\tconst {config} = this.state;\n\n\t\tif (Object.values(config).some(Boolean)) {\n\t\t\tthis.handleRequestStatus(onSave(config));\n\t\t} else {\n\t\t\tthis.handleRequestStatus(onDelete());\n\t\t}\n\t};\n\n\thandleRequestStatus(promise: Promise<ThemeConfig>): Promise<void> {\n\t\tthis.setState({\n\t\t\tisLoading: true,\n\t\t});\n\t\treturn promise\n\t\t\t.then(config => {\n\t\t\t\tthis.setState({\n\t\t\t\t\tconfig,\n\t\t\t\t\tsavedConfig: config,\n\t\t\t\t\tisLoading: false,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error(error);\n\t\t\t\tthis.setState({\n\t\t\t\t\tisLoading: false,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\thandleChangeConfig: (config: ThemeConfig) => void = (config: ThemeConfig) => {\n\t\tthis.setState({\n\t\t\tconfig,\n\t\t});\n\t};\n\thandleStartPreview: () => void = () => {\n\t\tconst {setTheme} = this.props;\n\t\tconst {config} = this.state;\n\t\tsetTheme(config);\n\t};\n\thandleStopPreview: () => void = () => {\n\t\tconst {unsetTheme} = this.props;\n\t\tunsetTheme();\n\t};\n\thasUnsavedChanges: () => boolean = () => {\n\t\tconst {config, savedConfig} = this.state;\n\t\treturn !isEqual(config, savedConfig);\n\t};\n\n\trender() {\n\t\tconst {isLoading, config} = this.state;\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<ContentHeader\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.title',\n\t\t\t\t\t\tdefaultValue: 'Custom Design Options',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<SpinnerContainer show={isLoading}>\n\t\t\t\t\t<ThemeForm\n\t\t\t\t\t\tconfig={config}\n\t\t\t\t\t\tonChangeConfig={this.handleChangeConfig}\n\t\t\t\t\t\tonSubmit={this.saveTheme}\n\t\t\t\t\t\tonStartPreview={this.handleStartPreview}\n\t\t\t\t\t\tonStopPreview={this.handleStopPreview}\n\t\t\t\t\t\thasUnsavedChanges={this.hasUnsavedChanges()}\n\t\t\t\t\t/>\n\t\t\t\t</SpinnerContainer>\n\t\t\t\t<Prompt when={this.hasUnsavedChanges()} message={''} />\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import {useContext} from 'react';\n\nimport type {UserGroup} from '@deviceinsight/ng-ui-api-client';\n\nimport {UserContext} from 'contexts/user/UserContext';\nimport ThemeApi, {deleteAccountGroupTheme, readAccountGroupTheme, writeAccountGroupTheme} from 'customization/ThemeApi';\nimport type {ThemeConfig} from 'customization/types';\nimport ThemeEditor from './themeeditor/ThemeEditor';\n\ntype Props = {\n\tusergroup: UserGroup;\n};\n\nconst UserGroupTheme = ({usergroup: {id}}: Props) => {\n\tconst {user} = useContext(UserContext);\n\n\tconst isCurrentUserMemberOfUserGroup = (userGroupId: number) => {\n\t\tif (user) {\n\t\t\treturn user.accountGroupIds.includes(userGroupId);\n\t\t}\n\t};\n\n\tconst handleDelete = async (id: number): Promise<ThemeConfig> => {\n\t\ttry {\n\t\t\tawait deleteAccountGroupTheme(id);\n\n\t\t\tif (isCurrentUserMemberOfUserGroup(id)) {\n\t\t\t\tThemeApi.setUserTheme(ThemeApi.getDefaultTheme());\n\t\t\t}\n\n\t\t\treturn {};\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn await readAccountGroupTheme(id);\n\t\t}\n\t};\n\n\tconst handleSave = async (id: number, config: ThemeConfig): Promise<ThemeConfig> => {\n\t\ttry {\n\t\t\tawait writeAccountGroupTheme(id, config);\n\n\t\t\tif (isCurrentUserMemberOfUserGroup(id)) {\n\t\t\t\tThemeApi.setUserTheme(config);\n\t\t\t\tThemeApi.setTheme(ThemeApi.getUserTheme());\n\t\t\t\treturn config;\n\t\t\t}\n\n\t\t\treturn await readAccountGroupTheme(id);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn await readAccountGroupTheme(id);\n\t\t}\n\t};\n\n\treturn (\n\t\t<ThemeEditor\n\t\t\tonSave={(config: ThemeConfig) => handleSave(id, config)}\n\t\t\tonFetch={() => readAccountGroupTheme(id)}\n\t\t\tonDelete={() => handleDelete(id)}\n\t\t\tsetTheme={(config: ThemeConfig) => ThemeApi.setTheme(config)}\n\t\t\tunsetTheme={() => ThemeApi.setTheme(ThemeApi.getUserTheme())}\n\t\t/>\n\t);\n};\n\nexport default UserGroupTheme;\n"],"names":["getHex","color","rgbToHex","rgbOrRgbaColor","rgb","DEFAULT_INITIAL_COLOR","ColorPickerInput","React","value","isOpen","onChange","hexColor","event","title","description","jsx","UserGroupThemeField","jsxs","ContentOrDefaultImage","GradientColorPicker","Button","Trans","ThemeForm","PureComponent","field","config","onChangeConfig","newConfig","onSubmit","onStopPreview","onStartPreview","isPreview","prevProps","hasUnsavedChanges","Fragment","FileUploadInput","ButtonRow","ThemeEditor","onSave","onDelete","setTheme","unsetTheme","savedConfig","isEqual","onFetch","promise","error","isLoading","ContentHeader","SpinnerContainer","Prompt","UserGroupTheme","id","user","useContext","UserContext","isCurrentUserMemberOfUserGroup","userGroupId","handleDelete","deleteAccountGroupTheme","ThemeApi","readAccountGroupTheme","handleSave","writeAccountGroupTheme"],"mappings":"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"}
1
+ {"version":3,"file":"UserGroupTheme-CFaudF3q.js","sources":["../ng-ui-scale/src/modules/usergroups/components/theme/themeeditor/rgbToHex.ts","../ng-ui-scale/src/modules/usergroups/components/theme/themeeditor/ColorPickerInput.tsx","../ng-ui-scale/src/modules/usergroups/components/theme/themeeditor/ThemeForm.tsx","../ng-ui-scale/src/modules/usergroups/components/theme/themeeditor/ThemeEditor.tsx","../ng-ui-scale/src/modules/usergroups/components/theme/UserGroupTheme.tsx"],"sourcesContent":["const getHex = (color: string) => {\n\treturn ('0' + parseInt(color).toString(16)).slice(-2);\n};\n\nexport const rgbToHex = (rgbOrRgbaColor: string): string => {\n\tif (rgbOrRgbaColor.includes('#')) return rgbOrRgbaColor;\n\tconst rgb = rgbOrRgbaColor.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n\treturn rgb && rgb.length === 4 ? `#${getHex(rgb[1])}${getHex(rgb[2])}${getHex(rgb[3])}` : '';\n};\n","import * as React from 'react';\n\nimport {Button} from '@deviceinsight/ng-ui-basic-components';\nimport {GradientColorPicker} from '@deviceinsight/ng-ui-components';\n\nimport {Trans, type TranslationDescriptor} from 'i18n';\nimport {ContentOrDefaultImage} from './ContentOrDefaultImage';\nimport {rgbToHex} from './rgbToHex';\nimport {UserGroupThemeField} from './UserGroupThemeField';\n\ntype Props = {\n\ttitle: TranslationDescriptor;\n\tdescription: TranslationDescriptor;\n\tonChange: (arg0?: string | null | undefined) => void;\n\tvalue: string | null | undefined;\n};\n\ntype State = {\n\tisOpen: boolean;\n};\n\nconst DEFAULT_INITIAL_COLOR = '#0077bb';\n\nexport default class ColorPickerInput extends React.PureComponent<Props, State> {\n\tstate: State = {\n\t\tisOpen: false,\n\t};\n\n\ttoggleIsOpen: () => void = () => {\n\t\tconst {value} = this.props;\n\t\tconst {isOpen} = this.state;\n\n\t\tif (!value) {\n\t\t\tthis.handleChange(DEFAULT_INITIAL_COLOR);\n\t\t}\n\n\t\tthis.setState({\n\t\t\tisOpen: !isOpen,\n\t\t});\n\t};\n\n\thandleChange: (color: string) => void = (color: string) => {\n\t\tconst {onChange} = this.props;\n\t\tconst hexColor = rgbToHex(color);\n\t\tonChange(hexColor);\n\t};\n\n\thandleUnset: (event: React.SyntheticEvent<EventTarget>) => void = (event: React.SyntheticEvent<any>) => {\n\t\tevent.stopPropagation();\n\t\tconst {onChange} = this.props;\n\t\tonChange();\n\t\tthis.setState({\n\t\t\tisOpen: false,\n\t\t});\n\t};\n\n\trender() {\n\t\tconst {isOpen} = this.state;\n\t\tconst {value, title, description} = this.props;\n\t\treturn (\n\t\t\t<div className=\"di with-bottom-margin\">\n\t\t\t\t<UserGroupThemeField title={title} description={description}>\n\t\t\t\t\t<ContentOrDefaultImage content={value} onClick={this.toggleIsOpen}>\n\t\t\t\t\t\t<GradientColorPicker\n\t\t\t\t\t\t\tdirection=\"right\"\n\t\t\t\t\t\t\tinline={false}\n\t\t\t\t\t\t\tisOpen={isOpen}\n\t\t\t\t\t\t\tallowTextInput={true}\n\t\t\t\t\t\t\tvalue={value || ''}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tfloat: 'left',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonPick={this.handleChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{value && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tonClick={this.handleUnset}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tmarginLeft: 10,\n\t\t\t\t\t\t\t\t\tmarginTop: 3,\n\t\t\t\t\t\t\t\t\tfloat: 'left',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Trans i18nKey=\"usergroups.detail.theme.resetColor\">Reset Color</Trans>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ContentOrDefaultImage>\n\t\t\t\t</UserGroupThemeField>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import {PureComponent} from 'react';\n\nimport {Button, ButtonRow} from '@deviceinsight/ng-ui-basic-components';\n\nimport type {ThemeConfig} from 'customization/types';\nimport {Trans} from 'i18n';\nimport ColorPickerInput from './ColorPickerInput';\nimport FileUploadInput from './FileUploadInput';\n\ntype Props = {\n\tconfig: ThemeConfig;\n\tonChangeConfig: (arg0: ThemeConfig) => void;\n\tonSubmit: () => void;\n\tonStartPreview: () => void;\n\tonStopPreview: () => void;\n\thasUnsavedChanges: boolean;\n};\n\ntype State = {\n\tisPreview: boolean;\n};\n\nexport default class ThemeForm extends PureComponent<Props, State> {\n\tstate: State = {\n\t\tisPreview: false,\n\t};\n\n\tcomponentDidUpdate(prevProps: Props) {\n\t\tconst {isPreview} = this.state;\n\n\t\tif (isPreview && prevProps.config !== this.props.config) {\n\t\t\tthis.startPreview();\n\t\t}\n\n\t\tif (!this.props.hasUnsavedChanges) this.stopPreview();\n\t}\n\n\tchangeConfig: (field: keyof ThemeConfig) => (value: string | null | undefined) => void =\n\t\t(field: keyof ThemeConfig) => (value: string | null | undefined) => {\n\t\t\tconst {config, onChangeConfig} = this.props;\n\t\t\tconst newConfig: ThemeConfig = {...config};\n\n\t\t\tif (value) {\n\t\t\t\tnewConfig[field] = value;\n\t\t\t} else {\n\t\t\t\t// we need to delete the field so the merge\n\t\t\t\t// with defaults in ThemeAPI works\n\t\t\t\tdelete newConfig[field];\n\t\t\t}\n\n\t\t\tonChangeConfig(newConfig);\n\t\t};\n\n\thandleSubmit: () => void = () => {\n\t\tconst {onSubmit} = this.props;\n\t\tonSubmit();\n\t};\n\n\tstopPreview: () => void = () => {\n\t\tconst {onStopPreview} = this.props;\n\t\tthis.setState({\n\t\t\tisPreview: false,\n\t\t});\n\t\tonStopPreview();\n\t};\n\n\tstartPreview: () => void = () => {\n\t\tconst {onStartPreview} = this.props;\n\t\tthis.setState({\n\t\t\tisPreview: true,\n\t\t});\n\t\tonStartPreview();\n\t};\n\n\ttogglePreview: () => void = () => {\n\t\tconst {isPreview} = this.state;\n\n\t\tif (isPreview) {\n\t\t\tthis.stopPreview();\n\t\t} else {\n\t\t\tthis.startPreview();\n\t\t}\n\t};\n\n\trender() {\n\t\tconst {isPreview} = this.state;\n\t\tconst {config, hasUnsavedChanges} = this.props;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<FileUploadInput\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.logo',\n\t\t\t\t\t\tdefaultValue: 'Logo',\n\t\t\t\t\t}}\n\t\t\t\t\tdescription={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.logoDescription',\n\t\t\t\t\t\tdefaultValue: 'Change the header logo (max height: 40px)',\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={config.logo}\n\t\t\t\t\tonChange={this.changeConfig('logo')}\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tmaxHeight: 40,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tsrc={config.logo}\n\t\t\t\t\t\talt=\"Logo\"\n\t\t\t\t\t/>\n\t\t\t\t</FileUploadInput>\n\t\t\t\t<FileUploadInput\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.favicon',\n\t\t\t\t\t\tdefaultValue: 'Favicon',\n\t\t\t\t\t}}\n\t\t\t\t\tdescription={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.faviconDescription',\n\t\t\t\t\t\tdefaultValue: 'Change the favicon',\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={config.favicon}\n\t\t\t\t\tonChange={this.changeConfig('favicon')}\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tmaxHeight: 16,\n\t\t\t\t\t\t\tmaxWidth: 16,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tsrc={config.favicon}\n\t\t\t\t\t\talt=\"Favicon\"\n\t\t\t\t\t/>\n\t\t\t\t</FileUploadInput>\n\t\t\t\t<ColorPickerInput\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.primaryColor',\n\t\t\t\t\t\tdefaultValue: 'Primary Color',\n\t\t\t\t\t}}\n\t\t\t\t\tdescription={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.primaryColorDescription',\n\t\t\t\t\t\tdefaultValue: 'Change the main color (will be used with white text)',\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={config.primaryColor}\n\t\t\t\t\tonChange={this.changeConfig('primaryColor')}\n\t\t\t\t/>\n\t\t\t\t<ButtonRow dividing>\n\t\t\t\t\t<Button primary disabled={!hasUnsavedChanges} onClick={this.handleSubmit}>\n\t\t\t\t\t\t<Trans i18nKey={'usergroups.detail.theme.save'}>Save</Trans>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button disabled={!hasUnsavedChanges} onClick={this.togglePreview}>\n\t\t\t\t\t\t{isPreview ? (\n\t\t\t\t\t\t\t<Trans i18nKey={'usergroups.detail.theme.preview'}>Stop Preview</Trans>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Trans i18nKey={'usergroups.detail.theme.preview'}>Preview</Trans>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t</ButtonRow>\n\t\t\t</>\n\t\t);\n\t}\n}\n","import {isEqual} from 'lodash';\nimport {PureComponent} from 'react';\nimport {Prompt} from 'react-router-dom';\n\nimport {SpinnerContainer} from '@deviceinsight/ng-ui-basic-components';\nimport {ContentHeader} from '@deviceinsight/ng-ui-components';\n\nimport type {ThemeConfig} from 'customization/types';\nimport ThemeForm from './ThemeForm';\n\ntype Props = {\n\tonSave: (arg0: ThemeConfig) => Promise<ThemeConfig>;\n\tonFetch: () => Promise<ThemeConfig>;\n\tonDelete: () => Promise<ThemeConfig>;\n\tsetTheme: (arg0: ThemeConfig) => void;\n\tunsetTheme: () => void;\n};\n\ntype State = {\n\tisLoading: boolean;\n\tconfig: ThemeConfig;\n\tsavedConfig: ThemeConfig;\n};\n\nexport default class ThemeEditor extends PureComponent<Props, State> {\n\tstate: State = {\n\t\tisLoading: true,\n\t\tconfig: {},\n\t\tsavedConfig: {},\n\t};\n\n\tcomponentDidMount() {\n\t\tthis.fetchTheme();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (this.hasUnsavedChanges()) this.handleStopPreview();\n\t}\n\n\tfetchTheme() {\n\t\tconst {onFetch} = this.props;\n\t\tthis.handleRequestStatus(onFetch());\n\t}\n\n\tsaveTheme: () => void = () => {\n\t\tconst {onSave, onDelete} = this.props;\n\t\tconst {config} = this.state;\n\n\t\tif (Object.values(config).some(Boolean)) {\n\t\t\tthis.handleRequestStatus(onSave(config));\n\t\t} else {\n\t\t\tthis.handleRequestStatus(onDelete());\n\t\t}\n\t};\n\n\thandleRequestStatus(promise: Promise<ThemeConfig>): Promise<void> {\n\t\tthis.setState({\n\t\t\tisLoading: true,\n\t\t});\n\t\treturn promise\n\t\t\t.then(config => {\n\t\t\t\tthis.setState({\n\t\t\t\t\tconfig,\n\t\t\t\t\tsavedConfig: config,\n\t\t\t\t\tisLoading: false,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error(error);\n\t\t\t\tthis.setState({\n\t\t\t\t\tisLoading: false,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\thandleChangeConfig: (config: ThemeConfig) => void = (config: ThemeConfig) => {\n\t\tthis.setState({\n\t\t\tconfig,\n\t\t});\n\t};\n\thandleStartPreview: () => void = () => {\n\t\tconst {setTheme} = this.props;\n\t\tconst {config} = this.state;\n\t\tsetTheme(config);\n\t};\n\thandleStopPreview: () => void = () => {\n\t\tconst {unsetTheme} = this.props;\n\t\tunsetTheme();\n\t};\n\thasUnsavedChanges: () => boolean = () => {\n\t\tconst {config, savedConfig} = this.state;\n\t\treturn !isEqual(config, savedConfig);\n\t};\n\n\trender() {\n\t\tconst {isLoading, config} = this.state;\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<ContentHeader\n\t\t\t\t\ttitle={{\n\t\t\t\t\t\tid: 'usergroups.detail.theme.title',\n\t\t\t\t\t\tdefaultValue: 'Custom Design Options',\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<SpinnerContainer show={isLoading}>\n\t\t\t\t\t<ThemeForm\n\t\t\t\t\t\tconfig={config}\n\t\t\t\t\t\tonChangeConfig={this.handleChangeConfig}\n\t\t\t\t\t\tonSubmit={this.saveTheme}\n\t\t\t\t\t\tonStartPreview={this.handleStartPreview}\n\t\t\t\t\t\tonStopPreview={this.handleStopPreview}\n\t\t\t\t\t\thasUnsavedChanges={this.hasUnsavedChanges()}\n\t\t\t\t\t/>\n\t\t\t\t</SpinnerContainer>\n\t\t\t\t<Prompt when={this.hasUnsavedChanges()} message={''} />\n\t\t\t</div>\n\t\t);\n\t}\n}\n","import {useContext} from 'react';\n\nimport type {UserGroup} from '@deviceinsight/ng-ui-api-client';\n\nimport {UserContext} from 'contexts/user/UserContext';\nimport ThemeApi, {deleteAccountGroupTheme, readAccountGroupTheme, writeAccountGroupTheme} from 'customization/ThemeApi';\nimport type {ThemeConfig} from 'customization/types';\nimport ThemeEditor from './themeeditor/ThemeEditor';\n\ntype Props = {\n\tusergroup: UserGroup;\n};\n\nconst UserGroupTheme = ({usergroup: {id}}: Props) => {\n\tconst {user} = useContext(UserContext);\n\n\tconst isCurrentUserMemberOfUserGroup = (userGroupId: number) => {\n\t\tif (user) {\n\t\t\treturn user.accountGroupIds.includes(userGroupId);\n\t\t}\n\t};\n\n\tconst handleDelete = async (id: number): Promise<ThemeConfig> => {\n\t\ttry {\n\t\t\tawait deleteAccountGroupTheme(id);\n\n\t\t\tif (isCurrentUserMemberOfUserGroup(id)) {\n\t\t\t\tThemeApi.setUserTheme(ThemeApi.getDefaultTheme());\n\t\t\t}\n\n\t\t\treturn {};\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn await readAccountGroupTheme(id);\n\t\t}\n\t};\n\n\tconst handleSave = async (id: number, config: ThemeConfig): Promise<ThemeConfig> => {\n\t\ttry {\n\t\t\tawait writeAccountGroupTheme(id, config);\n\n\t\t\tif (isCurrentUserMemberOfUserGroup(id)) {\n\t\t\t\tThemeApi.setUserTheme(config);\n\t\t\t\tThemeApi.setTheme(ThemeApi.getUserTheme());\n\t\t\t\treturn config;\n\t\t\t}\n\n\t\t\treturn await readAccountGroupTheme(id);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn await readAccountGroupTheme(id);\n\t\t}\n\t};\n\n\treturn (\n\t\t<ThemeEditor\n\t\t\tonSave={(config: ThemeConfig) => handleSave(id, config)}\n\t\t\tonFetch={() => readAccountGroupTheme(id)}\n\t\t\tonDelete={() => handleDelete(id)}\n\t\t\tsetTheme={(config: ThemeConfig) => ThemeApi.setTheme(config)}\n\t\t\tunsetTheme={() => ThemeApi.setTheme(ThemeApi.getUserTheme())}\n\t\t/>\n\t);\n};\n\nexport default UserGroupTheme;\n"],"names":["getHex","color","rgbToHex","rgbOrRgbaColor","rgb","DEFAULT_INITIAL_COLOR","ColorPickerInput","React","value","isOpen","onChange","hexColor","event","title","description","jsx","UserGroupThemeField","jsxs","ContentOrDefaultImage","GradientColorPicker","Button","Trans","ThemeForm","PureComponent","field","config","onChangeConfig","newConfig","onSubmit","onStopPreview","onStartPreview","isPreview","prevProps","hasUnsavedChanges","Fragment","FileUploadInput","ButtonRow","ThemeEditor","onSave","onDelete","setTheme","unsetTheme","savedConfig","isEqual","onFetch","promise","error","isLoading","ContentHeader","SpinnerContainer","Prompt","UserGroupTheme","id","user","useContext","UserContext","isCurrentUserMemberOfUserGroup","userGroupId","handleDelete","deleteAccountGroupTheme","ThemeApi","readAccountGroupTheme","handleSave","writeAccountGroupTheme"],"mappings":"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"}
package/dist/api.js CHANGED
@@ -1,34 +1,34 @@
1
1
  import { jsx as n } from "react/jsx-runtime";
2
2
  import a from "classnames";
3
3
  import { useContext as t, useEffect as i } from "react";
4
- import { ax as r, y as u, h as m, bp as f, N as C, bg as d, o as c, bq as b, br as A } from "./setTitle-OKcazNTt.js";
5
- import { am as S, aD as U, S as F, T as H, a as L, bs as O, U as G, bt as V, bu as k, bv as w, O as K, r as Z, bw as q, bx as J, by as M, bz as $, bA as j, bB as z, bC as W, bD as X, bE as Y, bF as Q, bG as ee, bH as se, bI as te, a1 as oe, bJ as ne, bK as ae, bL as ie, s as re, aV as ue, u as me, b4 as fe } from "./setTitle-OKcazNTt.js";
4
+ import { ay as r, z as u, h as m, bq as f, O as C, bh as d, o as c, br as b, bs as A } from "./setTitle-Cyf8DxtL.js";
5
+ import { an as S, aE as U, S as F, T as H, a as L, bt as O, U as G, bu as V, bv as k, bw as w, P as K, t as M, bx as Z, by as q, bz as z, bA as J, bB as W, bC as $, bD as j, bE as X, bF as Y, bG as Q, bH as ee, bI as se, bJ as te, a2 as oe, bK as ne, bL as ae, bM as ie, s as re, aW as ue, u as me, b5 as fe } from "./setTitle-Cyf8DxtL.js";
6
6
  import { m as de, a as ce } from "./useCanDeleteBundleVersion-CUD1pDJ0.js";
7
7
  import { s as Ae } from "./customFileCategories-bG5S9qSy.js";
8
8
  import { getAxios as l } from "@deviceinsight/ng-ui-api-client";
9
9
  function I({ className: e, icon: s, ...o }) {
10
10
  return /* @__PURE__ */ n("button", { className: a(e, "tool"), ...o, children: s });
11
11
  }
12
- function g({ children: e }) {
12
+ function P({ children: e }) {
13
13
  const { addItem: s } = t(r);
14
14
  return i(() => s(e), [s, e]), null;
15
15
  }
16
- function P() {
16
+ function h() {
17
17
  const { user: e } = t(u);
18
18
  return e;
19
19
  }
20
- const h = () => l(), D = (e) => m({
20
+ const g = () => l(), _ = (e) => m({
21
21
  REACT_APP_TENANT_LOCIZE_PROJECT_ID: e.projectId,
22
22
  REACT_APP_TENANT_LOCIZE_API_KEY: e.apiKey,
23
23
  REACT_APP_TENANT_LOCIZE_VERSION: e.version
24
24
  });
25
- function _(e) {
25
+ function D(e) {
26
26
  return console.warn("Don't use setFavicon. This function is deprecated"), b(e, !0);
27
27
  }
28
- function N(e) {
28
+ function v(e) {
29
29
  return console.warn("Don't use setPrimaryColor. This function is deprecated"), A(e, !0);
30
30
  }
31
- const v = {
31
+ const B = {
32
32
  onSignin: c,
33
33
  onSignout: d,
34
34
  onThemeChange: C,
@@ -36,7 +36,7 @@ const v = {
36
36
  };
37
37
  export {
38
38
  I as ContextBarAction,
39
- g as ContextBarActionContainer,
39
+ P as ContextBarActionContainer,
40
40
  S as HasAuthorities,
41
41
  U as RouteApi,
42
42
  F as StyleApi,
@@ -46,20 +46,20 @@ export {
46
46
  G as UiConfigurationApi,
47
47
  V as addCustomHeaderElement,
48
48
  k as addI18nextXHRBackend,
49
- v as eventBus,
49
+ B as eventBus,
50
50
  w as generateAssetUrn,
51
- h as getNguiAxios,
51
+ g as getNguiAxios,
52
52
  K as getStartPage,
53
- Z as hasAuthorities,
54
- q as modifyAssetColumnDefinitions,
55
- J as modifyAssetGroupColumnDefinitions,
53
+ M as hasAuthorities,
54
+ Z as modifyAssetColumnDefinitions,
55
+ q as modifyAssetGroupColumnDefinitions,
56
56
  de as modifyCanDeleteBundle,
57
57
  ce as modifyCanDeleteBundleVersion,
58
- M as modifyChildAssetGroupsInitialSort,
59
- $ as modifyCustomSearchProperties,
60
- j as modifyDashboardWidgets,
61
- z as modifyIsDashboardVisible,
62
- W as modifyMapMarkerIcon,
58
+ z as modifyChildAssetGroupsInitialSort,
59
+ J as modifyCustomSearchProperties,
60
+ W as modifyDashboardWidgets,
61
+ $ as modifyIsDashboardVisible,
62
+ j as modifyMapMarkerIcon,
63
63
  X as modifyPropertyVisibility,
64
64
  Y as modifyRoutes,
65
65
  Q as modifyUserColumnDefinitions,
@@ -72,13 +72,13 @@ export {
72
72
  ae as setCustomLoginPageElement,
73
73
  ie as setDatapointsByAssetIdPreprocessHook,
74
74
  m as setEnvironment,
75
- _ as setFavicon,
76
- D as setLocizeProject,
77
- N as setPrimaryColor,
75
+ D as setFavicon,
76
+ _ as setLocizeProject,
77
+ v as setPrimaryColor,
78
78
  re as setTitle,
79
79
  ue as useAssetTimezone,
80
80
  me as useTranslation,
81
- P as useUserAccountInfo,
81
+ h as useUserAccountInfo,
82
82
  fe as ux4iotGrantRequestFunction
83
83
  };
84
84
  //# sourceMappingURL=api.js.map