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
@@ -2,11 +2,12 @@
2
2
  * Action Card
3
3
  */
4
4
 
5
- @import '~@wordpress/base-styles/colors';
5
+ @use 'sass:color';
6
+ @use '~@wordpress/base-styles/colors' as wp-colors;
6
7
 
7
8
  .newspack-card.newspack-action-card {
8
9
  padding: 0;
9
- border-color: $gray-300;
10
+ border-color: wp-colors.$gray-300;
10
11
 
11
12
  // Clickable
12
13
 
@@ -25,7 +26,7 @@
25
26
  &.newspack-card__is-secondary,
26
27
  &.newspack-card__is-supported,
27
28
  &.newspack-card__is-unsupported {
28
- box-shadow: inset 4px 0 0 $gray-100;
29
+ box-shadow: inset 4px 0 0 wp-colors.$gray-100;
29
30
 
30
31
  .newspack-action-card__region-top {
31
32
  padding-left: 28px;
@@ -37,15 +38,15 @@
37
38
  }
38
39
 
39
40
  &.newspack-card__is-secondary {
40
- box-shadow: inset 4px 0 0 $alert-yellow;
41
+ box-shadow: inset 4px 0 0 wp-colors.$alert-yellow;
41
42
  }
42
43
 
43
44
  &.newspack-card__is-supported {
44
- box-shadow: inset 4px 0 0 $alert-green;
45
+ box-shadow: inset 4px 0 0 wp-colors.$alert-green;
45
46
  }
46
47
 
47
48
  &.newspack-card__is-unsupported {
48
- box-shadow: inset 4px 0 0 $alert-red;
49
+ box-shadow: inset 4px 0 0 wp-colors.$alert-red;
49
50
  }
50
51
 
51
52
  // Small
@@ -83,18 +84,18 @@
83
84
  }
84
85
 
85
86
  &.mv0 {
86
- border-left-color: $gray-300;
87
+ border-left-color: wp-colors.$gray-300;
87
88
  border-radius: 0;
88
- border-right-color: $gray-300;
89
+ border-right-color: wp-colors.$gray-300;
89
90
 
90
91
  &:first-of-type {
91
- border-top-color: $gray-300;
92
+ border-top-color: wp-colors.$gray-300;
92
93
  border-top-left-radius: 3px;
93
94
  border-top-right-radius: 3px;
94
95
  }
95
96
 
96
97
  &:last-of-type {
97
- border-bottom-color: $gray-300;
98
+ border-bottom-color: wp-colors.$gray-300;
98
99
  border-bottom-left-radius: 3px;
99
100
  border-bottom-right-radius: 3px;
100
101
  }
@@ -141,7 +142,25 @@
141
142
  }
142
143
 
143
144
  .newspack-action-card__region-children {
144
- padding: 0 32px 32px 32px;
145
+ padding: 0 32px 32px;
146
+ }
147
+ }
148
+
149
+ // Nested children
150
+
151
+ &.newspack-card--has-children {
152
+ .newspack-action-card {
153
+ &:first-child {
154
+ margin-top: 32px;
155
+ }
156
+
157
+ + .newspack-action-card {
158
+ margin-top: 16px !important;
159
+ }
160
+
161
+ &:last-child {
162
+ margin-bottom: 0;
163
+ }
145
164
  }
146
165
  }
147
166
 
@@ -152,7 +171,12 @@
152
171
 
153
172
  &.newspack-card--has-children {
154
173
  .newspack-action-card__region-top {
155
- border-bottom: 1px solid $gray-300;
174
+ border-bottom: 1px solid wp-colors.$gray-300;
175
+ }
176
+
177
+ .is-small > .newspack-action-card__region-top {
178
+ padding-bottom: 8px;
179
+ padding-top: 8px;
156
180
  }
157
181
  }
158
182
 
@@ -162,11 +186,18 @@
162
186
 
163
187
  .newspack-action-card__region-center {
164
188
  p {
165
- color: darken( $gray-700, 0.75% );
189
+ color: color.adjust( wp-colors.$gray-700, $lightness: -0.75% );
166
190
  }
167
191
  }
168
192
  }
169
193
 
194
+ &.newspack-card--has-white-header {
195
+ .newspack-action-card__region-top {
196
+ background-color: transparent;
197
+ border: none !important;
198
+ }
199
+ }
200
+
170
201
  // Indent
171
202
 
172
203
  &.newspack-card--indent {
@@ -174,17 +205,14 @@
174
205
  position: relative;
175
206
 
176
207
  &::before {
177
- border: 0 solid $gray-300;
208
+ border: 0 solid wp-colors.$gray-300;
178
209
  border-left-width: 1px;
179
210
  border-bottom-width: 1px;
180
211
  border-radius: 0 0 0 2px;
181
- bottom: 50%;
182
212
  content: '';
183
213
  display: block;
184
- left: -28px;
185
214
  position: absolute;
186
- right: 100%;
187
- top: -17px;
215
+ inset: -17px 100% 50% -28px;
188
216
  }
189
217
  }
