@sanity/language-filter 2.28.0 → 2.29.3

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.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2016 - 2021 Sanity.io
3
+ Copyright (c) 2016 - 2022 Sanity.io
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -3,6 +3,6 @@ import { SchemaType } from '@sanity/types';
3
3
  interface Props {
4
4
  schemaType?: SchemaType;
5
5
  }
6
- declare const SelectLanguageProvider: ({ schemaType }: Props) => JSX.Element;
6
+ declare const SelectLanguageProvider: ({ schemaType }: Props) => JSX.Element | null;
7
7
  export default SelectLanguageProvider;
8
8
  //# sourceMappingURL=SelectLanguageProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectLanguageProvider.d.ts","sourceRoot":"","sources":["../../src/SelectLanguageProvider.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAKxC,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,QAAA,MAAM,sBAAsB,mBAAkB,KAAK,gBA8BlD,CAAA;AAED,eAAe,sBAAsB,CAAA"}
1
+ {"version":3,"file":"SelectLanguageProvider.d.ts","sourceRoot":"","sources":["../../src/SelectLanguageProvider.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAMxC,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,QAAA,MAAM,sBAAsB,mBAAkB,KAAK,uBAoDlD,CAAA;AAED,eAAe,sBAAsB,CAAA"}
@@ -9,6 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _config = _interopRequireDefault(require("part:@sanity/language-filter/config"));
11
11
 
12
+ var _languageSelectComponent = _interopRequireDefault(require("all:part:@sanity/desk-tool/language-select-component"));
13
+
12
14
  var _datastore = require("./datastore");
13
15
 
14
16
  var _SelectLanguage = _interopRequireDefault(require("./SelectLanguage"));
@@ -45,6 +47,19 @@ var SelectLanguageProvider = _ref => {
45
47
  currentDocumentType = _useState4[0],
46
48
  setCurrentDocumentType = _useState4[1];
47
49
 
50
+ var shouldShow = (0, _react.useMemo)(() => {
51
+ var documentTypes = _config.default.documentTypes;
52
+ return !!(documentTypes && schemaType !== null && schemaType !== void 0 && schemaType.name && documentTypes.includes(schemaType.name));
53
+ }, [schemaType]);
54
+ var FallbackImplementation = (0, _react.useMemo)(() => {
55
+ if (_languageSelectComponent.default && Array.isArray(_languageSelectComponent.default)) {
56
+ var _languageFilterImplem, _languageFilterImplem2;
57
+
58
+ return (_languageFilterImplem = _languageSelectComponent.default === null || _languageSelectComponent.default === void 0 ? void 0 : (_languageFilterImplem2 = _languageSelectComponent.default.filter(component => SelectLanguageProvider !== component)) === null || _languageFilterImplem2 === void 0 ? void 0 : _languageFilterImplem2[0]) !== null && _languageFilterImplem !== void 0 ? _languageFilterImplem : null;
59
+ }
60
+
61
+ return null;
62
+ }, []);
48
63
  (0, _react.useEffect)(() => {
49
64
  setCurrentDocumentType(schemaType === null || schemaType === void 0 ? void 0 : schemaType.name);
50
65
  }, [schemaType]);
@@ -58,14 +73,25 @@ var SelectLanguageProvider = _ref => {
58
73
  }
59
74
  };
60
75
  }, []);
61
- return /*#__PURE__*/_react.default.createElement(_SelectLanguage.default, {
62
- languages: _config.default.supportedLanguages,
63
- defaultLanguages: _config.default.defaultLanguages,
64
- documentTypes: _config.default.documentTypes,
65
- currentDocumentType: currentDocumentType,
66
- selected: selected,
67
- onChange: _datastore.setLangs
68
- });
76
+
77
+ if (shouldShow) {
78
+ return /*#__PURE__*/_react.default.createElement(_SelectLanguage.default, {
79
+ languages: _config.default.supportedLanguages,
80
+ defaultLanguages: _config.default.defaultLanguages,
81
+ documentTypes: _config.default.documentTypes,
82
+ currentDocumentType: currentDocumentType,
83
+ selected: selected,
84
+ onChange: _datastore.setLangs
85
+ });
86
+ }
87
+
88
+ if (FallbackImplementation) {
89
+ return /*#__PURE__*/_react.default.createElement(FallbackImplementation, {
90
+ schemaType: schemaType
91
+ });
92
+ }
93
+
94
+ return null;
69
95
  };
