@wordpress/components 35.0.0 → 35.1.1-next.v.202606191442.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 (434) hide show
  1. package/CHANGELOG.md +47 -1
  2. package/build/alignment-matrix-control/cell.cjs +1 -1
  3. package/build/alignment-matrix-control/cell.cjs.map +2 -2
  4. package/build/alignment-matrix-control/index.cjs +1 -1
  5. package/build/alignment-matrix-control/index.cjs.map +2 -2
  6. package/build/angle-picker-control/angle-circle.cjs +1 -1
  7. package/build/angle-picker-control/angle-circle.cjs.map +2 -2
  8. package/build/angle-picker-control/index.cjs +2 -2
  9. package/build/autocomplete/get-autocomplete-match.cjs.map +1 -1
  10. package/build/autocomplete/index.cjs.map +1 -1
  11. package/build/base-control/styles/base-control-styles.cjs +6 -6
  12. package/build/base-control/styles/base-control-styles.cjs.map +2 -2
  13. package/build/border-control/styles.cjs +17 -14
  14. package/build/border-control/styles.cjs.map +2 -2
  15. package/build/button/index.cjs +3 -7
  16. package/build/button/index.cjs.map +2 -2
  17. package/build/card/card-divider/hook.cjs.map +2 -2
  18. package/build/color-palette/index.cjs +3 -0
  19. package/build/color-palette/index.cjs.map +2 -2
  20. package/build/color-picker/component.cjs.map +1 -1
  21. package/build/custom-gradient-picker/gradient-bar/index.cjs.map +2 -2
  22. package/build/date-time/utils.cjs.map +1 -1
  23. package/build/draggable/index.cjs +1 -1
  24. package/build/draggable/index.cjs.map +2 -2
  25. package/build/external-link/index.cjs +1 -1
  26. package/build/external-link/index.cjs.map +1 -1
  27. package/build/menu/popover.cjs.map +1 -1
  28. package/build/menu/styles.cjs +17 -17
  29. package/build/menu/styles.cjs.map +2 -2
  30. package/build/modal/index.cjs.map +1 -1
  31. package/build/modal/use-modal-exit-animation.cjs +37 -52
  32. package/build/modal/use-modal-exit-animation.cjs.map +2 -2
  33. package/build/navigable-container/container.cjs +15 -21
  34. package/build/navigable-container/container.cjs.map +2 -2
  35. package/build/palette-edit/index.cjs +1 -1
  36. package/build/progress-bar/index.cjs +1 -1
  37. package/build/progress-bar/index.cjs.map +2 -2
  38. package/build/query-controls/index.cjs +2 -2
  39. package/build/query-controls/index.cjs.map +2 -2
  40. package/build/range-control/index.cjs.map +1 -1
  41. package/build/sandbox/index.cjs +7 -1
  42. package/build/sandbox/index.cjs.map +2 -2
  43. package/build/snackbar/index.cjs +1 -1
  44. package/build/spinner/styles.cjs +4 -4
  45. package/build/spinner/styles.cjs.map +2 -2
  46. package/build/tabs/index.cjs +0 -18
  47. package/build/tabs/index.cjs.map +2 -2
  48. package/build/tabs/tablist.cjs +5 -15
  49. package/build/tabs/tablist.cjs.map +2 -2
  50. package/build/tools-panel/styles.cjs +13 -13
  51. package/build/tools-panel/styles.cjs.map +2 -2
  52. package/build/tools-panel/tools-panel/hook.cjs.map +1 -1
  53. package/build/tree-select/index.cjs +1 -1
  54. package/build/tree-select/index.cjs.map +1 -1
  55. package/build/truncate/utils.cjs +1 -1
  56. package/build/truncate/utils.cjs.map +1 -1
  57. package/build/unit-control/utils.cjs +33 -35
  58. package/build/unit-control/utils.cjs.map +2 -2
  59. package/build/utils/colors-values.cjs +12 -12
  60. package/build/utils/colors-values.cjs.map +2 -2
  61. package/build/utils/config-values.cjs +2 -2
  62. package/build/utils/config-values.cjs.map +2 -2
  63. package/build/utils/dropdown-motion.cjs.map +2 -2
  64. package/build/utils/strings.cjs.map +1 -1
  65. package/build-module/alignment-matrix-control/cell.mjs +1 -1
  66. package/build-module/alignment-matrix-control/cell.mjs.map +2 -2
  67. package/build-module/alignment-matrix-control/index.mjs +1 -1
  68. package/build-module/alignment-matrix-control/index.mjs.map +2 -2
  69. package/build-module/angle-picker-control/angle-circle.mjs +1 -1
  70. package/build-module/angle-picker-control/angle-circle.mjs.map +2 -2
  71. package/build-module/angle-picker-control/index.mjs +2 -2
  72. package/build-module/autocomplete/get-autocomplete-match.mjs.map +1 -1
  73. package/build-module/autocomplete/index.mjs.map +1 -1
  74. package/build-module/base-control/styles/base-control-styles.mjs +6 -6
  75. package/build-module/base-control/styles/base-control-styles.mjs.map +2 -2
  76. package/build-module/border-control/styles.mjs +17 -14
  77. package/build-module/border-control/styles.mjs.map +2 -2
  78. package/build-module/button/index.mjs +2 -5
  79. package/build-module/button/index.mjs.map +2 -2
  80. package/build-module/card/card-divider/hook.mjs.map +2 -2
  81. package/build-module/color-palette/index.mjs +3 -0
  82. package/build-module/color-palette/index.mjs.map +2 -2
  83. package/build-module/color-picker/component.mjs.map +1 -1
  84. package/build-module/custom-gradient-picker/gradient-bar/index.mjs.map +2 -2
  85. package/build-module/date-time/utils.mjs.map +1 -1
  86. package/build-module/draggable/index.mjs +1 -1
  87. package/build-module/draggable/index.mjs.map +2 -2
  88. package/build-module/external-link/index.mjs +1 -1
  89. package/build-module/external-link/index.mjs.map +1 -1
  90. package/build-module/menu/popover.mjs.map +1 -1
  91. package/build-module/menu/styles.mjs +17 -17
  92. package/build-module/menu/styles.mjs.map +2 -2
  93. package/build-module/modal/index.mjs.map +1 -1
  94. package/build-module/modal/use-modal-exit-animation.mjs +37 -52
  95. package/build-module/modal/use-modal-exit-animation.mjs.map +2 -2
  96. package/build-module/navigable-container/container.mjs +16 -22
  97. package/build-module/navigable-container/container.mjs.map +2 -2
  98. package/build-module/palette-edit/index.mjs +1 -1
  99. package/build-module/progress-bar/index.mjs +1 -1
  100. package/build-module/progress-bar/index.mjs.map +2 -2
  101. package/build-module/query-controls/index.mjs +2 -2
  102. package/build-module/query-controls/index.mjs.map +2 -2
  103. package/build-module/range-control/index.mjs.map +1 -1
  104. package/build-module/sandbox/index.mjs +3 -1
  105. package/build-module/sandbox/index.mjs.map +2 -2
  106. package/build-module/snackbar/index.mjs +1 -1
  107. package/build-module/spinner/styles.mjs +4 -4
  108. package/build-module/spinner/styles.mjs.map +2 -2
  109. package/build-module/tabs/index.mjs +1 -19
  110. package/build-module/tabs/index.mjs.map +2 -2
  111. package/build-module/tabs/tablist.mjs +5 -15
  112. package/build-module/tabs/tablist.mjs.map +2 -2
  113. package/build-module/tools-panel/styles.mjs +13 -13
  114. package/build-module/tools-panel/styles.mjs.map +2 -2
  115. package/build-module/tools-panel/tools-panel/hook.mjs.map +1 -1
  116. package/build-module/tree-select/index.mjs +1 -1
  117. package/build-module/tree-select/index.mjs.map +1 -1
  118. package/build-module/truncate/utils.mjs +1 -1
  119. package/build-module/truncate/utils.mjs.map +1 -1
  120. package/build-module/unit-control/utils.mjs +33 -35
  121. package/build-module/unit-control/utils.mjs.map +2 -2
  122. package/build-module/utils/colors-values.mjs +12 -12
  123. package/build-module/utils/colors-values.mjs.map +2 -2
  124. package/build-module/utils/config-values.mjs +2 -2
  125. package/build-module/utils/config-values.mjs.map +2 -2
  126. package/build-module/utils/dropdown-motion.mjs.map +2 -2
  127. package/build-module/utils/strings.mjs.map +1 -1
  128. package/build-style/style-rtl.css +122 -91
  129. package/build-style/style.css +122 -91
  130. package/build-types/base-control/styles/base-control-styles.d.ts.map +1 -1
  131. package/build-types/border-control/styles.d.ts.map +1 -1
  132. package/build-types/button/index.d.ts +0 -2
  133. package/build-types/button/index.d.ts.map +1 -1
  134. package/build-types/card/card-divider/hook.d.ts +1 -274
  135. package/build-types/card/card-divider/hook.d.ts.map +1 -1
  136. package/build-types/color-palette/index.d.ts.map +1 -1
  137. package/build-types/composite/stories/index.story.d.ts.map +1 -1
  138. package/build-types/confirm-dialog/stories/index.story.d.ts.map +1 -1
  139. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts.map +1 -1
  140. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  141. package/build-types/menu/styles.d.ts.map +1 -1
  142. package/build-types/menu/types.d.ts +2 -2
  143. package/build-types/navigable-container/container.d.ts.map +1 -1
  144. package/build-types/sandbox/index.d.ts +15 -0
  145. package/build-types/sandbox/index.d.ts.map +1 -1
  146. package/build-types/spinner/styles.d.ts.map +1 -1
  147. package/build-types/tabs/index.d.ts.map +1 -1
  148. package/build-types/tabs/tablist.d.ts.map +1 -1
  149. package/build-types/tools-panel/styles.d.ts.map +1 -1
  150. package/build-types/unit-control/utils.d.ts.map +1 -1
  151. package/build-types/utils/colors-values.d.ts.map +1 -1
  152. package/build-types/utils/dropdown-motion.d.ts.map +1 -1
  153. package/build-types/validated-form-controls/components/combobox-control.d.ts +1 -1
  154. package/package.json +44 -36
  155. package/src/angle-picker-control/angle-circle.tsx +3 -3
  156. package/src/base-control/README.md +2 -2
  157. package/src/base-control/styles/base-control-styles.ts +1 -0
  158. package/src/border-control/styles.ts +1 -0
  159. package/src/button/index.tsx +2 -4
  160. package/src/button/style.scss +3 -3
  161. package/src/card/card/README.md +4 -4
  162. package/src/card/card-divider/hook.ts +5 -1
  163. package/src/card/test/__snapshots__/index.tsx.snap +3 -3
  164. package/src/checkbox-control/README.md +1 -1
  165. package/src/clipboard-button/README.md +4 -4
  166. package/src/color-palette/index.tsx +5 -0
  167. package/src/color-palette/test/index.tsx +30 -0
  168. package/src/combobox-control/README.md +1 -1
  169. package/src/composite/stories/index.story.tsx +5 -0
  170. package/src/confirm-dialog/README.md +1 -1
  171. package/src/confirm-dialog/stories/index.story.tsx +1 -0
  172. package/src/custom-gradient-picker/gradient-bar/index.tsx +1 -1
  173. package/src/dropdown/stories/index.story.tsx +5 -0
  174. package/src/dropdown-menu/style.scss +1 -1
  175. package/src/external-link/style.scss +4 -4
  176. package/src/flex/flex/README.md +1 -1
  177. package/src/form-toggle/style.scss +1 -1
  178. package/src/heading/test/__snapshots__/index.tsx.snap +4 -4
  179. package/src/menu/README.md +2 -2
  180. package/src/menu/styles.ts +2 -0
  181. package/src/menu/test/index.tsx +120 -87
  182. package/src/menu/types.ts +2 -2
  183. package/src/modal/style.scss +1 -1
  184. package/src/modal/use-modal-exit-animation.ts +2 -2
  185. package/src/navigable-container/container.tsx +22 -30
  186. package/src/notice/style.scss +11 -13
  187. package/src/panel/README.md +2 -0
  188. package/src/panel/stories/index.story.tsx +2 -2
  189. package/src/panel/style.scss +1 -1
  190. package/src/popover/README.md +1 -1
  191. package/src/radio-control/style.scss +1 -1
  192. package/src/sandbox/index.tsx +18 -1
  193. package/src/sandbox/test/index.tsx +44 -1
  194. package/src/scrollable/README.md +1 -1
  195. package/src/spinner/styles.ts +1 -0
  196. package/src/tab-panel/style.scss +6 -6
  197. package/src/tabs/index.tsx +1 -26
  198. package/src/tabs/tablist.tsx +5 -21
  199. package/src/tabs/test/index.tsx +16 -27
  200. package/src/text/test/__snapshots__/index.tsx.snap +3 -3
  201. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +34 -26
  202. package/src/toolbar/toolbar-group/style.scss +2 -2
  203. package/src/tools-panel/styles.ts +1 -1
  204. package/src/tooltip/stories/index.story.tsx +2 -2
  205. package/src/tooltip/style.scss +1 -1
  206. package/src/unit-control/utils.ts +33 -52
  207. package/src/utils/colors-values.js +36 -16
  208. package/src/utils/config-values.js +2 -2
  209. package/src/utils/dropdown-motion.ts +6 -4
  210. package/src/utils/theme-variables.scss +18 -13
  211. package/build/mobile/image/constants.cjs +0 -34
  212. package/build/mobile/image/constants.cjs.map +0 -7
  213. package/build-module/mobile/image/constants.mjs +0 -9
  214. package/build-module/mobile/image/constants.mjs.map +0 -7
  215. package/build-types/mobile/image/constants.d.ts +0 -5
  216. package/build-types/mobile/image/constants.d.ts.map +0 -1
  217. package/src/autocomplete/autocompleter-ui.native.js +0 -211
  218. package/src/autocomplete/background-view.android.js +0 -25
  219. package/src/autocomplete/background-view.ios.js +0 -23
  220. package/src/autocomplete/style.android.scss +0 -7
  221. package/src/autocomplete/style.native.scss +0 -74
  222. package/src/base-control/index.native.js +0 -14
  223. package/src/button/index.native.js +0 -236
  224. package/src/button/style.native.scss +0 -9
  225. package/src/color-control/index.native.js +0 -24
  226. package/src/color-indicator/index.native.js +0 -80
  227. package/src/color-indicator/style.native.scss +0 -51
  228. package/src/color-palette/index.native.js +0 -360
  229. package/src/color-palette/style.native.scss +0 -49
  230. package/src/color-picker/hsv-color-picker.native.js +0 -88
  231. package/src/color-picker/hue-picker.native.js +0 -198
  232. package/src/color-picker/index.native.js +0 -215
  233. package/src/color-picker/saturation-picker.native.js +0 -167
  234. package/src/color-picker/style.native.scss +0 -87
  235. package/src/custom-gradient-picker/index.native.js +0 -110
  236. package/src/custom-gradient-picker/style.native.scss +0 -3
  237. package/src/dashicon/index.native.js +0 -18
  238. package/src/disabled/index.native.js +0 -10
  239. package/src/draggable/index.native.js +0 -234
  240. package/src/draggable/style.native.scss +0 -3
  241. package/src/draggable/test/index.native.js +0 -138
  242. package/src/dropdown/index.native.js +0 -59
  243. package/src/dropdown-menu/index.native.js +0 -152
  244. package/src/external-link/index.native.js +0 -25
  245. package/src/focal-point-picker/focal-point.native.js +0 -30
  246. package/src/focal-point-picker/index.native.js +0 -281
  247. package/src/focal-point-picker/tooltip/index.native.js +0 -144
  248. package/src/focal-point-picker/tooltip/style.native.scss +0 -42
  249. package/src/font-size-picker/index.native.js +0 -190
  250. package/src/font-size-picker/style.native.scss +0 -6
  251. package/src/footer-message-control/index.native.js +0 -14
  252. package/src/higher-order/with-focus-outside/index.native.js +0 -38
  253. package/src/index.native.js +0 -134
  254. package/src/keyboard-shortcuts/index.native.js +0 -2
  255. package/src/mobile/README.md +0 -3
  256. package/src/mobile/autocompletion-items.native.js +0 -11
  257. package/src/mobile/badge/README.md +0 -31
  258. package/src/mobile/badge/index.native.js +0 -27
  259. package/src/mobile/badge/style.scss +0 -18
  260. package/src/mobile/bottom-sheet/borderStyles.android.scss +0 -8
  261. package/src/mobile/bottom-sheet/borderStyles.ios.scss +0 -9
  262. package/src/mobile/bottom-sheet/bottom-sheet-context.native.js +0 -40
  263. package/src/mobile/bottom-sheet/bottom-sheet-navigation/README.md +0 -101
  264. package/src/mobile/bottom-sheet/bottom-sheet-navigation/bottom-sheet-navigation-context.native.js +0 -16
  265. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +0 -193
  266. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +0 -146
  267. package/src/mobile/bottom-sheet/bottom-sheet-navigation/styles.native.scss +0 -11
  268. package/src/mobile/bottom-sheet/bottom-sheet-navigation/test/navigation-container.native.js +0 -197
  269. package/src/mobile/bottom-sheet/button.native.js +0 -19
  270. package/src/mobile/bottom-sheet/cell.native.js +0 -464
  271. package/src/mobile/bottom-sheet/cellStyles.android.scss +0 -15
  272. package/src/mobile/bottom-sheet/cellStyles.ios.scss +0 -19
  273. package/src/mobile/bottom-sheet/chevron-back.native.js +0 -18
  274. package/src/mobile/bottom-sheet/color-cell.native.js +0 -35
  275. package/src/mobile/bottom-sheet/cycle-picker-cell.native.js +0 -31
  276. package/src/mobile/bottom-sheet/footer-message-cell.native.js +0 -23
  277. package/src/mobile/bottom-sheet/footer-message-link/README.md +0 -37
  278. package/src/mobile/bottom-sheet/footer-message-link/footer-message-link.native.js +0 -26
  279. package/src/mobile/bottom-sheet/footer-message-link/styles.native.scss +0 -7
  280. package/src/mobile/bottom-sheet/index.native.js +0 -646
  281. package/src/mobile/bottom-sheet/keyboard-avoiding-view.native.js +0 -125
  282. package/src/mobile/bottom-sheet/link-cell.native.js +0 -35
  283. package/src/mobile/bottom-sheet/link-suggestion-item-cell.native.js +0 -92
  284. package/src/mobile/bottom-sheet/link-suggestion-styles.native.scss +0 -27
  285. package/src/mobile/bottom-sheet/lock-icon/index.native.js +0 -19
  286. package/src/mobile/bottom-sheet/lock-icon/styles.native.scss +0 -8
  287. package/src/mobile/bottom-sheet/nav-bar/README.md +0 -63
  288. package/src/mobile/bottom-sheet/nav-bar/action-button.native.js +0 -30
  289. package/src/mobile/bottom-sheet/nav-bar/apply-button.native.js +0 -53
  290. package/src/mobile/bottom-sheet/nav-bar/back-button.native.js +0 -94
  291. package/src/mobile/bottom-sheet/nav-bar/heading.native.js +0 -33
  292. package/src/mobile/bottom-sheet/nav-bar/index.native.js +0 -23
  293. package/src/mobile/bottom-sheet/nav-bar/styles.native.scss +0 -69
  294. package/src/mobile/bottom-sheet/picker-cell.native.js +0 -40
  295. package/src/mobile/bottom-sheet/radio-cell.native.js +0 -39
  296. package/src/mobile/bottom-sheet/range-cell.native.js +0 -274
  297. package/src/mobile/bottom-sheet/range-cell.native.scss +0 -40
  298. package/src/mobile/bottom-sheet/range-text-input.native.js +0 -248
  299. package/src/mobile/bottom-sheet/ripple.native.js +0 -83
  300. package/src/mobile/bottom-sheet/ripple.native.scss +0 -11
  301. package/src/mobile/bottom-sheet/stepper-cell/index.native.js +0 -264
  302. package/src/mobile/bottom-sheet/stepper-cell/stepper.android.js +0 -78
  303. package/src/mobile/bottom-sheet/stepper-cell/stepper.ios.js +0 -64
  304. package/src/mobile/bottom-sheet/stepper-cell/style.native.scss +0 -89
  305. package/src/mobile/bottom-sheet/styles.native.scss +0 -333
  306. package/src/mobile/bottom-sheet/sub-sheet/README.md +0 -90
  307. package/src/mobile/bottom-sheet/sub-sheet/index.native.js +0 -49
  308. package/src/mobile/bottom-sheet/switch-cell.native.js +0 -75
  309. package/src/mobile/bottom-sheet/test/index.native.js +0 -24
  310. package/src/mobile/bottom-sheet/test/range-cell.native.js +0 -73
  311. package/src/mobile/bottom-sheet-select-control/README.md +0 -97
  312. package/src/mobile/bottom-sheet-select-control/index.native.js +0 -124
  313. package/src/mobile/bottom-sheet-select-control/style.native.scss +0 -3
  314. package/src/mobile/bottom-sheet-text-control/README.md +0 -98
  315. package/src/mobile/bottom-sheet-text-control/index.native.js +0 -104
  316. package/src/mobile/bottom-sheet-text-control/styles.scss +0 -25
  317. package/src/mobile/clipboard/index.native.js +0 -18
  318. package/src/mobile/color-settings/gradient-picker-screen.native.js +0 -37
  319. package/src/mobile/color-settings/index.native.js +0 -88
  320. package/src/mobile/color-settings/palette.screen.native.js +0 -232
  321. package/src/mobile/color-settings/picker-screen.native.js +0 -60
  322. package/src/mobile/color-settings/style.native.scss +0 -62
  323. package/src/mobile/color-settings/utils.native.js +0 -36
  324. package/src/mobile/cycle-select-control/README.md +0 -3
  325. package/src/mobile/cycle-select-control/index.native.js +0 -39
  326. package/src/mobile/dashicons/index.native.js +0 -22
  327. package/src/mobile/focal-point-settings-panel/index.native.js +0 -84
  328. package/src/mobile/focal-point-settings-panel/styles.native.scss +0 -3
  329. package/src/mobile/gradient/index.native.js +0 -188
  330. package/src/mobile/gradient/style.native.scss +0 -8
  331. package/src/mobile/gradient/test/index.native.js +0 -114
  332. package/src/mobile/gridicons/index.native.js +0 -39
  333. package/src/mobile/html-text-input/index.native.js +0 -169
  334. package/src/mobile/html-text-input/style.android.scss +0 -8
  335. package/src/mobile/html-text-input/style.ios.scss +0 -10
  336. package/src/mobile/html-text-input/style.scss +0 -45
  337. package/src/mobile/html-text-input/test/__snapshots__/index.native.js.snap +0 -48
  338. package/src/mobile/html-text-input/test/index.native.js +0 -118
  339. package/src/mobile/image/constants.js +0 -1
  340. package/src/mobile/image/icon-customize.native.js +0 -10
  341. package/src/mobile/image/icon-retry.native.js +0 -11
  342. package/src/mobile/image/image-editing-button.native.js +0 -63
  343. package/src/mobile/image/index.native.js +0 -401
  344. package/src/mobile/image/style.native.scss +0 -179
  345. package/src/mobile/image/utils/index.native.js +0 -58
  346. package/src/mobile/keyboard-avoiding-view/index.android.js +0 -8
  347. package/src/mobile/keyboard-avoiding-view/index.ios.js +0 -143
  348. package/src/mobile/keyboard-avoiding-view/styles.native.scss +0 -9
  349. package/src/mobile/keyboard-aware-flat-list/index.android.js +0 -81
  350. package/src/mobile/keyboard-aware-flat-list/index.ios.js +0 -147
  351. package/src/mobile/keyboard-aware-flat-list/shared.native.js +0 -26
  352. package/src/mobile/keyboard-aware-flat-list/styles.native.scss +0 -8
  353. package/src/mobile/keyboard-aware-flat-list/test/use-keyboard-offset.native.js +0 -203
  354. package/src/mobile/keyboard-aware-flat-list/test/use-scroll-to-section.native.js +0 -142
  355. package/src/mobile/keyboard-aware-flat-list/test/use-scroll.native.js +0 -71
  356. package/src/mobile/keyboard-aware-flat-list/test/use-text-input-caret-position.native.js +0 -82
  357. package/src/mobile/keyboard-aware-flat-list/test/use-text-input-offset.native.js +0 -147
  358. package/src/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +0 -87
  359. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +0 -41
  360. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js +0 -100
  361. package/src/mobile/keyboard-aware-flat-list/use-scroll.native.js +0 -100
  362. package/src/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +0 -36
  363. package/src/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +0 -54
  364. package/src/mobile/layout-animation/index.native.js +0 -16
  365. package/src/mobile/link-picker/index.native.js +0 -160
  366. package/src/mobile/link-picker/link-picker-results.native.js +0 -129
  367. package/src/mobile/link-picker/link-picker-screen.native.js +0 -60
  368. package/src/mobile/link-picker/styles.native.scss +0 -45
  369. package/src/mobile/link-picker/test/performance/index.native.js +0 -35
  370. package/src/mobile/link-settings/index.native.js +0 -332
  371. package/src/mobile/link-settings/link-rel.native.js +0 -10
  372. package/src/mobile/link-settings/link-settings-navigation.native.js +0 -50
  373. package/src/mobile/link-settings/link-settings-screen.native.js +0 -44
  374. package/src/mobile/link-settings/style.native.scss +0 -4
  375. package/src/mobile/link-settings/test/edit.native.js +0 -325
  376. package/src/mobile/link-settings/test/link-settings-navigation.native.js +0 -94
  377. package/src/mobile/media-edit/index.native.js +0 -125
  378. package/src/mobile/picker/index.android.js +0 -104
  379. package/src/mobile/picker/index.ios.js +0 -96
  380. package/src/mobile/picker/styles.native.scss +0 -29
  381. package/src/mobile/segmented-control/index.native.js +0 -186
  382. package/src/mobile/segmented-control/style.native.scss +0 -99
  383. package/src/mobile/utils/alignments.native.js +0 -78
  384. package/src/mobile/utils/get-px-from-css-unit.native.js +0 -329
  385. package/src/mobile/utils/index.native.js +0 -12
  386. package/src/mobile/utils/test/get-px-from-css-unit.native.js +0 -172
  387. package/src/mobile/utils/test/index.native.js +0 -134
  388. package/src/mobile/utils/use-is-floating-keyboard.native.js +0 -31
  389. package/src/mobile/utils/use-unit-converter-to-mobile.native.js +0 -90
  390. package/src/notice/index.native.js +0 -123
  391. package/src/notice/list.native.js +0 -55
  392. package/src/notice/style.native.scss +0 -60
  393. package/src/panel/actions.native.js +0 -46
  394. package/src/panel/actions.native.scss +0 -12
  395. package/src/panel/body.native.js +0 -29
  396. package/src/panel/body.native.scss +0 -11
  397. package/src/panel/bottom-separator-cover.native.js +0 -27
  398. package/src/panel/bottom-separator-cover.native.scss +0 -9
  399. package/src/private-apis.native.js +0 -13
  400. package/src/query-controls/index.native.js +0 -103
  401. package/src/radio-control/index.native.js +0 -24
  402. package/src/range-control/index.native.js +0 -73
  403. package/src/resizable-box/index.native.js +0 -32
  404. package/src/resizable-box/style.native.scss +0 -14
  405. package/src/sandbox/index.native.js +0 -392
  406. package/src/sandbox/style.native.scss +0 -7
  407. package/src/search-control/index.native.js +0 -274
  408. package/src/search-control/platform-style.android.scss +0 -57
  409. package/src/search-control/platform-style.ios.scss +0 -43
  410. package/src/search-control/style.native.scss +0 -63
  411. package/src/select-control/index.native.js +0 -41
  412. package/src/slot-fill/index.native.js +0 -25
  413. package/src/spinner/index.native.js +0 -22
  414. package/src/spinner/style.native.scss +0 -4
  415. package/src/style-provider/index.native.js +0 -3
  416. package/src/text/index.native.js +0 -13
  417. package/src/text/styles/emotion-css.native.js +0 -6
  418. package/src/text/styles/font-family.native.js +0 -1
  419. package/src/text/styles/text-mixins.native.js +0 -163
  420. package/src/text-control/index.native.js +0 -41
  421. package/src/textarea-control/index.native.js +0 -26
  422. package/src/toggle-control/index.native.js +0 -31
  423. package/src/toolbar/toolbar/style.native.scss +0 -11
  424. package/src/toolbar/toolbar/toolbar-container.native.js +0 -8
  425. package/src/toolbar/toolbar-button/toolbar-button-container.native.js +0 -8
  426. package/src/toolbar/toolbar-group/style.native.scss +0 -10
  427. package/src/toolbar/toolbar-group/toolbar-group-collapsed.native.js +0 -36
  428. package/src/toolbar/toolbar-group/toolbar-group-container.native.js +0 -26
  429. package/src/toolbar/toolbar-item/index.native.js +0 -17
  430. package/src/tooltip/index.native.js +0 -292
  431. package/src/tooltip/style.native.scss +0 -39
  432. package/src/tooltip/test/index.native.js +0 -98
  433. package/src/unit-control/index.native.js +0 -202
  434. package/src/unit-control/style.native.scss +0 -19
