newspack-components 2.0.1 → 2.1.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 (251) hide show
  1. package/copy-styles.js +1 -1
  2. package/dist/cjs/action-card/index.js +32 -22
  3. package/dist/cjs/action-card/style.scss +52 -27
  4. package/dist/cjs/autocomplete-tokenfield/style.scss +4 -4
  5. package/dist/cjs/autocomplete-with-suggestions/index.js +3 -2
  6. package/dist/cjs/autocomplete-with-suggestions/style.scss +19 -20
  7. package/dist/cjs/button/index.js +2 -13
  8. package/dist/cjs/button/style.scss +3 -344
  9. package/dist/cjs/button-card/index.js +11 -6
  10. package/dist/cjs/button-card/style.scss +69 -35
  11. package/dist/cjs/card/index.js +3 -1
  12. package/dist/cjs/card/style.scss +34 -61
  13. package/dist/cjs/category-autocomplete/index.js +52 -13
  14. package/dist/cjs/category-autocomplete/style.scss +19 -15
  15. package/dist/cjs/color-picker/index.js +17 -35
  16. package/dist/cjs/color-picker/style.scss +20 -160
  17. package/dist/cjs/custom-select-control/style.scss +12 -42
  18. package/dist/cjs/footer/index.js +21 -7
  19. package/dist/cjs/footer/style.scss +9 -10
  20. package/dist/cjs/form-token-field/index.js +2 -2
  21. package/dist/cjs/form-token-field/style.scss +8 -103
  22. package/dist/cjs/global-notices/index.js +2 -1
  23. package/dist/cjs/grid/index.js +1 -1
  24. package/dist/cjs/grid/style.scss +29 -1
  25. package/dist/cjs/handoff/index.js +7 -7
  26. package/dist/cjs/image-upload/index.js +1 -1
  27. package/dist/cjs/image-upload/style.scss +10 -11
  28. package/dist/cjs/index.js +7 -53
  29. package/dist/cjs/modal/index.js +0 -3
  30. package/dist/cjs/modal/style.scss +19 -131
  31. package/dist/cjs/newspack-icon/index.js +4 -2
  32. package/dist/cjs/newspack-icon/style.scss +15 -0
  33. package/dist/cjs/notice/index.js +8 -9
  34. package/dist/cjs/notice/style.scss +38 -10
  35. package/dist/cjs/plugin-installer/index.js +4 -2
  36. package/dist/cjs/plugin-settings/SettingsSection.js +76 -45
  37. package/dist/cjs/plugin-settings/index.js +49 -34
  38. package/dist/cjs/plugin-settings/style.scss +7 -0
  39. package/dist/cjs/plugin-toggle/index.js +22 -1
  40. package/dist/cjs/popover/style.scss +2 -2
  41. package/dist/cjs/radio-control/style.scss +1 -2
  42. package/dist/cjs/section-header/index.js +18 -5
  43. package/dist/cjs/section-header/style.scss +26 -1
  44. package/dist/cjs/select-control/ButtonGroupControl.js +8 -8
  45. package/dist/cjs/select-control/GroupedSelectControl.js +33 -30
  46. package/dist/cjs/select-control/index.js +1 -2
  47. package/dist/cjs/select-control/style.scss +46 -87
  48. package/dist/cjs/settings/MinMaxSetting.js +4 -2
  49. package/dist/cjs/settings/SettingsCard.js +6 -1
  50. package/dist/cjs/settings/SettingsSection.js +4 -4
  51. package/dist/cjs/settings/style.scss +32 -4
  52. package/dist/cjs/style-card/index.js +10 -6
  53. package/dist/cjs/style-card/style.scss +12 -8
  54. package/dist/cjs/style.scss +44 -0
  55. package/dist/cjs/tabbed-navigation/index.js +13 -20
  56. package/dist/cjs/tabbed-navigation/style.scss +56 -34
  57. package/dist/cjs/text-control/index.js +0 -3
  58. package/dist/cjs/text-control/style.scss +0 -126
  59. package/dist/cjs/waiting/index.js +9 -25
  60. package/dist/cjs/waiting/style.scss +9 -20
  61. package/dist/cjs/web-preview/index.js +18 -30
  62. package/dist/cjs/web-preview/style.scss +33 -26
  63. package/dist/cjs/with-wizard/index.js +4 -2
  64. package/dist/cjs/with-wizard/style.scss +77 -89
  65. package/dist/cjs/with-wizard-screen/index.js +17 -21
  66. package/dist/cjs/with-wizard-screen/style.scss +74 -121
  67. package/dist/cjs/wizard/components/WizardError.js +86 -0
  68. package/dist/cjs/wizard/index.js +145 -0
  69. package/dist/cjs/wizard/store/index.js +178 -0
  70. package/dist/cjs/wizard/store/utils.js +31 -0
  71. package/dist/esm/action-card/index.js +33 -23
  72. package/dist/esm/action-card/style.scss +52 -27
  73. package/dist/esm/autocomplete-tokenfield/style.scss +4 -4
  74. package/dist/esm/autocomplete-with-suggestions/index.js +3 -2
  75. package/dist/esm/autocomplete-with-suggestions/style.scss +19 -20
  76. package/dist/esm/button/index.js +2 -12
  77. package/dist/esm/button/style.scss +3 -344
  78. package/dist/esm/button-card/index.js +10 -6
  79. package/dist/esm/button-card/style.scss +69 -35
  80. package/dist/esm/card/index.js +3 -1
  81. package/dist/esm/card/style.scss +34 -61
  82. package/dist/esm/category-autocomplete/index.js +54 -14
  83. package/dist/esm/category-autocomplete/style.scss +19 -15
  84. package/dist/esm/color-picker/index.js +15 -34
  85. package/dist/esm/color-picker/style.scss +20 -160
  86. package/dist/esm/custom-select-control/style.scss +12 -42
  87. package/dist/esm/footer/index.js +21 -7
  88. package/dist/esm/footer/style.scss +9 -10
  89. package/dist/esm/form-token-field/index.js +2 -2
  90. package/dist/esm/form-token-field/style.scss +8 -103
  91. package/dist/esm/global-notices/index.js +2 -1
  92. package/dist/esm/grid/index.js +1 -1
  93. package/dist/esm/grid/style.scss +29 -1
  94. package/dist/esm/handoff/index.js +7 -7
  95. package/dist/esm/image-upload/index.js +1 -1
  96. package/dist/esm/image-upload/style.scss +10 -11
  97. package/dist/esm/index.js +3 -8
  98. package/dist/esm/modal/index.js +0 -3
  99. package/dist/esm/modal/style.scss +19 -131
  100. package/dist/esm/newspack-icon/index.js +4 -2
  101. package/dist/esm/newspack-icon/style.scss +15 -0
  102. package/dist/esm/notice/index.js +8 -3
  103. package/dist/esm/notice/style.scss +38 -10
  104. package/dist/esm/plugin-installer/index.js +5 -2
  105. package/dist/esm/plugin-settings/SettingsSection.js +74 -46
  106. package/dist/esm/plugin-settings/index.js +48 -34
  107. package/dist/esm/plugin-settings/style.scss +7 -0
  108. package/dist/esm/plugin-toggle/index.js +23 -1
  109. package/dist/esm/popover/style.scss +2 -2
  110. package/dist/esm/radio-control/style.scss +1 -2
  111. package/dist/esm/section-header/index.js +17 -5
  112. package/dist/esm/section-header/style.scss +26 -1
  113. package/dist/esm/select-control/ButtonGroupControl.js +8 -8
  114. package/dist/esm/select-control/GroupedSelectControl.js +33 -30
  115. package/dist/esm/select-control/index.js +1 -2
  116. package/dist/esm/select-control/style.scss +46 -87
  117. package/dist/esm/settings/MinMaxSetting.js +3 -2
  118. package/dist/esm/settings/SettingsCard.js +6 -1
  119. package/dist/esm/settings/SettingsSection.js +5 -5
  120. package/dist/esm/settings/style.scss +32 -4
  121. package/dist/esm/style-card/index.js +11 -8
  122. package/dist/esm/style-card/style.scss +12 -8
  123. package/dist/esm/style.scss +44 -0
  124. package/dist/esm/tabbed-navigation/index.js +14 -22
  125. package/dist/esm/tabbed-navigation/style.scss +56 -34
  126. package/dist/esm/text-control/index.js +0 -3
  127. package/dist/esm/text-control/style.scss +0 -126
  128. package/dist/esm/waiting/index.js +9 -22
  129. package/dist/esm/waiting/style.scss +9 -20
  130. package/dist/esm/web-preview/index.js +12 -25
  131. package/dist/esm/web-preview/style.scss +33 -26
  132. package/dist/esm/with-wizard/index.js +4 -2
  133. package/dist/esm/with-wizard/style.scss +77 -89
  134. package/dist/esm/with-wizard-screen/index.js +18 -22
  135. package/dist/esm/with-wizard-screen/style.scss +74 -121
  136. package/dist/esm/wizard/components/WizardError.js +78 -0
  137. package/dist/esm/wizard/index.js +128 -0
  138. package/dist/esm/wizard/store/index.js +161 -0
  139. package/dist/esm/wizard/store/utils.js +17 -0
  140. package/package.json +2 -1
  141. package/shared/scss/_colors.scss +15 -0
  142. package/src/action-card/index.js +31 -19
  143. package/src/action-card/style.scss +52 -27
  144. package/src/autocomplete-tokenfield/style.scss +4 -4
  145. package/src/autocomplete-with-suggestions/index.js +4 -2
  146. package/src/autocomplete-with-suggestions/style.scss +19 -20
  147. package/src/button/index.js +2 -9
  148. package/src/button/style.scss +3 -344
  149. package/src/button-card/index.js +19 -5
  150. package/src/button-card/style.scss +69 -35
  151. package/src/card/index.js +4 -0
  152. package/src/card/style.scss +34 -61
  153. package/src/category-autocomplete/index.js +51 -18
  154. package/src/category-autocomplete/style.scss +19 -15
  155. package/src/color-picker/index.js +16 -22
  156. package/src/color-picker/style.scss +20 -160
  157. package/src/custom-select-control/style.scss +12 -42
  158. package/src/footer/index.js +19 -8
  159. package/src/footer/style.scss +9 -10
  160. package/src/form-token-field/index.js +1 -1
  161. package/src/form-token-field/style.scss +8 -103
  162. package/src/global-notices/index.js +1 -1
  163. package/src/grid/index.js +1 -1
  164. package/src/grid/style.scss +29 -1
  165. package/src/handoff/index.js +7 -7
  166. package/src/image-upload/style.scss +10 -11
  167. package/src/index.js +3 -7
  168. package/src/modal/index.js +2 -5
  169. package/src/modal/style.scss +19 -131
  170. package/src/newspack-icon/index.js +7 -2
  171. package/src/newspack-icon/style.scss +15 -0
  172. package/src/notice/index.js +7 -1
  173. package/src/notice/style.scss +38 -10
  174. package/src/plugin-installer/index.js +4 -2
  175. package/src/plugin-settings/SettingsSection.js +65 -27
  176. package/src/plugin-settings/index.js +45 -18
  177. package/src/plugin-settings/style.scss +7 -0
  178. package/src/plugin-toggle/index.js +35 -9
  179. package/src/popover/style.scss +2 -2
  180. package/src/radio-control/style.scss +1 -2
  181. package/src/section-header/index.js +25 -6
  182. package/src/section-header/style.scss +26 -1
  183. package/src/select-control/ButtonGroupControl.js +13 -6
  184. package/src/select-control/GroupedSelectControl.js +26 -24
  185. package/src/select-control/index.js +1 -2
  186. package/src/select-control/style.scss +46 -87
  187. package/src/settings/MinMaxSetting.js +2 -1
  188. package/src/settings/SettingsCard.js +9 -7
  189. package/src/settings/SettingsSection.js +4 -4
  190. package/src/settings/style.scss +32 -4
  191. package/src/style-card/index.js +14 -16
  192. package/src/style-card/style.scss +12 -8
  193. package/src/style.scss +44 -0
  194. package/src/tabbed-navigation/index.js +12 -24
  195. package/src/tabbed-navigation/style.scss +56 -34
  196. package/src/text-control/index.js +1 -2
  197. package/src/text-control/style.scss +0 -126
  198. package/src/waiting/index.js +7 -18
  199. package/src/waiting/style.scss +9 -20
  200. package/src/web-preview/index.js +12 -33
  201. package/src/web-preview/style.scss +33 -26
  202. package/src/with-wizard/index.js +7 -5
  203. package/src/with-wizard/style.scss +77 -89
  204. package/src/with-wizard-screen/index.js +14 -17
  205. package/src/with-wizard-screen/style.scss +74 -121
  206. package/src/wizard/components/WizardError.js +57 -0
  207. package/src/wizard/index.js +133 -0
  208. package/src/wizard/store/index.js +126 -0
  209. package/src/wizard/store/utils.js +16 -0
  210. package/dist/cjs/button-group/index.js +0 -57
  211. package/dist/cjs/button-group/style.scss +0 -68
  212. package/dist/cjs/checkbox-control/index.js +0 -63
  213. package/dist/cjs/checkbox-control/style.scss +0 -78
  214. package/dist/cjs/preview-box/index.js +0 -36
  215. package/dist/cjs/preview-box/style.scss +0 -18
  216. package/dist/cjs/textarea-control/index.js +0 -54
  217. package/dist/cjs/textarea-control/style.scss +0 -76
  218. package/dist/cjs/toggle-control/index.js +0 -58
  219. package/dist/cjs/toggle-control/style.scss +0 -74
  220. package/dist/cjs/toggle-group/index.js +0 -71
  221. package/dist/cjs/toggle-group/style.scss +0 -28
  222. package/dist/cjs/wizard-pagination/index.js +0 -71
  223. package/dist/cjs/wizard-pagination/style.scss +0 -74
  224. package/dist/esm/button-group/index.js +0 -43
  225. package/dist/esm/button-group/style.scss +0 -68
  226. package/dist/esm/checkbox-control/index.js +0 -49
  227. package/dist/esm/checkbox-control/style.scss +0 -78
  228. package/dist/esm/preview-box/index.js +0 -30
  229. package/dist/esm/preview-box/style.scss +0 -18
  230. package/dist/esm/textarea-control/index.js +0 -40
  231. package/dist/esm/textarea-control/style.scss +0 -76
  232. package/dist/esm/toggle-control/index.js +0 -44
  233. package/dist/esm/toggle-control/style.scss +0 -74
  234. package/dist/esm/toggle-group/index.js +0 -58
  235. package/dist/esm/toggle-group/style.scss +0 -28
  236. package/dist/esm/wizard-pagination/index.js +0 -57
  237. package/dist/esm/wizard-pagination/style.scss +0 -74
  238. package/src/button-group/index.js +0 -35
  239. package/src/button-group/style.scss +0 -68
  240. package/src/checkbox-control/index.js +0 -38
  241. package/src/checkbox-control/style.scss +0 -78
  242. package/src/preview-box/index.js +0 -18
  243. package/src/preview-box/style.scss +0 -18
  244. package/src/textarea-control/index.js +0 -32
  245. package/src/textarea-control/style.scss +0 -76
  246. package/src/toggle-control/index.js +0 -38
  247. package/src/toggle-control/style.scss +0 -74
  248. package/src/toggle-group/index.js +0 -43
  249. package/src/toggle-group/style.scss +0 -28
  250. package/src/wizard-pagination/index.js +0 -59
  251. package/src/wizard-pagination/style.scss +0 -74
