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
@@ -1,3 +1,7 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ 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; }
4
+ 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
5
  /**
2
6
  * Ads Settings Section.
3
7
  */
@@ -16,10 +20,10 @@ import { CheckboxControl } from '@wordpress/components';
16
20
  import { ActionCard, Button, Grid, Notice, SelectControl, TextControl } from '../';
17
21
  import './style.scss';
18
22
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
- const isSelectControl = setting => {
23
+ var isSelectControl = function isSelectControl(setting) {
20
24
  return Array.isArray(setting.options) && setting.options.length;
21
25
  };
22
- const getControlComponent = setting => {
26
+ var getControlComponent = function getControlComponent(setting) {
23
27
  if (isSelectControl(setting)) {
24
28
  return SelectControl;
25
29
  }
@@ -31,7 +35,7 @@ const getControlComponent = setting => {
31
35
  return TextControl;
32
36
  }
33
37
  };
34
- const getControlType = setting => {
38
+ var getControlType = function getControlType(setting) {
35
39
  switch (setting.type) {
36
40
  case 'int':
37
41
  case 'integer':
@@ -50,42 +54,49 @@ const getControlType = setting => {
50
54
  return null;
51
55
  }
52
56
  };
53
- const SettingsSection = props => {
57
+ var SettingsSection = function SettingsSection(props) {
54
58
  var _props$id;
55
- const [saveDisabled, setSaveDisabled] = useState(true);
56
- const {
57
- error,
58
- sectionKey,
59
- active,
60
- title,
61
- description,
62
- fields,
63
- disabled,
64
- onChange,
65
- onUpdate
66
- } = props;
67
- const getControlProps = setting => ({
68
- disabled,
69
- name: `${setting.section}_${setting.key}`,
70
- type: getControlType(setting),
71
- label: setting.description,
72
- help: setting.help || null,
73
- options: setting.options?.map(option => ({
74
- value: option.value,
75
- label: option.name || option.label
76
- })) || null,
77
- value: setting.value,
78
- multiple: isSelectControl(setting) && setting.multiple ? true : null,
79
- checked: setting.type === 'boolean' ? !!setting.value : null,
80
- onChange: value => {
81
- onChange(setting.key, value);
82
- setSaveDisabled(false);
83
- }
84
- });
85
- const createFilter = (name, defaultComponent = null) => {
86
- return applyFilters(`newspack.settingSection.${sectionKey}.${name}`, defaultComponent, props);
59
+ var _useState = useState(true),
60
+ _useState2 = _slicedToArray(_useState, 2),
61
+ saveDisabled = _useState2[0],
62
+ setSaveDisabled = _useState2[1];
63
+ var error = props.error,
64
+ sectionKey = props.sectionKey,
65
+ active = props.active,
66
+ title = props.title,
67
+ description = props.description,
68
+ fields = props.fields,
69
+ disabled = props.disabled,
70
+ _onChange = props.onChange,
71
+ onUpdate = props.onUpdate;
72
+ var getControlProps = function getControlProps(setting) {
73
+ var _setting$options;
74
+ return {
75
+ disabled: disabled,
76
+ name: "".concat(setting.section, "_").concat(setting.key),
77
+ type: getControlType(setting),
78
+ label: setting.description,
79
+ help: setting.help || null,
80
+ options: ((_setting$options = setting.options) === null || _setting$options === void 0 ? void 0 : _setting$options.map(function (option) {
81
+ return {
82
+ value: option.value,
83
+ label: option.name || option.label
84
+ };
85
+ })) || null,
86
+ value: setting.value,
87
+ multiple: isSelectControl(setting) && setting.multiple ? true : null,
88
+ checked: setting.type === 'boolean' ? !!setting.value : null,
89
+ onChange: function onChange(value) {
90
+ _onChange(setting.key, value);
91
+ setSaveDisabled(false);
92
+ }
93
+ };
94
+ };
95
+ var createFilter = function createFilter(name) {
96
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
97
+ return applyFilters("newspack.settingSection.".concat(sectionKey, ".").concat(name), defaultComponent, props);
87
98
  };
88
- let columns = 2;
99
+ var columns = 2;
89
100
  if (fields.length % 3 === 0) {
90
101
  columns = 3;
91
102
  } else if (fields.length === 1) {
@@ -99,33 +110,33 @@ const SettingsSection = props => {
99
110
  description: description,
100
111
  toggleChecked: active,
101
112
  hasGreyHeader: active || null === active,
102
- toggleOnChange: active !== null ? value => onUpdate({
103
- active: value
104
- }) : null,
113
+ toggleOnChange: active !== null ? function (value) {
114
+ return onUpdate({
115
+ active: value
116
+ });
117
+ } : null,
105
118
  actionContent: (active || null === active) && createFilter('buttons', /*#__PURE__*/_jsx(Button, {
106
119
  variant: "primary",
107
120
  disabled: disabled || saveDisabled,
108
- onClick: () => {
121
+ onClick: function onClick() {
109
122
  onUpdate();
110
123
  setSaveDisabled(true);
111
124
  },
112
125
  children: __('Save Settings', 'newspack')
113
126
  })),
114
127
  children: (active || active === null) && /*#__PURE__*/_jsxs(Fragment, {
115
- children: [error?.message && /*#__PURE__*/_jsx(Notice, {
128
+ children: [(error === null || error === void 0 ? void 0 : error.message) && /*#__PURE__*/_jsx(Notice, {
116
129
  noticeText: error.message,
117
130
  isError: true
118
131
  }), createFilter('beforeControls'), /*#__PURE__*/_jsx(Grid, {
119
132
  columns: columns,
120
133
  gutter: 32,
121
- children: fields.map(setting => {
122
- const Control = getControlComponent(setting); // eslint-disable-line @wordpress/no-unused-vars-before-return, no-unused-vars
123
- return applyFilters(`newspack.settingsSection.${sectionKey}.control`, /*#__PURE__*/_jsx(Control, {
124
- ...getControlProps(setting)
125
- }, setting.key), {
126
- sectionKey,
127
- setting,
128
- onChange
134
+ children: fields.map(function (setting) {
135
+ var Control = getControlComponent(setting); // eslint-disable-line @wordpress/no-unused-vars-before-return, no-unused-vars
136
+ return applyFilters("newspack.settingsSection.".concat(sectionKey, ".control"), /*#__PURE__*/_jsx(Control, _objectSpread({}, getControlProps(setting)), setting.key), {
137
+ sectionKey: sectionKey,
138
+ setting: setting,
139
+ onChange: _onChange
129
140
  });
130
141
  })
131
142
  })]
@@ -1,3 +1,14 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/createClass";
4
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
6
+ import _inherits from "@babel/runtime/helpers/inherits";
7
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+ 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; }
9
+ 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; }
10
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
11
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
1
12
  /**
2
13
  * External dependencies
3
14
  */
@@ -16,206 +27,218 @@ import { __ } from '@wordpress/i18n';
16
27
  import { SectionHeader, Notice } from '../';
17
28
  import SettingsSection from './SettingsSection';
18
29
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
- class PluginSettings extends Component {
20
- constructor() {
21
- super(...arguments);
22
- this.state = {
23
- inFlight: false,
24
- settings: {},
25
- error: null
26
- };
27
- }
28
- fetchSettings = () => {
29
- const {
30
- afterFetch,
31
- pluginSlug,
32
- isWizard
33
- } = this.props;
34
- this.setState({
35
- inFlight: true
36
- });
37
- apiFetch({
38
- path: isWizard ? `/newspack/v1/wizard/${pluginSlug}/settings` : `/${pluginSlug}/v1/settings`
39
- }).then(settings => {
40
- this.setState({
41
- settings,
42
- error: null
43
- });
44
- if ('function' === typeof afterFetch) {
45
- afterFetch(settings);
46
- }
47
- }).catch(error => {
48
- this.setState({
49
- error
30
+ var PluginSettings = /*#__PURE__*/function (_Component) {
31
+ function PluginSettings() {
32
+ var _this;
33
+ _classCallCheck(this, PluginSettings);
34
+ _this = _callSuper(this, PluginSettings, arguments);
35
+ _defineProperty(_this, "fetchSettings", function () {
36
+ var _this$props = _this.props,
37
+ afterFetch = _this$props.afterFetch,
38
+ pluginSlug = _this$props.pluginSlug,
39
+ isWizard = _this$props.isWizard;
40
+ _this.setState({
41
+ inFlight: true
50
42
  });
51
- }).finally(() => {
52
- this.setState({
53
- inFlight: false
43
+ apiFetch({
44
+ path: isWizard ? "/newspack/v1/wizard/".concat(pluginSlug, "/settings") : "/".concat(pluginSlug, "/v1/settings")
45
+ }).then(function (settings) {
46
+ _this.setState({
47
+ settings: settings,
48
+ error: null
49
+ });
50
+ if ('function' === typeof afterFetch) {
51
+ afterFetch(settings);
52
+ }
53
+ })["catch"](function (error) {
54
+ _this.setState({
55
+ error: error
56
+ });
57
+ })["finally"](function () {
58
+ _this.setState({
59
+ inFlight: false
60
+ });
54
61
  });
55
62
  });
56
- };
57
- componentDidMount() {
58
- this.fetchSettings();
59
- }
60
- getSettingsValues = sectionKey => {
61
- return this.state.settings[sectionKey]?.reduce((map, setting) => {
62
- map[setting.key] = setting.value;
63
- return map;
64
- }, {}) || {};
65
- };
66
- handleSettingChange = sectionKey => (key, value) => {
67
- const sectionSettings = [...this.state.settings[sectionKey]];
68
- sectionSettings.forEach(setting => {
69
- if (setting.key === key) {
70
- setting.value = value;
71
- }
63
+ _defineProperty(_this, "getSettingsValues", function (sectionKey) {
64
+ var _this$state$settings$;
65
+ return ((_this$state$settings$ = _this.state.settings[sectionKey]) === null || _this$state$settings$ === void 0 ? void 0 : _this$state$settings$.reduce(function (map, setting) {
66
+ map[setting.key] = setting.value;
67
+ return map;
68
+ }, {})) || {};
72
69
  });
73
- this.setState({
74
- settings: {
75
- ...this.state.settings,
76
- [sectionKey]: sectionSettings
77
- }
70
+ _defineProperty(_this, "handleSettingChange", function (sectionKey) {
71
+ return function (key, value) {
72
+ var sectionSettings = _toConsumableArray(_this.state.settings[sectionKey]);
73
+ sectionSettings.forEach(function (setting) {
74
+ if (setting.key === key) {
75
+ setting.value = value;
76
+ }
77
+ });
78
+ _this.setState({
79
+ settings: _objectSpread(_objectSpread({}, _this.state.settings), {}, _defineProperty({}, sectionKey, sectionSettings))
80
+ });
81
+ };
78
82
  });
79
- };
80
- handleSectionUpdate = sectionKey => data => {
81
- const {
82
- afterUpdate,
83
- pluginSlug,
84
- isWizard
85
- } = this.props;
86
- this.setState({
87
- inFlight: true
83
+ _defineProperty(_this, "handleSectionUpdate", function (sectionKey) {
84
+ return function (data) {
85
+ var _this$props2 = _this.props,
86
+ afterUpdate = _this$props2.afterUpdate,
87
+ pluginSlug = _this$props2.pluginSlug,
88
+ isWizard = _this$props2.isWizard;
89
+ _this.setState({
90
+ inFlight: true
91
+ });
92
+ apiFetch({
93
+ path: isWizard ? "/newspack/v1/wizard/".concat(pluginSlug, "/settings") : "/".concat(pluginSlug, "/v1/settings"),
94
+ method: 'POST',
95
+ data: {
96
+ section: sectionKey,
97
+ settings: data ? data : _this.getSettingsValues(sectionKey)
98
+ }
99
+ }).then(function (settings) {
100
+ _this.setState({
101
+ settings: _objectSpread(_objectSpread({}, _this.state.settings), {}, _defineProperty({}, sectionKey, settings[sectionKey])),
102
+ error: null
103
+ });
104
+ if ('function' === typeof afterUpdate) {
105
+ afterUpdate(settings);
106
+ }
107
+ })["catch"](function (error) {
108
+ _this.setState({
109
+ error: error
110
+ });
111
+ })["finally"](function () {
112
+ _this.setState({
113
+ inFlight: false
114
+ });
115
+ });
116
+ };
88
117
  });
89
- apiFetch({
90
- path: isWizard ? `/newspack/v1/wizard/${pluginSlug}/settings` : `/${pluginSlug}/v1/settings`,
91
- method: 'POST',
92
- data: {
93
- section: sectionKey,
94
- settings: data ? data : this.getSettingsValues(sectionKey)
95
- }
96
- }).then(settings => {
97
- this.setState({
98
- settings: {
99
- ...this.state.settings,
100
- [sectionKey]: settings[sectionKey]
101
- },
102
- error: null
103
- });
104
- if ('function' === typeof afterUpdate) {
105
- afterUpdate(settings);
106
- }
107
- }).catch(error => {
108
- this.setState({
109
- error
118
+ /**
119
+ * Get the section setting containing section information.
120
+ *
121
+ * @param {string} sectionKey The section name.
122
+ * @return {Object} The section setting.
123
+ */
124
+ _defineProperty(_this, "getSectionInfo", function (sectionKey) {
125
+ var _this$state$settings$2;
126
+ return (_this$state$settings$2 = _this.state.settings[sectionKey]) === null || _this$state$settings$2 === void 0 ? void 0 : _this$state$settings$2.find(function (setting) {
127
+ return !setting.key || setting.key === 'active';
110
128
  });
111
- }).finally(() => {
112
- this.setState({
113
- inFlight: false
129
+ });
130
+ /**
131
+ * Get the section title.
132
+ *
133
+ * @param {string} sectionKey The section name.
134
+ * @return {string} The section title.
135
+ */
136
+ _defineProperty(_this, "getSectionTitle", function (sectionKey) {
137
+ var _this$getSectionInfo;
138
+ return (_this$getSectionInfo = _this.getSectionInfo(sectionKey)) === null || _this$getSectionInfo === void 0 ? void 0 : _this$getSectionInfo.description;
139
+ });
140
+ /**
141
+ * Get the section description.
142
+ *
143
+ * @param {string} sectionKey The section name.
144
+ * @return {string} The section description.
145
+ */
146
+ _defineProperty(_this, "getSectionDescription", function (sectionKey) {
147
+ var _this$getSectionInfo2;
148
+ return (_this$getSectionInfo2 = _this.getSectionInfo(sectionKey)) === null || _this$getSectionInfo2 === void 0 ? void 0 : _this$getSectionInfo2.help;
149
+ });
150
+ /**
151
+ * Get whether a section is active.
152
+ *
153
+ * @param {string} sectionKey The section name.
154
+ * @return {?boolean} Whether the section is active or not. Null if the section is not found or does not support activation.
155
+ */
156
+ _defineProperty(_this, "isSectionActive", function (sectionKey) {
157
+ var _settings$sectionKey;
158
+ var settings = _this.state.settings;
159
+ var activation = (_settings$sectionKey = settings[sectionKey]) === null || _settings$sectionKey === void 0 ? void 0 : _settings$sectionKey.find(function (setting) {
160
+ return setting.key === 'active';
114
161
  });
162
+ if (!activation) {
163
+ return null;
164
+ }
165
+ return activation.value;
115
166
  });
116
- };
117
-
118
- /**
119
- * Get the section setting containing section information.
120
- *
121
- * @param {string} sectionKey The section name.
122
- * @return {Object} The section setting.
123
- */
124
- getSectionInfo = sectionKey => {
125
- return this.state.settings[sectionKey]?.find(setting => !setting.key || setting.key === 'active');
126
- };
127
-
128
- /**
129
- * Get the section title.
130
- *
131
- * @param {string} sectionKey The section name.
132
- * @return {string} The section title.
133
- */
134
- getSectionTitle = sectionKey => {
135
- return this.getSectionInfo(sectionKey)?.description;
136
- };
137
-
138
- /**
139
- * Get the section description.
140
- *
141
- * @param {string} sectionKey The section name.
142
- * @return {string} The section description.
143
- */
144
- getSectionDescription = sectionKey => {
145
- return this.getSectionInfo(sectionKey)?.help;
146
- };
147
-
148
- /**
149
- * Get whether a section is active.
150
- *
151
- * @param {string} sectionKey The section name.
152
- * @return {?boolean} Whether the section is active or not. Null if the section is not found or does not support activation.
153
- */
154
- isSectionActive = sectionKey => {
155
- const {
156
- settings
157
- } = this.state;
158
- const activation = settings[sectionKey]?.find(setting => setting.key === 'active');
159
- if (!activation) {
160
- return null;
161
- }
162
- return activation.value;
163
- };
164
-
165
- /**
166
- * Get list of section field settings.
167
- *
168
- * @param {string} sectionKey The section name.
169
- * @return {?Array} List of section fields.
170
- */
171
- getSectionFields = sectionKey => {
172
- return this.state.settings[sectionKey]?.filter(setting => setting.key && setting.key !== 'active');
173
- };
174
-
175
- /**
176
- * Render.
177
- */
178
- render() {
179
- const {
180
- title,
181
- description,
182
- hasGreyHeader,
183
- children,
184
- titleLevel = 1
185
- } = this.props;
186
- const {
187
- settings,
188
- inFlight,
189
- error
190
- } = this.state;
191
- return /*#__PURE__*/_jsxs(Fragment, {
192
- children: [title && /*#__PURE__*/_jsx(SectionHeader, {
193
- title: title,
194
- heading: titleLevel,
195
- description: description
196
- }), error && /*#__PURE__*/_jsx(Notice, {
197
- isError: true,
198
- noticeText: error.message
199
- }), /*#__PURE__*/_jsxs("div", {
200
- className: classnames('newspack-plugin-settings', {
201
- 'newspack-wizard-section__is-loading': inFlight && !Object.keys(settings).length
202
- }),
203
- children: [Object.keys(settings).map(sectionKey => /*#__PURE__*/_jsx(SettingsSection, {
204
- disabled: inFlight,
205
- id: `plugin-settings-${sectionKey}`,
206
- sectionKey: sectionKey,
207
- title: this.getSectionTitle(sectionKey),
208
- description: this.getSectionDescription(sectionKey),
209
- active: this.isSectionActive(sectionKey),
210
- fields: this.getSectionFields(sectionKey),
211
- onChange: this.handleSettingChange(sectionKey),
212
- onUpdate: this.handleSectionUpdate(sectionKey),
213
- hasGreyHeader: hasGreyHeader
214
- }, sectionKey)), children]
215
- })]
167
+ /**
168
+ * Get list of section field settings.
169
+ *
170
+ * @param {string} sectionKey The section name.
171
+ * @return {?Array} List of section fields.
172
+ */
173
+ _defineProperty(_this, "getSectionFields", function (sectionKey) {
174
+ var _this$state$settings$3;
175
+ return (_this$state$settings$3 = _this.state.settings[sectionKey]) === null || _this$state$settings$3 === void 0 ? void 0 : _this$state$settings$3.filter(function (setting) {
176
+ return setting.key && setting.key !== 'active';
177
+ });
216
178
  });
179
+ _this.state = {
180
+ inFlight: false,
181
+ settings: {},
182
+ error: null
183
+ };
184
+ return _this;
217
185
  }
218
- }
186
+ _inherits(PluginSettings, _Component);
187
+ return _createClass(PluginSettings, [{
188
+ key: "componentDidMount",
189
+ value: function componentDidMount() {
190
+ this.fetchSettings();
191
+ }
192
+ }, {
193
+ key: "render",
194
+ value:
195
+ /**
196
+ * Render.
197
+ */
198
+ function render() {
199
+ var _this2 = this;
200
+ var _this$props3 = this.props,
201
+ title = _this$props3.title,
202
+ description = _this$props3.description,
203
+ hasGreyHeader = _this$props3.hasGreyHeader,
204
+ children = _this$props3.children,
205
+ _this$props3$titleLev = _this$props3.titleLevel,
206
+ titleLevel = _this$props3$titleLev === void 0 ? 1 : _this$props3$titleLev;
207
+ var _this$state = this.state,
208
+ settings = _this$state.settings,
209
+ inFlight = _this$state.inFlight,
210
+ error = _this$state.error;
211
+ return /*#__PURE__*/_jsxs(Fragment, {
212
+ children: [title && /*#__PURE__*/_jsx(SectionHeader, {
213
+ title: title,
214
+ heading: titleLevel,
215
+ description: description
216
+ }), error && /*#__PURE__*/_jsx(Notice, {
217
+ isError: true,
218
+ noticeText: error.message
219
+ }), /*#__PURE__*/_jsxs("div", {
220
+ className: classnames('newspack-plugin-settings', {
221
+ 'newspack-wizard-section__is-loading': inFlight && !Object.keys(settings).length
222
+ }),
223
+ children: [Object.keys(settings).map(function (sectionKey) {
224
+ return /*#__PURE__*/_jsx(SettingsSection, {
225
+ disabled: inFlight,
226
+ id: "plugin-settings-".concat(sectionKey),
227
+ sectionKey: sectionKey,
228
+ title: _this2.getSectionTitle(sectionKey),
229
+ description: _this2.getSectionDescription(sectionKey),
230
+ active: _this2.isSectionActive(sectionKey),
231
+ fields: _this2.getSectionFields(sectionKey),
232
+ onChange: _this2.handleSettingChange(sectionKey),
233
+ onUpdate: _this2.handleSectionUpdate(sectionKey),
234
+ hasGreyHeader: hasGreyHeader
235
+ }, sectionKey);
236
+ }), children]
237
+ })]
238
+ });
239
+ }
240
+ }]);
241
+ }(Component);
219
242
  PluginSettings.defaultProps = {
220
243
  title: __('General Settings', 'newspack-plugin')
221
244
  };