@spscommerce/ds-react 5.10.6 → 5.11.0

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.
@@ -17,6 +17,7 @@ export declare abstract class SpsFormMetaBase<T> {
17
17
  setValidators(newValidators: Array<SpsValidator<T>>): SpsFormMetaBase<T>;
18
18
  validate(newValue: T): SpsFormMetaBase<T>;
19
19
  isValid(): boolean;
20
+ hasErrors(): boolean;
20
21
  isVisibilyInvalid(): boolean;
21
22
  hasError(errorKey: string): any;
22
23
  hasPreventativeError(errorKey: string): boolean;
@@ -54,6 +55,7 @@ export declare abstract class SpsFormSetMeta<T extends SpsFormSetValue, U extend
54
55
  private rollup;
55
56
  isFocused(): boolean;
56
57
  isValid(): boolean;
58
+ hasErrors(): boolean;
57
59
  contentsAreValid(): boolean;
58
60
  isPristine(): boolean;
59
61
  markAsPristine(): this;
package/lib/index.cjs.js CHANGED
@@ -164,7 +164,7 @@
164
164
  </SpsAdvancedSearch>
165
165
  </>;
166
166
  }
167
- `}}}};var pv=self.crypto||self.msCrypto,po="-_",En=36;for(;En--;)po+=En.toString(36);En=36;for(;En---10;)po+=En.toString(36).toUpperCase();var uv=function(e){var t="",n=pv.getRandomValues(new Uint8Array(e||21));for(En=e||21;En--;)t+=po[n[En]&63];return t},xn=uv;function ca(e){return $.useRef(e||xn())}function At(e,t){const n=ca(e),a=$.useRef(`${n.current}_ctrl`);return $.useEffect(()=>{t&&(t.id=a.current,t.update())},[t]),{wrapperId:n.current,controlId:a.current}}var mv="[object Object]";function fv(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}function hv(e,t){return function(n){return e(t(n))}}var gv=Function.prototype,Kc=Object.prototype,Vc=gv.toString,Sv=Kc.hasOwnProperty,bv=Vc.call(Object),vv=Kc.toString,yv=hv(Object.getPrototypeOf,Object);function Tv(e){return!!e&&typeof e=="object"}function wv(e){if(!Tv(e)||vv.call(e)!=mv||fv(e))return!1;var t=yv(e);if(t===null)return!0;var n=Sv.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&Vc.call(n)==bv}var $c=wv;const mn=new Set,ys=new Set,Fn=new Set,uo=Gt.default||Gt,Ts="MM/DD/YYYY",Cv=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,Hc=Symbol("Date Parse Error");function da(e){return e.year*1e4+e.month*100+e.date}const he=Object.freeze({createFrom(e){if(!e)return null;if(typeof e=="string"){const t=Cv.exec(e);if(t){const[,n,a,o]=t;return Object.freeze({year:Number(o),month:Number(n),date:Number(a)})}return Object.freeze({[Hc]:!0,year:void 0,month:void 0,date:void 0})}return Object.freeze({year:e.year(),month:e.month()+1,date:e.date()})},createRangeFrom(e){return e?e.split(/[^\d]*-[^\d]*/).map(he.createFrom):null},isValid(e){return e&&typeof e=="object"&&typeof e.year=="number"&&typeof e.month=="number"&&typeof e.date=="number"&&he.toMoment(e).isValid()},nullifyInvalidDate(e){return he.isValid(e)?e:null},toMoment(e){return e?uo(H(I({},e),{month:e.month-1})):null},toString(e){const t=he.toMoment(e);return t?t.format(Ts):""},toStringRange(e){return e?e.map(he.toString).join("-"):""},create(){const e=new Date;return Object.freeze({year:e.getFullYear(),month:e.getMonth()+1,date:e.getDate()})},isSameDate(e,t){return e&&t&&e.year===t.year&&e.month===t.month&&e.date===t.date},isSameMonth(e,t){return e&&t&&e.year===t.year&&e.month===t.month},isAfter(e,t){return!e||!t?null:da(e)>da(t)},isBefore(e,t){return!e||!t?null:da(e)<da(t)},isInRange(e,t,n=!0){if(!e||!t||!t[0]||!t[1])return null;const a=da(e),[o,i]=t.map(da);return e&&o&&i&&(n&&a>=o&&a<=i||!n&&a>o&&a<i)},prevMonth(e){return Object.freeze({year:e.month===1?e.year-1:e.year,month:e.month-1||12,date:e.date})},nextMonth(e){return Object.freeze({year:e.month===12?e.year+1:e.year,month:e.month+1>12?1:e.month+1,date:e.date})},createRangeFromPreset(e){if(typeof e.definition=="function")return e.definition();const t=uo(),n=t.clone().subtract(uo.duration(e.definition));return[he.createFrom(n),he.createFrom(t)]}}),La=function(t){if(Array.isArray(t)){const n=La(t[0]),a=La(t[1]);return n||a}if(t&&t.hasOwnProperty("year")){if(t[Hc])return{dateFormat:Ts};if(!he.isValid(t))return{dateValidity:!0}}return null};mn.add("dateFormat");mn.add("dateValidity");const Wc=function(t){if(Array.isArray(t)){const n=La(t);if(n)return n;if(t&&he.isBefore(t[1],t[0]))return{dateRangeOrder:!0}}return null};mn.add("dateRangeOrder");const Yc=function({minDate:t,maxDate:n}){function a(o){const i=he.isBefore(o,t),l=he.isAfter(o,n),c={minExceeded:i?he.toString(t):null,maxExceeded:l?he.toString(n):null};return i||l?{dateConstraint:c}:null}return function(i){if(!i)return null;if(Array.isArray(i)){const l=a(i[0]),c=a(i[1]);return l||c}return i.hasOwnProperty("year")?a(i):null}};mn.add("dateConstraint");var Ev=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",date:La,dateRange:Wc,dateConstraint:Yc});const xv=function(t){return function(a){return Number(a)>=t?null:{min:t}}};mn.add("min");const Dv=function(t){return n=>Number(n)<=t?null:{max:t}};ys.add("max");const kv=function(t){return typeof t=="undefined"||t===null||t===""||Number.isNaN(t)||(t==null?void 0:t.length)===0?{required:!0}:null};ys.add("required");const Nv=function(t){return function(a){return a.length>=t?null:{minLength:t}}};mn.add("minLength");const Iv=function(t){return function(a){return a.length<=t?null:{maxLength:t}}};Fn.add("maxLength");const _v=function(t){const n=t instanceof RegExp?t:new RegExp(t);return function(o){return n.test(o)?null:{pattern:t}}};mn.add("pattern");const Mv=function(t){return/^[A-Za-z]*$/.test(t)?null:{alpha:!0}};Fn.add("alpha");const Ov=function(t){return/^[0-9,. ]*$/.test(t)?null:{numeric:!0}};Fn.add("numeric");const Rv=function(t){return/^[^0-9]*$/.test(t)?null:{nonNumeric:!0}};Fn.add("nonNumeric");const ws=Object.freeze(H(I({},Ev),{min:xv,max:Dv,required:kv,minLength:Nv,maxLength:Iv,pattern:_v,alpha:Mv,numeric:Ov,nonNumeric:Rv,OnBlurErrorKeys:mn}));function Pa(e,t=[]){const n=t.reduce((a,o)=>Object.assign(a,o(e)||{}),{});return Object.keys(n).length?n:null}class An{constructor(t,n){this.path=t,this.update=n,this.validators=[],this.errors=null,this.revealAllErrors=!1,this.preventativeErrors=[]}setValidators(t){return this.validators=t,this.update(null),this}validate(t){return this.validators&&this.validators.length>0?(this.errors=Pa(t,this.validators),this.update(null),this.isFocused()&&this.onFocus&&this.onFocus()):this.errors&&(this.errors=null,this.update(null)),this}isValid(){return!this.errors||this.isPristine()}isVisibilyInvalid(){return this.errors&&(this.revealAllErrors||!this.isPristine()&&Object.keys(this.errors).some(t=>ys.has(t)))}hasError(t){return this.errors&&Object.prototype.hasOwnProperty.call(this.errors,t)}hasPreventativeError(t){return this.preventativeErrors.includes(t)}hasPreventativeErrors(){return this.preventativeErrors.length>0}isRequired(){return this.validators&&this.validators.indexOf(ws.required)>-1}onFocus(){}onBlur(){}}class Kn extends An{constructor(){super(...arguments);this.id=xn(),this.focused=!1,this.pristine=!0}setValue(t){if(this.revealAllErrors=!1,this.preventativeErrors=[],this.validators&&this.validators.length>0){const n=Pa(t,this.validators);if(n&&Object.keys(n).filter(o=>Fn.has(o)).length>0){this.preventativeErrors=Object.keys(n);return}}this.update(this.path,t)}isPristine(){return this.pristine}markAsPristine(){return this.pristine=!0,this.revealAllErrors=!1,this.update(null),this}markAsDirty(){return this.pristine=!1,this.update(null),this}isFocused(){return this.focused}markAsFocused(){return this.focused=!0,this.update(null),this.onFocus&&this.onFocus(),this}markAsBlurred(){return this.update(this.path,null,!0),this.onBlur&&this.onBlur(),this.preventativeErrors=[],this}}class Cs extends Kn{constructor(t,n,a){const o=a?n:t,i=a||n;super(o,i);a&&this.inferMembers(t)}inferSpsControl(t,n){return Es(t,[...this.path,n],this.update)}rollup(t){return Object.keys(this.fields).reduce((n,a)=>n&&(!this.fields[a][t]||this.fields[a][t]()),!0)}isFocused(){return super.isFocused()||this.rollup("isFocused")}isValid(){return super.isValid()&&this.rollup("isValid")}contentsAreValid(){return this.rollup("isValid")&&this.rollup("contentsAreValid")}isPristine(){return super.isPristine()&&this.rollup("isPristine")}markAsPristine(){super.markAsPristine();for(const t of Object.keys(this.fields))this.fields[t].markAsPristine();return this}markAsDirty(){super.markAsDirty();for(const t of Object.keys(this.fields))this.fields[t].markAsDirty();return this}markAsBlurred(){super.markAsBlurred();for(const t of Object.keys(this.fields))this.fields[t].markAsBlurred();return this}}class jc extends Cs{inferMembers(t){this.fields={};for(const n of Object.keys(t))this.fields[n]=this.inferSpsControl(t[n],n)}}class Gc extends Cs{inferMembers(t){this.fields=t.map((n,a)=>this.inferSpsControl(n,String(a)))}}function Es(e,t,n){return e instanceof An?(e.path=t,e.update=n,e):Array.isArray(e)?new Gc(e,t,n):$c(e)?new jc(e,t,n):new Kn(t,n)}function mo(e,t){return t.length===0||!e?e:mo(e.fields[t[0]],t.slice(1,t.length))}function fo(e,t){if(t.length===0||!e)return[e];const n=t[0];if(t=t.slice(1,t.length),n==="*"){const a=Array.isArray(e.fields)?e.fields:Object.keys(e.fields).map(o=>e.fields[o]);return t.length===0?a:a.reduce((o,i)=>[...o,...fo(i,t)],[])}return fo(e.fields[n],t)}function Uc(e,t,n){for(const a of Object.keys(t)){const o=t[a];for(const i of fo(e,a.split(".")))i&&o&&n(i,o)}}function zc(e,t,n,a=!1){Uc(t,n,(o,i)=>{o.validators=typeof i=="function"?i(e):i,a&&(o.errors=Pa(D.getPath(e,o.path),o.validators))})}function ho(e,t){const n=t[0];return t=t.slice(1),Array.isArray(e)?e.map((a,o)=>o===Number(n)?ho(a,t):a):$c(e)?Object.keys(e).reduce((a,o)=>Object.assign(a,{[o]:o===n?ho(e[o],t):e[o]}),{}):e}function Lv(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("The initial value of useSpsForm() hook must be an object.")}function Pv(e,t){Lv(e);const n=$.useMemo(()=>{D.deepFreeze(e);const u=Es(e,[],c);return t&&zc(e,u,t,!0),u},[]),a=$.useRef(),o=$.useCallback((u,f)=>{let m;if(a.current=null,f)if(f.path)if(f.markAsBlurred){const g=mo(u.formMeta,f.path);g&&(g.focused=!1,g.revealAllErrors=!0)}else m=ho(u.formValue,f.path),D.setPath(m,f.path,f.value);else m=f.value;if(m){D.deepFreeze(m);const g=D.diff(u.formValue,m);for(const{type:v,key:w,parentPath:k,objects:[S,T]}of g){const E=mo(u.formMeta,k);if(typeof w!="symbol"&&E)switch(v){case D.DiffChange.ADDITION:E.fields[w]=Es(T[w],[...k,w],c);break;case D.DiffChange.DELETION:Array.isArray(E.fields)?E.fields.splice(Number(w),1):delete E.fields[w];break;case D.DiffChange.ALTERATION:if(!S[w]&&T[w]&&!(E.fields[w]instanceof Cs)){const y=Es(T[w],[...k,w],c);y instanceof Kn&&E.fields[w]instanceof Kn&&(y.id=E.fields[w].id,y.focused=E.fields[w].focused,y.pristine=E.fields[w].pristine),E.fields[w]=y}break}}if(t){zc(m,u.formMeta,t);const v=new Set;Uc(u.formMeta,t,(w,k)=>{typeof k=="function"&&(w.validate(D.getPath(m,w.path)),v.add(w))});for(const{type:w,key:k,parentPath:S,objects:[,T]}of g)if(typeof k!="symbol"){let E=u.formMeta,y=m;if(E){for(const N of S)E=E.fields[N],y=y[N],v.has(E)||E.validate(y);if(w===D.DiffChange.ADDITION||w===D.DiffChange.ALTERATION){const N=E.fields[k];v.has(N)||E.fields[k].validate(T[k])}}}}}return{formValue:m||u.formValue,formMeta:u.formMeta,updateForm:u.updateForm}},[]),[i,l]=$.useReducer(o,{formValue:e,formMeta:n,updateForm:p});function c(u,f,m=!1){u?l({path:u,value:f,markAsBlurred:m}):p()}function p(u){if(u){a.current&&window.clearTimeout(a.current);const f=window.setTimeout(l,0,{value:u});a.current=f}else if(!a.current){const f=window.setTimeout(l,0,{});a.current=f}}return $.useEffect(()=>()=>{a.current&&window.clearTimeout(a.current)},[]),i}const Bv=H(I({},J),{focusInputOnClick:C.exports.bool,formMeta:ce(),formControl:ce(),inputRef:qt()}),Tt=s.forwardRef((e,t)=>{const E=e,{className:n,children:a,focusInputOnClick:o,formControl:i,formMeta:l,inputRef:c,onClick:p}=E,u=X(E,["className","children","focusInputOnClick","formControl","formMeta","inputRef","onClick"]),f=s.useRef(),g=c||(t||f);function v(){g&&g!==t&&g.current&&g.current.focus()}function w(){g&&g!==t&&g.current&&l&&l instanceof Kn&&l.markAsFocused()}function k(){g&&g!==t&&g.current&&l&&l instanceof Kn&&l.markAsBlurred()}const S=A("sps-form-group",(i&&i.isRequired()||l&&l.isRequired())&&"sps-form-group--required",(i&&!i.isValid()||l&&l.isVisibilyInvalid())&&"sps-form-group--error",l&&l.hasPreventativeErrors()&&"sps-form-group--preventative-error",n);function T(y){o&&v(),p&&p(y)}return s.createElement("div",H(I({},u),{className:S,ref:t,tabIndex:-1,onClick:T,onFocus:w,onBlur:k}),a)});Object.assign(Tt,{spsFormComponentWrapperPropTypes:Bv,displayName:"SpsFormComponentWrapper"});function qc(e){return typeof e=="object"&&e!=null&&e.nodeType===1}function Jc(e,t){return(!t||e!=="hidden")&&e!=="visible"&&e!=="clip"}function go(e,t){if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){var n=getComputedStyle(e,null);return Jc(n.overflowY,t)||Jc(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 xs(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 Zc(e,t){var n=window,a=t.scrollMode,o=t.block,i=t.inline,l=t.boundary,c=t.skipOverflowHiddenElements,p=typeof l=="function"?l:function(Fe){return Fe!==l};if(!qc(e))throw new TypeError("Invalid target");for(var u=document.scrollingElement||document.documentElement,f=[],m=e;qc(m)&&p(m);){if((m=m.parentElement)===u){f.push(m);break}m!=null&&m===document.body&&go(m)&&!go(document.documentElement)||m!=null&&go(m,c)&&f.push(m)}for(var g=n.visualViewport?n.visualViewport.width:innerWidth,v=n.visualViewport?n.visualViewport.height:innerHeight,w=window.scrollX||pageXOffset,k=window.scrollY||pageYOffset,S=e.getBoundingClientRect(),T=S.height,E=S.width,y=S.top,N=S.right,_=S.bottom,R=S.left,O=o==="start"||o==="nearest"?y:o==="end"?_:y+T/2,P=i==="center"?R+E/2:i==="end"?N:R,K=[],B=0;B<f.length;B++){var z=f[B],F=z.getBoundingClientRect(),V=F.height,Z=F.width,ne=F.top,ie=F.right,re=F.bottom,me=F.left;if(a==="if-needed"&&y>=0&&R>=0&&_<=v&&N<=g&&y>=ne&&_<=re&&R>=me&&N<=ie)return K;var G=getComputedStyle(z),j=parseInt(G.borderLeftWidth,10),U=parseInt(G.borderTopWidth,10),Q=parseInt(G.borderRightWidth,10),le=parseInt(G.borderBottomWidth,10),de=0,ee=0,we="offsetWidth"in z?z.offsetWidth-z.clientWidth-j-Q:0,Oe="offsetHeight"in z?z.offsetHeight-z.clientHeight-U-le:0;if(u===z)de=o==="start"?O:o==="end"?O-v:o==="nearest"?xs(k,k+v,v,U,le,k+O,k+O+T,T):O-v/2,ee=i==="start"?P:i==="center"?P-g/2:i==="end"?P-g:xs(w,w+g,g,j,Q,w+P,w+P+E,E),de=Math.max(0,de+k),ee=Math.max(0,ee+w);else{de=o==="start"?O-ne-U:o==="end"?O-re+le+Oe:o==="nearest"?xs(ne,re,V,U,le+Oe,O,O+T,T):O-(ne+V/2)+Oe/2,ee=i==="start"?P-me-j:i==="center"?P-(me+Z/2)+we/2:i==="end"?P-ie+Q+we:xs(me,ie,Z,j,Q+we,P,P+E,E);var Pe=z.scrollLeft,Be=z.scrollTop;O+=Be-(de=Math.max(0,Math.min(Be+de,z.scrollHeight-V+Oe))),P+=Pe-(ee=Math.max(0,Math.min(Pe+ee,z.scrollWidth-Z+we)))}K.push({el:z,top:de,left:ee})}return K}function Xc(e){return e===Object(e)&&Object.keys(e).length!==0}function Fv(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 Av(e){return e===!1?{block:"end",inline:"nearest"}:Xc(e)?e:{block:"start",inline:"nearest"}}function Qc(e,t){var n=!e.ownerDocument.documentElement.contains(e);if(Xc(t)&&typeof t.behavior=="function")return t.behavior(n?[]:Zc(e,t));if(!n){var a=Av(t);return Fv(Zc(e,a),a.behavior)}}var Kv=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:Qc});const Vv={alt:"string",size:"SpinnerSize",title:"string"},$v=H(I({},J),{alt:C.exports.string,size:be(M.SpinnerSize),title:C.exports.string});function Ds(e){const m=e,{alt:t,className:n,size:a=M.SpinnerSize.MEDIUM,"data-testid":o,title:i,unsafelyReplaceClassName:l}=m,c=X(m,["alt","className","size","data-testid","title","unsafelyReplaceClassName"]),{t:p}=s.useContext(ze),u=t||i||p("design-system:spinner.defaultAltText"),f=A(l||"sps-spinner",`sps-spinner--${a}`,n);return s.createElement("i",I({className:f,"data-testid":o,title:u},c))}Object.assign(Ds,{props:Vv,propTypes:$v,displayName:"SpsSpinner"});const Hv=60;function ks(e){return typeof e=="undefined"?"inherit":`${e}px`}function ed(e){switch(e){case M.Position.TOP_LEFT:return M.Position.BOTTOM_LEFT;case M.Position.TOP_MIDDLE:return M.Position.BOTTOM_MIDDLE;case M.Position.TOP_RIGHT:return M.Position.BOTTOM_RIGHT;case M.Position.RIGHT_TOP:return M.Position.LEFT_TOP;case M.Position.RIGHT_MIDDLE:return M.Position.LEFT_MIDDLE;case M.Position.RIGHT_BOTTOM:return M.Position.LEFT_BOTTOM;case M.Position.BOTTOM_RIGHT:return M.Position.TOP_RIGHT;case M.Position.BOTTOM_MIDDLE:return M.Position.TOP_MIDDLE;case M.Position.BOTTOM_LEFT:return M.Position.TOP_LEFT;case M.Position.LEFT_BOTTOM:return M.Position.RIGHT_BOTTOM;case M.Position.LEFT_MIDDLE:return M.Position.RIGHT_MIDDLE;case M.Position.LEFT_TOP:return M.Position.RIGHT_TOP}}function Wv(e,t,n,a,o,i,l,c){const p=l&&l.current,u=p?p.scrollTop:window.pageYOffset,f=c?0:u,m=p?p.scrollLeft:window.pageXOffset,g=c?0:m,[v,w]=e.split(" ");let k,S,T,E;switch(v){case"top":T=t.height-n.top-f-i[0];break;case"left":S=t.width-n.left-g-i[0];break;case"right":E=n.right+g-i[0];break;case"bottom":k=n.bottom+f-i[0];break;default:throw new Error(`Invalid position ${e}`)}switch(w){case"left":E=n.left+g+i[1];break;case"top":k=n.top+f+i[1];break;case"middle":v==="top"||v==="bottom"?E=n.left+g+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":T=t.height-n.bottom-f+i[1];break;case"right":S=t.width-n.right-g+i[1];break;default:throw new Error(`Invalid position ${e}`)}return[k,S,T,E]}function Ba(e,t,n,{altPosition:a,setMinWidth:o=!1,setWidth:i=!1,parentElementRef:l,fixed:c=!1,offsets:p=[0,0]}){if(e.current&&t.current){const u=Math.max(document.documentElement.clientHeight,window.innerHeight||0),f=document.documentElement.getBoundingClientRect().width,m=l&&l.current?l.current:document.documentElement,g=c?{width:f,height:u,top:0,left:0,bottom:u,right:f}:m.getBoundingClientRect(),v=e.current.getBoundingClientRect(),w=t.current.getBoundingClientRect(),[k]=n.split(" ");let S=n;a&&(k==="top"&&w.top-v.height<Hv||k==="right"&&w.right+v.width>f||k==="bottom"&&w.bottom+v.height>u||k==="left"&&w.left-v.width<0)&&(S=a);const T=o?Math.max(w.width,v.width):v.width,E=i?w.width:T,[y,N,_,R]=Wv(S,g,w,v,E,p,l,c),O={top:ks(y),right:ks(N),bottom:ks(_),left:ks(R)};return c&&(O.position="fixed",O.zIndex=M.ZStratum.BAR),o&&(O.minWidth=`${w.width}px`),i&&(O.width=`${w.width}px`),[O,S===a]}return[{},!1]}const _t=$.createContext(null);function pa(e,t=[]){const n=$.useContext(_t);return $.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)i.contains(l)||i.appendChild(l);else{l=document.createElement("div"),l.setAttribute("data-portalid",e);for(const p of t)l.classList.add(p);i.appendChild(l)}return io.createPortal(a,l)},[n])}const Yv={docs:{options:"Eventually<any[]> | (filter?: string) => Eventually<any[]>",captionKey:"string",disabledOptions:"any[]",comparisonKey:"string",tall:"boolean",textKey:"string",valueKey:"string",zeroState:"string"},propTypes:{captionKey:C.exports.string,comparisonKey:C.exports.string,disabledOptions:C.exports.arrayOf(C.exports.any),options:C.exports.oneOfType([C.exports.array,C.exports.instanceOf(Promise),ae()]).isRequired,tall:C.exports.bool,textKey:C.exports.string,valueKey:C.exports.string,zeroState:C.exports.string}},jv={hideInlineSearch:C.exports.bool,onSearchChange:ae(),search:C.exports.string,searchDebounce:C.exports.number,searchPlaceholder:C.exports.string,searchInputRef:qt()},Gv=H(I(I(I({},J),Yv.propTypes),jv),{attachTo:qt().isRequired,conformWidth:C.exports.bool,id:C.exports.string.isRequired,isOpen:C.exports.bool,keepOpen:C.exports.bool,keyDown:ce(),nullOption:C.exports.string,offsets:C.exports.arrayOf(C.exports.number),onOptionListChanged:ae(),onOptionSelected:ae(),onPositionFlip:ae(),onSelfToggle:ae(),optionRole:C.exports.string,positionOverride:C.exports.arrayOf(be(M.Position)),selectedOption:C.exports.any,specialAction:ae(),ignoreWidthStyles:C.exports.bool,loading:C.exports.bool,filterByTextAndCaptionKey:C.exports.bool});async function td(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 p=c?await l||[]:l||[];if(c&&i.current!==l)return;let u=Array.from(p).filter(Boolean).map(f=>new M.SpsOptionListOption(f,typeof f=="function"?{textKey:"label",captionKey:"caption"}:{textKey:e.textKey,captionKey:e.captionKey}));if(e.nullOption&&u.unshift(new M.SpsOptionListOption(null,{text:e.nullOption})),t.value?(n({replacementPattern:new RegExp(t.value,"ig")}),u=u.filter(f=>{const m=new RegExp(t.value,"i");return e.filterByTextAndCaptionKey?m.test(f.text)||m.test(f.caption):m.test(f.text)})):n({replacementPattern:null}),e.disabledOptions)for(const f of u)e.disabledOptions.includes(f.value)&&(f.disabled=!0);a(Object.freeze(u)),e.onOptionListChanged&&e.onOptionListChanged(u.length),o(u.some(f=>f.value&&!!f.value.icon)),n({pending:!1})}function Uv(e,t,n){const[a,o]=s.useState(Object.freeze([])),[i,l]=s.useState(!1),c=s.useRef(null),p=s.useRef(e.options);typeof e.options!="function"&&(p.current=e.options);const u=s.useMemo(()=>typeof p.current=="function"?D.debounce(td,typeof e.searchDebounce!="undefined"?e.searchDebounce:500):td,[p.current,e.disabledOptions]);return s.useEffect(()=>{u(e,t,n,o,l,c)},[p.current,t.value,e.disabledOptions]),[a,i]}class Vn{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 zv(e,t){return I(I({},e),t)}function Jt(e){return $.useReducer(zv,e)}function qv({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}),p=s.useCallback(v=>{c({value:v.target.value}),n&&n(v)},[n]),u=s.useCallback(v=>{v.nativeEvent.stopImmediatePropagation(),v.stopPropagation()},[]),f=s.useCallback(v=>{v.nativeEvent.stopImmediatePropagation(),c({value:""}),n&&n(new Vn(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:p,onClick:u,onKeyDown:m}),l.value&&s.createElement("i",{className:"sps-icon sps-icon-x-circle sps-form-control__clear-btn",onClick:f}))),l,c]}const Jv=Qc||Kv,Zv=["Tab","Escape","Enter","Up","ArrowUp","Down","ArrowDown"],Xv=["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 Qv(e,t,n){return n?(e&&e[n])===(t&&t[n]):e===t}function nd(e,t,n){return t?!!(e==null?void 0:e.find(a=>{var o;return a[t]&&a[t]===((o=n==null?void 0:n.value)==null?void 0:o[t])})):!1}const Fa=s.forwardRef((e,t)=>{const nn=e,{captionKey:n,comparisonKey:a,disabledOptions:o,options:i,tall:l,textKey:c,valueKey:p,zeroState:u,hideInlineSearch:f,onSearchChange:m,search:g,searchDebounce:v,searchPlaceholder:w,attachTo:k,className:S,conformWidth:T,id:E,ignoreWidthStyles:y,isOpen:N,keepOpen:_,keyDown:R,nullOption:O,onOptionListChanged:P,onOptionSelected:K,onPositionFlip:B,onSelfToggle:z,optionRole:F,positionOverride:V,selectedOption:Z,specialAction:ne,unsafelyReplaceClassName:ie,loading:re,filterByTextAndCaptionKey:me,"data-testid":G}=nn,j=X(nn,["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","filterByTextAndCaptionKey","data-testid"]),U=s.useMemo(()=>ne?new M.SpsOptionListOption(ne,{textKey:"label",captionKey:"caption"}):null,[ne]),[Q,le]=s.useState(-1),[de,ee]=s.useState(N),we=t||s.useRef(null),Oe=s.useRef(null),Pe=s.useRef(null),Be=pa("sps-option-list-portal"),Fe=s.useContext(_t),[Ze,Xe]=V||[M.Position.BOTTOM_LEFT,M.Position.TOP_LEFT],[ve,ue]=de?Ba(we,k,Ze,I({altPosition:Xe,setMinWidth:!y,setWidth:!y&&T},Fe)):[{},!1],$e=s.useRef(null),[vt,tt,Wt]=qv(H(I({},e),{searchInputRef:$e})),[He,ct]=Uv(e,tt,Wt);s.useEffect(()=>{le(-1)},[tt]);const Qe=A(ie||"sps-option-list","z-stratum-dropdown",de&&"sps-option-list--open",tt.isAsync&&"sps-option-list--searchable",ue&&"sps-option-list--opens-upward",ne&&ne.label&&"sps-option-list--has-special-action",S),ut=A(ie||"sps-option-list__options",l&&"sps-option-list__options--tall"),kt=s.useCallback(()=>{de||(ee(!0),$e.current&&$e.current.focus(),le(-1),z&&z(!0))},[de,z]),Nt=s.useCallback(()=>{de&&(ee(!1),le(-1),z&&z(!1))},[de,z]),Ge=s.useCallback((ye,De)=>{De||ye&&!ye.disabled&&(typeof ye.value=="function"?ye.value():typeof K=="function"&&K(ye.value),_||Nt())},[K,Nt]),Xn=s.useCallback((ye,De,ft)=>{ye.stopPropagation(),Ge(De,ft)},[Ge]),Lt=s.useRef(o||[]);Lt.current=o||[];const mt=s.useCallback(ye=>{switch(ye.key){case"Tab":case"Escape":Nt();break;case"Enter":if(Q>-1){const De=He[Q]||U;ye.preventDefault();const ft=!!De&&nd(Lt.current,a,De);!ft&&De&&typeof K=="function"&&typeof De.value=="function"?De.value():De&&Ge(De,ft)}break;case"Up":case"ArrowUp":{let De=Q;ue?Q<=-1?De=He.length-1:Q===0?ne&&(De=He.length):Q<He.length&&(De=Q-1):Q>-1&&(De=Q-1),De!==Q&&(ye.preventDefault(),le(De));break}case"Down":case"ArrowDown":{kt();let De=Q;ue?Q!==-1&&(Q>=He.length?De=0:Q===He.length-1?De=-1:De=Q+1):Q<He.length-1+Number(!!ne)&&(De=Q+1),De!==Q&&(ye.preventDefault(),le(De));break}default:kt()}},[Nt,kt,Q,Ge,K,ue,He]),Ee=s.useCallback(ye=>{const De=He.findIndex(ft=>{if(ft.textKey){const an=ft.textKey;return ft.value[an].toLowerCase().charAt([0])===ye.key.toLocaleLowerCase()}return ft.value.toLowerCase().charAt([0])===ye.key.toLocaleLowerCase()});De>-1&&le(De)},[He]),Yt=s.useCallback(ye=>{!ye||(Zv.includes(ye.key)?mt(ye):Xv.includes(ye.key)&&Ee(ye))},[Nt,kt,Q,Ge,K,ue,He]);return s.useEffect(()=>{if(Fe!==null&&document.getElementsByClassName("sps-modal__body").length>0){const ye=()=>{z(!1)},De=document.getElementsByClassName("sps-modal__body")[0];return De.addEventListener("scroll",ye),()=>{De.removeEventListener("scroll",ye)}}},[]),s.useEffect(()=>{Pe.current&&Jv(Pe.current,{scrollMode:"if-needed",block:"nearest",inline:"nearest"})},[Q]),s.useEffect(()=>{ee(N),N?$e.current&&$e.current.focus():le(-1)},[N]),s.useEffect(()=>{Yt(R)},[R]),s.useEffect(()=>{!de&&Oe.current&&(Wt({value:""}),Oe.current.scrollTop=0),de&&B&&B(ue)},[de]),Be(s.createElement("div",I({className:Qe,id:E,"aria-activedescendant":Q>-1?`${E}-option-${Q}`:null,tabIndex:-1,ref:we,style:ve,onMouseLeave:()=>le(-1),"data-testid":G},j),vt,s.createElement("div",{className:ut,ref:Oe,"data-testid":`${G}-options`},!re&&!tt.pending&&u&&(tt.value||!tt.isAsync)&&He.length===0&&s.createElement("div",{className:"sps-option-list__zero-state"},u),(re||tt.pending)&&s.createElement("div",{className:"sps-option-list__loading"},s.createElement(Ds,null)),!re&&!tt.pending&&He.map((ye,De)=>{const ft=`${E}-option-${De}`,an=Qv(ye.value,Z,a),it=nd(Lt.current,a,ye);return s.createElement("a",{key:ft,id:ft,role:F,"aria-selected":an,href:ye.href,className:A("sps-option-list__option",ye.caption&&"sps-option-list__option--has-caption",ye.disabled&&"sps-option-list__option--disabled",ye.bold&&"sps-option-list__option--bold",(an||it)&&"sps-option-list__option--selected",Q===De&&"sps-option-list__option--highlighted"),onClick:In=>Xn(In,ye,it),onMouseOver:()=>le(De),tabIndex:-1,ref:Q===De?Pe:null,"data-testid":`${G}-option-${De}`},ye.value&&ye.value.icon&&s.createElement("i",{className:A("sps-icon","sps-option-list__option-icon",`sps-icon-${String(ye.value.icon)}`)}),(!ye.value||!ye.value.icon&&ct)&&s.createElement("span",{className:"sps-option-list__option-icon-spacer"}),s.createElement("span",{dangerouslySetInnerHTML:{__html:ye.getHtml(tt.replacementPattern)}}),ye.caption&&s.createElement("div",{className:"sps-option-list__option-caption"},s.createElement("span",{dangerouslySetInnerHTML:{__html:ye.caption.replace(tt.replacementPattern,"<u>$&</u>")}})))})),U&&ne.label&&s.createElement("a",{className:A("sps-option-list__option","sps-option-list__special-action",Q===He.length&&"sps-option-list__option--highlighted"),href:U.href,onClick:ye=>Xn(ye,U),onMouseOver:()=>le(He.length)},ne.icon&&s.createElement("i",{className:A("sps-icon","sps-option-list__option-icon",`sps-icon-${String(ne.icon)}`)}),!ne.icon&&ct&&s.createElement("span",{className:"sps-option-list__option-icon-spacer"}),s.createElement("span",null,ne.label))))});Object.assign(Fa,{propTypes:Gv,displayName:"SpsOptionList"});function Kt(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:p,props:u={}}of a[c])if(i.type===p&&Object.keys(u).every(m=>u[m]===i.props[m])){l=!0,o[c].push(i);break}l||o[o.length-1].push(i)}return o}function ad(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 sd(e,t){const n=$.useRef(!1);$.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function rd(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 ey(e,t,n){return function(o){!e.current.contains(o.target)&&!t.current.contains(o.target)&&n()}}function Aa(e,t){const n=s.useRef(!1),[a,o]=s.useState(!1),i=s.useCallback(()=>{n.current?n.current=!1:o(!0)},[]),l=s.useCallback((c=!1)=>{o(!1),n.current=c},[]);return rd("click",ey,[e,t,l]),{showPopup:a,doShowPopup:i,doHidePopup:l}}const ty={debounce:"number",disabled:"boolean",formMeta:"SpsFormFieldMeta<string>",icon:"SpsIcon",onChange:"React.ChangeEventHandler",placeholder:"string",suggestions:{type:`
167
+ `}}}};var pv=self.crypto||self.msCrypto,po="-_",En=36;for(;En--;)po+=En.toString(36);En=36;for(;En---10;)po+=En.toString(36).toUpperCase();var uv=function(e){var t="",n=pv.getRandomValues(new Uint8Array(e||21));for(En=e||21;En--;)t+=po[n[En]&63];return t},xn=uv;function ca(e){return $.useRef(e||xn())}function At(e,t){const n=ca(e),a=$.useRef(`${n.current}_ctrl`);return $.useEffect(()=>{t&&(t.id=a.current,t.update())},[t]),{wrapperId:n.current,controlId:a.current}}var mv="[object Object]";function fv(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}function hv(e,t){return function(n){return e(t(n))}}var gv=Function.prototype,Kc=Object.prototype,Vc=gv.toString,Sv=Kc.hasOwnProperty,bv=Vc.call(Object),vv=Kc.toString,yv=hv(Object.getPrototypeOf,Object);function Tv(e){return!!e&&typeof e=="object"}function wv(e){if(!Tv(e)||vv.call(e)!=mv||fv(e))return!1;var t=yv(e);if(t===null)return!0;var n=Sv.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&Vc.call(n)==bv}var $c=wv;const mn=new Set,ys=new Set,Fn=new Set,uo=Gt.default||Gt,Ts="MM/DD/YYYY",Cv=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,Hc=Symbol("Date Parse Error");function da(e){return e.year*1e4+e.month*100+e.date}const he=Object.freeze({createFrom(e){if(!e)return null;if(typeof e=="string"){const t=Cv.exec(e);if(t){const[,n,a,o]=t;return Object.freeze({year:Number(o),month:Number(n),date:Number(a)})}return Object.freeze({[Hc]:!0,year:void 0,month:void 0,date:void 0})}return Object.freeze({year:e.year(),month:e.month()+1,date:e.date()})},createRangeFrom(e){return e?e.split(/[^\d]*-[^\d]*/).map(he.createFrom):null},isValid(e){return e&&typeof e=="object"&&typeof e.year=="number"&&typeof e.month=="number"&&typeof e.date=="number"&&he.toMoment(e).isValid()},nullifyInvalidDate(e){return he.isValid(e)?e:null},toMoment(e){return e?uo(H(I({},e),{month:e.month-1})):null},toString(e){const t=he.toMoment(e);return t?t.format(Ts):""},toStringRange(e){return e?e.map(he.toString).join("-"):""},create(){const e=new Date;return Object.freeze({year:e.getFullYear(),month:e.getMonth()+1,date:e.getDate()})},isSameDate(e,t){return e&&t&&e.year===t.year&&e.month===t.month&&e.date===t.date},isSameMonth(e,t){return e&&t&&e.year===t.year&&e.month===t.month},isAfter(e,t){return!e||!t?null:da(e)>da(t)},isBefore(e,t){return!e||!t?null:da(e)<da(t)},isInRange(e,t,n=!0){if(!e||!t||!t[0]||!t[1])return null;const a=da(e),[o,i]=t.map(da);return e&&o&&i&&(n&&a>=o&&a<=i||!n&&a>o&&a<i)},prevMonth(e){return Object.freeze({year:e.month===1?e.year-1:e.year,month:e.month-1||12,date:e.date})},nextMonth(e){return Object.freeze({year:e.month===12?e.year+1:e.year,month:e.month+1>12?1:e.month+1,date:e.date})},createRangeFromPreset(e){if(typeof e.definition=="function")return e.definition();const t=uo(),n=t.clone().subtract(uo.duration(e.definition));return[he.createFrom(n),he.createFrom(t)]}}),La=function(t){if(Array.isArray(t)){const n=La(t[0]),a=La(t[1]);return n||a}if(t&&t.hasOwnProperty("year")){if(t[Hc])return{dateFormat:Ts};if(!he.isValid(t))return{dateValidity:!0}}return null};mn.add("dateFormat");mn.add("dateValidity");const Wc=function(t){if(Array.isArray(t)){const n=La(t);if(n)return n;if(t&&he.isBefore(t[1],t[0]))return{dateRangeOrder:!0}}return null};mn.add("dateRangeOrder");const Yc=function({minDate:t,maxDate:n}){function a(o){const i=he.isBefore(o,t),l=he.isAfter(o,n),c={minExceeded:i?he.toString(t):null,maxExceeded:l?he.toString(n):null};return i||l?{dateConstraint:c}:null}return function(i){if(!i)return null;if(Array.isArray(i)){const l=a(i[0]),c=a(i[1]);return l||c}return i.hasOwnProperty("year")?a(i):null}};mn.add("dateConstraint");var Ev=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",date:La,dateRange:Wc,dateConstraint:Yc});const xv=function(t){return function(a){return Number(a)>=t?null:{min:t}}};mn.add("min");const Dv=function(t){return n=>Number(n)<=t?null:{max:t}};ys.add("max");const kv=function(t){return typeof t=="undefined"||t===null||t===""||Number.isNaN(t)||(t==null?void 0:t.length)===0?{required:!0}:null};ys.add("required");const Nv=function(t){return function(a){return a.length>=t?null:{minLength:t}}};mn.add("minLength");const Iv=function(t){return function(a){return a.length<=t?null:{maxLength:t}}};Fn.add("maxLength");const _v=function(t){const n=t instanceof RegExp?t:new RegExp(t);return function(o){return n.test(o)?null:{pattern:t}}};mn.add("pattern");const Mv=function(t){return/^[A-Za-z]*$/.test(t)?null:{alpha:!0}};Fn.add("alpha");const Ov=function(t){return/^[0-9,. ]*$/.test(t)?null:{numeric:!0}};Fn.add("numeric");const Rv=function(t){return/^[^0-9]*$/.test(t)?null:{nonNumeric:!0}};Fn.add("nonNumeric");const ws=Object.freeze(H(I({},Ev),{min:xv,max:Dv,required:kv,minLength:Nv,maxLength:Iv,pattern:_v,alpha:Mv,numeric:Ov,nonNumeric:Rv,OnBlurErrorKeys:mn}));function Pa(e,t=[]){const n=t.reduce((a,o)=>Object.assign(a,o(e)||{}),{});return Object.keys(n).length?n:null}class An{constructor(t,n){this.path=t,this.update=n,this.validators=[],this.errors=null,this.revealAllErrors=!1,this.preventativeErrors=[]}setValidators(t){return this.validators=t,this.update(null),this}validate(t){return this.validators&&this.validators.length>0?(this.errors=Pa(t,this.validators),this.update(null),this.isFocused()&&this.onFocus&&this.onFocus()):this.errors&&(this.errors=null,this.update(null)),this}isValid(){return!this.errors||this.isPristine()}hasErrors(){return!!this.errors}isVisibilyInvalid(){return this.errors&&(this.revealAllErrors||!this.isPristine()&&Object.keys(this.errors).some(t=>ys.has(t)))}hasError(t){return this.errors&&Object.prototype.hasOwnProperty.call(this.errors,t)}hasPreventativeError(t){return this.preventativeErrors.includes(t)}hasPreventativeErrors(){return this.preventativeErrors.length>0}isRequired(){return this.validators&&this.validators.indexOf(ws.required)>-1}onFocus(){}onBlur(){}}class Kn extends An{constructor(){super(...arguments);this.id=xn(),this.focused=!1,this.pristine=!0}setValue(t){if(this.revealAllErrors=!1,this.preventativeErrors=[],this.validators&&this.validators.length>0){const n=Pa(t,this.validators);if(n&&Object.keys(n).filter(o=>Fn.has(o)).length>0){this.preventativeErrors=Object.keys(n);return}}this.update(this.path,t)}isPristine(){return this.pristine}markAsPristine(){return this.pristine=!0,this.revealAllErrors=!1,this.update(null),this}markAsDirty(){return this.pristine=!1,this.update(null),this}isFocused(){return this.focused}markAsFocused(){return this.focused=!0,this.update(null),this.onFocus&&this.onFocus(),this}markAsBlurred(){return this.update(this.path,null,!0),this.onBlur&&this.onBlur(),this.preventativeErrors=[],this}}class Cs extends Kn{constructor(t,n,a){const o=a?n:t,i=a||n;super(o,i);a&&this.inferMembers(t)}inferSpsControl(t,n){return Es(t,[...this.path,n],this.update)}rollup(t){return Object.keys(this.fields).reduce((n,a)=>n&&(!this.fields[a][t]||this.fields[a][t]()),!0)}isFocused(){return super.isFocused()||this.rollup("isFocused")}isValid(){return super.isValid()&&this.rollup("isValid")}hasErrors(){return super.hasErrors()||Object.keys(this.fields).some(t=>this.fields[t].hasErrors())}contentsAreValid(){return this.rollup("isValid")&&this.rollup("contentsAreValid")}isPristine(){return super.isPristine()&&this.rollup("isPristine")}markAsPristine(){super.markAsPristine();for(const t of Object.keys(this.fields))this.fields[t].markAsPristine();return this}markAsDirty(){super.markAsDirty();for(const t of Object.keys(this.fields))this.fields[t].markAsDirty();return this}markAsBlurred(){super.markAsBlurred();for(const t of Object.keys(this.fields))this.fields[t].markAsBlurred();return this}}class jc extends Cs{inferMembers(t){this.fields={};for(const n of Object.keys(t))this.fields[n]=this.inferSpsControl(t[n],n)}}class Gc extends Cs{inferMembers(t){this.fields=t.map((n,a)=>this.inferSpsControl(n,String(a)))}}function Es(e,t,n){return e instanceof An?(e.path=t,e.update=n,e):Array.isArray(e)?new Gc(e,t,n):$c(e)?new jc(e,t,n):new Kn(t,n)}function mo(e,t){return t.length===0||!e?e:mo(e.fields[t[0]],t.slice(1,t.length))}function fo(e,t){if(t.length===0||!e)return[e];const n=t[0];if(t=t.slice(1,t.length),n==="*"){const a=Array.isArray(e.fields)?e.fields:Object.keys(e.fields).map(o=>e.fields[o]);return t.length===0?a:a.reduce((o,i)=>[...o,...fo(i,t)],[])}return fo(e.fields[n],t)}function Uc(e,t,n){for(const a of Object.keys(t)){const o=t[a];for(const i of fo(e,a.split(".")))i&&o&&n(i,o)}}function zc(e,t,n,a=!1){Uc(t,n,(o,i)=>{o.validators=typeof i=="function"?i(e):i,a&&(o.errors=Pa(D.getPath(e,o.path),o.validators))})}function ho(e,t){const n=t[0];return t=t.slice(1),Array.isArray(e)?e.map((a,o)=>o===Number(n)?ho(a,t):a):$c(e)?Object.keys(e).reduce((a,o)=>Object.assign(a,{[o]:o===n?ho(e[o],t):e[o]}),{}):e}function Lv(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("The initial value of useSpsForm() hook must be an object.")}function Pv(e,t){Lv(e);const n=$.useMemo(()=>{D.deepFreeze(e);const u=Es(e,[],c);return t&&zc(e,u,t,!0),u},[]),a=$.useRef(),o=$.useCallback((u,f)=>{let m;if(a.current=null,f)if(f.path)if(f.markAsBlurred){const g=mo(u.formMeta,f.path);g&&(g.focused=!1,g.revealAllErrors=!0)}else m=ho(u.formValue,f.path),D.setPath(m,f.path,f.value);else m=f.value;if(m){D.deepFreeze(m);const g=D.diff(u.formValue,m);for(const{type:v,key:w,parentPath:k,objects:[S,T]}of g){const E=mo(u.formMeta,k);if(typeof w!="symbol"&&E)switch(v){case D.DiffChange.ADDITION:E.fields[w]=Es(T[w],[...k,w],c);break;case D.DiffChange.DELETION:Array.isArray(E.fields)?E.fields.splice(Number(w),1):delete E.fields[w];break;case D.DiffChange.ALTERATION:if(!S[w]&&T[w]&&!(E.fields[w]instanceof Cs)){const y=Es(T[w],[...k,w],c);y instanceof Kn&&E.fields[w]instanceof Kn&&(y.id=E.fields[w].id,y.focused=E.fields[w].focused,y.pristine=E.fields[w].pristine),E.fields[w]=y}break}}if(t){zc(m,u.formMeta,t);const v=new Set;Uc(u.formMeta,t,(w,k)=>{typeof k=="function"&&(w.validate(D.getPath(m,w.path)),v.add(w))});for(const{type:w,key:k,parentPath:S,objects:[,T]}of g)if(typeof k!="symbol"){let E=u.formMeta,y=m;if(E){for(const N of S)E=E.fields[N],y=y[N],v.has(E)||E.validate(y);if(w===D.DiffChange.ADDITION||w===D.DiffChange.ALTERATION){const N=E.fields[k];v.has(N)||E.fields[k].validate(T[k])}}}}}return{formValue:m||u.formValue,formMeta:u.formMeta,updateForm:u.updateForm}},[]),[i,l]=$.useReducer(o,{formValue:e,formMeta:n,updateForm:p});function c(u,f,m=!1){u?l({path:u,value:f,markAsBlurred:m}):p()}function p(u){if(u){a.current&&window.clearTimeout(a.current);const f=window.setTimeout(l,0,{value:u});a.current=f}else if(!a.current){const f=window.setTimeout(l,0,{});a.current=f}}return $.useEffect(()=>()=>{a.current&&window.clearTimeout(a.current)},[]),i}const Bv=H(I({},J),{focusInputOnClick:C.exports.bool,formMeta:ce(),formControl:ce(),inputRef:qt()}),Tt=s.forwardRef((e,t)=>{const E=e,{className:n,children:a,focusInputOnClick:o,formControl:i,formMeta:l,inputRef:c,onClick:p}=E,u=X(E,["className","children","focusInputOnClick","formControl","formMeta","inputRef","onClick"]),f=s.useRef(),g=c||(t||f);function v(){g&&g!==t&&g.current&&g.current.focus()}function w(){g&&g!==t&&g.current&&l&&l instanceof Kn&&l.markAsFocused()}function k(){g&&g!==t&&g.current&&l&&l instanceof Kn&&l.markAsBlurred()}const S=A("sps-form-group",(i&&i.isRequired()||l&&l.isRequired())&&"sps-form-group--required",(i&&!i.isValid()||l&&l.isVisibilyInvalid())&&"sps-form-group--error",l&&l.hasPreventativeErrors()&&"sps-form-group--preventative-error",n);function T(y){o&&v(),p&&p(y)}return s.createElement("div",H(I({},u),{className:S,ref:t,tabIndex:-1,onClick:T,onFocus:w,onBlur:k}),a)});Object.assign(Tt,{spsFormComponentWrapperPropTypes:Bv,displayName:"SpsFormComponentWrapper"});function qc(e){return typeof e=="object"&&e!=null&&e.nodeType===1}function Jc(e,t){return(!t||e!=="hidden")&&e!=="visible"&&e!=="clip"}function go(e,t){if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){var n=getComputedStyle(e,null);return Jc(n.overflowY,t)||Jc(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 xs(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 Zc(e,t){var n=window,a=t.scrollMode,o=t.block,i=t.inline,l=t.boundary,c=t.skipOverflowHiddenElements,p=typeof l=="function"?l:function(Fe){return Fe!==l};if(!qc(e))throw new TypeError("Invalid target");for(var u=document.scrollingElement||document.documentElement,f=[],m=e;qc(m)&&p(m);){if((m=m.parentElement)===u){f.push(m);break}m!=null&&m===document.body&&go(m)&&!go(document.documentElement)||m!=null&&go(m,c)&&f.push(m)}for(var g=n.visualViewport?n.visualViewport.width:innerWidth,v=n.visualViewport?n.visualViewport.height:innerHeight,w=window.scrollX||pageXOffset,k=window.scrollY||pageYOffset,S=e.getBoundingClientRect(),T=S.height,E=S.width,y=S.top,N=S.right,_=S.bottom,R=S.left,O=o==="start"||o==="nearest"?y:o==="end"?_:y+T/2,P=i==="center"?R+E/2:i==="end"?N:R,K=[],B=0;B<f.length;B++){var z=f[B],F=z.getBoundingClientRect(),V=F.height,Z=F.width,ne=F.top,ie=F.right,re=F.bottom,me=F.left;if(a==="if-needed"&&y>=0&&R>=0&&_<=v&&N<=g&&y>=ne&&_<=re&&R>=me&&N<=ie)return K;var G=getComputedStyle(z),j=parseInt(G.borderLeftWidth,10),U=parseInt(G.borderTopWidth,10),Q=parseInt(G.borderRightWidth,10),le=parseInt(G.borderBottomWidth,10),de=0,ee=0,we="offsetWidth"in z?z.offsetWidth-z.clientWidth-j-Q:0,Oe="offsetHeight"in z?z.offsetHeight-z.clientHeight-U-le:0;if(u===z)de=o==="start"?O:o==="end"?O-v:o==="nearest"?xs(k,k+v,v,U,le,k+O,k+O+T,T):O-v/2,ee=i==="start"?P:i==="center"?P-g/2:i==="end"?P-g:xs(w,w+g,g,j,Q,w+P,w+P+E,E),de=Math.max(0,de+k),ee=Math.max(0,ee+w);else{de=o==="start"?O-ne-U:o==="end"?O-re+le+Oe:o==="nearest"?xs(ne,re,V,U,le+Oe,O,O+T,T):O-(ne+V/2)+Oe/2,ee=i==="start"?P-me-j:i==="center"?P-(me+Z/2)+we/2:i==="end"?P-ie+Q+we:xs(me,ie,Z,j,Q+we,P,P+E,E);var Pe=z.scrollLeft,Be=z.scrollTop;O+=Be-(de=Math.max(0,Math.min(Be+de,z.scrollHeight-V+Oe))),P+=Pe-(ee=Math.max(0,Math.min(Pe+ee,z.scrollWidth-Z+we)))}K.push({el:z,top:de,left:ee})}return K}function Xc(e){return e===Object(e)&&Object.keys(e).length!==0}function Fv(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 Av(e){return e===!1?{block:"end",inline:"nearest"}:Xc(e)?e:{block:"start",inline:"nearest"}}function Qc(e,t){var n=!e.ownerDocument.documentElement.contains(e);if(Xc(t)&&typeof t.behavior=="function")return t.behavior(n?[]:Zc(e,t));if(!n){var a=Av(t);return Fv(Zc(e,a),a.behavior)}}var Kv=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:Qc});const Vv={alt:"string",size:"SpinnerSize",title:"string"},$v=H(I({},J),{alt:C.exports.string,size:be(M.SpinnerSize),title:C.exports.string});function Ds(e){const m=e,{alt:t,className:n,size:a=M.SpinnerSize.MEDIUM,"data-testid":o,title:i,unsafelyReplaceClassName:l}=m,c=X(m,["alt","className","size","data-testid","title","unsafelyReplaceClassName"]),{t:p}=s.useContext(ze),u=t||i||p("design-system:spinner.defaultAltText"),f=A(l||"sps-spinner",`sps-spinner--${a}`,n);return s.createElement("i",I({className:f,"data-testid":o,title:u},c))}Object.assign(Ds,{props:Vv,propTypes:$v,displayName:"SpsSpinner"});const Hv=60;function ks(e){return typeof e=="undefined"?"inherit":`${e}px`}function ed(e){switch(e){case M.Position.TOP_LEFT:return M.Position.BOTTOM_LEFT;case M.Position.TOP_MIDDLE:return M.Position.BOTTOM_MIDDLE;case M.Position.TOP_RIGHT:return M.Position.BOTTOM_RIGHT;case M.Position.RIGHT_TOP:return M.Position.LEFT_TOP;case M.Position.RIGHT_MIDDLE:return M.Position.LEFT_MIDDLE;case M.Position.RIGHT_BOTTOM:return M.Position.LEFT_BOTTOM;case M.Position.BOTTOM_RIGHT:return M.Position.TOP_RIGHT;case M.Position.BOTTOM_MIDDLE:return M.Position.TOP_MIDDLE;case M.Position.BOTTOM_LEFT:return M.Position.TOP_LEFT;case M.Position.LEFT_BOTTOM:return M.Position.RIGHT_BOTTOM;case M.Position.LEFT_MIDDLE:return M.Position.RIGHT_MIDDLE;case M.Position.LEFT_TOP:return M.Position.RIGHT_TOP}}function Wv(e,t,n,a,o,i,l,c){const p=l&&l.current,u=p?p.scrollTop:window.pageYOffset,f=c?0:u,m=p?p.scrollLeft:window.pageXOffset,g=c?0:m,[v,w]=e.split(" ");let k,S,T,E;switch(v){case"top":T=t.height-n.top-f-i[0];break;case"left":S=t.width-n.left-g-i[0];break;case"right":E=n.right+g-i[0];break;case"bottom":k=n.bottom+f-i[0];break;default:throw new Error(`Invalid position ${e}`)}switch(w){case"left":E=n.left+g+i[1];break;case"top":k=n.top+f+i[1];break;case"middle":v==="top"||v==="bottom"?E=n.left+g+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":T=t.height-n.bottom-f+i[1];break;case"right":S=t.width-n.right-g+i[1];break;default:throw new Error(`Invalid position ${e}`)}return[k,S,T,E]}function Ba(e,t,n,{altPosition:a,setMinWidth:o=!1,setWidth:i=!1,parentElementRef:l,fixed:c=!1,offsets:p=[0,0]}){if(e.current&&t.current){const u=Math.max(document.documentElement.clientHeight,window.innerHeight||0),f=document.documentElement.getBoundingClientRect().width,m=l&&l.current?l.current:document.documentElement,g=c?{width:f,height:u,top:0,left:0,bottom:u,right:f}:m.getBoundingClientRect(),v=e.current.getBoundingClientRect(),w=t.current.getBoundingClientRect(),[k]=n.split(" ");let S=n;a&&(k==="top"&&w.top-v.height<Hv||k==="right"&&w.right+v.width>f||k==="bottom"&&w.bottom+v.height>u||k==="left"&&w.left-v.width<0)&&(S=a);const T=o?Math.max(w.width,v.width):v.width,E=i?w.width:T,[y,N,_,R]=Wv(S,g,w,v,E,p,l,c),O={top:ks(y),right:ks(N),bottom:ks(_),left:ks(R)};return c&&(O.position="fixed",O.zIndex=M.ZStratum.BAR),o&&(O.minWidth=`${w.width}px`),i&&(O.width=`${w.width}px`),[O,S===a]}return[{},!1]}const _t=$.createContext(null);function pa(e,t=[]){const n=$.useContext(_t);return $.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)i.contains(l)||i.appendChild(l);else{l=document.createElement("div"),l.setAttribute("data-portalid",e);for(const p of t)l.classList.add(p);i.appendChild(l)}return io.createPortal(a,l)},[n])}const Yv={docs:{options:"Eventually<any[]> | (filter?: string) => Eventually<any[]>",captionKey:"string",disabledOptions:"any[]",comparisonKey:"string",tall:"boolean",textKey:"string",valueKey:"string",zeroState:"string"},propTypes:{captionKey:C.exports.string,comparisonKey:C.exports.string,disabledOptions:C.exports.arrayOf(C.exports.any),options:C.exports.oneOfType([C.exports.array,C.exports.instanceOf(Promise),ae()]).isRequired,tall:C.exports.bool,textKey:C.exports.string,valueKey:C.exports.string,zeroState:C.exports.string}},jv={hideInlineSearch:C.exports.bool,onSearchChange:ae(),search:C.exports.string,searchDebounce:C.exports.number,searchPlaceholder:C.exports.string,searchInputRef:qt()},Gv=H(I(I(I({},J),Yv.propTypes),jv),{attachTo:qt().isRequired,conformWidth:C.exports.bool,id:C.exports.string.isRequired,isOpen:C.exports.bool,keepOpen:C.exports.bool,keyDown:ce(),nullOption:C.exports.string,offsets:C.exports.arrayOf(C.exports.number),onOptionListChanged:ae(),onOptionSelected:ae(),onPositionFlip:ae(),onSelfToggle:ae(),optionRole:C.exports.string,positionOverride:C.exports.arrayOf(be(M.Position)),selectedOption:C.exports.any,specialAction:ae(),ignoreWidthStyles:C.exports.bool,loading:C.exports.bool,filterByTextAndCaptionKey:C.exports.bool});async function td(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 p=c?await l||[]:l||[];if(c&&i.current!==l)return;let u=Array.from(p).filter(Boolean).map(f=>new M.SpsOptionListOption(f,typeof f=="function"?{textKey:"label",captionKey:"caption"}:{textKey:e.textKey,captionKey:e.captionKey}));if(e.nullOption&&u.unshift(new M.SpsOptionListOption(null,{text:e.nullOption})),t.value?(n({replacementPattern:new RegExp(t.value,"ig")}),u=u.filter(f=>{const m=new RegExp(t.value,"i");return e.filterByTextAndCaptionKey?m.test(f.text)||m.test(f.caption):m.test(f.text)})):n({replacementPattern:null}),e.disabledOptions)for(const f of u)e.disabledOptions.includes(f.value)&&(f.disabled=!0);a(Object.freeze(u)),e.onOptionListChanged&&e.onOptionListChanged(u.length),o(u.some(f=>f.value&&!!f.value.icon)),n({pending:!1})}function Uv(e,t,n){const[a,o]=s.useState(Object.freeze([])),[i,l]=s.useState(!1),c=s.useRef(null),p=s.useRef(e.options);typeof e.options!="function"&&(p.current=e.options);const u=s.useMemo(()=>typeof p.current=="function"?D.debounce(td,typeof e.searchDebounce!="undefined"?e.searchDebounce:500):td,[p.current,e.disabledOptions]);return s.useEffect(()=>{u(e,t,n,o,l,c)},[p.current,t.value,e.disabledOptions]),[a,i]}class Vn{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 zv(e,t){return I(I({},e),t)}function Jt(e){return $.useReducer(zv,e)}function qv({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}),p=s.useCallback(v=>{c({value:v.target.value}),n&&n(v)},[n]),u=s.useCallback(v=>{v.nativeEvent.stopImmediatePropagation(),v.stopPropagation()},[]),f=s.useCallback(v=>{v.nativeEvent.stopImmediatePropagation(),c({value:""}),n&&n(new Vn(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:p,onClick:u,onKeyDown:m}),l.value&&s.createElement("i",{className:"sps-icon sps-icon-x-circle sps-form-control__clear-btn",onClick:f}))),l,c]}const Jv=Qc||Kv,Zv=["Tab","Escape","Enter","Up","ArrowUp","Down","ArrowDown"],Xv=["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 Qv(e,t,n){return n?(e&&e[n])===(t&&t[n]):e===t}function nd(e,t,n){return t?!!(e==null?void 0:e.find(a=>{var o;return a[t]&&a[t]===((o=n==null?void 0:n.value)==null?void 0:o[t])})):!1}const Fa=s.forwardRef((e,t)=>{const nn=e,{captionKey:n,comparisonKey:a,disabledOptions:o,options:i,tall:l,textKey:c,valueKey:p,zeroState:u,hideInlineSearch:f,onSearchChange:m,search:g,searchDebounce:v,searchPlaceholder:w,attachTo:k,className:S,conformWidth:T,id:E,ignoreWidthStyles:y,isOpen:N,keepOpen:_,keyDown:R,nullOption:O,onOptionListChanged:P,onOptionSelected:K,onPositionFlip:B,onSelfToggle:z,optionRole:F,positionOverride:V,selectedOption:Z,specialAction:ne,unsafelyReplaceClassName:ie,loading:re,filterByTextAndCaptionKey:me,"data-testid":G}=nn,j=X(nn,["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","filterByTextAndCaptionKey","data-testid"]),U=s.useMemo(()=>ne?new M.SpsOptionListOption(ne,{textKey:"label",captionKey:"caption"}):null,[ne]),[Q,le]=s.useState(-1),[de,ee]=s.useState(N),we=t||s.useRef(null),Oe=s.useRef(null),Pe=s.useRef(null),Be=pa("sps-option-list-portal"),Fe=s.useContext(_t),[Ze,Xe]=V||[M.Position.BOTTOM_LEFT,M.Position.TOP_LEFT],[ve,ue]=de?Ba(we,k,Ze,I({altPosition:Xe,setMinWidth:!y,setWidth:!y&&T},Fe)):[{},!1],$e=s.useRef(null),[vt,tt,Wt]=qv(H(I({},e),{searchInputRef:$e})),[He,ct]=Uv(e,tt,Wt);s.useEffect(()=>{le(-1)},[tt]);const Qe=A(ie||"sps-option-list","z-stratum-dropdown",de&&"sps-option-list--open",tt.isAsync&&"sps-option-list--searchable",ue&&"sps-option-list--opens-upward",ne&&ne.label&&"sps-option-list--has-special-action",S),ut=A(ie||"sps-option-list__options",l&&"sps-option-list__options--tall"),kt=s.useCallback(()=>{de||(ee(!0),$e.current&&$e.current.focus(),le(-1),z&&z(!0))},[de,z]),Nt=s.useCallback(()=>{de&&(ee(!1),le(-1),z&&z(!1))},[de,z]),Ge=s.useCallback((ye,De)=>{De||ye&&!ye.disabled&&(typeof ye.value=="function"?ye.value():typeof K=="function"&&K(ye.value),_||Nt())},[K,Nt]),Xn=s.useCallback((ye,De,ft)=>{ye.stopPropagation(),Ge(De,ft)},[Ge]),Lt=s.useRef(o||[]);Lt.current=o||[];const mt=s.useCallback(ye=>{switch(ye.key){case"Tab":case"Escape":Nt();break;case"Enter":if(Q>-1){const De=He[Q]||U;ye.preventDefault();const ft=!!De&&nd(Lt.current,a,De);!ft&&De&&typeof K=="function"&&typeof De.value=="function"?De.value():De&&Ge(De,ft)}break;case"Up":case"ArrowUp":{let De=Q;ue?Q<=-1?De=He.length-1:Q===0?ne&&(De=He.length):Q<He.length&&(De=Q-1):Q>-1&&(De=Q-1),De!==Q&&(ye.preventDefault(),le(De));break}case"Down":case"ArrowDown":{kt();let De=Q;ue?Q!==-1&&(Q>=He.length?De=0:Q===He.length-1?De=-1:De=Q+1):Q<He.length-1+Number(!!ne)&&(De=Q+1),De!==Q&&(ye.preventDefault(),le(De));break}default:kt()}},[Nt,kt,Q,Ge,K,ue,He]),Ee=s.useCallback(ye=>{const De=He.findIndex(ft=>{if(ft.textKey){const an=ft.textKey;return ft.value[an].toLowerCase().charAt([0])===ye.key.toLocaleLowerCase()}return ft.value.toLowerCase().charAt([0])===ye.key.toLocaleLowerCase()});De>-1&&le(De)},[He]),Yt=s.useCallback(ye=>{!ye||(Zv.includes(ye.key)?mt(ye):Xv.includes(ye.key)&&Ee(ye))},[Nt,kt,Q,Ge,K,ue,He]);return s.useEffect(()=>{if(Fe!==null&&document.getElementsByClassName("sps-modal__body").length>0){const ye=()=>{z(!1)},De=document.getElementsByClassName("sps-modal__body")[0];return De.addEventListener("scroll",ye),()=>{De.removeEventListener("scroll",ye)}}},[]),s.useEffect(()=>{Pe.current&&Jv(Pe.current,{scrollMode:"if-needed",block:"nearest",inline:"nearest"})},[Q]),s.useEffect(()=>{ee(N),N?$e.current&&$e.current.focus():le(-1)},[N]),s.useEffect(()=>{Yt(R)},[R]),s.useEffect(()=>{!de&&Oe.current&&(Wt({value:""}),Oe.current.scrollTop=0),de&&B&&B(ue)},[de]),Be(s.createElement("div",I({className:Qe,id:E,"aria-activedescendant":Q>-1?`${E}-option-${Q}`:null,tabIndex:-1,ref:we,style:ve,onMouseLeave:()=>le(-1),"data-testid":G},j),vt,s.createElement("div",{className:ut,ref:Oe,"data-testid":`${G}-options`},!re&&!tt.pending&&u&&(tt.value||!tt.isAsync)&&He.length===0&&s.createElement("div",{className:"sps-option-list__zero-state"},u),(re||tt.pending)&&s.createElement("div",{className:"sps-option-list__loading"},s.createElement(Ds,null)),!re&&!tt.pending&&He.map((ye,De)=>{const ft=`${E}-option-${De}`,an=Qv(ye.value,Z,a),it=nd(Lt.current,a,ye);return s.createElement("a",{key:ft,id:ft,role:F,"aria-selected":an,href:ye.href,className:A("sps-option-list__option",ye.caption&&"sps-option-list__option--has-caption",ye.disabled&&"sps-option-list__option--disabled",ye.bold&&"sps-option-list__option--bold",(an||it)&&"sps-option-list__option--selected",Q===De&&"sps-option-list__option--highlighted"),onClick:In=>Xn(In,ye,it),onMouseOver:()=>le(De),tabIndex:-1,ref:Q===De?Pe:null,"data-testid":`${G}-option-${De}`},ye.value&&ye.value.icon&&s.createElement("i",{className:A("sps-icon","sps-option-list__option-icon",`sps-icon-${String(ye.value.icon)}`)}),(!ye.value||!ye.value.icon&&ct)&&s.createElement("span",{className:"sps-option-list__option-icon-spacer"}),s.createElement("span",{dangerouslySetInnerHTML:{__html:ye.getHtml(tt.replacementPattern)}}),ye.caption&&s.createElement("div",{className:"sps-option-list__option-caption"},s.createElement("span",{dangerouslySetInnerHTML:{__html:ye.caption.replace(tt.replacementPattern,"<u>$&</u>")}})))})),U&&ne.label&&s.createElement("a",{className:A("sps-option-list__option","sps-option-list__special-action",Q===He.length&&"sps-option-list__option--highlighted"),href:U.href,onClick:ye=>Xn(ye,U),onMouseOver:()=>le(He.length)},ne.icon&&s.createElement("i",{className:A("sps-icon","sps-option-list__option-icon",`sps-icon-${String(ne.icon)}`)}),!ne.icon&&ct&&s.createElement("span",{className:"sps-option-list__option-icon-spacer"}),s.createElement("span",null,ne.label))))});Object.assign(Fa,{propTypes:Gv,displayName:"SpsOptionList"});function Kt(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:p,props:u={}}of a[c])if(i.type===p&&Object.keys(u).every(m=>u[m]===i.props[m])){l=!0,o[c].push(i);break}l||o[o.length-1].push(i)}return o}function ad(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 sd(e,t){const n=$.useRef(!1);$.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function rd(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 ey(e,t,n){return function(o){!e.current.contains(o.target)&&!t.current.contains(o.target)&&n()}}function Aa(e,t){const n=s.useRef(!1),[a,o]=s.useState(!1),i=s.useCallback(()=>{n.current?n.current=!1:o(!0)},[]),l=s.useCallback((c=!1)=>{o(!1),n.current=c},[]);return rd("click",ey,[e,t,l]),{showPopup:a,doShowPopup:i,doHidePopup:l}}const ty={debounce:"number",disabled:"boolean",formMeta:"SpsFormFieldMeta<string>",icon:"SpsIcon",onChange:"React.ChangeEventHandler",placeholder:"string",suggestions:{type:`
168
168
  Eventually<Iterable<string>>
169
169
  | ((filter?: string) => Eventually<Iterable<string>>)
170
170
  `,required:!0},tallOptionList:"boolean",value:"string",zeroState:"string",loading:"boolean"},ny=H(I({},J),{debounce:C.exports.number,disabled:C.exports.bool,formControl:ce(),formMeta:ce(),icon:be(M.SpsIcon),onChange:ae(),placeholder:C.exports.string,suggestions:C.exports.oneOfType([C.exports.arrayOf(C.exports.string),C.exports.instanceOf(Promise),ae()]).isRequired,tallOptionList:C.exports.bool,value:C.exports.string,zeroState:C.exports.string,loading:C.exports.bool});function Ns(S){var T=S,{className:e,debounce:t=0,disabled:n,formControl:a,formMeta:o,onChange:i,icon:l,id:c,placeholder:p="",suggestions:u,unsafelyReplaceClassName:f,tallOptionList:m,value:g="",zeroState:v,loading:w}=T,k=X(T,["className","debounce","disabled","formControl","formMeta","onChange","icon","id","placeholder","suggestions","unsafelyReplaceClassName","tallOptionList","value","zeroState","loading"]);const E=o||a,{wrapperId:y,controlId:N}=At(c,E),[_,R]=Jt({keyDown:null,opensUpward:!1}),O=s.useRef(),P=s.useRef(),K=s.useRef(),{showPopup:B,doShowPopup:z,doHidePopup:F}=Aa(O,K);function V(j,U){E&&(E.setValue(j),E.markAsDirty()),i&&i(U||new Vn({value:j}))}function Z(j){P.current.value="",V(""),j.stopPropagation()}function ne(j){V(j.target.value,j)}function ie(j){n||(["Up","ArrowUp","Down","ArrowDown","Enter"].indexOf(j.key)>-1&&(j.preventDefault(),j.persist()),j.stopPropagation(),R({keyDown:j})),j.key==="Tab"&&F()}function re(j){j?z():F()}function me(j){R({opensUpward:j})}const G=A(f||"sps-autocomplete",B&&"sps-autocomplete--open",B&&"z-stratum-dropdown",_.opensUpward&&"sps-autocomplete--opens-upward",n&&"sps-form-control--disabled",e);return s.createElement(Tt,{id:y,className:G,formControl:a,formMeta:o,inputRef:P,ref:O,focusInputOnClick:!0,onClick:j=>j.nativeEvent.stopImmediatePropagation()},s.createElement("div",{className:"sps-text-input"},s.createElement("div",{className:"sps-form-control"},l&&s.createElement("i",{className:A("sps-text-input__icon","sps-icon",`sps-icon-${l}`)}),s.createElement("input",I({type:"text",ref:P,value:g,className:"sps-text-input__input",placeholder:p,onFocus:z,onClick:z,onChange:ne,onKeyDown:ie,disabled:n,id:N},k)),g&&!n&&s.createElement("i",{className:"sps-icon sps-icon-x-circle sps-form-control__clear-btn",onClick:j=>Z(j)}))),s.createElement(Fa,{id:`${y}_options`,ref:K,attachTo:O,isOpen:B,options:u,hideInlineSearch:!0,keyDown:_.keyDown,onOptionSelected:V,onPositionFlip:me,onSelfToggle:re,offsets:[1,0],search:g,searchDebounce:t,tall:m,zeroState:v,loading:w}))}Object.assign(Ns,{props:ty,propTypes:ny,displayName:"SpsAutocomplete"});const od={basic:{label:"Basic",examples:{basic:{react:D.code`
