newspack-components 2.1.0 → 2.2.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 (268) hide show
  1. package/dist/cjs/accordion/index.js +46 -0
  2. package/dist/cjs/accordion/style.scss +27 -0
  3. package/dist/cjs/action-card/index.js +48 -25
  4. package/dist/cjs/action-card/style.scss +100 -23
  5. package/dist/cjs/autocomplete-tokenfield/index.js +13 -41
  6. package/dist/cjs/autocomplete-tokenfield/style.scss +2 -2
  7. package/dist/cjs/autocomplete-with-suggestions/index.js +30 -51
  8. package/dist/cjs/autocomplete-with-suggestions/style.scss +16 -15
  9. package/dist/cjs/button/index.js +5 -13
  10. package/dist/cjs/button-card/index.js +1 -10
  11. package/dist/cjs/button-card/style.scss +13 -13
  12. package/dist/cjs/card/index.js +1 -8
  13. package/dist/cjs/card/style.scss +25 -8
  14. package/dist/cjs/category-autocomplete/index.js +18 -38
  15. package/dist/cjs/category-autocomplete/style.scss +0 -2
  16. package/dist/cjs/color-picker/index.js +1 -15
  17. package/dist/cjs/color-picker/style.scss +0 -3
  18. package/dist/cjs/consts.js +5 -3
  19. package/dist/cjs/custom-select-control/index.js +1 -9
  20. package/dist/cjs/custom-select-control/style.scss +6 -7
  21. package/dist/cjs/date-range-picker/index.js +1 -10
  22. package/dist/cjs/date-range-picker/style.scss +12 -12
  23. package/dist/cjs/footer/index.js +5 -17
  24. package/dist/cjs/footer/style.scss +5 -5
  25. package/dist/cjs/form-token-field/index.js +1 -9
  26. package/dist/cjs/form-token-field/style.scss +2 -3
  27. package/dist/cjs/global-notices/index.js +1 -8
  28. package/dist/cjs/grid/index.js +1 -8
  29. package/dist/cjs/grid/style.scss +5 -5
  30. package/dist/cjs/handoff/index.js +8 -17
  31. package/dist/cjs/handoff-message/index.js +50 -0
  32. package/dist/cjs/hooks/index.js +1 -7
  33. package/dist/cjs/hooks/useObjectState.js +7 -13
  34. package/dist/cjs/hooks/useObjectState.test.js +0 -14
  35. package/dist/cjs/hooks/useOnClickOutside.js +3 -6
  36. package/dist/cjs/hooks/usePrompt.js +1 -13
  37. package/dist/cjs/image-upload/index.js +21 -19
  38. package/dist/cjs/image-upload/index.test.js +0 -5
  39. package/dist/cjs/image-upload/style.scss +5 -9
  40. package/dist/cjs/index.js +28 -44
  41. package/dist/cjs/info-button/index.js +3 -11
  42. package/dist/cjs/info-button/style.scss +1 -3
  43. package/dist/cjs/modal/index.js +1 -9
  44. package/dist/cjs/modal/style.scss +8 -8
  45. package/dist/cjs/newspack-icon/index.js +1 -9
  46. package/dist/cjs/newspack-icon/style.scss +4 -4
  47. package/dist/cjs/newspack-logo/index.js +1 -9
  48. package/dist/cjs/newspack-logo/style.scss +3 -3
  49. package/dist/cjs/notice/index.js +8 -15
  50. package/dist/cjs/notice/style.scss +28 -15
  51. package/dist/cjs/patrons-logo/index.js +3 -11
  52. package/dist/cjs/plugin-installer/index.js +36 -36
  53. package/dist/cjs/plugin-installer/style.scss +5 -5
  54. package/dist/cjs/plugin-settings/SettingsSection.js +9 -28
  55. package/dist/cjs/plugin-settings/index.js +39 -22
  56. package/dist/cjs/plugin-toggle/index.js +40 -33
  57. package/dist/cjs/plugin-toggle/style.scss +2 -2
  58. package/dist/cjs/popover/index.js +1 -11
  59. package/dist/cjs/popover/style.scss +19 -16
  60. package/dist/cjs/position-control/index.js +113 -0
  61. package/dist/cjs/position-control/style.scss +66 -0
  62. package/dist/cjs/progress-bar/index.js +2 -9
  63. package/dist/cjs/progress-bar/index.test.js +2 -7
  64. package/dist/cjs/progress-bar/style.scss +4 -4
  65. package/dist/cjs/proxied-imports/router.js +0 -3
  66. package/dist/cjs/radio-control/index.js +1 -11
  67. package/dist/cjs/radio-control/style.scss +9 -9
  68. package/dist/cjs/section-header/index.js +44 -29
  69. package/dist/cjs/section-header/style.scss +2 -2
  70. package/dist/cjs/select-control/ButtonGroupControl.js +4 -13
  71. package/dist/cjs/select-control/GroupedSelectControl.js +9 -15
  72. package/dist/cjs/select-control/index.js +5 -12
  73. package/dist/cjs/select-control/style.scss +2 -2
  74. package/dist/cjs/settings/MinMaxSetting.js +3 -7
  75. package/dist/cjs/settings/SettingsCard.js +3 -7
  76. package/dist/cjs/settings/SettingsSection.js +1 -4
  77. package/dist/cjs/settings/index.js +0 -6
  78. package/dist/cjs/settings/style.scss +1 -1
  79. package/dist/cjs/steps-list/index.js +52 -0
  80. package/dist/cjs/steps-list/style.scss +11 -0
  81. package/dist/cjs/steps-list-item/index.js +56 -0
  82. package/dist/cjs/steps-list-item/style.scss +47 -0
  83. package/dist/cjs/style-card/index.js +6 -13
  84. package/dist/cjs/style-card/style.scss +9 -12
  85. package/dist/cjs/style.scss +5 -6
  86. package/dist/cjs/tabbed-navigation/index.js +19 -16
  87. package/dist/cjs/tabbed-navigation/style.scss +3 -4
  88. package/dist/cjs/text-control/index.js +6 -16
  89. package/dist/cjs/utils/index.js +10 -5
  90. package/dist/cjs/waiting/index.js +1 -9
  91. package/dist/cjs/web-preview/index.js +13 -28
  92. package/dist/cjs/web-preview/style.scss +14 -14
  93. package/dist/cjs/with-wizard/index.js +51 -31
  94. package/dist/cjs/with-wizard/style.scss +35 -37
  95. package/dist/cjs/with-wizard-screen/index.js +11 -17
  96. package/dist/cjs/with-wizard-screen/style.scss +14 -17
  97. package/dist/cjs/wizard/components/WizardError.js +3 -15
  98. package/dist/cjs/wizard/index.js +10 -24
  99. package/dist/cjs/wizard/store/index.js +42 -55
  100. package/dist/cjs/wizard/store/utils.js +1 -6
  101. package/dist/esm/accordion/index.js +38 -0
  102. package/dist/esm/accordion/style.scss +27 -0
  103. package/dist/esm/action-card/index.js +50 -21
  104. package/dist/esm/action-card/style.scss +100 -23
  105. package/dist/esm/autocomplete-tokenfield/index.js +14 -37
  106. package/dist/esm/autocomplete-tokenfield/style.scss +2 -2
  107. package/dist/esm/autocomplete-with-suggestions/index.js +28 -41
  108. package/dist/esm/autocomplete-with-suggestions/style.scss +16 -15
  109. package/dist/esm/button/index.js +5 -7
  110. package/dist/esm/button-card/index.js +2 -5
  111. package/dist/esm/button-card/style.scss +13 -13
  112. package/dist/esm/card/index.js +2 -5
  113. package/dist/esm/card/style.scss +25 -8
  114. package/dist/esm/category-autocomplete/index.js +17 -30
  115. package/dist/esm/category-autocomplete/style.scss +0 -2
  116. package/dist/esm/color-picker/index.js +2 -4
  117. package/dist/esm/color-picker/style.scss +0 -3
  118. package/dist/esm/consts.js +3 -2
  119. package/dist/esm/custom-select-control/index.js +2 -5
  120. package/dist/esm/custom-select-control/style.scss +6 -7
  121. package/dist/esm/date-range-picker/index.js +1 -3
  122. package/dist/esm/date-range-picker/style.scss +12 -12
  123. package/dist/esm/footer/index.js +3 -11
  124. package/dist/esm/footer/style.scss +5 -5
  125. package/dist/esm/form-token-field/index.js +2 -5
  126. package/dist/esm/form-token-field/style.scss +2 -3
  127. package/dist/esm/global-notices/index.js +1 -6
  128. package/dist/esm/grid/index.js +2 -5
  129. package/dist/esm/grid/style.scss +5 -5
  130. package/dist/esm/handoff/index.js +3 -14
  131. package/dist/esm/handoff-message/index.js +45 -0
  132. package/dist/esm/hooks/index.js +0 -2
  133. package/dist/esm/hooks/useObjectState.js +3 -8
  134. package/dist/esm/hooks/useObjectState.test.js +0 -3
  135. package/dist/esm/hooks/useOnClickOutside.js +2 -5
  136. package/dist/esm/hooks/usePrompt.js +1 -8
  137. package/dist/esm/image-upload/index.js +17 -16
  138. package/dist/esm/image-upload/style.scss +5 -9
  139. package/dist/esm/index.js +4 -0
  140. package/dist/esm/info-button/index.js +4 -6
  141. package/dist/esm/info-button/style.scss +1 -3
  142. package/dist/esm/modal/index.js +2 -5
  143. package/dist/esm/modal/style.scss +8 -8
  144. package/dist/esm/newspack-icon/index.js +2 -5
  145. package/dist/esm/newspack-icon/style.scss +4 -4
  146. package/dist/esm/newspack-logo/index.js +2 -5
  147. package/dist/esm/newspack-logo/style.scss +3 -3
  148. package/dist/esm/notice/index.js +4 -8
  149. package/dist/esm/notice/style.scss +28 -15
  150. package/dist/esm/patrons-logo/index.js +3 -5
  151. package/dist/esm/plugin-installer/index.js +35 -39
  152. package/dist/esm/plugin-installer/style.scss +5 -5
  153. package/dist/esm/plugin-settings/SettingsSection.js +8 -21
  154. package/dist/esm/plugin-settings/index.js +38 -24
  155. package/dist/esm/plugin-toggle/index.js +39 -36
  156. package/dist/esm/plugin-toggle/style.scss +2 -2
  157. package/dist/esm/popover/index.js +3 -6
  158. package/dist/esm/popover/style.scss +19 -16
  159. package/dist/esm/position-control/index.js +109 -0
  160. package/dist/esm/position-control/style.scss +66 -0
  161. package/dist/esm/progress-bar/index.js +2 -7
  162. package/dist/esm/progress-bar/index.test.js +2 -1
  163. package/dist/esm/progress-bar/style.scss +4 -4
  164. package/dist/esm/proxied-imports/router.js +1 -0
  165. package/dist/esm/radio-control/index.js +3 -6
  166. package/dist/esm/radio-control/style.scss +9 -9
  167. package/dist/esm/section-header/index.js +44 -25
  168. package/dist/esm/section-header/style.scss +2 -2
  169. package/dist/esm/select-control/ButtonGroupControl.js +5 -7
  170. package/dist/esm/select-control/GroupedSelectControl.js +5 -6
  171. package/dist/esm/select-control/index.js +6 -6
  172. package/dist/esm/select-control/style.scss +2 -2
  173. package/dist/esm/settings/MinMaxSetting.js +1 -3
  174. package/dist/esm/settings/SettingsCard.js +3 -4
  175. package/dist/esm/settings/SettingsSection.js +0 -2
  176. package/dist/esm/settings/style.scss +1 -1
  177. package/dist/esm/steps-list/index.js +43 -0
  178. package/dist/esm/steps-list/style.scss +11 -0
  179. package/dist/esm/steps-list-item/index.js +48 -0
  180. package/dist/esm/steps-list-item/style.scss +47 -0
  181. package/dist/esm/style-card/index.js +2 -5
  182. package/dist/esm/style-card/style.scss +9 -12
  183. package/dist/esm/style.scss +5 -6
  184. package/dist/esm/tabbed-navigation/index.js +20 -10
  185. package/dist/esm/tabbed-navigation/style.scss +3 -4
  186. package/dist/esm/text-control/index.js +2 -9
  187. package/dist/esm/utils/index.js +9 -3
  188. package/dist/esm/waiting/index.js +2 -5
  189. package/dist/esm/web-preview/index.js +9 -24
  190. package/dist/esm/web-preview/style.scss +14 -14
  191. package/dist/esm/with-wizard/index.js +49 -34
  192. package/dist/esm/with-wizard/style.scss +35 -37
  193. package/dist/esm/with-wizard-screen/index.js +9 -11
  194. package/dist/esm/with-wizard-screen/style.scss +14 -17
  195. package/dist/esm/wizard/components/WizardError.js +1 -10
  196. package/dist/esm/wizard/index.js +10 -12
  197. package/dist/esm/wizard/store/index.js +40 -46
  198. package/dist/esm/wizard/store/utils.js +1 -1
  199. package/package.json +4 -4
  200. package/shared/js/button-props.js +3 -1
  201. package/shared/scss/_mixins.scss +12 -0
  202. package/src/accordion/index.js +32 -0
  203. package/src/accordion/style.scss +27 -0
  204. package/src/action-card/index.js +43 -8
  205. package/src/action-card/style.scss +100 -23
  206. package/src/autocomplete-tokenfield/index.js +1 -1
  207. package/src/autocomplete-tokenfield/style.scss +2 -2
  208. package/src/autocomplete-with-suggestions/style.scss +16 -15
  209. package/src/button-card/style.scss +13 -13
  210. package/src/card/style.scss +25 -8
  211. package/src/category-autocomplete/index.js +3 -1
  212. package/src/category-autocomplete/style.scss +0 -2
  213. package/src/color-picker/style.scss +0 -3
  214. package/src/consts.js +2 -1
  215. package/src/custom-select-control/style.scss +6 -7
  216. package/src/date-range-picker/style.scss +12 -12
  217. package/src/footer/index.js +2 -2
  218. package/src/footer/style.scss +5 -5
  219. package/src/form-token-field/index.js +2 -7
  220. package/src/form-token-field/style.scss +2 -3
  221. package/src/grid/style.scss +5 -5
  222. package/src/handoff/index.js +3 -8
  223. package/src/handoff-message/index.js +39 -0
  224. package/src/hooks/useObjectState.js +2 -1
  225. package/src/image-upload/index.js +9 -3
  226. package/src/image-upload/style.scss +5 -9
  227. package/src/index.js +4 -0
  228. package/src/info-button/style.scss +1 -3
  229. package/src/modal/style.scss +8 -8
  230. package/src/newspack-icon/style.scss +4 -4
  231. package/src/newspack-logo/style.scss +3 -3
  232. package/src/notice/index.js +2 -0
  233. package/src/notice/style.scss +28 -15
  234. package/src/plugin-installer/index.js +15 -2
  235. package/src/plugin-installer/style.scss +5 -5
  236. package/src/plugin-settings/SettingsSection.js +7 -13
  237. package/src/plugin-settings/index.js +7 -2
  238. package/src/plugin-toggle/index.js +2 -3
  239. package/src/plugin-toggle/style.scss +2 -2
  240. package/src/popover/style.scss +19 -16
  241. package/src/position-control/index.js +122 -0
  242. package/src/position-control/style.scss +66 -0
  243. package/src/progress-bar/style.scss +4 -4
  244. package/src/radio-control/style.scss +9 -9
  245. package/src/section-header/index.js +32 -15
  246. package/src/section-header/style.scss +2 -2
  247. package/src/select-control/ButtonGroupControl.js +3 -0
  248. package/src/select-control/GroupedSelectControl.js +2 -1
  249. package/src/select-control/index.js +6 -2
  250. package/src/select-control/style.scss +2 -2
  251. package/src/settings/style.scss +1 -1
  252. package/src/steps-list/index.js +39 -0
  253. package/src/steps-list/style.scss +11 -0
  254. package/src/steps-list-item/index.js +40 -0
  255. package/src/steps-list-item/style.scss +47 -0
  256. package/src/style-card/index.js +2 -11
  257. package/src/style-card/style.scss +9 -12
  258. package/src/style.scss +5 -6
  259. package/src/tabbed-navigation/index.js +12 -4
  260. package/src/tabbed-navigation/style.scss +3 -4
  261. package/src/utils/index.js +9 -0
  262. package/src/web-preview/index.js +1 -1
  263. package/src/web-preview/style.scss +14 -14
  264. package/src/with-wizard/style.scss +35 -37
  265. package/src/with-wizard-screen/index.js +4 -1
  266. package/src/with-wizard-screen/style.scss +14 -17
  267. package/src/wizard/index.js +15 -3
  268. package/src/wizard/store/index.js +8 -2
