newspack-components 4.3.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 (262) 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 +176 -139
  6. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  7. package/dist/cjs/autocomplete-with-latest-posts/index.js +172 -110
  8. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  9. package/dist/cjs/badge/index.js +7 -7
  10. package/dist/cjs/box-contrast/index.js +19 -15
  11. package/dist/cjs/button/index.js +41 -26
  12. package/dist/cjs/button-props/button-props.js +5 -5
  13. package/dist/cjs/button-props/index.js +2 -2
  14. package/dist/cjs/card/core-card.js +110 -52
  15. package/dist/cjs/card/index.js +74 -67
  16. package/dist/cjs/card/style-core.scss +93 -25
  17. package/dist/cjs/card/style.scss +2 -2
  18. package/dist/cjs/card-feature/index.js +141 -0
  19. package/dist/cjs/card-feature/style.scss +75 -0
  20. package/dist/cjs/card-form/index.js +144 -0
  21. package/dist/cjs/card-form/style.scss +20 -0
  22. package/dist/cjs/card-settings-group/index.js +36 -16
  23. package/dist/cjs/card-sortable-list/index.js +176 -140
  24. package/dist/cjs/category-autocomplete/index.js +175 -155
  25. package/dist/cjs/color-picker/index.js +41 -23
  26. package/dist/cjs/color-picker/index.test.js +82 -0
  27. package/dist/cjs/color-picker/style.scss +11 -13
  28. package/dist/cjs/confirm-dialog/index.js +86 -22
  29. package/dist/cjs/consts.js +1 -1
  30. package/dist/cjs/custom-select-control/index.js +39 -28
  31. package/dist/cjs/dataviews/index.js +38 -0
  32. package/dist/cjs/dataviews/style.scss +9 -0
  33. package/dist/cjs/divider/index.js +26 -21
  34. package/dist/cjs/footer/index.js +36 -30
  35. package/dist/cjs/form-token-field/index.js +51 -40
  36. package/dist/cjs/global-notices/index.js +5 -5
  37. package/dist/cjs/grid/index.js +25 -19
  38. package/dist/cjs/grid/style.scss +6 -1
  39. package/dist/cjs/handoff/index.js +204 -156
  40. package/dist/cjs/handoff-message/index.js +12 -7
  41. package/dist/cjs/hooks/index.js +10 -8
  42. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  43. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  44. package/dist/cjs/hooks/useObjectState.js +21 -12
  45. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  46. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  47. package/dist/cjs/hooks/usePrompt.js +10 -13
  48. package/dist/cjs/image-upload/index.js +114 -123
  49. package/dist/cjs/image-upload/index.test.js +11 -13
  50. package/dist/cjs/image-upload/style.scss +12 -40
  51. package/dist/cjs/index.js +136 -104
  52. package/dist/cjs/info-button/index.js +43 -32
  53. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  54. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  55. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  56. package/dist/cjs/integration-icons/index.js +48 -0
  57. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  58. package/dist/cjs/integration-icons/salesforce.js +17 -0
  59. package/dist/cjs/integration-icons/wisepops.js +20 -0
  60. package/dist/cjs/modal/index.js +22 -19
  61. package/dist/cjs/modal/style.scss +4 -0
  62. package/dist/cjs/newspack-icon/index.js +45 -38
  63. package/dist/cjs/notice/index.js +64 -55
  64. package/dist/cjs/plugin-installer/index.js +259 -253
  65. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  66. package/dist/cjs/plugin-settings/index.js +217 -200
  67. package/dist/cjs/plugin-toggle/index.js +192 -199
  68. package/dist/cjs/popover/index.js +41 -28
  69. package/dist/cjs/position-control/index.js +24 -23
  70. package/dist/cjs/progress-bar/index.js +71 -59
  71. package/dist/cjs/progress-bar/index.test.js +62 -68
  72. package/dist/cjs/proxied-imports/router.js +3 -3
  73. package/dist/cjs/radio-control/index.js +40 -27
  74. package/dist/cjs/section-header/index.js +103 -58
  75. package/dist/cjs/section-header/style.scss +31 -11
  76. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  77. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  78. package/dist/cjs/select-control/index.js +52 -40
  79. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  80. package/dist/cjs/settings/SettingsCard.js +20 -17
  81. package/dist/cjs/settings/SettingsSection.js +22 -21
  82. package/dist/cjs/settings/index.js +5 -5
  83. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  84. package/dist/cjs/steps-list/index.js +44 -34
  85. package/dist/cjs/steps-list-item/index.js +47 -39
  86. package/dist/cjs/style-card/index.js +70 -63
  87. package/dist/cjs/tabbed-navigation/index.js +38 -36
  88. package/dist/cjs/text-control/index.js +27 -25
  89. package/dist/cjs/utils/color.js +4 -4
  90. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  91. package/dist/cjs/utils/index.js +31 -19
  92. package/dist/cjs/utils/style.scss +8 -0
  93. package/dist/cjs/waiting/index.js +48 -37
  94. package/dist/cjs/web-preview/index.js +217 -211
  95. package/dist/cjs/with-wizard/index.js +362 -364
  96. package/dist/cjs/with-wizard/style.scss +4 -54
  97. package/dist/cjs/with-wizard-screen/index.js +54 -58
  98. package/dist/cjs/with-wizard-screen/style.scss +41 -3
  99. package/dist/cjs/wizard/components/WizardError.js +20 -18
  100. package/dist/cjs/wizard/components/WizardSnackbar.js +26 -23
  101. package/dist/cjs/wizard/index.js +176 -114
  102. package/dist/cjs/wizard/store/index.js +171 -123
  103. package/dist/cjs/wizard/store/utils.js +13 -8
  104. package/dist/esm/accordion/index.js +14 -9
  105. package/dist/esm/action-card/index.js +168 -123
  106. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  107. package/dist/esm/autocomplete-with-latest-posts/index.js +169 -103
  108. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  109. package/dist/esm/badge/index.js +5 -5
  110. package/dist/esm/box-contrast/index.js +15 -11
  111. package/dist/esm/button/index.js +39 -21
  112. package/dist/esm/button-props/button-props.js +1 -1
  113. package/dist/esm/card/core-card.js +109 -47
  114. package/dist/esm/card/index.js +69 -54
  115. package/dist/esm/card/style-core.scss +93 -25
  116. package/dist/esm/card/style.scss +2 -2
  117. package/dist/esm/card-feature/index.js +131 -0
  118. package/dist/esm/card-feature/style.scss +75 -0
  119. package/dist/esm/card-form/index.js +134 -0
  120. package/dist/esm/card-form/style.scss +20 -0
  121. package/dist/esm/card-settings-group/index.js +33 -14
  122. package/dist/esm/card-sortable-list/index.js +170 -126
  123. package/dist/esm/category-autocomplete/index.js +168 -140
  124. package/dist/esm/color-picker/index.js +39 -21
  125. package/dist/esm/color-picker/index.test.js +78 -0
  126. package/dist/esm/color-picker/style.scss +11 -13
  127. package/dist/esm/confirm-dialog/index.js +85 -18
  128. package/dist/esm/consts.js +1 -1
  129. package/dist/esm/custom-select-control/index.js +34 -15
  130. package/dist/esm/dataviews/index.js +34 -0
  131. package/dist/esm/dataviews/style.scss +9 -0
  132. package/dist/esm/divider/index.js +24 -16
  133. package/dist/esm/footer/index.js +34 -28
  134. package/dist/esm/form-token-field/index.js +46 -27
  135. package/dist/esm/global-notices/index.js +3 -3
  136. package/dist/esm/grid/index.js +23 -14
  137. package/dist/esm/grid/style.scss +6 -1
  138. package/dist/esm/handoff/index.js +199 -143
  139. package/dist/esm/handoff-message/index.js +10 -6
  140. package/dist/esm/hooks/index.js +8 -6
  141. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  142. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  143. package/dist/esm/hooks/useObjectState.js +19 -9
  144. package/dist/esm/hooks/useObjectState.test.js +54 -32
  145. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  146. package/dist/esm/hooks/usePrompt.js +9 -11
  147. package/dist/esm/image-upload/index.js +110 -111
  148. package/dist/esm/image-upload/index.test.js +11 -13
  149. package/dist/esm/image-upload/style.scss +12 -40
  150. package/dist/esm/index.js +7 -1
  151. package/dist/esm/info-button/index.js +38 -19
  152. package/dist/esm/integration-icons/active-campaign.js +16 -0
  153. package/dist/esm/integration-icons/constant-contact.js +22 -0
  154. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  155. package/dist/esm/integration-icons/index.js +6 -0
  156. package/dist/esm/integration-icons/mailchimp.js +13 -0
  157. package/dist/esm/integration-icons/salesforce.js +11 -0
  158. package/dist/esm/integration-icons/wisepops.js +14 -0
  159. package/dist/esm/modal/index.js +20 -13
  160. package/dist/esm/modal/style.scss +4 -0
  161. package/dist/esm/newspack-icon/index.js +40 -25
  162. package/dist/esm/notice/index.js +59 -42
  163. package/dist/esm/plugin-installer/index.js +255 -243
  164. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  165. package/dist/esm/plugin-settings/index.js +212 -189
  166. package/dist/esm/plugin-toggle/index.js +187 -190
  167. package/dist/esm/popover/index.js +35 -16
  168. package/dist/esm/position-control/index.js +22 -18
  169. package/dist/esm/progress-bar/index.js +66 -49
  170. package/dist/esm/progress-bar/index.test.js +61 -67
  171. package/dist/esm/radio-control/index.js +34 -15
  172. package/dist/esm/section-header/index.js +102 -57
  173. package/dist/esm/section-header/style.scss +31 -11
  174. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  175. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  176. package/dist/esm/select-control/index.js +47 -27
  177. package/dist/esm/settings/MinMaxSetting.js +27 -16
  178. package/dist/esm/settings/SettingsCard.js +18 -13
  179. package/dist/esm/settings/SettingsSection.js +20 -19
  180. package/dist/esm/settings/index.js +3 -3
  181. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  182. package/dist/esm/steps-list/index.js +39 -21
  183. package/dist/esm/steps-list-item/index.js +42 -26
  184. package/dist/esm/style-card/index.js +65 -50
  185. package/dist/esm/tabbed-navigation/index.js +35 -33
  186. package/dist/esm/text-control/index.js +25 -19
  187. package/dist/esm/utils/color.js +4 -4
  188. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  189. package/dist/esm/utils/index.js +29 -16
  190. package/dist/esm/utils/style.scss +8 -0
  191. package/dist/esm/waiting/index.js +43 -24
  192. package/dist/esm/web-preview/index.js +213 -201
  193. package/dist/esm/with-wizard/index.js +360 -358
  194. package/dist/esm/with-wizard/style.scss +4 -54
  195. package/dist/esm/with-wizard-screen/index.js +48 -46
  196. package/dist/esm/with-wizard-screen/style.scss +41 -3
  197. package/dist/esm/wizard/components/WizardError.js +18 -16
  198. package/dist/esm/wizard/components/WizardSnackbar.js +23 -17
  199. package/dist/esm/wizard/index.js +171 -103
  200. package/dist/esm/wizard/store/index.js +169 -116
  201. package/dist/esm/wizard/store/utils.js +13 -6
  202. package/package.json +30 -16
  203. package/release.config.js +1 -0
  204. package/shared/hooks/use-coauthors.js +195 -27
  205. package/shared/hooks/use-coauthors.test.js +232 -6
  206. package/shared/scss/_mixins.scss +13 -5
  207. package/src/accordion/index.js +8 -7
  208. package/src/action-card/index.js +15 -1
  209. package/src/badge/index.tsx +3 -1
  210. package/src/card/core-card.js +95 -18
  211. package/src/card/index.js +1 -0
  212. package/src/card/style-core.scss +93 -25
  213. package/src/card/style.scss +2 -2
  214. package/src/card-feature/README.md +188 -0
  215. package/src/card-feature/index.tsx +186 -0
  216. package/src/card-feature/style.scss +75 -0
  217. package/src/card-form/README.md +113 -0
  218. package/src/card-form/index.tsx +128 -0
  219. package/src/card-form/style.scss +20 -0
  220. package/src/card-settings-group/index.tsx +28 -3
  221. package/src/card-sortable-list/index.tsx +27 -4
  222. package/src/color-picker/index.js +15 -8
  223. package/src/color-picker/index.test.js +52 -0
  224. package/src/color-picker/style.scss +11 -13
  225. package/src/confirm-dialog/README.md +128 -0
  226. package/src/confirm-dialog/index.tsx +74 -6
  227. package/src/dataviews/index.tsx +34 -0
  228. package/src/dataviews/style.scss +9 -0
  229. package/src/grid/style.scss +6 -1
  230. package/src/handoff/README.md +93 -0
  231. package/src/handoff/index.js +46 -8
  232. package/src/hooks/index.ts +2 -1
  233. package/src/hooks/use-confirm-dialog.tsx +80 -0
  234. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  235. package/src/image-upload/index.js +10 -15
  236. package/src/image-upload/style.scss +12 -40
  237. package/src/index.js +7 -1
  238. package/src/integration-icons/active-campaign.js +14 -0
  239. package/src/integration-icons/constant-contact.js +22 -0
  240. package/src/integration-icons/fundraise-up.js +18 -0
  241. package/src/integration-icons/index.js +6 -0
  242. package/src/integration-icons/mailchimp.js +10 -0
  243. package/src/integration-icons/salesforce.js +10 -0
  244. package/src/integration-icons/wisepops.js +14 -0
  245. package/src/modal/style.scss +4 -0
  246. package/src/plugin-installer/index.js +30 -19
  247. package/src/section-header/index.js +56 -24
  248. package/src/section-header/style.scss +31 -11
  249. package/src/select-control/index.js +4 -0
  250. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  251. package/src/utils/index.js +6 -0
  252. package/src/utils/style.scss +8 -0
  253. package/src/with-wizard/style.scss +4 -54
  254. package/src/with-wizard-screen/style.scss +41 -3
  255. package/src/wizard/index.js +90 -53
  256. package/src/wizard/store/index.js +2 -2
  257. package/dist/cjs/button-card/index.js +0 -72
  258. package/dist/cjs/button-card/style.scss +0 -180
  259. package/dist/esm/button-card/index.js +0 -64
  260. package/dist/esm/button-card/style.scss +0 -180
  261. package/src/button-card/index.js +0 -52
  262. package/src/button-card/style.scss +0 -180