70
96
 
71
97
  var _default = SelectLanguageProvider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/language-filter",
3
- "version": "2.28.0",
3
+ "version": "2.29.3",
4
4
  "description": "A Sanity plugin that supports filtering localized fields by language",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -16,7 +16,7 @@
16
16
  ],
17
17
  "dependencies": {
18
18
  "@sanity/icons": "^1.2.1",
19
- "@sanity/types": "2.28.0",
19
+ "@sanity/types": "2.29.3",
20
20
  "@sanity/ui": "^0.37.2",
21
21
  "lodash": "^4.17.15",
22
22
  "rxjs": "^6.5.3"
@@ -39,5 +39,5 @@
39
39
  "publishConfig": {
40
40
  "access": "public"
41
41
  },
42
- "gitHead": "ec26f91811d213a11e61af53053596d750704491"
42
+ "gitHead": "01422a8d4b1eae4b1491dbaf5da9bafc7823c4ea"
43
43
  }
@@ -1,10 +1,11 @@
1
1
  // @todo: remove the following line when part imports has been removed from this file
2
2
  ///<reference types="@sanity/types/parts" />
3
3
 
4
- import React, {useRef, useEffect, useState} from 'react'
4
+ import React, {useRef, useEffect, useState, useMemo} from 'react'
5
5
  import config from 'part:@sanity/language-filter/config'
6
6
  import {SchemaType} from '@sanity/types'
7
7
  import {Subscription} from 'rxjs'
8
+ import languageFilterImplementations from 'all:part:@sanity/desk-tool/language-select-component'
8
9
  import {selectedLanguages$, setLangs} from './datastore'
9
10
  import SelectLanguage from './SelectLanguage'
10
11
 
@@ -16,6 +17,20 @@ const SelectLanguageProvider = ({schemaType}: Props) => {
16
17
  const subscriptionRef$ = useRef<Subscription | null>(null)
17
18
  const [selected, setSelected] = useState<string[]>([])
18
19
  const [currentDocumentType, setCurrentDocumentType] = useState<string | undefined>()
20
+ const shouldShow = useMemo(() => {
21
+ const {documentTypes} = config
22
+ return !!(documentTypes && schemaType?.name && documentTypes.includes(schemaType.name))
23
+ }, [schemaType])
24
+ const FallbackImplementation = useMemo(() => {
25
+ if (languageFilterImplementations && Array.isArray(languageFilterImplementations)) {
26
+ return (
27
+ languageFilterImplementations?.filter(
28
+ (component) => SelectLanguageProvider !== component
29
+ )?.[0] ?? null
30
+ )
31
+ }
32
+ return null
33
+ }, [])
19
34
 
20
35
  useEffect(() => {
21
36
  setCurrentDocumentType(schemaType?.name)
@@ -32,16 +47,24 @@ const SelectLanguageProvider = ({schemaType}: Props) => {
32
47
  }
33
48
  }, [])
34
49
 
35
- return (
36
- <SelectLanguage
37
- languages={config.supportedLanguages}
38
- defaultLanguages={config.defaultLanguages}
39
- documentTypes={config.documentTypes}
40
- currentDocumentType={currentDocumentType}
41
- selected={selected}
42
- onChange={setLangs}
43
- />
44
- )
50
+ if (shouldShow) {
51
+ return (
52
+ <SelectLanguage
53
+ languages={config.supportedLanguages}
54
+ defaultLanguages={config.defaultLanguages}
55
+ documentTypes={config.documentTypes}
56
+ currentDocumentType={currentDocumentType}
57
+ selected={selected}
58
+ onChange={setLangs}
59
+ />
60
+ )
61
+ }
62
+
63
+ if (FallbackImplementation) {
64
+ return <FallbackImplementation schemaType={schemaType} />
65
+ }
66
+
67
+ return null
45
68
  }
46
69
 
47
70
  export default SelectLanguageProvider