@kong-ui-public/entities-consumer-groups 3.5.66 → 3.5.67

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.
@@ -36,7 +36,7 @@ const oo = {
36
36
  },
37
37
  delete: {
38
38
  title: "Delete a Consumer Group",
39
- description: "Deleting this group will remove this group from all plugins and its rate limit configuration. This action cannot be reversed."
39
+ description: "Deleting this group will remove all its plugins and rate limit configuration. This action cannot be reversed."
40
40
  },
41
41
  consumers: {
42
42
  add: {
@@ -1 +1 @@
1
- (function($,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("@kong/icons"),require("@kong-ui-public/i18n"),require("@kong-ui-public/entities-shared")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","@kong/icons","@kong-ui-public/i18n","@kong-ui-public/entities-shared"],e):($=typeof globalThis<"u"?globalThis:$||self,e($["kong-ui-public-entities-consumer-groups"]={},$.Vue,$.VueRouter,$.KongIcons,$["kong-ui-public-i18n"],$["kong-ui-public-entities-shared"]))})(this,function($,e,de,fe,me,f){"use strict";const ge={consumer_groups:{list:{table_headers:{name:"Name",consumers_count:"Consumers",tags:"Tags",id:"ID"},empty_state:{title:"Configure a New Consumer Group",description:"Use consumer groups to manage custom rate limiting configuration for subsets of consumers.",title_for_consumer:"Add to a Consumer Group"},toolbar_actions:{new_consumer_group:"New Consumer Group"}},title:"Consumer Groups",search:{placeholder:"Filter by exact name or ID"},actions:{add_to_group:"Add to Consumer Group",create:"New Consumer Group",copy_id:"Copy ID",copy_json:"Copy JSON",edit:"Edit",delete:"Delete",exit:"Exit",view:"View Details"},delete:{title:"Delete a Consumer Group",description:"Deleting this group will remove this group from all plugins and its rate limit configuration. This action cannot be reversed."},consumers:{add:{title:"Add To Consumer Groups",ctaText:"Add this consumer to consumer groups",consumer_groups_label:"Consumer Groups",consumer_group_placeholder:"Add to consumer groups",footer:"Search by exact name or ID to find consumer groups not included in the list"},exit:{title:"Exit from a Consumer Group",confirmation:"Are you sure you want to remove consumer {consumer} from consumer group {consumerGroup}?",confirmationNoUsername:"Are you sure you want this consumer to exit from consumer group {consumerGroup}?",description:"Exiting from the group could change the rate limit policy applied to this consumer."}},errors:{general:"Consumer Groups could not be retrieved",delete:"The consumer group could not be deleted at this time.",copy:"Failed to copy to clipboard",add:"The consumer could not be added to some groups at this time.",already_added:"The consumer is already in this consumer group",add_consumer:"An unexpected error occurred while adding consumers. Please try again.",remove_consumer:"An unexpected error occurred while removing consumers. Please try again."},copy:{success:"Copied {val} to clipboard",success_brief:"Successfully copied to clipboard"},form:{general_info:{title:"General Information",description:"General information will help identify and manage this consumer group."},consumers:{title:"Consumers",description:"Add or remove consumers from this group"},fields:{name:{label:"Name",placeholder:"Enter a unique name for this consumer group "},tags:{label:"Tags",placeholder:"Enter a list of tags separated by comma",help:"e.g. tag1, tag2, tag3",tooltip:"An optional set of strings for grouping and filtering, separated by commas."},consumers:{label:"Consumers",placeholder:"Select one or more consumers"}}}}};function ye(){const o=me.createI18n("en-us",ge);return{i18n:o,i18nT:me.i18nTComponent(o)}}const se={useI18n:ye},T="/v2/control-planes/{controlPlaneId}/core-entities",D="/{workspace}",U={list:{konnect:{all:`${T}/consumer_groups`,forModal:`${T}/consumer_groups`,forConsumer:`${T}/consumers/{consumerId}/consumer_groups`,oneForConsumer:`${T}/consumers/{consumerId}/consumer_groups/{consumerGroupId}`},kongManager:{all:`${D}/consumer_groups?counter=true`,forModal:`${D}/consumer_groups`,forConsumer:`${D}/consumers/{consumerId}/consumer_groups`,oneForConsumer:`${D}/consumers/{consumerId}/consumer_groups/{consumerGroupId}`}},form:{konnect:{consumersList:`${T}/consumers`,create:`${T}/consumer_groups`,edit:`${T}/consumer_groups/{id}`,addConsumer:`${T}/consumer_groups/{id}/consumers`,removeConsumer:`${T}/consumer_groups/{id}/consumers/{consumerId}`,getConsumers:`${T}/consumer_groups/{id}/consumers`},kongManager:{consumersList:`${D}/consumers`,create:`${D}/consumer_groups`,edit:`${D}/consumer_groups/{id}`,addConsumer:`${D}/consumer_groups/{id}/consumers`,removeConsumer:`${D}/consumer_groups/{id}/consumers/{consumerId}`,getConsumers:`${D}/consumer_groups/{id}/consumers`}}},he={class:"add-to-group-form-container"},_e={class:"add-to-group-cta-text"},Ce={key:0,class:"kong-ui-entity-add-to-groups-error"},be={key:0},ke=e.defineComponent({__name:"AddToGroupModal",props:{config:{type:Object,required:!0,validator:o=>!(!o||!["konnect","kongManager"].includes(o==null?void 0:o.app)||!o.consumerId)},visible:{type:Boolean,required:!0,default:!1}},emits:["cancel","add:success","add:partial-success","error"],setup(o,{emit:S}){var K;const{i18n:{t:c}}=se.useI18n(),r=o,g=S,{axiosInstance:l}=f.useAxios((K=r.config)==null?void 0:K.axiosRequestConfig),s=e.ref([]),{debouncedQueryChange:I,loading:z,allRecords:A,error:X,loadItems:Y,results:O}=f.useDebouncedFilter(r.config,U.list[r.config.app].forModal,"",{fetchedItemsKey:"data",searchKeys:["name","id"]}),V=e.computed(()=>X.value?c("consumer_groups.errors.general"):""),Z=e.ref(0),E=e.computed(()=>A.value===void 0),L=e.computed(()=>O.value.map(m=>({label:m.name,value:m.id,selected:s.value.includes(m.id),data:m}))),Q=m=>{var d;const y=E.value?O.value.find(h=>h.id===m):(d=A.value)==null?void 0:d.find(h=>h.id===m);return y?y.name:m},v=()=>{x.value="",P.value=[],M.value=[],g("cancel")},P=e.ref([]),B=e.ref(!1),x=e.ref(""),ee=async()=>{if(!s.value.length){x.value="",M.value=[],g("cancel");return}B.value=!0,x.value="",P.value=[],M.value=[];try{const m=s.value.map(h=>oe(h)),y=await Promise.allSettled(m);let d=!0;y.forEach(h=>{h.status!=="fulfilled"&&(d=!1)}),d?(P.value=[],M.value=[],g("add:success",s.value),s.value=[]):(P.value.length&&g("add:partial-success",P.value),s.value=[],J(y))}catch{x.value=c("consumer_groups.errors.add"),g("error",x.value)}finally{B.value=!1}},R=e.computed(()=>{var y,d,h,G;let m=`${r.config.apiBaseUrl}${U.list[r.config.app].forConsumer}`;return r.config.app==="konnect"?m=m.replace(/{controlPlaneId}/gi,((y=r.config)==null?void 0:y.controlPlaneId)||"").replace(/{consumerId}/gi,((d=r.config)==null?void 0:d.consumerId)||""):r.config.app==="kongManager"&&(m=m.replace(/\/{workspace}/gi,(h=r.config)!=null&&h.workspace?`/${r.config.workspace}`:"").replace(/{consumerId}/gi,((G=r.config)==null?void 0:G.consumerId)||"")),m}),oe=async m=>{const y={group:m};try{const d=await l.post(R.value,y);return P.value.push(m),d}catch(d){let h=`${Q(m)} - ${d.message}`;return d.response.status===409&&(h=`${Q(m)} - ${c("consumer_groups.errors.already_added")}`),Promise.reject(Error(h))}},M=e.ref([]),J=m=>{M.value=m.map(y=>{var d;return(d=y.reason)==null?void 0:d.message}).filter(Boolean)};return e.watch(L,()=>{Z.value++},{immediate:!0,deep:!0}),e.watch(()=>r.visible,()=>{r.visible&&Y()},{immediate:!0}),(m,y)=>{const d=e.resolveComponent("KMultiselect"),h=e.resolveComponent("KAlert"),G=e.resolveComponent("KPrompt");return e.openBlock(),e.createBlock(G,{"action-button-disabled":B.value,class:"kong-ui-entities-add-to-groups-modal","data-testid":"add-to-group-modal",title:e.unref(c)("consumer_groups.consumers.add.title"),visible:o.visible,onCancel:v,onProceed:ee},{default:e.withCtx(()=>[e.createElementVNode("div",he,[e.createElementVNode("p",_e,e.toDisplayString(e.unref(c)("consumer_groups.consumers.add.ctaText")),1),e.createVNode(d,{modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=j=>s.value=j),autosuggest:"","data-testid":"add-to-groups-multiselect","dropdown-footer-text":E.value?e.unref(c)("consumer_groups.consumers.add.footer"):void 0,items:L.value,label:e.unref(c)("consumer_groups.consumers.add.consumer_groups_label"),loading:e.unref(z),placeholder:e.unref(c)("consumer_groups.consumers.add.consumer_group_placeholder"),readonly:B.value,required:"",width:"100%",onQueryChange:e.unref(I)},null,8,["modelValue","dropdown-footer-text","items","label","loading","placeholder","readonly","onQueryChange"]),x.value||V.value||M.value.length?(e.openBlock(),e.createElementBlock("div",Ce,[e.createVNode(h,{appearance:"danger"},{default:e.withCtx(()=>[e.createElementVNode("p",null,e.toDisplayString(e.unref(c)("consumer_groups.errors.add")),1),M.value.length?(e.openBlock(),e.createElementBlock("ul",be,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,(j,te)=>(e.openBlock(),e.createElementBlock("li",{key:te},e.toDisplayString(j),1))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(x.value||V.value),1)]),_:1})])):e.createCommentVNode("",!0)])]),_:1},8,["action-button-disabled","title","visible"])}}}),ce=(o,S)=>{const c=o.__vccOpts||o;for(const[r,g]of S)c[r]=g;return c},we=ce(ke,[["__scopeId","data-v-4260ce03"]]),Ie={class:"kong-ui-entities-consumer-groups-list"},xe=ce(e.defineComponent({__name:"ConsumerGroupList",props:{config:{type:Object,required:!0,validator:o=>!(!o||!["konnect","kongManager"].includes(o==null?void 0:o.app)||!o.createRoute||!o.getViewRoute||!o.getEditRoute||o.app==="kongManager"&&!o.isExactMatch&&!o.filterSchema)},cacheIdentifier:{type:String,default:""},canCreate:{type:Function,required:!1,default:async()=>!0},canDelete:{type:Function,required:!1,default:async()=>!0},canEdit:{type:Function,required:!1,default:async()=>!0},canRetrieve:{type:Function,required:!1,default:async()=>!0},useActionOutside:{type:Boolean,default:!1}},emits:["error","copy:success","copy:error","delete:success","add:success","remove:success"],setup(o,{emit:S}){var pe;const c=S,r=o,{i18nT:g,i18n:{t:l}}=se.useI18n(),s=de.useRouter(),{axiosInstance:I}=f.useAxios((pe=r.config)==null?void 0:pe.axiosRequestConfig),z=e.computed(()=>r.config.app!=="kongManager"||!!r.config.disableSorting),A={name:{label:l("consumer_groups.list.table_headers.name"),searchable:!0,sortable:!0,hidable:!1}};r.config.app==="kongManager"&&(A.consumers_count={label:l("consumer_groups.list.table_headers.consumers_count"),searchable:!1,sortable:!1}),A.tags={label:l("consumer_groups.list.table_headers.tags"),sortable:!1};const X=A,Y=n=>({"data-testid":n.username??n.custom_id??n.id}),O=e.computed(()=>{var p,C,k,q;let n=`${r.config.apiBaseUrl}${U.list[r.config.app][E.value?"forConsumer":"all"]}`;return r.config.app==="konnect"?n=n.replace(/{controlPlaneId}/gi,((p=r.config)==null?void 0:p.controlPlaneId)||"").replace(/{consumerId}/gi,((C=r.config)==null?void 0:C.consumerId)||""):r.config.app==="kongManager"&&(n=n.replace(/\/{workspace}/gi,(k=r.config)!=null&&k.workspace?`/${r.config.workspace}`:"").replace(/{consumerId}/gi,((q=r.config)==null?void 0:q.consumerId)||"")),n}),V=e.ref(""),Z=e.computed(()=>{const n=r.config.app==="konnect"||r.config.isExactMatch;return n?{isExactMatch:n,fields:{username:A.name,id:{label:l("consumer_groups.list.table_headers.id")}},placeholder:l("consumer_groups.search.placeholder")}:{isExactMatch:n,fields:{name:A.name},schema:r.config.filterSchema}}),E=e.computed(()=>!!r.config.consumerId),L=e.computed(()=>E.value?"kong-ui-entities-consumer-groups-list-in-consumer-page":"kong-ui-entities-consumer-groups-list"),Q=e.computed(()=>r.config.app==="konnect"&&V.value?"consumer_group":E.value&&!r.config.paginatedEndpoint?"consumer_groups":void 0),{fetcher:v,fetcherState:P,fetcherCacheKey:B}=f.useFetcher({...r.config,cacheIdentifier:r.cacheIdentifier},O.value,Q),x=()=>{V.value=""},ee=()=>{B.value++},R=e.ref(null),oe=(n,p)=>{const C=n.id;if(!p(C)){c("copy:error",{entity:n,field:"id",message:l("consumer_groups.errors.copy")});return}c("copy:success",{entity:n,field:"id",message:l("consumer_groups.copy.success",{val:C})})},M=(n,p)=>{const C=JSON.stringify(n);if(!p(C)){c("copy:error",{entity:n,message:l("consumer_groups.errors.copy")});return}c("copy:success",{entity:n,message:l("consumer_groups.copy.success_brief")})},J=async n=>{var C;await((C=r.canRetrieve)==null?void 0:C.call(r,n))&&s.push(r.config.getViewRoute(n.id))},K=n=>({label:l("consumer_groups.actions.view"),to:r.config.getViewRoute(n)}),m=n=>({label:l("consumer_groups.actions.edit"),to:r.config.getEditRoute(n)}),y=e.ref(void 0),d=e.ref(!1),h=e.ref(!1),G=e.ref(""),j=f.useDeleteUrlBuilder(r.config,O.value),te=n=>{y.value=n,d.value=!0},ie=()=>{d.value=!1},ae=async()=>{var n,p,C;if((n=y.value)!=null&&n.id){h.value=!0;try{await I.delete(j(y.value.id)),h.value=!1,d.value=!1,B.value++,c("delete:success",y.value)}catch(k){G.value=((C=(p=k.response)==null?void 0:p.data)==null?void 0:C.message)||k.message||l("consumer_groups.errors.delete"),c("error",k)}finally{h.value=!1}}},W=e.ref(!1),re=()=>{W.value=!0},t=()=>{W.value=!1},a=(n,p)=>{p||t(),B.value++,c("add:success",n)},b=()=>{E.value&&re()},i=e.ref(void 0),u=e.ref(!1),N=e.ref(""),F=n=>{i.value=n,u.value=!0},w=()=>{u.value=!1,i.value=void 0},H=e.computed(()=>{var p,C,k,q;let n=`${r.config.apiBaseUrl}${U.list[r.config.app].oneForConsumer}`;return r.config.app==="konnect"?n=n.replace(/{controlPlaneId}/gi,((p=r.config)==null?void 0:p.controlPlaneId)||"").replace(/{consumerId}/gi,((C=r.config)==null?void 0:C.consumerId)||""):r.config.app==="kongManager"&&(n=n.replace(/\/{workspace}/gi,(k=r.config)!=null&&k.workspace?`/${r.config.workspace}`:"").replace(/{consumerId}/gi,((q=r.config)==null?void 0:q.consumerId)||"")),n}),ne=e.ref(!1),Te=async()=>{if(i.value){ne.value=!0;try{const n=H.value.replace(/{consumerGroupId}/gi,i.value.id);await I.delete(n),c("remove:success",i.value),w(),B.value++}catch(n){N.value=n.message||l("consumer_groups.errors.delete"),c("error",n)}finally{ne.value=!1}}};e.watch(P,n=>{var p,C,k;if(n.status===f.FetcherStatus.Error){R.value={title:l("consumer_groups.errors.general")},(k=(C=(p=n.error)==null?void 0:p.response)==null?void 0:C.data)!=null&&k.message&&(R.value.message=n.error.response.data.message),c("error",n.error);return}R.value=null});const le=e.ref({ctaPath:E.value?void 0:r.config.createRoute,ctaText:void 0,message:`${l("consumer_groups.list.empty_state.description")}${r.config.additionMessageForEmptyState?` ${r.config.additionMessageForEmptyState}`:""}`,title:l("consumer_groups.title")});return e.onBeforeMount(async()=>{await r.canCreate()&&(le.value.title=E.value?l("consumer_groups.list.empty_state.title_for_consumer"):l("consumer_groups.list.empty_state.title"),le.value.ctaText=E.value?l("consumer_groups.actions.add_to_group"):l("consumer_groups.actions.create"))}),(n,p)=>{const C=e.resolveComponent("KButton"),k=e.resolveComponent("KDropdownItem"),q=e.resolveComponent("KClipboardProvider"),De=e.resolveComponent("KPrompt");return e.openBlock(),e.createElementBlock("div",Ie,[e.createVNode(e.unref(f.EntityBaseTable),{"cache-identifier":o.cacheIdentifier,"disable-pagination":E.value&&!o.config.paginatedEndpoint,"disable-sorting":z.value,"empty-state-options":le.value,"enable-entity-actions":"","error-message":R.value,fetcher:e.unref(v),"fetcher-cache-key":e.unref(B),"pagination-type":"offset","preferences-storage-key":L.value,query:V.value,"row-attributes":Y,"table-headers":e.unref(X),onClearSearchInput:x,"onClick:row":p[2]||(p[2]=_=>J(_)),onEmptyStateCtaClicked:b,onSort:ee},{"toolbar-filter":e.withCtx(()=>[E.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(f.EntityFilter),{key:0,modelValue:V.value,"onUpdate:modelValue":p[0]||(p[0]=_=>V.value=_),config:Z.value},null,8,["modelValue","config"]))]),"toolbar-button":e.withCtx(()=>[(e.openBlock(),e.createBlock(e.Teleport,{disabled:!o.useActionOutside,to:"#kong-ui-app-page-header-action-button"},[e.createVNode(e.unref(f.PermissionsWrapper),{"auth-function":()=>o.canCreate()},{default:e.withCtx(()=>[e.createVNode(C,{appearance:"primary","data-testid":"toolbar-add-consumer-group",size:o.useActionOutside?"medium":"large",to:o.config.consumerId?void 0:o.config.createRoute,onClick:p[1]||(p[1]=()=>o.config.consumerId?re():void 0)},{default:e.withCtx(()=>[e.createVNode(e.unref(fe.AddIcon)),e.createTextVNode(" "+e.toDisplayString(o.config.consumerId?e.unref(l)("consumer_groups.actions.add_to_group"):e.unref(l)("consumer_groups.list.toolbar_actions.new_consumer_group")),1)]),_:1},8,["size","to"])]),_:1},8,["auth-function"])],8,["disabled"]))]),name:e.withCtx(({rowValue:_})=>[e.createElementVNode("b",null,e.toDisplayString(_??"-"),1)]),consumers_count:e.withCtx(({rowValue:_})=>[e.createTextVNode(e.toDisplayString(_??"-"),1)]),tags:e.withCtx(({rowValue:_})=>[e.createVNode(e.unref(f.TableTags),{tags:_},null,8,["tags"])]),actions:e.withCtx(({row:_})=>[e.createVNode(q,null,{default:e.withCtx(({copyToClipboard:ue})=>[e.createVNode(k,{"data-testid":"action-entity-copy-id",onClick:Ae=>oe(_,ue)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(l)("consumer_groups.actions.copy_id")),1)]),_:2},1032,["onClick"])]),_:2},1024),e.createVNode(q,null,{default:e.withCtx(({copyToClipboard:ue})=>[e.createVNode(k,{"data-testid":"action-entity-copy-json",onClick:Ae=>M(_,ue)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(l)("consumer_groups.actions.copy_json")),1)]),_:2},1032,["onClick"])]),_:2},1024),e.createVNode(e.unref(f.PermissionsWrapper),{"auth-function":()=>o.canRetrieve(_)},{default:e.withCtx(()=>[e.createVNode(k,{"data-testid":"action-entity-view","has-divider":"",item:K(_.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(f.PermissionsWrapper),{"auth-function":()=>o.canEdit(_)},{default:e.withCtx(()=>[e.createVNode(k,{"data-testid":"action-entity-edit",item:m(_.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(f.PermissionsWrapper),{"auth-function":()=>o.canDelete(_)},{default:e.withCtx(()=>[e.createVNode(k,{danger:"","data-testid":"action-entity-delete","has-divider":"",onClick:()=>o.config.consumerId?F(_):te(_)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.config.consumerId?e.unref(l)("consumer_groups.actions.exit"):e.unref(l)("consumer_groups.actions.delete")),1)]),_:2},1032,["onClick"])]),_:2},1032,["auth-function"])]),_:1},8,["cache-identifier","disable-pagination","disable-sorting","empty-state-options","error-message","fetcher","fetcher-cache-key","preferences-storage-key","query","table-headers"]),e.createVNode(e.unref(f.EntityDeleteModal),{"action-pending":h.value,"data-testid":"delete-consumer-group-modal",description:e.unref(l)("consumer_groups.delete.description"),"entity-name":y.value&&(y.value.name||y.value.id),"entity-type":e.unref(f.EntityTypes).ConsumerGroup,error:G.value,title:e.unref(l)("consumer_groups.delete.title"),visible:d.value,onCancel:ie,onProceed:ae},null,8,["action-pending","description","entity-name","entity-type","error","title","visible"]),o.config.consumerId?(e.openBlock(),e.createBlock(we,{key:0,config:o.config,"data-testid":"add-to-group-modal",visible:W.value,"onAdd:partialSuccess":p[3]||(p[3]=_=>a(_,!0)),"onAdd:success":p[4]||(p[4]=_=>a(_)),onCancel:t},null,8,["config","visible"])):e.createCommentVNode("",!0),o.config.consumerId&&i.value?(e.openBlock(),e.createBlock(De,{key:1,"action-button-appearance":"danger","data-testid":"exit-group-modal",title:e.unref(l)("consumer_groups.consumers.exit.title"),visible:u.value,onCancel:w,onProceed:Te},{default:e.withCtx(()=>[e.createVNode(e.unref(g),{class:"exit-modal-message",keypath:o.config.consumerUsername?"consumer_groups.consumers.exit.confirmation":"consumer_groups.consumers.exit.confirmationNoUsername",tag:"p"},e.createSlots({consumerGroup:e.withCtx(()=>[e.createElementVNode("strong",null,e.toDisplayString(i.value.name||i.value.id),1)]),_:2},[o.config.consumerUsername?{name:"consumer",fn:e.withCtx(()=>[e.createElementVNode("strong",null,e.toDisplayString(o.config.consumerUsername),1)]),key:"0"}:void 0]),1032,["keypath"]),e.createElementVNode("p",null,e.toDisplayString(e.unref(l)("consumer_groups.consumers.exit.description")),1)]),_:1},8,["title","visible"])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-200ea83e"]]),Ve={class:"kong-ui-entities-consumer-group-form"},Ee={class:"select-item-container"},Ne={class:"select-item-label"},$e={key:0,class:"select-item-description"},Be=ce(e.defineComponent({__name:"ConsumerGroupForm",props:{config:{type:Object,required:!0,validator:o=>!(!o||!["konnect","kongManager"].includes(o==null?void 0:o.app)||(o==null?void 0:o.app)==="konnect"&&!(o!=null&&o.controlPlaneId)||(o==null?void 0:o.app)==="kongManager"&&typeof(o==null?void 0:o.workspace)!="string"||!(o!=null&&o.cancelRoute))},consumerGroupId:{type:String,required:!1,default:""}},emits:["update","error","loading"],setup(o,{emit:S}){var ae,W,re;const c=o,r=S,{i18n:{t:g}}=se.useI18n(),l=de.useRouter(),s=e.reactive({fields:{name:"",tags:"",consumers:[]},errorMessage:"",readonly:!1}),I=e.reactive({name:"",tags:"",consumers:[]}),{debouncedQueryChange:z,loading:A,error:X,loadItems:Y,results:O}=f.useDebouncedFilter(c.config,(W=U.form[(ae=c.config)==null?void 0:ae.app])==null?void 0:W.consumersList,"",{fetchedItemsKey:"data",searchKeys:["username","custom_id","id"]}),{axiosInstance:V}=f.useAxios((re=c.config)==null?void 0:re.axiosRequestConfig),{getMessageFromError:Z}=f.useErrors(),E=f.useValidators(),L=e.computed(()=>O.value.map(t=>({label:t.username||t.custom_id,value:t.id,selected:s.fields.consumers.includes(t.id),data:t}))),Q=e.computed(()=>{var t,a;return(a=U.form[(t=c.config)==null?void 0:t.app])==null?void 0:a.edit}),v=e.computed(()=>c.consumerGroupId?f.EntityBaseFormType.Edit:f.EntityBaseFormType.Create),P=e.computed(()=>!!s.fields.name&&!J.value),B=e.computed(()=>JSON.stringify(s.fields)!==JSON.stringify(I)),x=(t,a="",b="")=>{var u,N,F,w,H,ne;let i=`${(u=c.config)==null?void 0:u.apiBaseUrl}${U.form[(N=c.config)==null?void 0:N.app][t]}`;return((F=c.config)==null?void 0:F.app)==="konnect"?i=i.replace(/{controlPlaneId}/gi,((w=c.config)==null?void 0:w.controlPlaneId)||""):((H=c.config)==null?void 0:H.app)==="kongManager"&&(i=i.replace(/\/{workspace}/gi,(ne=c.config)!=null&&ne.workspace?`/${c.config.workspace}`:"")),i=i.replace(/{id}/gi,a||c.consumerGroupId),(t==="addConsumer"||t==="removeConsumer")&&(i=i.replace(/{consumerId}/gi,b)),i},ee=()=>{var t;l.push(((t=c.config)==null?void 0:t.cancelRoute)||{name:"consumer-group-list"})},R=t=>{r("error",t)},oe=t=>{r("loading",t)},M=async t=>{var b,i,u,N,F;s.fields.name=((b=t==null?void 0:t.item)==null?void 0:b.name)||((i=t==null?void 0:t.consumer_group)==null?void 0:i.name)||(t==null?void 0:t.name)||"";const a=((u=t==null?void 0:t.item)==null?void 0:u.tags)||(t==null?void 0:t.consumer_group.tags)||(t==null?void 0:t.tags)||[];if(s.fields.tags=(a==null?void 0:a.join(", "))||"","consumers"in t)s.fields.consumers=((N=t==null?void 0:t.consumers)==null?void 0:N.map(w=>w.id))||[];else try{const{data:w}=await V.get(x("getConsumers"));s.fields.consumers="consumers"in w?(F=w==null?void 0:w.consumers)==null?void 0:F.map(H=>H.id):[]}catch(w){d(w)}Object.assign(I,s.fields)},J=e.computed(()=>E.utf8Name(s.fields.name)),K=e.computed(()=>{var t,a;return{name:s.fields.name,tags:(a=(t=s.fields.tags.split(","))==null?void 0:t.map(b=>String(b||"").trim()))==null?void 0:a.filter(b=>b!=="")}}),m=async(t,a="")=>await V.post(x("addConsumer",a,t),{consumer:t}),y=async(t,a="")=>await V.delete(x("removeConsumer",a,t)),d=t=>{s.errorMessage=Z(t),r("error",t)},h=(t=c.consumerGroupId)=>{Object.assign(I,s.fields),r("update",{...s.fields,id:t})},G=(t,a,b=c.consumerGroupId)=>{const i=t==null?void 0:t.find(u=>u.status!=="fulfilled");i?d({code:i.status,message:a}):h(b)},j=async()=>{let t="";try{const{data:a}=await V.post(x("create"),K.value);t="item"in a?a.item.id:a.id}catch(a){d(a)}if(s.fields.consumers.length>0&&t)try{const a=s.fields.consumers.map(i=>m(i,t)),b=await Promise.allSettled(a);G(b,g("consumer_groups.errors.add_consumer"),t)}catch(a){d(a)}else s.fields.consumers.length===0&&t&&h(t)},te=async()=>{var b;try{((b=c.config)==null?void 0:b.app)==="konnect"?await V.put(x("edit"),K.value):await V.patch(x("edit"),K.value)}catch(i){d(i)}const t=s.fields.consumers.filter(i=>!I.consumers.includes(i)),a=I.consumers.filter(i=>!s.fields.consumers.includes(i));if(a.length===0&&t.length===0)h();else{if(a.length>0)try{const i=a.map(N=>y(N)),u=await Promise.allSettled(i);G(u,g("consumer_groups.errors.remove_consumer"))}catch(i){d(i)}if(t.length>0)try{const i=t.map(N=>m(N)),u=await Promise.allSettled(i);G(u,g("consumer_groups.errors.add_consumer"))}catch(i){d(i)}}},ie=async()=>{try{s.readonly=!0,v.value===f.EntityBaseFormType.Create?await j():await te()}finally{s.readonly=!1}};return e.onBeforeMount(async()=>{await Y()}),(t,a)=>{const b=e.resolveComponent("KInput"),i=e.resolveComponent("KMultiselect");return e.openBlock(),e.createElementBlock("div",Ve,[e.createVNode(e.unref(f.EntityBaseForm),{"can-submit":P.value&&B.value,config:o.config,"edit-id":o.consumerGroupId,"entity-type":e.unref(f.SupportedEntityType).ConsumerGroup,"error-message":s.errorMessage||e.unref(X)||J.value,"fetch-url":Q.value,"form-fields":K.value,"is-readonly":s.readonly,onCancel:ee,"onFetch:error":a[3]||(a[3]=u=>R(u)),"onFetch:success":M,onLoading:a[4]||(a[4]=u=>oe(u)),onSubmit:ie},{default:e.withCtx(()=>[e.createVNode(e.unref(f.EntityFormSection),{description:e.unref(g)("consumer_groups.form.general_info.description"),title:e.unref(g)("consumer_groups.form.general_info.title")},{default:e.withCtx(()=>[e.createVNode(b,{modelValue:s.fields.name,"onUpdate:modelValue":a[0]||(a[0]=u=>s.fields.name=u),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"consumer-group-form-name",label:e.unref(g)("consumer_groups.form.fields.name.label"),placeholder:e.unref(g)("consumer_groups.form.fields.name.placeholder"),required:"",type:"text"},null,8,["modelValue","label","placeholder"]),e.createVNode(b,{modelValue:s.fields.tags,"onUpdate:modelValue":a[1]||(a[1]=u=>s.fields.tags=u),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"consumer-group-form-tags",help:e.unref(g)("consumer_groups.form.fields.tags.help"),label:e.unref(g)("consumer_groups.form.fields.tags.label"),"label-attributes":{info:e.unref(g)("consumer_groups.form.fields.tags.tooltip"),tooltipAttributes:{maxWidth:"400"}},placeholder:e.unref(g)("consumer_groups.form.fields.tags.placeholder"),type:"text"},null,8,["modelValue","help","label","label-attributes","placeholder"])]),_:1},8,["description","title"]),e.createVNode(e.unref(f.EntityFormSection),{description:e.unref(g)("consumer_groups.form.consumers.description"),"has-divider":"",title:e.unref(g)("consumer_groups.form.consumers.title")},{default:e.withCtx(()=>[e.createVNode(i,{modelValue:s.fields.consumers,"onUpdate:modelValue":a[2]||(a[2]=u=>s.fields.consumers=u),appearance:"select",autosuggest:"",items:L.value,label:e.unref(g)("consumer_groups.form.fields.consumers.label"),loading:e.unref(A),placeholder:e.unref(g)("consumer_groups.form.fields.consumers.placeholder"),width:"auto",onQueryChange:e.unref(z)},{"item-template":e.withCtx(({item:u})=>{var N,F,w;return[e.createElementVNode("div",Ee,[e.createElementVNode("div",Ne,e.toDisplayString(u.label),1),(N=u==null?void 0:u.data)!=null&&N.username&&((F=u==null?void 0:u.data)!=null&&F.custom_id)?(e.openBlock(),e.createElementBlock("div",$e,e.toDisplayString((w=u==null?void 0:u.data)==null?void 0:w.custom_id),1)):e.createCommentVNode("",!0)])]}),_:1},8,["modelValue","items","label","loading","placeholder","onQueryChange"])]),_:1},8,["description","title"])]),_:1},8,["can-submit","config","edit-id","entity-type","error-message","fetch-url","form-fields","is-readonly"])])}}}),[["__scopeId","data-v-dfa56d62"]]),Me={class:"kong-ui-consumer-group-entity-config-card"},Ge=e.defineComponent({__name:"ConsumerGroupConfigCard",props:{config:{type:Object,required:!0,validator:o=>!(!o||!["konnect","kongManager"].includes(o==null?void 0:o.app)||o.app==="konnect"&&!o.controlPlaneId||o.app==="kongManager"&&typeof o.workspace!="string"||!o.entityId)},configCardDoc:{type:String,default:"",required:!1},hideTitle:{type:Boolean,default:!1}},emits:["loading","fetch:error","fetch:success"],setup(o){const S=o,{i18n:{t:c}}=se.useI18n(),r=e.computed(()=>U.form[S.config.app].edit),g=e.ref({id:{},name:{},created_at:{},updated_at:{},tags:{tooltip:c("consumer_groups.form.fields.tags.tooltip")}});return(l,s)=>(e.openBlock(),e.createElementBlock("div",Me,[e.createVNode(e.unref(f.EntityBaseConfigCard),{config:o.config,"config-card-doc":o.configCardDoc,"config-schema":g.value,"data-key":"consumer_group","entity-type":e.unref(f.SupportedEntityType).ConsumerGroup,"fetch-url":r.value,"hide-title":o.hideTitle,"onFetch:error":s[0]||(s[0]=I=>l.$emit("fetch:error",I)),"onFetch:success":s[1]||(s[1]=I=>l.$emit("fetch:success",I)),onLoading:s[2]||(s[2]=I=>l.$emit("loading",I))},null,8,["config","config-card-doc","config-schema","entity-type","fetch-url","hide-title"])]))}});$.ConsumerGroupConfigCard=Ge,$.ConsumerGroupForm=Be,$.ConsumerGroupList=xe,Object.defineProperty($,Symbol.toStringTag,{value:"Module"})});
1
+ (function($,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("@kong/icons"),require("@kong-ui-public/i18n"),require("@kong-ui-public/entities-shared")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","@kong/icons","@kong-ui-public/i18n","@kong-ui-public/entities-shared"],e):($=typeof globalThis<"u"?globalThis:$||self,e($["kong-ui-public-entities-consumer-groups"]={},$.Vue,$.VueRouter,$.KongIcons,$["kong-ui-public-i18n"],$["kong-ui-public-entities-shared"]))})(this,function($,e,de,fe,me,f){"use strict";const ge={consumer_groups:{list:{table_headers:{name:"Name",consumers_count:"Consumers",tags:"Tags",id:"ID"},empty_state:{title:"Configure a New Consumer Group",description:"Use consumer groups to manage custom rate limiting configuration for subsets of consumers.",title_for_consumer:"Add to a Consumer Group"},toolbar_actions:{new_consumer_group:"New Consumer Group"}},title:"Consumer Groups",search:{placeholder:"Filter by exact name or ID"},actions:{add_to_group:"Add to Consumer Group",create:"New Consumer Group",copy_id:"Copy ID",copy_json:"Copy JSON",edit:"Edit",delete:"Delete",exit:"Exit",view:"View Details"},delete:{title:"Delete a Consumer Group",description:"Deleting this group will remove all its plugins and rate limit configuration. This action cannot be reversed."},consumers:{add:{title:"Add To Consumer Groups",ctaText:"Add this consumer to consumer groups",consumer_groups_label:"Consumer Groups",consumer_group_placeholder:"Add to consumer groups",footer:"Search by exact name or ID to find consumer groups not included in the list"},exit:{title:"Exit from a Consumer Group",confirmation:"Are you sure you want to remove consumer {consumer} from consumer group {consumerGroup}?",confirmationNoUsername:"Are you sure you want this consumer to exit from consumer group {consumerGroup}?",description:"Exiting from the group could change the rate limit policy applied to this consumer."}},errors:{general:"Consumer Groups could not be retrieved",delete:"The consumer group could not be deleted at this time.",copy:"Failed to copy to clipboard",add:"The consumer could not be added to some groups at this time.",already_added:"The consumer is already in this consumer group",add_consumer:"An unexpected error occurred while adding consumers. Please try again.",remove_consumer:"An unexpected error occurred while removing consumers. Please try again."},copy:{success:"Copied {val} to clipboard",success_brief:"Successfully copied to clipboard"},form:{general_info:{title:"General Information",description:"General information will help identify and manage this consumer group."},consumers:{title:"Consumers",description:"Add or remove consumers from this group"},fields:{name:{label:"Name",placeholder:"Enter a unique name for this consumer group "},tags:{label:"Tags",placeholder:"Enter a list of tags separated by comma",help:"e.g. tag1, tag2, tag3",tooltip:"An optional set of strings for grouping and filtering, separated by commas."},consumers:{label:"Consumers",placeholder:"Select one or more consumers"}}}}};function ye(){const o=me.createI18n("en-us",ge);return{i18n:o,i18nT:me.i18nTComponent(o)}}const se={useI18n:ye},T="/v2/control-planes/{controlPlaneId}/core-entities",D="/{workspace}",U={list:{konnect:{all:`${T}/consumer_groups`,forModal:`${T}/consumer_groups`,forConsumer:`${T}/consumers/{consumerId}/consumer_groups`,oneForConsumer:`${T}/consumers/{consumerId}/consumer_groups/{consumerGroupId}`},kongManager:{all:`${D}/consumer_groups?counter=true`,forModal:`${D}/consumer_groups`,forConsumer:`${D}/consumers/{consumerId}/consumer_groups`,oneForConsumer:`${D}/consumers/{consumerId}/consumer_groups/{consumerGroupId}`}},form:{konnect:{consumersList:`${T}/consumers`,create:`${T}/consumer_groups`,edit:`${T}/consumer_groups/{id}`,addConsumer:`${T}/consumer_groups/{id}/consumers`,removeConsumer:`${T}/consumer_groups/{id}/consumers/{consumerId}`,getConsumers:`${T}/consumer_groups/{id}/consumers`},kongManager:{consumersList:`${D}/consumers`,create:`${D}/consumer_groups`,edit:`${D}/consumer_groups/{id}`,addConsumer:`${D}/consumer_groups/{id}/consumers`,removeConsumer:`${D}/consumer_groups/{id}/consumers/{consumerId}`,getConsumers:`${D}/consumer_groups/{id}/consumers`}}},he={class:"add-to-group-form-container"},_e={class:"add-to-group-cta-text"},Ce={key:0,class:"kong-ui-entity-add-to-groups-error"},be={key:0},ke=e.defineComponent({__name:"AddToGroupModal",props:{config:{type:Object,required:!0,validator:o=>!(!o||!["konnect","kongManager"].includes(o==null?void 0:o.app)||!o.consumerId)},visible:{type:Boolean,required:!0,default:!1}},emits:["cancel","add:success","add:partial-success","error"],setup(o,{emit:S}){var K;const{i18n:{t:c}}=se.useI18n(),r=o,g=S,{axiosInstance:l}=f.useAxios((K=r.config)==null?void 0:K.axiosRequestConfig),s=e.ref([]),{debouncedQueryChange:I,loading:z,allRecords:A,error:X,loadItems:Y,results:O}=f.useDebouncedFilter(r.config,U.list[r.config.app].forModal,"",{fetchedItemsKey:"data",searchKeys:["name","id"]}),V=e.computed(()=>X.value?c("consumer_groups.errors.general"):""),Z=e.ref(0),E=e.computed(()=>A.value===void 0),L=e.computed(()=>O.value.map(m=>({label:m.name,value:m.id,selected:s.value.includes(m.id),data:m}))),Q=m=>{var d;const y=E.value?O.value.find(h=>h.id===m):(d=A.value)==null?void 0:d.find(h=>h.id===m);return y?y.name:m},v=()=>{x.value="",P.value=[],M.value=[],g("cancel")},P=e.ref([]),B=e.ref(!1),x=e.ref(""),ee=async()=>{if(!s.value.length){x.value="",M.value=[],g("cancel");return}B.value=!0,x.value="",P.value=[],M.value=[];try{const m=s.value.map(h=>oe(h)),y=await Promise.allSettled(m);let d=!0;y.forEach(h=>{h.status!=="fulfilled"&&(d=!1)}),d?(P.value=[],M.value=[],g("add:success",s.value),s.value=[]):(P.value.length&&g("add:partial-success",P.value),s.value=[],J(y))}catch{x.value=c("consumer_groups.errors.add"),g("error",x.value)}finally{B.value=!1}},R=e.computed(()=>{var y,d,h,G;let m=`${r.config.apiBaseUrl}${U.list[r.config.app].forConsumer}`;return r.config.app==="konnect"?m=m.replace(/{controlPlaneId}/gi,((y=r.config)==null?void 0:y.controlPlaneId)||"").replace(/{consumerId}/gi,((d=r.config)==null?void 0:d.consumerId)||""):r.config.app==="kongManager"&&(m=m.replace(/\/{workspace}/gi,(h=r.config)!=null&&h.workspace?`/${r.config.workspace}`:"").replace(/{consumerId}/gi,((G=r.config)==null?void 0:G.consumerId)||"")),m}),oe=async m=>{const y={group:m};try{const d=await l.post(R.value,y);return P.value.push(m),d}catch(d){let h=`${Q(m)} - ${d.message}`;return d.response.status===409&&(h=`${Q(m)} - ${c("consumer_groups.errors.already_added")}`),Promise.reject(Error(h))}},M=e.ref([]),J=m=>{M.value=m.map(y=>{var d;return(d=y.reason)==null?void 0:d.message}).filter(Boolean)};return e.watch(L,()=>{Z.value++},{immediate:!0,deep:!0}),e.watch(()=>r.visible,()=>{r.visible&&Y()},{immediate:!0}),(m,y)=>{const d=e.resolveComponent("KMultiselect"),h=e.resolveComponent("KAlert"),G=e.resolveComponent("KPrompt");return e.openBlock(),e.createBlock(G,{"action-button-disabled":B.value,class:"kong-ui-entities-add-to-groups-modal","data-testid":"add-to-group-modal",title:e.unref(c)("consumer_groups.consumers.add.title"),visible:o.visible,onCancel:v,onProceed:ee},{default:e.withCtx(()=>[e.createElementVNode("div",he,[e.createElementVNode("p",_e,e.toDisplayString(e.unref(c)("consumer_groups.consumers.add.ctaText")),1),e.createVNode(d,{modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=j=>s.value=j),autosuggest:"","data-testid":"add-to-groups-multiselect","dropdown-footer-text":E.value?e.unref(c)("consumer_groups.consumers.add.footer"):void 0,items:L.value,label:e.unref(c)("consumer_groups.consumers.add.consumer_groups_label"),loading:e.unref(z),placeholder:e.unref(c)("consumer_groups.consumers.add.consumer_group_placeholder"),readonly:B.value,required:"",width:"100%",onQueryChange:e.unref(I)},null,8,["modelValue","dropdown-footer-text","items","label","loading","placeholder","readonly","onQueryChange"]),x.value||V.value||M.value.length?(e.openBlock(),e.createElementBlock("div",Ce,[e.createVNode(h,{appearance:"danger"},{default:e.withCtx(()=>[e.createElementVNode("p",null,e.toDisplayString(e.unref(c)("consumer_groups.errors.add")),1),M.value.length?(e.openBlock(),e.createElementBlock("ul",be,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,(j,te)=>(e.openBlock(),e.createElementBlock("li",{key:te},e.toDisplayString(j),1))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(x.value||V.value),1)]),_:1})])):e.createCommentVNode("",!0)])]),_:1},8,["action-button-disabled","title","visible"])}}}),ce=(o,S)=>{const c=o.__vccOpts||o;for(const[r,g]of S)c[r]=g;return c},we=ce(ke,[["__scopeId","data-v-4260ce03"]]),Ie={class:"kong-ui-entities-consumer-groups-list"},xe=ce(e.defineComponent({__name:"ConsumerGroupList",props:{config:{type:Object,required:!0,validator:o=>!(!o||!["konnect","kongManager"].includes(o==null?void 0:o.app)||!o.createRoute||!o.getViewRoute||!o.getEditRoute||o.app==="kongManager"&&!o.isExactMatch&&!o.filterSchema)},cacheIdentifier:{type:String,default:""},canCreate:{type:Function,required:!1,default:async()=>!0},canDelete:{type:Function,required:!1,default:async()=>!0},canEdit:{type:Function,required:!1,default:async()=>!0},canRetrieve:{type:Function,required:!1,default:async()=>!0},useActionOutside:{type:Boolean,default:!1}},emits:["error","copy:success","copy:error","delete:success","add:success","remove:success"],setup(o,{emit:S}){var pe;const c=S,r=o,{i18nT:g,i18n:{t:l}}=se.useI18n(),s=de.useRouter(),{axiosInstance:I}=f.useAxios((pe=r.config)==null?void 0:pe.axiosRequestConfig),z=e.computed(()=>r.config.app!=="kongManager"||!!r.config.disableSorting),A={name:{label:l("consumer_groups.list.table_headers.name"),searchable:!0,sortable:!0,hidable:!1}};r.config.app==="kongManager"&&(A.consumers_count={label:l("consumer_groups.list.table_headers.consumers_count"),searchable:!1,sortable:!1}),A.tags={label:l("consumer_groups.list.table_headers.tags"),sortable:!1};const X=A,Y=n=>({"data-testid":n.username??n.custom_id??n.id}),O=e.computed(()=>{var p,C,k,q;let n=`${r.config.apiBaseUrl}${U.list[r.config.app][E.value?"forConsumer":"all"]}`;return r.config.app==="konnect"?n=n.replace(/{controlPlaneId}/gi,((p=r.config)==null?void 0:p.controlPlaneId)||"").replace(/{consumerId}/gi,((C=r.config)==null?void 0:C.consumerId)||""):r.config.app==="kongManager"&&(n=n.replace(/\/{workspace}/gi,(k=r.config)!=null&&k.workspace?`/${r.config.workspace}`:"").replace(/{consumerId}/gi,((q=r.config)==null?void 0:q.consumerId)||"")),n}),V=e.ref(""),Z=e.computed(()=>{const n=r.config.app==="konnect"||r.config.isExactMatch;return n?{isExactMatch:n,fields:{username:A.name,id:{label:l("consumer_groups.list.table_headers.id")}},placeholder:l("consumer_groups.search.placeholder")}:{isExactMatch:n,fields:{name:A.name},schema:r.config.filterSchema}}),E=e.computed(()=>!!r.config.consumerId),L=e.computed(()=>E.value?"kong-ui-entities-consumer-groups-list-in-consumer-page":"kong-ui-entities-consumer-groups-list"),Q=e.computed(()=>r.config.app==="konnect"&&V.value?"consumer_group":E.value&&!r.config.paginatedEndpoint?"consumer_groups":void 0),{fetcher:v,fetcherState:P,fetcherCacheKey:B}=f.useFetcher({...r.config,cacheIdentifier:r.cacheIdentifier},O.value,Q),x=()=>{V.value=""},ee=()=>{B.value++},R=e.ref(null),oe=(n,p)=>{const C=n.id;if(!p(C)){c("copy:error",{entity:n,field:"id",message:l("consumer_groups.errors.copy")});return}c("copy:success",{entity:n,field:"id",message:l("consumer_groups.copy.success",{val:C})})},M=(n,p)=>{const C=JSON.stringify(n);if(!p(C)){c("copy:error",{entity:n,message:l("consumer_groups.errors.copy")});return}c("copy:success",{entity:n,message:l("consumer_groups.copy.success_brief")})},J=async n=>{var C;await((C=r.canRetrieve)==null?void 0:C.call(r,n))&&s.push(r.config.getViewRoute(n.id))},K=n=>({label:l("consumer_groups.actions.view"),to:r.config.getViewRoute(n)}),m=n=>({label:l("consumer_groups.actions.edit"),to:r.config.getEditRoute(n)}),y=e.ref(void 0),d=e.ref(!1),h=e.ref(!1),G=e.ref(""),j=f.useDeleteUrlBuilder(r.config,O.value),te=n=>{y.value=n,d.value=!0},ie=()=>{d.value=!1},ae=async()=>{var n,p,C;if((n=y.value)!=null&&n.id){h.value=!0;try{await I.delete(j(y.value.id)),h.value=!1,d.value=!1,B.value++,c("delete:success",y.value)}catch(k){G.value=((C=(p=k.response)==null?void 0:p.data)==null?void 0:C.message)||k.message||l("consumer_groups.errors.delete"),c("error",k)}finally{h.value=!1}}},W=e.ref(!1),re=()=>{W.value=!0},t=()=>{W.value=!1},a=(n,p)=>{p||t(),B.value++,c("add:success",n)},b=()=>{E.value&&re()},i=e.ref(void 0),u=e.ref(!1),N=e.ref(""),F=n=>{i.value=n,u.value=!0},w=()=>{u.value=!1,i.value=void 0},H=e.computed(()=>{var p,C,k,q;let n=`${r.config.apiBaseUrl}${U.list[r.config.app].oneForConsumer}`;return r.config.app==="konnect"?n=n.replace(/{controlPlaneId}/gi,((p=r.config)==null?void 0:p.controlPlaneId)||"").replace(/{consumerId}/gi,((C=r.config)==null?void 0:C.consumerId)||""):r.config.app==="kongManager"&&(n=n.replace(/\/{workspace}/gi,(k=r.config)!=null&&k.workspace?`/${r.config.workspace}`:"").replace(/{consumerId}/gi,((q=r.config)==null?void 0:q.consumerId)||"")),n}),ne=e.ref(!1),Te=async()=>{if(i.value){ne.value=!0;try{const n=H.value.replace(/{consumerGroupId}/gi,i.value.id);await I.delete(n),c("remove:success",i.value),w(),B.value++}catch(n){N.value=n.message||l("consumer_groups.errors.delete"),c("error",n)}finally{ne.value=!1}}};e.watch(P,n=>{var p,C,k;if(n.status===f.FetcherStatus.Error){R.value={title:l("consumer_groups.errors.general")},(k=(C=(p=n.error)==null?void 0:p.response)==null?void 0:C.data)!=null&&k.message&&(R.value.message=n.error.response.data.message),c("error",n.error);return}R.value=null});const le=e.ref({ctaPath:E.value?void 0:r.config.createRoute,ctaText:void 0,message:`${l("consumer_groups.list.empty_state.description")}${r.config.additionMessageForEmptyState?` ${r.config.additionMessageForEmptyState}`:""}`,title:l("consumer_groups.title")});return e.onBeforeMount(async()=>{await r.canCreate()&&(le.value.title=E.value?l("consumer_groups.list.empty_state.title_for_consumer"):l("consumer_groups.list.empty_state.title"),le.value.ctaText=E.value?l("consumer_groups.actions.add_to_group"):l("consumer_groups.actions.create"))}),(n,p)=>{const C=e.resolveComponent("KButton"),k=e.resolveComponent("KDropdownItem"),q=e.resolveComponent("KClipboardProvider"),De=e.resolveComponent("KPrompt");return e.openBlock(),e.createElementBlock("div",Ie,[e.createVNode(e.unref(f.EntityBaseTable),{"cache-identifier":o.cacheIdentifier,"disable-pagination":E.value&&!o.config.paginatedEndpoint,"disable-sorting":z.value,"empty-state-options":le.value,"enable-entity-actions":"","error-message":R.value,fetcher:e.unref(v),"fetcher-cache-key":e.unref(B),"pagination-type":"offset","preferences-storage-key":L.value,query:V.value,"row-attributes":Y,"table-headers":e.unref(X),onClearSearchInput:x,"onClick:row":p[2]||(p[2]=_=>J(_)),onEmptyStateCtaClicked:b,onSort:ee},{"toolbar-filter":e.withCtx(()=>[E.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(f.EntityFilter),{key:0,modelValue:V.value,"onUpdate:modelValue":p[0]||(p[0]=_=>V.value=_),config:Z.value},null,8,["modelValue","config"]))]),"toolbar-button":e.withCtx(()=>[(e.openBlock(),e.createBlock(e.Teleport,{disabled:!o.useActionOutside,to:"#kong-ui-app-page-header-action-button"},[e.createVNode(e.unref(f.PermissionsWrapper),{"auth-function":()=>o.canCreate()},{default:e.withCtx(()=>[e.createVNode(C,{appearance:"primary","data-testid":"toolbar-add-consumer-group",size:o.useActionOutside?"medium":"large",to:o.config.consumerId?void 0:o.config.createRoute,onClick:p[1]||(p[1]=()=>o.config.consumerId?re():void 0)},{default:e.withCtx(()=>[e.createVNode(e.unref(fe.AddIcon)),e.createTextVNode(" "+e.toDisplayString(o.config.consumerId?e.unref(l)("consumer_groups.actions.add_to_group"):e.unref(l)("consumer_groups.list.toolbar_actions.new_consumer_group")),1)]),_:1},8,["size","to"])]),_:1},8,["auth-function"])],8,["disabled"]))]),name:e.withCtx(({rowValue:_})=>[e.createElementVNode("b",null,e.toDisplayString(_??"-"),1)]),consumers_count:e.withCtx(({rowValue:_})=>[e.createTextVNode(e.toDisplayString(_??"-"),1)]),tags:e.withCtx(({rowValue:_})=>[e.createVNode(e.unref(f.TableTags),{tags:_},null,8,["tags"])]),actions:e.withCtx(({row:_})=>[e.createVNode(q,null,{default:e.withCtx(({copyToClipboard:ue})=>[e.createVNode(k,{"data-testid":"action-entity-copy-id",onClick:Ae=>oe(_,ue)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(l)("consumer_groups.actions.copy_id")),1)]),_:2},1032,["onClick"])]),_:2},1024),e.createVNode(q,null,{default:e.withCtx(({copyToClipboard:ue})=>[e.createVNode(k,{"data-testid":"action-entity-copy-json",onClick:Ae=>M(_,ue)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(l)("consumer_groups.actions.copy_json")),1)]),_:2},1032,["onClick"])]),_:2},1024),e.createVNode(e.unref(f.PermissionsWrapper),{"auth-function":()=>o.canRetrieve(_)},{default:e.withCtx(()=>[e.createVNode(k,{"data-testid":"action-entity-view","has-divider":"",item:K(_.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(f.PermissionsWrapper),{"auth-function":()=>o.canEdit(_)},{default:e.withCtx(()=>[e.createVNode(k,{"data-testid":"action-entity-edit",item:m(_.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(f.PermissionsWrapper),{"auth-function":()=>o.canDelete(_)},{default:e.withCtx(()=>[e.createVNode(k,{danger:"","data-testid":"action-entity-delete","has-divider":"",onClick:()=>o.config.consumerId?F(_):te(_)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.config.consumerId?e.unref(l)("consumer_groups.actions.exit"):e.unref(l)("consumer_groups.actions.delete")),1)]),_:2},1032,["onClick"])]),_:2},1032,["auth-function"])]),_:1},8,["cache-identifier","disable-pagination","disable-sorting","empty-state-options","error-message","fetcher","fetcher-cache-key","preferences-storage-key","query","table-headers"]),e.createVNode(e.unref(f.EntityDeleteModal),{"action-pending":h.value,"data-testid":"delete-consumer-group-modal",description:e.unref(l)("consumer_groups.delete.description"),"entity-name":y.value&&(y.value.name||y.value.id),"entity-type":e.unref(f.EntityTypes).ConsumerGroup,error:G.value,title:e.unref(l)("consumer_groups.delete.title"),visible:d.value,onCancel:ie,onProceed:ae},null,8,["action-pending","description","entity-name","entity-type","error","title","visible"]),o.config.consumerId?(e.openBlock(),e.createBlock(we,{key:0,config:o.config,"data-testid":"add-to-group-modal",visible:W.value,"onAdd:partialSuccess":p[3]||(p[3]=_=>a(_,!0)),"onAdd:success":p[4]||(p[4]=_=>a(_)),onCancel:t},null,8,["config","visible"])):e.createCommentVNode("",!0),o.config.consumerId&&i.value?(e.openBlock(),e.createBlock(De,{key:1,"action-button-appearance":"danger","data-testid":"exit-group-modal",title:e.unref(l)("consumer_groups.consumers.exit.title"),visible:u.value,onCancel:w,onProceed:Te},{default:e.withCtx(()=>[e.createVNode(e.unref(g),{class:"exit-modal-message",keypath:o.config.consumerUsername?"consumer_groups.consumers.exit.confirmation":"consumer_groups.consumers.exit.confirmationNoUsername",tag:"p"},e.createSlots({consumerGroup:e.withCtx(()=>[e.createElementVNode("strong",null,e.toDisplayString(i.value.name||i.value.id),1)]),_:2},[o.config.consumerUsername?{name:"consumer",fn:e.withCtx(()=>[e.createElementVNode("strong",null,e.toDisplayString(o.config.consumerUsername),1)]),key:"0"}:void 0]),1032,["keypath"]),e.createElementVNode("p",null,e.toDisplayString(e.unref(l)("consumer_groups.consumers.exit.description")),1)]),_:1},8,["title","visible"])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-200ea83e"]]),Ve={class:"kong-ui-entities-consumer-group-form"},Ee={class:"select-item-container"},Ne={class:"select-item-label"},$e={key:0,class:"select-item-description"},Be=ce(e.defineComponent({__name:"ConsumerGroupForm",props:{config:{type:Object,required:!0,validator:o=>!(!o||!["konnect","kongManager"].includes(o==null?void 0:o.app)||(o==null?void 0:o.app)==="konnect"&&!(o!=null&&o.controlPlaneId)||(o==null?void 0:o.app)==="kongManager"&&typeof(o==null?void 0:o.workspace)!="string"||!(o!=null&&o.cancelRoute))},consumerGroupId:{type:String,required:!1,default:""}},emits:["update","error","loading"],setup(o,{emit:S}){var ae,W,re;const c=o,r=S,{i18n:{t:g}}=se.useI18n(),l=de.useRouter(),s=e.reactive({fields:{name:"",tags:"",consumers:[]},errorMessage:"",readonly:!1}),I=e.reactive({name:"",tags:"",consumers:[]}),{debouncedQueryChange:z,loading:A,error:X,loadItems:Y,results:O}=f.useDebouncedFilter(c.config,(W=U.form[(ae=c.config)==null?void 0:ae.app])==null?void 0:W.consumersList,"",{fetchedItemsKey:"data",searchKeys:["username","custom_id","id"]}),{axiosInstance:V}=f.useAxios((re=c.config)==null?void 0:re.axiosRequestConfig),{getMessageFromError:Z}=f.useErrors(),E=f.useValidators(),L=e.computed(()=>O.value.map(t=>({label:t.username||t.custom_id,value:t.id,selected:s.fields.consumers.includes(t.id),data:t}))),Q=e.computed(()=>{var t,a;return(a=U.form[(t=c.config)==null?void 0:t.app])==null?void 0:a.edit}),v=e.computed(()=>c.consumerGroupId?f.EntityBaseFormType.Edit:f.EntityBaseFormType.Create),P=e.computed(()=>!!s.fields.name&&!J.value),B=e.computed(()=>JSON.stringify(s.fields)!==JSON.stringify(I)),x=(t,a="",b="")=>{var u,N,F,w,H,ne;let i=`${(u=c.config)==null?void 0:u.apiBaseUrl}${U.form[(N=c.config)==null?void 0:N.app][t]}`;return((F=c.config)==null?void 0:F.app)==="konnect"?i=i.replace(/{controlPlaneId}/gi,((w=c.config)==null?void 0:w.controlPlaneId)||""):((H=c.config)==null?void 0:H.app)==="kongManager"&&(i=i.replace(/\/{workspace}/gi,(ne=c.config)!=null&&ne.workspace?`/${c.config.workspace}`:"")),i=i.replace(/{id}/gi,a||c.consumerGroupId),(t==="addConsumer"||t==="removeConsumer")&&(i=i.replace(/{consumerId}/gi,b)),i},ee=()=>{var t;l.push(((t=c.config)==null?void 0:t.cancelRoute)||{name:"consumer-group-list"})},R=t=>{r("error",t)},oe=t=>{r("loading",t)},M=async t=>{var b,i,u,N,F;s.fields.name=((b=t==null?void 0:t.item)==null?void 0:b.name)||((i=t==null?void 0:t.consumer_group)==null?void 0:i.name)||(t==null?void 0:t.name)||"";const a=((u=t==null?void 0:t.item)==null?void 0:u.tags)||(t==null?void 0:t.consumer_group.tags)||(t==null?void 0:t.tags)||[];if(s.fields.tags=(a==null?void 0:a.join(", "))||"","consumers"in t)s.fields.consumers=((N=t==null?void 0:t.consumers)==null?void 0:N.map(w=>w.id))||[];else try{const{data:w}=await V.get(x("getConsumers"));s.fields.consumers="consumers"in w?(F=w==null?void 0:w.consumers)==null?void 0:F.map(H=>H.id):[]}catch(w){d(w)}Object.assign(I,s.fields)},J=e.computed(()=>E.utf8Name(s.fields.name)),K=e.computed(()=>{var t,a;return{name:s.fields.name,tags:(a=(t=s.fields.tags.split(","))==null?void 0:t.map(b=>String(b||"").trim()))==null?void 0:a.filter(b=>b!=="")}}),m=async(t,a="")=>await V.post(x("addConsumer",a,t),{consumer:t}),y=async(t,a="")=>await V.delete(x("removeConsumer",a,t)),d=t=>{s.errorMessage=Z(t),r("error",t)},h=(t=c.consumerGroupId)=>{Object.assign(I,s.fields),r("update",{...s.fields,id:t})},G=(t,a,b=c.consumerGroupId)=>{const i=t==null?void 0:t.find(u=>u.status!=="fulfilled");i?d({code:i.status,message:a}):h(b)},j=async()=>{let t="";try{const{data:a}=await V.post(x("create"),K.value);t="item"in a?a.item.id:a.id}catch(a){d(a)}if(s.fields.consumers.length>0&&t)try{const a=s.fields.consumers.map(i=>m(i,t)),b=await Promise.allSettled(a);G(b,g("consumer_groups.errors.add_consumer"),t)}catch(a){d(a)}else s.fields.consumers.length===0&&t&&h(t)},te=async()=>{var b;try{((b=c.config)==null?void 0:b.app)==="konnect"?await V.put(x("edit"),K.value):await V.patch(x("edit"),K.value)}catch(i){d(i)}const t=s.fields.consumers.filter(i=>!I.consumers.includes(i)),a=I.consumers.filter(i=>!s.fields.consumers.includes(i));if(a.length===0&&t.length===0)h();else{if(a.length>0)try{const i=a.map(N=>y(N)),u=await Promise.allSettled(i);G(u,g("consumer_groups.errors.remove_consumer"))}catch(i){d(i)}if(t.length>0)try{const i=t.map(N=>m(N)),u=await Promise.allSettled(i);G(u,g("consumer_groups.errors.add_consumer"))}catch(i){d(i)}}},ie=async()=>{try{s.readonly=!0,v.value===f.EntityBaseFormType.Create?await j():await te()}finally{s.readonly=!1}};return e.onBeforeMount(async()=>{await Y()}),(t,a)=>{const b=e.resolveComponent("KInput"),i=e.resolveComponent("KMultiselect");return e.openBlock(),e.createElementBlock("div",Ve,[e.createVNode(e.unref(f.EntityBaseForm),{"can-submit":P.value&&B.value,config:o.config,"edit-id":o.consumerGroupId,"entity-type":e.unref(f.SupportedEntityType).ConsumerGroup,"error-message":s.errorMessage||e.unref(X)||J.value,"fetch-url":Q.value,"form-fields":K.value,"is-readonly":s.readonly,onCancel:ee,"onFetch:error":a[3]||(a[3]=u=>R(u)),"onFetch:success":M,onLoading:a[4]||(a[4]=u=>oe(u)),onSubmit:ie},{default:e.withCtx(()=>[e.createVNode(e.unref(f.EntityFormSection),{description:e.unref(g)("consumer_groups.form.general_info.description"),title:e.unref(g)("consumer_groups.form.general_info.title")},{default:e.withCtx(()=>[e.createVNode(b,{modelValue:s.fields.name,"onUpdate:modelValue":a[0]||(a[0]=u=>s.fields.name=u),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"consumer-group-form-name",label:e.unref(g)("consumer_groups.form.fields.name.label"),placeholder:e.unref(g)("consumer_groups.form.fields.name.placeholder"),required:"",type:"text"},null,8,["modelValue","label","placeholder"]),e.createVNode(b,{modelValue:s.fields.tags,"onUpdate:modelValue":a[1]||(a[1]=u=>s.fields.tags=u),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"consumer-group-form-tags",help:e.unref(g)("consumer_groups.form.fields.tags.help"),label:e.unref(g)("consumer_groups.form.fields.tags.label"),"label-attributes":{info:e.unref(g)("consumer_groups.form.fields.tags.tooltip"),tooltipAttributes:{maxWidth:"400"}},placeholder:e.unref(g)("consumer_groups.form.fields.tags.placeholder"),type:"text"},null,8,["modelValue","help","label","label-attributes","placeholder"])]),_:1},8,["description","title"]),e.createVNode(e.unref(f.EntityFormSection),{description:e.unref(g)("consumer_groups.form.consumers.description"),"has-divider":"",title:e.unref(g)("consumer_groups.form.consumers.title")},{default:e.withCtx(()=>[e.createVNode(i,{modelValue:s.fields.consumers,"onUpdate:modelValue":a[2]||(a[2]=u=>s.fields.consumers=u),appearance:"select",autosuggest:"",items:L.value,label:e.unref(g)("consumer_groups.form.fields.consumers.label"),loading:e.unref(A),placeholder:e.unref(g)("consumer_groups.form.fields.consumers.placeholder"),width:"auto",onQueryChange:e.unref(z)},{"item-template":e.withCtx(({item:u})=>{var N,F,w;return[e.createElementVNode("div",Ee,[e.createElementVNode("div",Ne,e.toDisplayString(u.label),1),(N=u==null?void 0:u.data)!=null&&N.username&&((F=u==null?void 0:u.data)!=null&&F.custom_id)?(e.openBlock(),e.createElementBlock("div",$e,e.toDisplayString((w=u==null?void 0:u.data)==null?void 0:w.custom_id),1)):e.createCommentVNode("",!0)])]}),_:1},8,["modelValue","items","label","loading","placeholder","onQueryChange"])]),_:1},8,["description","title"])]),_:1},8,["can-submit","config","edit-id","entity-type","error-message","fetch-url","form-fields","is-readonly"])])}}}),[["__scopeId","data-v-dfa56d62"]]),Me={class:"kong-ui-consumer-group-entity-config-card"},Ge=e.defineComponent({__name:"ConsumerGroupConfigCard",props:{config:{type:Object,required:!0,validator:o=>!(!o||!["konnect","kongManager"].includes(o==null?void 0:o.app)||o.app==="konnect"&&!o.controlPlaneId||o.app==="kongManager"&&typeof o.workspace!="string"||!o.entityId)},configCardDoc:{type:String,default:"",required:!1},hideTitle:{type:Boolean,default:!1}},emits:["loading","fetch:error","fetch:success"],setup(o){const S=o,{i18n:{t:c}}=se.useI18n(),r=e.computed(()=>U.form[S.config.app].edit),g=e.ref({id:{},name:{},created_at:{},updated_at:{},tags:{tooltip:c("consumer_groups.form.fields.tags.tooltip")}});return(l,s)=>(e.openBlock(),e.createElementBlock("div",Me,[e.createVNode(e.unref(f.EntityBaseConfigCard),{config:o.config,"config-card-doc":o.configCardDoc,"config-schema":g.value,"data-key":"consumer_group","entity-type":e.unref(f.SupportedEntityType).ConsumerGroup,"fetch-url":r.value,"hide-title":o.hideTitle,"onFetch:error":s[0]||(s[0]=I=>l.$emit("fetch:error",I)),"onFetch:success":s[1]||(s[1]=I=>l.$emit("fetch:success",I)),onLoading:s[2]||(s[2]=I=>l.$emit("loading",I))},null,8,["config","config-card-doc","config-schema","entity-type","fetch-url","hide-title"])]))}});$.ConsumerGroupConfigCard=Ge,$.ConsumerGroupForm=Be,$.ConsumerGroupList=xe,Object.defineProperty($,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kong-ui-public/entities-consumer-groups",
3
- "version": "3.5.66",
3
+ "version": "3.5.67",
4
4
  "type": "module",
5
5
  "main": "./dist/entities-consumer-groups.umd.js",
6
6
  "module": "./dist/entities-consumer-groups.es.js",
@@ -36,8 +36,8 @@
36
36
  "axios": "^1.7.7",
37
37
  "vue": "^3.5.12",
38
38
  "vue-router": "^4.4.5",
39
- "@kong-ui-public/i18n": "^2.2.10",
40
- "@kong-ui-public/entities-shared": "^3.14.2"
39
+ "@kong-ui-public/entities-shared": "^3.14.2",
40
+ "@kong-ui-public/i18n": "^2.2.10"
41
41
  },
42
42
  "repository": {
43
43
  "type": "git",