/*
Copyright (C) 2022 Cloudbase Solutions SRL
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
import * as React from 'react'
import styled from 'styled-components'
import type { Field } from '@src/@types/Field'
import { Endpoint, Validation } from '@src/@types/Endpoint'
import { ThemePalette } from '@src/components/Theme'
import { Link } from 'react-router-dom'
import {
Wrapper, renderFields, findInvalidFields,
} from '../default/ContentPlugin'
const ServersInfo = styled.div`
font-size: 12px;
padding: 8px 32px 0;
`
const LinkStyled = styled(Link)`
color: ${ThemePalette.primary};
text-decoration: none;
`
const LinkDiv = styled.span`
color: ${ThemePalette.primary};
cursor: pointer;
`
type Props = {
connectionInfoSchema: Field[],
validation: Validation | null,
invalidFields: string[],
getFieldValue: (field: Field | null) => any,
handleFieldChange: (field: Field | null, value: any) => void,
disabled: boolean,
cancelButtonText: string,
validating: boolean,
onRef: (contentPlugin: any) => void,
handleFieldsChange: (items: { field: Field, value: any }[]) => void,
originalConnectionInfo: Endpoint['connection_info'],
onResizeUpdate: (scrollOffset: number) => void,
scrollableRef: (ref: HTMLElement) => void,
highlightRequired: () => void
handleValidateClick: () => void
handleCancelClick: () => void
}
class ContentPlugin extends React.Component {
componentDidMount() {
this.props.onRef(this)
}
componentWillUnmount() {
this.props.onRef(undefined)
}
// eslint-disable-next-line react/no-unused-class-component-methods
findInvalidFields = () => findInvalidFields(this.props.connectionInfoSchema, this.props.getFieldValue)
renderFields() {
return renderFields({
schema: this.props.connectionInfoSchema,
getFieldValue: this.props.getFieldValue,
handleFieldChange: this.props.handleFieldChange,
disabled: this.props.disabled,
invalidFields: this.props.invalidFields,
})
}
render() {
const link = window.location.pathname === '/bare-metal-servers'
? (
window.location.reload()}>hub servers page
) : (
hub servers page
)
return (
To add a server to an existing hub, use the {link}.
{this.renderFields()}
)
}
}
export default ContentPlugin