newspack-components 4.2.0 → 4.4.0-epic-editor-refactor.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 (315) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/DEVELOPMENT.md +868 -0
  3. package/copy-styles.js +3 -2
  4. package/dist/cjs/accordion/index.js +17 -12
  5. package/dist/cjs/action-card/index.js +186 -140
  6. package/dist/cjs/action-card/style.scss +25 -2
  7. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  8. package/dist/cjs/autocomplete-with-latest-posts/index.js +351 -0
  9. package/dist/cjs/autocomplete-with-latest-posts/style.scss +150 -0
  10. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  11. package/dist/cjs/badge/index.js +32 -0
  12. package/dist/cjs/badge/style.scss +36 -0
  13. package/dist/cjs/box-contrast/index.js +19 -15
  14. package/dist/cjs/button/index.js +41 -24
  15. package/dist/cjs/button-props/button-props.js +5 -5
  16. package/dist/cjs/button-props/index.js +2 -2
  17. package/dist/cjs/card/core-card.js +199 -0
  18. package/dist/cjs/card/index.js +75 -35
  19. package/dist/cjs/card/style-core.scss +295 -0
  20. package/dist/cjs/card/style.scss +4 -4
  21. package/dist/cjs/card-feature/index.js +141 -0
  22. package/dist/cjs/card-feature/style.scss +75 -0
  23. package/dist/cjs/card-form/index.js +144 -0
  24. package/dist/cjs/card-form/style.scss +20 -0
  25. package/dist/cjs/card-settings-group/index.js +69 -0
  26. package/dist/cjs/card-settings-group/style.scss +33 -0
  27. package/dist/cjs/card-sortable-list/index.js +426 -0
  28. package/dist/cjs/card-sortable-list/style.scss +48 -0
  29. package/dist/cjs/category-autocomplete/index.js +175 -155
  30. package/dist/cjs/color-picker/index.js +41 -23
  31. package/dist/cjs/color-picker/index.test.js +82 -0
  32. package/dist/cjs/color-picker/style.scss +11 -13
  33. package/dist/cjs/confirm-dialog/index.js +123 -0
  34. package/dist/cjs/consts.js +1 -1
  35. package/dist/cjs/custom-select-control/index.js +39 -28
  36. package/dist/cjs/dataviews/index.js +38 -0
  37. package/dist/cjs/dataviews/style.scss +9 -0
  38. package/dist/cjs/divider/index.js +47 -0
  39. package/dist/cjs/divider/style.scss +51 -0
  40. package/dist/cjs/footer/index.js +36 -30
  41. package/dist/cjs/form-token-field/index.js +51 -40
  42. package/dist/cjs/form-token-field/style.scss +0 -5
  43. package/dist/cjs/global-notices/index.js +5 -5
  44. package/dist/cjs/grid/index.js +25 -18
  45. package/dist/cjs/grid/style.scss +67 -8
  46. package/dist/cjs/handoff/index.js +204 -156
  47. package/dist/cjs/handoff-message/index.js +12 -7
  48. package/dist/cjs/hooks/index.js +10 -8
  49. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  50. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  51. package/dist/cjs/hooks/useObjectState.js +21 -12
  52. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  53. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  54. package/dist/cjs/hooks/usePrompt.js +10 -13
  55. package/dist/cjs/image-upload/index.js +114 -123
  56. package/dist/cjs/image-upload/index.test.js +11 -13
  57. package/dist/cjs/image-upload/style.scss +12 -40
  58. package/dist/cjs/index.js +166 -92
  59. package/dist/cjs/info-button/index.js +43 -32
  60. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  61. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  62. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  63. package/dist/cjs/integration-icons/index.js +48 -0
  64. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  65. package/dist/cjs/integration-icons/salesforce.js +17 -0
  66. package/dist/cjs/integration-icons/wisepops.js +20 -0
  67. package/dist/cjs/modal/index.js +29 -19
  68. package/dist/cjs/modal/style.scss +47 -13
  69. package/dist/cjs/newspack-icon/index.js +45 -38
  70. package/dist/cjs/newspack-icon/style.scss +5 -3
  71. package/dist/cjs/notice/index.js +64 -55
  72. package/dist/cjs/plugin-installer/index.js +259 -253
  73. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  74. package/dist/cjs/plugin-settings/index.js +217 -200
  75. package/dist/cjs/plugin-toggle/index.js +192 -199
  76. package/dist/cjs/popover/index.js +41 -28
  77. package/dist/cjs/position-control/index.js +24 -23
  78. package/dist/cjs/progress-bar/index.js +71 -59
  79. package/dist/cjs/progress-bar/index.test.js +62 -68
  80. package/dist/cjs/proxied-imports/router.js +3 -3
  81. package/dist/cjs/radio-control/index.js +40 -27
  82. package/dist/cjs/section-header/index.js +143 -39
  83. package/dist/cjs/section-header/style.scss +129 -4
  84. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  85. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  86. package/dist/cjs/select-control/index.js +52 -40
  87. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  88. package/dist/cjs/settings/SettingsCard.js +20 -17
  89. package/dist/cjs/settings/SettingsSection.js +22 -21
  90. package/dist/cjs/settings/index.js +5 -5
  91. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  92. package/dist/cjs/steps-list/index.js +44 -34
  93. package/dist/cjs/steps-list-item/index.js +47 -39
  94. package/dist/cjs/style-card/index.js +70 -63
  95. package/dist/cjs/style.scss +2 -0
  96. package/dist/cjs/tabbed-navigation/index.js +38 -36
  97. package/dist/cjs/text-control/index.js +27 -25
  98. package/dist/cjs/utils/color.js +4 -4
  99. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  100. package/dist/cjs/utils/index.js +31 -19
  101. package/dist/cjs/utils/style.scss +8 -0
  102. package/dist/cjs/waiting/index.js +48 -35
  103. package/dist/cjs/waiting/style.scss +4 -0
  104. package/dist/cjs/web-preview/index.js +219 -154
  105. package/dist/cjs/web-preview/style.scss +20 -53
  106. package/dist/cjs/with-wizard/index.js +362 -364
  107. package/dist/cjs/with-wizard/style.scss +28 -60
  108. package/dist/cjs/with-wizard-screen/index.js +54 -58
  109. package/dist/cjs/with-wizard-screen/style.scss +77 -10
  110. package/dist/cjs/wizard/components/WizardError.js +20 -18
  111. package/dist/cjs/wizard/components/WizardSnackbar.js +73 -0
  112. package/dist/cjs/wizard/components/style.scss +48 -0
  113. package/dist/cjs/wizard/index.js +207 -64
  114. package/dist/cjs/wizard/store/index.js +191 -97
  115. package/dist/cjs/wizard/store/utils.js +13 -8
  116. package/dist/esm/accordion/index.js +14 -9
  117. package/dist/esm/action-card/index.js +178 -124
  118. package/dist/esm/action-card/style.scss +25 -2
  119. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  120. package/dist/esm/autocomplete-with-latest-posts/index.js +347 -0
  121. package/dist/esm/autocomplete-with-latest-posts/style.scss +150 -0
  122. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  123. package/dist/esm/badge/index.js +24 -0
  124. package/dist/esm/badge/style.scss +36 -0
  125. package/dist/esm/box-contrast/index.js +15 -11
  126. package/dist/esm/button/index.js +39 -19
  127. package/dist/esm/button-props/button-props.js +1 -1
  128. package/dist/esm/card/core-card.js +195 -0
  129. package/dist/esm/card/index.js +70 -22
  130. package/dist/esm/card/style-core.scss +295 -0
  131. package/dist/esm/card/style.scss +4 -4
  132. package/dist/esm/card-feature/index.js +131 -0
  133. package/dist/esm/card-feature/style.scss +75 -0
  134. package/dist/esm/card-form/index.js +134 -0
  135. package/dist/esm/card-form/style.scss +20 -0
  136. package/dist/esm/card-settings-group/index.js +61 -0
  137. package/dist/esm/card-settings-group/style.scss +33 -0
  138. package/dist/esm/card-sortable-list/index.js +425 -0
  139. package/dist/esm/card-sortable-list/style.scss +48 -0
  140. package/dist/esm/category-autocomplete/index.js +168 -140
  141. package/dist/esm/color-picker/index.js +39 -21
  142. package/dist/esm/color-picker/index.test.js +78 -0
  143. package/dist/esm/color-picker/style.scss +11 -13
  144. package/dist/esm/confirm-dialog/index.js +116 -0
  145. package/dist/esm/consts.js +1 -1
  146. package/dist/esm/custom-select-control/index.js +34 -15
  147. package/dist/esm/dataviews/index.js +34 -0
  148. package/dist/esm/dataviews/style.scss +9 -0
  149. package/dist/esm/divider/index.js +42 -0
  150. package/dist/esm/divider/style.scss +51 -0
  151. package/dist/esm/footer/index.js +34 -28
  152. package/dist/esm/form-token-field/index.js +46 -27
  153. package/dist/esm/form-token-field/style.scss +0 -5
  154. package/dist/esm/global-notices/index.js +3 -3
  155. package/dist/esm/grid/index.js +23 -13
  156. package/dist/esm/grid/style.scss +67 -8
  157. package/dist/esm/handoff/index.js +199 -143
  158. package/dist/esm/handoff-message/index.js +10 -6
  159. package/dist/esm/hooks/index.js +8 -6
  160. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  161. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  162. package/dist/esm/hooks/useObjectState.js +19 -9
  163. package/dist/esm/hooks/useObjectState.test.js +54 -32
  164. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  165. package/dist/esm/hooks/usePrompt.js +9 -11
  166. package/dist/esm/image-upload/index.js +110 -111
  167. package/dist/esm/image-upload/index.test.js +11 -13
  168. package/dist/esm/image-upload/style.scss +12 -40
  169. package/dist/esm/index.js +13 -1
  170. package/dist/esm/info-button/index.js +38 -19
  171. package/dist/esm/integration-icons/active-campaign.js +16 -0
  172. package/dist/esm/integration-icons/constant-contact.js +22 -0
  173. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  174. package/dist/esm/integration-icons/index.js +6 -0
  175. package/dist/esm/integration-icons/mailchimp.js +13 -0
  176. package/dist/esm/integration-icons/salesforce.js +11 -0
  177. package/dist/esm/integration-icons/wisepops.js +14 -0
  178. package/dist/esm/modal/index.js +27 -13
  179. package/dist/esm/modal/style.scss +47 -13
  180. package/dist/esm/newspack-icon/index.js +40 -25
  181. package/dist/esm/newspack-icon/style.scss +5 -3
  182. package/dist/esm/notice/index.js +59 -42
  183. package/dist/esm/plugin-installer/index.js +255 -243
  184. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  185. package/dist/esm/plugin-settings/index.js +212 -189
  186. package/dist/esm/plugin-toggle/index.js +187 -190
  187. package/dist/esm/popover/index.js +35 -16
  188. package/dist/esm/position-control/index.js +22 -18
  189. package/dist/esm/progress-bar/index.js +66 -49
  190. package/dist/esm/progress-bar/index.test.js +61 -67
  191. package/dist/esm/radio-control/index.js +34 -15
  192. package/dist/esm/section-header/index.js +140 -38
  193. package/dist/esm/section-header/style.scss +129 -4
  194. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  195. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  196. package/dist/esm/select-control/index.js +47 -27
  197. package/dist/esm/settings/MinMaxSetting.js +27 -16
  198. package/dist/esm/settings/SettingsCard.js +18 -13
  199. package/dist/esm/settings/SettingsSection.js +20 -19
  200. package/dist/esm/settings/index.js +3 -3
  201. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  202. package/dist/esm/steps-list/index.js +39 -21
  203. package/dist/esm/steps-list-item/index.js +42 -26
  204. package/dist/esm/style-card/index.js +65 -50
  205. package/dist/esm/style.scss +2 -0
  206. package/dist/esm/tabbed-navigation/index.js +35 -33
  207. package/dist/esm/text-control/index.js +25 -19
  208. package/dist/esm/utils/color.js +4 -4
  209. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  210. package/dist/esm/utils/index.js +29 -16
  211. package/dist/esm/utils/style.scss +8 -0
  212. package/dist/esm/waiting/index.js +43 -22
  213. package/dist/esm/waiting/style.scss +4 -0
  214. package/dist/esm/web-preview/index.js +218 -147
  215. package/dist/esm/web-preview/style.scss +20 -53
  216. package/dist/esm/with-wizard/index.js +360 -358
  217. package/dist/esm/with-wizard/style.scss +28 -60
  218. package/dist/esm/with-wizard-screen/index.js +48 -46
  219. package/dist/esm/with-wizard-screen/style.scss +77 -10
  220. package/dist/esm/wizard/components/WizardError.js +18 -16
  221. package/dist/esm/wizard/components/WizardSnackbar.js +70 -0
  222. package/dist/esm/wizard/components/style.scss +48 -0
  223. package/dist/esm/wizard/index.js +207 -58
  224. package/dist/esm/wizard/store/index.js +189 -90
  225. package/dist/esm/wizard/store/utils.js +13 -6
  226. package/package.json +30 -17
  227. package/release.config.js +1 -0
  228. package/shared/author-context.js +26 -0
  229. package/shared/hooks/use-coauthors.js +388 -0
  230. package/shared/hooks/use-coauthors.test.js +850 -0
  231. package/shared/hooks/use-custom-byline.js +47 -0
  232. package/shared/hooks/use-custom-byline.test.js +133 -0
  233. package/shared/scss/_mixins.scss +54 -0
  234. package/src/accordion/index.js +8 -7
  235. package/src/action-card/action-card.d.ts +7 -3
  236. package/src/action-card/index.js +39 -12
  237. package/src/action-card/style.scss +25 -2
  238. package/src/autocomplete-tokenfield/index.js +2 -2
  239. package/src/autocomplete-with-latest-posts/index.js +290 -0
  240. package/src/autocomplete-with-latest-posts/style.scss +150 -0
  241. package/src/badge/index.tsx +26 -0
  242. package/src/badge/style.scss +36 -0
  243. package/src/button/index.tsx +3 -2
  244. package/src/card/core-card.js +224 -0
  245. package/src/card/index.js +40 -1
  246. package/src/card/style-core.scss +295 -0
  247. package/src/card/style.scss +4 -4
  248. package/src/card-feature/README.md +188 -0
  249. package/src/card-feature/index.tsx +186 -0
  250. package/src/card-feature/style.scss +75 -0
  251. package/src/card-form/README.md +113 -0
  252. package/src/card-form/index.tsx +128 -0
  253. package/src/card-form/style.scss +20 -0
  254. package/src/card-settings-group/README.md +43 -0
  255. package/src/card-settings-group/index.tsx +78 -0
  256. package/src/card-settings-group/style.scss +33 -0
  257. package/src/card-sortable-list/README.md +51 -0
  258. package/src/card-sortable-list/index.tsx +435 -0
  259. package/src/card-sortable-list/style.scss +48 -0
  260. package/src/color-picker/index.js +15 -8
  261. package/src/color-picker/index.test.js +52 -0
  262. package/src/color-picker/style.scss +11 -13
  263. package/src/confirm-dialog/README.md +128 -0
  264. package/src/confirm-dialog/index.tsx +132 -0
  265. package/src/dataviews/index.tsx +34 -0
  266. package/src/dataviews/style.scss +9 -0
  267. package/src/divider/README.md +25 -0
  268. package/src/divider/index.js +31 -0
  269. package/src/divider/style.scss +51 -0
  270. package/src/form-token-field/style.scss +0 -5
  271. package/src/grid/index.tsx +2 -1
  272. package/src/grid/style.scss +67 -8
  273. package/src/handoff/README.md +93 -0
  274. package/src/handoff/index.js +46 -8
  275. package/src/hooks/index.ts +2 -1
  276. package/src/hooks/use-confirm-dialog.tsx +80 -0
  277. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  278. package/src/image-upload/index.js +10 -15
  279. package/src/image-upload/style.scss +12 -40
  280. package/src/index.js +13 -1
  281. package/src/integration-icons/active-campaign.js +14 -0
  282. package/src/integration-icons/constant-contact.js +22 -0
  283. package/src/integration-icons/fundraise-up.js +18 -0
  284. package/src/integration-icons/index.js +6 -0
  285. package/src/integration-icons/mailchimp.js +10 -0
  286. package/src/integration-icons/salesforce.js +10 -0
  287. package/src/integration-icons/wisepops.js +14 -0
  288. package/src/modal/index.js +12 -3
  289. package/src/modal/style.scss +47 -13
  290. package/src/newspack-icon/style.scss +5 -3
  291. package/src/plugin-installer/index.js +30 -19
  292. package/src/section-header/index.js +105 -14
  293. package/src/section-header/style.scss +129 -4
  294. package/src/select-control/index.js +4 -0
  295. package/src/style.scss +2 -0
  296. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  297. package/src/utils/index.js +6 -0
  298. package/src/utils/style.scss +8 -0
  299. package/src/waiting/index.js +2 -1
  300. package/src/waiting/style.scss +4 -0
  301. package/src/web-preview/index.js +90 -35
  302. package/src/web-preview/style.scss +20 -53
  303. package/src/with-wizard/index.js +1 -1
  304. package/src/with-wizard/style.scss +28 -60
  305. package/src/with-wizard-screen/style.scss +77 -10
  306. package/src/wizard/components/WizardSnackbar.js +58 -0
  307. package/src/wizard/components/style.scss +48 -0
  308. package/src/wizard/index.js +152 -21
  309. package/src/wizard/store/index.js +28 -2
  310. package/dist/cjs/button-card/index.js +0 -72
  311. package/dist/cjs/button-card/style.scss +0 -180
  312. package/dist/esm/button-card/index.js +0 -64
  313. package/dist/esm/button-card/style.scss +0 -180
  314. package/src/button-card/index.js +0 -52
  315. package/src/button-card/style.scss +0 -180
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,106 +16,132 @@ 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 = 'info',
40
- className,
41
- checkbox,
42
- children,
43
- collapse,
44
- disabled,
45
- title,
46
- description,
47
- handoff,
48
- editLink,
49
- href,
50
- notification,
51
- notificationLevel,
52
- notificationHTML,
53
- actionContent,
54
- actionText,
55
- secondaryActionText,
56
- secondaryDestructive,
57
- id,
58
- image,
59
- imageLink,
60
- indent,
61
- isSmall,
62
- isMedium,
63
- simple,
64
- onClick,
65
- onSecondaryActionClick,
66
- isWaiting,
67
- titleLink,
68
- toggleChecked = false,
69
- toggleOnChange,
70
- hasGreyHeader,
71
- hasWhiteHeader,
72
- noBorder,
73
- isPending,
74
- expandable = false,
75
- isButtonEnabled = false,
76
- // Draggable props. All are required to enable drag sorting.
77
- draggable = false,
78
- dragIndex,
79
- dragWrapperRef,
80
- onDragCallback
81
- }) => {
82
- const [expanded, setExpanded] = (0, _element.useState)(false);
83
- const [dragging, setDragging] = (0, _element.useState)(false);
84
- const [targetIndex, setTargetIndex] = (0, _element.useState)(null);
85
- const [dragRef, setDragRef] = (0, _element.useState)(null);
86
- (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 () {
105
+ if (typeof isExpanded === 'boolean') {
106
+ setExpanded(isExpanded);
107
+ }
108
+ }, [isExpanded]);
109
+ (0, _element.useEffect)(function () {
87
110
  if (dragWrapperRef && !dragRef) {
88
111
  setDragRef(dragWrapperRef);
89
112
  }
90
- }, [dragWrapperRef?.current]);
91
- (0, _element.useEffect)(() => {
113
+ }, [dragWrapperRef === null || dragWrapperRef === void 0 ? void 0 : dragWrapperRef.current]);
114
+ (0, _element.useEffect)(function () {
92
115
  if (collapse && expanded) {
93
116
  setExpanded(false);
94
117
  }
95
118
  }, [collapse]);
96
- const hasChildren = notification || children;
97
- 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);
98
- 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) {
99
122
  return url ? {
100
- backgroundImage: `url(${url})`
123
+ backgroundImage: "url(".concat(url, ")")
101
124
  } : {};
102
125
  };