@@ -1,20 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _element = require("@wordpress/element");
11
-
12
9
  require("./style.scss");
13
-
14
10
  var _classnames = _interopRequireDefault(require("classnames"));
15
-
16
11
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
17
-
18
12
  /**
19
13
  * Grid
20
14
  */
@@ -30,6 +24,7 @@ var _jsxRuntime = require("@emotion/react/jsx-runtime");
30
24
  /**
31
25
  * External dependencies
32
26
  */
27
+
33
28
  class Grid extends _element.Component {
34
29
  /**
35
30
  * Render
@@ -49,9 +44,7 @@ class Grid extends _element.Component {
49
44
  ...otherProps
50
45
  });
51
46
  }
52
-
53
47
  }
54
-
55
48
  Grid.defaultProps = {
56
49
  columns: 2,
57
50
  gutter: 32,
@@ -2,7 +2,7 @@
2
2
  * Grid
3
3
  */
4
4
 
5
- @import '~@wordpress/base-styles/colors';
5
+ @use '~@wordpress/base-styles/colors' as wp-colors;
6
6
 
7
7
  .newspack-grid {
8
8
  display: grid;
@@ -145,9 +145,9 @@
145
145
  // Table-like
146
146
  &__thead {
147
147
  background: rgba( black, 0.025 );
148
- border-bottom: 1px solid $gray-300;
149
- border-top: 1px solid $gray-300;
150
- color: $gray-900;
148
+ border-bottom: 1px solid wp-colors.$gray-300;
149
+ border-top: 1px solid wp-colors.$gray-300;
150
+ color: wp-colors.$gray-900;
151
151
 
152
152
  > *:not( .screen-reader-text ) {
153
153
  padding: 8px;
@@ -155,7 +155,7 @@
155
155
  }
156
156
 
157
157
  &__tbody {
158
- border-bottom: 1px solid $gray-300;
158
+ border-bottom: 1px solid wp-colors.$gray-300;
159
159
  padding: 8px 0;
160
160
  }
161
161
 
@@ -1,37 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
13
-
14
10
  var _element = require("@wordpress/element");
15
-
16
11
  var _i18n = require("@wordpress/i18n");
17
-
18
12
  var _ = require("../");
19
-
20
- var _lodash = require("lodash");
21
-
13
+ var _assign = _interopRequireDefault(require("lodash/assign"));
22
14
  var _classnames = _interopRequireDefault(require("classnames"));
23
-
24
15
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
25
-
26
16
  /**
27
17
  * Handoff
28
18
  */
29
-
30
19
  /**
31
20
  * WordPress dependencies.
32
21
  */
22
+ /**
23
+ * Internal dependencies.
24
+ */
33
25
  const __ = _i18n.__;
34
-
26
+ /**
27
+ * External dependencies.
28
+ */
35
29
  class Handoff extends _element.Component {
36
30
  constructor() {
37
31
  super(...arguments);
@@ -68,7 +62,7 @@ class Handoff extends _element.Component {
68
62
  primaryModalButton: __('Manage', 'newspack'),
69
63
  dismissModalButton: __('Dismiss', 'newspack')
70
64
  };
71
- return (0, _lodash.assign)(defaults, this.props);
65
+ return (0, _assign.default)(defaults, this.props);
72
66
  });
73
67
  (0, _defineProperty2.default)(this, "goToPlugin", plugin => {
74
68
  const {
@@ -92,7 +86,6 @@ class Handoff extends _element.Component {
92
86
  showModal: false
93
87
  };
94
88
  }
95
-
96
89
  /**
97
90
  * Render.
98
91
  */
@@ -180,9 +173,7 @@ class Handoff extends _element.Component {
180
173
  })]
181
174
  });
182
175
  }
