newspack-components 2.1.0 → 2.2.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 (268) 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/card/index.js +1 -8
  13. package/dist/cjs/card/style.scss +25 -8
  14. package/dist/cjs/category-autocomplete/index.js +18 -38
  15. package/dist/cjs/category-autocomplete/style.scss +0 -2
  16. package/dist/cjs/color-picker/index.js +1 -15
  17. package/dist/cjs/color-picker/style.scss +0 -3
  18. package/dist/cjs/consts.js +5 -3
  19. package/dist/cjs/custom-select-control/index.js +1 -9
  20. package/dist/cjs/custom-select-control/style.scss +6 -7
  21. package/dist/cjs/date-range-picker/index.js +1 -10
  22. package/dist/cjs/date-range-picker/style.scss +12 -12
  23. package/dist/cjs/footer/index.js +5 -17
  24. package/dist/cjs/footer/style.scss +5 -5
  25. package/dist/cjs/form-token-field/index.js +1 -9
  26. package/dist/cjs/form-token-field/style.scss +2 -3
  27. package/dist/cjs/global-notices/index.js +1 -8
  28. package/dist/cjs/grid/index.js +1 -8
  29. package/dist/cjs/grid/style.scss +5 -5
  30. package/dist/cjs/handoff/index.js +8 -17
  31. package/dist/cjs/handoff-message/index.js +50 -0
  32. package/dist/cjs/hooks/index.js +1 -7
  33. package/dist/cjs/hooks/useObjectState.js +7 -13
  34. package/dist/cjs/hooks/useObjectState.test.js +0 -14
  35. package/dist/cjs/hooks/useOnClickOutside.js +3 -6
  36. package/dist/cjs/hooks/usePrompt.js +1 -13
  37. package/dist/cjs/image-upload/index.js +21 -19
  38. package/dist/cjs/image-upload/index.test.js +0 -5
  39. package/dist/cjs/image-upload/style.scss +5 -9
  40. package/dist/cjs/index.js +28 -44
  41. package/dist/cjs/info-button/index.js +3 -11
  42. package/dist/cjs/info-button/style.scss +1 -3
  43. package/dist/cjs/modal/index.js +1 -9
  44. package/dist/cjs/modal/style.scss +8 -8
  45. package/dist/cjs/newspack-icon/index.js +1 -9
  46. package/dist/cjs/newspack-icon/style.scss +4 -4
  47. package/dist/cjs/newspack-logo/index.js +1 -9
  48. package/dist/cjs/newspack-logo/style.scss +3 -3
  49. package/dist/cjs/notice/index.js +8 -15
  50. package/dist/cjs/notice/style.scss +28 -15
  51. package/dist/cjs/patrons-logo/index.js +3 -11
  52. package/dist/cjs/plugin-installer/index.js +36 -36
  53. package/dist/cjs/plugin-installer/style.scss +5 -5
  54. package/dist/cjs/plugin-settings/SettingsSection.js +9 -28
  55. package/dist/cjs/plugin-settings/index.js +39 -22
  56. package/dist/cjs/plugin-toggle/index.js +40 -33
  57. package/dist/cjs/plugin-toggle/style.scss +2 -2
  58. package/dist/cjs/popover/index.js +1 -11
  59. package/dist/cjs/popover/style.scss +19 -16
  60. package/dist/cjs/position-control/index.js +113 -0
  61. package/dist/cjs/position-control/style.scss +66 -0
  62. package/dist/cjs/progress-bar/index.js +2 -9
  63. package/dist/cjs/progress-bar/index.test.js +2 -7
  64. package/dist/cjs/progress-bar/style.scss +4 -4
  65. package/dist/cjs/proxied-imports/router.js +0 -3
  66. package/dist/cjs/radio-control/index.js +1 -11
  67. package/dist/cjs/radio-control/style.scss +9 -9
  68. package/dist/cjs/section-header/index.js +44 -29
  69. package/dist/cjs/section-header/style.scss +2 -2
  70. package/dist/cjs/select-control/ButtonGroupControl.js +4 -13
  71. package/dist/cjs/select-control/GroupedSelectControl.js +9 -15
  72. package/dist/cjs/select-control/index.js +5 -12
  73. package/dist/cjs/select-control/style.scss +2 -2
  74. package/dist/cjs/settings/MinMaxSetting.js +3 -7
  75. package/dist/cjs/settings/SettingsCard.js +3 -7
  76. package/dist/cjs/settings/SettingsSection.js +1 -4
  77. package/dist/cjs/settings/index.js +0 -6
  78. package/dist/cjs/settings/style.scss +1 -1
  79. package/dist/cjs/steps-list/index.js +52 -0
  80. package/dist/cjs/steps-list/style.scss +11 -0
  81. package/dist/cjs/steps-list-item/index.js +56 -0
  82. package/dist/cjs/steps-list-item/style.scss +47 -0
  83. package/dist/cjs/style-card/index.js +6 -13
  84. package/dist/cjs/style-card/style.scss +9 -12
  85. package/dist/cjs/style.scss +5 -6
  86. package/dist/cjs/tabbed-navigation/index.js +19 -16
  87. package/dist/cjs/tabbed-navigation/style.scss +3 -4
  88. package/dist/cjs/text-control/index.js +6 -16
  89. package/dist/cjs/utils/index.js +10 -5
  90. package/dist/cjs/waiting/index.js +1 -9
  91. package/dist/cjs/web-preview/index.js +13 -28
  92. package/dist/cjs/web-preview/style.scss +14 -14
  93. package/dist/cjs/with-wizard/index.js +51 -31
  94. package/dist/cjs/with-wizard/style.scss +35 -37
  95. package/dist/cjs/with-wizard-screen/index.js +11 -17
  96. package/dist/cjs/with-wizard-screen/style.scss +14 -17
  97. package/dist/cjs/wizard/components/WizardError.js +3 -15
  98. package/dist/cjs/wizard/index.js +10 -24
  99. package/dist/cjs/wizard/store/index.js +42 -55
  100. package/dist/cjs/wizard/store/utils.js +1 -6
  101. package/dist/esm/accordion/index.js +38 -0
  102. package/dist/esm/accordion/style.scss +27 -0
  103. package/dist/esm/action-card/index.js +50 -21
  104. package/dist/esm/action-card/style.scss +100 -23
  105. package/dist/esm/autocomplete-tokenfield/index.js +14 -37
  106. package/dist/esm/autocomplete-tokenfield/style.scss +2 -2
  107. package/dist/esm/autocomplete-with-suggestions/index.js +28 -41
  108. package/dist/esm/autocomplete-with-suggestions/style.scss +16 -15
  109. package/dist/esm/button/index.js +5 -7
  110. package/dist/esm/button-card/index.js +2 -5
  111. package/dist/esm/button-card/style.scss +13 -13
  112. package/dist/esm/card/index.js +2 -5
  113. package/dist/esm/card/style.scss +25 -8
  114. package/dist/esm/category-autocomplete/index.js +17 -30
  115. package/dist/esm/category-autocomplete/style.scss +0 -2
  116. package/dist/esm/color-picker/index.js +2 -4
  117. package/dist/esm/color-picker/style.scss +0 -3
  118. package/dist/esm/consts.js +3 -2
  119. package/dist/esm/custom-select-control/index.js +2 -5
  120. package/dist/esm/custom-select-control/style.scss +6 -7
  121. package/dist/esm/date-range-picker/index.js +1 -3
  122. package/dist/esm/date-range-picker/style.scss +12 -12
  123. package/dist/esm/footer/index.js +3 -11
  124. package/dist/esm/footer/style.scss +5 -5
  125. package/dist/esm/form-token-field/index.js +2 -5
  126. package/dist/esm/form-token-field/style.scss +2 -3
  127. package/dist/esm/global-notices/index.js +1 -6
  128. package/dist/esm/grid/index.js +2 -5
  129. package/dist/esm/grid/style.scss +5 -5
  130. package/dist/esm/handoff/index.js +3 -14
  131. package/dist/esm/handoff-message/index.js +45 -0
  132. package/dist/esm/hooks/index.js +0 -2
  133. package/dist/esm/hooks/useObjectState.js +3 -8
  134. package/dist/esm/hooks/useObjectState.test.js +0 -3
  135. package/dist/esm/hooks/useOnClickOutside.js +2 -5
  136. package/dist/esm/hooks/usePrompt.js +1 -8
  137. package/dist/esm/image-upload/index.js +17 -16
  138. package/dist/esm/image-upload/style.scss +5 -9
  139. package/dist/esm/index.js +4 -0
  140. package/dist/esm/info-button/index.js +4 -6
  141. package/dist/esm/info-button/style.scss +1 -3
  142. package/dist/esm/modal/index.js +2 -5
  143. package/dist/esm/modal/style.scss +8 -8
  144. package/dist/esm/newspack-icon/index.js +2 -5
  145. package/dist/esm/newspack-icon/style.scss +4 -4
  146. package/dist/esm/newspack-logo/index.js +2 -5
  147. package/dist/esm/newspack-logo/style.scss +3 -3
  148. package/dist/esm/notice/index.js +4 -8
  149. package/dist/esm/notice/style.scss +28 -15
  150. package/dist/esm/patrons-logo/index.js +3 -5
  151. package/dist/esm/plugin-installer/index.js +35 -39
  152. package/dist/esm/plugin-installer/style.scss +5 -5
  153. package/dist/esm/plugin-settings/SettingsSection.js +8 -21
  154. package/dist/esm/plugin-settings/index.js +38 -24
  155. package/dist/esm/plugin-toggle/index.js +39 -36
  156. package/dist/esm/plugin-toggle/style.scss +2 -2
  157. package/dist/esm/popover/index.js +3 -6
  158. package/dist/esm/popover/style.scss +19 -16
  159. package/dist/esm/position-control/index.js +109 -0
  160. package/dist/esm/position-control/style.scss +66 -0
  161. package/dist/esm/progress-bar/index.js +2 -7
  162. package/dist/esm/progress-bar/index.test.js +2 -1
  163. package/dist/esm/progress-bar/style.scss +4 -4
  164. package/dist/esm/proxied-imports/router.js +1 -0
  165. package/dist/esm/radio-control/index.js +3 -6
  166. package/dist/esm/radio-control/style.scss +9 -9
  167. package/dist/esm/section-header/index.js +44 -25
  168. package/dist/esm/section-header/style.scss +2 -2
  169. package/dist/esm/select-control/ButtonGroupControl.js +5 -7
  170. package/dist/esm/select-control/GroupedSelectControl.js +5 -6
  171. package/dist/esm/select-control/index.js +6 -6
  172. package/dist/esm/select-control/style.scss +2 -2
  173. package/dist/esm/settings/MinMaxSetting.js +1 -3
  174. package/dist/esm/settings/SettingsCard.js +3 -4
  175. package/dist/esm/settings/SettingsSection.js +0 -2
  176. package/dist/esm/settings/style.scss +1 -1
  177. package/dist/esm/steps-list/index.js +43 -0
  178. package/dist/esm/steps-list/style.scss +11 -0
  179. package/dist/esm/steps-list-item/index.js +48 -0
  180. package/dist/esm/steps-list-item/style.scss +47 -0
  181. package/dist/esm/style-card/index.js +2 -5
  182. package/dist/esm/style-card/style.scss +9 -12
  183. package/dist/esm/style.scss +5 -6
  184. package/dist/esm/tabbed-navigation/index.js +20 -10
  185. package/dist/esm/tabbed-navigation/style.scss +3 -4
  186. package/dist/esm/text-control/index.js +2 -9
  187. package/dist/esm/utils/index.js +9 -3
  188. package/dist/esm/waiting/index.js +2 -5
  189. package/dist/esm/web-preview/index.js +9 -24
  190. package/dist/esm/web-preview/style.scss +14 -14
  191. package/dist/esm/with-wizard/index.js +49 -34
  192. package/dist/esm/with-wizard/style.scss +35 -37
  193. package/dist/esm/with-wizard-screen/index.js +9 -11
  194. package/dist/esm/with-wizard-screen/style.scss +14 -17
  195. package/dist/esm/wizard/components/WizardError.js +1 -10
  196. package/dist/esm/wizard/index.js +10 -12
  197. package/dist/esm/wizard/store/index.js +40 -46
  198. package/dist/esm/wizard/store/utils.js +1 -1
  199. package/package.json +4 -4
  200. package/shared/js/button-props.js +3 -1
  201. package/shared/scss/_mixins.scss +12 -0
  202. package/src/accordion/index.js +32 -0
  203. package/src/accordion/style.scss +27 -0
  204. package/src/action-card/index.js +43 -8
  205. package/src/action-card/style.scss +100 -23
  206. package/src/autocomplete-tokenfield/index.js +1 -1
  207. package/src/autocomplete-tokenfield/style.scss +2 -2
  208. package/src/autocomplete-with-suggestions/style.scss +16 -15
  209. package/src/button-card/style.scss +13 -13
  210. package/src/card/style.scss +25 -8
  211. package/src/category-autocomplete/index.js +3 -1
  212. package/src/category-autocomplete/style.scss +0 -2
  213. package/src/color-picker/style.scss +0 -3
  214. package/src/consts.js +2 -1
  215. package/src/custom-select-control/style.scss +6 -7
  216. package/src/date-range-picker/style.scss +12 -12
  217. package/src/footer/index.js +2 -2
  218. package/src/footer/style.scss +5 -5
  219. package/src/form-token-field/index.js +2 -7
  220. package/src/form-token-field/style.scss +2 -3
  221. package/src/grid/style.scss +5 -5
  222. package/src/handoff/index.js +3 -8
  223. package/src/handoff-message/index.js +39 -0
  224. package/src/hooks/useObjectState.js +2 -1
  225. package/src/image-upload/index.js +9 -3
  226. package/src/image-upload/style.scss +5 -9
  227. package/src/index.js +4 -0
  228. package/src/info-button/style.scss +1 -3
  229. package/src/modal/style.scss +8 -8
  230. package/src/newspack-icon/style.scss +4 -4
  231. package/src/newspack-logo/style.scss +3 -3
  232. package/src/notice/index.js +2 -0
  233. package/src/notice/style.scss +28 -15
  234. package/src/plugin-installer/index.js +15 -2
  235. package/src/plugin-installer/style.scss +5 -5
  236. package/src/plugin-settings/SettingsSection.js +7 -13
  237. package/src/plugin-settings/index.js +7 -2
  238. package/src/plugin-toggle/index.js +2 -3
  239. package/src/plugin-toggle/style.scss +2 -2
  240. package/src/popover/style.scss +19 -16
  241. package/src/position-control/index.js +122 -0
  242. package/src/position-control/style.scss +66 -0
  243. package/src/progress-bar/style.scss +4 -4
  244. package/src/radio-control/style.scss +9 -9
  245. package/src/section-header/index.js +32 -15
  246. package/src/section-header/style.scss +2 -2
  247. package/src/select-control/ButtonGroupControl.js +3 -0
  248. package/src/select-control/GroupedSelectControl.js +2 -1
  249. package/src/select-control/index.js +6 -2
  250. package/src/select-control/style.scss +2 -2
  251. package/src/settings/style.scss +1 -1
  252. package/src/steps-list/index.js +39 -0
  253. package/src/steps-list/style.scss +11 -0
  254. package/src/steps-list-item/index.js +40 -0
  255. package/src/steps-list-item/style.scss +47 -0
  256. package/src/style-card/index.js +2 -11
  257. package/src/style-card/style.scss +9 -12
  258. package/src/style.scss +5 -6
  259. package/src/tabbed-navigation/index.js +12 -4
  260. package/src/tabbed-navigation/style.scss +3 -4
  261. package/src/utils/index.js +9 -0
  262. package/src/web-preview/index.js +1 -1
  263. package/src/web-preview/style.scss +14 -14
  264. package/src/with-wizard/style.scss +35 -37
  265. package/src/with-wizard-screen/index.js +4 -1
  266. package/src/with-wizard-screen/style.scss +14 -17
  267. package/src/wizard/index.js +15 -3
  268. package/src/wizard/store/index.js +8 -2
@@ -1,31 +1,24 @@
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 _ = require("../");
19
-
20
13
  require("./style.scss");
21
-
22
14
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
23
-
24
15
  /**
25
16
  * WordPress dependencies.
26
17
  */
18
+ /**
19
+ * Internal dependencies.
20
+ */
27
21
  const __ = _i18n.__;
28
-
29
22
  /**
30
23
  * Plugin toggle group component.
31
24
  */
@@ -38,6 +31,9 @@ class PluginToggle extends _element.Component {
38
31
  (0, _defineProperty2.default)(this, "componentDidMount", () => {
39
32
  this.retrievePluginInfo();
40
33
  });
34
+ /**
35
+ * Retrieve complete data about Newspack plugins.
36
+ */
41
37
  (0, _defineProperty2.default)(this, "retrievePluginInfo", () => {
42
38
  return new Promise(() => {
43
39
  (0, _apiFetch.default)({
@@ -47,6 +43,9 @@ class PluginToggle extends _element.Component {
47
43
  }));
48
44
  });
49
45
  });
46
+ /**
47
+ * Install/activate or remove a plugin.
48
+ */
50
49
  (0, _defineProperty2.default)(this, "managePlugin", (plugin, value) => {
51
50
  const {
52
51
  plugins
@@ -60,8 +59,10 @@ class PluginToggle extends _element.Component {
60
59
  method: 'post'
61
60
  };
62
61
  this.setState({
63
- pluginInfo: { ...pluginInfo,
64
- [plugin]: { ...pluginInfo[plugin],
62
+ pluginInfo: {
63
+ ...pluginInfo,
64
+ [plugin]: {
65
+ ...pluginInfo[plugin],
65
66
  inFlight: action
66
67
  }
67
68
  }
@@ -75,15 +76,18 @@ class PluginToggle extends _element.Component {
75
76
  pluginInfo: currentPluginInfo
76
77
  } = _ref;
77
78
  return {
78
- pluginInfo: { ...currentPluginInfo,
79
+ pluginInfo: {
80
+ ...currentPluginInfo,
79
81
  [plugin]: response
80
82
  }
81
83
  };
82
84
  }, () => shouldRefreshAfterUpdate && location.reload());
83
85
  }).catch(e => {
84
86
  this.setState({
85
- pluginInfo: { ...pluginInfo,
86
- [plugin]: { ...pluginInfo[plugin],
87
+ pluginInfo: {
88
+ ...pluginInfo,
89
+ [plugin]: {
90
+ ...pluginInfo[plugin],
87
91
  error: e.message || __('There was an error managing this plugin.', 'newspack')
88
92
  }
89
93
  }
@@ -91,23 +95,31 @@ class PluginToggle extends _element.Component {
91
95
  });
92
96
  });
93
97
  });
94
- (0, _defineProperty2.default)(this, "prepareDataForRender", (pluginsFromProps, pluginsFromAPI) => Object.keys(pluginsFromProps).map(pluginSlug => pluginsFromAPI[pluginSlug] ? Object.keys(pluginsFromAPI[pluginSlug]).reduce((accumulator, key) => ({ ...accumulator,
98
+ /**
99
+ * Prepare plugins data for render. Change all keys to camelCase, merge API-fetched data with prop.
100
+ */
101
+ (0, _defineProperty2.default)(this, "prepareDataForRender", (pluginsFromProps, pluginsFromAPI) => Object.keys(pluginsFromProps).map(pluginSlug => pluginsFromAPI[pluginSlug] ? Object.keys(pluginsFromAPI[pluginSlug]).reduce((accumulator, key) => ({
102
+ ...accumulator,
95
103
  [key.charAt(0).toLowerCase() + key.slice(1)]: pluginsFromAPI[pluginSlug][key]
96
104
  }), {}) : {}).map(plugin => Object.assign(plugin, pluginsFromProps[plugin.slug])));
105
+ /**
106
+ * Generate a classname for the ActionCard based on plugin state. Applies 'in-flight' class if an API is underway and 'loading' if the plugin data is not yet available.
107
+ */
97
108
  (0, _defineProperty2.default)(this, "classNameForPlugin", plugin => {
98
109
  const {
99
110
  status,
100
111
  inFlight
101
112
  } = plugin;
102
-
103
113
  if (inFlight) {
104
114
  return 'in-flight';
105
115
  }
106
-
107
116
  if (!status) {
108
117
  return 'loading';
109
118
  }
110
119
  });
120
+ /**
121
+ * Generate the ActionCard action text for a plugin.
122
+ */
111
123
  (0, _defineProperty2.default)(this, "actionTextForPlugin", plugin => {
112
124
  const {
113
125
  actionText,
@@ -115,8 +127,8 @@ class PluginToggle extends _element.Component {
115
127
  href,
116
128
  inFlight,
117
129
  name
118
- } = plugin; // Show spinner when plugin data is unavailable, or when an API call is in flight.
119
-
130
+ } = plugin;
131
+ // Show spinner when plugin data is unavailable, or when an API call is in flight.
120
132
  if ('configure' === inFlight) {
121
133
  return (0, _jsxRuntime.jsxs)(_element.Fragment, {
122
134
  children: [__('Installing…', 'newspack'), " ", (0, _jsxRuntime.jsx)(_.Waiting, {
@@ -124,7 +136,6 @@ class PluginToggle extends _element.Component {
124
136
  })]
125
137
  });
126
138
  }
127
-
128
139
  if ('deactivate' === inFlight) {
129
140
  return (0, _jsxRuntime.jsxs)(_element.Fragment, {
130
141
  children: [__('Deactivating…', 'newspack'), " ", (0, _jsxRuntime.jsx)(_.Waiting, {
@@ -132,24 +143,24 @@ class PluginToggle extends _element.Component {
132
143
  })]
133
144
  });
134
145
  }
135
-
136
146
  if (!name) {
137
147
  return (0, _jsxRuntime.jsxs)(_element.Fragment, {
138
148
  children: [__('Loading…', 'newspack'), " ", (0, _jsxRuntime.jsx)(_.Waiting, {
139
149
  isRight: true
140
150
  })]
141
151
  });
142
- } // No action button at all if the plugin isn't installed and active.
143
-
144
-
152
+ }
153
+ // No action button at all if the plugin isn't installed and active.
145
154
  if (!this.isPluginInstalledAndActive(plugin)) {
146
155
  return null;
147
156
  }
148
-
149
157
  if (href || editPath) {
150
158
  return actionText ? actionText : __('Configure', 'newspack');
151
159
  }
152
160
  });
161
+ /**
162
+ * Get error message for this plugin.
163
+ */
153
164
  (0, _defineProperty2.default)(this, "errorForPlugin", plugin => {
154
165
  const {
155
166
  slug
@@ -159,6 +170,9 @@ class PluginToggle extends _element.Component {
159
170
  } = this.state;
160
171
  return pluginInfo[slug]?.error || null;
161
172
  });
173
+ /**
174
+ * Get installation/activation status for a plugin.
175
+ */
162
176
  (0, _defineProperty2.default)(this, "isPluginInstalledAndActive", plugin => {
163
177
  const {
164
178
  status
@@ -166,7 +180,6 @@ class PluginToggle extends _element.Component {
166
180
  return status === 'active';
167
181
  });
168
182
  }
169
-
170
183
  /**
171
184
  * Render.
172
185
  */
@@ -204,12 +217,6 @@ class PluginToggle extends _element.Component {
204
217
  }, index);
205
218
  });
206
219
  }
207
- /**
208
- * Prepare plugins data for render. Change all keys to camelCase, merge API-fetched data with prop.
209
- */
210
-
211
-
212
220
  }
213
-
214
221
  var _default = PluginToggle;
215
222
  exports.default = _default;
@@ -2,7 +2,7 @@
2
2
  * Plugin Toggle
3
3
  */
4
4
 
5
- @import '~@wordpress/base-styles/colors';
5
+ @use '~@wordpress/base-styles/colors' as wp-colors;
6
6
 
7
7
  .newspack-action-card {
8
8
  &.in-flight,
@@ -11,7 +11,7 @@
11
11
 
12
12
  .newspack-action-card__region-right {
13
13
  .newspack-button {
14
- color: $gray-700;
14
+ color: wp-colors.$gray-700;
15
15
  pointer-events: none;
16
16
  text-decoration: none;
17
17
  }
@@ -1,22 +1,15 @@
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 _components = require("@wordpress/components");
11
-
12
9
  var _element = require("@wordpress/element");
13
-
14
10
  require("./style.scss");
15
-
16
11
  var _classnames = _interopRequireDefault(require("classnames"));
17
-
18
12
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
19
-
20
13
  /**
21
14
  * WordPress dependencies
22
15
  */
@@ -31,8 +24,7 @@ var _jsxRuntime = require("@emotion/react/jsx-runtime");
31
24
 
32
25
  /**
33
26
  * Popover
34
- */
35
- class Popover extends _element.Component {
27
+ */class Popover extends _element.Component {
36
28
  /**
37
29
  * Render
38
30
  */
@@ -48,9 +40,7 @@ class Popover extends _element.Component {
48
40
  ...otherProps
49
41
  });
50
42
  }
51
-
52
43
  }
53
-
54
44
  Popover.defaultProps = {
55
45
  padding: false
56
46
  };
@@ -2,30 +2,29 @@
2
2
  * Popover
3
3
  */
4
4
 
5
- @import '../../../shared/scss/colors';
6
- @import '~@wordpress/base-styles/colors';
5
+ @use '../../../shared/scss/colors';
6
+ @use '~@wordpress/base-styles/colors' as wp-colors;
7
7
 
8
8
  .newspack-popover {
9
9
  .components-popover__content {
10
- border: 1px solid $gray-300;
11
- border-radius: 2px;
12
- box-shadow: 0 4px 8px rgba( black, 0.08 );
13
10
  min-width: 238px;
14
11
 
15
12
  .newspack-button {
16
- color: $gray-700;
13
+ color: wp-colors.$gray-700;
17
14
  display: flex;
18
15
  font-weight: normal;
19
16
  padding: 6px 8px;
20
17
 
21
18
  &:hover {
19
+ color: colors.$primary-500;
20
+
22
21
  .components-menu-items__item-icon {
23
- fill: currentColor;
22
+ fill: currentcolor;
24
23
  }
25
24
  }
26
25
 
27
26
  &:focus:not( :disabled ) {
28
- box-shadow: inset 0 0 0 2px $primary-500;
27
+ box-shadow: inset 0 0 0 2px colors.$primary-500;
29
28
  position: relative;
30
29
  z-index: 1;
31
30
  }
@@ -36,14 +35,14 @@
36
35
  text-decoration: none;
37
36
 
38
37
  &:not( .is-destructive ) {
39
- color: $gray-700;
38
+ color: wp-colors.$gray-700;
40
39
 
41
40
  &:active,
42
41
  &:active:enabled,
43
42
  &:focus,
44
43
  &:focus:enabled &:hover,
45
- &:not( :disabled ):not( [aria-disabled='true'] ):not( .is-default ):hover {
46
- color: $primary-500;
44
+ &:not( :disabled, [aria-disabled='true'], .is-default ):hover {
45
+ color: colors.$primary-500;
47
46
  }
48
47
  }
49
48
 
@@ -53,8 +52,12 @@
53
52
  }
54
53
  }
55
54
 
55
+ &.is-destructive:not( :focus ) {
56
+ box-shadow: none !important;
57
+ }
58
+
56
59
  .components-menu-items__item-icon {
57
- fill: $gray-900;
60
+ fill: wp-colors.$gray-900;
58
61
  }
59
62
 
60
63
  .components-menu-item__item {
@@ -64,7 +67,7 @@
64
67
  }
65
68
 
66
69
  .components-menu-group__label {
67
- color: $gray-900;
70
+ color: wp-colors.$gray-900;
68
71
  font-size: 12px;
69
72
  font-weight: bold;
70
73
  line-height: 16px;
@@ -86,8 +89,8 @@
86
89
  min-height: 36px;
87
90
 
88
91
  &:focus ~ div.components-input-control__backdrop {
89
- border-color: $primary-500;
90
- box-shadow: inset 0 0 0 1px $primary-500;
92
+ border-color: colors.$primary-500;
93
+ box-shadow: inset 0 0 0 1px colors.$primary-500;
91
94
  }
92
95
  }
93
96
 
@@ -129,7 +132,7 @@
129
132
  }
130
133
 
131
134
  &:not( .is-without-arrow )::before {
132
- border-color: $gray-300;
135
+ border-color: wp-colors.$gray-300;
133
136
  }
134
137
 
135
138
  &.is-from-bottom {
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = PositionControl;
8
+ var _i18n = require("@wordpress/i18n");
9
+ var _components = require("@wordpress/components");
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ require("./style.scss");
12
+ var _jsxRuntime = require("@emotion/react/jsx-runtime");
13
+ /**
14
+ * WordPress dependencies
15
+ */
16
+ const __ = _i18n.__;
17
+ /**
18
+ * External dependencies
19
+ */
20
+ /**
21
+ * Internal dependencies
22
+ */
23
+ function PositionControl(_ref) {
24
+ let {
25
+ allowedPositions,
26
+ value,
27
+ label,
28
+ help,
29
+ onChange,
30
+ size,
31
+ ...props
32
+ } = _ref;
33
+ /**
34
+ * Set layout options
35
+ */
36
+ const options = size === 'full-width' ? [{
37
+ value: 'top',
38
+ /* translators: Overlay Position */
39
+ label: __('Top', 'newspack')
40
+ }, {
41
+ value: 'center',
42
+ /* translators: Overlay Position */
43
+ label: __('Center', 'newspack')
44
+ }, {
45
+ value: 'bottom',
46
+ /* translators: Overlay Position */
47
+ label: __('Bottom', 'newspack')
48
+ }] : [{
49
+ value: 'top_left',
50
+ /* translators: Overlay Position */
51
+ label: __('Top Left', 'newspack')
52
+ }, {
53
+ value: 'top',
54
+ /* translators: Overlay Position */
55
+ label: __('Top Center', 'newspack')
56
+ }, {
57
+ value: 'top_right',
58
+ /* translators: Overlay Position */
59
+ label: __('Top Right', 'newspack')
60
+ }, {
61
+ value: 'center_left',
62
+ /* translators: Overlay Position */
63
+ label: __('Center Left', 'newspack')
64
+ }, {
65
+ value: 'center',
66
+ /* translators: Overlay Position */
67
+ label: __('Center', 'newspack')
68
+ }, {
69
+ value: 'center_right',
70
+ /* translators: Overlay Position */
71
+ label: __('Center Right', 'newspack')
72
+ }, {
73
+ value: 'bottom_left',
74
+ /* translators: Overlay Position */
75
+ label: __('Bottom Left', 'newspack')
76
+ }, {
77
+ value: 'bottom',
78
+ /* translators: Overlay Position */
79
+ label: __('Bottom Center', 'newspack')
80
+ }, {
81
+ value: 'bottom_right',
82
+ /* translators: Overlay Position */
83
+ label: __('Bottom Right', 'newspack')
84
+ }];
85
+ return (0, _jsxRuntime.jsxs)("div", {
86
+ className: (0, _classnames.default)('newspack-position-placement-control', 'size-' + size),
87
+ children: [(0, _jsxRuntime.jsx)("p", {
88
+ className: "components-base-control__label",
89
+ children: label
90
+ }), (0, _jsxRuntime.jsx)(_components.ButtonGroup, {
91
+ "aria-label": __('Select Position', 'newspack'),
92
+ ...props,
93
+ children: options.map((option, index) => {
94
+ return (0, _jsxRuntime.jsx)("div", {
95
+ className: option.value === value ? 'is-selected' : null,
96
+ children: (0, _jsxRuntime.jsx)(_components.Button, {
97
+ isSmall: true,
98
+ title: option.label,
99
+ "aria-label": option.label,
100
+ isPrimary: option.value === value,
101
+ onClick: () => {
102
+ onChange(option.value);
103
+ },
104
+ disabled: allowedPositions?.length && !allowedPositions.includes(option.value)
105
+ })
106
+ }, `newspack-position-placement-item-${index}`);
107
+ })
108
+ }), (0, _jsxRuntime.jsx)("p", {
109
+ className: "components-base-control__help",
110
+ children: help
111
+ })]
112
+ });
113
+ }
@@ -0,0 +1,66 @@
1
+ @use '~@wordpress/base-styles/colors' as wp-colors;
2
+
3
+ .newspack-position-placement-control {
4
+ margin-bottom: 1em;
5
+
6
+ .components-base-control__label {
7
+ margin-bottom: 8px;
8
+ margin-top: 1em;
9
+ }
10
+
11
+ .components-button-group {
12
+ display: grid;
13
+ grid-template-columns: repeat( 3, 1fr );
14
+ grid-template-rows: repeat( 3, 1fr );
15
+
16
+ div {
17
+ padding: 1px;
18
+ }
19
+
20
+ .components-button {
21
+ border-radius: 0 !important;
22
+ height: 100%;
23
+ padding: 20px;
24
+ width: 100%;
25
+ }
26
+
27
+ div:nth-of-type( 1 ) .components-button {
28
+ border-radius: 4px 0 0 !important;
29
+ }
30
+
31
+ div:nth-of-type( 3 ) .components-button {
32
+ border-radius: 0 4px 0 0 !important;
33
+ }
34
+
35
+ div:nth-last-of-type( 1 ) .components-button {
36
+ border-radius: 0 0 4px !important;
37
+ }
38
+
39
+ div:nth-last-of-type( 3 ) .components-button {
40
+ border-radius: 0 0 0 4px !important;
41
+ }
42
+ }
43
+
44
+ &.size-full-width .components-button-group {
45
+ grid-template-columns: 1fr;
46
+
47
+ div:first-of-type .components-button {
48
+ border-radius: 4px 4px 0 0 !important;
49
+ }
50
+
51
+ div:nth-of-type( 2 ) .components-button {
52
+ border-radius: 0 !important;
53
+ }
54
+
55
+ div:last-of-type .components-button {
56
+ border-radius: 0 0 4px 4px !important;
57
+ }
58
+ }
59
+
60
+ .components-base-control__help {
61
+ color: wp-colors.$gray-700;
62
+ font-size: 12px;
63
+ font-style: normal;
64
+ margin-top: 8px;
65
+ }
66
+ }
@@ -4,13 +4,9 @@ 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
  require("./style.scss");
11
-
12
9
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
13
-
14
10
  /**
15
11
  * Progress Bar
16
12
  */
@@ -22,6 +18,7 @@ var _jsxRuntime = require("@emotion/react/jsx-runtime");
22
18
  /**
23
19
  * Internal dependencies.
24
20
  */
21
+
25
22
  class ProgressBar extends _element.Component {
26
23
  /**
27
24
  * Get completion as a percentage.
@@ -34,14 +31,12 @@ class ProgressBar extends _element.Component {
34
31
  if (!total) {
35
32
  return 100;
36
33
  }
37
-
38
34
  return Math.max(Math.min(Math.round(completed / total * 100), 100), 0);
39
35
  }
36
+
40
37
  /**
41
38
  * Render.
42
39
  */
43
-
44
-
45
40
  render() {
46
41
  const {
47
42
  label,
@@ -76,8 +71,6 @@ class ProgressBar extends _element.Component {
76
71
  })]
77
72
  });
78
73
  }
79
-
80
74
  }
81
-
82
75
  var _default = ProgressBar;
83
76
  exports.default = _default;
@@ -1,17 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  var _react = _interopRequireDefault(require("react"));
6
-
7
5
  var _react2 = require("@testing-library/react");
8
-
9
6
  var _ = _interopRequireDefault(require("./"));
10
-
11
7
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
12
-
13
8
  var _react3 = require("@emotion/react");
14
-
15
9
  describe('ProgressBar', () => {
16
10
  it('should render a progress indicator', () => {
17
11
  const {
@@ -84,7 +78,8 @@ describe('ProgressBar', () => {
84
78
  it(`with expected progress of ${expectedWidth}`, () => {
85
79
  const {
86
80
  getByTestId
87
- } = (0, _react2.render)((0, _react3.createElement)(_.default, { ...props,
81
+ } = (0, _react2.render)((0, _react3.createElement)(_.default, {
82
+ ...props,
88
83
  key: expectedWidth
89
84
  }));
90
85
  expect(getByTestId('progress-bar-indicator')).toHaveAttribute('style', `width: ${expectedWidth}%;`);
@@ -2,8 +2,8 @@
2
2
  * Progress Bar
3
3
  */
4
4
 
5
- @import '../../../shared/scss/colors';
6
- @import '~@wordpress/base-styles/colors';
5
+ @use '../../../shared/scss/colors';
6
+ @use '~@wordpress/base-styles/colors' as wp-colors;
7
7
 
8
8
  .newspack-progress-bar {
9
9
  margin: 32px 0;
@@ -26,7 +26,7 @@
26
26
  }
27
27
 
28
28
  &__container {
29
- background-color: $gray-100;
29
+ background-color: wp-colors.$gray-100;
30
30
  border-radius: 4px;
31
31
  height: 8px;
32
32
  overflow: hidden;
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  &__bar {
38
- background-color: $primary-500;
38
+ background-color: colors.$primary-500;
39
39
  height: 8px;
40
40
  transition: width 125ms ease-in-out;
41
41
  }
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var ReactRouterDOM = _interopRequireWildcard(require("react-router-dom"));
11
-
12
9
  /**
13
10
  * A proxy for react-router-dom.
14
11
  * Ensures that both components and the plugin use the same instance of
@@ -1,22 +1,15 @@
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 _components = require("@wordpress/components");
11
-
12
9
  var _element = require("@wordpress/element");
13
-
14
10
  require("./style.scss");
15
-
16
11
  var _classnames = _interopRequireDefault(require("classnames"));
17
-
18
12
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
19
-
20
13
  /**
21
14
  * WordPress dependencies.
22
15
  */
@@ -31,8 +24,7 @@ var _jsxRuntime = require("@emotion/react/jsx-runtime");
31
24
 
32
25
  /**
33
26
  * Radio Control.
34
- */
35
- class RadioControl extends _element.Component {
27
+ */class RadioControl extends _element.Component {
36
28
  /**
37
29
  * Render.
38
30
  */
@@ -47,8 +39,6 @@ class RadioControl extends _element.Component {
47
39
  ...otherProps
48
40
  });
49
41
  }
50
-
51
42
  }
52
-
53
43
  var _default = RadioControl;
54
44
  exports.default = _default;