keycloak-d4science-spi-parent/keycloak-d4science-theme/src/main/resources/theme/d4science/account/resources/assets/PersonalInfo-BTFeEdfO.js.map

1 line
22 KiB
Plaintext

{"version":3,"file":"PersonalInfo-BTFeEdfO.js","sources":["../../../../../node_modules/.pnpm/@patternfly+react-styles@5.2.1/node_modules/@patternfly/react-styles/css/components/ExpandableSection/expandable-section.mjs","../../../../../node_modules/.pnpm/@patternfly+react-tokens@5.2.1/node_modules/@patternfly/react-tokens/dist/esm/c_expandable_section_m_truncate__content_LineClamp.js","../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/ExpandableSection/ExpandableSection.js","../../src/personal-info/PersonalInfo.tsx"],"sourcesContent":["import './expandable-section.css';\nexport default {\n \"dirRtl\": \"pf-v5-m-dir-rtl\",\n \"expandableSection\": \"pf-v5-c-expandable-section\",\n \"expandableSectionContent\": \"pf-v5-c-expandable-section__content\",\n \"expandableSectionToggle\": \"pf-v5-c-expandable-section__toggle\",\n \"expandableSectionToggleIcon\": \"pf-v5-c-expandable-section__toggle-icon\",\n \"expandableSectionToggleText\": \"pf-v5-c-expandable-section__toggle-text\",\n \"modifiers\": {\n \"expanded\": \"pf-m-expanded\",\n \"detached\": \"pf-m-detached\",\n \"truncate\": \"pf-m-truncate\",\n \"limitWidth\": \"pf-m-limit-width\",\n \"displayLg\": \"pf-m-display-lg\",\n \"indented\": \"pf-m-indented\",\n \"active\": \"pf-m-active\",\n \"expandTop\": \"pf-m-expand-top\"\n }\n};","export const c_expandable_section_m_truncate__content_LineClamp = {\n \"name\": \"--pf-v5-c-expandable-section--m-truncate__content--LineClamp\",\n \"value\": \"3\",\n \"var\": \"var(--pf-v5-c-expandable-section--m-truncate__content--LineClamp)\"\n};\nexport default c_expandable_section_m_truncate__content_LineClamp;","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/ExpandableSection/expandable-section.mjs';\nimport { css } from '@patternfly/react-styles';\nimport lineClamp from '@patternfly/react-tokens/dist/esm/c_expandable_section_m_truncate__content_LineClamp';\nimport AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon';\nimport { debounce, getUniqueId } from '../../helpers/util';\nimport { getResizeObserver } from '../../helpers/resizeObserver';\nexport var ExpandableSectionVariant;\n(function (ExpandableSectionVariant) {\n ExpandableSectionVariant[\"default\"] = \"default\";\n ExpandableSectionVariant[\"truncate\"] = \"truncate\";\n})(ExpandableSectionVariant || (ExpandableSectionVariant = {}));\nconst setLineClamp = (lines, element) => {\n if (!element || lines < 1) {\n return;\n }\n element.style.setProperty(lineClamp.name, lines.toString());\n};\nclass ExpandableSection extends React.Component {\n constructor(props) {\n super(props);\n this.expandableContentRef = React.createRef();\n this.observer = () => { };\n this.checkToggleVisibility = () => {\n var _a;\n if ((_a = this.expandableContentRef) === null || _a === void 0 ? void 0 : _a.current) {\n const maxLines = this.props.truncateMaxLines || parseInt(lineClamp.value);\n const totalLines = this.expandableContentRef.current.scrollHeight /\n parseInt(getComputedStyle(this.expandableContentRef.current).lineHeight);\n this.setState({\n hasToggle: totalLines > maxLines\n });\n }\n };\n this.resize = () => {\n const { offsetWidth } = this.expandableContentRef.current;\n if (this.state.previousWidth !== offsetWidth) {\n this.setState({ previousWidth: offsetWidth });\n this.checkToggleVisibility();\n }\n };\n this.handleResize = debounce(this.resize, 250);\n this.state = {\n isExpanded: props.isExpanded,\n hasToggle: true,\n previousWidth: undefined\n };\n }\n calculateToggleText(toggleText, toggleTextExpanded, toggleTextCollapsed, propOrStateIsExpanded) {\n if (propOrStateIsExpanded && toggleTextExpanded !== '') {\n return toggleTextExpanded;\n }\n if (!propOrStateIsExpanded && toggleTextCollapsed !== '') {\n return toggleTextCollapsed;\n }\n return toggleText;\n }\n componentDidMount() {\n if (this.props.variant === ExpandableSectionVariant.truncate) {\n const expandableContent = this.expandableContentRef.current;\n this.setState({ previousWidth: expandableContent.offsetWidth });\n this.observer = getResizeObserver(expandableContent, this.handleResize, false);\n if (this.props.truncateMaxLines) {\n setLineClamp(this.props.truncateMaxLines, expandableContent);\n }\n this.checkToggleVisibility();\n }\n }\n componentDidUpdate(prevProps) {\n if (this.props.variant === ExpandableSectionVariant.truncate &&\n (prevProps.truncateMaxLines !== this.props.truncateMaxLines || prevProps.children !== this.props.children)) {\n const expandableContent = this.expandableContentRef.current;\n setLineClamp(this.props.truncateMaxLines, expandableContent);\n this.checkToggleVisibility();\n }\n }\n componentWillUnmount() {\n if (this.props.variant === ExpandableSectionVariant.truncate) {\n this.observer();\n }\n }\n render() {\n const _a = this.props, { onToggle: onToggleProp, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isActive, className, toggleText, toggleTextExpanded, toggleTextCollapsed, toggleContent, children, isExpanded, isDetached, displaySize, isWidthLimited, isIndented, contentId, toggleId, variant, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n truncateMaxLines } = _a, props = __rest(_a, [\"onToggle\", \"isActive\", \"className\", \"toggleText\", \"toggleTextExpanded\", \"toggleTextCollapsed\", \"toggleContent\", \"children\", \"isExpanded\", \"isDetached\", \"displaySize\", \"isWidthLimited\", \"isIndented\", \"contentId\", \"toggleId\", \"variant\", \"truncateMaxLines\"]);\n if (isDetached && !toggleId) {\n /* eslint-disable no-console */\n console.warn('ExpandableSection: The toggleId value must be passed in and must match the toggleId of the ExpandableSectionToggle.');\n }\n let onToggle = onToggleProp;\n let propOrStateIsExpanded = isExpanded;\n const uniqueContentId = contentId || getUniqueId('expandable-section-content');\n const uniqueToggleId = toggleId || getUniqueId('expandable-section-toggle');\n // uncontrolled\n if (isExpanded === undefined) {\n propOrStateIsExpanded = this.state.isExpanded;\n onToggle = (event, isOpen) => {\n this.setState({ isExpanded: isOpen }, () => onToggleProp(event, this.state.isExpanded));\n };\n }\n const computedToggleText = this.calculateToggleText(toggleText, toggleTextExpanded, toggleTextCollapsed, propOrStateIsExpanded);\n const expandableToggle = !isDetached && (React.createElement(\"button\", { className: css(styles.expandableSectionToggle), type: \"button\", \"aria-expanded\": propOrStateIsExpanded, \"aria-controls\": uniqueContentId, id: uniqueToggleId, onClick: (event) => onToggle(event, !propOrStateIsExpanded) },\n variant !== ExpandableSectionVariant.truncate && (React.createElement(\"span\", { className: css(styles.expandableSectionToggleIcon) },\n React.createElement(AngleRightIcon, { \"aria-hidden\": true }))),\n React.createElement(\"span\", { className: css(styles.expandableSectionToggleText) }, toggleContent || computedToggleText)));\n return (React.createElement(\"div\", Object.assign({ className: css(styles.expandableSection, propOrStateIsExpanded && styles.modifiers.expanded, isActive && styles.modifiers.active, isDetached && styles.modifiers.detached, displaySize === 'lg' && styles.modifiers.displayLg, isWidthLimited && styles.modifiers.limitWidth, isIndented && styles.modifiers.indented, variant === ExpandableSectionVariant.truncate && styles.modifiers.truncate, className) }, props),\n variant === ExpandableSectionVariant.default && expandableToggle,\n React.createElement(\"div\", { ref: this.expandableContentRef, className: css(styles.expandableSectionContent), hidden: variant !== ExpandableSectionVariant.truncate && !propOrStateIsExpanded, id: uniqueContentId, \"aria-labelledby\": uniqueToggleId, role: \"region\" }, children),\n variant === ExpandableSectionVariant.truncate && this.state.hasToggle && expandableToggle));\n }\n}\nExpandableSection.displayName = 'ExpandableSection';\nExpandableSection.defaultProps = {\n className: '',\n toggleText: '',\n toggleTextExpanded: '',\n toggleTextCollapsed: '',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onToggle: (event, isExpanded) => undefined,\n isActive: false,\n isDetached: false,\n displaySize: 'default',\n isWidthLimited: false,\n isIndented: false,\n variant: 'default'\n};\nexport { ExpandableSection };\n//# sourceMappingURL=ExpandableSection.js.map","import {\r\n ActionGroup,\r\n Alert,\r\n Button,\r\n ExpandableSection,\r\n Form,\r\n Spinner,\r\n} from \"@patternfly/react-core\";\r\nimport { ExternalLinkSquareAltIcon } from \"@patternfly/react-icons\";\r\nimport { TFunction } from \"i18next\";\r\nimport { useState } from \"react\";\r\nimport { ErrorOption, useForm } from \"react-hook-form\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n UserProfileFields,\r\n beerify,\r\n debeerify,\r\n setUserProfileServerError,\r\n useAlerts,\r\n} from \"ui-shared\";\r\n\r\nimport {\r\n getPersonalInfo,\r\n getSupportedLocales,\r\n savePersonalInfo,\r\n} from \"../api/methods\";\r\nimport {\r\n UserProfileMetadata,\r\n UserRepresentation,\r\n} from \"../api/representations\";\r\nimport { Page } from \"../components/page/Page\";\r\nimport { TFuncKey, i18n } from \"../i18n\";\r\nimport { useEnvironment } from \"../root/KeycloakContext\";\r\nimport { usePromise } from \"../utils/usePromise\";\r\nimport AvatarForm from \"../d4science-page/AvatarForm\";\r\n\r\nexport const PersonalInfo = () => {\r\n const { t } = useTranslation();\r\n const context = useEnvironment();\r\n const [userProfileMetadata, setUserProfileMetadata] =\r\n useState<UserProfileMetadata>();\r\n const [supportedLocales, setSupportedLocales] = useState<string[]>([]);\r\n const form = useForm<UserRepresentation>({ mode: \"onChange\" });\r\n const { handleSubmit, reset, setValue, setError } = form;\r\n const { addAlert, addError } = useAlerts();\r\n\r\n usePromise(\r\n (signal) =>\r\n Promise.all([\r\n getPersonalInfo({ signal, context }),\r\n getSupportedLocales({ signal, context }),\r\n ]),\r\n ([personalInfo, supportedLocales]) => {\r\n setUserProfileMetadata(personalInfo.userProfileMetadata);\r\n setSupportedLocales(supportedLocales);\r\n reset(personalInfo);\r\n Object.entries(personalInfo.attributes || {}).forEach(([k, v]) =>\r\n setValue(`attributes[${beerify(k)}]`, v),\r\n );\r\n },\r\n );\r\n\r\n const onSubmit = async (user: UserRepresentation) => {\r\n try {\r\n const attributes = Object.fromEntries(\r\n Object.entries(user.attributes || {}).map(([k, v]) => [\r\n debeerify(k),\r\n v,\r\n ]),\r\n );\r\n await savePersonalInfo(context, { ...user, attributes });\r\n const locale = attributes[\"locale\"]?.toString();\r\n i18n.changeLanguage(locale, (error) => {\r\n if (error) {\r\n console.warn(\"Error(s) loading locale\", locale, error);\r\n }\r\n });\r\n context.keycloak.updateToken();\r\n addAlert(t(\"accountUpdatedMessage\"));\r\n } catch (error) {\r\n addError(t(\"accountUpdatedError\").toString());\r\n\r\n setUserProfileServerError(\r\n { responseData: { errors: error as any } },\r\n (name: string | number, error: unknown) =>\r\n setError(name as string, error as ErrorOption),\r\n ((key: TFuncKey, param?: object) => t(key, param as any)) as TFunction,\r\n );\r\n }\r\n };\r\n\r\n if (!userProfileMetadata) {\r\n return <Spinner />;\r\n }\r\n\r\n const {\r\n updateEmailFeatureEnabled,\r\n updateEmailActionEnabled,\r\n isRegistrationEmailAsUsername,\r\n isEditUserNameAllowed,\r\n } = context.environment.features;\r\n return (\r\n <Page title={t(\"personalInfo\")} description={t(\"personalInfoDescription\")}>\r\n <Form isHorizontal onSubmit={handleSubmit(onSubmit)}>\r\n <UserProfileFields\r\n form={form}\r\n userProfileMetadata={userProfileMetadata}\r\n supportedLocales={supportedLocales}\r\n t={\r\n ((key: unknown, params) =>\r\n t(key as TFuncKey, params as any)) as TFunction\r\n }\r\n renderer={(attribute) =>\r\n attribute.name === \"email\" &&\r\n updateEmailFeatureEnabled &&\r\n updateEmailActionEnabled &&\r\n (!isRegistrationEmailAsUsername || isEditUserNameAllowed) ? (\r\n <Button\r\n id=\"update-email-btn\"\r\n variant=\"link\"\r\n onClick={() =>\r\n context.keycloak.login({ action: \"UPDATE_EMAIL\" })\r\n }\r\n icon={<ExternalLinkSquareAltIcon />}\r\n iconPosition=\"right\"\r\n >\r\n {t(\"updateEmail\")}\r\n </Button>\r\n ) : undefined\r\n }\r\n />\r\n <ActionGroup>\r\n <Button\r\n data-testid=\"save\"\r\n type=\"submit\"\r\n id=\"save-btn\"\r\n variant=\"primary\"\r\n >\r\n {t(\"save\")}\r\n </Button>\r\n <Button\r\n data-testid=\"cancel\"\r\n id=\"cancel-btn\"\r\n variant=\"link\"\r\n onClick={() => reset()}\r\n >\r\n {t(\"cancel\")}\r\n </Button>\r\n </ActionGroup>\r\n {context.environment.features.deleteAccountAllowed && (\r\n <ExpandableSection\r\n data-testid=\"delete-account\"\r\n toggleText={t(\"deleteAccount\")}\r\n >\r\n <Alert\r\n isInline\r\n title={t(\"deleteAccount\")}\r\n variant=\"danger\"\r\n actionLinks={\r\n <Button\r\n id=\"delete-account-btn\"\r\n variant=\"danger\"\r\n onClick={() =>\r\n context.keycloak.login({\r\n action: \"delete_account\",\r\n })\r\n }\r\n className=\"delete-button\"\r\n >\r\n {t(\"delete\")}\r\n </Button>\r\n }\r\n >\r\n {t(\"deleteAccountWarning\")}\r\n </Alert>\r\n </ExpandableSection>\r\n )}\r\n </Form>\r\n </Page>\r\n );\r\n};\r\n\r\nexport default PersonalInfo;\r\n"],"names":["styles","c_expandable_section_m_truncate__content_LineClamp","ExpandableSectionVariant","setLineClamp","lines","element","lineClamp","ExpandableSection","React","props","_a","maxLines","totalLines","offsetWidth","debounce","toggleText","toggleTextExpanded","toggleTextCollapsed","propOrStateIsExpanded","expandableContent","getResizeObserver","prevProps","onToggleProp","isActive","className","toggleContent","children","isExpanded","isDetached","displaySize","isWidthLimited","isIndented","contentId","toggleId","variant","truncateMaxLines","__rest","onToggle","uniqueContentId","getUniqueId","uniqueToggleId","event","isOpen","computedToggleText","expandableToggle","css","AngleRightIcon","PersonalInfo","useTranslation","context","useEnvironment","userProfileMetadata","setUserProfileMetadata","useState","supportedLocales","setSupportedLocales","form","useForm","handleSubmit","reset","setValue","setError","addAlert","addError","useAlerts","usePromise","signal","getPersonalInfo","getSupportedLocales","personalInfo","k","v","beerify","onSubmit","user","attributes","debeerify","savePersonalInfo","locale","i18n","error","setUserProfileServerError","name","key","param","Spinner","updateEmailFeatureEnabled","updateEmailActionEnabled","isRegistrationEmailAsUsername","isEditUserNameAllowed","Page","Form","jsx","UserProfileFields","params","attribute","Button","ExternalLinkSquareAltIcon","ActionGroup","Alert"],"mappings":"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","x_google_ignoreList":[0,1,2]}