UNPKG

@handie/squirtle

Version:

Widgets for Handie-React

82 lines (66 loc) 1.98 kB
import { DateValue, ObjectValue, DateFieldWidgetConfig, DateFilterWidgetConfig, isNumber, isFunction, pick, } from '@handie/runtime-core'; import type { NumberField, StringField } from '@handie/runtime-core/dist/types/input'; function getPickerOption<VT extends DateValue | DateValue[]>( value: VT, config: DateFieldWidgetConfig | DateFilterWidgetConfig, record: ObjectValue, ): Record<string, any> { const { disableDate, showNow } = pick(config, ['disableDate', 'showNow']) as Record<string, any>; const options: Record<string, any> = { showNow }; if (isFunction(disableDate)) { options.disableDate = (date: Date) => disableDate(value, date, record); } return options; } function getNumberInputProps(reactInst): Record<string, any> { const props: Record<string, any> = { value: reactInst.props.value, placeholder: reactInst.getPlaceholder(), disabled: reactInst.state.disabled, prefix: reactInst.config.prefix, suffix: reactInst.config.suffix, }; if (reactInst.showValidationRulesAsNative) { const { min, max } = reactInst.props.field as NumberField; if (isNumber(min)) { props.min = min; } if (isNumber(max)) { props.max = max; } } return props; } function getStringInputtableControlProps( reactInst, filterWidget: boolean = false, ): Record<string, any> { const props: Record<string, any> = { value: reactInst.props.value, placeholder: reactInst.getPlaceholder(), }; if (filterWidget !== true) { props.disabled = reactInst.state.disabled; } if (reactInst.showValidationRulesAsNative) { const { min, max } = (filterWidget === true ? reactInst.props.filter : reactInst.props.field) as StringField; if (isNumber(min)) { props.minLength = min; } if (isNumber(max)) { props.maxLength = max; } } return props; } export { getPickerOption, getNumberInputProps, getStringInputtableControlProps };