@@ -9,7 +9,7 @@ import isString from 'lodash/isString';
9
9
  * Creates button props based on an action
10
10
  */
11
11
  export default function buttonProps(action) {
12
- const props = {};
12
+ var props = {};
13
13
  if (isFunction(action)) {
14
14
  props.onClick = action;
15
15
  }
@@ -1,3 +1,8 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["actions", "actionType", "as", "buttonsCard", "className", "footer", "header", "headerAction", "headerStyle", "childrenStyle", "footerStyle", "disabled", "icon", "iconBackgroundColor", "isActive", "isDraggable", "isFirstTarget", "isLastTarget", "isNarrow", "isSmall", "dragIndex", "onDragCallback", "onToggle", "onHeaderClick", "noBorder", "noMargin", "children", "hasGreyHeader", "hasHeaderBorder"];
4
+ 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; }
5
+ 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) { _defineProperty(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; }
1
6
  /**
2
7
  * Card using WP Core's Card component.
3
8
  * https://wordpress.github.io/gutenberg/?path=/docs/components-card--docs
@@ -7,7 +12,7 @@
7
12
  * WordPress dependencies
8
13
  */
9
14
  import { __ } from '@wordpress/i18n';
10
- import { Button, Card as CardWrapper, CardHeader, CardFooter, DropdownMenu, MenuItem, ToggleControl } from '@wordpress/components';
15
+ import { Button, Card as CardWrapper, CardHeader, CardFooter, DropdownMenu, MenuGroup, MenuItem, ToggleControl } from '@wordpress/components';
11
16
  import { Icon, chevronDown, chevronRight, chevronUp, dragHandle, moreVertical } from '@wordpress/icons';
12
17
 
13
18
  /**
@@ -20,32 +25,43 @@ import './style-core.scss';
20
25
  */
21
26
  import classNames from 'classnames';
22
27
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
23
- const CoreCard = ({
24
- actions,
25
- actionType,
26
- as,
27
- buttonsCard,
28
- className,
29
- footer,
30
- header,
31
- icon,
32
- iconBackgroundColor,
33
- isActive,
34
- isDraggable,
35
- isFirstTarget,
36
- isLastTarget,
37
- isNarrow,
38
- isSmall,
39
- dragIndex,
40
- onDragCallback = () => {},
41
- onHeaderClick,
42
- noBorder,
43
- noMargin,
44
- children = null,
45
- ...otherProps
46
- }) => {
47
- const classes = classNames('newspack-card--core', className, (buttonsCard || as === 'a') && 'newspack-card--core__buttons-card', isDraggable && 'newspack-card--core__is-draggable', isNarrow && 'newspack-card--core__is-narrow', isSmall && 'newspack-card--core__is-small', icon && 'newspack-card--core__has-icon', iconBackgroundColor && 'newspack-card--core__has-icon-background-color', isActive && 'newspack-card--core__is-active', children && 'newspack-card--core__has-children', noMargin && 'newspack-card--core__no-margin');
48
- let sizeProps = isSmall ? 'small' : otherProps.size;
28
+ var CoreCard = function CoreCard(_ref) {
29
+ var actions = _ref.actions,
30
+ actionType = _ref.actionType,
31
+ as = _ref.as,
32
+ buttonsCard = _ref.buttonsCard,
33
+ className = _ref.className,
34
+ footer = _ref.footer,
35
+ header = _ref.header,
36
+ headerAction = _ref.headerAction,
37
+ headerStyle = _ref.headerStyle,
38
+ childrenStyle = _ref.childrenStyle,
39
+ footerStyle = _ref.footerStyle,
40
+ disabled = _ref.disabled,
41
+ icon = _ref.icon,
42
+ iconBackgroundColor = _ref.iconBackgroundColor,
43
+ isActive = _ref.isActive,
44
+ isDraggable = _ref.isDraggable,
45
+ isFirstTarget = _ref.isFirstTarget,
46
+ isLastTarget = _ref.isLastTarget,
47
+ isNarrow = _ref.isNarrow,
48
+ isSmall = _ref.isSmall,
49
+ dragIndex = _ref.dragIndex,
50
+ _ref$onDragCallback = _ref.onDragCallback,
51
+ onDragCallback = _ref$onDragCallback === void 0 ? function () {} : _ref$onDragCallback,
52
+ _ref$onToggle = _ref.onToggle,
53
+ onToggle = _ref$onToggle === void 0 ? function () {} : _ref$onToggle,
54
+ onHeaderClick = _ref.onHeaderClick,
55
+ noBorder = _ref.noBorder,
56
+ noMargin = _ref.noMargin,
57
+ _ref$children = _ref.children,
58
+ children = _ref$children === void 0 ? null : _ref$children,
59
+ hasGreyHeader = _ref.hasGreyHeader,
60
+ _ref$hasHeaderBorder = _ref.hasHeaderBorder,
61
+ hasHeaderBorder = _ref$hasHeaderBorder === void 0 ? true : _ref$hasHeaderBorder,
62
+ otherProps = _objectWithoutProperties(_ref, _excluded);
63
+ var classes = classNames('newspack-card--core', className, (buttonsCard || as === 'a') && 'newspack-card--core__buttons-card', (actions === null || actions === void 0 ? void 0 : actions.length) > 0 && 'newspack-card--core__header--has-actions', isDraggable && 'newspack-card--core__is-draggable', isNarrow && 'newspack-card--core__is-narrow', isSmall && 'newspack-card--core__is-small', icon && 'newspack-card--core__has-icon', iconBackgroundColor && 'newspack-card--core__has-icon-background-color', isActive && 'newspack-card--core__is-active', disabled && 'newspack-card--core__is-disabled', children && 'newspack-card--core__has-children', noMargin && 'newspack-card--core__no-margin', hasGreyHeader && 'newspack-card--core__has-grey-header');
64
+ var sizeProps = isSmall ? 'small' : otherProps.size;
49
65
  if (buttonsCard || as === 'a') {
50
66
  if (!isSmall) {
51
67
  sizeProps = 'large';
@@ -57,15 +73,19 @@ const CoreCard = ({
57
73
  if (noBorder) {
58
74
  otherProps.isBorderless = true;
59
75
  }
60
- return /*#__PURE__*/_jsxs(CardWrapper, {
76
+ return /*#__PURE__*/_jsxs(CardWrapper, _objectSpread(_objectSpread({
61
77
  as: as,
62
- className: classes,
63
- ...otherProps,
78
+ className: classes
79
+ }, otherProps), {}, {
64
80
  children: [(header || icon) && /*#__PURE__*/_jsxs(CardHeader, {
65
81
  as: onHeaderClick ? 'button' : undefined,
66
- className: classNames('newspack-card--core__header', isDraggable && 'newspack-card--core__header--is-draggable'),
82
+ className: classNames('newspack-card--core__header', isDraggable && 'newspack-card--core__header--is-draggable', !hasHeaderBorder && 'newspack-card--core__header--no-border'),
83
+ style: headerStyle,
67
84
  size: sizeProps,
68
- onClick: onHeaderClick,
85
+ gap: 4,
86
+ onClick: disabled ? undefined : onHeaderClick,
87
+ disabled: onHeaderClick && disabled ? true : undefined,
88
+ "aria-disabled": onHeaderClick && disabled ? true : undefined,
69
89
  children: [isDraggable && /*#__PURE__*/_jsxs("div", {
70
90
  className: "newspack-card--core__header__draggable-controls",
71
91
  children: [/*#__PURE__*/_jsx("div", {
@@ -77,13 +97,17 @@ const CoreCard = ({
77
97
  className: "newspack-card--core__header__draggable-controls__move-buttons",
78
98
  children: [/*#__PURE__*/_jsx(Button, {
79
99
  icon: chevronUp,
80
- onClick: () => onDragCallback(dragIndex, dragIndex - 1),
100
+ onClick: function onClick() {
101
+ return onDragCallback(dragIndex, dragIndex - 1);
102
+ },
81
103
  disabled: isFirstTarget,
82
104
  label: __('Move one position up', 'newspack-plugin'),
83
105
  size: "small"
84
106
  }), /*#__PURE__*/_jsx(Button, {
85
107
  icon: chevronDown,
86
- onClick: () => onDragCallback(dragIndex, dragIndex + 1),
108
+ onClick: function onClick() {
109
+ return onDragCallback(dragIndex, dragIndex + 1);
110
+ },
87
111
  disabled: isLastTarget,
88
112
  label: __('Move one position down', 'newspack-plugin'),
89
113
  size: "small"
@@ -96,38 +120,76 @@ const CoreCard = ({
96
120
  height: isSmall ? 24 : 48,
97
121
  width: isSmall ? 24 : 48
98
122
  })
123
+ }), (actions === null || actions === void 0 ? void 0 : actions.length) > 0 && actionType === 'toggle' && /*#__PURE__*/_jsx(ToggleControl, {
124
+ className: "newspack-card--core__action",
125
+ label: otherProps.title,
126
+ hideLabelFromVision: true,
127
+ checked: isActive,
128
+ onChange: onToggle
99
129
  }), header && /*#__PURE__*/_jsx("div", {
100
130
  className: "newspack-card--core__header-content",
101
131
  children: header
102
- }), !actions?.length > 0 && actionType === 'chevron' && /*#__PURE__*/_jsx(Icon, {
132
+ }), !(actions !== null && actions !== void 0 && actions.length) > 0 && actionType === 'chevron' && /*#__PURE__*/_jsx(Icon, {
103
133
  className: "newspack-card--core__action",
104
134
  icon: chevronRight,
105
135
  height: 24,
106
136
  width: 24
107
- }), !actions?.length > 0 && actionType === 'toggle' && /*#__PURE__*/_jsx(ToggleControl, {
137
+ }), !(actions !== null && actions !== void 0 && actions.length) > 0 && actionType === 'toggle' && /*#__PURE__*/_jsx(ToggleControl, {
108
138
  className: "newspack-card--core__action",
109
139
  label: otherProps.title,
110
140
  hideLabelFromVision: true,
111
141
  checked: isActive,
112
- onChange: () => {}
113
- }), actions?.length > 0 && /*#__PURE__*/_jsx(DropdownMenu, {
142
+ onChange: onToggle
143
+ }), (actions === null || actions === void 0 ? void 0 : actions.length) > 0 && /*#__PURE__*/_jsx(DropdownMenu, {
114
144
  icon: moreVertical,
115
145
  label: __('More', 'newspack-plugin'),
116
- children: () => actions.map((action, index) => /*#__PURE__*/_jsx(MenuItem, {
117
- icon: action.icon,
118
- onClick: action.action,
119
- disabled: action.disabled || false,
120
- isDestructive: action.destructive || false,
121
- children: action.label
122
- }, index))
146
+ children: function children() {
147
+ return actions.map(function (action, index) {
148
+ // Actions can be an array of sub-actions, which are rendered within a MenuGroup.
149
+ if (Array.isArray(action)) {
150
+ return /*#__PURE__*/_jsx(MenuGroup, {
151
+ children: action.map(function (subAction, i) {
152
+ return /*#__PURE__*/_jsx(MenuItem, {
153
+ icon: subAction.icon,
154
+ onClick: subAction.action,
155
+ href: subAction.href,
156
+ disabled: subAction.disabled || false,
157
+ isDestructive: subAction.destructive || false,
158
+ children: subAction.label
159
+ }, i);
160
+ })
161
+ }, index);
162
+ }
163
+ return /*#__PURE__*/_jsx(MenuItem, {
164
+ icon: action.icon,
165
+ onClick: action.action,
166
+ href: action.href,
167
+ disabled: action.disabled || false,
168
+ isDestructive: action.destructive || false,
169
+ children: action.label
170
+ }, index);
171
+ });
172
+ }
173
+ }), headerAction && /*#__PURE__*/_jsx(Button, {
174
+ className: "newspack-card--core__header__action",
175
+ icon: headerAction.icon,
176
+ href: headerAction.href,
177
+ disabled: headerAction.disabled || false,
178
+ isDestructive: headerAction.destructive || false,
179
+ onClick: headerAction.onClick,
180
+ tone: headerAction.tone || 'primary',
181
+ variant: headerAction.variant || 'secondary',
182
+ children: headerAction.label
123
183
  })]
124
184
  }), children && /*#__PURE__*/_jsx("div", {
125
- className: "newspack-card--core__body",
185
+ className: classNames('newspack-card--core__body', !hasHeaderBorder && 'newspack-card--core__body--no-header-border'),
186
+ style: childrenStyle,
126
187
  children: children
127
188
  }), footer && /*#__PURE__*/_jsx(CardFooter, {
128
189
  size: sizeProps,
190
+ style: footerStyle,
129
191
  children: footer
130
192
  })]
131
- });
193
+ }));
132
194
  };
133
195
  export default CoreCard;
@@ -1,3 +1,15 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
+ import _createClass from "@babel/runtime/helpers/createClass";
5
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _inherits from "@babel/runtime/helpers/inherits";
8
+ var _excluded = ["buttonsCard", "className", "headerActions", "isNarrow", "isMedium", "isSmall", "isWhite", "noBorder", "__experimentalCoreCard", "__experimentalCoreProps"];
9
+ 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; }
10
+ 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) { _defineProperty(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; }
11
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
12
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
1
13
  /**
2
14
  * Card
3
15
  */
@@ -18,59 +30,62 @@ import './style.scss';
18
30
  */
19
31
  import classNames from 'classnames';
20
32
  import { jsx as _jsx } from "react/jsx-runtime";
21
- class Card extends Component {
22
- /**
23
- * Render
24
- */
25
- render() {
26
- const {
27
- buttonsCard,
28
- className,
29
- headerActions,
30
- isNarrow,
31
- isMedium,
32
- isSmall,
33
- isWhite,
34
- noBorder,
35
- // Pass as `true` to render using WP Core's Card component: https://wordpress.github.io/gutenberg/?path=/docs/components-card--docs
36
- __experimentalCoreCard,
37
- // Pass props supported by WP Core's Card component in this single prop.
38
- __experimentalCoreProps = {
39
- actionType: null,
40
- // chevron | toggle | button | link | none
41
- header: null,
42
- // Pass a React component to render in a CardHeader component.
43
- icon: null,
44
- footer: null,
45
- // Pass a React component to render in a CardFooter component.
46
- noMargin: false,
47
- isDraggable: false,
48
- dragIndex: null,
49
- onDragCallback: () => {}
50
- },
51
- ...otherProps
52
- } = this.props;
53
- if (__experimentalCoreCard) {
54
- const props = {
55
- buttonsCard,
56
- className,
57
- isMedium,
58
- isNarrow,
59
- isSmall,
60
- isWhite,
61
- noBorder,
62
- ...otherProps,
63
- ...__experimentalCoreProps
64
- };
65
- return /*#__PURE__*/_jsx(CoreCard, {
66
- ...props
67
- });
68
- }
69
- const classes = classNames('newspack-card', className, buttonsCard && 'newspack-card__buttons-card', headerActions && 'newspack-card__header-actions', isMedium && 'newspack-card__is-medium', isNarrow && 'newspack-card__is-narrow', isSmall && 'newspack-card__is-small', isWhite && 'newspack-card__is-white', noBorder && 'newspack-card__no-border');
70
- return /*#__PURE__*/_jsx("div", {
71
- className: classes,
72
- ...otherProps
73
- });
33
+ var Card = /*#__PURE__*/function (_Component) {
34
+ function Card() {
35
+ _classCallCheck(this, Card);
36
+ return _callSuper(this, Card, arguments);
74
37
  }
75
- }
38
+ _inherits(Card, _Component);
39
+ return _createClass(Card, [{
40
+ key: "render",
41
+ value:
42
+ /**
43
+ * Render
44
+ */
45
+ function render() {
46
+ var _this$props = this.props,
47
+ buttonsCard = _this$props.buttonsCard,
48
+ className = _this$props.className,
49
+ headerActions = _this$props.headerActions,
50
+ isNarrow = _this$props.isNarrow,
51
+ isMedium = _this$props.isMedium,
52
+ isSmall = _this$props.isSmall,
53
+ isWhite = _this$props.isWhite,
54
+ noBorder = _this$props.noBorder,
55
+ __experimentalCoreCard = _this$props.__experimentalCoreCard,
56
+ _this$props$__experim = _this$props.__experimentalCoreProps,
57
+ __experimentalCoreProps = _this$props$__experim === void 0 ? {
58
+ actionType: null,
59
+ // chevron | toggle | button | link | none
60
+ header: null,
61
+ // Pass a React component to render in a CardHeader component.
62
+ icon: null,
63
+ footer: null,
64
+ // Pass a React component to render in a CardFooter component.
65
+ noMargin: false,
66
+ isDraggable: false,
67
+ dragIndex: null,
68
+ hasGreyHeader: false,
69
+ onDragCallback: function onDragCallback() {}
70
+ } : _this$props$__experim,
71
+ otherProps = _objectWithoutProperties(_this$props, _excluded);
72
+ if (__experimentalCoreCard) {
73
+ var props = _objectSpread(_objectSpread({
74
+ buttonsCard: buttonsCard,
75
+ className: className,
76
+ isMedium: isMedium,
77
+ isNarrow: isNarrow,
78
+ isSmall: isSmall,
79
+ isWhite: isWhite,
80
+ noBorder: noBorder
81
+ }, otherProps), __experimentalCoreProps);
82
+ return /*#__PURE__*/_jsx(CoreCard, _objectSpread({}, props));
83
+ }
84
+ var classes = classNames('newspack-card', className, buttonsCard && 'newspack-card__buttons-card', headerActions && 'newspack-card__header-actions', isMedium && 'newspack-card__is-medium', isNarrow && 'newspack-card__is-narrow', isSmall && 'newspack-card__is-small', isWhite && 'newspack-card__is-white', noBorder && 'newspack-card__no-border');
85
+ return /*#__PURE__*/_jsx("div", _objectSpread({
86
+ className: classes
87
+ }, otherProps));
88
+ }
89
+ }]);
90
+ }(Component);
76
91
  export default Card;
@@ -3,26 +3,27 @@
3
3
  */
4
4
 
5
5
  @use "~@wordpress/base-styles/colors" as wp-colors;
6
+ @use "~@wordpress/base-styles/variables" as wp-vars;
6
7
  @use "../../../colors/colors.module" as colors;
7
8
 
8
9
  .newspack-card--core,
9
10
  .newspack-wizard .newspack-card--core {
10
- background: white;
11
+ background: wp-colors.$white;
11
12
  position: relative;
12
13
  transition: background-color 125ms ease-in-out, box-shadow 125ms ease-in-out, color 125ms ease-in-out;
13
14
  svg {
14
15
  transition: fill 125ms ease-in-out;
15
16
  }
16
17
  &__icon {
17
- border-radius: 50%;
18
+ border-radius: wp-vars.$radius-round;
18
19
  display: grid;
19
- height: 48px;
20
+ height: wp-vars.$grid-unit-60;
20
21
  place-items: center;
21
- width: 48px;
22
+ width: wp-vars.$grid-unit-60;
22
23
  svg {
23
24
  fill: var(--wp-admin-theme-color);
24
- height: 40px;
25
- width: 40px;
25
+ height: wp-vars.$grid-unit-50;
26
+ width: wp-vars.$grid-unit-50;
26
27
  }
27
28
  .newspack-card--core__has-icon-background-color & {
28
29
  background: var(--wp-admin-theme-color-lighter-10);
@@ -35,24 +36,37 @@
35
36
  h4,
36
37
  h5,
37
38
  h6 {
38
- font-size: 14px;
39
- font-weight: 500;
39
+ font-size: wp-vars.$font-size-large;
40
40
  }
41
- .newspack-card--core__icon {
42
- height: 40px;
43
- width: 40px;
44
- svg {
45
- height: 24px;
46
- width: 24px;
41
+ .newspack-card--core {
42
+ &__header-content {
43
+ * {
44
+ line-height: wp-vars.$font-line-height-small;
45
+ }
46
+ }
47
+ &__icon {
48
+ height: wp-vars.$grid-unit-50;
49
+ width: wp-vars.$grid-unit-50;
50
+ svg {
51
+ height: wp-vars.$grid-unit-30;
52
+ width: wp-vars.$grid-unit-30;
53
+ }
47
54
  }
48
55
  }
49
56
  }
50
57
  &__no-margin .components-card__body {
51
58
  padding: 0 !important;
52
59
  }
60
+ &__is-disabled {
61
+ cursor: not-allowed;
62
+ opacity: 0.5;
63
+ .newspack-card--core__header {
64
+ pointer-events: none;
65
+ }
66
+ }
53
67
  &__header {
54
68
  color: wp-colors.$gray-700;
55
- column-gap: 16px;
69
+ flex-wrap: wrap;
56
70
  position: relative;
57
71
  .newspack-card--core__action {
58
72
  margin: 0;
@@ -68,22 +82,26 @@
68
82
  word-wrap: normal !important;
69
83
  }
70
84
  }
71
- .components-dropdown-menu {
85
+ > .components-dropdown-menu {
72
86
  aspect-ratio: 1;
73
87
  border-left: 1px solid wp-colors.$gray-200;
74
88
  display: grid;
75
89
  height: 100%;
90
+ max-width: 50px;
76
91
  padding: 4px;
77
92
  place-items: center;
78
93
  position: absolute;
79
94
  right: 0;
80
95
  top: 0;
81
96
  }
97
+ &__action {
98
+ background-color: wp-colors.$white;
99
+ flex: 1 100%;
100
+ justify-content: center !important;
101
+ }
82
102
  }
83
103
  &__header--is-draggable {
84
- .newspack-card--core__header-content {
85
- padding-left: 65px;
86
- }
104
+ padding-left: 80px !important;
87
105
  .newspack-card--core__header__draggable-controls {
88
106
  align-items: center;
89
107
  border-right: 1px solid wp-colors.$gray-200;
@@ -110,6 +128,21 @@
110
128
  }
111
129
  }
112
130
  }
131
+ // Two classes beat the single-class .components-card__header border-bottom
132
+ // rule from WP Core without needing !important.
133
+ &__header.newspack-card--core__header--no-border {
134
+ border-bottom: none;
135
+ }
136
+ &__body.newspack-card--core__body--no-header-border {
137
+ > div:not(.components-card__body):not(.components-card__media):not(.components-card__divider) {
138
+ padding-top: 0;
139
+ }
140
+ }
141
+ &__header--has-actions {
142
+ .newspack-card--core__header {
143
+ padding-right: 70px;
144
+ }
145
+ }
113
146
  button.newspack-card--core__header {
114
147
  appearance: none;
115
148
  background-color: white;
@@ -140,18 +173,25 @@
140
173
  h6 {
141
174
  align-items: center;
142
175
  color: wp-colors.$gray-900;
143
- font-weight: 500;
176
+ font-weight: 600;
144
177
  display: flex;
145
178
  gap: 8px;
179
+ a {
180
+ color: inherit;
181
+ text-decoration: none;
182
+ &:hover {
183
+ text-decoration: underline;
184
+ }
185
+ }
146
186
  .newspack-badge {
147
187
  font-weight: 400;
148
188
  }
149
189
  }
150
190
  }
151
- &__is-active {
191
+ &__is-active:not(.newspack-card--core__is-draggable) {
152
192
  border-color: var(--wp-admin-theme-color);
153
193
  box-shadow: var(--wp-admin-theme-color) 0 0 0 1px;
154
- button.newspack-card--core__header {
194
+ .newspack-card--core__header {
155
195
  background-color: rgba( var(--wp-admin-theme-color--rgb), 0.04 );
156
196
  color: var(--wp-admin-theme-color);
157
197
  h1,
@@ -168,7 +208,7 @@
168
208
  }
169
209
 
170
210
  &.newspack-card--core__has-children {
171
- button.newspack-card--core__header {
211
+ .newspack-card--core__header {
172
212
  border-bottom-left-radius: 0;
173
213
  border-bottom-right-radius: 0;
174
214
  }
@@ -203,14 +243,39 @@
203
243
  }
204
244
  }
205
245
  }
246
+ &.is-destructive {
247
+ .newspack-card--core__header {
248
+ h1,
249
+ h2,
250
+ h3,
251
+ h4,
252
+ h5,
253
+ h6 {
254
+ color: wp-colors.$alert-red;
255
+ }
256
+ &:hover,
257
+ &:focus {
258
+ background-color: wp-colors.$gray-100;
259
+ }
260
+ }
261
+ .newspack-card--core__action,
262
+ .newspack-card--core__action svg {
263
+ fill: wp-colors.$alert-red;
264
+ }
265
+ }
206
266
  hr.components-card__divider {
207
267
  margin: 0;
208
268
  }
209
269
  &__is-narrow {
210
270
  margin-left: auto;
211
271
  margin-right: auto;
212
- @media screen and ( min-width: 608px ) {
213
- max-width: 576px;
272
+ @media screen and ( min-width: 615px ) {
273
+ max-width: 583px;
274
+ }
275
+ }
276
+ &__has-grey-header {
277
+ .newspack-card--core__header {
278
+ background-color: rgba(black, 0.025);
214
279
  }
215
280
  }
216
281
  &__body {
@@ -223,5 +288,8 @@
223
288
  padding: 0;
224
289
  }
225
290
  }
291
+ > .components-card__media {
292
+ border-radius: 0 !important;
293
+ }
226
294
  }
227
295
  }
@@ -52,8 +52,8 @@
52
52
  margin-left: auto;
53
53
  margin-right: auto;
54
54
 
55
- @media screen and ( min-width: 608px ) {
56
- max-width: 576px;
55
+ @media screen and ( min-width: 615px ) {
56
+ max-width: 583px;
57
57
  }
58
58
  }
59
59