@pareto-engineering/design-system 2.0.0-alpha.5 → 2.0.0-alpha.52

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 (309) hide show
  1. package/.env.scripts.example +4 -0
  2. package/.eslintrc.js +25 -1
  3. package/babel.config.js +1 -0
  4. package/dist/cjs/a/BackgroundGradient/BackgroundGradient.js +77 -0
  5. package/dist/cjs/a/BackgroundGradient/index.js +15 -0
  6. package/dist/cjs/a/BackgroundGradient/styles.scss +16 -0
  7. package/dist/cjs/a/ContentTree/ContentTree.js +83 -0
  8. package/dist/cjs/a/ContentTree/common/Tree/Tree.js +116 -0
  9. package/dist/cjs/a/ContentTree/common/Tree/index.js +15 -0
  10. package/dist/cjs/a/ContentTree/common/index.js +31 -0
  11. package/dist/cjs/a/ContentTree/common/useContentTree.js +82 -0
  12. package/dist/cjs/a/ContentTree/common/useFirstVisibleNode.js +65 -0
  13. package/dist/cjs/a/ContentTree/index.js +15 -0
  14. package/dist/cjs/a/ContentTree/styles.scss +33 -0
  15. package/dist/cjs/a/Conversation/Conversation.js +14 -8
  16. package/dist/cjs/a/Conversation/common/Message/Message.js +32 -6
  17. package/dist/cjs/a/Conversation/styles.scss +132 -33
  18. package/dist/cjs/a/OvalIllustration/OvalIllustration.js +133 -0
  19. package/dist/cjs/a/OvalIllustration/index.js +15 -0
  20. package/dist/cjs/a/OvalIllustration/styles.scss +102 -0
  21. package/dist/cjs/a/Popover/Popover.js +134 -0
  22. package/dist/cjs/a/Popover/common/Divider/Divider.js +67 -0
  23. package/dist/cjs/a/Popover/common/Divider/index.js +15 -0
  24. package/dist/cjs/a/Popover/common/Item/Item.js +67 -0
  25. package/dist/cjs/a/Popover/common/Item/index.js +15 -0
  26. package/dist/cjs/a/Popover/common/index.js +21 -0
  27. package/dist/cjs/a/Popover/index.js +15 -0
  28. package/dist/cjs/a/Popover/styles.scss +33 -0
  29. package/dist/cjs/a/Shapes/Shapes.js +39 -9
  30. package/dist/cjs/a/Shapes/styles.scss +79 -23
  31. package/dist/cjs/a/SnapScroller/SnapScroller.js +77 -0
  32. package/dist/cjs/a/SnapScroller/index.js +15 -0
  33. package/dist/cjs/a/SnapScroller/styles.scss +38 -0
  34. package/dist/cjs/a/index.js +41 -1
  35. package/dist/cjs/b/Button/Button.js +10 -4
  36. package/dist/cjs/b/Button/styles.scss +55 -10
  37. package/dist/cjs/b/Logo/Logo.js +41 -41
  38. package/dist/cjs/b/Logo/styles.scss +0 -138
  39. package/dist/cjs/b/Page/common/Section/Section.js +35 -7
  40. package/dist/cjs/c/ContentSlides/common/HorizontalMenu/HorizontalMenu.js +16 -9
  41. package/dist/cjs/c/ContentSlides/common/Navigator/Navigator.js +4 -3
  42. package/dist/cjs/c/ContentSlides/styles.scss +10 -4
  43. package/dist/cjs/c/SocialMediaShareButton/SocialMediaShareButton.js +111 -0
  44. package/dist/cjs/c/SocialMediaShareButton/index.js +15 -0
  45. package/dist/cjs/c/SocialMediaShareButton/styles.scss +39 -0
  46. package/dist/cjs/c/index.js +9 -1
  47. package/dist/cjs/f/FormInput/FormInput.js +20 -3
  48. package/dist/cjs/f/FormInput/styles.scss +11 -0
  49. package/dist/cjs/f/common/Debugger/Debugger.js +1 -1
  50. package/dist/cjs/f/common/Label/Label.js +1 -1
  51. package/dist/cjs/f/common/Label/styles.scss +1 -1
  52. package/dist/cjs/f/fields/ChoicesInput/ChoicesInput.js +1 -1
  53. package/dist/cjs/f/fields/ChoicesInput/styles.scss +17 -2
  54. package/dist/cjs/f/fields/QueryCombobox/QueryCombobox.js +236 -0
  55. package/dist/cjs/f/fields/QueryCombobox/common/Combobox/Combobox.js +205 -0
  56. package/dist/cjs/f/fields/QueryCombobox/common/Combobox/index.js +15 -0
  57. package/dist/cjs/f/fields/QueryCombobox/common/Menu/Menu.js +103 -0
  58. package/dist/cjs/f/fields/QueryCombobox/common/Menu/index.js +15 -0
  59. package/dist/cjs/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +304 -0
  60. package/dist/cjs/f/fields/QueryCombobox/common/MultipleCombobox/index.js +15 -0
  61. package/dist/cjs/f/fields/QueryCombobox/common/index.js +29 -0
  62. package/dist/cjs/f/fields/QueryCombobox/index.js +15 -0
  63. package/dist/cjs/f/fields/QueryCombobox/styles.scss +90 -0
  64. package/dist/cjs/f/fields/QuerySelect/QuerySelect.js +201 -0
  65. package/dist/cjs/f/fields/QuerySelect/index.js +15 -0
  66. package/dist/cjs/f/fields/QuerySelect/styles.scss +21 -0
  67. package/dist/cjs/f/fields/RatingsInput/RatingsInput.js +39 -6
  68. package/dist/cjs/f/fields/RatingsInput/styles.scss +29 -20
  69. package/dist/cjs/f/fields/SelectInput/SelectInput.js +50 -13
  70. package/dist/cjs/f/fields/SelectInput/styles.scss +33 -13
  71. package/dist/cjs/f/fields/TaskRecommendationInput/TaskRecommendationInput.js +1 -1
  72. package/dist/cjs/f/fields/TextInput/TextInput.js +35 -7
  73. package/dist/cjs/f/fields/TextInput/styles.scss +16 -7
  74. package/dist/cjs/f/fields/TextareaInput/TextareaInput.js +15 -8
  75. package/dist/cjs/f/fields/TextareaInput/styles.scss +19 -6
  76. package/dist/cjs/f/fields/index.js +15 -23
  77. package/dist/cjs/form-reset.scss +1 -1
  78. package/dist/cjs/index.js +26 -0
  79. package/dist/cjs/test/QueryLoader/QueryLoader.js +41 -0
  80. package/dist/cjs/test/QueryLoader/__generated__/QueryLoaderHelloQuery.graphql.js +71 -0
  81. package/dist/cjs/test/QueryLoader/common/PreloadedTestData/PreloadedTestData.js +49 -0
  82. package/dist/cjs/test/QueryLoader/common/PreloadedTestData/index.js +15 -0
  83. package/dist/cjs/test/QueryLoader/common/index.js +13 -0
  84. package/dist/cjs/test/QueryLoader/index.js +15 -0
  85. package/dist/cjs/test/QueryLoader/styles.scss +9 -0
  86. package/dist/cjs/test/index.js +13 -0
  87. package/dist/cjs/utils/hooks/index.js +23 -0
  88. package/dist/cjs/utils/hooks/useDynamicPosition.js +107 -0
  89. package/dist/cjs/utils/hooks/useWindowSize.js +39 -0
  90. package/dist/cjs/utils/index.js +19 -0
  91. package/dist/es/a/BackgroundGradient/BackgroundGradient.js +55 -0
  92. package/dist/es/a/BackgroundGradient/index.js +2 -0
  93. package/dist/es/a/BackgroundGradient/styles.scss +16 -0
  94. package/dist/es/a/ContentTree/ContentTree.js +67 -0
  95. package/dist/es/a/ContentTree/common/Tree/Tree.js +98 -0
  96. package/dist/es/a/ContentTree/common/Tree/index.js +2 -0
  97. package/dist/es/a/ContentTree/common/index.js +3 -0
  98. package/dist/es/a/ContentTree/common/useContentTree.js +74 -0
  99. package/dist/es/a/ContentTree/common/useFirstVisibleNode.js +54 -0
  100. package/dist/es/a/ContentTree/index.js +2 -0
  101. package/dist/es/a/ContentTree/styles.scss +33 -0
  102. package/dist/es/a/Conversation/Conversation.js +14 -8
  103. package/dist/es/a/Conversation/common/Message/Message.js +32 -6
  104. package/dist/es/a/Conversation/styles.scss +132 -33
  105. package/dist/es/a/OvalIllustration/OvalIllustration.js +111 -0
  106. package/dist/es/a/OvalIllustration/index.js +2 -0
  107. package/dist/es/a/OvalIllustration/styles.scss +102 -0
  108. package/dist/es/a/Popover/Popover.js +118 -0
  109. package/dist/es/a/Popover/common/Divider/Divider.js +47 -0
  110. package/dist/es/a/Popover/common/Divider/index.js +2 -0
  111. package/dist/es/a/Popover/common/Item/Item.js +47 -0
  112. package/dist/es/a/Popover/common/Item/index.js +2 -0
  113. package/dist/es/a/Popover/common/index.js +2 -0
  114. package/dist/es/a/Popover/index.js +2 -0
  115. package/dist/es/a/Popover/styles.scss +33 -0
  116. package/dist/es/a/Shapes/Shapes.js +39 -9
  117. package/dist/es/a/Shapes/styles.scss +79 -23
  118. package/dist/es/a/SnapScroller/SnapScroller.js +61 -0
  119. package/dist/es/a/SnapScroller/index.js +2 -0
  120. package/dist/es/a/SnapScroller/styles.scss +38 -0
  121. package/dist/es/a/index.js +6 -1
  122. package/dist/es/b/Button/Button.js +8 -2
  123. package/dist/es/b/Button/styles.scss +55 -10
  124. package/dist/es/b/Logo/Logo.js +41 -41
  125. package/dist/es/b/Logo/styles.scss +0 -138
  126. package/dist/es/b/Page/common/Section/Section.js +34 -6
  127. package/dist/es/c/ContentSlides/common/HorizontalMenu/HorizontalMenu.js +16 -9
  128. package/dist/es/c/ContentSlides/common/Navigator/Navigator.js +4 -3
  129. package/dist/es/c/ContentSlides/styles.scss +10 -4
  130. package/dist/es/c/SocialMediaShareButton/SocialMediaShareButton.js +95 -0
  131. package/dist/es/c/SocialMediaShareButton/index.js +2 -0
  132. package/dist/es/c/SocialMediaShareButton/styles.scss +39 -0
  133. package/dist/es/c/index.js +2 -1
  134. package/dist/es/f/FormInput/FormInput.js +20 -3
  135. package/dist/es/f/FormInput/styles.scss +11 -0
  136. package/dist/es/f/common/Debugger/Debugger.js +1 -1
  137. package/dist/es/f/common/Label/Label.js +1 -1
  138. package/dist/es/f/common/Label/styles.scss +1 -1
  139. package/dist/es/f/fields/ChoicesInput/ChoicesInput.js +1 -1
  140. package/dist/es/f/fields/ChoicesInput/styles.scss +17 -2
  141. package/dist/es/f/fields/QueryCombobox/QueryCombobox.js +213 -0
  142. package/dist/es/f/fields/QueryCombobox/common/Combobox/Combobox.js +185 -0
  143. package/dist/es/f/fields/QueryCombobox/common/Combobox/index.js +2 -0
  144. package/dist/es/f/fields/QueryCombobox/common/Menu/Menu.js +77 -0
  145. package/dist/es/f/fields/QueryCombobox/common/Menu/index.js +2 -0
  146. package/dist/es/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +276 -0
  147. package/dist/es/f/fields/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  148. package/dist/es/f/fields/QueryCombobox/common/index.js +3 -0
  149. package/dist/es/f/fields/QueryCombobox/index.js +2 -0
  150. package/dist/es/f/fields/QueryCombobox/styles.scss +90 -0
  151. package/dist/es/f/fields/QuerySelect/QuerySelect.js +179 -0
  152. package/dist/es/f/fields/QuerySelect/index.js +2 -0
  153. package/dist/es/f/fields/QuerySelect/styles.scss +21 -0
  154. package/dist/es/f/fields/RatingsInput/RatingsInput.js +38 -6
  155. package/dist/es/f/fields/RatingsInput/styles.scss +29 -20
  156. package/dist/es/f/fields/SelectInput/SelectInput.js +49 -13
  157. package/dist/es/f/fields/SelectInput/styles.scss +33 -13
  158. package/dist/es/f/fields/TaskRecommendationInput/TaskRecommendationInput.js +1 -1
  159. package/dist/es/f/fields/TextInput/TextInput.js +35 -7
  160. package/dist/es/f/fields/TextInput/styles.scss +16 -7
  161. package/dist/es/f/fields/TextareaInput/TextareaInput.js +15 -8
  162. package/dist/es/f/fields/TextareaInput/styles.scss +19 -6
  163. package/dist/es/f/fields/index.js +3 -4
  164. package/dist/es/form-reset.scss +1 -1
  165. package/dist/es/index.js +3 -1
  166. package/dist/es/test/QueryLoader/QueryLoader.js +29 -0
  167. package/dist/es/test/QueryLoader/__generated__/QueryLoaderHelloQuery.graphql.js +71 -0
  168. package/dist/es/test/QueryLoader/common/PreloadedTestData/PreloadedTestData.js +31 -0
  169. package/dist/es/test/QueryLoader/common/PreloadedTestData/index.js +2 -0
  170. package/dist/es/test/QueryLoader/common/index.js +1 -0
  171. package/dist/es/test/QueryLoader/index.js +2 -0
  172. package/dist/es/test/QueryLoader/styles.scss +9 -0
  173. package/dist/es/test/index.js +1 -0
  174. package/dist/es/utils/hooks/index.js +2 -0
  175. package/dist/es/utils/hooks/useDynamicPosition.js +93 -0
  176. package/dist/es/utils/hooks/useWindowSize.js +27 -0
  177. package/dist/es/utils/index.js +1 -0
  178. package/package.json +18 -4
  179. package/relay.config.js +12 -0
  180. package/schema.graphql +4075 -0
  181. package/scripts/fetchSchema.js +74 -0
  182. package/src/__snapshots__/Storyshots.test.js.snap +7018 -3507
  183. package/src/local.scss +4 -2
  184. package/src/stories/StyleGuide/Sprites.stories.mdx +25 -0
  185. package/src/stories/StyleGuide/helpers.js +16 -0
  186. package/src/stories/a/BackgroundGradient.stories.jsx +38 -0
  187. package/src/stories/a/ContentTree.stories.jsx +662 -0
  188. package/src/stories/a/Conversation.stories.jsx +78 -1
  189. package/src/stories/a/OvalIllustration.stories.jsx +59 -0
  190. package/src/stories/a/Popover.stories.jsx +106 -0
  191. package/src/stories/a/Shapes.stories.jsx +74 -43
  192. package/src/stories/a/SnapScroller.stories.jsx +98 -0
  193. package/src/stories/b/Button.stories.jsx +27 -4
  194. package/src/stories/b/Logo.stories.jsx +17 -9
  195. package/src/stories/b/Page.stories.jsx +27 -2
  196. package/src/stories/c/ContentSlides.stories.jsx +154 -2
  197. package/src/stories/c/SocialMediaShareButton.stories.jsx +25 -0
  198. package/src/stories/f/FormInput.stories.jsx +233 -0
  199. package/src/stories/f/QueryCombobox.stories.jsx +269 -0
  200. package/src/stories/f/QuerySelect.stories.jsx +134 -0
  201. package/src/stories/f/RatingsInput.stories.jsx +3 -2
  202. package/src/stories/f/SelectInput.stories.jsx +36 -5
  203. package/src/stories/f/TextInput.stories.jsx +15 -4
  204. package/src/stories/f/TextareaInput.stories.jsx +42 -6
  205. package/src/stories/f/__generated__/FormInputAllTaskStatusesQuery.graphql.js +122 -0
  206. package/src/stories/f/__generated__/FormInputAllTeamsQuery.graphql.js +139 -0
  207. package/src/stories/f/__generated__/QueryComboboxAllTeamsQuery.graphql.js +139 -0
  208. package/src/stories/f/__generated__/QuerySelectAllTaskStatusesQuery.graphql.js +122 -0
  209. package/src/stories/test/QueryLoader.stories.jsx +36 -0
  210. package/src/stories/utils/generateNodeId.js +12 -0
  211. package/src/stories/utils/lorem.js +15 -0
  212. package/src/stories/utils/relay/EnvironmentProvider.jsx +14 -0
  213. package/src/stories/utils/relay/environment.js +5 -0
  214. package/src/stories/utils/relay/index.js +4 -0
  215. package/src/stories/utils/relay/mockRelayOperation.js +14 -0
  216. package/src/stories/utils/relay/mockResolvers.js +299 -0
  217. package/src/stories/utils/testData.js +63 -0
  218. package/src/ui/a/BackgroundGradient/BackgroundGradient.jsx +76 -0
  219. package/src/ui/a/BackgroundGradient/index.js +2 -0
  220. package/src/ui/a/BackgroundGradient/styles.scss +16 -0
  221. package/src/ui/a/ContentTree/ContentTree.jsx +88 -0
  222. package/src/ui/a/ContentTree/common/Tree/Tree.jsx +138 -0
  223. package/src/ui/a/ContentTree/common/Tree/index.js +2 -0
  224. package/src/ui/a/ContentTree/common/index.js +3 -0
  225. package/src/ui/a/ContentTree/common/useContentTree.js +83 -0
  226. package/src/ui/a/ContentTree/common/useFirstVisibleNode.js +59 -0
  227. package/src/ui/a/ContentTree/index.js +2 -0
  228. package/src/ui/a/ContentTree/styles.scss +33 -0
  229. package/src/ui/a/Conversation/Conversation.jsx +15 -7
  230. package/src/ui/a/Conversation/common/Message/Message.jsx +38 -6
  231. package/src/ui/a/Conversation/styles.scss +132 -33
  232. package/src/ui/a/OvalIllustration/OvalIllustration.jsx +134 -0
  233. package/src/ui/a/OvalIllustration/index.js +2 -0
  234. package/src/ui/a/OvalIllustration/styles.scss +102 -0
  235. package/src/ui/a/Popover/Popover.jsx +157 -0
  236. package/src/ui/a/Popover/index.js +2 -0
  237. package/src/ui/a/Popover/styles.scss +33 -0
  238. package/src/ui/a/Shapes/Shapes.jsx +44 -7
  239. package/src/ui/a/Shapes/styles.scss +79 -23
  240. package/src/ui/a/SnapScroller/SnapScroller.jsx +83 -0
  241. package/src/ui/a/SnapScroller/index.js +2 -0
  242. package/src/ui/a/SnapScroller/styles.scss +38 -0
  243. package/src/ui/a/index.js +5 -0
  244. package/src/ui/b/Button/Button.jsx +9 -1
  245. package/src/ui/b/Button/styles.scss +55 -10
  246. package/src/ui/b/Logo/Logo.jsx +41 -41
  247. package/src/ui/b/Logo/styles.scss +0 -138
  248. package/src/ui/b/Page/common/Section/Section.jsx +39 -5
  249. package/src/ui/c/ContentSlides/common/HorizontalMenu/HorizontalMenu.jsx +12 -5
  250. package/src/ui/c/ContentSlides/common/Navigator/Navigator.jsx +3 -2
  251. package/src/ui/c/ContentSlides/styles.scss +10 -4
  252. package/src/ui/c/SocialMediaShareButton/SocialMediaShareButton.jsx +121 -0
  253. package/src/ui/c/SocialMediaShareButton/index.js +2 -0
  254. package/src/ui/c/SocialMediaShareButton/styles.scss +39 -0
  255. package/src/ui/c/index.js +1 -0
  256. package/src/ui/f/FormInput/FormInput.jsx +26 -1
  257. package/src/ui/f/FormInput/styles.scss +11 -0
  258. package/src/ui/f/common/Debugger/Debugger.jsx +1 -1
  259. package/src/ui/f/common/Label/Label.jsx +1 -1
  260. package/src/ui/f/common/Label/styles.scss +1 -1
  261. package/src/ui/f/fields/ChoicesInput/ChoicesInput.jsx +1 -1
  262. package/src/ui/f/fields/ChoicesInput/styles.scss +17 -2
  263. package/src/ui/f/fields/QueryCombobox/QueryCombobox.jsx +227 -0
  264. package/src/ui/f/fields/QueryCombobox/common/Combobox/Combobox.jsx +222 -0
  265. package/src/ui/f/fields/QueryCombobox/common/Combobox/index.js +2 -0
  266. package/src/ui/f/fields/QueryCombobox/common/Menu/Menu.jsx +103 -0
  267. package/src/ui/f/fields/QueryCombobox/common/Menu/index.js +2 -0
  268. package/src/ui/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.jsx +318 -0
  269. package/src/ui/f/fields/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  270. package/src/ui/f/fields/QueryCombobox/common/index.js +3 -0
  271. package/src/ui/f/fields/QueryCombobox/index.js +2 -0
  272. package/src/ui/f/fields/QueryCombobox/styles.scss +90 -0
  273. package/src/ui/f/fields/QuerySelect/QuerySelect.jsx +200 -0
  274. package/src/ui/f/fields/QuerySelect/index.js +2 -0
  275. package/src/ui/f/fields/RatingsInput/RatingsInput.jsx +54 -19
  276. package/src/ui/f/fields/RatingsInput/styles.scss +29 -20
  277. package/src/ui/f/fields/SelectInput/SelectInput.jsx +59 -8
  278. package/src/ui/f/fields/SelectInput/styles.scss +33 -13
  279. package/src/ui/f/fields/TextInput/TextInput.jsx +31 -3
  280. package/src/ui/f/fields/TextInput/styles.scss +16 -7
  281. package/src/ui/f/fields/TextareaInput/TextareaInput.jsx +24 -13
  282. package/src/ui/f/fields/TextareaInput/styles.scss +19 -6
  283. package/src/ui/f/fields/index.js +2 -3
  284. package/src/ui/form-reset.scss +1 -1
  285. package/src/ui/index.js +2 -0
  286. package/src/ui/test/QueryLoader/QueryLoader.jsx +41 -0
  287. package/src/ui/test/QueryLoader/__generated__/QueryLoaderHelloQuery.graphql.js +68 -0
  288. package/src/ui/test/QueryLoader/common/PreloadedTestData/PreloadedTestData.jsx +51 -0
  289. package/src/ui/test/QueryLoader/common/PreloadedTestData/index.js +2 -0
  290. package/src/ui/test/QueryLoader/common/index.js +1 -0
  291. package/src/ui/test/QueryLoader/index.js +2 -0
  292. package/src/ui/test/index.js +1 -0
  293. package/src/ui/utils/hooks/index.js +2 -0
  294. package/src/ui/utils/hooks/useDynamicPosition.js +104 -0
  295. package/src/ui/utils/hooks/useWindowSize.js +32 -0
  296. package/src/ui/utils/index.js +1 -0
  297. package/stylelint.config.js +13 -13
  298. package/src/stories/f/CheckboxInput.stories.jsx +0 -37
  299. package/src/stories/f/RadioInput.stories.jsx +0 -37
  300. package/src/stories/f/TaskRecommendationInput.stories.jsx +0 -38
  301. package/src/ui/f/fields/CheckboxInput/CheckboxInput.jsx +0 -107
  302. package/src/ui/f/fields/CheckboxInput/index.js +0 -2
  303. package/src/ui/f/fields/CheckboxInput/styles.scss +0 -28
  304. package/src/ui/f/fields/RadioInput/RadioInput.jsx +0 -112
  305. package/src/ui/f/fields/RadioInput/index.js +0 -2
  306. package/src/ui/f/fields/RadioInput/styles.scss +0 -26
  307. package/src/ui/f/fields/TaskRecommendationInput/TaskRecommendationInput.jsx +0 -130
  308. package/src/ui/f/fields/TaskRecommendationInput/index.js +0 -2
  309. package/src/ui/f/fields/TaskRecommendationInput/styles.scss +0 -41
