@vonaffenfels/contentful-teasermanager 1.1.66 → 1.1.68

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 (34) hide show
  1. package/.babelrc +19 -19
  2. package/.nvmrc +1 -1
  3. package/dist/TestStory.js +94 -0
  4. package/dist/TestStory2.js +94 -0
  5. package/dist/TestStory3.js +94 -0
  6. package/dist/index.html +11 -11
  7. package/dist/index.js +42321 -26062
  8. package/package.json +2 -2
  9. package/postcss.config.js +6 -6
  10. package/src/components/Contentful/ConfigScreen.js +154 -154
  11. package/src/components/Contentful/Dialog/NewestArticles.js +178 -178
  12. package/src/components/Contentful/Dialog.js +58 -58
  13. package/src/components/Contentful/EntryEditor.js +139 -139
  14. package/src/components/Contentful/Page.js +9 -9
  15. package/src/components/NoAccess.js +12 -12
  16. package/src/components/Teasermanager/Timeline.js +179 -179
  17. package/src/components/Teasermanager/Timeline.module.css +89 -89
  18. package/src/components/Teasermanager.js +237 -237
  19. package/src/components/Teasermanager.module.css +105 -105
  20. package/src/dev.js +5 -5
  21. package/src/hooks/useDebounce.js +20 -20
  22. package/src/hooks/useOnScreen.js +23 -23
  23. package/src/icons/remove.svg +7 -7
  24. package/src/index.html +11 -11
  25. package/src/index.js +51 -51
  26. package/src/lib/contentfulClient.js +12 -12
  27. package/src/lib/runLoaders.js +46 -46
  28. package/src/scss/index.scss +11 -11
  29. package/tailwind.config.js +5 -5
  30. package/webpack.config.dev.js +25 -25
  31. package/webpack.config.js +174 -174
  32. package/dist/_base_slate-editor_src_dev_testComponents_TestStory2_js.js +0 -94
  33. package/dist/_base_slate-editor_src_dev_testComponents_TestStory3_js.js +0 -94
  34. package/dist/_base_slate-editor_src_dev_testComponents_TestStory_js.js +0 -94
