// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance // with the License. A copy of the License is located at // // http://aws.amazon.com/apache2.0/ // // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and // limitations under the License. import {FormField, Tiles, TilesProps} from '@cloudscape-design/components' import {NonCancelableEventHandler} from '@cloudscape-design/components/internal/events' import {useCallback} from 'react' import {useTranslation} from 'react-i18next' import {useFeatureFlag} from '../../../feature-flags/useFeatureFlag' import {setState, useState} from '../../../store' const osPath = ['app', 'wizard', 'config', 'Image', 'Os'] const SUPPORTED_OSES_LIST: TilesProps.TilesDefinition[] = [ {value: 'alinux2', label: 'Amazon Linux 2'}, {value: 'centos7', label: 'CentOS 7'}, {value: 'ubuntu1804', label: 'Ubuntu 18.04'}, {value: 'ubuntu2004', label: 'Ubuntu 20.04'}, ] const RHEL8_OS = {value: 'rhel8', label: 'Red Hat Enterprise Linux 8'} export function OsFormField() { const {t} = useTranslation() const editing = useState(['app', 'wizard', 'editing']) const selectedOsValue = useState(osPath) || 'alinux2' let osesList = useFeatureFlag('rhel8') ? SUPPORTED_OSES_LIST.concat(RHEL8_OS) : SUPPORTED_OSES_LIST osesList = editing ? osesList.map(os => ({...os, disabled: true})) : osesList const handleChange: NonCancelableEventHandler<TilesProps.ChangeDetail> = useCallback(({detail}) => { setState(osPath, detail.value) }, []) return ( <> <FormField label={t('wizard.cluster.os.label')} description={t('wizard.cluster.os.description')} > <Tiles items={osesList} value={selectedOsValue} onChange={handleChange} /> </FormField> </> ) }