@@ -0,0 +1,276 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ /* @pareto-engineering/generator-front 1.0.12 */
4
+ import * as React from 'react';
5
+ import { useState, useEffect, useRef } from 'react';
6
+ import PropTypes from 'prop-types';
7
+ import styleNames from '@pareto-engineering/bem';
8
+ import { useCombobox, useMultipleSelection } from 'downshift';
9
+ import { Button } from "../../../../../b";
10
+ import { Popover, LoadingCircle } from "../../../../../a";
11
+ import { FormDescription, FormLabel } from "../../../.."; // Local Definitions
12
+
13
+ import { Menu } from "../Menu";
14
+ const baseClassName = styleNames.base;
15
+ const componentClassName = 'multiple-combobox';
16
+ /**
17
+ * @param {Array[Object]} first - first array to check if it has an item not in the second array.
18
+ * @param {Array[Object]} second - second array to check against the first array.
19
+ *
20
+ * @returns {Boolean} - true if the first array has an item not in the second array.
21
+ */
22
+
23
+ const testIfArraysAreUnique = (first, second) => first.filter(objInFirstArray => !second.some(objInSecondArray => objInFirstArray.value === objInSecondArray.value)).length > 0;
24
+ /**
25
+ * This is the component description.
26
+ */
27
+
28
+
29
+ const MultipleCombobox = ({
30
+ id,
31
+ className: userClassName,
32
+ style,
33
+ label,
34
+ name,
35
+ options: items,
36
+ getOptions,
37
+ setValue,
38
+ error,
39
+ description,
40
+ value,
41
+ color,
42
+ isFetching,
43
+ minLength,
44
+ transformSearch // ...otherProps
45
+
46
+ }) => {
47
+ const [searchInputValue, setSearchInputValue] = useState('');
48
+ const {
49
+ getSelectedItemProps,
50
+ getDropdownProps,
51
+ addSelectedItem,
52
+ removeSelectedItem,
53
+ setSelectedItems,
54
+ selectedItems
55
+ } = useMultipleSelection({
56
+ initialSelectedItems: value || []
57
+ });
58
+ /**
59
+ * @returns {Boolean} - Unique items from the options array so that the combobox
60
+ * shows only the options that are not yet selected.
61
+ */
62
+
63
+ const getFilteredItems = () => items.filter(item => selectedItems.findIndex(e => e.label === item.label) < 0);
64
+
65
+ const {
66
+ isOpen,
67
+ getLabelProps,
68
+ getMenuProps,
69
+ getInputProps,
70
+ getComboboxProps,
71
+ highlightedIndex,
72
+ getItemProps
73
+ } = useCombobox({
74
+ searchInputValue,
75
+ defaultHighlightedIndex: 0,
76
+ // after selection, highlight the first item.
77
+ selectedItem: null,
78
+ items: getFilteredItems(),
79
+ circularNavigation: true,
80
+ stateReducer: (state, actionAndChanges) => {
81
+ const {
82
+ changes,
83
+ type
84
+ } = actionAndChanges;
85
+
86
+ switch (type) {
87
+ case useCombobox.stateChangeTypes.InputKeyDownEnter:
88
+ case useCombobox.stateChangeTypes.ItemClick:
89
+ return { ...changes,
90
+ isOpen: true // keep the menu open after selection.
91
+
92
+ };
93
+
94
+ default:
95
+ break;
96
+ }
97
+
98
+ return changes;
99
+ },
100
+ onStateChange: ({
101
+ inputValue: newSearchInputValue,
102
+ type,
103
+ selectedItem
104
+ }) => {
105
+ switch (type) {
106
+ case useCombobox.stateChangeTypes.InputChange:
107
+ {
108
+ const transformedInput = transformSearch(newSearchInputValue);
109
+
110
+ if (transformedInput.length > minLength) {
111
+ getOptions(transformedInput);
112
+ }
113
+
114
+ setSearchInputValue(newSearchInputValue);
115
+ break;
116
+ }
117
+
118
+ case useCombobox.stateChangeTypes.InputKeyDownEnter:
119
+ case useCombobox.stateChangeTypes.ItemClick:
120
+ case useCombobox.stateChangeTypes.InputBlur:
121
+ if (selectedItem) {
122
+ setSearchInputValue('');
123
+ addSelectedItem(selectedItem);
124
+ }
125
+
126
+ break;
127
+
128
+ default:
129
+ break;
130
+ }
131
+ }
132
+ });
133
+ useEffect(() => {
134
+ if ((selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) > 0) {
135
+ setValue(selectedItems);
136
+ }
137
+ }, [selectedItems]);
138
+ useEffect(() => {
139
+ if ((value === null || value === void 0 ? void 0 : value.length) > 0 && (testIfArraysAreUnique(value, selectedItems) || testIfArraysAreUnique(selectedItems, value))) {
140
+ setSelectedItems(value);
141
+ }
142
+ }, [value]);
143
+ const parentRef = useRef(null);
144
+ return /*#__PURE__*/React.createElement("div", {
145
+ id: id,
146
+ className: [baseClassName, componentClassName, userClassName, `y-${color}`].filter(e => e).join(' '),
147
+ style: style
148
+ }, /*#__PURE__*/React.createElement(FormLabel, _extends({}, getLabelProps(), {
149
+ name: name
150
+ }), label), (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) > 0 && /*#__PURE__*/React.createElement("div", {
151
+ className: "selected-items"
152
+ }, selectedItems.map((selectedItem, index) => /*#__PURE__*/React.createElement("div", _extends({
153
+ key: selectedItem.label
154
+ }, getSelectedItemProps({
155
+ selectedItem,
156
+ index
157
+ }), {
158
+ className: "item"
159
+ }), /*#__PURE__*/React.createElement(Button, {
160
+ onClick: e => {
161
+ e.stopPropagation();
162
+ removeSelectedItem(selectedItem);
163
+ },
164
+ isCompact: true,
165
+ isSimple: true,
166
+ color: color
167
+ }, /*#__PURE__*/React.createElement("span", {
168
+ className: "v25 mr-v"
169
+ }, selectedItem.label), /*#__PURE__*/React.createElement("span", {
170
+ className: "f-icons close"
171
+ }, "Y"))))), /*#__PURE__*/React.createElement("div", _extends({}, getComboboxProps(), {
172
+ className: "input-wrapper"
173
+ }), /*#__PURE__*/React.createElement("input", _extends({}, getInputProps(getDropdownProps({
174
+ preventKeyAction: isOpen
175
+ })), {
176
+ className: "input"
177
+ })), isFetching && /*#__PURE__*/React.createElement(LoadingCircle, {
178
+ className: "x-main2"
179
+ })), /*#__PURE__*/React.createElement(Popover, {
180
+ isOpen: isOpen,
181
+ parentRef: parentRef
182
+ }, /*#__PURE__*/React.createElement(Menu, _extends({
183
+ isOpen: isOpen,
184
+ getItemProps: getItemProps,
185
+ highlightedIndex: highlightedIndex,
186
+ items: getFilteredItems()
187
+ }, getMenuProps()))), (description || error) && /*#__PURE__*/React.createElement(FormDescription, {
188
+ isError: !!error
189
+ }, error || description));
190
+ };
191
+
192
+ MultipleCombobox.propTypes = {
193
+ /**
194
+ * The HTML id for this element
195
+ */
196
+ id: PropTypes.string,
197
+
198
+ /**
199
+ * The HTML class names for this element
200
+ */
201
+ className: PropTypes.string,
202
+
203
+ /**
204
+ * The React-written, css properties for this element.
205
+ */
206
+ style: PropTypes.objectOf(PropTypes.string),
207
+
208
+ /**
209
+ * The label of the custom select input
210
+ */
211
+ label: PropTypes.string,
212
+
213
+ /**
214
+ * The custom select input options from the backend
215
+ */
216
+ options: PropTypes.arrayOf(PropTypes.shape({
217
+ value: PropTypes.string,
218
+ label: PropTypes.string
219
+ })),
220
+
221
+ /**
222
+ * The name of the custom select input
223
+ */
224
+ name: PropTypes.string,
225
+
226
+ /**
227
+ * The function to fetch the options from the backend
228
+ */
229
+ getOptions: PropTypes.func,
230
+
231
+ /**
232
+ * The function to set the value of the custom select input
233
+ */
234
+ setValue: PropTypes.func.isRequired,
235
+
236
+ /**
237
+ * The custom select input description
238
+ */
239
+ description: PropTypes.string,
240
+
241
+ /**
242
+ * The error object
243
+ */
244
+ error: PropTypes.objectOf(PropTypes.string),
245
+
246
+ /**
247
+ * The value of the custom select input
248
+ */
249
+ value: PropTypes.arrayOf(PropTypes.shape({
250
+ value: PropTypes.string,
251
+ label: PropTypes.string
252
+ })),
253
+
254
+ /**
255
+ * The base color of the custom select input
256
+ */
257
+ color: PropTypes.string,
258
+
259
+ /**
260
+ * Whether the query getting the combobox options is inFlight
261
+ */
262
+ isFetching: PropTypes.bool.isRequired,
263
+
264
+ /**
265
+ * The minimum length of the search input to start fetching the options
266
+ */
267
+ minLength: PropTypes.number,
268
+
269
+ /**
270
+ * The function to transform the search input
271
+ */
272
+ transformSearch: PropTypes.func
273
+ };
274
+ MultipleCombobox.defaultProps = {// someProp: false
275
+ };
276
+ export default MultipleCombobox;
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as MultipleCombobox } from "./MultipleCombobox";
@@ -0,0 +1,3 @@
1
+ export { Menu } from "./Menu";
2
+ export { Combobox } from "./Combobox";
3
+ export { MultipleCombobox } from "./MultipleCombobox";
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as QueryCombobox } from "./QueryCombobox";
@@ -0,0 +1,90 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ $default-input-padding: .75em .75em .55em;
6
+ $default-padding: 1em;
7
+ $default-margin: 1em;
8
+ $default-gap: 1em;
9
+ $default-loading-circle-displacement: 1em;
10
+
11
+ .#{bem.$base}.combobox,
12
+ .#{bem.$base}.multiple-combobox {
13
+ position: relative;
14
+
15
+ .#{bem.$base}.label {
16
+ margin-bottom: $default-margin
17
+ }
18
+
19
+ .#{bem.$base}.popover {
20
+ width: 100%;
21
+
22
+ >.menu {
23
+ list-style: none;
24
+ margin: 0;
25
+ outline: 0;
26
+ padding: 0;
27
+
28
+ >.item {
29
+ padding: $default-padding / 2;
30
+
31
+ &.#{bem.$modifier-active} {
32
+ background-color: var(--background2);
33
+ }
34
+ }
35
+ }
36
+ }
37
+
38
+ >.input-wrapper {
39
+ position: relative;
40
+
41
+ >.#{bem.$base}.loading-circle {
42
+ position: absolute;
43
+ top: $default-loading-circle-displacement;
44
+ right: $default-loading-circle-displacement;
45
+ }
46
+
47
+ >.input {
48
+ background: var(--light-y);
49
+ border: var(--theme-border-style) var(--dark-y);
50
+ color: var(--on-y);
51
+ padding: $default-input-padding;
52
+ width: 100%;
53
+
54
+ &::placeholder {
55
+ color: var(--metadata);
56
+ }
57
+
58
+ &:not(:disabled):hover {
59
+ border: var(--theme-border-style) var(--light-background4);
60
+ }
61
+
62
+ &:disabled {
63
+ background-color: var(--dark-y);
64
+ }
65
+
66
+ &:focus {
67
+ background: var(--light-background4);
68
+ }
69
+ }
70
+ }
71
+ }
72
+
73
+
74
+ .#{bem.$base}.multiple-combobox {
75
+ >.selected-items {
76
+ display: flex;
77
+ gap: $default-gap / 2;
78
+ flex-wrap: wrap;
79
+ margin-bottom: $default-margin / 2;
80
+
81
+ >.item {
82
+ background-color: var(--main2);
83
+ padding: $default-padding / 4;
84
+
85
+ .close {
86
+ font-size: calc(var(--s-3) * 1em);
87
+ }
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,179 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react';
3
+ import { useState, useEffect } from 'react';
4
+ import { useRelayEnvironment, fetchQuery } from 'react-relay';
5
+ import { useField } from 'formik';
6
+ import PropTypes from 'prop-types'; // Local Definitions
7
+
8
+ import { SelectInput } from "../..";
9
+ /**
10
+ * This is the component description.
11
+ */
12
+
13
+ const QuerySelect = ({
14
+ id,
15
+ className: userClassName,
16
+ style,
17
+ name,
18
+ label,
19
+ query,
20
+ variables,
21
+ optionsKeyMap,
22
+ description,
23
+ disabled,
24
+ color,
25
+ loadingOption,
26
+ defaultOption // ...otherProps
27
+
28
+ }) => {
29
+ const [,, helpers] = useField(name);
30
+ const {
31
+ setError
32
+ } = helpers;
33
+ const environment = useRelayEnvironment();
34
+ const [isFetching, setIsFetching] = useState(false);
35
+ const [options, setOptions] = useState([]);
36
+ const {
37
+ graphql,
38
+ accessor
39
+ } = query;
40
+
41
+ const getOptions = () => {
42
+ if (isFetching) return;
43
+ fetchQuery(environment, graphql, variables).subscribe({
44
+ start: () => {
45
+ setIsFetching(true);
46
+ setOptions([loadingOption]);
47
+ },
48
+ complete: () => {
49
+ setIsFetching(false);
50
+ },
51
+ error: fetchError => {
52
+ setIsFetching(false);
53
+ if (setError) setError(fetchError.message);
54
+ },
55
+ next: data => {
56
+ setOptions([defaultOption, ...data[accessor].edges.map(({
57
+ node
58
+ }) => ({
59
+ value: node[optionsKeyMap.value],
60
+ label: optionsKeyMap.getLabel(node)
61
+ }))]);
62
+ }
63
+ });
64
+ };
65
+
66
+ useEffect(() => {
67
+ getOptions();
68
+ }, [variables]);
69
+ return /*#__PURE__*/React.createElement(SelectInput, {
70
+ id: id,
71
+ className: userClassName,
72
+ style: style,
73
+ name: name,
74
+ label: label,
75
+ color: color,
76
+ description: description,
77
+ disabled: isFetching || disabled,
78
+ options: options,
79
+ isLoading: isFetching
80
+ });
81
+ };
82
+
83
+ QuerySelect.propTypes = {
84
+ /**
85
+ * The HTML id for this element
86
+ */
87
+ id: PropTypes.string,
88
+
89
+ /**
90
+ * The HTML class names for this element
91
+ */
92
+ className: PropTypes.string,
93
+
94
+ /**
95
+ * The React-written, css properties for this element.
96
+ */
97
+ style: PropTypes.objectOf(PropTypes.string),
98
+
99
+ /**
100
+ * The name of the custom select input
101
+ */
102
+ name: PropTypes.string,
103
+
104
+ /**
105
+ * The label of the custom select input
106
+ */
107
+ label: PropTypes.string,
108
+
109
+ /**
110
+ * The custom select input description
111
+ */
112
+ description: PropTypes.string,
113
+
114
+ /**
115
+ * Whether the input should be disabled
116
+ */
117
+ disabled: PropTypes.bool,
118
+
119
+ /**
120
+ * The base color of the custom select input
121
+ */
122
+ color: PropTypes.string,
123
+
124
+ /**
125
+ * The graphql query to fetch the options and the accessor to destructure the results from
126
+ */
127
+ query: PropTypes.shape({
128
+ accessor: PropTypes.string,
129
+ graphql: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired
130
+ }),
131
+
132
+ /**
133
+ * The variables that might be required to be used in the query to fetch
134
+ * select options.
135
+ */
136
+ variables: PropTypes.objectOf(PropTypes.string),
137
+
138
+ /**
139
+ * The select option keys to be used to map the data to the select options.
140
+ * i.e `{ value: 'id', label: 'name' }`
141
+ */
142
+ optionsKeyMap: PropTypes.shape({
143
+ value: PropTypes.string.isRequired,
144
+ getLabel: PropTypes.func.isRequired
145
+ }).isRequired,
146
+
147
+ /**
148
+ * The default select option for the query select
149
+ */
150
+ defaultOption: PropTypes.shape({
151
+ value: PropTypes.string.isRequired,
152
+ label: PropTypes.string.isRequired,
153
+ disabled: PropTypes.bool.isRequired
154
+ }),
155
+
156
+ /**
157
+ * The option to dipslayed when the select options are being fetched
158
+ */
159
+ loadingOption: PropTypes.shape({
160
+ value: PropTypes.string.isRequired,
161
+ label: PropTypes.string.isRequired,
162
+ disabled: PropTypes.bool.isRequired
163
+ })
164
+ };
165
+ QuerySelect.defaultProps = {
166
+ disabled: false,
167
+ color: 'background2',
168
+ defaultOption: {
169
+ value: '',
170
+ label: 'Select an option',
171
+ disabled: true
172
+ },
173
+ loadingOption: {
174
+ value: '',
175
+ label: 'Fetching Options',
176
+ disabled: true
177
+ }
178
+ };
179
+ export default QuerySelect;
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as QuerySelect } from "./QuerySelect";
@@ -0,0 +1,21 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ @use "@pareto-engineering/bem";
3
+
4
+ $default-loading-circle-displacement: .8em;
5
+
6
+ .#{bem.$base}.query-select {
7
+ position: relative;
8
+
9
+
10
+ >.#{bem.$base}.select-input {
11
+ select:disabled {
12
+ appearance: none;
13
+ }
14
+ }
15
+
16
+ >.#{bem.$base}.loading-circle {
17
+ position: absolute;
18
+ right: $default-loading-circle-displacement;
19
+ bottom: $default-loading-circle-displacement;
20
+ }
21
+ }
@@ -5,6 +5,7 @@ import PropTypes from 'prop-types';
5
5
  import styleNames from '@pareto-engineering/bem'; // Local Definitions
6
6
 
7
7
  import { Rating } from "./common";
8
+ import { FormLabel } from "../../common";
8
9
  const baseClassName = styleNames.base;
9
10
  const componentClassName = 'ratings-input';
10
11
  /**
@@ -18,9 +19,13 @@ const RatingsInput = ({
18
19
  name,
19
20
  ratingCount,
20
21
  showRatingValue,
22
+ oneInputLabel,
23
+ label,
24
+ labelColor,
21
25
  labelMax,
22
26
  labelMin,
23
- displayRatingsLabel // ...otherProps
27
+ displayRatingsLabel,
28
+ optional // ...otherProps
24
29
 
25
30
  }) => {
26
31
  useLayoutEffect(() => {
@@ -30,8 +35,14 @@ const RatingsInput = ({
30
35
  return /*#__PURE__*/React.createElement("div", {
31
36
  id: id,
32
37
  className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
33
- style: style // {...otherProps}
34
-
38
+ style: style
39
+ }, /*#__PURE__*/React.createElement(FormLabel, {
40
+ className: ['input-label', oneInputLabel ? 'md-s2 s0 v1 mb-v' : 'v50 mb-v'].filter(e => e).join(' '),
41
+ name: name,
42
+ color: labelColor,
43
+ optional: optional
44
+ }, label), /*#__PURE__*/React.createElement("div", {
45
+ className: "stars"
35
46
  }, displayRatingsLabel && /*#__PURE__*/React.createElement("p", {
36
47
  className: "label-text md-s-1 s-2 x-metadata c-x"
37
48
  }, labelMin), [...Array(ratingCount)].map((_, index) => {
@@ -47,7 +58,7 @@ const RatingsInput = ({
47
58
  });
48
59
  }), displayRatingsLabel && /*#__PURE__*/React.createElement("p", {
49
60
  className: "label-text md-s-1 s-2 x-metadata c-x"
50
- }, labelMax));
61
+ }, labelMax)));
51
62
  };
