newspack-components 2.1.0 → 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 (293) hide show
  1. package/dist/cjs/accordion/index.js +46 -0
  2. package/dist/cjs/accordion/style.scss +27 -0
  3. package/dist/cjs/action-card/index.js +48 -25
  4. package/dist/cjs/action-card/style.scss +100 -23
  5. package/dist/cjs/autocomplete-tokenfield/index.js +13 -41
  6. package/dist/cjs/autocomplete-tokenfield/style.scss +2 -2
  7. package/dist/cjs/autocomplete-with-suggestions/index.js +30 -51
  8. package/dist/cjs/autocomplete-with-suggestions/style.scss +16 -15
  9. package/dist/cjs/button/index.js +5 -13
  10. package/dist/cjs/button-card/index.js +1 -10
  11. package/dist/cjs/button-card/style.scss +13 -13
  12. package/dist/cjs/button-group/index.js +57 -0
  13. package/dist/cjs/button-group/style.scss +73 -0
  14. package/dist/cjs/card/index.js +1 -8
  15. package/dist/cjs/card/style.scss +25 -8
  16. package/dist/cjs/category-autocomplete/index.js +18 -38
  17. package/dist/cjs/category-autocomplete/style.scss +0 -2
  18. package/dist/cjs/checkbox-control/index.js +63 -0
  19. package/dist/cjs/checkbox-control/style.scss +78 -0
  20. package/dist/cjs/color-picker/index.js +1 -15
  21. package/dist/cjs/color-picker/style.scss +0 -3
  22. package/dist/cjs/consts.js +5 -3
  23. package/dist/cjs/custom-select-control/index.js +1 -9
  24. package/dist/cjs/custom-select-control/style.scss +6 -7
  25. package/dist/cjs/date-range-picker/index.js +1 -10
  26. package/dist/cjs/date-range-picker/style.scss +12 -12
  27. package/dist/cjs/footer/index.js +5 -17
  28. package/dist/cjs/footer/style.scss +5 -5
  29. package/dist/cjs/form-token-field/index.js +1 -9
  30. package/dist/cjs/form-token-field/style.scss +2 -3
  31. package/dist/cjs/global-notices/index.js +1 -8
  32. package/dist/cjs/grid/index.js +1 -8
  33. package/dist/cjs/grid/style.scss +5 -5
  34. package/dist/cjs/handoff/index.js +8 -17
  35. package/dist/cjs/handoff-message/index.js +50 -0
  36. package/dist/cjs/hooks/index.js +1 -7
  37. package/dist/cjs/hooks/useObjectState.js +7 -13
  38. package/dist/cjs/hooks/useObjectState.test.js +0 -14
  39. package/dist/cjs/hooks/useOnClickOutside.js +3 -6
  40. package/dist/cjs/hooks/usePrompt.js +1 -13
  41. package/dist/cjs/image-upload/index.js +21 -19
  42. package/dist/cjs/image-upload/index.test.js +0 -5
  43. package/dist/cjs/image-upload/style.scss +5 -9
  44. package/dist/cjs/index.js +28 -44
  45. package/dist/cjs/info-button/index.js +3 -11
  46. package/dist/cjs/info-button/style.scss +1 -3
  47. package/dist/cjs/modal/index.js +1 -9
  48. package/dist/cjs/modal/style.scss +8 -8
  49. package/dist/cjs/newspack-icon/index.js +1 -9
  50. package/dist/cjs/newspack-icon/style.scss +4 -4
  51. package/dist/cjs/newspack-logo/index.js +1 -9
  52. package/dist/cjs/newspack-logo/style.scss +3 -3
  53. package/dist/cjs/notice/index.js +8 -15
  54. package/dist/cjs/notice/style.scss +28 -15
  55. package/dist/cjs/patrons-logo/index.js +3 -11
  56. package/dist/cjs/plugin-installer/index.js +36 -36
  57. package/dist/cjs/plugin-installer/style.scss +5 -5
  58. package/dist/cjs/plugin-settings/SettingsSection.js +9 -28
  59. package/dist/cjs/plugin-settings/index.js +39 -22
  60. package/dist/cjs/plugin-toggle/index.js +40 -33
  61. package/dist/cjs/plugin-toggle/style.scss +2 -2
  62. package/dist/cjs/popover/index.js +1 -11
  63. package/dist/cjs/popover/style.scss +19 -16
  64. package/dist/cjs/position-control/index.js +113 -0
  65. package/dist/cjs/position-control/style.scss +66 -0
  66. package/dist/cjs/preview-box/index.js +36 -0
  67. package/dist/cjs/preview-box/style.scss +18 -0
  68. package/dist/cjs/progress-bar/index.js +2 -9
  69. package/dist/cjs/progress-bar/index.test.js +2 -7
  70. package/dist/cjs/progress-bar/style.scss +4 -4
  71. package/dist/cjs/proxied-imports/router.js +0 -3
  72. package/dist/cjs/radio-control/index.js +1 -11
  73. package/dist/cjs/radio-control/style.scss +9 -9
  74. package/dist/cjs/section-header/index.js +44 -29
  75. package/dist/cjs/section-header/style.scss +2 -2
  76. package/dist/cjs/select-control/ButtonGroupControl.js +4 -13
  77. package/dist/cjs/select-control/GroupedSelectControl.js +9 -15
  78. package/dist/cjs/select-control/index.js +5 -12
  79. package/dist/cjs/select-control/style.scss +2 -2
  80. package/dist/cjs/settings/MinMaxSetting.js +3 -7
  81. package/dist/cjs/settings/SettingsCard.js +3 -7
  82. package/dist/cjs/settings/SettingsSection.js +1 -4
  83. package/dist/cjs/settings/index.js +0 -6
  84. package/dist/cjs/settings/style.scss +1 -1
  85. package/dist/cjs/steps-list/index.js +52 -0
  86. package/dist/cjs/steps-list/style.scss +11 -0
  87. package/dist/cjs/steps-list-item/index.js +56 -0
  88. package/dist/cjs/steps-list-item/style.scss +47 -0
  89. package/dist/cjs/style-card/index.js +6 -13
  90. package/dist/cjs/style-card/style.scss +9 -12
  91. package/dist/cjs/style.scss +5 -6
  92. package/dist/cjs/tabbed-navigation/index.js +19 -16
  93. package/dist/cjs/tabbed-navigation/style.scss +3 -4
  94. package/dist/cjs/text-control/index.js +6 -16
  95. package/dist/cjs/textarea-control/index.js +54 -0
  96. package/dist/cjs/textarea-control/style.scss +76 -0
  97. package/dist/cjs/toggle-control/index.js +58 -0
  98. package/dist/cjs/toggle-control/style.scss +74 -0
  99. package/dist/cjs/toggle-group/index.js +71 -0
  100. package/dist/cjs/toggle-group/style.scss +28 -0
  101. package/dist/cjs/utils/index.js +10 -5
  102. package/dist/cjs/waiting/index.js +1 -9
  103. package/dist/cjs/web-preview/index.js +13 -28
  104. package/dist/cjs/web-preview/style.scss +14 -14
  105. package/dist/cjs/with-wizard/index.js +51 -31
  106. package/dist/cjs/with-wizard/style.scss +35 -37
  107. package/dist/cjs/with-wizard-screen/index.js +11 -17
  108. package/dist/cjs/with-wizard-screen/style.scss +14 -17
  109. package/dist/cjs/wizard/components/WizardError.js +3 -15
  110. package/dist/cjs/wizard/index.js +10 -24
  111. package/dist/cjs/wizard/store/index.js +42 -55
  112. package/dist/cjs/wizard/store/utils.js +1 -6
  113. package/dist/cjs/wizard/style.scss +148 -0
  114. package/dist/esm/accordion/index.js +38 -0
  115. package/dist/esm/accordion/style.scss +27 -0
  116. package/dist/esm/action-card/index.js +50 -21
  117. package/dist/esm/action-card/style.scss +100 -23
  118. package/dist/esm/autocomplete-tokenfield/index.js +14 -37
  119. package/dist/esm/autocomplete-tokenfield/style.scss +2 -2
  120. package/dist/esm/autocomplete-with-suggestions/index.js +28 -41
  121. package/dist/esm/autocomplete-with-suggestions/style.scss +16 -15
  122. package/dist/esm/button/index.js +5 -7
  123. package/dist/esm/button-card/index.js +2 -5
  124. package/dist/esm/button-card/style.scss +13 -13
  125. package/dist/esm/button-group/index.js +43 -0
  126. package/dist/esm/button-group/style.scss +73 -0
  127. package/dist/esm/card/index.js +2 -5
  128. package/dist/esm/card/style.scss +25 -8
  129. package/dist/esm/category-autocomplete/index.js +17 -30
  130. package/dist/esm/category-autocomplete/style.scss +0 -2
  131. package/dist/esm/checkbox-control/index.js +49 -0
  132. package/dist/esm/checkbox-control/style.scss +78 -0
  133. package/dist/esm/color-picker/index.js +2 -4
  134. package/dist/esm/color-picker/style.scss +0 -3
  135. package/dist/esm/consts.js +3 -2
  136. package/dist/esm/custom-select-control/index.js +2 -5
  137. package/dist/esm/custom-select-control/style.scss +6 -7
  138. package/dist/esm/date-range-picker/index.js +1 -3
  139. package/dist/esm/date-range-picker/style.scss +12 -12
  140. package/dist/esm/footer/index.js +3 -11
  141. package/dist/esm/footer/style.scss +5 -5
  142. package/dist/esm/form-token-field/index.js +2 -5
  143. package/dist/esm/form-token-field/style.scss +2 -3
  144. package/dist/esm/global-notices/index.js +1 -6
  145. package/dist/esm/grid/index.js +2 -5
  146. package/dist/esm/grid/style.scss +5 -5
  147. package/dist/esm/handoff/index.js +3 -14
  148. package/dist/esm/handoff-message/index.js +45 -0
  149. package/dist/esm/hooks/index.js +0 -2
  150. package/dist/esm/hooks/useObjectState.js +3 -8
  151. package/dist/esm/hooks/useObjectState.test.js +0 -3
  152. package/dist/esm/hooks/useOnClickOutside.js +2 -5
  153. package/dist/esm/hooks/usePrompt.js +1 -8
  154. package/dist/esm/image-upload/index.js +17 -16
  155. package/dist/esm/image-upload/style.scss +5 -9
  156. package/dist/esm/index.js +4 -0
  157. package/dist/esm/info-button/index.js +4 -6
  158. package/dist/esm/info-button/style.scss +1 -3
  159. package/dist/esm/modal/index.js +2 -5
  160. package/dist/esm/modal/style.scss +8 -8
  161. package/dist/esm/newspack-icon/index.js +2 -5
  162. package/dist/esm/newspack-icon/style.scss +4 -4
  163. package/dist/esm/newspack-logo/index.js +2 -5
  164. package/dist/esm/newspack-logo/style.scss +3 -3
  165. package/dist/esm/notice/index.js +4 -8
  166. package/dist/esm/notice/style.scss +28 -15
  167. package/dist/esm/patrons-logo/index.js +3 -5
  168. package/dist/esm/plugin-installer/index.js +35 -39
  169. package/dist/esm/plugin-installer/style.scss +5 -5
  170. package/dist/esm/plugin-settings/SettingsSection.js +8 -21
  171. package/dist/esm/plugin-settings/index.js +38 -24
  172. package/dist/esm/plugin-toggle/index.js +39 -36
  173. package/dist/esm/plugin-toggle/style.scss +2 -2
  174. package/dist/esm/popover/index.js +3 -6
  175. package/dist/esm/popover/style.scss +19 -16
  176. package/dist/esm/position-control/index.js +109 -0
  177. package/dist/esm/position-control/style.scss +66 -0
  178. package/dist/esm/preview-box/index.js +30 -0
  179. package/dist/esm/preview-box/style.scss +18 -0
  180. package/dist/esm/progress-bar/index.js +2 -7
  181. package/dist/esm/progress-bar/index.test.js +2 -1
  182. package/dist/esm/progress-bar/style.scss +4 -4
  183. package/dist/esm/proxied-imports/router.js +1 -0
  184. package/dist/esm/radio-control/index.js +3 -6
  185. package/dist/esm/radio-control/style.scss +9 -9
  186. package/dist/esm/section-header/index.js +44 -25
  187. package/dist/esm/section-header/style.scss +2 -2
  188. package/dist/esm/select-control/ButtonGroupControl.js +5 -7
  189. package/dist/esm/select-control/GroupedSelectControl.js +5 -6
  190. package/dist/esm/select-control/index.js +6 -6
  191. package/dist/esm/select-control/style.scss +2 -2
  192. package/dist/esm/settings/MinMaxSetting.js +1 -3
  193. package/dist/esm/settings/SettingsCard.js +3 -4
  194. package/dist/esm/settings/SettingsSection.js +0 -2
  195. package/dist/esm/settings/style.scss +1 -1
  196. package/dist/esm/steps-list/index.js +43 -0
  197. package/dist/esm/steps-list/style.scss +11 -0
  198. package/dist/esm/steps-list-item/index.js +48 -0
  199. package/dist/esm/steps-list-item/style.scss +47 -0
  200. package/dist/esm/style-card/index.js +2 -5
  201. package/dist/esm/style-card/style.scss +9 -12
  202. package/dist/esm/style.scss +5 -6
  203. package/dist/esm/tabbed-navigation/index.js +20 -10
  204. package/dist/esm/tabbed-navigation/style.scss +3 -4
  205. package/dist/esm/text-control/index.js +2 -9
  206. package/dist/esm/textarea-control/index.js +40 -0
  207. package/dist/esm/textarea-control/style.scss +76 -0
  208. package/dist/esm/toggle-control/index.js +44 -0
  209. package/dist/esm/toggle-control/style.scss +74 -0
  210. package/dist/esm/toggle-group/index.js +58 -0
  211. package/dist/esm/toggle-group/style.scss +28 -0
  212. package/dist/esm/utils/index.js +9 -3
  213. package/dist/esm/waiting/index.js +2 -5
  214. package/dist/esm/web-preview/index.js +9 -24
  215. package/dist/esm/web-preview/style.scss +14 -14
  216. package/dist/esm/with-wizard/index.js +49 -34
  217. package/dist/esm/with-wizard/style.scss +35 -37
  218. package/dist/esm/with-wizard-screen/index.js +9 -11
  219. package/dist/esm/with-wizard-screen/style.scss +14 -17
  220. package/dist/esm/wizard/components/WizardError.js +1 -10
  221. package/dist/esm/wizard/index.js +10 -12
  222. package/dist/esm/wizard/store/index.js +40 -46
  223. package/dist/esm/wizard/store/utils.js +1 -1
  224. package/dist/esm/wizard/style.scss +148 -0
  225. package/package.json +4 -4
  226. package/shared/scss/_colors.scss +0 -15
  227. package/src/accordion/index.js +32 -0
  228. package/src/accordion/style.scss +27 -0
  229. package/src/action-card/index.js +43 -8
  230. package/src/action-card/style.scss +100 -23
  231. package/src/autocomplete-tokenfield/index.js +1 -1
  232. package/src/autocomplete-tokenfield/style.scss +2 -2
  233. package/src/autocomplete-with-suggestions/style.scss +16 -15
  234. package/src/button-card/style.scss +13 -13
  235. package/src/card/style.scss +25 -8
  236. package/src/category-autocomplete/index.js +3 -1
  237. package/src/category-autocomplete/style.scss +0 -2
  238. package/src/color-picker/style.scss +0 -3
  239. package/src/consts.js +2 -1
  240. package/src/custom-select-control/style.scss +6 -7
  241. package/src/date-range-picker/style.scss +12 -12
  242. package/src/footer/index.js +2 -2
  243. package/src/footer/style.scss +5 -5
  244. package/src/form-token-field/index.js +2 -7
  245. package/src/form-token-field/style.scss +2 -3
  246. package/src/grid/style.scss +5 -5
  247. package/src/handoff/index.js +3 -8
  248. package/src/handoff-message/index.js +39 -0
  249. package/src/hooks/useObjectState.js +2 -1
  250. package/src/image-upload/index.js +9 -3
  251. package/src/image-upload/style.scss +5 -9
  252. package/src/index.js +4 -0
  253. package/src/info-button/style.scss +1 -3
  254. package/src/modal/style.scss +8 -8
  255. package/src/newspack-icon/style.scss +4 -4
  256. package/src/newspack-logo/style.scss +3 -3
  257. package/src/notice/index.js +2 -0
  258. package/src/notice/style.scss +28 -15
  259. package/src/plugin-installer/index.js +15 -2
  260. package/src/plugin-installer/style.scss +5 -5
  261. package/src/plugin-settings/SettingsSection.js +7 -13
  262. package/src/plugin-settings/index.js +7 -2
  263. package/src/plugin-toggle/index.js +2 -3
  264. package/src/plugin-toggle/style.scss +2 -2
  265. package/src/popover/style.scss +19 -16
  266. package/src/position-control/index.js +122 -0
  267. package/src/position-control/style.scss +66 -0
  268. package/src/progress-bar/style.scss +4 -4
  269. package/src/radio-control/style.scss +9 -9
  270. package/src/section-header/index.js +32 -15
  271. package/src/section-header/style.scss +2 -2
  272. package/src/select-control/ButtonGroupControl.js +3 -0
  273. package/src/select-control/GroupedSelectControl.js +2 -1
  274. package/src/select-control/index.js +6 -2
  275. package/src/select-control/style.scss +2 -2
  276. package/src/settings/style.scss +1 -1
  277. package/src/steps-list/index.js +39 -0
  278. package/src/steps-list/style.scss +11 -0
  279. package/src/steps-list-item/index.js +40 -0
  280. package/src/steps-list-item/style.scss +47 -0
  281. package/src/style-card/index.js +2 -11
  282. package/src/style-card/style.scss +9 -12
  283. package/src/style.scss +5 -6
  284. package/src/tabbed-navigation/index.js +12 -4
  285. package/src/tabbed-navigation/style.scss +3 -4
  286. package/src/utils/index.js +9 -0
  287. package/src/web-preview/index.js +1 -1
  288. package/src/web-preview/style.scss +14 -14
  289. package/src/with-wizard/style.scss +35 -37
  290. package/src/with-wizard-screen/index.js +4 -1
  291. package/src/with-wizard-screen/style.scss +14 -17
  292. package/src/wizard/index.js +15 -3
  293. package/src/wizard/store/index.js +8 -2
@@ -1,33 +1,29 @@
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 _element = require("@wordpress/element");
11
-
12
9
  var _icons = require("@wordpress/icons");
13
-
14
10
  var _i18n = require("@wordpress/i18n");
15
-
16
11
  require("./style.scss");
17
-
18
12
  var _classnames = _interopRequireDefault(require("classnames"));
19
-
20
13
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
21
-
22
14
  /**
23
15
  * Notice
24
16
  */
25
-
26
17
  /**
27
18
  * WordPress dependencies.
28
19
  */
20
+ /**
21
+ * Internal dependencies.
22
+ */
29
23
  const __ = _i18n.__;
30
-
24
+ /**
25
+ * External dependencies.
26
+ */
31
27
  class Notice extends _element.Component {
32
28
  /**
33
29
  * Render
@@ -37,6 +33,7 @@ class Notice extends _element.Component {
37
33
  className,
38
34
  debugMode,
39
35
  isError,
36
+ isHandoff,
40
37
  isHelp,
41
38
  isSuccess,
42
39
  isWarning,
@@ -45,9 +42,8 @@ class Notice extends _element.Component {
45
42
  style = {},
46
43
  children = null
47
44
  } = this.props;
48
- const classes = (0, _classnames.default)('newspack-notice', className, debugMode && 'newspack-notice__is-debug', isError && 'newspack-notice__is-error', isHelp && 'newspack-notice__is-help', isSuccess && 'newspack-notice__is-success', isWarning && 'newspack-notice__is-warning');
45
+ const classes = (0, _classnames.default)('newspack-notice', className, debugMode && 'newspack-notice__is-debug', isError && 'newspack-notice__is-error', isHandoff && 'newspack-notice__is-handoff', isHelp && 'newspack-notice__is-help', isSuccess && 'newspack-notice__is-success', isWarning && 'newspack-notice__is-warning');
49
46
  let noticeIcon;
50
-
51
47
  if (isHelp) {
52
48
  noticeIcon = _icons.help;
53
49
  } else if (isSuccess) {
@@ -57,7 +53,6 @@ class Notice extends _element.Component {
57
53
  } else {
58
54
  noticeIcon = _icons.info;
59
55
  }
60
-
61
56
  return (0, _jsxRuntime.jsxs)("div", {
62
57
  className: classes,
63
58
  style: style,
@@ -71,8 +66,6 @@ class Notice extends _element.Component {
71
66
  })]
72
67
  });
73
68
  }
74
-
75
69
  }
76
-
77
70
  var _default = Notice;
78
71
  exports.default = _default;
@@ -2,13 +2,14 @@
2
2
  * Notice
3
3
  */
4
4
 
5
- @import '~@wordpress/base-styles/colors';
6
- @import '../../../shared/scss/colors';
5
+ @use 'sass:color';
6
+ @use '~@wordpress/base-styles/colors' as wp-colors;
7
+ @use '../../../shared/scss/colors';
7
8
 
8
9
  .newspack-notice {
9
10
  align-items: center;
10
- background: $gray-100;
11
- color: $gray-900;
11
+ background: wp-colors.$gray-100;
12
+ color: wp-colors.$gray-900;
12
13
  display: flex;
13
14
  justify-content: flex-start;
14
15
  margin: 32px 0;
@@ -16,13 +17,13 @@
16
17
 
17
18
  > svg {
18
19
  display: block;
19
- fill: $gray-900;
20
+ fill: wp-colors.$gray-900;
20
21
  flex: 0 0 24px;
21
22
  margin-right: 4px;
22
23
  }
23
24
 
24
25
  &__is-debug {
25
- background: $primary-700;
26
+ background: colors.$primary-700;
26
27
  border-radius: 2px;
27
28
  bottom: 16px;
28
29
  box-shadow: 0 0 8px 4px rgba( black, 0.08 );
@@ -39,35 +40,47 @@
39
40
  }
40
41
 
41
42
  &__is-error {
42
- background: lighten( $alert-red, 51% );
43
+ background: color.adjust( wp-colors.$alert-red, $lightness: 51% );
43
44
 
44
45
  > svg {
45
- fill: $alert-red;
46
+ fill: wp-colors.$alert-red;
46
47
  transform: rotate( 180deg );
47
48
  }
48
49
  }
49
50
 
51
+ &__is-handoff {
52
+ background: color.adjust( wp-colors.$alert-yellow, $lightness: 30% );
53
+ margin-top: 0;
54
+ position: sticky;
55
+ top: 46px;
56
+ z-index: 100;
57
+
58
+ @media ( min-width: 782px ) {
59
+ top: 32px;
60
+ }
61
+ }
62
+
50
63
  &__is-help {
51
- background: $primary-050;
64
+ background: colors.$primary-050;
52
65
 
53
66
  > svg {
54
- fill: $primary-500;
67
+ fill: colors.$primary-500;
55
68
  }
56
69
  }
57
70
 
58
71
  &__is-success {
59
- background: lighten( $alert-green, 42% );
72
+ background: color.adjust( wp-colors.$alert-green, $lightness: 42% );
60
73
 
61
74
  > svg {
62
- fill: $alert-green;
75
+ fill: wp-colors.$alert-green;
63
76
  }
64
77
  }
65
78
 
66
79
  &__is-warning {
67
- background: lighten( $alert-yellow, 30% );
80
+ background: color.adjust( wp-colors.$alert-yellow, $lightness: 30% );
68
81
 
69
82
  > svg {
70
- fill: $alert-yellow;
83
+ fill: wp-colors.$alert-yellow;
71
84
  transform: rotate( 180deg );
72
85
  }
73
86
  }
@@ -87,7 +100,7 @@
87
100
  }
88
101
 
89
102
  &:focus {
90
- box-shadow: 0 0 0 var( --wp-admin-border-width-focus ) currentColor;
103
+ box-shadow: 0 0 0 var( --wp-admin-border-width-focus ) currentcolor;
91
104
  }
92
105
  }
