newspack-components 2.2.1 → 3.0.0-alpha.2

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 (308) hide show
  1. package/babel.config.js +25 -0
  2. package/copy-styles.js +2 -10
  3. package/dist/{cjs/accordion → accordion}/index.js +17 -13
  4. package/dist/{cjs/accordion → accordion}/style.scss +7 -3
  5. package/dist/{cjs/action-card → action-card}/index.js +39 -43
  6. package/dist/{esm/action-card → action-card}/style.scss +9 -9
  7. package/dist/{cjs/autocomplete-tokenfield → autocomplete-tokenfield}/index.js +67 -29
  8. package/dist/{esm/autocomplete-tokenfield → autocomplete-tokenfield}/style.scss +14 -8
  9. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/index.js +61 -73
  10. package/dist/{esm/autocomplete-with-suggestions → autocomplete-with-suggestions}/style.scss +9 -17
  11. package/dist/button/index.js +51 -0
  12. package/{src/button/index.js → dist/button/index.tsx} +12 -5
  13. package/dist/{cjs/button → button}/style.scss +1 -1
  14. package/dist/{cjs/button-card → button-card}/index.js +9 -10
  15. package/dist/{cjs/button-card → button-card}/style.scss +19 -13
  16. package/dist/{cjs/card → card}/index.js +4 -5
  17. package/dist/{esm/card → card}/style.scss +1 -1
  18. package/dist/{cjs/category-autocomplete → category-autocomplete}/index.js +51 -53
  19. package/dist/{esm/category-autocomplete → category-autocomplete}/style.scss +2 -2
  20. package/dist/{cjs/color-picker → color-picker}/index.js +14 -16
  21. package/dist/{cjs/color-picker → color-picker}/style.scss +3 -3
  22. package/dist/consts.js +7 -0
  23. package/dist/{cjs/custom-select-control → custom-select-control}/index.js +4 -5
  24. package/dist/{cjs/custom-select-control → custom-select-control}/style.scss +11 -10
  25. package/dist/{cjs/date-range-picker → date-range-picker}/index.js +9 -11
  26. package/dist/{cjs/date-range-picker → date-range-picker}/style.scss +6 -6
  27. package/dist/{cjs/footer → footer}/index.js +33 -36
  28. package/dist/{cjs/footer → footer}/style.scss +1 -1
  29. package/dist/{cjs/form-token-field → form-token-field}/index.js +6 -7
  30. package/dist/{esm/form-token-field → form-token-field}/style.scss +1 -1
  31. package/dist/{cjs/global-notices → global-notices}/index.js +4 -5
  32. package/dist/grid/index.js +44 -0
  33. package/dist/grid/index.tsx +34 -0
  34. package/dist/{cjs/grid → grid}/style.scss +9 -9
  35. package/dist/{cjs/handoff → handoff}/index.js +73 -71
  36. package/dist/{cjs/handoff-message → handoff-message}/index.js +5 -3
  37. package/dist/hooks/index.js +29 -0
  38. package/{src/hooks/index.js → dist/hooks/index.ts} +1 -1
  39. package/dist/{cjs/hooks → hooks}/useObjectState.js +2 -3
  40. package/dist/{cjs/hooks → hooks}/useObjectState.test.js +9 -9
  41. package/dist/{cjs/hooks → hooks}/useOnClickOutside.js +1 -2
  42. package/dist/hooks/usePrompt.js +47 -0
  43. package/{src/hooks/usePrompt.js → dist/hooks/usePrompt.ts} +4 -8
  44. package/dist/image-upload/index.js +148 -0
  45. package/dist/{cjs/image-upload → image-upload}/index.test.js +13 -6
  46. package/dist/{esm/image-upload → image-upload}/style.scss +5 -5
  47. package/dist/{cjs/index.js → index.js} +1 -1
  48. package/dist/{cjs/info-button → info-button}/index.js +6 -7
  49. package/dist/{cjs/modal → modal}/index.js +4 -5
  50. package/dist/{esm/modal → modal}/style.scss +5 -5
  51. package/dist/{cjs/newspack-icon → newspack-icon}/index.js +5 -6
  52. package/dist/{cjs/newspack-icon → newspack-icon}/style.scss +1 -1
  53. package/dist/{cjs/newspack-logo → newspack-logo}/index.js +5 -6
  54. package/dist/{cjs/newspack-logo → newspack-logo}/style.scss +1 -1
  55. package/dist/{cjs/notice → notice}/index.js +12 -10
  56. package/dist/{cjs/notice → notice}/style.scss +11 -11
  57. package/dist/patrons-logo/index.js +77 -0
  58. package/dist/plugin-installer/index.js +297 -0
  59. package/dist/{cjs/plugin-installer → plugin-installer}/style.scss +1 -1
  60. package/dist/{cjs/plugin-settings → plugin-settings}/SettingsSection.js +13 -13
  61. package/dist/plugin-settings/index.js +228 -0
  62. package/dist/{cjs/plugin-settings → plugin-settings}/style.scss +1 -1
  63. package/dist/plugin-toggle/README.md +53 -0
  64. package/dist/plugin-toggle/index.js +222 -0
  65. package/dist/{esm/plugin-toggle → plugin-toggle}/style.scss +1 -1
  66. package/dist/{cjs/popover → popover}/index.js +4 -5
  67. package/dist/{cjs/popover → popover}/style.scss +7 -7
  68. package/dist/{cjs/position-control → position-control}/index.js +33 -32
  69. package/dist/{cjs/position-control → position-control}/style.scss +8 -8
  70. package/dist/{cjs/progress-bar → progress-bar}/index.js +9 -10
  71. package/dist/{cjs/progress-bar → progress-bar}/index.test.js +16 -16
  72. package/dist/{cjs/progress-bar → progress-bar}/style.scss +2 -2
  73. package/dist/proxied-imports/router.js +15 -0
  74. package/dist/{cjs/radio-control → radio-control}/index.js +4 -5
  75. package/dist/{cjs/radio-control → radio-control}/style.scss +3 -3
  76. package/dist/{cjs/section-header → section-header}/index.js +20 -21
  77. package/dist/{esm/section-header → section-header}/style.scss +5 -1
  78. package/dist/{cjs/select-control → select-control}/ButtonGroupControl.js +17 -19
  79. package/dist/{cjs/select-control → select-control}/GroupedSelectControl.js +32 -35
  80. package/dist/{cjs/select-control → select-control}/index.js +7 -8
  81. package/dist/{cjs/select-control → select-control}/style.scss +4 -4
  82. package/dist/settings/MinMaxSetting.js +60 -0
  83. package/dist/{cjs/settings → settings}/SettingsCard.js +14 -16
  84. package/dist/settings/SettingsSection.js +33 -0
  85. package/dist/{cjs/settings → settings}/index.js +3 -4
  86. package/dist/{cjs/settings → settings}/style.scss +15 -2
  87. package/dist/sortable-newsletter-list-control/index.js +135 -0
  88. package/dist/sortable-newsletter-list-control/style.scss +45 -0
  89. package/dist/{cjs/steps-list → steps-list}/index.js +5 -6
  90. package/dist/{esm/steps-list → steps-list}/style.scss +2 -2
  91. package/dist/{cjs/steps-list-item → steps-list-item}/index.js +6 -7
  92. package/dist/{cjs/steps-list-item → steps-list-item}/style.scss +5 -5
  93. package/dist/{cjs/style-card → style-card}/index.js +21 -19
  94. package/dist/{esm/style-card → style-card}/style.scss +4 -4
  95. package/dist/{esm/style.scss → style.scss} +14 -2
  96. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/index.js +16 -19
  97. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/style.scss +4 -4
  98. package/dist/text-control/index.js +76 -0
  99. package/dist/text-control/index.tsx +71 -0
  100. package/dist/utils/index.js +36 -0
  101. package/dist/{cjs/waiting → waiting}/index.js +4 -5
  102. package/dist/web-preview/index.js +191 -0
  103. package/dist/{cjs/web-preview → web-preview}/style.scss +5 -5
  104. package/dist/with-wizard/index.js +328 -0
  105. package/dist/{esm/with-wizard → with-wizard}/style.scss +44 -22
  106. package/dist/{cjs/with-wizard-screen → with-wizard-screen}/index.js +40 -43
  107. package/dist/{esm/with-wizard-screen → with-wizard-screen}/style.scss +7 -7
  108. package/dist/{cjs/wizard → wizard}/components/WizardError.js +16 -17
  109. package/dist/{cjs/wizard → wizard}/index.js +44 -46
  110. package/dist/{cjs/wizard → wizard}/store/index.js +37 -38
  111. package/dist/{cjs/wizard → wizard}/store/utils.js +1 -4
  112. package/package.json +16 -14
  113. package/shared/scss/_mixins.scss +2 -2
  114. package/src/accordion/index.js +4 -1
  115. package/src/accordion/style.scss +7 -3
  116. package/src/action-card/style.scss +9 -9
  117. package/src/autocomplete-tokenfield/index.js +48 -15
  118. package/src/autocomplete-tokenfield/style.scss +14 -8
  119. package/src/autocomplete-with-suggestions/index.js +59 -62
  120. package/src/autocomplete-with-suggestions/style.scss +9 -17
  121. package/src/button/index.tsx +48 -0
  122. package/src/button/style.scss +1 -1
  123. package/src/button-card/style.scss +19 -13
  124. package/src/card/style.scss +1 -1
  125. package/src/category-autocomplete/style.scss +2 -2
  126. package/src/color-picker/style.scss +3 -3
  127. package/src/consts.js +0 -2
  128. package/src/custom-select-control/style.scss +11 -10
  129. package/src/date-range-picker/style.scss +6 -6
  130. package/src/footer/index.js +7 -7
  131. package/src/footer/style.scss +1 -1
  132. package/src/form-token-field/style.scss +1 -1
  133. package/src/grid/index.tsx +34 -0
  134. package/src/grid/style.scss +9 -9
  135. package/src/handoff/index.js +7 -6
  136. package/src/handoff-message/index.js +3 -1
  137. package/src/hooks/index.ts +15 -0
  138. package/src/hooks/usePrompt.ts +46 -0
  139. package/src/image-upload/index.js +5 -5
  140. package/src/image-upload/index.test.js +6 -1
  141. package/src/image-upload/style.scss +5 -5
  142. package/src/modal/style.scss +5 -5
  143. package/src/newspack-icon/style.scss +1 -1
  144. package/src/newspack-logo/style.scss +1 -1
  145. package/src/notice/index.js +1 -1
  146. package/src/notice/style.scss +11 -11
  147. package/src/patrons-logo/index.js +4 -1
  148. package/src/plugin-installer/index.js +7 -7
  149. package/src/plugin-installer/style.scss +1 -1
  150. package/src/plugin-settings/index.js +1 -1
  151. package/src/plugin-settings/style.scss +1 -1
  152. package/src/plugin-toggle/index.js +13 -12
  153. package/src/plugin-toggle/style.scss +1 -1
  154. package/src/popover/style.scss +7 -7
  155. package/src/position-control/index.js +63 -64
  156. package/src/position-control/style.scss +8 -8
  157. package/src/progress-bar/style.scss +2 -2
  158. package/src/radio-control/style.scss +3 -3
  159. package/src/section-header/index.js +3 -3
  160. package/src/section-header/style.scss +5 -1
  161. package/src/select-control/GroupedSelectControl.js +1 -1
  162. package/src/select-control/style.scss +4 -4
  163. package/src/settings/MinMaxSetting.js +8 -6
  164. package/src/settings/style.scss +15 -2
  165. package/src/sortable-newsletter-list-control/index.js +137 -0
  166. package/src/sortable-newsletter-list-control/style.scss +45 -0
  167. package/src/steps-list/style.scss +2 -2
  168. package/src/steps-list-item/style.scss +5 -5
  169. package/src/style-card/index.js +11 -5
  170. package/src/style-card/style.scss +4 -4
  171. package/src/style.scss +14 -2
  172. package/src/tabbed-navigation/style.scss +4 -4
  173. package/src/text-control/index.tsx +65 -0
  174. package/src/web-preview/index.js +6 -6
  175. package/src/web-preview/style.scss +5 -5
  176. package/src/with-wizard/index.js +4 -4
  177. package/src/with-wizard/style.scss +44 -22
  178. package/src/with-wizard-screen/index.js +1 -1
  179. package/src/with-wizard-screen/style.scss +7 -7
  180. package/src/wizard/components/WizardError.js +1 -1
  181. package/src/wizard/index.js +3 -3
  182. package/src/wizard/store/index.js +9 -2
  183. package/dist/cjs/action-card/style.scss +0 -483
  184. package/dist/cjs/autocomplete-tokenfield/style.scss +0 -43
  185. package/dist/cjs/autocomplete-with-suggestions/style.scss +0 -171
  186. package/dist/cjs/button/index.js +0 -57
  187. package/dist/cjs/card/style.scss +0 -168
  188. package/dist/cjs/category-autocomplete/style.scss +0 -34
  189. package/dist/cjs/consts.js +0 -12
  190. package/dist/cjs/form-token-field/style.scss +0 -37
  191. package/dist/cjs/grid/index.js +0 -54
  192. package/dist/cjs/hooks/index.js +0 -26
  193. package/dist/cjs/hooks/usePrompt.js +0 -52
  194. package/dist/cjs/image-upload/index.js +0 -144
  195. package/dist/cjs/image-upload/style.scss +0 -103
  196. package/dist/cjs/modal/style.scss +0 -56
  197. package/dist/cjs/patrons-logo/index.js +0 -82
  198. package/dist/cjs/plugin-installer/index.js +0 -299
  199. package/dist/cjs/plugin-settings/index.js +0 -222
  200. package/dist/cjs/plugin-toggle/index.js +0 -222
  201. package/dist/cjs/plugin-toggle/style.scss +0 -20
  202. package/dist/cjs/proxied-imports/router.js +0 -15
  203. package/dist/cjs/section-header/style.scss +0 -41
  204. package/dist/cjs/settings/MinMaxSetting.js +0 -57
  205. package/dist/cjs/settings/SettingsSection.js +0 -37
  206. package/dist/cjs/steps-list/style.scss +0 -11
  207. package/dist/cjs/style-card/style.scss +0 -94
  208. package/dist/cjs/style.scss +0 -43
  209. package/dist/cjs/text-control/index.js +0 -71
  210. package/dist/cjs/utils/index.js +0 -40
  211. package/dist/cjs/web-preview/index.js +0 -189
  212. package/dist/cjs/with-wizard/index.js +0 -318
  213. package/dist/cjs/with-wizard/style.scss +0 -260
  214. package/dist/cjs/with-wizard-screen/style.scss +0 -160
  215. package/dist/esm/accordion/index.js +0 -38
  216. package/dist/esm/accordion/style.scss +0 -27
  217. package/dist/esm/action-card/index.js +0 -222
  218. package/dist/esm/autocomplete-tokenfield/index.js +0 -223
  219. package/dist/esm/autocomplete-with-suggestions/index.js +0 -289
  220. package/dist/esm/button/index.js +0 -48
  221. package/dist/esm/button/style.scss +0 -11
  222. package/dist/esm/button-card/index.js +0 -65
  223. package/dist/esm/button-card/style.scss +0 -174
  224. package/dist/esm/card/index.js +0 -43
  225. package/dist/esm/category-autocomplete/index.js +0 -185
  226. package/dist/esm/color-picker/index.js +0 -61
  227. package/dist/esm/color-picker/style.scss +0 -37
  228. package/dist/esm/consts.js +0 -3
  229. package/dist/esm/custom-select-control/index.js +0 -37
  230. package/dist/esm/custom-select-control/style.scss +0 -92
  231. package/dist/esm/date-range-picker/index.js +0 -32
  232. package/dist/esm/date-range-picker/style.scss +0 -148
  233. package/dist/esm/footer/index.js +0 -105
  234. package/dist/esm/footer/style.scss +0 -82
  235. package/dist/esm/form-token-field/index.js +0 -50
  236. package/dist/esm/global-notices/index.js +0 -30
  237. package/dist/esm/grid/index.js +0 -45
  238. package/dist/esm/grid/style.scss +0 -166
  239. package/dist/esm/handoff/index.js +0 -177
  240. package/dist/esm/handoff-message/index.js +0 -45
  241. package/dist/esm/hooks/index.js +0 -17
  242. package/dist/esm/hooks/useObjectState.js +0 -31
  243. package/dist/esm/hooks/useObjectState.test.js +0 -83
  244. package/dist/esm/hooks/useOnClickOutside.js +0 -31
  245. package/dist/esm/hooks/usePrompt.js +0 -43
  246. package/dist/esm/image-upload/index.js +0 -141
  247. package/dist/esm/image-upload/index.test.js +0 -28
  248. package/dist/esm/index.js +0 -47
  249. package/dist/esm/info-button/index.js +0 -42
  250. package/dist/esm/info-button/style.scss +0 -18
  251. package/dist/esm/modal/index.js +0 -39
  252. package/dist/esm/newspack-icon/index.js +0 -50
  253. package/dist/esm/newspack-icon/style.scss +0 -26
  254. package/dist/esm/newspack-logo/index.js +0 -46
  255. package/dist/esm/newspack-logo/style.scss +0 -30
  256. package/dist/esm/notice/index.js +0 -67
  257. package/dist/esm/notice/style.scss +0 -111
  258. package/dist/esm/patrons-logo/index.js +0 -76
  259. package/dist/esm/plugin-installer/index.js +0 -295
  260. package/dist/esm/plugin-installer/style.scss +0 -72
  261. package/dist/esm/plugin-settings/SettingsSection.js +0 -136
  262. package/dist/esm/plugin-settings/index.js +0 -217
  263. package/dist/esm/plugin-settings/style.scss +0 -7
  264. package/dist/esm/plugin-toggle/index.js +0 -217
  265. package/dist/esm/popover/index.js +0 -41
  266. package/dist/esm/popover/style.scss +0 -161
  267. package/dist/esm/position-control/index.js +0 -109
  268. package/dist/esm/position-control/style.scss +0 -66
  269. package/dist/esm/progress-bar/index.js +0 -69
  270. package/dist/esm/progress-bar/index.test.js +0 -110
  271. package/dist/esm/progress-bar/style.scss +0 -42
  272. package/dist/esm/proxied-imports/router.js +0 -8
  273. package/dist/esm/radio-control/index.js +0 -37
  274. package/dist/esm/radio-control/style.scss +0 -92
  275. package/dist/esm/section-header/index.js +0 -68
  276. package/dist/esm/select-control/ButtonGroupControl.js +0 -54
  277. package/dist/esm/select-control/GroupedSelectControl.js +0 -84
  278. package/dist/esm/select-control/index.js +0 -51
  279. package/dist/esm/select-control/style.scss +0 -108
  280. package/dist/esm/settings/MinMaxSetting.js +0 -53
  281. package/dist/esm/settings/SettingsCard.js +0 -39
  282. package/dist/esm/settings/SettingsSection.js +0 -30
  283. package/dist/esm/settings/index.js +0 -9
  284. package/dist/esm/settings/style.scss +0 -106
  285. package/dist/esm/steps-list/index.js +0 -43
  286. package/dist/esm/steps-list-item/index.js +0 -48
  287. package/dist/esm/steps-list-item/style.scss +0 -47
  288. package/dist/esm/style-card/index.js +0 -76
  289. package/dist/esm/tabbed-navigation/index.js +0 -56
  290. package/dist/esm/tabbed-navigation/style.scss +0 -86
  291. package/dist/esm/text-control/index.js +0 -66
  292. package/dist/esm/text-control/style.scss +0 -32
  293. package/dist/esm/utils/index.js +0 -32
  294. package/dist/esm/waiting/index.js +0 -44
  295. package/dist/esm/waiting/style.scss +0 -27
  296. package/dist/esm/web-preview/index.js +0 -184
  297. package/dist/esm/web-preview/style.scss +0 -155
  298. package/dist/esm/with-wizard/index.js +0 -313
  299. package/dist/esm/with-wizard-screen/index.js +0 -116
  300. package/dist/esm/wizard/components/WizardError.js +0 -69
  301. package/dist/esm/wizard/index.js +0 -126
  302. package/dist/esm/wizard/store/index.js +0 -155
  303. package/dist/esm/wizard/store/utils.js +0 -17
  304. package/src/grid/index.js +0 -44
  305. package/src/text-control/index.js +0 -56
  306. /package/dist/{cjs/info-button → info-button}/style.scss +0 -0
  307. /package/dist/{cjs/text-control → text-control}/style.scss +0 -0
  308. /package/dist/{cjs/waiting → waiting}/style.scss +0 -0
@@ -1,109 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ as alias__ } from '@wordpress/i18n';
5
- const __ = alias__;
6
- import { ButtonGroup, Button } from '@wordpress/components';
7
-
8
- /**
9
- * External dependencies
10
- */
11
- import classnames from 'classnames';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import './style.scss';
17
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
18
- import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
19
- export default function PositionControl(_ref) {
20
- let {
21
- allowedPositions,
22
- value,
23
- label,
24
- help,
25
- onChange,
26
- size,
27
- ...props
28
- } = _ref;
29
- /**
30
- * Set layout options
31
- */
32
- const options = size === 'full-width' ? [{
33
- value: 'top',
34
- /* translators: Overlay Position */
35
- label: __('Top', 'newspack')
36
- }, {
37
- value: 'center',
38
- /* translators: Overlay Position */
39
- label: __('Center', 'newspack')
40
- }, {
41
- value: 'bottom',
42
- /* translators: Overlay Position */
43
- label: __('Bottom', 'newspack')
44
- }] : [{
45
- value: 'top_left',
46
- /* translators: Overlay Position */
47
- label: __('Top Left', 'newspack')
48
- }, {
49
- value: 'top',
50
- /* translators: Overlay Position */
51
- label: __('Top Center', 'newspack')
52
- }, {
53
- value: 'top_right',
54
- /* translators: Overlay Position */
55
- label: __('Top Right', 'newspack')
56
- }, {
57
- value: 'center_left',
58
- /* translators: Overlay Position */
59
- label: __('Center Left', 'newspack')
60
- }, {
61
- value: 'center',
62
- /* translators: Overlay Position */
63
- label: __('Center', 'newspack')
64
- }, {
65
- value: 'center_right',
66
- /* translators: Overlay Position */
67
- label: __('Center Right', 'newspack')
68
- }, {
69
- value: 'bottom_left',
70
- /* translators: Overlay Position */
71
- label: __('Bottom Left', 'newspack')
72
- }, {
73
- value: 'bottom',
74
- /* translators: Overlay Position */
75
- label: __('Bottom Center', 'newspack')
76
- }, {
77
- value: 'bottom_right',
78
- /* translators: Overlay Position */
79
- label: __('Bottom Right', 'newspack')
80
- }];
81
- return _jsxs("div", {
82
- className: classnames('newspack-position-placement-control', 'size-' + size),
83
- children: [_jsx("p", {
84
- className: "components-base-control__label",
85
- children: label
86
- }), _jsx(ButtonGroup, {
87
- "aria-label": __('Select Position', 'newspack'),
88
- ...props,
89
- children: options.map((option, index) => {
90
- return _jsx("div", {
91
- className: option.value === value ? 'is-selected' : null,
92
- children: _jsx(Button, {
93
- isSmall: true,
94
- title: option.label,
95
- "aria-label": option.label,
96
- isPrimary: option.value === value,
97
- onClick: () => {
98
- onChange(option.value);
99
- },
100
- disabled: allowedPositions?.length && !allowedPositions.includes(option.value)
101
- })
102
- }, `newspack-position-placement-item-${index}`);
103
- })
104
- }), _jsx("p", {
105
- className: "components-base-control__help",
106
- children: help
107
- })]
108
- });
109
- }
@@ -1,66 +0,0 @@
1
- @use '~@wordpress/base-styles/colors' as wp-colors;
2
-
3
- .newspack-position-placement-control {
4
- margin-bottom: 1em;
5
-
6
- .components-base-control__label {
7
- margin-bottom: 8px;
8
- margin-top: 1em;
9
- }
10
-
11
- .components-button-group {
12
- display: grid;
13
- grid-template-columns: repeat( 3, 1fr );
14
- grid-template-rows: repeat( 3, 1fr );
15
-
16
- div {
17
- padding: 1px;
18
- }
19
-
20
- .components-button {
21
- border-radius: 0 !important;
22
- height: 100%;
23
- padding: 20px;
24
- width: 100%;
25
- }
26
-
27
- div:nth-of-type( 1 ) .components-button {
28
- border-radius: 4px 0 0 !important;
29
- }
30
-
31
- div:nth-of-type( 3 ) .components-button {
32
- border-radius: 0 4px 0 0 !important;
33
- }
34
-
35
- div:nth-last-of-type( 1 ) .components-button {
36
- border-radius: 0 0 4px !important;
37
- }
38
-
39
- div:nth-last-of-type( 3 ) .components-button {
40
- border-radius: 0 0 0 4px !important;
41
- }
42
- }
43
-
44
- &.size-full-width .components-button-group {
45
- grid-template-columns: 1fr;
46
-
47
- div:first-of-type .components-button {
48
- border-radius: 4px 4px 0 0 !important;
49
- }
50
-
51
- div:nth-of-type( 2 ) .components-button {
52
- border-radius: 0 !important;
53
- }
54
-
55
- div:last-of-type .components-button {
56
- border-radius: 0 0 4px 4px !important;
57
- }
58
- }
59
-
60
- .components-base-control__help {
61
- color: wp-colors.$gray-700;
62
- font-size: 12px;
63
- font-style: normal;
64
- margin-top: 8px;
65
- }
66
- }
@@ -1,69 +0,0 @@
1
- /**
2
- * Progress Bar
3
- */
4
-
5
- /**
6
- * WordPress dependencies.
7
- */
8
- import { Component } from '@wordpress/element';
9
-
10
- /**
11
- * Internal dependencies.
12
- */
13
- import './style.scss';
14
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
15
- import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
16
- class ProgressBar extends Component {
17
- /**
18
- * Get completion as a percentage.
19
- *
20
- * @param {number} completed The number of steps completed.
21
- * @param {number} total The total number of steps.
22
- * @return {number} completion percentage
23
- */
24
- getCompletionPercentage(completed, total) {
25
- if (!total) {
26
- return 100;
27
- }
28
- return Math.max(Math.min(Math.round(completed / total * 100), 100), 0);
29
- }
30
-
31
- /**
32
- * Render.
33
- */
34
- render() {
35
- const {
36
- label,
37
- completed,
38
- total,
39
- displayFraction
40
- } = this.props;
41
- const cleanTotal = Math.max(0, parseInt(total) || 0);
42
- const cleanCompleted = Math.max(0, Math.min(parseInt(completed) || 0, parseInt(cleanTotal)));
43
- const barStyle = {
44
- width: this.getCompletionPercentage(cleanCompleted, cleanTotal) + '%'
45
- };
46
- return _jsxs("div", {
47
- className: "newspack-progress-bar",
48
- children: [(label || displayFraction) && _jsxs("div", {
49
- className: "newspack-progress-bar__headings",
50
- children: [label && _jsx("h2", {
51
- children: label
52
- }), displayFraction && _jsx("p", {
53
- className: "is-dark",
54
- children: _jsxs("strong", {
55
- children: [cleanCompleted, "/", cleanTotal]
56
- })
57
- })]
58
- }), _jsx("div", {
59
- className: "newspack-progress-bar__container",
60
- children: _jsx("div", {
61
- className: "newspack-progress-bar__bar",
62
- style: barStyle,
63
- "data-testid": "progress-bar-indicator"
64
- })
65
- })]
66
- });
67
- }
68
- }
69
- export default ProgressBar;
@@ -1,110 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import ProgressBar from './';
4
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
5
- import { createElement as _createElement } from "@emotion/react";
6
- describe('ProgressBar', () => {
7
- it('should render a progress indicator', () => {
8
- const {
9
- getByTestId
10
- } = render(_jsx(ProgressBar, {
11
- completed: "1",
12
- total: "2"
13
- }));
14
- const indicator = getByTestId('progress-bar-indicator');
15
- expect(indicator).toHaveAttribute('style', 'width: 50%;');
16
- });
17
- it('should render a label', () => {
18
- const label = 'test label';
19
- const {
20
- getByText
21
- } = render(_jsx(ProgressBar, {
22
- completed: "1",
23
- total: "2",
24
- label: label
25
- }));
26
- expect(getByText(label)).toBeInTheDocument();
27
- });
28
- it('should render progress as a fraction', () => {
29
- const {
30
- getByText
31
- } = render(_jsx(ProgressBar, {
32
- completed: "1",
33
- total: "2",
34
- displayFraction: true
35
- }));
36
- expect(getByText('1/2')).toBeInTheDocument();
37
- });
38
- it('should render with both label and fraction', () => {
39
- const label = 'test label';
40
- const {
41
- getByText
42
- } = render(_jsx(ProgressBar, {
43
- completed: "1",
44
- total: "2",
45
- label: label,
46
- displayFraction: true
47
- }));
48
- expect(getByText(label)).toBeInTheDocument();
49
- expect(getByText('1/2')).toBeInTheDocument();
50
- });
51
- describe('should calculate progress correctly', () => {
52
- [{
53
- props: {
54
- completed: 1,
55
- total: 2
56
- },
57
- expectedWidth: 50
58
- }, {
59
- props: {
60
- completed: 2,
61
- total: 3
62
- },
63
- expectedWidth: 67
64
- }, {
65
- props: {
66
- completed: 6,
67
- total: 3
68
- },
69
- expectedWidth: 100
70
- }].forEach(_ref => {
71
- let {
72
- props,
73
- expectedWidth
74
- } = _ref;
75
- it(`with expected progress of ${expectedWidth}`, () => {
76
- const {
77
- getByTestId
78
- } = render(_createElement(ProgressBar, {
79
- ...props,
80
- key: expectedWidth
81
- }));
82
- expect(getByTestId('progress-bar-indicator')).toHaveAttribute('style', `width: ${expectedWidth}%;`);
83
- });
84
- });
85
- });
86
- it('should handle non-numeric values in ProgressBar element', () => {
87
- const {
88
- getByText,
89
- getByTestId
90
- } = render(_jsx(ProgressBar, {
91
- completed: "cats",
92
- total: "dogs",
93
- displayFraction: true
94
- }));
95
- expect(getByText('0/0')).toBeInTheDocument();
96
- expect(getByTestId('progress-bar-indicator')).toHaveAttribute('style', 'width: 100%;');
97
- });
98
- it('should handle non-logical values in ProgressBar element', () => {
99
- const {
100
- getByText,
101
- getByTestId
102
- } = render(_jsx(ProgressBar, {
103
- completed: "3",
104
- total: "-1",
105
- displayFraction: true
106
- }));
107
- expect(getByText('0/0')).toBeInTheDocument();
108
- expect(getByTestId('progress-bar-indicator')).toHaveAttribute('style', 'width: 100%;');
109
- });
110
- });
@@ -1,42 +0,0 @@
1
- /**
2
- * Progress Bar
3
- */
4
-
5
- @use '../../../shared/scss/colors';
6
- @use '~@wordpress/base-styles/colors' as wp-colors;
7
-
8
- .newspack-progress-bar {
9
- margin: 32px 0;
10
-
11
- & &__headings {
12
- align-items: center;
13
- display: flex;
14
- justify-content: space-between;
15
- margin-bottom: 8px;
16
-
17
- h2,
18
- p {
19
- margin-bottom: 0;
20
- margin-top: 0;
21
- }
22
-
23
- p {
24
- margin-left: auto;
25
- }
26
- }
27
-
28
- &__container {
29
- background-color: wp-colors.$gray-100;
30
- border-radius: 4px;
31
- height: 8px;
32
- overflow: hidden;
33
- position: relative;
34
- z-index: 1;
35
- }
36
-
37
- &__bar {
38
- background-color: colors.$primary-500;
39
- height: 8px;
40
- transition: width 125ms ease-in-out;
41
- }
42
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * A proxy for react-router-dom.
3
- * Ensures that both components and the plugin use the same instance of
4
- * React Router, even if there are node_modules in components.
5
- */
6
-
7
- import * as ReactRouterDOM from 'react-router-dom';
8
- export default ReactRouterDOM;
@@ -1,37 +0,0 @@
1
- /**
2
- * WordPress dependencies.
3
- */
4
- import { RadioControl as BaseComponent } from '@wordpress/components';
5
- import { Component } from '@wordpress/element';
6
-
7
- /**
8
- * Internal dependencies.
9
- */
10
- import './style.scss';
11
-
12
- /**
13
- * External dependencies.
14
- */
15
- import classnames from 'classnames';
16
-
17
- /**
18
- * Radio Control.
19
- */
20
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
21
- class RadioControl extends Component {
22
- /**
23
- * Render.
24
- */
25
- render() {
26
- const {
27
- className,
28
- ...otherProps
29
- } = this.props;
30
- const classes = classnames('newspack-radio-control', className);
31
- return _jsx(BaseComponent, {
32
- className: classes,
33
- ...otherProps
34
- });
35
- }
36
- }
37
- export default RadioControl;
@@ -1,92 +0,0 @@
1
- /**
2
- * Radio Control
3
- */
4
-
5
- @use '../../../shared/scss/colors';
6
- @use '~@wordpress/base-styles/colors' as wp-colors;
7
-
8
- .newspack-radio-control {
9
- color: wp-colors.$gray-700;
10
- font-size: 14px;
11
- line-height: 24px;
12
- margin: 32px 0;
13
-
14
- label {
15
- color: inherit;
16
- font-size: 14px;
17
- line-height: 24px;
18
- margin: 0;
19
- }
20
-
21
- .components-base-control__label {
22
- color: wp-colors.$gray-900;
23
- font-weight: bold;
24
- }
25
-
26
- // Options
27
-
28
- .components-radio-control__option {
29
- align-items: center;
30
- display: flex;
31
- margin: 0 0 8px;
32
-
33
- &:first-of-type {
34
- margin-top: 8px;
35
- }
36
-
37
- &:last-child {
38
- margin-bottom: 0;
39
- }
40
- }
41
-
42
- // Radio
43
-
44
- input[type='radio'] {
45
- height: 24px;
46
- margin-right: 8px;
47
- width: 24px;
48
-
49
- @media screen and ( min-width: 782px ) {
50
- height: 20px;
51
- width: 20px;
52
- }
53
-
54
- &:checked {
55
- background-color: colors.$primary-500;
56
- border-color: colors.$primary-500;
57
-
58
- &::before {
59
- border: none;
60
- }
61
- }
62
-
63
- &:focus {
64
- border-color: colors.$primary-500;
65
- box-shadow: 0 0 0 2px white, 0 0 0 3.5px colors.$primary-500;
66
- }
67
- }
68
-
69
- // Multiple Radio Controls
70
-
71
- & + & {
72
- margin-bottom: 32px;
73
- margin-top: -16px;
74
- }
75
-
76
- // Multiple Controls
77
-
78
- + .newspack-select-control,
79
- + .newspack-text-control {
80
- margin-bottom: 32px;
81
- margin-top: -16px;
82
- }
83
-
84
- // Reset
85
-
86
- .components-base-control__field,
87
- .components-base-control__label,
88
- .components-base-control__help {
89
- display: block;
90
- margin: 0;
91
- }
92
- }
@@ -1,68 +0,0 @@
1
- /**
2
- * Section Header
3
- */
4
-
5
- /**
6
- * WordPress dependencies
7
- */
8
- import { useEffect, useRef } from '@wordpress/element';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import { Grid } from '..';
14
- import './style.scss';
15
-
16
- /**
17
- * External dependencies
18
- */
19
- import classnames from 'classnames';
20
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
21
- import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
22
- const SectionHeader = _ref => {
23
- let {
24
- centered = false,
25
- className = null,
26
- description,
27
- heading = 2,
28
- isWhite = false,
29
- noMargin = false,
30
- title,
31
- id = null
32
- } = _ref;
33
- // If id is in the URL as a scrollTo param, scroll to it on render.
34
- const ref = useRef();
35
- useEffect(() => {
36
- const params = new Proxy(new URLSearchParams(window.location.search), {
37
- get: (searchParams, prop) => searchParams.get(prop)
38
- });
39
- const scrollToId = params.scrollTo;
40
- if (scrollToId && scrollToId === id) {
41
- // Let parent scroll action run before running this.
42
- window.setTimeout(() => ref.current.scrollIntoView({
43
- behavior: 'smooth'
44
- }), 250);
45
- }
46
- }, []);
47
- const classes = classnames('newspack-section-header', centered && 'newspack-section-header--is-centered', isWhite && 'newspack-section-header--is-white', noMargin && 'newspack-section-header--no-margin', className);
48
- const HeadingTag = `h${heading}`;
49
- return _jsx("div", {
50
- id: id,
51
- ref: ref,
52
- children: _jsxs(Grid, {
53
- columns: 1,
54
- gutter: 8,
55
- className: classes,
56
- children: [typeof title === 'string' && _jsx(HeadingTag, {
57
- children: title
58
- }), typeof title === 'function' && _jsx(HeadingTag, {
59
- children: title()
60
- }), typeof description === 'string' && _jsx("p", {
61
- children: description
62
- }), typeof description === 'function' && _jsx("p", {
63
- children: description()
64
- })]
65
- })
66
- });
67
- };
68
- export default SectionHeader;
@@ -1,54 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { Icon } from '@wordpress/icons';
10
- import { BaseControl, Button, ButtonGroup } from '@wordpress/components';
11
-
12
- /**
13
- * Internal dependencies
14
- */
15
- import { hooks } from '..';
16
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
17
- const ButtonGroupControl = _ref => {
18
- let {
19
- buttonOptions,
20
- buttonSmall,
21
- className,
22
- hideLabelFromVision,
23
- label,
24
- onChange,
25
- value
26
- } = _ref;
27
- const id = hooks.useUniqueId('button-group');
28
- return _jsx(BaseControl, {
29
- label: label,
30
- hideLabelFromVision: hideLabelFromVision,
31
- id: id.current,
32
- className: classnames(className, 'components-select-control'),
33
- children: _jsx(ButtonGroup, {
34
- children: buttonOptions.map(option => {
35
- const isSelected = value === option.value;
36
- let Label = () => option.label;
37
- if (option.icon) {
38
- // eslint-disable-next-line react/display-name
39
- Label = () => _jsx(Icon, {
40
- icon: option.icon
41
- });
42
- }
43
- return _jsx(Button, {
44
- variant: isSelected ? 'primary' : null,
45
- isPressed: isSelected,
46
- onClick: () => onChange(option.value),
47
- isSmall: buttonSmall,
48
- children: _jsx(Label, {})
49
- }, option.value);
50
- })
51
- })
52
- });
53
- };
54
- export default ButtonGroupControl;