@toptal/picasso-query-builder 1.5.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/{AddGroupButton → dist-package/src/AddGroupButton}/AddGroupButton.d.ts +1 -0
  2. package/dist-package/src/AddGroupButton/AddGroupButton.d.ts.map +1 -0
  3. package/dist-package/src/AddGroupButton/AddGroupButton.js.map +1 -0
  4. package/dist-package/src/AddGroupButton/index.d.ts +2 -0
  5. package/dist-package/src/AddGroupButton/index.d.ts.map +1 -0
  6. package/dist-package/src/AddGroupButton/index.js.map +1 -0
  7. package/{AddRuleButton → dist-package/src/AddRuleButton}/AddRuleButton.d.ts +1 -0
  8. package/dist-package/src/AddRuleButton/AddRuleButton.d.ts.map +1 -0
  9. package/dist-package/src/AddRuleButton/AddRuleButton.js.map +1 -0
  10. package/dist-package/src/AddRuleButton/index.d.ts +2 -0
  11. package/dist-package/src/AddRuleButton/index.d.ts.map +1 -0
  12. package/dist-package/src/AddRuleButton/index.js.map +1 -0
  13. package/{AutoComplete → dist-package/src/AutoComplete}/AutoComplete.d.ts +1 -0
  14. package/dist-package/src/AutoComplete/AutoComplete.d.ts.map +1 -0
  15. package/dist-package/src/AutoComplete/AutoComplete.js.map +1 -0
  16. package/dist-package/src/AutoComplete/index.d.ts +2 -0
  17. package/dist-package/src/AutoComplete/index.d.ts.map +1 -0
  18. package/dist-package/src/AutoComplete/index.js.map +1 -0
  19. package/{AutoComplete → dist-package/src/AutoComplete}/styles.d.ts +1 -0
  20. package/dist-package/src/AutoComplete/styles.d.ts.map +1 -0
  21. package/dist-package/src/AutoComplete/styles.js.map +1 -0
  22. package/{BooleanInput → dist-package/src/BooleanInput}/BooleanInput.d.ts +1 -0
  23. package/dist-package/src/BooleanInput/BooleanInput.d.ts.map +1 -0
  24. package/dist-package/src/BooleanInput/BooleanInput.js.map +1 -0
  25. package/dist-package/src/BooleanInput/index.d.ts +2 -0
  26. package/dist-package/src/BooleanInput/index.d.ts.map +1 -0
  27. package/dist-package/src/BooleanInput/index.js.map +1 -0
  28. package/{ClearQueryButton → dist-package/src/ClearQueryButton}/ClearQueryButton.d.ts +1 -0
  29. package/dist-package/src/ClearQueryButton/ClearQueryButton.d.ts.map +1 -0
  30. package/dist-package/src/ClearQueryButton/ClearQueryButton.js.map +1 -0
  31. package/{ClearQueryButton → dist-package/src/ClearQueryButton}/index.d.ts +1 -0
  32. package/dist-package/src/ClearQueryButton/index.d.ts.map +1 -0
  33. package/dist-package/src/ClearQueryButton/index.js.map +1 -0
  34. package/{CloneGroupButton → dist-package/src/CloneGroupButton}/CloneGroupButton.d.ts +1 -0
  35. package/dist-package/src/CloneGroupButton/CloneGroupButton.d.ts.map +1 -0
  36. package/dist-package/src/CloneGroupButton/CloneGroupButton.js.map +1 -0
  37. package/{CloneGroupButton → dist-package/src/CloneGroupButton}/index.d.ts +1 -0
  38. package/dist-package/src/CloneGroupButton/index.d.ts.map +1 -0
  39. package/dist-package/src/CloneGroupButton/index.js.map +1 -0
  40. package/{CloneRuleButton → dist-package/src/CloneRuleButton}/CloneRuleButton.d.ts +1 -0
  41. package/dist-package/src/CloneRuleButton/CloneRuleButton.d.ts.map +1 -0
  42. package/dist-package/src/CloneRuleButton/CloneRuleButton.js.map +1 -0
  43. package/{CloneRuleButton → dist-package/src/CloneRuleButton}/index.d.ts +1 -0
  44. package/dist-package/src/CloneRuleButton/index.d.ts.map +1 -0
  45. package/dist-package/src/CloneRuleButton/index.js.map +1 -0
  46. package/{CombinatorSelector → dist-package/src/CombinatorSelector}/CombinatorSelector.d.ts +1 -0
  47. package/dist-package/src/CombinatorSelector/CombinatorSelector.d.ts.map +1 -0
  48. package/dist-package/src/CombinatorSelector/CombinatorSelector.js.map +1 -0
  49. package/{CombinatorSelector → dist-package/src/CombinatorSelector}/RadioOptions.d.ts +1 -0
  50. package/dist-package/src/CombinatorSelector/RadioOptions.d.ts.map +1 -0
  51. package/dist-package/src/CombinatorSelector/RadioOptions.js.map +1 -0
  52. package/{CombinatorSelector → dist-package/src/CombinatorSelector}/index.d.ts +1 -0
  53. package/dist-package/src/CombinatorSelector/index.d.ts.map +1 -0
  54. package/dist-package/src/CombinatorSelector/index.js.map +1 -0
  55. package/{RunQueryButton → dist-package/src/CombinatorSelector}/styles.d.ts +1 -0
  56. package/dist-package/src/CombinatorSelector/styles.d.ts.map +1 -0
  57. package/dist-package/src/CombinatorSelector/styles.js.map +1 -0
  58. package/{ControlElementsContext → dist-package/src/ControlElementsContext}/ControlElementsContext.d.ts +1 -0
  59. package/dist-package/src/ControlElementsContext/ControlElementsContext.d.ts.map +1 -0
  60. package/dist-package/src/ControlElementsContext/ControlElementsContext.js.map +1 -0
  61. package/dist-package/src/ControlElementsContext/index.d.ts +2 -0
  62. package/dist-package/src/ControlElementsContext/index.d.ts.map +1 -0
  63. package/dist-package/src/ControlElementsContext/index.js.map +1 -0
  64. package/{FieldSelector → dist-package/src/FieldSelector}/FieldSelector.d.ts +1 -0
  65. package/dist-package/src/FieldSelector/FieldSelector.d.ts.map +1 -0
  66. package/dist-package/src/FieldSelector/FieldSelector.js.map +1 -0
  67. package/dist-package/src/FieldSelector/index.d.ts +2 -0
  68. package/dist-package/src/FieldSelector/index.d.ts.map +1 -0
  69. package/dist-package/src/FieldSelector/index.js.map +1 -0
  70. package/{MultiSelect → dist-package/src/MultiSelect}/MultiSelect.d.ts +1 -0
  71. package/dist-package/src/MultiSelect/MultiSelect.d.ts.map +1 -0
  72. package/dist-package/src/MultiSelect/MultiSelect.js.map +1 -0
  73. package/dist-package/src/MultiSelect/index.d.ts +2 -0
  74. package/dist-package/src/MultiSelect/index.d.ts.map +1 -0
  75. package/dist-package/src/MultiSelect/index.js.map +1 -0
  76. package/{CombinatorSelector → dist-package/src/MultiSelect}/styles.d.ts +1 -0
  77. package/dist-package/src/MultiSelect/styles.d.ts.map +1 -0
  78. package/{RunQueryButton → dist-package/src/MultiSelect}/styles.js.map +1 -1
  79. package/{OperatorSelector → dist-package/src/OperatorSelector}/OperatorSelector.d.ts +1 -0
  80. package/dist-package/src/OperatorSelector/OperatorSelector.d.ts.map +1 -0
  81. package/dist-package/src/OperatorSelector/OperatorSelector.js.map +1 -0
  82. package/{OperatorSelector → dist-package/src/OperatorSelector}/index.d.ts +1 -0
  83. package/dist-package/src/OperatorSelector/index.d.ts.map +1 -0
  84. package/dist-package/src/OperatorSelector/index.js.map +1 -0
  85. package/{MultiSelect → dist-package/src/OperatorSelector}/styles.d.ts +1 -0
  86. package/dist-package/src/OperatorSelector/styles.d.ts.map +1 -0
  87. package/dist-package/src/OperatorSelector/styles.js.map +1 -0
  88. package/{QueryBuilder → dist-package/src/QueryBuilder}/QueryBuilder.d.ts +1 -0
  89. package/dist-package/src/QueryBuilder/QueryBuilder.d.ts.map +1 -0
  90. package/{QueryBuilder → dist-package/src/QueryBuilder}/QueryBuilder.js +1 -1
  91. package/dist-package/src/QueryBuilder/QueryBuilder.js.map +1 -0
  92. package/{QueryBuilder → dist-package/src/QueryBuilder}/hooks/useOnQueryChange.d.ts +1 -0
  93. package/dist-package/src/QueryBuilder/hooks/useOnQueryChange.d.ts.map +1 -0
  94. package/{QueryBuilder → dist-package/src/QueryBuilder}/hooks/useOnQueryChange.js +1 -1
  95. package/dist-package/src/QueryBuilder/hooks/useOnQueryChange.js.map +1 -0
  96. package/{QueryBuilder → dist-package/src/QueryBuilder}/index.d.ts +1 -0
  97. package/dist-package/src/QueryBuilder/index.d.ts.map +1 -0
  98. package/dist-package/src/QueryBuilder/index.js.map +1 -0
  99. package/{QueryBuilder → dist-package/src/QueryBuilder}/query-builder-global-styles.d.ts +9 -8
  100. package/dist-package/src/QueryBuilder/query-builder-global-styles.d.ts.map +1 -0
  101. package/{QueryBuilder → dist-package/src/QueryBuilder}/query-builder-global-styles.js +1 -1
  102. package/dist-package/src/QueryBuilder/query-builder-global-styles.js.map +1 -0
  103. package/{QueryBuilder → dist-package/src/QueryBuilder}/styles.d.ts +1 -0
  104. package/dist-package/src/QueryBuilder/styles.d.ts.map +1 -0
  105. package/dist-package/src/QueryBuilder/styles.js.map +1 -0
  106. package/{RangeInput → dist-package/src/RangeInput}/RangeInput.d.ts +1 -0
  107. package/dist-package/src/RangeInput/RangeInput.d.ts.map +1 -0
  108. package/dist-package/src/RangeInput/RangeInput.js.map +1 -0
  109. package/dist-package/src/RangeInput/index.d.ts +2 -0
  110. package/dist-package/src/RangeInput/index.d.ts.map +1 -0
  111. package/dist-package/src/RangeInput/index.js.map +1 -0
  112. package/{RangeInput → dist-package/src/RangeInput}/styles.d.ts +1 -0
  113. package/dist-package/src/RangeInput/styles.d.ts.map +1 -0
  114. package/dist-package/src/RangeInput/styles.js.map +1 -0
  115. package/{RemoveGroupButton → dist-package/src/RemoveGroupButton}/RemoveGroupButton.d.ts +1 -0
  116. package/dist-package/src/RemoveGroupButton/RemoveGroupButton.d.ts.map +1 -0
  117. package/{RemoveGroupButton → dist-package/src/RemoveGroupButton}/RemoveGroupButton.js +1 -1
  118. package/dist-package/src/RemoveGroupButton/RemoveGroupButton.js.map +1 -0
  119. package/{RemoveGroupButton → dist-package/src/RemoveGroupButton}/index.d.ts +1 -0
  120. package/dist-package/src/RemoveGroupButton/index.d.ts.map +1 -0
  121. package/dist-package/src/RemoveGroupButton/index.js.map +1 -0
  122. package/{RemoveRuleButton → dist-package/src/RemoveRuleButton}/RemoveRuleButton.d.ts +1 -0
  123. package/dist-package/src/RemoveRuleButton/RemoveRuleButton.d.ts.map +1 -0
  124. package/dist-package/src/RemoveRuleButton/RemoveRuleButton.js.map +1 -0
  125. package/{RemoveRuleButton → dist-package/src/RemoveRuleButton}/index.d.ts +1 -0
  126. package/dist-package/src/RemoveRuleButton/index.d.ts.map +1 -0
  127. package/dist-package/src/RemoveRuleButton/index.js.map +1 -0
  128. package/{RunQueryButton → dist-package/src/RunQueryButton}/RunQueryButton.d.ts +1 -0
  129. package/dist-package/src/RunQueryButton/RunQueryButton.d.ts.map +1 -0
  130. package/dist-package/src/RunQueryButton/RunQueryButton.js.map +1 -0
  131. package/dist-package/src/RunQueryButton/index.d.ts +2 -0
  132. package/dist-package/src/RunQueryButton/index.d.ts.map +1 -0
  133. package/dist-package/src/RunQueryButton/index.js.map +1 -0
  134. package/{OperatorSelector → dist-package/src/RunQueryButton}/styles.d.ts +1 -0
  135. package/dist-package/src/RunQueryButton/styles.d.ts.map +1 -0
  136. package/dist-package/src/RunQueryButton/styles.js.map +1 -0
  137. package/{Select → dist-package/src/Select}/Select.d.ts +1 -0
  138. package/dist-package/src/Select/Select.d.ts.map +1 -0
  139. package/dist-package/src/Select/Select.js.map +1 -0
  140. package/dist-package/src/Select/index.d.ts +2 -0
  141. package/dist-package/src/Select/index.d.ts.map +1 -0
  142. package/dist-package/src/Select/index.js.map +1 -0
  143. package/dist-package/src/Select/styles.d.ts +3 -0
  144. package/dist-package/src/Select/styles.d.ts.map +1 -0
  145. package/dist-package/src/Select/styles.js.map +1 -0
  146. package/{TextInput → dist-package/src/TextInput}/TextInput.d.ts +1 -0
  147. package/dist-package/src/TextInput/TextInput.d.ts.map +1 -0
  148. package/dist-package/src/TextInput/TextInput.js.map +1 -0
  149. package/dist-package/src/TextInput/index.d.ts +2 -0
  150. package/dist-package/src/TextInput/index.d.ts.map +1 -0
  151. package/dist-package/src/TextInput/index.js.map +1 -0
  152. package/{ValidationErrors → dist-package/src/ValidationErrors}/ValidationErrors.d.ts +1 -0
  153. package/dist-package/src/ValidationErrors/ValidationErrors.d.ts.map +1 -0
  154. package/dist-package/src/ValidationErrors/ValidationErrors.js.map +1 -0
  155. package/dist-package/src/ValidationErrors/index.d.ts +2 -0
  156. package/dist-package/src/ValidationErrors/index.d.ts.map +1 -0
  157. package/dist-package/src/ValidationErrors/index.js.map +1 -0
  158. package/{ValueEditor → dist-package/src/ValueEditor}/ValueEditor.d.ts +1 -0
  159. package/dist-package/src/ValueEditor/ValueEditor.d.ts.map +1 -0
  160. package/dist-package/src/ValueEditor/ValueEditor.js.map +1 -0
  161. package/dist-package/src/ValueEditor/index.d.ts +2 -0
  162. package/dist-package/src/ValueEditor/index.d.ts.map +1 -0
  163. package/dist-package/src/ValueEditor/index.js.map +1 -0
  164. package/dist-package/src/ValueEditor/styles.d.ts +3 -0
  165. package/dist-package/src/ValueEditor/styles.d.ts.map +1 -0
  166. package/dist-package/src/ValueEditor/styles.js.map +1 -0
  167. package/{index.d.ts → dist-package/src/index.d.ts} +1 -0
  168. package/dist-package/src/index.d.ts.map +1 -0
  169. package/dist-package/src/index.js.map +1 -0
  170. package/{types → dist-package/src/types}/condition.d.ts +1 -0
  171. package/dist-package/src/types/condition.d.ts.map +1 -0
  172. package/dist-package/src/types/condition.js.map +1 -0
  173. package/{types → dist-package/src/types}/query-builder.d.ts +1 -0
  174. package/dist-package/src/types/query-builder.d.ts.map +1 -0
  175. package/dist-package/src/types/query-builder.js.map +1 -0
  176. package/{utils → dist-package/src/utils}/config.d.ts +1 -0
  177. package/dist-package/src/utils/config.d.ts.map +1 -0
  178. package/dist-package/src/utils/config.js.map +1 -0
  179. package/{utils → dist-package/src/utils}/constants.d.ts +1 -0
  180. package/dist-package/src/utils/constants.d.ts.map +1 -0
  181. package/dist-package/src/utils/constants.js.map +1 -0
  182. package/{utils → dist-package/src/utils}/generate-select-options.d.ts +3 -2
  183. package/dist-package/src/utils/generate-select-options.d.ts.map +1 -0
  184. package/dist-package/src/utils/generate-select-options.js.map +1 -0
  185. package/{utils → dist-package/src/utils}/get-query-depth.d.ts +1 -0
  186. package/dist-package/src/utils/get-query-depth.d.ts.map +1 -0
  187. package/dist-package/src/utils/get-query-depth.js.map +1 -0
  188. package/{utils → dist-package/src/utils}/index.d.ts +1 -0
  189. package/dist-package/src/utils/index.d.ts.map +1 -0
  190. package/dist-package/src/utils/index.js.map +1 -0
  191. package/{utils → dist-package/src/utils}/use-handle-touched.d.ts +1 -0
  192. package/dist-package/src/utils/use-handle-touched.d.ts.map +1 -0
  193. package/dist-package/src/utils/use-handle-touched.js.map +1 -0
  194. package/{utils → dist-package/src/utils}/use-query-builder-validator.d.ts +1 -0
  195. package/dist-package/src/utils/use-query-builder-validator.d.ts.map +1 -0
  196. package/dist-package/src/utils/use-query-builder-validator.js.map +1 -0
  197. package/{utils → dist-package/src/utils}/validate-value-editor.d.ts +1 -0
  198. package/dist-package/src/utils/validate-value-editor.d.ts.map +1 -0
  199. package/dist-package/src/utils/validate-value-editor.js.map +1 -0
  200. package/package.json +20 -9
  201. package/src/AddGroupButton/AddGroupButton.test.tsx +91 -0
  202. package/src/AddGroupButton/AddGroupButton.tsx +36 -0
  203. package/src/AddGroupButton/index.ts +1 -0
  204. package/src/AddRuleButton/AddRuleButton.tsx +26 -0
  205. package/src/AddRuleButton/index.ts +1 -0
  206. package/src/AutoComplete/AutoComplete.tsx +104 -0
  207. package/src/AutoComplete/index.ts +1 -0
  208. package/src/AutoComplete/styles.ts +12 -0
  209. package/src/BooleanInput/BooleanInput.tsx +46 -0
  210. package/src/BooleanInput/index.ts +1 -0
  211. package/src/ClearQueryButton/ClearQueryButton.tsx +14 -0
  212. package/src/ClearQueryButton/index.ts +1 -0
  213. package/src/CloneGroupButton/CloneGroupButton.tsx +21 -0
  214. package/src/CloneGroupButton/index.ts +1 -0
  215. package/src/CloneRuleButton/CloneRuleButton.tsx +19 -0
  216. package/src/CloneRuleButton/index.ts +1 -0
  217. package/src/CombinatorSelector/CombinatorSelector.test.tsx +74 -0
  218. package/src/CombinatorSelector/CombinatorSelector.tsx +40 -0
  219. package/src/CombinatorSelector/RadioOptions.test.tsx +89 -0
  220. package/src/CombinatorSelector/RadioOptions.tsx +39 -0
  221. package/src/CombinatorSelector/index.ts +1 -0
  222. package/src/CombinatorSelector/styles.tsx +8 -0
  223. package/src/ControlElementsContext/ControlElementsContext.tsx +33 -0
  224. package/{ControlElementsContext/index.d.ts → src/ControlElementsContext/index.ts} +1 -1
  225. package/src/FieldSelector/FieldSelector.tsx +28 -0
  226. package/src/FieldSelector/index.ts +1 -0
  227. package/src/MultiSelect/MultiSelect.tsx +65 -0
  228. package/src/MultiSelect/index.ts +1 -0
  229. package/src/MultiSelect/styles.ts +8 -0
  230. package/src/OperatorSelector/OperatorSelector.tsx +25 -0
  231. package/src/OperatorSelector/index.ts +1 -0
  232. package/src/OperatorSelector/styles.ts +8 -0
  233. package/src/QueryBuilder/QueryBuilder.tsx +246 -0
  234. package/src/QueryBuilder/hooks/useOnQueryChange.tsx +32 -0
  235. package/src/QueryBuilder/index.ts +1 -0
  236. package/src/QueryBuilder/query-builder-global-styles.ts +202 -0
  237. package/src/QueryBuilder/story/Callback.example.tsx +89 -0
  238. package/src/QueryBuilder/story/CustomOperators.example.tsx +86 -0
  239. package/src/QueryBuilder/story/CustomValueEditor.example.tsx +75 -0
  240. package/src/QueryBuilder/story/Default.example.tsx +279 -0
  241. package/src/QueryBuilder/story/DragDrop.example.tsx +289 -0
  242. package/src/QueryBuilder/story/DynamicMultiselect.example.tsx +72 -0
  243. package/src/QueryBuilder/story/Header.example.tsx +62 -0
  244. package/src/QueryBuilder/story/HideControls.example.tsx +55 -0
  245. package/src/QueryBuilder/story/InitialValues.example.tsx +310 -0
  246. package/src/QueryBuilder/story/Loading.example.tsx +55 -0
  247. package/src/QueryBuilder/story/MaxDepth.example.tsx +61 -0
  248. package/src/QueryBuilder/story/RuleValidation.example.tsx +85 -0
  249. package/src/QueryBuilder/story/TotalCount.example.tsx +55 -0
  250. package/src/QueryBuilder/story/index.jsx +84 -0
  251. package/src/QueryBuilder/styles.ts +105 -0
  252. package/src/RangeInput/RangeInput.test.tsx +145 -0
  253. package/src/RangeInput/RangeInput.tsx +117 -0
  254. package/src/RangeInput/index.ts +1 -0
  255. package/src/RangeInput/styles.ts +11 -0
  256. package/src/RemoveGroupButton/RemoveGroupButton.tsx +36 -0
  257. package/src/RemoveGroupButton/index.ts +1 -0
  258. package/src/RemoveRuleButton/RemoveRuleButton.tsx +19 -0
  259. package/src/RemoveRuleButton/index.ts +1 -0
  260. package/src/RunQueryButton/RunQueryButton.tsx +50 -0
  261. package/src/RunQueryButton/index.ts +1 -0
  262. package/src/RunQueryButton/styles.ts +8 -0
  263. package/src/Select/Select.tsx +55 -0
  264. package/src/Select/index.ts +1 -0
  265. package/src/Select/styles.ts +8 -0
  266. package/src/TextInput/TextInput.tsx +55 -0
  267. package/src/TextInput/index.ts +1 -0
  268. package/src/ValidationErrors/ValidationErrors.test.tsx +102 -0
  269. package/src/ValidationErrors/ValidationErrors.tsx +60 -0
  270. package/{ValidationErrors/index.d.ts → src/ValidationErrors/index.ts} +1 -1
  271. package/src/ValueEditor/ValueEditor.tsx +148 -0
  272. package/src/ValueEditor/index.ts +1 -0
  273. package/src/ValueEditor/styles.ts +8 -0
  274. package/src/index.ts +31 -0
  275. package/src/story/index.jsx +10 -0
  276. package/src/types/condition.ts +4 -0
  277. package/src/types/query-builder.ts +96 -0
  278. package/src/utils/config.ts +13 -0
  279. package/src/utils/constants.ts +4 -0
  280. package/src/utils/generate-select-options.test.ts +67 -0
  281. package/src/utils/generate-select-options.ts +26 -0
  282. package/src/utils/get-query-depth.test.ts +83 -0
  283. package/src/utils/get-query-depth.ts +13 -0
  284. package/src/utils/index.ts +6 -0
  285. package/src/utils/use-handle-touched.test.ts +57 -0
  286. package/src/utils/use-handle-touched.ts +26 -0
  287. package/src/utils/use-query-builder-validator.test.ts +209 -0
  288. package/src/utils/use-query-builder-validator.ts +111 -0
  289. package/src/utils/validate-value-editor.test.ts +98 -0
  290. package/src/utils/validate-value-editor.ts +20 -0
  291. package/AddGroupButton/AddGroupButton.js.map +0 -1
  292. package/AddGroupButton/AddGroupButton.test.d.ts +0 -1
  293. package/AddGroupButton/AddGroupButton.test.js +0 -73
  294. package/AddGroupButton/AddGroupButton.test.js.map +0 -1
  295. package/AddGroupButton/index.d.ts +0 -1
  296. package/AddGroupButton/index.js.map +0 -1
  297. package/AddRuleButton/AddRuleButton.js.map +0 -1
  298. package/AddRuleButton/index.d.ts +0 -1
  299. package/AddRuleButton/index.js.map +0 -1
  300. package/AutoComplete/AutoComplete.js.map +0 -1
  301. package/AutoComplete/index.d.ts +0 -1
  302. package/AutoComplete/index.js.map +0 -1
  303. package/AutoComplete/styles.js.map +0 -1
  304. package/BooleanInput/BooleanInput.js.map +0 -1
  305. package/BooleanInput/index.d.ts +0 -1
  306. package/BooleanInput/index.js.map +0 -1
  307. package/ClearQueryButton/ClearQueryButton.js.map +0 -1
  308. package/ClearQueryButton/index.js.map +0 -1
  309. package/CloneGroupButton/CloneGroupButton.js.map +0 -1
  310. package/CloneGroupButton/index.js.map +0 -1
  311. package/CloneRuleButton/CloneRuleButton.js.map +0 -1
  312. package/CloneRuleButton/index.js.map +0 -1
  313. package/CombinatorSelector/CombinatorSelector.js.map +0 -1
  314. package/CombinatorSelector/CombinatorSelector.test.d.ts +0 -1
  315. package/CombinatorSelector/CombinatorSelector.test.js +0 -54
  316. package/CombinatorSelector/CombinatorSelector.test.js.map +0 -1
  317. package/CombinatorSelector/RadioOptions.js.map +0 -1
  318. package/CombinatorSelector/RadioOptions.test.d.ts +0 -1
  319. package/CombinatorSelector/RadioOptions.test.js +0 -58
  320. package/CombinatorSelector/RadioOptions.test.js.map +0 -1
  321. package/CombinatorSelector/index.js.map +0 -1
  322. package/CombinatorSelector/styles.js.map +0 -1
  323. package/ControlElementsContext/ControlElementsContext.js.map +0 -1
  324. package/ControlElementsContext/index.js.map +0 -1
  325. package/FieldSelector/FieldSelector.js.map +0 -1
  326. package/FieldSelector/index.d.ts +0 -1
  327. package/FieldSelector/index.js.map +0 -1
  328. package/LICENSE +0 -20
  329. package/MultiSelect/MultiSelect.js.map +0 -1
  330. package/MultiSelect/index.d.ts +0 -1
  331. package/MultiSelect/index.js.map +0 -1
  332. package/MultiSelect/styles.js.map +0 -1
  333. package/OperatorSelector/OperatorSelector.js.map +0 -1
  334. package/OperatorSelector/index.js.map +0 -1
  335. package/OperatorSelector/styles.js.map +0 -1
  336. package/QueryBuilder/QueryBuilder.js.map +0 -1
  337. package/QueryBuilder/hooks/useOnQueryChange.js.map +0 -1
  338. package/QueryBuilder/index.js.map +0 -1
  339. package/QueryBuilder/query-builder-global-styles.js.map +0 -1
  340. package/QueryBuilder/styles.js.map +0 -1
  341. package/RangeInput/RangeInput.js.map +0 -1
  342. package/RangeInput/RangeInput.test.d.ts +0 -1
  343. package/RangeInput/RangeInput.test.js +0 -102
  344. package/RangeInput/RangeInput.test.js.map +0 -1
  345. package/RangeInput/index.d.ts +0 -1
  346. package/RangeInput/index.js.map +0 -1
  347. package/RangeInput/styles.js.map +0 -1
  348. package/RemoveGroupButton/RemoveGroupButton.js.map +0 -1
  349. package/RemoveGroupButton/index.js.map +0 -1
  350. package/RemoveRuleButton/RemoveRuleButton.js.map +0 -1
  351. package/RemoveRuleButton/index.js.map +0 -1
  352. package/RunQueryButton/RunQueryButton.js.map +0 -1
  353. package/RunQueryButton/index.d.ts +0 -1
  354. package/RunQueryButton/index.js.map +0 -1
  355. package/Select/Select.js.map +0 -1
  356. package/Select/index.d.ts +0 -1
  357. package/Select/index.js.map +0 -1
  358. package/Select/styles.d.ts +0 -2
  359. package/Select/styles.js.map +0 -1
  360. package/TextInput/TextInput.js.map +0 -1
  361. package/TextInput/index.d.ts +0 -1
  362. package/TextInput/index.js.map +0 -1
  363. package/ValidationErrors/ValidationErrors.js.map +0 -1
  364. package/ValidationErrors/ValidationErrors.test.d.ts +0 -1
  365. package/ValidationErrors/ValidationErrors.test.js +0 -73
  366. package/ValidationErrors/ValidationErrors.test.js.map +0 -1
  367. package/ValidationErrors/index.js.map +0 -1
  368. package/ValueEditor/ValueEditor.js.map +0 -1
  369. package/ValueEditor/index.d.ts +0 -1
  370. package/ValueEditor/index.js.map +0 -1
  371. package/ValueEditor/styles.d.ts +0 -2
  372. package/ValueEditor/styles.js.map +0 -1
  373. package/index.js.map +0 -1
  374. package/types/condition.js.map +0 -1
  375. package/types/query-builder.js.map +0 -1
  376. package/utils/config.js.map +0 -1
  377. package/utils/constants.js.map +0 -1
  378. package/utils/generate-select-options.js.map +0 -1
  379. package/utils/generate-select-options.test.d.ts +0 -1
  380. package/utils/generate-select-options.test.js +0 -58
  381. package/utils/generate-select-options.test.js.map +0 -1
  382. package/utils/get-query-depth.js.map +0 -1
  383. package/utils/get-query-depth.test.d.ts +0 -1
  384. package/utils/get-query-depth.test.js +0 -80
  385. package/utils/get-query-depth.test.js.map +0 -1
  386. package/utils/index.js.map +0 -1
  387. package/utils/use-handle-touched.js.map +0 -1
  388. package/utils/use-handle-touched.test.d.ts +0 -1
  389. package/utils/use-handle-touched.test.js +0 -39
  390. package/utils/use-handle-touched.test.js.map +0 -1
  391. package/utils/use-query-builder-validator.js.map +0 -1
  392. package/utils/use-query-builder-validator.test.d.ts +0 -1
  393. package/utils/use-query-builder-validator.test.js +0 -176
  394. package/utils/use-query-builder-validator.test.js.map +0 -1
  395. package/utils/validate-value-editor.js.map +0 -1
  396. package/utils/validate-value-editor.test.d.ts +0 -1
  397. package/utils/validate-value-editor.test.js +0 -69
  398. package/utils/validate-value-editor.test.js.map +0 -1
  399. /package/{AddGroupButton → dist-package/src/AddGroupButton}/AddGroupButton.js +0 -0
  400. /package/{AddGroupButton → dist-package/src/AddGroupButton}/index.js +0 -0
  401. /package/{AddRuleButton → dist-package/src/AddRuleButton}/AddRuleButton.js +0 -0
  402. /package/{AddRuleButton → dist-package/src/AddRuleButton}/index.js +0 -0
  403. /package/{AutoComplete → dist-package/src/AutoComplete}/AutoComplete.js +0 -0
  404. /package/{AutoComplete → dist-package/src/AutoComplete}/index.js +0 -0
  405. /package/{AutoComplete → dist-package/src/AutoComplete}/styles.js +0 -0
  406. /package/{BooleanInput → dist-package/src/BooleanInput}/BooleanInput.js +0 -0
  407. /package/{BooleanInput → dist-package/src/BooleanInput}/index.js +0 -0
  408. /package/{ClearQueryButton → dist-package/src/ClearQueryButton}/ClearQueryButton.js +0 -0
  409. /package/{ClearQueryButton → dist-package/src/ClearQueryButton}/index.js +0 -0
  410. /package/{CloneGroupButton → dist-package/src/CloneGroupButton}/CloneGroupButton.js +0 -0
  411. /package/{CloneGroupButton → dist-package/src/CloneGroupButton}/index.js +0 -0
  412. /package/{CloneRuleButton → dist-package/src/CloneRuleButton}/CloneRuleButton.js +0 -0
  413. /package/{CloneRuleButton → dist-package/src/CloneRuleButton}/index.js +0 -0
  414. /package/{CombinatorSelector → dist-package/src/CombinatorSelector}/CombinatorSelector.js +0 -0
  415. /package/{CombinatorSelector → dist-package/src/CombinatorSelector}/RadioOptions.js +0 -0
  416. /package/{CombinatorSelector → dist-package/src/CombinatorSelector}/index.js +0 -0
  417. /package/{CombinatorSelector → dist-package/src/CombinatorSelector}/styles.js +0 -0
  418. /package/{ControlElementsContext → dist-package/src/ControlElementsContext}/ControlElementsContext.js +0 -0
  419. /package/{ControlElementsContext → dist-package/src/ControlElementsContext}/index.js +0 -0
  420. /package/{FieldSelector → dist-package/src/FieldSelector}/FieldSelector.js +0 -0
  421. /package/{FieldSelector → dist-package/src/FieldSelector}/index.js +0 -0
  422. /package/{MultiSelect → dist-package/src/MultiSelect}/MultiSelect.js +0 -0
  423. /package/{MultiSelect → dist-package/src/MultiSelect}/index.js +0 -0
  424. /package/{MultiSelect → dist-package/src/MultiSelect}/styles.js +0 -0
  425. /package/{OperatorSelector → dist-package/src/OperatorSelector}/OperatorSelector.js +0 -0
  426. /package/{OperatorSelector → dist-package/src/OperatorSelector}/index.js +0 -0
  427. /package/{OperatorSelector → dist-package/src/OperatorSelector}/styles.js +0 -0
  428. /package/{QueryBuilder → dist-package/src/QueryBuilder}/index.js +0 -0
  429. /package/{QueryBuilder → dist-package/src/QueryBuilder}/styles.js +0 -0
  430. /package/{RangeInput → dist-package/src/RangeInput}/RangeInput.js +0 -0
  431. /package/{RangeInput → dist-package/src/RangeInput}/index.js +0 -0
  432. /package/{RangeInput → dist-package/src/RangeInput}/styles.js +0 -0
  433. /package/{RemoveGroupButton → dist-package/src/RemoveGroupButton}/index.js +0 -0
  434. /package/{RemoveRuleButton → dist-package/src/RemoveRuleButton}/RemoveRuleButton.js +0 -0
  435. /package/{RemoveRuleButton → dist-package/src/RemoveRuleButton}/index.js +0 -0
  436. /package/{RunQueryButton → dist-package/src/RunQueryButton}/RunQueryButton.js +0 -0
  437. /package/{RunQueryButton → dist-package/src/RunQueryButton}/index.js +0 -0
  438. /package/{RunQueryButton → dist-package/src/RunQueryButton}/styles.js +0 -0
  439. /package/{Select → dist-package/src/Select}/Select.js +0 -0
  440. /package/{Select → dist-package/src/Select}/index.js +0 -0
  441. /package/{Select → dist-package/src/Select}/styles.js +0 -0
  442. /package/{TextInput → dist-package/src/TextInput}/TextInput.js +0 -0
  443. /package/{TextInput → dist-package/src/TextInput}/index.js +0 -0
  444. /package/{ValidationErrors → dist-package/src/ValidationErrors}/ValidationErrors.js +0 -0
  445. /package/{ValidationErrors → dist-package/src/ValidationErrors}/index.js +0 -0
  446. /package/{ValueEditor → dist-package/src/ValueEditor}/ValueEditor.js +0 -0
  447. /package/{ValueEditor → dist-package/src/ValueEditor}/index.js +0 -0
  448. /package/{ValueEditor → dist-package/src/ValueEditor}/styles.js +0 -0
  449. /package/{index.js → dist-package/src/index.js} +0 -0
  450. /package/{types → dist-package/src/types}/condition.js +0 -0
  451. /package/{types → dist-package/src/types}/query-builder.js +0 -0
  452. /package/{utils → dist-package/src/utils}/config.js +0 -0
  453. /package/{utils → dist-package/src/utils}/constants.js +0 -0
  454. /package/{utils → dist-package/src/utils}/generate-select-options.js +0 -0
  455. /package/{utils → dist-package/src/utils}/get-query-depth.js +0 -0
  456. /package/{utils → dist-package/src/utils}/index.js +0 -0
  457. /package/{utils → dist-package/src/utils}/use-handle-touched.js +0 -0
  458. /package/{utils → dist-package/src/utils}/use-query-builder-validator.js +0 -0
  459. /package/{utils → dist-package/src/utils}/validate-value-editor.js +0 -0
