Socket
Socket
Sign inDemoInstall

@zag-js/checkbox

Package Overview
Dependencies
Maintainers
1
Versions
935
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@zag-js/checkbox - npm Package Compare versions

Comparing version 0.53.0 to 0.54.0

10

dist/index.d.ts

@@ -115,7 +115,7 @@ import * as _zag_js_anatomy from '@zag-js/anatomy';

toggleChecked(): void;
rootProps: T["label"];
labelProps: T["element"];
controlProps: T["element"];
hiddenInputProps: T["input"];
indicatorProps: T["element"];
getRootProps(): T["label"];
getLabelProps(): T["element"];
getControlProps(): T["element"];
getHiddenInputProps(): T["input"];
getIndicatorProps(): T["element"];
}

@@ -122,0 +122,0 @@

@@ -1,2 +0,323 @@

"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var src_exports={};__export(src_exports,{anatomy:()=>anatomy,connect:()=>connect,machine:()=>machine,props:()=>props,splitProps:()=>splitProps});module.exports=__toCommonJS(src_exports);var import_anatomy=require("@zag-js/anatomy");var anatomy=(0,import_anatomy.createAnatomy)("checkbox").parts("root","label","control","indicator");var parts=anatomy.build();var import_dom_query2=require("@zag-js/dom-query");var import_dom_query=require("@zag-js/dom-query");var dom=(0,import_dom_query.createScope)({getRootId:ctx=>ctx.ids?.root??`checkbox:${ctx.id}`,getLabelId:ctx=>ctx.ids?.label??`checkbox:${ctx.id}:label`,getControlId:ctx=>ctx.ids?.control??`checkbox:${ctx.id}:control`,getHiddenInputId:ctx=>ctx.ids?.hiddenInput??`checkbox:${ctx.id}:hidden`,getRootEl:ctx=>dom.getById(ctx,dom.getRootId(ctx)),getHiddenInputEl:ctx=>dom.getById(ctx,dom.getHiddenInputId(ctx))});function connect(state,send,normalize){const disabled=state.context.isDisabled;const focused=!disabled&&state.context.focused;const checked=state.context.isChecked;const indeterminate=state.context.isIndeterminate;const readOnly=state.context.readOnly;const dataAttrs={"data-active":(0,import_dom_query2.dataAttr)(state.context.active),"data-focus":(0,import_dom_query2.dataAttr)(focused),"data-readonly":(0,import_dom_query2.dataAttr)(readOnly),"data-hover":(0,import_dom_query2.dataAttr)(state.context.hovered),"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-state":indeterminate?"indeterminate":state.context.checked?"checked":"unchecked","data-invalid":(0,import_dom_query2.dataAttr)(state.context.invalid)};return{checked,disabled,indeterminate,focused,checkedState:state.context.checked,setChecked(checked2){send({type:"CHECKED.SET",checked:checked2,isTrusted:false})},toggleChecked(){send({type:"CHECKED.TOGGLE",checked,isTrusted:false})},rootProps:normalize.label({...parts.root.attrs,...dataAttrs,dir:state.context.dir,id:dom.getRootId(state.context),htmlFor:dom.getHiddenInputId(state.context),onPointerMove(){if(disabled)return;send({type:"CONTEXT.SET",context:{hovered:true}})},onPointerLeave(){if(disabled)return;send({type:"CONTEXT.SET",context:{hovered:false}})},onClick(event){if(event.target===dom.getHiddenInputEl(state.context)){event.stopPropagation()}}}),labelProps:normalize.element({...parts.label.attrs,...dataAttrs,dir:state.context.dir,id:dom.getLabelId(state.context)}),controlProps:normalize.element({...parts.control.attrs,...dataAttrs,dir:state.context.dir,id:dom.getControlId(state.context),"aria-hidden":true}),indicatorProps:normalize.element({...parts.indicator.attrs,...dataAttrs,dir:state.context.dir,hidden:!indeterminate&&!state.context.checked}),hiddenInputProps:normalize.input({id:dom.getHiddenInputId(state.context),type:"checkbox",required:state.context.required,defaultChecked:checked,disabled,"aria-labelledby":dom.getLabelId(state.context),"aria-invalid":state.context.invalid,name:state.context.name,form:state.context.form,value:state.context.value,style:import_dom_query2.visuallyHiddenStyle,onChange(event){if(readOnly){event.preventDefault();return}const checked2=event.currentTarget.checked;send({type:"CHECKED.SET",checked:checked2,isTrusted:true})}})}}var import_core=require("@zag-js/core");var import_dom_event=require("@zag-js/dom-event");var import_form_utils=require("@zag-js/form-utils");var import_utils=require("@zag-js/utils");var{not}=import_core.guards;function machine(userContext){const ctx=(0,import_utils.compact)(userContext);return(0,import_core.createMachine)({id:"checkbox",initial:"ready",context:{checked:false,value:"on",disabled:false,...ctx,fieldsetDisabled:false},watch:{disabled:"removeFocusIfNeeded",checked:"syncInputElement"},activities:["trackFormControlState","trackPressEvent","trackFocusVisible"],on:{"CHECKED.TOGGLE":[{guard:not("isTrusted"),actions:["toggleChecked","dispatchChangeEvent"]},{actions:["toggleChecked"]}],"CHECKED.SET":[{guard:not("isTrusted"),actions:["setChecked","dispatchChangeEvent"]},{actions:["setChecked"]}],"CONTEXT.SET":{actions:["setContext"]}},computed:{isIndeterminate:ctx2=>isIndeterminate(ctx2.checked),isChecked:ctx2=>isChecked(ctx2.checked),isDisabled:ctx2=>!!ctx2.disabled||ctx2.fieldsetDisabled},states:{ready:{}}},{guards:{isTrusted:(_ctx,evt)=>!!evt.isTrusted},activities:{trackPressEvent(ctx2){if(ctx2.isDisabled)return;return(0,import_dom_event.trackPress)({pointerNode:dom.getRootEl(ctx2),keyboardNode:dom.getHiddenInputEl(ctx2),isValidKey:event=>event.key===" ",onPress:()=>ctx2.active=false,onPressStart:()=>ctx2.active=true,onPressEnd:()=>ctx2.active=false})},trackFocusVisible(ctx2){if(ctx2.isDisabled)return;return(0,import_dom_event.trackFocusVisible)(dom.getHiddenInputEl(ctx2),{onFocus:()=>ctx2.focused=true,onBlur:()=>ctx2.focused=false})},trackFormControlState(ctx2,_evt,{send,initialContext}){return(0,import_form_utils.trackFormControl)(dom.getHiddenInputEl(ctx2),{onFieldsetDisabledChange(disabled){ctx2.fieldsetDisabled=disabled},onFormReset(){send({type:"CHECKED.SET",checked:!!initialContext.checked})}})}},actions:{setContext(ctx2,evt){Object.assign(ctx2,evt.context)},syncInputElement(ctx2){const inputEl=dom.getHiddenInputEl(ctx2);if(!inputEl)return;(0,import_form_utils.setElementChecked)(inputEl,ctx2.isChecked);inputEl.indeterminate=ctx2.isIndeterminate},removeFocusIfNeeded(ctx2){if(ctx2.disabled&&ctx2.focused){ctx2.focused=false}},setChecked(ctx2,evt){set.checked(ctx2,evt.checked)},toggleChecked(ctx2){const checked=isIndeterminate(ctx2.checked)?true:!ctx2.checked;set.checked(ctx2,checked)},dispatchChangeEvent(ctx2){const inputEl=dom.getHiddenInputEl(ctx2);(0,import_form_utils.dispatchInputCheckedEvent)(inputEl,{checked:isChecked(ctx2.checked)})}}})}function isIndeterminate(checked){return checked==="indeterminate"}function isChecked(checked){return isIndeterminate(checked)?false:!!checked}var invoke={change:ctx=>{ctx.onCheckedChange?.({checked:ctx.checked})}};var set={checked:(ctx,checked)=>{if((0,import_utils.isEqual)(ctx.checked,checked))return;ctx.checked=checked;invoke.change(ctx)}};var import_types=require("@zag-js/types");var import_utils2=require("@zag-js/utils");var props=(0,import_types.createProps)()(["checked","dir","disabled","form","getRootNode","id","ids","invalid","name","onCheckedChange","readOnly","required","value"]);var splitProps=(0,import_utils2.createSplitProps)(props);0&&(module.exports={anatomy,connect,machine,props,splitProps});
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
anatomy: () => anatomy,
connect: () => connect,
machine: () => machine,
props: () => props,
splitProps: () => splitProps
});
module.exports = __toCommonJS(src_exports);
// src/checkbox.anatomy.ts
var import_anatomy = require("@zag-js/anatomy");
var anatomy = (0, import_anatomy.createAnatomy)("checkbox").parts("root", "label", "control", "indicator");
var parts = anatomy.build();
// src/checkbox.connect.ts
var import_dom_query2 = require("@zag-js/dom-query");
// src/checkbox.dom.ts
var import_dom_query = require("@zag-js/dom-query");
var dom = (0, import_dom_query.createScope)({
getRootId: (ctx) => ctx.ids?.root ?? `checkbox:${ctx.id}`,
getLabelId: (ctx) => ctx.ids?.label ?? `checkbox:${ctx.id}:label`,
getControlId: (ctx) => ctx.ids?.control ?? `checkbox:${ctx.id}:control`,
getHiddenInputId: (ctx) => ctx.ids?.hiddenInput ?? `checkbox:${ctx.id}:hidden`,
getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),
getHiddenInputEl: (ctx) => dom.getById(ctx, dom.getHiddenInputId(ctx))
});
// src/checkbox.connect.ts
function connect(state, send, normalize) {
const disabled = state.context.isDisabled;
const focused = !disabled && state.context.focused;
const checked = state.context.isChecked;
const indeterminate = state.context.isIndeterminate;
const readOnly = state.context.readOnly;
const dataAttrs = {
"data-active": (0, import_dom_query2.dataAttr)(state.context.active),
"data-focus": (0, import_dom_query2.dataAttr)(focused),
"data-readonly": (0, import_dom_query2.dataAttr)(readOnly),
"data-hover": (0, import_dom_query2.dataAttr)(state.context.hovered),
"data-disabled": (0, import_dom_query2.dataAttr)(disabled),
"data-state": indeterminate ? "indeterminate" : state.context.checked ? "checked" : "unchecked",
"data-invalid": (0, import_dom_query2.dataAttr)(state.context.invalid)
};
return {
checked,
disabled,
indeterminate,
focused,
checkedState: state.context.checked,
setChecked(checked2) {
send({ type: "CHECKED.SET", checked: checked2, isTrusted: false });
},
toggleChecked() {
send({ type: "CHECKED.TOGGLE", checked, isTrusted: false });
},
getRootProps() {
return normalize.label({
...parts.root.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getRootId(state.context),
htmlFor: dom.getHiddenInputId(state.context),
onPointerMove() {
if (disabled)
return;
send({ type: "CONTEXT.SET", context: { hovered: true } });
},
onPointerLeave() {
if (disabled)
return;
send({ type: "CONTEXT.SET", context: { hovered: false } });
},
onClick(event) {
if (event.target === dom.getHiddenInputEl(state.context)) {
event.stopPropagation();
}
}
});
},
getLabelProps() {
return normalize.element({
...parts.label.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getLabelId(state.context)
});
},
getControlProps() {
return normalize.element({
...parts.control.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getControlId(state.context),
"aria-hidden": true
});
},
getIndicatorProps() {
return normalize.element({
...parts.indicator.attrs,
...dataAttrs,
dir: state.context.dir,
hidden: !indeterminate && !state.context.checked
});
},
getHiddenInputProps() {
return normalize.input({
id: dom.getHiddenInputId(state.context),
type: "checkbox",
required: state.context.required,
defaultChecked: checked,
disabled,
"aria-labelledby": dom.getLabelId(state.context),
"aria-invalid": state.context.invalid,
name: state.context.name,
form: state.context.form,
value: state.context.value,
style: import_dom_query2.visuallyHiddenStyle,
onChange(event) {
if (readOnly) {
event.preventDefault();
return;
}
const checked2 = event.currentTarget.checked;
send({ type: "CHECKED.SET", checked: checked2, isTrusted: true });
}
});
}
};
}
// src/checkbox.machine.ts
var import_core = require("@zag-js/core");
var import_dom_event = require("@zag-js/dom-event");
var import_form_utils = require("@zag-js/form-utils");
var import_utils = require("@zag-js/utils");
var { not } = import_core.guards;
function machine(userContext) {
const ctx = (0, import_utils.compact)(userContext);
return (0, import_core.createMachine)(
{
id: "checkbox",
initial: "ready",
context: {
checked: false,
value: "on",
disabled: false,
...ctx,
fieldsetDisabled: false
},
watch: {
disabled: "removeFocusIfNeeded",
checked: "syncInputElement"
},
activities: ["trackFormControlState", "trackPressEvent", "trackFocusVisible"],
on: {
"CHECKED.TOGGLE": [
{
guard: not("isTrusted"),
actions: ["toggleChecked", "dispatchChangeEvent"]
},
{
actions: ["toggleChecked"]
}
],
"CHECKED.SET": [
{
guard: not("isTrusted"),
actions: ["setChecked", "dispatchChangeEvent"]
},
{
actions: ["setChecked"]
}
],
"CONTEXT.SET": {
actions: ["setContext"]
}
},
computed: {
isIndeterminate: (ctx2) => isIndeterminate(ctx2.checked),
isChecked: (ctx2) => isChecked(ctx2.checked),
isDisabled: (ctx2) => !!ctx2.disabled || ctx2.fieldsetDisabled
},
states: {
ready: {}
}
},
{
guards: {
isTrusted: (_ctx, evt) => !!evt.isTrusted
},
activities: {
trackPressEvent(ctx2) {
if (ctx2.isDisabled)
return;
return (0, import_dom_event.trackPress)({
pointerNode: dom.getRootEl(ctx2),
keyboardNode: dom.getHiddenInputEl(ctx2),
isValidKey: (event) => event.key === " ",
onPress: () => ctx2.active = false,
onPressStart: () => ctx2.active = true,
onPressEnd: () => ctx2.active = false
});
},
trackFocusVisible(ctx2) {
if (ctx2.isDisabled)
return;
return (0, import_dom_event.trackFocusVisible)(dom.getHiddenInputEl(ctx2), {
onFocus: () => ctx2.focused = true,
onBlur: () => ctx2.focused = false
});
},
trackFormControlState(ctx2, _evt, { send, initialContext }) {
return (0, import_form_utils.trackFormControl)(dom.getHiddenInputEl(ctx2), {
onFieldsetDisabledChange(disabled) {
ctx2.fieldsetDisabled = disabled;
},
onFormReset() {
send({ type: "CHECKED.SET", checked: !!initialContext.checked });
}
});
}
},
actions: {
setContext(ctx2, evt) {
Object.assign(ctx2, evt.context);
},
syncInputElement(ctx2) {
const inputEl = dom.getHiddenInputEl(ctx2);
if (!inputEl)
return;
(0, import_form_utils.setElementChecked)(inputEl, ctx2.isChecked);
inputEl.indeterminate = ctx2.isIndeterminate;
},
removeFocusIfNeeded(ctx2) {
if (ctx2.disabled && ctx2.focused) {
ctx2.focused = false;
}
},
setChecked(ctx2, evt) {
set.checked(ctx2, evt.checked);
},
toggleChecked(ctx2) {
const checked = isIndeterminate(ctx2.checked) ? true : !ctx2.checked;
set.checked(ctx2, checked);
},
dispatchChangeEvent(ctx2) {
const inputEl = dom.getHiddenInputEl(ctx2);
(0, import_form_utils.dispatchInputCheckedEvent)(inputEl, { checked: isChecked(ctx2.checked) });
}
}
}
);
}
function isIndeterminate(checked) {
return checked === "indeterminate";
}
function isChecked(checked) {
return isIndeterminate(checked) ? false : !!checked;
}
var invoke = {
change: (ctx) => {
ctx.onCheckedChange?.({ checked: ctx.checked });
}
};
var set = {
checked: (ctx, checked) => {
if ((0, import_utils.isEqual)(ctx.checked, checked))
return;
ctx.checked = checked;
invoke.change(ctx);
}
};
// src/checkbox.props.ts
var import_types = require("@zag-js/types");
var import_utils2 = require("@zag-js/utils");
var props = (0, import_types.createProps)()([
"checked",
"dir",
"disabled",
"form",
"getRootNode",
"id",
"ids",
"invalid",
"name",
"onCheckedChange",
"readOnly",
"required",
"value"
]);
var splitProps = (0, import_utils2.createSplitProps)(props);
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
anatomy,
connect,
machine,
props,
splitProps
});
//# sourceMappingURL=index.js.map
{
"name": "@zag-js/checkbox",
"version": "0.53.0",
"version": "0.54.0",
"description": "Core logic for the checkbox widget implemented as a state machine",

@@ -30,9 +30,9 @@ "keywords": [

"dependencies": {
"@zag-js/anatomy": "0.53.0",
"@zag-js/core": "0.53.0",
"@zag-js/types": "0.53.0",
"@zag-js/dom-query": "0.53.0",
"@zag-js/dom-event": "0.53.0",
"@zag-js/form-utils": "0.53.0",
"@zag-js/utils": "0.53.0"
"@zag-js/anatomy": "0.54.0",
"@zag-js/core": "0.54.0",
"@zag-js/types": "0.54.0",
"@zag-js/dom-query": "0.54.0",
"@zag-js/dom-event": "0.54.0",
"@zag-js/form-utils": "0.54.0",
"@zag-js/utils": "0.54.0"
},

@@ -39,0 +39,0 @@ "devDependencies": {

@@ -39,68 +39,78 @@ import { dataAttr, visuallyHiddenStyle } from "@zag-js/dom-query"

rootProps: normalize.label({
...parts.root.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getRootId(state.context),
htmlFor: dom.getHiddenInputId(state.context),
onPointerMove() {
if (disabled) return
send({ type: "CONTEXT.SET", context: { hovered: true } })
},
onPointerLeave() {
if (disabled) return
send({ type: "CONTEXT.SET", context: { hovered: false } })
},
onClick(event) {
if (event.target === dom.getHiddenInputEl(state.context)) {
event.stopPropagation()
}
},
}),
getRootProps() {
return normalize.label({
...parts.root.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getRootId(state.context),
htmlFor: dom.getHiddenInputId(state.context),
onPointerMove() {
if (disabled) return
send({ type: "CONTEXT.SET", context: { hovered: true } })
},
onPointerLeave() {
if (disabled) return
send({ type: "CONTEXT.SET", context: { hovered: false } })
},
onClick(event) {
if (event.target === dom.getHiddenInputEl(state.context)) {
event.stopPropagation()
}
},
})
},
labelProps: normalize.element({
...parts.label.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getLabelId(state.context),
}),
getLabelProps() {
return normalize.element({
...parts.label.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getLabelId(state.context),
})
},
controlProps: normalize.element({
...parts.control.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getControlId(state.context),
"aria-hidden": true,
}),
getControlProps() {
return normalize.element({
...parts.control.attrs,
...dataAttrs,
dir: state.context.dir,
id: dom.getControlId(state.context),
"aria-hidden": true,
})
},
indicatorProps: normalize.element({
...parts.indicator.attrs,
...dataAttrs,
dir: state.context.dir,
hidden: !indeterminate && !state.context.checked,
}),
getIndicatorProps() {
return normalize.element({
...parts.indicator.attrs,
...dataAttrs,
dir: state.context.dir,
hidden: !indeterminate && !state.context.checked,
})
},
hiddenInputProps: normalize.input({
id: dom.getHiddenInputId(state.context),
type: "checkbox",
required: state.context.required,
defaultChecked: checked,
disabled: disabled,
"aria-labelledby": dom.getLabelId(state.context),
"aria-invalid": state.context.invalid,
name: state.context.name,
form: state.context.form,
value: state.context.value,
style: visuallyHiddenStyle,
onChange(event) {
if (readOnly) {
event.preventDefault()
return
}
getHiddenInputProps() {
return normalize.input({
id: dom.getHiddenInputId(state.context),
type: "checkbox",
required: state.context.required,
defaultChecked: checked,
disabled: disabled,
"aria-labelledby": dom.getLabelId(state.context),
"aria-invalid": state.context.invalid,
name: state.context.name,
form: state.context.form,
value: state.context.value,
style: visuallyHiddenStyle,
onChange(event) {
if (readOnly) {
event.preventDefault()
return
}
const checked = event.currentTarget.checked
send({ type: "CHECKED.SET", checked, isTrusted: true })
},
}),
const checked = event.currentTarget.checked
send({ type: "CHECKED.SET", checked, isTrusted: true })
},
})
},
}
}

@@ -153,7 +153,7 @@ import type { StateMachine as S } from "@zag-js/core"

toggleChecked(): void
rootProps: T["label"]
labelProps: T["element"]
controlProps: T["element"]
hiddenInputProps: T["input"]
indicatorProps: T["element"]
getRootProps(): T["label"]
getLabelProps(): T["element"]
getControlProps(): T["element"]
getHiddenInputProps(): T["input"]
getIndicatorProps(): T["element"]
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc