@spscommerce/ds-react 4.34.1 → 4.34.2

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.
package/lib/index.cjs.js CHANGED
@@ -168,7 +168,7 @@
168
168
  </SpsAdvancedSearch>
169
169
  </>;
170
170
  }
171
- `}}}};var cv=self.crypto||self.msCrypto,co="-_",Tn=36;for(;Tn--;)co+=Tn.toString(36);Tn=36;for(;Tn---10;)co+=Tn.toString(36).toUpperCase();var dv=function(e){var t="",n=cv.getRandomValues(new Uint8Array(e||21));for(Tn=e||21;Tn--;)t+=co[n[Tn]&63];return t},Rn=dv;function na(e){return V.useRef(e||Rn())}function Rt(e,t){const n=na(e),a=V.useRef(`${n.current}_ctrl`);return V.useEffect(()=>{t&&(t.id=a.current,t.update())},[t]),{wrapperId:n.current,controlId:a.current}}const pv=H(I({},q),{focusInputOnClick:E.exports.bool,formMeta:ce(),formControl:ce(),inputRef:Wt()}),St=s.forwardRef((e,t)=>{const T=e,{className:n,children:a,focusInputOnClick:o,formControl:i,formMeta:l,inputRef:c}=T,u=J(T,["className","children","focusInputOnClick","formControl","formMeta","inputRef"]),p=s.useRef(),m=c||(t||p);function b(){m&&m!==t&&m.current&&m.current.focus()}const v=B("sps-form-group",(i&&i.isRequired()||l&&l.isRequired())&&"sps-form-group--required",(i&&!i.isValid()||l&&l.isVisibilyInvalid())&&"sps-form-group--error",n);return s.createElement("div",H(I({},u),{className:v,ref:t,tabIndex:-1,onClick:o?b:null}),a)});Object.assign(St,{spsFormComponentWrapperPropTypes:pv,displayName:"SpsFormComponentWrapper"});function Bc(e){return typeof e=="object"&&e!=null&&e.nodeType===1}function Fc(e,t){return(!t||e!=="hidden")&&e!=="visible"&&e!=="clip"}function po(e,t){if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){var n=getComputedStyle(e,null);return Fc(n.overflowY,t)||Fc(n.overflowX,t)||function(a){var o=function(i){if(!i.ownerDocument||!i.ownerDocument.defaultView)return null;try{return i.ownerDocument.defaultView.frameElement}catch{return null}}(a);return!!o&&(o.clientHeight<a.scrollHeight||o.clientWidth<a.scrollWidth)}(e)}return!1}function Ss(e,t,n,a,o,i,l,c){return i<e&&l>t||i>e&&l<t?0:i<=e&&c<=n||l>=t&&c>=n?i-e-a:l>t&&c<n||i<e&&c>n?l-t+o:0}function Ac(e,t){var n=window,a=t.scrollMode,o=t.block,i=t.inline,l=t.boundary,c=t.skipOverflowHiddenElements,u=typeof l=="function"?l:function(Ge){return Ge!==l};if(!Bc(e))throw new TypeError("Invalid target");for(var p=document.scrollingElement||document.documentElement,f=[],m=e;Bc(m)&&u(m);){if((m=m.parentElement)===p){f.push(m);break}m!=null&&m===document.body&&po(m)&&!po(document.documentElement)||m!=null&&po(m,c)&&f.push(m)}for(var b=n.visualViewport?n.visualViewport.width:innerWidth,v=n.visualViewport?n.visualViewport.height:innerHeight,T=window.scrollX||pageXOffset,k=window.scrollY||pageYOffset,g=e.getBoundingClientRect(),w=g.height,C=g.width,y=g.top,N=g.right,M=g.bottom,L=g.left,_=o==="start"||o==="nearest"?y:o==="end"?M:y+w/2,F=i==="center"?L+C/2:i==="end"?N:L,K=[],P=0;P<f.length;P++){var U=f[P],A=U.getBoundingClientRect(),W=A.height,z=A.width,X=A.top,ne=A.right,me=A.bottom,te=A.left;if(a==="if-needed"&&y>=0&&L>=0&&M<=v&&N<=b&&y>=X&&M<=me&&L>=te&&N<=ne)return K;var Z=getComputedStyle(U),Y=parseInt(Z.borderLeftWidth,10),Q=parseInt(Z.borderTopWidth,10),pe=parseInt(Z.borderRightWidth,10),xe=parseInt(Z.borderBottomWidth,10),Se=0,ae=0,ye="offsetWidth"in U?U.offsetWidth-U.clientWidth-Y-pe:0,qe="offsetHeight"in U?U.offsetHeight-U.clientHeight-Q-xe:0;if(p===U)Se=o==="start"?_:o==="end"?_-v:o==="nearest"?Ss(k,k+v,v,Q,xe,k+_,k+_+w,w):_-v/2,ae=i==="start"?F:i==="center"?F-b/2:i==="end"?F-b:Ss(T,T+b,b,Y,pe,T+F,T+F+C,C),Se=Math.max(0,Se+k),ae=Math.max(0,ae+T);else{Se=o==="start"?_-X-Q:o==="end"?_-me+xe+qe:o==="nearest"?Ss(X,me,W,Q,xe+qe,_,_+w,w):_-(X+W/2)+qe/2,ae=i==="start"?F-te-Y:i==="center"?F-(te+z/2)+ye/2:i==="end"?F-ne+pe+ye:Ss(te,ne,z,Y,pe+ye,F,F+C,C);var Ue=U.scrollLeft,je=U.scrollTop;_+=je-(Se=Math.max(0,Math.min(je+Se,U.scrollHeight-W+qe))),F+=Ue-(ae=Math.max(0,Math.min(Ue+ae,U.scrollWidth-z+ye)))}K.push({el:U,top:Se,left:ae})}return K}function Kc(e){return e===Object(e)&&Object.keys(e).length!==0}function uv(e,t){t===void 0&&(t="auto");var n="scrollBehavior"in document.body.style;e.forEach(function(a){var o=a.el,i=a.top,l=a.left;o.scroll&&n?o.scroll({top:i,left:l,behavior:t}):(o.scrollTop=i,o.scrollLeft=l)})}function mv(e){return e===!1?{block:"end",inline:"nearest"}:Kc(e)?e:{block:"start",inline:"nearest"}}function Vc(e,t){var n=!e.ownerDocument.documentElement.contains(e);if(Kc(t)&&typeof t.behavior=="function")return t.behavior(n?[]:Ac(e,t));if(!n){var a=mv(t);return uv(Ac(e,a),a.behavior)}}var fv=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:Vc});const hv={alt:"string",size:"SpinnerSize",title:"string"},gv=H(I({},q),{alt:E.exports.string,size:ge(O.SpinnerSize),title:E.exports.string});function vs(e){const m=e,{alt:t,className:n,size:a=O.SpinnerSize.MEDIUM,"data-testid":o,title:i,unsafelyReplaceClassName:l}=m,c=J(m,["alt","className","size","data-testid","title","unsafelyReplaceClassName"]),{t:u}=s.useContext(He),p=t||i||u("design-system:spinner.defaultAltText"),f=B(l||"sps-spinner",`sps-spinner--${a}`,n);return s.createElement("i",I({className:f,"data-testid":o,title:p},c))}Object.assign(vs,{props:hv,propTypes:gv,displayName:"SpsSpinner"});const bv=60;function ys(e){return typeof e=="undefined"?"inherit":`${e}px`}function $c(e){switch(e){case O.Position.TOP_LEFT:return O.Position.BOTTOM_LEFT;case O.Position.TOP_MIDDLE:return O.Position.BOTTOM_MIDDLE;case O.Position.TOP_RIGHT:return O.Position.BOTTOM_RIGHT;case O.Position.RIGHT_TOP:return O.Position.LEFT_TOP;case O.Position.RIGHT_MIDDLE:return O.Position.LEFT_MIDDLE;case O.Position.RIGHT_BOTTOM:return O.Position.LEFT_BOTTOM;case O.Position.BOTTOM_RIGHT:return O.Position.TOP_RIGHT;case O.Position.BOTTOM_MIDDLE:return O.Position.TOP_MIDDLE;case O.Position.BOTTOM_LEFT:return O.Position.TOP_LEFT;case O.Position.LEFT_BOTTOM:return O.Position.RIGHT_BOTTOM;case O.Position.LEFT_MIDDLE:return O.Position.RIGHT_MIDDLE;case O.Position.LEFT_TOP:return O.Position.RIGHT_TOP}}function Sv(e,t,n,a,o,i,l,c){const u=l&&l.current,p=u?u.scrollTop:window.pageYOffset,f=c?0:p,m=u?u.scrollLeft:window.pageXOffset,b=c?0:m,[v,T]=e.split(" ");let k,g,w,C;switch(v){case"top":w=t.height-n.top-f-i[0];break;case"left":g=t.width-n.left-b-i[0];break;case"right":C=n.right+b-i[0];break;case"bottom":k=n.bottom+f-i[0];break;default:throw new Error(`Invalid position ${e}`)}switch(T){case"left":C=n.left+b+i[1];break;case"top":k=n.top+f+i[1];break;case"middle":v==="top"||v==="bottom"?C=n.left+b+n.width/2-o/2+i[1]:(v==="left"||v==="right")&&(k=n.top+f+n.height/2-a.height/2+i[1]);break;case"bottom":w=t.height-n.bottom-f+i[1];break;case"right":g=t.width-n.right-b+i[1];break;default:throw new Error(`Invalid position ${e}`)}return[k,g,w,C]}function _a(e,t,n,{altPosition:a,setMinWidth:o=!1,setWidth:i=!1,parentElementRef:l,fixed:c=!1,offsets:u=[0,0]}){if(e.current&&t.current){const p=Math.max(document.documentElement.clientHeight,window.innerHeight||0),f=document.documentElement.getBoundingClientRect().width,m=l&&l.current?l.current:document.documentElement,b=c?{width:f,height:p,top:0,left:0,bottom:p,right:f}:m.getBoundingClientRect(),v=e.current.getBoundingClientRect(),T=t.current.getBoundingClientRect(),[k]=n.split(" ");let g=n;a&&(k==="top"&&T.top-v.height<bv||k==="right"&&T.right+v.width>f||k==="bottom"&&T.bottom+v.height>p||k==="left"&&T.left-v.width<0)&&(g=a);const w=o?Math.max(T.width,v.width):v.width,C=i?T.width:w,[y,N,M,L]=Sv(g,b,T,v,C,u,l,c),_={top:ys(y),right:ys(N),bottom:ys(M),left:ys(L)};return c&&(_.position="fixed",_.zIndex=O.ZStratum.BAR),o&&(_.minWidth=`${T.width}px`),i&&(_.width=`${T.width}px`),[_,g===a]}return[{},!1]}const kt=V.createContext(null);function aa(e,t=[]){const n=V.useContext(kt);return V.useMemo(()=>a=>{const i=n&&n.parentElementRef&&n.parentElementRef.current||document.body;let l,c=i.lastElementChild;for(;c!==i.firstElementChild;){if(c.hasAttribute("data-portalid")&&c.getAttribute("data-portalid")===e){l=c;break}c=c.previousElementSibling}if(l)l.nextElementSibling&&(i.removeChild(l),i.appendChild(l));else{l=document.createElement("div"),l.setAttribute("data-portalid",e);for(const u of t)l.classList.add(u);i.appendChild(l)}return oo.createPortal(a,l)},[n])}const vv={docs:{options:"Eventually<any[]> | (filter?: string) => Eventually<any[]>",captionKey:"string",disabledOptions:"any[]",comparisonKey:"string",tall:"boolean",textKey:"string",valueKey:"string",zeroState:"string"},propTypes:{captionKey:E.exports.string,comparisonKey:E.exports.string,disabledOptions:E.exports.arrayOf(E.exports.any),options:E.exports.oneOfType([E.exports.array,E.exports.instanceOf(Promise),re()]).isRequired,tall:E.exports.bool,textKey:E.exports.string,valueKey:E.exports.string,zeroState:E.exports.string}},yv={hideInlineSearch:E.exports.bool,onSearchChange:re(),search:E.exports.string,searchDebounce:E.exports.number,searchPlaceholder:E.exports.string,searchInputRef:Wt()},Tv=H(I(I(I({},q),vv.propTypes),yv),{attachTo:Wt().isRequired,conformWidth:E.exports.bool,id:E.exports.string.isRequired,isOpen:E.exports.bool,keepOpen:E.exports.bool,keyDown:ce(),nullOption:E.exports.string,offsets:E.exports.arrayOf(E.exports.number),onOptionListChanged:re(),onOptionSelected:re(),onPositionFlip:re(),onSelfToggle:re(),optionRole:E.exports.string,positionOverride:E.exports.arrayOf(ge(O.Position)),selectedOption:E.exports.any,specialAction:re(),ignoreWidthStyles:E.exports.bool,loading:E.exports.bool});async function Hc(e,t,n,a,o,i){n({pending:!0});const l=typeof e.options=="function"?e.options(t.value):e.options||[],c=l instanceof Promise?l:Promise.resolve(l);i.current=c;const u=await c||[];if(i.current!==c)return;let p=Array.from(u).filter(Boolean).map(f=>new O.SpsOptionListOption(f,typeof f=="function"?{textKey:"label",captionKey:"caption"}:{textKey:e.textKey,captionKey:e.captionKey}));if(e.nullOption&&p.unshift(new O.SpsOptionListOption(null,{text:e.nullOption})),t.value?(n({replacementPattern:new RegExp(t.value,"ig")}),p=p.filter(f=>new RegExp(t.value,"i").test(f.text))):n({replacementPattern:null}),e.disabledOptions)for(const f of p)e.disabledOptions.includes(f.value)&&(f.disabled=!0);a(Object.freeze(p)),e.onOptionListChanged&&e.onOptionListChanged(p.length),o(p.some(f=>f.value&&!!f.value.icon)),n({pending:!1})}function wv(e,t,n){const[a,o]=s.useState(Object.freeze([])),[i,l]=s.useState(!1),c=s.useRef(null),u=s.useMemo(()=>typeof e.options=="function"?D.debounce(Hc,typeof e.searchDebounce!="undefined"?e.searchDebounce:500):Hc,[e.options,e.disabledOptions]);return s.useEffect(()=>{u(e,t,n,o,l,c)},[e.options,t.value,e.disabledOptions]),[a,i]}class Ln{constructor(t,n){this.target=t,this.isPgStoppedInternal=!1,this.currentTarget=t,this.nativeEvent=new CustomEvent("change",n),Object.defineProperty(this.nativeEvent,"target",{value:t,writable:!1,configurable:!1,enumerable:!0})}get bubbles(){return this.nativeEvent.bubbles}get cancelable(){return this.nativeEvent.cancelable}get defaultPrevented(){return this.nativeEvent.defaultPrevented}get eventPhase(){return this.nativeEvent.eventPhase}get isTrusted(){return this.nativeEvent.isTrusted}get timeStamp(){return this.nativeEvent.timeStamp}get type(){return this.nativeEvent.type}preventDefault(){this.nativeEvent.preventDefault()}isDefaultPrevented(){return this.defaultPrevented}stopPropagation(){this.nativeEvent.stopPropagation(),this.isPgStoppedInternal=!0}isPropagationStopped(){return this.isPgStoppedInternal}persist(){throw new Error("This is not a real React ChangeEvent. React does not permit the creation of SyntheticEvents in userland.")}}function Cv(e,t){return I(I({},e),t)}function jt(e){return V.useReducer(Cv,e)}function Ev({hideInlineSearch:e,options:t,onSearchChange:n,search:a="",searchPlaceholder:o="Search\u2026",searchInputRef:i}){const[l,c]=jt({isAsync:typeof t=="function",pending:!1,value:a,replacementPattern:null}),u=s.useCallback(v=>{c({value:v.target.value}),n&&n(v)},[n]),p=s.useCallback(v=>{v.nativeEvent.stopImmediatePropagation(),v.stopPropagation()},[]),f=s.useCallback(v=>{v.nativeEvent.stopImmediatePropagation(),c({value:""}),n&&n(new Ln(i.current)),i.current&&i.current.focus()},[n]),m=v=>{!v||["Tab","Escape","Enter","Up","ArrowUp","Down","ArrowDown"].includes(v.key)||v.stopPropagation()};return s.useEffect(()=>{c({value:a})},[a]),[l.isAsync&&!e&&s.createElement("div",{className:"sps-option-list__search sps-form-group sps-text-input"},s.createElement("div",{className:"sps-form-control"},!l.value&&s.createElement("i",{className:"sps-icon sps-icon-filter sps-text-input__icon"}),s.createElement("input",{type:"text",className:"sps-text-input__input",placeholder:o,ref:i,value:l.value,onChange:u,onClick:p,onKeyDown:m}),l.value&&s.createElement("i",{className:"sps-icon sps-icon-x-circle sps-form-control__clear-btn",onClick:f}))),l,c]}const xv=Vc||fv,Dv=["Tab","Escape","Enter","Up","ArrowUp","Down","ArrowDown"],kv=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function Wc(e,t,n){return n?(e&&e[n])===(t&&t[n]):e===t}const Ma=s.forwardRef((e,t)=>{const ot=e,{captionKey:n,comparisonKey:a,disabledOptions:o,options:i,tall:l,textKey:c,valueKey:u,zeroState:p,hideInlineSearch:f,onSearchChange:m,search:b,searchDebounce:v,searchPlaceholder:T,attachTo:k,className:g,conformWidth:w,id:C,ignoreWidthStyles:y,isOpen:N,keepOpen:M,keyDown:L,nullOption:_,onOptionListChanged:F,onOptionSelected:K,onPositionFlip:P,onSelfToggle:U,optionRole:A,positionOverride:W,selectedOption:z,specialAction:X,unsafelyReplaceClassName:ne,loading:me}=ot,te=J(ot,["captionKey","comparisonKey","disabledOptions","options","tall","textKey","valueKey","zeroState","hideInlineSearch","onSearchChange","search","searchDebounce","searchPlaceholder","attachTo","className","conformWidth","id","ignoreWidthStyles","isOpen","keepOpen","keyDown","nullOption","onOptionListChanged","onOptionSelected","onPositionFlip","onSelfToggle","optionRole","positionOverride","selectedOption","specialAction","unsafelyReplaceClassName","loading"]),Z=s.useMemo(()=>X?new O.SpsOptionListOption(X,{textKey:"label",captionKey:"caption"}):null,[X]),[Y,Q]=s.useState(-1),[pe,xe]=s.useState(N),Se=t||s.useRef(null),ae=s.useRef(null),ye=s.useRef(null),qe=aa("sps-option-list-portal"),Ue=s.useContext(kt),[je,Ge]=W||[O.Position.BOTTOM_LEFT,O.Position.TOP_LEFT],[le,De]=pe?_a(Se,k,je,I({altPosition:Ge,setMinWidth:!y,setWidth:!y&&w},Ue)):[{},!1],ze=s.useRef(null),[mt,st,At]=Ev(H(I({},e),{searchInputRef:ze})),[Be,Kt]=wv(e,st,At);s.useEffect(()=>{Q(-1)},[st]);const _t=B(ne||"sps-option-list","z-stratum-dropdown",pe&&"sps-option-list--open",st.isAsync&&"sps-option-list--searchable",De&&"sps-option-list--opens-upward",X&&X.label&&"sps-option-list--has-special-action",g),ct=B(ne||"sps-option-list__options",l&&"sps-option-list__options--tall"),Ve=s.useCallback(()=>{pe||(xe(!0),ze.current&&ze.current.focus(),Q(-1),U&&U(!0))},[pe,U]),Ze=s.useCallback(()=>{pe&&(xe(!1),Q(-1),U&&U(!1))},[pe,U]),Tt=s.useCallback(se=>{se&&!se.disabled&&(typeof se.value=="function"?se.value():typeof K=="function"&&K(se.value),M||Ze())},[K,Ze]),Zt=s.useCallback((se,Ce)=>{se.stopPropagation(),Tt(Ce)},[Tt]),Xe=s.useCallback(se=>{switch(se.key){case"Tab":case"Escape":Ze();break;case"Enter":if(Y>-1){const Ce=Be[Y]||Z;se.preventDefault(),Ce&&typeof K=="function"&&typeof Ce.value=="function"?Ce.value():Ce&&Tt(Ce)}break;case"Up":case"ArrowUp":{let Ce=Y;De?Y<=-1?Ce=Be.length-1:Y===0?X&&(Ce=Be.length):Y<Be.length&&(Ce=Y-1):Y>-1&&(Ce=Y-1),Ce!==Y&&(se.preventDefault(),Q(Ce));break}case"Down":case"ArrowDown":{Ve();let Ce=Y;De?Y!==-1&&(Y>=Be.length?Ce=0:Y===Be.length-1?Ce=-1:Ce=Y+1):Y<Be.length-1+Number(!!X)&&(Ce=Y+1),Ce!==Y&&(se.preventDefault(),Q(Ce));break}default:Ve()}},[Ze,Ve,Y,Tt,K,De,Be]),Ta=s.useCallback(se=>{const Ce=Be.findIndex(gt=>{if(gt.textKey){const gn=gt.textKey;return gt.value[gn].toLowerCase().charAt([0])===se.key.toLocaleLowerCase()}return gt.value.toLowerCase().charAt([0])===se.key.toLocaleLowerCase()});Ce>-1&&Q(Ce)},[Be]),Xt=s.useCallback(se=>{!se||(Dv.includes(se.key)?Xe(se):kv.includes(se.key)&&Ta(se))},[Ze,Ve,Y,Tt,K,De,Be]);return s.useEffect(()=>{if(Ue!==null&&document.getElementsByClassName("sps-modal__body").length>0){const se=()=>{U(!1)},Ce=document.getElementsByClassName("sps-modal__body")[0];return Ce.addEventListener("scroll",se),()=>{Ce.removeEventListener("scroll",se)}}},[]),s.useEffect(()=>{ye.current&&xv(ye.current,{scrollMode:"if-needed",block:"nearest",inline:"nearest"})},[Y]),s.useEffect(()=>{xe(N),N?ze.current&&ze.current.focus():Q(-1)},[N]),s.useEffect(()=>{Xt(L)},[L]),s.useEffect(()=>{pe&&P&&P(De)},[pe]),qe(s.createElement("div",I({className:_t,id:C,"aria-activedescendant":Y>-1?`${C}-option-${Y}`:null,tabIndex:-1,ref:Se,style:le,onMouseLeave:()=>Q(-1)},te),mt,s.createElement("div",{className:ct,ref:ae},!me&&!st.pending&&p&&(st.value||!st.isAsync)&&Be.length===0&&s.createElement("div",{className:"sps-option-list__zero-state"},p),(me||st.pending)&&s.createElement("div",{className:"sps-option-list__loading"},s.createElement(vs,null)),!me&&!st.pending&&Be.map((se,Ce)=>{const gt=`${C}-option-${Ce}`;return s.createElement("a",{key:gt,id:gt,role:A,"aria-selected":Wc(se.value,z,a),href:se.href,className:B("sps-option-list__option",se.caption&&"sps-option-list__option--has-caption",se.disabled&&"sps-option-list__option--disabled",se.bold&&"sps-option-list__option--bold",Wc(se.value,z,a)&&"sps-option-list__option--selected",Y===Ce&&"sps-option-list__option--highlighted"),onClick:gn=>Zt(gn,se),onMouseOver:()=>Q(Ce),tabIndex:-1,ref:Y===Ce?ye:null},se.value&&se.value.icon&&s.createElement("i",{className:B("sps-icon","sps-option-list__option-icon",`sps-icon-${String(se.value.icon)}`)}),(!se.value||!se.value.icon&&Kt)&&s.createElement("span",{className:"sps-option-list__option-icon-spacer"}),s.createElement("span",{dangerouslySetInnerHTML:{__html:se.getHtml(st.replacementPattern)}}),se.caption&&s.createElement("div",{className:"sps-option-list__option-caption"},se.caption))})),Z&&X.label&&s.createElement("a",{className:B("sps-option-list__option","sps-option-list__special-action",Y===Be.length&&"sps-option-list__option--highlighted"),href:Z.href,onClick:se=>Zt(se,Z),onMouseOver:()=>Q(Be.length)},X.icon&&s.createElement("i",{className:B("sps-icon","sps-option-list__option-icon",`sps-icon-${String(X.icon)}`)}),!X.icon&&Kt&&s.createElement("span",{className:"sps-option-list__option-icon-spacer"}),s.createElement("span",null,X.label))))});Object.assign(Ma,{propTypes:Tv,displayName:"SpsOptionList"});function Lt(e=[],t=[]){const n=Array.isArray(e)?D.flatten(e):[e],a=t.map(i=>Array.isArray(i)?i:[i]),o=new Array(a.length+1).fill(null).map(()=>[]);for(const i of n){let l=!1;for(let c=0;c<a.length;c+=1)for(const{type:u,props:p={}}of a[c])if(i.type===u&&Object.keys(p).every(m=>p[m]===i.props[m])){l=!0,o[c].push(i);break}l||o[o.length-1].push(i)}return o}function Yc(e,t,n){const a=Object.entries(t).filter(([,i])=>typeof i!="string"&&i.deprecated).map(([i])=>i),o=a.map(i=>n[i]);s.useEffect(()=>{o.find(i=>typeof i!="undefined")&&console.warn(`The following prop(s) of ${e} are deprecated: ${a.join(", ")}`)},o)}function jc(e,t){const n=V.useRef(!1);V.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function Gc(e,t,n){const a=s.useRef(t(...n));s.useEffect(()=>(document.addEventListener(e,a.current),()=>document.removeEventListener(e,a.current)),[]),s.useEffect(()=>{document.removeEventListener(e,a.current),a.current=t(...n),document.addEventListener(e,a.current)},n)}function Nv(e,t,n){return function(o){!e.current.contains(o.target)&&!t.current.contains(o.target)&&n()}}function Oa(e,t){const n=s.useRef(!1),[a,o]=s.useState(!1);function i(){n.current?n.current=!1:o(!0)}const l=s.useCallback((c=!1)=>{o(!1),n.current=c},[o]);return Gc("click",Nv,[e,t,l]),{showPopup:a,doShowPopup:i,doHidePopup:l}}const Iv={debounce:"number",disabled:"boolean",formMeta:"SpsFormFieldMeta<string>",icon:"SpsIcon",onChange:"React.ChangeEventHandler",placeholder:"string",suggestions:{type:`
171
+ `}}}};var cv=self.crypto||self.msCrypto,co="-_",Tn=36;for(;Tn--;)co+=Tn.toString(36);Tn=36;for(;Tn---10;)co+=Tn.toString(36).toUpperCase();var dv=function(e){var t="",n=cv.getRandomValues(new Uint8Array(e||21));for(Tn=e||21;Tn--;)t+=co[n[Tn]&63];return t},Rn=dv;function na(e){return V.useRef(e||Rn())}function Rt(e,t){const n=na(e),a=V.useRef(`${n.current}_ctrl`);return V.useEffect(()=>{t&&(t.id=a.current,t.update())},[t]),{wrapperId:n.current,controlId:a.current}}const pv=H(I({},q),{focusInputOnClick:E.exports.bool,formMeta:ce(),formControl:ce(),inputRef:Wt()}),St=s.forwardRef((e,t)=>{const T=e,{className:n,children:a,focusInputOnClick:o,formControl:i,formMeta:l,inputRef:c}=T,u=J(T,["className","children","focusInputOnClick","formControl","formMeta","inputRef"]),p=s.useRef(),m=c||(t||p);function b(){m&&m!==t&&m.current&&m.current.focus()}const v=B("sps-form-group",(i&&i.isRequired()||l&&l.isRequired())&&"sps-form-group--required",(i&&!i.isValid()||l&&l.isVisibilyInvalid())&&"sps-form-group--error",n);return s.createElement("div",H(I({},u),{className:v,ref:t,tabIndex:-1,onClick:o?b:null}),a)});Object.assign(St,{spsFormComponentWrapperPropTypes:pv,displayName:"SpsFormComponentWrapper"});function Bc(e){return typeof e=="object"&&e!=null&&e.nodeType===1}function Fc(e,t){return(!t||e!=="hidden")&&e!=="visible"&&e!=="clip"}function po(e,t){if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){var n=getComputedStyle(e,null);return Fc(n.overflowY,t)||Fc(n.overflowX,t)||function(a){var o=function(i){if(!i.ownerDocument||!i.ownerDocument.defaultView)return null;try{return i.ownerDocument.defaultView.frameElement}catch{return null}}(a);return!!o&&(o.clientHeight<a.scrollHeight||o.clientWidth<a.scrollWidth)}(e)}return!1}function Ss(e,t,n,a,o,i,l,c){return i<e&&l>t||i>e&&l<t?0:i<=e&&c<=n||l>=t&&c>=n?i-e-a:l>t&&c<n||i<e&&c>n?l-t+o:0}function Ac(e,t){var n=window,a=t.scrollMode,o=t.block,i=t.inline,l=t.boundary,c=t.skipOverflowHiddenElements,u=typeof l=="function"?l:function(Ge){return Ge!==l};if(!Bc(e))throw new TypeError("Invalid target");for(var p=document.scrollingElement||document.documentElement,f=[],m=e;Bc(m)&&u(m);){if((m=m.parentElement)===p){f.push(m);break}m!=null&&m===document.body&&po(m)&&!po(document.documentElement)||m!=null&&po(m,c)&&f.push(m)}for(var b=n.visualViewport?n.visualViewport.width:innerWidth,v=n.visualViewport?n.visualViewport.height:innerHeight,T=window.scrollX||pageXOffset,k=window.scrollY||pageYOffset,g=e.getBoundingClientRect(),w=g.height,C=g.width,y=g.top,N=g.right,M=g.bottom,L=g.left,_=o==="start"||o==="nearest"?y:o==="end"?M:y+w/2,F=i==="center"?L+C/2:i==="end"?N:L,K=[],P=0;P<f.length;P++){var U=f[P],A=U.getBoundingClientRect(),W=A.height,z=A.width,X=A.top,ne=A.right,me=A.bottom,te=A.left;if(a==="if-needed"&&y>=0&&L>=0&&M<=v&&N<=b&&y>=X&&M<=me&&L>=te&&N<=ne)return K;var Z=getComputedStyle(U),Y=parseInt(Z.borderLeftWidth,10),Q=parseInt(Z.borderTopWidth,10),pe=parseInt(Z.borderRightWidth,10),xe=parseInt(Z.borderBottomWidth,10),Se=0,ae=0,ye="offsetWidth"in U?U.offsetWidth-U.clientWidth-Y-pe:0,qe="offsetHeight"in U?U.offsetHeight-U.clientHeight-Q-xe:0;if(p===U)Se=o==="start"?_:o==="end"?_-v:o==="nearest"?Ss(k,k+v,v,Q,xe,k+_,k+_+w,w):_-v/2,ae=i==="start"?F:i==="center"?F-b/2:i==="end"?F-b:Ss(T,T+b,b,Y,pe,T+F,T+F+C,C),Se=Math.max(0,Se+k),ae=Math.max(0,ae+T);else{Se=o==="start"?_-X-Q:o==="end"?_-me+xe+qe:o==="nearest"?Ss(X,me,W,Q,xe+qe,_,_+w,w):_-(X+W/2)+qe/2,ae=i==="start"?F-te-Y:i==="center"?F-(te+z/2)+ye/2:i==="end"?F-ne+pe+ye:Ss(te,ne,z,Y,pe+ye,F,F+C,C);var Ue=U.scrollLeft,je=U.scrollTop;_+=je-(Se=Math.max(0,Math.min(je+Se,U.scrollHeight-W+qe))),F+=Ue-(ae=Math.max(0,Math.min(Ue+ae,U.scrollWidth-z+ye)))}K.push({el:U,top:Se,left:ae})}return K}function Kc(e){return e===Object(e)&&Object.keys(e).length!==0}function uv(e,t){t===void 0&&(t="auto");var n="scrollBehavior"in document.body.style;e.forEach(function(a){var o=a.el,i=a.top,l=a.left;o.scroll&&n?o.scroll({top:i,left:l,behavior:t}):(o.scrollTop=i,o.scrollLeft=l)})}function mv(e){return e===!1?{block:"end",inline:"nearest"}:Kc(e)?e:{block:"start",inline:"nearest"}}function Vc(e,t){var n=!e.ownerDocument.documentElement.contains(e);if(Kc(t)&&typeof t.behavior=="function")return t.behavior(n?[]:Ac(e,t));if(!n){var a=mv(t);return uv(Ac(e,a),a.behavior)}}var fv=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:Vc});const hv={alt:"string",size:"SpinnerSize",title:"string"},gv=H(I({},q),{alt:E.exports.string,size:ge(O.SpinnerSize),title:E.exports.string});function vs(e){const m=e,{alt:t,className:n,size:a=O.SpinnerSize.MEDIUM,"data-testid":o,title:i,unsafelyReplaceClassName:l}=m,c=J(m,["alt","className","size","data-testid","title","unsafelyReplaceClassName"]),{t:u}=s.useContext(He),p=t||i||u("design-system:spinner.defaultAltText"),f=B(l||"sps-spinner",`sps-spinner--${a}`,n);return s.createElement("i",I({className:f,"data-testid":o,title:p},c))}Object.assign(vs,{props:hv,propTypes:gv,displayName:"SpsSpinner"});const bv=60;function ys(e){return typeof e=="undefined"?"inherit":`${e}px`}function $c(e){switch(e){case O.Position.TOP_LEFT:return O.Position.BOTTOM_LEFT;case O.Position.TOP_MIDDLE:return O.Position.BOTTOM_MIDDLE;case O.Position.TOP_RIGHT:return O.Position.BOTTOM_RIGHT;case O.Position.RIGHT_TOP:return O.Position.LEFT_TOP;case O.Position.RIGHT_MIDDLE:return O.Position.LEFT_MIDDLE;case O.Position.RIGHT_BOTTOM:return O.Position.LEFT_BOTTOM;case O.Position.BOTTOM_RIGHT:return O.Position.TOP_RIGHT;case O.Position.BOTTOM_MIDDLE:return O.Position.TOP_MIDDLE;case O.Position.BOTTOM_LEFT:return O.Position.TOP_LEFT;case O.Position.LEFT_BOTTOM:return O.Position.RIGHT_BOTTOM;case O.Position.LEFT_MIDDLE:return O.Position.RIGHT_MIDDLE;case O.Position.LEFT_TOP:return O.Position.RIGHT_TOP}}function Sv(e,t,n,a,o,i,l,c){const u=l&&l.current,p=u?u.scrollTop:window.pageYOffset,f=c?0:p,m=u?u.scrollLeft:window.pageXOffset,b=c?0:m,[v,T]=e.split(" ");let k,g,w,C;switch(v){case"top":w=t.height-n.top-f-i[0];break;case"left":g=t.width-n.left-b-i[0];break;case"right":C=n.right+b-i[0];break;case"bottom":k=n.bottom+f-i[0];break;default:throw new Error(`Invalid position ${e}`)}switch(T){case"left":C=n.left+b+i[1];break;case"top":k=n.top+f+i[1];break;case"middle":v==="top"||v==="bottom"?C=n.left+b+n.width/2-o/2+i[1]:(v==="left"||v==="right")&&(k=n.top+f+n.height/2-a.height/2+i[1]);break;case"bottom":w=t.height-n.bottom-f+i[1];break;case"right":g=t.width-n.right-b+i[1];break;default:throw new Error(`Invalid position ${e}`)}return[k,g,w,C]}function _a(e,t,n,{altPosition:a,setMinWidth:o=!1,setWidth:i=!1,parentElementRef:l,fixed:c=!1,offsets:u=[0,0]}){if(e.current&&t.current){const p=Math.max(document.documentElement.clientHeight,window.innerHeight||0),f=document.documentElement.getBoundingClientRect().width,m=l&&l.current?l.current:document.documentElement,b=c?{width:f,height:p,top:0,left:0,bottom:p,right:f}:m.getBoundingClientRect(),v=e.current.getBoundingClientRect(),T=t.current.getBoundingClientRect(),[k]=n.split(" ");let g=n;a&&(k==="top"&&T.top-v.height<bv||k==="right"&&T.right+v.width>f||k==="bottom"&&T.bottom+v.height>p||k==="left"&&T.left-v.width<0)&&(g=a);const w=o?Math.max(T.width,v.width):v.width,C=i?T.width:w,[y,N,M,L]=Sv(g,b,T,v,C,u,l,c),_={top:ys(y),right:ys(N),bottom:ys(M),left:ys(L)};return c&&(_.position="fixed",_.zIndex=O.ZStratum.BAR),o&&(_.minWidth=`${T.width}px`),i&&(_.width=`${T.width}px`),[_,g===a]}return[{},!1]}const kt=V.createContext(null);function aa(e,t=[]){const n=V.useContext(kt);return V.useMemo(()=>a=>{const i=n&&n.parentElementRef&&n.parentElementRef.current||document.body;let l,c=i.lastElementChild;for(;c!==i.firstElementChild;){if(c.hasAttribute("data-portalid")&&c.getAttribute("data-portalid")===e){l=c;break}c=c.previousElementSibling}if(l)l.nextElementSibling&&(i.removeChild(l),i.appendChild(l));else{l=document.createElement("div"),l.setAttribute("data-portalid",e);for(const u of t)l.classList.add(u);i.appendChild(l)}return oo.createPortal(a,l)},[n])}const vv={docs:{options:"Eventually<any[]> | (filter?: string) => Eventually<any[]>",captionKey:"string",disabledOptions:"any[]",comparisonKey:"string",tall:"boolean",textKey:"string",valueKey:"string",zeroState:"string"},propTypes:{captionKey:E.exports.string,comparisonKey:E.exports.string,disabledOptions:E.exports.arrayOf(E.exports.any),options:E.exports.oneOfType([E.exports.array,E.exports.instanceOf(Promise),re()]).isRequired,tall:E.exports.bool,textKey:E.exports.string,valueKey:E.exports.string,zeroState:E.exports.string}},yv={hideInlineSearch:E.exports.bool,onSearchChange:re(),search:E.exports.string,searchDebounce:E.exports.number,searchPlaceholder:E.exports.string,searchInputRef:Wt()},Tv=H(I(I(I({},q),vv.propTypes),yv),{attachTo:Wt().isRequired,conformWidth:E.exports.bool,id:E.exports.string.isRequired,isOpen:E.exports.bool,keepOpen:E.exports.bool,keyDown:ce(),nullOption:E.exports.string,offsets:E.exports.arrayOf(E.exports.number),onOptionListChanged:re(),onOptionSelected:re(),onPositionFlip:re(),onSelfToggle:re(),optionRole:E.exports.string,positionOverride:E.exports.arrayOf(ge(O.Position)),selectedOption:E.exports.any,specialAction:re(),ignoreWidthStyles:E.exports.bool,loading:E.exports.bool});async function Hc(e,t,n,a,o,i){const l=typeof e.options=="function"?e.options(t.value):e.options||[],c=l instanceof Promise;n({pending:c}),i.current=c?l:null;const u=c?await l||[]:l||[];if(c&&i.current!==l)return;let p=Array.from(u).filter(Boolean).map(f=>new O.SpsOptionListOption(f,typeof f=="function"?{textKey:"label",captionKey:"caption"}:{textKey:e.textKey,captionKey:e.captionKey}));if(e.nullOption&&p.unshift(new O.SpsOptionListOption(null,{text:e.nullOption})),t.value?(n({replacementPattern:new RegExp(t.value,"ig")}),p=p.filter(f=>new RegExp(t.value,"i").test(f.text))):n({replacementPattern:null}),e.disabledOptions)for(const f of p)e.disabledOptions.includes(f.value)&&(f.disabled=!0);a(Object.freeze(p)),e.onOptionListChanged&&e.onOptionListChanged(p.length),o(p.some(f=>f.value&&!!f.value.icon)),n({pending:!1})}function wv(e,t,n){const[a,o]=s.useState(Object.freeze([])),[i,l]=s.useState(!1),c=s.useRef(null),u=s.useMemo(()=>typeof e.options=="function"?D.debounce(Hc,typeof e.searchDebounce!="undefined"?e.searchDebounce:500):Hc,[e.options,e.disabledOptions]);return s.useEffect(()=>{u(e,t,n,o,l,c)},[e.options,t.value,e.disabledOptions]),[a,i]}class Ln{constructor(t,n){this.target=t,this.isPgStoppedInternal=!1,this.currentTarget=t,this.nativeEvent=new CustomEvent("change",n),Object.defineProperty(this.nativeEvent,"target",{value:t,writable:!1,configurable:!1,enumerable:!0})}get bubbles(){return this.nativeEvent.bubbles}get cancelable(){return this.nativeEvent.cancelable}get defaultPrevented(){return this.nativeEvent.defaultPrevented}get eventPhase(){return this.nativeEvent.eventPhase}get isTrusted(){return this.nativeEvent.isTrusted}get timeStamp(){return this.nativeEvent.timeStamp}get type(){return this.nativeEvent.type}preventDefault(){this.nativeEvent.preventDefault()}isDefaultPrevented(){return this.defaultPrevented}stopPropagation(){this.nativeEvent.stopPropagation(),this.isPgStoppedInternal=!0}isPropagationStopped(){return this.isPgStoppedInternal}persist(){throw new Error("This is not a real React ChangeEvent. React does not permit the creation of SyntheticEvents in userland.")}}function Cv(e,t){return I(I({},e),t)}function jt(e){return V.useReducer(Cv,e)}function Ev({hideInlineSearch:e,options:t,onSearchChange:n,search:a="",searchPlaceholder:o="Search\u2026",searchInputRef:i}){const[l,c]=jt({isAsync:typeof t=="function",pending:!1,value:a,replacementPattern:null}),u=s.useCallback(v=>{c({value:v.target.value}),n&&n(v)},[n]),p=s.useCallback(v=>{v.nativeEvent.stopImmediatePropagation(),v.stopPropagation()},[]),f=s.useCallback(v=>{v.nativeEvent.stopImmediatePropagation(),c({value:""}),n&&n(new Ln(i.current)),i.current&&i.current.focus()},[n]),m=v=>{!v||["Tab","Escape","Enter","Up","ArrowUp","Down","ArrowDown"].includes(v.key)||v.stopPropagation()};return s.useEffect(()=>{c({value:a})},[a]),[l.isAsync&&!e&&s.createElement("div",{className:"sps-option-list__search sps-form-group sps-text-input"},s.createElement("div",{className:"sps-form-control"},!l.value&&s.createElement("i",{className:"sps-icon sps-icon-filter sps-text-input__icon"}),s.createElement("input",{type:"text",className:"sps-text-input__input",placeholder:o,ref:i,value:l.value,onChange:u,onClick:p,onKeyDown:m}),l.value&&s.createElement("i",{className:"sps-icon sps-icon-x-circle sps-form-control__clear-btn",onClick:f}))),l,c]}const xv=Vc||fv,Dv=["Tab","Escape","Enter","Up","ArrowUp","Down","ArrowDown"],kv=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function Wc(e,t,n){return n?(e&&e[n])===(t&&t[n]):e===t}const Ma=s.forwardRef((e,t)=>{const ot=e,{captionKey:n,comparisonKey:a,disabledOptions:o,options:i,tall:l,textKey:c,valueKey:u,zeroState:p,hideInlineSearch:f,onSearchChange:m,search:b,searchDebounce:v,searchPlaceholder:T,attachTo:k,className:g,conformWidth:w,id:C,ignoreWidthStyles:y,isOpen:N,keepOpen:M,keyDown:L,nullOption:_,onOptionListChanged:F,onOptionSelected:K,onPositionFlip:P,onSelfToggle:U,optionRole:A,positionOverride:W,selectedOption:z,specialAction:X,unsafelyReplaceClassName:ne,loading:me}=ot,te=J(ot,["captionKey","comparisonKey","disabledOptions","options","tall","textKey","valueKey","zeroState","hideInlineSearch","onSearchChange","search","searchDebounce","searchPlaceholder","attachTo","className","conformWidth","id","ignoreWidthStyles","isOpen","keepOpen","keyDown","nullOption","onOptionListChanged","onOptionSelected","onPositionFlip","onSelfToggle","optionRole","positionOverride","selectedOption","specialAction","unsafelyReplaceClassName","loading"]),Z=s.useMemo(()=>X?new O.SpsOptionListOption(X,{textKey:"label",captionKey:"caption"}):null,[X]),[Y,Q]=s.useState(-1),[pe,xe]=s.useState(N),Se=t||s.useRef(null),ae=s.useRef(null),ye=s.useRef(null),qe=aa("sps-option-list-portal"),Ue=s.useContext(kt),[je,Ge]=W||[O.Position.BOTTOM_LEFT,O.Position.TOP_LEFT],[le,De]=pe?_a(Se,k,je,I({altPosition:Ge,setMinWidth:!y,setWidth:!y&&w},Ue)):[{},!1],ze=s.useRef(null),[mt,st,At]=Ev(H(I({},e),{searchInputRef:ze})),[Be,Kt]=wv(e,st,At);s.useEffect(()=>{Q(-1)},[st]);const _t=B(ne||"sps-option-list","z-stratum-dropdown",pe&&"sps-option-list--open",st.isAsync&&"sps-option-list--searchable",De&&"sps-option-list--opens-upward",X&&X.label&&"sps-option-list--has-special-action",g),ct=B(ne||"sps-option-list__options",l&&"sps-option-list__options--tall"),Ve=s.useCallback(()=>{pe||(xe(!0),ze.current&&ze.current.focus(),Q(-1),U&&U(!0))},[pe,U]),Ze=s.useCallback(()=>{pe&&(xe(!1),Q(-1),U&&U(!1))},[pe,U]),Tt=s.useCallback(se=>{se&&!se.disabled&&(typeof se.value=="function"?se.value():typeof K=="function"&&K(se.value),M||Ze())},[K,Ze]),Zt=s.useCallback((se,Ce)=>{se.stopPropagation(),Tt(Ce)},[Tt]),Xe=s.useCallback(se=>{switch(se.key){case"Tab":case"Escape":Ze();break;case"Enter":if(Y>-1){const Ce=Be[Y]||Z;se.preventDefault(),Ce&&typeof K=="function"&&typeof Ce.value=="function"?Ce.value():Ce&&Tt(Ce)}break;case"Up":case"ArrowUp":{let Ce=Y;De?Y<=-1?Ce=Be.length-1:Y===0?X&&(Ce=Be.length):Y<Be.length&&(Ce=Y-1):Y>-1&&(Ce=Y-1),Ce!==Y&&(se.preventDefault(),Q(Ce));break}case"Down":case"ArrowDown":{Ve();let Ce=Y;De?Y!==-1&&(Y>=Be.length?Ce=0:Y===Be.length-1?Ce=-1:Ce=Y+1):Y<Be.length-1+Number(!!X)&&(Ce=Y+1),Ce!==Y&&(se.preventDefault(),Q(Ce));break}default:Ve()}},[Ze,Ve,Y,Tt,K,De,Be]),Ta=s.useCallback(se=>{const Ce=Be.findIndex(gt=>{if(gt.textKey){const gn=gt.textKey;return gt.value[gn].toLowerCase().charAt([0])===se.key.toLocaleLowerCase()}return gt.value.toLowerCase().charAt([0])===se.key.toLocaleLowerCase()});Ce>-1&&Q(Ce)},[Be]),Xt=s.useCallback(se=>{!se||(Dv.includes(se.key)?Xe(se):kv.includes(se.key)&&Ta(se))},[Ze,Ve,Y,Tt,K,De,Be]);return s.useEffect(()=>{if(Ue!==null&&document.getElementsByClassName("sps-modal__body").length>0){const se=()=>{U(!1)},Ce=document.getElementsByClassName("sps-modal__body")[0];return Ce.addEventListener("scroll",se),()=>{Ce.removeEventListener("scroll",se)}}},[]),s.useEffect(()=>{ye.current&&xv(ye.current,{scrollMode:"if-needed",block:"nearest",inline:"nearest"})},[Y]),s.useEffect(()=>{xe(N),N?ze.current&&ze.current.focus():Q(-1)},[N]),s.useEffect(()=>{Xt(L)},[L]),s.useEffect(()=>{pe&&P&&P(De)},[pe]),qe(s.createElement("div",I({className:_t,id:C,"aria-activedescendant":Y>-1?`${C}-option-${Y}`:null,tabIndex:-1,ref:Se,style:le,onMouseLeave:()=>Q(-1)},te),mt,s.createElement("div",{className:ct,ref:ae},!me&&!st.pending&&p&&(st.value||!st.isAsync)&&Be.length===0&&s.createElement("div",{className:"sps-option-list__zero-state"},p),(me||st.pending)&&s.createElement("div",{className:"sps-option-list__loading"},s.createElement(vs,null)),!me&&!st.pending&&Be.map((se,Ce)=>{const gt=`${C}-option-${Ce}`;return s.createElement("a",{key:gt,id:gt,role:A,"aria-selected":Wc(se.value,z,a),href:se.href,className:B("sps-option-list__option",se.caption&&"sps-option-list__option--has-caption",se.disabled&&"sps-option-list__option--disabled",se.bold&&"sps-option-list__option--bold",Wc(se.value,z,a)&&"sps-option-list__option--selected",Y===Ce&&"sps-option-list__option--highlighted"),onClick:gn=>Zt(gn,se),onMouseOver:()=>Q(Ce),tabIndex:-1,ref:Y===Ce?ye:null},se.value&&se.value.icon&&s.createElement("i",{className:B("sps-icon","sps-option-list__option-icon",`sps-icon-${String(se.value.icon)}`)}),(!se.value||!se.value.icon&&Kt)&&s.createElement("span",{className:"sps-option-list__option-icon-spacer"}),s.createElement("span",{dangerouslySetInnerHTML:{__html:se.getHtml(st.replacementPattern)}}),se.caption&&s.createElement("div",{className:"sps-option-list__option-caption"},se.caption))})),Z&&X.label&&s.createElement("a",{className:B("sps-option-list__option","sps-option-list__special-action",Y===Be.length&&"sps-option-list__option--highlighted"),href:Z.href,onClick:se=>Zt(se,Z),onMouseOver:()=>Q(Be.length)},X.icon&&s.createElement("i",{className:B("sps-icon","sps-option-list__option-icon",`sps-icon-${String(X.icon)}`)}),!X.icon&&Kt&&s.createElement("span",{className:"sps-option-list__option-icon-spacer"}),s.createElement("span",null,X.label))))});Object.assign(Ma,{propTypes:Tv,displayName:"SpsOptionList"});function Lt(e=[],t=[]){const n=Array.isArray(e)?D.flatten(e):[e],a=t.map(i=>Array.isArray(i)?i:[i]),o=new Array(a.length+1).fill(null).map(()=>[]);for(const i of n){let l=!1;for(let c=0;c<a.length;c+=1)for(const{type:u,props:p={}}of a[c])if(i.type===u&&Object.keys(p).every(m=>p[m]===i.props[m])){l=!0,o[c].push(i);break}l||o[o.length-1].push(i)}return o}function Yc(e,t,n){const a=Object.entries(t).filter(([,i])=>typeof i!="string"&&i.deprecated).map(([i])=>i),o=a.map(i=>n[i]);s.useEffect(()=>{o.find(i=>typeof i!="undefined")&&console.warn(`The following prop(s) of ${e} are deprecated: ${a.join(", ")}`)},o)}function jc(e,t){const n=V.useRef(!1);V.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function Gc(e,t,n){const a=s.useRef(t(...n));s.useEffect(()=>(document.addEventListener(e,a.current),()=>document.removeEventListener(e,a.current)),[]),s.useEffect(()=>{document.removeEventListener(e,a.current),a.current=t(...n),document.addEventListener(e,a.current)},n)}function Nv(e,t,n){return function(o){!e.current.contains(o.target)&&!t.current.contains(o.target)&&n()}}function Oa(e,t){const n=s.useRef(!1),[a,o]=s.useState(!1);function i(){n.current?n.current=!1:o(!0)}const l=s.useCallback((c=!1)=>{o(!1),n.current=c},[o]);return Gc("click",Nv,[e,t,l]),{showPopup:a,doShowPopup:i,doHidePopup:l}}const Iv={debounce:"number",disabled:"boolean",formMeta:"SpsFormFieldMeta<string>",icon:"SpsIcon",onChange:"React.ChangeEventHandler",placeholder:"string",suggestions:{type:`
172
172
  Eventually<Iterable<string>>
