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,11 +4,17 @@
4
4
  */
5
5
 
6
6
  @use "sass:color";
7
+ @use "sass:math";
7
8
 
8
9
  @function to-rgb($color) {
9
10
  @return color.channel($color, "red", $space: rgb) + ", " + color.channel($color, "green", $space: rgb) + ", " + color.channel($color, "blue", $space: rgb);
10
11
  }
11
12
 
13
+ @function to-rgba($color) {
14
+ $alpha: math.div(math.round(color.channel($color, "alpha") * 100), 100);
15
+ @return rgba(color.channel($color, "red", $space: rgb), color.channel($color, "green", $space: rgb), color.channel($color, "blue", $space: rgb), $alpha);
16
+ }
17
+
12
18
  // Primary: Hex
13
19
  $primary-000: #dfe7f4;
14
20
  $primary-050: #bfcfe9;
@@ -130,8 +136,8 @@ $neutral-300: #ddd;
130
136
  $neutral-400: #ccc;
131
137
  $neutral-500: #949494;
132
138
  $neutral-600: #6c6c6c;
133
- $neutral-700: #000000b3;
134
- $neutral-800: #3e3e3e;
139
+ $neutral-700: #5d5d5d;
140
+ $neutral-800: #393939;
135
141
  $neutral-900: #1e1e1e;
136
142
  $neutral-1000: #000;
137
143
 
@@ -149,6 +155,36 @@ $neutral-800--rgb: to-rgb($neutral-800);
149
155
  $neutral-900--rgb: to-rgb($neutral-900);
150
156
  $neutral-1000--rgb: to-rgb($neutral-1000);
151
157
 
158
+ // Overlay: Hex
159
+ // Stepped black scrim ramp, deliberately spanning 5%–95% alpha — never fully
160
+ // transparent or fully opaque. For solid black, use $neutral-1000 instead.
161
+ $overlay-000: #0000000d;
162
+ $overlay-050: #0000001a;
163
+ $overlay-100: #00000026;
164
+ $overlay-200: #00000033;
165
+ $overlay-300: #0000004d;
166
+ $overlay-400: #00000066;
167
+ $overlay-500: #00000080;
168
+ $overlay-600: #00000099;
169
+ $overlay-700: #000000b3;
170
+ $overlay-800: #000000cc;
171
+ $overlay-900: #000000e6;
172
+ $overlay-1000: #000000f2;
173
+
174
+ // Overlay: RGBA
175
+ $overlay-000--rgba: to-rgba($overlay-000);
176
+ $overlay-050--rgba: to-rgba($overlay-050);
177
+ $overlay-100--rgba: to-rgba($overlay-100);
178
+ $overlay-200--rgba: to-rgba($overlay-200);
179
+ $overlay-300--rgba: to-rgba($overlay-300);
180
+ $overlay-400--rgba: to-rgba($overlay-400);
181
+ $overlay-500--rgba: to-rgba($overlay-500);
182
+ $overlay-600--rgba: to-rgba($overlay-600);
183
+ $overlay-700--rgba: to-rgba($overlay-700);
184
+ $overlay-800--rgba: to-rgba($overlay-800);
185
+ $overlay-900--rgba: to-rgba($overlay-900);
186
+ $overlay-1000--rgba: to-rgba($overlay-1000);
187
+
152
188
  // Success: Hex
153
189
  $success-000: #edfaef;
154
190
  $success-050: #b8e6bf;
@@ -257,6 +293,20 @@ $warning-400--rgb: to-rgb($warning-400);
257
293
  neutral-900: $neutral-900;
258
294
  neutral-1000: $neutral-1000;
259
295
 
296
+ // Overlay
297
+ overlay-000: $overlay-000;
298
+ overlay-050: $overlay-050;
299
+ overlay-100: $overlay-100;
300
+ overlay-200: $overlay-200;
301
+ overlay-300: $overlay-300;
302
+ overlay-400: $overlay-400;
303
+ overlay-500: $overlay-500;
304
+ overlay-600: $overlay-600;
305
+ overlay-700: $overlay-700;
306
+ overlay-800: $overlay-800;
307
+ overlay-900: $overlay-900;
308
+ overlay-1000: $overlay-1000;
309
+
260
310
  // Success
261
311
  success-000: $success-000;
262
312
  success-050: $success-050;
package/copy-styles.js CHANGED
@@ -35,12 +35,13 @@ rcopy( inputDir, outputDirCommon, copyOptions )
35
35
  .catch( err => {
36
36
  console.error( err );
37
37
  } );
