newspack-components 3.0.0-alpha.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 (278) hide show
  1. package/babel.config.js +25 -0
  2. package/copy-styles.js +2 -10
  3. package/dist/accordion/index.js +50 -0
  4. package/dist/accordion/style.scss +31 -0
  5. package/dist/{cjs/action-card → action-card}/index.js +38 -41
  6. package/dist/{cjs/action-card → action-card}/style.scss +9 -9
  7. package/dist/{cjs/autocomplete-tokenfield → autocomplete-tokenfield}/index.js +19 -18
  8. package/dist/{esm/autocomplete-tokenfield → autocomplete-tokenfield}/style.scss +3 -3
  9. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/index.js +29 -29
  10. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/style.scss +8 -8
  11. package/dist/button/index.js +51 -0
  12. package/dist/button/index.tsx +48 -0
  13. package/dist/{cjs/button → button}/style.scss +1 -1
  14. package/dist/{cjs/button-card → button-card}/index.js +8 -8
  15. package/dist/{cjs/button-card → button-card}/style.scss +19 -13
  16. package/dist/{cjs/card → card}/index.js +3 -3
  17. package/dist/{esm/card → card}/style.scss +1 -1
  18. package/dist/{cjs/category-autocomplete → category-autocomplete}/index.js +50 -48
  19. package/dist/{cjs/category-autocomplete → category-autocomplete}/style.scss +2 -2
  20. package/dist/{cjs/color-picker → color-picker}/index.js +7 -7
  21. package/dist/{cjs/color-picker → color-picker}/style.scss +3 -3
  22. package/dist/{cjs/custom-select-control → custom-select-control}/index.js +3 -3
  23. package/dist/{esm/custom-select-control → custom-select-control}/style.scss +11 -10
  24. package/dist/date-range-picker/index.js +39 -0
  25. package/dist/date-range-picker/style.scss +148 -0
  26. package/dist/{cjs/footer → footer}/index.js +19 -17
  27. package/dist/{cjs/footer → footer}/style.scss +1 -1
  28. package/dist/{cjs/form-token-field → form-token-field}/index.js +5 -5
  29. package/dist/{esm/form-token-field → form-token-field}/style.scss +1 -1
  30. package/dist/{cjs/global-notices → global-notices}/index.js +3 -3
  31. package/dist/grid/index.js +44 -0
  32. package/dist/grid/index.tsx +34 -0
  33. package/dist/{esm/grid → grid}/style.scss +9 -9
  34. package/dist/{cjs/handoff → handoff}/index.js +72 -69
  35. package/dist/{cjs/handoff-message → handoff-message}/index.js +5 -3
  36. package/dist/hooks/index.js +29 -0
  37. package/dist/hooks/index.ts +15 -0
  38. package/dist/{cjs/hooks → hooks}/useObjectState.js +1 -1
  39. package/dist/{cjs/hooks → hooks}/useObjectState.test.js +9 -9
  40. package/dist/hooks/usePrompt.js +47 -0
  41. package/dist/hooks/usePrompt.ts +46 -0
  42. package/dist/image-upload/index.js +148 -0
  43. package/dist/{cjs/image-upload → image-upload}/index.test.js +13 -6
  44. package/dist/{cjs/image-upload → image-upload}/style.scss +5 -5
  45. package/dist/{cjs/index.js → index.js} +15 -1
  46. package/dist/{cjs/info-button → info-button}/index.js +5 -5
  47. package/dist/{cjs/modal → modal}/index.js +3 -3
  48. package/dist/{cjs/modal → modal}/style.scss +5 -5
  49. package/dist/{cjs/newspack-icon → newspack-icon}/index.js +4 -4
  50. package/dist/{cjs/newspack-icon → newspack-icon}/style.scss +1 -1
  51. package/dist/{cjs/newspack-logo → newspack-logo}/index.js +4 -4
  52. package/dist/{cjs/newspack-logo → newspack-logo}/style.scss +1 -1
  53. package/dist/{cjs/notice → notice}/index.js +11 -8
  54. package/dist/{cjs/notice → notice}/style.scss +11 -11
  55. package/dist/patrons-logo/index.js +77 -0
  56. package/dist/plugin-installer/index.js +297 -0
  57. package/dist/{esm/plugin-installer → plugin-installer}/style.scss +1 -1
  58. package/dist/{cjs/plugin-settings → plugin-settings}/SettingsSection.js +11 -9
  59. package/dist/plugin-settings/index.js +228 -0
  60. package/dist/{cjs/plugin-settings → plugin-settings}/style.scss +1 -1
  61. package/dist/plugin-toggle/README.md +53 -0
  62. package/dist/plugin-toggle/index.js +222 -0
  63. package/dist/{esm/plugin-toggle → plugin-toggle}/style.scss +1 -1
  64. package/dist/{cjs/popover → popover}/index.js +3 -3
  65. package/dist/{esm/popover → popover}/style.scss +7 -7
  66. package/dist/{cjs/position-control → position-control}/index.js +24 -22
  67. package/dist/{cjs/position-control → position-control}/style.scss +8 -8
  68. package/dist/{cjs/progress-bar → progress-bar}/index.js +8 -8
  69. package/dist/{cjs/progress-bar → progress-bar}/index.test.js +12 -11
  70. package/dist/{esm/progress-bar → progress-bar}/style.scss +2 -2
  71. package/dist/proxied-imports/router.js +15 -0
  72. package/dist/{cjs/radio-control → radio-control}/index.js +3 -3
  73. package/dist/{esm/radio-control → radio-control}/style.scss +3 -3
  74. package/dist/{cjs/section-header → section-header}/index.js +8 -8
  75. package/dist/{cjs/section-header → section-header}/style.scss +1 -1
  76. package/dist/{cjs/select-control → select-control}/ButtonGroupControl.js +7 -7
  77. package/dist/{cjs/select-control → select-control}/GroupedSelectControl.js +15 -14
  78. package/dist/{cjs/select-control → select-control}/index.js +6 -6
  79. package/dist/{esm/select-control → select-control}/style.scss +4 -4
  80. package/dist/{cjs/settings → settings}/MinMaxSetting.js +12 -11
  81. package/dist/{cjs/settings → settings}/SettingsCard.js +4 -4
  82. package/dist/{cjs/settings → settings}/SettingsSection.js +6 -6
  83. package/dist/{cjs/settings → settings}/index.js +1 -1
  84. package/dist/{cjs/settings → settings}/style.scss +1 -1
  85. package/dist/{cjs/sortable-newsletter-list-control → sortable-newsletter-list-control}/index.js +25 -24
  86. package/dist/{cjs/steps-list → steps-list}/index.js +4 -4
  87. package/dist/{esm/steps-list → steps-list}/style.scss +2 -2
  88. package/dist/{cjs/steps-list-item → steps-list-item}/index.js +5 -5
  89. package/dist/{cjs/steps-list-item → steps-list-item}/style.scss +5 -5
  90. package/dist/{cjs/style-card → style-card}/index.js +20 -17
  91. package/dist/{cjs/style-card → style-card}/style.scss +4 -4
  92. package/dist/{esm/style.scss → style.scss} +1 -1
  93. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/index.js +7 -7
  94. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/style.scss +4 -4
  95. package/dist/text-control/index.js +76 -0
  96. package/dist/text-control/index.tsx +71 -0
  97. package/dist/{cjs/utils → utils}/index.js +2 -2
  98. package/dist/{cjs/waiting → waiting}/index.js +3 -3
  99. package/dist/web-preview/index.js +191 -0
  100. package/dist/{esm/web-preview → web-preview}/style.scss +5 -5
  101. package/dist/with-wizard/index.js +328 -0
  102. package/dist/{cjs/with-wizard → with-wizard}/style.scss +44 -22
  103. package/dist/{cjs/with-wizard-screen → with-wizard-screen}/index.js +24 -23
  104. package/dist/{esm/with-wizard-screen → with-wizard-screen}/style.scss +7 -7
  105. package/dist/{cjs/wizard → wizard}/components/WizardError.js +10 -9
  106. package/dist/{cjs/wizard → wizard}/index.js +30 -27
  107. package/dist/{cjs/wizard → wizard}/store/index.js +1 -1
  108. package/package.json +18 -15
  109. package/shared/scss/_mixins.scss +2 -2
  110. package/src/accordion/index.js +35 -0
  111. package/src/accordion/style.scss +31 -0
  112. package/src/action-card/style.scss +9 -9
  113. package/src/autocomplete-tokenfield/style.scss +3 -3
  114. package/src/autocomplete-with-suggestions/index.js +46 -44
  115. package/src/autocomplete-with-suggestions/style.scss +8 -8
  116. package/src/button/style.scss +1 -1
  117. package/src/button-card/style.scss +19 -13
  118. package/src/card/style.scss +1 -1
  119. package/src/category-autocomplete/style.scss +2 -2
  120. package/src/color-picker/style.scss +3 -3
  121. package/src/custom-select-control/style.scss +11 -10
  122. package/src/date-range-picker/index.js +31 -0
  123. package/src/date-range-picker/style.scss +148 -0
  124. package/src/footer/style.scss +1 -1
  125. package/src/form-token-field/style.scss +1 -1
  126. package/src/grid/style.scss +9 -9
  127. package/src/handoff-message/index.js +3 -1
  128. package/src/image-upload/index.js +1 -1
  129. package/src/image-upload/index.test.js +6 -1
  130. package/src/image-upload/style.scss +5 -5
  131. package/src/index.js +2 -0
  132. package/src/modal/style.scss +5 -5
  133. package/src/newspack-icon/style.scss +1 -1
  134. package/src/newspack-logo/style.scss +1 -1
  135. package/src/notice/style.scss +11 -11
  136. package/src/plugin-installer/style.scss +1 -1
  137. package/src/plugin-settings/style.scss +1 -1
  138. package/src/plugin-toggle/index.js +6 -7
  139. package/src/plugin-toggle/style.scss +1 -1
  140. package/src/popover/style.scss +7 -7
  141. package/src/position-control/index.js +62 -63
  142. package/src/position-control/style.scss +8 -8
  143. package/src/progress-bar/style.scss +2 -2
  144. package/src/radio-control/style.scss +3 -3
  145. package/src/section-header/style.scss +1 -1
  146. package/src/select-control/style.scss +4 -4
  147. package/src/settings/style.scss +1 -1
  148. package/src/steps-list/style.scss +2 -2
  149. package/src/steps-list-item/style.scss +5 -5
  150. package/src/style-card/style.scss +4 -4
  151. package/src/style.scss +1 -1
  152. package/src/tabbed-navigation/index.js +1 -1
  153. package/src/tabbed-navigation/style.scss +4 -4
  154. package/src/web-preview/style.scss +5 -5
  155. package/src/with-wizard/style.scss +44 -22
  156. package/src/with-wizard-screen/style.scss +7 -7
  157. package/dist/cjs/autocomplete-tokenfield/style.scss +0 -49
  158. package/dist/cjs/button/index.js +0 -56
  159. package/dist/cjs/card/style.scss +0 -168
  160. package/dist/cjs/custom-select-control/style.scss +0 -92
  161. package/dist/cjs/form-token-field/style.scss +0 -37
  162. package/dist/cjs/grid/index.js +0 -37
  163. package/dist/cjs/grid/style.scss +0 -166
  164. package/dist/cjs/hooks/index.js +0 -25
  165. package/dist/cjs/hooks/usePrompt.js +0 -49
  166. package/dist/cjs/image-upload/index.js +0 -143
  167. package/dist/cjs/patrons-logo/index.js +0 -81
  168. package/dist/cjs/plugin-installer/index.js +0 -295
  169. package/dist/cjs/plugin-installer/style.scss +0 -72
  170. package/dist/cjs/plugin-settings/index.js +0 -221
  171. package/dist/cjs/plugin-toggle/index.js +0 -218
  172. package/dist/cjs/plugin-toggle/style.scss +0 -20
  173. package/dist/cjs/popover/style.scss +0 -161
  174. package/dist/cjs/progress-bar/style.scss +0 -42
  175. package/dist/cjs/proxied-imports/router.js +0 -14
  176. package/dist/cjs/radio-control/style.scss +0 -92
  177. package/dist/cjs/select-control/style.scss +0 -108
  178. package/dist/cjs/steps-list/style.scss +0 -11
  179. package/dist/cjs/style.scss +0 -55
  180. package/dist/cjs/text-control/index.js +0 -61
  181. package/dist/cjs/web-preview/index.js +0 -188
  182. package/dist/cjs/web-preview/style.scss +0 -155
  183. package/dist/cjs/with-wizard/index.js +0 -317
  184. package/dist/cjs/with-wizard-screen/style.scss +0 -160
  185. package/dist/esm/action-card/index.js +0 -221
  186. package/dist/esm/action-card/style.scss +0 -483
  187. package/dist/esm/autocomplete-tokenfield/index.js +0 -260
  188. package/dist/esm/autocomplete-with-suggestions/index.js +0 -276
  189. package/dist/esm/autocomplete-with-suggestions/style.scss +0 -163
  190. package/dist/esm/button/index.js +0 -48
  191. package/dist/esm/button/style.scss +0 -11
  192. package/dist/esm/button-card/index.js +0 -64
  193. package/dist/esm/button-card/style.scss +0 -174
  194. package/dist/esm/card/index.js +0 -43
  195. package/dist/esm/category-autocomplete/index.js +0 -181
  196. package/dist/esm/category-autocomplete/style.scss +0 -34
  197. package/dist/esm/color-picker/index.js +0 -59
  198. package/dist/esm/color-picker/style.scss +0 -37
  199. package/dist/esm/consts.js +0 -1
  200. package/dist/esm/custom-select-control/index.js +0 -37
  201. package/dist/esm/footer/index.js +0 -100
  202. package/dist/esm/footer/style.scss +0 -82
  203. package/dist/esm/form-token-field/index.js +0 -49
  204. package/dist/esm/global-notices/index.js +0 -30
  205. package/dist/esm/grid/index.js +0 -29
  206. package/dist/esm/handoff/index.js +0 -176
  207. package/dist/esm/handoff-message/index.js +0 -45
  208. package/dist/esm/hooks/index.js +0 -17
  209. package/dist/esm/hooks/useObjectState.js +0 -30
  210. package/dist/esm/hooks/useObjectState.test.js +0 -82
  211. package/dist/esm/hooks/useOnClickOutside.js +0 -31
  212. package/dist/esm/hooks/usePrompt.js +0 -40
  213. package/dist/esm/image-upload/index.js +0 -139
  214. package/dist/esm/image-upload/index.test.js +0 -28
  215. package/dist/esm/image-upload/style.scss +0 -103
  216. package/dist/esm/index.js +0 -45
  217. package/dist/esm/info-button/index.js +0 -42
  218. package/dist/esm/info-button/style.scss +0 -18
  219. package/dist/esm/modal/index.js +0 -39
  220. package/dist/esm/modal/style.scss +0 -56
  221. package/dist/esm/newspack-icon/index.js +0 -50
  222. package/dist/esm/newspack-icon/style.scss +0 -26
  223. package/dist/esm/newspack-logo/index.js +0 -46
  224. package/dist/esm/newspack-logo/style.scss +0 -30
  225. package/dist/esm/notice/index.js +0 -66
  226. package/dist/esm/notice/style.scss +0 -111
  227. package/dist/esm/patrons-logo/index.js +0 -75
  228. package/dist/esm/plugin-installer/index.js +0 -290
  229. package/dist/esm/plugin-settings/SettingsSection.js +0 -134
  230. package/dist/esm/plugin-settings/index.js +0 -216
  231. package/dist/esm/plugin-settings/style.scss +0 -7
  232. package/dist/esm/plugin-toggle/index.js +0 -213
  233. package/dist/esm/popover/index.js +0 -41
  234. package/dist/esm/position-control/index.js +0 -107
  235. package/dist/esm/position-control/style.scss +0 -66
  236. package/dist/esm/progress-bar/index.js +0 -68
  237. package/dist/esm/progress-bar/index.test.js +0 -109
  238. package/dist/esm/proxied-imports/router.js +0 -8
  239. package/dist/esm/radio-control/index.js +0 -37
  240. package/dist/esm/section-header/index.js +0 -67
  241. package/dist/esm/section-header/style.scss +0 -45
  242. package/dist/esm/select-control/ButtonGroupControl.js +0 -53
  243. package/dist/esm/select-control/GroupedSelectControl.js +0 -79
  244. package/dist/esm/select-control/index.js +0 -51
  245. package/dist/esm/settings/MinMaxSetting.js +0 -54
  246. package/dist/esm/settings/SettingsCard.js +0 -38
  247. package/dist/esm/settings/SettingsSection.js +0 -26
  248. package/dist/esm/settings/index.js +0 -9
  249. package/dist/esm/settings/style.scss +0 -119
  250. package/dist/esm/sortable-newsletter-list-control/index.js +0 -128
  251. package/dist/esm/sortable-newsletter-list-control/style.scss +0 -45
  252. package/dist/esm/steps-list/index.js +0 -43
  253. package/dist/esm/steps-list-item/index.js +0 -47
  254. package/dist/esm/steps-list-item/style.scss +0 -47
  255. package/dist/esm/style-card/index.js +0 -75
  256. package/dist/esm/style-card/style.scss +0 -94
  257. package/dist/esm/tabbed-navigation/index.js +0 -53
  258. package/dist/esm/tabbed-navigation/style.scss +0 -86
  259. package/dist/esm/text-control/index.js +0 -57
  260. package/dist/esm/text-control/style.scss +0 -32
  261. package/dist/esm/utils/index.js +0 -29
  262. package/dist/esm/waiting/index.js +0 -44
  263. package/dist/esm/waiting/style.scss +0 -27
  264. package/dist/esm/web-preview/index.js +0 -183
  265. package/dist/esm/with-wizard/index.js +0 -311
  266. package/dist/esm/with-wizard/style.scss +0 -260
  267. package/dist/esm/with-wizard-screen/index.js +0 -110
  268. package/dist/esm/wizard/components/WizardError.js +0 -67
  269. package/dist/esm/wizard/index.js +0 -120
  270. package/dist/esm/wizard/store/index.js +0 -155
  271. package/dist/esm/wizard/store/utils.js +0 -14
  272. /package/dist/{cjs/consts.js → consts.js} +0 -0
  273. /package/dist/{cjs/hooks → hooks}/useOnClickOutside.js +0 -0
  274. /package/dist/{cjs/info-button → info-button}/style.scss +0 -0
  275. /package/dist/{cjs/sortable-newsletter-list-control → sortable-newsletter-list-control}/style.scss +0 -0
  276. /package/dist/{cjs/text-control → text-control}/style.scss +0 -0
  277. /package/dist/{cjs/waiting → waiting}/style.scss +0 -0
  278. /package/dist/{cjs/wizard → wizard}/store/utils.js +0 -0
