newspack-components 4.3.0 → 4.4.0-alpha.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 (263) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/DEVELOPMENT.md +868 -0
  3. package/colors/colors.module.scss +52 -2
  4. package/copy-styles.js +3 -2
  5. package/dist/cjs/accordion/index.js +17 -12
  6. package/dist/cjs/action-card/index.js +176 -139
  7. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  8. package/dist/cjs/autocomplete-with-latest-posts/index.js +172 -110
  9. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  10. package/dist/cjs/badge/index.js +7 -7
  11. package/dist/cjs/box-contrast/index.js +19 -15
  12. package/dist/cjs/button/index.js +41 -26
  13. package/dist/cjs/button-props/button-props.js +5 -5
  14. package/dist/cjs/button-props/index.js +2 -2
  15. package/dist/cjs/card/core-card.js +110 -52
  16. package/dist/cjs/card/index.js +74 -67
  17. package/dist/cjs/card/style-core.scss +93 -25
  18. package/dist/cjs/card/style.scss +2 -2
  19. package/dist/cjs/card-feature/index.js +141 -0
  20. package/dist/cjs/card-feature/style.scss +75 -0
  21. package/dist/cjs/card-form/index.js +144 -0
  22. package/dist/cjs/card-form/style.scss +20 -0
  23. package/dist/cjs/card-settings-group/index.js +36 -16
  24. package/dist/cjs/card-sortable-list/index.js +176 -140
  25. package/dist/cjs/category-autocomplete/index.js +175 -155
  26. package/dist/cjs/color-picker/index.js +41 -23
  27. package/dist/cjs/color-picker/index.test.js +82 -0
  28. package/dist/cjs/color-picker/style.scss +11 -13
  29. package/dist/cjs/confirm-dialog/index.js +86 -22
  30. package/dist/cjs/consts.js +1 -1
  31. package/dist/cjs/custom-select-control/index.js +39 -28
  32. package/dist/cjs/dataviews/index.js +38 -0
  33. package/dist/cjs/dataviews/style.scss +9 -0
  34. package/dist/cjs/divider/index.js +26 -21
  35. package/dist/cjs/footer/index.js +36 -30
  36. package/dist/cjs/form-token-field/index.js +51 -40
  37. package/dist/cjs/global-notices/index.js +5 -5
  38. package/dist/cjs/grid/index.js +25 -19
  39. package/dist/cjs/grid/style.scss +6 -1
  40. package/dist/cjs/handoff/index.js +204 -156
  41. package/dist/cjs/handoff-message/index.js +12 -7
  42. package/dist/cjs/hooks/index.js +10 -8
  43. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  44. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  45. package/dist/cjs/hooks/useObjectState.js +21 -12
  46. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  47. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  48. package/dist/cjs/hooks/usePrompt.js +10 -13
  49. package/dist/cjs/image-upload/index.js +114 -123
  50. package/dist/cjs/image-upload/index.test.js +11 -13
  51. package/dist/cjs/image-upload/style.scss +12 -40
  52. package/dist/cjs/index.js +136 -104
  53. package/dist/cjs/info-button/index.js +43 -32
  54. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  55. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  56. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  57. package/dist/cjs/integration-icons/index.js +48 -0
  58. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  59. package/dist/cjs/integration-icons/salesforce.js +17 -0
  60. package/dist/cjs/integration-icons/wisepops.js +20 -0
  61. package/dist/cjs/modal/index.js +22 -19
  62. package/dist/cjs/modal/style.scss +4 -0
  63. package/dist/cjs/newspack-icon/index.js +45 -38
  64. package/dist/cjs/notice/index.js +64 -55
  65. package/dist/cjs/plugin-installer/index.js +259 -253
  66. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  67. package/dist/cjs/plugin-settings/index.js +217 -200
  68. package/dist/cjs/plugin-toggle/index.js +192 -199
  69. package/dist/cjs/popover/index.js +41 -28
  70. package/dist/cjs/position-control/index.js +24 -23
  71. package/dist/cjs/progress-bar/index.js +71 -59
  72. package/dist/cjs/progress-bar/index.test.js +62 -68
  73. package/dist/cjs/proxied-imports/router.js +3 -3
  74. package/dist/cjs/radio-control/index.js +40 -27
  75. package/dist/cjs/section-header/index.js +103 -58
  76. package/dist/cjs/section-header/style.scss +31 -11
  77. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  78. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  79. package/dist/cjs/select-control/index.js +52 -40
  80. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  81. package/dist/cjs/settings/SettingsCard.js +20 -17
  82. package/dist/cjs/settings/SettingsSection.js +22 -21
  83. package/dist/cjs/settings/index.js +5 -5
  84. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  85. package/dist/cjs/steps-list/index.js +44 -34
  86. package/dist/cjs/steps-list-item/index.js +47 -39
  87. package/dist/cjs/style-card/index.js +70 -63
  88. package/dist/cjs/tabbed-navigation/index.js +38 -36
  89. package/dist/cjs/text-control/index.js +27 -25
  90. package/dist/cjs/utils/color.js +4 -4
  91. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  92. package/dist/cjs/utils/index.js +31 -19
  93. package/dist/cjs/utils/style.scss +8 -0
  94. package/dist/cjs/waiting/index.js +48 -37
  95. package/dist/cjs/web-preview/index.js +217 -211
  96. package/dist/cjs/with-wizard/index.js +362 -364
  97. package/dist/cjs/with-wizard/style.scss +4 -54
  98. package/dist/cjs/with-wizard-screen/index.js +54 -58
  99. package/dist/cjs/with-wizard-screen/style.scss +41 -3
  100. package/dist/cjs/wizard/components/WizardError.js +20 -18
  101. package/dist/cjs/wizard/components/WizardSnackbar.js +26 -23
  102. package/dist/cjs/wizard/index.js +176 -114
  103. package/dist/cjs/wizard/store/index.js +171 -123
  104. package/dist/cjs/wizard/store/utils.js +13 -8
  105. package/dist/esm/accordion/index.js +14 -9
  106. package/dist/esm/action-card/index.js +168 -123
  107. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  108. package/dist/esm/autocomplete-with-latest-posts/index.js +169 -103
  109. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  110. package/dist/esm/badge/index.js +5 -5
  111. package/dist/esm/box-contrast/index.js +15 -11
  112. package/dist/esm/button/index.js +39 -21
  113. package/dist/esm/button-props/button-props.js +1 -1
  114. package/dist/esm/card/core-card.js +109 -47
  115. package/dist/esm/card/index.js +69 -54
  116. package/dist/esm/card/style-core.scss +93 -25
  117. package/dist/esm/card/style.scss +2 -2
  118. package/dist/esm/card-feature/index.js +131 -0
  119. package/dist/esm/card-feature/style.scss +75 -0
  120. package/dist/esm/card-form/index.js +134 -0
  121. package/dist/esm/card-form/style.scss +20 -0
  122. package/dist/esm/card-settings-group/index.js +33 -14
  123. package/dist/esm/card-sortable-list/index.js +170 -126
  124. package/dist/esm/category-autocomplete/index.js +168 -140
  125. package/dist/esm/color-picker/index.js +39 -21
  126. package/dist/esm/color-picker/index.test.js +78 -0
  127. package/dist/esm/color-picker/style.scss +11 -13
  128. package/dist/esm/confirm-dialog/index.js +85 -18
  129. package/dist/esm/consts.js +1 -1
  130. package/dist/esm/custom-select-control/index.js +34 -15
  131. package/dist/esm/dataviews/index.js +34 -0
  132. package/dist/esm/dataviews/style.scss +9 -0
  133. package/dist/esm/divider/index.js +24 -16
  134. package/dist/esm/footer/index.js +34 -28
  135. package/dist/esm/form-token-field/index.js +46 -27
  136. package/dist/esm/global-notices/index.js +3 -3
  137. package/dist/esm/grid/index.js +23 -14
  138. package/dist/esm/grid/style.scss +6 -1
  139. package/dist/esm/handoff/index.js +199 -143
  140. package/dist/esm/handoff-message/index.js +10 -6
  141. package/dist/esm/hooks/index.js +8 -6
  142. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  143. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  144. package/dist/esm/hooks/useObjectState.js +19 -9
  145. package/dist/esm/hooks/useObjectState.test.js +54 -32
  146. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  147. package/dist/esm/hooks/usePrompt.js +9 -11
  148. package/dist/esm/image-upload/index.js +110 -111
  149. package/dist/esm/image-upload/index.test.js +11 -13
  150. package/dist/esm/image-upload/style.scss +12 -40
  151. package/dist/esm/index.js +7 -1
  152. package/dist/esm/info-button/index.js +38 -19
  153. package/dist/esm/integration-icons/active-campaign.js +16 -0
  154. package/dist/esm/integration-icons/constant-contact.js +22 -0
  155. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  156. package/dist/esm/integration-icons/index.js +6 -0
  157. package/dist/esm/integration-icons/mailchimp.js +13 -0
  158. package/dist/esm/integration-icons/salesforce.js +11 -0
  159. package/dist/esm/integration-icons/wisepops.js +14 -0
  160. package/dist/esm/modal/index.js +20 -13
  161. package/dist/esm/modal/style.scss +4 -0
  162. package/dist/esm/newspack-icon/index.js +40 -25
  163. package/dist/esm/notice/index.js +59 -42
  164. package/dist/esm/plugin-installer/index.js +255 -243
  165. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  166. package/dist/esm/plugin-settings/index.js +212 -189
  167. package/dist/esm/plugin-toggle/index.js +187 -190
  168. package/dist/esm/popover/index.js +35 -16
  169. package/dist/esm/position-control/index.js +22 -18
  170. package/dist/esm/progress-bar/index.js +66 -49
  171. package/dist/esm/progress-bar/index.test.js +61 -67
  172. package/dist/esm/radio-control/index.js +34 -15
  173. package/dist/esm/section-header/index.js +102 -57
  174. package/dist/esm/section-header/style.scss +31 -11
  175. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  176. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  177. package/dist/esm/select-control/index.js +47 -27
  178. package/dist/esm/settings/MinMaxSetting.js +27 -16
  179. package/dist/esm/settings/SettingsCard.js +18 -13
  180. package/dist/esm/settings/SettingsSection.js +20 -19
  181. package/dist/esm/settings/index.js +3 -3
  182. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  183. package/dist/esm/steps-list/index.js +39 -21
  184. package/dist/esm/steps-list-item/index.js +42 -26
  185. package/dist/esm/style-card/index.js +65 -50
  186. package/dist/esm/tabbed-navigation/index.js +35 -33
  187. package/dist/esm/text-control/index.js +25 -19
  188. package/dist/esm/utils/color.js +4 -4
  189. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  190. package/dist/esm/utils/index.js +29 -16
  191. package/dist/esm/utils/style.scss +8 -0
  192. package/dist/esm/waiting/index.js +43 -24
  193. package/dist/esm/web-preview/index.js +213 -201
  194. package/dist/esm/with-wizard/index.js +360 -358
  195. package/dist/esm/with-wizard/style.scss +4 -54
  196. package/dist/esm/with-wizard-screen/index.js +48 -46
  197. package/dist/esm/with-wizard-screen/style.scss +41 -3
  198. package/dist/esm/wizard/components/WizardError.js +18 -16
  199. package/dist/esm/wizard/components/WizardSnackbar.js +23 -17
  200. package/dist/esm/wizard/index.js +171 -103
  201. package/dist/esm/wizard/store/index.js +169 -116
  202. package/dist/esm/wizard/store/utils.js +13 -6
  203. package/package.json +30 -16
  204. package/release.config.js +1 -0
  205. package/shared/hooks/use-coauthors.js +195 -27
  206. package/shared/hooks/use-coauthors.test.js +232 -6
  207. package/shared/scss/_mixins.scss +13 -5
  208. package/src/accordion/index.js +8 -7
  209. package/src/action-card/index.js +15 -1
  210. package/src/badge/index.tsx +3 -1
  211. package/src/card/core-card.js +95 -18
  212. package/src/card/index.js +1 -0
  213. package/src/card/style-core.scss +93 -25
  214. package/src/card/style.scss +2 -2
  215. package/src/card-feature/README.md +188 -0
  216. package/src/card-feature/index.tsx +186 -0
  217. package/src/card-feature/style.scss +75 -0
  218. package/src/card-form/README.md +113 -0
  219. package/src/card-form/index.tsx +128 -0
  220. package/src/card-form/style.scss +20 -0
  221. package/src/card-settings-group/index.tsx +28 -3
  222. package/src/card-sortable-list/index.tsx +27 -4
  223. package/src/color-picker/index.js +15 -8
  224. package/src/color-picker/index.test.js +52 -0
  225. package/src/color-picker/style.scss +11 -13
  226. package/src/confirm-dialog/README.md +128 -0
  227. package/src/confirm-dialog/index.tsx +74 -6
  228. package/src/dataviews/index.tsx +34 -0
  229. package/src/dataviews/style.scss +9 -0
  230. package/src/grid/style.scss +6 -1
  231. package/src/handoff/README.md +93 -0
  232. package/src/handoff/index.js +46 -8
  233. package/src/hooks/index.ts +2 -1
  234. package/src/hooks/use-confirm-dialog.tsx +80 -0
  235. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  236. package/src/image-upload/index.js +10 -15
  237. package/src/image-upload/style.scss +12 -40
  238. package/src/index.js +7 -1
  239. package/src/integration-icons/active-campaign.js +14 -0
  240. package/src/integration-icons/constant-contact.js +22 -0
  241. package/src/integration-icons/fundraise-up.js +18 -0
  242. package/src/integration-icons/index.js +6 -0
  243. package/src/integration-icons/mailchimp.js +10 -0
  244. package/src/integration-icons/salesforce.js +10 -0
  245. package/src/integration-icons/wisepops.js +14 -0
  246. package/src/modal/style.scss +4 -0
  247. package/src/plugin-installer/index.js +30 -19
  248. package/src/section-header/index.js +56 -24
  249. package/src/section-header/style.scss +31 -11
  250. package/src/select-control/index.js +4 -0
  251. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  252. package/src/utils/index.js +6 -0
  253. package/src/utils/style.scss +8 -0
  254. package/src/with-wizard/style.scss +4 -54
  255. package/src/with-wizard-screen/style.scss +41 -3
  256. package/src/wizard/index.js +90 -53
  257. package/src/wizard/store/index.js +2 -2
  258. package/dist/cjs/button-card/index.js +0 -72
  259. package/dist/cjs/button-card/style.scss +0 -180
  260. package/dist/esm/button-card/index.js +0 -64
  261. package/dist/esm/button-card/style.scss +0 -180
  262. package/src/button-card/index.js +0 -52
  263. package/src/button-card/style.scss +0 -180