173
173
  | ((filter?: string) => Eventually<Iterable<string>>)
174
174
  `,required:!0},tallOptionList:"boolean",value:"string",zeroState:"string",loading:"boolean"},_v=H(I({},q),{debounce:E.exports.number,disabled:E.exports.bool,formControl:ce(),formMeta:ce(),icon:ge(O.SpsIcon),onChange:re(),placeholder:E.exports.string,suggestions:E.exports.oneOfType([E.exports.arrayOf(E.exports.string),E.exports.instanceOf(Promise),re()]).isRequired,tallOptionList:E.exports.bool,value:E.exports.string,zeroState:E.exports.string,loading:E.exports.bool});function Ts(g){var w=g,{className:e,debounce:t=0,disabled:n,formControl:a,formMeta:o,onChange:i,icon:l,id:c,placeholder:u="",suggestions:p,unsafelyReplaceClassName:f,tallOptionList:m,value:b="",zeroState:v,loading:T}=w,k=J(w,["className","debounce","disabled","formControl","formMeta","onChange","icon","id","placeholder","suggestions","unsafelyReplaceClassName","tallOptionList","value","zeroState","loading"]);const C=o||a,{wrapperId:y,controlId:N}=Rt(c,C),[M,L]=jt({keyDown:null,opensUpward:!1}),_=s.useRef(),F=s.useRef(),K=s.useRef(),{showPopup:P,doShowPopup:U,doHidePopup:A}=Oa(_,K);function W(Y,Q){C&&(C.setValue(Y),C.markAsDirty()),i&&i(Q||new Ln({value:Y}))}function z(Y){F.current.value="",W(""),Y.stopPropagation()}function X(Y){W(Y.target.value,Y)}function ne(Y){n||(["Up","ArrowUp","Down","ArrowDown","Enter"].indexOf(Y.key)>-1&&(Y.preventDefault(),Y.persist()),Y.stopPropagation(),L({keyDown:Y})),Y.key==="Tab"&&A()}function me(Y){Y?U():A()}function te(Y){L({opensUpward:Y})}const Z=B(f||"sps-autocomplete",P&&"sps-autocomplete--open",P&&"z-stratum-dropdown",M.opensUpward&&"sps-autocomplete--opens-upward",n&&"sps-form-control--disabled",e);return s.createElement(St,{id:y,className:Z,formControl:a,formMeta:o,inputRef:F,ref:_,focusInputOnClick:!0,onClick:Y=>Y.nativeEvent.stopImmediatePropagation()},s.createElement("div",{className:"sps-text-input"},s.createElement("div",{className:"sps-form-control"},l&&s.createElement("i",{className:B("sps-text-input__icon","sps-icon",`sps-icon-${l}`)}),s.createElement("input",I({type:"text",ref:F,value:b,className:"sps-text-input__input",placeholder:u,onFocus:U,onClick:U,onChange:X,onKeyDown:ne,disabled:n,id:N},k)),b&&!n&&s.createElement("i",{className:"sps-icon sps-icon-x-circle sps-form-control__clear-btn",onClick:Y=>z(Y)}))),s.createElement(Ma,{id:`${y}_options`,ref:K,attachTo:_,isOpen:P,options:p,hideInlineSearch:!0,keyDown:M.keyDown,onOptionSelected:W,onPositionFlip:te,onSelfToggle:me,offsets:[1,0],search:b,searchDebounce:t,tall:m,zeroState:v,loading:T}))}Object.assign(Ts,{props:Iv,propTypes:_v,displayName:"SpsAutocomplete"});const Uc={basic:{label:"Basic",examples:{basic:{react:D.code`