93
106
  }
@@ -1,34 +1,28 @@
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 _element = require("@wordpress/element");
13
-
14
10
  var _components = require("@wordpress/components");
15
-
16
11
  var _i18n = require("@wordpress/i18n");
17
-
18
12
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
19
-
20
13
  /**
21
14
  * WordPress.com and Google News Initiative Logos.
22
15
  */
23
-
24
16
  /**
25
17
  * WordPress dependencies
26
18
  */
27
19
  const __ = _i18n.__;
28
-
29
20
  class PatronsLogo extends _element.Component {
30
21
  constructor() {
31
22
  super(...arguments);
23
+ /**
24
+ * Render.
25
+ */
32
26
  (0, _defineProperty2.default)(this, "render", () => {
33
27
  return (0, _jsxRuntime.jsxs)(_components.SVG, {
34
28
  xmlns: "http://www.w3.org/2000/svg",
@@ -83,8 +77,6 @@ class PatronsLogo extends _element.Component {
83
77
  });
84
78
  });
85
79
  }
86
-
87
80
  }
88
-
89
81
  var _default = PatronsLogo;
90
82
  exports.default = _default;
@@ -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,16 +191,20 @@ 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];
@@ -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,49 +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
-
10
8
  var _hooks = require("@wordpress/hooks");