@@ -0,0 +1,289 @@
1
+ import React, { useState } from 'react'
2
+ import type { Field, OptionGroup } from '@toptal/picasso-query-builder'
3
+ import {
4
+ QueryBuilder,
5
+ type RuleGroupTypeAny,
6
+ } from '@toptal/picasso-query-builder'
7
+
8
+ const initialQuery: RuleGroupTypeAny = {
9
+ rules: [
10
+ {
11
+ field: 'firstName',
12
+ operator: '=',
13
+ valueSource: 'value',
14
+ value: 'John',
15
+ },
16
+ {
17
+ field: 'lastName',
18
+ operator: 'beginsWith',
19
+ valueSource: 'value',
20
+ value: 'Doe',
21
+ },
22
+ {
23
+ field: 'instrument',
24
+ operator: '=',
25
+ valueSource: 'value',
26
+ value: 'Steelpan',
27
+ },
28
+ {
29
+ rules: [
30
+ {
31
+ field: 'alsoPlays',
32
+ operator: 'contains',
33
+ valueSource: 'value',
34
+ value: 'More cowbell,Clapstick,Cowbell',
35
+ },
36
+ {
37
+ field: 'groupedField1',
38
+ operator: '=',
39
+ valueSource: 'field',
40
+ value: 'groupedField2',
41
+ },
42
+ ],
43
+ combinator: 'and',
44
+ not: false,
45
+ },
46
+ ],
47
+ combinator: 'and',
48
+ }
49
+
50
+ const musicalInstruments: OptionGroup[] = [
51
+ {
52
+ label: 'Percussion instruments',
53
+ instruments: [
54
+ 'Clapstick',
55
+ 'Cowbell',
56
+ 'Cymbal',
57
+ 'Gong',
58
+ 'Maraca',
59
+ 'Marimba',
60
+ 'More cowbell',
61
+ 'Spoon',
62
+ 'Steelpan',
63
+ 'Tambourine',
64
+ 'Triangle',
65
+ 'Vibraphone',
66
+ 'Washboard',
67
+ 'Wood block',
68
+ 'Wooden fish',
69
+ 'Xylophone',
70
+ ],
71
+ },
72
+ {
73
+ label: 'Membranophones',
74
+ instruments: [
75
+ 'Barrel drum',
76
+ 'Bass drum',
77
+ 'Bongo drums',
78
+ 'Conga',
79
+ 'Drum',
80
+ 'Drum kit',
81
+ "Jew's harp",
82
+ 'Octaban',
83
+ 'Samphor',
84
+ 'Snare drum',
85
+ 'Timpani',
86
+ 'Tom-tom',
87
+ ],
88
+ },
89
+ {
90
+ label: 'Wind instruments',
91
+ instruments: [
92
+ 'Accordion',
93
+ 'Air horn',
94
+ 'Bagpipe',
95
+ 'Baritone horn',
96
+ 'Bassoon',
97
+ 'Bazooka',
98
+ 'Beatboxing',
99
+ 'Blown bottle',
100
+ 'Bugle',
101
+ 'Clarinet',
102
+ 'Conch',
103
+ 'Cornet',
104
+ 'Didgeridoo',
105
+ 'Double bell euphonium',
106
+ 'Doulophone',
107
+ 'English horn',
108
+ 'Euphonium',
109
+ 'Flugelhorn',
110
+ 'Flute',
111
+ 'French horn',
112
+ 'Harmonica',
113
+ 'Irish flute',
114
+ 'Jug',
115
+ 'Kazoo',
116
+ 'Melodeon',
117
+ 'Mezzo-soprano',
118
+ 'Oboe',
119
+ 'Ocarina',
120
+ 'Pan flute',
121
+ 'Piccolo',
122
+ 'Pipe organ',
123
+ 'Recorder',
124
+ 'Saxophone',
125
+ 'Slide whistle',
126
+ 'Sousaphone',
127
+ 'Trombone',
128
+ 'Trumpet',
129
+ 'Tuba',
130
+ 'Whistle',
131
+ ],
132
+ },
133
+ {
134
+ label: 'Stringed instruments',
135
+ instruments: [
136
+ 'Aeolian harp',
137
+ 'Bandolin',
138
+ 'Banjo ukulele',
139
+ 'Cello',
140
+ 'Chapman stick',
141
+ 'Clavichord',
142
+ 'Clavinet',
143
+ 'Double bass',
144
+ 'Dulcimer',
145
+ 'Fiddle',
146
+ 'Guitar',
147
+ 'Hammered dulcimer',
148
+ 'Harp',
149
+ 'Harpsichord',
150
+ 'Lute',
151
+ 'Lyre',
152
+ 'Maguhu',
153
+ 'Mandola',
154
+ 'Mandolin',
155
+ 'Octobass',
156
+ 'Piano',
157
+ 'Sitar',
158
+ 'Ukulele',
159
+ 'Viol',
160
+ 'Violin',
161
+ 'Washtub bass',
162
+ ],
163
+ },
164
+ {
165
+ label: 'Electronic instruments',
166
+ instruments: [
167
+ 'AlphaSphere',
168
+ 'Audiocubes',
169
+ 'Bass pedals',
170
+ 'Continuum Fingerboard',
171
+ 'Croix Sonore',
172
+ "Denis d'or",
173
+ 'Dubreq stylophone',
174
+ 'Drum machine',
175
+ 'Eigenharp',
176
+ 'Electric guitar',
177
+ 'Electronic keyboard',
178
+ 'Electronic organ',
179
+ 'EWI',
180
+ 'Fingerboard synthesizer',
181
+ 'Hammond organ',
182
+ 'Keyboard',
183
+ 'Keytar',
184
+ 'Kraakdoos',
185
+ 'Laser harp',
186
+ 'Mellotron',
187
+ 'MIDI keyboard',
188
+ 'Omnichord',
189
+ 'Ondes Martenot',
190
+ 'Otamatone',
191
+ 'Sampler',
192
+ 'Seaboard music instrument',
193
+ 'Skoog',
194
+ 'Synclavier',
195
+ 'Synthesizer',
196
+ 'Teleharmonium',
197
+ 'Tenori-on',
198
+ 'Theremin',
199
+ 'trautonium',
200
+ 'Turntablism',
201
+ 'Turntable',
202
+ ],
203
+ },
204
+ ].map(({ label, instruments }) => ({
205
+ label,
206
+ options: instruments.map(instrument => ({
207
+ name: instrument,
208
+ label: instrument,
209
+ })),
210
+ }))
211
+
212
+ const fields: Field[] = [
213
+ {
214
+ name: 'firstName',
215
+ label: 'First Name',
216
+ placeholder: 'Enter first name',
217
+ inputType: 'text',
218
+ },
219
+ {
220
+ name: 'lastName',
221
+ label: 'Last Name',
222
+ placeholder: 'Enter last name',
223
+ defaultOperator: 'beginsWith',
224
+ },
225
+ { name: 'age', label: 'Age', inputType: 'number' },
226
+ {
227
+ name: 'instrument',
228
+ label: 'Primary instrument',
229
+ valueEditorType: 'select',
230
+ values: musicalInstruments,
231
+ defaultValue: 'Cowbell',
232
+ },
233
+ {
234
+ name: 'alsoPlays',
235
+ label: 'Also plays',
236
+ valueEditorType: 'multiselect',
237
+ values: musicalInstruments,
238
+ defaultValue: 'More cowbell',
239
+ },
240
+ { name: 'height', label: 'Height', inputType: 'number' },
241
+ { name: 'job', label: 'Job', inputType: 'text' },
242
+ {
243
+ name: 'groupedField1',
244
+ label: 'Grouped Field 1',
245
+ comparator: 'group',
246
+ group: 'group1',
247
+ valueSources: ['field', 'value'],
248
+ },
249
+ {
250
+ name: 'groupedField2',
251
+ label: 'Grouped Field 2',
252
+ comparator: 'group',
253
+ group: 'group1',
254
+ valueSources: ['field', 'value'],
255
+ },
256
+ {
257
+ name: 'groupedField3',
258
+ label: 'Grouped Field 3',
259
+ comparator: 'group',
260
+ group: 'group1',
261
+ valueSources: ['field', 'value'],
262
+ },
263
+ {
264
+ name: 'groupedField4',
265
+ label: 'Grouped Field 4',
266
+ comparator: 'group',
267
+ group: 'group1',
268
+ valueSources: ['field', 'value'],
269
+ },
270
+ ]
271
+
272
+ const Example = () => {
273
+ const [query, setQuery] = useState<RuleGroupTypeAny>(initialQuery)
274
+
275
+ const handleQueryChange = (newQuery: RuleGroupTypeAny) => {
276
+ setQuery(newQuery)
277
+ }
278
+
279
+ return (
280
+ <QueryBuilder
281
+ fields={fields}
282
+ query={query}
283
+ onQueryChange={handleQueryChange}
284
+ enableDragAndDrop
285
+ />
286
+ )
287
+ }
288
+
289
+ export default Example
@@ -0,0 +1,72 @@
1
+ import React, { useEffect, useState } from 'react'
2
+ import {
3
+ QueryBuilder,
4
+ type RuleGroupTypeAny,
5
+ } from '@toptal/picasso-query-builder'
6
+
7
+ type MultiSelectOptions = {
8
+ label: string
9
+ name: string
10
+ }
11
+
12
+ const defaultQuery = {
13
+ rules: [],
14
+ combinator: 'and',
15
+ }
16
+
17
+ const multiselectOptions = [
18
+ {
19
+ label: 'Digital Design',
20
+ name: 'DIGITAL_DESIGN',
21
+ },
22
+ {
23
+ label: 'UI',
24
+ name: 'UI',
25
+ },
26
+ {
27
+ label: 'Salesforce',
28
+ name: 'SALESFORCE',
29
+ },
30
+ ]
31
+
32
+ const Example = () => {
33
+ const [query, setQuery] = useState<RuleGroupTypeAny>(defaultQuery)
34
+ const [loading, setLoading] = useState<boolean>(false)
35
+ const [options, setOptions] = useState<MultiSelectOptions[]>()
36
+
37
+ useEffect(() => {
38
+ const loadOptions = async () => {
39
+ setLoading(true)
40
+ const data = await new Promise<MultiSelectOptions[]>(resolve =>
41
+ setTimeout(() => {
42
+ resolve(multiselectOptions)
43
+ setLoading(false)
44
+ }, 1000)
45
+ )
46
+
47
+ setOptions(data)
48
+ }
49
+
50
+ loadOptions()
51
+ }, [])
52
+
53
+ const fields = [
54
+ {
55
+ name: 'Multiselect',
56
+ label: 'Multiselect',
57
+ valueEditorType: 'multiselect' as const,
58
+ values: options,
59
+ loading: loading,
60
+ },
61
+ ]
62
+
63
+ const handleChange = (newQuery: RuleGroupTypeAny) => {
64
+ setQuery(newQuery)
65
+ }
66
+
67
+ return (
68
+ <QueryBuilder fields={fields} query={query} onQueryChange={handleChange} />
69
+ )
70
+ }
71
+
72
+ export default Example
@@ -0,0 +1,62 @@
1
+ import React, { useState } from 'react'
2
+ import {
3
+ QueryBuilder,
4
+ type RuleGroupTypeAny,
5
+ } from '@toptal/picasso-query-builder'
6
+ import { Button, Container } from '@toptal/picasso'
7
+
8
+ const initialQuery: RuleGroupTypeAny = {
9
+ rules: [
10
+ {
11
+ field: 'name',
12
+ operator: '=',
13
+ valueSource: 'value',
14
+ value: 'John',
15
+ },
16
+ {
17
+ field: 'age',
18
+ operator: '=',
19
+ valueSource: 'value',
20
+ value: '21',
21
+ },
22
+ ],
23
+ combinator: 'and',
24
+ }
25
+
26
+ const fields = [
27
+ {
28
+ name: 'name',
29
+ label: 'Name',
30
+ type: 'text',
31
+ },
32
+ {
33
+ name: 'age',
34
+ label: 'Age',
35
+ type: 'number',
36
+ },
37
+ ]
38
+
39
+ const Example = () => {
40
+ const [query, setQuery] = useState<RuleGroupTypeAny>(initialQuery)
41
+
42
+ const handleQueryChange = (newQuery: RuleGroupTypeAny) => {
43
+ setQuery(newQuery)
44
+ }
45
+
46
+ return (
47
+ <QueryBuilder
48
+ fields={fields}
49
+ query={query}
50
+ onQueryChange={handleQueryChange}
51
+ header={
52
+ <Container flex justifyContent='flex-end'>
53
+ <Button size='small' variant='positive'>
54
+ Do something
55
+ </Button>
56
+ </Container>
57
+ }
58
+ />
59
+ )
60
+ }
61
+
62
+ export default Example
@@ -0,0 +1,55 @@
1
+ import React, { useState } from 'react'
2
+ import {
3
+ QueryBuilder,
4
+ type RuleGroupTypeAny,
5
+ } from '@toptal/picasso-query-builder'
6
+
7
+ const initialQuery: RuleGroupTypeAny = {
8
+ rules: [
9
+ {
10
+ field: 'name',
11
+ operator: '=',
12
+ valueSource: 'value',
13
+ value: 'John',
14
+ },
15
+ {
16
+ field: 'age',
17
+ operator: '=',
18
+ valueSource: 'value',
19
+ value: '21',
20
+ },
21
+ ],
22
+ combinator: 'and',
23
+ }
24
+
25
+ const fields = [
26
+ {
27
+ name: 'name',
28
+ label: 'Name',
29
+ type: 'text',
30
+ },
31
+ {
32
+ name: 'age',
33
+ label: 'Age',
34
+ type: 'number',
35
+ },
36
+ ]
37
+
38
+ const Example = () => {
39
+ const [query, setQuery] = useState<RuleGroupTypeAny>(initialQuery)
40
+
41
+ const handleQueryChange = (newQuery: RuleGroupTypeAny) => {
42
+ setQuery(newQuery)
43
+ }
44
+
45
+ return (
46
+ <QueryBuilder
47
+ fields={fields}
48
+ query={query}
49
+ onQueryChange={handleQueryChange}
50
+ hideControls
51
+ />
52
+ )
53
+ }
54
+
55
+ export default Example