@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
2 lines (1 loc) • 3.09 kB
JavaScript
"use strict";const i=require("react/jsx-runtime"),N=require("./index-DwV9MiDB.js"),O=require("react"),D=require("./index-UhBwhhTY.js"),C=require("./index-CLdeiAAB.js"),$=require("./index-DYxWvftI.js"),z=require("./index-DZvjbfOs.js"),M=require("./index-DM1mqyG5.js"),j=require("./index-14SsMENa.js");function H(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const c=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,c.get?c:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const s=H(O);var g="Checkbox",[A,G]=C.createContextScope(g),[B,K]=A(g),S=s.forwardRef((e,r)=>{const{__scopeCheckbox:t,name:c,checked:p,defaultChecked:o,required:b,disabled:u,value:x="on",onCheckedChange:m,form:l,...v}=e,[a,k]=s.useState(null),y=D.useComposedRefs(r,n=>k(n)),P=s.useRef(!1),E=a?l||!!a.closest("form"):!0,[f=!1,R]=C.useControllableState({prop:p,defaultProp:o,onChange:m}),I=s.useRef(f);return s.useEffect(()=>{const n=a==null?void 0:a.form;if(n){const h=()=>R(I.current);return n.addEventListener("reset",h),()=>n.removeEventListener("reset",h)}},[a,R]),i.jsxs(B,{scope:t,state:f,disabled:u,children:[i.jsx(j.Primitive.button,{type:"button",role:"checkbox","aria-checked":d(f)?"mixed":f,"aria-required":b,"data-state":_(f),"data-disabled":u?"":void 0,disabled:u,value:x,...v,ref:y,onKeyDown:C.composeEventHandlers(e.onKeyDown,n=>{n.key==="Enter"&&n.preventDefault()}),onClick:C.composeEventHandlers(e.onClick,n=>{R(h=>d(h)?!0:!h),E&&(P.current=n.isPropagationStopped(),P.current||n.stopPropagation())})}),E&&i.jsx(L,{control:a,bubbles:!P.current,name:c,value:x,checked:f,required:b,disabled:u,form:l,style:{transform:"translateX(-100%)"},defaultChecked:d(o)?!1:o})]})});S.displayName=g;var q="CheckboxIndicator",w=s.forwardRef((e,r)=>{const{__scopeCheckbox:t,forceMount:c,...p}=e,o=K(q,t);return i.jsx(M.Presence,{present:c||d(o.state)||o.state===!0,children:i.jsx(j.Primitive.span,{"data-state":_(o.state),"data-disabled":o.disabled?"":void 0,...p,ref:r,style:{pointerEvents:"none",...e.style}})})});w.displayName=q;var L=e=>{const{control:r,checked:t,bubbles:c=!0,defaultChecked:p,...o}=e,b=s.useRef(null),u=$.usePrevious(t),x=z.useSize(r);s.useEffect(()=>{const l=b.current,v=window.HTMLInputElement.prototype,k=Object.getOwnPropertyDescriptor(v,"checked").set;if(u!==t&&k){const y=new Event("click",{bubbles:c});l.indeterminate=d(t),k.call(l,d(t)?!1:t),l.dispatchEvent(y)}},[u,t,c]);const m=s.useRef(d(t)?!1:t);return i.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:p??m.current,...o,tabIndex:-1,ref:b,style:{...e.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function d(e){return e==="indeterminate"}function _(e){return d(e)?"indeterminate":e?"checked":"unchecked"}var T=S,X=w;const F=({className:e,...r})=>i.jsx(T,{className:N.cn("focus-ring flex-center border-input peer size-4 shrink-0 rounded-sm border disabled:cursor-not-allowed disabled:opacity-50",e),...r,children:i.jsx(X,{className:"flex-center bg-primary size-2.5 rounded-xs"})});exports.Checkbox=F;