@contentful/field-editor-shared 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useActiveLocales", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return useActiveLocales;
9
+ }
10
+ });
11
+ const _react = require("react");
12
+ function useActiveLocales(sdk) {
13
+ const [activeLocales, setActiveLocales] = (0, _react.useState)([]);
14
+ (0, _react.useEffect)(()=>{
15
+ if (!sdk.editor) {
16
+ setActiveLocales(sdk.locales.available.map((code)=>({
17
+ code
18
+ })));
19
+ return;
20
+ }
21
+ const availableLocales = new Set(sdk.locales.available);
22
+ const updateLocales = (settings)=>{
23
+ let localeCodes = [];
24
+ if (settings.mode === 'multi' && settings.active) {
25
+ localeCodes = settings.active.filter((locale)=>availableLocales.has(locale));
26
+ } else if (settings.mode === 'single' && settings.focused && availableLocales.has(settings.focused)) {
27
+ localeCodes = [
28
+ settings.focused
29
+ ];
30
+ }
31
+ setActiveLocales(localeCodes.map((code)=>({
32
+ code
33
+ })));
34
+ };
35
+ updateLocales(sdk.editor.getLocaleSettings());
36
+ const unsubscribe = sdk.editor.onLocaleSettingsChanged(updateLocales);
37
+ return ()=>{
38
+ unsubscribe();
39
+ };
40
+ }, [
41
+ sdk.editor,
42
+ sdk.locales.available
43
+ ]);
44
+ return activeLocales;
45
+ }
@@ -98,10 +98,12 @@ describe('useLocalePublishStatus', ()=>{
98
98
  linkType: 'ContentType',
99
99
  id: 'content-type'
100
100
  }
101
- },
102
- automationTags: []
101
+ }
103
102
  },
104
- fields: {}
103
+ fields: {
104
+ title: {},
105
+ file: {}
106
+ }
105
107
  };
106
108
  const { result } = (0, _reacthooks.renderHook)(()=>(0, _useLocalePublishStatus.useLocalePublishStatus)(entity, localesAPI));
107
109
  expect(result.current).toEqual(new Map([
package/dist/cjs/index.js CHANGED
@@ -112,6 +112,7 @@ const _typesEntity = require("./typesEntity");
112
112
  const _isValidImage = require("./utils/isValidImage");
113
113
  const _shortenStorageUnit = require("./utils/shortenStorageUnit");
114
114
  _export_star(require("./hooks/useLocalePublishStatus"), exports);
115
+ _export_star(require("./hooks/useActiveLocales"), exports);
115
116
  _export_star(require("./LocalePublishingEntityStatusBadge"), exports);
116
117
  const _ModalDialogLauncher = _interop_require_wildcard(require("./ModalDialogLauncher"));
117
118
  const _constraints = _interop_require_wildcard(require("./utils/constraints"));
@@ -0,0 +1,35 @@
1
+ import { useEffect, useState } from 'react';
2
+ export function useActiveLocales(sdk) {
3
+ const [activeLocales, setActiveLocales] = useState([]);
4
+ useEffect(()=>{
5
+ if (!sdk.editor) {
6
+ setActiveLocales(sdk.locales.available.map((code)=>({
7
+ code
8
+ })));
9
+ return;
10
+ }
11
+ const availableLocales = new Set(sdk.locales.available);
12
+ const updateLocales = (settings)=>{
13
+ let localeCodes = [];
14
+ if (settings.mode === 'multi' && settings.active) {
15
+ localeCodes = settings.active.filter((locale)=>availableLocales.has(locale));
16
+ } else if (settings.mode === 'single' && settings.focused && availableLocales.has(settings.focused)) {
17
+ localeCodes = [
18
+ settings.focused
19
+ ];
20
+ }
21
+ setActiveLocales(localeCodes.map((code)=>({
22
+ code
23
+ })));
24
+ };
25
+ updateLocales(sdk.editor.getLocaleSettings());
26
+ const unsubscribe = sdk.editor.onLocaleSettingsChanged(updateLocales);
27
+ return ()=>{
28
+ unsubscribe();
29
+ };
30
+ }, [
31
+ sdk.editor,
32
+ sdk.locales.available
33
+ ]);
34
+ return activeLocales;
35
+ }
@@ -94,10 +94,12 @@ describe('useLocalePublishStatus', ()=>{
94
94
  linkType: 'ContentType',
95
95
  id: 'content-type'
96
96
  }
97
- },
98
- automationTags: []
97
+ }
99
98
  },
100
- fields: {}
99
+ fields: {
100
+ title: {},
101
+ file: {}
102
+ }
101
103
  };