183
-
184
176
  }
185
-
186
177
  Handoff.defaultProps = {
187
178
  onReady: () => {}
188
179
  };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = HandoffMessage;
7
+ var _element = require("@wordpress/element");
8
+ var _consts = require("../consts");
9
+ var _ = require("../");
10
+ var _jsxRuntime = require("@emotion/react/jsx-runtime");
11
+ /**
12
+ * WordPress dependencies.
13
+ */
14
+
15
+ /**
16
+ * Internal dependencies.
17
+ */
18
+
19
+ /**
20
+ * Handoff Message Component.
21
+ */function HandoffMessage() {
22
+ const [handoffMessage, setHandoffMessage] = (0, _element.useState)(false);
23
+ (0, _element.useEffect)(() => {
24
+ // Slight delay to allow for localStorage to be updated by RAS component.
25
+ setTimeout(() => {
26
+ const handoff = JSON.parse(localStorage.getItem(_consts.HANDOFF_KEY));
27
+ if (handoff?.message) {
28
+ setHandoffMessage(handoff.message);
29
+ } else {
30
+ setHandoffMessage(false);
31
+ }
32
+
33
+ // Clean up the notification if navigating away from the relevant page.
34
+ if (handoff?.url && -1 === window.location.href.indexOf(handoff.url)) {
35
+ window.localStorage.removeItem(_consts.HANDOFF_KEY);
36
+ setHandoffMessage(false);
37
+ }
38
+ }, 100);
39
+
40
+ // Clean up the notification when unmounting.
41
+ return () => window.localStorage.removeItem(_consts.HANDOFF_KEY);
42
+ }, []);
43
+ if (!handoffMessage) return null;
44
+ return (0, _jsxRuntime.jsx)(_.Notice, {
45
+ isHandoff: true,
46
+ isDismissible: false,
47
+ rawHTML: true,
48
+ noticeText: handoffMessage
49
+ });
50
+ }
@@ -1,28 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _element = require("@wordpress/element");
11
-
12
9
  var _usePrompt = _interopRequireDefault(require("./usePrompt"));
