strapi-plugin-navigation 3.0.10 → 3.0.11

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.
@@ -151,7 +151,7 @@
151
151
  border-left: 4px solid ${n.colors.neutral300};
152
152
  }
153
153
  `};
154
- `,Ft=({isParentAttachedToMenu:e=!1,items:n,level:i=0,levelPath:s="",onItemEdit:d,onItemLevelAdd:r,onItemRemove:h,onItemRestore:x,onItemReOrder:F,onItemToggleCollapse:g,displayFlat:f,permissions:S,structurePrefix:b,viewParentId:$,locale:I})=>t.jsx(ha,{"data-level":i,children:n?.map((T,u)=>t.jsx(ga,{item:T,isLast:u===n.length-1,level:i,levelPath:s,isParentAttachedToMenu:e,onItemRestore:x,onItemLevelAdd:r,onItemRemove:h,onItemEdit:d,onItemReOrder:F,onItemToggleCollapse:g,displayChildren:f,permissions:S,structureId:b?`${b}.${u}`:u.toString(),viewParentId:$,locale:I},`list-item-${T.viewId||u}`))}),fa="",ya={type:"media",multiple:!1,required:!1,allowedTypes:["images"],pluginOptions:{i18n:{localized:!1}}},xa=({name:e,field:n,isLoading:i,onChange:s,onChangeEnhancer:d,value:r,disabled:h})=>{const{toggleNotification:x}=P.useNotification(),{formatMessage:F}=H.useIntl(),f=P.useStrapiApp("AdditionalFieldInput",b=>b.fields).media,S=p.useMemo(()=>({id:n.name,name:e||n.name,disabled:i||h}),[n,i]);switch(p.useEffect(()=>{n.type==="media"&&d(S.name,r,s)},[r]),n.type){case"boolean":return t.jsx(a.Toggle,{...S,checked:!!r,onChange:b=>d(b,!r,s),onLabel:"true",offLabel:"false",type:"checkbox"});case"string":return t.jsx(a.TextInput,{...S,onChange:(b,$)=>d(b,$,s),value:r||fa});case"select":return n.multi?t.jsx(a.MultiSelect,{...S,onChange:b=>d(S.name,b,s),value:j.isNil(r)?n.multi?[]:null:r,multi:n.multi,withTags:n.multi,children:n.options.map((b,$)=>t.jsx(a.MultiSelectOption,{value:b,children:b},`${n.name}-option-${$}`))}):t.jsx(a.SingleSelect,{...S,onChange:b=>d(S.name,b,s),value:j.isNil(r)?n.multi?[]:null:r,multi:n.multi,withTags:n.multi,children:n.options.map((b,$)=>t.jsx(a.SingleSelectOption,{value:b,children:b},`${n.name}-option-${$}`))});case"media":return t.jsx(f,{...S,...ya,value:r});default:throw x({type:"warning",message:F(l("notification.error.customField.type"))}),new Error("Type of custom field is unsupported")}},ba=({handleCancel:e,handleSubmit:n,submitDisabled:i,canUpdate:s})=>{const{formatMessage:d}=H.useIntl();return s?t.jsxs(a.Modal.Footer,{children:[t.jsx(a.Modal.Close,{children:t.jsx(a.Button,{onClick:e,variant:"tertiary",children:d(l("popup.item.form.button.cancel"))})}),t.jsx(a.Button,{onClick:n,disabled:i,children:d(l("popup.item.form.button.save"))})]}):null},ja=[/^mailto:[\w-\.]+@([\w-]+\.)+[\w-]{2,}$/,/^tel:(\+\d{1,3})?[\s]?(\(?\d{2,3}\)?)?[\s.-]?(\d{3})?[\s.-]?\d{3,4}$/,/^#.*/,/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/,/(\/[a-z0-9\-._~%!$&'()*+,;=:@]+)+\/?/],Ye=({additionalFields:e})=>c.z.object({title:c.z.string(),autoSync:c.z.boolean().optional(),removed:c.z.boolean().optional(),updated:c.z.boolean().optional(),uiRouterKey:c.z.string(),levelPath:c.z.string().optional(),isMenuAllowedLevel:c.z.boolean().optional(),parentAttachedToMenu:c.z.boolean().optional(),viewId:c.z.number().optional(),structureId:c.z.string().optional(),menuAttached:c.z.boolean().optional(),collapsed:c.z.boolean().optional(),isSearchActive:c.z.boolean().optional(),viewParentId:c.z.number().optional(),id:c.z.number().optional(),documentId:c.z.string().optional(),audience:c.z.string().array().optional(),order:c.z.number().optional(),items:c.z.any().array().optional(),additionalFields:c.z.object(e.reduce((n,i)=>{if(typeof i=="string")return n;switch(i.type){case"string":n[i.name]=i.required?c.z.string():c.z.string().optional();break;case"boolean":n[i.name]=i.required?c.z.boolean():c.z.boolean().optional();case"media":n[i.name]=i.required?c.z.any():c.z.any().optional();case"select":{i.multi?n[i.name]=i.required?c.z.string().array():c.z.string().array().optional():n[i.name]=i.required?c.z.string():c.z.string().optional();break}}return n},{}))}),Ia=({additionalFields:e,isSingleSelected:n})=>Ye({additionalFields:e}).extend({type:c.z.literal("INTERNAL"),path:c.z.string(),externalPath:c.z.string().optional(),relatedType:c.z.string(),related:n?c.z.string().optional():c.z.string()}),Ca=({isSingleSelected:e,additionalFields:n})=>Ye({additionalFields:n}).extend({type:c.z.literal("EXTERNAL"),path:c.z.string().or(c.z.null()).optional(),externalPath:c.z.string().min(1).refine(i=>ja.some(s=>s.test(i))),relatedType:c.z.string().optional(),related:c.z.string().optional()}),va=({isSingleSelected:e,additionalFields:n})=>Ye({additionalFields:n}).extend({type:c.z.literal("WRAPPER"),path:c.z.string().or(c.z.null()).optional()}),Ta=e=>c.z.discriminatedUnion("type",[Ca(e),Ia(e),va(e)]),lt={autoSync:!0,type:"INTERNAL",relatedType:"",menuAttached:!1,title:"",externalPath:"",path:"",additionalFields:{},audience:[],updated:!1,uiRouterKey:""},wa=()=>{const e=P.getFetchClient(),n=ee(e);return W.useMutation({mutationFn(i){return n.slugify(i)}})},Sa=async({slugify:e,title:n,config:i,related:s,relatedType:d,contentTypeItems:r})=>{if(n)return n?await e(n):void 0;if(s){const h=Be({...r?.find(x=>x.documentId===s.toString())??{documentId:"",id:0},__collectionUid:d},i);return h?await e(h):void 0}},Fa=({currentType:e,config:n,contentTypeItems:i,currentRelated:s,currentRelatedType:d,isSingleSelected:r})=>{if(e!=="INTERNAL"||!d)return"";const h=n?.pathDefaultFields[d]??[];if(j.isEmpty(e)&&!j.isEmpty(h)){const x=r?j.first(i??[]):i?.find(({id:g})=>g===s);return h.map(g=>x?.[g]??"").filter(g=>!!g.toString().trim())[0]??""}return""},Na=({currentPath:e,isExternal:n,current:i,currentType:s="INTERNAL",config:d,contentTypeItems:r,currentRelated:h,currentRelatedType:x,isSingleSelected:F})=>{if(!n){const g=j.isEmpty(e)||e==="/"?Fa({currentType:s,config:d,contentTypeItems:r,currentRelated:h,currentRelatedType:x,isSingleSelected:F}):e||"";return`${i.levelPath!=="/"?`${i.levelPath}`:""}/${g}`.replace("//","/")}},dt=(e,n)=>n?e.find(i=>i.value===n)?.label??"":"",ct=({name:e,onClear:n,onChange:i,options:s,value:d,disabled:r})=>{const[h,x]=p.useState(dt(s,d));return p.useEffect(()=>{x(dt(s,d))},[d,s]),t.jsx(a.Combobox,{name:e,autocomplete:"list",onClear:n,onChange:i,onTextValueChange:x,value:d,textValue:h,options:s,disabled:r,width:"100%",children:s.map(({key:F,label:g,value:f})=>t.jsx(a.ComboboxOption,{value:f,children:g},F))})},Aa=[],Ra=({availableLocale:e,isLoading:n,current:i=lt,onSubmit:s,onCancel:d,appendLabelPublicationStatus:r=Ea,locale:h,permissions:x={},currentNavigation:F})=>{const{formatMessage:g}=H.useIntl(),[f,S]=p.useState(n),{canUpdate:b}=x,[$,I]=p.useState(!1),[T,u]=p.useState(),[v,A]=p.useState({}),[V,le]=p.useState(),M=ke(),J=M.data?.availableAudience??[],ne=M.data?.contentTypes??[],{toggleNotification:be}=P.useNotification(),je=Tn(),ce=Xe(),te=(m,L,K)=>{if(K){let q=m,C=L;if(j.isObject(m)){const{name:B,value:U}=m.target;q=B,C=j.isNil(C)?U:C}return j.isString(q)&&Z(q,C),K(m,C)}},Z=(m,L)=>{A(j.set({...v,additionalFields:{...v.additionalFields},updated:!0},m,L))},ie=m=>A({...v,additionalFields:{...v.additionalFields},updated:!0,...m}),ue=m=>({...m,additionalFields:M.data?.additionalFields.reduce((L,K)=>{const{name:q,type:C}=K;if(q in(m.additionalFields??{})){let B=m.additionalFields[q];switch(C){case"boolean":B=j.isBoolean(B)?`${B}`:B;break;case"media":B=B&&JSON.stringify(B);break}return{...L,[q]:B}}return L},{})||{}}),Ie=m=>({...m,additionalFields:M.data?.additionalFields.reduce((L,K)=>{const{name:q,type:C}=K;if(q in(m.additionalFields??{})){let B=m.additionalFields[q];switch(C){case"boolean":B=B==="true";break;case"media":B=B&&JSON.parse(B);break}return{...L,[q]:B}}return L},{})||{}}),Ce=async(m,L)=>{m.preventDefault();const K=ue(L),{success:q,data:C,error:B}=Ta({isSingleSelected:$,additionalFields:M.data?.additionalFields??Aa}).safeParse(K);if(q){const U=C.title.trim()?C.title.trim():C.type==="INTERNAL"?E(C?.related?.toString(),C.relatedType,$):"";S(!0);const he=await Sa(C.type==="INTERNAL"?{slugify:D.mutateAsync,title:U,related:C.related,relatedType:C.relatedType}:{slugify:D.mutateAsync,title:U});if(D.reset(),S(!1),!he){be({type:"warning",message:g(l("popup.item.form.uiRouter.unableToRender"))});return}s(C.type==="INTERNAL"?{...C,title:U,uiRouterKey:he}:{...C,title:U,uiRouterKey:he})}else B&&le(B.issues.reduce((U,he)=>({...U,[he.path.join(".")]:he.message}),{}))},oe=(m,L)=>j.get(V,m)?g(l(L??m)):void 0,ve=i.type==="INTERNAL"?i.relatedType:void 0,{path:Se,type:pe,title:Te,autoSync:Fe}=v,{relatedType:ae,related:ye}=v.type==="INTERNAL"?v:{related:void 0,relatedType:void 0},y=pe==="EXTERNAL",z=pe==="INTERNAL",w=y?"externalPath":"path",R=z&&!$&&j.isNil(ye)||f,k=It({uid:ae??"",locale:h}),D=wa(),X=p.useMemo(()=>e.map((m,L)=>({key:`${m}-${L}`,value:m,label:m})),[e]),_=p.useMemo(()=>J.map(m=>({value:m.documentId??0,label:m.name??" "})),[J]),E=p.useCallback((m,L,K)=>{let q;if(K){if(q=k.data?.find(C=>C.uid===L||C.__collectionUid===L),!q)return ne.find(C=>C.uid===L)?.contentTypeName}else q={...k.data?.find(({documentId:B})=>B===m)||{documentId:null},__collectionUid:L};return Be(q,M.data)},[k.data,M.data,ne]),re=(M.data?.contentTypes.length?["INTERNAL","EXTERNAL","WRAPPER"]:["EXTERNAL","WRAPPER"]).map(m=>({key:m,value:m,label:g(l(`popup.item.form.type.${m.toLowerCase()}.label`))})),ge=j.sortBy(k.data?.map(m=>{const L=r(Be({...m,__collectionUid:ae},M.data),m,!1);return{key:m?.documentId?.toString(),value:m?.documentId?.toString(),label:L}})??[],m=>m.label),N=p.useMemo(()=>j.sortBy(M.data?.contentTypes?.filter(m=>m.isSingle?!!(ae&&[ae,ve].includes(m.uid)):!0).map(m=>({key:m.uid,value:m.uid,label:m.contentTypeName})),m=>m.label),[M.data,ae]),Q=j.isEmpty(ge),se=p.useCallback(async m=>{m.preventDefault(),m.stopPropagation();const L=ce.data?.find(({locale:K})=>K===T);L&&(S(!0),je.mutate({target:F.documentId,structureId:i.structureId,source:L.documentId},{onSuccess(K){je.reset();const{type:q,externalPath:C,path:B,related:U,title:he,uiRouterKey:At}=K,{__type:et,documentId:tt}=U??{};Z("type",q),Z("externalPath",C??void 0),Z("path",B??void 0),Z("title",he),Z("uiRouterKey",At),et&&tt&&(Z("related",tt),Z("relatedType",et))},onSettled(){S(!1)}}))},[S,je,ce]);return p.useEffect(()=>{A(Ie({...lt,...i}))},[i]),p.useEffect(()=>{if(ae){const m=M.data?.contentTypes.find(L=>L.uid===ae);if(m&&(I(m.isSingle),m.isSingle&&k.data?.length)){const L=k.data[0];L&&Z("related",L.documentId)}}},[ae,M.data,k.data]),p.useEffect(()=>{if(Fe&&pe==="INTERNAL"&&ye&&ae&&M.data){const m=k.data?.find(L=>L.documentId===ye);if(m){const{contentTypesNameFields:L,pathDefaultFields:K}=M.data,q=K[ae]?.reduce((U,he)=>U||m?.[he],void 0),C=(L[ae]??[]).concat(L.default??[]).reduce((U,he)=>U||m?.[he],void 0),B=[];q&&q!==Se&&B.push({name:"path",value:q}),C&&C!==Te&&B.push({name:"title",value:C}),setTimeout(()=>{B.forEach(U=>{Z(U.name,U.value)})},100)}}},[Te,Se,Fe,pe,ye,ae,M.data,k.data]),t.jsxs(t.Fragment,{children:[t.jsx(a.Modal.Body,{children:t.jsx(P.Form,{width:"auto",height:"auto",method:"POST",initialValues:v,children:({values:m,onChange:L})=>{const K=m.type==="INTERNAL"?m:{related:void 0,relatedType:void 0},q=Na({currentPath:m.path,isExternal:m.type==="EXTERNAL",current:i,currentType:m.type,config:M.data,contentTypeItems:k.data,currentRelated:K.related,currentRelatedType:K.relatedType,isSingleSelected:$});return t.jsxs(t.Fragment,{children:[t.jsxs(a.Grid.Root,{gap:5,paddingBottom:1,children:[t.jsx(a.Grid.Item,{alignItems:"flex-start",col:8,children:t.jsx(G.Field,{name:"type",label:g(l("popup.item.form.type.label","Internal link")),error:oe("type"),hint:g(l("popup.item.form.title.placeholder","e.g. Blog")),children:t.jsx(a.SingleSelect,{onChange:C=>te("type",C,L),value:m.type,name:"type",disabled:!b,width:"100%",children:re.map(({key:C,label:B,value:U})=>t.jsx(a.SingleSelectOption,{value:U,children:B},C))})})},"title"),t.jsx(a.Grid.Item,{alignItems:"flex-start",col:4,children:t.jsx(G.Field,{name:"menuAttached",label:g(l("popup.item.form.menuAttached.label","MenuAttached")),error:oe("menuAttached"),hint:g(l("popup.item.form.menuAttached.placeholder","is menu item attached to menu")),children:t.jsx(a.Toggle,{name:"menuAttached",checked:m.menuAttached,onChange:C=>te(C,!m.menuAttached,L),value:m.menuAttached,onLabel:g(l("popup.item.form.menuAttached.value.yes","yes")),offLabel:g(l("popup.item.form.menuAttached.value.no","no")),disabled:!b||(M.data?.cascadeMenuAttached?!(i.isMenuAllowedLevel&&i.parentAttachedToMenu):!1),width:"100%"})})},"menuAttached")]}),t.jsxs(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:[t.jsx(a.Grid.Item,{alignItems:"flex-start",col:m.type==="INTERNAL"?8:12,children:t.jsx(G.Field,{name:"title",label:g(l("popup.item.form.title.label","Title")),error:oe("title"),hint:g(l("popup.item.form.title.placeholder","e.g. Blog")),children:t.jsx(a.TextInput,{type:"string",disabled:!b||m.autoSync&&m.type==="INTERNAL",name:"title",onChange:(C,B)=>te(C,B,L),value:m.title})})},"title"),m.type==="INTERNAL"&&t.jsx(a.Grid.Item,{alignItems:"flex-start",col:4,children:t.jsx(G.Field,{name:"autoSync",label:g(l("popup.item.form.autoSync.label","Read fields from related")),error:oe("autoSync"),children:t.jsx(a.Toggle,{name:"autoSync",checked:m.autoSync,onChange:C=>te(C,!m.autoSync,L),onLabel:"Enabled",offLabel:"Disabled"})})},"autoSync")]}),t.jsx(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:t.jsx(a.Grid.Item,{alignItems:"flex-start",col:12,children:t.jsx(G.Field,{name:w,label:g(l(`popup.item.form.${w}.label`,"Path")),error:oe(w,`popup.item.form.${w}.validation.type`),hint:[g(l(`popup.item.form.${w}.placeholder`,"e.g. Blog")),q?g(l("popup.item.form.type.external.description"),{value:q}):""].join(" "),children:t.jsx(a.TextInput,{disabled:!b,name:w,onChange:(C,B)=>te(C,B,L),value:m[w],width:"100%"})})},"title")}),m.type==="INTERNAL"&&t.jsxs(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:[t.jsx(a.Grid.Item,{alignItems:"flex-start",col:m.relatedType&&!$?6:12,children:t.jsx(G.Field,{name:"relatedType",label:g(l("popup.item.form.relatedType.label","Related Type")),error:oe("relatedType"),hint:!f&&j.isEmpty(N)?g(l("popup.item.form.relatedType.empty","There are no more content types")):void 0,children:t.jsx(ct,{name:"relatedType",onClear:()=>ie({related:void 0,title:void 0,relatedType:void 0}),onChange:C=>ie({related:void 0,title:m.autoSync?"":m.title,relatedType:C}),value:m.relatedType,options:M.data?.contentTypes.map(C=>({key:C.uid,value:C.uid,label:C.contentTypeName}))??[],disabled:!M.data?.contentTypes.length||!b})})}),m.relatedType&&!$&&t.jsx(a.Grid.Item,{alignItems:"flex-start",col:6,children:t.jsx(G.Field,{name:"related",label:g(l("popup.item.form.related.label","Related")),error:oe("related"),hint:!f&&Q?g(l("popup.item.form.related.empty","There are no more entities"),{contentTypeName:m.relatedType}):void 0,children:t.jsx(ct,{name:"related",onClear:()=>te("related",void 0,L),onChange:C=>te("related",C,L),value:m.related,options:ge,disabled:f||Q||!b})})})]}),!j.isEmpty(M.data?.additionalFields)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:t.jsx(a.Grid.Item,{col:12,lg:12,children:t.jsx(a.Divider,{width:"100%"})})}),t.jsxs(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:[M.data?.additionalFields.map((C,B)=>{if(C!=="audience")return t.jsx(a.Grid.Item,{alignItems:"flex-start",col:6,children:t.jsx(G.Field,{name:`additionalFields.${C.name}`,label:C.label,error:oe(`additionalFields.${C.name}`),children:t.jsx(xa,{name:`additionalFields.${C.name}`,field:C,isLoading:f,onChange:L,onChangeEnhancer:te,value:j.get(m?.additionalFields,C.name),disabled:!b})})},C.name)}),M.data?.additionalFields.map((C,B)=>{if(C==="audience")return t.jsx(a.Grid.Item,{alignItems:"flex-start",col:12,children:t.jsx(G.Field,{name:"audience",label:g(l("popup.item.form.audience.label")),error:oe("audience"),hint:!f&&j.isEmpty(_)?g(l("popup.item.form.title.placeholder","e.g. Blog")):void 0,children:t.jsx(a.MultiSelect,{name:"audience",value:m.audience,onChange:U=>te("audience",U,L),width:"100%",children:_.map(({value:U,label:he})=>t.jsx(a.MultiSelectOption,{value:U,children:he},U))})})},"audience")})]}),t.jsx(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:t.jsx(a.Grid.Item,{col:12,lg:12,children:t.jsx(a.Divider,{width:"100%"})})})]}),X&&X.length>1&&t.jsx(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:t.jsxs(a.Grid.Item,{alignItems:"flex-start",col:12,children:[t.jsx(a.Divider,{marginTop:5,marginBottom:5}),t.jsxs(a.Grid.Root,{gap:5,children:[t.jsx(a.Grid.Item,{alignItems:"flex-start",col:6,lg:12,children:t.jsx(G.Field,{name:"i18n.locale",label:g(l("popup.item.form.i18n.locale.label","Copy details from")),children:t.jsx(a.SingleSelect,{name:"i18n.locale",onChange:u,value:T,disabled:f||!b,placeholder:g(l("popup.item.form.i18n.locale.placeholder","locale")),children:X.map(({key:C,label:B,value:U})=>t.jsx(a.SingleSelectOption,{value:U,children:B},C))})})}),b&&t.jsx(a.Grid.Item,{alignItems:"flex-start",col:6,lg:12,paddingTop:6,children:t.jsx(a.Box,{children:t.jsx(a.Button,{variant:"tertiary",onClick:se,disabled:f||!T,children:g(l("popup.item.form.i18n.locale.button"))})})})]})]},"title")}),t.jsx(a.Grid.Root,{gap:5,children:t.jsx(a.Grid.Item,{alignItems:"flex-start",col:12},"title")})]})}})}),t.jsx(ba,{handleSubmit:m=>Ce(m,v),handleCancel:d,submitDisabled:R,canUpdate:b})]})},Ea=()=>"",La=({isNewItem:e,canUpdate:n})=>{const{formatMessage:i}=H.useIntl();let s="view";return n&&(s=e?"new":"edit"),t.jsx(a.Modal.Header,{children:t.jsx(a.Typography,{variant:"omega",fontWeight:"bold",textColor:"neutral800",as:"h2",id:"asset-dialog-title",children:i(l(`popup.item.header.${s}`))})})},$a=({availableLocale:e,isOpen:n,isLoading:i,currentItem:s={},onSubmit:d,onClose:r,locale:h,permissions:x,currentNavigation:F})=>{const{formatMessage:g}=H.useIntl(),f=$=>{d($)},S=($,I,T)=>`${Nn({relatedRef:I,type:I.isSingle?"INTERNAL":I.type,isCollection:T})?"":`[${g(l("notification.navigation.item.relation.status.draft"))}] `.toUpperCase()}${$}`,b=!!s.viewId;return t.jsx(a.Modal.Root,{labelledBy:"condition-modal-breadcrumbs",onOpenChange:$=>{$||r({preventDefault(){},stopPropagation(){},target:{}})},open:n,children:t.jsxs(a.Modal.Content,{children:[t.jsx(La,{isNewItem:!b,canUpdate:x?.canUpdate}),t.jsx(Ra,{availableLocale:e,current:s,isLoading:i,onSubmit:f,onCancel:r,appendLabelPublicationStatus:S,locale:h,permissions:x,currentNavigation:F})]})})},Ve=0,Pa=({value:e,setValue:n,initialIndex:i=Ve})=>{const[s,d]=p.useState(e),[r,h]=p.useState(e),[x,F]=p.useState(i),[g,f]=p.useState(!!e),S=p.useRef(null),{formatMessage:b}=H.useIntl();p.useEffect(()=>{g&&setTimeout(()=>{S.current?.querySelector("input")?.focus()},0)},[g]),p.useEffect(()=>{x&&s===r&&n({value:s,index:x})},[x,s,r]),p.useEffect(()=>{s!==r&&(h(s),F(Ve),n({value:s,index:Ve}))},[s,r]);const $=p.useCallback(u=>{u.code.toLowerCase()==="enter"&&F(v=>v+1)},[]),I=p.useCallback(u=>{d(u.target.value)},[d]),T=p.useCallback(()=>{d(""),f(!1)},[d,f]);return g?t.jsxs("div",{ref:S,children:[t.jsx(a.Searchbar,{name:"searchbar",onClear:T,value:e,size:"S",onChange:I,clearLabel:"Clearing the search",placeholder:b(l("pages.main.search.placeholder","Type to start searching...")),onKeyDown:$,children:"Search for navigation items"}),t.jsx(a.Typography,{variant:"pi",fontColor:"neutral150",style:{margin:"3px 0 0",display:"inline-block"},children:b(l("pages.main.search.subLabel","press ENTER to highlight next item"))})]}):t.jsx(a.IconButton,{children:t.jsx(O.Search,{}),onClick:()=>f(!g)})},ka=new W.QueryClient,za=()=>{const{formatMessage:e}=H.useIntl(),n=He(),[i,s]=p.useState(),[d,r]=p.useState(),[h,x]=p.useState(),[F,g]=p.useState(!1),[f,S]=p.useState(!1),[b,$]=p.useState(),I=p.useMemo(()=>({access:Ae.access||Ae.update,update:Ae.update}),[]),{isLoading:T,allowedActions:{canUpdate:u,canAccess:v}}=P.useRBAC(I),A=Xe(),V=ke(),le=vt(),M=Tt([A,{isPending:T}]),J=wn(),[{value:ne,index:be},je]=p.useState({value:"",index:0}),ce=j.isEmpty(ne),te=(ne||"").toLowerCase(),Z=(N,Q,se)=>{const m=N.reduce((L,K)=>{const q=K.items?.length?Z(K.items??[],Q):[];return Q(K)?[K,...q,...L]:[...q,...L]},[]);if(se!==void 0){const L=se%m.length;return m.map((K,q)=>L===q?{...K,isSearchActive:!0}:K)}return m},ie=ce?[]:Z(d?.items.map(N=>({...N}))??[],N=>(N?.title||"").toLowerCase().includes(te),te?be:void 0),ue=p.useCallback((N,Q={})=>{x(Q),g(N)},[g]),Ie=p.useCallback((N,Q,se=!0,m="",L=!0,K="0",q=0)=>{u&&(N.preventDefault(),N.stopPropagation(),ue(!0,{viewParentId:Q,isMenuAllowedLevel:se,levelPath:m,parentAttachedToMenu:L,structureId:K,viewId:void 0,order:q+1}))},[ue,u]),Ce=p.useMemo(()=>(n.data?[n.data.defaultLocale,...n.data.restLocale]:[]).filter(N=>N!==b),[n.data,b]),oe=In(),ve=jn(),{i18nCopyItemsModal:Se,i18nCopySourceLocale:pe,setI18nCopyModalOpened:Te,setI18nCopySourceLocale:Fe}=Fn(p.useCallback(N=>{const Q=A.data?.find(({locale:se,documentId:m})=>se===N&&m===d?.documentId);Q&&Q.documentId&&d?.documentId&&J.mutate({source:Q.locale,target:d.locale,documentId:Q.documentId},{onSuccess(se){J.reset(),r({...se.data,items:se.data.items.map(Ze)}),oe(),ve()}})},[d])),ae=p.useCallback(()=>{pe&&Te(!0)},[Te,pe]),ye=Ct(()=>{s({documentId:d?.documentId,id:d?.id}),r(void 0)}),y=()=>{d&&ye.mutate(d)},z=N=>{N.preventDefault(),N.stopPropagation(),N.target.tagName!=="HTML"&&ue(!1)},w=({item:N,newOrder:Q})=>{_({...N,order:Q})},R=N=>{_(Ne({...N,removed:!0},!0))},k=N=>{_(Ne({...N,removed:!1},!0))},D=N=>{_(Ne({...N,collapsed:!N.collapsed,updated:!0,isSearchActive:!1},!0))},X=({item:N,levelPath:Q="",parentAttachedToMenu:se=!0})=>{ue(!0,{...N,levelPath:Q,parentAttachedToMenu:se})},_=N=>{if(d&&V.data){const Q=Ee(N,d?.items??[],V.data);r({...d,items:Q}),S(!0),g(!1)}},E=ce?d?.items??[]:ie,me=p.useCallback(()=>{d&&r({...d,items:d.items.map(N=>Re(N,!1))})},[r,d,Re]),re=p.useCallback(()=>{d&&r({...d,items:d.items.map(N=>Re(N,!0))})},[r,d,Re]),ge=[{onClick:me,type:"submit",variant:"tertiary",tradId:"header.action.expandAll",margin:"8px"},{onClick:re,type:"submit",variant:"tertiary",tradId:"header.action.collapseAll",margin:"8px"}];return u&&ge.push({onClick:Ie,type:"submit",variant:"primary",tradId:"header.action.newItem",startIcon:t.jsx(O.Plus,{}),margin:"8px"}),p.useEffect(()=>{if(!d&&A.data?.[0]){let N;i?.documentId&&(N=A.data.find(Q=>Q.documentId===i.documentId&&Q.id===i.id)),s(void 0),r(N||j.first(A.data))}},[A.data]),p.useEffect(()=>{!b&&n.data?.defaultLocale&&$(n.data?.defaultLocale)},[A.data]),p.useEffect(()=>{if(d&&b!==d.locale){s(void 0);const N=A.data?.find(Q=>Q.documentId===d.documentId&&Q.locale===b);N&&N.documentId===d.documentId&&N.locale!==d.locale&&r(N)}},[d,b,A.data]),p.useEffect(()=>{!b&&n.data?.defaultLocale&&$(n.data.defaultLocale)},[A.data]),!A.data||!n.data||M?t.jsx(P.Page.Loading,{}):t.jsxs(P.Layouts.Root,{children:[t.jsx(P.Page.Title,{children:e(l("header.title","UI Navigation"))}),t.jsxs(P.Page.Main,{children:[t.jsx(Jn,{availableNavigations:A.data,activeNavigation:d,handleCachePurge:()=>le.mutate(void 0),handleChangeSelection:r,handleLocalizationSelection:$,handleSave:y,locale:n.data,structureHasChanged:f,permissions:{canUpdate:u},currentLocale:b}),t.jsxs(P.Layouts.Content,{children:[t.jsx(Yn,{startActions:t.jsx(Pa,{value:ne,setValue:je}),endActions:ge.map(({tradId:N,margin:Q,...se},m)=>t.jsx(a.Box,{marginLeft:Q,children:t.jsxs(a.Button,{...se,children:[" ",e(l(N))," "]})},m))}),d?.items.length?t.jsx(Ft,{items:E,onItemLevelAdd:Ie,onItemRemove:R,onItemEdit:X,onItemRestore:k,onItemReOrder:w,onItemToggleCollapse:D,displayFlat:!ce,isParentAttachedToMenu:!0,permissions:{canUpdate:u,canAccess:v},structurePrefix:"",locale:b??""}):t.jsxs(a.Flex,{direction:"column",minHeight:"400px",justifyContent:"center",children:[t.jsx(a.Box,{padding:4,children:t.jsx(a.Typography,{variant:"beta",textColor:"neutral600",children:e(l("empty.description"))})}),u&&t.jsx(a.Button,{variant:"secondary",startIcon:t.jsx(O.ListPlus,{}),label:e(l("empty.cta")),onClick:Ie,children:e(l("empty.cta"))}),u&&Ce.length?t.jsxs(a.Flex,{direction:"column",justifyContent:"center",children:[t.jsx(a.Box,{paddingTop:3,paddingBottom:3,children:t.jsx(a.Typography,{variant:"beta",textColor:"neutral600",children:e(l("view.i18n.fill.cta.header"))})}),t.jsxs(a.Flex,{direction:"row",justifyContent:"center",alignItems:"center",children:[t.jsx(a.Box,{paddingLeft:1,paddingRight:1,children:t.jsx(a.SingleSelect,{onChange:Fe,value:pe,size:"S",children:Ce.map(N=>t.jsx(a.SingleSelectOption,{value:N,children:e(l("view.i18n.fill.option"),{locale:N})},N))})}),t.jsx(a.Box,{paddingLeft:1,paddingRight:1,children:t.jsx(a.Button,{variant:"tertiary",onClick:ae,disabled:!pe,size:"S",children:e(l("view.i18n.fill.cta.button"))})})]})]}):null]}),F&&b&&d&&t.jsx($a,{availableLocale:Ce,currentItem:h,onSubmit:_,onClose:z,locale:b,permissions:{canUpdate:u},isOpen:F,isLoading:T,currentNavigation:d}),u&&Se]})]})]})};function Ma(){const e=G.usePluginTheme();return t.jsx(W.QueryClientProvider,{client:ka,children:t.jsx(a.DesignSystemProvider,{theme:e,children:t.jsx(za,{})})})}const Ba=()=>t.jsx(_e.DndProvider,{backend:Rt.HTML5Backend,children:t.jsxs(De.Routes,{children:[t.jsx(De.Route,{path:"/",index:!0,Component:Ma}),t.jsx(De.Route,{path:"/*",Component:P.Page.Error})]})}),Da=we.default(a.Alert)`
154
+ `,Ft=({isParentAttachedToMenu:e=!1,items:n,level:i=0,levelPath:s="",onItemEdit:d,onItemLevelAdd:r,onItemRemove:h,onItemRestore:x,onItemReOrder:F,onItemToggleCollapse:g,displayFlat:f,permissions:S,structurePrefix:b,viewParentId:$,locale:I})=>t.jsx(ha,{"data-level":i,children:n?.map((T,u)=>t.jsx(ga,{item:T,isLast:u===n.length-1,level:i,levelPath:s,isParentAttachedToMenu:e,onItemRestore:x,onItemLevelAdd:r,onItemRemove:h,onItemEdit:d,onItemReOrder:F,onItemToggleCollapse:g,displayChildren:f,permissions:S,structureId:b?`${b}.${u}`:u.toString(),viewParentId:$,locale:I},`list-item-${T.viewId||u}`))}),fa="",ya={type:"media",multiple:!1,required:!1,allowedTypes:["images"],pluginOptions:{i18n:{localized:!1}}},xa=({name:e,field:n,isLoading:i,onChange:s,onChangeEnhancer:d,value:r,disabled:h})=>{const{toggleNotification:x}=P.useNotification(),{formatMessage:F}=H.useIntl(),f=P.useStrapiApp("AdditionalFieldInput",b=>b.fields).media,S=p.useMemo(()=>({id:n.name,name:e||n.name,disabled:i||h}),[n,i]);switch(p.useEffect(()=>{if(n.type==="media"){const b=j.isNull(r)?void 0:r;d(S.name,b,s)}},[r]),n.type){case"boolean":return t.jsx(a.Toggle,{...S,checked:!!r,onChange:b=>d(b,!r,s),onLabel:"true",offLabel:"false",type:"checkbox"});case"string":return t.jsx(a.TextInput,{...S,onChange:(b,$)=>d(b,$,s),value:r||fa});case"select":return n.multi?t.jsx(a.MultiSelect,{...S,onChange:b=>d(S.name,b,s),value:j.isNil(r)?n.multi?[]:null:r,multi:n.multi,withTags:n.multi,children:n.options.map((b,$)=>t.jsx(a.MultiSelectOption,{value:b,children:b},`${n.name}-option-${$}`))}):t.jsx(a.SingleSelect,{...S,onChange:b=>d(S.name,b,s),value:j.isNil(r)?n.multi?[]:null:r,multi:n.multi,withTags:n.multi,children:n.options.map((b,$)=>t.jsx(a.SingleSelectOption,{value:b,children:b},`${n.name}-option-${$}`))});case"media":return t.jsx(f,{...S,...ya,value:r});default:throw x({type:"warning",message:F(l("notification.error.customField.type"))}),new Error("Type of custom field is unsupported")}},ba=({handleCancel:e,handleSubmit:n,submitDisabled:i,canUpdate:s})=>{const{formatMessage:d}=H.useIntl();return s?t.jsxs(a.Modal.Footer,{children:[t.jsx(a.Modal.Close,{children:t.jsx(a.Button,{onClick:e,variant:"tertiary",children:d(l("popup.item.form.button.cancel"))})}),t.jsx(a.Button,{onClick:n,disabled:i,children:d(l("popup.item.form.button.save"))})]}):null},ja=[/^mailto:[\w-\.]+@([\w-]+\.)+[\w-]{2,}$/,/^tel:(\+\d{1,3})?[\s]?(\(?\d{2,3}\)?)?[\s.-]?(\d{3})?[\s.-]?\d{3,4}$/,/^#.*/,/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/,/(\/[a-z0-9\-._~%!$&'()*+,;=:@]+)+\/?/],Ye=({additionalFields:e})=>c.z.object({title:c.z.string(),autoSync:c.z.boolean().optional(),removed:c.z.boolean().optional(),updated:c.z.boolean().optional(),uiRouterKey:c.z.string(),levelPath:c.z.string().optional(),isMenuAllowedLevel:c.z.boolean().optional(),parentAttachedToMenu:c.z.boolean().optional(),viewId:c.z.number().optional(),structureId:c.z.string().optional(),menuAttached:c.z.boolean().optional(),collapsed:c.z.boolean().optional(),isSearchActive:c.z.boolean().optional(),viewParentId:c.z.number().optional(),id:c.z.number().optional(),documentId:c.z.string().optional(),audience:c.z.string().array().optional(),order:c.z.number().optional(),items:c.z.any().array().optional(),additionalFields:c.z.object(e.reduce((n,i)=>{if(typeof i=="string")return n;switch(i.type){case"string":n[i.name]=i.required?c.z.string():c.z.string().optional();break;case"boolean":n[i.name]=i.required?c.z.boolean():c.z.boolean().optional();case"media":n[i.name]=i.required?c.z.any():c.z.any().optional();case"select":{i.multi?n[i.name]=i.required?c.z.string().array():c.z.string().array().optional():n[i.name]=i.required?c.z.string():c.z.string().optional();break}}return n},{}))}),Ia=({additionalFields:e,isSingleSelected:n})=>Ye({additionalFields:e}).extend({type:c.z.literal("INTERNAL"),path:c.z.string(),externalPath:c.z.string().optional(),relatedType:c.z.string(),related:n?c.z.string().optional():c.z.string()}),Ca=({isSingleSelected:e,additionalFields:n})=>Ye({additionalFields:n}).extend({type:c.z.literal("EXTERNAL"),path:c.z.string().or(c.z.null()).optional(),externalPath:c.z.string().min(1).refine(i=>ja.some(s=>s.test(i))),relatedType:c.z.string().optional(),related:c.z.string().optional()}),va=({isSingleSelected:e,additionalFields:n})=>Ye({additionalFields:n}).extend({type:c.z.literal("WRAPPER"),path:c.z.string().or(c.z.null()).optional()}),Ta=e=>c.z.discriminatedUnion("type",[Ca(e),Ia(e),va(e)]),lt={autoSync:!0,type:"INTERNAL",relatedType:"",menuAttached:!1,title:"",externalPath:"",path:"",additionalFields:{},audience:[],updated:!1,uiRouterKey:""},wa=()=>{const e=P.getFetchClient(),n=ee(e);return W.useMutation({mutationFn(i){return n.slugify(i)}})},Sa=async({slugify:e,title:n,config:i,related:s,relatedType:d,contentTypeItems:r})=>{if(n)return n?await e(n):void 0;if(s){const h=Be({...r?.find(x=>x.documentId===s.toString())??{documentId:"",id:0},__collectionUid:d},i);return h?await e(h):void 0}},Fa=({currentType:e,config:n,contentTypeItems:i,currentRelated:s,currentRelatedType:d,isSingleSelected:r})=>{if(e!=="INTERNAL"||!d)return"";const h=n?.pathDefaultFields[d]??[];if(j.isEmpty(e)&&!j.isEmpty(h)){const x=r?j.first(i??[]):i?.find(({id:g})=>g===s);return h.map(g=>x?.[g]??"").filter(g=>!!g.toString().trim())[0]??""}return""},Na=({currentPath:e,isExternal:n,current:i,currentType:s="INTERNAL",config:d,contentTypeItems:r,currentRelated:h,currentRelatedType:x,isSingleSelected:F})=>{if(!n){const g=j.isEmpty(e)||e==="/"?Fa({currentType:s,config:d,contentTypeItems:r,currentRelated:h,currentRelatedType:x,isSingleSelected:F}):e||"";return`${i.levelPath!=="/"?`${i.levelPath}`:""}/${g}`.replace("//","/")}},dt=(e,n)=>n?e.find(i=>i.value===n)?.label??"":"",ct=({name:e,onClear:n,onChange:i,options:s,value:d,disabled:r})=>{const[h,x]=p.useState(dt(s,d));return p.useEffect(()=>{x(dt(s,d))},[d,s]),t.jsx(a.Combobox,{name:e,autocomplete:"list",onClear:n,onChange:i,onTextValueChange:x,value:d,textValue:h,options:s,disabled:r,width:"100%",children:s.map(({key:F,label:g,value:f})=>t.jsx(a.ComboboxOption,{value:f,children:g},F))})},Aa=[],Ra=({availableLocale:e,isLoading:n,current:i=lt,onSubmit:s,onCancel:d,appendLabelPublicationStatus:r=Ea,locale:h,permissions:x={},currentNavigation:F})=>{const{formatMessage:g}=H.useIntl(),[f,S]=p.useState(n),{canUpdate:b}=x,[$,I]=p.useState(!1),[T,u]=p.useState(),[v,A]=p.useState({}),[V,le]=p.useState(),M=ke(),J=M.data?.availableAudience??[],ne=M.data?.contentTypes??[],{toggleNotification:be}=P.useNotification(),je=Tn(),ce=Xe(),te=(m,L,K)=>{if(K){let q=m,C=L;if(j.isObject(m)){const{name:B,value:U}=m.target;q=B,C=j.isNil(C)?U:C}return j.isString(q)&&Z(q,C),K(m,C)}},Z=(m,L)=>{A(j.set({...v,additionalFields:{...v.additionalFields},updated:!0},m,L))},ie=m=>A({...v,additionalFields:{...v.additionalFields},updated:!0,...m}),ue=m=>({...m,additionalFields:M.data?.additionalFields.reduce((L,K)=>{const{name:q,type:C}=K;if(q in(m.additionalFields??{})){let B=m.additionalFields[q];switch(C){case"boolean":B=j.isBoolean(B)?`${B}`:B;break;case"media":B=B&&JSON.stringify(B);break}return{...L,[q]:B}}return L},{})||{}}),Ie=m=>({...m,additionalFields:M.data?.additionalFields.reduce((L,K)=>{const{name:q,type:C}=K;if(q in(m.additionalFields??{})){let B=m.additionalFields[q];switch(C){case"boolean":B=B==="true";break;case"media":B=B&&JSON.parse(B);break}return{...L,[q]:B}}return L},{})||{}}),Ce=async(m,L)=>{m.preventDefault();const K=ue(L),{success:q,data:C,error:B}=Ta({isSingleSelected:$,additionalFields:M.data?.additionalFields??Aa}).safeParse(K);if(q){const U=C.title.trim()?C.title.trim():C.type==="INTERNAL"?E(C?.related?.toString(),C.relatedType,$):"";S(!0);const he=await Sa(C.type==="INTERNAL"?{slugify:D.mutateAsync,title:U,related:C.related,relatedType:C.relatedType}:{slugify:D.mutateAsync,title:U});if(D.reset(),S(!1),!he){be({type:"warning",message:g(l("popup.item.form.uiRouter.unableToRender"))});return}s(C.type==="INTERNAL"?{...C,title:U,uiRouterKey:he}:{...C,title:U,uiRouterKey:he})}else B&&le(B.issues.reduce((U,he)=>({...U,[he.path.join(".")]:he.message}),{}))},oe=(m,L)=>j.get(V,m)?g(l(L??m)):void 0,ve=i.type==="INTERNAL"?i.relatedType:void 0,{path:Se,type:pe,title:Te,autoSync:Fe}=v,{relatedType:ae,related:ye}=v.type==="INTERNAL"?v:{related:void 0,relatedType:void 0},y=pe==="EXTERNAL",z=pe==="INTERNAL",w=y?"externalPath":"path",R=z&&!$&&j.isNil(ye)||f,k=It({uid:ae??"",locale:h}),D=wa(),X=p.useMemo(()=>e.map((m,L)=>({key:`${m}-${L}`,value:m,label:m})),[e]),_=p.useMemo(()=>J.map(m=>({value:m.documentId??0,label:m.name??" "})),[J]),E=p.useCallback((m,L,K)=>{let q;if(K){if(q=k.data?.find(C=>C.uid===L||C.__collectionUid===L),!q)return ne.find(C=>C.uid===L)?.contentTypeName}else q={...k.data?.find(({documentId:B})=>B===m)||{documentId:null},__collectionUid:L};return Be(q,M.data)},[k.data,M.data,ne]),re=(M.data?.contentTypes.length?["INTERNAL","EXTERNAL","WRAPPER"]:["EXTERNAL","WRAPPER"]).map(m=>({key:m,value:m,label:g(l(`popup.item.form.type.${m.toLowerCase()}.label`))})),ge=j.sortBy(k.data?.map(m=>{const L=r(Be({...m,__collectionUid:ae},M.data),m,!1);return{key:m?.documentId?.toString(),value:m?.documentId?.toString(),label:L}})??[],m=>m.label),N=p.useMemo(()=>j.sortBy(M.data?.contentTypes?.filter(m=>m.isSingle?!!(ae&&[ae,ve].includes(m.uid)):!0).map(m=>({key:m.uid,value:m.uid,label:m.contentTypeName})),m=>m.label),[M.data,ae]),Q=j.isEmpty(ge),se=p.useCallback(async m=>{m.preventDefault(),m.stopPropagation();const L=ce.data?.find(({locale:K})=>K===T);L&&(S(!0),je.mutate({target:F.documentId,structureId:i.structureId,source:L.documentId},{onSuccess(K){je.reset();const{type:q,externalPath:C,path:B,related:U,title:he,uiRouterKey:At}=K,{__type:et,documentId:tt}=U??{};Z("type",q),Z("externalPath",C??void 0),Z("path",B??void 0),Z("title",he),Z("uiRouterKey",At),et&&tt&&(Z("related",tt),Z("relatedType",et))},onSettled(){S(!1)}}))},[S,je,ce]);return p.useEffect(()=>{A(Ie({...lt,...i}))},[i]),p.useEffect(()=>{if(ae){const m=M.data?.contentTypes.find(L=>L.uid===ae);if(m&&(I(m.isSingle),m.isSingle&&k.data?.length)){const L=k.data[0];L&&Z("related",L.documentId)}}},[ae,M.data,k.data]),p.useEffect(()=>{if(Fe&&pe==="INTERNAL"&&ye&&ae&&M.data){const m=k.data?.find(L=>L.documentId===ye);if(m){const{contentTypesNameFields:L,pathDefaultFields:K}=M.data,q=K[ae]?.reduce((U,he)=>U||m?.[he],void 0),C=(L[ae]??[]).concat(L.default??[]).reduce((U,he)=>U||m?.[he],void 0),B=[];q&&q!==Se&&B.push({name:"path",value:q}),C&&C!==Te&&B.push({name:"title",value:C}),setTimeout(()=>{B.forEach(U=>{Z(U.name,U.value)})},100)}}},[Te,Se,Fe,pe,ye,ae,M.data,k.data]),t.jsxs(t.Fragment,{children:[t.jsx(a.Modal.Body,{children:t.jsx(P.Form,{width:"auto",height:"auto",method:"POST",initialValues:v,children:({values:m,onChange:L})=>{const K=m.type==="INTERNAL"?m:{related:void 0,relatedType:void 0},q=Na({currentPath:m.path,isExternal:m.type==="EXTERNAL",current:i,currentType:m.type,config:M.data,contentTypeItems:k.data,currentRelated:K.related,currentRelatedType:K.relatedType,isSingleSelected:$});return t.jsxs(t.Fragment,{children:[t.jsxs(a.Grid.Root,{gap:5,paddingBottom:1,children:[t.jsx(a.Grid.Item,{alignItems:"flex-start",col:8,children:t.jsx(G.Field,{name:"type",label:g(l("popup.item.form.type.label","Internal link")),error:oe("type"),hint:g(l("popup.item.form.title.placeholder","e.g. Blog")),children:t.jsx(a.SingleSelect,{onChange:C=>te("type",C,L),value:m.type,name:"type",disabled:!b,width:"100%",children:re.map(({key:C,label:B,value:U})=>t.jsx(a.SingleSelectOption,{value:U,children:B},C))})})},"title"),t.jsx(a.Grid.Item,{alignItems:"flex-start",col:4,children:t.jsx(G.Field,{name:"menuAttached",label:g(l("popup.item.form.menuAttached.label","MenuAttached")),error:oe("menuAttached"),hint:g(l("popup.item.form.menuAttached.placeholder","is menu item attached to menu")),children:t.jsx(a.Toggle,{name:"menuAttached",checked:m.menuAttached,onChange:C=>te(C,!m.menuAttached,L),value:m.menuAttached,onLabel:g(l("popup.item.form.menuAttached.value.yes","yes")),offLabel:g(l("popup.item.form.menuAttached.value.no","no")),disabled:!b||(M.data?.cascadeMenuAttached?!(i.isMenuAllowedLevel&&i.parentAttachedToMenu):!1),width:"100%"})})},"menuAttached")]}),t.jsxs(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:[t.jsx(a.Grid.Item,{alignItems:"flex-start",col:m.type==="INTERNAL"?8:12,children:t.jsx(G.Field,{name:"title",label:g(l("popup.item.form.title.label","Title")),error:oe("title"),hint:g(l("popup.item.form.title.placeholder","e.g. Blog")),children:t.jsx(a.TextInput,{type:"string",disabled:!b||m.autoSync&&m.type==="INTERNAL",name:"title",onChange:(C,B)=>te(C,B,L),value:m.title})})},"title"),m.type==="INTERNAL"&&t.jsx(a.Grid.Item,{alignItems:"flex-start",col:4,children:t.jsx(G.Field,{name:"autoSync",label:g(l("popup.item.form.autoSync.label","Read fields from related")),error:oe("autoSync"),children:t.jsx(a.Toggle,{name:"autoSync",checked:m.autoSync,onChange:C=>te(C,!m.autoSync,L),onLabel:"Enabled",offLabel:"Disabled"})})},"autoSync")]}),t.jsx(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:t.jsx(a.Grid.Item,{alignItems:"flex-start",col:12,children:t.jsx(G.Field,{name:w,label:g(l(`popup.item.form.${w}.label`,"Path")),error:oe(w,`popup.item.form.${w}.validation.type`),hint:[g(l(`popup.item.form.${w}.placeholder`,"e.g. Blog")),q?g(l("popup.item.form.type.external.description"),{value:q}):""].join(" "),children:t.jsx(a.TextInput,{disabled:!b,name:w,onChange:(C,B)=>te(C,B,L),value:m[w],width:"100%"})})},"title")}),m.type==="INTERNAL"&&t.jsxs(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:[t.jsx(a.Grid.Item,{alignItems:"flex-start",col:m.relatedType&&!$?6:12,children:t.jsx(G.Field,{name:"relatedType",label:g(l("popup.item.form.relatedType.label","Related Type")),error:oe("relatedType"),hint:!f&&j.isEmpty(N)?g(l("popup.item.form.relatedType.empty","There are no more content types")):void 0,children:t.jsx(ct,{name:"relatedType",onClear:()=>ie({related:void 0,title:void 0,relatedType:void 0}),onChange:C=>ie({related:void 0,title:m.autoSync?"":m.title,relatedType:C}),value:m.relatedType,options:M.data?.contentTypes.map(C=>({key:C.uid,value:C.uid,label:C.contentTypeName}))??[],disabled:!M.data?.contentTypes.length||!b})})}),m.relatedType&&!$&&t.jsx(a.Grid.Item,{alignItems:"flex-start",col:6,children:t.jsx(G.Field,{name:"related",label:g(l("popup.item.form.related.label","Related")),error:oe("related"),hint:!f&&Q?g(l("popup.item.form.related.empty","There are no more entities"),{contentTypeName:m.relatedType}):void 0,children:t.jsx(ct,{name:"related",onClear:()=>te("related",void 0,L),onChange:C=>te("related",C,L),value:m.related,options:ge,disabled:f||Q||!b})})})]}),!j.isEmpty(M.data?.additionalFields)&&t.jsxs(t.Fragment,{children:[t.jsx(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:t.jsx(a.Grid.Item,{col:12,lg:12,children:t.jsx(a.Divider,{width:"100%"})})}),t.jsxs(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:[M.data?.additionalFields.map((C,B)=>{if(C!=="audience")return t.jsx(a.Grid.Item,{alignItems:"flex-start",col:6,children:t.jsx(G.Field,{name:`additionalFields.${C.name}`,label:C.label,error:oe(`additionalFields.${C.name}`),children:t.jsx(xa,{name:`additionalFields.${C.name}`,field:C,isLoading:f,onChange:L,onChangeEnhancer:te,value:j.get(m?.additionalFields,C.name),disabled:!b})})},C.name)}),M.data?.additionalFields.map((C,B)=>{if(C==="audience")return t.jsx(a.Grid.Item,{alignItems:"flex-start",col:12,children:t.jsx(G.Field,{name:"audience",label:g(l("popup.item.form.audience.label")),error:oe("audience"),hint:!f&&j.isEmpty(_)?g(l("popup.item.form.title.placeholder","e.g. Blog")):void 0,children:t.jsx(a.MultiSelect,{name:"audience",value:m.audience,onChange:U=>te("audience",U,L),width:"100%",children:_.map(({value:U,label:he})=>t.jsx(a.MultiSelectOption,{value:U,children:he},U))})})},"audience")})]}),t.jsx(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:t.jsx(a.Grid.Item,{col:12,lg:12,children:t.jsx(a.Divider,{width:"100%"})})})]}),X&&X.length>1&&t.jsx(a.Grid.Root,{gap:5,paddingTop:1,paddingBottom:1,children:t.jsxs(a.Grid.Item,{alignItems:"flex-start",col:12,children:[t.jsx(a.Divider,{marginTop:5,marginBottom:5}),t.jsxs(a.Grid.Root,{gap:5,children:[t.jsx(a.Grid.Item,{alignItems:"flex-start",col:6,lg:12,children:t.jsx(G.Field,{name:"i18n.locale",label:g(l("popup.item.form.i18n.locale.label","Copy details from")),children:t.jsx(a.SingleSelect,{name:"i18n.locale",onChange:u,value:T,disabled:f||!b,placeholder:g(l("popup.item.form.i18n.locale.placeholder","locale")),children:X.map(({key:C,label:B,value:U})=>t.jsx(a.SingleSelectOption,{value:U,children:B},C))})})}),b&&t.jsx(a.Grid.Item,{alignItems:"flex-start",col:6,lg:12,paddingTop:6,children:t.jsx(a.Box,{children:t.jsx(a.Button,{variant:"tertiary",onClick:se,disabled:f||!T,children:g(l("popup.item.form.i18n.locale.button"))})})})]})]},"title")}),t.jsx(a.Grid.Root,{gap:5,children:t.jsx(a.Grid.Item,{alignItems:"flex-start",col:12},"title")})]})}})}),t.jsx(ba,{handleSubmit:m=>Ce(m,v),handleCancel:d,submitDisabled:R,canUpdate:b})]})},Ea=()=>"",La=({isNewItem:e,canUpdate:n})=>{const{formatMessage:i}=H.useIntl();let s="view";return n&&(s=e?"new":"edit"),t.jsx(a.Modal.Header,{children:t.jsx(a.Typography,{variant:"omega",fontWeight:"bold",textColor:"neutral800",as:"h2",id:"asset-dialog-title",children:i(l(`popup.item.header.${s}`))})})},$a=({availableLocale:e,isOpen:n,isLoading:i,currentItem:s={},onSubmit:d,onClose:r,locale:h,permissions:x,currentNavigation:F})=>{const{formatMessage:g}=H.useIntl(),f=$=>{d($)},S=($,I,T)=>`${Nn({relatedRef:I,type:I.isSingle?"INTERNAL":I.type,isCollection:T})?"":`[${g(l("notification.navigation.item.relation.status.draft"))}] `.toUpperCase()}${$}`,b=!!s.viewId;return t.jsx(a.Modal.Root,{labelledBy:"condition-modal-breadcrumbs",onOpenChange:$=>{$||r({preventDefault(){},stopPropagation(){},target:{}})},open:n,children:t.jsxs(a.Modal.Content,{children:[t.jsx(La,{isNewItem:!b,canUpdate:x?.canUpdate}),t.jsx(Ra,{availableLocale:e,current:s,isLoading:i,onSubmit:f,onCancel:r,appendLabelPublicationStatus:S,locale:h,permissions:x,currentNavigation:F})]})})},Ve=0,Pa=({value:e,setValue:n,initialIndex:i=Ve})=>{const[s,d]=p.useState(e),[r,h]=p.useState(e),[x,F]=p.useState(i),[g,f]=p.useState(!!e),S=p.useRef(null),{formatMessage:b}=H.useIntl();p.useEffect(()=>{g&&setTimeout(()=>{S.current?.querySelector("input")?.focus()},0)},[g]),p.useEffect(()=>{x&&s===r&&n({value:s,index:x})},[x,s,r]),p.useEffect(()=>{s!==r&&(h(s),F(Ve),n({value:s,index:Ve}))},[s,r]);const $=p.useCallback(u=>{u.code.toLowerCase()==="enter"&&F(v=>v+1)},[]),I=p.useCallback(u=>{d(u.target.value)},[d]),T=p.useCallback(()=>{d(""),f(!1)},[d,f]);return g?t.jsxs("div",{ref:S,children:[t.jsx(a.Searchbar,{name:"searchbar",onClear:T,value:e,size:"S",onChange:I,clearLabel:"Clearing the search",placeholder:b(l("pages.main.search.placeholder","Type to start searching...")),onKeyDown:$,children:"Search for navigation items"}),t.jsx(a.Typography,{variant:"pi",fontColor:"neutral150",style:{margin:"3px 0 0",display:"inline-block"},children:b(l("pages.main.search.subLabel","press ENTER to highlight next item"))})]}):t.jsx(a.IconButton,{children:t.jsx(O.Search,{}),onClick:()=>f(!g)})},ka=new W.QueryClient,za=()=>{const{formatMessage:e}=H.useIntl(),n=He(),[i,s]=p.useState(),[d,r]=p.useState(),[h,x]=p.useState(),[F,g]=p.useState(!1),[f,S]=p.useState(!1),[b,$]=p.useState(),I=p.useMemo(()=>({access:Ae.access||Ae.update,update:Ae.update}),[]),{isLoading:T,allowedActions:{canUpdate:u,canAccess:v}}=P.useRBAC(I),A=Xe(),V=ke(),le=vt(),M=Tt([A,{isPending:T}]),J=wn(),[{value:ne,index:be},je]=p.useState({value:"",index:0}),ce=j.isEmpty(ne),te=(ne||"").toLowerCase(),Z=(N,Q,se)=>{const m=N.reduce((L,K)=>{const q=K.items?.length?Z(K.items??[],Q):[];return Q(K)?[K,...q,...L]:[...q,...L]},[]);if(se!==void 0){const L=se%m.length;return m.map((K,q)=>L===q?{...K,isSearchActive:!0}:K)}return m},ie=ce?[]:Z(d?.items.map(N=>({...N}))??[],N=>(N?.title||"").toLowerCase().includes(te),te?be:void 0),ue=p.useCallback((N,Q={})=>{x(Q),g(N)},[g]),Ie=p.useCallback((N,Q,se=!0,m="",L=!0,K="0",q=0)=>{u&&(N.preventDefault(),N.stopPropagation(),ue(!0,{viewParentId:Q,isMenuAllowedLevel:se,levelPath:m,parentAttachedToMenu:L,structureId:K,viewId:void 0,order:q+1}))},[ue,u]),Ce=p.useMemo(()=>(n.data?[n.data.defaultLocale,...n.data.restLocale]:[]).filter(N=>N!==b),[n.data,b]),oe=In(),ve=jn(),{i18nCopyItemsModal:Se,i18nCopySourceLocale:pe,setI18nCopyModalOpened:Te,setI18nCopySourceLocale:Fe}=Fn(p.useCallback(N=>{const Q=A.data?.find(({locale:se,documentId:m})=>se===N&&m===d?.documentId);Q&&Q.documentId&&d?.documentId&&J.mutate({source:Q.locale,target:d.locale,documentId:Q.documentId},{onSuccess(se){J.reset(),r({...se.data,items:se.data.items.map(Ze)}),oe(),ve()}})},[d])),ae=p.useCallback(()=>{pe&&Te(!0)},[Te,pe]),ye=Ct(()=>{s({documentId:d?.documentId,id:d?.id}),r(void 0)}),y=()=>{d&&ye.mutate(d)},z=N=>{N.preventDefault(),N.stopPropagation(),N.target.tagName!=="HTML"&&ue(!1)},w=({item:N,newOrder:Q})=>{_({...N,order:Q})},R=N=>{_(Ne({...N,removed:!0},!0))},k=N=>{_(Ne({...N,removed:!1},!0))},D=N=>{_(Ne({...N,collapsed:!N.collapsed,updated:!0,isSearchActive:!1},!0))},X=({item:N,levelPath:Q="",parentAttachedToMenu:se=!0})=>{ue(!0,{...N,levelPath:Q,parentAttachedToMenu:se})},_=N=>{if(d&&V.data){const Q=Ee(N,d?.items??[],V.data);r({...d,items:Q}),S(!0),g(!1)}},E=ce?d?.items??[]:ie,me=p.useCallback(()=>{d&&r({...d,items:d.items.map(N=>Re(N,!1))})},[r,d,Re]),re=p.useCallback(()=>{d&&r({...d,items:d.items.map(N=>Re(N,!0))})},[r,d,Re]),ge=[{onClick:me,type:"submit",variant:"tertiary",tradId:"header.action.expandAll",margin:"8px"},{onClick:re,type:"submit",variant:"tertiary",tradId:"header.action.collapseAll",margin:"8px"}];return u&&ge.push({onClick:Ie,type:"submit",variant:"primary",tradId:"header.action.newItem",startIcon:t.jsx(O.Plus,{}),margin:"8px"}),p.useEffect(()=>{if(!d&&A.data?.[0]){let N;i?.documentId&&(N=A.data.find(Q=>Q.documentId===i.documentId&&Q.id===i.id)),s(void 0),r(N||j.first(A.data))}},[A.data]),p.useEffect(()=>{!b&&n.data?.defaultLocale&&$(n.data?.defaultLocale)},[A.data]),p.useEffect(()=>{if(d&&b!==d.locale){s(void 0);const N=A.data?.find(Q=>Q.documentId===d.documentId&&Q.locale===b);N&&N.documentId===d.documentId&&N.locale!==d.locale&&r(N)}},[d,b,A.data]),p.useEffect(()=>{!b&&n.data?.defaultLocale&&$(n.data.defaultLocale)},[A.data]),!A.data||!n.data||M?t.jsx(P.Page.Loading,{}):t.jsxs(P.Layouts.Root,{children:[t.jsx(P.Page.Title,{children:e(l("header.title","UI Navigation"))}),t.jsxs(P.Page.Main,{children:[t.jsx(Jn,{availableNavigations:A.data,activeNavigation:d,handleCachePurge:()=>le.mutate(void 0),handleChangeSelection:r,handleLocalizationSelection:$,handleSave:y,locale:n.data,structureHasChanged:f,permissions:{canUpdate:u},currentLocale:b}),t.jsxs(P.Layouts.Content,{children:[t.jsx(Yn,{startActions:t.jsx(Pa,{value:ne,setValue:je}),endActions:ge.map(({tradId:N,margin:Q,...se},m)=>t.jsx(a.Box,{marginLeft:Q,children:t.jsxs(a.Button,{...se,children:[" ",e(l(N))," "]})},m))}),d?.items.length?t.jsx(Ft,{items:E,onItemLevelAdd:Ie,onItemRemove:R,onItemEdit:X,onItemRestore:k,onItemReOrder:w,onItemToggleCollapse:D,displayFlat:!ce,isParentAttachedToMenu:!0,permissions:{canUpdate:u,canAccess:v},structurePrefix:"",locale:b??""}):t.jsxs(a.Flex,{direction:"column",minHeight:"400px",justifyContent:"center",children:[t.jsx(a.Box,{padding:4,children:t.jsx(a.Typography,{variant:"beta",textColor:"neutral600",children:e(l("empty.description"))})}),u&&t.jsx(a.Button,{variant:"secondary",startIcon:t.jsx(O.ListPlus,{}),label:e(l("empty.cta")),onClick:Ie,children:e(l("empty.cta"))}),u&&Ce.length?t.jsxs(a.Flex,{direction:"column",justifyContent:"center",children:[t.jsx(a.Box,{paddingTop:3,paddingBottom:3,children:t.jsx(a.Typography,{variant:"beta",textColor:"neutral600",children:e(l("view.i18n.fill.cta.header"))})}),t.jsxs(a.Flex,{direction:"row",justifyContent:"center",alignItems:"center",children:[t.jsx(a.Box,{paddingLeft:1,paddingRight:1,children:t.jsx(a.SingleSelect,{onChange:Fe,value:pe,size:"S",children:Ce.map(N=>t.jsx(a.SingleSelectOption,{value:N,children:e(l("view.i18n.fill.option"),{locale:N})},N))})}),t.jsx(a.Box,{paddingLeft:1,paddingRight:1,children:t.jsx(a.Button,{variant:"tertiary",onClick:ae,disabled:!pe,size:"S",children:e(l("view.i18n.fill.cta.button"))})})]})]}):null]}),F&&b&&d&&t.jsx($a,{availableLocale:Ce,currentItem:h,onSubmit:_,onClose:z,locale:b,permissions:{canUpdate:u},isOpen:F,isLoading:T,currentNavigation:d}),u&&Se]})]})]})};function Ma(){const e=G.usePluginTheme();return t.jsx(W.QueryClientProvider,{client:ka,children:t.jsx(a.DesignSystemProvider,{theme:e,children:t.jsx(za,{})})})}const Ba=()=>t.jsx(_e.DndProvider,{backend:Rt.HTML5Backend,children:t.jsxs(De.Routes,{children:[t.jsx(De.Route,{path:"/",index:!0,Component:Ma}),t.jsx(De.Route,{path:"/*",Component:P.Page.Error})]})}),Da=we.default(a.Alert)`
155
155
  [role='status'] {
156
156
  flex-direction: column;
157
157
  }