@@ -4,145 +4,136 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports["default"] = void 0;
8
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
14
  var _element = require("@wordpress/element");
9
15
  var _i18n = require("@wordpress/i18n");
16
+ var _components = require("@wordpress/components");
10
17
  var _ = require("../");
11
18
  require("./style.scss");
12
19
  var _classnames = _interopRequireDefault(require("classnames"));
13
20
  var _jsxRuntime = require("react/jsx-runtime");
14
- /**
21
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
22
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /**
15
23
  * Image Upload
16
- */
17
-
18
- /**
24
+ */ /**
19
25
  * WordPress dependencies.
20
- */
21
-
22
- /**
26
+ */ /**
23
27
  * Internal dependencies.
24
- */
25
-
26
- /**
28
+ */ /**
27
29
  * External dependencies.
28
30
  */
29
-
30
- class ImageUpload extends _element.Component {
31
+ var ImageUpload = /*#__PURE__*/function (_Component) {
31
32
  /**
32
33
  * Constructor.
33
34
  */
34
- constructor() {
35
- super(...arguments);
36
- this.state = {
37
- frame: false
38
- };
39
- }
40
-
41
- /**
42
- * Open the WP media modal.
43
- */
44
- openModal = () => {
45
- if (this.state.frame) {
46
- this.state.frame.open();
47
- return;
48
- }
49
- this.setState({
50
- frame: wp.media({
51
- title: (0, _i18n.__)('Select or upload image'),
52
- button: {
53
- text: (0, _i18n.__)('Select')
54
- },
55
- library: {
56
- type: 'image'
57
- },
58
- multiple: false
59
- })
60
- }, () => {
61
- this.state.frame.on('select', this.handleImageSelect);
62
- this.state.frame.open();
35
+ function ImageUpload() {
36
+ var _this;
37
+ (0, _classCallCheck2["default"])(this, ImageUpload);
38
+ _this = _callSuper(this, ImageUpload, arguments);
39
+ /**
40
+ * Open the WP media modal.
41
+ */
42
+ (0, _defineProperty2["default"])(_this, "openModal", function () {
43
+ if (_this.state.frame) {
44
+ _this.state.frame.open();
45
+ return;
46
+ }
47
+ _this.setState({
48
+ frame: wp.media({
49
+ title: (0, _i18n.__)('Select or upload image'),
50
+ button: {
51
+ text: (0, _i18n.__)('Select')
52
+ },
53
+ library: {
54
+ type: 'image'
55
+ },
56
+ multiple: false
57
+ })
58
+ }, function () {
59
+ _this.state.frame.on('select', _this.handleImageSelect);
60
+ _this.state.frame.open();
61
+ });
63
62
  });
64
- };
65
-
66
- /**
67
- * Update the state when an image is selected from the media modal.
68
- */
69
- handleImageSelect = () => {
70
- const {
71
- onChange
72
- } = this.props;
73
- const attachment = this.state.frame.state().get('selection').first().toJSON();
74
- onChange(attachment);
75
- };
76
-
77
- /**
78
- * Render.
79
- */
80
- render = () => {
81
- const {
82
- buttonLabel,
83
- className,
84
- disabled,
85
- help,
86
- image,
87
- info,
88
- isCovering,
89
- label,
90
- onChange,
91
- style = {}
92
- } = this.props;
93
- const classes = (0, _classnames.default)('newspack-image-upload__image', {
94
- 'newspack-image-upload__image--has-image': image
95
- }, {
96
- 'newspack-image-upload__image--covering': isCovering
63
+ /**
64
+ * Update the state when an image is selected from the media modal.
65
+ */
66
+ (0, _defineProperty2["default"])(_this, "handleImageSelect", function () {
67
+ var onChange = _this.props.onChange;
68
+ var attachment = _this.state.frame.state().get('selection').first().toJSON();
69
+ onChange(attachment);
97
70
  });
98
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
99
- className: (0, _classnames.default)('newspack-image-upload', className),
100
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
101
- className: "newspack-image-upload__header",
102
- children: [label && /*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
103
- className: "newspack-image-upload__label",
71
+ /**
72
+ * Render.
73
+ */
74
+ (0, _defineProperty2["default"])(_this, "render", function () {
75
+ var _this$props = _this.props,
76
+ buttonLabel = _this$props.buttonLabel,
77
+ className = _this$props.className,
78
+ disabled = _this$props.disabled,
79
+ help = _this$props.help,
80
+ image = _this$props.image,
81
+ isCovering = _this$props.isCovering,
82
+ label = _this$props.label,
83
+ onChange = _this$props.onChange,
84
+ _this$props$style = _this$props.style,
85
+ style = _this$props$style === void 0 ? {} : _this$props$style;
86
+ var classes = (0, _classnames["default"])('newspack-image-upload__image', {
87
+ 'newspack-image-upload__image--has-image': image
88
+ }, {
89
+ 'newspack-image-upload__image--covering': isCovering
90
+ });
91
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.BaseControl, {
92
+ __nextHasNoMarginBottom: true,
93
+ className: (0, _classnames["default"])('newspack-image-upload', className),
94
+ help: help,
95
+ children: [label && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.BaseControl.VisualLabel, {
104
96
  children: label
105
- }), info && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.InfoButton, {
106
- text: info
107
- })]
108
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
109
- className: classes,
110
- style: {
111
- ...style
112
- },
113
- children: image?.url ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
114
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
115
- "data-testid": "image-upload",
116
- src: image.url,
117
- alt: (0, _i18n.__)('Image preview', 'newspack-plugin')
118
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
119
- className: "newspack-image-upload__controls",
120
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
121
- disabled: disabled,
122
- onClick: this.openModal,
123
- isLink: true,
124
- children: (0, _i18n.__)('Replace', 'newspack-plugin')
125
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
126
- className: "sep"
127
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
128
- disabled: disabled,
129
- onClick: () => onChange(null),
130
- isLink: true,
131
- isDestructive: true,
132
- children: (0, _i18n.__)('Remove', 'newspack-plugin')
97
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
98
+ className: classes,
99
+ style: style,
100
+ children: image !== null && image !== void 0 && image.url ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
101
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
102
+ "data-testid": "image-upload",
103
+ src: image.url,
104
+ alt: (0, _i18n.__)('Image preview', 'newspack-plugin')
105
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
106
+ className: "newspack-image-upload__controls",
107
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
108
+ disabled: disabled,
109
+ onClick: _this.openModal,
110
+ variant: "tertiary",
111
+ children: (0, _i18n.__)('Replace', 'newspack-plugin')
112
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
113
+ disabled: disabled,
114
+ onClick: function onClick() {
115
+ return onChange(null);
116
+ },
117
+ variant: "tertiary",
118
+ isDestructive: true,
119
+ children: (0, _i18n.__)('Remove', 'newspack-plugin')
120
+ })]
133
121
  })]
134
- })]
135
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
136
- disabled: disabled,
137
- onClick: this.openModal,
138
- isLink: true,
139
- children: buttonLabel ? buttonLabel : (0, _i18n.__)('Upload', 'newspack-plugin')
140
- })
141
- }), help && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
142
- className: "newspack-image-upload__help",
143
- children: help
144
- })]
122
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
123
+ disabled: disabled,
124
+ onClick: _this.openModal,
125
+ variant: "tertiary",
126
+ children: buttonLabel ? buttonLabel : (0, _i18n.__)('Upload', 'newspack-plugin')
127
+ })
128
+ })]
129
+ });
145
130
  });
