@canonical/maas-react-components 1.17.0 → 1.17.1

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.
@@ -2402,7 +2402,7 @@ const vo = ({
2402
2402
  ), k = r || R, q = (f) => {
2403
2403
  const G = Array.from(new Set(f));
2404
2404
  D(G), t && t(G);
2405
- }, re = k.map((f) => /* @__PURE__ */ u("li", { className: "multi-select__selected-item", "aria-label": f.label, children: f.label }, f.value)), N = rr(), $ = rr();
2405
+ }, re = k.filter((f) => s.some((G) => G.value === f.value)).map((f) => /* @__PURE__ */ u("li", { className: "multi-select__selected-item", "aria-label": f.label, children: f.label }, f.value)), N = rr(), $ = rr();
2406
2406
  return /* @__PURE__ */ u("div", { ref: l, children: /* @__PURE__ */ ae("div", { className: "multi-select", children: [
2407
2407
  k.length > 0 && /* @__PURE__ */ u("ul", { className: "multi-select__selected-list", "aria-label": "selected", children: re }),
2408
2408
  /* @__PURE__ */ u(
@@ -31,4 +31,4 @@ Valid keys: `+JSON.stringify(Object.keys(l),null," "));var p=U(O,C,_,D,E+"."+C,
31
31
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function vt(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function yt(e){if(Array.isArray(e))return Ve(e)}function Lr(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,t)}return n}function zr(e){for(var r=1;r<arguments.length;r++){var n=arguments[r]!=null?arguments[r]:{};r%2?Lr(Object(n),!0).forEach(function(t){Br(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Lr(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Br(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function Te(e,r){return bt(e)||mt(e,r)||Wr(e,r)||gt()}function gt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
32
32
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Wr(e,r){if(e){if(typeof e=="string")return Ve(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ve(e,r)}}function Ve(e,r){(r==null||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function mt(e,r){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var t=[],a=!0,o=!1,c,i;try{for(n=n.call(e);!(a=(c=n.next()).done)&&(t.push(c.value),!(r&&t.length===r));a=!0);}catch(d){o=!0,i=d}finally{try{!a&&n.return!=null&&n.return()}finally{if(o)throw i}}return t}}function bt(e){if(Array.isArray(e))return e}var ht="file-invalid-type",_t="file-too-large",Et="file-too-small",wt="too-many-files",Tt=function(r){r=Array.isArray(r)&&r.length===1?r[0]:r;var n=Array.isArray(r)?"one of ".concat(r.join(", ")):r;return{code:ht,message:"File type must be ".concat(n)}},qr=function(r){return{code:_t,message:"File is larger than ".concat(r," ").concat(r===1?"byte":"bytes")}},Yr=function(r){return{code:Et,message:"File is smaller than ".concat(r," ").concat(r===1?"byte":"bytes")}},St={code:wt,message:"Too many files"};function Hr(e,r){var n=e.type==="application/x-moz-file"||pt(e,r);return[n,n?null:Tt(r)]}function Kr(e,r,n){if(pe(e.size))if(pe(r)&&pe(n)){if(e.size>n)return[!1,qr(n)];if(e.size<r)return[!1,Yr(r)]}else{if(pe(r)&&e.size<r)return[!1,Yr(r)];if(pe(n)&&e.size>n)return[!1,qr(n)]}return[!0,null]}function pe(e){return e!=null}function Ot(e){var r=e.files,n=e.accept,t=e.minSize,a=e.maxSize,o=e.multiple,c=e.maxFiles,i=e.validator;return!o&&r.length>1||o&&c>=1&&r.length>c?!1:r.every(function(d){var u=Hr(d,n),g=Te(u,1),m=g[0],w=Kr(d,t,a),F=Te(w,1),I=F[0],A=i?i(d):null;return m&&I&&!A})}function Ae(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function Pe(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(r){return r==="Files"||r==="application/x-moz-file"}):!!e.target&&!!e.target.files}function Ur(e){e.preventDefault()}function Ct(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function Dt(e){return e.indexOf("Edge/")!==-1}function xt(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return Ct(e)||Dt(e)}function te(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return function(t){for(var a=arguments.length,o=new Array(a>1?a-1:0),c=1;c<a;c++)o[c-1]=arguments[c];return r.some(function(i){return!Ae(t)&&i&&i.apply(void 0,[t].concat(o)),Ae(t)})}}function At(){return"showOpenFilePicker"in window}function Pt(e){if(pe(e)){var r=Object.entries(e).filter(function(n){var t=Te(n,2),a=t[0],o=t[1],c=!0;return Gr(a)||(console.warn('Skipped "'.concat(a,'" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.')),c=!1),(!Array.isArray(o)||!o.every(Vr))&&(console.warn('Skipped "'.concat(a,'" because an invalid file extension was provided.')),c=!1),c}).reduce(function(n,t){var a=Te(t,2),o=a[0],c=a[1];return zr(zr({},n),{},Br({},o,c))},{});return[{description:"Files",accept:r}]}return e}function Ft(e){if(pe(e))return Object.entries(e).reduce(function(r,n){var t=Te(n,2),a=t[0],o=t[1];return[].concat($r(r),[a],$r(o))},[]).filter(function(r){return Gr(r)||Vr(r)}).join(",")}function It(e){return e instanceof DOMException&&(e.name==="AbortError"||e.code===e.ABORT_ERR)}function jt(e){return e instanceof DOMException&&(e.name==="SecurityError"||e.code===e.SECURITY_ERR)}function Gr(e){return e==="audio/*"||e==="video/*"||e==="image/*"||e==="text/*"||/\w+\/[-+.\w]+/g.test(e)}function Vr(e){return/^.*\.[\w]+$/.test(e)}var kt=["children"],Nt=["open"],Mt=["refKey","role","onKeyDown","onFocus","onBlur","onClick","onDragEnter","onDragOver","onDragLeave","onDrop"],$t=["refKey","onChange","onClick"];function Lt(e){return Wt(e)||Bt(e)||Jr(e)||zt()}function zt(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
33
33
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Bt(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Wt(e){if(Array.isArray(e))return Re(e)}function Je(e,r){return Ht(e)||Yt(e,r)||Jr(e,r)||qt()}function qt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
34
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Jr(e,r){if(e){if(typeof e=="string")return Re(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Re(e,r)}}function Re(e,r){(r==null||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function Yt(e,r){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var t=[],a=!0,o=!1,c,i;try{for(n=n.call(e);!(a=(c=n.next()).done)&&(t.push(c.value),!(r&&t.length===r));a=!0);}catch(d){o=!0,i=d}finally{try{!a&&n.return!=null&&n.return()}finally{if(o)throw i}}return t}}function Ht(e){if(Array.isArray(e))return e}function Rr(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,t)}return n}function z(e){for(var r=1;r<arguments.length;r++){var n=arguments[r]!=null?arguments[r]:{};r%2?Rr(Object(n),!0).forEach(function(t){Xe(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rr(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Xe(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function Fe(e,r){if(e==null)return{};var n=Kt(e,r),t,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)t=o[a],!(r.indexOf(t)>=0)&&Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}function Kt(e,r){if(e==null)return{};var n={},t=Object.keys(e),a,o;for(o=0;o<t.length;o++)a=t[o],!(r.indexOf(a)>=0)&&(n[a]=e[a]);return n}var Ze=b.forwardRef(function(e,r){var n=e.children,t=Fe(e,kt),a=Zr(t),o=a.open,c=Fe(a,Nt);return b.useImperativeHandle(r,function(){return{open:o}},[o]),b.createElement(b.Fragment,null,n(z(z({},c),{},{open:o})))});Ze.displayName="Dropzone";var Xr={disabled:!1,getFilesFromEvent:tt,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};Ze.defaultProps=Xr,Ze.propTypes={children:N.func,accept:N.objectOf(N.arrayOf(N.string)),multiple:N.bool,preventDropOnDocument:N.bool,noClick:N.bool,noKeyboard:N.bool,noDrag:N.bool,noDragEventsBubbling:N.bool,minSize:N.number,maxSize:N.number,maxFiles:N.number,disabled:N.bool,getFilesFromEvent:N.func,onFileDialogCancel:N.func,onFileDialogOpen:N.func,useFsAccessApi:N.bool,autoFocus:N.bool,onDragEnter:N.func,onDragLeave:N.func,onDragOver:N.func,onDrop:N.func,onDropAccepted:N.func,onDropRejected:N.func,onError:N.func,validator:N.func};var Qe={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function Zr(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=z(z({},Xr),e),n=r.accept,t=r.disabled,a=r.getFilesFromEvent,o=r.maxSize,c=r.minSize,i=r.multiple,d=r.maxFiles,u=r.onDragEnter,g=r.onDragLeave,m=r.onDragOver,w=r.onDrop,F=r.onDropAccepted,I=r.onDropRejected,A=r.onFileDialogCancel,$=r.onFileDialogOpen,G=r.useFsAccessApi,oe=r.autoFocus,L=r.preventDropOnDocument,B=r.noClick,f=r.noKeyboard,X=r.noDrag,ne=r.noDragEventsBubbling,de=r.onError,ie=r.validator,se=b.useMemo(function(){return Ft(n)},[n]),ve=b.useMemo(function(){return Pt(n)},[n]),ye=b.useMemo(function(){return typeof $=="function"?$:Qr},[$]),le=b.useMemo(function(){return typeof A=="function"?A:Qr},[A]),q=b.useRef(null),R=b.useRef(null),re=b.useReducer(Ut,Qe),ae=Je(re,2),ue=ae[0],V=ae[1],l=ue.isFocused,y=ue.isFileDialogActive,T=b.useRef(typeof window<"u"&&window.isSecureContext&&G&&At()),S=function(){!T.current&&y&&setTimeout(function(){if(R.current){var h=R.current.files;h.length||(V({type:"closeDialog"}),le())}},300)};b.useEffect(function(){return window.addEventListener("focus",S,!1),function(){window.removeEventListener("focus",S,!1)}},[R,y,le,T]);var _=b.useRef([]),D=function(h){q.current&&q.current.contains(h.target)||(h.preventDefault(),_.current=[])};b.useEffect(function(){return L&&(document.addEventListener("dragover",Ur,!1),document.addEventListener("drop",D,!1)),function(){L&&(document.removeEventListener("dragover",Ur),document.removeEventListener("drop",D))}},[q,L]),b.useEffect(function(){return!t&&oe&&q.current&&q.current.focus(),function(){}},[q,oe,t]);var E=b.useCallback(function(v){de?de(v):console.error(v)},[de]),O=b.useCallback(function(v){v.preventDefault(),v.persist(),je(v),_.current=[].concat(Lt(_.current),[v.target]),Pe(v)&&Promise.resolve(a(v)).then(function(h){if(!(Ae(v)&&!ne)){var H=h.length,J=H>0&&Ot({files:h,accept:se,minSize:c,maxSize:o,multiple:i,maxFiles:d,validator:ie}),Q=H>0&&!J;V({isDragAccept:J,isDragReject:Q,isDragActive:!0,type:"setDraggedFiles"}),u&&u(v)}}).catch(function(h){return E(h)})},[a,u,E,ne,se,c,o,i,d,ie]),x=b.useCallback(function(v){v.preventDefault(),v.persist(),je(v);var h=Pe(v);if(h&&v.dataTransfer)try{v.dataTransfer.dropEffect="copy"}catch{}return h&&m&&m(v),!1},[m,ne]),P=b.useCallback(function(v){v.preventDefault(),v.persist(),je(v);var h=_.current.filter(function(J){return q.current&&q.current.contains(J)}),H=h.indexOf(v.target);H!==-1&&h.splice(H,1),_.current=h,!(h.length>0)&&(V({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),Pe(v)&&g&&g(v))},[q,g,ne]),C=b.useCallback(function(v,h){var H=[],J=[];v.forEach(function(Q){var Oe=Hr(Q,se),_e=Je(Oe,2),rr=_e[0],nr=_e[1],tr=Kr(Q,c,o),ke=Je(tr,2),or=ke[0],ar=ke[1],ir=ie?ie(Q):null;if(rr&&or&&!ir)H.push(Q);else{var sr=[nr,ar];ir&&(sr=sr.concat(ir)),J.push({file:Q,errors:sr.filter(function(Zt){return Zt})})}}),(!i&&H.length>1||i&&d>=1&&H.length>d)&&(H.forEach(function(Q){J.push({file:Q,errors:[St]})}),H.splice(0)),V({acceptedFiles:H,fileRejections:J,type:"setFiles"}),w&&w(H,J,h),J.length>0&&I&&I(J,h),H.length>0&&F&&F(H,h)},[V,i,se,c,o,d,w,F,I,ie]),U=b.useCallback(function(v){v.preventDefault(),v.persist(),je(v),_.current=[],Pe(v)&&Promise.resolve(a(v)).then(function(h){Ae(v)&&!ne||C(h,v)}).catch(function(h){return E(h)}),V({type:"reset"})},[a,C,E,ne]),p=b.useCallback(function(){if(T.current){V({type:"openDialog"}),ye();var v={multiple:i,types:ve};window.showOpenFilePicker(v).then(function(h){return a(h)}).then(function(h){C(h,null),V({type:"closeDialog"})}).catch(function(h){It(h)?(le(h),V({type:"closeDialog"})):jt(h)?(T.current=!1,R.current?(R.current.value=null,R.current.click()):E(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided."))):E(h)});return}R.current&&(V({type:"openDialog"}),ye(),R.current.value=null,R.current.click())},[V,ye,le,G,C,E,ve,i]),Z=b.useCallback(function(v){!q.current||!q.current.isEqualNode(v.target)||(v.key===" "||v.key==="Enter"||v.keyCode===32||v.keyCode===13)&&(v.preventDefault(),p())},[q,p]),ge=b.useCallback(function(){V({type:"focus"})},[]),Se=b.useCallback(function(){V({type:"blur"})},[]),rn=b.useCallback(function(){B||(xt()?setTimeout(p,0):p())},[B,p]),he=function(h){return t?null:h},er=function(h){return f?null:he(h)},Ie=function(h){return X?null:he(h)},je=function(h){ne&&h.stopPropagation()},Jt=b.useMemo(function(){return function(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=v.refKey,H=h===void 0?"ref":h,J=v.role,Q=v.onKeyDown,Oe=v.onFocus,_e=v.onBlur,rr=v.onClick,nr=v.onDragEnter,tr=v.onDragOver,ke=v.onDragLeave,or=v.onDrop,ar=Fe(v,Mt);return z(z(Xe({onKeyDown:er(te(Q,Z)),onFocus:er(te(Oe,ge)),onBlur:er(te(_e,Se)),onClick:he(te(rr,rn)),onDragEnter:Ie(te(nr,O)),onDragOver:Ie(te(tr,x)),onDragLeave:Ie(te(ke,P)),onDrop:Ie(te(or,U)),role:typeof J=="string"&&J!==""?J:"presentation"},H,q),!t&&!f?{tabIndex:0}:{}),ar)}},[q,Z,ge,Se,rn,O,x,P,U,f,X,t]),Rt=b.useCallback(function(v){v.stopPropagation()},[]),Xt=b.useMemo(function(){return function(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=v.refKey,H=h===void 0?"ref":h,J=v.onChange,Q=v.onClick,Oe=Fe(v,$t),_e=Xe({accept:se,multiple:i,type:"file",style:{display:"none"},onChange:he(te(J,U)),onClick:he(te(Q,Rt)),tabIndex:-1},H,R);return z(z({},_e),Oe)}},[R,n,i,U,t]);return z(z({},ue),{},{isFocused:l&&!t,getRootProps:Jt,getInputProps:Xt,rootRef:q,inputRef:R,open:he(p)})}function Ut(e,r){switch(r.type){case"focus":return z(z({},e),{},{isFocused:!0});case"blur":return z(z({},e),{},{isFocused:!1});case"openDialog":return z(z({},Qe),{},{isFileDialogActive:!0});case"closeDialog":return z(z({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return z(z({},e),{},{isDragActive:r.isDragActive,isDragAccept:r.isDragAccept,isDragReject:r.isDragReject});case"setFiles":return z(z({},e),{},{acceptedFiles:r.acceptedFiles,fileRejections:r.fileRejections});case"reset":return z({},Qe);default:return e}}function Qr(){}const lo="",Gt=({onFileUpload:e})=>{const{getRootProps:r}=Zr({onDrop:e});return s.jsx("div",{...r(),className:"file-upload","data-testid":"file-upload",children:s.jsx("button",{className:"file-upload__button",children:"Drag and drop files here or click to upload"})})},uo="",en=({items:e,selectedItems:r,disabledItems:n,header:t,updateItems:a,isOpen:o,...c})=>s.jsx(br,{isVisible:o,children:s.jsxs("div",{className:"multi-select__dropdown",role:"listbox",...c,children:[t&&s.jsx("h5",{className:"multi-select__dropdown-header",children:t}),s.jsx("ul",{className:"multi-select__dropdown-list",children:e.map(i=>s.jsx("li",{className:"multi-select__dropdown-item",children:s.jsx(Y.CheckboxInput,{disabled:n.some(d=>d.value===i.value),label:i.label,checked:r.some(d=>d.value===i.value),onChange:()=>a(r.some(d=>d.value===i.value)?r.filter(d=>d.value!==i.value):[...r,i])})},i.value))}),s.jsxs("div",{className:"multi-select__buttons",children:[s.jsx(Y.Button,{appearance:"link",onClick:()=>{const i=e.filter(d=>!n.some(u=>u.value===d.value));a([...r,...i])},type:"button",children:"Select all"}),s.jsx(Y.Button,{appearance:"link",onClick:()=>{const i=r.filter(d=>n.some(u=>u.value===d.value));a(i)},type:"button",children:"Clear"})]})]})}),Vt=({disabled:e,selectedItems:r=[],label:n,onItemsUpdate:t,placeholder:a="Select items",required:o=!1,items:c=[],disabledItems:i=[],header:d})=>{const u=Y.useClickOutside(()=>{m(!1)});Y.useOnEscapePressed(()=>m(!1));const[g,m]=b.useState(!1),[w,F]=b.useState("");b.useEffect(()=>{g||F("")},[g]);const[I,A]=b.useState([]),$=r||I,G=f=>{const X=Array.from(new Set(f));A(X),t&&t(X)},oe=$.map(f=>s.jsx("li",{className:"multi-select__selected-item","aria-label":f.label,children:f.label},f.value)),L=b.useId(),B=b.useId();return s.jsx("div",{ref:u,children:s.jsxs("div",{className:"multi-select",children:[$.length>0&&s.jsx("ul",{className:"multi-select__selected-list","aria-label":"selected",children:oe}),s.jsx(Y.Input,{"aria-controls":L,"aria-expanded":g,id:B,role:"combobox",label:n,disabled:e,autoComplete:"off",onChange:f=>F(f.target.value),onFocus:()=>m(!0),placeholder:a,required:o,type:"text",value:w,className:"multi-select__input"}),s.jsx(en,{id:L,isOpen:g,items:w.length>0?c.filter(f=>f.label.includes(w)):c,selectedItems:$,disabledItems:i,header:d,updateItems:G})]})})};M.ContentSection=Ee,M.ExternalLink=un,M.FileUpload=Gt,M.FormSection=Ce,M.InputGroup=$e,M.MainToolbar=Le,M.Meter=vr,M.MultiSelect=Vt,M.MultiSelectDropdown=en,M.Navigation=K,M.NavigationBar=yr,M.NestedFormGroup=qn,M.Pagination=hr,M.PaginationContainer=Yn,M.Stepper=Hn,M.defaultFilledColors=on,M.meterColor=ce,M.testIds=fe,Object.defineProperty(M,Symbol.toStringTag,{value:"Module"})});
34
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Jr(e,r){if(e){if(typeof e=="string")return Re(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Re(e,r)}}function Re(e,r){(r==null||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function Yt(e,r){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var t=[],a=!0,o=!1,c,i;try{for(n=n.call(e);!(a=(c=n.next()).done)&&(t.push(c.value),!(r&&t.length===r));a=!0);}catch(d){o=!0,i=d}finally{try{!a&&n.return!=null&&n.return()}finally{if(o)throw i}}return t}}function Ht(e){if(Array.isArray(e))return e}function Rr(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),n.push.apply(n,t)}return n}function z(e){for(var r=1;r<arguments.length;r++){var n=arguments[r]!=null?arguments[r]:{};r%2?Rr(Object(n),!0).forEach(function(t){Xe(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rr(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Xe(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function Fe(e,r){if(e==null)return{};var n=Kt(e,r),t,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)t=o[a],!(r.indexOf(t)>=0)&&Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}function Kt(e,r){if(e==null)return{};var n={},t=Object.keys(e),a,o;for(o=0;o<t.length;o++)a=t[o],!(r.indexOf(a)>=0)&&(n[a]=e[a]);return n}var Ze=b.forwardRef(function(e,r){var n=e.children,t=Fe(e,kt),a=Zr(t),o=a.open,c=Fe(a,Nt);return b.useImperativeHandle(r,function(){return{open:o}},[o]),b.createElement(b.Fragment,null,n(z(z({},c),{},{open:o})))});Ze.displayName="Dropzone";var Xr={disabled:!1,getFilesFromEvent:tt,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};Ze.defaultProps=Xr,Ze.propTypes={children:N.func,accept:N.objectOf(N.arrayOf(N.string)),multiple:N.bool,preventDropOnDocument:N.bool,noClick:N.bool,noKeyboard:N.bool,noDrag:N.bool,noDragEventsBubbling:N.bool,minSize:N.number,maxSize:N.number,maxFiles:N.number,disabled:N.bool,getFilesFromEvent:N.func,onFileDialogCancel:N.func,onFileDialogOpen:N.func,useFsAccessApi:N.bool,autoFocus:N.bool,onDragEnter:N.func,onDragLeave:N.func,onDragOver:N.func,onDrop:N.func,onDropAccepted:N.func,onDropRejected:N.func,onError:N.func,validator:N.func};var Qe={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function Zr(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=z(z({},Xr),e),n=r.accept,t=r.disabled,a=r.getFilesFromEvent,o=r.maxSize,c=r.minSize,i=r.multiple,d=r.maxFiles,u=r.onDragEnter,g=r.onDragLeave,m=r.onDragOver,w=r.onDrop,F=r.onDropAccepted,I=r.onDropRejected,A=r.onFileDialogCancel,$=r.onFileDialogOpen,G=r.useFsAccessApi,oe=r.autoFocus,L=r.preventDropOnDocument,B=r.noClick,f=r.noKeyboard,X=r.noDrag,ne=r.noDragEventsBubbling,de=r.onError,ie=r.validator,se=b.useMemo(function(){return Ft(n)},[n]),ve=b.useMemo(function(){return Pt(n)},[n]),ye=b.useMemo(function(){return typeof $=="function"?$:Qr},[$]),le=b.useMemo(function(){return typeof A=="function"?A:Qr},[A]),q=b.useRef(null),R=b.useRef(null),re=b.useReducer(Ut,Qe),ae=Je(re,2),ue=ae[0],V=ae[1],l=ue.isFocused,y=ue.isFileDialogActive,T=b.useRef(typeof window<"u"&&window.isSecureContext&&G&&At()),S=function(){!T.current&&y&&setTimeout(function(){if(R.current){var h=R.current.files;h.length||(V({type:"closeDialog"}),le())}},300)};b.useEffect(function(){return window.addEventListener("focus",S,!1),function(){window.removeEventListener("focus",S,!1)}},[R,y,le,T]);var _=b.useRef([]),D=function(h){q.current&&q.current.contains(h.target)||(h.preventDefault(),_.current=[])};b.useEffect(function(){return L&&(document.addEventListener("dragover",Ur,!1),document.addEventListener("drop",D,!1)),function(){L&&(document.removeEventListener("dragover",Ur),document.removeEventListener("drop",D))}},[q,L]),b.useEffect(function(){return!t&&oe&&q.current&&q.current.focus(),function(){}},[q,oe,t]);var E=b.useCallback(function(v){de?de(v):console.error(v)},[de]),O=b.useCallback(function(v){v.preventDefault(),v.persist(),je(v),_.current=[].concat(Lt(_.current),[v.target]),Pe(v)&&Promise.resolve(a(v)).then(function(h){if(!(Ae(v)&&!ne)){var H=h.length,J=H>0&&Ot({files:h,accept:se,minSize:c,maxSize:o,multiple:i,maxFiles:d,validator:ie}),Q=H>0&&!J;V({isDragAccept:J,isDragReject:Q,isDragActive:!0,type:"setDraggedFiles"}),u&&u(v)}}).catch(function(h){return E(h)})},[a,u,E,ne,se,c,o,i,d,ie]),x=b.useCallback(function(v){v.preventDefault(),v.persist(),je(v);var h=Pe(v);if(h&&v.dataTransfer)try{v.dataTransfer.dropEffect="copy"}catch{}return h&&m&&m(v),!1},[m,ne]),P=b.useCallback(function(v){v.preventDefault(),v.persist(),je(v);var h=_.current.filter(function(J){return q.current&&q.current.contains(J)}),H=h.indexOf(v.target);H!==-1&&h.splice(H,1),_.current=h,!(h.length>0)&&(V({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),Pe(v)&&g&&g(v))},[q,g,ne]),C=b.useCallback(function(v,h){var H=[],J=[];v.forEach(function(Q){var Oe=Hr(Q,se),_e=Je(Oe,2),rr=_e[0],nr=_e[1],tr=Kr(Q,c,o),ke=Je(tr,2),or=ke[0],ar=ke[1],ir=ie?ie(Q):null;if(rr&&or&&!ir)H.push(Q);else{var sr=[nr,ar];ir&&(sr=sr.concat(ir)),J.push({file:Q,errors:sr.filter(function(Zt){return Zt})})}}),(!i&&H.length>1||i&&d>=1&&H.length>d)&&(H.forEach(function(Q){J.push({file:Q,errors:[St]})}),H.splice(0)),V({acceptedFiles:H,fileRejections:J,type:"setFiles"}),w&&w(H,J,h),J.length>0&&I&&I(J,h),H.length>0&&F&&F(H,h)},[V,i,se,c,o,d,w,F,I,ie]),U=b.useCallback(function(v){v.preventDefault(),v.persist(),je(v),_.current=[],Pe(v)&&Promise.resolve(a(v)).then(function(h){Ae(v)&&!ne||C(h,v)}).catch(function(h){return E(h)}),V({type:"reset"})},[a,C,E,ne]),p=b.useCallback(function(){if(T.current){V({type:"openDialog"}),ye();var v={multiple:i,types:ve};window.showOpenFilePicker(v).then(function(h){return a(h)}).then(function(h){C(h,null),V({type:"closeDialog"})}).catch(function(h){It(h)?(le(h),V({type:"closeDialog"})):jt(h)?(T.current=!1,R.current?(R.current.value=null,R.current.click()):E(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided."))):E(h)});return}R.current&&(V({type:"openDialog"}),ye(),R.current.value=null,R.current.click())},[V,ye,le,G,C,E,ve,i]),Z=b.useCallback(function(v){!q.current||!q.current.isEqualNode(v.target)||(v.key===" "||v.key==="Enter"||v.keyCode===32||v.keyCode===13)&&(v.preventDefault(),p())},[q,p]),ge=b.useCallback(function(){V({type:"focus"})},[]),Se=b.useCallback(function(){V({type:"blur"})},[]),rn=b.useCallback(function(){B||(xt()?setTimeout(p,0):p())},[B,p]),he=function(h){return t?null:h},er=function(h){return f?null:he(h)},Ie=function(h){return X?null:he(h)},je=function(h){ne&&h.stopPropagation()},Jt=b.useMemo(function(){return function(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=v.refKey,H=h===void 0?"ref":h,J=v.role,Q=v.onKeyDown,Oe=v.onFocus,_e=v.onBlur,rr=v.onClick,nr=v.onDragEnter,tr=v.onDragOver,ke=v.onDragLeave,or=v.onDrop,ar=Fe(v,Mt);return z(z(Xe({onKeyDown:er(te(Q,Z)),onFocus:er(te(Oe,ge)),onBlur:er(te(_e,Se)),onClick:he(te(rr,rn)),onDragEnter:Ie(te(nr,O)),onDragOver:Ie(te(tr,x)),onDragLeave:Ie(te(ke,P)),onDrop:Ie(te(or,U)),role:typeof J=="string"&&J!==""?J:"presentation"},H,q),!t&&!f?{tabIndex:0}:{}),ar)}},[q,Z,ge,Se,rn,O,x,P,U,f,X,t]),Rt=b.useCallback(function(v){v.stopPropagation()},[]),Xt=b.useMemo(function(){return function(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=v.refKey,H=h===void 0?"ref":h,J=v.onChange,Q=v.onClick,Oe=Fe(v,$t),_e=Xe({accept:se,multiple:i,type:"file",style:{display:"none"},onChange:he(te(J,U)),onClick:he(te(Q,Rt)),tabIndex:-1},H,R);return z(z({},_e),Oe)}},[R,n,i,U,t]);return z(z({},ue),{},{isFocused:l&&!t,getRootProps:Jt,getInputProps:Xt,rootRef:q,inputRef:R,open:he(p)})}function Ut(e,r){switch(r.type){case"focus":return z(z({},e),{},{isFocused:!0});case"blur":return z(z({},e),{},{isFocused:!1});case"openDialog":return z(z({},Qe),{},{isFileDialogActive:!0});case"closeDialog":return z(z({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return z(z({},e),{},{isDragActive:r.isDragActive,isDragAccept:r.isDragAccept,isDragReject:r.isDragReject});case"setFiles":return z(z({},e),{},{acceptedFiles:r.acceptedFiles,fileRejections:r.fileRejections});case"reset":return z({},Qe);default:return e}}function Qr(){}const lo="",Gt=({onFileUpload:e})=>{const{getRootProps:r}=Zr({onDrop:e});return s.jsx("div",{...r(),className:"file-upload","data-testid":"file-upload",children:s.jsx("button",{className:"file-upload__button",children:"Drag and drop files here or click to upload"})})},uo="",en=({items:e,selectedItems:r,disabledItems:n,header:t,updateItems:a,isOpen:o,...c})=>s.jsx(br,{isVisible:o,children:s.jsxs("div",{className:"multi-select__dropdown",role:"listbox",...c,children:[t&&s.jsx("h5",{className:"multi-select__dropdown-header",children:t}),s.jsx("ul",{className:"multi-select__dropdown-list",children:e.map(i=>s.jsx("li",{className:"multi-select__dropdown-item",children:s.jsx(Y.CheckboxInput,{disabled:n.some(d=>d.value===i.value),label:i.label,checked:r.some(d=>d.value===i.value),onChange:()=>a(r.some(d=>d.value===i.value)?r.filter(d=>d.value!==i.value):[...r,i])})},i.value))}),s.jsxs("div",{className:"multi-select__buttons",children:[s.jsx(Y.Button,{appearance:"link",onClick:()=>{const i=e.filter(d=>!n.some(u=>u.value===d.value));a([...r,...i])},type:"button",children:"Select all"}),s.jsx(Y.Button,{appearance:"link",onClick:()=>{const i=r.filter(d=>n.some(u=>u.value===d.value));a(i)},type:"button",children:"Clear"})]})]})}),Vt=({disabled:e,selectedItems:r=[],label:n,onItemsUpdate:t,placeholder:a="Select items",required:o=!1,items:c=[],disabledItems:i=[],header:d})=>{const u=Y.useClickOutside(()=>{m(!1)});Y.useOnEscapePressed(()=>m(!1));const[g,m]=b.useState(!1),[w,F]=b.useState("");b.useEffect(()=>{g||F("")},[g]);const[I,A]=b.useState([]),$=r||I,G=f=>{const X=Array.from(new Set(f));A(X),t&&t(X)},oe=$.filter(f=>c.some(X=>X.value===f.value)).map(f=>s.jsx("li",{className:"multi-select__selected-item","aria-label":f.label,children:f.label},f.value)),L=b.useId(),B=b.useId();return s.jsx("div",{ref:u,children:s.jsxs("div",{className:"multi-select",children:[$.length>0&&s.jsx("ul",{className:"multi-select__selected-list","aria-label":"selected",children:oe}),s.jsx(Y.Input,{"aria-controls":L,"aria-expanded":g,id:B,role:"combobox",label:n,disabled:e,autoComplete:"off",onChange:f=>F(f.target.value),onFocus:()=>m(!0),placeholder:a,required:o,type:"text",value:w,className:"multi-select__input"}),s.jsx(en,{id:L,isOpen:g,items:w.length>0?c.filter(f=>f.label.includes(w)):c,selectedItems:$,disabledItems:i,header:d,updateItems:G})]})})};M.ContentSection=Ee,M.ExternalLink=un,M.FileUpload=Gt,M.FormSection=Ce,M.InputGroup=$e,M.MainToolbar=Le,M.Meter=vr,M.MultiSelect=Vt,M.MultiSelectDropdown=en,M.Navigation=K,M.NavigationBar=yr,M.NestedFormGroup=qn,M.Pagination=hr,M.PaginationContainer=Yn,M.Stepper=Hn,M.defaultFilledColors=on,M.meterColor=ce,M.testIds=fe,Object.defineProperty(M,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@canonical/maas-react-components",
3
3
  "description": "React components for use in MAAS UI projects.",
4
- "version": "1.17.0",
4
+ "version": "1.17.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/canonical/maas-react-components.git"
@@ -60,7 +60,7 @@
60
60
  "@storybook/react": "^7.6.7",
61
61
  "@storybook/react-vite": "^7.6.7",
62
62
  "@storybook/testing-library": "^0.2.2",
63
- "@storybook/theming": "7.6.7",
63
+ "@storybook/theming": "7.6.10",
64
64
  "@testing-library/jest-dom": "^6.1.3",
65
65
  "@testing-library/react": "^14.0.0",
66
66
  "@testing-library/user-event": "^14.5.1",
@@ -79,7 +79,7 @@
79
79
  "eslint-plugin-react-hooks": "^4.6.0",
80
80
  "eslint-plugin-storybook": "^0.6.15",
81
81
  "eslint-plugin-unused-imports": "^3.0.0",
82
- "husky": "8.0.0",
82
+ "husky": "8.0.3",
83
83
  "jsdom": "^22.1.0",
84
84
  "plop": "^4.0.0",
85
85
  "prettier": "^3.0.3",