@atlaskit/editor-plugin-extension 0.4.2 → 0.5.1

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 (307) hide show
  1. package/.eslintrc.js +26 -0
  2. package/CHANGELOG.md +16 -0
  3. package/dist/cjs/actions.js +236 -0
  4. package/dist/cjs/commands.js +122 -0
  5. package/dist/cjs/context-panel.js +269 -0
  6. package/dist/cjs/extension-api.js +266 -0
  7. package/dist/cjs/index.js +8 -1
  8. package/dist/cjs/plugin-factory.js +32 -0
  9. package/dist/cjs/plugin-key.js +8 -0
  10. package/dist/cjs/plugin.js +147 -0
  11. package/dist/cjs/pm-plugins/keymap.js +21 -0
  12. package/dist/cjs/pm-plugins/macro/actions.js +186 -0
  13. package/dist/cjs/pm-plugins/macro/index.js +72 -0
  14. package/dist/cjs/pm-plugins/macro/plugin-key.js +8 -0
  15. package/dist/cjs/pm-plugins/macro/types.js +5 -0
  16. package/dist/cjs/pm-plugins/main.js +323 -0
  17. package/dist/cjs/pm-plugins/unique-id.js +80 -0
  18. package/dist/cjs/pm-plugins/utils.js +75 -0
  19. package/dist/cjs/reducer.js +18 -0
  20. package/dist/cjs/toolbar.js +242 -0
  21. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +475 -0
  22. package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +122 -0
  23. package/dist/cjs/ui/ConfigPanel/ConfigPanelLoader.js +23 -0
  24. package/dist/cjs/ui/ConfigPanel/ErrorMessage/ErrorImage.js +76 -0
  25. package/dist/cjs/ui/ConfigPanel/ErrorMessage/index.js +33 -0
  26. package/dist/cjs/ui/ConfigPanel/FieldMessages.js +105 -0
  27. package/dist/cjs/ui/ConfigPanel/Fields/Boolean.js +150 -0
  28. package/dist/cjs/ui/ConfigPanel/Fields/CheckboxGroup.js +101 -0
  29. package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +420 -0
  30. package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +192 -0
  31. package/dist/cjs/ui/ConfigPanel/Fields/Date.js +55 -0
  32. package/dist/cjs/ui/ConfigPanel/Fields/DateRange.js +160 -0
  33. package/dist/cjs/ui/ConfigPanel/Fields/Enum.js +41 -0
  34. package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +88 -0
  35. package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +270 -0
  36. package/dist/cjs/ui/ConfigPanel/Fields/Number.js +64 -0
  37. package/dist/cjs/ui/ConfigPanel/Fields/RadioGroup.js +56 -0
  38. package/dist/cjs/ui/ConfigPanel/Fields/Select.js +60 -0
  39. package/dist/cjs/ui/ConfigPanel/Fields/SelectItem.js +53 -0
  40. package/dist/cjs/ui/ConfigPanel/Fields/String.js +75 -0
  41. package/dist/cjs/ui/ConfigPanel/Fields/TabGroup.js +73 -0
  42. package/dist/cjs/ui/ConfigPanel/Fields/UnhandledType.js +19 -0
  43. package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +268 -0
  44. package/dist/cjs/ui/ConfigPanel/Fields/common/RequiredIndicator.js +12 -0
  45. package/dist/cjs/ui/ConfigPanel/FormContent.js +231 -0
  46. package/dist/cjs/ui/ConfigPanel/FormErrorBoundary.js +140 -0
  47. package/dist/cjs/ui/ConfigPanel/Header.js +148 -0
  48. package/dist/cjs/ui/ConfigPanel/LoadingState.js +25 -0
  49. package/dist/cjs/ui/ConfigPanel/NestedForms/RemovableField.js +61 -0
  50. package/dist/cjs/ui/ConfigPanel/constants.js +13 -0
  51. package/dist/cjs/ui/ConfigPanel/index.js +9 -0
  52. package/dist/cjs/ui/ConfigPanel/messages.js +99 -0
  53. package/dist/cjs/ui/ConfigPanel/transformers.js +631 -0
  54. package/dist/cjs/ui/ConfigPanel/types.js +15 -0
  55. package/dist/cjs/ui/ConfigPanel/use-abortable-effect/index.js +56 -0
  56. package/dist/cjs/ui/ConfigPanel/use-state-from-promise/index.js +41 -0
  57. package/dist/cjs/ui/ConfigPanel/utils.js +116 -0
  58. package/dist/cjs/ui/SaveIndicator/SaveIndicator.js +79 -0
  59. package/dist/cjs/ui/SaveIndicator/messages.js +14 -0
  60. package/dist/cjs/ui/SaveIndicator/types.js +5 -0
  61. package/dist/cjs/utils.js +73 -0
  62. package/dist/es2019/actions.js +203 -0
  63. package/dist/es2019/commands.js +99 -0
  64. package/dist/es2019/context-panel.js +181 -0
  65. package/dist/es2019/extension-api.js +284 -0
  66. package/dist/es2019/index.js +1 -1
  67. package/dist/es2019/plugin-factory.js +26 -0
  68. package/dist/es2019/plugin-key.js +2 -0
  69. package/dist/es2019/plugin.js +138 -0
  70. package/dist/es2019/pm-plugins/keymap.js +15 -0
  71. package/dist/es2019/pm-plugins/macro/actions.js +152 -0
  72. package/dist/es2019/pm-plugins/macro/index.js +36 -0
  73. package/dist/es2019/pm-plugins/macro/plugin-key.js +2 -0
  74. package/dist/es2019/pm-plugins/macro/types.js +1 -0
  75. package/dist/es2019/pm-plugins/main.js +230 -0
  76. package/dist/es2019/pm-plugins/unique-id.js +69 -0
  77. package/dist/es2019/pm-plugins/utils.js +30 -0
  78. package/dist/es2019/reducer.js +11 -0
  79. package/dist/es2019/toolbar.js +236 -0
  80. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +415 -0
  81. package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +100 -0
  82. package/dist/es2019/ui/ConfigPanel/ConfigPanelLoader.js +7 -0
  83. package/dist/es2019/ui/ConfigPanel/ErrorMessage/ErrorImage.js +66 -0
  84. package/dist/es2019/ui/ConfigPanel/ErrorMessage/index.js +25 -0
  85. package/dist/es2019/ui/ConfigPanel/FieldMessages.js +101 -0
  86. package/dist/es2019/ui/ConfigPanel/Fields/Boolean.js +138 -0
  87. package/dist/es2019/ui/ConfigPanel/Fields/CheckboxGroup.js +96 -0
  88. package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +411 -0
  89. package/dist/es2019/ui/ConfigPanel/Fields/CustomSelect.js +132 -0
  90. package/dist/es2019/ui/ConfigPanel/Fields/Date.js +50 -0
  91. package/dist/es2019/ui/ConfigPanel/Fields/DateRange.js +139 -0
  92. package/dist/es2019/ui/ConfigPanel/Fields/Enum.js +35 -0
  93. package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +73 -0
  94. package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +227 -0
  95. package/dist/es2019/ui/ConfigPanel/Fields/Number.js +61 -0
  96. package/dist/es2019/ui/ConfigPanel/Fields/RadioGroup.js +40 -0
  97. package/dist/es2019/ui/ConfigPanel/Fields/Select.js +50 -0
  98. package/dist/es2019/ui/ConfigPanel/Fields/SelectItem.js +47 -0
  99. package/dist/es2019/ui/ConfigPanel/Fields/String.js +67 -0
  100. package/dist/es2019/ui/ConfigPanel/Fields/TabGroup.js +57 -0
  101. package/dist/es2019/ui/ConfigPanel/Fields/UnhandledType.js +11 -0
  102. package/dist/es2019/ui/ConfigPanel/Fields/UserSelect.js +194 -0
  103. package/dist/es2019/ui/ConfigPanel/Fields/common/RequiredIndicator.js +5 -0
  104. package/dist/es2019/ui/ConfigPanel/FormContent.js +225 -0
  105. package/dist/es2019/ui/ConfigPanel/FormErrorBoundary.js +100 -0
  106. package/dist/es2019/ui/ConfigPanel/Header.js +140 -0
  107. package/dist/es2019/ui/ConfigPanel/LoadingState.js +15 -0
  108. package/dist/es2019/ui/ConfigPanel/NestedForms/RemovableField.js +52 -0
  109. package/dist/es2019/ui/ConfigPanel/constants.js +7 -0
  110. package/dist/es2019/ui/ConfigPanel/index.js +2 -0
  111. package/dist/es2019/ui/ConfigPanel/messages.js +93 -0
  112. package/dist/es2019/ui/ConfigPanel/transformers.js +367 -0
  113. package/dist/es2019/ui/ConfigPanel/types.js +9 -0
  114. package/dist/es2019/ui/ConfigPanel/use-abortable-effect/index.js +46 -0
  115. package/dist/es2019/ui/ConfigPanel/use-state-from-promise/index.js +30 -0
  116. package/dist/es2019/ui/ConfigPanel/utils.js +86 -0
  117. package/dist/es2019/ui/SaveIndicator/SaveIndicator.js +66 -0
  118. package/dist/es2019/ui/SaveIndicator/messages.js +8 -0
  119. package/dist/es2019/ui/SaveIndicator/types.js +1 -0
  120. package/dist/es2019/utils.js +65 -0
  121. package/dist/esm/actions.js +223 -0
  122. package/dist/esm/commands.js +113 -0
  123. package/dist/esm/context-panel.js +261 -0
  124. package/dist/esm/extension-api.js +259 -0
  125. package/dist/esm/index.js +1 -1
  126. package/dist/esm/plugin-factory.js +25 -0
  127. package/dist/esm/plugin-key.js +2 -0
  128. package/dist/esm/plugin.js +140 -0
  129. package/dist/esm/pm-plugins/keymap.js +15 -0
  130. package/dist/esm/pm-plugins/macro/actions.js +179 -0
  131. package/dist/esm/pm-plugins/macro/index.js +42 -0
  132. package/dist/esm/pm-plugins/macro/plugin-key.js +2 -0
  133. package/dist/esm/pm-plugins/macro/types.js +1 -0
  134. package/dist/esm/pm-plugins/main.js +298 -0
  135. package/dist/esm/pm-plugins/unique-id.js +74 -0
  136. package/dist/esm/pm-plugins/utils.js +68 -0
  137. package/dist/esm/reducer.js +11 -0
  138. package/dist/esm/toolbar.js +235 -0
  139. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +465 -0
  140. package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +112 -0
  141. package/dist/esm/ui/ConfigPanel/ConfigPanelLoader.js +11 -0
  142. package/dist/esm/ui/ConfigPanel/ErrorMessage/ErrorImage.js +68 -0
  143. package/dist/esm/ui/ConfigPanel/ErrorMessage/index.js +26 -0
  144. package/dist/esm/ui/ConfigPanel/FieldMessages.js +97 -0
  145. package/dist/esm/ui/ConfigPanel/Fields/Boolean.js +140 -0
  146. package/dist/esm/ui/ConfigPanel/Fields/CheckboxGroup.js +95 -0
  147. package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +414 -0
  148. package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +182 -0
  149. package/dist/esm/ui/ConfigPanel/Fields/Date.js +48 -0
  150. package/dist/esm/ui/ConfigPanel/Fields/DateRange.js +154 -0
  151. package/dist/esm/ui/ConfigPanel/Fields/Enum.js +34 -0
  152. package/dist/esm/ui/ConfigPanel/Fields/Expand.js +77 -0
  153. package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +261 -0
  154. package/dist/esm/ui/ConfigPanel/Fields/Number.js +57 -0
  155. package/dist/esm/ui/ConfigPanel/Fields/RadioGroup.js +46 -0
  156. package/dist/esm/ui/ConfigPanel/Fields/Select.js +50 -0
  157. package/dist/esm/ui/ConfigPanel/Fields/SelectItem.js +45 -0
  158. package/dist/esm/ui/ConfigPanel/Fields/String.js +65 -0
  159. package/dist/esm/ui/ConfigPanel/Fields/TabGroup.js +62 -0
  160. package/dist/esm/ui/ConfigPanel/Fields/UnhandledType.js +10 -0
  161. package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +258 -0
  162. package/dist/esm/ui/ConfigPanel/Fields/common/RequiredIndicator.js +5 -0
  163. package/dist/esm/ui/ConfigPanel/FormContent.js +223 -0
  164. package/dist/esm/ui/ConfigPanel/FormErrorBoundary.js +133 -0
  165. package/dist/esm/ui/ConfigPanel/Header.js +140 -0
  166. package/dist/esm/ui/ConfigPanel/LoadingState.js +17 -0
  167. package/dist/esm/ui/ConfigPanel/NestedForms/RemovableField.js +53 -0
  168. package/dist/esm/ui/ConfigPanel/constants.js +7 -0
  169. package/dist/esm/ui/ConfigPanel/index.js +2 -0
  170. package/dist/esm/ui/ConfigPanel/messages.js +93 -0
  171. package/dist/esm/ui/ConfigPanel/transformers.js +624 -0
  172. package/dist/esm/ui/ConfigPanel/types.js +9 -0
  173. package/dist/esm/ui/ConfigPanel/use-abortable-effect/index.js +49 -0
  174. package/dist/esm/ui/ConfigPanel/use-state-from-promise/index.js +34 -0
  175. package/dist/esm/ui/ConfigPanel/utils.js +109 -0
  176. package/dist/esm/ui/SaveIndicator/SaveIndicator.js +72 -0
  177. package/dist/esm/ui/SaveIndicator/messages.js +8 -0
  178. package/dist/esm/ui/SaveIndicator/types.js +1 -0
  179. package/dist/esm/utils.js +67 -0
  180. package/dist/types/actions.d.ts +20 -0
  181. package/dist/types/commands.d.ts +15 -0
  182. package/dist/types/context-panel.d.ts +10 -0
  183. package/dist/types/extension-api.d.ts +12 -0
  184. package/dist/types/index.d.ts +2 -1
  185. package/dist/types/plugin-factory.d.ts +4 -0
  186. package/dist/types/plugin-key.d.ts +3 -0
  187. package/dist/types/plugin.d.ts +2 -0
  188. package/dist/types/pm-plugins/keymap.d.ts +3 -0
  189. package/dist/types/pm-plugins/macro/actions.d.ts +9 -0
  190. package/dist/types/pm-plugins/macro/index.d.ts +8 -0
  191. package/dist/types/pm-plugins/macro/plugin-key.d.ts +3 -0
  192. package/dist/types/pm-plugins/macro/types.d.ts +4 -0
  193. package/dist/types/pm-plugins/main.d.ts +25 -0
  194. package/dist/types/pm-plugins/unique-id.d.ts +3 -0
  195. package/dist/types/pm-plugins/utils.d.ts +3 -0
  196. package/dist/types/reducer.d.ts +2 -0
  197. package/dist/types/toolbar.d.ts +44 -0
  198. package/dist/types/types.d.ts +27 -2
  199. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +22 -0
  200. package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +21 -0
  201. package/dist/types/ui/ConfigPanel/ConfigPanelLoader.d.ts +5 -0
  202. package/dist/types/ui/ConfigPanel/ErrorMessage/ErrorImage.d.ts +4 -0
  203. package/dist/types/ui/ConfigPanel/ErrorMessage/index.d.ts +10 -0
  204. package/dist/types/ui/ConfigPanel/FieldMessages.d.ts +12 -0
  205. package/dist/types/ui/ConfigPanel/Fields/Boolean.d.ts +8 -0
  206. package/dist/types/ui/ConfigPanel/Fields/CheckboxGroup.d.ts +8 -0
  207. package/dist/types/ui/ConfigPanel/Fields/ColorPicker.d.ts +20 -0
  208. package/dist/types/ui/ConfigPanel/Fields/CustomSelect.d.ts +24 -0
  209. package/dist/types/ui/ConfigPanel/Fields/Date.d.ts +20 -0
  210. package/dist/types/ui/ConfigPanel/Fields/DateRange.d.ts +20 -0
  211. package/dist/types/ui/ConfigPanel/Fields/Enum.d.ts +10 -0
  212. package/dist/types/ui/ConfigPanel/Fields/Expand.d.ts +16 -0
  213. package/dist/types/ui/ConfigPanel/Fields/Fieldset.d.ts +19 -0
  214. package/dist/types/ui/ConfigPanel/Fields/Number.d.ts +10 -0
  215. package/dist/types/ui/ConfigPanel/Fields/RadioGroup.d.ts +8 -0
  216. package/dist/types/ui/ConfigPanel/Fields/Select.d.ts +11 -0
  217. package/dist/types/ui/ConfigPanel/Fields/SelectItem.d.ts +5 -0
  218. package/dist/types/ui/ConfigPanel/Fields/String.d.ts +10 -0
  219. package/dist/types/ui/ConfigPanel/Fields/TabGroup.d.ts +14 -0
  220. package/dist/types/ui/ConfigPanel/Fields/UnhandledType.d.ts +6 -0
  221. package/dist/types/ui/ConfigPanel/Fields/UserSelect.d.ts +10 -0
  222. package/dist/types/ui/ConfigPanel/Fields/common/RequiredIndicator.d.ts +1 -0
  223. package/dist/types/ui/ConfigPanel/FormContent.d.ts +4 -0
  224. package/dist/types/ui/ConfigPanel/FormErrorBoundary.d.ts +16 -0
  225. package/dist/types/ui/ConfigPanel/Header.d.ts +23 -0
  226. package/dist/types/ui/ConfigPanel/LoadingState.d.ts +4 -0
  227. package/dist/types/ui/ConfigPanel/NestedForms/RemovableField.d.ts +19 -0
  228. package/dist/types/ui/ConfigPanel/constants.d.ts +2 -0
  229. package/dist/types/ui/ConfigPanel/index.d.ts +2 -0
  230. package/dist/types/ui/ConfigPanel/messages.d.ts +92 -0
  231. package/dist/types/ui/ConfigPanel/transformers.d.ts +9 -0
  232. package/dist/types/ui/ConfigPanel/types.d.ts +36 -0
  233. package/dist/types/ui/ConfigPanel/use-abortable-effect/index.d.ts +16 -0
  234. package/dist/types/ui/ConfigPanel/use-state-from-promise/index.d.ts +15 -0
  235. package/dist/types/ui/ConfigPanel/utils.d.ts +16 -0
  236. package/dist/types/ui/SaveIndicator/SaveIndicator.d.ts +4 -0
  237. package/dist/types/ui/SaveIndicator/messages.d.ts +7 -0
  238. package/dist/types/ui/SaveIndicator/types.d.ts +11 -0
  239. package/dist/types/utils.d.ts +15 -0
  240. package/dist/types-ts4.5/actions.d.ts +20 -0
  241. package/dist/types-ts4.5/commands.d.ts +15 -0
  242. package/dist/types-ts4.5/context-panel.d.ts +10 -0
  243. package/dist/types-ts4.5/extension-api.d.ts +12 -0
  244. package/dist/types-ts4.5/index.d.ts +2 -1
  245. package/dist/types-ts4.5/plugin-factory.d.ts +4 -0
  246. package/dist/types-ts4.5/plugin-key.d.ts +3 -0
  247. package/dist/types-ts4.5/plugin.d.ts +2 -0
  248. package/dist/types-ts4.5/pm-plugins/keymap.d.ts +3 -0
  249. package/dist/types-ts4.5/pm-plugins/macro/actions.d.ts +9 -0
  250. package/dist/types-ts4.5/pm-plugins/macro/index.d.ts +8 -0
  251. package/dist/types-ts4.5/pm-plugins/macro/plugin-key.d.ts +3 -0
  252. package/dist/types-ts4.5/pm-plugins/macro/types.d.ts +4 -0
  253. package/dist/types-ts4.5/pm-plugins/main.d.ts +25 -0
  254. package/dist/types-ts4.5/pm-plugins/unique-id.d.ts +3 -0
  255. package/dist/types-ts4.5/pm-plugins/utils.d.ts +3 -0
  256. package/dist/types-ts4.5/reducer.d.ts +2 -0
  257. package/dist/types-ts4.5/toolbar.d.ts +44 -0
  258. package/dist/types-ts4.5/types.d.ts +27 -2
  259. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanel.d.ts +22 -0
  260. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +21 -0
  261. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelLoader.d.ts +5 -0
  262. package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/ErrorImage.d.ts +4 -0
  263. package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/index.d.ts +10 -0
  264. package/dist/types-ts4.5/ui/ConfigPanel/FieldMessages.d.ts +12 -0
  265. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Boolean.d.ts +8 -0
  266. package/dist/types-ts4.5/ui/ConfigPanel/Fields/CheckboxGroup.d.ts +8 -0
  267. package/dist/types-ts4.5/ui/ConfigPanel/Fields/ColorPicker.d.ts +20 -0
  268. package/dist/types-ts4.5/ui/ConfigPanel/Fields/CustomSelect.d.ts +24 -0
  269. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Date.d.ts +20 -0
  270. package/dist/types-ts4.5/ui/ConfigPanel/Fields/DateRange.d.ts +20 -0
  271. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Enum.d.ts +10 -0
  272. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Expand.d.ts +16 -0
  273. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Fieldset.d.ts +19 -0
  274. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Number.d.ts +10 -0
  275. package/dist/types-ts4.5/ui/ConfigPanel/Fields/RadioGroup.d.ts +8 -0
  276. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Select.d.ts +11 -0
  277. package/dist/types-ts4.5/ui/ConfigPanel/Fields/SelectItem.d.ts +5 -0
  278. package/dist/types-ts4.5/ui/ConfigPanel/Fields/String.d.ts +10 -0
  279. package/dist/types-ts4.5/ui/ConfigPanel/Fields/TabGroup.d.ts +14 -0
  280. package/dist/types-ts4.5/ui/ConfigPanel/Fields/UnhandledType.d.ts +6 -0
  281. package/dist/types-ts4.5/ui/ConfigPanel/Fields/UserSelect.d.ts +10 -0
  282. package/dist/types-ts4.5/ui/ConfigPanel/Fields/common/RequiredIndicator.d.ts +1 -0
  283. package/dist/types-ts4.5/ui/ConfigPanel/FormContent.d.ts +4 -0
  284. package/dist/types-ts4.5/ui/ConfigPanel/FormErrorBoundary.d.ts +16 -0
  285. package/dist/types-ts4.5/ui/ConfigPanel/Header.d.ts +23 -0
  286. package/dist/types-ts4.5/ui/ConfigPanel/LoadingState.d.ts +4 -0
  287. package/dist/types-ts4.5/ui/ConfigPanel/NestedForms/RemovableField.d.ts +19 -0
  288. package/dist/types-ts4.5/ui/ConfigPanel/constants.d.ts +2 -0
  289. package/dist/types-ts4.5/ui/ConfigPanel/index.d.ts +2 -0
  290. package/dist/types-ts4.5/ui/ConfigPanel/messages.d.ts +92 -0
  291. package/dist/types-ts4.5/ui/ConfigPanel/transformers.d.ts +9 -0
  292. package/dist/types-ts4.5/ui/ConfigPanel/types.d.ts +39 -0
  293. package/dist/types-ts4.5/ui/ConfigPanel/use-abortable-effect/index.d.ts +16 -0
  294. package/dist/types-ts4.5/ui/ConfigPanel/use-state-from-promise/index.d.ts +18 -0
  295. package/dist/types-ts4.5/ui/ConfigPanel/utils.d.ts +16 -0
  296. package/dist/types-ts4.5/ui/SaveIndicator/SaveIndicator.d.ts +4 -0
  297. package/dist/types-ts4.5/ui/SaveIndicator/messages.d.ts +7 -0
  298. package/dist/types-ts4.5/ui/SaveIndicator/types.d.ts +11 -0
  299. package/dist/types-ts4.5/utils.d.ts +15 -0
  300. package/example-utils/config-panel/ConfigPanelWithExtensionPicker.tsx +217 -0
  301. package/example-utils/config-panel/ConfigPanelWithProviders.tsx +51 -0
  302. package/example-utils/config-panel/ExtensionNodePicker.tsx +141 -0
  303. package/example-utils/config-panel/FieldTypePicker.tsx +63 -0
  304. package/example-utils/config-panel/example-manifest-all-fields.ts +86 -0
  305. package/example-utils/config-panel/example-manifest-individual-fields.ts +85 -0
  306. package/example-utils/config-panel/fields.ts +611 -0
  307. package/package.json +49 -7
@@ -0,0 +1,139 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /** @jsx jsx */
3
+ import { Fragment, useEffect, useMemo, useState } from 'react';
4
+ import { css, jsx } from '@emotion/react';
5
+ import { injectIntl } from 'react-intl-next';
6
+ import { DatePicker } from '@atlaskit/datetime-picker';
7
+ import { Field } from '@atlaskit/form';
8
+ import { RadioGroup } from '@atlaskit/radio';
9
+ import TextField from '@atlaskit/textfield';
10
+ import FieldMessages from '../FieldMessages';
11
+ import { messages } from '../messages';
12
+ import { validate, validateRequired } from '../utils';
13
+ const horizontalFieldsStyles = css({
14
+ display: 'flex',
15
+ flexDirection: 'row',
16
+ justifyContent: 'space-between'
17
+ });
18
+ const horizontalFieldWrapperStyles = css({
19
+ flexBasis: '47%'
20
+ });
21
+ const hiddenStyles = css({
22
+ display: 'none'
23
+ });
24
+ const getFromDefaultValue = (field, attribute) => {
25
+ if (field.defaultValue) {
26
+ return field.defaultValue[attribute];
27
+ }
28
+ };
29
+ const DateField = ({
30
+ parentField,
31
+ scope,
32
+ fieldName,
33
+ onFieldChange,
34
+ intl,
35
+ isRequired
36
+ }) => jsx("div", {
37
+ css: horizontalFieldWrapperStyles,
38
+ key: fieldName
39
+ }, jsx(Field, {
40
+ name: `${scope}.${fieldName}`,
41
+ label: intl.formatMessage(messages[fieldName]),
42
+ defaultValue: getFromDefaultValue(parentField, fieldName),
43
+ isRequired: isRequired,
44
+ validate: value => {
45
+ return validateRequired({
46
+ isRequired
47
+ }, value);
48
+ }
49
+ }, ({
50
+ fieldProps,
51
+ error
52
+ }) => jsx(Fragment, null, jsx(DatePicker, _extends({}, fieldProps, {
53
+ onChange: date => {
54
+ fieldProps.onChange(date);
55
+ onFieldChange(parentField.name, true);
56
+ },
57
+ locale: intl.locale
58
+ })), jsx(FieldMessages, {
59
+ error: error
60
+ }))));
61
+ const DateRange = function ({
62
+ name,
63
+ field,
64
+ onFieldChange,
65
+ intl
66
+ }) {
67
+ const items = useMemo(() => {
68
+ return [...(field.items || []), {
69
+ label: intl.formatMessage(messages.custom),
70
+ value: 'custom'
71
+ }].map(option => ({
72
+ ...option,
73
+ name
74
+ }));
75
+ }, [field.items, name, intl]);
76
+ const [currentValue, setCurrentValue] = useState(getFromDefaultValue(field, 'value') || items[0].value);
77
+ useEffect(() => {
78
+ // calling onBlur here based on the currentValue changing will ensure that we
79
+ // get the most up to date value after the form has been rendered
80
+ onFieldChange(name, true);
81
+ }, [currentValue, onFieldChange, name]);
82
+ const element = jsx(Fragment, null, jsx("div", {
83
+ css: hiddenStyles
84
+ }, jsx(Field, {
85
+ name: `${name}.type`,
86
+ defaultValue: 'date-range'
87
+ }, ({
88
+ fieldProps
89
+ }) => jsx(TextField, _extends({}, fieldProps, {
90
+ type: "hidden"
91
+ })))), jsx(Field, {
92
+ name: `${name}.value`,
93
+ label: field.label,
94
+ defaultValue: currentValue,
95
+ isRequired: field.isRequired,
96
+ validate: value => validate(field, value || ''),
97
+ testId: `config-panel-date-range-${name}`
98
+ }, ({
99
+ fieldProps,
100
+ error
101
+ }) => jsx(Fragment, null, jsx(RadioGroup, _extends({}, fieldProps, {
102
+ options: items,
103
+ onChange: event => {
104
+ fieldProps.onChange(event.target.value);
105
+ setCurrentValue(event.target.value);
106
+ }
107
+ })), jsx(FieldMessages, {
108
+ error: error
109
+ }))), currentValue !== 'custom' ? jsx("div", {
110
+ css: hiddenStyles
111
+ }, jsx(Field, {
112
+ name: `${name}.from`,
113
+ defaultValue: currentValue
114
+ }, ({
115
+ fieldProps
116
+ }) => jsx(TextField, _extends({}, fieldProps, {
117
+ type: "hidden"
118
+ })))) : jsx("div", {
119
+ css: horizontalFieldsStyles
120
+ }, jsx(DateField, {
121
+ scope: name,
122
+ parentField: field,
123
+ fieldName: "from",
124
+ onFieldChange: onFieldChange,
125
+ intl: intl,
126
+ isRequired: field.isRequired
127
+ }), jsx(DateField, {
128
+ scope: name,
129
+ parentField: field,
130
+ fieldName: "to",
131
+ onFieldChange: onFieldChange,
132
+ intl: intl,
133
+ isRequired: field.isRequired
134
+ })), jsx(FieldMessages, {
135
+ description: field.description
136
+ }));
137
+ return element;
138
+ };
139
+ export default injectIntl(DateRange);
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import CheckboxGroup from './CheckboxGroup';
3
+ import RadioGroup from './RadioGroup';
4
+ import Select from './Select';
5
+ export default function Enum({
6
+ name,
7
+ field,
8
+ autoFocus,
9
+ onFieldChange,
10
+ fieldDefaultValue
11
+ }) {
12
+ switch (field.style) {
13
+ case 'checkbox':
14
+ return /*#__PURE__*/React.createElement(CheckboxGroup, {
15
+ name: name,
16
+ field: field,
17
+ onFieldChange: onFieldChange
18
+ });
19
+ case 'radio':
20
+ return /*#__PURE__*/React.createElement(RadioGroup, {
21
+ name: name,
22
+ field: field,
23
+ onFieldChange: onFieldChange
24
+ });
25
+ case 'select':
26
+ return /*#__PURE__*/React.createElement(Select, {
27
+ name: name,
28
+ field: field,
29
+ onFieldChange: onFieldChange,
30
+ placeholder: field.placeholder,
31
+ autoFocus: autoFocus,
32
+ fieldDefaultValue: fieldDefaultValue
33
+ });
34
+ }
35
+ }
@@ -0,0 +1,73 @@
1
+ /** @jsx jsx */
2
+ import React, { useState } from 'react';
3
+ import { css, jsx } from '@emotion/react';
4
+ import { injectIntl } from 'react-intl-next';
5
+ import Button from '@atlaskit/button';
6
+ import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
7
+ import ChevronRightIcon from '@atlaskit/icon/glyph/chevron-right';
8
+ import { N40 } from '@atlaskit/theme/colors';
9
+ import { messages } from '../messages';
10
+ const expandContainerStyles = css({
11
+ borderBottom: `1px solid ${`var(--ds-border, ${N40})`}`
12
+ });
13
+ const expandControlStyles = css({
14
+ display: 'flex',
15
+ height: "var(--ds-space-600, 48px)",
16
+ justifyContent: 'center',
17
+ paddingRight: "var(--ds-space-100, 8px)"
18
+ });
19
+ const chevronContainerStyles = css({
20
+ display: 'flex',
21
+ alignItems: 'center',
22
+ // eslint-disable-next-line @atlaskit/design-system/no-nested-styles
23
+ '& > button': {
24
+ width: "var(--ds-space-300, 24px)",
25
+ height: "var(--ds-space-300, 24px)"
26
+ }
27
+ });
28
+ const labelContainerStyles = css({
29
+ width: '100%',
30
+ alignItems: 'center',
31
+ display: 'flex',
32
+ fontWeight: 500
33
+ });
34
+ const expandContentContainerHiddenStyles = css({
35
+ display: 'none',
36
+ marginTop: "var(--ds-space-negative-100, -8px)"
37
+ });
38
+ const expandContentContainerVisibleStyles = css({
39
+ display: 'block',
40
+ marginTop: "var(--ds-space-negative-100, -8px)"
41
+ });
42
+ function Expand({
43
+ field,
44
+ children,
45
+ isExpanded = false,
46
+ intl
47
+ }) {
48
+ const [expanded, setExpanded] = useState(isExpanded);
49
+ return jsx("div", {
50
+ "data-testid": "expand-config-field",
51
+ css: expandContainerStyles
52
+ }, jsx("div", {
53
+ css: expandControlStyles
54
+ }, jsx("div", {
55
+ css: labelContainerStyles
56
+ }, field.label), jsx("div", {
57
+ css: chevronContainerStyles
58
+ }, jsx(Button, {
59
+ onClick: () => {
60
+ setExpanded(!expanded);
61
+ },
62
+ testId: "form-expand-toggle",
63
+ iconBefore: expanded ? jsx(ChevronDownIcon, {
64
+ label: intl.formatMessage(messages.collapse)
65
+ }) : jsx(ChevronRightIcon, {
66
+ label: intl.formatMessage(messages.expand)
67
+ })
68
+ }))), jsx("div", {
69
+ "data-testid": "expand-content-container",
70
+ css: expanded ? expandContentContainerVisibleStyles : expandContentContainerHiddenStyles
71
+ }, children));
72
+ }
73
+ export default injectIntl(Expand);
@@ -0,0 +1,227 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ /** @jsx jsx */
3
+ import React, { Fragment } from 'react';
4
+ import { css, jsx } from '@emotion/react';
5
+ import { injectIntl } from 'react-intl-next';
6
+ import Button from '@atlaskit/button/custom-theme-button';
7
+ import AddCircleIcon from '@atlaskit/icon/glyph/add-circle';
8
+ import SectionMessage from '@atlaskit/section-message';
9
+ import Select from '@atlaskit/select';
10
+ import { N40A } from '@atlaskit/theme/colors';
11
+ import { messages } from '../messages';
12
+ import { getNameFromDuplicateField, isDuplicateField } from '../utils';
13
+ const actionsWrapperStyles = css({
14
+ borderTop: `1px solid ${`var(--ds-border, ${N40A})`}`,
15
+ marginTop: "var(--ds-space-200, 16px)",
16
+ paddingTop: "var(--ds-space-200, 16px)"
17
+ });
18
+ const populateFromParameters = (parameters, fields) => {
19
+ if (Object.keys(parameters).length) {
20
+ const keys = Object.keys(parameters);
21
+ const existingFieldKeys = keys.filter(key => fields.find(field => field.name === getNameFromDuplicateField(key)));
22
+ if (existingFieldKeys.length > 0) {
23
+ return existingFieldKeys;
24
+ }
25
+ }
26
+ };
27
+ const populateFromRequired = fields => {
28
+ return fields.filter(field => field.isRequired).map(field => field.name);
29
+ };
30
+ const getInitialFields = (parameters = {}, fields, isDynamic) => {
31
+ if (!isDynamic) {
32
+ return new Set(fields.map(field => field.name));
33
+ }
34
+ const dynamicFields = [];
35
+ const fromRequired = populateFromRequired(fields);
36
+ if (fromRequired) {
37
+ dynamicFields.push(...fromRequired);
38
+ }
39
+ const fromParameters = populateFromParameters(parameters, fields);
40
+ if (fromParameters) {
41
+ dynamicFields.push(...fromParameters);
42
+ }
43
+ if (dynamicFields.length === 0 && Array.isArray(fields) && fields.length > 0) {
44
+ dynamicFields.push(fields[0].name);
45
+ }
46
+ return new Set(dynamicFields);
47
+ };
48
+ // eslint-disable-next-line @repo/internal/react/no-class-components
49
+ class FieldsetField extends React.Component {
50
+ constructor(props) {
51
+ super(props);
52
+ _defineProperty(this, "getSelectedFields", visibleFields => {
53
+ const {
54
+ field
55
+ } = this.props;
56
+ return [...visibleFields].map(fieldName => {
57
+ const originalFieldDef = field.fields.find(field => field.name === getNameFromDuplicateField(fieldName));
58
+ const fieldDef = {
59
+ ...originalFieldDef,
60
+ name: fieldName
61
+ };
62
+ // for duplicate fields we only want the first one to actually be required
63
+ if (originalFieldDef.name !== fieldName && fieldDef.isRequired === true) {
64
+ fieldDef.isRequired = false;
65
+ }
66
+ return fieldDef;
67
+ });
68
+ });
69
+ _defineProperty(this, "getSelectOptions", visibleFields => {
70
+ const {
71
+ field
72
+ } = this.props;
73
+ return field.fields.filter(field => field.allowDuplicates || !visibleFields.has(field.name)).map(field => ({
74
+ value: field.name,
75
+ label: field.label
76
+ }));
77
+ });
78
+ _defineProperty(this, "setIsAdding", value => {
79
+ this.setState(state => ({
80
+ ...state,
81
+ isAdding: value
82
+ }));
83
+ });
84
+ _defineProperty(this, "setCurrentParameters", parameters => {
85
+ this.setState(state => ({
86
+ ...state,
87
+ currentParameters: parameters
88
+ }),
89
+ // callback required so autosave can be triggered on
90
+ // the right moment if fields are being removed
91
+ () => this.props.onFieldChange(this.props.field.name, true));
92
+ });
93
+ _defineProperty(this, "setVisibleFields", fields => {
94
+ this.setState(state => ({
95
+ ...state,
96
+ visibleFields: fields,
97
+ selectedFields: this.getSelectedFields(fields),
98
+ selectOptions: this.getSelectOptions(fields)
99
+ }));
100
+ });
101
+ _defineProperty(this, "onSelectItem", option => {
102
+ const {
103
+ visibleFields
104
+ } = this.state;
105
+ let newItem = option.value;
106
+ const duplicates = [...visibleFields].filter(field => getNameFromDuplicateField(field) === newItem);
107
+ if (duplicates.length > 0) {
108
+ newItem += `:${duplicates.length}`;
109
+ }
110
+ this.setVisibleFields(new Set([...visibleFields, newItem]));
111
+ this.setIsAdding(false);
112
+ });
113
+ _defineProperty(this, "onClickRemove", fieldName => {
114
+ const {
115
+ visibleFields,
116
+ currentParameters
117
+ } = this.state;
118
+ visibleFields.delete(fieldName);
119
+ this.setVisibleFields(new Set(visibleFields));
120
+ const newParameters = {
121
+ ...currentParameters
122
+ };
123
+ delete newParameters[fieldName];
124
+ // if any there are duplicate fields that come after the one removed, we want to reduce their
125
+ // duplicate index eg. label:2 -> label:1
126
+ if (isDuplicateField(fieldName)) {
127
+ const [key, idx] = fieldName.split(':');
128
+ let currentIdx = +idx;
129
+ while (currentParameters[`${key}:${currentIdx + 1}`]) {
130
+ newParameters[`${key}:${currentIdx}`] = currentParameters[`${key}:${currentIdx + 1}`];
131
+ currentIdx++;
132
+ }
133
+ delete newParameters[`${key}:${currentIdx}`];
134
+ }
135
+ this.setCurrentParameters(newParameters);
136
+ });
137
+ _defineProperty(this, "renderActions", () => {
138
+ const {
139
+ intl
140
+ } = this.props;
141
+ const {
142
+ selectOptions,
143
+ isAdding
144
+ } = this.state;
145
+ if (selectOptions.length === 0) {
146
+ return null;
147
+ }
148
+ return jsx(React.Fragment, null, isAdding ? jsx(Select, {
149
+ testId: "field-picker",
150
+ defaultMenuIsOpen: true,
151
+ autoFocus: true,
152
+ placeholder: intl.formatMessage(messages.addField),
153
+ options: selectOptions,
154
+ onChange: option => {
155
+ if (option) {
156
+ this.onSelectItem(option);
157
+ }
158
+ }
159
+ }) : jsx(Button, {
160
+ testId: "add-more",
161
+ appearance: "subtle",
162
+ iconBefore: jsx(AddCircleIcon, {
163
+ size: "small",
164
+ label: intl.formatMessage(messages.addField)
165
+ }),
166
+ onClick: () => this.setIsAdding(true)
167
+ }, intl.formatMessage(messages.addField)));
168
+ });
169
+ const initialFields = getInitialFields(props.parameters, props.field.fields, props.field.options.isDynamic);
170
+ this.state = {
171
+ isAdding: false,
172
+ currentParameters: props.parameters || {},
173
+ visibleFields: initialFields,
174
+ selectedFields: this.getSelectedFields(initialFields),
175
+ selectOptions: this.getSelectOptions(initialFields)
176
+ };
177
+ }
178
+ render() {
179
+ const {
180
+ name,
181
+ field,
182
+ extensionManifest,
183
+ onFieldChange,
184
+ firstVisibleFieldName,
185
+ error,
186
+ formComponent: FormComponent
187
+ } = this.props;
188
+ const {
189
+ label,
190
+ options
191
+ } = field;
192
+ const {
193
+ selectedFields,
194
+ currentParameters,
195
+ visibleFields
196
+ } = this.state;
197
+ const children = this.renderActions();
198
+ return jsx(Fragment, null, error && jsx(FieldsetError, {
199
+ message: error
200
+ }), jsx("div", null, options.showTitle && jsx("h5", null, label), jsx(FormComponent, {
201
+ fields: selectedFields,
202
+ parentName: name,
203
+ extensionManifest: extensionManifest,
204
+ parameters: currentParameters,
205
+ canRemoveFields: field.options.isDynamic && visibleFields.size > 1,
206
+ onClickRemove: this.onClickRemove,
207
+ onFieldChange: onFieldChange,
208
+ firstVisibleFieldName: firstVisibleFieldName
209
+ }), children && jsx("div", {
210
+ css: actionsWrapperStyles,
211
+ "data-testId": "fieldset-actions"
212
+ }, children)));
213
+ }
214
+ }
215
+ function FieldsetError({
216
+ message
217
+ }) {
218
+ return jsx("div", {
219
+ css: sectionMessageWrapperStyles
220
+ }, jsx(SectionMessage, {
221
+ appearance: "error"
222
+ }, jsx("p", null, message)));
223
+ }
224
+ const sectionMessageWrapperStyles = css({
225
+ marginBottom: "var(--ds-space-300, 24px)"
226
+ });
227
+ export default injectIntl(FieldsetField);
@@ -0,0 +1,61 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import isNumber from 'is-number';
4
+ import { Field } from '@atlaskit/form';
5
+ import TextField from '@atlaskit/textfield';
6
+ import FieldMessages from '../FieldMessages';
7
+ import { ValidationError } from '../types';
8
+ import { validate } from '../utils';
9
+ export default function Number({
10
+ name,
11
+ field,
12
+ autoFocus,
13
+ onFieldChange,
14
+ placeholder
15
+ }) {
16
+ const {
17
+ label,
18
+ description,
19
+ defaultValue,
20
+ isRequired
21
+ } = field;
22
+ function validateNumber(value) {
23
+ const error = validate(field, value || '');
24
+ if (error) {
25
+ return error;
26
+ }
27
+ if (value === '') {
28
+ return;
29
+ }
30
+ if (isNumber(value)) {
31
+ return;
32
+ }
33
+ return ValidationError.Invalid;
34
+ }
35
+ return /*#__PURE__*/React.createElement(Field, {
36
+ name: name,
37
+ label: label,
38
+ defaultValue: defaultValue === undefined ? '' : String(defaultValue),
39
+ isRequired: isRequired,
40
+ validate: validateNumber,
41
+ testId: `config-panel-number-${name}`
42
+ }, ({
43
+ fieldProps,
44
+ error,
45
+ meta
46
+ }) => {
47
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TextField, _extends({}, fieldProps, {
48
+ autoFocus: autoFocus,
49
+ onBlur: () => {
50
+ fieldProps.onBlur();
51
+ onFieldChange(name, meta.dirty);
52
+ },
53
+ type: "text" // do not change this to type="number", it will return invalid strings as ''
54
+ ,
55
+ placeholder: placeholder
56
+ })), /*#__PURE__*/React.createElement(FieldMessages, {
57
+ error: error,
58
+ description: description
59
+ }));
60
+ });
61
+ }
@@ -0,0 +1,40 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { Fragment } from 'react';
3
+ import { Field } from '@atlaskit/form';
4
+ import { RadioGroup } from '@atlaskit/radio';
5
+ import FieldMessages from '../FieldMessages';
6
+ import { FieldTypeError } from '../types';
7
+ import { validate } from '../utils';
8
+ export default function RadioField({
9
+ name,
10
+ field,
11
+ onFieldChange
12
+ }) {
13
+ if (field.isMultiple) {
14
+ return /*#__PURE__*/React.createElement(FieldMessages, {
15
+ error: FieldTypeError.isMultipleAndRadio
16
+ });
17
+ }
18
+ return /*#__PURE__*/React.createElement(Field, {
19
+ name: name,
20
+ label: field.label,
21
+ defaultValue: field.defaultValue,
22
+ isRequired: field.isRequired,
23
+ validate: value => validate(field, value),
24
+ testId: `config-panel-radio-group-${field.name}`
25
+ }, ({
26
+ fieldProps,
27
+ error
28
+ }) => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(RadioGroup, _extends({}, fieldProps, {
29
+ options: (field.items || []).map(option => ({
30
+ ...option,
31
+ name: field.name
32
+ })),
33
+ onChange: value => {
34
+ fieldProps.onChange(value);
35
+ onFieldChange(field.name, true);
36
+ }
37
+ })), /*#__PURE__*/React.createElement(FieldMessages, {
38
+ error: error
39
+ })));
40
+ }
@@ -0,0 +1,50 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { Fragment } from 'react';
3
+ import { Field } from '@atlaskit/form';
4
+ import Select from '@atlaskit/select';
5
+ import FieldMessages from '../FieldMessages';
6
+ import { getOptionFromValue, validate } from '../utils';
7
+ import { formatOptionLabel } from './SelectItem';
8
+ export default function SelectField({
9
+ name,
10
+ field,
11
+ onFieldChange,
12
+ autoFocus,
13
+ placeholder,
14
+ fieldDefaultValue
15
+ }) {
16
+ //ignore arrays as mutli-value select fields are always clearable
17
+ const hasValidSingleDefaultValue = !Array.isArray(fieldDefaultValue) && fieldDefaultValue !== undefined;
18
+ const isClearable = !hasValidSingleDefaultValue || field.isMultiple;
19
+ return /*#__PURE__*/React.createElement(Field, {
20
+ name: name,
21
+ label: field.label,
22
+ defaultValue: getOptionFromValue(field.items, field.defaultValue),
23
+ testId: `config-panel-select-${name}`,
24
+ isRequired: field.isRequired,
25
+ validate: value => {
26
+ return validate(field, value);
27
+ }
28
+ }, ({
29
+ fieldProps,
30
+ error
31
+ }) => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Select, _extends({}, fieldProps, {
32
+ onChange: value => {
33
+ fieldProps.onChange(value);
34
+ onFieldChange(name, true);
35
+ }
36
+ // add type cast to avoid adding a "IsMulti" generic prop (TODO: ED-12072)
37
+ ,
38
+ isMulti: field.isMultiple || false,
39
+ options: field.items || [],
40
+ isClearable: isClearable,
41
+ validationState: error ? 'error' : 'default',
42
+ formatOptionLabel: formatOptionLabel,
43
+ autoFocus: autoFocus,
44
+ menuPlacement: "auto",
45
+ placeholder: placeholder
46
+ })), /*#__PURE__*/React.createElement(FieldMessages, {
47
+ error: error,
48
+ description: field.description
49
+ })));
50
+ }
@@ -0,0 +1,47 @@
1
+ /** @jsx jsx */
2
+ import { css, jsx } from '@emotion/react';
3
+ import Avatar from '@atlaskit/avatar';
4
+ const itemWrapperStyles = css({
5
+ display: 'flex',
6
+ alignItems: 'center',
7
+ // eslint-disable-next-line @atlaskit/design-system/no-nested-styles
8
+ small: {
9
+ margin: 0,
10
+ display: 'block',
11
+ color: 'currentColor'
12
+ }
13
+ });
14
+ const iconWrapperStyles = css({
15
+ lineHeight: 1
16
+ });
17
+ const iconWrapperMenuStyles = css({
18
+ alignSelf: 'flex-start',
19
+ marginTop: '3px'
20
+ });
21
+ const getIconSize = (context, description) => {
22
+ if (context === 'value' || !description) {
23
+ return 'xsmall';
24
+ }
25
+ return 'small';
26
+ };
27
+ export const formatOptionLabel = ({
28
+ label,
29
+ icon,
30
+ description
31
+ }, {
32
+ context
33
+ }) => {
34
+ return jsx("div", {
35
+ css: itemWrapperStyles
36
+ }, jsx("span", {
37
+ css: [iconWrapperStyles, context === 'menu' && iconWrapperMenuStyles]
38
+ }, typeof icon === 'string' ? jsx(Avatar, {
39
+ src: icon,
40
+ size: getIconSize(context, description),
41
+ appearance: "square"
42
+ }) : icon), jsx("div", {
43
+ style: {
44
+ paddingLeft: icon ? "var(--ds-space-100, 8px)" : 0
45
+ }
46
+ }, jsx("p", null, label, description && context !== 'value' && jsx("small", null, description))));
47
+ };