1{"version":3,"sources":["../../../src/app/content/account-page/AccountPage.tsx"],"names":["React","ActionGroup","Button","Form","FormGroup","TextInput","Grid","GridItem","Expandable","AccountServiceContext","Msg","ContentPage","ContentAlert","LocaleSelector","KeycloakContext","AIACommand","AccountPage","Component","constructor","props","context","features","isRegistrationEmailAsUsername","isEditUserNameAllowed","deleteAccountAllowed","errors","username","firstName","lastName","email","formFields","attributes","DEFAULT_STATE","fetchPersonalInfo","value","event","target","currentTarget","name","setState","state","validationMessage","preventDefault","form","isValid","checkValidity","reqData","doPost","then","success","locale","window","location","reload","formData","FormData","validationMessages","Array","from","keys","reduce","acc","key","elements","keycloak","execute","handleChange","doGet","response","data","render","fields","handleSubmit","localize","isInternationalizationEnabled","Object","values","filter","e","length","handleCancel","isDeleteAccountAllowed","marginTop","handleDelete"],"mappings":"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","sourcesContent":["/*\n * Copyright 2018 Red Hat, Inc. and/or its affiliates.\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 * as React from 'react';\nimport { ActionGroup, Button, Form, FormGroup, TextInput, Grid, GridItem, Expandable} from '@patternfly/react-core';\n\nimport { HttpResponse } from '../../account-service/account.service';\nimport { AccountServiceContext } from '../../account-service/AccountServiceContext';\nimport { Features } from '../../widgets/features';\nimport { Msg } from '../../widgets/Msg';\nimport { ContentPage } from '../ContentPage';\nimport { ContentAlert } from '../ContentAlert';\nimport { LocaleSelector } from '../../widgets/LocaleSelectors';\nimport { KeycloakContext } from '../../keycloak-service/KeycloakContext';\nimport { KeycloakService } from '../../keycloak-service/keycloak.service';\nimport { AIACommand } from '../../util/AIACommand';\n\ndeclare const features: Features;\ndeclare const locale: string;\n\ninterface AccountPageProps {\n}\n\ninterface FormFields {\n    readonly username?: string;\n    readonly firstName?: string;\n    readonly lastName?: string;\n    readonly email?: string;\n    attributes?: { locale?: [string] };\n}\n\ninterface AccountPageState {\n    readonly errors: FormFields;\n    readonly formFields: FormFields;\n}\n\n/**\n * @author Stan Silvert ssilvert@redhat.com (C) 2018 Red Hat Inc.\n */\nexport class AccountPage extends React.Component<AccountPageProps, AccountPageState> {\n    static contextType = AccountServiceContext;\n    context: React.ContextType<typeof AccountServiceContext>;\n    private isRegistrationEmailAsUsername: boolean = features.isRegistrationEmailAsUsername;\n    private isEditUserNameAllowed: boolean = features.isEditUserNameAllowed;\n    private isDeleteAccountAllowed: boolean = features.deleteAccountAllowed;\n    private readonly DEFAULT_STATE: AccountPageState = {\n        errors: {\n            username: '',\n            firstName: '',\n            lastName: '',\n            email: ''\n        },\n        formFields: {\n            username: '',\n            firstName: '',\n            lastName: '',\n            email: '',\n            attributes: {}\n        }\n    };\n\n    public state: AccountPageState = this.DEFAULT_STATE;\n\n    public constructor(props: AccountPageProps, context: React.ContextType<typeof AccountServiceContext>) {\n        super(props);\n        this.context = context;\n\n        this.fetchPersonalInfo();\n    }\n\n    private fetchPersonalInfo(): void {\n        this.context!.doGet<FormFields>(\"/\")\n            .then((response: HttpResponse<FormFields>) => {\n                this.setState(this.DEFAULT_STATE);\n                const formFields = response.data;\n                if (!formFields!.attributes) {\n                    formFields!.attributes = { locale: [locale] };\n                }\n                else if (!formFields!.attributes.locale) {\n                    formFields!.attributes.locale = [locale];\n                }\n\n                this.setState({...{ formFields: formFields as FormFields }});\n            });\n    }\n\n    private handleCancel = (): void => {\n        this.fetchPersonalInfo();\n    }\n\n    private handleChange = (value: string, event: React.FormEvent<HTMLInputElement>) => {\n        const target = event.currentTarget;\n        const name = target.name;\n\n        this.setState({\n            errors: { ...this.state.errors, [name]: target.validationMessage },\n            formFields: { ...this.state.formFields, [name]: value }\n        });\n    }\n\n    private handleSubmit = (event: React.FormEvent<HTMLFormElement>): void => {\n        event.preventDefault();\n        const form = event.target as HTMLFormElement;\n        const isValid = form.checkValidity();\n        if (isValid) {\n            const reqData: FormFields = { ...this.state.formFields };\n            this.context!.doPost<void>(\"/\", reqData)\n                .then(() => {\n                    ContentAlert.success('accountUpdatedMessage');\n                    if (locale !== this.state.formFields.attributes!.locale![0]) {\n                        window.location.reload();\n                    }\n                });\n        } else {\n            const formData = new FormData(form);\n            const validationMessages = Array.from(formData.keys()).reduce((acc, key) => {\n                acc[key] = form.elements[key].validationMessage\n                return acc\n            }, {});\n            this.setState({\n                errors: { ...validationMessages },\n                formFields: this.state.formFields\n            });\n        }\n\n    }\n\n    private handleDelete = (keycloak: KeycloakService): void => {\n        new AIACommand(keycloak, \"delete_account\").execute();\n    }\n\n    public render(): React.ReactNode {\n        const fields: FormFields = this.state.formFields;\n        return (\n            <ContentPage title=\"personalInfoHtmlTitle\"\n                introMessage=\"personalSubMessage\">\n                <Form isHorizontal onSubmit={event => this.handleSubmit(event)}>\n                    {!this.isRegistrationEmailAsUsername &&\n                        <FormGroup\n                            label={Msg.localize('username')}\n                            isRequired\n                            fieldId=\"user-name\"\n                            helperTextInvalid={this.state.errors.username}\n                            isValid={this.state.errors.username === ''}\n                        >\n                            {this.isEditUserNameAllowed && <this.UsernameInput />}\n                            {!this.isEditUserNameAllowed && <this.RestrictedUsernameInput />}\n                        </FormGroup>\n                    }\n                    <FormGroup\n                        label={Msg.localize('email')}\n                        isRequired\n                        fieldId=\"email-address\"\n                        helperTextInvalid={this.state.errors.email}\n                        isValid={this.state.errors.email === ''}\n                    >\n                        <TextInput\n                            isRequired\n                            type=\"email\"\n                            id=\"email-address\"\n                            name=\"email\"\n                            maxLength={254}\n                            value={fields.email}\n                            onChange={this.handleChange}\n                            isValid={this.state.errors.email === ''}\n                        >\n                        </TextInput>\n                    </FormGroup>\n                    <FormGroup\n                        label={Msg.localize('firstName')}\n                        isRequired\n                        fieldId=\"first-name\"\n                        helperTextInvalid={this.state.errors.firstName}\n                        isValid={this.state.errors.firstName === ''}\n                    >\n                        <TextInput\n                            isRequired\n                            type=\"text\"\n                            id=\"first-name\"\n                            name=\"firstName\"\n                            maxLength={254}\n                            value={fields.firstName}\n                            onChange={this.handleChange}\n                            isValid={this.state.errors.firstName === ''}\n                        >\n                        </TextInput>\n                    </FormGroup>\n                    <FormGroup\n                        label={Msg.localize('lastName')}\n                        isRequired\n                        fieldId=\"last-name\"\n                        helperTextInvalid={this.state.errors.lastName}\n                        isValid={this.state.errors.lastName === ''}\n                    >\n                        <TextInput\n                            isRequired\n                            type=\"text\"\n                            id=\"last-name\"\n                            name=\"lastName\"\n                            maxLength={254}\n                            value={fields.lastName}\n                            onChange={this.handleChange}\n                            isValid={this.state.errors.lastName === ''}\n                        >\n                        </TextInput>\n                    </FormGroup>\n                    {features.isInternationalizationEnabled && <FormGroup\n                        label={Msg.localize('selectLocale')}\n                        isRequired\n                        fieldId=\"locale\"\n                    >\n                        <LocaleSelector id=\"locale-selector\"\n                            value={fields.attributes!.locale || ''}\n                            onChange={value => this.setState({\n                                errors: this.state.errors,\n                                formFields: { ...this.state.formFields, attributes: { ...this.state.formFields.attributes, locale: [value] }}\n                            })}\n                        />\n                    </FormGroup>}\n                    <ActionGroup>\n                        <Button\n                            type=\"submit\"\n                            id=\"save-btn\"\n                            variant=\"primary\"\n                            isDisabled={Object.values(this.state.errors).filter(e => e !== '').length !== 0}\n                        >\n                            <Msg msgKey=\"doSave\" />\n                        </Button>\n                        <Button\n                            id=\"cancel-btn\"\n                            variant=\"secondary\"\n                            onClick={this.handleCancel}\n                        >\n                            <Msg msgKey=\"doCancel\" />\n                        </Button>\n                    </ActionGroup>\n                </Form>\n\n           { this.isDeleteAccountAllowed && \n            <div id=\"delete-account\" style={{marginTop:\"30px\"}}>\n             <Expandable toggleText=\"Delete Account\">\n                 <Grid gutter={\"sm\"}>\n                        <GridItem span={6}>\n                             <p>\n                                <Msg msgKey=\"deleteAccountWarning\" />\n                             </p>\n                        </GridItem>\n                        <GridItem span={4}>\n                            <KeycloakContext.Consumer>\n                                { (keycloak: KeycloakService) => (\n                                        <Button id=\"delete-account-btn\" variant=\"danger\" onClick={() => this.handleDelete(keycloak)} className=\"delete-button\"><Msg msgKey=\"doDelete\" /></Button>\n                                )}\n                            </KeycloakContext.Consumer>\n                        </GridItem>\n                        <GridItem span={2}>\n                        </GridItem>\n                    </Grid>\n                                \n              </Expandable> \n              </div>}\n            </ContentPage>\n        );\n    }\n\n    private UsernameInput = () => (\n        <TextInput\n            isRequired\n            type=\"text\"\n            id=\"user-name\"\n            name=\"username\"\n            maxLength={254}\n            value={this.state.formFields.username}\n            onChange={this.handleChange}\n            isValid={this.state.errors.username === ''}\n        >\n        </TextInput>\n    );\n\n    private RestrictedUsernameInput = () => (\n        <TextInput\n            isDisabled\n            type=\"text\"\n            id=\"user-name\"\n            name=\"username\"\n            value={this.state.formFields.username}\n        >\n        </TextInput>\n    );\n};"],"file":"AccountPage.js"}