newspack-components 2.2.1 → 3.0.0-alpha.2

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 (308) hide show
  1. package/babel.config.js +25 -0
  2. package/copy-styles.js +2 -10
  3. package/dist/{cjs/accordion → accordion}/index.js +17 -13
  4. package/dist/{cjs/accordion → accordion}/style.scss +7 -3
  5. package/dist/{cjs/action-card → action-card}/index.js +39 -43
  6. package/dist/{esm/action-card → action-card}/style.scss +9 -9
  7. package/dist/{cjs/autocomplete-tokenfield → autocomplete-tokenfield}/index.js +67 -29
  8. package/dist/{esm/autocomplete-tokenfield → autocomplete-tokenfield}/style.scss +14 -8
  9. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/index.js +61 -73
  10. package/dist/{esm/autocomplete-with-suggestions → autocomplete-with-suggestions}/style.scss +9 -17
  11. package/dist/button/index.js +51 -0
  12. package/{src/button/index.js → dist/button/index.tsx} +12 -5
  13. package/dist/{cjs/button → button}/style.scss +1 -1
  14. package/dist/{cjs/button-card → button-card}/index.js +9 -10
  15. package/dist/{cjs/button-card → button-card}/style.scss +19 -13
  16. package/dist/{cjs/card → card}/index.js +4 -5
  17. package/dist/{esm/card → card}/style.scss +1 -1
  18. package/dist/{cjs/category-autocomplete → category-autocomplete}/index.js +51 -53
  19. package/dist/{esm/category-autocomplete → category-autocomplete}/style.scss +2 -2
  20. package/dist/{cjs/color-picker → color-picker}/index.js +14 -16
  21. package/dist/{cjs/color-picker → color-picker}/style.scss +3 -3
  22. package/dist/consts.js +7 -0
  23. package/dist/{cjs/custom-select-control → custom-select-control}/index.js +4 -5
  24. package/dist/{cjs/custom-select-control → custom-select-control}/style.scss +11 -10
  25. package/dist/{cjs/date-range-picker → date-range-picker}/index.js +9 -11
  26. package/dist/{cjs/date-range-picker → date-range-picker}/style.scss +6 -6
  27. package/dist/{cjs/footer → footer}/index.js +33 -36
  28. package/dist/{cjs/footer → footer}/style.scss +1 -1
  29. package/dist/{cjs/form-token-field → form-token-field}/index.js +6 -7
  30. package/dist/{esm/form-token-field → form-token-field}/style.scss +1 -1
  31. package/dist/{cjs/global-notices → global-notices}/index.js +4 -5
  32. package/dist/grid/index.js +44 -0
  33. package/dist/grid/index.tsx +34 -0
  34. package/dist/{cjs/grid → grid}/style.scss +9 -9
  35. package/dist/{cjs/handoff → handoff}/index.js +73 -71
  36. package/dist/{cjs/handoff-message → handoff-message}/index.js +5 -3
  37. package/dist/hooks/index.js +29 -0
  38. package/{src/hooks/index.js → dist/hooks/index.ts} +1 -1
  39. package/dist/{cjs/hooks → hooks}/useObjectState.js +2 -3
  40. package/dist/{cjs/hooks → hooks}/useObjectState.test.js +9 -9
  41. package/dist/{cjs/hooks → hooks}/useOnClickOutside.js +1 -2
  42. package/dist/hooks/usePrompt.js +47 -0
  43. package/{src/hooks/usePrompt.js → dist/hooks/usePrompt.ts} +4 -8
  44. package/dist/image-upload/index.js +148 -0
  45. package/dist/{cjs/image-upload → image-upload}/index.test.js +13 -6
  46. package/dist/{esm/image-upload → image-upload}/style.scss +5 -5
  47. package/dist/{cjs/index.js → index.js} +1 -1
  48. package/dist/{cjs/info-button → info-button}/index.js +6 -7
  49. package/dist/{cjs/modal → modal}/index.js +4 -5
  50. package/dist/{esm/modal → modal}/style.scss +5 -5
  51. package/dist/{cjs/newspack-icon → newspack-icon}/index.js +5 -6
  52. package/dist/{cjs/newspack-icon → newspack-icon}/style.scss +1 -1
  53. package/dist/{cjs/newspack-logo → newspack-logo}/index.js +5 -6
  54. package/dist/{cjs/newspack-logo → newspack-logo}/style.scss +1 -1
  55. package/dist/{cjs/notice → notice}/index.js +12 -10
  56. package/dist/{cjs/notice → notice}/style.scss +11 -11
  57. package/dist/patrons-logo/index.js +77 -0
  58. package/dist/plugin-installer/index.js +297 -0
  59. package/dist/{cjs/plugin-installer → plugin-installer}/style.scss +1 -1
  60. package/dist/{cjs/plugin-settings → plugin-settings}/SettingsSection.js +13 -13
  61. package/dist/plugin-settings/index.js +228 -0
  62. package/dist/{cjs/plugin-settings → plugin-settings}/style.scss +1 -1
  63. package/dist/plugin-toggle/README.md +53 -0
  64. package/dist/plugin-toggle/index.js +222 -0
  65. package/dist/{esm/plugin-toggle → plugin-toggle}/style.scss +1 -1
  66. package/dist/{cjs/popover → popover}/index.js +4 -5
  67. package/dist/{cjs/popover → popover}/style.scss +7 -7
  68. package/dist/{cjs/position-control → position-control}/index.js +33 -32
  69. package/dist/{cjs/position-control → position-control}/style.scss +8 -8
  70. package/dist/{cjs/progress-bar → progress-bar}/index.js +9 -10
  71. package/dist/{cjs/progress-bar → progress-bar}/index.test.js +16 -16
  72. package/dist/{cjs/progress-bar → progress-bar}/style.scss +2 -2
  73. package/dist/proxied-imports/router.js +15 -0
  74. package/dist/{cjs/radio-control → radio-control}/index.js +4 -5
  75. package/dist/{cjs/radio-control → radio-control}/style.scss +3 -3
  76. package/dist/{cjs/section-header → section-header}/index.js +20 -21
  77. package/dist/{esm/section-header → section-header}/style.scss +5 -1
  78. package/dist/{cjs/select-control → select-control}/ButtonGroupControl.js +17 -19
  79. package/dist/{cjs/select-control → select-control}/GroupedSelectControl.js +32 -35
  80. package/dist/{cjs/select-control → select-control}/index.js +7 -8
  81. package/dist/{cjs/select-control → select-control}/style.scss +4 -4
  82. package/dist/settings/MinMaxSetting.js +60 -0
  83. package/dist/{cjs/settings → settings}/SettingsCard.js +14 -16
  84. package/dist/settings/SettingsSection.js +33 -0
  85. package/dist/{cjs/settings → settings}/index.js +3 -4
  86. package/dist/{cjs/settings → settings}/style.scss +15 -2
  87. package/dist/sortable-newsletter-list-control/index.js +135 -0
  88. package/dist/sortable-newsletter-list-control/style.scss +45 -0
  89. package/dist/{cjs/steps-list → steps-list}/index.js +5 -6
  90. package/dist/{esm/steps-list → steps-list}/style.scss +2 -2
  91. package/dist/{cjs/steps-list-item → steps-list-item}/index.js +6 -7
  92. package/dist/{cjs/steps-list-item → steps-list-item}/style.scss +5 -5
  93. package/dist/{cjs/style-card → style-card}/index.js +21 -19
  94. package/dist/{esm/style-card → style-card}/style.scss +4 -4
  95. package/dist/{esm/style.scss → style.scss} +14 -2
  96. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/index.js +16 -19
  97. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/style.scss +4 -4
  98. package/dist/text-control/index.js +76 -0
  99. package/dist/text-control/index.tsx +71 -0
  100. package/dist/utils/index.js +36 -0
  101. package/dist/{cjs/waiting → waiting}/index.js +4 -5
  102. package/dist/web-preview/index.js +191 -0
  103. package/dist/{cjs/web-preview → web-preview}/style.scss +5 -5
  104. package/dist/with-wizard/index.js +328 -0
  105. package/dist/{esm/with-wizard → with-wizard}/style.scss +44 -22
  106. package/dist/{cjs/with-wizard-screen → with-wizard-screen}/index.js +40 -43
  107. package/dist/{esm/with-wizard-screen → with-wizard-screen}/style.scss +7 -7
  108. package/dist/{cjs/wizard → wizard}/components/WizardError.js +16 -17
  109. package/dist/{cjs/wizard → wizard}/index.js +44 -46
  110. package/dist/{cjs/wizard → wizard}/store/index.js +37 -38
  111. package/dist/{cjs/wizard → wizard}/store/utils.js +1 -4
  112. package/package.json +16 -14
  113. package/shared/scss/_mixins.scss +2 -2
  114. package/src/accordion/index.js +4 -1
  115. package/src/accordion/style.scss +7 -3
  116. package/src/action-card/style.scss +9 -9
  117. package/src/autocomplete-tokenfield/index.js +48 -15
  118. package/src/autocomplete-tokenfield/style.scss +14 -8
  119. package/src/autocomplete-with-suggestions/index.js +59 -62
  120. package/src/autocomplete-with-suggestions/style.scss +9 -17
  121. package/src/button/index.tsx +48 -0
  122. package/src/button/style.scss +1 -1
  123. package/src/button-card/style.scss +19 -13
  124. package/src/card/style.scss +1 -1
  125. package/src/category-autocomplete/style.scss +2 -2
  126. package/src/color-picker/style.scss +3 -3
  127. package/src/consts.js +0 -2
  128. package/src/custom-select-control/style.scss +11 -10
  129. package/src/date-range-picker/style.scss +6 -6
  130. package/src/footer/index.js +7 -7
  131. package/src/footer/style.scss +1 -1
  132. package/src/form-token-field/style.scss +1 -1
  133. package/src/grid/index.tsx +34 -0
  134. package/src/grid/style.scss +9 -9
  135. package/src/handoff/index.js +7 -6
  136. package/src/handoff-message/index.js +3 -1
  137. package/src/hooks/index.ts +15 -0
  138. package/src/hooks/usePrompt.ts +46 -0
  139. package/src/image-upload/index.js +5 -5
  140. package/src/image-upload/index.test.js +6 -1
  141. package/src/image-upload/style.scss +5 -5
  142. package/src/modal/style.scss +5 -5
  143. package/src/newspack-icon/style.scss +1 -1
  144. package/src/newspack-logo/style.scss +1 -1
  145. package/src/notice/index.js +1 -1
  146. package/src/notice/style.scss +11 -11
  147. package/src/patrons-logo/index.js +4 -1
  148. package/src/plugin-installer/index.js +7 -7
  149. package/src/plugin-installer/style.scss +1 -1
  150. package/src/plugin-settings/index.js +1 -1
  151. package/src/plugin-settings/style.scss +1 -1
  152. package/src/plugin-toggle/index.js +13 -12
  153. package/src/plugin-toggle/style.scss +1 -1
  154. package/src/popover/style.scss +7 -7
  155. package/src/position-control/index.js +63 -64
  156. package/src/position-control/style.scss +8 -8
  157. package/src/progress-bar/style.scss +2 -2
  158. package/src/radio-control/style.scss +3 -3
  159. package/src/section-header/index.js +3 -3
  160. package/src/section-header/style.scss +5 -1
  161. package/src/select-control/GroupedSelectControl.js +1 -1
  162. package/src/select-control/style.scss +4 -4
  163. package/src/settings/MinMaxSetting.js +8 -6
  164. package/src/settings/style.scss +15 -2
  165. package/src/sortable-newsletter-list-control/index.js +137 -0
  166. package/src/sortable-newsletter-list-control/style.scss +45 -0
  167. package/src/steps-list/style.scss +2 -2
  168. package/src/steps-list-item/style.scss +5 -5
  169. package/src/style-card/index.js +11 -5
  170. package/src/style-card/style.scss +4 -4
  171. package/src/style.scss +14 -2
  172. package/src/tabbed-navigation/style.scss +4 -4
  173. package/src/text-control/index.tsx +65 -0
  174. package/src/web-preview/index.js +6 -6
  175. package/src/web-preview/style.scss +5 -5
  176. package/src/with-wizard/index.js +4 -4
  177. package/src/with-wizard/style.scss +44 -22
  178. package/src/with-wizard-screen/index.js +1 -1
  179. package/src/with-wizard-screen/style.scss +7 -7
  180. package/src/wizard/components/WizardError.js +1 -1
  181. package/src/wizard/index.js +3 -3
  182. package/src/wizard/store/index.js +9 -2
  183. package/dist/cjs/action-card/style.scss +0 -483
  184. package/dist/cjs/autocomplete-tokenfield/style.scss +0 -43
  185. package/dist/cjs/autocomplete-with-suggestions/style.scss +0 -171
  186. package/dist/cjs/button/index.js +0 -57
  187. package/dist/cjs/card/style.scss +0 -168
  188. package/dist/cjs/category-autocomplete/style.scss +0 -34
  189. package/dist/cjs/consts.js +0 -12
  190. package/dist/cjs/form-token-field/style.scss +0 -37
  191. package/dist/cjs/grid/index.js +0 -54
  192. package/dist/cjs/hooks/index.js +0 -26
  193. package/dist/cjs/hooks/usePrompt.js +0 -52
  194. package/dist/cjs/image-upload/index.js +0 -144
  195. package/dist/cjs/image-upload/style.scss +0 -103
  196. package/dist/cjs/modal/style.scss +0 -56
  197. package/dist/cjs/patrons-logo/index.js +0 -82
  198. package/dist/cjs/plugin-installer/index.js +0 -299
  199. package/dist/cjs/plugin-settings/index.js +0 -222
  200. package/dist/cjs/plugin-toggle/index.js +0 -222
  201. package/dist/cjs/plugin-toggle/style.scss +0 -20
  202. package/dist/cjs/proxied-imports/router.js +0 -15
  203. package/dist/cjs/section-header/style.scss +0 -41
  204. package/dist/cjs/settings/MinMaxSetting.js +0 -57
  205. package/dist/cjs/settings/SettingsSection.js +0 -37
  206. package/dist/cjs/steps-list/style.scss +0 -11
  207. package/dist/cjs/style-card/style.scss +0 -94
  208. package/dist/cjs/style.scss +0 -43
  209. package/dist/cjs/text-control/index.js +0 -71
  210. package/dist/cjs/utils/index.js +0 -40
  211. package/dist/cjs/web-preview/index.js +0 -189
  212. package/dist/cjs/with-wizard/index.js +0 -318
  213. package/dist/cjs/with-wizard/style.scss +0 -260
  214. package/dist/cjs/with-wizard-screen/style.scss +0 -160
  215. package/dist/esm/accordion/index.js +0 -38
  216. package/dist/esm/accordion/style.scss +0 -27
  217. package/dist/esm/action-card/index.js +0 -222
  218. package/dist/esm/autocomplete-tokenfield/index.js +0 -223
  219. package/dist/esm/autocomplete-with-suggestions/index.js +0 -289
  220. package/dist/esm/button/index.js +0 -48
  221. package/dist/esm/button/style.scss +0 -11
  222. package/dist/esm/button-card/index.js +0 -65
  223. package/dist/esm/button-card/style.scss +0 -174
  224. package/dist/esm/card/index.js +0 -43
  225. package/dist/esm/category-autocomplete/index.js +0 -185
  226. package/dist/esm/color-picker/index.js +0 -61
  227. package/dist/esm/color-picker/style.scss +0 -37
  228. package/dist/esm/consts.js +0 -3
  229. package/dist/esm/custom-select-control/index.js +0 -37
  230. package/dist/esm/custom-select-control/style.scss +0 -92
  231. package/dist/esm/date-range-picker/index.js +0 -32
  232. package/dist/esm/date-range-picker/style.scss +0 -148
  233. package/dist/esm/footer/index.js +0 -105
  234. package/dist/esm/footer/style.scss +0 -82
  235. package/dist/esm/form-token-field/index.js +0 -50
  236. package/dist/esm/global-notices/index.js +0 -30
  237. package/dist/esm/grid/index.js +0 -45
  238. package/dist/esm/grid/style.scss +0 -166
  239. package/dist/esm/handoff/index.js +0 -177
  240. package/dist/esm/handoff-message/index.js +0 -45
  241. package/dist/esm/hooks/index.js +0 -17
  242. package/dist/esm/hooks/useObjectState.js +0 -31
  243. package/dist/esm/hooks/useObjectState.test.js +0 -83
  244. package/dist/esm/hooks/useOnClickOutside.js +0 -31
  245. package/dist/esm/hooks/usePrompt.js +0 -43
  246. package/dist/esm/image-upload/index.js +0 -141
  247. package/dist/esm/image-upload/index.test.js +0 -28
  248. package/dist/esm/index.js +0 -47
  249. package/dist/esm/info-button/index.js +0 -42
  250. package/dist/esm/info-button/style.scss +0 -18
  251. package/dist/esm/modal/index.js +0 -39
  252. package/dist/esm/newspack-icon/index.js +0 -50
  253. package/dist/esm/newspack-icon/style.scss +0 -26
  254. package/dist/esm/newspack-logo/index.js +0 -46
  255. package/dist/esm/newspack-logo/style.scss +0 -30
  256. package/dist/esm/notice/index.js +0 -67
  257. package/dist/esm/notice/style.scss +0 -111
  258. package/dist/esm/patrons-logo/index.js +0 -76
  259. package/dist/esm/plugin-installer/index.js +0 -295
  260. package/dist/esm/plugin-installer/style.scss +0 -72
  261. package/dist/esm/plugin-settings/SettingsSection.js +0 -136
  262. package/dist/esm/plugin-settings/index.js +0 -217
  263. package/dist/esm/plugin-settings/style.scss +0 -7
  264. package/dist/esm/plugin-toggle/index.js +0 -217
  265. package/dist/esm/popover/index.js +0 -41
  266. package/dist/esm/popover/style.scss +0 -161
  267. package/dist/esm/position-control/index.js +0 -109
  268. package/dist/esm/position-control/style.scss +0 -66
  269. package/dist/esm/progress-bar/index.js +0 -69
  270. package/dist/esm/progress-bar/index.test.js +0 -110
  271. package/dist/esm/progress-bar/style.scss +0 -42
  272. package/dist/esm/proxied-imports/router.js +0 -8
  273. package/dist/esm/radio-control/index.js +0 -37
  274. package/dist/esm/radio-control/style.scss +0 -92
  275. package/dist/esm/section-header/index.js +0 -68
  276. package/dist/esm/select-control/ButtonGroupControl.js +0 -54
  277. package/dist/esm/select-control/GroupedSelectControl.js +0 -84
  278. package/dist/esm/select-control/index.js +0 -51
  279. package/dist/esm/select-control/style.scss +0 -108
  280. package/dist/esm/settings/MinMaxSetting.js +0 -53
  281. package/dist/esm/settings/SettingsCard.js +0 -39
  282. package/dist/esm/settings/SettingsSection.js +0 -30
  283. package/dist/esm/settings/index.js +0 -9
  284. package/dist/esm/settings/style.scss +0 -106
  285. package/dist/esm/steps-list/index.js +0 -43
  286. package/dist/esm/steps-list-item/index.js +0 -48
  287. package/dist/esm/steps-list-item/style.scss +0 -47
  288. package/dist/esm/style-card/index.js +0 -76
  289. package/dist/esm/tabbed-navigation/index.js +0 -56
  290. package/dist/esm/tabbed-navigation/style.scss +0 -86
  291. package/dist/esm/text-control/index.js +0 -66
  292. package/dist/esm/text-control/style.scss +0 -32
  293. package/dist/esm/utils/index.js +0 -32
  294. package/dist/esm/waiting/index.js +0 -44
  295. package/dist/esm/waiting/style.scss +0 -27
  296. package/dist/esm/web-preview/index.js +0 -184
  297. package/dist/esm/web-preview/style.scss +0 -155
  298. package/dist/esm/with-wizard/index.js +0 -313
  299. package/dist/esm/with-wizard-screen/index.js +0 -116
  300. package/dist/esm/wizard/components/WizardError.js +0 -69
  301. package/dist/esm/wizard/index.js +0 -126
  302. package/dist/esm/wizard/store/index.js +0 -155
  303. package/dist/esm/wizard/store/utils.js +0 -17
  304. package/src/grid/index.js +0 -44
  305. package/src/text-control/index.js +0 -56
  306. /package/dist/{cjs/info-button → info-button}/style.scss +0 -0
  307. /package/dist/{cjs/text-control → text-control}/style.scss +0 -0
  308. /package/dist/{cjs/waiting → waiting}/style.scss +0 -0
