aboutsummaryrefslogtreecommitdiffstats
path: root/resources/lib/codex/modules
diff options
context:
space:
mode:
authorRoan Kattouw <roan.kattouw@gmail.com>2024-08-20 17:03:34 -0700
committerRoan Kattouw <roan.kattouw@gmail.com>2024-08-20 17:10:30 -0700
commit01f56187576b159204378f685b4a28fa86b3e618 (patch)
tree4e11c77282558e3781652c1ab6a56d8b541a554c /resources/lib/codex/modules
parent84a0d84e8171b6bea023e2360dabd6b55b5a2398 (diff)
downloadmediawikicore-01f56187576b159204378f685b4a28fa86b3e618.tar.gz
mediawikicore-01f56187576b159204378f685b4a28fa86b3e618.zip
Update Codex from v1.11.0 to v1.11.1
Bug: T314446 Bug: T365178 Bug: T366326 Bug: T370447 Bug: T370689 Bug: T371330 Bug: T371529 Bug: T372735 Bug: T372796 Change-Id: I904e19f3d58b4c1ec6c12c91992e81d77e463034
Diffstat (limited to 'resources/lib/codex/modules')
-rw-r--r--resources/lib/codex/modules/CdxButtonGroup.cjs2
-rw-r--r--resources/lib/codex/modules/CdxCheckbox.cjs2
-rw-r--r--resources/lib/codex/modules/CdxChipInput.cjs2
-rw-r--r--resources/lib/codex/modules/CdxRadio.cjs2
-rw-r--r--resources/lib/codex/modules/CdxTable-rtl.css2
-rw-r--r--resources/lib/codex/modules/CdxTable.css2
-rw-r--r--resources/lib/codex/modules/CdxToggleButtonGroup.cjs2
-rw-r--r--resources/lib/codex/modules/buttonHelpers.js1
-rw-r--r--resources/lib/codex/modules/manifest-rtl.json15
-rw-r--r--resources/lib/codex/modules/manifest.json15
-rw-r--r--resources/lib/codex/modules/useButtonGroupKeyboardNav.js1
11 files changed, 26 insertions, 20 deletions
diff --git a/resources/lib/codex/modules/CdxButtonGroup.cjs b/resources/lib/codex/modules/CdxButtonGroup.cjs
index df7ff5981bd8..03dc38d3f159 100644
--- a/resources/lib/codex/modules/CdxButtonGroup.cjs
+++ b/resources/lib/codex/modules/CdxButtonGroup.cjs
@@ -1 +1 @@
-"use strict";const e=require("vue"),c=require("./buttonHelpers.js"),l=require("./CdxButton.cjs"),a=require("./Icon.js"),s=require("./_plugin-vue_export-helper.js"),i=e.defineComponent({name:"CdxButtonGroup",components:{CdxButton:l,CdxIcon:a.CdxIcon},props:{buttons:{type:Array,required:!0,validator:o=>Array.isArray(o)&&o.length>=1},disabled:{type:Boolean,default:!1}},emits:["click"],setup(){return{getButtonLabel:c.getButtonLabel}}}),d={class:"cdx-button-group"};function u(o,m,B,k,_,C){const n=e.resolveComponent("cdx-icon"),r=e.resolveComponent("cdx-button");return e.openBlock(),e.createElementBlock("div",d,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.buttons,t=>(e.openBlock(),e.createBlock(r,{key:t.value,disabled:t.disabled||o.disabled,"aria-label":t.ariaLabel,onClick:x=>o.$emit("click",t.value)},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default",{button:t},()=>[t.icon?(e.openBlock(),e.createBlock(n,{key:0,icon:t.icon},null,8,["icon"])):e.createCommentVNode("v-if",!0),e.createTextVNode(" "+e.toDisplayString(o.getButtonLabel(t)),1)])]),_:2},1032,["disabled","aria-label","onClick"]))),128))])}const p=s._export_sfc(i,[["render",u]]);module.exports=p;
+"use strict";const e=require("vue"),i=require("./useButtonGroupKeyboardNav.js"),B=require("./CdxButton.cjs"),m=require("./Icon.js"),f=require("./_plugin-vue_export-helper.js"),k=e.defineComponent({name:"CdxButtonGroup",components:{CdxButton:B,CdxIcon:m.CdxIcon},props:{buttons:{type:Array,required:!0,validator:o=>Array.isArray(o)&&o.length>=1},disabled:{type:Boolean,default:!1}},emits:["click"],setup(o){const{rootElement:r,assignTemplateRef:l,onFocus:s,onBlur:c,onKeydown:a}=i.useButtonGroupKeyboardNav(e.toRef(o,"buttons"));return{rootElement:r,assignTemplateRef:l,onFocus:s,onBlur:c,onKeydown:a,getButtonLabel:i.getButtonLabel}}}),y={ref:"rootElement",class:"cdx-button-group"};function b(o,r,l,s,c,a){const d=e.resolveComponent("cdx-icon"),p=e.resolveComponent("cdx-button");return e.openBlock(),e.createElementBlock("div",y,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.buttons,(n,u)=>(e.openBlock(),e.createBlock(p,{key:n.value,ref_for:!0,ref:t=>o.assignTemplateRef(t,u),disabled:n.disabled||o.disabled,"aria-label":n.ariaLabel,onClick:t=>o.$emit("click",n.value),onFocus:t=>o.onFocus(u),onBlur:o.onBlur,onKeydown:o.onKeydown},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default",{button:n},()=>[n.icon?(e.openBlock(),e.createBlock(d,{key:0,icon:n.icon},null,8,["icon"])):e.createCommentVNode("v-if",!0),e.createTextVNode(" "+e.toDisplayString(o.getButtonLabel(n)),1)])]),_:2},1032,["disabled","aria-label","onClick","onFocus","onBlur","onKeydown"]))),128))],512)}const C=f._export_sfc(k,[["render",b]]);module.exports=C;
diff --git a/resources/lib/codex/modules/CdxCheckbox.cjs b/resources/lib/codex/modules/CdxCheckbox.cjs
index 4e56335cc392..94bb34fc4c3d 100644
--- a/resources/lib/codex/modules/CdxCheckbox.cjs
+++ b/resources/lib/codex/modules/CdxCheckbox.cjs
@@ -1 +1 @@
-"use strict";const t=require("vue"),h=require("./CdxLabel.cjs"),k=require("./useLabelChecker.js"),C=require("./useModelWrapper.cjs"),r=require("./useGeneratedId.cjs"),y=require("./useFieldData.cjs"),u=require("./constants.js"),v=require("./_plugin-vue_export-helper.js"),$=u.makeStringTypeValidator(u.ValidationStatusTypes),V=t.defineComponent({name:"CdxCheckbox",components:{CdxLabel:h},props:{modelValue:{type:[Boolean,Array],default:!1},inputValue:{type:[String,Number,Boolean],default:!1},name:{type:String,default:null},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},hideLabel:{type:Boolean,default:!1},status:{type:String,default:"default",validator:$}},emits:["update:modelValue"],setup(e,{emit:o,slots:s,attrs:l}){var c;k.useLabelChecker((c=s.default)==null?void 0:c.call(s),l,"CdxCheckbox");const{computedDisabled:i,computedStatus:a}=y(t.toRef(e,"disabled"),t.toRef(e,"status")),n=t.computed(()=>({"cdx-checkbox--inline":e.inline,["cdx-checkbox--status-".concat(a.value)]:!0})),d=t.computed(()=>({"cdx-checkbox__custom-input--inline":e.inline})),p=t.ref(),m=r("checkbox"),b=r("description"),f=C(t.toRef(e,"modelValue"),o);return{rootClasses:n,computedDisabled:i,input:p,checkboxId:m,descriptionId:b,wrappedModel:f,customInputClasses:d}}}),x={class:"cdx-checkbox__wrapper"},B=["id","aria-describedby","value","name","disabled",".indeterminate"],S=t.createElementVNode("span",{class:"cdx-checkbox__icon"},null,-1);function g(e,o,s,l,i,a){const n=t.resolveComponent("cdx-label");return t.openBlock(),t.createElementBlock("span",{class:t.normalizeClass(["cdx-checkbox",e.rootClasses])},[t.createElementVNode("div",x,[t.withDirectives(t.createElementVNode("input",{id:e.checkboxId,ref:"input","onUpdate:modelValue":o[0]||(o[0]=d=>e.wrappedModel=d),class:"cdx-checkbox__input",type:"checkbox","aria-describedby":e.$slots.description&&e.$slots.description().length>0?e.descriptionId:void 0,value:e.inputValue,name:e.name,disabled:e.computedDisabled,".indeterminate":e.indeterminate},null,40,B),[[t.vModelCheckbox,e.wrappedModel]]),S,e.$slots.default&&e.$slots.default().length?(t.openBlock(),t.createBlock(n,{key:0,class:"cdx-checkbox__label","input-id":e.checkboxId,"description-id":e.$slots.description&&e.$slots.description().length>0?e.descriptionId:void 0,disabled:e.computedDisabled,"visually-hidden":e.hideLabel},t.createSlots({default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:2},[e.$slots.description&&e.$slots.description().length>0?{name:"description",fn:t.withCtx(()=>[t.renderSlot(e.$slots,"description")]),key:"0"}:void 0]),1032,["input-id","description-id","disabled","visually-hidden"])):t.createCommentVNode("v-if",!0)]),e.$slots["custom-input"]?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["cdx-checkbox__custom-input",e.customInputClasses])},[t.renderSlot(e.$slots,"custom-input")],2)):t.createCommentVNode("v-if",!0)],2)}const I=v._export_sfc(V,[["render",g]]);module.exports=I;
+"use strict";const t=require("vue"),h=require("./CdxLabel.cjs"),k=require("./useLabelChecker.js"),C=require("./useModelWrapper.cjs"),r=require("./useGeneratedId.cjs"),y=require("./useFieldData.cjs"),u=require("./constants.js"),v=require("./_plugin-vue_export-helper.js"),$=u.makeStringTypeValidator(u.ValidationStatusTypes),V=t.defineComponent({name:"CdxCheckbox",components:{CdxLabel:h},props:{modelValue:{type:[Boolean,Array],default:!1},inputValue:{type:[String,Number,Boolean],default:!1},name:{type:String,default:null},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},hideLabel:{type:Boolean,default:!1},status:{type:String,default:"default",validator:$}},emits:["update:modelValue"],setup(e,{emit:o,slots:s,attrs:l}){var c;k.useLabelChecker((c=s.default)==null?void 0:c.call(s),l,"CdxCheckbox");const{computedDisabled:i,computedStatus:a}=y(t.toRef(e,"disabled"),t.toRef(e,"status")),n=t.computed(()=>({"cdx-checkbox--inline":e.inline,["cdx-checkbox--status-".concat(a.value)]:!0})),d=t.computed(()=>({"cdx-checkbox__custom-input--inline":e.inline})),p=t.ref(),m=r("checkbox"),b=r("description"),f=C(t.toRef(e,"modelValue"),o);return{rootClasses:n,computedDisabled:i,input:p,checkboxId:m,descriptionId:b,wrappedModel:f,customInputClasses:d}}}),x={class:"cdx-checkbox__wrapper"},B=["id","aria-describedby","value","name","disabled",".indeterminate"],S=t.createElementVNode("span",{class:"cdx-checkbox__icon"},null,-1);function g(e,o,s,l,i,a){const n=t.resolveComponent("cdx-label");return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["cdx-checkbox",e.rootClasses])},[t.createElementVNode("div",x,[t.withDirectives(t.createElementVNode("input",{id:e.checkboxId,ref:"input","onUpdate:modelValue":o[0]||(o[0]=d=>e.wrappedModel=d),class:"cdx-checkbox__input",type:"checkbox","aria-describedby":e.$slots.description&&e.$slots.description().length>0?e.descriptionId:void 0,value:e.inputValue,name:e.name,disabled:e.computedDisabled,".indeterminate":e.indeterminate},null,40,B),[[t.vModelCheckbox,e.wrappedModel]]),S,e.$slots.default&&e.$slots.default().length?(t.openBlock(),t.createBlock(n,{key:0,class:"cdx-checkbox__label","input-id":e.checkboxId,"description-id":e.$slots.description&&e.$slots.description().length>0?e.descriptionId:void 0,disabled:e.computedDisabled,"visually-hidden":e.hideLabel},t.createSlots({default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:2},[e.$slots.description&&e.$slots.description().length>0?{name:"description",fn:t.withCtx(()=>[t.renderSlot(e.$slots,"description")]),key:"0"}:void 0]),1032,["input-id","description-id","disabled","visually-hidden"])):t.createCommentVNode("v-if",!0)]),e.$slots["custom-input"]?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["cdx-checkbox__custom-input",e.customInputClasses])},[t.renderSlot(e.$slots,"custom-input")],2)):t.createCommentVNode("v-if",!0)],2)}const I=v._export_sfc(V,[["render",g]]);module.exports=I;
diff --git a/resources/lib/codex/modules/CdxChipInput.cjs b/resources/lib/codex/modules/CdxChipInput.cjs
index 16842e2d5551..bcb362f73e6a 100644
--- a/resources/lib/codex/modules/CdxChipInput.cjs
+++ b/resources/lib/codex/modules/CdxChipInput.cjs
@@ -1 +1 @@
-"use strict";var w=(e,o,p)=>new Promise((v,d)=>{var c=u=>{try{n(p.next(u))}catch(r){d(r)}},i=u=>{try{n(p.throw(u))}catch(r){d(r)}},n=u=>u.done?v(u.value):Promise.resolve(u.value).then(c,i);n((p=p.apply(e,o)).next())});const t=require("vue"),T=require("./CdxButton.cjs"),g=require("./Icon.js"),z=require("./useI18n.cjs"),I=require("./_plugin-vue_export-helper.js"),y=require("./constants.js"),L=require("./useSplitAttributes.cjs"),O=require("./useFieldData.cjs"),M=require("./useComputedDirection.cjs"),U=t.defineComponent({name:"CdxInputChip",components:{CdxButton:T,CdxIcon:g.CdxIcon},props:{icon:{type:[String,Object],default:null},disabled:{type:Boolean,default:!1}},expose:["focus"],emits:["remove-chip","click-chip","arrow-left","arrow-right"],setup(e,{emit:o}){const p=t.ref(),v=t.computed(()=>({"cdx-input-chip--disabled":e.disabled})),d=z("cdx-input-chip-aria-description","Press Enter to edit or Delete to remove");function c(i){var n;switch(i.key){case"Enter":o("click-chip"),i.preventDefault(),i.stopPropagation();break;case"Escape":(n=p.value)==null||n.blur(),i.preventDefault(),i.stopPropagation();break;case"Backspace":case"Delete":o("remove-chip",i.key),i.preventDefault(),i.stopPropagation();break;case"ArrowLeft":o("arrow-left"),i.preventDefault(),i.stopPropagation();break;case"ArrowRight":o("arrow-right"),i.preventDefault(),i.stopPropagation();break}}return{rootElement:p,rootClasses:v,ariaDescription:d,onKeydown:c,cdxIconClose:g.X3}},methods:{focus(){this.$refs.rootElement.focus()}}}),j=["aria-description"],H={class:"cdx-input-chip__text"};function X(e,o,p,v,d,c){const i=t.resolveComponent("cdx-icon"),n=t.resolveComponent("cdx-button");return t.openBlock(),t.createElementBlock("div",{ref:"rootElement",class:t.normalizeClass(["cdx-input-chip",e.rootClasses]),tabindex:"0",role:"option","aria-description":e.ariaDescription,onKeydown:o[1]||(o[1]=(...u)=>e.onKeydown&&e.onKeydown(...u)),onClick:o[2]||(o[2]=u=>e.$emit("click-chip"))},[e.icon?(t.openBlock(),t.createBlock(i,{key:0,icon:e.icon,size:"small"},null,8,["icon"])):t.createCommentVNode("v-if",!0),t.createElementVNode("span",H,[t.renderSlot(e.$slots,"default")]),t.createVNode(n,{class:"cdx-input-chip__button",weight:"quiet",tabindex:"-1","aria-hidden":"true",disabled:e.disabled,onClick:o[0]||(o[0]=t.withModifiers(u=>e.$emit("remove-chip","button"),["stop"]))},{default:t.withCtx(()=>[t.createVNode(i,{icon:e.cdxIconClose,size:"x-small"},null,8,["icon"])]),_:1},8,["disabled"])],42,j)}const G=I._export_sfc(U,[["render",X]]),J=y.makeStringTypeValidator(y.ValidationStatusTypes),Q=t.defineComponent({name:"CdxChipInput",components:{CdxInputChip:G},inheritAttrs:!1,props:{inputChips:{type:Array,required:!0},separateInput:{type:Boolean,default:!1},status:{type:String,default:"default",validator:J},disabled:{type:Boolean,default:!1}},emits:["update:input-chips"],setup(e,{emit:o,attrs:p}){const v=t.ref(),d=M(v),c=t.ref(),i=t.ref(""),n=t.ref("default"),u=t.computed(()=>n.value==="error"||e.status==="error"?"error":"default"),{computedDisabled:r,computedStatus:B}=O(t.toRef(e,"disabled"),u),C=t.ref(!1),D=t.computed(()=>({"cdx-chip-input--has-separate-input":e.separateInput,["cdx-chip-input--status-".concat(B.value)]:!0,"cdx-chip-input--focused":C.value,"cdx-chip-input--disabled":r.value})),{rootClasses:$,rootStyle:V,otherAttrs:E}=L(p,D),m=[];function F(s,a){s!==null&&(m[a]=s)}const h=()=>{c.value.focus()};function k(){e.inputChips.find(s=>s.value===i.value)?n.value="error":i.value.length>0&&(o("update:input-chips",e.inputChips.concat({value:i.value})),i.value="")}function b(s){o("update:input-chips",e.inputChips.filter(a=>a.value!==s.value))}function A(s,a){const f=d.value==="ltr"&&s==="left"||d.value==="rtl"&&s==="right"?-1:1,l=a+f;if(!(l<0)){if(l>=e.inputChips.length){h();return}m[l].focus()}}function S(s){return w(this,null,function*(){k(),yield t.nextTick(),b(s),i.value=s.value,h()})}function R(s,a,f){if(f==="button")h();else if(f==="Backspace"){const l=a===0?1:a-1;l<e.inputChips.length?m[l].focus():h()}else if(f==="Delete"){const l=a+1;l<e.inputChips.length?m[l].focus():h()}b(s)}function q(s){var f,l;const a=d.value==="rtl"?"ArrowRight":"ArrowLeft";switch(s.key){case"Enter":if(i.value.length>0){k(),s.preventDefault(),s.stopPropagation();return}break;case"Escape":(f=c.value)==null||f.blur(),s.preventDefault(),s.stopPropagation();return;case"Backspace":case a:if(((l=c.value)==null?void 0:l.selectionStart)===0&&c.value.selectionEnd===0&&e.inputChips.length>0){m[e.inputChips.length-1].focus(),s.preventDefault(),s.stopPropagation();return}break}}function K(){C.value=!0}function P(){C.value=!1}function N(s){v.value.contains(s.relatedTarget)||k()}return t.watch(t.toRef(e,"inputChips"),s=>{const a=s.find(f=>f.value===i.value);n.value=a?"error":"default"}),t.watch(i,()=>{n.value==="error"&&(n.value="default")}),{rootElement:v,input:c,inputValue:i,rootClasses:$,rootStyle:V,otherAttrs:E,assignChipTemplateRef:F,handleChipClick:S,handleChipRemove:R,moveChipFocus:A,onInputKeydown:q,focusInput:h,onInputFocus:K,onInputBlur:P,onFocusOut:N,computedDisabled:r}}}),W={class:"cdx-chip-input__chips",role:"listbox","aria-orientation":"horizontal"},Y=["disabled"],Z={key:0,class:"cdx-chip-input__separate-input"},x=["disabled"];function _(e,o,p,v,d,c){const i=t.resolveComponent("cdx-input-chip");return t.openBlock(),t.createElementBlock("div",{ref:"rootElement",class:t.normalizeClass(["cdx-chip-input",e.rootClasses]),style:t.normalizeStyle(e.rootStyle),onClick:o[8]||(o[8]=(...n)=>e.focusInput&&e.focusInput(...n)),onFocusout:o[9]||(o[9]=(...n)=>e.onFocusOut&&e.onFocusOut(...n))},[t.createElementVNode("div",W,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.inputChips,(n,u)=>(t.openBlock(),t.createBlock(i,{key:n.value,ref_for:!0,ref:r=>e.assignChipTemplateRef(r,u),class:"cdx-chip-input__item",icon:n.icon,disabled:e.computedDisabled,onClickChip:r=>e.handleChipClick(n),onRemoveChip:r=>e.handleChipRemove(n,u,r),onArrowLeft:r=>e.moveChipFocus("left",u),onArrowRight:r=>e.moveChipFocus("right",u)},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(n.value),1)]),_:2},1032,["icon","disabled","onClickChip","onRemoveChip","onArrowLeft","onArrowRight"]))),128)),e.separateInput?t.createCommentVNode("v-if",!0):t.withDirectives((t.openBlock(),t.createElementBlock("input",t.mergeProps({key:0,ref:"input","onUpdate:modelValue":o[0]||(o[0]=n=>e.inputValue=n),class:"cdx-chip-input__input",disabled:e.computedDisabled},e.otherAttrs,{onBlur:o[1]||(o[1]=(...n)=>e.onInputBlur&&e.onInputBlur(...n)),onFocus:o[2]||(o[2]=(...n)=>e.onInputFocus&&e.onInputFocus(...n)),onKeydown:o[3]||(o[3]=(...n)=>e.onInputKeydown&&e.onInputKeydown(...n))}),null,16,Y)),[[t.vModelDynamic,e.inputValue]])]),e.separateInput?(t.openBlock(),t.createElementBlock("div",Z,[t.withDirectives(t.createElementVNode("input",t.mergeProps({ref:"input","onUpdate:modelValue":o[4]||(o[4]=n=>e.inputValue=n),class:"cdx-chip-input__input",disabled:e.computedDisabled},e.otherAttrs,{onBlur:o[5]||(o[5]=(...n)=>e.onInputBlur&&e.onInputBlur(...n)),onFocus:o[6]||(o[6]=(...n)=>e.onInputFocus&&e.onInputFocus(...n)),onKeydown:o[7]||(o[7]=(...n)=>e.onInputKeydown&&e.onInputKeydown(...n))}),null,16,x),[[t.vModelDynamic,e.inputValue]])])):t.createCommentVNode("v-if",!0)],38)}const ee=I._export_sfc(Q,[["render",_]]);module.exports=ee;
+"use strict";var w=(e,o,p)=>new Promise((v,d)=>{var c=u=>{try{n(p.next(u))}catch(a){d(a)}},i=u=>{try{n(p.throw(u))}catch(a){d(a)}},n=u=>u.done?v(u.value):Promise.resolve(u.value).then(c,i);n((p=p.apply(e,o)).next())});const t=require("vue"),T=require("./CdxButton.cjs"),g=require("./Icon.js"),z=require("./useI18n.cjs"),I=require("./_plugin-vue_export-helper.js"),y=require("./constants.js"),L=require("./useSplitAttributes.cjs"),O=require("./useFieldData.cjs"),M=require("./useComputedDirection.cjs"),U=t.defineComponent({name:"CdxInputChip",components:{CdxButton:T,CdxIcon:g.CdxIcon},props:{icon:{type:[String,Object],default:null},disabled:{type:Boolean,default:!1}},expose:["focus"],emits:["remove-chip","click-chip","arrow-left","arrow-right"],setup(e,{emit:o}){const p=t.ref(),v=t.computed(()=>({"cdx-input-chip--disabled":e.disabled})),d=z("cdx-input-chip-aria-description","Press Enter to edit or Delete to remove");function c(i){var n;switch(i.key){case"Enter":o("click-chip"),i.preventDefault(),i.stopPropagation();break;case"Escape":(n=p.value)==null||n.blur(),i.preventDefault(),i.stopPropagation();break;case"Backspace":case"Delete":o("remove-chip",i.key),i.preventDefault(),i.stopPropagation();break;case"ArrowLeft":o("arrow-left"),i.preventDefault(),i.stopPropagation();break;case"ArrowRight":o("arrow-right"),i.preventDefault(),i.stopPropagation();break}}return{rootElement:p,rootClasses:v,ariaDescription:d,onKeydown:c,cdxIconClose:g.X3}},methods:{focus(){this.$refs.rootElement.focus()}}}),j=["aria-description"],H={class:"cdx-input-chip__text"};function X(e,o,p,v,d,c){const i=t.resolveComponent("cdx-icon"),n=t.resolveComponent("cdx-button");return t.openBlock(),t.createElementBlock("div",{ref:"rootElement",class:t.normalizeClass(["cdx-input-chip",e.rootClasses]),tabindex:"0",role:"option","aria-description":e.ariaDescription,onKeydown:o[1]||(o[1]=(...u)=>e.onKeydown&&e.onKeydown(...u)),onClick:o[2]||(o[2]=u=>e.$emit("click-chip"))},[e.icon?(t.openBlock(),t.createBlock(i,{key:0,icon:e.icon,size:"small"},null,8,["icon"])):t.createCommentVNode("v-if",!0),t.createElementVNode("span",H,[t.renderSlot(e.$slots,"default")]),t.createVNode(n,{class:"cdx-input-chip__button",weight:"quiet",tabindex:"-1","aria-hidden":"true",disabled:e.disabled,onClick:o[0]||(o[0]=t.withModifiers(u=>e.$emit("remove-chip","button"),["stop"]))},{default:t.withCtx(()=>[t.createVNode(i,{icon:e.cdxIconClose,size:"x-small"},null,8,["icon"])]),_:1},8,["disabled"])],42,j)}const G=I._export_sfc(U,[["render",X]]),J=y.makeStringTypeValidator(y.ValidationStatusTypes),Q=t.defineComponent({name:"CdxChipInput",components:{CdxInputChip:G},inheritAttrs:!1,props:{inputChips:{type:Array,required:!0},separateInput:{type:Boolean,default:!1},status:{type:String,default:"default",validator:J},disabled:{type:Boolean,default:!1}},emits:["update:input-chips"],setup(e,{emit:o,attrs:p}){const v=t.ref(),d=M(v),c=t.ref(),i=t.ref(""),n=t.ref("default"),u=t.computed(()=>n.value==="error"||e.status==="error"?"error":"default"),{computedDisabled:a,computedStatus:B}=O(t.toRef(e,"disabled"),u),C=t.ref(!1),D=t.computed(()=>({"cdx-chip-input--has-separate-input":e.separateInput,["cdx-chip-input--status-".concat(B.value)]:!0,"cdx-chip-input--focused":C.value,"cdx-chip-input--disabled":a.value})),{rootClasses:$,rootStyle:V,otherAttrs:E}=L(p,D),m=[];function F(s,r){s!==null&&(m[r]=s)}const h=()=>{c.value.focus()};function k(){e.inputChips.find(s=>s.value===i.value)?n.value="error":i.value.length>0&&(o("update:input-chips",e.inputChips.concat({value:i.value})),i.value="")}function b(s){o("update:input-chips",e.inputChips.filter(r=>r.value!==s.value))}function A(s,r){const f=d.value==="ltr"&&s==="left"||d.value==="rtl"&&s==="right"?-1:1,l=r+f;if(!(l<0)){if(l>=e.inputChips.length){h();return}m[l].focus()}}function S(s){return w(this,null,function*(){k(),yield t.nextTick(),b(s),i.value=s.value,h()})}function R(s,r,f){if(f==="button")h();else if(f==="Backspace"){const l=r===0?1:r-1;l<e.inputChips.length?m[l].focus():h()}else if(f==="Delete"){const l=r+1;l<e.inputChips.length?m[l].focus():h()}b(s)}function q(s){var f,l;const r=d.value==="rtl"?"ArrowRight":"ArrowLeft";switch(s.key){case"Enter":if(i.value.length>0){k(),s.preventDefault(),s.stopPropagation();return}break;case"Escape":(f=c.value)==null||f.blur(),s.preventDefault(),s.stopPropagation();return;case"Backspace":case r:if(((l=c.value)==null?void 0:l.selectionStart)===0&&c.value.selectionEnd===0&&e.inputChips.length>0){m[e.inputChips.length-1].focus(),s.preventDefault(),s.stopPropagation();return}break}}function K(){C.value=!0}function P(){C.value=!1}function N(s){var r;(r=v.value)!=null&&r.contains(s.relatedTarget)||k()}return t.watch(t.toRef(e,"inputChips"),s=>{const r=s.find(f=>f.value===i.value);n.value=r?"error":"default"}),t.watch(i,()=>{n.value==="error"&&(n.value="default")}),{rootElement:v,input:c,inputValue:i,rootClasses:$,rootStyle:V,otherAttrs:E,assignChipTemplateRef:F,handleChipClick:S,handleChipRemove:R,moveChipFocus:A,onInputKeydown:q,focusInput:h,onInputFocus:K,onInputBlur:P,onFocusOut:N,computedDisabled:a}}}),W={class:"cdx-chip-input__chips",role:"listbox","aria-orientation":"horizontal"},Y=["disabled"],Z={key:0,class:"cdx-chip-input__separate-input"},x=["disabled"];function _(e,o,p,v,d,c){const i=t.resolveComponent("cdx-input-chip");return t.openBlock(),t.createElementBlock("div",{ref:"rootElement",class:t.normalizeClass(["cdx-chip-input",e.rootClasses]),style:t.normalizeStyle(e.rootStyle),onClick:o[8]||(o[8]=(...n)=>e.focusInput&&e.focusInput(...n)),onFocusout:o[9]||(o[9]=(...n)=>e.onFocusOut&&e.onFocusOut(...n))},[t.createElementVNode("div",W,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.inputChips,(n,u)=>(t.openBlock(),t.createBlock(i,{key:n.value,ref_for:!0,ref:a=>e.assignChipTemplateRef(a,u),class:"cdx-chip-input__item",icon:n.icon,disabled:e.computedDisabled,onClickChip:a=>e.handleChipClick(n),onRemoveChip:a=>e.handleChipRemove(n,u,a),onArrowLeft:a=>e.moveChipFocus("left",u),onArrowRight:a=>e.moveChipFocus("right",u)},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(n.value),1)]),_:2},1032,["icon","disabled","onClickChip","onRemoveChip","onArrowLeft","onArrowRight"]))),128)),e.separateInput?t.createCommentVNode("v-if",!0):t.withDirectives((t.openBlock(),t.createElementBlock("input",t.mergeProps({key:0,ref:"input","onUpdate:modelValue":o[0]||(o[0]=n=>e.inputValue=n),class:"cdx-chip-input__input",disabled:e.computedDisabled},e.otherAttrs,{onBlur:o[1]||(o[1]=(...n)=>e.onInputBlur&&e.onInputBlur(...n)),onFocus:o[2]||(o[2]=(...n)=>e.onInputFocus&&e.onInputFocus(...n)),onKeydown:o[3]||(o[3]=(...n)=>e.onInputKeydown&&e.onInputKeydown(...n))}),null,16,Y)),[[t.vModelDynamic,e.inputValue]])]),e.separateInput?(t.openBlock(),t.createElementBlock("div",Z,[t.withDirectives(t.createElementVNode("input",t.mergeProps({ref:"input","onUpdate:modelValue":o[4]||(o[4]=n=>e.inputValue=n),class:"cdx-chip-input__input",disabled:e.computedDisabled},e.otherAttrs,{onBlur:o[5]||(o[5]=(...n)=>e.onInputBlur&&e.onInputBlur(...n)),onFocus:o[6]||(o[6]=(...n)=>e.onInputFocus&&e.onInputFocus(...n)),onKeydown:o[7]||(o[7]=(...n)=>e.onInputKeydown&&e.onInputKeydown(...n))}),null,16,x),[[t.vModelDynamic,e.inputValue]])])):t.createCommentVNode("v-if",!0)],38)}const ee=I._export_sfc(Q,[["render",_]]);module.exports=ee;
diff --git a/resources/lib/codex/modules/CdxRadio.cjs b/resources/lib/codex/modules/CdxRadio.cjs
index c9060ac74d9f..209197f3418f 100644
--- a/resources/lib/codex/modules/CdxRadio.cjs
+++ b/resources/lib/codex/modules/CdxRadio.cjs
@@ -1 +1 @@
-"use strict";const o=require("vue"),b=require("./CdxLabel.cjs"),C=require("./useLabelChecker.js"),$=require("./useModelWrapper.cjs"),u=require("./useGeneratedId.cjs"),v=require("./useFieldData.cjs"),k=require("./_plugin-vue_export-helper.js"),V=o.defineComponent({name:"CdxRadio",components:{CdxLabel:b},props:{modelValue:{type:[String,Number,Boolean],default:""},inputValue:{type:[String,Number,Boolean],default:!1},name:{type:String,required:!0},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:d,slots:t,attrs:n}){var r;C.useLabelChecker((r=t.default)==null?void 0:r.call(t),n,"CdxRadio");const l=o.computed(()=>({"cdx-radio--inline":e.inline})),a=o.computed(()=>({"cdx-radio__custom-input--inline":e.inline})),{computedDisabled:s}=v(o.toRef(e,"disabled")),i=o.ref(),c=u("radio"),p=u("description"),m=()=>{i.value.focus()},f=$(o.toRef(e,"modelValue"),d);return{rootClasses:l,computedDisabled:s,input:i,radioId:c,descriptionId:p,focusInput:m,wrappedModel:f,customInputClasses:a}}}),h={class:"cdx-radio__wrapper"},y=["id","aria-describedby","name","value","disabled"],I=o.createElementVNode("span",{class:"cdx-radio__icon"},null,-1);function B(e,d,t,n,l,a){const s=o.resolveComponent("cdx-label");return o.openBlock(),o.createElementBlock("span",{class:o.normalizeClass(["cdx-radio",e.rootClasses])},[o.createElementVNode("div",h,[o.withDirectives(o.createElementVNode("input",{id:e.radioId,ref:"input","onUpdate:modelValue":d[0]||(d[0]=i=>e.wrappedModel=i),class:"cdx-radio__input",type:"radio","aria-describedby":e.$slots.description&&e.$slots.description().length>0?e.descriptionId:void 0,name:e.name,value:e.inputValue,disabled:e.computedDisabled},null,8,y),[[o.vModelRadio,e.wrappedModel]]),I,e.$slots.default&&e.$slots.default().length?(o.openBlock(),o.createBlock(s,{key:0,class:"cdx-radio__label","input-id":e.radioId,"description-id":e.$slots.description&&e.$slots.description().length>0?e.descriptionId:void 0,disabled:e.computedDisabled,onClick:e.focusInput},o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots.description&&e.$slots.description().length>0?{name:"description",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"description")]),key:"0"}:void 0]),1032,["input-id","description-id","disabled","onClick"])):o.createCommentVNode("v-if",!0)]),e.$slots["custom-input"]?(o.openBlock(),o.createElementBlock("div",{key:0,class:o.normalizeClass(["cdx-radio__custom-input",e.customInputClasses])},[o.renderSlot(e.$slots,"custom-input")],2)):o.createCommentVNode("v-if",!0)],2)}const g=k._export_sfc(V,[["render",B]]);module.exports=g;
+"use strict";const o=require("vue"),b=require("./CdxLabel.cjs"),C=require("./useLabelChecker.js"),$=require("./useModelWrapper.cjs"),u=require("./useGeneratedId.cjs"),v=require("./useFieldData.cjs"),k=require("./_plugin-vue_export-helper.js"),V=o.defineComponent({name:"CdxRadio",components:{CdxLabel:b},props:{modelValue:{type:[String,Number,Boolean],default:""},inputValue:{type:[String,Number,Boolean],default:!1},name:{type:String,required:!0},disabled:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:d,slots:t,attrs:n}){var a;C.useLabelChecker((a=t.default)==null?void 0:a.call(t),n,"CdxRadio");const l=o.computed(()=>({"cdx-radio--inline":e.inline})),r=o.computed(()=>({"cdx-radio__custom-input--inline":e.inline})),{computedDisabled:s}=v(o.toRef(e,"disabled")),i=o.ref(),c=u("radio"),p=u("description"),m=()=>{i.value.focus()},f=$(o.toRef(e,"modelValue"),d);return{rootClasses:l,computedDisabled:s,input:i,radioId:c,descriptionId:p,focusInput:m,wrappedModel:f,customInputClasses:r}}}),h={class:"cdx-radio__wrapper"},y=["id","aria-describedby","name","value","disabled"],I=o.createElementVNode("span",{class:"cdx-radio__icon"},null,-1);function B(e,d,t,n,l,r){const s=o.resolveComponent("cdx-label");return o.openBlock(),o.createElementBlock("div",{class:o.normalizeClass(["cdx-radio",e.rootClasses])},[o.createElementVNode("div",h,[o.withDirectives(o.createElementVNode("input",{id:e.radioId,ref:"input","onUpdate:modelValue":d[0]||(d[0]=i=>e.wrappedModel=i),class:"cdx-radio__input",type:"radio","aria-describedby":e.$slots.description&&e.$slots.description().length>0?e.descriptionId:void 0,name:e.name,value:e.inputValue,disabled:e.computedDisabled},null,8,y),[[o.vModelRadio,e.wrappedModel]]),I,e.$slots.default&&e.$slots.default().length?(o.openBlock(),o.createBlock(s,{key:0,class:"cdx-radio__label","input-id":e.radioId,"description-id":e.$slots.description&&e.$slots.description().length>0?e.descriptionId:void 0,disabled:e.computedDisabled,onClick:e.focusInput},o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots.description&&e.$slots.description().length>0?{name:"description",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"description")]),key:"0"}:void 0]),1032,["input-id","description-id","disabled","onClick"])):o.createCommentVNode("v-if",!0)]),e.$slots["custom-input"]?(o.openBlock(),o.createElementBlock("div",{key:0,class:o.normalizeClass(["cdx-radio__custom-input",e.customInputClasses])},[o.renderSlot(e.$slots,"custom-input")],2)):o.createCommentVNode("v-if",!0)],2)}const g=k._export_sfc(V,[["render",B]]);module.exports=g;
diff --git a/resources/lib/codex/modules/CdxTable-rtl.css b/resources/lib/codex/modules/CdxTable-rtl.css
index c0accc3b67eb..996e2605feea 100644
--- a/resources/lib/codex/modules/CdxTable-rtl.css
+++ b/resources/lib/codex/modules/CdxTable-rtl.css
@@ -1 +1 @@
-.cdx-table-pager{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:12px}@media screen and (min-width: 640px){.cdx-table-pager{flex-wrap:nowrap}}.cdx-table-pager__start .cdx-select-vue__handle{min-width:8rem}.cdx-table-pager__center{color:var(--color-subtle, #54595d);flex:1 1 40%;font-size:1rem;text-align:center}@media screen and (min-width: 640px){.cdx-table-pager__center{flex:0 1 auto}}.cdx-table-pager__end{display:flex;flex:1 0 100%;justify-content:space-between;gap:4px}@media screen and (min-width: 640px){.cdx-table-pager__end{flex:0 1 auto}}.cdx-table{color:var(--color-base, #202122);border:1px solid var(--border-color-base, #a2a9b1);border-radius:2px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.cdx-table__header{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:16px;box-sizing:border-box;min-height:64px;padding:16px 12px}.cdx-table__header__caption{color:var(--color-emphasized, #000);font-size:1.125rem;font-weight:700;line-height:1.25}.cdx-table__pagination--bottom{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__pagination-status--short{display:block;text-align:left}@media screen and (min-width: 640px){.cdx-table__pagination-status--short{display:none}}.cdx-table__pagination-status--long{display:none}@media screen and (min-width: 640px){.cdx-table__pagination-status--long{display:block;text-align:center}}.cdx-table__pending-indicator{position:absolute}.cdx-table__table-wrapper{position:relative;overflow-x:auto}.cdx-table__table{min-width:100%;line-height:1.375;border-collapse:collapse}.cdx-table__table caption{display:block;clip:rect(1px,1px,1px,1px);position:absolute!important;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}.cdx-table__table th,.cdx-table__table td{padding:12px}.cdx-table__table th{color:var(--color-emphasized, #000);text-align:right}.cdx-table__table thead th{border-bottom:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table tfoot td,.cdx-table__table tfoot th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table tbody td,.cdx-table__table tbody th{border-top:1px solid var(--border-color-subtle, #c8ccd1);vertical-align:top}.cdx-table__table tbody tr:first-child td,.cdx-table__table tbody tr:first-child th{border-top:0}.cdx-table__table__sort-button{background-color:var(--background-color-transparent, transparent);display:flex;align-items:center;justify-content:space-between;width:100%;max-width:16rem;border:0;padding:12px;font-size:1rem;font-weight:700;line-height:1.4285714;text-align:right;text-decoration:none;transition-property:background-color,color,border-color,box-shadow;transition-duration:.1s}.cdx-table__table__sort-button:hover{background-color:var(--background-color-interactive-subtle, #f8f9fa);border-color:var(--border-color-base, #a2a9b1);cursor:pointer}.cdx-table__table__sort-button:focus{outline:1px solid transparent}.cdx-table__table__sort-button:active{background-color:var(--background-color-interactive, #eaecf0);border-color:var(--border-color-base, #a2a9b1)}.cdx-table__table__sort-button:focus:not(:active){background-color:var(--background-color-base, #fff);box-shadow:inset 0 0 0 2px var(--box-shadow-color-progressive--focus, #36c)}.cdx-table__table__sort-icon{color:var(--color-subtle, #54595d);margin-right:8px}.cdx-table__table .cdx-table__table__cell--align-center{text-align:center}.cdx-table__table .cdx-table__table__cell--align-end{text-align:left}.cdx-table__table .cdx-table__table__cell--align-end .cdx-table__table__sort-button{flex-direction:row-reverse;text-align:left}.cdx-table__table .cdx-table__table__cell--align-end .cdx-table__table__sort-icon{margin-left:8px;margin-right:0}.cdx-table__table .cdx-table__table__cell--align-number{text-align:right}.cdx-table__table .cdx-table__table__cell--align-number .cdx-table__table__sort-button{flex-direction:row;text-align:right}.cdx-table__table .cdx-table__table__cell--align-number .cdx-table__table__sort-icon{margin-right:8px;margin-left:0}.cdx-table__table .cdx-table__table__cell--has-sort{padding:0}.cdx-table__table__select-rows{width:1px}.cdx-table__table__row--selected{background-color:var(--background-color-progressive-subtle, #eaf3ff)}.cdx-table__table--layout-fixed{table-layout:fixed}.cdx-table__table--borders-vertical th,.cdx-table__table--borders-vertical td{border-left:1px solid var(--border-color-subtle, #c8ccd1)}.cdx-table__table--borders-vertical th:last-child,.cdx-table__table--borders-vertical td:last-child{border-left:0}.cdx-table__table--borders-vertical thead tr:not(:first-child) th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__header+.cdx-table__table-wrapper .cdx-table__table--borders-vertical thead th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table__empty-state{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table__empty-state-content{color:var(--color-subtle, #54595d);display:flex;align-items:center;justify-content:center;min-height:40px}.cdx-table__footer{display:flex;align-items:center;gap:16px;box-sizing:border-box;min-height:64px;border-top:1px solid var(--border-color-base, #a2a9b1);padding:12px}
+.cdx-table-pager{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:12px}@media screen and (min-width: 640px){.cdx-table-pager{flex-wrap:nowrap}}.cdx-table-pager__start .cdx-select,.cdx-table-pager__start .cdx-select-vue__handle{min-width:8rem}.cdx-table-pager__center{color:var(--color-subtle, #54595d);flex:1 1 40%;font-size:1rem;text-align:center}@media screen and (min-width: 640px){.cdx-table-pager__center{flex:0 1 auto}}.cdx-table-pager__end{display:flex;flex:1 0 100%;justify-content:space-between;gap:4px}@media screen and (min-width: 640px){.cdx-table-pager__end{flex:0 1 auto}}.cdx-table{color:var(--color-base, #202122);border:1px solid var(--border-color-base, #a2a9b1);border-radius:2px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.cdx-table__header{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:16px;box-sizing:border-box;min-height:64px;padding:16px 12px}.cdx-table__header__caption{color:var(--color-emphasized, #000);font-size:1.125rem;font-weight:700;line-height:1.25}.cdx-table__pagination--bottom{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__pagination-status--short{display:block;text-align:left}@media screen and (min-width: 640px){.cdx-table__pagination-status--short{display:none}}.cdx-table__pagination-status--long{display:none}@media screen and (min-width: 640px){.cdx-table__pagination-status--long{display:block;text-align:center}}.cdx-table__pending-indicator{position:absolute}.cdx-table__table-wrapper{position:relative;overflow-x:auto}.cdx-table__table{min-width:100%;line-height:1.375;border-collapse:collapse}.cdx-table__table caption{display:block;clip:rect(1px,1px,1px,1px);position:absolute!important;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}.cdx-table__table th,.cdx-table__table td{padding:12px}.cdx-table__table th{color:var(--color-emphasized, #000);text-align:right}.cdx-table__table thead th{border-bottom:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table tfoot td,.cdx-table__table tfoot th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table tbody td,.cdx-table__table tbody th{border-top:1px solid var(--border-color-subtle, #c8ccd1);vertical-align:top}.cdx-table__table tbody tr:first-child td,.cdx-table__table tbody tr:first-child th{border-top:0}.cdx-table__table__sort-button{background-color:var(--background-color-transparent, transparent);display:flex;align-items:center;justify-content:space-between;width:100%;max-width:16rem;border:0;padding:12px;font-family:inherit;font-size:inherit;font-weight:700;line-height:1.4285714;text-align:right;text-decoration:none;transition-property:background-color,color,border-color,box-shadow;transition-duration:.1s}.cdx-table__table__sort-button:hover{background-color:var(--background-color-interactive-subtle, #f8f9fa);border-color:var(--border-color-base, #a2a9b1);cursor:pointer}.cdx-table__table__sort-button:focus{outline:1px solid transparent}.cdx-table__table__sort-button:active{background-color:var(--background-color-interactive, #eaecf0);border-color:var(--border-color-base, #a2a9b1)}.cdx-table__table__sort-button:focus:not(:active){background-color:var(--background-color-base, #fff);box-shadow:inset 0 0 0 2px var(--box-shadow-color-progressive--focus, #36c)}.cdx-table__table__sort-icon{color:var(--color-subtle, #54595d);margin-right:8px}.cdx-table__table .cdx-table__table__cell--align-center{text-align:center}.cdx-table__table .cdx-table__table__cell--align-end{text-align:left}.cdx-table__table .cdx-table__table__cell--align-end .cdx-table__table__sort-button{flex-direction:row-reverse;text-align:left}.cdx-table__table .cdx-table__table__cell--align-end .cdx-table__table__sort-icon{margin-left:8px;margin-right:0}.cdx-table__table .cdx-table__table__cell--align-number{text-align:right}.cdx-table__table .cdx-table__table__cell--align-number .cdx-table__table__sort-button{flex-direction:row;text-align:right}.cdx-table__table .cdx-table__table__cell--align-number .cdx-table__table__sort-icon{margin-right:8px;margin-left:0}.cdx-table__table .cdx-table__table__cell--has-sort{padding:0}.cdx-table__table__select-rows{width:1px}.cdx-table__table__row--selected{background-color:var(--background-color-progressive-subtle, #eaf3ff)}.cdx-table__table--layout-fixed{table-layout:fixed}.cdx-table__table--borders-vertical th,.cdx-table__table--borders-vertical td{border-left:1px solid var(--border-color-subtle, #c8ccd1)}.cdx-table__table--borders-vertical th:last-child,.cdx-table__table--borders-vertical td:last-child{border-left:0}.cdx-table__table--borders-vertical thead tr:not(:first-child) th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__header+.cdx-table__table-wrapper .cdx-table__table--borders-vertical thead th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table__empty-state{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table__empty-state-content{color:var(--color-subtle, #54595d);display:flex;align-items:center;justify-content:center;min-height:40px}.cdx-table__footer{display:flex;align-items:center;gap:16px;box-sizing:border-box;min-height:64px;border-top:1px solid var(--border-color-base, #a2a9b1);padding:12px}
diff --git a/resources/lib/codex/modules/CdxTable.css b/resources/lib/codex/modules/CdxTable.css
index 68a6ddc9ae2b..c09e26dbe0bd 100644
--- a/resources/lib/codex/modules/CdxTable.css
+++ b/resources/lib/codex/modules/CdxTable.css
@@ -1 +1 @@
-.cdx-table-pager{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:12px}@media screen and (min-width: 640px){.cdx-table-pager{flex-wrap:nowrap}}.cdx-table-pager__start .cdx-select-vue__handle{min-width:8rem}.cdx-table-pager__center{color:var(--color-subtle, #54595d);flex:1 1 40%;font-size:1rem;text-align:center}@media screen and (min-width: 640px){.cdx-table-pager__center{flex:0 1 auto}}.cdx-table-pager__end{display:flex;flex:1 0 100%;justify-content:space-between;gap:4px}@media screen and (min-width: 640px){.cdx-table-pager__end{flex:0 1 auto}}.cdx-table{color:var(--color-base, #202122);border:1px solid var(--border-color-base, #a2a9b1);border-radius:2px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.cdx-table__header{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:16px;box-sizing:border-box;min-height:64px;padding:16px 12px}.cdx-table__header__caption{color:var(--color-emphasized, #000);font-size:1.125rem;font-weight:700;line-height:1.25}.cdx-table__pagination--bottom{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__pagination-status--short{display:block;text-align:right}@media screen and (min-width: 640px){.cdx-table__pagination-status--short{display:none}}.cdx-table__pagination-status--long{display:none}@media screen and (min-width: 640px){.cdx-table__pagination-status--long{display:block;text-align:center}}.cdx-table__pending-indicator{position:absolute}.cdx-table__table-wrapper{position:relative;overflow-x:auto}.cdx-table__table{min-width:100%;line-height:1.375;border-collapse:collapse}.cdx-table__table caption{display:block;clip:rect(1px,1px,1px,1px);position:absolute!important;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}.cdx-table__table th,.cdx-table__table td{padding:12px}.cdx-table__table th{color:var(--color-emphasized, #000);text-align:left}.cdx-table__table thead th{border-bottom:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table tfoot td,.cdx-table__table tfoot th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table tbody td,.cdx-table__table tbody th{border-top:1px solid var(--border-color-subtle, #c8ccd1);vertical-align:top}.cdx-table__table tbody tr:first-child td,.cdx-table__table tbody tr:first-child th{border-top:0}.cdx-table__table__sort-button{background-color:var(--background-color-transparent, transparent);display:flex;align-items:center;justify-content:space-between;width:100%;max-width:16rem;border:0;padding:12px;font-size:1rem;font-weight:700;line-height:1.4285714;text-align:left;text-decoration:none;transition-property:background-color,color,border-color,box-shadow;transition-duration:.1s}.cdx-table__table__sort-button:hover{background-color:var(--background-color-interactive-subtle, #f8f9fa);border-color:var(--border-color-base, #a2a9b1);cursor:pointer}.cdx-table__table__sort-button:focus{outline:1px solid transparent}.cdx-table__table__sort-button:active{background-color:var(--background-color-interactive, #eaecf0);border-color:var(--border-color-base, #a2a9b1)}.cdx-table__table__sort-button:focus:not(:active){background-color:var(--background-color-base, #fff);box-shadow:inset 0 0 0 2px var(--box-shadow-color-progressive--focus, #36c)}.cdx-table__table__sort-icon{color:var(--color-subtle, #54595d);margin-left:8px}.cdx-table__table .cdx-table__table__cell--align-center{text-align:center}.cdx-table__table .cdx-table__table__cell--align-end{text-align:right}.cdx-table__table .cdx-table__table__cell--align-end .cdx-table__table__sort-button{flex-direction:row-reverse;text-align:right}.cdx-table__table .cdx-table__table__cell--align-end .cdx-table__table__sort-icon{margin-right:8px;margin-left:0}.cdx-table__table .cdx-table__table__cell--align-number{text-align:right}.cdx-table__table .cdx-table__table__cell--align-number .cdx-table__table__sort-button{flex-direction:row-reverse;text-align:right}.cdx-table__table .cdx-table__table__cell--align-number .cdx-table__table__sort-icon{margin-right:8px;margin-left:0}.cdx-table__table .cdx-table__table__cell--has-sort{padding:0}.cdx-table__table__select-rows{width:1px}.cdx-table__table__row--selected{background-color:var(--background-color-progressive-subtle, #eaf3ff)}.cdx-table__table--layout-fixed{table-layout:fixed}.cdx-table__table--borders-vertical th,.cdx-table__table--borders-vertical td{border-right:1px solid var(--border-color-subtle, #c8ccd1)}.cdx-table__table--borders-vertical th:last-child,.cdx-table__table--borders-vertical td:last-child{border-right:0}.cdx-table__table--borders-vertical thead tr:not(:first-child) th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__header+.cdx-table__table-wrapper .cdx-table__table--borders-vertical thead th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table__empty-state{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table__empty-state-content{color:var(--color-subtle, #54595d);display:flex;align-items:center;justify-content:center;min-height:40px}.cdx-table__footer{display:flex;align-items:center;gap:16px;box-sizing:border-box;min-height:64px;border-top:1px solid var(--border-color-base, #a2a9b1);padding:12px}
+.cdx-table-pager{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:12px}@media screen and (min-width: 640px){.cdx-table-pager{flex-wrap:nowrap}}.cdx-table-pager__start .cdx-select,.cdx-table-pager__start .cdx-select-vue__handle{min-width:8rem}.cdx-table-pager__center{color:var(--color-subtle, #54595d);flex:1 1 40%;font-size:1rem;text-align:center}@media screen and (min-width: 640px){.cdx-table-pager__center{flex:0 1 auto}}.cdx-table-pager__end{display:flex;flex:1 0 100%;justify-content:space-between;gap:4px}@media screen and (min-width: 640px){.cdx-table-pager__end{flex:0 1 auto}}.cdx-table{color:var(--color-base, #202122);border:1px solid var(--border-color-base, #a2a9b1);border-radius:2px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.cdx-table__header{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:16px;box-sizing:border-box;min-height:64px;padding:16px 12px}.cdx-table__header__caption{color:var(--color-emphasized, #000);font-size:1.125rem;font-weight:700;line-height:1.25}.cdx-table__pagination--bottom{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__pagination-status--short{display:block;text-align:right}@media screen and (min-width: 640px){.cdx-table__pagination-status--short{display:none}}.cdx-table__pagination-status--long{display:none}@media screen and (min-width: 640px){.cdx-table__pagination-status--long{display:block;text-align:center}}.cdx-table__pending-indicator{position:absolute}.cdx-table__table-wrapper{position:relative;overflow-x:auto}.cdx-table__table{min-width:100%;line-height:1.375;border-collapse:collapse}.cdx-table__table caption{display:block;clip:rect(1px,1px,1px,1px);position:absolute!important;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}.cdx-table__table th,.cdx-table__table td{padding:12px}.cdx-table__table th{color:var(--color-emphasized, #000);text-align:left}.cdx-table__table thead th{border-bottom:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table tfoot td,.cdx-table__table tfoot th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table tbody td,.cdx-table__table tbody th{border-top:1px solid var(--border-color-subtle, #c8ccd1);vertical-align:top}.cdx-table__table tbody tr:first-child td,.cdx-table__table tbody tr:first-child th{border-top:0}.cdx-table__table__sort-button{background-color:var(--background-color-transparent, transparent);display:flex;align-items:center;justify-content:space-between;width:100%;max-width:16rem;border:0;padding:12px;font-family:inherit;font-size:inherit;font-weight:700;line-height:1.4285714;text-align:left;text-decoration:none;transition-property:background-color,color,border-color,box-shadow;transition-duration:.1s}.cdx-table__table__sort-button:hover{background-color:var(--background-color-interactive-subtle, #f8f9fa);border-color:var(--border-color-base, #a2a9b1);cursor:pointer}.cdx-table__table__sort-button:focus{outline:1px solid transparent}.cdx-table__table__sort-button:active{background-color:var(--background-color-interactive, #eaecf0);border-color:var(--border-color-base, #a2a9b1)}.cdx-table__table__sort-button:focus:not(:active){background-color:var(--background-color-base, #fff);box-shadow:inset 0 0 0 2px var(--box-shadow-color-progressive--focus, #36c)}.cdx-table__table__sort-icon{color:var(--color-subtle, #54595d);margin-left:8px}.cdx-table__table .cdx-table__table__cell--align-center{text-align:center}.cdx-table__table .cdx-table__table__cell--align-end{text-align:right}.cdx-table__table .cdx-table__table__cell--align-end .cdx-table__table__sort-button{flex-direction:row-reverse;text-align:right}.cdx-table__table .cdx-table__table__cell--align-end .cdx-table__table__sort-icon{margin-right:8px;margin-left:0}.cdx-table__table .cdx-table__table__cell--align-number{text-align:right}.cdx-table__table .cdx-table__table__cell--align-number .cdx-table__table__sort-button{flex-direction:row-reverse;text-align:right}.cdx-table__table .cdx-table__table__cell--align-number .cdx-table__table__sort-icon{margin-right:8px;margin-left:0}.cdx-table__table .cdx-table__table__cell--has-sort{padding:0}.cdx-table__table__select-rows{width:1px}.cdx-table__table__row--selected{background-color:var(--background-color-progressive-subtle, #eaf3ff)}.cdx-table__table--layout-fixed{table-layout:fixed}.cdx-table__table--borders-vertical th,.cdx-table__table--borders-vertical td{border-right:1px solid var(--border-color-subtle, #c8ccd1)}.cdx-table__table--borders-vertical th:last-child,.cdx-table__table--borders-vertical td:last-child{border-right:0}.cdx-table__table--borders-vertical thead tr:not(:first-child) th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__header+.cdx-table__table-wrapper .cdx-table__table--borders-vertical thead th{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table__empty-state{border-top:1px solid var(--border-color-base, #a2a9b1)}.cdx-table__table__empty-state-content{color:var(--color-subtle, #54595d);display:flex;align-items:center;justify-content:center;min-height:40px}.cdx-table__footer{display:flex;align-items:center;gap:16px;box-sizing:border-box;min-height:64px;border-top:1px solid var(--border-color-base, #a2a9b1);padding:12px}
diff --git a/resources/lib/codex/modules/CdxToggleButtonGroup.cjs b/resources/lib/codex/modules/CdxToggleButtonGroup.cjs
index 3e002dd97fb1..d0190f647871 100644
--- a/resources/lib/codex/modules/CdxToggleButtonGroup.cjs
+++ b/resources/lib/codex/modules/CdxToggleButtonGroup.cjs
@@ -1 +1 @@
-"use strict";const l=require("vue"),s=require("./buttonHelpers.js"),m=require("./Icon.js"),f=require("./CdxToggleButton.cjs"),p=require("./_plugin-vue_export-helper.js"),g=l.defineComponent({name:"CdxToggleButtonGroup",components:{CdxIcon:m.CdxIcon,CdxToggleButton:f},props:{buttons:{type:Array,required:!0,validator:e=>Array.isArray(e)&&e.length>=1},modelValue:{type:[String,Number,null,Array],required:!0},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:t}){function u(a){return Array.isArray(e.modelValue)?e.modelValue.indexOf(a.value)!==-1:e.modelValue!==null?e.modelValue===a.value:!1}function i(a,r){if(Array.isArray(e.modelValue)){const n=e.modelValue.indexOf(a.value)!==-1;r&&!n?t("update:modelValue",e.modelValue.concat(a.value)):!r&&n&&t("update:modelValue",e.modelValue.filter(d=>d!==a.value))}else r&&e.modelValue!==a.value&&t("update:modelValue",a.value)}return{getButtonLabel:s.getButtonLabel,isSelected:u,onUpdate:i}}}),V={class:"cdx-toggle-button-group"};function v(e,t,u,i,a,r){const n=l.resolveComponent("cdx-icon"),d=l.resolveComponent("cdx-toggle-button");return l.openBlock(),l.createElementBlock("div",V,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.buttons,o=>(l.openBlock(),l.createBlock(d,{key:o.value,"model-value":e.isSelected(o),disabled:o.disabled||e.disabled,"aria-label":o.ariaLabel,"onUpdate:modelValue":c=>e.onUpdate(o,c)},{default:l.withCtx(()=>[l.renderSlot(e.$slots,"default",{button:o,selected:e.isSelected(o)},()=>[o.icon?(l.openBlock(),l.createBlock(n,{key:0,icon:o.icon},null,8,["icon"])):l.createCommentVNode("v-if",!0),l.createTextVNode(" "+l.toDisplayString(e.getButtonLabel(o)),1)])]),_:2},1032,["model-value","disabled","aria-label","onUpdate:modelValue"]))),128))])}const B=p._export_sfc(g,[["render",v]]);module.exports=B;
+"use strict";const o=require("vue"),f=require("./useButtonGroupKeyboardNav.js"),p=require("./Icon.js"),B=require("./CdxToggleButton.cjs"),y=require("./_plugin-vue_export-helper.js"),V=o.defineComponent({name:"CdxToggleButtonGroup",components:{CdxIcon:p.CdxIcon,CdxToggleButton:B},props:{buttons:{type:Array,required:!0,validator:e=>Array.isArray(e)&&e.length>=1},modelValue:{type:[String,Number,null,Array],required:!0},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:r}){const{rootElement:d,assignTemplateRef:s,onFocus:i,onBlur:c,onKeydown:t}=f.useButtonGroupKeyboardNav(o.toRef(e,"buttons"));function u(n){return Array.isArray(e.modelValue)?e.modelValue.indexOf(n.value)!==-1:e.modelValue!==null?e.modelValue===n.value:!1}function l(n,a){if(Array.isArray(e.modelValue)){const m=e.modelValue.indexOf(n.value)!==-1;a&&!m?r("update:modelValue",e.modelValue.concat(n.value)):!a&&m&&r("update:modelValue",e.modelValue.filter(g=>g!==n.value))}else a&&e.modelValue!==n.value&&r("update:modelValue",n.value)}return{rootElement:d,assignTemplateRef:s,onFocus:i,onBlur:c,onKeydown:t,getButtonLabel:f.getButtonLabel,isSelected:u,onUpdate:l}}}),v={ref:"rootElement",class:"cdx-toggle-button-group"};function k(e,r,d,s,i,c){const t=o.resolveComponent("cdx-icon"),u=o.resolveComponent("cdx-toggle-button");return o.openBlock(),o.createElementBlock("div",v,[(o.openBlock(!0),o.createElementBlock(o.Fragment,null,o.renderList(e.buttons,(l,n)=>(o.openBlock(),o.createBlock(u,{key:l.value,ref_for:!0,ref:a=>e.assignTemplateRef(a,n),"model-value":e.isSelected(l),disabled:l.disabled||e.disabled,"aria-label":l.ariaLabel,"onUpdate:modelValue":a=>e.onUpdate(l,a),onFocus:a=>e.onFocus(n),onBlur:e.onBlur,onKeydown:e.onKeydown},{default:o.withCtx(()=>[o.renderSlot(e.$slots,"default",{button:l,selected:e.isSelected(l)},()=>[l.icon?(o.openBlock(),o.createBlock(t,{key:0,icon:l.icon},null,8,["icon"])):o.createCommentVNode("v-if",!0),o.createTextVNode(" "+o.toDisplayString(e.getButtonLabel(l)),1)])]),_:2},1032,["model-value","disabled","aria-label","onUpdate:modelValue","onFocus","onBlur","onKeydown"]))),128))],512)}const C=y._export_sfc(V,[["render",k]]);module.exports=C;
diff --git a/resources/lib/codex/modules/buttonHelpers.js b/resources/lib/codex/modules/buttonHelpers.js
deleted file mode 100644
index 24bfe9fe5b0f..000000000000
--- a/resources/lib/codex/modules/buttonHelpers.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";function l(e){return e.label===void 0?e.value:e.label===null?"":e.label}exports.getButtonLabel=l;
diff --git a/resources/lib/codex/modules/manifest-rtl.json b/resources/lib/codex/modules/manifest-rtl.json
index 4dc4cbd64cfa..75627a7fa280 100644
--- a/resources/lib/codex/modules/manifest-rtl.json
+++ b/resources/lib/codex/modules/manifest-rtl.json
@@ -16,10 +16,6 @@
"file": "_plugin-vue_export-helper.js",
"name": "_plugin-vue_export-helper"
},
- "_buttonHelpers.js": {
- "file": "buttonHelpers.js",
- "name": "buttonHelpers"
- },
"_constants.js": {
"file": "constants.js",
"name": "constants"
@@ -28,6 +24,13 @@
"file": "floating-ui.dom.js",
"name": "floating-ui.dom"
},
+ "_useButtonGroupKeyboardNav.js": {
+ "file": "useButtonGroupKeyboardNav.js",
+ "name": "useButtonGroupKeyboardNav",
+ "imports": [
+ "src/composables/useComputedDirection.ts"
+ ]
+ },
"_useI18nWithOverride.js": {
"file": "useI18nWithOverride.js",
"name": "useI18nWithOverride",
@@ -75,7 +78,7 @@
"src": "src/components/button-group/ButtonGroup.vue",
"isEntry": true,
"imports": [
- "_buttonHelpers.js",
+ "_useButtonGroupKeyboardNav.js",
"src/components/button/Button.vue",
"_Icon.js",
"__plugin-vue_export-helper.js"
@@ -522,7 +525,7 @@
"src": "src/components/toggle-button-group/ToggleButtonGroup.vue",
"isEntry": true,
"imports": [
- "_buttonHelpers.js",
+ "_useButtonGroupKeyboardNav.js",
"_Icon.js",
"src/components/toggle-button/ToggleButton.vue",
"__plugin-vue_export-helper.js"
diff --git a/resources/lib/codex/modules/manifest.json b/resources/lib/codex/modules/manifest.json
index d2247a945c35..69660a3652e5 100644
--- a/resources/lib/codex/modules/manifest.json
+++ b/resources/lib/codex/modules/manifest.json
@@ -16,10 +16,6 @@
"file": "_plugin-vue_export-helper.js",
"name": "_plugin-vue_export-helper"
},
- "_buttonHelpers.js": {
- "file": "buttonHelpers.js",
- "name": "buttonHelpers"
- },
"_constants.js": {
"file": "constants.js",
"name": "constants"
@@ -28,6 +24,13 @@
"file": "floating-ui.dom.js",
"name": "floating-ui.dom"
},
+ "_useButtonGroupKeyboardNav.js": {
+ "file": "useButtonGroupKeyboardNav.js",
+ "name": "useButtonGroupKeyboardNav",
+ "imports": [
+ "src/composables/useComputedDirection.ts"
+ ]
+ },
"_useI18nWithOverride.js": {
"file": "useI18nWithOverride.js",
"name": "useI18nWithOverride",
@@ -75,7 +78,7 @@
"src": "src/components/button-group/ButtonGroup.vue",
"isEntry": true,
"imports": [
- "_buttonHelpers.js",
+ "_useButtonGroupKeyboardNav.js",
"src/components/button/Button.vue",
"_Icon.js",
"__plugin-vue_export-helper.js"
@@ -522,7 +525,7 @@
"src": "src/components/toggle-button-group/ToggleButtonGroup.vue",
"isEntry": true,
"imports": [
- "_buttonHelpers.js",
+ "_useButtonGroupKeyboardNav.js",
"_Icon.js",
"src/components/toggle-button/ToggleButton.vue",
"__plugin-vue_export-helper.js"
diff --git a/resources/lib/codex/modules/useButtonGroupKeyboardNav.js b/resources/lib/codex/modules/useButtonGroupKeyboardNav.js
new file mode 100644
index 000000000000..8feca4415cd4
--- /dev/null
+++ b/resources/lib/codex/modules/useButtonGroupKeyboardNav.js
@@ -0,0 +1 @@
+"use strict";const f=require("vue"),h=require("./useComputedDirection.cjs");function y(t){return t.label===void 0?t.value:t.label===null?"":t.label}function A(t){const i=f.ref(),o=f.ref(),s=f.ref(new Map),v=h(i);function p(e,u){const n=e;n&&s.value.set(u,n)}function w(e){o.value=e}function g(){o.value=void 0}function r(e,u){var b;const n=e+u,d=t.value[n];if(d)if(d.disabled)r(n,u);else{const c=(b=s.value.get(n))==null?void 0:b.$el;c==null||c.focus()}}function a(){var e;r((e=o.value)!=null?e:-1,1)}function l(){var e;r((e=o.value)!=null?e:t.value.length,-1)}function D(){v.value==="rtl"?l():a()}function B(){v.value==="rtl"?a():l()}function k(e){switch(e.key){case"ArrowRight":e.preventDefault(),D();break;case"ArrowLeft":e.preventDefault(),B();break;case"ArrowDown":e.preventDefault(),a();break;case"ArrowUp":e.preventDefault(),l();break}}return{rootElement:i,assignTemplateRef:p,onFocus:w,onBlur:g,onKeydown:k}}exports.getButtonLabel=y;exports.useButtonGroupKeyboardNav=A;