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

theme.keycloak.v2.admin.resources.assets.IdentityProvidersSection-BOmASsOa.js.map Maven / Gradle / Ivy

{"version":3,"file":"IdentityProvidersSection-BOmASsOa.js","sources":["../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_arrayAggregator.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_baseAggregator.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_createAggregator.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/groupBy.js","../../src/identity-providers/ManageOrderDialog.tsx","../../src/identity-providers/IdentityProvidersSection.tsx"],"sourcesContent":["/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nexport default arrayAggregator;\n","import baseEach from './_baseEach.js';\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nexport default baseAggregator;\n","import arrayAggregator from './_arrayAggregator.js';\nimport baseAggregator from './_baseAggregator.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nexport default createAggregator;\n","import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nexport default groupBy;\n","import type IdentityProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation\";\nimport {\n  Button,\n  ButtonVariant,\n  DataList,\n  DataListCell,\n  DataListControl,\n  DataListDragButton,\n  DataListItem,\n  DataListItemCells,\n  DataListItemRow,\n  DragDrop,\n  Draggable,\n  DraggableItemPosition,\n  Droppable,\n  Modal,\n  ModalVariant,\n  Text,\n  TextContent,\n} from \"@patternfly/react-core\";\nimport { sortBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\nimport { useFetch } from \"../utils/useFetch\";\n\ntype ManageOrderDialogProps = {\n  onClose: () => void;\n};\n\nexport const ManageOrderDialog = ({ onClose }: ManageOrderDialogProps) => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { addAlert, addError } = useAlerts();\n\n  const [liveText, setLiveText] = useState(\"\");\n  const [providers, setProviders] =\n    useState();\n  const [order, setOrder] = useState([]);\n\n  const onDragStart = ({ index }: DraggableItemPosition) => {\n    setLiveText(t(\"onDragStart\", { item: order[index] }));\n    return true;\n  };\n\n  const onDragMove = ({ index }: DraggableItemPosition) => {\n    setLiveText(t(\"onDragMove\", { item: order[index] }));\n  };\n\n  const onDragFinish = (\n    source: DraggableItemPosition,\n    dest?: DraggableItemPosition,\n  ) => {\n    if (dest) {\n      const result = [...order];\n      const [removed] = result.splice(source.index, 1);\n      result.splice(dest.index, 0, removed);\n      setLiveText(t(\"onDragFinish\", { list: result }));\n      setOrder(result);\n      return true;\n    } else {\n      setLiveText(t(\"onDragCancel\"));\n      return false;\n    }\n  };\n\n  useFetch(\n    () => adminClient.identityProviders.find(),\n    (providers) => {\n      setProviders(providers);\n      setOrder(\n        sortBy(providers, [\"config.guiOrder\", \"alias\"]).map(\n          (provider) => provider.alias!,\n        ),\n      );\n    },\n    [],\n  );\n\n  if (!providers) {\n    return ;\n  }\n\n  return (\n     {\n            const updates = order.map((alias, index) => {\n              const provider = providers.find((p) => p.alias === alias)!;\n              provider.config!.guiOrder = index;\n              return adminClient.identityProviders.update({ alias }, provider);\n            });\n\n            try {\n              await Promise.all(updates);\n              addAlert(t(\"orderChangeSuccess\"));\n            } catch (error) {\n              addError(\"orderChangeError\", error);\n            }\n\n            onClose();\n          }}\n        >\n          {t(\"save\")}\n        ,\n        \n          {t(\"cancel\")}\n        ,\n      ]}\n    >\n      \n        {t(\"orderDialogIntro\")}\n      \n\n      \n        \n          \n            {order.map((alias) => (\n              \n                \n                  \n                    \n                      \n                    \n                    \n                          {alias}\n                        ,\n                      ]}\n                    />\n                  \n                \n              \n            ))}\n          \n        \n      \n      
\n {liveText}\n
\n \n );\n};\n","import type IdentityProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation\";\nimport type { IdentityProvidersQuery } from \"@keycloak/keycloak-admin-client/lib/resources/identityProviders\";\nimport { IconMapper } from \"@keycloak/keycloak-ui-shared\";\nimport {\n AlertVariant,\n Badge,\n Button,\n ButtonVariant,\n CardTitle,\n Dropdown,\n DropdownGroup,\n DropdownItem,\n DropdownList,\n Gallery,\n MenuToggle,\n PageSection,\n Split,\n SplitItem,\n Text,\n TextContent,\n TextVariants,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { IFormatterValueType } from \"@patternfly/react-table\";\nimport { groupBy, sortBy } from \"lodash-es\";\nimport { Fragment, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { ClickableCard } from \"../components/keycloak-card/ClickableCard\";\nimport {\n Action,\n KeycloakDataTable,\n} from \"../components/table-toolbar/KeycloakDataTable\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../context/server-info/ServerInfoProvider\";\nimport helpUrls from \"../help-urls\";\nimport { upperCaseFormatter } from \"../util\";\nimport { useFetch } from \"../utils/useFetch\";\nimport { ManageOrderDialog } from \"./ManageOrderDialog\";\nimport { toIdentityProvider } from \"./routes/IdentityProvider\";\nimport { toIdentityProviderCreate } from \"./routes/IdentityProviderCreate\";\n\nconst DetailLink = (identityProvider: IdentityProviderRepresentation) => {\n const { t } = useTranslation();\n const { realm } = useRealm();\n\n return (\n \n {identityProvider.displayName || identityProvider.alias}\n {!identityProvider.enabled && (\n \n {t(\"disabled\")}\n \n )}\n \n );\n};\n\nexport default function IdentityProvidersSection() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const identityProviders = groupBy(\n useServerInfo().identityProviders,\n \"groupName\",\n );\n const { realm } = useRealm();\n const navigate = useNavigate();\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const [addProviderOpen, setAddProviderOpen] = useState(false);\n const [manageDisplayDialog, setManageDisplayDialog] = useState(false);\n const [hasProviders, setHasProviders] = useState(false);\n const [selectedProvider, setSelectedProvider] =\n useState();\n const { addAlert, addError } = useAlerts();\n\n useFetch(\n async () => adminClient.identityProviders.find({ max: 1 }),\n (providers) => {\n setHasProviders(providers.length === 1);\n },\n [key],\n );\n\n const loader = async (first?: number, max?: number, search?: string) => {\n const params: IdentityProvidersQuery = {\n first: first!,\n max: max!,\n };\n if (search) {\n params.search = search;\n }\n const providers = await adminClient.identityProviders.find(params);\n return sortBy(providers, [\"config.guiOrder\", \"alias\"]);\n };\n\n const navigateToCreate = (providerId: string) =>\n navigate(\n toIdentityProviderCreate({\n realm,\n providerId,\n }),\n );\n\n const identityProviderOptions = () =>\n Object.keys(identityProviders).map((group) => (\n \n {sortBy(identityProviders[group], \"name\").map((provider) => (\n \n navigate(\n toIdentityProviderCreate({\n realm,\n providerId: provider.id,\n }),\n )\n }\n >\n {provider.name}\n \n ))}\n \n ));\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteProvider\",\n messageKey: t(\"deleteConfirm\", { provider: selectedProvider?.alias }),\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await adminClient.identityProviders.del({\n alias: selectedProvider!.alias!,\n });\n refresh();\n addAlert(t(\"deletedSuccessIdentityProvider\"), AlertVariant.success);\n } catch (error) {\n addError(\"deleteErrorIdentityProvider\", error);\n }\n },\n });\n\n return (\n <>\n \n {manageDisplayDialog && (\n {\n setManageDisplayDialog(false);\n refresh();\n }}\n />\n )}\n \n \n {!hasProviders && (\n <>\n \n {t(\"getStarted\")}\n \n {Object.keys(identityProviders).map((group) => (\n \n \n \n {group}:\n \n \n
\n \n {sortBy(identityProviders[group], \"name\").map((provider) => (\n navigateToCreate(provider.id)}\n >\n \n \n \n \n \n {provider.name}\n \n \n \n ))}\n \n
\n ))}\n \n )}\n {hasProviders && (\n \n \n (\n setAddProviderOpen(!addProviderOpen)}\n variant=\"primary\"\n >\n {t(\"addProvider\")}\n \n )}\n isOpen={addProviderOpen}\n >\n {identityProviderOptions()}\n \n \n\n \n setManageDisplayDialog(true)}\n >\n {t(\"manageDisplayOrder\")}\n \n \n \n }\n actions={[\n {\n title: t(\"delete\"),\n onRowClick: (provider) => {\n setSelectedProvider(provider);\n toggleDeleteDialog();\n },\n } as Action,\n ]}\n columns={[\n {\n name: \"alias\",\n displayKey: \"name\",\n cellRenderer: DetailLink,\n },\n {\n name: \"providerId\",\n displayKey: \"providerDetails\",\n cellFormatters: [upperCaseFormatter()],\n },\n {\n name: \"config['kc.org']\",\n displayKey: \"linkedOrganization\",\n cellFormatters: [\n (data?: IFormatterValueType) => {\n return data ? \"X\" : \"—\";\n },\n ],\n },\n ]}\n />\n )}\n \n \n );\n}\n"],"names":["arrayAggregator","array","setter","iteratee","accumulator","index","length","value","baseAggregator","collection","baseEach","key","createAggregator","initializer","func","isArray","baseIteratee","objectProto","hasOwnProperty","groupBy","result","baseAssignValue","ManageOrderDialog","onClose","adminClient","useAdminClient","t","useTranslation","addAlert","addError","useAlerts","liveText","setLiveText","useState","providers","setProviders","order","setOrder","onDragStart","onDragMove","onDragFinish","source","dest","removed","useFetch","sortBy","provider","jsxs","Modal","ModalVariant","jsx","Button","updates","alias","p","error","ButtonVariant","TextContent","Text","DragDrop","Droppable","DataList","Draggable","DataListItem","DataListItemRow","DataListControl","DataListDragButton","DataListItemCells","DataListCell","KeycloakSpinner","DetailLink","identityProvider","realm","useRealm","Link","toIdentityProvider","Badge","IdentityProvidersSection","identityProviders","useServerInfo","navigate","useNavigate","setKey","refresh","addProviderOpen","setAddProviderOpen","manageDisplayDialog","setManageDisplayDialog","hasProviders","setHasProviders","selectedProvider","setSelectedProvider","loader","first","max","search","params","navigateToCreate","providerId","toIdentityProviderCreate","identityProviderOptions","group","DropdownGroup","DropdownItem","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","AlertVariant","Fragment","ViewHeader","helpUrls","PageSection","TextVariants","Gallery","ClickableCard","CardTitle","Split","SplitItem","IconMapper","KeycloakDataTable","ToolbarItem","Dropdown","ref","MenuToggle","DropdownList","upperCaseFormatter","data"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy