UNPKG

@coocoon/react-awesome-query-builder

Version:

User-friendly query builder for React. Demo: https://ukrbublik.github.io/react-awesome-query-builder

286 lines (285 loc) 14.6 kB
# Changelog - 5.2.0 - ! Breaking change: `children1` is now array in result of `getTree()` to preserve items order (PR #672) (issues #589, #670) `Utils.getTree(tree, true, false)` will behave same as before this change. - 5.1.2 - Added config `removeIncompleteRulesOnLoad` (default false) (PR #661) (issue #642) - Fix error when using same field for comparison as argument of function (PR #662) (issue #612) - Set missing `id` in `fixPathsInTree()` (PR #665) (issue #664) - Use func arg type in field selection (PR #666) (issue #615) - 5.1.1 - Fix value null instead of undefined in JSON (PR #657) (issue #653) - 5.1.0 - Use spel2js 0.2.8 instead of my branch (PR #638) (issues #634, #643, #654) - Add async load to antd (PR #640) (issues #616, #425) - Fix autocomplete (PRs #655, #641) - Fix setting defaultValue on set value src (PR #639) (issue #635) - Fix validation of multiselect func arg (PR #656) (issue #587) - 5.0.0 - Support of SpEL for import and export. See `loadFromSpel` and `spelFormat` in `Utils` (PR #613) - Added `excludeOperators` for type config (PR #613) See `excludeOperators: ["proximity"]` in demo - Changed export of `not_between` op for text format (`!(num >= 3 && num <= 4)` -> `(num < 3 || num > 4)`) (PR #613) - Rename `Like` -> `Contains`. Moved `is_empty`, `is_null` to end of operators list (PR #613) - Support MUI v5 (PR #628) - Upgraded to React 17. Moved from RHL to react-refresh. Converted demo app to FC. (PR #628) - Added `Utils._loadFromJsonLogic()` that returns `[tree, errors]` (issue #621) - 4.10.0 - Support Bootstrap (via `reactstrap`) (PR #604) - 4.9.0 - Added `is_null` and `is_not_null` operators (issue #494) (PR #522) - ! Breaking change for operators `is_empty` and `is_not_empty`. Left for text type only, for other types will be auto converted to `is_null`/`is_not_null`. Changed meaning of `is_empty` - now it's just strict comparing with empty string. Before change meaning was similar to `is_null` (and export to SQL was wrong because of non-existent operator `IS EMPTY`). (issue #494) (PR #573) - Fixed order of operators for field when merging operators from 2+ widgets (PR #573) - Added last param `fieldDef` for functions to format operators (PR #573) - Added `jsonLogic` to widget TS def (PR #572) - Export `TreeUtils` (PR #597) - 4.8.0 - Added read-only mode switch for rules and groups. See `showLock` and `canDeleteLocked` config options, custom JsonLogic op `locked`, `setLock` action, `lockLabel` and `lockedLabel`. Added Switch components, see `renderSwitch`. (issue #377) (PR #490) - Fixed issue with frozen config (`Object.freeze`) by using `clone` (issue #345) (PR #490) - Fix: Filter value sources for func args correctly. LHS field can be used as arg in RHS function. (PR #490) - MUI - Support showSearch (autocomplete) for field select widget (issue #479 #521) (PR #563) - AntDesign - Fix FieldSelect with 3+ level !struct nesting (issue #224) (PR #564) - 4.7.2 - Fixed import of rule_group with `not` (issue #548) (PR #559) - 4.7.1 - Fixed potential inconsistent order of fields (issue #335) (PR #553) - Bump `webpack-dev-server` from 3.11.2 to 4.4.0 (PR #540) - Change `FieldItems` type definition from map to array (issues #550, #363) (PR #551) - Spreading `customProps` to vanilla widgets (PR #546) - Fix for `allowCustomValues` (PR #545) - Use minimum `material-ui` version 4.12.3 and use new `createTheme` instead of deprecated `createMuiTheme` (issue #463) (PR #531) - 4.7.0 - Add explicit `not: false` in new group (issue #512) - Fix: don't automatically add one rule to query when it become empty when `canLeaveEmptyGroup=true` (issue #504) - Added config `forceShowConj` (issue #474) - Fixed import of complex hierarchy fields (combination of !group and !struct) from JsonLogic (issues #517, #333) - Fixed non-ordered map bug (issue #501) - 4.6.0 - Added `groupId` (id of the parent Item - Group, RuleGroup, RuleGroupExt etc) to field's, operartor's and widget's props (PR #510) - Fixed export to ES when group is empty (broken 'Clear' button in demo app) (PR #511) - Added 3rd param `actionMeta` to `onChange()` to get info about action (PR #445) (issue #351) - Added demo of using actions programmatically (see `run actions` in demo app) (PR #445) - Added config `shouldCreateEmptyGroup` (default `false`) (PR #445) - Now config `canLeaveEmptyGroup` is true by default (PR #445) (issue #504) - Breaking changes for format with `isForDisplay=true` - don't wrap strings with `"`, replace `==` with `=` (PR #518) - Fixed type definition for export utils - can return undefined (PR #516) - Fixed use of `hideOperator` (PR #523) (issue #292) - Documented `cancelText` (PR #524) (issue #520) - 4.5.2 - Added rule `id` to field's, operartor's and widget's props. Added config of the selected field to the operator props as `fieldConfig` (issue #502) (PR #503) - 4.5.1 - Fixed export of field name to ES (broken demo app) - 4.5.0 - Added basic support of export to ElasticSearch (PR #469) - Export all helper funcs from configUtils (PR #493) - Fixed bug with zero value in MaterialSelect (PR #392) - 4.4.3 - babel: use "@babel/plugin-transform-runtime" to avoid globally defined regenerator runtime (PR #480) - Fix export of not in some!group into JsonLogic (issue #476) (PR #484) - Fixed issue with default import/export in Vite build (PR #481) - 4.4.2 - Added support of autocomplete for multiselect widget in MUI (PR #475) - 4.4.1 - feat: possibility to add custom operators for groups (PR #462) - 4.4.0 - Added support of server-side load of values for `select` (MaterialUI only) (PR #471) - 4.3.0 - Improved function support - Functions used in examples now moved to `BasicFuncs` (exported with lib) - Added funcs `RELATIVE_DATETIME`, `NOW`, `UPPER` - Added option `showPrefix` for func args (false by default) - Added missing `mongoFormatValue` for all types in basic config (now dates are exported as `Date` objects) - 4.2.0 - Added `textarea` widget - 4.1.1 - Fix warning about showSearch in MUI theme - Fix incorrect override of vanilla button label (issue #347) - Fix display default conj (issue #426) - Don't wrap in MUI ThemeProvider if no theme or locale provided (issue #325) - Fix canLeaveEmptyGroup logic (issue #378) - 4.1.0 - Fixed lint errors in code - Reorganized files in `tests` - Updated packages - Now minimum supported NodeJs is 12.13 - Added TSC linting - Now ESLint checks types in TS files - Added new scripts: `install-all`, `clean`, `reinstall`, `build-all`, `check-hot`, `tsc`, `eslint`, `smoke`, `resmoke`. Renamed `sandbox_ts` to `sandbox-ts`, `sandbox_js` to `sandbox-js`. - Fixed problems with VSCode's TSLint plugin - Moved from deprecated `prepublish` to `prepare` in `package.json` - 4.0.4 - Fixed issue #349 with drag-n-drop and office-ui-fabric-react - Fixed issue #413 with func arg with 1 value source which is not value - 4.0.3 - Fixed issue #386 with import select field from JsonLogic (reason: bug with func/field widget in getWidgetForFieldOp) - Fixed issue #387 with subgroups in Material UI - 4.0.2 - Fixed MaterialConfig import for TS projects (issue #368) - 4.0.1 - Added custom context to isolate Query Builder store (PR #350) - Added support for React 17 as a peer dependency - 4.0.0 - Removed setting `useGroupsAsArrays`. Instead added field config `mode` for type `!group` with values: `some` (default, corresponding useGroupsAsArrays = true), `array` (new, user can choose one of group operators), `struct` (obsolete, corresponding useGroupsAsArrays = false). - For type=`!group` and mode=`array`: - new field configs are available: `conjunctions`, `showNot`, `operators`, `defaultOperator`, `initialEmptyWhere` - you can use group operators `some`, `none`, `all` or operators with 1 integer opearnd (for count): `equal`, `not_equal`, `less`, `between`, .. - localization setting `addSubRuleLabel` - Removed obsolete setting `hideConjForOne` - (rare) Added field config `fieldName` to override field key for import/export - (rare) Added field config `jsonLogicVar` and settings `jsonLogic.groupVarKey`, `jsonLogic.altVarKey` to override JsonLogic var key if need - 3.0.0 - Added [Material-UI](https://material-ui.com) widgets - 2.2.2 - Fix issue #306: Wrong import from JsonLogic and export to MongoDb for negated single-item group - 2.2.1 - Fix issue #300: If using query builder inside a form element, buttons try to submit the form - 2.2.0 - Fixed issues #246 and #176 related to wrong export and import from JsonLogic for multi-nested group fields Now `!group` fields are treated as arrays (added setting `useGroupsAsArrays` = true) - 2.1.19 - Fixed issue #252 ("Cannot update a component from inside the function body of a different component") - Issue #190: Fixed TS def for getTree/2 - added 2nd param light? - 2.1.17 - Dropped support of loading query in obsolete Immutable string format used in versions 0.\* (issue #254) - 2.1.16 - Fixed issues with export to Mongo and JsonLogic of queries with nested groups (#279, #279) - 2.1.15 - Fixed issue #276 with TS definitions - 2.1.14 - Require Node v10+ (for karma) - Fixed "SyntaxError Unexpected token '<'" in sandboxes - Fixed requirement of sass in sandboxes - Fixed eslint warnings in sandboxes - Improved Travis config: fixed ENOSPC, removed excess testing during install - 2.1.12 - Added sandbox with vanilla widgets and without TS - 2.1.11 - Minor fix for some/not JsonLogic operators can be potentially used for array types - 2.1.10 - Fixed issues #249, #246 regarding export/import from jsonLogic and groups - Fixed issue #272 with float numbers for vanilla widgets - 2.1.8 - Fixed issue #263 - 2.1.7 - Fixed TS def for conjunctionOptions (#247) - 2.1.6 - Temporary disable AntDesign 4.5.0+ because of "Invalid hook call" problem - 2.1.4 - Fixed issue #249 with importing rules with group fields from JsonLogic format - 2.1.3 - Fixed issue #255 with reordering - 2.1.2 - Added config `maxNumberOfRules` - Bugfix: respect `maxNesting` and `canLeaveEmptyGroup` settings during drag-n-drop - Enabled ESLint for examples with TS - 2.1.1 - Fixed export of `not_like` op to JsonLogic - 2.1.0 - Added displaying of rule validation errors, see `showErrorMessage` in config.settings - Added `QbUtils.isValidTree()` - `validateValue` moved from widget settings to field's `fieldSettings` - Added ESLint (unused vars & props are off for now) - 2.0.11 - Added `starts_with`, `ends_with` operators for text type - 2.0.10 - Fixed bug with missing `funcs` in config - 2.0.9 - Fixed issues #215, #214, #208 - Fixed `validateValue` - Simpler sandbox demo - 2.0.8 - Fixed issue #207 - 2.0.7 - Added `canShortMongoQuery` to `config.settings` - 2.0.6 - Fixed issue #176 - 2.0.5 - Fixed TS types. Updated sandbox to TS - 2.0.4 - Fixed import - 2.0.2 - Fix for TS - 2.0.1 - Fixed issues #187, #194, #182 - 2.0.0 - Added `renderConjs`, `renderButton`, `renderButtonGroup`, `renderProvider`, `renderValueSources`, `renderConfirm` - Removed coupling with AntDesign. Now it should be possible to use another UI framework. - Added vanilla widgets. Added switcher between `antd` and `vanilla` in demo. - 1.3.7 - Fixed issue #168 with dot in field name - 1.3.6 - Added config options to disable inputs: `immutableFieldsMode`, `immutableOpsMode`, `immutableValuesMode` - 1.3.5 - Issue #158 - 1.3.3 - Bugfix - 1.3.2 - Bugfix - 1.3.1 - Added `FieldTreeSelect` - 1.3.0 - Added support of `!group` - 1.2.0 - Added `treeselect` and `treemultiselect` types - Changed format of `listValues` from `{<value>: <title>}` to `[{value, title}]` (old is supported). Tree select also use `listValues`, format is compatible with simple select - `[{value, title, parent}]` - 1.1.3 - Fixed console warnings - Fixed dev hot reload: now state is preserving - Added render hoooks to `config.settings`: `renderBeforeWidget`, `renderAfterWidget`, `renderBeforeActions`, `renderAfterActions` - 1.1.2 - Added import from [JsonLogic](http://jsonlogic.com) - 1.1.1 - Optimized `$eq` and `$and` in MongoDb query export - Fixed error if query value is empty - Added API in readme - 1.1.0 - Added export to [JsonLogic](http://jsonlogic.com) - 1.0.12 - Added `sqlFormatFunc`, `mongoFormatFunc`, `renderBrackets`, `renderSeps` (for func), `funcs` (for field) - 1.0.11 - Added css-class `qb-lite` for query builder (see readme if you wanna use it) - 1.0.10 - Fix when using cascader for func selection - 1.0.9 - Allow group of functions (like with fields - `type == '!struct'` and `subfields`) - 1.0.8 - Added support for your custom functions as value source (args can be values/fields/funcs), see new section `funcs` in `config` - Improved Mongo format: now can compare with field & use funcs with help of `$expr` - (breaking) `mongoFormatOp` - inserted arg `useExpr` at 4th position - Added `hideForSelect`, `hideForCompare` for field config - 1.0.7 - Fixed Babel - 1.0.6 - Added TypeScript support (`examples` uses TS, `sandbox` uses JS) - Updated Babel, Webpack - For `field` widget slightly changed format of `formatValue()` and `sqlFormatValue()` functions - argument `rightFieldDef` is now last one - Added `defaultValue` in field config - All `fieldSettings` will be now passed to widget props - `listValues` and `allowCustomValues` moved inside `fieldSettings` - 1.0.4 - Added `QbUtils.sqlFormat()` (issue #29) - Added `like` and `not_like` operators - Added 2 params `string op, Object opDef` to end of `formatValue()`, `mongoFormatValue()` - 1.0.3 - Completely removed auto-loading of antd styles (issue #50) - 1.0.2 - Fixed bug with running examples app via react-scripts - 1.0.1 - Fixed bug with importing React - 1.0.0 - Don't include AntDesign styles automatically (issues #50, #93) - added: `allowCustomValues` (issue #88) - change: removed `renderFieldAndOpAsDropdown`, replaced by `renderField` (issue #109) - added `renderOperator` (issue #89) - change: query value now can be exported to JSON (instead of `Immutable.Map`), and loaded with `loadTree` (old format is supported) (issue #61) - added: `canRegroup` - rename: `readonlyMode` -> `immutableGroupsMode` - rename: `get_children` -> `renderBuilder` - removed: unused `<Preview />` component and `.query-preview` class - optimized renders & dragging