146
- };
147
- }
148
- var _default = exports.default = ImageUpload;
131
+ _this.state = {
132
+ frame: false
133
+ };
134
+ return _this;
135
+ }
136
+ (0, _inherits2["default"])(ImageUpload, _Component);
137
+ return (0, _createClass2["default"])(ImageUpload);
138
+ }(_element.Component);
139
+ var _default = exports["default"] = ImageUpload;
@@ -12,24 +12,22 @@ var _jsxRuntime = require("react/jsx-runtime");
12
12
  * Internal dependencies
13
13
  */
14
14
 
15
- describe('ImageUpload', () => {
16
- it('should render an add image button', () => {
17
- const {
18
- getByText
19
- } = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {}));
15
+ describe('ImageUpload', function () {
16
+ it('should render an add image button', function () {
17
+ var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_["default"], {})),
18
+ getByText = _render.getByText;
20
19
  expect(getByText('Upload')).toBeInTheDocument();
21
20
  });
22
- it('should render replace and remove buttons if there is an image provided', () => {
23
- const image = {
21
+ it('should render replace and remove buttons if there is an image provided', function () {
22
+ var image = {
24
23
  id: 1234,
25
24
  url: 'https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg'
26
25
  };
27
- const {
28
- getByText,
29
- getByTestId
30
- } = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {
31
- image: image
32
- }));
26
+ var _render2 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_["default"], {
27
+ image: image
28
+ })),
29
+ getByText = _render2.getByText,
30
+ getByTestId = _render2.getByTestId;
33
31
  expect(getByText('Remove')).toBeInTheDocument();
34
32
  expect(getByText('Replace')).toBeInTheDocument();
35
33
  expect(getByTestId('image-upload')).toBeInTheDocument();
@@ -3,45 +3,29 @@
3
3
  */
4
4
 
5
5
  @use "~@wordpress/base-styles/colors" as wp-colors;
6
+ @use "~@wordpress/base-styles/variables" as wp-vars;
6
7
 
7
8
  .newspack-image-upload {
8
- margin: 32px 0;
9
- &__header {
10
- display: flex;
11
- }
12
- &__label {
13
- margin: 0 0 8px;
14
- }
9
+ margin: wp-vars.$grid-unit-40 0;
15
10
  &__image {
16
11
  align-items: center;
12
+ background-position: center;
17
13
  background-repeat: no-repeat;
18
14
  background-size: contain;
19
- background-position: center;
20
- border: 1px dashed wp-colors.$gray-700;
21
- border-radius: 2px;
15
+ border: 1px dashed wp-colors.$gray-600;
16
+ border-radius: wp-vars.$radius-small;
22
17
  display: flex;
23
18
  justify-content: center;
24
19
  max-width: 100%;
25
- min-height: 48px;
20
+ min-height: wp-vars.$grid-unit-50;
26
21
  position: relative;
27
22
  &--covering {
28
23
  background-size: cover;
29
24
  }
30
25
  &:not(&--has-image) {
31
- .newspack-button {
32
- background: white !important;
33
- border-radius: 2px !important;
34
- padding: 4px 16px !important;
35
-
36
- &:active,
37
- &:focus,
38
- &:hover {
39
- background: white !important;
40
- }
41
-
42
- &:focus {
43
- outline-offset: -3px !important;
44
- }
26
+ .components-button {
27
+ justify-content: center;
28
+ width: calc(100% - 2px);
45
29
  }
46
30
  }
47
31
  &--has-image {
@@ -49,8 +33,8 @@
49
33
  overflow: hidden;
50
34
  &::before,
51
35
  &::after {
52
- border: 1px solid rgba(black, 0.54);
53
- border-radius: 2px;
36
+ border: 1px solid rgba(wp-colors.$black, 0.54);
37
+ border-radius: wp-vars.$radius-small;
54
38
  content: "";
55
39
  inset: 0;
56
40
  position: absolute;
@@ -66,7 +50,7 @@
66
50
  position: relative;
67
51
  }
68
52
  &::after {
69
- background: rgba(white, 0.9);
53
+ background: rgba(wp-colors.$white, 0.95);
70
54
  border-color: wp-colors.$gray-700;
71
55
  }
72
56
  &:focus-within,
@@ -80,20 +64,8 @@
80
64
  max-height: 100%;
81
65
  max-width: 100%;
82
66
  }
83
- .sep {
84
- background: transparent;
85
- display: block;
86
- height: 8px;
87
- margin: 0;
88
- width: 100%;
89
- }
90
67
  }
91
68
  }
92
- &__image + &__help {
93
- color: wp-colors.$gray-700;
94
- font-size: 12px;
95
- margin: 1em 0 0;
96
- }
97
69
  &__controls {
98
70
  align-items: center;
99
71
  display: flex;