13
-
14
10
  var _useObjectState = _interopRequireDefault(require("./useObjectState"));
15
-
16
11
  var _useOnClickOutside = _interopRequireDefault(require("./useOnClickOutside"));
17
-
18
12
  /**
19
13
  * WordPress dependencies
20
14
  */
15
+
21
16
  const useUniqueId = prefix => {
22
17
  const id = (0, _element.useRef)(`${prefix}-${Math.round(Math.random() * 99999)}`);
23
18
  return id.current;
24
19
  };
25
-
26
20
  var _default = {
27
21
  usePrompt: _usePrompt.default,
28
22
  useObjectState: _useObjectState.default,
@@ -1,46 +1,40 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
7
-
8
8
  var _element = require("@wordpress/element");
9
-
10
- var _lodash = require("lodash");
11
-
9
+ var _isArray = _interopRequireDefault(require("lodash/isArray"));
10
+ var _mergeWith = _interopRequireDefault(require("lodash/mergeWith"));
12
11
  /**
13
12
  * WordPress dependencies
14
13
  */
14
+
15
15
  const mergeCustomizer = (objValue, srcValue) => {
16
- if ((0, _lodash.isArray)(objValue)) {
16
+ if ((0, _isArray.default)(objValue)) {
17
17
  // If it's an array, replace it (instead of concatenating).
18
18
  return srcValue;
19
19
  }
20
20
  };
21
+
21
22
  /**
22
23
  * A useState for an object.
23
24
  * Nested objects will be nested, but arrays replaced.
24
25
  */
25
-
26
-
27
26
  var _default = function _default() {
28
27
  let initial = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
29
28
  const [stateObject, setStateObject] = (0, _element.useState)(initial);
30
-
31
- const runUpdate = update => setStateObject(_stateObject => (0, _lodash.mergeWith)({}, _stateObject, update, mergeCustomizer));
32
-
29
+ const runUpdate = update => setStateObject(_stateObject => (0, _mergeWith.default)({}, _stateObject, update, mergeCustomizer));
33
30
  const updateStateObject = keyOrUpdate => {
34
31
  if (typeof keyOrUpdate === 'string') {
35
32
  return value => runUpdate({
36
33
  [keyOrUpdate]: value
37
34
  });
38
35
  }
39
-
40
36
  runUpdate(keyOrUpdate);
41
37
  };
42
-
43
38
  return [stateObject, updateStateObject];
44
39
  };
45
-
46
40
  exports.default = _default;
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  var _react = _interopRequireDefault(require("react"));
6
-
7
5
  var _react2 = require("@testing-library/react");
8
-
9
6
  var _useObjectState = _interopRequireDefault(require("./useObjectState"));
10
-
11
7
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
12
-
13
8
  const INIT_STATE = {
14
9
  name: 'Foo',
15
10
  widgets: [1],
@@ -18,7 +13,6 @@ const INIT_STATE = {
18
13
  baz: 1
19
14
  }
20
15
  };
21
-
22
16
  const TestComponent = () => {
23
17
  const [state, updateState] = (0, _useObjectState.default)(INIT_STATE);
24
18
  return (0, _jsxRuntime.jsxs)("div", {
@@ -53,24 +47,18 @@ const TestComponent = () => {
53
47
  })]
54
48
  });
55
49
  };
