🔧 Fixed value update issue in the react-select dropdowns

This commit is contained in:
2022-01-06 15:15:45 -08:00
parent 0bfe580389
commit 7bb5669c52
2 changed files with 68 additions and 39 deletions

View File

@@ -6,10 +6,11 @@ import { withAsyncPaginate } from "react-select-async-paginate";
const CreatableAsyncPaginate = withAsyncPaginate(Creatable); const CreatableAsyncPaginate = withAsyncPaginate(Creatable);
export const AsyncSelectPaginate = (props): ReactElement => { export const AsyncSelectPaginate = (props): ReactElement => {
const [value, onValueChange] = useState(null); console.log(props);
const [value, setValue] = useState(null);
const [isAddingInProgress, setIsAddingInProgress] = useState(false); const [isAddingInProgress, setIsAddingInProgress] = useState(false);
const mudasir = useCallback((query, loadedOptions, { page }) => { const loadData = useCallback((query, loadedOptions, { page }) => {
return fetchMetronResource({ return fetchMetronResource({
method: "GET", method: "GET",
resource: props.metronResource, resource: props.metronResource,
@@ -25,11 +26,11 @@ export const AsyncSelectPaginate = (props): ReactElement => {
SelectComponent={Creatable} SelectComponent={Creatable}
debounceTimeout={200} debounceTimeout={200}
isDisabled={isAddingInProgress} isDisabled={isAddingInProgress}
value={value} value={props.value}
loadOptions={mudasir} loadOptions={loadData}
placeholder={props.placeholder} placeholder={props.placeholder}
// onCreateOption={onCreateOption} // onCreateOption={onCreateOption}
onChange={onValueChange} onChange={props.onChange}
// cacheUniqs={[cacheUniq]} // cacheUniqs={[cacheUniq]}
additional={{ additional={{
page: 1, page: 1,

View File

@@ -11,7 +11,16 @@ export const EditMetadataPanel = (props): ReactElement => {
const validate = async () => {}; const validate = async () => {};
const onSubmit = async () => {}; const onSubmit = async () => {};
const DayPickerAdapter = ({ input, ...rest }) => { const DayPickerAdapter = ({ input, ...rest }) => {
return <DatePicker {...input} {...rest} />; return <DatePicker {...input} {...rest} placeholderText={"Cover Date"} />;
};
const AsyncSelectPaginateAdapter = ({ input, ...rest }) => {
return (
<AsyncSelectPaginate
{...input}
{...rest}
onChange={(value) => input.onChange(value)}
/>
);
}; };
const dispatch = useDispatch(); const dispatch = useDispatch();
@@ -79,35 +88,12 @@ export const EditMetadataPanel = (props): ReactElement => {
name="issue_year" name="issue_year"
component={DayPickerAdapter} component={DayPickerAdapter}
className="input" className="input"
placeholder="Issue Year"
/> />
</p> </p>
</div> </div>
</div> </div>
</div> </div>
{/* Story title */}
<div className="field is-horizontal">
<div className="field-label is-normal">
<label className="label">Story</label>
</div>
<div className="field-body">
<div className="field">
<p className="control is-expanded has-icons-left">
<Field
name="story_title"
component="input"
className="input"
placeholder="Story Title"
/>
<span className="icon is-small is-left">
<i className="fa-solid fa-user-ninja"></i>
</span>
</p>
</div>
</div>
</div>
{/* Publisher */} {/* Publisher */}
<div className="field is-horizontal"> <div className="field is-horizontal">
<div className="field-label is-normal"> <div className="field-label is-normal">
@@ -116,8 +102,14 @@ export const EditMetadataPanel = (props): ReactElement => {
<div className="field-body"> <div className="field-body">
<div className="field"> <div className="field">
<p className="control is-expanded has-icons-left"> <p className="control is-expanded has-icons-left">
<AsyncSelectPaginate <Field
placeholder={"Publisher"} name={"publisher"}
component={AsyncSelectPaginateAdapter}
placeholder={
<div>
<i className="fas fa-print"></i> Publisher
</div>
}
metronResource={"publisher"} metronResource={"publisher"}
/> />
</p> </p>
@@ -125,6 +117,29 @@ export const EditMetadataPanel = (props): ReactElement => {
</div> </div>
</div> </div>
{/* Arc */}
<div className="field is-horizontal">
<div className="field-label is-normal">
<label className="label">Story Arc</label>
</div>
<div className="field-body">
<div className="field">
<p className="control is-expanded has-icons-left">
<Field
name={"story_arc"}
component={AsyncSelectPaginateAdapter}
placeholder={
<div>
<i className="fas fa-book-open"></i> Story Arc
</div>
}
metronResource={"arc"}
/>
</p>
</div>
</div>
</div>
{/* series */} {/* series */}
<div className="field is-horizontal"> <div className="field is-horizontal">
<div className="field-label is-normal"> <div className="field-label is-normal">
@@ -133,8 +148,14 @@ export const EditMetadataPanel = (props): ReactElement => {
<div className="field-body"> <div className="field-body">
<div className="field"> <div className="field">
<p className="control is-expanded has-icons-left"> <p className="control is-expanded has-icons-left">
<AsyncSelectPaginate <Field
placeholder={"Series"} name={"series"}
component={AsyncSelectPaginateAdapter}
placeholder={
<div>
<i className="fas fa-layer-group"></i> Series
</div>
}
metronResource={"series"} metronResource={"series"}
/> />
</p> </p>
@@ -181,8 +202,14 @@ export const EditMetadataPanel = (props): ReactElement => {
<div className="field-body"> <div className="field-body">
<div className="field"> <div className="field">
<p className="control"> <p className="control">
<AsyncSelectPaginate <Field
placeholder={"Creator"} name={`${name}.creator`}
component={AsyncSelectPaginateAdapter}
placeholder={
<div>
<i className="fas fa-book-open"></i> Creator
</div>
}
metronResource={"creator"} metronResource={"creator"}
/> />
</p> </p>
@@ -191,10 +218,10 @@ export const EditMetadataPanel = (props): ReactElement => {
<div className="field"> <div className="field">
<p className="control"> <p className="control">
<Field <Field
name={`${name}.lastName`} name={`${name}.role`}
component="input" metronResource={"role"}
className="input" placeholder={"Role"}
placeholder="role" component={AsyncSelectPaginateAdapter}
/> />
</p> </p>
</div> </div>
@@ -210,6 +237,7 @@ export const EditMetadataPanel = (props): ReactElement => {
)) ))
} }
</FieldArray> </FieldArray>
<pre>{JSON.stringify(values, undefined, 2)}</pre>
</form> </form>
)} )}
/> />