ivt
Version:
Ivt Components Library
3 lines (2 loc) • 4.46 kB
JavaScript
import{c as e}from"../chunks/utils-C-nkZ_Ir.mjs";import*as r from"react";import t from"react";import{u as o}from"../chunks/index-C-j8pU3U.mjs";import{c as n}from"../chunks/index-Dr5ObK3L.mjs";import{c}from"../chunks/index-DVnblQ-a.mjs";import{u as a}from"../chunks/index-BOUg6o32.mjs";import{u as s}from"../chunks/index-DzFekr2h.mjs";import{u as d}from"../chunks/index-CnLJ482V.mjs";import{P as i}from"../chunks/index-1xuBLrml.mjs";import{P as u}from"../chunks/index-DiPp8h7C.mjs";import{jsx as l,jsxs as m,Fragment as p}from"react/jsx-runtime";import{C as h}from"../chunks/check-PTeDoR8O.mjs";import"../chunks/bundle-mjs-DHbvkKp4.mjs";import"../chunks/index-0-u0cdz8.mjs";import"react-dom";import"@radix-ui/react-slot";import"../chunks/createLucideIcon-D1jKv6AP.mjs";var f="Checkbox",[k,b]=n(f),[C,x]=k(f);function v(e){const{__scopeCheckbox:t,checked:o,children:n,defaultChecked:c,disabled:s,form:d,name:i,onCheckedChange:u,required:m,value:p="on",internal_do_not_use_render:h}=e,[k,b]=a({prop:o,defaultProp:c??!1,onChange:u,caller:f}),[x,v]=r.useState(null),[_,y]=r.useState(null),g=r.useRef(!1),j=!x||(!!d||!!x.closest("form")),w={checked:k,disabled:s,setChecked:b,control:x,setControl:v,name:i,form:d,value:p,hasConsumerStoppedPropagationRef:g,required:m,defaultChecked:!P(c)&&c,isFormControl:j,bubbleInput:_,setBubbleInput:y};return l(C,{scope:t,...w,children:R(h)?h(w):n})}var _="CheckboxTrigger",y=r.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...a},s)=>{const{control:d,value:i,disabled:m,checked:p,required:h,setControl:f,setChecked:k,hasConsumerStoppedPropagationRef:b,isFormControl:C,bubbleInput:v}=x(_,e),y=o(s,f),g=r.useRef(p);return r.useEffect(()=>{const e=d?.form;if(e){const r=()=>k(g.current);return e.addEventListener("reset",r),()=>e.removeEventListener("reset",r)}},[d,k]),l(u.button,{type:"button",role:"checkbox","aria-checked":P(p)?"mixed":p,"aria-required":h,"data-state":q(p),"data-disabled":m?"":void 0,disabled:m,value:i,...a,ref:y,onKeyDown:c(t,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:c(n,e=>{k(e=>!!P(e)||!e),v&&C&&(b.current=e.isPropagationStopped(),b.current||e.stopPropagation())})})});y.displayName=_;var g=r.forwardRef((e,r)=>{const{__scopeCheckbox:t,name:o,checked:n,defaultChecked:c,required:a,disabled:s,value:d,onCheckedChange:i,form:u,...h}=e;return l(v,{__scopeCheckbox:t,checked:n,defaultChecked:c,disabled:s,required:a,onCheckedChange:i,name:o,form:u,value:d,internal_do_not_use_render:({isFormControl:e})=>m(p,{children:[l(y,{...h,ref:r,__scopeCheckbox:t}),e&&l(I,{__scopeCheckbox:t})]})})});g.displayName=f;var j="CheckboxIndicator",w=r.forwardRef((e,r)=>{const{__scopeCheckbox:t,forceMount:o,...n}=e,c=x(j,t);return l(i,{present:o||P(c.checked)||!0===c.checked,children:l(u.span,{"data-state":q(c.checked),"data-disabled":c.disabled?"":void 0,...n,ref:r,style:{pointerEvents:"none",...e.style}})})});w.displayName=j;var E="CheckboxBubbleInput",I=r.forwardRef(({__scopeCheckbox:e,...t},n)=>{const{control:c,hasConsumerStoppedPropagationRef:a,checked:i,defaultChecked:m,required:p,disabled:h,name:f,value:k,form:b,bubbleInput:C,setBubbleInput:v}=x(E,e),_=o(n,v),y=s(i),g=d(c);r.useEffect(()=>{const e=C;if(!e)return;const r=window.HTMLInputElement.prototype,t=Object.getOwnPropertyDescriptor(r,"checked").set,o=!a.current;if(y!==i&&t){const r=new Event("click",{bubbles:o});e.indeterminate=P(i),t.call(e,!P(i)&&i),e.dispatchEvent(r)}},[C,y,i,a]);const j=r.useRef(!P(i)&&i);return l(u.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??j.current,required:p,disabled:h,name:f,value:k,form:b,...t,tabIndex:-1,ref:_,style:{...t.style,...g,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function R(e){return"function"==typeof e}function P(e){return"indeterminate"===e}function q(e){return P(e)?"indeterminate":e?"checked":"unchecked"}function N({className:r,...o}){return t.createElement(g,{"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(w,{"data-slot":"checkbox-indicator",className:e("flex items-center justify-center text-current")},o.children?o.children:t.createElement(h,{className:"h-4 w-4"})))}I.displayName=E;export{N as Checkbox};
//# sourceMappingURL=index.mjs.map