import React from 'react';
import { FormGroup, TextArea } from '@patternfly/react-core';
import PropTypes from 'prop-types';
import SearchBar from 'foremanReact/components/SearchBar';
import { getControllerSearchProps } from 'foremanReact/constants';
import { helpLabel, ResetDefault } from './FormHelpers';
import { SelectField } from './SelectField';
import { ResourceSelect } from './ResourceSelect';
import { DateTimePicker } from '../form/DateTimePicker';
const TemplateSearchField = ({
name,
controller,
url,
labelText,
required,
defaultValue,
setValue,
values,
}) => {
const id = name.replace(/ /g, '-');
const props = getControllerSearchProps(controller.replace('/', '_'), name);
return (
setValue({ ...values, [name]: search })}
/>
}
fieldId={id}
isRequired={required}
className="foreman-search-field"
>
setValue({ ...values, [name]: search })}
/>
);
};
export const formatter = (input, values, setValue) => {
const isSelectType = !!input?.options;
const inputType = input.value_type;
const isTextType = inputType === 'plain' || !inputType; // null defaults to plain
const {
name,
required,
hidden_value: hidden,
resource_type: resourceType,
value_type: valueType,
default: defaultValue,
} = input;
const labelText = input.description;
const value = values[name];
const id = name.replace(/ /g, '-');
const labelInfo = (
setValue({ ...values, [name]: newValue })}
/>
);
if (valueType === 'resource') {
return (
setValue({ ...values, [name]: newValue })}
/>
);
}
if (isSelectType) {
const options = input.options.split(/\r?\n/).map(option => option.trim());
return (
setValue({ ...values, [name]: newValue })}
/>
);
}
if (isTextType) {
return (
);
}
if (inputType === 'date') {
return (
setValue({ ...values, [name]: newValue })}
includeSeconds
/>
);
}
if (inputType === 'search') {
const controller = input.resource_type_tableize;
return (
);
}
return null;
};
TemplateSearchField.propTypes = {
name: PropTypes.string.isRequired,
controller: PropTypes.string.isRequired,
url: PropTypes.string.isRequired,
labelText: PropTypes.string,
required: PropTypes.bool.isRequired,
defaultValue: PropTypes.string,
setValue: PropTypes.func.isRequired,
values: PropTypes.object.isRequired,
};
TemplateSearchField.defaultProps = {
labelText: null,
defaultValue: '',
};