diff --git a/.changeset/light-beds-obey.md b/.changeset/light-beds-obey.md new file mode 100644 index 0000000000..be8cc1fa69 --- /dev/null +++ b/.changeset/light-beds-obey.md @@ -0,0 +1,7 @@ +--- +"@zag-js/dom-query": patch +"@zag-js/focus-visible": patch +"@zag-js/number-utils": patch +--- + +Improve DOM detection code diff --git a/packages/utilities/dom-query/src/platform.ts b/packages/utilities/dom-query/src/platform.ts index 8cd2bf71f4..3157368669 100644 --- a/packages/utilities/dom-query/src/platform.ts +++ b/packages/utilities/dom-query/src/platform.ts @@ -1,4 +1,4 @@ -export const isDom = () => typeof window !== "undefined" +export const isDom = () => typeof document !== "undefined" export function getPlatform() { const agent = (navigator as any).userAgentData diff --git a/packages/utilities/focus-visible/package.json b/packages/utilities/focus-visible/package.json index be70897058..293ee70991 100644 --- a/packages/utilities/focus-visible/package.json +++ b/packages/utilities/focus-visible/package.json @@ -34,6 +34,9 @@ }, "clean-package": "../../../clean-package.config.json", "main": "src/index.ts", + "dependencies": { + "@zag-js/dom-query": "workspace:*" + }, "devDependencies": { "clean-package": "2.2.0" } diff --git a/packages/utilities/focus-visible/src/index.ts b/packages/utilities/focus-visible/src/index.ts index b235139f4d..11538d077f 100644 --- a/packages/utilities/focus-visible/src/index.ts +++ b/packages/utilities/focus-visible/src/index.ts @@ -1,3 +1,5 @@ +import { isDom } from "@zag-js/dom-query" + type Modality = "keyboard" | "pointer" | "virtual" type HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent type Handler = (modality: Modality, e: HandlerEvent | null) => void @@ -96,7 +98,7 @@ function isFocusVisible() { } function setupGlobalFocusEvents() { - if (typeof window === "undefined" || hasSetup) { + if (!isDom() || hasSetup) { return } diff --git a/packages/utilities/number/src/number.ts b/packages/utilities/number/src/number.ts index f7015eca70..adf7083886 100644 --- a/packages/utilities/number/src/number.ts +++ b/packages/utilities/number/src/number.ts @@ -12,7 +12,7 @@ export function round(v: number | string, t?: number) { } export function roundToDevicePixel(num: number) { - if (typeof window === "undefined") return Math.round(num) + if (typeof window.devicePixelRatio !== "number") return Math.round(num) const dp = window.devicePixelRatio return Math.floor(num * dp + 0.5) / dp } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac7f5b7d75..2c8f3f74d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2381,6 +2381,10 @@ importers: version: 2.2.0 packages/utilities/focus-visible: + dependencies: + '@zag-js/dom-query': + specifier: workspace:* + version: link:../dom-query devDependencies: clean-package: specifier: 2.2.0