38
- rcopy( path.join( dir, '../../src', 'shared' ), path.join( dir, 'shared' ) )
38
+ rcopy( path.join( dir, '../../plugins/newspack-plugin/src', 'shared' ), path.join( dir, 'shared' ) )
39
39
  .then( () => {
40
40
  console.log( 'Copied shared lib' );
41
41
  } )
42
42
  .catch( err => {
43
- console.error( err );
43
+ console.error( 'Failed to copy shared lib:', err );
44
+ process.exit( 1 );
44
45
  } );
45
46
  rcopy( path.join( dir, '../colors' ), path.join( dir, 'colors' ), copyOptions )
46
47
  .then( () => {
@@ -4,15 +4,13 @@ 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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
9
  var _element = require("@wordpress/element");
9
10
  var _icons = require("@wordpress/icons");
10
11
  var _classnames = _interopRequireDefault(require("classnames"));
11
12
  require("./style.scss");
12
13
  var _jsxRuntime = require("react/jsx-runtime");
13
- /* eslint-disable jsx-a11y/click-events-have-key-events */
14
- /* eslint-disable jsx-a11y/no-static-element-interactions */
15
-
16
14
  /**
17
15
  * WordPress dependencies
18
16
  */
@@ -25,17 +23,24 @@ var _jsxRuntime = require("react/jsx-runtime");
25
23
  * Internal dependencies
26
24
  */
27
25
 
28
- const Accordion = ({
29
- children,
30
- title
31
- }) => {
32
- const [isOpen, setIsOpen] = (0, _element.useState)(false);
26
+ var Accordion = function Accordion(_ref) {
27
+ var children = _ref.children,
28
+ title = _ref.title,
29
+ _ref$defaultOpen = _ref.defaultOpen,
30
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen;
31
+ var _useState = (0, _element.useState)(defaultOpen),
32
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
33
+ isOpen = _useState2[0],
34
+ setIsOpen = _useState2[1];
33
35
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("details", {
34
- className: (0, _classnames.default)('newspack-accordion', {
36
+ className: (0, _classnames["default"])('newspack-accordion', {
35
37
  'newspack-accordion--is-open': isOpen
36
38
  }),
39
+ open: isOpen,
40
+ onToggle: function onToggle(e) {
41
+ return setIsOpen(e.currentTarget.open);
42
+ },
37
43
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("summary", {
38
- onClick: () => setIsOpen(!isOpen),
39
44
  children: [title, /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
40
45
  className: "newspack-accordion__icon",
41
46
  icon: _icons.chevronRight,
@@ -47,4 +52,4 @@ const Accordion = ({
47
52
  })]
48
53
  });
49
54
  };
50
- var _default = exports.default = Accordion;
55
+ var _default = exports["default"] = Accordion;
@@ -4,7 +4,9 @@ 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
10
  var _components = require("@wordpress/components");
9
11
  var _element = require("@wordpress/element");
10
12
  var _i18n = require("@wordpress/i18n");
@@ -14,110 +16,125 @@ var _actionCardD = require("./action-card.d.ts");
14
16
  require("./style.scss");
15
17
  var _classnames = _interopRequireDefault(require("classnames"));
16
18
  var _jsxRuntime = require("react/jsx-runtime");
17
- /**
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
18
21
  * Action Card
19
- */
20
-
21
- /**
22
+ */ /**
22
23
  * WordPress dependencies
23
- */
24
-
25
- /**
24
+ */ /**
26
25
  * Internal dependencies
27
- */
28
-
29
- /**
26
+ */ /**
30
27
  * External dependencies
31
- */
32
-
33
- /**
28
+ */ /**
34
29
  * ActionCard component
35
30
  * @param {ActionCardProps} props Component props.
36
31
  * @return {JSX.Element} ActionCard component.
37
- */const ActionCard = ({
38
- badge,
39
- badgeLevel,
40
- className,
41
- checkbox,
42
- children,
43
- collapse,
44
- disabled,
45
- title,
46
- heading = 2,
47
- description,
48
- handoff,
49
- editLink,
50
- href,
51
- notification,
52
- notificationLevel,
53
- notificationHTML,
54
- actionContent,
55
- actionText,
56
- secondaryActionText,
57
- secondaryDestructive,
58
- id,
59
- image,
60
- imageLink,
61
- indent,
62
- isSmall,
63
- isMedium,
64
- simple,
65
- onClick,
66
- onSecondaryActionClick,
67
- isWaiting,
68
- titleLink,
69
- toggleChecked = false,
70
- toggleOnChange,
71
- togglePosition = 'leading',
72
- hasGreyHeader,
73
- hasWhiteHeader,
74
- noBorder,
75
- isPending,
76
- expandable = false,
77
- isExpanded,
78
- isButtonEnabled = false,
79
- // Draggable props. All are required to enable drag sorting.
80
- draggable = false,
81
- dragIndex,
82
- dragWrapperRef,
83
- onDragCallback
84
- }) => {
85
- const [expanded, setExpanded] = (0, _element.useState)(Boolean(isExpanded));
86
- const [dragging, setDragging] = (0, _element.useState)(false);
87
- const [targetIndex, setTargetIndex] = (0, _element.useState)(null);
88
- const [dragRef, setDragRef] = (0, _element.useState)(null);
89
- (0, _element.useEffect)(() => {
32
+ */
33
+ var ActionCard = function ActionCard(_ref) {
34
+ var badge = _ref.badge,
35
+ badgeLevel = _ref.badgeLevel,
36
+ className = _ref.className,
37
+ checkbox = _ref.checkbox,
38
+ children = _ref.children,
39
+ collapse = _ref.collapse,
40
+ disabled = _ref.disabled,
41
+ title = _ref.title,
42
+ _ref$heading = _ref.heading,
43
+ heading = _ref$heading === void 0 ? 2 : _ref$heading,
44
+ description = _ref.description,
45
+ handoff = _ref.handoff,
46
+ handoffUrl = _ref.handoffUrl,
47
+ bannerText = _ref.bannerText,
48
+ bannerButtonText = _ref.bannerButtonText,
49
+ editLink = _ref.editLink,
50
+ href = _ref.href,
51
+ notification = _ref.notification,
52
+ notificationLevel = _ref.notificationLevel,
53
+ notificationHTML = _ref.notificationHTML,
54
+ actionContent = _ref.actionContent,
55
+ actionText = _ref.actionText,
56
+ secondaryActionText = _ref.secondaryActionText,
57
+ secondaryDestructive = _ref.secondaryDestructive,
58
+ id = _ref.id,
59
+ image = _ref.image,
60
+ imageLink = _ref.imageLink,
61
+ indent = _ref.indent,
62
+ isSmall = _ref.isSmall,
63
+ isMedium = _ref.isMedium,
64
+ simple = _ref.simple,
65
+ onClick = _ref.onClick,
66
+ onSecondaryActionClick = _ref.onSecondaryActionClick,
67
+ isWaiting = _ref.isWaiting,
68
+ titleLink = _ref.titleLink,
69
+ _ref$toggleChecked = _ref.toggleChecked,
70
+ toggleChecked = _ref$toggleChecked === void 0 ? false : _ref$toggleChecked,
71
+ toggleOnChange = _ref.toggleOnChange,
72
+ _ref$togglePosition = _ref.togglePosition,
73
+ togglePosition = _ref$togglePosition === void 0 ? 'leading' : _ref$togglePosition,
74
+ hasGreyHeader = _ref.hasGreyHeader,
75
+ hasWhiteHeader = _ref.hasWhiteHeader,
76
+ noBorder = _ref.noBorder,
77
+ isPending = _ref.isPending,
78
+ _ref$expandable = _ref.expandable,
79
+ expandable = _ref$expandable === void 0 ? false : _ref$expandable,
80
+ isExpanded = _ref.isExpanded,
81
+ _ref$isButtonEnabled = _ref.isButtonEnabled,
82
+ isButtonEnabled = _ref$isButtonEnabled === void 0 ? false : _ref$isButtonEnabled,
83
+ _ref$draggable = _ref.draggable,
84
+ draggable = _ref$draggable === void 0 ? false : _ref$draggable,
85
+ dragIndex = _ref.dragIndex,
86
+ dragWrapperRef = _ref.dragWrapperRef,
87
+ onDragCallback = _ref.onDragCallback;
88
+ var _useState = (0, _element.useState)(Boolean(isExpanded)),
89
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
90
+ expanded = _useState2[0],
91
+ setExpanded = _useState2[1];
92
+ var _useState3 = (0, _element.useState)(false),
93
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
94
+ dragging = _useState4[0],
95
+ setDragging = _useState4[1];
96
+ var _useState5 = (0, _element.useState)(null),
97
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
98
+ targetIndex = _useState6[0],
99
+ setTargetIndex = _useState6[1];
100
+ var _useState7 = (0, _element.useState)(null),
101
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
102
+ dragRef = _useState8[0],
103
+ setDragRef = _useState8[1];
104
+ (0, _element.useEffect)(function () {
90
105
  if (typeof isExpanded === 'boolean') {
91
106
  setExpanded(isExpanded);
92
107
  }
93
108
  }, [isExpanded]);
94
- (0, _element.useEffect)(() => {
109
+ (0, _element.useEffect)(function () {
95
110
  if (dragWrapperRef && !dragRef) {
96
111
  setDragRef(dragWrapperRef);
97
112
  }
98
- }, [dragWrapperRef?.current]);
99
- (0, _element.useEffect)(() => {
113
+ }, [dragWrapperRef === null || dragWrapperRef === void 0 ? void 0 : dragWrapperRef.current]);
114
+ (0, _element.useEffect)(function () {
100
115
  if (collapse && expanded) {
101
116
  setExpanded(false);
102
117
  }
103
118
  }, [collapse]);
104
- const hasChildren = notification || children;
105
- const classes = (0, _classnames.default)('newspack-action-card', simple && 'newspack-card--is-clickable', hasGreyHeader && 'newspack-card--has-grey-header', hasWhiteHeader && 'newspack-card--has-white-header', hasChildren && 'newspack-card--has-children', indent && 'newspack-card--indent', isSmall && 'is-small', isMedium && 'is-medium', checkbox && 'has-checkbox', expandable && 'is-expandable', draggable && 'is-draggable', actionContent && 'has-action-content', className);
106
- const backgroundImageStyles = url => {
119
+ var hasChildren = notification || children;
120
+ var classes = (0, _classnames["default"])('newspack-action-card', simple && 'newspack-card--is-clickable', hasGreyHeader && 'newspack-card--has-grey-header', hasWhiteHeader && 'newspack-card--has-white-header', hasChildren && 'newspack-card--has-children', indent && 'newspack-card--indent', isSmall && 'is-small', isMedium && 'is-medium', checkbox && 'has-checkbox', expandable && 'is-expandable', draggable && 'is-draggable', actionContent && 'has-action-content', className);
121
+ var backgroundImageStyles = function backgroundImageStyles(url) {
107
122
  return url ? {
108
- backgroundImage: `url(${url})`
123
+ backgroundImage: "url(".concat(url, ")")
109
124
  } : {};
110
125
  };
111
- const titleProps = toggleOnChange && !titleLink && !disabled ? {
112
- onClick: () => toggleOnChange(!toggleChecked),
126
+ var titleProps = toggleOnChange && !titleLink && !disabled ? {
127
+ onClick: function onClick() {
128
+ return toggleOnChange(!toggleChecked);
129
+ },
113
130
  tabIndex: '0'
114
131
  } : {};
115
- const togglePositionClass = togglePosition === 'trailing' ? 'is-toggle-trailing' : 'is-toggle-leading';
116
- const hasInternalLink = href && href.indexOf('http') !== 0;
117
- const isDisplayingSecondaryAction = secondaryActionText && onSecondaryActionClick;
118
- const badges = !Array.isArray(badge) && badge ? [badge] : badge;
119
- const HeadingTag = `h${heading}`;
120
- const cardContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
132
+ var togglePositionClass = togglePosition === 'trailing' ? 'is-toggle-trailing' : 'is-toggle-leading';
133
+ var hasInternalLink = href && href.indexOf('http') !== 0;
134
+ var isDisplayingSecondaryAction = secondaryActionText && onSecondaryActionClick;
135
+ var badges = !Array.isArray(badge) && badge ? [badge] : badge;
136
+ var HeadingTag = "h".concat(heading);
137
+ var cardContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
121
138
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
122
139
  className: "newspack-action-card__region newspack-action-card__region-top",
123
140
  children: [toggleOnChange && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
@@ -137,7 +154,7 @@ var _jsxRuntime = require("react/jsx-runtime");
137
154
  }), checkbox && !toggleOnChange && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
138
155
  className: "newspack-action-card__region newspack-action-card__region-left",
139
156
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
140
- className: (0, _classnames.default)('newspack-checkbox-icon', 'is-primary', 'checked' === checkbox && 'newspack-checkbox-icon--checked', isPending && 'newspack-checkbox-icon--pending'),
157
+ className: (0, _classnames["default"])('newspack-checkbox-icon', 'is-primary', 'checked' === checkbox && 'newspack-checkbox-icon--checked', isPending && 'newspack-checkbox-icon--pending'),
141
158
  children: 'checked' === checkbox && /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
142
159
  icon: _icons.check
143
160
  })
@@ -149,21 +166,25 @@ var _jsxRuntime = require("react/jsx-runtime");
149
166
  gutter: 8,
150
167
  noMargin: true,
151
168
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(HeadingTag, {
152
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
153
- className: "newspack-action-card__title",
154
- ...titleProps,
169
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", _objectSpread(_objectSpread({
170
+ className: "newspack-action-card__title"
171
+ }, titleProps), {}, {
155
172
  children: [titleLink && /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
156
173
  href: titleLink,
157
174
  children: title
158
175
  }), !titleLink && expandable && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
159
176
  isLink: true,
160
- onClick: () => setExpanded(!expanded),
177
+ onClick: function onClick() {
178
+ return setExpanded(!expanded);
179
+ },
161
180
  children: title
162
181
  }), !titleLink && !expandable && title]
163
- }), badges?.length && badges.map((badgeText, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
164
- className: `newspack-action-card__badge newspack-action-card__badge-level-${badgeLevel}`,
165
- children: badgeText
166
- }, `badge-${i}`))]
182
+ })), (badges === null || badges === void 0 ? void 0 : badges.length) && badges.map(function (badgeText, i) {
183
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
184
+ className: "newspack-action-card__badge newspack-action-card__badge-level-".concat(badgeLevel),
185
+ children: badgeText
186
+ }, "badge-".concat(i));
187
+ })]
167
188
  }), description && /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
