@box/unified-share-modal 3.1.36 → 3.1.38
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/chunks/classification-status.js +1 -62
- package/dist/chunks/collaboration-role.js +1 -89
- package/dist/chunks/collaboration-section.js +1 -159
- package/dist/chunks/collaborator-list-item.js +1 -61
- package/dist/chunks/collaborator-list.js +1 -74
- package/dist/chunks/remove-collaborator-modal.js +1 -61
- package/dist/chunks/remove-shared-link-modal.js +1 -56
- package/dist/chunks/shared-link-access.js +1 -65
- package/dist/chunks/shared-link-permission.js +1 -67
- package/dist/chunks/shared-link-section.js +1 -184
- package/dist/chunks/shared-link-settings-modal.js +1 -86
- package/dist/chunks/shared-with-avatars.js +1 -48
- package/dist/chunks/shield-restriction-notice.js +1 -97
- package/dist/chunks/text-area-container.js +1 -36
- package/dist/chunks/unified-share-form-modal.js +1 -67
- package/dist/chunks/unified-share-form.js +1 -23
- package/dist/esm/index.js +1 -2
- package/dist/esm/lib/components/classification-status/classification-status.js +1 -2
- package/dist/esm/lib/components/classification-status/index.js +1 -2
- package/dist/esm/lib/components/classification-status/messages.js +1 -12
- package/dist/esm/lib/components/index.js +1 -5
- package/dist/esm/lib/components/remove-collaborator-modal/index.js +1 -2
- package/dist/esm/lib/components/remove-collaborator-modal/messages.js +1 -28
- package/dist/esm/lib/components/remove-collaborator-modal/remove-collaborator-modal.js +1 -2
- package/dist/esm/lib/components/remove-shared-link-modal/index.js +1 -2
- package/dist/esm/lib/components/remove-shared-link-modal/messages.js +1 -28
- package/dist/esm/lib/components/remove-shared-link-modal/remove-shared-link-modal.js +1 -2
- package/dist/esm/lib/components/shared-link-settings-modal/download-section.js +1 -36
- package/dist/esm/lib/components/shared-link-settings-modal/expiration-section.js +1 -34
- package/dist/esm/lib/components/shared-link-settings-modal/index.js +1 -2
- package/dist/esm/lib/components/shared-link-settings-modal/messages.js +1 -140
- package/dist/esm/lib/components/shared-link-settings-modal/password-section.js +1 -33
- package/dist/esm/lib/components/shared-link-settings-modal/shared-link-settings-modal.js +1 -2
- package/dist/esm/lib/components/shared-link-settings-modal/shared-link-settings.js +1 -98
- package/dist/esm/lib/components/shared-link-settings-modal/vanity-section.js +1 -34
- package/dist/esm/lib/components/unified-share-form-modal/collaboration-section/collaboration-role.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaboration-section/collaboration-section.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaboration-section/index.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaboration-section/messages.js +1 -136
- package/dist/esm/lib/components/unified-share-form-modal/collaboration-section/shared-with-avatars.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaboration-section/shield-restriction-notice.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaboration-section/text-area-container.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaborator-list/collaborator-avatar.js +1 -49
- package/dist/esm/lib/components/unified-share-form-modal/collaborator-list/collaborator-list-item.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaborator-list/collaborator-list.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaborator-list/index.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/collaborator-list/messages.js +1 -40
- package/dist/esm/lib/components/unified-share-form-modal/index.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/messages.js +1 -48
- package/dist/esm/lib/components/unified-share-form-modal/shared-link-section/index.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/shared-link-section/messages.js +1 -144
- package/dist/esm/lib/components/unified-share-form-modal/shared-link-section/shared-link-access.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/shared-link-section/shared-link-permission.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/shared-link-section/shared-link-section.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/unified-share-form-modal.js +1 -2
- package/dist/esm/lib/components/unified-share-form-modal/unified-share-form.js +1 -2
- package/dist/esm/lib/constants.js +1 -47
- package/dist/esm/lib/contexts/index.js +1 -4
- package/dist/esm/lib/contexts/shared-link-settings-context.js +1 -51
- package/dist/esm/lib/contexts/unified-share-form-context.js +1 -61
- package/dist/esm/lib/contexts/unified-share-modal-context.js +1 -70
- package/dist/esm/lib/hooks/index.js +1 -7
- package/dist/esm/lib/hooks/use-access-levels.js +1 -70
- package/dist/esm/lib/hooks/use-collaboration-form.js +1 -76
- package/dist/esm/lib/hooks/use-form-validation.js +1 -33
- package/dist/esm/lib/hooks/use-link-settings-form.js +1 -50
- package/dist/esm/lib/hooks/use-permission-levels.js +1 -34
- package/dist/esm/lib/hooks/use-sharing-action.js +1 -45
- package/dist/esm/lib/messages.js +1 -108
- package/dist/esm/lib/unified-share-base.js +1 -31
- package/dist/esm/lib/unified-share-modal.js +1 -44
- package/dist/esm/lib/utils/collaborator.js +1 -12
- package/dist/esm/lib/utils/date.js +1 -10
- package/dist/esm/lib/utils/email.js +1 -6
- package/dist/esm/lib/utils/event.js +1 -7
- package/dist/esm/lib/utils/form.js +1 -5
- package/dist/esm/lib/utils/index.js +1 -9
- package/dist/esm/lib/utils/notification.js +1 -20
- package/dist/esm/lib/utils/permission.js +1 -16
- package/dist/esm/lib/utils/validation.js +1 -2
- package/package.json +10 -10
|
@@ -1,51 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { formatDateFromTimestampToCalendarDate as t } from "../utils/date.js";
|
|
3
|
-
import { useLinkSettingsForm as n } from "../hooks/use-link-settings-form.js";
|
|
4
|
-
import { createContext as r, useContext as i, useMemo as a, useState as o } from "react";
|
|
5
|
-
import { jsx as s } from "react/jsx-runtime";
|
|
6
|
-
var c = /*#__PURE__*/ r(null), l = () => {
|
|
7
|
-
let e = i(c);
|
|
8
|
-
if (!e) throw Error("useSharedLinkSettingsContext must be used with SharedLinkSettingsProvider");
|
|
9
|
-
return e;
|
|
10
|
-
}, u = ({ children: r }) => {
|
|
11
|
-
let { sharedLink: i } = e(), { expiresAt: l = 0, settings: u = {}, vanityName: d = "" } = i, { isDownloadEnabled: f, isPasswordEnabled: p } = u, [m, h] = o(null), g = a(() => ({
|
|
12
|
-
expiration: l ? t(l) : null,
|
|
13
|
-
isDownloadEnabled: !!f,
|
|
14
|
-
isExpirationEnabled: !!l,
|
|
15
|
-
isPasswordEnabled: !!p,
|
|
16
|
-
isVanityNameEnabled: !!d,
|
|
17
|
-
password: "",
|
|
18
|
-
vanityName: d
|
|
19
|
-
}), [
|
|
20
|
-
l,
|
|
21
|
-
f,
|
|
22
|
-
p,
|
|
23
|
-
d
|
|
24
|
-
]), { errors: _, formData: v, handleFormReset: y, handleFormSubmit: b, setFieldError: x, setFieldValue: S, validatePassword: C } = n(g), w = a(() => ({
|
|
25
|
-
containerRef: m,
|
|
26
|
-
errors: _,
|
|
27
|
-
formData: v,
|
|
28
|
-
initialFormData: g,
|
|
29
|
-
resetForm: y,
|
|
30
|
-
setContainerRef: h,
|
|
31
|
-
setFieldError: x,
|
|
32
|
-
setFieldValue: S,
|
|
33
|
-
submitForm: b,
|
|
34
|
-
validatePassword: C
|
|
35
|
-
}), [
|
|
36
|
-
m,
|
|
37
|
-
_,
|
|
38
|
-
v,
|
|
39
|
-
y,
|
|
40
|
-
b,
|
|
41
|
-
g,
|
|
42
|
-
x,
|
|
43
|
-
S,
|
|
44
|
-
C
|
|
45
|
-
]);
|
|
46
|
-
return /* @__PURE__ */ s(c.Provider, {
|
|
47
|
-
value: w,
|
|
48
|
-
children: r
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
export { c as SharedLinkSettingsContext, u as SharedLinkSettingsProvider, l as useSharedLinkSettingsContext };
|
|
1
|
+
import{useUnifiedShareModalContext}from"./unified-share-modal-context.js";import{formatDateFromTimestampToCalendarDate}from"../utils/date.js";import{useLinkSettingsForm}from"../hooks/use-link-settings-form.js";import{createContext,useContext,useMemo,useState}from"react";import{jsx}from"react/jsx-runtime";var SharedLinkSettingsContext=createContext(null),useSharedLinkSettingsContext=()=>{let context=useContext(SharedLinkSettingsContext);if(!context)throw Error(`useSharedLinkSettingsContext must be used with SharedLinkSettingsProvider`);return context},SharedLinkSettingsProvider=({children})=>{let{sharedLink}=useUnifiedShareModalContext(),{expiresAt=0,settings={},vanityName=``}=sharedLink,{isDownloadEnabled,isPasswordEnabled}=settings,[containerRef,setContainerRef]=useState(null),initialFormData=useMemo(()=>({expiration:expiresAt?formatDateFromTimestampToCalendarDate(expiresAt):null,isDownloadEnabled:!!isDownloadEnabled,isExpirationEnabled:!!expiresAt,isPasswordEnabled:!!isPasswordEnabled,isVanityNameEnabled:!!vanityName,password:``,vanityName}),[expiresAt,isDownloadEnabled,isPasswordEnabled,vanityName]),{errors,formData,handleFormReset,handleFormSubmit,setFieldError,setFieldValue,validatePassword}=useLinkSettingsForm(initialFormData),contextValue=useMemo(()=>({containerRef,errors,formData,initialFormData,resetForm:handleFormReset,setContainerRef,setFieldError,setFieldValue,submitForm:handleFormSubmit,validatePassword}),[containerRef,errors,formData,handleFormReset,handleFormSubmit,initialFormData,setFieldError,setFieldValue,validatePassword]);return jsx(SharedLinkSettingsContext.Provider,{value:contextValue,children})};export{SharedLinkSettingsContext,SharedLinkSettingsProvider,useSharedLinkSettingsContext};
|
|
@@ -1,61 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { createContext as t, useCallback as n, useContext as r, useEffect as i, useMemo as a, useRef as o, useState as s } from "react";
|
|
3
|
-
import { jsx as c } from "react/jsx-runtime";
|
|
4
|
-
var l = /*#__PURE__*/ t(null), u = () => {
|
|
5
|
-
let e = r(l);
|
|
6
|
-
if (!e) throw Error("useUnifiedShareFormContext must be used with UnifiedShareFormProvider");
|
|
7
|
-
return e;
|
|
8
|
-
}, d = ({ children: t }) => {
|
|
9
|
-
let { initialContacts: r, isOpen: u, view: d } = e(), [f, p] = s("default"), [m, h] = s(!1), [g, _] = s(!1), [v, y] = s(null), [b, x] = s(r), [S, C] = s(""), [w, T] = s(""), [E, D] = s(), [O, k] = s({}), A = o(!1), j = o(!1), M = n((e) => {
|
|
10
|
-
k((t) => ({
|
|
11
|
-
...t,
|
|
12
|
-
...e
|
|
13
|
-
}));
|
|
14
|
-
}, []);
|
|
15
|
-
i(() => {
|
|
16
|
-
u || (p("default"), h(!1), _(!1), x(r), C(""), T(""), D(void 0), k({}), A.current = !1, j.current = !1);
|
|
17
|
-
}, [r, u]), i(() => {
|
|
18
|
-
g || (d !== "unified-share-form" || f !== "default") && _(!0);
|
|
19
|
-
}, [
|
|
20
|
-
g,
|
|
21
|
-
d,
|
|
22
|
-
f
|
|
23
|
-
]);
|
|
24
|
-
let N = a(() => ({
|
|
25
|
-
collaborationRole: E,
|
|
26
|
-
contactValue: S,
|
|
27
|
-
containerRef: v,
|
|
28
|
-
form: f,
|
|
29
|
-
isCollaboratorsOpen: m,
|
|
30
|
-
isInteracted: g,
|
|
31
|
-
isSharedLinkAutoCopied: A,
|
|
32
|
-
isSharedLinkAutoCreated: j,
|
|
33
|
-
messageValue: w,
|
|
34
|
-
setCollaborationRole: D,
|
|
35
|
-
setContactValue: C,
|
|
36
|
-
setContainerRef: y,
|
|
37
|
-
setForm: p,
|
|
38
|
-
setIsCollaboratorsOpen: h,
|
|
39
|
-
setMessageValue: T,
|
|
40
|
-
setShieldRestriction: M,
|
|
41
|
-
setUserContacts: x,
|
|
42
|
-
shieldRestriction: O,
|
|
43
|
-
userContacts: b
|
|
44
|
-
}), [
|
|
45
|
-
E,
|
|
46
|
-
S,
|
|
47
|
-
v,
|
|
48
|
-
f,
|
|
49
|
-
M,
|
|
50
|
-
m,
|
|
51
|
-
g,
|
|
52
|
-
w,
|
|
53
|
-
O,
|
|
54
|
-
b
|
|
55
|
-
]);
|
|
56
|
-
return /* @__PURE__ */ c(l.Provider, {
|
|
57
|
-
value: N,
|
|
58
|
-
children: t
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
export { l as UnifiedShareFormContext, d as UnifiedShareFormProvider, u as useUnifiedShareFormContext };
|
|
1
|
+
import{useUnifiedShareModalContext}from"./unified-share-modal-context.js";import{createContext,useCallback,useContext,useEffect,useMemo,useRef,useState}from"react";import{jsx}from"react/jsx-runtime";var UnifiedShareFormContext=createContext(null),useUnifiedShareFormContext=()=>{let context=useContext(UnifiedShareFormContext);if(!context)throw Error(`useUnifiedShareFormContext must be used with UnifiedShareFormProvider`);return context},UnifiedShareFormProvider=({children})=>{let{initialContacts,isOpen,view}=useUnifiedShareModalContext(),[form,setForm]=useState(`default`),[isCollaboratorsOpen,setIsCollaboratorsOpen]=useState(!1),[isInteracted,setIsInteracted]=useState(!1),[containerRef,setContainerRef]=useState(null),[userContacts,setUserContacts]=useState(initialContacts),[contactValue,setContactValue]=useState(``),[messageValue,setMessageValue]=useState(``),[collaborationRole,setCollaborationRole]=useState(),[shieldRestriction,setShieldRestriction]=useState({}),isSharedLinkAutoCopied=useRef(!1),isSharedLinkAutoCreated=useRef(!1),handleShieldRestrictionChange=useCallback(next=>{setShieldRestriction(prev=>({...prev,...next}))},[]);useEffect(()=>{isOpen||(setForm(`default`),setIsCollaboratorsOpen(!1),setIsInteracted(!1),setUserContacts(initialContacts),setContactValue(``),setMessageValue(``),setCollaborationRole(void 0),setShieldRestriction({}),isSharedLinkAutoCopied.current=!1,isSharedLinkAutoCreated.current=!1)},[initialContacts,isOpen]),useEffect(()=>{isInteracted||(view!==`unified-share-form`||form!=="default")&&setIsInteracted(!0)},[isInteracted,view,form]);let contextValue=useMemo(()=>({collaborationRole,contactValue,containerRef,form,isCollaboratorsOpen,isInteracted,isSharedLinkAutoCopied,isSharedLinkAutoCreated,messageValue,setCollaborationRole,setContactValue,setContainerRef,setForm,setIsCollaboratorsOpen,setMessageValue,setShieldRestriction:handleShieldRestrictionChange,setUserContacts,shieldRestriction,userContacts}),[collaborationRole,contactValue,containerRef,form,handleShieldRestrictionChange,isCollaboratorsOpen,isInteracted,messageValue,shieldRestriction,userContacts]);return jsx(UnifiedShareFormContext.Provider,{value:contextValue,children})};export{UnifiedShareFormContext,UnifiedShareFormProvider,useUnifiedShareFormContext};
|
|
@@ -1,70 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext as n, useContext as r, useEffect as i, useMemo as a, useState as o } from "react";
|
|
3
|
-
import { jsx as s } from "react/jsx-runtime";
|
|
4
|
-
var c = /*#__PURE__*/ n(null), l = () => {
|
|
5
|
-
let e = r(c);
|
|
6
|
-
if (!e) throw Error("useUnifiedShareModalContext must be used with UnifiedShareModalContext.Provider");
|
|
7
|
-
return e;
|
|
8
|
-
}, u = ({ children: n, collaborationAccess: r, collaborationNotices: l, collaborationRoles: u, collaborators: d, config: f, contactService: p, currentUser: m, eventService: h, initialContacts: g, invitationFormNotices: _, isFetching: v, isOpen: y, isSubmitting: b, item: x, onOpenChange: S, sharedLink: C, sharedLinkNotices: w, sharingService: T, variant: E }) => {
|
|
9
|
-
let [D, O] = o(null), [k, A] = o(!1), [j, M] = o("unified-share-form");
|
|
10
|
-
i(() => {
|
|
11
|
-
y || (A(!1), M("unified-share-form"));
|
|
12
|
-
}, [y]);
|
|
13
|
-
let N = a(() => ({
|
|
14
|
-
collaborationAccess: r,
|
|
15
|
-
collaborationNotices: l,
|
|
16
|
-
collaborationRoles: u ?? e,
|
|
17
|
-
collaborator: D,
|
|
18
|
-
collaborators: d ?? [],
|
|
19
|
-
config: {
|
|
20
|
-
...t,
|
|
21
|
-
...f
|
|
22
|
-
},
|
|
23
|
-
contactService: p ?? {},
|
|
24
|
-
currentUser: m ?? {},
|
|
25
|
-
eventService: h ?? {},
|
|
26
|
-
initialContacts: g ?? [],
|
|
27
|
-
invitationFormNotices: _,
|
|
28
|
-
isFetching: v,
|
|
29
|
-
isOpen: y,
|
|
30
|
-
isSubmitting: b ?? k,
|
|
31
|
-
item: x,
|
|
32
|
-
onOpenChange: S,
|
|
33
|
-
setCollaborator: O,
|
|
34
|
-
setIsLoading: A,
|
|
35
|
-
setView: M,
|
|
36
|
-
sharedLink: C ?? {},
|
|
37
|
-
sharedLinkNotices: w,
|
|
38
|
-
sharingService: T ?? {},
|
|
39
|
-
variant: E,
|
|
40
|
-
view: j
|
|
41
|
-
}), [
|
|
42
|
-
r,
|
|
43
|
-
l,
|
|
44
|
-
u,
|
|
45
|
-
D,
|
|
46
|
-
d,
|
|
47
|
-
f,
|
|
48
|
-
p,
|
|
49
|
-
m,
|
|
50
|
-
h,
|
|
51
|
-
g,
|
|
52
|
-
_,
|
|
53
|
-
v,
|
|
54
|
-
k,
|
|
55
|
-
y,
|
|
56
|
-
b,
|
|
57
|
-
x,
|
|
58
|
-
S,
|
|
59
|
-
C,
|
|
60
|
-
w,
|
|
61
|
-
T,
|
|
62
|
-
E,
|
|
63
|
-
j
|
|
64
|
-
]);
|
|
65
|
-
return /* @__PURE__ */ s(c.Provider, {
|
|
66
|
-
value: N,
|
|
67
|
-
children: n
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
export { c as UnifiedShareModalContext, u as UnifiedShareModalProvider, l as useUnifiedShareModalContext };
|
|
1
|
+
import{DEFAULT_COLLABORATION_ROLES,DEFAULT_CONFIGURATION}from"../constants.js";import{createContext,useContext,useEffect,useMemo,useState}from"react";import{jsx}from"react/jsx-runtime";var UnifiedShareModalContext=createContext(null),useUnifiedShareModalContext=()=>{let context=useContext(UnifiedShareModalContext);if(!context)throw Error(`useUnifiedShareModalContext must be used with UnifiedShareModalContext.Provider`);return context},UnifiedShareModalProvider=({children,collaborationAccess,collaborationNotices,collaborationRoles,collaborators,config,contactService,currentUser,eventService,initialContacts,invitationFormNotices,isFetching,isOpen,isSubmitting,item,onOpenChange,sharedLink,sharedLinkNotices,sharingService,variant})=>{let[collaborator,setCollaborator]=useState(null),[isLoading,setIsLoading]=useState(!1),[view,setView]=useState(`unified-share-form`);useEffect(()=>{isOpen||(setIsLoading(!1),setView(`unified-share-form`))},[isOpen]);let contextValue=useMemo(()=>({collaborationAccess,collaborationNotices,collaborationRoles:collaborationRoles??DEFAULT_COLLABORATION_ROLES,collaborator,collaborators:collaborators??[],config:{...DEFAULT_CONFIGURATION,...config},contactService:contactService??{},currentUser:currentUser??{},eventService:eventService??{},initialContacts:initialContacts??[],invitationFormNotices,isFetching,isOpen,isSubmitting:isSubmitting??isLoading,item,onOpenChange,setCollaborator,setIsLoading,setView,sharedLink:sharedLink??{},sharedLinkNotices,sharingService:sharingService??{},variant,view}),[collaborationAccess,collaborationNotices,collaborationRoles,collaborator,collaborators,config,contactService,currentUser,eventService,initialContacts,invitationFormNotices,isFetching,isLoading,isOpen,isSubmitting,item,onOpenChange,sharedLink,sharedLinkNotices,sharingService,variant,view]);return jsx(UnifiedShareModalContext.Provider,{value:contextValue,children})};export{UnifiedShareModalContext,UnifiedShareModalProvider,useUnifiedShareModalContext};
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useFormValidation as t } from "./use-form-validation.js";
|
|
3
|
-
import { useSharingAction as n } from "./use-sharing-action.js";
|
|
4
|
-
import { useCollaborationForm as r } from "./use-collaboration-form.js";
|
|
5
|
-
import { useLinkSettingsForm as i } from "./use-link-settings-form.js";
|
|
6
|
-
import { usePermissionLevels as a } from "./use-permission-levels.js";
|
|
7
|
-
export { e as useAccessLevels, r as useCollaborationForm, t as useFormValidation, i as useLinkSettingsForm, a as usePermissionLevels, n as useSharingAction };
|
|
1
|
+
import{useAccessLevels}from"./use-access-levels.js";import{useFormValidation}from"./use-form-validation.js";import{useSharingAction}from"./use-sharing-action.js";import{useCollaborationForm}from"./use-collaboration-form.js";import{useLinkSettingsForm}from"./use-link-settings-form.js";import{usePermissionLevels}from"./use-permission-levels.js";export{useAccessLevels,useCollaborationForm,useFormValidation,useLinkSettingsForm,usePermissionLevels,useSharingAction};
|
|
@@ -1,70 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { getAllowedAccessLevels as t } from "../utils/permission.js";
|
|
3
|
-
import n from "../components/unified-share-form-modal/shared-link-section/messages.js";
|
|
4
|
-
import { useMemo as r } from "react";
|
|
5
|
-
import { useIntl as i } from "react-intl";
|
|
6
|
-
var a = (e, t, r) => {
|
|
7
|
-
let { id: i, label: a } = t, o;
|
|
8
|
-
switch (i) {
|
|
9
|
-
case "collaborators":
|
|
10
|
-
o = n.collaboratorsAccessLevelLabel;
|
|
11
|
-
break;
|
|
12
|
-
case "company":
|
|
13
|
-
o = r ? n.enterpriseAccessLevelLabel : n.companyAccessLevelLabel;
|
|
14
|
-
break;
|
|
15
|
-
case "open":
|
|
16
|
-
o = n.openAccessLevelLabel;
|
|
17
|
-
break;
|
|
18
|
-
}
|
|
19
|
-
return a ?? (o ? e(o, { enterprise: r }) : "");
|
|
20
|
-
}, o = (e, t, r, i) => {
|
|
21
|
-
let { description: a, id: o } = t, s, c;
|
|
22
|
-
switch (o) {
|
|
23
|
-
case "collaborators":
|
|
24
|
-
s = n.collaboratorsAccessLevelDescription;
|
|
25
|
-
break;
|
|
26
|
-
case "company":
|
|
27
|
-
s = r ? n.enterpriseAccessLevelDescription : n.companyAccessLevelDescription;
|
|
28
|
-
break;
|
|
29
|
-
case "open":
|
|
30
|
-
s = n.openAccessLevelDescription;
|
|
31
|
-
break;
|
|
32
|
-
}
|
|
33
|
-
switch (i) {
|
|
34
|
-
case "file":
|
|
35
|
-
c = n.fileAccessLevelItem;
|
|
36
|
-
break;
|
|
37
|
-
case "folder":
|
|
38
|
-
c = n.folderAccessLevelItem;
|
|
39
|
-
break;
|
|
40
|
-
case "hubs":
|
|
41
|
-
c = n.hubsAccessLevelItem;
|
|
42
|
-
break;
|
|
43
|
-
case "web_link":
|
|
44
|
-
c = n.webLinkAccessLevelItem;
|
|
45
|
-
break;
|
|
46
|
-
case "workflow":
|
|
47
|
-
c = n.workflowAccessLevelItem;
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
return a ?? (s ? e(s, {
|
|
51
|
-
enterprise: r,
|
|
52
|
-
item: e(c)
|
|
53
|
-
}) : "");
|
|
54
|
-
}, s = () => {
|
|
55
|
-
let { formatMessage: n } = i(), { currentUser: s, item: c, sharedLink: l } = e(), { enterprise: u = {} } = s, { name: d } = u, { type: f } = c, { access: p, accessLevels: m } = l, h = r(() => t(m).map((e) => ({
|
|
56
|
-
...e,
|
|
57
|
-
description: o(n, e, d, f),
|
|
58
|
-
label: a(n, e, d)
|
|
59
|
-
})), [
|
|
60
|
-
m,
|
|
61
|
-
d,
|
|
62
|
-
n,
|
|
63
|
-
f
|
|
64
|
-
]);
|
|
65
|
-
return {
|
|
66
|
-
allowedLevels: h,
|
|
67
|
-
selectedAccess: r(() => h.find(({ id: e }) => p === e), [p, h])
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
export { s as useAccessLevels };
|
|
1
|
+
import{useUnifiedShareModalContext}from"../contexts/unified-share-modal-context.js";import{getAllowedAccessLevels}from"../utils/permission.js";import messages from"../components/unified-share-form-modal/shared-link-section/messages.js";import{useMemo}from"react";import{useIntl}from"react-intl";var getAccessLevelLabel=(formatMessage,accessLevel,enterprise)=>{let{id:access,label}=accessLevel,message;switch(access){case`collaborators`:message=messages.collaboratorsAccessLevelLabel;break;case`company`:message=enterprise?messages.enterpriseAccessLevelLabel:messages.companyAccessLevelLabel;break;case`open`:message=messages.openAccessLevelLabel;break}return label??(message?formatMessage(message,{enterprise}):``)},getAccessLevelDescription=(formatMessage,accessLevel,enterprise,type)=>{let{description,id:access}=accessLevel,message,item;switch(access){case`collaborators`:message=messages.collaboratorsAccessLevelDescription;break;case`company`:message=enterprise?messages.enterpriseAccessLevelDescription:messages.companyAccessLevelDescription;break;case`open`:message=messages.openAccessLevelDescription;break}switch(type){case`file`:item=messages.fileAccessLevelItem;break;case`folder`:item=messages.folderAccessLevelItem;break;case`hubs`:item=messages.hubsAccessLevelItem;break;case`web_link`:item=messages.webLinkAccessLevelItem;break;case`workflow`:item=messages.workflowAccessLevelItem;break}return description??(message?formatMessage(message,{enterprise,item:formatMessage(item)}):``)},useAccessLevels=()=>{let{formatMessage}=useIntl(),{currentUser,item,sharedLink}=useUnifiedShareModalContext(),{enterprise={}}=currentUser,{name:enterpriseName}=enterprise,{type:itemType}=item,{access,accessLevels}=sharedLink,allowedLevels=useMemo(()=>getAllowedAccessLevels(accessLevels).map(level=>({...level,description:getAccessLevelDescription(formatMessage,level,enterpriseName,itemType),label:getAccessLevelLabel(formatMessage,level,enterpriseName)})),[accessLevels,enterpriseName,formatMessage,itemType]);return{allowedLevels,selectedAccess:useMemo(()=>allowedLevels.find(({id})=>access===id),[access,allowedLevels])}};export{useAccessLevels};
|
|
@@ -1,76 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { parseEmails as t } from "../utils/email.js";
|
|
3
|
-
import { useUnifiedShareFormContext as n } from "../contexts/unified-share-form-context.js";
|
|
4
|
-
import { useFormValidation as r } from "./use-form-validation.js";
|
|
5
|
-
import { useSharingAction as i } from "./use-sharing-action.js";
|
|
6
|
-
import { useCallback as a } from "react";
|
|
7
|
-
import o from "lodash/differenceBy";
|
|
8
|
-
import s from "lodash/uniqBy";
|
|
9
|
-
var c = (c, l) => {
|
|
10
|
-
let { errors: u, setFieldError: d, validateCollaborationLimit: f, validateUserContact: p, validateUserSelector: m } = r(), { config: h, contactService: g } = e(), { collaborationLimit: _ } = h, { collaborationRole: v, form: y, messageValue: b, setContactValue: x, setMessageValue: S, setUserContacts: C, shieldRestriction: w, userContacts: T } = n(), { onAction: E } = i(c, l), { getContactsByEmail: D } = g, O = () => {
|
|
11
|
-
C([]), x(""), S(""), d("userContacts", "");
|
|
12
|
-
}, k = a((e) => {
|
|
13
|
-
f(T, _) || d("userContacts", ""), x(e);
|
|
14
|
-
}, [
|
|
15
|
-
_,
|
|
16
|
-
x,
|
|
17
|
-
d,
|
|
18
|
-
T,
|
|
19
|
-
f
|
|
20
|
-
]), A = a(async (e) => {
|
|
21
|
-
let t = {};
|
|
22
|
-
if (D && e.length > 0) {
|
|
23
|
-
let n = await D(e);
|
|
24
|
-
for (let e of Object.keys(n)) t[e.toLowerCase()] = n[e];
|
|
25
|
-
}
|
|
26
|
-
return e.map((e) => t[e.toLowerCase()] || {
|
|
27
|
-
email: e,
|
|
28
|
-
id: 0,
|
|
29
|
-
isExternalUser: !0,
|
|
30
|
-
name: e,
|
|
31
|
-
value: e,
|
|
32
|
-
type: "user"
|
|
33
|
-
});
|
|
34
|
-
}, [D]), j = a(async (e) => {
|
|
35
|
-
d("userContacts", ""), m(e);
|
|
36
|
-
let n;
|
|
37
|
-
if (e.length <= T.length || e[e.length - 1].id !== void 0) n = e;
|
|
38
|
-
else {
|
|
39
|
-
let r = e.slice(0, -1), i = e[e.length - 1].value, a = t(i);
|
|
40
|
-
a.length === 0 && p(i);
|
|
41
|
-
let c = await A(s(o(a, r.filter((e) => e.email).map((e) => e.email), (e) => e.toLowerCase()), (e) => e.toLowerCase()));
|
|
42
|
-
n = [...r, ...c];
|
|
43
|
-
}
|
|
44
|
-
_ && f(n, _), C(n);
|
|
45
|
-
}, [
|
|
46
|
-
_,
|
|
47
|
-
A,
|
|
48
|
-
d,
|
|
49
|
-
C,
|
|
50
|
-
T,
|
|
51
|
-
f,
|
|
52
|
-
p,
|
|
53
|
-
m
|
|
54
|
-
]);
|
|
55
|
-
return {
|
|
56
|
-
errors: u,
|
|
57
|
-
handleFormReset: O,
|
|
58
|
-
handleFormSubmit: async () => {
|
|
59
|
-
if (u.userContacts || m(T)) return !0;
|
|
60
|
-
let e = {
|
|
61
|
-
contacts: T,
|
|
62
|
-
message: b
|
|
63
|
-
};
|
|
64
|
-
return y === "invite" && (e.role = v.id), w.isJustificationAllowed && (e.justificationReason = w.justificationReason, e.classificationId = w.classificationId), await E(e), O(), !1;
|
|
65
|
-
},
|
|
66
|
-
handleSelectedUsersChange: j,
|
|
67
|
-
handleUserSelectorBlur: a((e) => {
|
|
68
|
-
let t = e.relatedTarget?.closest(".usm-UserContacts-input"), n = document.querySelector("[aria-labelledby^=\"usm-UserContacts-\"]")?.contains(e.relatedTarget);
|
|
69
|
-
if (t || n) return;
|
|
70
|
-
let r = e.target.value.trim();
|
|
71
|
-
r && j([...T, { value: r }]);
|
|
72
|
-
}, [j, T]),
|
|
73
|
-
updateContactValue: k
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
export { c as useCollaborationForm };
|
|
1
|
+
import{useUnifiedShareModalContext}from"../contexts/unified-share-modal-context.js";import{parseEmails}from"../utils/email.js";import{useUnifiedShareFormContext}from"../contexts/unified-share-form-context.js";import{useFormValidation}from"./use-form-validation.js";import{useSharingAction}from"./use-sharing-action.js";import{useCallback}from"react";import differenceBy from"lodash/differenceBy";import uniqBy from"lodash/uniqBy";var useCollaborationForm=(formAction,formNotification)=>{let{errors,setFieldError,validateCollaborationLimit,validateUserContact,validateUserSelector}=useFormValidation(),{config,contactService}=useUnifiedShareModalContext(),{collaborationLimit}=config,{collaborationRole,form,messageValue,setContactValue,setMessageValue,setUserContacts,shieldRestriction,userContacts}=useUnifiedShareFormContext(),{onAction:onFormSubmit}=useSharingAction(formAction,formNotification),{getContactsByEmail}=contactService,handleFormReset=()=>{setUserContacts([]),setContactValue(``),setMessageValue(``),setFieldError(`userContacts`,``)},updateContactValue=useCallback(input=>{validateCollaborationLimit(userContacts,collaborationLimit)||setFieldError(`userContacts`,``),setContactValue(input)},[collaborationLimit,setContactValue,setFieldError,userContacts,validateCollaborationLimit]),processContacts=useCallback(async emails=>{let fetchedContacts={};if(getContactsByEmail&&emails.length>0){let response=await getContactsByEmail(emails);for(let key of Object.keys(response))fetchedContacts[key.toLowerCase()]=response[key]}return emails.map(email=>fetchedContacts[email.toLowerCase()]||{email,id:0,isExternalUser:!0,name:email,value:email,type:`user`})},[getContactsByEmail]),handleSelectedUsersChange=useCallback(async users=>{setFieldError(`userContacts`,``),validateUserSelector(users);let nextUserContacts;if(users.length<=userContacts.length||users[users.length-1].id!==void 0)nextUserContacts=users;else{let previousContacts=users.slice(0,-1),rawInput=users[users.length-1].value,parsedEmails=parseEmails(rawInput);parsedEmails.length===0&&validateUserContact(rawInput);let processedContacts=await processContacts(uniqBy(differenceBy(parsedEmails,previousContacts.filter(user=>user.email).map(user=>user.email),email=>email.toLowerCase()),email=>email.toLowerCase()));nextUserContacts=[...previousContacts,...processedContacts]}collaborationLimit&&validateCollaborationLimit(nextUserContacts,collaborationLimit),setUserContacts(nextUserContacts)},[collaborationLimit,processContacts,setFieldError,setUserContacts,userContacts,validateCollaborationLimit,validateUserContact,validateUserSelector]);return{errors,handleFormReset,handleFormSubmit:async()=>{if(errors.userContacts||validateUserSelector(userContacts))return!0;let formData={contacts:userContacts,message:messageValue};return form===`invite`&&(formData.role=collaborationRole.id),shieldRestriction.isJustificationAllowed&&(formData.justificationReason=shieldRestriction.justificationReason,formData.classificationId=shieldRestriction.classificationId),await onFormSubmit(formData),handleFormReset(),!1},handleSelectedUsersChange,handleUserSelectorBlur:useCallback(event=>{let isInputFocused=event.relatedTarget?.closest(`.usm-UserContacts-input`),isPopupFocused=document.querySelector(`[aria-labelledby^="usm-UserContacts-"]`)?.contains(event.relatedTarget);if(isInputFocused||isPopupFocused)return;let value=event.target.value.trim();value&&handleSelectedUsersChange([...userContacts,{value}])},[handleSelectedUsersChange,userContacts]),updateContactValue}};export{useCollaborationForm};
|
|
@@ -1,33 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { doesPasswordContainInvalidCharacter as t, doesPasswordContainLetter as n, doesPasswordContainMinCharacters as r, doesPasswordContainMixedCase as i, doesPasswordContainNumber as a, doesPasswordContainSymbol as o, isEmailValid as s, isVanityNameValid as c } from "../utils/validation.js";
|
|
3
|
-
import l from "../messages.js";
|
|
4
|
-
import { useCallback as u, useState as d } from "react";
|
|
5
|
-
import { useIntl as f } from "react-intl";
|
|
6
|
-
var p = () => {
|
|
7
|
-
let { formatMessage: p } = f(), [m, h] = d({}), g = u((e, t) => {
|
|
8
|
-
h((n) => ({
|
|
9
|
-
...n,
|
|
10
|
-
[e]: t
|
|
11
|
-
}));
|
|
12
|
-
}, []), _ = u((t) => {
|
|
13
|
-
if (!t) return g("expiration", p(l.expirationRequiredErrorMessage)), !0;
|
|
14
|
-
let n = e();
|
|
15
|
-
return t.compare(n) < 0 ? (g("expiration", p(l.expirationFutureDateErrorMessage)), !0) : !1;
|
|
16
|
-
}, [p, g]), v = u((e) => e ? c(e) ? !1 : (g("vanityName", p(l.vanityNameInvalidErrorMessage)), !0) : (g("vanityName", p(l.vanityNameRequiredErrorMessage)), !0), [p, g]), y = u((e, t) => {
|
|
17
|
-
let n = e.filter((e) => e.chipVariant === "error");
|
|
18
|
-
return t.isJustificationAllowed && !t.justificationReason ? p(l.justificationRequiredErrorNotice, { count: n.length }) : n.length && !t.isJustificationAllowed ? p(l.restrictedContactsErrorNotice, { count: n.length }) : "";
|
|
19
|
-
}, [p]), b = u((e) => e.length ? !1 : (g("userContacts", p(l.emailRequiredErrorMessage)), !0), [p, g]), x = u((e, t) => e.filter((e) => e.value !== "").length <= t ? !1 : (g("userContacts", p(l.contactsLimitErrorMessage, { maxContacts: t })), !0), [p, g]), S = u((e) => e === "" ? !0 : s(e) ? !1 : (g("userContacts", p(l.invalidEmailErrorMessage)), !0), [p, g]);
|
|
20
|
-
return {
|
|
21
|
-
errors: m,
|
|
22
|
-
validateCollaborationLimit: x,
|
|
23
|
-
validateExpiration: _,
|
|
24
|
-
validatePassword: u((e) => r(e) ? t(e) ? (g("password", p(l.passwordContainInvalidCharacterErrorMessage)), !0) : !i(e) && !(n(e) && a(e)) && !(n(e) && o(e)) && !(a(e) && o(e)) ? (g("password", p(l.passwordContainLetterNumberOrSymbolErrorMessage)), !0) : !1 : (g("password", p(l.passwordContainMinCharactersErrorMessage)), !0), [p, g]),
|
|
25
|
-
validateShieldRestriction: y,
|
|
26
|
-
validateVanityName: v,
|
|
27
|
-
validateUserContact: S,
|
|
28
|
-
validateUserSelector: b,
|
|
29
|
-
setErrors: h,
|
|
30
|
-
setFieldError: g
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
export { p as useFormValidation };
|
|
1
|
+
import{formatTomorrowDateToCalendarDate}from"../utils/date.js";import{doesPasswordContainInvalidCharacter,doesPasswordContainLetter,doesPasswordContainMinCharacters,doesPasswordContainMixedCase,doesPasswordContainNumber,doesPasswordContainSymbol,isEmailValid,isVanityNameValid}from"../utils/validation.js";import messages from"../messages.js";import{useCallback,useState}from"react";import{useIntl}from"react-intl";var useFormValidation=()=>{let{formatMessage}=useIntl(),[errors,setErrors]=useState({}),setFieldError=useCallback((field,error)=>{setErrors(prev=>({...prev,[field]:error}))},[]),validateExpiration=useCallback(expiration=>{if(!expiration)return setFieldError(`expiration`,formatMessage(messages.expirationRequiredErrorMessage)),!0;let tomorrow=formatTomorrowDateToCalendarDate();return expiration.compare(tomorrow)<0?(setFieldError(`expiration`,formatMessage(messages.expirationFutureDateErrorMessage)),!0):!1},[formatMessage,setFieldError]),validateVanityName=useCallback(vanityName=>vanityName?isVanityNameValid(vanityName)?!1:(setFieldError(`vanityName`,formatMessage(messages.vanityNameInvalidErrorMessage)),!0):(setFieldError(`vanityName`,formatMessage(messages.vanityNameRequiredErrorMessage)),!0),[formatMessage,setFieldError]),validateShieldRestriction=useCallback((users,shieldRestriction)=>{let restrictedContacts=users.filter(user=>user.chipVariant===`error`);return shieldRestriction.isJustificationAllowed&&!shieldRestriction.justificationReason?formatMessage(messages.justificationRequiredErrorNotice,{count:restrictedContacts.length}):restrictedContacts.length&&!shieldRestriction.isJustificationAllowed?formatMessage(messages.restrictedContactsErrorNotice,{count:restrictedContacts.length}):``},[formatMessage]),validateUserSelector=useCallback(users=>users.length?!1:(setFieldError(`userContacts`,formatMessage(messages.emailRequiredErrorMessage)),!0),[formatMessage,setFieldError]),validateCollaborationLimit=useCallback((users,maxContacts)=>users.filter(user=>user.value!==``).length<=maxContacts?!1:(setFieldError(`userContacts`,formatMessage(messages.contactsLimitErrorMessage,{maxContacts})),!0),[formatMessage,setFieldError]),validateUserContact=useCallback(user=>user===``?!0:isEmailValid(user)?!1:(setFieldError(`userContacts`,formatMessage(messages.invalidEmailErrorMessage)),!0),[formatMessage,setFieldError]);return{errors,validateCollaborationLimit,validateExpiration,validatePassword:useCallback(password=>doesPasswordContainMinCharacters(password)?doesPasswordContainInvalidCharacter(password)?(setFieldError(`password`,formatMessage(messages.passwordContainInvalidCharacterErrorMessage)),!0):!doesPasswordContainMixedCase(password)&&!(doesPasswordContainLetter(password)&&doesPasswordContainNumber(password))&&!(doesPasswordContainLetter(password)&&doesPasswordContainSymbol(password))&&!(doesPasswordContainNumber(password)&&doesPasswordContainSymbol(password))?(setFieldError(`password`,formatMessage(messages.passwordContainLetterNumberOrSymbolErrorMessage)),!0):!1:(setFieldError(`password`,formatMessage(messages.passwordContainMinCharactersErrorMessage)),!0),[formatMessage,setFieldError]),validateShieldRestriction,validateVanityName,validateUserContact,validateUserSelector,setErrors,setFieldError}};export{useFormValidation};
|
|
@@ -1,50 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { getUpdatedLinkSettingsFormData as t } from "../utils/form.js";
|
|
3
|
-
import { useFormValidation as n } from "./use-form-validation.js";
|
|
4
|
-
import { useSharingAction as r } from "./use-sharing-action.js";
|
|
5
|
-
import { useCallback as i, useEffect as a, useRef as o, useState as s } from "react";
|
|
6
|
-
import c from "lodash/isEqual";
|
|
7
|
-
var l = (l) => {
|
|
8
|
-
let [u, d] = s(l), f = o(l), { errors: p, setErrors: m, setFieldError: h, validateExpiration: g, validatePassword: _, validateVanityName: v } = n(), { sharingService: y } = e(), { updateSharedLink: b } = y, { onAction: x } = r(b, "update-shared-link");
|
|
9
|
-
a(() => {
|
|
10
|
-
c(f.current, l) || (d(l), m({}), f.current = l);
|
|
11
|
-
}, [l, m]);
|
|
12
|
-
let S = i((e, t) => {
|
|
13
|
-
d((n) => ({
|
|
14
|
-
...n,
|
|
15
|
-
[e]: t
|
|
16
|
-
}));
|
|
17
|
-
}, []);
|
|
18
|
-
return {
|
|
19
|
-
errors: p,
|
|
20
|
-
formData: u,
|
|
21
|
-
handleFormReset: i(() => {
|
|
22
|
-
d(l), m({});
|
|
23
|
-
}, [l, m]),
|
|
24
|
-
handleFormSubmit: i(async () => {
|
|
25
|
-
let e = t(u, l), { expiration: n, isExpirationEnabled: r, isPasswordEnabled: i, isVanityNameEnabled: a, password: o, vanityName: s } = e, c = r && g(n), d = i && _(o), f = a && v(s);
|
|
26
|
-
if (c || d || f) return !0;
|
|
27
|
-
try {
|
|
28
|
-
await x({
|
|
29
|
-
...l,
|
|
30
|
-
...e
|
|
31
|
-
});
|
|
32
|
-
} catch (e) {
|
|
33
|
-
return Object.entries(e).forEach(([e, t]) => h(e, t)), !0;
|
|
34
|
-
}
|
|
35
|
-
return !1;
|
|
36
|
-
}, [
|
|
37
|
-
u,
|
|
38
|
-
l,
|
|
39
|
-
x,
|
|
40
|
-
h,
|
|
41
|
-
g,
|
|
42
|
-
_,
|
|
43
|
-
v
|
|
44
|
-
]),
|
|
45
|
-
setFieldError: h,
|
|
46
|
-
setFieldValue: S,
|
|
47
|
-
validatePassword: _
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
export { l as useLinkSettingsForm };
|
|
1
|
+
import{useUnifiedShareModalContext}from"../contexts/unified-share-modal-context.js";import{getUpdatedLinkSettingsFormData}from"../utils/form.js";import{useFormValidation}from"./use-form-validation.js";import{useSharingAction}from"./use-sharing-action.js";import{useCallback,useEffect,useRef,useState}from"react";import isEqual from"lodash/isEqual";var useLinkSettingsForm=initialFormData=>{let[formData,setFormData]=useState(initialFormData),prevInitialFormDataRef=useRef(initialFormData),{errors,setErrors,setFieldError,validateExpiration,validatePassword,validateVanityName}=useFormValidation(),{sharingService}=useUnifiedShareModalContext(),{updateSharedLink}=sharingService,{onAction:onUpdate}=useSharingAction(updateSharedLink,`update-shared-link`);useEffect(()=>{isEqual(prevInitialFormDataRef.current,initialFormData)||(setFormData(initialFormData),setErrors({}),prevInitialFormDataRef.current=initialFormData)},[initialFormData,setErrors]);let setFieldValue=useCallback((field,value)=>{setFormData(prev=>({...prev,[field]:value}))},[]);return{errors,formData,handleFormReset:useCallback(()=>{setFormData(initialFormData),setErrors({})},[initialFormData,setErrors]),handleFormSubmit:useCallback(async()=>{let updatedFormData=getUpdatedLinkSettingsFormData(formData,initialFormData),{expiration,isExpirationEnabled,isPasswordEnabled,isVanityNameEnabled,password,vanityName}=updatedFormData,hasExpirationError=isExpirationEnabled&&validateExpiration(expiration),hasPasswordError=isPasswordEnabled&&validatePassword(password),hasVanityNameError=isVanityNameEnabled&&validateVanityName(vanityName);if(hasExpirationError||hasPasswordError||hasVanityNameError)return!0;try{await onUpdate({...initialFormData,...updatedFormData})}catch(error){return Object.entries(error).forEach(([field,value])=>setFieldError(field,value)),!0}return!1},[formData,initialFormData,onUpdate,setFieldError,validateExpiration,validatePassword,validateVanityName]),setFieldError,setFieldValue,validatePassword}};export{useLinkSettingsForm};
|
|
@@ -1,34 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { getAllowedPermissionLevels as t } from "../utils/permission.js";
|
|
3
|
-
import n from "../components/unified-share-form-modal/shared-link-section/messages.js";
|
|
4
|
-
import { useMemo as r } from "react";
|
|
5
|
-
import { useIntl as i } from "react-intl";
|
|
6
|
-
var a = (e, t) => {
|
|
7
|
-
let { id: r, label: i } = t, a;
|
|
8
|
-
switch (r) {
|
|
9
|
-
case "can_download":
|
|
10
|
-
a = n.canDownloadPermissionLevelLabel;
|
|
11
|
-
break;
|
|
12
|
-
case "can_edit":
|
|
13
|
-
a = n.canEditPermissionLevelLabel;
|
|
14
|
-
break;
|
|
15
|
-
case "can_preview":
|
|
16
|
-
a = n.canPreviewPermissionLevelLabel;
|
|
17
|
-
break;
|
|
18
|
-
}
|
|
19
|
-
return i ?? (a ? e(a) : "");
|
|
20
|
-
}, o = () => {
|
|
21
|
-
let { formatMessage: n } = i(), { sharedLink: o } = e(), { permission: s, permissionLevels: c } = o, l = r(() => t(c).map((e) => {
|
|
22
|
-
let { description: t } = e;
|
|
23
|
-
return {
|
|
24
|
-
...e,
|
|
25
|
-
description: t ?? "",
|
|
26
|
-
label: a(n, e)
|
|
27
|
-
};
|
|
28
|
-
}), [c, n]);
|
|
29
|
-
return {
|
|
30
|
-
allowedLevels: l,
|
|
31
|
-
selectedPermission: r(() => l.find(({ id: e }) => s === e), [s, l])
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
export { o as usePermissionLevels };
|
|
1
|
+
import{useUnifiedShareModalContext}from"../contexts/unified-share-modal-context.js";import{getAllowedPermissionLevels}from"../utils/permission.js";import messages from"../components/unified-share-form-modal/shared-link-section/messages.js";import{useMemo}from"react";import{useIntl}from"react-intl";var getPermissionLevelLabel=(formatMessage,permissionLevel)=>{let{id:permission,label}=permissionLevel,message;switch(permission){case`can_download`:message=messages.canDownloadPermissionLevelLabel;break;case`can_edit`:message=messages.canEditPermissionLevelLabel;break;case`can_preview`:message=messages.canPreviewPermissionLevelLabel;break}return label??(message?formatMessage(message):``)},usePermissionLevels=()=>{let{formatMessage}=useIntl(),{sharedLink}=useUnifiedShareModalContext(),{permission,permissionLevels}=sharedLink,allowedLevels=useMemo(()=>getAllowedPermissionLevels(permissionLevels).map(level=>{let{description}=level;return{...level,description:description??``,label:getPermissionLevelLabel(formatMessage,level)}}),[permissionLevels,formatMessage]);return{allowedLevels,selectedPermission:useMemo(()=>allowedLevels.find(({id})=>permission===id),[permission,allowedLevels])}};export{usePermissionLevels};
|
|
@@ -1,45 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { getNotificationArgs as t, getNotificationMessage as n } from "../utils/notification.js";
|
|
3
|
-
import { useCallback as r, useMemo as i } from "react";
|
|
4
|
-
import { useIntl as a } from "react-intl";
|
|
5
|
-
import { useNotification as o } from "@box/blueprint-web";
|
|
6
|
-
var s = (s, c) => {
|
|
7
|
-
let { formatMessage: l } = a(), { addNotification: u } = o(), { config: d, item: f, setIsLoading: p } = e(), { notifications: m } = d, { name: h } = f, g = i(() => m.includes(c), [c, m]);
|
|
8
|
-
return { onAction: r(async (...e) => {
|
|
9
|
-
p(!0);
|
|
10
|
-
try {
|
|
11
|
-
if (s) {
|
|
12
|
-
let r = await s(...e), i = !!r && !!r.messages, a = g && !i;
|
|
13
|
-
i && r.messages.forEach(({ text: e, type: n, ...r }) => {
|
|
14
|
-
u({
|
|
15
|
-
...t(l, n),
|
|
16
|
-
styledText: e,
|
|
17
|
-
...r
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
let o = n(l, "success", c, { itemName: h });
|
|
21
|
-
a && o && u({
|
|
22
|
-
...t(l, "success"),
|
|
23
|
-
styledText: o
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
} catch (e) {
|
|
27
|
-
let r = n(l, "error", c);
|
|
28
|
-
if (g && r && u({
|
|
29
|
-
...t(l, "error"),
|
|
30
|
-
styledText: r
|
|
31
|
-
}), e?.fields && Object.values(e.fields).length) throw e.fields;
|
|
32
|
-
} finally {
|
|
33
|
-
p(!1);
|
|
34
|
-
}
|
|
35
|
-
}, [
|
|
36
|
-
s,
|
|
37
|
-
u,
|
|
38
|
-
l,
|
|
39
|
-
g,
|
|
40
|
-
h,
|
|
41
|
-
c,
|
|
42
|
-
p
|
|
43
|
-
]) };
|
|
44
|
-
};
|
|
45
|
-
export { s as useSharingAction };
|
|
1
|
+
import{useUnifiedShareModalContext}from"../contexts/unified-share-modal-context.js";import{getNotificationArgs,getNotificationMessage}from"../utils/notification.js";import{useCallback,useMemo}from"react";import{useIntl}from"react-intl";import{useNotification}from"@box/blueprint-web";var useSharingAction=(action,notification)=>{let{formatMessage}=useIntl(),{addNotification}=useNotification(),{config,item,setIsLoading}=useUnifiedShareModalContext(),{notifications}=config,{name:itemName}=item,isNotificationEnabled=useMemo(()=>notifications.includes(notification),[notification,notifications]);return{onAction:useCallback(async(...args)=>{setIsLoading(!0);try{if(action){let response=await action(...args),hasCustomNotifications=!!response&&!!response.messages,hasDefaultNotification=isNotificationEnabled&&!hasCustomNotifications;hasCustomNotifications&&response.messages.forEach(({text,type,...options})=>{addNotification({...getNotificationArgs(formatMessage,type),styledText:text,...options})});let successMessage=getNotificationMessage(formatMessage,`success`,notification,{itemName});hasDefaultNotification&&successMessage&&addNotification({...getNotificationArgs(formatMessage,`success`),styledText:successMessage})}}catch(error){let errorMessage=getNotificationMessage(formatMessage,`error`,notification);if(isNotificationEnabled&&errorMessage&&addNotification({...getNotificationArgs(formatMessage,`error`),styledText:errorMessage}),error?.fields&&Object.values(error.fields).length)throw error.fields}finally{setIsLoading(!1)}},[action,addNotification,formatMessage,isNotificationEnabled,itemName,notification,setIsLoading])}};export{useSharingAction};
|