52
63
 
53
64
  RatingsInput.propTypes = {
@@ -81,6 +92,11 @@ RatingsInput.propTypes = {
81
92
  */
82
93
  showRatingValue: PropTypes.bool,
83
94
 
95
+ /**
96
+ * The label of the ratings input
97
+ */
98
+ label: PropTypes.string.isRequired,
99
+
84
100
  /**
85
101
  * description for the highest rating value
86
102
  */
@@ -94,10 +110,26 @@ RatingsInput.propTypes = {
94
110
  /**
95
111
  * If the rating lables should be shown
96
112
  */
97
- displayRatingsLabel: PropTypes.bool
113
+ displayRatingsLabel: PropTypes.bool,
114
+
115
+ /**
116
+ * Whether the input is optional or not
117
+ */
118
+ optional: PropTypes.bool,
119
+
120
+ /**
121
+ * If the slide will only have one input
122
+ */
123
+ oneInputLabel: PropTypes.bool,
124
+
125
+ /**
126
+ * String that will represent color for the label
127
+ */
128
+ labelColor: PropTypes.string
98
129
  };
99
130
  RatingsInput.defaultProps = {
100
131
  labelMin: 'not satisfied.',
101
- labelMax: 'very satisfied.'
132
+ labelMax: 'very satisfied.',
133
+ labelColor: 'main2'
102
134
  };
103
135
  export default /*#__PURE__*/memo(RatingsInput);