@@ -1,4 +0,0 @@
1
- .linkSettingsPanel {
2
- padding-left: 0;
3
- padding-right: 0;
4
- }
@@ -1,325 +0,0 @@
1
- // noinspection DuplicatedCode
2
-
3
- /**
4
- * External dependencies
5
- */
6
- import Clipboard from '@react-native-clipboard/clipboard';
7
- import {
8
- fireEvent,
9
- initializeEditor,
10
- waitForElementToBeRemoved,
11
- } from 'test/helpers';
12
- /**
13
- * WordPress dependencies
14
- */
15
- import { registerCoreBlocks } from '@wordpress/block-library';
16
- import { getBlockTypes, unregisterBlockType } from '@wordpress/blocks';
17
- import { __ } from '@wordpress/i18n';
18
-
19
- // Mock debounce to prevent potentially belated state updates.
20
- jest.mock( '@wordpress/compose/src/utils/debounce', () => ( {
21
- debounce: ( fn ) => {
22
- fn.cancel = jest.fn();
23
- return fn;
24
- },
25
- } ) );
26
- // Mock link suggestions that are fetched by the link picker
27
- // when typing a search query.
28
- jest.mock( '@wordpress/core-data/src/fetch', () => ( {
29
- __experimentalFetchLinkSuggestions: jest.fn().mockResolvedValue( [ {} ] ),
30
- } ) );
31
-
32
- /**
33
- * Utility function to unregister all core block types previously registered
34
- * when staging the Redux Store `beforeAll` integration tests start running.
35
- *
36
- * This should probably be extracted into a utility module for future tests.
37
- */
38
- const unregisterBlocks = () => {
39
- const blocks = getBlockTypes();
40
-
41
- blocks.forEach( ( { name } ) => unregisterBlockType( name ) );
42
- };
43
-
44
- /**
45
- * ### TODO
46
- * + Try to figure out why I can't `console.log(JSON.stringify(subject.toJSON()))` anymore.
47
- */
48
- describe.each( [
49
- [
50
- {
51
- type: 'core/button',
52
- initialHtml: `
53
- <!-- wp:button {"style":{"border":{"radius":"5px"}}} -->
54
- <div class="wp-block-button"><a class="wp-block-button__link wp-element-button" style="border-radius:5px">Link</a></div>
55
- <!-- /wp:button -->
56
- `,
57
- toJSON: () => 'core/button',
58
- },
59
- ],
60
- [
61
- {
62
- type: 'core/image',
63
- initialHtml: `
64
- <!-- wp:image {"id":20,"sizeSlug":"large","linkDestination":"custom"} -->
65
- <figure class="wp-block-image size-large">
66
- <img class="wp-image-20" src="https://tonytahmouchtest.files.wordpress.com/2021/10/img_0111-2.jpg?w=1024" alt="" />
67
- </figure>
68
- <!-- /wp:image -->
69
- `,
70
- toJSON: () => 'core/image',
71
- },
72
- ],
73
- ] )( '<LinkSettings/> from %j', ( { type, initialHtml } ) => {
74
- beforeAll( () => {
75
- registerCoreBlocks();
76
- } );
77
-
78
- afterAll( () => {
79
- unregisterBlocks();
80
- } );
81
-
82
- /**
83
- * GIVEN an EDITOR is displayed with an EDIT IMAGE BLOCK or EDIT BUTTON BLOCK;
84
- * GIVEN the CLIPBOARD has a URL copied;
85
- * WHEN the USER selects the SETTINGS BUTTON on the EDIT IMAGE BLOCK or EDIT BUTTON BLOCK;
86
- */
87
- it( 'should display the LINK SETTINGS with an EMPTY LINK TO field.', async () => {
88
- // Arrange.
89
- const url = 'https://tonytahmouchtest.files.wordpress.com';
90
- const subject = await initializeEditor( { initialHtml } );
91
- Clipboard.getString.mockReturnValue( url );
92
-
93
- // Act.
94
- const [ block ] = await subject.findAllByLabelText(
95
- type === 'core/image' ? /Image Block/ : /Button Block/
96
- );
97
- fireEvent.press( block );
98
- fireEvent.press( block );
99
- fireEvent.press( await subject.findByLabelText( 'Open Settings' ) );
100
-
101
- // Assert.
102
- const linkToField = await subject.findByLabelText(
103
- `Link to, ${
104
- type === 'core/image' ? 'None' : 'Search or type URL'
105
- }`
106
- );
107
- expect( linkToField ).toBeTruthy();
108
- } );
109
-
110
- describe( '<LinkPicker/>', () => {
111
- describe( 'Hide Clipboard Link Suggestion - Invalid URL in Clipboard', () => {
112
- /**
113
- * GIVEN a SETTINGS BOTTOM SHEET is displayed;
114
- * GIVEN the CLIPBOARD has a NON-URL copied;
115
- * GIVEN the STATE has NO URL;
116
- * WHEN the USER selects the LINK TO cell;
117
- */
118
- it( 'should display the LINK PICKER with NO FROM CLIPBOARD CELL.', async () => {
119
- // Arrange.
120
- const url = 'tonytahmouchtest.files.wordpress.com';
121
- const subject = await initializeEditor( { initialHtml } );
122
- Clipboard.getString.mockReturnValue( url );
123
-
124
- // Act.
125
- const [ block ] = await subject.findAllByLabelText(
126
- type === 'core/image' ? /Image Block/ : /Button Block/
127
- );
128
- fireEvent.press( block );
129
- fireEvent.press( block );
130
- fireEvent.press( subject.getByLabelText( 'Open Settings' ) );
131
- fireEvent.press(
132
- subject.getByLabelText(
133
- `Link to, ${
134
- type === 'core/image'
135
- ? 'None'
136
- : 'Search or type URL'
137
- }`
138
- )
139
- );
140
- if ( type === 'core/image' ) {
141
- fireEvent.press( subject.getByLabelText( /Custom URL/ ) );
142
- }
143
- await subject.findByLabelText( 'Apply' );
144
-
145
- // Assert.
146
- expect(
147
- subject.queryByLabelText( /Copy URL from the clipboard[,]/ )
148
- ).toBeNull();
149
- } );
150
- } );
151
-
152
- describe( 'Hide Clipboard Link Suggestion - Valid and Same URL in Clipboard', () => {
153
- /**
154
- * GIVEN a SETTINGS BOTTOM SHEET is displayed;
155
- * GIVEN the CLIPBOARD has a URL copied;
156
- * GIVEN the STATE has the SAME URL as the CLIPBOARD;
157
- * WHEN the USER selects the LINK TO cell;
158
- */
159
- it( 'should display the LINK PICKER with NO FROM CLIPBOARD CELL.', async () => {
160
- // Arrange.
161
- const url = 'https://tonytahmouchtest.files.wordpress.com';
162
- const subject = await initializeEditor( { initialHtml } );
163
- Clipboard.getString.mockReturnValue( url );
164
-
165
- // Act.
166
- const [ block ] = await subject.findAllByLabelText(
167
- type === 'core/image' ? /Image Block/ : /Button Block/
168
- );
169
- fireEvent.press( block );
170
- fireEvent.press( block );
171
- fireEvent.press( subject.getByLabelText( 'Open Settings' ) );
172
- fireEvent.press(
173
- subject.getByLabelText(
174
- `Link to, ${
175
- type === 'core/image'
176
- ? 'None'
177
- : 'Search or type URL'
178
- }`
179
- )
180
- );
181
- if ( type === 'core/image' ) {
182
- fireEvent.press(
183
- subject.getByLabelText( 'Custom URL. Empty' )
184
- );
185
- }
186
- fireEvent.press(
187
- await subject.findByLabelText(
188
- `Copy URL from the clipboard, ${ url }`
189
- )
190
- );
191
- fireEvent.press(
192
- await subject.findByLabelText(
193
- `Link to, ${
194
- type === 'core/image' ? 'Custom URL' : url
195
- }`
196
- )
197
- );
198
-
199
- if ( type === 'core/image' ) {
200
- fireEvent.press(
201
- subject.getByLabelText( `Custom URL, ${ url }` )
202
- );
203
- }
204
- await waitForElementToBeRemoved( () =>
205
- subject.getByTestId( 'link-picker-loading' )
206
- );
207
- await subject.findByLabelText( 'Apply' );
208
-
209
- // Assert.
210
- expect(
211
- subject.queryByLabelText( /Copy URL from the clipboard[,]/ )
212
- ).toBeNull();
213
- } );
214
- } );
215
-
216
- describe( 'Show Clipboard Link Suggestion - Valid and Different URL in Clipboard', () => {
217
- /**
218
- * GIVEN a SETTINGS BOTTOM SHEET is displayed;
219
- * GIVEN the CLIPBOARD has a URL copied;
220
- * GIVEN the STATE has NO URL;
221
- * WHEN the USER selects the LINK TO cell;
222
- */
223
- it(
224
- 'should display the LINK PICKER with the FROM CLIPBOARD CELL populated' +
225
- ' with the URL from the CLIPBOARD.',
226
- async () => {
227
- // Arrange.
228
- const url = 'https://tonytahmouchtest.files.wordpress.com';
229
- const subject = await initializeEditor( { initialHtml } );
230
- Clipboard.getString.mockReturnValue( url );
231
-
232
- // Act.
233
- const [ block ] = await subject.findAllByLabelText(
234
- type === 'core/image' ? /Image Block/ : /Button Block/
235
- );
236
- fireEvent.press( block );
237
- fireEvent.press( block );
238
- fireEvent.press(
239
- subject.getByLabelText( 'Open Settings' )
240
- );
241
- fireEvent.press(
242
- subject.getByLabelText(
243
- `Link to, ${
244
- type === 'core/image'
245
- ? 'None'
246
- : 'Search or type URL'
247
- }`
248
- )
249
- );
250
- if ( type === 'core/image' ) {
251
- fireEvent.press(
252
- subject.getByLabelText( /Custom URL/ )
253
- );
254
- }
255
- await subject.findByLabelText(
256
- `Copy URL from the clipboard, ${ url }`
257
- );
258
-
259
- // Assert.
260
- const clipboardUrl = await subject.findByText( url );
261
- expect( clipboardUrl ).toBeTruthy();
262
- const clipboardNote = await subject.findByText(
263
- __( 'From clipboard' )
264
- );
265
- expect( clipboardNote ).toBeTruthy();
266
- }
267
- );
268
- } );
269
-
270
- describe( 'Press Clipboard Link Suggestion', () => {
271
- /**
272
- * GIVEN a LINK PICKER SHEET is displayed;
273
- * GIVEN the FROM CLIPBOARD CELL is displayed;
274
- * WHEN the FROM CLIPBOARD CELL is pressed;
275
- */
276
- it(
277
- 'should display the LINK SETTINGS with the URL from the CLIPBOARD' +
278
- ' populated in the LINK TO field.',
279
- async () => {
280
- // Arrange.
281
- const url = 'https://tonytahmouchtest.files.wordpress.com';
282
- const subject = await initializeEditor( { initialHtml } );
283
- Clipboard.getString.mockReturnValue( url );
284
-
285
- // Act.
286
- const [ block ] = await subject.findAllByLabelText(
287
- type === 'core/image' ? /Image Block/ : /Button Block/
288
- );
289
- fireEvent.press( block );
290
- fireEvent.press( block );
291
- fireEvent.press(
292
- subject.getByLabelText( 'Open Settings' )
293
- );
294
- fireEvent.press(
295
- subject.getByLabelText(
296
- `Link to, ${
297
- type === 'core/image'
298
- ? 'None'
299
- : 'Search or type URL'
300
- }`
301
- )
302
- );
303
- if ( type === 'core/image' ) {
304
- fireEvent.press(
305
- subject.getByLabelText( /Custom URL/ )
306
- );
307
- }
308
- fireEvent.press(
309
- await subject.findByLabelText(
310
- `Copy URL from the clipboard, ${ url }`
311
- )
312
- );
313
-
314
- // Assert.
315
- const linkToField = await subject.findByLabelText(
316
- `Link to, ${
317
- type === 'core/image' ? 'Custom URL' : url
318
- }`
319
- );
320
- expect( linkToField ).toBeTruthy();
321
- }
322
- );
323
- } );
324
- } );
325
- } );
@@ -1,94 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { Keyboard, Platform } from 'react-native';
5
- import { render, fireEvent } from 'test/helpers';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import LinkSettingsNavigation from '../link-settings-navigation';
11
-
12
- beforeAll( () => {
13
- jest.useFakeTimers( { legacyFakeTimers: true } );
14
- } );
15
-
16
- afterAll( () => {
17
- jest.runOnlyPendingTimers();
18
- jest.useRealTimers();
19
- } );
20
-
21
- jest.spyOn( Keyboard, 'dismiss' );
22
-
23
- const subject = (
24
- <LinkSettingsNavigation
25
- setAttributes={ () => {} }
26
- hasPicker
27
- options={ {
28
- url: {
29
- label: 'Link URL',
30
- placeholder: 'Add URL',
31
- autoFocus: false,
32
- },
33
- } }
34
- isVisible
35
- withBottomSheet
36
- />
37
- );
38
-
39
- describe( 'Android', () => {
40
- it( 'improves back animation performance by dismissing keyboard beforehand', async () => {
41
- const screen = render( subject );
42
- fireEvent.press( screen.getByText( 'Link to' ) );
43
- // Await back button to allow async state updates to complete
44
- const backButton = await screen.findByLabelText( 'Go back' );
45
- Keyboard.dismiss.mockClear();
46
- fireEvent.press( backButton );
47
-
48
- expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 );
49
- } );
50
-
51
- it( 'improves apply animation performance by dismissing keyboard beforehand', async () => {
52
- const screen = render( subject );
53
- fireEvent.press( screen.getByText( 'Link to' ) );
54
- // Await back button to allow async state updates to complete
55
- const backButton = await screen.findByLabelText( 'Apply' );
56
- Keyboard.dismiss.mockClear();
57
- fireEvent.press( backButton );
58
-
59
- expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 );
60
- } );
61
- } );
62
-
63
- describe( 'iOS', () => {
64
- const originalPlatform = Platform.OS;
65
- beforeAll( () => {
66
- Platform.OS = 'ios';
67
- } );
68
-
69
- afterAll( () => {
70
- Platform.OS = originalPlatform;
71
- } );
72
-
73
- it( 'improves back animation performance by dismissing keyboard beforehand', async () => {
74
- const screen = render( subject );
75
- fireEvent.press( screen.getByText( 'Link to' ) );
76
- // Await back button to allow async state updates to complete
77
- const backButton = await screen.findByLabelText( 'Go back' );
78
- Keyboard.dismiss.mockClear();
79
- fireEvent.press( backButton );
80
-
81
- expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 );
82
- } );
83
-
84
- it( 'improves apply animation performance by dismissing keyboard beforehand', async () => {
85
- const screen = render( subject );
86
- fireEvent.press( screen.getByText( 'Link to' ) );
87
- // Await back button to allow async state updates to complete
88
- const backButton = await screen.findByLabelText( 'Apply' );
89
- Keyboard.dismiss.mockClear();
90
- fireEvent.press( backButton );
91
-
92
- expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 );
93
- } );
94
- } );
@@ -1,125 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { Component } from '@wordpress/element';
5
- import { __ } from '@wordpress/i18n';
6
- import {
7
- requestMediaEditor,
8
- mediaSources,
9
- } from '@wordpress/react-native-bridge';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import Picker from '../picker';
15
-
16
- export const MEDIA_TYPE_IMAGE = 'image';
17
-
18
- export const MEDIA_EDITOR = 'MEDIA_EDITOR';
19
-
20
- const editOption = {
21
- id: MEDIA_EDITOR,
22
- value: MEDIA_EDITOR,
23
- label: __( 'Edit' ),
24
- requiresModal: true,
25
- types: [ MEDIA_TYPE_IMAGE ],
26
- };
27
-
28
- const replaceOption = {
29
- id: mediaSources.deviceLibrary,
30
- value: mediaSources.deviceLibrary,
31
- label: __( 'Replace' ),
32
- types: [ MEDIA_TYPE_IMAGE ],
33
- };
34
-
35
- export class MediaEdit extends Component {
36
- constructor( props ) {
37
- super( props );
38
- this.onPickerPresent = this.onPickerPresent.bind( this );
39
- this.onPickerSelect = this.onPickerSelect.bind( this );
40
- this.getMediaOptionsItems = this.getMediaOptionsItems.bind( this );
41
- this.getDestructiveButtonIndex =
42
- this.getDestructiveButtonIndex.bind( this );
43
- }
44
-
45
- getMediaOptionsItems() {
46
- const { pickerOptions, openReplaceMediaOptions, source } = this.props;
47
-
48
- return [
49
- source?.uri && editOption,
50
- openReplaceMediaOptions && replaceOption,
51
- ...( pickerOptions ? pickerOptions : [] ),
52
- ].filter( Boolean );
53
- }
54
-
55
- getDestructiveButtonIndex() {
56
- const options = this.getMediaOptionsItems();
57
- const destructiveButtonIndex = options.findIndex(
58
- ( option ) => option?.destructiveButton
59
- );
60
-
61
- return destructiveButtonIndex !== -1
62
- ? destructiveButtonIndex + 1
63
- : undefined;
64
- }
65
-
66
- onPickerPresent() {
67
- if ( this.picker ) {
68
- this.picker.presentPicker();
69
- }
70
- }
71
-
72
- onPickerSelect( value ) {
73
- const {
74
- onSelect,
75
- pickerOptions,
76
- multiple = false,
77
- openReplaceMediaOptions,
78
- } = this.props;
79
-
80
- switch ( value ) {
81
- case MEDIA_EDITOR:
82
- requestMediaEditor( this.props.source.uri, ( media ) => {
83
- if ( ( multiple && media ) || ( media && media.id ) ) {
84
- onSelect( media );
85
- }
86
- } );
87
- break;
88
- default:
89
- const optionSelected =
90
- pickerOptions &&
91
- pickerOptions.find( ( option ) => option.id === value );
92
-
93
- if ( optionSelected && optionSelected.onPress ) {
94
- optionSelected.onPress();
95
- return;
96
- }
97
-
98
- if ( openReplaceMediaOptions ) {
99
- openReplaceMediaOptions();
100
- }
101
- }
102
- }
103
-
104
- render() {
105
- const mediaOptions = () => (
106
- <Picker
107
- hideCancelButton
108
- ref={ ( instance ) => ( this.picker = instance ) }
109
- options={ this.getMediaOptionsItems() }
110
- leftAlign
111
- onChange={ this.onPickerSelect }
112
- // translators: %s: block title e.g: "Paragraph".
113
- title={ __( 'Media options' ) }
114
- destructiveButtonIndex={ this.getDestructiveButtonIndex() }
115
- />
116
- );
117
-
118
- return this.props.render( {
119
- open: this.onPickerPresent,
120
- mediaOptions,
121
- } );
122
- }
123
- }
124
-
125
- export default MediaEdit;
@@ -1,104 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { View } from 'react-native';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { __ } from '@wordpress/i18n';
10
- import { Component, Fragment } from '@wordpress/element';
11
- import { usePreferredColorSchemeStyle } from '@wordpress/compose';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import BottomSheet from '../bottom-sheet';
17
- import styles from './styles.scss';
18
- import PanelBody from '../../panel/body';
19
- import TextControl from '../../text-control';
20
-
21
- function Separator() {
22
- const separatorStyle = usePreferredColorSchemeStyle(
23
- styles[ 'components-picker__separator' ],
24
- styles[ 'components-picker__separator--dark' ]
25
- );
26
-
27
- return <View style={ separatorStyle } />;
28
- }
29
-
30
- export default class Picker extends Component {
31
- constructor() {
32
- super( ...arguments );
33
- this.onClose = this.onClose.bind( this );
34
- this.onCellPress = this.onCellPress.bind( this );
35
-
36
- this.state = {
37
- isVisible: false,
38
- };
39
- }
40
-
41
- presentPicker() {
42
- this.setState( { isVisible: true } );
43
- }
44
-
45
- onClose() {
46
- this.setState( { isVisible: false } );
47
- }
48
-
49
- onCellPress( value ) {
50
- const { onChange } = this.props;
51
- onChange( value );
52
- this.onClose();
53
- }
54
-
55
- getOptions() {
56
- const { options, leftAlign } = this.props;
57
-
58
- return options.map( ( option ) => (
59
- <Fragment key={ `${ option.label }-${ option.value }` }>
60
- { options.length > 1 && option.separated && <Separator /> }
61
- <BottomSheet.Cell
62
- icon={ option.icon }
63
- leftAlign={ leftAlign }
64
- label={ option.label }
65
- separatorType="none"
66
- onPress={ () => this.onCellPress( option.value ) }
67
- disabled={ option.disabled }
68
- style={
69
- option.disabled &&
70
- styles[ 'components-picker__button--disabled' ]
71
- }
72
- />
73
- </Fragment>
74
- ) );
75
- }
76
-
77
- render() {
78
- const { hideCancelButton, title, testID } = this.props;
79
- const { isVisible } = this.state;
80
-
81
- return (
82
- <BottomSheet
83
- isVisible={ isVisible }
84
- onClose={ this.onClose }
85
- hideHeader
86
- testID={ testID }
87
- >
88
- <PanelBody
89
- title={ title }
90
- style={ styles[ 'components-picker__panel' ] }
91
- >
92
- { this.getOptions() }
93
- { ! hideCancelButton && (
94
- <TextControl
95
- label={ __( 'Cancel' ) }
96
- onPress={ this.onClose }
97
- separatorType="none"
98
- />
99
- ) }
100
- </PanelBody>
101
- </BottomSheet>
102
- );
103
- }
104
- }