56
-
57
50
  describe('useObjectState', () => {
58
51
  const getState = () => JSON.parse(_react2.screen.getByPlaceholderText('state').getAttribute('value'));
59
-
60
52
  beforeEach(() => {
61
53
  (0, _react2.render)((0, _jsxRuntime.jsx)(TestComponent, {}));
62
54
  });
63
55
  it('updates arrays', () => {
64
56
  expect(getState()).toStrictEqual(INIT_STATE);
65
-
66
57
  _react2.screen.getByText('Remove widgets').click();
67
-
68
58
  expect(getState()).toMatchObject({
69
59
  widgets: []
70
60
  });
71
-
72
61
  _react2.screen.getByText('Add widget').click();
73
-
74
62
  expect(getState()).toMatchObject({
75
63
  widgets: [1]
76
64
  });
@@ -81,14 +69,12 @@ describe('useObjectState', () => {
81
69
  value: 'Ramon'
82
70
  }
83
71
  });
84
-
85
72
  expect(getState()).toMatchObject({
86
73
  name: 'Ramon'
87
74
  });
88
75
  });
89
76
  it('updates a nested object', () => {
90
77
  _react2.screen.getByText('Nested update').click();
91
-
92
78
  expect(getState()).toMatchObject({
93
79
  attributes: {
94
80
  bar: 2,
@@ -4,14 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _element = require("@wordpress/element");
9
-
10
8
  // https://usehooks.com/useOnClickOutside/
11
9
 
12
10
  /**
13
11
  * External dependencies.
14
12
  */
13
+
15
14
  const useOnClickOutside = (ref, handler) => {
16
15
  (0, _element.useEffect)(() => {
17
16
  const listener = event => {
@@ -19,17 +18,16 @@ const useOnClickOutside = (ref, handler) => {
19
18
  if (!ref.current || ref.current.contains(event.target)) {
20
19
  return;
21
20
  }
22
-
23
21
  handler(event);
24
22
  };
25
-
26
23
  document.addEventListener('mousedown', listener);
27
24
  document.addEventListener('touchstart', listener);
28
25
  return () => {
29
26
  document.removeEventListener('mousedown', listener);
30
27
  document.removeEventListener('touchstart', listener);
31
28
  };
32
- }, // Add ref and handler to effect dependencies
29
+ },
30
+ // Add ref and handler to effect dependencies
33
31
  // It's worth noting that because passed in handler is a new ...
34
32
  // ... function on every render that will cause this effect ...
35
33
  // ... callback/cleanup to run every render. It's not a big deal ...
@@ -37,6 +35,5 @@ const useOnClickOutside = (ref, handler) => {
37
35
  // ... passing it into this hook.
38
36
  [ref, handler]);
39
37
  };
40
-
41
38
  var _default = useOnClickOutside;
42
39
  exports.default = _default;
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _element = require("@wordpress/element");
11
-
12
9
  var _router = _interopRequireDefault(require("../proxied-imports/router"));
13
-
14
10
  // https://gist.github.com/sibelius/60a4e11da1f826b8d60dc3975a1ac805
15
11
 
16
12
  /**
@@ -20,45 +16,37 @@ var _router = _interopRequireDefault(require("../proxied-imports/router"));
20
16
  /**
21
17
  * Internal dependencies.
22
18
  */
19
+
23
20
  const {
24
21
  useHistory
25
22
  } = _router.default;
26
-
27
23
  var _default = (when, message) => {
28
24
  const history = useHistory();
29
25
  const self = (0, _element.useRef)(null);
30
-
31
26
  const onWindowOrTabClose = event => {
32
27
  if (!when) {
33
28
  return;
34
29
  }
35
-
36
30
  if (typeof event === 'undefined') {
37
31
  event = window.event;
38
32
  }
39
-
40
33
  if (event) {
41
34
  event.returnValue = message;
42
35
  }
43
-
44
36
  return message;
45
37
  };
46
-
47
38
  (0, _element.useEffect)(() => {
48
39
  if (when) {
49
40
  self.current = history.block(message);
50
41
  window.addEventListener('beforeunload', onWindowOrTabClose);
51
42
  }
52
-
53
43
  return () => {
54
44
  if (self.current) {
55
45
  self.current();
56
46
  }
57
-
58
47
  window.removeEventListener('beforeunload', onWindowOrTabClose);
59
48
  };
60
49
  }, [message, when]);
61
50
  return self.current;
62
51
  };
63
-
64
52
  exports.default = _default;
@@ -1,47 +1,44 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _element = require("@wordpress/element");
13
-
14
10
  var _i18n = require("@wordpress/i18n");
15
-
16
11
  var _ = require("../");
17
-
18
12
  require("./style.scss");
19
-
20
13
  var _classnames = _interopRequireDefault(require("classnames"));
21
-
22
14
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
23
-
24
15
  /**
25
16
  * Image Upload
26
17
  */
27
-
28
18
  /**
29
19
  * WordPress dependencies.
30
20
  */
21
+ /**
22
+ * Internal dependencies.
23
+ */
31
24
  const __ = _i18n.__;
32
-
25
+ /**
26
+ * External dependencies.
27
+ */
33
28
  class ImageUpload extends _element.Component {
34
29
  /**
35
30
  * Constructor.
36
31
  */
37
32
  constructor() {
38
33
  super(...arguments);
34
+ /**
35
+ * Open the WP media modal.
36
+ */
39
37
  (0, _defineProperty2.default)(this, "openModal", () => {
40
38
  if (this.state.frame) {
41
39
  this.state.frame.open();
42
40
  return;
43
41
  }
44
-
45
42
  this.setState({
46
43
  frame: wp.media({
47
44
  title: __('Select or upload image'),
@@ -58,6 +55,9 @@ class ImageUpload extends _element.Component {
58
55
  this.state.frame.open();
59
56
  });
60
57
  });
58
+ /**
59
+ * Update the state when an image is selected from the media modal.
60
+ */
61
61
  (0, _defineProperty2.default)(this, "handleImageSelect", () => {
62
62
  const {
63
63
  onChange
@@ -65,10 +65,14 @@ class ImageUpload extends _element.Component {
65
65
  const attachment = this.state.frame.state().get('selection').first().toJSON();
66
66
  onChange(attachment);
67
67
  });
68
+ /**
69
+ * Render.
70
+ */
68
71
  (0, _defineProperty2.default)(this, "render", () => {
69
72
  const {
70
73
  buttonLabel,
71
74
  className,
75
+ disabled,
72
76
  help,
73
77
  image,
74
78
  info,
@@ -94,7 +98,8 @@ class ImageUpload extends _element.Component {
94
98
  })]
95
99
  }), (0, _jsxRuntime.jsx)("div", {
96
100
  className: classes,
97
- style: { ...style
101
+ style: {
102
+ ...style
98
103
  },
99
104
  children: image?.url ? (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
100
105
  children: [(0, _jsxRuntime.jsx)("img", {
@@ -104,12 +109,14 @@ class ImageUpload extends _element.Component {
104
109
  }), (0, _jsxRuntime.jsxs)("div", {
105
110
  className: "newspack-image-upload__controls",
106
111
  children: [(0, _jsxRuntime.jsx)(_.Button, {
112
+ disabled: disabled,
107
113
  onClick: this.openModal,
108
114
  isLink: true,
109
115
  children: __('Replace', 'newspack')
110
116
  }), (0, _jsxRuntime.jsx)("span", {
111
117
  className: "sep"
112
118
  }), (0, _jsxRuntime.jsx)(_.Button, {
119
+ disabled: disabled,
113
120
  onClick: () => onChange(null),
114
121
  isLink: true,
115
122
  isDestructive: true,
@@ -117,6 +124,7 @@ class ImageUpload extends _element.Component {
117
124
  })]
118
125
  })]
119
126
  }) : (0, _jsxRuntime.jsx)(_.Button, {
127
+ disabled: disabled,
120
128
  onClick: this.openModal,
121
129
  isLink: true,
122
130
  children: buttonLabel ? buttonLabel : __('Upload', 'newspack')
@@ -131,12 +139,6 @@ class ImageUpload extends _element.Component {
131
139
  frame: false
132
140
  };
133
141
  }
134
- /**
135
- * Open the WP media modal.
136
- */
137
-
138
-
139
142
  }
140
-
141
143
  var _default = ImageUpload;
142
144
  exports.default = _default;
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  var _react = _interopRequireDefault(require("react"));
6
-
7
5
  var _react2 = require("@testing-library/react");
8
-
9
6
  var _ = _interopRequireDefault(require("./"));
10
-
11
7
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
12
-
13
8
  describe('ImageUpload', () => {
14
9
  it('should render an add image button', () => {
15
10
  const {
@@ -2,8 +2,7 @@
2
2
  * Image Upload
3
3
  */
4
4
 
5
- @import '../../../shared/scss/colors';
6
- @import '~@wordpress/base-styles/colors';
5
+ @use '~@wordpress/base-styles/colors' as wp-colors;
7
6
 
8
7
  .newspack-image-upload {
9
8
  margin: 32px 0;
@@ -18,7 +17,7 @@
18
17
  background-repeat: no-repeat;
19
18
  background-size: contain;
20
19
  background-position: center;
21
- border: 1px dashed $gray-700;
20
+ border: 1px dashed wp-colors.$gray-700;
22
21
  border-radius: 2px;
23
22
  display: flex;
24
23
  justify-content: center;
@@ -52,12 +51,9 @@
52
51
  &::after {
53
52
  border: 1px solid rgba( black, 0.54 );
54
53
  border-radius: 2px;
55
- bottom: 0;
56
54
  content: '';
57
- left: 0;
55
+ inset: 0;
58
56
  position: absolute;
59
- right: 0;
60
- top: 0;
61
57
  z-index: 0;
62
58
  }
63
59
  button,
@@ -71,7 +67,7 @@
71
67
  }
72
68
  &::after {
73
69
  background: rgba( white, 0.9 );
74
- border-color: $gray-700;
70
+ border-color: wp-colors.$gray-700;
75
71
  }
76
72
  &:focus-within,
77
73
  &:hover {
@@ -94,7 +90,7 @@
94
90
  }
95
91
  }
96
92
  &__image + &__help {
97
- color: $gray-700;
93
+ color: wp-colors.$gray-700;
98
94
  font-size: 12px;
99
95
  margin: 1em 0 0;
100
96
  }