All Downloads are FREE. Search and download functionalities are using the official Maven repository.

theme.keycloak.v2.admin.resources.assets.MapperList-58acf988.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"MapperList-58acf988.js","sources":["../../src/client-scopes/add/MapperDialog.tsx","../../src/client-scopes/details/MapperList.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  Button,\n  ButtonVariant,\n  DataList,\n  DataListCell,\n  DataListItem,\n  DataListItemCells,\n  DataListItemRow,\n  Modal,\n  ModalVariant,\n  Text,\n  TextContent,\n  TextVariants,\n} from \"@patternfly/react-core\";\n\nimport type ProtocolMapperRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/protocolMapperRepresentation\";\nimport type { ProtocolMapperTypeRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/serverInfoRepesentation\";\n\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../../components/table-toolbar/KeycloakDataTable\";\nimport useLocaleSort, { mapByKey } from \"../../utils/useLocaleSort\";\n\ntype Row = {\n  id: string;\n  description: string;\n  item: ProtocolMapperRepresentation;\n};\n\nexport type AddMapperDialogModalProps = {\n  protocol: string;\n  filter?: ProtocolMapperRepresentation[];\n  onConfirm: (\n    value: ProtocolMapperTypeRepresentation | ProtocolMapperRepresentation[]\n  ) => void;\n};\n\nexport type AddMapperDialogProps = AddMapperDialogModalProps & {\n  open: boolean;\n  toggleDialog: () => void;\n};\n\nexport const AddMapperDialog = (props: AddMapperDialogProps) => {\n  const { t } = useTranslation(\"client-scopes\");\n\n  const serverInfo = useServerInfo();\n  const protocol = props.protocol;\n  const protocolMappers = serverInfo.protocolMapperTypes![protocol];\n  const builtInMappers = serverInfo.builtinProtocolMappers![protocol];\n  const [filter, setFilter] = useState([]);\n  const [selectedRows, setSelectedRows] = useState([]);\n  const localeSort = useLocaleSort();\n\n  const allRows = useMemo(\n    () =>\n      localeSort(builtInMappers, mapByKey(\"name\")).map((mapper) => {\n        const mapperType = protocolMappers.filter(\n          (type) => type.id === mapper.protocolMapper\n        )[0];\n        return {\n          item: mapper,\n          id: mapper.name!,\n          description: mapperType.helpText,\n        };\n      }),\n    [builtInMappers, protocolMappers]\n  );\n  const [rows, setRows] = useState(allRows);\n\n  if (props.filter && props.filter.length !== filter.length) {\n    setFilter(props.filter);\n    const nameFilter = props.filter.map((f) => f.name);\n    setRows([...allRows.filter((row) => !nameFilter.includes(row.item.name))]);\n  }\n\n  const sortedProtocolMappers = useMemo(\n    () => localeSort(protocolMappers, mapByKey(\"name\")),\n    [protocolMappers]\n  );\n\n  const isBuiltIn = !!props.filter;\n\n  const header = [t(\"common:name\"), t(\"common:description\")];\n\n  return (\n    \n          \n            {isBuiltIn ? t(\"addPredefinedMappers\") : t(\"emptySecondaryAction\")}\n          \n          \n            {isBuiltIn\n              ? t(\"predefinedMappingDescription\")\n              : t(\"configureMappingDescription\")}\n          \n        \n      }\n      isOpen={props.open}\n      onClose={props.toggleDialog}\n      actions={\n        isBuiltIn\n          ? [\n               {\n                  props.onConfirm(selectedRows.map(({ item }) => item));\n                  props.toggleDialog();\n                }}\n              >\n                {t(\"common:add\")}\n              ,\n               {\n                  props.toggleDialog();\n                }}\n              >\n                {t(\"common:cancel\")}\n              ,\n            ]\n          : []\n      }\n    >\n      {!isBuiltIn && (\n         {\n            const mapper = protocolMappers.find((mapper) => mapper.id === id);\n            props.onConfirm(mapper!);\n            props.toggleDialog();\n          }}\n          aria-label={t(\"addPredefinedMappers\")}\n          isCompact\n        >\n          \n            \n               (\n                  \n                    {name}\n                  \n                ))}\n              />\n            \n          \n          {sortedProtocolMappers.map((mapper) => (\n            \n              \n                \n                      {mapper.name}\n                    ,\n                    \n                      {mapper.helpText}\n                    ,\n                  ]}\n                />\n              \n            \n          ))}\n        \n      )}\n      {isBuiltIn && (\n        \n          }\n        />\n      )}\n    \n  );\n};\n","import { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { Path } from \"react-router-dom\";\nimport { Link } from \"react-router-dom\";\nimport { Dropdown, DropdownItem, DropdownToggle } from \"@patternfly/react-core\";\nimport { CaretDownIcon } from \"@patternfly/react-icons\";\n\nimport type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type ClientScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientScopeRepresentation\";\nimport type ProtocolMapperRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/protocolMapperRepresentation\";\nimport type { ProtocolMapperTypeRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/serverInfoRepesentation\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\n\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { AddMapperDialog } from \"../add/MapperDialog\";\nimport {\n  Action,\n  KeycloakDataTable,\n} from \"../../components/table-toolbar/KeycloakDataTable\";\n\ntype MapperListProps = {\n  model: ClientScopeRepresentation | ClientRepresentation;\n  onAdd: (\n    mappers: ProtocolMapperTypeRepresentation | ProtocolMapperRepresentation[]\n  ) => void;\n  onDelete: (mapper: ProtocolMapperRepresentation) => void;\n  detailLink: (id: string) => Partial;\n};\n\ntype Row = ProtocolMapperRepresentation & {\n  category: string;\n  type: string;\n  priority: number;\n};\n\ntype MapperLinkProps = Row & {\n  detailLink: (id: string) => Partial;\n};\n\nconst MapperLink = ({ id, name, detailLink }: MapperLinkProps) => (\n  {name}\n);\n\nexport const MapperList = ({\n  model,\n  onAdd,\n  onDelete,\n  detailLink,\n}: MapperListProps) => {\n  const { t } = useTranslation(\"client-scopes\");\n\n  const [mapperAction, setMapperAction] = useState(false);\n  const mapperList = model.protocolMappers;\n  const mapperTypes = useServerInfo().protocolMapperTypes![model.protocol!];\n\n  const [key, setKey] = useState(0);\n  useEffect(() => setKey(key + 1), [mapperList]);\n\n  const [addMapperDialogOpen, setAddMapperDialogOpen] = useState(false);\n  const [filter, setFilter] = useState(model.protocolMappers);\n  const toggleAddMapperDialog = (buildIn: boolean) => {\n    if (buildIn) {\n      setFilter(mapperList || []);\n    } else {\n      setFilter(undefined);\n    }\n    setAddMapperDialogOpen(!addMapperDialogOpen);\n  };\n\n  const loader = async () => {\n    if (!mapperList) {\n      return [];\n    }\n\n    const list = mapperList.reduce((rows, mapper) => {\n      const mapperType = mapperTypes.find(\n        ({ id }) => id === mapper.protocolMapper\n      );\n\n      if (!mapperType) {\n        return rows;\n      }\n\n      return rows.concat({\n        ...mapper,\n        category: mapperType.category,\n        type: mapperType.name,\n        priority: mapperType.priority,\n      });\n    }, []);\n\n    return list.sort((a, b) => a.priority - b.priority);\n  };\n\n  return (\n    <>\n       setAddMapperDialogOpen(!addMapperDialogOpen)}\n      />\n\n       setMapperAction(false)}\n            toggle={\n               setMapperAction(!mapperAction)}\n                toggleIndicator={CaretDownIcon}\n              >\n                {t(\"common:addMapper\")}\n              \n            }\n            isOpen={mapperAction}\n            dropdownItems={[\n               toggleAddMapperDialog(true)}\n              >\n                {t(\"fromPredefinedMapper\")}\n              ,\n               toggleAddMapperDialog(false)}\n              >\n                {t(\"byConfiguration\")}\n              ,\n            ]}\n          />\n        }\n        actions={[\n          {\n            title: t(\"common:delete\"),\n            onRowClick: onDelete,\n          } as Action,\n        ]}\n        columns={[\n          {\n            name: \"name\",\n            cellRenderer: (row) => (\n              \n            ),\n          },\n          { name: \"category\" },\n          {\n            name: \"type\",\n          },\n          {\n            name: \"priority\",\n          },\n        ]}\n        emptyState={\n           toggleAddMapperDialog(true),\n              },\n              {\n                text: t(\"emptySecondaryAction\"),\n                onClick: () => toggleAddMapperDialog(false),\n              },\n            ]}\n          />\n        }\n      />\n    \n  );\n};\n"],"names":["AddMapperDialog","props","t","useTranslation","serverInfo","useServerInfo","protocol","protocolMappers","builtInMappers","filter","setFilter","useState","selectedRows","setSelectedRows","localeSort","useLocaleSort","allRows","useMemo","mapByKey","mapper","mapperType","type","rows","setRows","nameFilter","f","row","sortedProtocolMappers","isBuiltIn","header","jsxs","Modal","ModalVariant","TextContent","jsx","Text","TextVariants","Button","item","ButtonVariant","DataList","id","DataListItem","DataListItemRow","DataListItemCells","name","DataListCell","KeycloakDataTable","ListEmptyState","MapperLink","detailLink","Link","MapperList","model","onAdd","onDelete","mapperAction","setMapperAction","mapperList","mapperTypes","key","setKey","useEffect","addMapperDialogOpen","setAddMapperDialogOpen","toggleAddMapperDialog","buildIn","loader","a","b","Fragment","Dropdown","DropdownToggle","CaretDownIcon","DropdownItem"],"mappings":"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"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy