box-ui-elements 23.4.0-beta.26 → 23.4.0-beta.27
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/dist/explorer.js +1 -1
- package/dist/openwith.js +1 -1
- package/dist/picker.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sharing.js +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/uploader.js +1 -1
- package/es/elements/common/sub-header/SubHeader.js +37 -30
- package/es/elements/common/sub-header/SubHeader.js.map +1 -1
- package/es/elements/common/sub-header/SubHeaderRight.js +17 -3
- package/es/elements/common/sub-header/SubHeaderRight.js.map +1 -1
- package/es/elements/common/sub-header/messages.js +9 -0
- package/es/elements/common/sub-header/messages.js.map +1 -0
- package/es/elements/content-explorer/Content.js +3 -3
- package/es/elements/content-explorer/Content.js.map +1 -1
- package/es/elements/content-explorer/ContentExplorer.js +2 -2
- package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
- package/es/src/elements/common/sub-header/messages.d.ts +8 -0
- package/i18n/bn-IN.js +1 -0
- package/i18n/da-DK.js +1 -0
- package/i18n/de-DE.js +1 -0
- package/i18n/en-AU.js +1 -0
- package/i18n/en-CA.js +1 -0
- package/i18n/en-GB.js +1 -0
- package/i18n/en-US.js +1 -0
- package/i18n/en-US.properties +2 -0
- package/i18n/en-x-pseudo.js +4 -3
- package/i18n/es-419.js +1 -0
- package/i18n/es-ES.js +1 -0
- package/i18n/fi-FI.js +1 -0
- package/i18n/fr-CA.js +1 -0
- package/i18n/fr-FR.js +1 -0
- package/i18n/hi-IN.js +1 -0
- package/i18n/it-IT.js +1 -0
- package/i18n/ja-JP.js +1 -0
- package/i18n/ko-KR.js +1 -0
- package/i18n/nb-NO.js +1 -0
- package/i18n/nl-NL.js +1 -0
- package/i18n/pl-PL.js +1 -0
- package/i18n/pt-BR.js +1 -0
- package/i18n/ru-RU.js +1 -0
- package/i18n/sv-SE.js +1 -0
- package/i18n/tr-TR.js +1 -0
- package/i18n/zh-CN.js +1 -0
- package/i18n/zh-TW.js +1 -0
- package/package.json +1 -1
- package/src/elements/common/sub-header/SubHeader.tsx +46 -35
- package/src/elements/common/sub-header/SubHeaderRight.tsx +43 -22
- package/src/elements/common/sub-header/messages.ts +11 -0
- package/src/elements/content-explorer/Content.tsx +3 -5
- package/src/elements/content-explorer/ContentExplorer.tsx +24 -26
- package/src/elements/content-explorer/__tests__/ContentExplorer.test.tsx +35 -2
package/i18n/en-x-pseudo.js
CHANGED
|
@@ -607,8 +607,6 @@ export default {
|
|
|
607
607
|
"boxui.media.menuButtonArialLabel": "⟦萬萬 ΌΡτïσйŝ 國國⟧",
|
|
608
608
|
"boxui.metadataInstanceEditor.aiAutofillDescription": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Ũѕє Бŏ× ÁÌ τő ǻũťömāτіĉāľĺý êхŧřàćť mεťáďāţā νăļµèś. 國國國國國國國國國國國國國國國⟧",
|
|
609
609
|
"boxui.metadataInstanceEditor.aiAutofillLearnMore": "⟦萬萬 Ľёάŕņ möŗê 國國⟧",
|
|
610
|
-
"boxui.metadataInstanceEditor.aiAutofillNotice": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Èńåвļіήğ τĥίş ƒєãťúŕé mäỳ ìπνσľνё ǻďďïτίőηąĺ ¢ĥáŕĝèś. Pĺėάşέ ѓένïеш όµг {pricingLink} ƒóŕ móѓĕ іήƒόŗmäťįőп. 國國國國國國國國國國國國國國國國國國國國國國國國國國國國國⟧",
|
|
611
|
-
"boxui.metadataInstanceEditor.aiAutofillPricingDetails": "⟦萬萬萬萬 Ρŕîċїηġ ďéŧãϊľѕ 國國國國⟧",
|
|
612
610
|
"boxui.metadataInstanceEditor.allAttributesAreHidden": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Ãľĺ àţŧříьűťèś īń ţħїѕ ŧεmΡļåţè нâνĕ ьєěл ĥíďďèň. 國國國國國國國國國國國國國國⟧",
|
|
613
611
|
"boxui.metadataInstanceEditor.applyCascadePolicyText": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 ĀΡΡľý ťémΡļāŧĕ äňď ϊŧŝ νáļúěş ţō âĺĺ ηέш ăŋď ê×ĩŝτīпğ íťєmś ĩл ťĥĩś ƒоĺďéѓ åήď іţś ŝцьƒöľďєгŝ. 國國國國國國國國國國國國國國國國國國國國國國國國國國國國⟧",
|
|
614
612
|
"boxui.metadataInstanceEditor.cannotApplyCascadePolicyText": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Ċąѕĉąďè Ρôľìçў ċǻŋйōτ ьē ǻΡΡļĩєď ťô ċũşťőm měťåďãťâ åŧ ťĥĭѕ ţĩmê. 國國國國國國國國國國國國國國國國國國國⟧",
|
|
@@ -908,6 +906,7 @@ export default {
|
|
|
908
906
|
"boxui.shareMenu.shortcutOnly": "⟦萬萬萬 Ѕĥσŕť¢ŭť Õňĺγ 國國國⟧",
|
|
909
907
|
"boxui.shareMenu.viewAndDownload": "⟦萬萬萬萬萬 Vîéω åŋď Ďōŵπĺôāď 國國國國國⟧",
|
|
910
908
|
"boxui.shareMenu.viewOnly": "⟦萬萬 Víеш Οʼnļў 國國⟧",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
911
910
|
"boxui.timeInput.emptyTimeError": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Яėqüíŗėď ƒīёľď. Ėňτêŕ â ťϊmê ίņ ťħέ ƒôгmāŧ ĤĦ:ММ Α. 國國國國國國國國國國國國國國國⟧",
|
|
912
911
|
"boxui.timeInput.invalidTimeError": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Іŋνάļίď ťìmĕ ƒōґmατ. Σņţεґ á τιmё ïń τнė ƒŏяmāť ΉΗ:МΜ Å. 國國國國國國國國國國國國國國國國⟧",
|
|
913
912
|
"boxui.unifiedShare.collabAccess": "⟦萬萬萬萬萬 çōľľáвóŗǻŧοŕ āсćèŝѕ 國國國國國⟧",
|
|
@@ -1022,5 +1021,7 @@ export default {
|
|
|
1022
1021
|
"boxui.validation.invalidUserError": "⟦萬萬萬 İňνâļįď Üѕëя 國國國⟧",
|
|
1023
1022
|
"boxui.validation.requiredError": "⟦萬萬萬萬 Ѓεqµĭгęď ₣ϊèĺď 國國國國⟧",
|
|
1024
1023
|
"boxui.validation.tooLongError": "⟦萬萬萬萬萬萬萬萬萬萬 ĮʼnΡûť ¢άпйöţ ē×¢εéď {max} čħăѓãçťěґş 國國國國國國國國國國⟧",
|
|
1025
|
-
"boxui.validation.tooShortError": "⟦萬萬萬萬萬萬萬萬萬萬萬 ΊńΡúŧ mûŝţ ьє äţ ĺęáśţ {min} ĉħąгāčτёґѕ 國國國國國國國國國國國⟧"
|
|
1024
|
+
"boxui.validation.tooShortError": "⟦萬萬萬萬萬萬萬萬萬萬萬 ΊńΡúŧ mûŝţ ьє äţ ĺęáśţ {min} ĉħąгāčτёґѕ 國國國國國國國國國國國⟧",
|
|
1025
|
+
"boxui.metadataInstanceEditor.aiAutofillNotice": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬萬 Èńåвļіήğ τĥίş ƒєãťúŕé mäỳ ìπνσľνё ǻďďïτίőηąĺ ¢ĥáŕĝèś. Pĺėάşέ ѓένïеш όµг {pricingLink} ƒóŕ móѓĕ іήƒόŗmäťįőп. 國國國國國國國國國國國國國國國國國國國國國國國國國國國國國⟧",
|
|
1026
|
+
"boxui.metadataInstanceEditor.aiAutofillPricingDetails": "⟦萬萬萬萬 Ρŕîċїηġ ďéŧãϊľѕ 國國國國⟧"
|
|
1026
1027
|
}
|
package/i18n/es-419.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Solo acceso directo",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Visualización y descarga",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Solo visualización",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Campo obligatorio. Introduzca una hora con el formato HH:MM A.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Formato de hora no válido. Introduzca una hora con el formato HH:MM A.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "acceso de colaborador",
|
package/i18n/es-ES.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Solo acceso directo",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Visualización y descarga",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Solo visualización",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Campo obligatorio. Introduzca una hora con el formato HH:MM A.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Formato de hora no válido. Introduzca una hora con el formato HH:MM A.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "acceso de colaborador",
|
package/i18n/fi-FI.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Vain pikakuvake",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Luku ja lataus",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Vain luku",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Pakollinen kenttä. Kirjoita aika muodossa HH:MM A.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Virheellinen ajan muoto. Kirjoita aika muodossa HH:MM A.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "yhteistyökumppanin käyttöoikeustaso",
|
package/i18n/fr-CA.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Raccourci uniquement",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Afficher et télécharger",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Uniquement pour consultation",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Champ obligatoire. Entrez un horaire au format HH h MM.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Format d'horaire non valide. Entrez un horaire au format HH h MM.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "Accès collaborateur",
|
package/i18n/fr-FR.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Raccourci uniquement",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Afficher et télécharger",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Uniquement pour consultation",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Champ obligatoire. Entrez un horaire au format HH h MM.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Format d'horaire non valide. Entrez un horaire au format HH h MM.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "Accès collaborateur",
|
package/i18n/hi-IN.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "केवल शॉर्टकट",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "देखें और डाउनलोड करें",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "केवल देखें",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "आवश्यक क्षेत्र. HH:MM A फ़ॉर्मेट में समय दर्ज करें.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "अमान्य समय फ़ॉर्मेट. HH:MM A फ़ॉर्मेट में समय दर्ज करें.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "सहयोगी एक्सेस",
|
package/i18n/it-IT.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Solo tasti di scelta rapida",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Visualizzazione e download",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Sola visualizzazione",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Campo obbligatorio. Immetti un orario nel formato HH:MM A.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Formato ora non valido. Immetti un orario nel formato HH:MM A.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "accesso collaboratore",
|
package/i18n/ja-JP.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "ショートカットのみ",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "表示とダウンロード",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "表示のみ",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "必須フィールドです。HH:MM AM/PM形式で時間を入力してください。",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "時間の形式が無効です。HH:MM AM/PM形式で時間を入力してください。",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "コラボレータのアクセス権限",
|
package/i18n/ko-KR.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "바로 가기 전용",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "보기 및 다운로드",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "보기 전용",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "필수 필드입니다. HH:MM A 형식으로 시간을 입력하십시오.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "올바르지 않은 시간 형식입니다. HH:MM A 형식으로 시간을 입력하십시오.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "공동 작업자 액세스",
|
package/i18n/nb-NO.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Bare snarvei",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Vise og laste ned",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Bare vis",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Obligatorisk felt. Oppgi klokkeslettet i formatet TT.MM.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Ugyldig tidsformat. Oppgi klokkeslettet i formatet HH:MM A.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "samarbeidspartner-tilgang",
|
package/i18n/nl-NL.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Alleen snelkoppeling",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Bekijken en downloaden",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Alleen bekijken",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Vereist veld. Voer een tijd in de notatie UU:MM in.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Ongeldige tijdnotatie. Voer een tijd in de notatie UU:MM in.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "medebewerker toegang",
|
package/i18n/pl-PL.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Tylko skrót",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Przeglądanie i pobieranie",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Tylko przeglądanie",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Pole wymagane. Wprowadź godzinę w formacie GG:MM.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Nieprawidłowy format godziny. Wprowadź godzinę w formacie GG:MM.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "dostęp dla współpracownika",
|
package/i18n/pt-BR.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Apenas atalho",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Visualização e download",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Apenas visualização",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Campo obrigatório. Informe uma hora no formato HH:MM AM/PM.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Formato de hora inválido. Informe uma hora no formato HH:MM A.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "acesso de colaborador",
|
package/i18n/ru-RU.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Только ярлык",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Просмотр и скачивание",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Только просмотр",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Обязательное поле. Введите время в 12-часовом формате ЧЧ:ММ.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Неверный формат времени. Введите время в 12-часовом формате ЧЧ:ММ.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "доступ соавтора",
|
package/i18n/sv-SE.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Endast genväg",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Visa och hämta",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Endast visning",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Obligatoriskt fält. Ange en tid i formatet TT:MM.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Ogiltigt tidsformat. Ange en tid i formatet TT:MM.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "åtkomst för medarbetare",
|
package/i18n/tr-TR.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "Yalnızca Kısayol",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "Görüntüleme ve İndirme",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "Yalnızca Görüntüleme",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "Gerekli alan. Saati SS.DD biçiminde girin.",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "Geçersiz saat biçimi. Saati SS.DD biçiminde girin.",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "işbirlikçi erişimi",
|
package/i18n/zh-CN.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "仅快捷键",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "查看和下载",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "仅查看",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "必填字段。请以“上午小时:分钟”格式输入时间。",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "时间格式无效。请以“上午小时:分钟”格式输入时间。",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "协作者访问",
|
package/i18n/zh-TW.js
CHANGED
|
@@ -906,6 +906,7 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "僅捷徑",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "檢視與下載",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "僅檢視",
|
|
909
|
+
"boxui.subHeader.metadata": "Metadata",
|
|
909
910
|
"boxui.timeInput.emptyTimeError": "必填欄位。請以「上午 時時:分分」的格式輸入時間。",
|
|
910
911
|
"boxui.timeInput.invalidTimeError": "無效的時間格式。請以「上午 時時:分分」的格式輸入時間。",
|
|
911
912
|
"boxui.unifiedShare.collabAccess": "共同作業者存取",
|
package/package.json
CHANGED
|
@@ -5,7 +5,8 @@ import SubHeaderLeft from './SubHeaderLeft';
|
|
|
5
5
|
import SubHeaderRight from './SubHeaderRight';
|
|
6
6
|
import type { ViewMode } from '../flowTypes';
|
|
7
7
|
import type { View, Collection } from '../../../common/types/core';
|
|
8
|
-
import { VIEW_MODE_LIST } from '../../../constants';
|
|
8
|
+
import { VIEW_MODE_LIST, VIEW_METADATA } from '../../../constants';
|
|
9
|
+
import { useFeatureEnabled } from '../feature-checking';
|
|
9
10
|
|
|
10
11
|
import './SubHeader.scss';
|
|
11
12
|
|
|
@@ -51,39 +52,49 @@ const SubHeader = ({
|
|
|
51
52
|
rootName,
|
|
52
53
|
view,
|
|
53
54
|
viewMode = VIEW_MODE_LIST,
|
|
54
|
-
}: SubHeaderProps) =>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
55
|
+
}: SubHeaderProps) => {
|
|
56
|
+
const isMetadataViewV2Feature = useFeatureEnabled('contentExplorer.metadataViewV2');
|
|
57
|
+
|
|
58
|
+
if (view === VIEW_METADATA && !isMetadataViewV2Feature) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return (
|
|
63
|
+
<PageHeader.Root className="be-sub-header" data-testid="be-sub-header" variant="inline">
|
|
64
|
+
<PageHeader.StartElements>
|
|
65
|
+
{view !== VIEW_METADATA && !isMetadataViewV2Feature && (
|
|
66
|
+
<SubHeaderLeft
|
|
67
|
+
currentCollection={currentCollection}
|
|
68
|
+
isSmall={isSmall}
|
|
69
|
+
onItemClick={onItemClick}
|
|
70
|
+
portalElement={portalElement}
|
|
71
|
+
rootId={rootId}
|
|
72
|
+
rootName={rootName}
|
|
73
|
+
view={view}
|
|
74
|
+
/>
|
|
75
|
+
)}
|
|
76
|
+
</PageHeader.StartElements>
|
|
77
|
+
<PageHeader.EndElements>
|
|
78
|
+
<SubHeaderRight
|
|
79
|
+
canCreateNewFolder={canCreateNewFolder}
|
|
80
|
+
canUpload={canUpload}
|
|
81
|
+
currentCollection={currentCollection}
|
|
82
|
+
gridColumnCount={gridColumnCount}
|
|
83
|
+
gridMaxColumns={gridMaxColumns}
|
|
84
|
+
gridMinColumns={gridMinColumns}
|
|
85
|
+
maxGridColumnCountForWidth={maxGridColumnCountForWidth}
|
|
86
|
+
onCreate={onCreate}
|
|
87
|
+
onGridViewSliderChange={onGridViewSliderChange}
|
|
88
|
+
onSortChange={onSortChange}
|
|
89
|
+
onUpload={onUpload}
|
|
90
|
+
onViewModeChange={onViewModeChange}
|
|
91
|
+
portalElement={portalElement}
|
|
92
|
+
view={view}
|
|
93
|
+
viewMode={viewMode}
|
|
94
|
+
/>
|
|
95
|
+
</PageHeader.EndElements>
|
|
96
|
+
</PageHeader.Root>
|
|
97
|
+
);
|
|
98
|
+
};
|
|
88
99
|
|
|
89
100
|
export default SubHeader;
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { Button } from '@box/blueprint-web';
|
|
3
|
+
import { Pencil } from '@box/blueprint-web-assets/icons/Fill';
|
|
4
|
+
import { useIntl } from 'react-intl';
|
|
2
5
|
import Sort from './Sort';
|
|
3
6
|
import Add from './Add';
|
|
4
7
|
import GridViewSlider from '../../../components/grid-view/GridViewSlider';
|
|
5
8
|
import ViewModeChangeButton from './ViewModeChangeButton';
|
|
6
|
-
import { VIEW_FOLDER, VIEW_MODE_GRID } from '../../../constants';
|
|
9
|
+
import { VIEW_FOLDER, VIEW_MODE_GRID, VIEW_METADATA } from '../../../constants';
|
|
10
|
+
import { useFeatureEnabled } from '../feature-checking';
|
|
11
|
+
|
|
7
12
|
import type { ViewMode } from '../flowTypes';
|
|
8
13
|
import type { SortBy, SortDirection, View, Collection } from '../../../common/types/core';
|
|
14
|
+
|
|
15
|
+
import messages from './messages';
|
|
16
|
+
|
|
9
17
|
import './SubHeaderRight.scss';
|
|
10
18
|
|
|
11
19
|
export interface SubHeaderRightProps {
|
|
@@ -43,36 +51,49 @@ const SubHeaderRight = ({
|
|
|
43
51
|
view,
|
|
44
52
|
viewMode,
|
|
45
53
|
}: SubHeaderRightProps) => {
|
|
54
|
+
const { formatMessage } = useIntl();
|
|
55
|
+
const isMetadataViewV2Feature = useFeatureEnabled('contentExplorer.metadataViewV2');
|
|
46
56
|
const { items = [] }: Collection = currentCollection;
|
|
47
57
|
const hasGridView: boolean = !!gridColumnCount;
|
|
48
58
|
const hasItems: boolean = items.length > 0;
|
|
49
59
|
const isFolder: boolean = view === VIEW_FOLDER;
|
|
50
60
|
const showSort: boolean = isFolder && hasItems;
|
|
51
61
|
const showAdd: boolean = (!!canUpload || !!canCreateNewFolder) && isFolder;
|
|
62
|
+
const isMetadataView: boolean = view === VIEW_METADATA;
|
|
52
63
|
return (
|
|
53
64
|
<div className="be-sub-header-right">
|
|
54
|
-
{
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
{!isMetadataView && (
|
|
66
|
+
<>
|
|
67
|
+
{hasItems && viewMode === VIEW_MODE_GRID && (
|
|
68
|
+
<GridViewSlider
|
|
69
|
+
columnCount={gridColumnCount}
|
|
70
|
+
gridMaxColumns={gridMaxColumns}
|
|
71
|
+
gridMinColumns={gridMinColumns}
|
|
72
|
+
maxColumnCount={maxGridColumnCountForWidth}
|
|
73
|
+
onChange={onGridViewSliderChange}
|
|
74
|
+
/>
|
|
75
|
+
)}
|
|
76
|
+
{hasItems && hasGridView && (
|
|
77
|
+
<ViewModeChangeButton viewMode={viewMode} onViewModeChange={onViewModeChange} />
|
|
78
|
+
)}
|
|
79
|
+
{showSort && <Sort onSortChange={onSortChange} portalElement={portalElement} />}
|
|
80
|
+
{showAdd && (
|
|
81
|
+
<Add
|
|
82
|
+
isDisabled={!isFolder}
|
|
83
|
+
onCreate={onCreate}
|
|
84
|
+
onUpload={onUpload}
|
|
85
|
+
portalElement={portalElement}
|
|
86
|
+
showCreate={canCreateNewFolder}
|
|
87
|
+
showUpload={canUpload}
|
|
88
|
+
/>
|
|
89
|
+
)}
|
|
90
|
+
</>
|
|
62
91
|
)}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
<Add
|
|
69
|
-
isDisabled={!isFolder}
|
|
70
|
-
onCreate={onCreate}
|
|
71
|
-
onUpload={onUpload}
|
|
72
|
-
portalElement={portalElement}
|
|
73
|
-
showCreate={canCreateNewFolder}
|
|
74
|
-
showUpload={canUpload}
|
|
75
|
-
/>
|
|
92
|
+
|
|
93
|
+
{isMetadataView && isMetadataViewV2Feature && (
|
|
94
|
+
<Button icon={Pencil} size="large" variant="primary">
|
|
95
|
+
{formatMessage(messages.metadata)}
|
|
96
|
+
</Button>
|
|
76
97
|
)}
|
|
77
98
|
</div>
|
|
78
99
|
);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl';
|
|
2
|
+
|
|
3
|
+
const messages = defineMessages({
|
|
4
|
+
metadata: {
|
|
5
|
+
defaultMessage: 'Metadata',
|
|
6
|
+
description: 'Text for metadata button that will open the metadata side panel',
|
|
7
|
+
id: 'boxui.subHeader.metadata',
|
|
8
|
+
},
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export default messages;
|
|
@@ -65,13 +65,13 @@ const Content = ({
|
|
|
65
65
|
const isMetadataBasedView = view === VIEW_METADATA;
|
|
66
66
|
const isListView = !isMetadataBasedView && viewMode === VIEW_MODE_LIST; // Folder view or Recents view
|
|
67
67
|
const isGridView = !isMetadataBasedView && viewMode === VIEW_MODE_GRID; // Folder view or Recents view
|
|
68
|
-
|
|
68
|
+
const isMetadataViewV2Feature = isFeatureEnabled(features, 'contentExplorer.metadataViewV2');
|
|
69
69
|
return (
|
|
70
70
|
<div className="bce-content">
|
|
71
71
|
{view === VIEW_ERROR || view === VIEW_SELECTED ? null : <ProgressBar percent={percentLoaded} />}
|
|
72
72
|
|
|
73
73
|
{isViewEmpty && <EmptyView view={view} isLoading={percentLoaded !== 100} />}
|
|
74
|
-
{!
|
|
74
|
+
{!isMetadataViewV2Feature && !isViewEmpty && isMetadataBasedView && (
|
|
75
75
|
<MetadataBasedItemList
|
|
76
76
|
currentCollection={currentCollection}
|
|
77
77
|
fieldsToShow={fieldsToShow}
|
|
@@ -79,9 +79,7 @@ const Content = ({
|
|
|
79
79
|
{...rest}
|
|
80
80
|
/>
|
|
81
81
|
)}
|
|
82
|
-
{
|
|
83
|
-
<MetadataView />
|
|
84
|
-
)}
|
|
82
|
+
{isMetadataViewV2Feature && !isViewEmpty && isMetadataBasedView && <MetadataView />}
|
|
85
83
|
{!isViewEmpty && isListView && (
|
|
86
84
|
<ItemList
|
|
87
85
|
items={items}
|
|
@@ -1649,32 +1649,30 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
|
|
|
1649
1649
|
<div id={this.id} className={styleClassName} ref={measureRef} data-testid="content-explorer">
|
|
1650
1650
|
<ThemingStyles selector={`#${this.id}`} theme={theme} />
|
|
1651
1651
|
<div className="be-app-element" onKeyDown={this.onKeyDown} tabIndex={0}>
|
|
1652
|
-
{!isDefaultViewMetadata &&
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
</>
|
|
1677
|
-
)}
|
|
1652
|
+
{!isDefaultViewMetadata && <Header view={view} logoUrl={logoUrl} onSearch={this.search} />}
|
|
1653
|
+
|
|
1654
|
+
<SubHeader
|
|
1655
|
+
view={view}
|
|
1656
|
+
viewMode={viewMode}
|
|
1657
|
+
rootId={rootFolderId}
|
|
1658
|
+
isSmall={isSmall}
|
|
1659
|
+
rootName={rootName}
|
|
1660
|
+
currentCollection={currentCollection}
|
|
1661
|
+
canUpload={allowUpload}
|
|
1662
|
+
canCreateNewFolder={allowCreate}
|
|
1663
|
+
gridColumnCount={gridColumnCount}
|
|
1664
|
+
gridMaxColumns={GRID_VIEW_MAX_COLUMNS}
|
|
1665
|
+
gridMinColumns={GRID_VIEW_MIN_COLUMNS}
|
|
1666
|
+
maxGridColumnCountForWidth={maxGridColumnCount}
|
|
1667
|
+
onUpload={this.upload}
|
|
1668
|
+
onCreate={this.createFolder}
|
|
1669
|
+
onGridViewSliderChange={this.onGridViewSliderChange}
|
|
1670
|
+
onItemClick={this.fetchFolder}
|
|
1671
|
+
onSortChange={this.sort}
|
|
1672
|
+
onViewModeChange={this.changeViewMode}
|
|
1673
|
+
portalElement={this.rootElement}
|
|
1674
|
+
/>
|
|
1675
|
+
|
|
1678
1676
|
<Content
|
|
1679
1677
|
canDelete={canDelete}
|
|
1680
1678
|
canDownload={canDownload}
|
|
@@ -5,6 +5,7 @@ import { ContentExplorerComponent as ContentExplorer, ContentExplorerProps } fro
|
|
|
5
5
|
import { mockRecentItems, mockRootFolder, mockRootFolderSharedLink } from '../../common/__mocks__/mockRootFolder';
|
|
6
6
|
import { mockMetadata, mockSchema } from '../../common/__mocks__/mockMetadata';
|
|
7
7
|
import mockSubFolder from '../../common/__mocks__/mockSubfolder';
|
|
8
|
+
import { FeatureProvider } from '../../common/feature-checking';
|
|
8
9
|
|
|
9
10
|
jest.mock('../../../utils/Xhr', () => {
|
|
10
11
|
return jest.fn().mockImplementation(() => {
|
|
@@ -71,8 +72,12 @@ jest.mock('../../common/preview-dialog/PreviewDialog', () => props => {
|
|
|
71
72
|
describe('elements/content-explorer/ContentExplorer', () => {
|
|
72
73
|
let rootElement: HTMLDivElement;
|
|
73
74
|
|
|
74
|
-
const renderComponent = (props: Partial<ContentExplorerProps> = {}) => {
|
|
75
|
-
return render(
|
|
75
|
+
const renderComponent = ({ features, ...props }: Partial<ContentExplorerProps> = {}) => {
|
|
76
|
+
return render(
|
|
77
|
+
<FeatureProvider features={features}>
|
|
78
|
+
<ContentExplorer defaultView="list" rootFolderId="69083462919" token="token" {...props} />
|
|
79
|
+
</FeatureProvider>,
|
|
80
|
+
);
|
|
76
81
|
};
|
|
77
82
|
|
|
78
83
|
beforeEach(() => {
|
|
@@ -410,6 +415,34 @@ describe('elements/content-explorer/ContentExplorer', () => {
|
|
|
410
415
|
expect(screen.getByText('Healthcare')).toBeInTheDocument();
|
|
411
416
|
expect(screen.getByText('November 1, 2023')).toBeInTheDocument();
|
|
412
417
|
});
|
|
418
|
+
describe('Metadata View V2', () => {
|
|
419
|
+
test('should render metadata view button', async () => {
|
|
420
|
+
renderComponent({
|
|
421
|
+
defaultView: 'metadata',
|
|
422
|
+
features: {
|
|
423
|
+
contentExplorer: {
|
|
424
|
+
metadataViewV2: true,
|
|
425
|
+
},
|
|
426
|
+
},
|
|
427
|
+
});
|
|
428
|
+
|
|
429
|
+
// two separate promises need to be resolved before the component is ready
|
|
430
|
+
await waitFor(() => {
|
|
431
|
+
expect(screen.getByText('Please wait while the items load...')).toBeInTheDocument();
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
await waitFor(() => {
|
|
435
|
+
expect(screen.getByTestId('content-explorer')).toBeInTheDocument();
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
expect(screen.queryByRole('searchbox', { name: 'Search files and folders' })).not.toBeInTheDocument();
|
|
439
|
+
expect(screen.queryByRole('button', { name: 'Preview Test Folder' })).not.toBeInTheDocument();
|
|
440
|
+
expect(screen.queryByRole('button', { name: 'Switch to Grid View' })).not.toBeInTheDocument();
|
|
441
|
+
expect(screen.queryByRole('button', { name: 'Sort' })).not.toBeInTheDocument();
|
|
442
|
+
expect(screen.queryByRole('button', { name: 'Add' })).not.toBeInTheDocument();
|
|
443
|
+
expect(screen.getByRole('button', { name: 'Metadata' })).toBeInTheDocument();
|
|
444
|
+
});
|
|
445
|
+
});
|
|
413
446
|
});
|
|
414
447
|
|
|
415
448
|
describe('Preview', () => {
|