diff --git a/resources/dist/build/assets/alt-redirect-addon-De-18xa-.js b/resources/dist/build/assets/alt-redirect-addon-De-18xa-.js deleted file mode 100644 index 1c1b541..0000000 --- a/resources/dist/build/assets/alt-redirect-addon-De-18xa-.js +++ /dev/null @@ -1 +0,0 @@ -const $=window.Vue,{BaseTransition:de,BaseTransitionPropsValidators:ce,Comment:pe,DeprecationTypes:me,EffectScope:ge,ErrorCodes:fe,ErrorTypeStrings:Se,Fragment:M,KeepAlive:ve,ReactiveEffect:ye,Static:he,Suspense:Ce,Teleport:we,Text:be,TrackOpTypes:Te,Transition:xe,TransitionGroup:Pe,TriggerOpTypes:Re,VueElement:ke,__esModule:Ve,assertNumber:Ae,callWithAsyncErrorHandling:Ie,callWithErrorHandling:Me,camelize:Ee,capitalize:Le,cloneVNode:De,compatUtils:He,compile:Fe,computed:E,createApp:_e,createBlock:Be,createCommentVNode:G,createElementBlock:c,createElementVNode:e,createHydrationRenderer:ze,createPropsRestProxy:Ue,createRenderer:qe,createSSRApp:Oe,createSlots:$e,createStaticVNode:Ge,createTextVNode:S,createVNode:o,customRef:Ne,defineAsyncComponent:je,defineComponent:Ke,defineCustomElement:We,defineEmits:Qe,defineExpose:Ye,defineModel:Je,defineOptions:Xe,defineProps:Ze,defineSSRCustomElement:et,defineSlots:tt,devtools:rt,effect:ot,effectScope:lt,getCurrentInstance:nt,getCurrentScope:st,getCurrentWatcher:at,getTransitionRawChildren:it,guardReactiveProps:ut,h:dt,handleError:ct,hasInjectionContext:pt,hydrate:mt,hydrateOnIdle:gt,hydrateOnInteraction:ft,hydrateOnMediaQuery:St,hydrateOnVisible:vt,initCustomFormatter:yt,initDirectivesForSSR:ht,inject:Ct,isMemoSame:wt,isProxy:bt,isReactive:Tt,isReadonly:xt,isRef:Pt,isRuntimeOnly:Rt,isShallow:kt,isVNode:Vt,markRaw:At,mergeDefaults:It,mergeModels:Mt,mergeProps:Et,nextTick:Lt,nodeOps:Dt,normalizeClass:N,normalizeProps:Ht,normalizeStyle:Ft,onActivated:_t,onBeforeMount:Bt,onBeforeUnmount:zt,onBeforeUpdate:Ut,onDeactivated:qt,onErrorCaptured:Ot,onMounted:$t,onRenderTracked:Gt,onRenderTriggered:Nt,onScopeDispose:jt,onServerPrefetch:Kt,onUnmounted:Wt,onUpdated:Qt,onWatcherCleanup:Yt,openBlock:p,patchProp:Jt,popScopeId:Xt,provide:Zt,proxyRefs:er,pushScopeId:tr,queuePostFlushCb:rr,reactive:or,readonly:lr,ref:i,registerRuntimeCompiler:nr,render:sr,renderList:L,renderSlot:ar,resolveComponent:ir,resolveDirective:ur,resolveDynamicComponent:dr,resolveFilter:cr,resolveTransitionHooks:pr,setBlockTracking:mr,setDevtoolsHook:gr,setTransitionHooks:fr,shallowReactive:Sr,shallowReadonly:vr,shallowRef:yr,ssrContextKey:hr,ssrUtils:Cr,stop:wr,toDisplayString:u,toHandlerKey:br,toHandlers:Tr,toRaw:xr,toRef:Pr,toRefs:Rr,toValue:kr,transformVNodeArgs:Vr,triggerRef:Ar,unref:l,useAttrs:Ir,useCssModule:Mr,useCssVars:Er,useHost:Lr,useId:Dr,useModel:Hr,useSSRContext:Fr,useShadowRoot:_r,useSlots:Br,useTemplateRef:zr,useTransitionState:Ur,vModelCheckbox:qr,vModelDynamic:Or,vModelRadio:$r,vModelSelect:Gr,vModelText:Nr,vShow:jr,version:Kr,warn:Wr,watch:j,watchEffect:Qr,watchPostEffect:Yr,watchSyncEffect:Jr,withAsyncContext:Xr,withCtx:a,withDefaults:Zr,withDirectives:eo,withKeys:to,withMemo:ro,withModifiers:oo,withScopeId:lo}=$,{Alert:no,AuthCard:so,Avatar:ao,Badge:io,Button:v,ButtonGroup:uo,Calendar:co,Card:R,CardList:po,CardListItem:mo,CardPanel:go,CharacterCounter:fo,Checkbox:So,CheckboxGroup:vo,CodeEditor:yo,Combobox:ho,CommandPaletteItem:Co,ConfirmationModal:wo,Context:bo,ContextFooter:To,ContextHeader:xo,ContextItem:Po,ContextLabel:Ro,ContextMenu:ko,ContextSeparator:Vo,CreateForm:Ao,DatePicker:Io,DateRangePicker:Mo,Description:Eo,DocsCallout:Lo,DragHandle:Do,Dropdown:Ho,DropdownItem:Fo,DropdownLabel:_o,DropdownMenu:Bo,DropdownSeparator:zo,DropdownFooter:Uo,DropdownHeader:qo,Editable:Oo,ErrorMessage:$o,EmptyStateItem:Go,EmptyStateMenu:No,Field:jo,Header:K,Heading:D,HoverCard:Ko,Icon:Wo,Input:H,InputGroup:Qo,InputGroupAppend:Yo,InputGroupPrepend:Jo,Label:Xo,Listing:Zo,ListingCustomizeColumns:el,ListingFilters:tl,ListingHeaderCell:rl,ListingPagination:ol,ListingPresets:ll,ListingPresetTrigger:nl,ListingRowActions:sl,ListingSearch:al,ListingTable:il,ListingTableBody:ul,ListingTableHead:dl,ListingToggleAll:cl,LivePreview:pl,LivePreviewPopout:ml,Modal:gl,ModalClose:fl,ModalTitle:Sl,Pagination:W,Panel:vl,PanelFooter:yl,PanelHeader:hl,Popover:Cl,PublishComponents:wl,PublishContainer:Q,publishContextKey:bl,injectPublishContext:Tl,PublishField:xl,PublishFields:Pl,PublishFieldsProvider:Rl,PublishForm:kl,PublishLocalizations:Vl,PublishSections:Al,PublishTabs:Il,Radio:Ml,RadioGroup:El,Select:Ll,Separator:Dl,Slider:Hl,Skeleton:Fl,SplitterGroup:_l,SplitterPanel:Bl,SplitterResizeHandle:zl,StatusIndicator:Ul,Subheading:F,Switch:Y,TabContent:ql,Stack:Ol,StackClose:$l,StackHeader:Gl,StackFooter:Nl,StackContent:jl,Table:Kl,TableCell:Wl,TableColumn:Ql,TableColumns:Yl,TableRow:Jl,TableRows:Xl,TabList:Zl,TabProvider:en,Tabs:tn,TabTrigger:rn,Textarea:on,TimePicker:ln,ToggleGroup:nn,ToggleItem:sn,Widget:an,registerIconSet:un,registerIconSetFromStrings:dn}=__STATAMIC__.ui,{AfterSaveHooks:J,BeforeSaveHooks:X,Pipeline:Z,PipelineStopped:cn,Request:ee}=__STATAMIC__.savePipeline,{Form:pn,Head:mn,Link:gn,router:y,toggleArchitecturalBackground:fn,useArchitecturalBackground:Sn,useForm:vn,usePoll:yn}=__STATAMIC__.inertia,te={id:"alt-redirect"},re={class:"text-sm"},oe={class:"my-4 pb-2 px-4"},le={class:"px-2"},ne={key:0,"data-size":"sm",tabindex:"0",class:"data-table",style:{"table-layout":"fixed"}},se={key:1,"data-size":"sm",tabindex:"0",class:"data-table",style:{"table-layout":"fixed"}},ae=["href"],ie={class:"flex justify-between items-center"},k=10,ue={__name:"AltRedirect",props:{title:String,instructions:String,action:String,blueprint:Array,initialMeta:Array,initialValues:Array,items:Array,type:String},setup(s){const g=s,d=i(1),h=i(null),f=i(""),b=i({...g.initialValues}),_=i(g.initialMeta),V=i({}),A=i(!1),I=i("container"),T=E(()=>Math.ceil(C.value.total/k)),C=E(()=>{let n=g.items;f.value?.length>0&&(n=n.filter(x=>Object.values(x).map(P=>P?.toString().toLowerCase()).some(P=>P?.includes(f.value.toLowerCase()))));const r=(d.value-1)*k,t=r+k;return{total:n.length,data:n.slice(r,t)}});function m(n){n>T.value&&(n=T.value),d.value=n}function B(n,r){confirm("Are you sure you want to delete this redirect?")&&y.post(cp_url("alt-design/alt-redirect/delete"),{from:n,id:r},{preserveState:"errors",preserveScroll:!0,onSuccess:()=>{Statamic.$toast.success("Redirect deleted successfully!"),m(d.value)}})}function z(n){confirm("Are you sure you want to delete this query string?")&&y.post(cp_url("/alt-design/alt-redirect/query-strings/delete"),{query_string:n},{preserveState:"errors",preserveScroll:!0,onSuccess:()=>{Statamic.$toast.success("Query string deleted successfully!"),m(d.value)}})}function U(){if(!h.value){alert("You haven't attached a CSV file!");return}y.post(cp_url("alt-design/alt-redirect/import"),{file:h.value},{preserveState:"errors",preserveScroll:!0,onSuccess:()=>{Statamic.$toast.success("CSV imported successfully!"),m(d.value),h.value=null}})}function q(n,r){y.post(cp_url("/alt-design/alt-redirect/query-strings/toggle"),{index:n,toggleKey:r},{preserveState:"errors",preserveScroll:!0,onSuccess:()=>{Statamic.$toast.success("Toggled successfully!"),m(d.value)}})}function O(){new Z().provide({container:I,errors:V,saving:A}).through([new X("alt-redirect"),new ee(cp_url("/alt-design/alt-redirect"),"POST",{type:g.type}),new J("alt-redirect")]).then(()=>{b.value={...g.initialValues},Statamic.$toast.success("Redirect added successfully!"),y.reload()})}return j(f,()=>{m(1)}),(n,r)=>(p(),c("div",te,[o(l(K),{title:s.title},{title:a(()=>[e("div",null,[S(u(s.title)+" ",1),e("div",re,u(s.instructions),1)])]),default:a(()=>[o(l(v),{text:"Save",variant:"primary",disabled:A.value,onClick:O},null,8,["disabled"])]),_:1},8,["title"]),o(l(Q),{ref_key:"container",ref:I,action:s.action,blueprint:s.blueprint,meta:_.value,modelValue:b.value,"onUpdate:modelValue":r[0]||(r[0]=t=>b.value=t),errors:V.value},null,8,["action","blueprint","meta","modelValue","errors"]),o(l(R),{class:"overflow-hidden p-0"},{default:a(()=>[e("div",oe,[o(l(H),{modelValue:f.value,"onUpdate:modelValue":r[1]||(r[1]=t=>f.value=t),placeholder:"Search"},null,8,["modelValue"])]),e("div",le,[s.type=="redirects"?(p(),c("table",ne,[r[4]||(r[4]=e("thead",null,[e("tr",null,[e("th",{class:"group from-column sortable-column",style:{width:"33%"}},[e("span",null,"From")]),e("th",{class:"group from-column sortable-column pr-8 w-24",style:{width:"33%"}},[e("span",null,"To")]),e("th",{class:"group to-column pr-8",style:{width:"8%"}},[e("span",null,"Type")]),e("th",{class:"group to-column pr-8",style:{width:"15%"}},[e("span",null,"Sites")]),e("th",{class:"actions-column",style:{width:"13.4%"}})])],-1)),e("tbody",null,[(p(!0),c(M,null,L(C.value.data,t=>(p(),c("tr",{key:t.id,style:{width:"100%",overflow:"clip"}},[e("td",null,u(t.from),1),e("td",null,u(t.to),1),e("td",null,u(t.redirect_type),1),e("td",null,u(t.sites&&t.sites.length?t.sites.join(", "):"Unknown"),1),e("td",null,[o(l(v),{icon:"trash",size:"sm",onClick:x=>B(t.from,t.id),text:"Remove",variant:"danger"},null,8,["onClick"])])]))),128))])])):s.type=="query-strings"?(p(),c("table",se,[r[5]||(r[5]=e("thead",null,[e("tr",null,[e("th",{class:"group from-column sortable-column",style:{width:"46%"}},[e("span",null,"Query String Key")]),e("th",{class:"group to-column pr-8",style:{width:"20%"}},[e("span",null,"Strip")]),e("th",{class:"group to-column pr-8",style:{width:"20.6%"}},[e("span",null,"Sites")]),e("th",{class:"actions-column",style:{width:"13.4%"}})])],-1)),e("tbody",null,[(p(!0),c(M,null,L(C.value.data,(t,x)=>(p(),c("tr",{key:t.id,style:{width:"100%",overflow:"clip"}},[e("td",null,u(t.query_string),1),e("td",null,[o(l(Y),{modelValue:t.strip,"onUpdate:modelValue":[w=>t.strip=w,w=>q(t.query_string,"strip")]},null,8,["modelValue","onUpdate:modelValue"])]),e("td",null,u(t.sites&&t.sites.length?t.sites.join(", "):"Unknown"),1),e("td",null,[o(l(v),{icon:"trash",size:"sm",onClick:w=>z(t.query_string),text:"Remove",variant:"danger"},null,8,["onClick"])])]))),128))])])):G("",!0)]),o(l(W),{"resource-meta":{current_page:d.value,last_page:T.value,total:C.value.total},"show-totals":!1,"show-per-page-selector":!1,onPageSelected:m},null,8,["resource-meta"])]),_:1}),e("div",{class:N(["flex justify-between",{hidden:s.type=="query-strings"}])},[o(l(R),{class:"w-full xl:w-1/2 card overflow-hidden p-0 mb-4 mt-4 mr-4 px-4 py-4"},{default:a(()=>[e("header",null,[o(l(D),null,{default:a(()=>[...r[6]||(r[6]=[S("CSV Export",-1)])]),_:1}),o(l(F),null,{default:a(()=>[...r[7]||(r[7]=[S("Exports CSV of all redirects, use this format on import.",-1)])]),_:1})]),e("a",{class:"btn-primary",href:n.cp_url("/alt-design/alt-redirect/export"),download:""},[o(l(v),{text:"Export CSV"})],8,ae)]),_:1}),o(l(R),{class:"w-full xl:w-1/2 card overflow-hidden p-0 mb-4 mt-4 ml-4 px-4 py-4"},{default:a(()=>[e("header",null,[o(l(D),null,{default:a(()=>[...r[8]||(r[8]=[S("CSV Import",-1)])]),_:1}),o(l(F),null,{default:a(()=>[...r[9]||(r[9]=[S("Import CSV for redirects, use the export format on import.",-1)])]),_:1})]),e("div",ie,[o(l(H),{type:"file",onInput:r[2]||(r[2]=t=>h.value=t.target.files[0])}),o(l(v),{onClick:r[3]||(r[3]=t=>U()),text:"Import"})])]),_:1})],2)]))}};Statamic.booting(()=>{Statamic.$inertia.register("alt-redirect::Index",ue)}); diff --git a/resources/dist/build/assets/alt-redirect-addon-DkO3A2Nf.js b/resources/dist/build/assets/alt-redirect-addon-DkO3A2Nf.js new file mode 100644 index 0000000..469bf26 --- /dev/null +++ b/resources/dist/build/assets/alt-redirect-addon-DkO3A2Nf.js @@ -0,0 +1 @@ +const N=window.Vue,{BaseTransition:ve,BaseTransitionPropsValidators:fe,Comment:Se,DeprecationTypes:ye,EffectScope:he,ErrorCodes:Ce,ErrorTypeStrings:we,Fragment:R,KeepAlive:be,ReactiveEffect:xe,Static:Te,Suspense:Pe,Teleport:ke,Text:Re,TrackOpTypes:Ve,Transition:Ae,TransitionGroup:Me,TriggerOpTypes:Ie,VueElement:Ee,__esModule:Le,assertNumber:De,callWithAsyncErrorHandling:He,callWithErrorHandling:Fe,camelize:_e,capitalize:Be,cloneVNode:Ue,compatUtils:ze,compile:Oe,computed:L,createApp:qe,createBlock:$e,createCommentVNode:j,createElementBlock:c,createElementVNode:e,createHydrationRenderer:Ge,createPropsRestProxy:Ne,createRenderer:je,createSSRApp:Ke,createSlots:We,createStaticVNode:Qe,createTextVNode:S,createVNode:l,customRef:Ye,defineAsyncComponent:Je,defineComponent:Xe,defineCustomElement:Ze,defineEmits:et,defineExpose:tt,defineModel:rt,defineOptions:lt,defineProps:ot,defineSSRCustomElement:st,defineSlots:nt,devtools:at,effect:it,effectScope:ut,getCurrentInstance:dt,getCurrentScope:ct,getCurrentWatcher:pt,getTransitionRawChildren:mt,guardReactiveProps:gt,h:vt,handleError:ft,hasInjectionContext:St,hydrate:yt,hydrateOnIdle:ht,hydrateOnInteraction:Ct,hydrateOnMediaQuery:wt,hydrateOnVisible:bt,initCustomFormatter:xt,initDirectivesForSSR:Tt,inject:Pt,isMemoSame:kt,isProxy:Rt,isReactive:Vt,isReadonly:At,isRef:Mt,isRuntimeOnly:It,isShallow:Et,isVNode:Lt,markRaw:Dt,mergeDefaults:Ht,mergeModels:Ft,mergeProps:_t,nextTick:Bt,nodeOps:Ut,normalizeClass:K,normalizeProps:zt,normalizeStyle:Ot,onActivated:qt,onBeforeMount:$t,onBeforeUnmount:Gt,onBeforeUpdate:Nt,onDeactivated:jt,onErrorCaptured:Kt,onMounted:Wt,onRenderTracked:Qt,onRenderTriggered:Yt,onScopeDispose:Jt,onServerPrefetch:Xt,onUnmounted:Zt,onUpdated:er,onWatcherCleanup:tr,openBlock:p,patchProp:rr,popScopeId:lr,provide:or,proxyRefs:sr,pushScopeId:nr,queuePostFlushCb:ar,reactive:ir,readonly:ur,ref:i,registerRuntimeCompiler:dr,render:cr,renderList:V,renderSlot:pr,resolveComponent:mr,resolveDirective:gr,resolveDynamicComponent:vr,resolveFilter:fr,resolveTransitionHooks:Sr,setBlockTracking:yr,setDevtoolsHook:hr,setTransitionHooks:Cr,shallowReactive:wr,shallowReadonly:br,shallowRef:xr,ssrContextKey:Tr,ssrUtils:Pr,stop:kr,toDisplayString:u,toHandlerKey:Rr,toHandlers:Vr,toRaw:Ar,toRef:Mr,toRefs:Ir,toValue:Er,transformVNodeArgs:Lr,triggerRef:Dr,unref:o,useAttrs:Hr,useCssModule:Fr,useCssVars:_r,useHost:Br,useId:Ur,useModel:zr,useSSRContext:Or,useShadowRoot:qr,useSlots:$r,useTemplateRef:Gr,useTransitionState:Nr,vModelCheckbox:jr,vModelDynamic:Kr,vModelRadio:Wr,vModelSelect:W,vModelText:Qr,vShow:Yr,version:Jr,warn:Xr,watch:D,watchEffect:Zr,watchPostEffect:el,watchSyncEffect:tl,withAsyncContext:rl,withCtx:d,withDefaults:ll,withDirectives:Q,withKeys:ol,withMemo:sl,withModifiers:nl,withScopeId:al}=N,{Alert:il,AuthCard:ul,Avatar:dl,Badge:cl,Button:y,ButtonGroup:pl,Calendar:ml,Card:A,CardList:gl,CardListItem:vl,CardPanel:fl,CharacterCounter:Sl,Checkbox:yl,CheckboxGroup:hl,CodeEditor:Cl,Combobox:wl,CommandPaletteItem:bl,ConfirmationModal:xl,Context:Tl,ContextFooter:Pl,ContextHeader:kl,ContextItem:Rl,ContextLabel:Vl,ContextMenu:Al,ContextSeparator:Ml,CreateForm:Il,DatePicker:El,DateRangePicker:Ll,Description:Dl,DocsCallout:Hl,DragHandle:Fl,Dropdown:_l,DropdownItem:Bl,DropdownLabel:Ul,DropdownMenu:zl,DropdownSeparator:Ol,DropdownFooter:ql,DropdownHeader:$l,Editable:Gl,ErrorMessage:Nl,EmptyStateItem:jl,EmptyStateMenu:Kl,Field:Wl,Header:Y,Heading:H,HoverCard:Ql,Icon:Yl,Input:F,InputGroup:Jl,InputGroupAppend:Xl,InputGroupPrepend:Zl,Label:eo,Listing:to,ListingCustomizeColumns:ro,ListingFilters:lo,ListingHeaderCell:oo,ListingPagination:so,ListingPresets:no,ListingPresetTrigger:ao,ListingRowActions:io,ListingSearch:uo,ListingTable:co,ListingTableBody:po,ListingTableHead:mo,ListingToggleAll:go,LivePreview:vo,LivePreviewPopout:fo,MiddleEllipsis:So,Modal:yo,ModalClose:ho,ModalTitle:Co,Pagination:J,Panel:wo,PanelFooter:bo,PanelHeader:xo,Popover:To,PublishComponents:Po,PublishContainer:X,publishContextKey:ko,injectPublishContext:Ro,PublishField:Vo,PublishFields:Ao,PublishFieldsProvider:Mo,PublishForm:Io,PublishLocalizations:Eo,PublishSections:Lo,PublishTabs:Do,Radio:Ho,RadioGroup:Fo,Select:_o,Separator:Bo,Slider:Uo,Skeleton:zo,SplitterGroup:Oo,SplitterPanel:qo,SplitterResizeHandle:$o,StatusIndicator:Go,Subheading:_,Switch:Z,TabContent:No,Stack:jo,StackClose:Ko,StackHeader:Wo,StackFooter:Qo,StackContent:Yo,Table:Jo,TableCell:Xo,TableColumn:Zo,TableColumns:es,TableRow:ts,TableRows:rs,TabList:ls,TabProvider:os,Tabs:ss,TabTrigger:ns,Text:as,Textarea:is,TimePicker:us,ToggleGroup:ds,ToggleItem:cs,Widget:ps,registerIconSet:ms,registerIconSetFromStrings:gs}=__STATAMIC__.ui,{AfterSaveHooks:ee,BeforeSaveHooks:te,Pipeline:re,PipelineStopped:vs,Request:le}=__STATAMIC__.savePipeline,{Form:fs,Head:Ss,Link:ys,router:h,toggleArchitecturalBackground:hs,useArchitecturalBackground:Cs,useForm:ws,usePoll:bs}=__STATAMIC__.inertia,oe={id:"alt-redirect"},se={class:"text-sm"},ne={class:"my-4 pb-2 px-4 flex items-center gap-4"},ae={class:"flex items-center gap-2 shrink-0"},ie=["value"],ue={class:"px-2"},de={key:0,"data-size":"sm",tabindex:"0",class:"data-table",style:{"table-layout":"fixed"}},ce={key:1,"data-size":"sm",tabindex:"0",class:"data-table",style:{"table-layout":"fixed"}},pe=["href"],me={class:"flex justify-between items-center"},ge={__name:"AltRedirect",props:{title:String,instructions:String,action:String,blueprint:Array,initialMeta:Array,initialValues:Array,items:Array,type:String},setup(n){const g=n,m=i(10),B=[10,25,50,100,500],a=i(1),C=i(null),v=i(""),x=i({...g.initialValues}),U=i(g.initialMeta),M=i({}),I=i(!1),E=i("container"),T=L(()=>Math.max(1,Math.ceil(w.value.total/m.value))),w=L(()=>{let s=g.items;v.value?.length>0&&(s=s.filter(P=>Object.values(P).map(k=>k?.toString().toLowerCase()).some(k=>k?.includes(v.value.toLowerCase()))));const r=(a.value-1)*m.value,t=r+m.value;return{total:s.length,data:s.slice(r,t)}});function f(s){s>T.value&&(s=T.value),a.value=s}function z(s,r){confirm("Are you sure you want to delete this redirect?")&&h.post(cp_url("alt-design/alt-redirect/delete"),{from:s,id:r},{preserveState:"errors",preserveScroll:!0,onSuccess:()=>{Statamic.$toast.success("Redirect deleted successfully!"),f(a.value)}})}function O(s){confirm("Are you sure you want to delete this query string?")&&h.post(cp_url("/alt-design/alt-redirect/query-strings/delete"),{query_string:s},{preserveState:"errors",preserveScroll:!0,onSuccess:()=>{Statamic.$toast.success("Query string deleted successfully!"),f(a.value)}})}function q(){if(!C.value){alert("You haven't attached a CSV file!");return}h.post(cp_url("alt-design/alt-redirect/import"),{file:C.value},{preserveState:"errors",preserveScroll:!0,onSuccess:()=>{Statamic.$toast.success("CSV imported successfully!"),f(a.value),C.value=null}})}function $(s,r){h.post(cp_url("/alt-design/alt-redirect/query-strings/toggle"),{index:s,toggleKey:r},{preserveState:"errors",preserveScroll:!0,onSuccess:()=>{Statamic.$toast.success("Toggled successfully!"),f(a.value)}})}function G(){new re().provide({container:E,errors:M,saving:I}).through([new te("alt-redirect"),new le(cp_url("/alt-design/alt-redirect"),"POST",{type:g.type}),new ee("alt-redirect")]).then(()=>{x.value={...g.initialValues},Statamic.$toast.success("Redirect added successfully!"),h.reload()})}return D(v,()=>{a.value=1}),D(m,()=>{a.value=1}),(s,r)=>(p(),c("div",oe,[l(o(Y),{title:n.title},{title:d(()=>[e("div",null,[S(u(n.title)+" ",1),e("div",se,u(n.instructions),1)])]),default:d(()=>[l(o(y),{text:"Save",variant:"primary",disabled:I.value,onClick:G},null,8,["disabled"])]),_:1},8,["title"]),l(o(X),{ref_key:"container",ref:E,action:n.action,blueprint:n.blueprint,meta:U.value,modelValue:x.value,"onUpdate:modelValue":r[0]||(r[0]=t=>x.value=t),errors:M.value},null,8,["action","blueprint","meta","modelValue","errors"]),l(o(A),{class:"overflow-hidden p-0"},{default:d(()=>[e("div",ne,[l(o(F),{modelValue:v.value,"onUpdate:modelValue":r[1]||(r[1]=t=>v.value=t),placeholder:"Search",class:"flex-1"},null,8,["modelValue"]),e("div",ae,[r[5]||(r[5]=e("span",{class:"text-sm text-gray-500"},"Per page",-1)),Q(e("select",{"onUpdate:modelValue":r[2]||(r[2]=t=>m.value=t),class:"input-text text-sm"},[(p(),c(R,null,V(B,t=>e("option",{key:t,value:t},u(t),9,ie)),64))],512),[[W,m.value,void 0,{number:!0}]])])]),e("div",ue,[n.type=="redirects"?(p(),c("table",de,[r[6]||(r[6]=e("thead",null,[e("tr",null,[e("th",{class:"group from-column sortable-column",style:{width:"33%"}},[e("span",null,"From")]),e("th",{class:"group from-column sortable-column pr-8 w-24",style:{width:"33%"}},[e("span",null,"To")]),e("th",{class:"group to-column pr-8",style:{width:"8%"}},[e("span",null,"Type")]),e("th",{class:"group to-column pr-8",style:{width:"15%"}},[e("span",null,"Sites")]),e("th",{class:"actions-column",style:{width:"13.4%"}})])],-1)),e("tbody",null,[(p(!0),c(R,null,V(w.value.data,t=>(p(),c("tr",{key:t.id,style:{width:"100%",overflow:"clip"}},[e("td",null,u(t.from),1),e("td",null,u(t.to),1),e("td",null,u(t.redirect_type),1),e("td",null,u(t.sites&&t.sites.length?t.sites.join(", "):"Unknown"),1),e("td",null,[l(o(y),{icon:"trash",size:"sm",onClick:P=>z(t.from,t.id),text:"Remove",variant:"danger"},null,8,["onClick"])])]))),128))])])):n.type=="query-strings"?(p(),c("table",ce,[r[7]||(r[7]=e("thead",null,[e("tr",null,[e("th",{class:"group from-column sortable-column",style:{width:"46%"}},[e("span",null,"Query String Key")]),e("th",{class:"group to-column pr-8",style:{width:"20%"}},[e("span",null,"Strip")]),e("th",{class:"group to-column pr-8",style:{width:"20.6%"}},[e("span",null,"Sites")]),e("th",{class:"actions-column",style:{width:"13.4%"}})])],-1)),e("tbody",null,[(p(!0),c(R,null,V(w.value.data,(t,P)=>(p(),c("tr",{key:t.id,style:{width:"100%",overflow:"clip"}},[e("td",null,u(t.query_string),1),e("td",null,[l(o(Z),{modelValue:t.strip,"onUpdate:modelValue":[b=>t.strip=b,b=>$(t.query_string,"strip")]},null,8,["modelValue","onUpdate:modelValue"])]),e("td",null,u(t.sites&&t.sites.length?t.sites.join(", "):"Unknown"),1),e("td",null,[l(o(y),{icon:"trash",size:"sm",onClick:b=>O(t.query_string),text:"Remove",variant:"danger"},null,8,["onClick"])])]))),128))])])):j("",!0)]),l(o(J),{"resource-meta":{current_page:a.value,last_page:T.value,total:w.value.total},"show-totals":!1,"show-per-page-selector":!1,onPageSelected:f},null,8,["resource-meta"])]),_:1}),e("div",{class:K(["flex justify-between",{hidden:n.type=="query-strings"}])},[l(o(A),{class:"w-full xl:w-1/2 card overflow-hidden p-0 mb-4 mt-4 mr-4 px-4 py-4"},{default:d(()=>[e("header",null,[l(o(H),null,{default:d(()=>[...r[8]||(r[8]=[S("CSV Export",-1)])]),_:1}),l(o(_),null,{default:d(()=>[...r[9]||(r[9]=[S("Exports CSV of all redirects, use this format on import.",-1)])]),_:1})]),e("a",{class:"btn-primary",href:s.cp_url("/alt-design/alt-redirect/export"),download:""},[l(o(y),{text:"Export CSV"})],8,pe)]),_:1}),l(o(A),{class:"w-full xl:w-1/2 card overflow-hidden p-0 mb-4 mt-4 ml-4 px-4 py-4"},{default:d(()=>[e("header",null,[l(o(H),null,{default:d(()=>[...r[10]||(r[10]=[S("CSV Import",-1)])]),_:1}),l(o(_),null,{default:d(()=>[...r[11]||(r[11]=[S("Import CSV for redirects, use the export format on import.",-1)])]),_:1})]),e("div",me,[l(o(F),{type:"file",onInput:r[3]||(r[3]=t=>C.value=t.target.files[0])}),l(o(y),{onClick:r[4]||(r[4]=t=>q()),text:"Import"})])]),_:1})],2)]))}};Statamic.booting(()=>{Statamic.$inertia.register("alt-redirect::Index",ge)}); diff --git a/resources/dist/build/manifest.json b/resources/dist/build/manifest.json index c0db66f..704e40b 100644 --- a/resources/dist/build/manifest.json +++ b/resources/dist/build/manifest.json @@ -9,7 +9,7 @@ ] }, "resources/js/alt-redirect-addon.js": { - "file": "assets/alt-redirect-addon-De-18xa-.js", + "file": "assets/alt-redirect-addon-DkO3A2Nf.js", "name": "alt-redirect-addon", "src": "resources/js/alt-redirect-addon.js", "isEntry": true diff --git a/resources/js/components/AltRedirect.vue b/resources/js/components/AltRedirect.vue index bfd2401..021400c 100644 --- a/resources/js/components/AltRedirect.vue +++ b/resources/js/components/AltRedirect.vue @@ -15,7 +15,8 @@ const props = defineProps({ type: String }); -const perPage = 10; +const perPage = ref(10); +const perPageOptions = [10, 25, 50, 100, 500]; const currentPage = ref(1); const selectedFile = ref(null); const search = ref(''); @@ -26,7 +27,7 @@ const saving = ref(false); const container = ref('container'); const lastPage = computed(() => { - return Math.ceil(itemsSliced.value.total / perPage); + return Math.max(1, Math.ceil(itemsSliced.value.total / perPage.value)); }); const itemsSliced = computed(() => { @@ -34,15 +35,13 @@ const itemsSliced = computed(() => { if (search.value?.length > 0) { temp = temp.filter(item => { - // Convert all values to string and lower case for case-insensitive comparison let tempArr = Object.values(item).map(value => value?.toString().toLowerCase()); - // Check if any value includes the search string return tempArr.some(value => value?.includes(search.value.toLowerCase())); }); } - const start = (currentPage.value - 1) * perPage; - const end = start + perPage; + const start = (currentPage.value - 1) * perPage.value; + const end = start + perPage.value; return { total: temp.length, @@ -137,7 +136,11 @@ function save() { } watch(search, () => { - setPage(1) + currentPage.value = 1; +}); + +watch(perPage, () => { + currentPage.value = 1; }); @@ -157,8 +160,14 @@ watch(search, () => { -
- +
+ +
+ Per page + +