168
189
  children: [typeof description === 'string' && description, typeof description === 'function' && description()]
169
190
  })]
@@ -173,6 +194,15 @@ var _jsxRuntime = require("react/jsx-runtime");
173
194
  children: [actionContent && actionContent, actionText && (handoff ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Handoff, {
174
195
  plugin: handoff,
175
196
  editLink: editLink,
197
+ bannerText: bannerText,
198
+ bannerButtonText: bannerButtonText,
199
+ compact: true,
200
+ isLink: true,
201
+ children: actionText
202
+ }) : handoffUrl ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Handoff, {
203
+ url: handoffUrl,
204
+ bannerText: bannerText,
205
+ bannerButtonText: bannerButtonText,
176
206
  compact: true,
177
207
  isLink: true,
178
208
  children: actionText
@@ -200,7 +230,9 @@ var _jsxRuntime = require("react/jsx-runtime");
200
230
  children: secondaryActionText
201
231
  })]
202
232
  }), expandable && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
203
- onClick: () => setExpanded(!expanded),
233
+ onClick: function onClick() {
234
+ return setExpanded(!expanded);
235
+ },
204
236
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
205
237
  icon: expanded ? _icons.chevronUp : _icons.chevronDown,
206
238
  height: 24,
@@ -230,12 +262,12 @@ var _jsxRuntime = require("react/jsx-runtime");
230
262
  children: children