@@ -1,56 +0,0 @@
1
- /**
2
- * External dependencies.
3
- */
4
- import classnames from 'classnames';
5
- import findIndex from 'lodash/findIndex';
6
- import Router from '../proxied-imports/router';
7
-
8
- /**
9
- * Internal dependencies.
10
- */
11
- import './style.scss';
12
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
13
- import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
14
- const {
15
- NavLink,
16
- useHistory
17
- } = Router;
18
- const TabbedNavigation = _ref => {
19
- let {
20
- items,
21
- className,
22
- disableUpcoming,
23
- children = null
24
- } = _ref;
25
- const displayedItems = items.filter(item => !item.isHiddenInTabbedNavigation);
26
- const {
27
- location
28
- } = useHistory();
29
- const currentIndex = findIndex(displayedItems, ['path', location.pathname]);
30
- return _jsxs("div", {
31
- className: classnames('newspack-tabbed-navigation', className),
32
- children: [_jsx("ul", {
33
- children: displayedItems.map((item, index) => _jsx("li", {
34
- children: _jsx(NavLink, {
35
- to: item.path,
36
- isActive: (match, _ref2) => {
37
- let {
38
- pathname
39
- } = _ref2;
40
- if (item.activeTabPaths) {
41
- return item.activeTabPaths.includes(pathname);
42
- }
43
- return match;
44
- },
45
- exact: true,
46
- activeClassName: 'selected',
47
- className: classnames({
48
- disabled: disableUpcoming && index > currentIndex
49
- }),
50
- children: item.label
51
- })
52
- }, index))
53
- }), children]
54
- });
55
- };
56
- export default TabbedNavigation;
@@ -1,86 +0,0 @@
1
- /**
2
- * Tabbed Navigation
3
- */
4
-
5
- @use '~@wordpress/base-styles/colors' as wp-colors;
6
-
7
- .newspack-tabbed-navigation {
8
- background: white;
9
- width: 100%;
10
-
11
- @media only screen and ( min-width: 600px ) {
12
- position: sticky;
13
- top: 46px;
14
- z-index: 3;
15
- }
16
-
17
- @media only screen and ( min-width: 783px ) {
18
- top: 32px;
19
- }
20
-
21
- ul {
22
- box-shadow: 0 -1px 0 inset wp-colors.$gray-300;
23
- display: flex;
24
- flex-wrap: wrap;
25
- margin: 0;
26
- }
27
-
28
- li {
29
- margin-bottom: 0;
30
- width: 100%;
31
-
32
- @media screen and ( min-width: 600px ) {
33
- width: auto;
34
- }
35
-
36
- a {
37
- align-items: center;
38
- color: wp-colors.$gray-900;
39
- display: flex;
40
- font-weight: bold;
41
- height: 48px;
42
- padding: 12px 15px;
43
- text-decoration: none;
44
-
45
- @media screen and ( min-width: 600px ) {
46
- border-bottom: 4px solid transparent;
47
- padding-bottom: 8px;
48
- }
49
-
50
- &:active,
51
- &:focus,
52
- &:hover {
53
- color: var( --wp-admin-theme-color );
54
- outline: none;
55
- }
56
-
57
- &:focus {
58
- box-shadow: none;
59
- }
60
-
61
- &:focus-visible {
62
- outline: 2px solid;
63
- outline-offset: -2px;
64
- }
65
-
66
- &.selected {
67
- box-shadow: inset 0 0 0 2px white, inset 0 0 0 4px var( --wp-admin-theme-color );
68
-
69
- @media screen and ( min-width: 600px ) {
70
- border-color: var( --wp-admin-theme-color );
71
- box-shadow: none;
72
- }
73
- }
74
-
75
- &.disabled {
76
- cursor: not-allowed;
77
- opacity: 0.3;
78
- pointer-events: none;
79
-
80
- &:hover {
81
- color: inherit;
82
- }
83
- }
84
- }
85
- }
86
- }
@@ -1,66 +0,0 @@
1
- /**
2
- * Text Control
3
- */
4
-
5
- /**
6
- * WordPress dependencies
7
- */
8
- import { TextControl as BaseComponent } from '@wordpress/components';
9
- import { Component, createRef } from '@wordpress/element';
10
- import { __ as alias__ } from '@wordpress/i18n';
11
-
12
- /**
13
- * Internal dependencies
14
- */
15
- const __ = alias__;
16
- import './style.scss';
17
-
18
- /**
19
- * External dependencies
20
- */
21
- import classNames from 'classnames';
22
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
23
- class TextControl extends Component {
24
- constructor(props) {
25
- super(props);
26
- this.wrapperRef = createRef();
27
- }
28
- componentDidMount() {
29
- if (this.wrapperRef.current) {
30
- const labelEl = this.wrapperRef.current.querySelector('label');
31
- if (labelEl) {
32
- labelEl.setAttribute('data-required-text', __('(required)', 'newspack'));
33
- }
34
- }
35
- }
36
- /**
37
- * Render.
38
- */
39
- render() {
40
- const {
41
- className,
42
- required,
43
- isWide,
44
- withMargin = true,
45
- ...otherProps
46
- } = this.props;
47
- const classes = classNames('newspack-text-control', {
48
- 'newspack-text-control--wide': isWide
49
- }, {
50
- 'newspack-text-control--with-margin': withMargin
51
- }, className);
52
- return required ? _jsx("div", {
53
- ref: this.wrapperRef,
54
- className: "newspack-text-control--required",
55
- children: _jsx(BaseComponent, {
56
- className: classes,
57
- required: required,
58
- ...otherProps
59
- })
60
- }) : _jsx(BaseComponent, {
61
- className: classes,
62
- ...otherProps
63
- });
64
- }
65
- }
66
- export default TextControl;
@@ -1,32 +0,0 @@
1
- /**
2
- * Text Control
3
- */
4
-
5
- .newspack-text-control {
6
- &--with-margin {
7
- margin: 32px 0;
8
- }
9
-
10
- &--wide {
11
- flex-wrap: wrap;
12
- .components-base-control__field {
13
- width: 100%;
14
- }
15
- }
16
-
17
- &--required {
18
- margin: 32px 0;
19
-
20
- > * {
21
- margin: 0;
22
- }
23
- }
24
-
25
- // Code
26
-
27
- &.code {
28
- input {
29
- font-family: Consolas, monaco, monospace;
30
- }
31
- }
32
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * WordPress dependencies.
3
- */
4
- import { ENTER } from '@wordpress/keycodes';
5
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
6
- const InteractiveDiv = _ref => {
7
- let {
8
- style = {},
9
- ...props
10
- } = _ref;
11
- return _jsx("div", {
12
- tabIndex: "0",
13
- role: "button",
14
- onKeyDown: event => ENTER === event.keyCode && props.onClick(),
15
- style: {
16
- cursor: 'pointer',
17
- ...style
18
- },
19
- ...props
20
- });
21
- };
22
- const confirmAction = message => {
23
- // eslint-disable-next-line no-alert
24
- if (confirm(message)) {
25
- return true;
26
- }
27
- return false;
28
- };
29
- export default {
30
- InteractiveDiv,
31
- confirmAction
32
- };
@@ -1,44 +0,0 @@
1
- /**
2
- * Waiting
3
- */
4
-
5
- /**
6
- * WordPress dependencies.
7
- */
8
- import { Component } from '@wordpress/element';
9
- import { Spinner } from '@wordpress/components';
10
-
11
- /**
12
- * Internal dependencies.
13
- */
14
- import './style.scss';
15
-
16
- /**
17
- * External dependencies.
18
- */
19
- import classnames from 'classnames';
20
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
21
- class Waiting extends Component {
22
- /**
23
- * Render
24
- */
25
- render() {
26
- const {
27
- className,
28
- isRight,
29
- isLeft,
30
- isCenter,
31
- ...otherProps
32
- } = this.props;
33
- const classes = classnames('newspack-waiting', className, {
34
- 'is-right': isRight,
35
- 'is-left': isLeft,
36
- 'is-center': isCenter
37
- });
38
- return _jsx(Spinner, {
39
- className: classes,
40
- ...otherProps
41
- });
42
- }
43
- }
44
- export default Waiting;
@@ -1,27 +0,0 @@
1
- /**
2
- * Waiting
3
- */
4
-
5
- .newspack-waiting.components-spinner {
6
- flex: 0 0 auto;
7
- margin: 0;
8
-
9
- &.is-left {
10
- margin-right: 8px;
11
- }
12
-
13
- &.is-right {
14
- margin-right: 8px;
15
- order: -1;
16
-
17
- @media screen and ( min-width: 744px ) {
18
- margin-left: 8px;
19
- margin-right: 0;
20
- order: 1;
21
- }
22
- }
23
-
24
- &.is-center {
25
- margin: auto;
26
- }
27
- }
@@ -1,184 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- /**
3
- * WordPress dependencies.
4
- */
5
- import { Component, createRef, Fragment, createPortal } from '@wordpress/element';
6
- import { __ as alias__ } from '@wordpress/i18n';
7
- const __ = alias__;
8
- import { closeSmall, desktop, mobile, tablet } from '@wordpress/icons';
9
- import { Button, ButtonGroup } from '@wordpress/components';
10
-
11
- /**
12
- * Internal dependencies.
13
- */
14
- import { Waiting } from '../';
15
- import './style.scss';
16
-
17
- /**
18
- * External dependencies.
19
- */
20
- import classnames from 'classnames';
21
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
22
- import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
23
- const PORTAL_PARENT_ID = 'newspack-components-web-preview-wrapper';
24
-
25
- /**
26
- * Web Preview. A component to preview a website in an iframe, with device sizing options.
27
- */
28
- class WebPreview extends Component {
29
- constructor(props) {
30
- super(props);
31
- _defineProperty(this, "state", {
32
- device: 'desktop',
33
- loaded: false,
34
- isPreviewVisible: false
35
- });
36
- /**
37
- * Create JSX for the modal
38
- */
39
- _defineProperty(this, "getWebPreviewModal", () => {
40
- const {
41
- beforeLoad = () => {},
42
- onClose = () => {},
43
- url
44
- } = this.props;
45
- const {
46
- device,
47
- loaded,
48
- isPreviewVisible
49
- } = this.state;
50
- if (!this.modalDOMElement || !isPreviewVisible) {
51
- return null;
52
- }
53
- const classes = classnames('newspack-web-preview', device, loaded && 'is-loaded');
54
- beforeLoad();
55
- return createPortal(_jsx("div", {
56
- className: classes,
57
- children: _jsxs("div", {
58
- className: "newspack-web-preview__interior",
59
- children: [_jsxs("div", {
60
- className: "newspack-web-preview__toolbar",
61
- children: [_jsx("div", {
62
- className: "newspack-web-preview__toolbar-left",
63
- children: _jsxs(ButtonGroup, {
64
- children: [_jsx(Button, {
65
- onClick: () => this.setState({
66
- device: 'desktop'
67
- }),
68
- variant: 'desktop' === device && 'primary',
69
- icon: desktop,
70
- label: __('Preview Desktop Size', 'newspack')
71
- }), _jsx(Button, {
72
- onClick: () => this.setState({
73
- device: 'tablet'
74
- }),
75
- variant: 'tablet' === device && 'primary',
76
- icon: tablet,
77
- label: __('Preview Tablet Size', 'newspack')
78
- }), _jsx(Button, {
79
- onClick: () => this.setState({
80
- device: 'phone'
81
- }),
82
- variant: 'phone' === device && 'primary',
83
- icon: mobile,
84
- label: __('Preview Phone Size', 'newspack')
85
- })]
86
- })
87
- }), _jsx("div", {
88
- className: "newspack-web-preview__toolbar-right",
89
- children: _jsx(Button, {
90
- onClick: () => {
91
- onClose();
92
- this.setState({
93
- isPreviewVisible: false,
94
- loaded: false
95
- });
96
- },
97
- icon: closeSmall,
98
- label: __('Close Preview', 'newspack')
99
- })
100
- })]
101
- }), _jsxs("div", {
102
- className: "newspack-web-preview__content",
103
- children: [!loaded && _jsxs("div", {
104
- className: "newspack-web-preview__is-waiting",
105
- children: [_jsx(Waiting, {
106
- isLeft: true
107
- }), __('Loading…', 'newspack')]
108
- }), _jsx("iframe", {
109
- ref: this.iframeRef,
110
- title: "web-preview",
111
- src: url,
112
- onLoad: () => {
113
- this.setState({
114
- loaded: true
115
- });
116
- this.props.onLoad(this.iframeRef.current);
117
- }
118
- })]
119
- })]
120
- })
121
- }), this.modalDOMElement);
122
- });
123
- _defineProperty(this, "showPreview", () => {
124
- this.setState({
125
- isPreviewVisible: true
126
- });
127
- });
128
- this.iframeRef = createRef();
129
- }
130
-
131
- /**
132
- * If a div with id PORTAL_PARENT_ID exists, assign it to class field.
133
- * If not, create it and append to the body.
134
- */
135
- componentDidMount() {
136
- const existingDOMElement = document.getElementById(PORTAL_PARENT_ID);
137
- this.modalDOMElement = existingDOMElement || document.createElement('div');
138
- if (!existingDOMElement) {
139
- this.modalDOMElement.id = PORTAL_PARENT_ID;
140
- document.body.appendChild(this.modalDOMElement);
141
- }
142
- }
143
-
144
- /**
145
- * Add or remove applicable body classes
146
- */
147
- componentDidUpdate() {
148
- if (this.state.isPreviewVisible === true) {
149
- document.body.classList.add('newspack-web-preview--open');
150
- } else {
151
- document.body.classList.remove('newspack-web-preview--open');
152
- }
153
- }
154
- /**
155
- * Render.
156
- */
157
- render() {
158
- const {
159
- label,
160
- variant,
161
- /**
162
- * Inversion of control - let the caller render
163
- * the button that will trigger the modal
164
- */
165
- renderButton
166
- } = this.props;
167
- return _jsxs(Fragment, {
168
- children: [renderButton ? renderButton({
169
- showPreview: this.showPreview
170
- }) : _jsx(Button, {
171
- variant: variant,
172
- onClick: this.showPreview,
173
- tabIndex: "0",
174
- children: label
175
- }), this.getWebPreviewModal()]
176
- });
177
- }
178
- }
179
- WebPreview.defaultProps = {
180
- url: '//newspack.com',
181
- label: __('Preview', 'newspack'),
182
- onLoad: () => {}
183
- };
184
- export default WebPreview;
@@ -1,155 +0,0 @@
1
- /**
2
- * Web Preview
3
- */
4
-
5
- @use '../../../shared/scss/colors';
6
- @use '~@wordpress/base-styles/colors' as wp-colors;
7
-
8
- .newspack-web-preview {
9
- // Color
10
- --wp-admin-theme-color: #{colors.$primary-500};
11
- --wp-admin-theme-color--rgb: #{colors.$primary-500--rgb};
12
- --wp-admin-theme-color-darker-10: #{colors.$primary-600};
13
- --wp-admin-theme-color-darker-10--rgb: #{colors.$primary-600--rgb};
14
- --wp-admin-theme-color-darker-20: #{colors.$primary-700};
15
- --wp-admin-theme-color-darker-20--rgb: #{colors.$primary-700--rgb};
16
-
17
- background: rgba( black, 0.7 );
18
- box-sizing: border-box;
19
- height: 100%;
20
- left: 0;
21
- margin: 0;
22
- max-width: 100%;
23
- padding: 32px;
24
- position: fixed;
25
- top: 0;
26
- width: 100%;
27
- z-index: 99999;
28
-
29
- &.phone iframe {
30
- max-width: 380px;
31
- }
32
-
33
- &.tablet iframe {
34
- max-width: 768px;
35
- }
36
-
37
- &.is-loaded iframe {
38
- opacity: 1;
39
- }
40
-
41
- &--open {
42
- overflow: hidden;
43
- }
44
-
45
- &__interior {
46
- animation: appear-animation 125ms ease-in-out;
47
- animation-fill-mode: forwards;
48
- background: white;
49
- border-radius: 2px;
50
- overflow: hidden;
51
- height: 100%;
52
- width: 100%;
53
- }
54
-
55
- &__content {
56
- background: wp-colors.$gray-100;
57
- height: calc( 100% - 49px );
58
- -webkit-overflow-scrolling: touch;
59
- overflow-x: hidden;
60
- width: 100%;
61
-
62
- iframe {
63
- background: #fff;
64
- display: block;
65
- height: 100%;
66
- margin: 0 auto;
67
- max-width: 100%;
68
- opacity: 0;
69
- outline: 1px solid wp-colors.$gray-300;
70
- padding: 0;
71
- pointer-events: all;
72
- transition: max-width 125ms ease-in-out, opacity 250ms ease-in-out;
73
- width: 100%;
74
- }
75
- }
76
-
77
- &__is-waiting {
78
- align-items: center;
79
- display: flex;
80
- left: 50%;
81
- margin: -12px 0 0;
82
- position: absolute;
83
- top: 50%;
84
- transform: translateX( -50% );
85
- }
86
-
87
- &__toolbar {
88
- border-bottom: 1px solid wp-colors.$gray-300;
89
- display: flex;
90
- padding: 6px;
91
-
92
- &-left {
93
- flex: 0 0 auto;
94
-
95
- .newspack-button-group {
96
- display: flex;
97
- margin: 0;
98
- }
99
-
100
- .newspack-button {
101
- display: none;
102
- padding: 0 !important;
103
-
104
- &.is-selected {
105
- background: colors.$primary-500;
106
- color: white;
107
-
108
- &:active,
109
- &:focus,
110
- &:hover {
111
- box-shadow: none !important;
112
- color: white;
113
- outline: none;
114
- }
115
-
116
- &:focus {
117
- box-shadow: inset 0 0 0 1px colors.$primary-500, inset 0 0 0 3px white !important;
118
- }
119
- }
120
-
121
- @media screen and ( min-width: 528px ) {
122
- &.is-phone,
123
- &.is-tablet {
124
- display: flex;
125
- }
126
- }
127
-
128
- @media screen and ( min-width: 816px ) {
129
- &.is-desktop {
130
- display: flex;
131
- }
132
- }
133
- }
134
- }
135
-
136
- &-right {
137
- display: flex;
138
- flex: 1;
139
- justify-content: flex-end;
140
- }
141
-
142
- .newspack-button {
143
- border-radius: 0 !important;
144
- }
145
- }
146
- }
147
-
148
- @keyframes appear-animation {
149
- from {
150
- margin-top: 32px;
151
- }
152
- to {
153
- margin-top: 0;
154
- }
155
- }