190
218
 
@@ -258,7 +286,7 @@
258
286
  }
259
287
 
260
288
  .newspack-action-card__region-children {
261
- padding: 0 24px 24px 24px;
289
+ padding: 0 24px 24px;
262
290
 
263
291
  &__inner {
264
292
  padding-top: 32px;
@@ -304,7 +332,7 @@
304
332
  }
305
333
 
306
334
  p {
307
- color: $gray-700;
335
+ color: wp-colors.$gray-700;
308
336
  }
309
337
  }
310
338
 
@@ -347,6 +375,12 @@
347
375
  margin-top: 0;
348
376
  }
349
377
  }
378
+
379
+ &.newspack-action-card__region-children {
380
+ .newspack-notice {
381
+ margin-top: 32px;
382
+ }
383
+ }
350
384
  }
351
385
 
352
386
  // Image
@@ -369,9 +403,9 @@
369
403
  // Badge
370
404
 
371
405
  .newspack-action-card__badge {
372
- background: $gray-100;
406
+ background: wp-colors.$gray-100;
373
407
  border-radius: 2px;
374
- color: $gray-900;
408
+ color: wp-colors.$gray-900;
375
409
  display: block;
376
410
  flex: 0 0 auto;
377
411
  font-size: 10px;
@@ -392,6 +426,49 @@
392
426
  font-style: italic;
393
427
  }
394
428
 
429
+ // Expandable card children
430
+
431
+ &.is-expandable {
432
+ .newspack-action-card__title .components-button.is-link {
433
+ color: inherit;
434
+ font-size: inherit;
435
+ font-weight: inherit;
436
+ text-decoration: inherit;
437
+ }
438
+
439
+ .newspack-action-card__region-children {
440
+ border-top: 1px solid wp-colors.$gray-100;
441
+ padding-top: 24px;
442
+ }
443
+
444
+ &.is-medium .newspack-action-card__region-children {
445
+ padding-top: 32px;
446
+ }
447
+
448
+ &.has-checkbox {
449
+ .newspack-action-card__region-children {
450
+ padding-left: 72px;
451
+ }
452
+
453
+ &.is-small .newspack-action-card__region-children {
454
+ padding-left: 64px;
455
+ }
456
+
457
+ &.is-medium .newspack-action-card__region-children {
458
+ padding-left: 56px;
459
+ }
460
+ }
461
+ }
462
+
463
+ // Action content with multiple buttons
464
+ &.has-action-content .newspack-action-card__region-right {
465
+ flex-direction: row;
466
+
467
+ .components-button + .components-button {
468
+ margin-left: 8px;
469
+ }
470
+ }
471
+
395
472
  // Multiple Cards
396
473
 
397
474
  & + & {
@@ -401,6 +478,6 @@
401
478
 
402
479
  .newspack-card {
403
480
  .newspack-card.newspack-action-card {
404
- border: 1px solid $gray-200;
481
+ border: 1px solid wp-colors.$gray-200;
405
482
  }
406
483
  }
@@ -1,31 +1,31 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
-
3
2
  /**
4
3
  * External dependencies
5
4
  */
6
- import { debounce } from 'lodash';
5
+ import debounce from 'lodash/debounce';
6
+
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
-
11
10
  import { Component } from '@wordpress/element';
12
11
  import { FormTokenField, Spinner } from '@wordpress/components';
12
+
13
13
  /**
14
14
  * Internal dependencies
15
15
  */
16
-
17
16
  import './style.scss';
17
+
18
18
  /**
19
19
  * An multi-selecting, api-driven autocomplete input suitable for use in block attributes.
20
20
  */
21
-
22
21
  import { jsx as _jsx } from "@emotion/react/jsx-runtime";
23
22
  import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
24
-
25
23
  class AutocompleteTokenField extends Component {
26
24
  constructor(props) {
27
25
  super(props);
28
-
26
+ /**
27
+ * If the component has tokens passed in props, it should fetch info after it mounts.
28
+ */
29
29
  _defineProperty(this, "isFetchingInfoOnLoad", () => {
30
30
  const {
31
31
  tokens,
@@ -33,7 +33,6 @@ class AutocompleteTokenField extends Component {
33
33
  } = this.props;
34
34
  return Boolean(tokens.length && fetchSavedInfo);
35
35
  });
36
-
37
36
  this.state = {
38
37
  suggestions: [],
39
38
  validValues: {},
@@ -41,11 +40,6 @@ class AutocompleteTokenField extends Component {
41
40
  };
42
41
  this.debouncedUpdateSuggestions = debounce(this.updateSuggestions, 500);
43
42
  }
44
- /**
45
- * If the component has tokens passed in props, it should fetch info after it mounts.
46
- */
47
-
48
-
49
43
  /**
50
44
  * When the component loads, fetch information about the tokens so we can populate
51
45
  * the tokens with the correct labels.
@@ -70,23 +64,21 @@ class AutocompleteTokenField extends Component {
70
64
  });
71
65
  }
72
66
  }
67
+
73
68
  /**
74
69
  * Clean up any unfinished autocomplete api call requests.
75
70
  */
76
-
77
-
78
71
  componentWillUnmount() {
79
72
  delete this.suggestionsRequest;
80
73
  this.debouncedUpdateSuggestions.cancel();
81
74
  }
75
+
82
76
  /**
83
77
  * Get a list of labels for input values.
84
78
  *
85
79
  * @param {Array} values Array of values (ids, etc.).
86
80
  * @return {Array} array of valid labels corresponding to the values.
87
81
  */
88
-
89
-
90
82
  getLabelsForValues(values) {
91
83
  const {
92
84
  validValues
@@ -95,31 +87,26 @@ class AutocompleteTokenField extends Component {
95
87
  if (!value) {
96
88
  return accumulator;
97
89
  }
98
-
99
90
  if (value.label) {
100
91
  return [...accumulator, value.label];
101
92
  }
102
-
103
93
  return validValues[value] ? [...accumulator, validValues[value]] : accumulator;
104
94
  }, []);
105
95
  }
96
+
106
97
  /**
107
98
  * Get a list of values for input labels.
108
99
  *
109
100
  * @param {Array} labels Array of labels from the tokens.
110
101
  * @return {Array} Array of valid values corresponding to the labels.
111
102
  */
112
-
113
-
114
103
  getValuesForLabels(labels) {
115
104
  const {
116
105
  returnFullObjects
117
106
  } = this.props; // If this prop is passed, return both the value and label. Otherwise, return just the label.
118
-
119
107
  const {
120
108
  validValues
121
109
  } = this.state;
122
-
123
110
  if (returnFullObjects) {
124
111
  return labels.reduce((acc, label) => {
125
112
  Object.keys(validValues).forEach(key => {
@@ -133,25 +120,21 @@ class AutocompleteTokenField extends Component {
133
120
  return acc;
134
121
  }, []);
135
122
  }
136
-
137
123
  return labels.map(label => Object.keys(validValues).find(key => validValues[key] === label));
138
124
  }
125
+
139
126
  /**
140
127
  * Refresh the autocomplete dropdown.
141
128
  *
142
129
  * @param {string} input Input to fetch suggestions for
143
130
  */
144
-
145
-
146
131
  updateSuggestions(input) {
147
132
  const {
148
133
  fetchSuggestions
149
134
  } = this.props;
150
-
151
135
  if (!fetchSuggestions) {
152
136
  return;
153
137
  }
154
-
155
138
  this.setState({
156
139
  loading: true
157
140
  }, () => {
@@ -163,7 +146,6 @@ class AutocompleteTokenField extends Component {
163
146
  if (this.suggestionsRequest !== request) {
164
147
  return;
165
148
  }
166
-
167
149
  const currentSuggestions = [...suggestions];
168
150
  const currentValidValues = {};
169
151
  suggestions.forEach(suggestion => {
@@ -184,37 +166,34 @@ class AutocompleteTokenField extends Component {
184
166
  this.suggestionsRequest = request;
185
167
  });
186
168
  }
169
+
187
170
  /**
188
171
  * When a token is selected, we need to convert the string label into a recognized value suitable for saving as an attribute.
189
172
  *
190
173
  * @param {Array} tokenStrings An array of token label strings.
191
174
  */
192
-
193
-
194
175
  handleOnChange(tokenStrings) {
195
176
  const {
196
177
  onChange
197
178
  } = this.props;
198
179
  onChange(this.getValuesForLabels(tokenStrings));
199
180
  }
181
+
200
182
  /**
201
183
  * To populate the tokens, we need to convert the values into a human-readable label.
202
184
  *
203
185
  * @return {Array} An array of token label strings.
204
186
  */
205
-
206
-
207
187
  getTokens() {
208
188
  const {
209
189
  tokens
210
190
  } = this.props;
211
191
  return this.getLabelsForValues(tokens);
212
192
  }
193
+
213
194
  /**
214
195
  * Render.
215
196
  */
216
-
217
-
218
197
  render() {
219
198
  const {
220
199
  help,
@@ -240,7 +219,5 @@ class AutocompleteTokenField extends Component {
240
219
  })]
241
220
  });
242
221
  }
243
-
244
222
  }
245
-
246
223
  export default AutocompleteTokenField;
@@ -2,7 +2,7 @@
2
2
  * Autocomplete Token Field
3
3
  */
4
4
 
5
- @import '~@wordpress/base-styles/colors';
5
+ @use '~@wordpress/base-styles/colors' as wp-colors;
6
6
 
7
7
  .newspack-autocomplete-tokenfield {
8
8
  position: relative;
@@ -27,7 +27,7 @@
27
27
  }
28
28
 
29
29
  .newspack-autocomplete-tokenfield__help {
30
- color: $gray-700;
30
+ color: wp-colors.$gray-700;
31
31
  font-size: inherit;
32
32
  margin-top: 0;
33
33
  }