11
-
12
9
  var _i18n = require("@wordpress/i18n");
13
-
14
10
  var _components = require("@wordpress/components");
15
-
16
11
  var _ = require("../");
17
-
18
12
  require("./style.scss");
19
-
20
13
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
21
-
22
14
  /**
23
15
  * Ads Settings Section.
24
16
  */
25
-
26
17
  /**
27
18
  * WordPress dependencies
28
19
  */
29
20
  const __ = _i18n.__;
30
-
21
+ /**
22
+ * Internal dependencies
23
+ */
31
24
  const isSelectControl = setting => {
32
25
  return Array.isArray(setting.options) && setting.options.length;
33
26
  };
34
-
35
27
  const getControlComponent = setting => {
36
28
  if (isSelectControl(setting)) {
37
29
  return _.SelectControl;
38
30
  }
39
-
40
31
  switch (setting.type) {
41
32
  case 'checkbox':
42
33
  case 'boolean':
43
34
  return _components.CheckboxControl;
44
-
45
35
  default:
46
36
  return _.TextControl;
47
37
  }
48
38
  };
49
-
50
39
  const getControlType = setting => {
51
40
  switch (setting.type) {
52
41
  case 'int':
@@ -54,24 +43,20 @@ const getControlType = setting => {
54
43
  case 'float':
55
44
  case 'number':
56
45
  return 'number';
57
-
58
46
  case 'string':
59
47
  case 'text':
60
48
  return 'text';
61
-
62
49
  case 'password':
63
50
  return 'password';
64
-
65
51
  case 'boolean':
66
52
  case 'checkbox':
67
53
  return 'checkbox';
68
-
69
54
  default:
70
55
  return null;
71
56
  }
72
57
  };
73
-
74
58
  const SettingsSection = props => {
59
+ const [saveDisabled, setSaveDisabled] = (0, _element.useState)(true);
75
60
  const {
76
61
  error,
77
62
  sectionKey,
@@ -83,7 +68,6 @@ const SettingsSection = props => {
83
68
  onChange,
84
69
  onUpdate
85
70
  } = props;
86
-
87
71
  const getControlProps = setting => ({
88
72
  disabled,
89
73
  name: `${setting.section}_${setting.key}`,
@@ -99,22 +83,19 @@ const SettingsSection = props => {
99
83
  checked: setting.type === 'boolean' ? !!setting.value : null,
100
84
  onChange: value => {
101
85
  onChange(setting.key, value);
86
+ setSaveDisabled(false);
102
87
  }
103
88
  });
104
-
105
89
  const createFilter = function (name) {
106
90
  let defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
107
91
  return (0, _hooks.applyFilters)(`newspack.settingSection.${sectionKey}.${name}`, defaultComponent, props);
108
92
  };
109
-
110
93
  let columns = 2;
111
-
112
94
  if (fields.length % 3 === 0) {
113
95
  columns = 3;
114
96
  } else if (fields.length === 1) {
115
97
  columns = 1;
116
98
  }
117
-
118
99
  return (0, _jsxRuntime.jsx)(_.ActionCard, {
119
100
  isMedium: true,
120
101
  disabled: disabled,
@@ -127,9 +108,10 @@ const SettingsSection = props => {
127
108
  }) : null,
128
109
  actionContent: (active || null === active) && createFilter('buttons', (0, _jsxRuntime.jsx)(_.Button, {
129
110
  variant: "primary",
130
- disabled: disabled,
111
+ disabled: disabled || saveDisabled,
131
112
  onClick: () => {
132
113
  onUpdate();
114
+ setSaveDisabled(true);
133
115
  },
134
116
  children: __('Save Settings', 'newspack')
135
117
  })),
@@ -142,8 +124,8 @@ const SettingsSection = props => {
142
124
  gutter: 32,
143
125
  children: fields.map(setting => {
144
126
  const Control = getControlComponent(setting); // eslint-disable-line @wordpress/no-unused-vars-before-return, no-unused-vars
145
-
146
- return (0, _hooks.applyFilters)(`newspack.settingsSection.${sectionKey}.control`, (0, _jsxRuntime.jsx)(Control, { ...getControlProps(setting)
127
+ return (0, _hooks.applyFilters)(`newspack.settingsSection.${sectionKey}.control`, (0, _jsxRuntime.jsx)(Control, {
128
+ ...getControlProps(setting)
147
129
  }, setting.key), {
148
130
  sectionKey,
149
131
  setting,
@@ -154,6 +136,5 @@ const SettingsSection = props => {
154
136
  })
155
137
  });
156
138
  };
157
-
158
139
  var _default = SettingsSection;
159
140
  exports.default = _default;