@@ -3,166 +3,54 @@
3
3
  */
4
4
 
5
5
  @import '../../../shared/scss/colors';
6
- @import '~@wordpress/base-styles/colors';
7
6
 
8
7
  .newspack-modal {
9
- background: white;
10
- border: 0;
11
- color: $gray-700;
12
- font-size: 14px;
13
- line-height: 24px;
14
- margin: auto;
15
- max-height: 100%;
16
- width: 100%;
17
-
18
- @media screen and ( min-width: 600px ) {
19
- border-radius: 3px;
20
- max-width: 80%;
21
- max-width: calc( 100% - 64px );
22
- }
8
+ // Color
9
+ --wp-admin-theme-color: #{$primary-500};
10
+ --wp-admin-theme-color--rgb: #{$primary-500--rgb};
11
+ --wp-admin-theme-color-darker-10: #{$primary-600};
12
+ --wp-admin-theme-color-darker-10--rgb: #{$primary-600--rgb};
13
+ --wp-admin-theme-color-darker-20: #{$primary-700};
14
+ --wp-admin-theme-color-darker-20--rgb: #{$primary-700--rgb};
23
15
 
24
16
  @media screen and ( min-width: 744px ) {
25
17
  max-width: 680px;
18
+ width: 680px;
26
19
 
27
20
  &--wide {
28
21
  max-width: 1168px;
22
+ width: 1168px;
29
23
  }
30
24
  }
31
25
 
32
26
  &--narrow {
33
27
  max-width: 360px;
28
+ width: 360px;
34
29
  }
35
30
 
36
- // Header
37
-
38
- .components-modal__header {
39
- align-items: flex-start;
40
- background: white;
41
- border: 0;
42
- height: auto;
43
- justify-content: flex-end;
44
- margin: 0 -32px 0;
45
- padding: 32px 32px 0;
46
- position: relative;
47
-
48
- .components-modal__header-heading-container {
49
- display: block;
50
- margin-right: 16px;
51
- }
52
-
53
- .components-button.has-icon {
54
- flex: 0 0 36px;
55
- left: 0;
56
- margin: -2px 0;
57
-
58
- &:hover,
59
- &[aria-expended='true'] {
60
- color: $primary-500;
61
- }
62
-
63
- &:focus:not( :disabled ) {
64
- box-shadow: 0 0 0 2px $primary-500;
65
- }
66
-
67
- svg {
68
- width: 24px;
69
- height: 24px;
70
-
71
- + span {
72
- display: none;
73
- }
74
- }
75
- }
76
-
77
- .components-modal__header-heading {
78
- color: $gray-900;
79
- font-size: 21px;
80
- font-weight: bold;
81
- line-height: 32px;
82
- }
83
- }
84
-
85
- // Content
86
-
87
- .components-modal__content {
88
- padding: 0 32px;
89
- margin: 0;
90
-
91
- &::before {
92
- display: none;
93
- }
94
- }
95
-
96
- // Typography
97
-
98
- h2,
99
- p {
100
- line-height: 24px;
101
- margin: 32px 0;
102
- padding: 0;
103
- }
104
-
105
- h2 {
106
- color: $gray-900;
107
- font-size: 17px;
108
- font-weight: bold;
109
- }
110
-
111
- p {
112
- font-size: 14px;
113
-
114
- &.is-dark {
115
- color: $gray-900;
116
- }
117
- }
118
-
119
- // Thematic Break
120
-
121
- hr {
122
- background: $gray-300;
123
- border: 0;
124
- height: 1px;
125
- margin: 48px -48px;
126
-
127
- @media screen and ( min-width: 744px ) {
128
- margin: 64px -64px;
129
- }
31
+ @media screen and ( min-width: 960px ) {
32
+ max-height: calc( 100% - 128px );
130
33
  }
131
34
 
132
35
  // Links
133
-
134
36
  a {
135
- color: $primary-500;
37
+ color: var( --wp-admin-theme-color );
136
38
 
137
39
  &:active,
138
40
  &:focus,
139
41
  &:hover {
140
- color: $primary-600;
141
- text-decoration: none;
42
+ color: var( --wp-admin-theme-color-darker-10 );
142
43
  }
143
44
 
144
45
  &:focus {
145
- box-shadow: none;
146
- outline: 2px solid $primary-500;
147
- outline-offset: 2px;
46
+ box-shadow: 0 0 0 var( --wp-admin-border-width-focus ) var( --wp-admin-theme-color );
47
+ outline: 3px solid transparent;
148
48
  }
149
49
  }
150
- }
151
-
152
- // Overlay
153
50
 
154
- .newspack-modal__overlay {
155
- background: rgba( black, 0.7 );
156
- }
157
-
158
- // Small Screens
159
-
160
- @media ( max-width: 599px ) {
161
- .newspack-modal {
162
- top: auto;
163
-
164
- .components-modal__content {
165
- height: auto;
51
+ .components-modal__content {
52
+ > *:last-child {
53
+ margin-bottom: 8px;
166
54
  }
167
55
  }
168
56
  }
@@ -26,9 +26,11 @@ class NewspackIcon extends Component {
26
26
  render() {
27
27
  const {
28
28
  className,
29
- size
29
+ simple,
30
+ size,
31
+ white
30
32
  } = this.props;
31
- const classes = classnames('newspack-icon', className);
33
+ const classes = classnames('newspack-icon', simple && 'newspack-icon--simple', white && 'newspack-icon--white', className);
32
34
  return _jsx(SVG, {
33
35
  xmlns: "http://www.w3.org/2000/svg",
34
36
  height: size,
@@ -8,4 +8,19 @@
8
8
  background: $primary-500;
9
9
  fill: white;
10
10
  padding: 12px;
11
+
12
+ &--white {
13
+ background: white;
14
+ fill: $primary-500;
15
+ }
16
+
17
+ &--simple {
18
+ background: none;
19
+ fill: $primary-500;
20
+ padding: 0;
21
+ }
22
+
23
+ &#{&}--simple#{&}--white {
24
+ fill: white;
25
+ }
11
26
  }
@@ -6,11 +6,13 @@
6
6
  * WordPress dependencies.
7
7
  */
8
8
  import { Component, RawHTML } from '@wordpress/element';
9
- import { Icon, check, help, info } from '@wordpress/icons';
9
+ import { Icon, bug, check, help, info } from '@wordpress/icons';
10
+ import { __ as alias__ } from '@wordpress/i18n';
10
11
  /**
11
12
  * Internal dependencies.
12
13
  */
13
14
 
15
+ const __ = alias__;
14
16
  import './style.scss';
15
17
  /**
16
18
  * External dependencies.
@@ -27,6 +29,7 @@ class Notice extends Component {
27
29
  render() {
28
30
  const {
29
31
  className,
32
+ debugMode,
30
33
  isError,
31
34
  isHelp,
32
35
  isSuccess,
@@ -36,13 +39,15 @@ class Notice extends Component {
36
39
  style = {},
37
40
  children = null
38
41
  } = this.props;
39
- const classes = classnames('newspack-notice', className, isError && 'newspack-notice__is-error', isHelp && 'newspack-notice__is-help', isSuccess && 'newspack-notice__is-success', isWarning && 'newspack-notice__is-warning');
42
+ const classes = classnames('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');
40
43
  let noticeIcon;
41
44
 
42
45
  if (isHelp) {
43
46
  noticeIcon = help;
44
47
  } else if (isSuccess) {
45
48
  noticeIcon = check;
49
+ } else if (debugMode) {
50
+ noticeIcon = bug;
46
51
  } else {
47
52
  noticeIcon = info;
48
53
  }
@@ -56,7 +61,7 @@ class Notice extends Component {
56
61
  className: "newspack-notice__content",
57
62
  children: [rawHTML ? _jsx(RawHTML, {
58
63
  children: noticeText
59
- }) : noticeText, children || null]
64
+ }) : noticeText, debugMode && __('Debug Mode', 'newspack'), children || null]
60
65
  })]
61
66
  });
62
67
  }
@@ -6,14 +6,11 @@
6
6
  @import '../../../shared/scss/colors';
7
7
 
8
8
  .newspack-notice {
9
- align-items: flex-start;
9
+ align-items: center;
10
10
  background: $gray-100;
11
- border-radius: 3px;
12
11
  color: $gray-900;
13
12
  display: flex;
14
- font-size: 14px;
15
13
  justify-content: flex-start;
16
- line-height: 24px;
17
14
  margin: 32px 0;
18
15
  padding: 6px 8px;
19
16
 
@@ -24,8 +21,25 @@
24
21
  margin-right: 4px;
25
22
  }
26
23
 
24
+ &__is-debug {
25
+ background: $primary-700;
26
+ border-radius: 2px;
27
+ bottom: 16px;
28
+ box-shadow: 0 0 8px 4px rgba( black, 0.08 );
29
+ color: white;
30
+ font-weight: bold;
31
+ margin: 0 16px;
32
+ position: fixed;
33
+ text-transform: uppercase;
34
+ z-index: 9997;
35
+
36
+ > svg {
37
+ fill: white;
38
+ }
39
+ }
40
+
27
41
  &__is-error {
28
- background: lighten( $alert-red, 54% );
42
+ background: lighten( $alert-red, 51% );
29
43
 
30
44
  > svg {
31
45
  fill: $alert-red;
@@ -34,7 +48,7 @@
34
48
  }
35
49
 
36
50
  &__is-help {
37
- background: $primary-000;
51
+ background: $primary-050;
38
52
 
39
53
  > svg {
40
54
  fill: $primary-500;
@@ -42,7 +56,7 @@
42
56
  }
43
57
 
44
58
  &__is-success {
45
- background: lighten( $alert-green, 47% );
59
+ background: lighten( $alert-green, 42% );
46
60
 
47
61
  > svg {
48
62
  fill: $alert-green;
@@ -50,7 +64,7 @@
50
64
  }
51
65
 
52
66
  &__is-warning {
53
- background: lighten( $alert-yellow, 36% );
67
+ background: lighten( $alert-yellow, 30% );
54
68
 
55
69
  > svg {
56
70
  fill: $alert-yellow;
@@ -58,9 +72,23 @@
58
72
  }
59
73
  }
60
74
 
61
- &__content {
75
+ & &__content {
62
76
  > div > * {
63
- margin: 0;
77
+ margin: 0 !important;
78
+ }
79
+
80
+ a {
81
+ color: inherit;
82
+
83
+ &:active,
84
+ &:focus,
85
+ &:hover {
86
+ color: inherit;
87
+ }
88
+
89
+ &:focus {
90
+ box-shadow: 0 0 0 var( --wp-admin-border-width-focus ) currentColor;
91
+ }
64
92
  }
65
93
  }
66
94
 
@@ -33,6 +33,7 @@ import classnames from 'classnames';
33
33
 
34
34
  import { jsx as _jsx } from "@emotion/react/jsx-runtime";
35
35
  import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
36
+ import { Fragment as _Fragment } from "@emotion/react/jsx-runtime";
36
37
 
37
38
  class PluginInstaller extends Component {
38
39
  constructor() {
@@ -111,6 +112,7 @@ class PluginInstaller extends Component {
111
112
  const {
112
113
  pluginInfo
113
114
  } = this.state;
115
+ this.props.onInstalled(slug);
114
116
  this.updatePluginInfo({ ...pluginInfo,
115
117
  [slug]: { ...response,
116
118
  installationStatus: PLUGIN_STATE_ACTIVE
@@ -215,7 +217,7 @@ class PluginInstaller extends Component {
215
217
  const plugin = pluginInfo[slug];
216
218
  return plugin.Status !== 'active' && plugin.installationStatus === PLUGIN_STATE_NONE;
217
219
  });
218
- return _jsxs("div", {
220
+ return _jsxs(_Fragment, {
219
221
  children: [(!pluginInfo || !Object.keys(pluginInfo).length) && _jsxs("div", {
220
222
  className: "newspack-plugin-installer_is-waiting",
221
223
  children: [_jsx(Waiting, {
@@ -291,6 +293,7 @@ class PluginInstaller extends Component {
291
293
  }
292
294
 
293
295
  PluginInstaller.defaultProps = {
294
- onStatus: () => {}
296
+ onStatus: () => {},
297
+ onInstalled: () => {}
295
298
  };
296
299
  export default PluginInstaller;
@@ -6,18 +6,25 @@
6
6
  * WordPress dependencies
7
7
  */
8
8
  import { Fragment } from '@wordpress/element';
9
+ import { applyFilters } from '@wordpress/hooks';
9
10
  import { __ as alias__ } from '@wordpress/i18n';
11
+ const __ = alias__;
12
+ import { CheckboxControl } from '@wordpress/components';
10
13
  /**
11
14
  * Internal dependencies
12
15
  */
13
16
 
14
- const __ = alias__;
15
- import { ActionCard, Grid, Button, TextControl, CheckboxControl, SelectControl } from '../';
17
+ import { ActionCard, Button, Grid, Notice, SelectControl, TextControl } from '../';
18
+ import './style.scss';
16
19
  import { jsx as _jsx } from "@emotion/react/jsx-runtime";
17
20
  import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
18
21
 
22
+ const isSelectControl = setting => {
23
+ return Array.isArray(setting.options) && setting.options.length;
24
+ };
25
+
19
26
  const getControlComponent = setting => {
20
- if (Array.isArray(setting.options) && setting.options.length) {
27
+ if (isSelectControl(setting)) {
21
28
  return SelectControl;
22
29
  }
23
30
 
@@ -43,13 +50,22 @@ const getControlType = setting => {
43
50
  case 'text':
44
51
  return 'text';
45
52
 
53
+ case 'password':
54
+ return 'password';
55
+
56
+ case 'boolean':
57
+ case 'checkbox':
58
+ return 'checkbox';
59
+
46
60
  default:
47
61
  return null;
48
62
  }
49
63
  };
50
64
 
51
- const SettingsSection = _ref => {
52
- let {
65
+ const SettingsSection = props => {
66
+ const {
67
+ error,
68
+ sectionKey,
53
69
  active,
54
70
  title,
55
71
  description,
@@ -57,61 +73,73 @@ const SettingsSection = _ref => {
57
73
  disabled,
58
74
  onChange,
59
75
  onUpdate
60
- } = _ref;
61
-
62
- const getControlProps = setting => {
63
- var _setting$options;
64
-
65
- return {
66
- disabled,
67
- name: `${setting.section}_${setting.key}`,
68
- type: getControlType(setting),
69
- label: setting.description,
70
- help: setting.help || null,
71
- options: ((_setting$options = setting.options) === null || _setting$options === void 0 ? void 0 : _setting$options.map(option => ({
72
- value: option.value,
73
- label: option.name
74
- }))) || null,
75
- value: setting.value,
76
- checked: setting.type === 'boolean' ? !!setting.value : null,
77
- onChange: value => {
78
- onChange(setting.key, value);
79
- }
80
- };
76
+ } = props;
77
+
78
+ const getControlProps = setting => ({
79
+ disabled,
80
+ name: `${setting.section}_${setting.key}`,
81
+ type: getControlType(setting),
82
+ label: setting.description,
83
+ help: setting.help || null,
84
+ options: setting.options?.map(option => ({
85
+ value: option.value,
86
+ label: option.name || option.label
87
+ })) || null,
88
+ value: setting.value,
89
+ multiple: isSelectControl(setting) && setting.multiple ? true : null,
90
+ checked: setting.type === 'boolean' ? !!setting.value : null,
91
+ onChange: value => {
92
+ onChange(setting.key, value);
93
+ }
94
+ });
95
+
96
+ const createFilter = function (name) {
97
+ let defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
98
+ return applyFilters(`newspack.settingSection.${sectionKey}.${name}`, defaultComponent, props);
81
99
  };
82
100
 
101
+ let columns = 2;
102
+
103
+ if (fields.length % 3 === 0) {
104
+ columns = 3;
105
+ } else if (fields.length === 1) {
106
+ columns = 1;
107
+ }
108
+
83
109
  return _jsx(ActionCard, {
84
110
  isMedium: true,
85
111
  disabled: disabled,
86
112
  title: title,
87
113
  description: description,
88
114
  toggleChecked: active,
89
- hasGreyHeader: active !== null,
90
- toggleOnChange: value => onUpdate({
115
+ hasGreyHeader: active || null === active,
116
+ toggleOnChange: active !== null ? value => onUpdate({
91
117
  active: value
92
- }),
118
+ }) : null,
119
+ actionContent: (active || null === active) && createFilter('buttons', _jsx(Button, {
120
+ variant: "primary",
121
+ disabled: disabled,
122
+ onClick: () => {
123
+ onUpdate();
124
+ },
125
+ children: __('Save Settings', 'newspack')
126
+ })),
93
127
  children: (active || active === null) && _jsxs(Fragment, {
94
- children: [_jsx(Grid, {
95
- columns: fields.length % 3 === 0 ? 3 : 2,
128
+ children: [error?.message && _jsx(Notice, {
129
+ noticeText: error.message,
130
+ isError: true
131
+ }), createFilter('beforeControls'), _jsx(Grid, {
132
+ columns: columns,
96
133
  gutter: 32,
97
134
  children: fields.map(setting => {
98
135
  const Control = getControlComponent(setting); // eslint-disable-line @wordpress/no-unused-vars-before-return, no-unused-vars
99
136
 
100
- return _jsx(Control, { ...getControlProps(setting)
101
- }, setting.key);
102
- })
103
- }), _jsx("div", {
104
- className: "newspack-buttons-card",
105
- style: {
106
- margin: '32px 0 0'
107
- },
108
- children: _jsx(Button, {
109
- isPrimary: true,
110
- disabled: disabled,
111
- onClick: () => {
112
- onUpdate();
113
- },
114
- children: __('Save settings', 'newspack')
137
+ return applyFilters(`newspack.settingsSection.${sectionKey}.control`, _jsx(Control, { ...getControlProps(setting)
138
+ }, setting.key), {
139
+ sectionKey,
140
+ setting,
141
+ onChange
142
+ });
115
143
  })
116
144
  })]
117
145
  })