231
263
  }) : null]
232
264
  });
233
- if (draggable && dragRef?.current && typeof dragIndex === 'number' && onDragCallback && id) {
234
- let wrapperRect = dragRef.current.getBoundingClientRect();
235
- let draggableCards = Array.prototype.slice.call(dragRef.current.querySelectorAll('.newspack-action-card__draggable-wrapper'));
236
- const isFirstTarget = dragIndex === 0;
237
- const isLastTarget = dragIndex === draggableCards.length - 1;
238
- const handleDragStart = () => {
265
+ if (draggable && dragRef !== null && dragRef !== void 0 && dragRef.current && typeof dragIndex === 'number' && onDragCallback && id) {
266
+ var wrapperRect = dragRef.current.getBoundingClientRect();
267
+ var draggableCards = Array.prototype.slice.call(dragRef.current.querySelectorAll('.newspack-action-card__draggable-wrapper'));
268
+ var isFirstTarget = dragIndex === 0;
269
+ var isLastTarget = dragIndex === draggableCards.length - 1;
270
+ var handleDragStart = function handleDragStart() {
239
271
  draggableCards = Array.prototype.slice.call(dragRef.current.querySelectorAll('.newspack-action-card__draggable-wrapper'));
240
272
  wrapperRect = dragRef.current.getBoundingClientRect();
241
273
  if (dragging) {
@@ -244,17 +276,17 @@ var _jsxRuntime = require("react/jsx-runtime");
244
276
  setTargetIndex(dragIndex);
245
277
  setDragging(true);
246
278
  };
247
- const handleDragEnd = () => {
279
+ var handleDragEnd = function handleDragEnd() {
248
280
  if (targetIndex !== null && targetIndex !== dragIndex) {
249
281
  onDragCallback(targetIndex);
250
282
  }
251
283
  setTargetIndex(null);
252
284
  setDragging(false);
253
285
  };
254
- const handleDragOver = e => {
255
- const isDraggingToTop = e.pageY <= wrapperRect.top + window.scrollY;
256
- const isDraggingToBottom = e.pageY >= wrapperRect.bottom + window.scrollY;
257
- const target = e.target.closest('.newspack-action-card__draggable-wrapper');
286
+ var handleDragOver = function handleDragOver(e) {
287
+ var isDraggingToTop = e.pageY <= wrapperRect.top + window.scrollY;
288
+ var isDraggingToBottom = e.pageY >= wrapperRect.bottom + window.scrollY;
289
+ var target = e.target.closest('.newspack-action-card__draggable-wrapper');
258
290
  if (isDraggingToTop || isDraggingToBottom || target) {
259
291
  setTargetIndex(draggableCards.indexOf(target));
260
292
 
@@ -276,47 +308,52 @@ var _jsxRuntime = require("react/jsx-runtime");
276
308
  };
277
309
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
278
310
  className: 'newspack-action-card__draggable-wrapper' + (dragging ? ' is-dragging' : ''),
279
- id: `draggable-card-${id}`,
311
+ id: "draggable-card-".concat(id),
280
312
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Draggable, {
281
- elementId: `draggable-card-${id}`,
313
+ elementId: "draggable-card-".concat(id),
282
314
  transferData: {},
283
315
  onDragStart: handleDragStart,
284
316
  onDragEnd: handleDragEnd,
285
317
  onDragOver: handleDragOver,
286
- children: ({
287
- onDraggableStart,
288
- onDraggableEnd
289
- }) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.Card, {
290
- className: classes,
291
- onClick: simple && onClick,
292
- id: id !== null && id !== void 0 ? id : null,
293
- noBorder: noBorder,
294
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
295
- className: "newspack-action-card__draggable-controls",
296
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
297
- className: "drag-handle",
298
- draggable: true,
299
- onDragStart: onDraggableStart,
300
- onDragEnd: onDraggableEnd,
301
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
302
- icon: _icons.dragHandle
303
- })
304
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
305
- className: "movers",
306
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
307
- icon: _icons.chevronUp,
308
- onClick: () => onDragCallback(dragIndex - 1),
309
- disabled: isFirstTarget,
310
- label: (0, _i18n.__)('Move one position up', 'newspack-plugin')
311
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
312
- icon: _icons.chevronDown,
313
- onClick: () => onDragCallback(dragIndex + 1),
314
- disabled: isLastTarget,
315
- label: (0, _i18n.__)('Move one position down', 'newspack-plugin')
318
+ children: function children(_ref2) {
319
+ var onDraggableStart = _ref2.onDraggableStart,
320
+ onDraggableEnd = _ref2.onDraggableEnd;
321
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.Card, {
322
+ className: classes,
323
+ onClick: simple && onClick,
324
+ id: id !== null && id !== void 0 ? id : null,
325
+ noBorder: noBorder,
326
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
327
+ className: "newspack-action-card__draggable-controls",
328
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
329
+ className: "drag-handle",
330
+ draggable: true,
331
+ onDragStart: onDraggableStart,
332
+ onDragEnd: onDraggableEnd,
333
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
334
+ icon: _icons.dragHandle
335
+ })
336
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
337
+ className: "movers",
338
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
339
+ icon: _icons.chevronUp,
340
+ onClick: function onClick() {
341
+ return onDragCallback(dragIndex - 1);
342
+ },
343
+ disabled: isFirstTarget,
344
+ label: (0, _i18n.__)('Move one position up', 'newspack-plugin')
345
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
346
+ icon: _icons.chevronDown,
347
+ onClick: function onClick() {
348
+ return onDragCallback(dragIndex + 1);
349
+ },
350
+ disabled: isLastTarget,
351
+ label: (0, _i18n.__)('Move one position down', 'newspack-plugin')
352
+ })]
316
353
  })]
317
- })]
318
- }), cardContent]
319
- })
354
+ }), cardContent]
355
+ });
356
+ }
320
357
  })
321
358
  });
322
359
  }
@@ -328,4 +365,4 @@ var _jsxRuntime = require("react/jsx-runtime");
328
365
  children: cardContent
329
366
  });
330
367
  };
331
- var _default = exports.default = ActionCard;
368
+ var _default = exports["default"] = ActionCard;