ivt
Version:
Ivt Components Library
3 lines (2 loc) • 4.52 kB
JavaScript
import{c as e}from"../chunks/utils-B4HRExF_.mjs";import*as r from"react";import t from"react";import{P as o,u as n,c}from"../chunks/index-BgU_7G37.mjs";import{c as a}from"../chunks/index-BXKQJZ6z.mjs";import{u as s}from"../chunks/index-CJw5YZXp.mjs";import{u as i}from"../chunks/index-DHTHqgm4.mjs";import{P as d}from"../chunks/index-Bj6b6xW8.mjs";import{jsx as u,jsxs as l,Fragment as m}from"react/jsx-runtime";import{C as p}from"../chunks/check-DcO6cfxw.mjs";import"../chunks/bundle-mjs-DdsKEIOo.mjs";import"../chunks/index-C99OdH8-.mjs";import"react-dom";import"@radix-ui/react-slot";import"../chunks/createLucideIcon-BSkMD9sy.mjs";var h="Checkbox",[f,b]=a(h),[k,C]=f(h);function v(e){const{__scopeCheckbox:t,checked:o,children:n,defaultChecked:c,disabled:a,form:i,name:d,onCheckedChange:l,required:m,value:p="on",internal_do_not_use_render:f}=e,[b,C]=s({prop:o,defaultProp:c??!1,onChange:l,caller:h}),[v,x]=r.useState(null),[_,y]=r.useState(null),g=r.useRef(!1),j=!v||(!!i||!!v.closest("form")),w={checked:b,disabled:a,setChecked:C,control:v,setControl:x,name:d,form:i,value:p,hasConsumerStoppedPropagationRef:g,required:m,defaultChecked:!I(c)&&c,isFormControl:j,bubbleInput:_,setBubbleInput:y};return u(k,{scope:t,...w,children:R(f)?f(w):n})}var x="CheckboxTrigger",_=r.forwardRef((({__scopeCheckbox:e,onKeyDown:t,onClick:o,...a},s)=>{const{control:i,value:l,disabled:m,checked:p,required:h,setControl:f,setChecked:b,hasConsumerStoppedPropagationRef:k,isFormControl:v,bubbleInput:_}=C(x,e),y=n(s,f),g=r.useRef(p);return r.useEffect((()=>{const e=i?.form;if(e){const r=()=>b(g.current);return e.addEventListener("reset",r),()=>e.removeEventListener("reset",r)}}),[i,b]),u(d.button,{type:"button",role:"checkbox","aria-checked":I(p)?"mixed":p,"aria-required":h,"data-state":P(p),"data-disabled":m?"":void 0,disabled:m,value:l,...a,ref:y,onKeyDown:c(t,(e=>{"Enter"===e.key&&e.preventDefault()})),onClick:c(o,(e=>{b((e=>!!I(e)||!e)),_&&v&&(k.current=e.isPropagationStopped(),k.current||e.stopPropagation())}))})}));_.displayName=x;var y=r.forwardRef(((e,r)=>{const{__scopeCheckbox:t,name:o,checked:n,defaultChecked:c,required:a,disabled:s,value:i,onCheckedChange:d,form:p,...h}=e;return u(v,{__scopeCheckbox:t,checked:n,defaultChecked:c,disabled:s,required:a,onCheckedChange:d,name:o,form:p,value:i,internal_do_not_use_render:({isFormControl:e})=>l(m,{children:[u(_,{...h,ref:r,__scopeCheckbox:t}),e&&u(E,{__scopeCheckbox:t})]})})}));y.displayName=h;var g="CheckboxIndicator",j=r.forwardRef(((e,r)=>{const{__scopeCheckbox:t,forceMount:n,...c}=e,a=C(g,t);return u(o,{present:n||I(a.checked)||!0===a.checked,children:u(d.span,{"data-state":P(a.checked),"data-disabled":a.disabled?"":void 0,...c,ref:r,style:{pointerEvents:"none",...e.style}})})}));j.displayName=g;var w="CheckboxBubbleInput",E=r.forwardRef((({__scopeCheckbox:e,...t},o)=>{const{control:c,hasConsumerStoppedPropagationRef:a,checked:s,defaultChecked:l,required:m,disabled:p,name:h,value:f,form:b,bubbleInput:k,setBubbleInput:v}=C(w,e),x=n(o,v),_=function(e){const t=r.useRef({value:e,previous:e});return r.useMemo((()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous)),[e])}(s),y=i(c);r.useEffect((()=>{const e=k;if(!e)return;const r=window.HTMLInputElement.prototype,t=Object.getOwnPropertyDescriptor(r,"checked").set,o=!a.current;if(_!==s&&t){const r=new Event("click",{bubbles:o});e.indeterminate=I(s),t.call(e,!I(s)&&s),e.dispatchEvent(r)}}),[k,_,s,a]);const g=r.useRef(!I(s)&&s);return u(d.input,{type:"checkbox","aria-hidden":!0,defaultChecked:l??g.current,required:m,disabled:p,name:h,value:f,form:b,...t,tabIndex:-1,ref:x,style:{...t.style,...y,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})}));function R(e){return"function"==typeof e}function I(e){return"indeterminate"===e}function P(e){return I(e)?"indeterminate":e?"checked":"unchecked"}function q({className:r,...o}){return t.createElement(y,{"data-slot":"checkbox",className:e("peer border-primary focus-visible:ring-ring data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground h-4 w-4 shrink-0 rounded-sm border shadow focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",r),...o},t.createElement(j,{"data-slot":"checkbox-indicator",className:e("flex items-center justify-center text-current")},o.children?o.children:t.createElement(p,{className:"h-4 w-4"})))}E.displayName=w;export{q as Checkbox};
//# sourceMappingURL=index.mjs.map