package/lib/index.es.js CHANGED
@@ -1027,12 +1027,12 @@ const propTypes$1H = __spreadProps(__spreadValues(__spreadValues(__spreadValues(
1027
1027
  loading: propTypes$1L.exports.bool
1028
1028
  });
1029
1029
  async function updateOptions(props2, searchState, searchStatePatch, setOptionList, setAnyOptionHasIcon, promiseRef) {
1030
- searchStatePatch({ pending: true });
1031
- const fetchedOptions = typeof props2.options === "function" ? props2.options(searchState.value) : props2.options || [];
1032
- const resultPromise = fetchedOptions instanceof Promise ? fetchedOptions : Promise.resolve(fetchedOptions);
1033
- promiseRef.current = resultPromise;
1034
- const result = await resultPromise || [];
1035
- if (promiseRef.current !== resultPromise) {
1030
+ const options = typeof props2.options === "function" ? props2.options(searchState.value) : props2.options || [];
1031
+ const areOptionsPromise = options instanceof Promise;
1032
+ searchStatePatch({ pending: areOptionsPromise });
1033
+ promiseRef.current = areOptionsPromise ? options : null;
1034
+ const result = areOptionsPromise ? await options || [] : options || [];
1035
+ if (areOptionsPromise && promiseRef.current !== options) {
1036
1036
  return;
1037
1037
  }
1038
1038
  let newOpts = Array.from(result).filter(Boolean).map((thing) => new SpsOptionListOption(thing, typeof thing === "function" ? {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spscommerce/ds-react",
3
3
  "description": "SPS Design System React components",
4
- "version": "4.34.1",
4
+ "version": "4.34.2",
5
5
  "author": "SPS Commerce",
6
6
  "license": "UNLICENSED",
7
7
  "repository": "https://github.com/spscommerce/design-system/tree/main/packages/@spscommerce/ds-react",
@@ -28,10 +28,10 @@
28
28
  },
29
29
  "peerDependencies": {
30
30
  "@react-stately/collections": "^3.3.3",
31
- "@spscommerce/ds-colors": "4.34.1",
32
- "@spscommerce/ds-shared": "4.34.1",
33
- "@spscommerce/positioning": "4.34.1",
34
- "@spscommerce/utils": "4.34.1",
31
+ "@spscommerce/ds-colors": "4.34.2",
32
+ "@spscommerce/ds-shared": "4.34.2",
33
+ "@spscommerce/positioning": "4.34.2",
34
+ "@spscommerce/utils": "4.34.2",
35
35
  "moment": "^2.25.3",
36
36
  "moment-timezone": "^0.5.28",
37
37
  "react": "^16.9.0",
@@ -39,10 +39,10 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "@react-stately/collections": "^3.3.3",
42
- "@spscommerce/ds-colors": "4.34.1",
43
- "@spscommerce/ds-shared": "4.34.1",
44
- "@spscommerce/positioning": "4.34.1",
45
- "@spscommerce/utils": "4.34.1",
42
+ "@spscommerce/ds-colors": "4.34.2",
43
+ "@spscommerce/ds-shared": "4.34.2",
44
+ "@spscommerce/positioning": "4.34.2",
45
+ "@spscommerce/utils": "4.34.2",
46
46
  "@testing-library/jest-dom": "^4.2.4",
47
47
  "@testing-library/react": "^9.3.2",
48
48
  "@types/prop-types": "^15.7.1",