@@ -1,139 +1,139 @@
1
- import React, {
2
- useEffect, useState,
3
- } from 'react';
4
- import {Teasermanager} from "../Teasermanager";
5
- import {NoAccess} from "../NoAccess";
6
-
7
- const Entry = ({sdk}) => {
8
- const contentField = sdk.parameters.instance.contentField;
9
- const [locale, setLocale] = useState(sdk.locales.default);
10
- const [portal, setPortal] = useState();
11
- const portalField = sdk?.entry?.fields?.portal;
12
- const enabled = !sdk?.parameters?.installation?.usersWithAccess?.[portal] || sdk?.parameters?.installation?.usersWithAccess?.[portal]?.includes(sdk?.user?.email);
13
-
14
- portalField?.onValueChanged(() => {
15
- if (portalField.getValue() !== portal) {
16
- setPortal(portalField.getValue());
17
- }
18
- });
19
-
20
- useEffect(() => {
21
- const detachHandler = sdk.editor.onLocaleSettingsChanged((loc) => {
22
- setLocale(loc?.focused || sdk.locales.default);
23
- });
24
-
25
- return () => {
26
- detachHandler();
27
- };
28
- }, []);
29
-
30
- const onSlotClick = (slotId, currentDate) => {
31
- return sdk.dialogs.openCurrentApp({
32
- title: "Artikel wählen",
33
- width: "fullWidth",
34
- position: "top",
35
- allowHeightOverflow: true,
36
- minHeight: "500px",
37
- shouldCloseOnOverlayClick: true,
38
- shouldCloseOnEscapePress: true,
39
- parameters: {
40
- portal,
41
- date: currentDate,
42
- slotId: slotId,
43
- entryId: sdk.entry.getSys().id,
44
- },
45
- }).then(async (entry) => {
46
- if (!entry) {
47
- return;
48
- }
49
-
50
- console.log(`Selected entry ${entry.sys.id} for page ${sdk.entry.getSys().id} with portal ${portal} for slot ${slotId} and date ${currentDate}`);
51
-
52
- const {apiRoot} = sdk.parameters.instance;
53
- try {
54
- const response = await fetch(`${apiRoot}/api/saveStateForSlot`, {
55
- method: "POST",
56
- body: JSON.stringify({
57
- "project": portal,
58
- "slot": slotId,
59
- "page": sdk.entry.getSys().id,
60
- "entry": entry.sys.id,
61
- "date": currentDate,
62
- }),
63
- });
64
- return entry;
65
- } catch (e) {
66
- console.error(e);
67
- alert("Fehler beim speichern!");
68
- }
69
- });
70
- };
71
-
72
- const removeSlotData = async (slotId, currentDate) => {
73
- console.log(`Removing slot data for page ${sdk.entry.getSys().id} with portal ${portal} for slot ${slotId} and date ${currentDate}`);
74
-
75
- try {
76
- const apiRoot = sdk.parameters.instance.apiRoot;
77
- const response = await fetch(`${apiRoot}/api/saveStateForSlot`, {
78
- method: "POST",
79
- body: JSON.stringify({
80
- "project": portal,
81
- "slot": slotId,
82
- "page": sdk.entry.getSys().id,
83
- "entry": "RESET",
84
- "date": currentDate,
85
- }),
86
- });
87
- } catch (e) {
88
- console.error(e);
89
- alert("Fehler beim speichern!");
90
- }
91
- };
92
-
93
- const loadSlotStateForPage = async (date) => {
94
- try {
95
- const apiRoot = sdk.parameters.instance.apiRoot;
96
- const teasermanagerUrl = `${apiRoot}/api/findStateForPage?project=${portal}&page=${sdk.entry.getSys().id}&date=${date.toISOString()}`;
97
- const response = await fetch(teasermanagerUrl).then(res => res.json());
98
-
99
- if (response?.message) {
100
- console.error(response.message);
101
- }
102
-
103
- return response?.data || {};
104
- } catch (e) {
105
- console.error(e);
106
- }
107
- };
108
-
109
- const loadTimelineStateForPage = async (fromDate, toDate) => {
110
- try {
111
- const apiRoot = sdk.parameters.instance.apiRoot;
112
- const teasermanagerUrl = `${apiRoot}/api/getTimelineStateForPage?project=${portal}&page=${sdk.entry.getSys().id}&fromDate=${fromDate}&toDate=${toDate}`;
113
- const response = await fetch(teasermanagerUrl).then(res => res.json());
114
-
115
- if (response?.message) {
116
- console.error(response.message);
117
- }
118
-
119
- return response?.data || {};
120
- } catch (e) {
121
- console.error(e);
122
- }
123
- };
124
-
125
- if (!enabled) {
126
- return <NoAccess sdk={sdk} portal={portal}/>;
127
- }
128
-
129
- return <Teasermanager
130
- entryId={sdk.entry.getSys().id}
131
- locale={locale}
132
- contentFieldName={contentField}
133
- loadSlotStateForPage={loadSlotStateForPage}
134
- removeSlotData={removeSlotData}
135
- loadTimelineStateForPage={loadTimelineStateForPage}
136
- onSlotClick={onSlotClick}/>;
137
- };
138
-
139
- export default Entry;
1
+ import React, {
2
+ useEffect, useState,
3
+ } from 'react';
4
+ import {Teasermanager} from "../Teasermanager";
5
+ import {NoAccess} from "../NoAccess";
6
+
7
+ const Entry = ({sdk}) => {
8
+ const contentField = sdk.parameters.instance.contentField;
9
+ const [locale, setLocale] = useState(sdk.locales.default);
10
+ const [portal, setPortal] = useState();
11
+ const portalField = sdk?.entry?.fields?.portal;
12
+ const enabled = !sdk?.parameters?.installation?.usersWithAccess?.[portal] || sdk?.parameters?.installation?.usersWithAccess?.[portal]?.includes(sdk?.user?.email);
13
+
14
+ portalField?.onValueChanged(() => {
15
+ if (portalField.getValue() !== portal) {
16
+ setPortal(portalField.getValue());
17
+ }
18
+ });
19
+
20
+ useEffect(() => {
21
+ const detachHandler = sdk.editor.onLocaleSettingsChanged((loc) => {
22
+ setLocale(loc?.focused || sdk.locales.default);
23
+ });
24
+
25
+ return () => {
26
+ detachHandler();
27
+ };
28
+ }, []);
29
+
30
+ const onSlotClick = (slotId, currentDate) => {
31
+ return sdk.dialogs.openCurrentApp({
32
+ title: "Artikel wählen",
33
+ width: "fullWidth",
34
+ position: "top",
35
+ allowHeightOverflow: true,
36
+ minHeight: "500px",
37
+ shouldCloseOnOverlayClick: true,
38
+ shouldCloseOnEscapePress: true,
39
+ parameters: {
40
+ portal,
41
+ date: currentDate,
42
+ slotId: slotId,
43
+ entryId: sdk.entry.getSys().id,
44
+ },
45
+ }).then(async (entry) => {
46
+ if (!entry) {
47
+ return;
48
+ }
49
+
50
+ console.log(`Selected entry ${entry.sys.id} for page ${sdk.entry.getSys().id} with portal ${portal} for slot ${slotId} and date ${currentDate}`);
51
+
52
+ const {apiRoot} = sdk.parameters.instance;
53
+ try {
54
+ const response = await fetch(`${apiRoot}/api/saveStateForSlot`, {
55
+ method: "POST",
56
+ body: JSON.stringify({
57
+ "project": portal,
58
+ "slot": slotId,
59
+ "page": sdk.entry.getSys().id,
60
+ "entry": entry.sys.id,
61
+ "date": currentDate,
62
+ }),
63
+ });
64
+ return entry;
65
+ } catch (e) {
66
+ console.error(e);
67
+ alert("Fehler beim speichern!");
68
+ }
69
+ });
70
+ };
71
+
72
+ const removeSlotData = async (slotId, currentDate) => {
73
+ console.log(`Removing slot data for page ${sdk.entry.getSys().id} with portal ${portal} for slot ${slotId} and date ${currentDate}`);
74
+
75
+ try {
76
+ const apiRoot = sdk.parameters.instance.apiRoot;
77
+ const response = await fetch(`${apiRoot}/api/saveStateForSlot`, {
78
+ method: "POST",
79
+ body: JSON.stringify({
80
+ "project": portal,
81
+ "slot": slotId,
82
+ "page": sdk.entry.getSys().id,
83
+ "entry": "RESET",
84
+ "date": currentDate,
85
+ }),
86
+ });
87
+ } catch (e) {
88
+ console.error(e);
89
+ alert("Fehler beim speichern!");
90
+ }
91
+ };
92
+
93
+ const loadSlotStateForPage = async (date) => {
94
+ try {
95
+ const apiRoot = sdk.parameters.instance.apiRoot;
96
+ const teasermanagerUrl = `${apiRoot}/api/findStateForPage?project=${portal}&page=${sdk.entry.getSys().id}&date=${date.toISOString()}`;
97
+ const response = await fetch(teasermanagerUrl).then(res => res.json());
98
+
99
+ if (response?.message) {
100
+ console.error(response.message);
101
+ }
102
+
103
+ return response?.data || {};
104
+ } catch (e) {
105
+ console.error(e);
106
+ }
107
+ };
108
+
109
+ const loadTimelineStateForPage = async (fromDate, toDate) => {
110
+ try {
111
+ const apiRoot = sdk.parameters.instance.apiRoot;
112
+ const teasermanagerUrl = `${apiRoot}/api/getTimelineStateForPage?project=${portal}&page=${sdk.entry.getSys().id}&fromDate=${fromDate}&toDate=${toDate}`;
113
+ const response = await fetch(teasermanagerUrl).then(res => res.json());
114
+
115
+ if (response?.message) {
116
+ console.error(response.message);
117
+ }
118
+
119
+ return response?.data || {};
120
+ } catch (e) {
121
+ console.error(e);
122
+ }
123
+ };
124
+
125
+ if (!enabled) {
126
+ return <NoAccess sdk={sdk} portal={portal}/>;
127
+ }
128
+
129
+ return <Teasermanager
130
+ entryId={sdk.entry.getSys().id}
131
+ locale={locale}
132
+ contentFieldName={contentField}
133
+ loadSlotStateForPage={loadSlotStateForPage}
134
+ removeSlotData={removeSlotData}
135
+ loadTimelineStateForPage={loadTimelineStateForPage}
136
+ onSlotClick={onSlotClick}/>;
137
+ };
138
+
139
+ export default Entry;
@@ -1,9 +1,9 @@
1
- import React from 'react';
2
- import {Teasermanager} from "../Teasermanager";
3
- import {NoAccess} from "../NoAccess";
4
-
5
- const Page = ({sdk}) => {
6
- return <Teasermanager entryId={"4RvZ6fcUtBIgw2Hw5YILPs"} />;
7
- };
8
-
9
- export default Page;
1
+ import React from 'react';
2
+ import {Teasermanager} from "../Teasermanager";
3
+ import {NoAccess} from "../NoAccess";
4
+
5
+ const Page = ({sdk}) => {
6
+ return <Teasermanager entryId={"4RvZ6fcUtBIgw2Hw5YILPs"} />;
7
+ };
8
+
9
+ export default Page;
@@ -1,13 +1,13 @@
1
- import {
2
- DisplayText, Flex, Paragraph,
3
- } from "@contentful/f36-components";
4
-
5
- export const NoAccess = ({sdk}) => {
6
- return <Flex flexDirection="column" alignItems="center" paddingTop="spacing2Xl">
7
- <DisplayText>
8
- Kein Zugriff
9
- </DisplayText>
10
- <Paragraph>Bitte wenden Sie sich an einen Administrator wenn sie Zugriff benötigen</Paragraph>
11
- <Paragraph>Angemeldeter Benutzer: {sdk?.user?.email}</Paragraph>
12
- </Flex>;
1
+ import {
2
+ DisplayText, Flex, Paragraph,
3
+ } from "@contentful/f36-components";
4
+
5
+ export const NoAccess = ({sdk}) => {
6
+ return <Flex flexDirection="column" alignItems="center" paddingTop="spacing2Xl">
7
+ <DisplayText>
8
+ Kein Zugriff
9
+ </DisplayText>
10
+ <Paragraph>Bitte wenden Sie sich an einen Administrator wenn sie Zugriff benötigen</Paragraph>
11
+ <Paragraph>Angemeldeter Benutzer: {sdk?.user?.email}</Paragraph>
12
+ </Flex>;
13
13
  };