package/lib/index.es.js CHANGED
@@ -922,6 +922,9 @@ class SpsFormMetaBase {
922
922
  isValid() {
923
923
  return !this.errors || this.isPristine();
924
924
  }
925
+ hasErrors() {
926
+ return !!this.errors;
927
+ }
925
928
  isVisibilyInvalid() {
926
929
  return this.errors && (this.revealAllErrors || !this.isPristine() && Object.keys(this.errors).some((key) => AsTypingErrorKeys.has(key)));
927
930
  }
@@ -1019,6 +1022,9 @@ class SpsFormSetMeta extends SpsFormFieldMeta {
1019
1022
  isValid() {
1020
1023
  return super.isValid() && this.rollup("isValid");
1021
1024
  }
1025
+ hasErrors() {
1026
+ return super.hasErrors() || Object.keys(this.fields).some((key) => this.fields[key].hasErrors());
1027
+ }
1022
1028
  contentsAreValid() {
1023
1029
  return this.rollup("isValid") && this.rollup("contentsAreValid");
1024
1030
  }
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": "5.10.6",
4
+ "version": "5.11.0",
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": "5.10.6",
32
- "@spscommerce/ds-shared": "5.10.6",
33
- "@spscommerce/positioning": "5.10.6",
34
- "@spscommerce/utils": "5.10.6",
31
+ "@spscommerce/ds-colors": "5.11.0",
32
+ "@spscommerce/ds-shared": "5.11.0",
33
+ "@spscommerce/positioning": "5.11.0",
34
+ "@spscommerce/utils": "5.11.0",
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": "5.10.6",
43
- "@spscommerce/ds-shared": "5.10.6",
44
- "@spscommerce/positioning": "5.10.6",
45
- "@spscommerce/utils": "5.10.6",
42
+ "@spscommerce/ds-colors": "5.11.0",
43
+ "@spscommerce/ds-shared": "5.11.0",
44
+ "@spscommerce/positioning": "5.11.0",
45
+ "@spscommerce/utils": "5.11.0",
46
46
  "@testing-library/react": "^9.3.2",
47
47
  "@types/prop-types": "^15.7.1",
48
48
  "@types/react": "^16.9.0",