newspack-components 2.0.3 → 2.2.0

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/copy-styles.js +1 -1
  2. package/dist/cjs/accordion/index.js +46 -0
  3. package/dist/cjs/accordion/style.scss +27 -0
  4. package/dist/cjs/action-card/index.js +72 -40
  5. package/dist/cjs/action-card/style.scss +143 -41
  6. package/dist/cjs/autocomplete-tokenfield/index.js +13 -41
  7. package/dist/cjs/autocomplete-tokenfield/style.scss +6 -6
  8. package/dist/cjs/autocomplete-with-suggestions/index.js +33 -53
  9. package/dist/cjs/autocomplete-with-suggestions/style.scss +27 -27
  10. package/dist/cjs/button/index.js +1 -20
  11. package/dist/cjs/button/style.scss +3 -344
  12. package/dist/cjs/button-card/index.js +11 -15
  13. package/dist/cjs/button-card/style.scss +65 -35
  14. package/dist/cjs/card/index.js +4 -9
  15. package/dist/cjs/card/style.scss +47 -63
  16. package/dist/cjs/category-autocomplete/index.js +66 -47
  17. package/dist/cjs/category-autocomplete/style.scss +20 -24
  18. package/dist/cjs/color-picker/index.js +16 -48
  19. package/dist/cjs/color-picker/style.scss +20 -163
  20. package/dist/cjs/consts.js +5 -3
  21. package/dist/cjs/custom-select-control/index.js +1 -9
  22. package/dist/cjs/custom-select-control/style.scss +14 -45
  23. package/dist/cjs/date-range-picker/index.js +1 -10
  24. package/dist/cjs/date-range-picker/style.scss +12 -12
  25. package/dist/cjs/footer/index.js +24 -22
  26. package/dist/cjs/footer/style.scss +13 -14
  27. package/dist/cjs/form-token-field/index.js +3 -11
  28. package/dist/cjs/form-token-field/style.scss +9 -105
  29. package/dist/cjs/global-notices/index.js +3 -9
  30. package/dist/cjs/grid/index.js +1 -8
  31. package/dist/cjs/grid/style.scss +19 -6
  32. package/dist/cjs/handoff/index.js +15 -24
  33. package/dist/cjs/handoff-message/index.js +50 -0
  34. package/dist/cjs/hooks/index.js +1 -7
  35. package/dist/cjs/hooks/useObjectState.js +7 -13
  36. package/dist/cjs/hooks/useObjectState.test.js +0 -14
  37. package/dist/cjs/hooks/useOnClickOutside.js +3 -6
  38. package/dist/cjs/hooks/usePrompt.js +1 -13
  39. package/dist/cjs/image-upload/index.js +22 -20
  40. package/dist/cjs/image-upload/index.test.js +0 -5
  41. package/dist/cjs/image-upload/style.scss +12 -17
  42. package/dist/cjs/index.js +31 -93
  43. package/dist/cjs/info-button/index.js +3 -11
  44. package/dist/cjs/info-button/style.scss +1 -3
  45. package/dist/cjs/modal/index.js +1 -12
  46. package/dist/cjs/modal/style.scss +20 -132
  47. package/dist/cjs/newspack-icon/index.js +5 -11
  48. package/dist/cjs/newspack-icon/style.scss +17 -2
  49. package/dist/cjs/newspack-logo/index.js +1 -9
  50. package/dist/cjs/newspack-logo/style.scss +3 -3
  51. package/dist/cjs/notice/index.js +8 -16
  52. package/dist/cjs/notice/style.scss +60 -19
  53. package/dist/cjs/patrons-logo/index.js +3 -11
  54. package/dist/cjs/plugin-installer/index.js +37 -37
  55. package/dist/cjs/plugin-installer/style.scss +5 -5
  56. package/dist/cjs/plugin-settings/SettingsSection.js +71 -59
  57. package/dist/cjs/plugin-settings/index.js +71 -50
  58. package/dist/cjs/plugin-settings/style.scss +7 -0
  59. package/dist/cjs/plugin-toggle/index.js +60 -32
  60. package/dist/cjs/plugin-toggle/style.scss +2 -2
  61. package/dist/cjs/popover/index.js +1 -11
  62. package/dist/cjs/popover/style.scss +20 -17
  63. package/dist/cjs/position-control/index.js +113 -0
  64. package/dist/cjs/position-control/style.scss +66 -0
  65. package/dist/cjs/progress-bar/index.js +2 -9
  66. package/dist/cjs/progress-bar/index.test.js +2 -7
  67. package/dist/cjs/progress-bar/style.scss +4 -4
  68. package/dist/cjs/proxied-imports/router.js +0 -3
  69. package/dist/cjs/radio-control/index.js +1 -11
  70. package/dist/cjs/radio-control/style.scss +10 -11
  71. package/dist/cjs/section-header/index.js +47 -19
  72. package/dist/cjs/section-header/style.scss +22 -1
  73. package/dist/cjs/select-control/ButtonGroupControl.js +11 -20
  74. package/dist/cjs/select-control/GroupedSelectControl.js +42 -45
  75. package/dist/cjs/select-control/index.js +6 -14
  76. package/dist/cjs/select-control/style.scss +47 -88
  77. package/dist/cjs/settings/MinMaxSetting.js +6 -8
  78. package/dist/cjs/settings/SettingsCard.js +9 -8
  79. package/dist/cjs/settings/SettingsSection.js +5 -8
  80. package/dist/cjs/settings/index.js +0 -6
  81. package/dist/cjs/settings/style.scss +32 -4
  82. package/dist/cjs/steps-list/index.js +52 -0
  83. package/dist/cjs/steps-list/style.scss +11 -0
  84. package/dist/cjs/steps-list-item/index.js +56 -0
  85. package/dist/cjs/steps-list-item/style.scss +47 -0
  86. package/dist/cjs/style-card/index.js +15 -18
  87. package/dist/cjs/style-card/style.scss +19 -18
  88. package/dist/cjs/style.scss +43 -0
  89. package/dist/cjs/tabbed-navigation/index.js +27 -31
  90. package/dist/cjs/tabbed-navigation/style.scss +58 -37
  91. package/dist/cjs/text-control/index.js +6 -19
  92. package/dist/cjs/text-control/style.scss +0 -126
  93. package/dist/cjs/utils/index.js +10 -5
  94. package/dist/cjs/waiting/index.js +9 -33
  95. package/dist/cjs/waiting/style.scss +9 -20
  96. package/dist/cjs/web-preview/index.js +30 -57
  97. package/dist/cjs/web-preview/style.scss +41 -34
  98. package/dist/cjs/with-wizard/index.js +55 -33
  99. package/dist/cjs/with-wizard/style.scss +77 -124
  100. package/dist/cjs/with-wizard-screen/index.js +28 -38
  101. package/dist/cjs/with-wizard-screen/style.scss +75 -125
  102. package/dist/cjs/wizard/components/WizardError.js +74 -0
  103. package/dist/cjs/wizard/index.js +131 -0
  104. package/dist/cjs/wizard/store/index.js +165 -0
  105. package/dist/cjs/wizard/store/utils.js +26 -0
  106. package/dist/cjs/wizard/style.scss +148 -0
  107. package/dist/esm/accordion/index.js +38 -0
  108. package/dist/esm/accordion/style.scss +27 -0
  109. package/dist/esm/action-card/index.js +75 -37
  110. package/dist/esm/action-card/style.scss +143 -41
  111. package/dist/esm/autocomplete-tokenfield/index.js +14 -37
  112. package/dist/esm/autocomplete-tokenfield/style.scss +6 -6
  113. package/dist/esm/autocomplete-with-suggestions/index.js +31 -43
  114. package/dist/esm/autocomplete-with-suggestions/style.scss +27 -27
  115. package/dist/esm/button/index.js +2 -14
  116. package/dist/esm/button/style.scss +3 -344
  117. package/dist/esm/button-card/index.js +12 -11
  118. package/dist/esm/button-card/style.scss +65 -35
  119. package/dist/esm/card/index.js +5 -6
  120. package/dist/esm/card/style.scss +47 -63
  121. package/dist/esm/category-autocomplete/index.js +68 -41
  122. package/dist/esm/category-autocomplete/style.scss +20 -24
  123. package/dist/esm/color-picker/index.js +17 -38
  124. package/dist/esm/color-picker/style.scss +20 -163
  125. package/dist/esm/consts.js +3 -2
  126. package/dist/esm/custom-select-control/index.js +2 -5
  127. package/dist/esm/custom-select-control/style.scss +14 -45
  128. package/dist/esm/date-range-picker/index.js +1 -3
  129. package/dist/esm/date-range-picker/style.scss +12 -12
  130. package/dist/esm/footer/index.js +22 -16
  131. package/dist/esm/footer/style.scss +13 -14
  132. package/dist/esm/form-token-field/index.js +4 -7
  133. package/dist/esm/form-token-field/style.scss +9 -105
  134. package/dist/esm/global-notices/index.js +3 -7
  135. package/dist/esm/grid/index.js +2 -5
  136. package/dist/esm/grid/style.scss +19 -6
  137. package/dist/esm/handoff/index.js +10 -21
  138. package/dist/esm/handoff-message/index.js +45 -0
  139. package/dist/esm/hooks/index.js +0 -2
  140. package/dist/esm/hooks/useObjectState.js +3 -8
  141. package/dist/esm/hooks/useObjectState.test.js +0 -3
  142. package/dist/esm/hooks/useOnClickOutside.js +2 -5
  143. package/dist/esm/hooks/usePrompt.js +1 -8
  144. package/dist/esm/image-upload/index.js +18 -17
  145. package/dist/esm/image-upload/style.scss +12 -17
  146. package/dist/esm/index.js +7 -8
  147. package/dist/esm/info-button/index.js +4 -6
  148. package/dist/esm/info-button/style.scss +1 -3
  149. package/dist/esm/modal/index.js +2 -8
  150. package/dist/esm/modal/style.scss +20 -132
  151. package/dist/esm/newspack-icon/index.js +6 -7
  152. package/dist/esm/newspack-icon/style.scss +17 -2
  153. package/dist/esm/newspack-logo/index.js +2 -5
  154. package/dist/esm/newspack-logo/style.scss +3 -3
  155. package/dist/esm/notice/index.js +11 -10
  156. package/dist/esm/notice/style.scss +60 -19
  157. package/dist/esm/patrons-logo/index.js +3 -5
  158. package/dist/esm/plugin-installer/index.js +37 -40
  159. package/dist/esm/plugin-installer/style.scss +5 -5
  160. package/dist/esm/plugin-settings/SettingsSection.js +71 -56
  161. package/dist/esm/plugin-settings/index.js +70 -52
  162. package/dist/esm/plugin-settings/style.scss +7 -0
  163. package/dist/esm/plugin-toggle/index.js +59 -34
  164. package/dist/esm/plugin-toggle/style.scss +2 -2
  165. package/dist/esm/popover/index.js +3 -6
  166. package/dist/esm/popover/style.scss +20 -17
  167. package/dist/esm/position-control/index.js +109 -0
  168. package/dist/esm/position-control/style.scss +66 -0
  169. package/dist/esm/progress-bar/index.js +2 -7
  170. package/dist/esm/progress-bar/index.test.js +2 -1
  171. package/dist/esm/progress-bar/style.scss +4 -4
  172. package/dist/esm/proxied-imports/router.js +1 -0
  173. package/dist/esm/radio-control/index.js +3 -6
  174. package/dist/esm/radio-control/style.scss +10 -11
  175. package/dist/esm/section-header/index.js +47 -16
  176. package/dist/esm/section-header/style.scss +22 -1
  177. package/dist/esm/select-control/ButtonGroupControl.js +12 -14
  178. package/dist/esm/select-control/GroupedSelectControl.js +38 -36
  179. package/dist/esm/select-control/index.js +7 -8
  180. package/dist/esm/select-control/style.scss +47 -88
  181. package/dist/esm/settings/MinMaxSetting.js +4 -5
  182. package/dist/esm/settings/SettingsCard.js +9 -5
  183. package/dist/esm/settings/SettingsSection.js +5 -7
  184. package/dist/esm/settings/style.scss +32 -4
  185. package/dist/esm/steps-list/index.js +43 -0
  186. package/dist/esm/steps-list/style.scss +11 -0
  187. package/dist/esm/steps-list-item/index.js +48 -0
  188. package/dist/esm/steps-list-item/style.scss +47 -0
  189. package/dist/esm/style-card/index.js +13 -13
  190. package/dist/esm/style-card/style.scss +19 -18
  191. package/dist/esm/style.scss +43 -0
  192. package/dist/esm/tabbed-navigation/index.js +30 -28
  193. package/dist/esm/tabbed-navigation/style.scss +58 -37
  194. package/dist/esm/text-control/index.js +2 -12
  195. package/dist/esm/text-control/style.scss +0 -126
  196. package/dist/esm/utils/index.js +9 -3
  197. package/dist/esm/waiting/index.js +11 -27
  198. package/dist/esm/waiting/style.scss +9 -20
  199. package/dist/esm/web-preview/index.js +21 -49
  200. package/dist/esm/web-preview/style.scss +41 -34
  201. package/dist/esm/with-wizard/index.js +53 -36
  202. package/dist/esm/with-wizard/style.scss +77 -124
  203. package/dist/esm/with-wizard-screen/index.js +26 -32
  204. package/dist/esm/with-wizard-screen/style.scss +75 -125
  205. package/dist/esm/wizard/components/WizardError.js +69 -0
  206. package/dist/esm/wizard/index.js +126 -0
  207. package/dist/esm/wizard/store/index.js +155 -0
  208. package/dist/esm/wizard/store/utils.js +17 -0
  209. package/dist/esm/wizard/style.scss +148 -0
  210. package/package.json +4 -4
  211. package/src/accordion/index.js +32 -0
  212. package/src/accordion/style.scss +27 -0
  213. package/src/action-card/index.js +70 -25
  214. package/src/action-card/style.scss +143 -41
  215. package/src/autocomplete-tokenfield/index.js +1 -1
  216. package/src/autocomplete-tokenfield/style.scss +6 -6
  217. package/src/autocomplete-with-suggestions/index.js +4 -2
  218. package/src/autocomplete-with-suggestions/style.scss +27 -27
  219. package/src/button/index.js +2 -9
  220. package/src/button/style.scss +3 -344
  221. package/src/button-card/index.js +19 -5
  222. package/src/button-card/style.scss +65 -35
  223. package/src/card/index.js +4 -0
  224. package/src/card/style.scss +47 -63
  225. package/src/category-autocomplete/index.js +53 -18
  226. package/src/category-autocomplete/style.scss +20 -24
  227. package/src/color-picker/index.js +16 -22
  228. package/src/color-picker/style.scss +20 -163
  229. package/src/consts.js +2 -1
  230. package/src/custom-select-control/style.scss +14 -45
  231. package/src/date-range-picker/style.scss +12 -12
  232. package/src/footer/index.js +20 -9
  233. package/src/footer/style.scss +13 -14
  234. package/src/form-token-field/index.js +3 -8
  235. package/src/form-token-field/style.scss +9 -105
  236. package/src/global-notices/index.js +1 -1
  237. package/src/grid/style.scss +19 -6
  238. package/src/handoff/index.js +10 -15
  239. package/src/handoff-message/index.js +39 -0
  240. package/src/hooks/useObjectState.js +2 -1
  241. package/src/image-upload/index.js +9 -3
  242. package/src/image-upload/style.scss +12 -17
  243. package/src/index.js +7 -7
  244. package/src/info-button/style.scss +1 -3
  245. package/src/modal/index.js +2 -5
  246. package/src/modal/style.scss +20 -132
  247. package/src/newspack-icon/index.js +7 -2
  248. package/src/newspack-icon/style.scss +17 -2
  249. package/src/newspack-logo/style.scss +3 -3
  250. package/src/notice/index.js +9 -1
  251. package/src/notice/style.scss +60 -19
  252. package/src/plugin-installer/index.js +17 -4
  253. package/src/plugin-installer/style.scss +5 -5
  254. package/src/plugin-settings/SettingsSection.js +59 -27
  255. package/src/plugin-settings/index.js +29 -8
  256. package/src/plugin-settings/style.scss +7 -0
  257. package/src/plugin-toggle/index.js +37 -12
  258. package/src/plugin-toggle/style.scss +2 -2
  259. package/src/popover/style.scss +20 -17
  260. package/src/position-control/index.js +122 -0
  261. package/src/position-control/style.scss +66 -0
  262. package/src/progress-bar/style.scss +4 -4
  263. package/src/radio-control/style.scss +10 -11
  264. package/src/section-header/index.js +41 -5
  265. package/src/section-header/style.scss +22 -1
  266. package/src/select-control/ButtonGroupControl.js +15 -5
  267. package/src/select-control/GroupedSelectControl.js +28 -25
  268. package/src/select-control/index.js +6 -3
  269. package/src/select-control/style.scss +47 -88
  270. package/src/settings/MinMaxSetting.js +2 -1
  271. package/src/settings/SettingsCard.js +9 -7
  272. package/src/settings/SettingsSection.js +4 -4
  273. package/src/settings/style.scss +32 -4
  274. package/src/steps-list/index.js +39 -0
  275. package/src/steps-list/style.scss +11 -0
  276. package/src/steps-list-item/index.js +40 -0
  277. package/src/steps-list-item/style.scss +47 -0
  278. package/src/style-card/index.js +16 -27
  279. package/src/style-card/style.scss +19 -18
  280. package/src/style.scss +43 -0
  281. package/src/tabbed-navigation/index.js +20 -24
  282. package/src/tabbed-navigation/style.scss +58 -37
  283. package/src/text-control/index.js +1 -2
  284. package/src/text-control/style.scss +0 -126
  285. package/src/utils/index.js +9 -0
  286. package/src/waiting/index.js +7 -18
  287. package/src/waiting/style.scss +9 -20
  288. package/src/web-preview/index.js +13 -34
  289. package/src/web-preview/style.scss +41 -34
  290. package/src/with-wizard/index.js +7 -5
  291. package/src/with-wizard/style.scss +77 -124
  292. package/src/with-wizard-screen/index.js +17 -17
  293. package/src/with-wizard-screen/style.scss +75 -125
  294. package/src/wizard/components/WizardError.js +57 -0
  295. package/src/wizard/index.js +145 -0
  296. package/src/wizard/store/index.js +132 -0
  297. package/src/wizard/store/utils.js +16 -0
  298. package/dist/cjs/wizard-pagination/index.js +0 -71
  299. package/dist/cjs/wizard-pagination/style.scss +0 -74
  300. package/dist/esm/wizard-pagination/index.js +0 -57
  301. package/dist/esm/wizard-pagination/style.scss +0 -74
  302. package/src/button-group/index.js +0 -35
  303. package/src/button-group/style.scss +0 -73
  304. package/src/checkbox-control/index.js +0 -38
  305. package/src/checkbox-control/style.scss +0 -78
  306. package/src/preview-box/index.js +0 -18
  307. package/src/preview-box/style.scss +0 -18
  308. package/src/textarea-control/index.js +0 -32
  309. package/src/textarea-control/style.scss +0 -76
  310. package/src/toggle-control/index.js +0 -38
  311. package/src/toggle-control/style.scss +0 -74
  312. package/src/toggle-group/index.js +0 -43
  313. package/src/toggle-group/style.scss +0 -28
  314. package/src/wizard-pagination/index.js +0 -59
  315. package/src/wizard-pagination/style.scss +0 -74