@@ -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,57 +0,0 @@
1
- /**
2
- * Text Control
3
- */
4
-
5
- /**
6
- * WordPress dependencies
7
- */
8
- import { TextControl as BaseComponent } from '@wordpress/components';
9
- import { useEffect, useRef } 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
- const TextControl = ({
24
- className = '',
25
- required = false,
26
- isWide = false,
27
- withMargin = true,
28
- ...otherProps
29
- }) => {
30
- const wrapperRef = useRef(null);
31
- useEffect(() => {
32
- if (wrapperRef.current === null) {
33
- return;
34
- }
35
- const labelEl = wrapperRef.current.querySelector('label');
36
- if (labelEl) {
37
- labelEl.setAttribute('data-required-text', __('(required)', 'newspack-plugin'));
38
- }
39
- }, [wrapperRef.current]);
40
- const classes = classNames('newspack-text-control', {
41
- 'newspack-text-control--wide': isWide,
42
- 'newspack-text-control--with-margin': withMargin
43
- }, className);
44
- return required ? _jsx("div", {
45
- ref: wrapperRef,
46
- className: "newspack-text-control--required",
47
- children: _jsx(BaseComponent, {
48
- className: classes,
49
- required: required,
50
- ...otherProps
51
- })
52
- }) : _jsx(BaseComponent, {
53
- className: classes,
54
- ...otherProps
55
- });
56
- };
57
- 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,29 +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 = ({
7
- style = {},
8
- ...props
9
- }) => _jsx("div", {
10
- tabIndex: "0",
11
- role: "button",
12
- onKeyDown: event => ENTER === event.keyCode && props.onClick(),
13
- style: {
14
- cursor: 'pointer',
15
- ...style
16
- },
17
- ...props
18
- });
19
- const confirmAction = message => {
20
- // eslint-disable-next-line no-alert
21
- if (confirm(message)) {
22
- return true;
23
- }
24
- return false;
25
- };
26
- export default {
27
- InteractiveDiv,
28
- confirmAction
29
- };
@@ -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,183 +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, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
22
- const PORTAL_PARENT_ID = 'newspack-components-web-preview-wrapper';
23
-
24
- /**
25
- * Web Preview. A component to preview a website in an iframe, with device sizing options.
26
- */
27
- class WebPreview extends Component {
28
- constructor(props) {
29
- super(props);
30
- _defineProperty(this, "state", {
31
- device: 'desktop',
32
- loaded: false,
33
- isPreviewVisible: false
34
- });
35
- /**
36
- * Create JSX for the modal
37
- */
38
- _defineProperty(this, "getWebPreviewModal", () => {
39
- const {
40
- beforeLoad = () => {},
41
- onClose = () => {},
42
- url
43
- } = this.props;
44
- const {
45
- device,
46
- loaded,
47
- isPreviewVisible
48
- } = this.state;
49
- if (!this.modalDOMElement || !isPreviewVisible) {
50
- return null;
51
- }
52
- const classes = classnames('newspack-web-preview', device, loaded && 'is-loaded');
53
- beforeLoad();
54
- return createPortal(_jsx("div", {
55
- className: classes,
56
- children: _jsxs("div", {
57
- className: "newspack-web-preview__interior",
58
- children: [_jsxs("div", {
59
- className: "newspack-web-preview__toolbar",
60
- children: [_jsx("div", {
61
- className: "newspack-web-preview__toolbar-left",
62
- children: _jsxs(ButtonGroup, {
63
- children: [_jsx(Button, {
64
- onClick: () => this.setState({
65
- device: 'desktop'
66
- }),
67
- variant: 'desktop' === device && 'primary',
68
- icon: desktop,
69
- label: __('Preview Desktop Size', 'newspack-plugin')
70
- }), _jsx(Button, {
71
- onClick: () => this.setState({
72
- device: 'tablet'
73
- }),
74
- variant: 'tablet' === device && 'primary',
75
- icon: tablet,
76
- label: __('Preview Tablet Size', 'newspack-plugin')
77
- }), _jsx(Button, {
78
- onClick: () => this.setState({
79
- device: 'phone'
80
- }),
81
- variant: 'phone' === device && 'primary',
82
- icon: mobile,
83
- label: __('Preview Phone Size', 'newspack-plugin')
84
- })]
85
- })
86
- }), _jsx("div", {
87
- className: "newspack-web-preview__toolbar-right",
88
- children: _jsx(Button, {
89
- onClick: () => {
90
- onClose();
91
- this.setState({
92
- isPreviewVisible: false,
93
- loaded: false
94
- });
95
- },
96
- icon: closeSmall,
97
- label: __('Close Preview', 'newspack-plugin')
98
- })
99
- })]
100
- }), _jsxs("div", {
101
- className: "newspack-web-preview__content",
102
- children: [!loaded && _jsxs("div", {
103
- className: "newspack-web-preview__is-waiting",
104
- children: [_jsx(Waiting, {
105
- isLeft: true
106
- }), __('Loading…', 'newspack-plugin')]
107
- }), _jsx("iframe", {
108
- ref: this.iframeRef,
109
- title: "web-preview",
110
- src: url,
111
- onLoad: () => {
112
- this.setState({
113
- loaded: true
114
- });
115
- this.props.onLoad(this.iframeRef.current);
116
- }
117
- })]
118
- })]
119
- })
120
- }), this.modalDOMElement);
121
- });
122
- _defineProperty(this, "showPreview", () => {
123
- this.setState({
124
- isPreviewVisible: true
125
- });
126
- });
127
- this.iframeRef = createRef();
128
- }
129
-
130
- /**
131
- * If a div with id PORTAL_PARENT_ID exists, assign it to class field.
132
- * If not, create it and append to the body.
133
- */
134
- componentDidMount() {
135
- const existingDOMElement = document.getElementById(PORTAL_PARENT_ID);
136
- this.modalDOMElement = existingDOMElement || document.createElement('div');
137
- if (!existingDOMElement) {
138
- this.modalDOMElement.id = PORTAL_PARENT_ID;
139
- document.body.appendChild(this.modalDOMElement);
140
- }
141
- }
142
-
143
- /**
144
- * Add or remove applicable body classes
145
- */
146
- componentDidUpdate() {
147
- if (this.state.isPreviewVisible === true) {
148
- document.body.classList.add('newspack-web-preview--open');
149
- } else {
150
- document.body.classList.remove('newspack-web-preview--open');
151
- }
152
- }
153
- /**
154
- * Render.
155
- */
156
- render() {
157
- const {
158
- label,
159
- variant,
160
- /**
161
- * Inversion of control - let the caller render
162
- * the button that will trigger the modal
163
- */
164
- renderButton
165
- } = this.props;
166
- return _jsxs(Fragment, {
167
- children: [renderButton ? renderButton({
168
- showPreview: this.showPreview
169
- }) : _jsx(Button, {
170
- variant: variant,
171
- onClick: this.showPreview,
172
- tabIndex: "0",
173
- children: label
174
- }), this.getWebPreviewModal()]
175
- });
176
- }
177
- }
178
- WebPreview.defaultProps = {
179
- url: '//newspack.com',
180
- label: __('Preview', 'newspack-plugin'),
181
- onLoad: () => {}
182
- };
183
- export default WebPreview;