first-npm-package-nicule
Version:
This isi first npm package
25 lines (20 loc) • 965 B
text/typescript
import { Hypermedia, HypermediaAction } from 'first-npm-package-nicule/core';
type OptionSelectFunction = (option: { name: string; value: any; isDisabled: boolean; }, hypermedia: Hypermedia) => boolean;
export function selectOption(fieldName: string, optionSelectFunction: OptionSelectFunction): (hypermediaAction: HypermediaAction, hypermedia: Hypermedia) => HypermediaAction {
return ({ fields, ...rest }: HypermediaAction, hypermedia: Hypermedia) => {
fields = fields.map(({ value, options, ...restField }) => {
if (options) {
options.forEach(fieldOption => {
if (optionSelectFunction(fieldOption, hypermedia)) {
value = fieldOption.value;
}
});
}
return {
value, options,
...restField
};
});
return { ...rest, fields };
};
}