@backstage-community/plugin-rbac 1.34.0 → 1.36.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.
- package/CHANGELOG.md +18 -0
- package/dist/components/Administration.esm.js +2 -2
- package/dist/components/Administration.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/AddNestedConditionButton.esm.js +5 -5
- package/dist/components/ConditionalAccess/AddNestedConditionButton.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ComplexConditionRow.esm.js +14 -14
- package/dist/components/ConditionalAccess/ComplexConditionRow.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ComplexConditionRowButtons.esm.js +7 -7
- package/dist/components/ConditionalAccess/ComplexConditionRowButtons.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ConditionRule.esm.js +3 -3
- package/dist/components/ConditionalAccess/ConditionRule.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ConditionalAccessSidebar.esm.js +9 -9
- package/dist/components/ConditionalAccess/ConditionalAccessSidebar.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ConditionsForm.esm.js +15 -15
- package/dist/components/ConditionalAccess/ConditionsForm.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ConditionsFormRow.esm.js +32 -32
- package/dist/components/ConditionalAccess/ConditionsFormRow.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ConditionsFormRowFields.esm.js +11 -11
- package/dist/components/ConditionalAccess/ConditionsFormRowFields.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/CriteriaToggleButton.esm.js +2 -2
- package/dist/components/ConditionalAccess/CriteriaToggleButton.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/CustomArrayField.esm.js +5 -5
- package/dist/components/ConditionalAccess/CustomArrayField.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/RulesDropdownOption.esm.js +4 -4
- package/dist/components/ConditionalAccess/RulesDropdownOption.esm.js.map +1 -1
- package/dist/components/CreateRole/AddMembersForm.esm.js +14 -14
- package/dist/components/CreateRole/AddMembersForm.esm.js.map +1 -1
- package/dist/components/CreateRole/AddedMembersTable.esm.js +3 -3
- package/dist/components/CreateRole/AddedMembersTable.esm.js.map +1 -1
- package/dist/components/CreateRole/AddedMembersTableColumn.esm.js +4 -4
- package/dist/components/CreateRole/AddedMembersTableColumn.esm.js.map +1 -1
- package/dist/components/CreateRole/CreateRolePage.esm.js +6 -6
- package/dist/components/CreateRole/CreateRolePage.esm.js.map +1 -1
- package/dist/components/CreateRole/EditRolePage.esm.js +9 -5
- package/dist/components/CreateRole/EditRolePage.esm.js.map +1 -1
- package/dist/components/CreateRole/MembersDropdownOption.esm.js +4 -4
- package/dist/components/CreateRole/MembersDropdownOption.esm.js.map +1 -1
- package/dist/components/CreateRole/PermissionPoliciesForm.esm.js +100 -106
- package/dist/components/CreateRole/PermissionPoliciesForm.esm.js.map +1 -1
- package/dist/components/CreateRole/PermissionPoliciesFormNestedRow.esm.js +125 -0
- package/dist/components/CreateRole/PermissionPoliciesFormNestedRow.esm.js.map +1 -0
- package/dist/components/CreateRole/PermissionPoliciesFormRow.esm.js +104 -153
- package/dist/components/CreateRole/PermissionPoliciesFormRow.esm.js.map +1 -1
- package/dist/components/CreateRole/PermissionPoliciesFormTable.esm.js +174 -0
- package/dist/components/CreateRole/PermissionPoliciesFormTable.esm.js.map +1 -0
- package/dist/components/CreateRole/PluginsDropdown.esm.js +66 -0
- package/dist/components/CreateRole/PluginsDropdown.esm.js.map +1 -0
- package/dist/components/CreateRole/PluginsDropdownOption.esm.js +52 -0
- package/dist/components/CreateRole/PluginsDropdownOption.esm.js.map +1 -0
- package/dist/components/CreateRole/ReviewStep.esm.js +5 -5
- package/dist/components/CreateRole/ReviewStep.esm.js.map +1 -1
- package/dist/components/CreateRole/ReviewStepTable.esm.js +4 -4
- package/dist/components/CreateRole/ReviewStepTable.esm.js.map +1 -1
- package/dist/components/CreateRole/RoleDetailsForm.esm.js +4 -4
- package/dist/components/CreateRole/RoleDetailsForm.esm.js.map +1 -1
- package/dist/components/CreateRole/RoleForm.esm.js +18 -17
- package/dist/components/CreateRole/RoleForm.esm.js.map +1 -1
- package/dist/components/DownloadUserStatistics.esm.js +2 -2
- package/dist/components/DownloadUserStatistics.esm.js.map +1 -1
- package/dist/components/EditRole.esm.js +3 -3
- package/dist/components/EditRole.esm.js.map +1 -1
- package/dist/components/RbacPage.esm.js +3 -3
- package/dist/components/RbacPage.esm.js.map +1 -1
- package/dist/components/RoleOverview/AboutCard.esm.js +9 -9
- package/dist/components/RoleOverview/AboutCard.esm.js.map +1 -1
- package/dist/components/RoleOverview/MembersCard.esm.js +8 -8
- package/dist/components/RoleOverview/MembersCard.esm.js.map +1 -1
- package/dist/components/RoleOverview/MembersListColumns.esm.js +2 -2
- package/dist/components/RoleOverview/MembersListColumns.esm.js.map +1 -1
- package/dist/components/RoleOverview/PermissionsCard.esm.js +8 -8
- package/dist/components/RoleOverview/PermissionsCard.esm.js.map +1 -1
- package/dist/components/RoleOverview/PermissionsListColumns.esm.js.map +1 -1
- package/dist/components/RoleOverview/RoleOverviewPage.esm.js +5 -5
- package/dist/components/RoleOverview/RoleOverviewPage.esm.js.map +1 -1
- package/dist/components/RolesList/DeleteRole.esm.js +3 -3
- package/dist/components/RolesList/DeleteRole.esm.js.map +1 -1
- package/dist/components/RolesList/DeleteRoleDialog.esm.js +15 -15
- package/dist/components/RolesList/DeleteRoleDialog.esm.js.map +1 -1
- package/dist/components/RolesList/RolesList.esm.js +9 -9
- package/dist/components/RolesList/RolesList.esm.js.map +1 -1
- package/dist/components/RolesList/RolesListColumns.esm.js +5 -5
- package/dist/components/RolesList/RolesListColumns.esm.js.map +1 -1
- package/dist/components/RolesList/RolesListToolbar.esm.js +5 -5
- package/dist/components/RolesList/RolesListToolbar.esm.js.map +1 -1
- package/dist/components/Router.esm.js +8 -8
- package/dist/components/Router.esm.js.map +1 -1
- package/dist/components/SnackbarAlert.esm.js +3 -3
- package/dist/components/SnackbarAlert.esm.js.map +1 -1
- package/dist/components/ToastContext.esm.js +4 -4
- package/dist/components/ToastContext.esm.js.map +1 -1
- package/dist/hooks/useConditionRules.esm.js +1 -1
- package/dist/hooks/useConditionRules.esm.js.map +1 -1
- package/dist/hooks/useMembers.esm.js +4 -4
- package/dist/hooks/useMembers.esm.js.map +1 -1
- package/dist/hooks/usePermissionPolicies.esm.js +11 -7
- package/dist/hooks/usePermissionPolicies.esm.js.map +1 -1
- package/dist/hooks/useRole.esm.js +1 -1
- package/dist/hooks/useRole.esm.js.map +1 -1
- package/dist/hooks/useRoles.esm.js +7 -9
- package/dist/hooks/useRoles.esm.js.map +1 -1
- package/dist/hooks/useSelectedMembers.esm.js +1 -1
- package/dist/hooks/useSelectedMembers.esm.js.map +1 -1
- package/dist/utils/conditional-access-utils.esm.js +2 -2
- package/dist/utils/conditional-access-utils.esm.js.map +1 -1
- package/dist/utils/create-role-utils.esm.js +17 -12
- package/dist/utils/create-role-utils.esm.js.map +1 -1
- package/dist/utils/rbac-utils.esm.js +22 -11
- package/dist/utils/rbac-utils.esm.js.map +1 -1
- package/package.json +21 -14
- package/dist/components/CreateRole/PoliciesCheckboxGroup.esm.js +0 -76
- package/dist/components/CreateRole/PoliciesCheckboxGroup.esm.js.map +0 -1
- package/dist/components/CreateRole/const.esm.js +0 -14
- package/dist/components/CreateRole/const.esm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionsForm.esm.js","sources":["../../../src/components/ConditionalAccess/ConditionsForm.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\n\nimport { PermissionCondition } from '@backstage/plugin-permission-common';\n\nimport WarningIcon from '@mui/icons-material/Warning';\nimport Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\n\nimport {\n hasAllOfOrAnyOfErrors,\n hasNestedNotErrors,\n hasSimpleConditionOrNotErrors,\n initializeErrors,\n isSimpleRule,\n resetErrors,\n} from '../../utils/conditional-access-utils';\nimport { ConditionsFormRow } from './ConditionsFormRow';\nimport { criterias } from './const';\nimport {\n AccessConditionsErrors,\n Condition,\n ConditionsData,\n RulesData,\n} from './types';\n\ntype ConditionFormProps = {\n conditionRulesData?: RulesData;\n conditionsFormVal?: ConditionsData;\n selPluginResourceType: string;\n onClose: () => void;\n onSave: (conditions?: ConditionsData) => void;\n};\n\nexport const ConditionsForm = ({\n conditionRulesData,\n selPluginResourceType,\n conditionsFormVal,\n onClose,\n onSave,\n}: ConditionFormProps) => {\n const [conditions, setConditions] = React.useState<ConditionsData>(\n conditionsFormVal ?? {\n condition: {\n rule: '',\n resourceType: selPluginResourceType,\n params: {},\n },\n },\n );\n const [criteria, setCriteria] = React.useState<keyof ConditionsData>(\n (Object.keys(conditions)[0] as keyof ConditionsData) ?? criterias.condition,\n );\n const [errors, setErrors] = React.useState<\n AccessConditionsErrors | undefined\n >(initializeErrors(criteria, conditions));\n\n const [removeAllClicked, setRemoveAllClicked] =\n React.useState<boolean>(false);\n\n const flattenConditions = (\n conditionData: Condition[],\n ): PermissionCondition[] => {\n const flatConditions: PermissionCondition[] = [];\n\n const processCondition = (condition: Condition) => {\n if ('rule' in condition) {\n flatConditions.push(condition);\n } else {\n if (condition.allOf) {\n condition.allOf.forEach(processCondition);\n }\n if (condition.anyOf) {\n condition.anyOf.forEach(processCondition);\n }\n if (condition.not) {\n if ('rule' in condition.not) {\n flatConditions.push(condition.not);\n } else {\n processCondition(condition.not);\n }\n }\n }\n };\n conditionData.forEach(processCondition);\n return flatConditions;\n };\n\n const isNoRuleSelected = () => {\n switch (criteria) {\n case criterias.condition:\n return !conditions.condition?.rule;\n case criterias.not: {\n const flatConditions = flattenConditions([\n conditions.not as PermissionCondition,\n ]);\n return flatConditions.some(c => !c.rule);\n }\n case criterias.allOf: {\n const flatConditions = flattenConditions(conditions.allOf || []);\n return flatConditions.some(c => !c.rule);\n }\n case criterias.anyOf: {\n const flatConditions = flattenConditions(conditions.anyOf || []);\n return flatConditions.some(c => !c.rule);\n }\n default:\n return true;\n }\n };\n\n const hasAnyErrors = (): boolean => {\n if (!errors) return false;\n\n if (\n criteria === criterias.condition ||\n (criteria === criterias.not &&\n isSimpleRule(conditions[criteria] as Condition))\n ) {\n return hasSimpleConditionOrNotErrors(errors, criteria);\n }\n\n if (\n criteria === criterias.not &&\n !isSimpleRule(conditions[criteria] as Condition)\n ) {\n return hasNestedNotErrors(errors, conditions, criteria);\n }\n\n if (criteria === criterias.allOf || criteria === criterias.anyOf) {\n return hasAllOfOrAnyOfErrors(errors, criteria);\n }\n\n return false;\n };\n\n const isSaveDisabled = () => {\n if (removeAllClicked) return false;\n\n return (\n hasAnyErrors() ||\n isNoRuleSelected() ||\n Object.is(conditionsFormVal, conditions)\n );\n };\n\n const hasMultiLevelNestedConditions = (): boolean => {\n if (!Array.isArray(conditions[criteria])) {\n return false;\n }\n\n return (conditions[criteria] as Condition[])\n .filter(condition => !('rule' in condition))\n .some((firstLevelNestedCondition: Condition) => {\n const nestedConditionCriteria = Object.keys(\n firstLevelNestedCondition,\n )[0];\n if (\n Array.isArray(\n firstLevelNestedCondition[\n nestedConditionCriteria as keyof Condition\n ],\n )\n ) {\n return (\n firstLevelNestedCondition[\n nestedConditionCriteria as keyof Condition\n ] as Condition[]\n ).some((con: Condition) => !('rule' in con));\n }\n\n return !Object.keys(\n firstLevelNestedCondition[\n nestedConditionCriteria as keyof Condition\n ] as Condition[],\n ).includes('rule');\n });\n };\n\n return (\n <>\n <Box\n sx={{\n padding: theme => theme.spacing(2.5),\n paddingTop: 0,\n flexGrow: 1,\n overflow: 'auto',\n }}\n >\n <ConditionsFormRow\n conditionRulesData={conditionRulesData}\n conditionRow={conditions}\n criteria={criteria}\n selPluginResourceType={selPluginResourceType}\n onRuleChange={newCondition => setConditions(newCondition)}\n setCriteria={setCriteria}\n setErrors={setErrors}\n setRemoveAllClicked={setRemoveAllClicked}\n />\n {hasMultiLevelNestedConditions() && (\n <Alert\n icon={<WarningIcon />}\n style={{ margin: '1.5rem 0 1rem 0' }}\n severity=\"warning\"\n data-testid=\"multi-level-nested-conditions-warning\"\n >\n <AlertTitle data-testid=\"multi-level-nested-conditions-warning-title\">\n Multiple levels of nested conditions are not supported\n </AlertTitle>\n Only one level is displayed. Please use the CLI to view all nested\n conditions.\n </Alert>\n )}\n </Box>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: '15px',\n alignItems: 'baseline',\n borderTop: theme => `2px solid ${theme.palette.border}`,\n padding: theme => theme.spacing(2.5),\n '& button': {\n textTransform: 'none',\n },\n }}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-testid=\"save-conditions\"\n disabled={isSaveDisabled()}\n onClick={() => {\n if (removeAllClicked) {\n onSave(undefined);\n } else onSave(conditions);\n }}\n >\n Save\n </Button>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={onClose}\n data-testid=\"cancel-conditions\"\n >\n Cancel\n </Button>\n <Button\n variant=\"text\"\n color=\"primary\"\n disabled={removeAllClicked || isNoRuleSelected()}\n onClick={() => {\n setRemoveAllClicked(true);\n setCriteria(criterias.condition);\n setConditions({\n condition: {\n rule: '',\n resourceType: selPluginResourceType,\n params: {},\n },\n });\n setErrors(resetErrors(criterias.condition));\n }}\n data-testid=\"remove-conditions\"\n >\n Remove all\n </Button>\n </Box>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAkDO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAA0B,KAAA;AACxB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IACxC,iBAAqB,IAAA;AAAA,MACnB,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,EAAA;AAAA,QACN,YAAc,EAAA,qBAAA;AAAA,QACd,QAAQ;AAAC;AACX;AACF,GACF;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IACnC,OAAO,IAAK,CAAA,UAAU,CAAE,CAAA,CAAC,KAA8B,SAAU,CAAA;AAAA,GACpE;AACA,EAAM,MAAA,CAAC,QAAQ,SAAS,CAAA,GAAI,MAAM,QAEhC,CAAA,gBAAA,CAAiB,QAAU,EAAA,UAAU,CAAC,CAAA;AAExC,EAAA,MAAM,CAAC,gBAAkB,EAAA,mBAAmB,CAC1C,GAAA,KAAA,CAAM,SAAkB,KAAK,CAAA;AAE/B,EAAM,MAAA,iBAAA,GAAoB,CACxB,aAC0B,KAAA;AAC1B,IAAA,MAAM,iBAAwC,EAAC;AAE/C,IAAM,MAAA,gBAAA,GAAmB,CAAC,SAAyB,KAAA;AACjD,MAAA,IAAI,UAAU,SAAW,EAAA;AACvB,QAAA,cAAA,CAAe,KAAK,SAAS,CAAA;AAAA,OACxB,MAAA;AACL,QAAA,IAAI,UAAU,KAAO,EAAA;AACnB,UAAU,SAAA,CAAA,KAAA,CAAM,QAAQ,gBAAgB,CAAA;AAAA;AAE1C,QAAA,IAAI,UAAU,KAAO,EAAA;AACnB,UAAU,SAAA,CAAA,KAAA,CAAM,QAAQ,gBAAgB,CAAA;AAAA;AAE1C,QAAA,IAAI,UAAU,GAAK,EAAA;AACjB,UAAI,IAAA,MAAA,IAAU,UAAU,GAAK,EAAA;AAC3B,YAAe,cAAA,CAAA,IAAA,CAAK,UAAU,GAAG,CAAA;AAAA,WAC5B,MAAA;AACL,YAAA,gBAAA,CAAiB,UAAU,GAAG,CAAA;AAAA;AAChC;AACF;AACF,KACF;AACA,IAAA,aAAA,CAAc,QAAQ,gBAAgB,CAAA;AACtC,IAAO,OAAA,cAAA;AAAA,GACT;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,QAAQ,QAAU;AAAA,MAChB,KAAK,SAAU,CAAA,SAAA;AACb,QAAO,OAAA,CAAC,WAAW,SAAW,EAAA,IAAA;AAAA,MAChC,KAAK,UAAU,GAAK,EAAA;AAClB,QAAA,MAAM,iBAAiB,iBAAkB,CAAA;AAAA,UACvC,UAAW,CAAA;AAAA,SACZ,CAAA;AACD,QAAA,OAAO,cAAe,CAAA,IAAA,CAAK,CAAK,CAAA,KAAA,CAAC,EAAE,IAAI,CAAA;AAAA;AACzC,MACA,KAAK,UAAU,KAAO,EAAA;AACpB,QAAA,MAAM,cAAiB,GAAA,iBAAA,CAAkB,UAAW,CAAA,KAAA,IAAS,EAAE,CAAA;AAC/D,QAAA,OAAO,cAAe,CAAA,IAAA,CAAK,CAAK,CAAA,KAAA,CAAC,EAAE,IAAI,CAAA;AAAA;AACzC,MACA,KAAK,UAAU,KAAO,EAAA;AACpB,QAAA,MAAM,cAAiB,GAAA,iBAAA,CAAkB,UAAW,CAAA,KAAA,IAAS,EAAE,CAAA;AAC/D,QAAA,OAAO,cAAe,CAAA,IAAA,CAAK,CAAK,CAAA,KAAA,CAAC,EAAE,IAAI,CAAA;AAAA;AACzC,MACA;AACE,QAAO,OAAA,IAAA;AAAA;AACX,GACF;AAEA,EAAA,MAAM,eAAe,MAAe;AAClC,IAAI,IAAA,CAAC,QAAe,OAAA,KAAA;AAEpB,IACE,IAAA,QAAA,KAAa,SAAU,CAAA,SAAA,IACtB,QAAa,KAAA,SAAA,CAAU,OACtB,YAAa,CAAA,UAAA,CAAW,QAAQ,CAAc,CAChD,EAAA;AACA,MAAO,OAAA,6BAAA,CAA8B,QAAQ,QAAQ,CAAA;AAAA;AAGvD,IACE,IAAA,QAAA,KAAa,UAAU,GACvB,IAAA,CAAC,aAAa,UAAW,CAAA,QAAQ,CAAc,CAC/C,EAAA;AACA,MAAO,OAAA,kBAAA,CAAmB,MAAQ,EAAA,UAAA,EAAY,QAAQ,CAAA;AAAA;AAGxD,IAAA,IAAI,QAAa,KAAA,SAAA,CAAU,KAAS,IAAA,QAAA,KAAa,UAAU,KAAO,EAAA;AAChE,MAAO,OAAA,qBAAA,CAAsB,QAAQ,QAAQ,CAAA;AAAA;AAG/C,IAAO,OAAA,KAAA;AAAA,GACT;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IAAI,kBAAyB,OAAA,KAAA;AAE7B,IAAA,OACE,cACA,IAAA,gBAAA,MACA,MAAO,CAAA,EAAA,CAAG,mBAAmB,UAAU,CAAA;AAAA,GAE3C;AAEA,EAAA,MAAM,gCAAgC,MAAe;AACnD,IAAA,IAAI,CAAC,KAAM,CAAA,OAAA,CAAQ,UAAW,CAAA,QAAQ,CAAC,CAAG,EAAA;AACxC,MAAO,OAAA,KAAA;AAAA;AAGT,IAAQ,OAAA,UAAA,CAAW,QAAQ,CAAA,CACxB,MAAO,CAAA,CAAA,SAAA,KAAa,EAAE,MAAA,IAAU,SAAU,CAAA,CAAA,CAC1C,IAAK,CAAA,CAAC,yBAAyC,KAAA;AAC9C,MAAA,MAAM,0BAA0B,MAAO,CAAA,IAAA;AAAA,QACrC;AAAA,QACA,CAAC,CAAA;AACH,MAAA,IACE,KAAM,CAAA,OAAA;AAAA,QACJ,0BACE,uBACF;AAAA,OAEF,EAAA;AACA,QACE,OAAA,yBAAA,CACE,uBACF,CACA,CAAA,IAAA,CAAK,CAAC,GAAmB,KAAA,EAAE,UAAU,GAAI,CAAA,CAAA;AAAA;AAG7C,MAAA,OAAO,CAAC,MAAO,CAAA,IAAA;AAAA,QACb,0BACE,uBACF;AAAA,OACF,CAAE,SAAS,MAAM,CAAA;AAAA,KAClB,CAAA;AAAA,GACL;AAEA,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,CAAA,KAAA,KAAS,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,QACnC,UAAY,EAAA,CAAA;AAAA,QACZ,QAAU,EAAA,CAAA;AAAA,QACV,QAAU,EAAA;AAAA;AACZ,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,kBAAA;AAAA,QACA,YAAc,EAAA,UAAA;AAAA,QACd,QAAA;AAAA,QACA,qBAAA;AAAA,QACA,YAAA,EAAc,CAAgB,YAAA,KAAA,aAAA,CAAc,YAAY,CAAA;AAAA,QACxD,WAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,IACC,+BACC,oBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,sCAAO,WAAY,EAAA,IAAA,CAAA;AAAA,QACnB,KAAA,EAAO,EAAE,MAAA,EAAQ,iBAAkB,EAAA;AAAA,QACnC,QAAS,EAAA,SAAA;AAAA,QACT,aAAY,EAAA;AAAA,OAAA;AAAA,sBAEX,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,aAAY,EAAA,6CAAA,EAAA,EAA8C,wDAEtE,CAAA;AAAA,MAAa;AAAA;AAGf,GAGJ,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,MAAA;AAAA,QACT,aAAe,EAAA,KAAA;AAAA,QACf,GAAK,EAAA,MAAA;AAAA,QACL,UAAY,EAAA,UAAA;AAAA,QACZ,SAAW,EAAA,CAAA,KAAA,KAAS,CAAa,UAAA,EAAA,KAAA,CAAM,QAAQ,MAAM,CAAA,CAAA;AAAA,QACrD,OAAS,EAAA,CAAA,KAAA,KAAS,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,QACnC,UAAY,EAAA;AAAA,UACV,aAAe,EAAA;AAAA;AACjB;AACF,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,WAAA;AAAA,QACR,KAAM,EAAA,SAAA;AAAA,QACN,aAAY,EAAA,iBAAA;AAAA,QACZ,UAAU,cAAe,EAAA;AAAA,QACzB,SAAS,MAAM;AACb,UAAA,IAAI,gBAAkB,EAAA;AACpB,YAAA,MAAA,CAAO,KAAS,CAAA,CAAA;AAAA,WAClB,aAAc,UAAU,CAAA;AAAA;AAC1B,OAAA;AAAA,MACD;AAAA,KAED;AAAA,oBACA,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,UAAA;AAAA,QACR,KAAM,EAAA,SAAA;AAAA,QACN,OAAS,EAAA,OAAA;AAAA,QACT,aAAY,EAAA;AAAA,OAAA;AAAA,MACb;AAAA,KAED;AAAA,oBACA,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,MAAA;AAAA,QACR,KAAM,EAAA,SAAA;AAAA,QACN,QAAA,EAAU,oBAAoB,gBAAiB,EAAA;AAAA,QAC/C,SAAS,MAAM;AACb,UAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,UAAA,WAAA,CAAY,UAAU,SAAS,CAAA;AAC/B,UAAc,aAAA,CAAA;AAAA,YACZ,SAAW,EAAA;AAAA,cACT,IAAM,EAAA,EAAA;AAAA,cACN,YAAc,EAAA,qBAAA;AAAA,cACd,QAAQ;AAAC;AACX,WACD,CAAA;AACD,UAAU,SAAA,CAAA,WAAA,CAAY,SAAU,CAAA,SAAS,CAAC,CAAA;AAAA,SAC5C;AAAA,QACA,aAAY,EAAA;AAAA,OAAA;AAAA,MACb;AAAA;AAED,GAEJ,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"ConditionsForm.esm.js","sources":["../../../src/components/ConditionalAccess/ConditionsForm.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\n\nimport { PermissionCondition } from '@backstage/plugin-permission-common';\n\nimport WarningIcon from '@mui/icons-material/Warning';\nimport Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\n\nimport {\n hasAllOfOrAnyOfErrors,\n hasNestedNotErrors,\n hasSimpleConditionOrNotErrors,\n initializeErrors,\n isSimpleRule,\n resetErrors,\n} from '../../utils/conditional-access-utils';\nimport { ConditionsFormRow } from './ConditionsFormRow';\nimport { criterias } from './const';\nimport {\n AccessConditionsErrors,\n Condition,\n ConditionsData,\n RulesData,\n} from './types';\n\ntype ConditionFormProps = {\n conditionRulesData?: RulesData;\n conditionsFormVal?: ConditionsData;\n selPluginResourceType: string;\n onClose: () => void;\n onSave: (conditions?: ConditionsData) => void;\n};\n\nexport const ConditionsForm = ({\n conditionRulesData,\n selPluginResourceType,\n conditionsFormVal,\n onClose,\n onSave,\n}: ConditionFormProps) => {\n const [conditions, setConditions] = React.useState<ConditionsData>(\n conditionsFormVal ?? {\n condition: {\n rule: '',\n resourceType: selPluginResourceType,\n params: {},\n },\n },\n );\n const [criteria, setCriteria] = React.useState<keyof ConditionsData>(\n (Object.keys(conditions)[0] as keyof ConditionsData) ?? criterias.condition,\n );\n const [errors, setErrors] = React.useState<\n AccessConditionsErrors | undefined\n >(initializeErrors(criteria, conditions));\n\n const [removeAllClicked, setRemoveAllClicked] =\n React.useState<boolean>(false);\n\n const flattenConditions = (\n conditionData: Condition[],\n ): PermissionCondition[] => {\n const flatConditions: PermissionCondition[] = [];\n\n const processCondition = (condition: Condition) => {\n if ('rule' in condition) {\n flatConditions.push(condition);\n } else {\n if (condition.allOf) {\n condition.allOf.forEach(processCondition);\n }\n if (condition.anyOf) {\n condition.anyOf.forEach(processCondition);\n }\n if (condition.not) {\n if ('rule' in condition.not) {\n flatConditions.push(condition.not);\n } else {\n processCondition(condition.not);\n }\n }\n }\n };\n conditionData.forEach(processCondition);\n return flatConditions;\n };\n\n const isNoRuleSelected = () => {\n switch (criteria) {\n case criterias.condition:\n return !conditions.condition?.rule;\n case criterias.not: {\n const flatConditions = flattenConditions([\n conditions.not as PermissionCondition,\n ]);\n return flatConditions.some(c => !c.rule);\n }\n case criterias.allOf: {\n const flatConditions = flattenConditions(conditions.allOf || []);\n return flatConditions.some(c => !c.rule);\n }\n case criterias.anyOf: {\n const flatConditions = flattenConditions(conditions.anyOf || []);\n return flatConditions.some(c => !c.rule);\n }\n default:\n return true;\n }\n };\n\n const hasAnyErrors = (): boolean => {\n if (!errors) return false;\n\n if (\n criteria === criterias.condition ||\n (criteria === criterias.not &&\n isSimpleRule(conditions[criteria] as Condition))\n ) {\n return hasSimpleConditionOrNotErrors(errors, criteria);\n }\n\n if (\n criteria === criterias.not &&\n !isSimpleRule(conditions[criteria] as Condition)\n ) {\n return hasNestedNotErrors(errors, conditions, criteria);\n }\n\n if (criteria === criterias.allOf || criteria === criterias.anyOf) {\n return hasAllOfOrAnyOfErrors(errors, criteria);\n }\n\n return false;\n };\n\n const isSaveDisabled = () => {\n if (removeAllClicked) return false;\n\n return (\n hasAnyErrors() ||\n isNoRuleSelected() ||\n Object.is(conditionsFormVal, conditions)\n );\n };\n\n const hasMultiLevelNestedConditions = (): boolean => {\n if (!Array.isArray(conditions[criteria])) {\n return false;\n }\n\n return (conditions[criteria] as Condition[])\n .filter(condition => !('rule' in condition))\n .some((firstLevelNestedCondition: Condition) => {\n const nestedConditionCriteria = Object.keys(\n firstLevelNestedCondition,\n )[0];\n if (\n Array.isArray(\n firstLevelNestedCondition[\n nestedConditionCriteria as keyof Condition\n ],\n )\n ) {\n return (\n firstLevelNestedCondition[\n nestedConditionCriteria as keyof Condition\n ] as Condition[]\n ).some((con: Condition) => !('rule' in con));\n }\n\n return !Object.keys(\n firstLevelNestedCondition[\n nestedConditionCriteria as keyof Condition\n ] as Condition[],\n ).includes('rule');\n });\n };\n\n return (\n <>\n <Box\n sx={{\n padding: theme => theme.spacing(2.5),\n paddingTop: 0,\n flexGrow: 1,\n overflow: 'auto',\n }}\n >\n <ConditionsFormRow\n conditionRulesData={conditionRulesData}\n conditionRow={conditions}\n criteria={criteria}\n selPluginResourceType={selPluginResourceType}\n onRuleChange={newCondition => setConditions(newCondition)}\n setCriteria={setCriteria}\n setErrors={setErrors}\n setRemoveAllClicked={setRemoveAllClicked}\n />\n {hasMultiLevelNestedConditions() && (\n <Alert\n icon={<WarningIcon />}\n style={{ margin: '1.5rem 0 1rem 0' }}\n severity=\"warning\"\n data-testid=\"multi-level-nested-conditions-warning\"\n >\n <AlertTitle data-testid=\"multi-level-nested-conditions-warning-title\">\n Multiple levels of nested conditions are not supported\n </AlertTitle>\n Only one level is displayed. Please use the CLI to view all nested\n conditions.\n </Alert>\n )}\n </Box>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: '15px',\n alignItems: 'baseline',\n borderTop: theme => `2px solid ${theme.palette.border}`,\n padding: theme => theme.spacing(2.5),\n '& button': {\n textTransform: 'none',\n },\n }}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-testid=\"save-conditions\"\n disabled={isSaveDisabled()}\n onClick={() => {\n if (removeAllClicked) {\n onSave(undefined);\n } else onSave(conditions);\n }}\n >\n Save\n </Button>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={onClose}\n data-testid=\"cancel-conditions\"\n >\n Cancel\n </Button>\n <Button\n variant=\"text\"\n color=\"primary\"\n disabled={removeAllClicked || isNoRuleSelected()}\n onClick={() => {\n setRemoveAllClicked(true);\n setCriteria(criterias.condition);\n setConditions({\n condition: {\n rule: '',\n resourceType: selPluginResourceType,\n params: {},\n },\n });\n setErrors(resetErrors(criterias.condition));\n }}\n data-testid=\"remove-conditions\"\n >\n Remove all\n </Button>\n </Box>\n </>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React__default from 'react';
|
|
2
2
|
import AddIcon from '@mui/icons-material/Add';
|
|
3
3
|
import RemoveIcon from '@mui/icons-material/Remove';
|
|
4
4
|
import Box from '@mui/material/Box';
|
|
@@ -30,9 +30,9 @@ const ConditionsFormRow = ({
|
|
|
30
30
|
setRemoveAllClicked
|
|
31
31
|
}) => {
|
|
32
32
|
const theme = useTheme();
|
|
33
|
-
const [nestedConditionRow, setNestedConditionRow] =
|
|
34
|
-
const [notConditionType, setNotConditionType] =
|
|
35
|
-
|
|
33
|
+
const [nestedConditionRow, setNestedConditionRow] = React__default.useState([]);
|
|
34
|
+
const [notConditionType, setNotConditionType] = React__default.useState(NotConditionType.SimpleCondition);
|
|
35
|
+
React__default.useEffect(() => {
|
|
36
36
|
const nestedConditions = [];
|
|
37
37
|
const criteriaTypes = [criterias.allOf, criterias.anyOf, criterias.not];
|
|
38
38
|
switch (criteria) {
|
|
@@ -105,7 +105,7 @@ const ConditionsFormRow = ({
|
|
|
105
105
|
const newCondition = nestedConditionMap[val] || { [val]: [defaultRule] };
|
|
106
106
|
setErrors((prevErrors) => {
|
|
107
107
|
const updatedErrors = { ...prevErrors };
|
|
108
|
-
if (updatedErrors[criteria] !==
|
|
108
|
+
if (updatedErrors[criteria] !== undefined) {
|
|
109
109
|
if (criteria === criterias.not) {
|
|
110
110
|
updatedErrors[criteria] = val !== criterias.not ? { [val]: [""] } : { [val]: "" };
|
|
111
111
|
return updatedErrors;
|
|
@@ -191,7 +191,7 @@ const ConditionsFormRow = ({
|
|
|
191
191
|
);
|
|
192
192
|
setErrors((prevErrors) => {
|
|
193
193
|
const updatedErrors = { ...prevErrors };
|
|
194
|
-
if (updatedErrors[criteria] !==
|
|
194
|
+
if (updatedErrors[criteria] !== undefined) {
|
|
195
195
|
const criteriaErrors = updatedErrors[criteria];
|
|
196
196
|
if (criteria === criterias.not && notConditionType === "nested-condition") {
|
|
197
197
|
criteriaErrors[nestedConditionCriteria].push("");
|
|
@@ -217,7 +217,7 @@ const ConditionsFormRow = ({
|
|
|
217
217
|
updateRules(updatedNestedConditionRow);
|
|
218
218
|
setErrors((prevErrors) => {
|
|
219
219
|
const updatedErrors = { ...prevErrors };
|
|
220
|
-
if (updatedErrors[criteria] !==
|
|
220
|
+
if (updatedErrors[criteria] !== undefined) {
|
|
221
221
|
const criteriaErrors = updatedErrors[criteria];
|
|
222
222
|
const simpleRuleErrors = criteriaErrors.filter(
|
|
223
223
|
(err) => typeof err === "string"
|
|
@@ -259,7 +259,7 @@ const ConditionsFormRow = ({
|
|
|
259
259
|
nc,
|
|
260
260
|
selectedNestedConditionCriteria
|
|
261
261
|
);
|
|
262
|
-
return nestedConditionSimpleRulesCount > 0 && /* @__PURE__ */
|
|
262
|
+
return nestedConditionSimpleRulesCount > 0 && /* @__PURE__ */ React__default.createElement(
|
|
263
263
|
Box,
|
|
264
264
|
{
|
|
265
265
|
mt: 2,
|
|
@@ -275,7 +275,7 @@ const ConditionsFormRow = ({
|
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
277
|
},
|
|
278
|
-
/* @__PURE__ */
|
|
278
|
+
/* @__PURE__ */ React__default.createElement("div", { style: { display: "flex", justifyContent: "space-between" } }, /* @__PURE__ */ React__default.createElement(
|
|
279
279
|
ToggleButtonGroup,
|
|
280
280
|
{
|
|
281
281
|
exclusive: true,
|
|
@@ -290,7 +290,7 @@ const ConditionsFormRow = ({
|
|
|
290
290
|
height: "100%"
|
|
291
291
|
}
|
|
292
292
|
},
|
|
293
|
-
nestedConditionButtons.map(({ val, label }) => /* @__PURE__ */
|
|
293
|
+
nestedConditionButtons.map(({ val, label }) => /* @__PURE__ */ React__default.createElement(
|
|
294
294
|
CriteriaToggleButton,
|
|
295
295
|
{
|
|
296
296
|
key: `nested-criteria-${val}`,
|
|
@@ -300,7 +300,7 @@ const ConditionsFormRow = ({
|
|
|
300
300
|
theme
|
|
301
301
|
}
|
|
302
302
|
))
|
|
303
|
-
), criteria !== criterias.not && /* @__PURE__ */
|
|
303
|
+
), criteria !== criterias.not && /* @__PURE__ */ React__default.createElement(
|
|
304
304
|
IconButton,
|
|
305
305
|
{
|
|
306
306
|
title: "Remove nested condition",
|
|
@@ -312,9 +312,9 @@ const ConditionsFormRow = ({
|
|
|
312
312
|
disabled: simpleRulesCount === 0 && nestedConditionsCount === 1,
|
|
313
313
|
onClick: () => handleRemoveNestedCondition(nestedConditionIndex)
|
|
314
314
|
},
|
|
315
|
-
/* @__PURE__ */
|
|
315
|
+
/* @__PURE__ */ React__default.createElement(RemoveIcon, { "data-testid": "remove-nested-condition" })
|
|
316
316
|
)),
|
|
317
|
-
/* @__PURE__ */
|
|
317
|
+
/* @__PURE__ */ React__default.createElement(Box, null, selectedNestedConditionCriteria !== criterias.not && nc[selectedNestedConditionCriteria].map((c, ncrIndex) => /* @__PURE__ */ React__default.createElement(
|
|
318
318
|
ComplexConditionRow,
|
|
319
319
|
{
|
|
320
320
|
key: `nested-condition-${nestedConditionIndex}-${ncrIndex}`,
|
|
@@ -333,7 +333,7 @@ const ConditionsFormRow = ({
|
|
|
333
333
|
nestedConditionIndex,
|
|
334
334
|
activeNestedCriteria: selectedNestedConditionCriteria
|
|
335
335
|
}
|
|
336
|
-
)), selectedNestedConditionCriteria === criterias.not && nc.not.resourceType && /* @__PURE__ */
|
|
336
|
+
)), selectedNestedConditionCriteria === criterias.not && nc.not.resourceType && /* @__PURE__ */ React__default.createElement(
|
|
337
337
|
ConditionsFormRowFields,
|
|
338
338
|
{
|
|
339
339
|
oldCondition: nc.not ?? getDefaultRule(selPluginResourceType),
|
|
@@ -344,7 +344,7 @@ const ConditionsFormRow = ({
|
|
|
344
344
|
setErrors,
|
|
345
345
|
optionDisabled: (ruleOption) => ruleOptionDisabled(
|
|
346
346
|
ruleOption,
|
|
347
|
-
nc.not ? [nc.not] :
|
|
347
|
+
nc.not ? [nc.not] : undefined
|
|
348
348
|
),
|
|
349
349
|
setRemoveAllClicked,
|
|
350
350
|
nestedConditionRow,
|
|
@@ -352,7 +352,7 @@ const ConditionsFormRow = ({
|
|
|
352
352
|
nestedConditionIndex,
|
|
353
353
|
updateRules
|
|
354
354
|
}
|
|
355
|
-
), selectedNestedConditionCriteria !== criterias.not && /* @__PURE__ */
|
|
355
|
+
), selectedNestedConditionCriteria !== criterias.not && /* @__PURE__ */ React__default.createElement(
|
|
356
356
|
Button,
|
|
357
357
|
{
|
|
358
358
|
sx: {
|
|
@@ -364,13 +364,13 @@ const ConditionsFormRow = ({
|
|
|
364
364
|
selectedNestedConditionCriteria,
|
|
365
365
|
nestedConditionIndex
|
|
366
366
|
),
|
|
367
|
-
startIcon: /* @__PURE__ */
|
|
367
|
+
startIcon: /* @__PURE__ */ React__default.createElement(AddIcon, { fontSize: "small" })
|
|
368
368
|
},
|
|
369
369
|
"Add rule"
|
|
370
370
|
))
|
|
371
371
|
);
|
|
372
372
|
};
|
|
373
|
-
return /* @__PURE__ */
|
|
373
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
374
374
|
Box,
|
|
375
375
|
{
|
|
376
376
|
sx: {
|
|
@@ -392,7 +392,7 @@ const ConditionsFormRow = ({
|
|
|
392
392
|
},
|
|
393
393
|
"data-testid": "conditions-row"
|
|
394
394
|
},
|
|
395
|
-
/* @__PURE__ */
|
|
395
|
+
/* @__PURE__ */ React__default.createElement(
|
|
396
396
|
ToggleButtonGroup,
|
|
397
397
|
{
|
|
398
398
|
exclusive: true,
|
|
@@ -403,7 +403,7 @@ const ConditionsFormRow = ({
|
|
|
403
403
|
width: "80%"
|
|
404
404
|
}
|
|
405
405
|
},
|
|
406
|
-
conditionButtons.map(({ val, label }) => /* @__PURE__ */
|
|
406
|
+
conditionButtons.map(({ val, label }) => /* @__PURE__ */ React__default.createElement(
|
|
407
407
|
CriteriaToggleButton,
|
|
408
408
|
{
|
|
409
409
|
key: `criteria-${val}`,
|
|
@@ -414,7 +414,7 @@ const ConditionsFormRow = ({
|
|
|
414
414
|
}
|
|
415
415
|
))
|
|
416
416
|
),
|
|
417
|
-
/* @__PURE__ */
|
|
417
|
+
/* @__PURE__ */ React__default.createElement(
|
|
418
418
|
ConditionRule,
|
|
419
419
|
{
|
|
420
420
|
conditionRow,
|
|
@@ -426,8 +426,8 @@ const ConditionsFormRow = ({
|
|
|
426
426
|
setRemoveAllClicked
|
|
427
427
|
}
|
|
428
428
|
),
|
|
429
|
-
criteria !== criterias.condition && /* @__PURE__ */
|
|
430
|
-
(c, srIndex) => /* @__PURE__ */
|
|
429
|
+
criteria !== criterias.condition && /* @__PURE__ */ React__default.createElement(Box, null, criteria !== criterias.not && conditionRow[criteria]?.map(
|
|
430
|
+
(c, srIndex) => /* @__PURE__ */ React__default.createElement(
|
|
431
431
|
ComplexConditionRow,
|
|
432
432
|
{
|
|
433
433
|
key: `${criteria}-simple-condition-${srIndex}`,
|
|
@@ -445,7 +445,7 @@ const ConditionsFormRow = ({
|
|
|
445
445
|
activeCriteria: criteria
|
|
446
446
|
}
|
|
447
447
|
)
|
|
448
|
-
), criteria === criterias.not && /* @__PURE__ */
|
|
448
|
+
), criteria === criterias.not && /* @__PURE__ */ React__default.createElement(
|
|
449
449
|
RadioGroup,
|
|
450
450
|
{
|
|
451
451
|
sx: {
|
|
@@ -454,18 +454,18 @@ const ConditionsFormRow = ({
|
|
|
454
454
|
value: notConditionType,
|
|
455
455
|
onChange: (_event, value) => handleNotConditionTypeChange(value)
|
|
456
456
|
},
|
|
457
|
-
/* @__PURE__ */
|
|
457
|
+
/* @__PURE__ */ React__default.createElement(
|
|
458
458
|
FormControlLabel,
|
|
459
459
|
{
|
|
460
460
|
value: NotConditionType.SimpleCondition,
|
|
461
|
-
control: /* @__PURE__ */
|
|
461
|
+
control: /* @__PURE__ */ React__default.createElement(Radio, { color: "primary" }),
|
|
462
462
|
label: "Add rule",
|
|
463
463
|
sx: {
|
|
464
464
|
marginTop: theme.spacing(1)
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
467
|
),
|
|
468
|
-
notConditionType === NotConditionType.SimpleCondition && /* @__PURE__ */
|
|
468
|
+
notConditionType === NotConditionType.SimpleCondition && /* @__PURE__ */ React__default.createElement(
|
|
469
469
|
ConditionsFormRowFields,
|
|
470
470
|
{
|
|
471
471
|
oldCondition: conditionRow.not ?? getDefaultRule(selPluginResourceType),
|
|
@@ -476,23 +476,23 @@ const ConditionsFormRow = ({
|
|
|
476
476
|
setErrors,
|
|
477
477
|
optionDisabled: (ruleOption) => ruleOptionDisabled(
|
|
478
478
|
ruleOption,
|
|
479
|
-
conditionRow.not ? [conditionRow.not] :
|
|
479
|
+
conditionRow.not ? [conditionRow.not] : undefined
|
|
480
480
|
),
|
|
481
481
|
setRemoveAllClicked
|
|
482
482
|
}
|
|
483
483
|
),
|
|
484
|
-
/* @__PURE__ */
|
|
484
|
+
/* @__PURE__ */ React__default.createElement(
|
|
485
485
|
FormControlLabel,
|
|
486
486
|
{
|
|
487
487
|
value: NotConditionType.NestedCondition,
|
|
488
|
-
control: /* @__PURE__ */
|
|
489
|
-
label: /* @__PURE__ */
|
|
488
|
+
control: /* @__PURE__ */ React__default.createElement(Radio, { color: "primary" }),
|
|
489
|
+
label: /* @__PURE__ */ React__default.createElement(AddNestedConditionButton, null),
|
|
490
490
|
sx: {
|
|
491
491
|
marginTop: theme.spacing(1)
|
|
492
492
|
}
|
|
493
493
|
}
|
|
494
494
|
)
|
|
495
|
-
), /* @__PURE__ */
|
|
495
|
+
), /* @__PURE__ */ React__default.createElement(
|
|
496
496
|
ComplexConditionRowButtons,
|
|
497
497
|
{
|
|
498
498
|
conditionRow,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionsFormRow.esm.js","sources":["../../../src/components/ConditionalAccess/ConditionsFormRow.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\n\nimport { PermissionCondition } from '@backstage/plugin-permission-common';\n\nimport AddIcon from '@mui/icons-material/Add';\nimport RemoveIcon from '@mui/icons-material/Remove';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport IconButton from '@mui/material/IconButton';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport { useTheme } from '@mui/material/styles';\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\n\nimport {\n extractNestedConditions,\n getDefaultRule,\n getNestedConditionSimpleRulesCount,\n getSimpleRulesCount,\n isNestedConditionRule,\n isSimpleRule,\n nestedConditionButtons,\n resetErrors,\n ruleOptionDisabled,\n} from '../../utils/conditional-access-utils';\nimport { AddNestedConditionButton } from './AddNestedConditionButton';\nimport { ComplexConditionRow } from './ComplexConditionRow';\nimport { ComplexConditionRowButtons } from './ComplexConditionRowButtons';\nimport { ConditionRule } from './ConditionRule';\nimport { ConditionsFormRowFields } from './ConditionsFormRowFields';\nimport { conditionButtons, criterias } from './const';\nimport { CriteriaToggleButton } from './CriteriaToggleButton';\nimport {\n ComplexErrors,\n Condition,\n ConditionFormRowProps,\n ConditionsData,\n NestedCriteriaErrors,\n NotConditionType,\n} from './types';\n\nexport const ConditionsFormRow = ({\n conditionRulesData,\n conditionRow,\n selPluginResourceType,\n criteria,\n onRuleChange,\n setCriteria,\n setErrors,\n setRemoveAllClicked,\n}: ConditionFormRowProps) => {\n const theme = useTheme();\n const [nestedConditionRow, setNestedConditionRow] = React.useState<\n Condition[]\n >([]);\n const [notConditionType, setNotConditionType] =\n React.useState<NotConditionType>(NotConditionType.SimpleCondition);\n\n React.useEffect(() => {\n const nestedConditions: Condition[] = [];\n const criteriaTypes = [criterias.allOf, criterias.anyOf, criterias.not];\n switch (criteria) {\n case criterias.allOf:\n extractNestedConditions(\n conditionRow.allOf || [],\n criteriaTypes,\n nestedConditions,\n );\n break;\n case criterias.anyOf:\n extractNestedConditions(\n conditionRow.anyOf || [],\n criteriaTypes,\n nestedConditions,\n );\n break;\n case criterias.not:\n if (\n conditionRow.not &&\n criteriaTypes.includes(\n Object.keys(conditionRow.not)[0] as keyof ConditionsData,\n )\n ) {\n nestedConditions.push(conditionRow.not);\n setNotConditionType(NotConditionType.NestedCondition);\n }\n break;\n default:\n break;\n }\n\n setNestedConditionRow(nestedConditions);\n }, [conditionRow, criteria]);\n\n const handleCriteriaChange = (val: keyof ConditionsData) => {\n setCriteria(val);\n setErrors(resetErrors(val));\n\n const defaultRule = getDefaultRule(selPluginResourceType);\n\n const ruleMap = {\n [criterias.condition]: { condition: defaultRule },\n [criterias.allOf]: { allOf: [defaultRule] },\n [criterias.anyOf]: { anyOf: [defaultRule] },\n [criterias.not]: { not: defaultRule },\n };\n\n if (val === criterias.not) {\n setNotConditionType(NotConditionType.SimpleCondition);\n }\n\n const ruleChange = ruleMap[val];\n if (ruleChange) {\n onRuleChange(ruleChange);\n }\n };\n\n const updateRules = (updatedNestedConditionRow: Condition[] | Condition) => {\n const existingSimpleCondition =\n criteria !== criterias.not\n ? (conditionRow[criteria as keyof Condition] as Condition[])?.filter(\n con => isSimpleRule(con),\n ) || []\n : [];\n\n const newCondition: Condition[] = Array.isArray(updatedNestedConditionRow)\n ? [...existingSimpleCondition, ...updatedNestedConditionRow]\n : [...existingSimpleCondition, updatedNestedConditionRow];\n\n if (criteria === criterias.anyOf || criteria === criterias.allOf) {\n onRuleChange({\n [criteria]: newCondition,\n });\n } else if (\n criteria === criterias.not &&\n !Array.isArray(updatedNestedConditionRow)\n ) {\n onRuleChange({\n not: updatedNestedConditionRow,\n });\n }\n };\n\n const handleNestedConditionCriteriaChange = (\n val: string,\n nestedConditionIndex: number,\n ) => {\n const defaultRule = getDefaultRule(selPluginResourceType);\n\n const nestedConditionMap = {\n [criterias.not]: { [val]: defaultRule },\n [criterias.allOf]: { [val]: [defaultRule] },\n [criterias.anyOf]: { [val]: [defaultRule] },\n [criterias.condition]: { [val]: [defaultRule] },\n };\n\n const newCondition = nestedConditionMap[val] || { [val]: [defaultRule] };\n\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n\n if (updatedErrors[criteria] !== undefined) {\n if (criteria === criterias.not) {\n (updatedErrors[criteria] as ComplexErrors) =\n val !== criterias.not ? { [val]: [''] } : { [val]: '' };\n return updatedErrors;\n }\n const criteriaErrors = updatedErrors[criteria];\n const simpleRuleErrors = (criteriaErrors as ComplexErrors[]).filter(\n (err: ComplexErrors) => typeof err === 'string',\n );\n const nestedConditionErrors = (\n criteriaErrors as ComplexErrors[]\n ).filter((err: ComplexErrors) => typeof err !== 'string');\n nestedConditionErrors[nestedConditionIndex] =\n val !== criterias.not ? { [val]: [''] } : { [val]: '' };\n updatedErrors[criteria] = [\n ...simpleRuleErrors,\n ...nestedConditionErrors,\n ];\n }\n\n return updatedErrors;\n });\n\n if (criteria === criterias.not) {\n updateRules(newCondition);\n } else {\n const updatedNestedConditionRow = nestedConditionRow.map((c, index) => {\n if (index === nestedConditionIndex) {\n return newCondition;\n }\n return c;\n });\n updateRules(updatedNestedConditionRow);\n }\n };\n\n const handleAddNestedCondition = (currentCriteria: string) => {\n const newNestedCondition = {\n [criterias.allOf]: [getDefaultRule(selPluginResourceType)],\n };\n const updatedNestedConditionRow = [\n ...nestedConditionRow,\n newNestedCondition,\n ];\n updateRules(\n currentCriteria === criterias.not\n ? newNestedCondition\n : updatedNestedConditionRow,\n );\n\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n if (updatedErrors[currentCriteria]) {\n const criteriaErrors = updatedErrors[\n currentCriteria\n ] as ComplexErrors[];\n if (Array.isArray(criteriaErrors)) {\n criteriaErrors.push({ [criterias.allOf]: [''] });\n } else {\n (updatedErrors[currentCriteria] as ComplexErrors) = {\n [criterias.allOf]: [''],\n };\n }\n }\n return updatedErrors;\n });\n };\n\n const handleNotConditionTypeChange = (val: NotConditionType) => {\n setNotConditionType(val);\n setErrors(resetErrors(criteria, val));\n if (val === 'nested-condition') {\n handleAddNestedCondition(criterias.not);\n } else {\n onRuleChange({\n not: getDefaultRule(selPluginResourceType),\n });\n }\n };\n\n const handleAddRuleInNestedCondition = (\n nestedConditionCriteria: string,\n nestedConditionIndex: number,\n ) => {\n const updatedNestedConditionRow: Condition[] = [];\n\n nestedConditionRow.forEach((c, index) => {\n if (index === nestedConditionIndex) {\n updatedNestedConditionRow.push({\n [nestedConditionCriteria as keyof Condition]: [\n ...((c[\n nestedConditionCriteria as keyof Condition\n ] as PermissionCondition[]) || []),\n getDefaultRule(selPluginResourceType),\n ],\n });\n } else {\n updatedNestedConditionRow.push(c);\n }\n });\n updateRules(\n criteria === criterias.not\n ? updatedNestedConditionRow[0]\n : updatedNestedConditionRow,\n );\n\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n if (updatedErrors[criteria] !== undefined) {\n const criteriaErrors = updatedErrors[criteria];\n if (\n criteria === criterias.not &&\n notConditionType === 'nested-condition'\n ) {\n (\n (criteriaErrors as NestedCriteriaErrors)[\n nestedConditionCriteria\n ] as string[]\n ).push('');\n return updatedErrors;\n }\n const simpleRuleErrors = (criteriaErrors as ComplexErrors[]).filter(\n (err: ComplexErrors) => typeof err === 'string',\n );\n const nestedConditionErrors = (\n criteriaErrors as ComplexErrors[]\n ).filter((err: ComplexErrors) => typeof err !== 'string');\n\n (\n ((\n nestedConditionErrors[nestedConditionIndex] as NestedCriteriaErrors\n )[nestedConditionCriteria] as string[]) || []\n ).push('');\n updatedErrors[criteria] = [\n ...simpleRuleErrors,\n ...nestedConditionErrors,\n ];\n }\n return updatedErrors;\n });\n };\n\n const handleRemoveNestedCondition = (nestedConditionIndex: number) => {\n const updatedNestedConditionRow = nestedConditionRow.filter(\n (_, index) => index !== nestedConditionIndex,\n );\n\n updateRules(updatedNestedConditionRow);\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n\n if (updatedErrors[criteria] !== undefined) {\n const criteriaErrors = updatedErrors[criteria] as ComplexErrors[];\n const simpleRuleErrors = criteriaErrors.filter(\n (err: ComplexErrors) => typeof err === 'string',\n );\n const nestedConditionErrors = criteriaErrors.filter(\n (err: ComplexErrors) => typeof err !== 'string',\n );\n nestedConditionErrors.splice(nestedConditionIndex, 1);\n\n updatedErrors[criteria] = [\n ...simpleRuleErrors,\n ...nestedConditionErrors,\n ];\n }\n\n return updatedErrors;\n });\n };\n\n const updateErrors = (_index: number) => {\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n\n if (!Array.isArray(updatedErrors[criteria])) {\n updatedErrors[criteria] = [];\n }\n\n const firstNestedConditionErrorIndex =\n (updatedErrors[criteria] as ComplexErrors[]).findIndex(\n e => typeof e !== 'string',\n ) || 0;\n\n (updatedErrors[criteria] as ComplexErrors[]).splice(\n firstNestedConditionErrorIndex,\n 0,\n '',\n );\n\n return updatedErrors;\n });\n };\n\n const renderNestedConditionRow = (\n nc: Condition,\n nestedConditionIndex: number,\n ) => {\n const selectedNestedConditionCriteria = Object.keys(nc)[0];\n const simpleRulesCount = getSimpleRulesCount(conditionRow, criteria);\n const nestedConditionsCount = nestedConditionRow.length;\n const nestedConditionSimpleRulesCount = getNestedConditionSimpleRulesCount(\n nc,\n selectedNestedConditionCriteria,\n );\n return (\n nestedConditionSimpleRulesCount > 0 && (\n <Box\n mt={2}\n key={`nestedCondition-${nestedConditionIndex}`}\n sx={{\n padding: '20px',\n marginLeft: theme.spacing(3),\n border: `1px solid ${theme.palette.border}`,\n borderRadius: '4px',\n backgroundColor: theme.palette.background.default,\n '& input': {\n backgroundColor: `${theme.palette.background.paper}!important`,\n },\n }}\n >\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <ToggleButtonGroup\n exclusive\n value={selectedNestedConditionCriteria}\n onChange={(_event, newNestedCriteria) =>\n handleNestedConditionCriteriaChange(\n newNestedCriteria,\n nestedConditionIndex,\n )\n }\n sx={{\n backgroundColor: theme.palette.background.paper,\n width: '60%',\n height: '100%',\n }}\n >\n {nestedConditionButtons.map(({ val, label }) => (\n <CriteriaToggleButton\n key={`nested-criteria-${val}`}\n val={val}\n label={label}\n selectedCriteria={selectedNestedConditionCriteria}\n theme={theme}\n />\n ))}\n </ToggleButtonGroup>\n {criteria !== criterias.not && (\n <IconButton\n title=\"Remove nested condition\"\n sx={{\n color: theme.palette.grey[500],\n flexGrow: 0,\n alignSelf: 'baseline',\n }}\n disabled={simpleRulesCount === 0 && nestedConditionsCount === 1} // 0 simple rules and this is the only 1 nested condition\n onClick={() =>\n handleRemoveNestedCondition(nestedConditionIndex)\n }\n >\n <RemoveIcon data-testid=\"remove-nested-condition\" />\n </IconButton>\n )}\n </div>\n <Box>\n {selectedNestedConditionCriteria !== criterias.not &&\n (\n nc[\n selectedNestedConditionCriteria as keyof Condition\n ] as PermissionCondition[]\n ).map((c, ncrIndex) => (\n <ComplexConditionRow\n key={`nested-condition-${nestedConditionIndex}-${ncrIndex}`}\n conditionRow={conditionRow}\n nestedConditionRow={nestedConditionRow}\n criteria={criteria}\n onRuleChange={onRuleChange}\n updateRules={updateRules}\n setErrors={setErrors}\n setRemoveAllClicked={setRemoveAllClicked}\n conditionRulesData={conditionRulesData}\n notConditionType={notConditionType}\n currentCondition={c}\n ruleIndex={ncrIndex}\n isNestedCondition\n nestedConditionIndex={nestedConditionIndex}\n activeNestedCriteria={\n selectedNestedConditionCriteria as 'allOf' | 'anyOf'\n }\n />\n ))}\n {selectedNestedConditionCriteria === criterias.not &&\n ((nc as ConditionsData).not as PermissionCondition)\n .resourceType && (\n <ConditionsFormRowFields\n oldCondition={\n (nc as ConditionsData).not ??\n getDefaultRule(selPluginResourceType)\n }\n onRuleChange={onRuleChange}\n conditionRow={conditionRow}\n criteria={criteria}\n conditionRulesData={conditionRulesData}\n setErrors={setErrors}\n optionDisabled={ruleOption =>\n ruleOptionDisabled(\n ruleOption,\n (nc as ConditionsData).not\n ? [(nc as ConditionsData).not as PermissionCondition]\n : undefined,\n )\n }\n setRemoveAllClicked={setRemoveAllClicked}\n nestedConditionRow={nestedConditionRow}\n nestedConditionCriteria={selectedNestedConditionCriteria}\n nestedConditionIndex={nestedConditionIndex}\n updateRules={updateRules}\n />\n )}\n {selectedNestedConditionCriteria !== criterias.not && (\n <Button\n sx={{\n mt: 1,\n color: theme.palette.primary.light,\n }}\n size=\"small\"\n onClick={() =>\n handleAddRuleInNestedCondition(\n selectedNestedConditionCriteria,\n nestedConditionIndex,\n )\n }\n startIcon={<AddIcon fontSize=\"small\" />}\n >\n Add rule\n </Button>\n )}\n </Box>\n </Box>\n )\n );\n };\n\n return (\n <Box\n sx={{\n padding: '20px',\n border: `1px solid ${theme.palette.border}`,\n borderRadius: '4px',\n backgroundColor: theme.palette.background.default,\n '& input': {\n color: `${theme.palette.textContrast}!important`,\n '&:-internal-autofill-selected, &:-webkit-autofill, &:-webkit-autofill:hover, &:-webkit-autofill:focus, &:-webkit-autofill:active':\n {\n WebkitBoxShadow: `0 0 0px 1000px ${theme.palette.background.paper} inset`,\n WebkitTextFillColor: `${theme.palette.textContrast}!important`,\n caretColor: `${theme.palette.textContrast}!important`,\n },\n },\n '& button': {\n textTransform: 'none',\n },\n }}\n data-testid=\"conditions-row\"\n >\n <ToggleButtonGroup\n exclusive\n value={criteria}\n onChange={(_event, newCriteria) => handleCriteriaChange(newCriteria)}\n sx={{\n backgroundColor: theme.palette.background.paper,\n width: '80%',\n }}\n >\n {conditionButtons.map(({ val, label }) => (\n <CriteriaToggleButton\n key={`criteria-${val}`}\n val={val}\n label={label}\n selectedCriteria={criteria}\n theme={theme}\n />\n ))}\n </ToggleButtonGroup>\n <ConditionRule\n conditionRow={conditionRow}\n selPluginResourceType={selPluginResourceType}\n onRuleChange={onRuleChange}\n criteria={criteria}\n conditionRulesData={conditionRulesData}\n setErrors={setErrors}\n setRemoveAllClicked={setRemoveAllClicked}\n />\n {criteria !== criterias.condition && (\n <Box>\n {criteria !== criterias.not &&\n (conditionRow[criteria] as PermissionCondition[])?.map(\n (c, srIndex) => (\n <ComplexConditionRow\n key={`${criteria}-simple-condition-${srIndex}`}\n conditionRow={conditionRow}\n nestedConditionRow={nestedConditionRow}\n criteria={criteria}\n onRuleChange={onRuleChange}\n updateRules={updateRules}\n setErrors={setErrors}\n setRemoveAllClicked={setRemoveAllClicked}\n conditionRulesData={conditionRulesData}\n notConditionType={notConditionType}\n currentCondition={c}\n ruleIndex={srIndex}\n activeCriteria={criteria as 'allOf' | 'anyOf'}\n />\n ),\n )}\n {criteria === criterias.not && (\n <RadioGroup\n sx={{\n margin: theme.spacing(1),\n }}\n value={notConditionType}\n onChange={(_event, value) =>\n handleNotConditionTypeChange(value as NotConditionType)\n }\n >\n <FormControlLabel\n value={NotConditionType.SimpleCondition}\n control={<Radio color=\"primary\" />}\n label=\"Add rule\"\n sx={{\n marginTop: theme.spacing(1),\n }}\n />\n {notConditionType === NotConditionType.SimpleCondition && (\n <ConditionsFormRowFields\n oldCondition={\n conditionRow.not ?? getDefaultRule(selPluginResourceType)\n }\n onRuleChange={onRuleChange}\n conditionRow={conditionRow}\n criteria={criteria}\n conditionRulesData={conditionRulesData}\n setErrors={setErrors}\n optionDisabled={ruleOption =>\n ruleOptionDisabled(\n ruleOption,\n conditionRow.not\n ? [conditionRow.not as PermissionCondition]\n : undefined,\n )\n }\n setRemoveAllClicked={setRemoveAllClicked}\n />\n )}\n <FormControlLabel\n value={NotConditionType.NestedCondition}\n control={<Radio color=\"primary\" />}\n label={<AddNestedConditionButton />}\n sx={{\n marginTop: theme.spacing(1),\n }}\n />\n </RadioGroup>\n )}\n <ComplexConditionRowButtons\n conditionRow={conditionRow}\n onRuleChange={onRuleChange}\n criteria={criteria}\n selPluginResourceType={selPluginResourceType}\n updateErrors={updateErrors}\n isNestedConditionRule={isNestedConditionRule}\n handleAddNestedCondition={handleAddNestedCondition}\n />\n {nestedConditionRow?.length > 0 &&\n nestedConditionRow.map((nc, nestedConditionIndex) =>\n renderNestedConditionRow(nc, nestedConditionIndex),\n )}\n </Box>\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionsFormRow.esm.js","sources":["../../../src/components/ConditionalAccess/ConditionsFormRow.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\n\nimport { PermissionCondition } from '@backstage/plugin-permission-common';\n\nimport AddIcon from '@mui/icons-material/Add';\nimport RemoveIcon from '@mui/icons-material/Remove';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport IconButton from '@mui/material/IconButton';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport { useTheme } from '@mui/material/styles';\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\n\nimport {\n extractNestedConditions,\n getDefaultRule,\n getNestedConditionSimpleRulesCount,\n getSimpleRulesCount,\n isNestedConditionRule,\n isSimpleRule,\n nestedConditionButtons,\n resetErrors,\n ruleOptionDisabled,\n} from '../../utils/conditional-access-utils';\nimport { AddNestedConditionButton } from './AddNestedConditionButton';\nimport { ComplexConditionRow } from './ComplexConditionRow';\nimport { ComplexConditionRowButtons } from './ComplexConditionRowButtons';\nimport { ConditionRule } from './ConditionRule';\nimport { ConditionsFormRowFields } from './ConditionsFormRowFields';\nimport { conditionButtons, criterias } from './const';\nimport { CriteriaToggleButton } from './CriteriaToggleButton';\nimport {\n ComplexErrors,\n Condition,\n ConditionFormRowProps,\n ConditionsData,\n NestedCriteriaErrors,\n NotConditionType,\n} from './types';\n\nexport const ConditionsFormRow = ({\n conditionRulesData,\n conditionRow,\n selPluginResourceType,\n criteria,\n onRuleChange,\n setCriteria,\n setErrors,\n setRemoveAllClicked,\n}: ConditionFormRowProps) => {\n const theme = useTheme();\n const [nestedConditionRow, setNestedConditionRow] = React.useState<\n Condition[]\n >([]);\n const [notConditionType, setNotConditionType] =\n React.useState<NotConditionType>(NotConditionType.SimpleCondition);\n\n React.useEffect(() => {\n const nestedConditions: Condition[] = [];\n const criteriaTypes = [criterias.allOf, criterias.anyOf, criterias.not];\n switch (criteria) {\n case criterias.allOf:\n extractNestedConditions(\n conditionRow.allOf || [],\n criteriaTypes,\n nestedConditions,\n );\n break;\n case criterias.anyOf:\n extractNestedConditions(\n conditionRow.anyOf || [],\n criteriaTypes,\n nestedConditions,\n );\n break;\n case criterias.not:\n if (\n conditionRow.not &&\n criteriaTypes.includes(\n Object.keys(conditionRow.not)[0] as keyof ConditionsData,\n )\n ) {\n nestedConditions.push(conditionRow.not);\n setNotConditionType(NotConditionType.NestedCondition);\n }\n break;\n default:\n break;\n }\n\n setNestedConditionRow(nestedConditions);\n }, [conditionRow, criteria]);\n\n const handleCriteriaChange = (val: keyof ConditionsData) => {\n setCriteria(val);\n setErrors(resetErrors(val));\n\n const defaultRule = getDefaultRule(selPluginResourceType);\n\n const ruleMap = {\n [criterias.condition]: { condition: defaultRule },\n [criterias.allOf]: { allOf: [defaultRule] },\n [criterias.anyOf]: { anyOf: [defaultRule] },\n [criterias.not]: { not: defaultRule },\n };\n\n if (val === criterias.not) {\n setNotConditionType(NotConditionType.SimpleCondition);\n }\n\n const ruleChange = ruleMap[val];\n if (ruleChange) {\n onRuleChange(ruleChange);\n }\n };\n\n const updateRules = (updatedNestedConditionRow: Condition[] | Condition) => {\n const existingSimpleCondition =\n criteria !== criterias.not\n ? (conditionRow[criteria as keyof Condition] as Condition[])?.filter(\n con => isSimpleRule(con),\n ) || []\n : [];\n\n const newCondition: Condition[] = Array.isArray(updatedNestedConditionRow)\n ? [...existingSimpleCondition, ...updatedNestedConditionRow]\n : [...existingSimpleCondition, updatedNestedConditionRow];\n\n if (criteria === criterias.anyOf || criteria === criterias.allOf) {\n onRuleChange({\n [criteria]: newCondition,\n });\n } else if (\n criteria === criterias.not &&\n !Array.isArray(updatedNestedConditionRow)\n ) {\n onRuleChange({\n not: updatedNestedConditionRow,\n });\n }\n };\n\n const handleNestedConditionCriteriaChange = (\n val: string,\n nestedConditionIndex: number,\n ) => {\n const defaultRule = getDefaultRule(selPluginResourceType);\n\n const nestedConditionMap = {\n [criterias.not]: { [val]: defaultRule },\n [criterias.allOf]: { [val]: [defaultRule] },\n [criterias.anyOf]: { [val]: [defaultRule] },\n [criterias.condition]: { [val]: [defaultRule] },\n };\n\n const newCondition = nestedConditionMap[val] || { [val]: [defaultRule] };\n\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n\n if (updatedErrors[criteria] !== undefined) {\n if (criteria === criterias.not) {\n (updatedErrors[criteria] as ComplexErrors) =\n val !== criterias.not ? { [val]: [''] } : { [val]: '' };\n return updatedErrors;\n }\n const criteriaErrors = updatedErrors[criteria];\n const simpleRuleErrors = (criteriaErrors as ComplexErrors[]).filter(\n (err: ComplexErrors) => typeof err === 'string',\n );\n const nestedConditionErrors = (\n criteriaErrors as ComplexErrors[]\n ).filter((err: ComplexErrors) => typeof err !== 'string');\n nestedConditionErrors[nestedConditionIndex] =\n val !== criterias.not ? { [val]: [''] } : { [val]: '' };\n updatedErrors[criteria] = [\n ...simpleRuleErrors,\n ...nestedConditionErrors,\n ];\n }\n\n return updatedErrors;\n });\n\n if (criteria === criterias.not) {\n updateRules(newCondition);\n } else {\n const updatedNestedConditionRow = nestedConditionRow.map((c, index) => {\n if (index === nestedConditionIndex) {\n return newCondition;\n }\n return c;\n });\n updateRules(updatedNestedConditionRow);\n }\n };\n\n const handleAddNestedCondition = (currentCriteria: string) => {\n const newNestedCondition = {\n [criterias.allOf]: [getDefaultRule(selPluginResourceType)],\n };\n const updatedNestedConditionRow = [\n ...nestedConditionRow,\n newNestedCondition,\n ];\n updateRules(\n currentCriteria === criterias.not\n ? newNestedCondition\n : updatedNestedConditionRow,\n );\n\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n if (updatedErrors[currentCriteria]) {\n const criteriaErrors = updatedErrors[\n currentCriteria\n ] as ComplexErrors[];\n if (Array.isArray(criteriaErrors)) {\n criteriaErrors.push({ [criterias.allOf]: [''] });\n } else {\n (updatedErrors[currentCriteria] as ComplexErrors) = {\n [criterias.allOf]: [''],\n };\n }\n }\n return updatedErrors;\n });\n };\n\n const handleNotConditionTypeChange = (val: NotConditionType) => {\n setNotConditionType(val);\n setErrors(resetErrors(criteria, val));\n if (val === 'nested-condition') {\n handleAddNestedCondition(criterias.not);\n } else {\n onRuleChange({\n not: getDefaultRule(selPluginResourceType),\n });\n }\n };\n\n const handleAddRuleInNestedCondition = (\n nestedConditionCriteria: string,\n nestedConditionIndex: number,\n ) => {\n const updatedNestedConditionRow: Condition[] = [];\n\n nestedConditionRow.forEach((c, index) => {\n if (index === nestedConditionIndex) {\n updatedNestedConditionRow.push({\n [nestedConditionCriteria as keyof Condition]: [\n ...((c[\n nestedConditionCriteria as keyof Condition\n ] as PermissionCondition[]) || []),\n getDefaultRule(selPluginResourceType),\n ],\n });\n } else {\n updatedNestedConditionRow.push(c);\n }\n });\n updateRules(\n criteria === criterias.not\n ? updatedNestedConditionRow[0]\n : updatedNestedConditionRow,\n );\n\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n if (updatedErrors[criteria] !== undefined) {\n const criteriaErrors = updatedErrors[criteria];\n if (\n criteria === criterias.not &&\n notConditionType === 'nested-condition'\n ) {\n (\n (criteriaErrors as NestedCriteriaErrors)[\n nestedConditionCriteria\n ] as string[]\n ).push('');\n return updatedErrors;\n }\n const simpleRuleErrors = (criteriaErrors as ComplexErrors[]).filter(\n (err: ComplexErrors) => typeof err === 'string',\n );\n const nestedConditionErrors = (\n criteriaErrors as ComplexErrors[]\n ).filter((err: ComplexErrors) => typeof err !== 'string');\n\n (\n ((\n nestedConditionErrors[nestedConditionIndex] as NestedCriteriaErrors\n )[nestedConditionCriteria] as string[]) || []\n ).push('');\n updatedErrors[criteria] = [\n ...simpleRuleErrors,\n ...nestedConditionErrors,\n ];\n }\n return updatedErrors;\n });\n };\n\n const handleRemoveNestedCondition = (nestedConditionIndex: number) => {\n const updatedNestedConditionRow = nestedConditionRow.filter(\n (_, index) => index !== nestedConditionIndex,\n );\n\n updateRules(updatedNestedConditionRow);\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n\n if (updatedErrors[criteria] !== undefined) {\n const criteriaErrors = updatedErrors[criteria] as ComplexErrors[];\n const simpleRuleErrors = criteriaErrors.filter(\n (err: ComplexErrors) => typeof err === 'string',\n );\n const nestedConditionErrors = criteriaErrors.filter(\n (err: ComplexErrors) => typeof err !== 'string',\n );\n nestedConditionErrors.splice(nestedConditionIndex, 1);\n\n updatedErrors[criteria] = [\n ...simpleRuleErrors,\n ...nestedConditionErrors,\n ];\n }\n\n return updatedErrors;\n });\n };\n\n const updateErrors = (_index: number) => {\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n\n if (!Array.isArray(updatedErrors[criteria])) {\n updatedErrors[criteria] = [];\n }\n\n const firstNestedConditionErrorIndex =\n (updatedErrors[criteria] as ComplexErrors[]).findIndex(\n e => typeof e !== 'string',\n ) || 0;\n\n (updatedErrors[criteria] as ComplexErrors[]).splice(\n firstNestedConditionErrorIndex,\n 0,\n '',\n );\n\n return updatedErrors;\n });\n };\n\n const renderNestedConditionRow = (\n nc: Condition,\n nestedConditionIndex: number,\n ) => {\n const selectedNestedConditionCriteria = Object.keys(nc)[0];\n const simpleRulesCount = getSimpleRulesCount(conditionRow, criteria);\n const nestedConditionsCount = nestedConditionRow.length;\n const nestedConditionSimpleRulesCount = getNestedConditionSimpleRulesCount(\n nc,\n selectedNestedConditionCriteria,\n );\n return (\n nestedConditionSimpleRulesCount > 0 && (\n <Box\n mt={2}\n key={`nestedCondition-${nestedConditionIndex}`}\n sx={{\n padding: '20px',\n marginLeft: theme.spacing(3),\n border: `1px solid ${theme.palette.border}`,\n borderRadius: '4px',\n backgroundColor: theme.palette.background.default,\n '& input': {\n backgroundColor: `${theme.palette.background.paper}!important`,\n },\n }}\n >\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <ToggleButtonGroup\n exclusive\n value={selectedNestedConditionCriteria}\n onChange={(_event, newNestedCriteria) =>\n handleNestedConditionCriteriaChange(\n newNestedCriteria,\n nestedConditionIndex,\n )\n }\n sx={{\n backgroundColor: theme.palette.background.paper,\n width: '60%',\n height: '100%',\n }}\n >\n {nestedConditionButtons.map(({ val, label }) => (\n <CriteriaToggleButton\n key={`nested-criteria-${val}`}\n val={val}\n label={label}\n selectedCriteria={selectedNestedConditionCriteria}\n theme={theme}\n />\n ))}\n </ToggleButtonGroup>\n {criteria !== criterias.not && (\n <IconButton\n title=\"Remove nested condition\"\n sx={{\n color: theme.palette.grey[500],\n flexGrow: 0,\n alignSelf: 'baseline',\n }}\n disabled={simpleRulesCount === 0 && nestedConditionsCount === 1} // 0 simple rules and this is the only 1 nested condition\n onClick={() =>\n handleRemoveNestedCondition(nestedConditionIndex)\n }\n >\n <RemoveIcon data-testid=\"remove-nested-condition\" />\n </IconButton>\n )}\n </div>\n <Box>\n {selectedNestedConditionCriteria !== criterias.not &&\n (\n nc[\n selectedNestedConditionCriteria as keyof Condition\n ] as PermissionCondition[]\n ).map((c, ncrIndex) => (\n <ComplexConditionRow\n key={`nested-condition-${nestedConditionIndex}-${ncrIndex}`}\n conditionRow={conditionRow}\n nestedConditionRow={nestedConditionRow}\n criteria={criteria}\n onRuleChange={onRuleChange}\n updateRules={updateRules}\n setErrors={setErrors}\n setRemoveAllClicked={setRemoveAllClicked}\n conditionRulesData={conditionRulesData}\n notConditionType={notConditionType}\n currentCondition={c}\n ruleIndex={ncrIndex}\n isNestedCondition\n nestedConditionIndex={nestedConditionIndex}\n activeNestedCriteria={\n selectedNestedConditionCriteria as 'allOf' | 'anyOf'\n }\n />\n ))}\n {selectedNestedConditionCriteria === criterias.not &&\n ((nc as ConditionsData).not as PermissionCondition)\n .resourceType && (\n <ConditionsFormRowFields\n oldCondition={\n (nc as ConditionsData).not ??\n getDefaultRule(selPluginResourceType)\n }\n onRuleChange={onRuleChange}\n conditionRow={conditionRow}\n criteria={criteria}\n conditionRulesData={conditionRulesData}\n setErrors={setErrors}\n optionDisabled={ruleOption =>\n ruleOptionDisabled(\n ruleOption,\n (nc as ConditionsData).not\n ? [(nc as ConditionsData).not as PermissionCondition]\n : undefined,\n )\n }\n setRemoveAllClicked={setRemoveAllClicked}\n nestedConditionRow={nestedConditionRow}\n nestedConditionCriteria={selectedNestedConditionCriteria}\n nestedConditionIndex={nestedConditionIndex}\n updateRules={updateRules}\n />\n )}\n {selectedNestedConditionCriteria !== criterias.not && (\n <Button\n sx={{\n mt: 1,\n color: theme.palette.primary.light,\n }}\n size=\"small\"\n onClick={() =>\n handleAddRuleInNestedCondition(\n selectedNestedConditionCriteria,\n nestedConditionIndex,\n )\n }\n startIcon={<AddIcon fontSize=\"small\" />}\n >\n Add rule\n </Button>\n )}\n </Box>\n </Box>\n )\n );\n };\n\n return (\n <Box\n sx={{\n padding: '20px',\n border: `1px solid ${theme.palette.border}`,\n borderRadius: '4px',\n backgroundColor: theme.palette.background.default,\n '& input': {\n color: `${theme.palette.textContrast}!important`,\n '&:-internal-autofill-selected, &:-webkit-autofill, &:-webkit-autofill:hover, &:-webkit-autofill:focus, &:-webkit-autofill:active':\n {\n WebkitBoxShadow: `0 0 0px 1000px ${theme.palette.background.paper} inset`,\n WebkitTextFillColor: `${theme.palette.textContrast}!important`,\n caretColor: `${theme.palette.textContrast}!important`,\n },\n },\n '& button': {\n textTransform: 'none',\n },\n }}\n data-testid=\"conditions-row\"\n >\n <ToggleButtonGroup\n exclusive\n value={criteria}\n onChange={(_event, newCriteria) => handleCriteriaChange(newCriteria)}\n sx={{\n backgroundColor: theme.palette.background.paper,\n width: '80%',\n }}\n >\n {conditionButtons.map(({ val, label }) => (\n <CriteriaToggleButton\n key={`criteria-${val}`}\n val={val}\n label={label}\n selectedCriteria={criteria}\n theme={theme}\n />\n ))}\n </ToggleButtonGroup>\n <ConditionRule\n conditionRow={conditionRow}\n selPluginResourceType={selPluginResourceType}\n onRuleChange={onRuleChange}\n criteria={criteria}\n conditionRulesData={conditionRulesData}\n setErrors={setErrors}\n setRemoveAllClicked={setRemoveAllClicked}\n />\n {criteria !== criterias.condition && (\n <Box>\n {criteria !== criterias.not &&\n (conditionRow[criteria] as PermissionCondition[])?.map(\n (c, srIndex) => (\n <ComplexConditionRow\n key={`${criteria}-simple-condition-${srIndex}`}\n conditionRow={conditionRow}\n nestedConditionRow={nestedConditionRow}\n criteria={criteria}\n onRuleChange={onRuleChange}\n updateRules={updateRules}\n setErrors={setErrors}\n setRemoveAllClicked={setRemoveAllClicked}\n conditionRulesData={conditionRulesData}\n notConditionType={notConditionType}\n currentCondition={c}\n ruleIndex={srIndex}\n activeCriteria={criteria as 'allOf' | 'anyOf'}\n />\n ),\n )}\n {criteria === criterias.not && (\n <RadioGroup\n sx={{\n margin: theme.spacing(1),\n }}\n value={notConditionType}\n onChange={(_event, value) =>\n handleNotConditionTypeChange(value as NotConditionType)\n }\n >\n <FormControlLabel\n value={NotConditionType.SimpleCondition}\n control={<Radio color=\"primary\" />}\n label=\"Add rule\"\n sx={{\n marginTop: theme.spacing(1),\n }}\n />\n {notConditionType === NotConditionType.SimpleCondition && (\n <ConditionsFormRowFields\n oldCondition={\n conditionRow.not ?? getDefaultRule(selPluginResourceType)\n }\n onRuleChange={onRuleChange}\n conditionRow={conditionRow}\n criteria={criteria}\n conditionRulesData={conditionRulesData}\n setErrors={setErrors}\n optionDisabled={ruleOption =>\n ruleOptionDisabled(\n ruleOption,\n conditionRow.not\n ? [conditionRow.not as PermissionCondition]\n : undefined,\n )\n }\n setRemoveAllClicked={setRemoveAllClicked}\n />\n )}\n <FormControlLabel\n value={NotConditionType.NestedCondition}\n control={<Radio color=\"primary\" />}\n label={<AddNestedConditionButton />}\n sx={{\n marginTop: theme.spacing(1),\n }}\n />\n </RadioGroup>\n )}\n <ComplexConditionRowButtons\n conditionRow={conditionRow}\n onRuleChange={onRuleChange}\n criteria={criteria}\n selPluginResourceType={selPluginResourceType}\n updateErrors={updateErrors}\n isNestedConditionRule={isNestedConditionRule}\n handleAddNestedCondition={handleAddNestedCondition}\n />\n {nestedConditionRow?.length > 0 &&\n nestedConditionRow.map((nc, nestedConditionIndex) =>\n renderNestedConditionRow(nc, nestedConditionIndex),\n )}\n </Box>\n )}\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React__default from 'react';
|
|
2
2
|
import Autocomplete from '@mui/material/Autocomplete';
|
|
3
3
|
import Box from '@mui/material/Box';
|
|
4
4
|
import { useTheme } from '@mui/material/styles';
|
|
@@ -152,7 +152,7 @@ const ConditionsFormRowFields = ({
|
|
|
152
152
|
}
|
|
153
153
|
};
|
|
154
154
|
const handleNestedConditionChange = (newCondition) => {
|
|
155
|
-
if (!nestedConditionRow || !nestedConditionCriteria || nestedConditionIndex ===
|
|
155
|
+
if (!nestedConditionRow || !nestedConditionCriteria || nestedConditionIndex === undefined || !updateRules) {
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
158
|
const updatedNestedConditionRow = nestedConditionRow.map(
|
|
@@ -189,7 +189,7 @@ const ConditionsFormRowFields = ({
|
|
|
189
189
|
setErrors((prevErrors) => {
|
|
190
190
|
const updatedErrors = { ...prevErrors };
|
|
191
191
|
const nestedErrors = updatedErrors[criteria][nestedConditionCriteria];
|
|
192
|
-
if (Array.isArray(nestedErrors) && nestedConditionRuleIndex !==
|
|
192
|
+
if (Array.isArray(nestedErrors) && nestedConditionRuleIndex !== undefined) {
|
|
193
193
|
nestedErrors[nestedConditionRuleIndex] = setErrorMessage(errors);
|
|
194
194
|
} else {
|
|
195
195
|
updatedErrors[criteria] = {
|
|
@@ -205,19 +205,19 @@ const ConditionsFormRowFields = ({
|
|
|
205
205
|
const simpleRuleErrors = getSimpleRuleErrors(
|
|
206
206
|
updatedErrors[criteria]
|
|
207
207
|
);
|
|
208
|
-
if (Array.isArray(simpleRuleErrors) && simpleRuleErrors.length > 0 && index !==
|
|
208
|
+
if (Array.isArray(simpleRuleErrors) && simpleRuleErrors.length > 0 && index !== undefined) {
|
|
209
209
|
simpleRuleErrors[index] = setErrorMessage(errors);
|
|
210
210
|
}
|
|
211
211
|
const nestedRuleErrors = getNestedRuleErrors(
|
|
212
212
|
updatedErrors[criteria]
|
|
213
213
|
);
|
|
214
|
-
if (nestedConditionCriteria && nestedConditionIndex !==
|
|
214
|
+
if (nestedConditionCriteria && nestedConditionIndex !== undefined && nestedConditionRuleIndex !== undefined) {
|
|
215
215
|
const nestedConditionRuleList = nestedRuleErrors[nestedConditionIndex][nestedConditionCriteria];
|
|
216
216
|
if (Array.isArray(nestedConditionRuleList)) {
|
|
217
217
|
nestedConditionRuleList[nestedConditionRuleIndex] = setErrorMessage(errors);
|
|
218
218
|
}
|
|
219
219
|
}
|
|
220
|
-
if (Array.isArray(nestedRuleErrors) && nestedRuleErrors.length > 0 && nestedConditionCriteria === criterias.not && nestedConditionIndex !==
|
|
220
|
+
if (Array.isArray(nestedRuleErrors) && nestedRuleErrors.length > 0 && nestedConditionCriteria === criterias.not && nestedConditionIndex !== undefined) {
|
|
221
221
|
nestedRuleErrors[nestedConditionIndex][nestedConditionCriteria] = setErrorMessage(errors);
|
|
222
222
|
}
|
|
223
223
|
updatedErrors[criteria] = [...simpleRuleErrors, ...nestedRuleErrors];
|
|
@@ -233,7 +233,7 @@ const ConditionsFormRowFields = ({
|
|
|
233
233
|
handleConditionChange(newCondition);
|
|
234
234
|
}
|
|
235
235
|
};
|
|
236
|
-
return /* @__PURE__ */
|
|
236
|
+
return /* @__PURE__ */ React__default.createElement(Box, { className: classes.inputFieldContainer }, /* @__PURE__ */ React__default.createElement(
|
|
237
237
|
Autocomplete,
|
|
238
238
|
{
|
|
239
239
|
style: { width: "50%", marginTop: "26px" },
|
|
@@ -246,7 +246,7 @@ const ConditionsFormRowFields = ({
|
|
|
246
246
|
rule: ruleVal ?? "",
|
|
247
247
|
params: {}
|
|
248
248
|
}),
|
|
249
|
-
renderOption: (props, option) => /* @__PURE__ */
|
|
249
|
+
renderOption: (props, option) => /* @__PURE__ */ React__default.createElement(
|
|
250
250
|
RulesDropdownOption,
|
|
251
251
|
{
|
|
252
252
|
props,
|
|
@@ -254,7 +254,7 @@ const ConditionsFormRowFields = ({
|
|
|
254
254
|
rulesData: conditionRulesData
|
|
255
255
|
}
|
|
256
256
|
),
|
|
257
|
-
renderInput: (params) => /* @__PURE__ */
|
|
257
|
+
renderInput: (params) => /* @__PURE__ */ React__default.createElement(
|
|
258
258
|
TextField,
|
|
259
259
|
{
|
|
260
260
|
...params,
|
|
@@ -265,7 +265,7 @@ const ConditionsFormRowFields = ({
|
|
|
265
265
|
}
|
|
266
266
|
)
|
|
267
267
|
}
|
|
268
|
-
), /* @__PURE__ */
|
|
268
|
+
), /* @__PURE__ */ React__default.createElement(Box, { style: { width: "50%" } }, schema ? /* @__PURE__ */ React__default.createElement(
|
|
269
269
|
Form,
|
|
270
270
|
{
|
|
271
271
|
schema: paramsSchema,
|
|
@@ -281,7 +281,7 @@ const ConditionsFormRowFields = ({
|
|
|
281
281
|
showErrorList: false,
|
|
282
282
|
liveValidate: true
|
|
283
283
|
}
|
|
284
|
-
) : /* @__PURE__ */
|
|
284
|
+
) : /* @__PURE__ */ React__default.createElement(
|
|
285
285
|
TextField,
|
|
286
286
|
{
|
|
287
287
|
style: { width: "100%", marginTop: "26px" },
|