@react-awesome-query-builder/antd
Version:
User-friendly query builder for React. AntDesign widgets
144 lines (128 loc) • 4.51 kB
JSX
import React from "react";
import { BasicConfig, Utils } from "@react-awesome-query-builder/ui";
import en_US from "antd/es/locale/en_US";
import {default as AntdWidgets} from "../widgets";
import { normalizeListValues } from "../utils/stuff";
import { generateCssVars } from "../utils/theming";
const settings = {
...BasicConfig.settings,
renderField: (props, {RCE, W: {FieldSelect}}) => RCE(FieldSelect, props),
// renderField: (props, {RCE, W: {FieldDropdown}}) => RCE(FieldDropdown, props),
// renderField: (props, {RCE, W: {FieldCascader}}) => RCE(FieldCascader, props),
// renderField: (props, {RCE, W: {FieldTreeSelect}}) => RCE(FieldTreeSelect, props),
renderOperator: (props, {RCE, W: {FieldSelect}}) => RCE(FieldSelect, props),
// renderOperator: (props, {RCE, W: {FieldDropdown}}) => RCE(FieldDropdown, props),
renderFunc: (props, {RCE, W: {FieldSelect}}) => RCE(FieldSelect, props),
renderConjs: (props, {RCE, W: {Conjs}}) => RCE(Conjs, props),
renderSwitch: (props, {RCE, W: {Switch}}) => RCE(Switch, props),
renderButton: (props, {RCE, W: {Button}}) => RCE(Button, props),
renderIcon: (props, {RCE, W: {Icon}}) => RCE(Icon, props),
renderButtonGroup: (props, {RCE, W: {ButtonGroup}}) => RCE(ButtonGroup, props),
renderValueSources: (props, {RCE, W: {ValueSources}}) => RCE(ValueSources, props),
renderProvider: (props, {RCE, W: {Provider}}) => RCE(Provider, props),
useConfirm: ({W: {useConfirm}}) => useConfirm(),
renderConfirm: (props, {W: {Confirm}}) => Confirm(props),
// localization
locale: {
...BasicConfig.settings.locale,
// antd: en_US,
},
removeInvalidMultiSelectValuesOnLoad: false, // can be removed manually in UI
normalizeListValues: function(...args) { return this.utils.normalizeListValues.call(null, ...args); },
};
const widgets = {
...BasicConfig.widgets,
text: {
...BasicConfig.widgets.text,
factory: (props, {RCE, W: {TextWidget}}) => RCE(TextWidget, props),
},
textarea: {
...BasicConfig.widgets.textarea,
factory: (props, {RCE, W: {TextAreaWidget}}) => RCE(TextAreaWidget, props),
},
number: {
...BasicConfig.widgets.number,
factory: (props, {RCE, W: {NumberWidget}}) => RCE(NumberWidget, props),
},
price: {
...BasicConfig.widgets.price,
factory: (props, {RCE, W: {PriceWidget}}) => RCE(PriceWidget, props),
},
multiselect: {
...BasicConfig.widgets.multiselect,
factory: (props, {RCE, W: {AutocompleteWidget, MultiSelectWidget}}) => {
return (props.asyncFetch || props.showSearch)
? RCE(AutocompleteWidget, {...props, multiple: true})
: RCE(MultiSelectWidget, props);
},
},
select: {
...BasicConfig.widgets.select,
factory: (props, {RCE, W: {AutocompleteWidget, SelectWidget}}) => {
return (props.asyncFetch || props.showSearch || props.allowCustomValues)
? RCE(AutocompleteWidget, props)
: RCE(SelectWidget, props);
},
},
slider: {
...BasicConfig.widgets.slider,
factory: (props, {RCE, W: {SliderWidget}}) => RCE(SliderWidget, props),
},
boolean: {
...BasicConfig.widgets.boolean,
factory: (props, {RCE, W: {BooleanWidget}}) => RCE(BooleanWidget, props),
},
date: {
...BasicConfig.widgets.date,
factory: (props, {RCE, W: {DateWidget}}) => RCE(DateWidget, props),
},
time: {
...BasicConfig.widgets.time,
factory: (props, {RCE, W: {TimeWidget}}) => RCE(TimeWidget, props),
},
datetime: {
...BasicConfig.widgets.datetime,
factory: (props, {RCE, W: {DateTimeWidget}}) => RCE(DateTimeWidget, props),
},
rangeslider: {
...BasicConfig.widgets.rangeslider,
factory: (props, {RCE, W: {RangeWidget}}) => RCE(RangeWidget, props),
},
treeselect: {
...BasicConfig.widgets.treeselect,
factory: (props, {RCE, W: {TreeSelectWidget}}) => RCE(TreeSelectWidget, props),
},
treemultiselect: {
...BasicConfig.widgets.treemultiselect,
factory: (props, {RCE, W: {TreeSelectWidget}}) => RCE(TreeSelectWidget, {...props, treeMultiple: true}),
},
};
const types = {
...BasicConfig.types,
};
const ctx = {
...BasicConfig.ctx,
utils: {
...BasicConfig.ctx.utils,
normalizeListValues,
},
W: {
...BasicConfig.ctx.W,
...AntdWidgets,
},
generateCssVars,
};
let config = {
...BasicConfig,
ctx,
types,
widgets,
settings,
};
config = Utils.ConfigMixins.addMixins(config, [
"rangeslider",
"treeselect",
"treemultiselect",
"rangeable__date",
]);
export default config;