103
- const titleProps = toggleOnChange && !titleLink && !disabled ? {
104
- onClick: () => toggleOnChange(!toggleChecked),
126
+ var titleProps = toggleOnChange && !titleLink && !disabled ? {
127
+ onClick: function onClick() {
128
+ return toggleOnChange(!toggleChecked);
129
+ },
105
130
  tabIndex: '0'
106
131
  } : {};
107
- const hasInternalLink = href && href.indexOf('http') !== 0;
108
- const isDisplayingSecondaryAction = secondaryActionText && onSecondaryActionClick;
109
- const badges = !Array.isArray(badge) && badge ? [badge] : badge;
110
- const Component = () => /*#__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, {
111
138
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
112
139
  className: "newspack-action-card__region newspack-action-card__region-top",
113
140
  children: [toggleOnChange && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
114
141
  checked: toggleChecked,
115
142
  onChange: toggleOnChange,
116
- disabled: disabled
143
+ disabled: disabled,
144
+ className: togglePositionClass
117
145
  }), image && !toggleOnChange && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
118
146
  className: "newspack-action-card__region newspack-action-card__region-left",
119
147
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
@@ -126,7 +154,7 @@ var _jsxRuntime = require("react/jsx-runtime");
126
154
  }), checkbox && !toggleOnChange && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
127
155
  className: "newspack-action-card__region newspack-action-card__region-left",
128
156
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
129
- 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'),
130
158
  children: 'checked' === checkbox && /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
131
159
  icon: _icons.check
132
160
  })
@@ -137,22 +165,26 @@ var _jsxRuntime = require("react/jsx-runtime");
137
165
  columns: 1,
138
166
  gutter: 8,
139
167
  noMargin: true,
140
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("h2", {
141
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
142
- className: "newspack-action-card__title",
143
- ...titleProps,
168
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(HeadingTag, {
169
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", _objectSpread(_objectSpread({
170
+ className: "newspack-action-card__title"
171
+ }, titleProps), {}, {
144
172
  children: [titleLink && /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
145
173
  href: titleLink,
146
174
  children: title
147
175
  }), !titleLink && expandable && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
148
176
  isLink: true,
149
- onClick: () => setExpanded(!expanded),
177
+ onClick: function onClick() {
178
+ return setExpanded(!expanded);
179
+ },
150
180
  children: title
151
181
  }), !titleLink && !expandable && title]
152
- }), badges?.length && badges.map((badgeText, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
153
- className: `newspack-action-card__badge newspack-action-card__badge-level-${badgeLevel}`,
154
- children: badgeText
155
- }, `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
+ })]
156
188
  }), description && /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
157
189
  children: [typeof description === 'string' && description, typeof description === 'function' && description()]
158
190
  })]
@@ -162,6 +194,15 @@ var _jsxRuntime = require("react/jsx-runtime");
162
194
  children: [actionContent && actionContent, actionText && (handoff ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Handoff, {
163
195
  plugin: handoff,
164
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,
165
206
  compact: true,
166
207
  isLink: true,
167
208
  children: actionText
@@ -189,7 +230,9 @@ var _jsxRuntime = require("react/jsx-runtime");
189
230
  children: secondaryActionText
190
231
  })]
191
232
  }), expandable && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
192
- onClick: () => setExpanded(!expanded),
233
+ onClick: function onClick() {
234
+ return setExpanded(!expanded);
235
+ },
193
236
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
194
237
  icon: expanded ? _icons.chevronUp : _icons.chevronDown,
195
238
  height: 24,
@@ -214,17 +257,17 @@ var _jsxRuntime = require("react/jsx-runtime");
214
257
  isWarning: true,
215
258
  rawHTML: notificationHTML
216
259
  })]
217
- }), children && (expandable && expanded || !expandable) && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
260
+ }), children && (expandable && expanded || !expandable) ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
218
261
  className: "newspack-action-card__region-children",
219
262
  children: children
220
- })]
263
+ }) : null]
221
264
  });
222
- if (draggable && dragRef?.current && typeof dragIndex === 'number' && onDragCallback && id) {
223
- let wrapperRect = dragRef.current.getBoundingClientRect();
224
- let draggableCards = Array.prototype.slice.call(dragRef.current.querySelectorAll('.newspack-action-card__draggable-wrapper'));
225
- const isFirstTarget = dragIndex === 0;
226
- const isLastTarget = dragIndex === draggableCards.length - 1;
227
- 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() {
228
271
  draggableCards = Array.prototype.slice.call(dragRef.current.querySelectorAll('.newspack-action-card__draggable-wrapper'));
229
272
  wrapperRect = dragRef.current.getBoundingClientRect();
230
273
  if (dragging) {
@@ -233,17 +276,17 @@ var _jsxRuntime = require("react/jsx-runtime");
233
276
  setTargetIndex(dragIndex);
234
277
  setDragging(true);
235
278
  };
236
- const handleDragEnd = () => {
279
+ var handleDragEnd = function handleDragEnd() {
237
280
  if (targetIndex !== null && targetIndex !== dragIndex) {
238
281
  onDragCallback(targetIndex);
239
282
  }
240
283
  setTargetIndex(null);
241
284
  setDragging(false);
242
285
  };
243
- const handleDragOver = e => {
244
- const isDraggingToTop = e.pageY <= wrapperRect.top + window.scrollY;
245
- const isDraggingToBottom = e.pageY >= wrapperRect.bottom + window.scrollY;
246
- 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');
247
290
  if (isDraggingToTop || isDraggingToBottom || target) {
248
291
  setTargetIndex(draggableCards.indexOf(target));
249
292
 
@@ -265,49 +308,52 @@ var _jsxRuntime = require("react/jsx-runtime");
265
308
  };
266
309
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
267
310
  className: 'newspack-action-card__draggable-wrapper' + (dragging ? ' is-dragging' : ''),
268
- id: `draggable-card-${id}`,
311
+ id: "draggable-card-".concat(id),
269
312
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Draggable, {
270
- elementId: `draggable-card-${id}`,
313
+ elementId: "draggable-card-".concat(id),
271
314
  transferData: {},
272
315
  onDragStart: handleDragStart,
273
316
  onDragEnd: handleDragEnd,
274
317
  onDragOver: handleDragOver,
275
- children: ({
276
- onDraggableStart,
277
- onDraggableEnd
278
- }) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.Card, {
279
- className: classes,
280
- onClick: simple && onClick,
281
- id: id !== null && id !== void 0 ? id : null,
282
- noBorder: noBorder,
283
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
284
- className: "newspack-action-card__draggable-controls",
285
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
286
- className: "drag-handle",
287
- draggable: true,
288
- onDragStart: onDraggableStart,
289
- onDragEnd: onDraggableEnd,
290
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
291
- icon: _icons.dragHandle,
292
- height: 18,
293
- width: 18
294
- })
295
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
296
- className: "movers",
297
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
298
- icon: _icons.chevronUp,
299
- onClick: () => onDragCallback(dragIndex - 1),
300
- disabled: isFirstTarget,
301
- label: (0, _i18n.__)('Move one position up', 'newspack-plugin')
302
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
303
- icon: _icons.chevronDown,
304
- onClick: () => onDragCallback(dragIndex + 1),
305
- disabled: isLastTarget,
306
- 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
+ })]
307
353
  })]
308
- })]
309
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {})]
310
- })
354
+ }), cardContent]
355
+ });
356
+ }
311
357
  })
312
358
  });
313
359
  }
@@ -316,7 +362,7 @@ var _jsxRuntime = require("react/jsx-runtime");
316
362
  onClick: simple && onClick,
317
363
  id: id !== null && id !== void 0 ? id : null,
318
364
  noBorder: noBorder,
319
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {})
365
+ children: cardContent
320
366
  });
321
367
  };
322
- var _default = exports.default = ActionCard;
368
+ var _default = exports["default"] = ActionCard;
@@ -260,6 +260,16 @@
260
260
  @media screen and (min-width: 744px) {
261
261
  margin-bottom: 0;
262
262
  margin-right: 24px;
263
+
264
+ &.is-toggle-trailing {
265
+ margin-left: 24px;
266
+ margin-right: 0;
267
+ order: 999;
268
+ }
269
+ }
270
+
271
+ label {
272
+ display: none;
263
273
  }
264
274
 
265
275
  .components-base-control__field {
@@ -433,13 +443,21 @@
433
443
  text-decoration: inherit;
434
444
  }
435
445
 
436
- .newspack-action-card__region-children {
437
- border-top: 1px solid wp-colors.$gray-100;
446
+ > .newspack-action-card__region-children {
447
+ border-top: 1px solid wp-colors.$gray-300;
438
448
  padding-top: 24px;
439
449
 
440
450
  + .newspack-action-card__region-children {
441
451
  border-top: none;
442
452
  }
453
+
454
+ > * + * {
455
+ margin-top: 24px !important;
456
+ }
457
+
458
+ .newspack-action-card__region-children:has(> div:not(:empty)) {
459
+ margin-top: 16px;
460
+ }
443
461
  }
444
462
 
445
463
  &.is-medium .newspack-action-card__region-children {
@@ -469,6 +487,11 @@
469
487
  margin-left: 8px;
470
488
  }
471
489
  }
490
+
491
+ hr:not(.newspack-divider) {
492
+ background: wp-colors.$gray-100;
493
+ margin: 0;
494
+ }
472
495
  }
473
496
 
474
497
  .newspack-card {