102
104
  const { result } = renderHook(()=>useLocalePublishStatus(entity, localesAPI));
103
105
  expect(result.current).toEqual(new Map([
package/dist/esm/index.js CHANGED
@@ -7,6 +7,7 @@ export { Asset, Entry, File } from './typesEntity';
7
7
  export { isValidImage } from './utils/isValidImage';
8
8
  export { shortenStorageUnit, toLocaleString } from './utils/shortenStorageUnit';
9
9
  export * from './hooks/useLocalePublishStatus';
10
+ export * from './hooks/useActiveLocales';
10
11
  export { ModalDialogLauncher };
11
12
  export { entityHelpers };
12
13
  export { ConstraintsUtils };
@@ -0,0 +1,8 @@
1
+ import { BaseAppSDK, SharedEditorSDK } from '@contentful/app-sdk';
2
+ export type SDK = {
3
+ editor?: SharedEditorSDK['editor'];
4
+ locales: Pick<BaseAppSDK['locales'], 'available'>;
5
+ };
6
+ export declare function useActiveLocales(sdk: SDK): {
7
+ code: string;
8
+ }[];
@@ -8,6 +8,7 @@ export { Asset, Entry, File } from './typesEntity';
8
8
  export { isValidImage } from './utils/isValidImage';
9
9
  export { shortenStorageUnit, toLocaleString } from './utils/shortenStorageUnit';
10
10
  export * from './hooks/useLocalePublishStatus';
11
+ export * from './hooks/useActiveLocales';
11
12
  export { ModalDialogLauncher };
12
13
  export { entityHelpers };
13
14
  export { ConstraintsUtils };
@@ -55,13 +55,8 @@ export declare function getEntryTitle({ entry, contentType, localeCode, defaultL
55
55
  defaultLocaleCode: string;
56
56
  defaultTitle: string;
57
57
  }): string;
58
- type AsyncPublishStatus = 'draft' | 'published' | 'changed';
59
- type FieldStatus = {
60
- '*': Record<string, AsyncPublishStatus>;
61
- };
62
- export type EntitySys = (Entry['sys'] | Asset['sys']) & {
63
- fieldStatus?: FieldStatus;
64
- };
58
+ type FieldStatus = 'draft' | 'published' | 'changed';
59
+ export type EntitySys = Entry['sys'] | Asset['sys'];
65
60
  /**
66
61
  * Returns the status of the entry/asset
67
62
  * If a locale code(s) is provided it will pick up the most advanced state for these locale(s)
@@ -72,11 +67,9 @@ export type EntitySys = (Entry['sys'] | Asset['sys']) & {
72
67
  * - published
73
68
  * - draft
74
69
  */
75
- export declare function getEntityStatus(sys: EntitySys, localeCodes?: string | string[]): AsyncPublishStatus | "deleted" | "archived";
70
+ export declare function getEntityStatus(sys: EntitySys, localeCodes?: string | string[]): FieldStatus | "deleted" | "archived";
76
71
  /**@deprecated use `getEntityStatus` */
77
- export declare function getEntryStatus(sys: Entry['sys'] & {
78
- fieldStatus?: FieldStatus;
79
- }, localeCodes?: string | string[]): AsyncPublishStatus | "deleted" | "archived";
72
+ export declare function getEntryStatus(sys: Entry['sys'], localeCodes?: string | string[]): FieldStatus | "deleted" | "archived";
80
73
  /**
81
74
  * Gets a promise resolving with a localized asset image field representing a
82
75
  * given entities file. The promise may resolve with null.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/field-editor-shared",
3
- "version": "2.3.1",
3
+ "version": "2.4.0",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -43,7 +43,7 @@
43
43
  "@contentful/f36-components": "^4.70.0",
44
44
  "@contentful/f36-note": "^4.70.0",
45
45
  "@contentful/f36-tokens": "^4.0.5",
46
- "contentful-management": "^11.41.0",
46
+ "contentful-management": "^11.45.1",
47
47
  "emotion": "^10.0.17",
48
48
  "fast-deep-equal": "^3.1.3",
49
49
  "lodash": "^4.17.15"
@@ -55,5 +55,5 @@
55
55
  "publishConfig": {
56
56
  "registry": "https://npm.pkg.github.com/"
57
57
  },
58
- "gitHead": "21b8e36ce7ed50abfe2a3a477103d5de1043674b"
58
+ "gitHead": "acf662acf17e749090975671bf14ce107ac9c499"
59
59
  }