@backstage-community/plugin-rbac 1.35.0 → 1.37.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 +13 -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 +5 -5
- 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 +2 -2
- 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 +14 -14
- package/dist/components/ConditionalAccess/ConditionsForm.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ConditionsFormRow.esm.js +27 -27
- package/dist/components/ConditionalAccess/ConditionsFormRow.esm.js.map +1 -1
- package/dist/components/ConditionalAccess/ConditionsFormRowFields.esm.js +6 -6
- 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 +13 -13
- 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/CancelDialog.esm.js +90 -0
- package/dist/components/CreateRole/CancelDialog.esm.js.map +1 -0
- 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 +98 -104
- package/dist/components/CreateRole/PermissionPoliciesForm.esm.js.map +1 -1
- package/dist/components/CreateRole/PermissionPoliciesFormNestedRow.esm.js +124 -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 +30 -37
- 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/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/useMembers.esm.js +2 -2
- package/dist/hooks/useMembers.esm.js.map +1 -1
- package/dist/hooks/usePermissionPolicies.esm.js +9 -5
- package/dist/hooks/usePermissionPolicies.esm.js.map +1 -1
- package/dist/hooks/useRoles.esm.js +7 -9
- package/dist/hooks/useRoles.esm.js.map +1 -1
- package/dist/utils/create-role-utils.esm.js +14 -9
- package/dist/utils/create-role-utils.esm.js.map +1 -1
- package/dist/utils/rbac-utils.esm.js +21 -10
- package/dist/utils/rbac-utils.esm.js.map +1 -1
- package/dist/utils/role-form-utils.esm.js +17 -1
- package/dist/utils/role-form-utils.esm.js.map +1 -1
- package/package.json +1 -1
- 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,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) {
|
|
@@ -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),
|
|
@@ -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),
|
|
@@ -481,18 +481,18 @@ const ConditionsFormRow = ({
|
|
|
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';
|
|
@@ -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" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionsFormRowFields.esm.js","sources":["../../../src/components/ConditionalAccess/ConditionsFormRowFields.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 Autocomplete from '@mui/material/Autocomplete';\nimport Box from '@mui/material/Box';\nimport { Theme, useTheme } from '@mui/material/styles';\nimport TextField from '@mui/material/TextField';\nimport { makeStyles } from '@mui/styles';\nimport Form from '@rjsf/mui';\nimport {\n RegistryFieldsType,\n RJSFSchema,\n RJSFValidationError,\n UiSchema,\n} from '@rjsf/utils';\nimport validator from '@rjsf/validator-ajv8';\n\nimport {\n getNestedRuleErrors,\n getSimpleRuleErrors,\n isSimpleRule,\n setErrorMessage,\n} from '../../utils/conditional-access-utils';\nimport { criterias } from './const';\nimport { CustomArrayField } from './CustomArrayField';\nimport { RulesDropdownOption } from './RulesDropdownOption';\nimport {\n AccessConditionsErrors,\n ComplexErrors,\n Condition,\n ConditionsData,\n NestedCriteriaErrors,\n RulesData,\n} from './types';\n\ntype ConditionFormRowFieldsProps = {\n oldCondition: Condition;\n index?: number;\n criteria: string;\n onRuleChange: (newCondition: ConditionsData) => void;\n conditionRow: ConditionsData | Condition;\n conditionRulesData?: RulesData;\n setErrors: React.Dispatch<\n React.SetStateAction<AccessConditionsErrors | undefined>\n >;\n optionDisabled?: (ruleOption: string) => boolean;\n setRemoveAllClicked: React.Dispatch<React.SetStateAction<boolean>>;\n nestedConditionRow?: Condition[];\n nestedConditionCriteria?: string;\n nestedConditionIndex?: number;\n nestedConditionRuleIndex?: number;\n updateRules?: (newCondition: Condition[] | Condition) => void;\n};\n\ninterface StyleProps {\n isNotSimpleCondition: boolean;\n}\n\nconst makeConditionsFormRowFieldsStyles = makeStyles<Theme, StyleProps>(() => ({\n inputFieldContainer: {\n display: 'flex',\n flexFlow: 'row',\n gap: '10px',\n flexGrow: 1,\n margin: ({ isNotSimpleCondition }) =>\n isNotSimpleCondition ? '-1.5rem 0 0 1.85rem' : '0',\n },\n}));\n\nexport const getTextFieldStyles = (theme: Theme) => ({\n '& div[class*=\"MuiInputBase-root\"]': {\n backgroundColor: theme.palette.background.paper,\n },\n '& span': {\n color: theme.palette.textSubtle,\n },\n '& input': {\n color: theme.palette.textContrast,\n },\n '& fieldset.MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[500],\n },\n '& div.MuiOutlinedInput-root': {\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.primary.light,\n },\n '&.Mui-error .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.status.error,\n '&:hover': {\n borderColor: theme.palette.status.error,\n },\n },\n },\n '& label.MuiFormLabel-root.Mui-focused': {\n color: theme.palette.primary.light,\n },\n '& label.MuiFormLabel-root.Mui-error': {\n color: theme.palette.status.error,\n },\n '& div.MuiOutlinedInput-root:hover fieldset': {\n borderColor:\n theme.palette.mode === 'dark' ? theme.palette.textContrast : 'unset',\n },\n '& label': {\n color: theme.palette.textSubtle,\n },\n});\n\nexport const ConditionsFormRowFields = ({\n oldCondition,\n index,\n criteria,\n onRuleChange,\n conditionRow,\n conditionRulesData,\n setErrors,\n optionDisabled,\n setRemoveAllClicked,\n nestedConditionRow,\n nestedConditionCriteria,\n nestedConditionIndex,\n nestedConditionRuleIndex,\n updateRules,\n}: ConditionFormRowFieldsProps) => {\n const isNotSimpleCondition =\n criteria === criterias.not && !nestedConditionCriteria;\n const theme = useTheme();\n const classes = makeConditionsFormRowFieldsStyles({\n isNotSimpleCondition,\n });\n\n const rules = conditionRulesData?.rules ?? [];\n const paramsSchema =\n conditionRulesData?.[(oldCondition as PermissionCondition).rule]?.schema;\n\n const schema: RJSFSchema = paramsSchema;\n\n const uiSchema: UiSchema = {\n 'ui:submitButtonOptions': {\n norender: true,\n },\n 'ui:classNames': `{\n '& div[class*=\"MuiInputBase-root\"]': {\n backgroundColor: theme.palette.background.paper,\n },\n '& span': {\n color: theme.palette.textSubtle,\n },\n '& input': {\n color: theme.palette.textContrast,\n },\n '& fieldset.MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[500],\n },\n '& div.MuiOutlinedInput-root': {\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.primary.light,\n },\n '&.Mui-error .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.status.error,\n '&:hover': {\n borderColor: theme.palette.status.error,\n },\n },\n },\n '& label.MuiFormLabel-root.Mui-focused': {\n color: theme.palette.primary.light,\n },\n '& label.MuiFormLabel-root.Mui-error': {\n color: theme.palette.status.error,\n },\n '& div.MuiOutlinedInput-root:hover fieldset': {\n borderColor:\n theme.palette.mode === 'dark' ? theme.palette.textContrast : 'unset',\n },\n '& label': {\n color: theme.palette.textSubtle,\n },\n }`,\n 'ui:field': 'array',\n };\n\n const customFields: RegistryFieldsType = { ArrayField: CustomArrayField };\n\n const handleConditionChange = (newCondition: PermissionCondition) => {\n setRemoveAllClicked(false);\n switch (criteria) {\n case criterias.condition: {\n onRuleChange({ condition: newCondition });\n break;\n }\n case criterias.allOf: {\n const updatedCriteria = (conditionRow as ConditionsData).allOf ?? [];\n updatedCriteria[index ?? 0] = newCondition;\n onRuleChange({ allOf: updatedCriteria });\n break;\n }\n case criterias.anyOf: {\n const updatedCriteria = (conditionRow as ConditionsData).anyOf ?? [];\n updatedCriteria[index ?? 0] = newCondition;\n onRuleChange({ anyOf: updatedCriteria });\n break;\n }\n case criterias.not: {\n onRuleChange({ not: newCondition });\n break;\n }\n default:\n }\n };\n\n const handleNestedConditionChange = (newCondition: PermissionCondition) => {\n if (\n !nestedConditionRow ||\n !nestedConditionCriteria ||\n nestedConditionIndex === undefined ||\n !updateRules\n ) {\n return;\n }\n const updatedNestedConditionRow: Condition[] = nestedConditionRow.map(\n (c, i) => {\n if (i === nestedConditionIndex) {\n if (nestedConditionCriteria === criterias.not) {\n return {\n [nestedConditionCriteria]: newCondition,\n };\n }\n const updatedNestedConditionRules = (\n (c[\n nestedConditionCriteria as keyof Condition\n ] as PermissionCondition[]) || []\n ).map((rule, rindex) => {\n return rindex === nestedConditionRuleIndex ? newCondition : rule;\n });\n\n return {\n [nestedConditionCriteria]: updatedNestedConditionRules,\n };\n }\n return c;\n },\n );\n\n updateRules(\n criteria === criterias.not\n ? updatedNestedConditionRow[0]\n : updatedNestedConditionRow,\n );\n };\n\n const handleTransformErrors = (errors: RJSFValidationError[]) => {\n // criteria: condition or not simple-condition\n if (\n criteria === criterias.condition ||\n (criteria === criterias.not &&\n isSimpleRule(conditionRow[criteria as keyof Condition]))\n ) {\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n updatedErrors[criteria] = setErrorMessage(errors);\n\n return updatedErrors;\n });\n }\n\n // criteria: not nested-condition\n if (\n criteria === criterias.not &&\n nestedConditionCriteria &&\n !isSimpleRule(conditionRow[criteria as keyof Condition])\n ) {\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n const nestedErrors = (updatedErrors[criteria] as ComplexErrors)[\n nestedConditionCriteria as keyof Condition\n ] as NestedCriteriaErrors;\n\n // nestedCriteria: allOf or anyOf\n if (\n Array.isArray(nestedErrors) &&\n nestedConditionRuleIndex !== undefined\n ) {\n nestedErrors[nestedConditionRuleIndex] = setErrorMessage(errors);\n } else {\n // nestedCriteria: not\n updatedErrors[criteria] = {\n [nestedConditionCriteria]: setErrorMessage(errors),\n };\n }\n\n return updatedErrors;\n });\n }\n\n // criteria: allOf or anyOf\n if (criteria === criterias.allOf || criteria === criterias.anyOf) {\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n const simpleRuleErrors = getSimpleRuleErrors(\n updatedErrors[\n criteria as keyof AccessConditionsErrors\n ] as ComplexErrors[],\n );\n if (\n Array.isArray(simpleRuleErrors) &&\n simpleRuleErrors.length > 0 &&\n index !== undefined\n ) {\n simpleRuleErrors[index] = setErrorMessage(errors);\n }\n\n const nestedRuleErrors = getNestedRuleErrors(\n updatedErrors[\n criteria as keyof AccessConditionsErrors\n ] as ComplexErrors[],\n );\n\n // nestedCriteria: allOf or anyOf\n if (\n nestedConditionCriteria &&\n nestedConditionIndex !== undefined &&\n nestedConditionRuleIndex !== undefined\n ) {\n const nestedConditionRuleList =\n nestedRuleErrors[nestedConditionIndex][nestedConditionCriteria];\n\n if (Array.isArray(nestedConditionRuleList)) {\n nestedConditionRuleList[nestedConditionRuleIndex] =\n setErrorMessage(errors);\n }\n }\n\n // nestedCriteria: not\n if (\n Array.isArray(nestedRuleErrors) &&\n nestedRuleErrors.length > 0 &&\n nestedConditionCriteria === criterias.not &&\n nestedConditionIndex !== undefined\n ) {\n nestedRuleErrors[nestedConditionIndex][nestedConditionCriteria] =\n setErrorMessage(errors);\n }\n\n updatedErrors[criteria] = [...simpleRuleErrors, ...nestedRuleErrors];\n return updatedErrors;\n });\n }\n\n return errors;\n };\n\n const onConditionChange = (newCondition: PermissionCondition) => {\n if (nestedConditionRow) {\n handleNestedConditionChange(newCondition);\n } else {\n handleConditionChange(newCondition);\n }\n };\n\n return (\n <Box className={classes.inputFieldContainer}>\n <Autocomplete\n style={{ width: '50%', marginTop: '26px' }}\n sx={getTextFieldStyles(theme)}\n options={rules ?? []}\n value={(oldCondition as PermissionCondition)?.rule || null}\n getOptionDisabled={option =>\n optionDisabled ? optionDisabled(option) : false\n }\n onChange={(_event, ruleVal?: string | null) =>\n onConditionChange({\n ...oldCondition,\n rule: ruleVal ?? '',\n params: {},\n } as PermissionCondition)\n }\n renderOption={(props, option) => (\n <RulesDropdownOption\n props={props}\n label={option ?? ''}\n rulesData={conditionRulesData}\n />\n )}\n renderInput={(params: any) => (\n <TextField\n {...params}\n label=\"Rule\"\n variant=\"outlined\"\n placeholder=\"Select a rule\"\n required\n />\n )}\n />\n <Box style={{ width: '50%' }}>\n {schema ? (\n <Form\n schema={paramsSchema}\n formData={(oldCondition as PermissionCondition)?.params || {}}\n validator={validator}\n uiSchema={uiSchema}\n fields={customFields}\n onChange={data =>\n onConditionChange({\n ...oldCondition,\n params: data.formData || {},\n } as PermissionCondition)\n }\n transformErrors={handleTransformErrors}\n showErrorList={false}\n liveValidate\n />\n ) : (\n <TextField\n style={{ width: '100%', marginTop: '26px' }}\n sx={getTextFieldStyles(theme)}\n disabled\n label=\"string, string\"\n required\n variant=\"outlined\"\n />\n )}\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionsFormRowFields.esm.js","sources":["../../../src/components/ConditionalAccess/ConditionsFormRowFields.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 Autocomplete from '@mui/material/Autocomplete';\nimport Box from '@mui/material/Box';\nimport { Theme, useTheme } from '@mui/material/styles';\nimport TextField from '@mui/material/TextField';\nimport { makeStyles } from '@mui/styles';\nimport Form from '@rjsf/mui';\nimport {\n RegistryFieldsType,\n RJSFSchema,\n RJSFValidationError,\n UiSchema,\n} from '@rjsf/utils';\nimport validator from '@rjsf/validator-ajv8';\n\nimport {\n getNestedRuleErrors,\n getSimpleRuleErrors,\n isSimpleRule,\n setErrorMessage,\n} from '../../utils/conditional-access-utils';\nimport { criterias } from './const';\nimport { CustomArrayField } from './CustomArrayField';\nimport { RulesDropdownOption } from './RulesDropdownOption';\nimport {\n AccessConditionsErrors,\n ComplexErrors,\n Condition,\n ConditionsData,\n NestedCriteriaErrors,\n RulesData,\n} from './types';\n\ntype ConditionFormRowFieldsProps = {\n oldCondition: Condition;\n index?: number;\n criteria: string;\n onRuleChange: (newCondition: ConditionsData) => void;\n conditionRow: ConditionsData | Condition;\n conditionRulesData?: RulesData;\n setErrors: React.Dispatch<\n React.SetStateAction<AccessConditionsErrors | undefined>\n >;\n optionDisabled?: (ruleOption: string) => boolean;\n setRemoveAllClicked: React.Dispatch<React.SetStateAction<boolean>>;\n nestedConditionRow?: Condition[];\n nestedConditionCriteria?: string;\n nestedConditionIndex?: number;\n nestedConditionRuleIndex?: number;\n updateRules?: (newCondition: Condition[] | Condition) => void;\n};\n\ninterface StyleProps {\n isNotSimpleCondition: boolean;\n}\n\nconst makeConditionsFormRowFieldsStyles = makeStyles<Theme, StyleProps>(() => ({\n inputFieldContainer: {\n display: 'flex',\n flexFlow: 'row',\n gap: '10px',\n flexGrow: 1,\n margin: ({ isNotSimpleCondition }) =>\n isNotSimpleCondition ? '-1.5rem 0 0 1.85rem' : '0',\n },\n}));\n\nexport const getTextFieldStyles = (theme: Theme) => ({\n '& div[class*=\"MuiInputBase-root\"]': {\n backgroundColor: theme.palette.background.paper,\n },\n '& span': {\n color: theme.palette.textSubtle,\n },\n '& input': {\n color: theme.palette.textContrast,\n },\n '& fieldset.MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[500],\n },\n '& div.MuiOutlinedInput-root': {\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.primary.light,\n },\n '&.Mui-error .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.status.error,\n '&:hover': {\n borderColor: theme.palette.status.error,\n },\n },\n },\n '& label.MuiFormLabel-root.Mui-focused': {\n color: theme.palette.primary.light,\n },\n '& label.MuiFormLabel-root.Mui-error': {\n color: theme.palette.status.error,\n },\n '& div.MuiOutlinedInput-root:hover fieldset': {\n borderColor:\n theme.palette.mode === 'dark' ? theme.palette.textContrast : 'unset',\n },\n '& label': {\n color: theme.palette.textSubtle,\n },\n});\n\nexport const ConditionsFormRowFields = ({\n oldCondition,\n index,\n criteria,\n onRuleChange,\n conditionRow,\n conditionRulesData,\n setErrors,\n optionDisabled,\n setRemoveAllClicked,\n nestedConditionRow,\n nestedConditionCriteria,\n nestedConditionIndex,\n nestedConditionRuleIndex,\n updateRules,\n}: ConditionFormRowFieldsProps) => {\n const isNotSimpleCondition =\n criteria === criterias.not && !nestedConditionCriteria;\n const theme = useTheme();\n const classes = makeConditionsFormRowFieldsStyles({\n isNotSimpleCondition,\n });\n\n const rules = conditionRulesData?.rules ?? [];\n const paramsSchema =\n conditionRulesData?.[(oldCondition as PermissionCondition).rule]?.schema;\n\n const schema: RJSFSchema = paramsSchema;\n\n const uiSchema: UiSchema = {\n 'ui:submitButtonOptions': {\n norender: true,\n },\n 'ui:classNames': `{\n '& div[class*=\"MuiInputBase-root\"]': {\n backgroundColor: theme.palette.background.paper,\n },\n '& span': {\n color: theme.palette.textSubtle,\n },\n '& input': {\n color: theme.palette.textContrast,\n },\n '& fieldset.MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.grey[500],\n },\n '& div.MuiOutlinedInput-root': {\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.primary.light,\n },\n '&.Mui-error .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.status.error,\n '&:hover': {\n borderColor: theme.palette.status.error,\n },\n },\n },\n '& label.MuiFormLabel-root.Mui-focused': {\n color: theme.palette.primary.light,\n },\n '& label.MuiFormLabel-root.Mui-error': {\n color: theme.palette.status.error,\n },\n '& div.MuiOutlinedInput-root:hover fieldset': {\n borderColor:\n theme.palette.mode === 'dark' ? theme.palette.textContrast : 'unset',\n },\n '& label': {\n color: theme.palette.textSubtle,\n },\n }`,\n 'ui:field': 'array',\n };\n\n const customFields: RegistryFieldsType = { ArrayField: CustomArrayField };\n\n const handleConditionChange = (newCondition: PermissionCondition) => {\n setRemoveAllClicked(false);\n switch (criteria) {\n case criterias.condition: {\n onRuleChange({ condition: newCondition });\n break;\n }\n case criterias.allOf: {\n const updatedCriteria = (conditionRow as ConditionsData).allOf ?? [];\n updatedCriteria[index ?? 0] = newCondition;\n onRuleChange({ allOf: updatedCriteria });\n break;\n }\n case criterias.anyOf: {\n const updatedCriteria = (conditionRow as ConditionsData).anyOf ?? [];\n updatedCriteria[index ?? 0] = newCondition;\n onRuleChange({ anyOf: updatedCriteria });\n break;\n }\n case criterias.not: {\n onRuleChange({ not: newCondition });\n break;\n }\n default:\n }\n };\n\n const handleNestedConditionChange = (newCondition: PermissionCondition) => {\n if (\n !nestedConditionRow ||\n !nestedConditionCriteria ||\n nestedConditionIndex === undefined ||\n !updateRules\n ) {\n return;\n }\n const updatedNestedConditionRow: Condition[] = nestedConditionRow.map(\n (c, i) => {\n if (i === nestedConditionIndex) {\n if (nestedConditionCriteria === criterias.not) {\n return {\n [nestedConditionCriteria]: newCondition,\n };\n }\n const updatedNestedConditionRules = (\n (c[\n nestedConditionCriteria as keyof Condition\n ] as PermissionCondition[]) || []\n ).map((rule, rindex) => {\n return rindex === nestedConditionRuleIndex ? newCondition : rule;\n });\n\n return {\n [nestedConditionCriteria]: updatedNestedConditionRules,\n };\n }\n return c;\n },\n );\n\n updateRules(\n criteria === criterias.not\n ? updatedNestedConditionRow[0]\n : updatedNestedConditionRow,\n );\n };\n\n const handleTransformErrors = (errors: RJSFValidationError[]) => {\n // criteria: condition or not simple-condition\n if (\n criteria === criterias.condition ||\n (criteria === criterias.not &&\n isSimpleRule(conditionRow[criteria as keyof Condition]))\n ) {\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n updatedErrors[criteria] = setErrorMessage(errors);\n\n return updatedErrors;\n });\n }\n\n // criteria: not nested-condition\n if (\n criteria === criterias.not &&\n nestedConditionCriteria &&\n !isSimpleRule(conditionRow[criteria as keyof Condition])\n ) {\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n const nestedErrors = (updatedErrors[criteria] as ComplexErrors)[\n nestedConditionCriteria as keyof Condition\n ] as NestedCriteriaErrors;\n\n // nestedCriteria: allOf or anyOf\n if (\n Array.isArray(nestedErrors) &&\n nestedConditionRuleIndex !== undefined\n ) {\n nestedErrors[nestedConditionRuleIndex] = setErrorMessage(errors);\n } else {\n // nestedCriteria: not\n updatedErrors[criteria] = {\n [nestedConditionCriteria]: setErrorMessage(errors),\n };\n }\n\n return updatedErrors;\n });\n }\n\n // criteria: allOf or anyOf\n if (criteria === criterias.allOf || criteria === criterias.anyOf) {\n setErrors(prevErrors => {\n const updatedErrors = { ...prevErrors };\n const simpleRuleErrors = getSimpleRuleErrors(\n updatedErrors[\n criteria as keyof AccessConditionsErrors\n ] as ComplexErrors[],\n );\n if (\n Array.isArray(simpleRuleErrors) &&\n simpleRuleErrors.length > 0 &&\n index !== undefined\n ) {\n simpleRuleErrors[index] = setErrorMessage(errors);\n }\n\n const nestedRuleErrors = getNestedRuleErrors(\n updatedErrors[\n criteria as keyof AccessConditionsErrors\n ] as ComplexErrors[],\n );\n\n // nestedCriteria: allOf or anyOf\n if (\n nestedConditionCriteria &&\n nestedConditionIndex !== undefined &&\n nestedConditionRuleIndex !== undefined\n ) {\n const nestedConditionRuleList =\n nestedRuleErrors[nestedConditionIndex][nestedConditionCriteria];\n\n if (Array.isArray(nestedConditionRuleList)) {\n nestedConditionRuleList[nestedConditionRuleIndex] =\n setErrorMessage(errors);\n }\n }\n\n // nestedCriteria: not\n if (\n Array.isArray(nestedRuleErrors) &&\n nestedRuleErrors.length > 0 &&\n nestedConditionCriteria === criterias.not &&\n nestedConditionIndex !== undefined\n ) {\n nestedRuleErrors[nestedConditionIndex][nestedConditionCriteria] =\n setErrorMessage(errors);\n }\n\n updatedErrors[criteria] = [...simpleRuleErrors, ...nestedRuleErrors];\n return updatedErrors;\n });\n }\n\n return errors;\n };\n\n const onConditionChange = (newCondition: PermissionCondition) => {\n if (nestedConditionRow) {\n handleNestedConditionChange(newCondition);\n } else {\n handleConditionChange(newCondition);\n }\n };\n\n return (\n <Box className={classes.inputFieldContainer}>\n <Autocomplete\n style={{ width: '50%', marginTop: '26px' }}\n sx={getTextFieldStyles(theme)}\n options={rules ?? []}\n value={(oldCondition as PermissionCondition)?.rule || null}\n getOptionDisabled={option =>\n optionDisabled ? optionDisabled(option) : false\n }\n onChange={(_event, ruleVal?: string | null) =>\n onConditionChange({\n ...oldCondition,\n rule: ruleVal ?? '',\n params: {},\n } as PermissionCondition)\n }\n renderOption={(props, option) => (\n <RulesDropdownOption\n props={props}\n label={option ?? ''}\n rulesData={conditionRulesData}\n />\n )}\n renderInput={(params: any) => (\n <TextField\n {...params}\n label=\"Rule\"\n variant=\"outlined\"\n placeholder=\"Select a rule\"\n required\n />\n )}\n />\n <Box style={{ width: '50%' }}>\n {schema ? (\n <Form\n schema={paramsSchema}\n formData={(oldCondition as PermissionCondition)?.params || {}}\n validator={validator}\n uiSchema={uiSchema}\n fields={customFields}\n onChange={data =>\n onConditionChange({\n ...oldCondition,\n params: data.formData || {},\n } as PermissionCondition)\n }\n transformErrors={handleTransformErrors}\n showErrorList={false}\n liveValidate\n />\n ) : (\n <TextField\n style={{ width: '100%', marginTop: '26px' }}\n sx={getTextFieldStyles(theme)}\n disabled\n label=\"string, string\"\n required\n variant=\"outlined\"\n />\n )}\n </Box>\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 ToggleButton from '@mui/material/ToggleButton';
|
|
3
3
|
|
|
4
4
|
const CriteriaToggleButton = ({
|
|
@@ -16,7 +16,7 @@ const CriteriaToggleButton = ({
|
|
|
16
16
|
textTransform: "none",
|
|
17
17
|
padding: theme.spacing(1)
|
|
18
18
|
};
|
|
19
|
-
return /* @__PURE__ */
|
|
19
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
20
20
|
ToggleButton,
|
|
21
21
|
{
|
|
22
22
|
key: val,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CriteriaToggleButton.esm.js","sources":["../../../src/components/ConditionalAccess/CriteriaToggleButton.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, { CSSProperties } from 'react';\n\nimport { Theme } from '@mui/material/styles';\nimport ToggleButton from '@mui/material/ToggleButton';\n\ntype CriteriaToggleButtonProps = {\n val: string;\n label: string;\n selectedCriteria: string;\n theme: Theme;\n};\n\nexport const CriteriaToggleButton = ({\n val,\n label,\n selectedCriteria,\n theme,\n}: CriteriaToggleButtonProps) => {\n const isSelected = val === selectedCriteria;\n const buttonStyle: CSSProperties = {\n color: isSelected ? theme.palette.infoText : theme.palette.textSubtle,\n backgroundColor: isSelected ? theme.palette.infoBackground : '',\n border: `1px solid ${theme.palette.border}`,\n width: '100%',\n textTransform: 'none',\n padding: theme.spacing(1),\n };\n\n return (\n <ToggleButton\n key={val}\n value={val}\n style={buttonStyle}\n size=\"large\"\n disabled={isSelected}\n >\n {label}\n </ToggleButton>\n );\n};\n"],"names":[],"mappings":";;;AA2BO,MAAM,uBAAuB,CAAC;AAAA,EACnC,GAAA;AAAA,EACA,KAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAiC,KAAA;AAC/B,EAAA,MAAM,aAAa,GAAQ,KAAA,gBAAA;AAC3B,EAAA,MAAM,WAA6B,GAAA;AAAA,IACjC,OAAO,UAAa,GAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,GAAW,MAAM,OAAQ,CAAA,UAAA;AAAA,IAC3D,eAAiB,EAAA,UAAA,GAAa,KAAM,CAAA,OAAA,CAAQ,cAAiB,GAAA,EAAA;AAAA,IAC7D,MAAQ,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,IACzC,KAAO,EAAA,MAAA;AAAA,IACP,aAAe,EAAA,MAAA;AAAA,IACf,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,GAC1B;AAEA,EACE,
|
|
1
|
+
{"version":3,"file":"CriteriaToggleButton.esm.js","sources":["../../../src/components/ConditionalAccess/CriteriaToggleButton.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, { CSSProperties } from 'react';\n\nimport { Theme } from '@mui/material/styles';\nimport ToggleButton from '@mui/material/ToggleButton';\n\ntype CriteriaToggleButtonProps = {\n val: string;\n label: string;\n selectedCriteria: string;\n theme: Theme;\n};\n\nexport const CriteriaToggleButton = ({\n val,\n label,\n selectedCriteria,\n theme,\n}: CriteriaToggleButtonProps) => {\n const isSelected = val === selectedCriteria;\n const buttonStyle: CSSProperties = {\n color: isSelected ? theme.palette.infoText : theme.palette.textSubtle,\n backgroundColor: isSelected ? theme.palette.infoBackground : '',\n border: `1px solid ${theme.palette.border}`,\n width: '100%',\n textTransform: 'none',\n padding: theme.spacing(1),\n };\n\n return (\n <ToggleButton\n key={val}\n value={val}\n style={buttonStyle}\n size=\"large\"\n disabled={isSelected}\n >\n {label}\n </ToggleButton>\n );\n};\n"],"names":["React"],"mappings":";;;AA2BO,MAAM,uBAAuB,CAAC;AAAA,EACnC,GAAA;AAAA,EACA,KAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAiC,KAAA;AAC/B,EAAA,MAAM,aAAa,GAAQ,KAAA,gBAAA;AAC3B,EAAA,MAAM,WAA6B,GAAA;AAAA,IACjC,OAAO,UAAa,GAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,GAAW,MAAM,OAAQ,CAAA,UAAA;AAAA,IAC3D,eAAiB,EAAA,UAAA,GAAa,KAAM,CAAA,OAAA,CAAQ,cAAiB,GAAA,EAAA;AAAA,IAC7D,MAAQ,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,IACzC,KAAO,EAAA,MAAA;AAAA,IACP,aAAe,EAAA,MAAA;AAAA,IACf,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,GAC1B;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,GAAA;AAAA,MACL,KAAO,EAAA,GAAA;AAAA,MACP,KAAO,EAAA,WAAA;AAAA,MACP,IAAK,EAAA,OAAA;AAAA,MACL,QAAU,EAAA;AAAA,KAAA;AAAA,IAET;AAAA,GACH;AAEJ;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React__default from 'react';
|
|
2
2
|
import TextField from '@mui/material/TextField';
|
|
3
3
|
import Typography from '@mui/material/Typography';
|
|
4
4
|
import { getDefaultRegistry } from '@rjsf/core';
|
|
@@ -6,12 +6,12 @@ import { getInnerSchemaForArrayItem } from '@rjsf/utils/lib/schema/getDefaultFor
|
|
|
6
6
|
|
|
7
7
|
const CustomArrayField = (props) => {
|
|
8
8
|
const { name, required, schema: sch, formData, onChange } = props;
|
|
9
|
-
const [fieldVal, setFieldVal] =
|
|
9
|
+
const [fieldVal, setFieldVal] = React__default.useState(
|
|
10
10
|
formData?.toString() ?? ""
|
|
11
11
|
);
|
|
12
12
|
const arrayItemsType = getInnerSchemaForArrayItem(sch).type;
|
|
13
13
|
const DefaultArrayField = getDefaultRegistry().fields.ArrayField;
|
|
14
|
-
return arrayItemsType === "string" ? /* @__PURE__ */
|
|
14
|
+
return arrayItemsType === "string" ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
|
|
15
15
|
TextField,
|
|
16
16
|
{
|
|
17
17
|
name,
|
|
@@ -26,7 +26,7 @@ const CustomArrayField = (props) => {
|
|
|
26
26
|
required,
|
|
27
27
|
placeholder: "string, string"
|
|
28
28
|
}
|
|
29
|
-
), /* @__PURE__ */
|
|
29
|
+
), /* @__PURE__ */ React__default.createElement(Typography, { variant: "caption" }, /* @__PURE__ */ React__default.createElement(
|
|
30
30
|
Typography,
|
|
31
31
|
{
|
|
32
32
|
variant: "subtitle2",
|
|
@@ -37,7 +37,7 @@ const CustomArrayField = (props) => {
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
sch.description ?? ""
|
|
40
|
-
))) : /* @__PURE__ */
|
|
40
|
+
))) : /* @__PURE__ */ React__default.createElement(DefaultArrayField, { ...props });
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
export { CustomArrayField };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomArrayField.esm.js","sources":["../../../src/components/ConditionalAccess/CustomArrayField.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 TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport { getDefaultRegistry } from '@rjsf/core';\nimport { FieldProps } from '@rjsf/utils';\nimport { getInnerSchemaForArrayItem } from '@rjsf/utils/lib/schema/getDefaultFormState';\n\nexport const CustomArrayField = (props: FieldProps) => {\n const { name, required, schema: sch, formData, onChange } = props;\n const [fieldVal, setFieldVal] = React.useState<string>(\n formData?.toString() ?? '',\n );\n\n const arrayItemsType = getInnerSchemaForArrayItem(sch).type;\n\n const DefaultArrayField = getDefaultRegistry().fields.ArrayField;\n\n return arrayItemsType === 'string' ? (\n <>\n <TextField\n name={name}\n variant=\"outlined\"\n label={name}\n value={fieldVal}\n onChange={e => {\n const value = e.target.value;\n setFieldVal(value);\n onChange(value ? value.split(',').map(val => val.trim()) : []);\n }}\n required={required}\n placeholder=\"string, string\"\n />\n <Typography variant=\"caption\">\n <Typography\n variant=\"subtitle2\"\n sx={{\n mt: 0.5,\n fontWeight: 500,\n color: theme => `${theme.palette.grey[500]}`,\n }}\n >\n {sch.description ?? ''}\n </Typography>\n </Typography>\n </>\n ) : (\n <DefaultArrayField {...props} />\n );\n};\n"],"names":[],"mappings":";;;;;;AAuBa,MAAA,gBAAA,GAAmB,CAAC,KAAsB,KAAA;AACrD,EAAA,MAAM,EAAE,IAAM,EAAA,QAAA,EAAU,QAAQ,GAAK,EAAA,QAAA,EAAU,UAAa,GAAA,KAAA;AAC5D,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,
|
|
1
|
+
{"version":3,"file":"CustomArrayField.esm.js","sources":["../../../src/components/ConditionalAccess/CustomArrayField.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 TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport { getDefaultRegistry } from '@rjsf/core';\nimport { FieldProps } from '@rjsf/utils';\nimport { getInnerSchemaForArrayItem } from '@rjsf/utils/lib/schema/getDefaultFormState';\n\nexport const CustomArrayField = (props: FieldProps) => {\n const { name, required, schema: sch, formData, onChange } = props;\n const [fieldVal, setFieldVal] = React.useState<string>(\n formData?.toString() ?? '',\n );\n\n const arrayItemsType = getInnerSchemaForArrayItem(sch).type;\n\n const DefaultArrayField = getDefaultRegistry().fields.ArrayField;\n\n return arrayItemsType === 'string' ? (\n <>\n <TextField\n name={name}\n variant=\"outlined\"\n label={name}\n value={fieldVal}\n onChange={e => {\n const value = e.target.value;\n setFieldVal(value);\n onChange(value ? value.split(',').map(val => val.trim()) : []);\n }}\n required={required}\n placeholder=\"string, string\"\n />\n <Typography variant=\"caption\">\n <Typography\n variant=\"subtitle2\"\n sx={{\n mt: 0.5,\n fontWeight: 500,\n color: theme => `${theme.palette.grey[500]}`,\n }}\n >\n {sch.description ?? ''}\n </Typography>\n </Typography>\n </>\n ) : (\n <DefaultArrayField {...props} />\n );\n};\n"],"names":["React"],"mappings":";;;;;;AAuBa,MAAA,gBAAA,GAAmB,CAAC,KAAsB,KAAA;AACrD,EAAA,MAAM,EAAE,IAAM,EAAA,QAAA,EAAU,QAAQ,GAAK,EAAA,QAAA,EAAU,UAAa,GAAA,KAAA;AAC5D,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAM,CAAA,QAAA;AAAA,IACpC,QAAA,EAAU,UAAc,IAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,cAAA,GAAiB,0BAA2B,CAAA,GAAG,CAAE,CAAA,IAAA;AAEvD,EAAM,MAAA,iBAAA,GAAoB,kBAAmB,EAAA,CAAE,MAAO,CAAA,UAAA;AAEtD,EAAO,OAAA,cAAA,KAAmB,2BAEtBA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,OAAQ,EAAA,UAAA;AAAA,MACR,KAAO,EAAA,IAAA;AAAA,MACP,KAAO,EAAA,QAAA;AAAA,MACP,UAAU,CAAK,CAAA,KAAA;AACb,QAAM,MAAA,KAAA,GAAQ,EAAE,MAAO,CAAA,KAAA;AACvB,QAAA,WAAA,CAAY,KAAK,CAAA;AACjB,QAAA,QAAA,CAAS,KAAQ,GAAA,KAAA,CAAM,KAAM,CAAA,GAAG,CAAE,CAAA,GAAA,CAAI,CAAO,GAAA,KAAA,GAAA,CAAI,IAAK,EAAC,CAAI,GAAA,EAAE,CAAA;AAAA,OAC/D;AAAA,MACA,QAAA;AAAA,MACA,WAAY,EAAA;AAAA;AAAA,GAEd,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,SAClB,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,WAAA;AAAA,MACR,EAAI,EAAA;AAAA,QACF,EAAI,EAAA,GAAA;AAAA,QACJ,UAAY,EAAA,GAAA;AAAA,QACZ,OAAO,CAAS,KAAA,KAAA,CAAA,EAAG,MAAM,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AAC5C,KAAA;AAAA,IAEC,IAAI,WAAe,IAAA;AAAA,GAExB,CACF,CAAA,mBAECA,cAAA,CAAA,aAAA,CAAA,iBAAA,EAAA,EAAmB,GAAG,KAAO,EAAA,CAAA;AAElC;;;;"}
|