@@ -1,42 +1,34 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
13
-
14
10
  var _element = require("@wordpress/element");
15
-
16
11
  var _i18n = require("@wordpress/i18n");
17
-
18
12
  var _icons = require("@wordpress/icons");
19
-
20
13
  var _ = require("../");
21
-
22
14
  require("./style.scss");
23
-
24
15
  var _classnames = _interopRequireDefault(require("classnames"));
25
-
26
16
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
27
-
28
17
  /**
29
18
  * Plugin Installer
30
19
  */
31
-
32
20
  /**
33
21
  * WordPress dependencies.
34
22
  */
35
23
  const __ = _i18n.__;
24
+ /**
25
+ * Internal dependencies.
26
+ */
36
27
  const PLUGIN_STATE_NONE = 0;
37
28
  const PLUGIN_STATE_ACTIVE = 1;
38
29
  const PLUGIN_STATE_INSTALLING = 2;
39
30
  const PLUGIN_STATE_ERROR = 3;
31
+
40
32
  /**
41
33
  * External dependencies.
42
34
  */
@@ -47,7 +39,6 @@ const PLUGIN_STATE_ERROR = 3;
47
39
  class PluginInstaller extends _element.Component {
48
40
  constructor() {
49
41
  var _this;
50
-
51
42
  super(...arguments);
52
43
  _this = this;
53
44
  (0, _defineProperty2.default)(this, "componentDidMount", () => {
@@ -68,11 +59,9 @@ class PluginInstaller extends _element.Component {
68
59
  const {
69
60
  installationInitialized
70
61
  } = this.state;
71
-
72
62
  if (plugins !== prevProps.plugins) {
73
63
  this.retrievePluginInfo(plugins);
74
64
  }
75
-
76
65
  if (autoInstall && !installationInitialized) {
77
66
  this.installAllPlugins();
78
67
  }
@@ -86,8 +75,8 @@ class PluginInstaller extends _element.Component {
86
75
  if (plugins.indexOf(slug) === -1) {
87
76
  return result;
88
77
  }
89
-
90
- result[slug] = { ...response[slug],
78
+ result[slug] = {
79
+ ...response[slug],
91
80
  installationStatus: response[slug].Status === 'active' ? PLUGIN_STATE_ACTIVE : PLUGIN_STATE_NONE
92
81
  };
93
82
  return result;
@@ -117,8 +106,10 @@ class PluginInstaller extends _element.Component {
117
106
  pluginInfo
118
107
  } = this.state;
119
108
  this.props.onInstalled(slug);
120
- this.updatePluginInfo({ ...pluginInfo,
121
- [slug]: { ...response,
109
+ this.updatePluginInfo({
110
+ ...pluginInfo,
111
+ [slug]: {
112
+ ...response,
122
113
  installationStatus: PLUGIN_STATE_ACTIVE
123
114
  }
124
115
  });
@@ -130,8 +121,10 @@ class PluginInstaller extends _element.Component {
130
121
  const {
131
122
  pluginInfo
132
123
  } = this.state;
133
- this.updatePluginInfo({ ...pluginInfo,
134
- [slug]: { ...pluginInfo[slug],
124
+ this.updatePluginInfo({
125
+ ...pluginInfo,
126
+ [slug]: {
127
+ ...pluginInfo[slug],
135
128
  checked
136
129
  }
137
130
  });
@@ -141,9 +134,10 @@ class PluginInstaller extends _element.Component {
141
134
  const {
142
135
  pluginInfo
143
136
  } = _this.state;
144
-
145
- _this.updatePluginInfo({ ...pluginInfo,
146
- [slug]: { ...pluginInfo[slug],
137
+ _this.updatePluginInfo({
138
+ ...pluginInfo,
139
+ [slug]: {
140
+ ...pluginInfo[slug],
147
141
  installationStatus,
148
142
  notification
149
143
  }
@@ -172,13 +166,10 @@ class PluginInstaller extends _element.Component {
172
166
  switch (status) {
173
167
  case PLUGIN_STATE_ACTIVE:
174
168
  return 'newspack-plugin-installer__status-active';
175
-
176
169
  case PLUGIN_STATE_INSTALLING:
177
170
  return 'newspack-plugin-installer__status-installing';
178
-
179
171
  case PLUGIN_STATE_ERROR:
180
172
  return 'newspack-plugin-installer__status-error';
181
-
182
173
  default:
183
174
  return 'newspack-plugin-installer__status-none';
184
175
  }
@@ -188,7 +179,6 @@ class PluginInstaller extends _element.Component {
188
179
  installationInitialized: false
189
180
  };
190
181
  }
191
-
192
182
  /**
193
183
  * Render.
194
184
  */
@@ -201,22 +191,26 @@ class PluginInstaller extends _element.Component {
201
191
  const {
202
192
  pluginInfo
203
193
  } = this.state;
204
- const slugs = Object.keys(pluginInfo); // Store all plugin status info for installer button text value based on current status.
194
+ const {
195
+ is_atomic: isAtomic
196
+ } = window;
197
+ const slugs = Object.keys(pluginInfo);
205
198
 
199
+ // Store all plugin status info for installer button text value based on current status.
206
200
  const currentPluginStatuses = [];
207
201
  slugs.forEach(slug => {
208
202
  const plugin = pluginInfo[slug];
209
203
  currentPluginStatuses.push(plugin.Status);
210
- }); // Make sure plugin status falls in either one of these, to handle button text.
204
+ });
211
205
 
206
+ // Make sure plugin status falls in either one of these, to handle button text.
212
207
  const pluginInstalled = currentStatus => currentStatus === 'active' || currentStatus === 'inactive';
213
-
214
208
  const buttonText = currentPluginStatuses.every(pluginInstalled) ? __('Activate', 'newspack') : __('Install', 'newspack');
215
209
  const needsInstall = slugs.some(slug => {
216
210
  const plugin = pluginInfo[slug];
217
211
  return plugin.Status !== 'active' && plugin.installationStatus === PLUGIN_STATE_NONE;
218
212
  });
219
- return (0, _jsxRuntime.jsxs)("div", {
213
+ return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
220
214
  children: [(!pluginInfo || !Object.keys(pluginInfo).length) && (0, _jsxRuntime.jsxs)("div", {
221
215
  className: "newspack-plugin-installer_is-waiting",
222
216
  children: [(0, _jsxRuntime.jsx)(_.Waiting, {
@@ -227,16 +221,24 @@ class PluginInstaller extends _element.Component {
227
221
  const {
228
222
  Name,
229
223
  Description,
224
+ Download,
230
225
  Status,
231
226
  installationStatus,
232
227
  notification
233
228
  } = plugin;
234
229
  const isWaiting = installationStatus === PLUGIN_STATE_INSTALLING;
235
230
  const isButton = !isWaiting && Status !== 'active';
231
+ const installable = Download || pluginInstalled(Status);
236
232
  let actionText;
237
-
238
233
  if (installationStatus === PLUGIN_STATE_INSTALLING) {
239
- actionText = __('Installing…');
234
+ actionText = 'inactive' === Status ? __('Activating…') : __('Installing…');
235
+ } else if (!installable) {
236
+ actionText = (0, _jsxRuntime.jsxs)("span", {
237
+ className: "newspack-plugin-installer__status",
238
+ children: [isAtomic ? __('Contact Newspack support to install', 'newspack') : __('Plugin must be installed manually', 'newspack'), (0, _jsxRuntime.jsx)("span", {
239
+ className: "newspack-checkbox-icon"
240
+ })]
241
+ });
240
242
  } else if (Status === 'uninstalled') {
241
243
  actionText = (0, _jsxRuntime.jsxs)("span", {
242
244
  className: "newspack-plugin-installer__status",
@@ -262,12 +264,12 @@ class PluginInstaller extends _element.Component {
262
264
  })]
263
265
  });
264
266
  }
265
-
266
267
  const classes = (0, _classnames.default)('newspack-action-card__plugin-installer', this.classForInstallationStatus(installationStatus));
267
268
  const onClick = isButton ? () => this.installPlugin(slug) : null;
268
269
  return (0, _jsxRuntime.jsx)(_.ActionCard, {
269
270
  title: Name,
270
271
  description: Description,
272
+ disabled: !installable,
271
273
  actionText: actionText,
272
274
  isSmall: isSmall,
273
275
  isWaiting: isWaiting,
@@ -288,9 +290,7 @@ class PluginInstaller extends _element.Component {
288
290
  })]
289
291
  });
290
292
  }
291
-
292
293
  }
293
-
294
294
  PluginInstaller.defaultProps = {
295
295
  onStatus: () => {},
296
296
  onInstalled: () => {}
@@ -2,7 +2,7 @@
2
2
  * Plugin Installer
3
3
  */
4
4
 
5
- @import '~@wordpress/base-styles/colors';
5
+ @use '~@wordpress/base-styles/colors' as wp-colors;
6
6
 
7
7
  .newspack-card {
8
8
  .newspack-plugin-installer__status {
@@ -35,10 +35,10 @@
35
35
  }
36
36
 
37
37
  &.newspack-plugin-installer__status-active {
38
- box-shadow: inset 4px 0 0 $alert-green;
38
+ box-shadow: inset 4px 0 0 wp-colors.$alert-green;
39
39
 
40
40
  .newspack-plugin-installer__checkbox {
41
- background: $alert-green;
41
+ background: wp-colors.$alert-green;
42
42
  box-shadow: none;
43
43
  }
44
44
 
@@ -48,12 +48,12 @@
48
48
  }
49
49
 
50
50
  &.newspack-plugin-installer__status-error {
51
- box-shadow: inset 4px 0 0 $alert-red;
51
+ box-shadow: inset 4px 0 0 wp-colors.$alert-red;
52
52
  }
53
53
 
54
54
  &.newspack-plugin-installer__status-installing,
55
55
  &.newspack-plugin-installer__status-none {
56
- box-shadow: inset 4px 0 0 $gray-100;
56
+ box-shadow: inset 4px 0 0 wp-colors.$gray-100;
57
57
  }
58
58
 
59
59
  // Is Small
@@ -4,39 +4,38 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _element = require("@wordpress/element");
9
-
8
+ var _hooks = require("@wordpress/hooks");
10
9
  var _i18n = require("@wordpress/i18n");
11
-
10
+ var _components = require("@wordpress/components");
12
11
  var _ = require("../");
13
-
12
+ require("./style.scss");
14
13
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
15
-
16
14
  /**
17
15
  * Ads Settings Section.
18
16
  */
19
-
20
17
  /**
21
18
  * WordPress dependencies
22
19
  */
23
20
  const __ = _i18n.__;
24
-
21
+ /**
22
+ * Internal dependencies
23
+ */
24
+ const isSelectControl = setting => {
25
+ return Array.isArray(setting.options) && setting.options.length;
26
+ };
25
27
  const getControlComponent = setting => {
26
- if (Array.isArray(setting.options) && setting.options.length) {
28
+ if (isSelectControl(setting)) {
27
29
  return _.SelectControl;
28
30
  }
29
-
30
31
  switch (setting.type) {
31
32
  case 'checkbox':
32
33
  case 'boolean':
33
- return _.CheckboxControl;
34
-
34
+ return _components.CheckboxControl;
35
35
  default:
36
36
  return _.TextControl;
37
37
  }
38
38
  };
39
-
40
39
  const getControlType = setting => {
41
40
  switch (setting.type) {
42
41
  case 'int':
@@ -44,18 +43,23 @@ const getControlType = setting => {
44
43
  case 'float':
45
44
  case 'number':
46
45
  return 'number';
47
-
48
46
  case 'string':
49
47
  case 'text':
50
48
  return 'text';
51
-
49
+ case 'password':
50
+ return 'password';
51
+ case 'boolean':
52
+ case 'checkbox':
53
+ return 'checkbox';
52
54
  default:
53
55
  return null;
54
56
  }
55
57
  };
56
-
57
- const SettingsSection = _ref => {
58
- let {
58
+ const SettingsSection = props => {
59
+ const [saveDisabled, setSaveDisabled] = (0, _element.useState)(true);
60
+ const {
61
+ error,
62
+ sectionKey,
59
63
  active,
60
64
  title,
61
65
  description,
@@ -63,66 +67,74 @@ const SettingsSection = _ref => {
63
67
  disabled,
64
68
  onChange,
65
69
  onUpdate
66
- } = _ref;
67
-
68
- const getControlProps = setting => {
69
- var _setting$options;
70
-
71
- return {
72
- disabled,
73
- name: `${setting.section}_${setting.key}`,
74
- type: getControlType(setting),
75
- label: setting.description,
76
- help: setting.help || null,
77
- options: ((_setting$options = setting.options) === null || _setting$options === void 0 ? void 0 : _setting$options.map(option => ({
78
- value: option.value,
79
- label: option.name
80
- }))) || null,
81
- value: setting.value,
82
- checked: setting.type === 'boolean' ? !!setting.value : null,
83
- onChange: value => {
84
- onChange(setting.key, value);
85
- }
86
- };
70
+ } = props;
71
+ const getControlProps = setting => ({
72
+ disabled,
73
+ name: `${setting.section}_${setting.key}`,
74
+ type: getControlType(setting),
75
+ label: setting.description,
76
+ help: setting.help || null,
77
+ options: setting.options?.map(option => ({
78
+ value: option.value,
79
+ label: option.name || option.label
80
+ })) || null,
81
+ value: setting.value,
82
+ multiple: isSelectControl(setting) && setting.multiple ? true : null,
83
+ checked: setting.type === 'boolean' ? !!setting.value : null,
84
+ onChange: value => {
85
+ onChange(setting.key, value);
86
+ setSaveDisabled(false);
87
+ }
88
+ });
89
+ const createFilter = function (name) {
90
+ let defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
91
+ return (0, _hooks.applyFilters)(`newspack.settingSection.${sectionKey}.${name}`, defaultComponent, props);
87
92
  };
88
-
93
+ let columns = 2;
94
+ if (fields.length % 3 === 0) {
95
+ columns = 3;
96
+ } else if (fields.length === 1) {
97
+ columns = 1;
98
+ }
89
99
  return (0, _jsxRuntime.jsx)(_.ActionCard, {
90
100
  isMedium: true,
91
101
  disabled: disabled,
92
102
  title: title,
93
103
  description: description,
94
104
  toggleChecked: active,
95
- hasGreyHeader: true,
105
+ hasGreyHeader: active || null === active,
96
106
  toggleOnChange: active !== null ? value => onUpdate({
97
107
  active: value
98
108
  }) : null,
109
+ actionContent: (active || null === active) && createFilter('buttons', (0, _jsxRuntime.jsx)(_.Button, {
110
+ variant: "primary",
111
+ disabled: disabled || saveDisabled,
112
+ onClick: () => {
113
+ onUpdate();
114
+ setSaveDisabled(true);
115
+ },
116
+ children: __('Save Settings', 'newspack')
117
+ })),
99
118
  children: (active || active === null) && (0, _jsxRuntime.jsxs)(_element.Fragment, {
100
- children: [(0, _jsxRuntime.jsx)(_.Grid, {
101
- columns: fields.length % 3 === 0 ? 3 : 2,
119
+ children: [error?.message && (0, _jsxRuntime.jsx)(_.Notice, {
120
+ noticeText: error.message,
121
+ isError: true
122
+ }), createFilter('beforeControls'), (0, _jsxRuntime.jsx)(_.Grid, {
123
+ columns: columns,
102
124
  gutter: 32,
103
125
  children: fields.map(setting => {
104
126
  const Control = getControlComponent(setting); // eslint-disable-line @wordpress/no-unused-vars-before-return, no-unused-vars
105
-
106
- return (0, _jsxRuntime.jsx)(Control, { ...getControlProps(setting)
107
- }, setting.key);
108
- })
109
- }), (0, _jsxRuntime.jsx)("div", {
110
- className: "newspack-buttons-card",
111
- style: {
112
- margin: '32px 0 0'
113
- },
114
- children: (0, _jsxRuntime.jsx)(_.Button, {
115
- isPrimary: true,
116
- disabled: disabled,
117
- onClick: () => {
118
- onUpdate();
119
- },
120
- children: __('Save settings', 'newspack')
127
+ return (0, _hooks.applyFilters)(`newspack.settingsSection.${sectionKey}.control`, (0, _jsxRuntime.jsx)(Control, {
128
+ ...getControlProps(setting)
129
+ }, setting.key), {
130
+ sectionKey,
131
+ setting,
132
+ onChange
133
+ });
121
134
  })
122
135
  })]
123
136
  })
124
137
  });
125
138
  };
126
-
127
139
  var _default = SettingsSection;
128
140
  exports.default = _default;