@cdx-ui/primitives 0.0.1-beta.91 → 0.0.1-beta.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/CLAUDE.md +2 -0
- package/lib/commonjs/input/InputRoot.js +9 -1
- package/lib/commonjs/input/InputRoot.js.map +1 -1
- package/lib/commonjs/select/useSelectTrigger.js +9 -1
- package/lib/commonjs/select/useSelectTrigger.js.map +1 -1
- package/lib/commonjs/select/useSelectTrigger.web.js +10 -1
- package/lib/commonjs/select/useSelectTrigger.web.js.map +1 -1
- package/lib/module/CLAUDE.md +2 -0
- package/lib/module/input/InputRoot.js +9 -1
- package/lib/module/input/InputRoot.js.map +1 -1
- package/lib/module/select/useSelectTrigger.js +9 -1
- package/lib/module/select/useSelectTrigger.js.map +1 -1
- package/lib/module/select/useSelectTrigger.web.js +10 -1
- package/lib/module/select/useSelectTrigger.web.js.map +1 -1
- package/lib/typescript/input/InputRoot.d.ts.map +1 -1
- package/lib/typescript/select/useSelectTrigger.d.ts +1 -0
- package/lib/typescript/select/useSelectTrigger.d.ts.map +1 -1
- package/lib/typescript/select/useSelectTrigger.web.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/CLAUDE.md +2 -0
- package/src/input/InputRoot.tsx +11 -0
- package/src/select/useSelectTrigger.ts +14 -0
- package/src/select/useSelectTrigger.web.ts +13 -0
package/lib/commonjs/CLAUDE.md
CHANGED
|
@@ -20,6 +20,7 @@ Root primitives emit `data-*` attributes for the interaction state they own and
|
|
|
20
20
|
|
|
21
21
|
- **Root** — emits + provides context. Always.
|
|
22
22
|
- **Sub-slot** — does not subscribe, does not emit. Opt in only when the styled layer (or the slot's own behavior) demonstrably reacts to the state.
|
|
23
|
+
- **Native compound conditions** — when the styled layer needs two or more interaction states combined on native (Uniwind evaluates only the last `data-[]` condition in a chain), the primitive derives a single compound-state string via a module-scope lookup table and emits it through `dataAttributes({...})` **in parallel** with the individual booleans. Canonical example: `InputRoot.tsx`'s `FIELD_STATES` → `data-field-state` (`idle` / `invalid` / `focused` / `focused-invalid`). See `docs/internal/practices/data-attributes.md` § "Compound state on native".
|
|
23
24
|
|
|
24
25
|
Pointlessly emitting on every sub-slot multiplies bridge writes (native) and DOM attribute writes (web) for no consumer benefit. A sub-slot that calls `useButtonContext()` becomes a subscriber — every interaction re-renders it even when nothing visually changes.
|
|
25
26
|
|
|
@@ -76,6 +77,7 @@ Each concrete primitive is a `forwardRef` component that hardcodes its default R
|
|
|
76
77
|
- **`I*Props` convention** — public prop types are aliased with `I` prefix (e.g., `IButtonProps`), exported from `types.ts`.
|
|
77
78
|
- **`Interface*Props` pattern** — the full interface (e.g., `InterfaceButtonProps`) extends the appropriate RN base type (`PressableProps`, `ViewProps`, etc.) with interaction state booleans (`isHovered`, `isActive`, `isFocused`, `isFocusVisible`, `isDisabled`); re-exported as `I*Props`.
|
|
78
79
|
- **`dataAttributes()` helper** — always use the helper from `../utils/dataAttributes` to emit `data-*` props; it handles platform differences (native vs web).
|
|
80
|
+
- **Derived compound-state attributes** — when the styled layer needs a native compound condition, derive a single compound-state string via a module-scope lookup table and emit it via `dataAttributes({...})` alongside the individual booleans. `InputRoot.tsx`'s `FIELD_STATES` → `data-field-state` is the canonical example.
|
|
79
81
|
- **`mergeDataAttributes(...sources)` helper** — when a primitive Root receives data attrs through `props` from its styled layer (e.g. `data-slot`) AND emits its own data attrs (e.g. interaction state), combine them via `mergeDataAttributes(props, dataAttributes({...}))`. A plain `{...dataAttributes({...})} {...props}` spread chain wipes out one side on web — `dataAttributes` returns `{ dataSet }`, so back-to-back spreads replace each other. The merge helper preserves both. `ButtonRoot.tsx` shows the canonical pattern.
|
|
80
82
|
- **`composeEventHandlers`** from `@cdx-ui/utils` — merge consumer handlers with internal handlers; never silently override.
|
|
81
83
|
- **`forwardRef`** on every component — refs forwarded to the underlying host element.
|
|
@@ -13,6 +13,12 @@ var _slot = require("../slot");
|
|
|
13
13
|
var _dataAttributes = require("../utils/dataAttributes");
|
|
14
14
|
var _context = require("./context");
|
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
+
const FIELD_STATES = {
|
|
17
|
+
'false:false': 'idle',
|
|
18
|
+
'false:true': 'invalid',
|
|
19
|
+
'true:false': 'focused',
|
|
20
|
+
'true:true': 'focused-invalid'
|
|
21
|
+
};
|
|
16
22
|
const InputRoot = exports.InputRoot = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
17
23
|
asChild,
|
|
18
24
|
children,
|
|
@@ -62,6 +68,7 @@ const InputRoot = exports.InputRoot = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
62
68
|
inputFieldRef
|
|
63
69
|
}), [resolvedDisabled, resolvedInvalid, resolvedHovered, resolvedFocused, resolvedFocusVisible, resolvedReadOnly, resolvedRequired, handleFocus]);
|
|
64
70
|
const Comp = asChild ? _slot.Slot : _reactNative.View;
|
|
71
|
+
const fieldState = FIELD_STATES[`${resolvedFocused ? 'true' : 'false'}:${resolvedInvalid ? 'true' : 'false'}`];
|
|
65
72
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.InputProvider, {
|
|
66
73
|
value: contextValue,
|
|
67
74
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Comp, {
|
|
@@ -74,7 +81,8 @@ const InputRoot = exports.InputRoot = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
74
81
|
invalid: resolvedInvalid,
|
|
75
82
|
readonly: resolvedReadOnly,
|
|
76
83
|
required: resolvedRequired,
|
|
77
|
-
focusVisible: resolvedFocusVisible
|
|
84
|
+
focusVisible: resolvedFocusVisible,
|
|
85
|
+
fieldState
|
|
78
86
|
})),
|
|
79
87
|
children: children
|
|
80
88
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_utils","_focus","_interactions","_slot","_dataAttributes","_context","_jsxRuntime","InputRoot","exports","forwardRef","asChild","children","isReadOnly","isDisabled","isInvalid","isRequired","isHovered","isHoveredProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","rest","ref","inputRef","useRef","inputFieldRef","setIsFocused","useState","handleFocus","useCallback","focusState","callback","inputProps","useFormControlContext","useHover","useFocusRing","resolvedDisabled","resolvedInvalid","resolvedReadOnly","resolvedRequired","resolvedHovered","resolvedFocused","resolvedFocusVisible","contextValue","useMemo","Comp","Slot","View","jsx","InputProvider","value","mergeRefs","mergeDataAttributes","dataAttributes","hover","focus","disabled","invalid","readonly","required","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["input/InputRoot.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AAA0C,IAAAQ,WAAA,GAAAR,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_utils","_focus","_interactions","_slot","_dataAttributes","_context","_jsxRuntime","FIELD_STATES","InputRoot","exports","forwardRef","asChild","children","isReadOnly","isDisabled","isInvalid","isRequired","isHovered","isHoveredProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","rest","ref","inputRef","useRef","inputFieldRef","setIsFocused","useState","handleFocus","useCallback","focusState","callback","inputProps","useFormControlContext","useHover","useFocusRing","resolvedDisabled","resolvedInvalid","resolvedReadOnly","resolvedRequired","resolvedHovered","resolvedFocused","resolvedFocusVisible","contextValue","useMemo","Comp","Slot","View","fieldState","jsx","InputProvider","value","mergeRefs","mergeDataAttributes","dataAttributes","hover","focus","disabled","invalid","readonly","required","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["input/InputRoot.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,6 +9,12 @@ var _utils = require("@cdx-ui/utils");
|
|
|
9
9
|
var _focus = require("@react-native-aria/focus");
|
|
10
10
|
var _interactions = require("@react-native-aria/interactions");
|
|
11
11
|
var _context = require("./context");
|
|
12
|
+
const FIELD_STATES = {
|
|
13
|
+
'false:false': 'idle',
|
|
14
|
+
'false:true': 'invalid',
|
|
15
|
+
'true:false': 'focused',
|
|
16
|
+
'true:true': 'focused-invalid'
|
|
17
|
+
};
|
|
12
18
|
/**
|
|
13
19
|
* Shared logic for `Select.Trigger` across native and web. Each platform file is
|
|
14
20
|
* a thin host-element wrapper that spreads this hook's output. The hook composes
|
|
@@ -171,6 +177,7 @@ function useSelectTrigger(forwardedRef, options) {
|
|
|
171
177
|
id: triggerId,
|
|
172
178
|
disabled
|
|
173
179
|
};
|
|
180
|
+
const fieldState = FIELD_STATES[`${interactionState.focus ? 'true' : 'false'}:${contextInvalid ? 'true' : 'false'}`];
|
|
174
181
|
const dataAttrValues = {
|
|
175
182
|
hover: interactionState.hover,
|
|
176
183
|
focus: interactionState.focus,
|
|
@@ -180,7 +187,8 @@ function useSelectTrigger(forwardedRef, options) {
|
|
|
180
187
|
required: !!contextRequired,
|
|
181
188
|
invalid: !!contextInvalid,
|
|
182
189
|
readonly: !!contextReadOnly,
|
|
183
|
-
state: open ? 'open' : 'closed'
|
|
190
|
+
state: open ? 'open' : 'closed',
|
|
191
|
+
fieldState
|
|
184
192
|
};
|
|
185
193
|
const handlers = {
|
|
186
194
|
onPress: (0, _utils.composeEventHandlers)(consumerOnPress, handlePress),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_utils","_focus","_interactions","_context","useSelectTrigger","forwardedRef","options","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","ariaDescribedBy","ariaDescribedByProp","onPress","consumerOnPress","onPressIn","consumerOnPressIn","onPressOut","consumerOnPressOut","onHoverIn","consumerOnHoverIn","onHoverOut","consumerOnHoverOut","onFocus","consumerOnFocus","onBlur","consumerOnBlur","onKeyDown","consumerOnKeyDown","open","setOpen","disabled","contextDisabled","required","contextRequired","invalid","contextInvalid","readOnly","contextReadOnly","triggerId","contentId","triggerRef","activeValue","accessibilityLabel","ariaDescribedByFromField","useSelectContext","field","useFormControlContext","focusProps","focusRingProps","useFocusRing","pressProps","isPressed","usePress","useFocus","hoverProps","useHover","triggerFocused","setTriggerFocused","useState","handlePress","useCallback","_e","handleKeyDown","e","key","preventDefault","isLabelActive","Boolean","useReportFormControlLabelFocus","useLayoutEffect","interactionState","useMemo","hover","focus","active","focusVisible","labelFocusGateRef","useRef","current","labelFocusBridge","isOff","isRO","node","inputRef","r","mergedRef","mergeRefs","filter","join","ariaProps","role","undefined","id","dataAttrValues","readonly","state","handlers","composeEventHandlers"],"sourceRoot":"../../../src","sources":["select/useSelectTrigger.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAUA,IAAAC,MAAA,GAAAD,OAAA;AAOA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAEA,IAAAI,QAAA,GAAAJ,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","require","_utils","_focus","_interactions","_context","FIELD_STATES","useSelectTrigger","forwardedRef","options","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","ariaDescribedBy","ariaDescribedByProp","onPress","consumerOnPress","onPressIn","consumerOnPressIn","onPressOut","consumerOnPressOut","onHoverIn","consumerOnHoverIn","onHoverOut","consumerOnHoverOut","onFocus","consumerOnFocus","onBlur","consumerOnBlur","onKeyDown","consumerOnKeyDown","open","setOpen","disabled","contextDisabled","required","contextRequired","invalid","contextInvalid","readOnly","contextReadOnly","triggerId","contentId","triggerRef","activeValue","accessibilityLabel","ariaDescribedByFromField","useSelectContext","field","useFormControlContext","focusProps","focusRingProps","useFocusRing","pressProps","isPressed","usePress","useFocus","hoverProps","useHover","triggerFocused","setTriggerFocused","useState","handlePress","useCallback","_e","handleKeyDown","e","key","preventDefault","isLabelActive","Boolean","useReportFormControlLabelFocus","useLayoutEffect","interactionState","useMemo","hover","focus","active","focusVisible","labelFocusGateRef","useRef","current","labelFocusBridge","isOff","isRO","node","inputRef","r","mergedRef","mergeRefs","filter","join","ariaProps","role","undefined","id","fieldState","dataAttrValues","readonly","state","handlers","composeEventHandlers"],"sourceRoot":"../../../src","sources":["select/useSelectTrigger.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,6 +9,13 @@ var _utils = require("@cdx-ui/utils");
|
|
|
9
9
|
var _focus = require("@react-native-aria/focus");
|
|
10
10
|
var _interactions = require("@react-native-aria/interactions");
|
|
11
11
|
var _context = require("./context");
|
|
12
|
+
const FIELD_STATES = {
|
|
13
|
+
'false:false': 'idle',
|
|
14
|
+
'false:true': 'invalid',
|
|
15
|
+
'true:false': 'focused',
|
|
16
|
+
'true:true': 'focused-invalid'
|
|
17
|
+
};
|
|
18
|
+
|
|
12
19
|
/**
|
|
13
20
|
* Web variant — drops `useHover` and `useFocusRing` per the trigger-prune todo:
|
|
14
21
|
* neither emitted attribute has a consumer in `selectTriggerVariants`, and the
|
|
@@ -159,6 +166,7 @@ function useSelectTrigger(forwardedRef, options) {
|
|
|
159
166
|
id: triggerId,
|
|
160
167
|
disabled
|
|
161
168
|
};
|
|
169
|
+
const fieldState = FIELD_STATES[`${interactionState.focus ? 'true' : 'false'}:${contextInvalid ? 'true' : 'false'}`];
|
|
162
170
|
const dataAttrValues = {
|
|
163
171
|
focus: interactionState.focus,
|
|
164
172
|
active: interactionState.active,
|
|
@@ -166,7 +174,8 @@ function useSelectTrigger(forwardedRef, options) {
|
|
|
166
174
|
required: !!contextRequired,
|
|
167
175
|
invalid: !!contextInvalid,
|
|
168
176
|
readonly: !!contextReadOnly,
|
|
169
|
-
state: open ? 'open' : 'closed'
|
|
177
|
+
state: open ? 'open' : 'closed',
|
|
178
|
+
fieldState
|
|
170
179
|
};
|
|
171
180
|
const handlers = {
|
|
172
181
|
onPress: (0, _utils.composeEventHandlers)(consumerOnPress, handlePress),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_utils","_focus","_interactions","_context","useSelectTrigger","forwardedRef","options","asChild","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","ariaDescribedBy","ariaDescribedByProp","onPress","consumerOnPress","onPressIn","consumerOnPressIn","onPressOut","consumerOnPressOut","onHoverIn","consumerOnHoverIn","onHoverOut","consumerOnHoverOut","onFocus","consumerOnFocus","onBlur","consumerOnBlur","onKeyDown","consumerOnKeyDown","open","setOpen","disabled","contextDisabled","required","contextRequired","invalid","contextInvalid","readOnly","contextReadOnly","triggerId","contentId","triggerRef","activeValue","accessibilityLabel","ariaDescribedByFromField","useSelectContext","field","useFormControlContext","pressProps","isPressed","usePress","focusProps","useFocus","triggerFocused","setTriggerFocused","useState","handlePress","useCallback","_e","handleKeyDown","e","key","preventDefault","isLabelActive","Boolean","useReportFormControlLabelFocus","useLayoutEffect","interactionState","useMemo","hover","focus","active","focusVisible","labelFocusGateRef","useRef","current","labelFocusBridge","isOff","isRO","node","shouldMountLabelFocusBridge","inputRef","r","mergedRef","mergeRefs","filter","join","ariaProps","role","undefined","id","dataAttrValues","readonly","state","handlers","composeEventHandlers"],"sourceRoot":"../../../src","sources":["select/useSelectTrigger.web.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAUA,IAAAC,MAAA,GAAAD,OAAA;AAOA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAEA,IAAAI,QAAA,GAAAJ,OAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,
|
|
1
|
+
{"version":3,"names":["_react","require","_utils","_focus","_interactions","_context","FIELD_STATES","useSelectTrigger","forwardedRef","options","asChild","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","ariaDescribedBy","ariaDescribedByProp","onPress","consumerOnPress","onPressIn","consumerOnPressIn","onPressOut","consumerOnPressOut","onHoverIn","consumerOnHoverIn","onHoverOut","consumerOnHoverOut","onFocus","consumerOnFocus","onBlur","consumerOnBlur","onKeyDown","consumerOnKeyDown","open","setOpen","disabled","contextDisabled","required","contextRequired","invalid","contextInvalid","readOnly","contextReadOnly","triggerId","contentId","triggerRef","activeValue","accessibilityLabel","ariaDescribedByFromField","useSelectContext","field","useFormControlContext","pressProps","isPressed","usePress","focusProps","useFocus","triggerFocused","setTriggerFocused","useState","handlePress","useCallback","_e","handleKeyDown","e","key","preventDefault","isLabelActive","Boolean","useReportFormControlLabelFocus","useLayoutEffect","interactionState","useMemo","hover","focus","active","focusVisible","labelFocusGateRef","useRef","current","labelFocusBridge","isOff","isRO","node","shouldMountLabelFocusBridge","inputRef","r","mergedRef","mergeRefs","filter","join","ariaProps","role","undefined","id","fieldState","dataAttrValues","readonly","state","handlers","composeEventHandlers"],"sourceRoot":"../../../src","sources":["select/useSelectTrigger.web.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/CLAUDE.md
CHANGED
|
@@ -20,6 +20,7 @@ Root primitives emit `data-*` attributes for the interaction state they own and
|
|
|
20
20
|
|
|
21
21
|
- **Root** — emits + provides context. Always.
|
|
22
22
|
- **Sub-slot** — does not subscribe, does not emit. Opt in only when the styled layer (or the slot's own behavior) demonstrably reacts to the state.
|
|
23
|
+
- **Native compound conditions** — when the styled layer needs two or more interaction states combined on native (Uniwind evaluates only the last `data-[]` condition in a chain), the primitive derives a single compound-state string via a module-scope lookup table and emits it through `dataAttributes({...})` **in parallel** with the individual booleans. Canonical example: `InputRoot.tsx`'s `FIELD_STATES` → `data-field-state` (`idle` / `invalid` / `focused` / `focused-invalid`). See `docs/internal/practices/data-attributes.md` § "Compound state on native".
|
|
23
24
|
|
|
24
25
|
Pointlessly emitting on every sub-slot multiplies bridge writes (native) and DOM attribute writes (web) for no consumer benefit. A sub-slot that calls `useButtonContext()` becomes a subscriber — every interaction re-renders it even when nothing visually changes.
|
|
25
26
|
|
|
@@ -76,6 +77,7 @@ Each concrete primitive is a `forwardRef` component that hardcodes its default R
|
|
|
76
77
|
- **`I*Props` convention** — public prop types are aliased with `I` prefix (e.g., `IButtonProps`), exported from `types.ts`.
|
|
77
78
|
- **`Interface*Props` pattern** — the full interface (e.g., `InterfaceButtonProps`) extends the appropriate RN base type (`PressableProps`, `ViewProps`, etc.) with interaction state booleans (`isHovered`, `isActive`, `isFocused`, `isFocusVisible`, `isDisabled`); re-exported as `I*Props`.
|
|
78
79
|
- **`dataAttributes()` helper** — always use the helper from `../utils/dataAttributes` to emit `data-*` props; it handles platform differences (native vs web).
|
|
80
|
+
- **Derived compound-state attributes** — when the styled layer needs a native compound condition, derive a single compound-state string via a module-scope lookup table and emit it via `dataAttributes({...})` alongside the individual booleans. `InputRoot.tsx`'s `FIELD_STATES` → `data-field-state` is the canonical example.
|
|
79
81
|
- **`mergeDataAttributes(...sources)` helper** — when a primitive Root receives data attrs through `props` from its styled layer (e.g. `data-slot`) AND emits its own data attrs (e.g. interaction state), combine them via `mergeDataAttributes(props, dataAttributes({...}))`. A plain `{...dataAttributes({...})} {...props}` spread chain wipes out one side on web — `dataAttributes` returns `{ dataSet }`, so back-to-back spreads replace each other. The merge helper preserves both. `ButtonRoot.tsx` shows the canonical pattern.
|
|
80
82
|
- **`composeEventHandlers`** from `@cdx-ui/utils` — merge consumer handlers with internal handlers; never silently override.
|
|
81
83
|
- **`forwardRef`** on every component — refs forwarded to the underlying host element.
|
|
@@ -9,6 +9,12 @@ import { Slot } from '../slot';
|
|
|
9
9
|
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
10
10
|
import { InputProvider } from './context';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
const FIELD_STATES = {
|
|
13
|
+
'false:false': 'idle',
|
|
14
|
+
'false:true': 'invalid',
|
|
15
|
+
'true:false': 'focused',
|
|
16
|
+
'true:true': 'focused-invalid'
|
|
17
|
+
};
|
|
12
18
|
export const InputRoot = /*#__PURE__*/forwardRef(({
|
|
13
19
|
asChild,
|
|
14
20
|
children,
|
|
@@ -58,6 +64,7 @@ export const InputRoot = /*#__PURE__*/forwardRef(({
|
|
|
58
64
|
inputFieldRef
|
|
59
65
|
}), [resolvedDisabled, resolvedInvalid, resolvedHovered, resolvedFocused, resolvedFocusVisible, resolvedReadOnly, resolvedRequired, handleFocus]);
|
|
60
66
|
const Comp = asChild ? Slot : View;
|
|
67
|
+
const fieldState = FIELD_STATES[`${resolvedFocused ? 'true' : 'false'}:${resolvedInvalid ? 'true' : 'false'}`];
|
|
61
68
|
return /*#__PURE__*/_jsx(InputProvider, {
|
|
62
69
|
value: contextValue,
|
|
63
70
|
children: /*#__PURE__*/_jsx(Comp, {
|
|
@@ -70,7 +77,8 @@ export const InputRoot = /*#__PURE__*/forwardRef(({
|
|
|
70
77
|
invalid: resolvedInvalid,
|
|
71
78
|
readonly: resolvedReadOnly,
|
|
72
79
|
required: resolvedRequired,
|
|
73
|
-
focusVisible: resolvedFocusVisible
|
|
80
|
+
focusVisible: resolvedFocusVisible,
|
|
81
|
+
fieldState
|
|
74
82
|
})),
|
|
75
83
|
children: children
|
|
76
84
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","useCallback","useMemo","useRef","useState","View","mergeRefs","useFormControlContext","useFocusRing","useHover","Slot","dataAttributes","mergeDataAttributes","InputProvider","jsx","_jsx","InputRoot","asChild","children","isReadOnly","isDisabled","isInvalid","isRequired","isHovered","isHoveredProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","rest","ref","inputRef","inputFieldRef","setIsFocused","handleFocus","focusState","callback","inputProps","resolvedDisabled","resolvedInvalid","resolvedReadOnly","resolvedRequired","resolvedHovered","resolvedFocused","resolvedFocusVisible","contextValue","Comp","value","hover","focus","disabled","invalid","readonly","required","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["input/InputRoot.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,WAAW,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAA2B,OAAO;AAC7F,SAASC,IAAI,QAAwB,cAAc;AACnD,SAASC,SAAS,EAAEC,qBAAqB,QAAQ,eAAe;AAChE,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,aAAa,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useMemo","useRef","useState","View","mergeRefs","useFormControlContext","useFocusRing","useHover","Slot","dataAttributes","mergeDataAttributes","InputProvider","jsx","_jsx","FIELD_STATES","InputRoot","asChild","children","isReadOnly","isDisabled","isInvalid","isRequired","isHovered","isHoveredProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","rest","ref","inputRef","inputFieldRef","setIsFocused","handleFocus","focusState","callback","inputProps","resolvedDisabled","resolvedInvalid","resolvedReadOnly","resolvedRequired","resolvedHovered","resolvedFocused","resolvedFocusVisible","contextValue","Comp","fieldState","value","hover","focus","disabled","invalid","readonly","required","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["input/InputRoot.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,12 @@ import { composeEventHandlers, mergeRefs, useFormControlContext, useReportFormCo
|
|
|
5
5
|
import { useFocus, useFocusRing } from '@react-native-aria/focus';
|
|
6
6
|
import { useHover, usePress } from '@react-native-aria/interactions';
|
|
7
7
|
import { useSelectContext } from './context';
|
|
8
|
+
const FIELD_STATES = {
|
|
9
|
+
'false:false': 'idle',
|
|
10
|
+
'false:true': 'invalid',
|
|
11
|
+
'true:false': 'focused',
|
|
12
|
+
'true:true': 'focused-invalid'
|
|
13
|
+
};
|
|
8
14
|
/**
|
|
9
15
|
* Shared logic for `Select.Trigger` across native and web. Each platform file is
|
|
10
16
|
* a thin host-element wrapper that spreads this hook's output. The hook composes
|
|
@@ -167,6 +173,7 @@ export function useSelectTrigger(forwardedRef, options) {
|
|
|
167
173
|
id: triggerId,
|
|
168
174
|
disabled
|
|
169
175
|
};
|
|
176
|
+
const fieldState = FIELD_STATES[`${interactionState.focus ? 'true' : 'false'}:${contextInvalid ? 'true' : 'false'}`];
|
|
170
177
|
const dataAttrValues = {
|
|
171
178
|
hover: interactionState.hover,
|
|
172
179
|
focus: interactionState.focus,
|
|
@@ -176,7 +183,8 @@ export function useSelectTrigger(forwardedRef, options) {
|
|
|
176
183
|
required: !!contextRequired,
|
|
177
184
|
invalid: !!contextInvalid,
|
|
178
185
|
readonly: !!contextReadOnly,
|
|
179
|
-
state: open ? 'open' : 'closed'
|
|
186
|
+
state: open ? 'open' : 'closed',
|
|
187
|
+
fieldState
|
|
180
188
|
};
|
|
181
189
|
const handlers = {
|
|
182
190
|
onPress: composeEventHandlers(consumerOnPress, handlePress),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useLayoutEffect","useMemo","useRef","useState","composeEventHandlers","mergeRefs","useFormControlContext","useReportFormControlLabelFocus","useFocus","useFocusRing","useHover","usePress","useSelectContext","useSelectTrigger","forwardedRef","options","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","ariaDescribedBy","ariaDescribedByProp","onPress","consumerOnPress","onPressIn","consumerOnPressIn","onPressOut","consumerOnPressOut","onHoverIn","consumerOnHoverIn","onHoverOut","consumerOnHoverOut","onFocus","consumerOnFocus","onBlur","consumerOnBlur","onKeyDown","consumerOnKeyDown","open","setOpen","disabled","contextDisabled","required","contextRequired","invalid","contextInvalid","readOnly","contextReadOnly","triggerId","contentId","triggerRef","activeValue","accessibilityLabel","ariaDescribedByFromField","field","focusProps","focusRingProps","pressProps","isPressed","hoverProps","triggerFocused","setTriggerFocused","handlePress","_e","handleKeyDown","e","key","preventDefault","isLabelActive","Boolean","interactionState","hover","focus","active","focusVisible","labelFocusGateRef","current","labelFocusBridge","isOff","isRO","node","inputRef","r","mergedRef","filter","join","ariaProps","role","undefined","id","dataAttrValues","readonly","state","handlers"],"sourceRoot":"../../../src","sources":["select/useSelectTrigger.ts"],"mappings":";;AAAA,SACEA,WAAW,EACXC,eAAe,EACfC,OAAO,EACPC,MAAM,EACNC,QAAQ,QAGH,OAAO;AAEd,SACEC,oBAAoB,EACpBC,SAAS,EACTC,qBAAqB,EACrBC,8BAA8B,QAEzB,eAAe;AACtB,SAASC,QAAQ,EAAEC,YAAY,QAAQ,0BAA0B;AACjE,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,iCAAiC;AAEpE,SAASC,gBAAgB,QAAQ,WAAW;
|
|
1
|
+
{"version":3,"names":["useCallback","useLayoutEffect","useMemo","useRef","useState","composeEventHandlers","mergeRefs","useFormControlContext","useReportFormControlLabelFocus","useFocus","useFocusRing","useHover","usePress","useSelectContext","FIELD_STATES","useSelectTrigger","forwardedRef","options","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","ariaDescribedBy","ariaDescribedByProp","onPress","consumerOnPress","onPressIn","consumerOnPressIn","onPressOut","consumerOnPressOut","onHoverIn","consumerOnHoverIn","onHoverOut","consumerOnHoverOut","onFocus","consumerOnFocus","onBlur","consumerOnBlur","onKeyDown","consumerOnKeyDown","open","setOpen","disabled","contextDisabled","required","contextRequired","invalid","contextInvalid","readOnly","contextReadOnly","triggerId","contentId","triggerRef","activeValue","accessibilityLabel","ariaDescribedByFromField","field","focusProps","focusRingProps","pressProps","isPressed","hoverProps","triggerFocused","setTriggerFocused","handlePress","_e","handleKeyDown","e","key","preventDefault","isLabelActive","Boolean","interactionState","hover","focus","active","focusVisible","labelFocusGateRef","current","labelFocusBridge","isOff","isRO","node","inputRef","r","mergedRef","filter","join","ariaProps","role","undefined","id","fieldState","dataAttrValues","readonly","state","handlers"],"sourceRoot":"../../../src","sources":["select/useSelectTrigger.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,13 @@ import { composeEventHandlers, mergeRefs, useFormControlContext, useReportFormCo
|
|
|
5
5
|
import { useFocus } from '@react-native-aria/focus';
|
|
6
6
|
import { usePress } from '@react-native-aria/interactions';
|
|
7
7
|
import { useSelectContext } from './context';
|
|
8
|
+
const FIELD_STATES = {
|
|
9
|
+
'false:false': 'idle',
|
|
10
|
+
'false:true': 'invalid',
|
|
11
|
+
'true:false': 'focused',
|
|
12
|
+
'true:true': 'focused-invalid'
|
|
13
|
+
};
|
|
14
|
+
|
|
8
15
|
/**
|
|
9
16
|
* Web variant — drops `useHover` and `useFocusRing` per the trigger-prune todo:
|
|
10
17
|
* neither emitted attribute has a consumer in `selectTriggerVariants`, and the
|
|
@@ -155,6 +162,7 @@ export function useSelectTrigger(forwardedRef, options) {
|
|
|
155
162
|
id: triggerId,
|
|
156
163
|
disabled
|
|
157
164
|
};
|
|
165
|
+
const fieldState = FIELD_STATES[`${interactionState.focus ? 'true' : 'false'}:${contextInvalid ? 'true' : 'false'}`];
|
|
158
166
|
const dataAttrValues = {
|
|
159
167
|
focus: interactionState.focus,
|
|
160
168
|
active: interactionState.active,
|
|
@@ -162,7 +170,8 @@ export function useSelectTrigger(forwardedRef, options) {
|
|
|
162
170
|
required: !!contextRequired,
|
|
163
171
|
invalid: !!contextInvalid,
|
|
164
172
|
readonly: !!contextReadOnly,
|
|
165
|
-
state: open ? 'open' : 'closed'
|
|
173
|
+
state: open ? 'open' : 'closed',
|
|
174
|
+
fieldState
|
|
166
175
|
};
|
|
167
176
|
const handlers = {
|
|
168
177
|
onPress: composeEventHandlers(consumerOnPress, handlePress),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useLayoutEffect","useMemo","useRef","useState","composeEventHandlers","mergeRefs","useFormControlContext","useReportFormControlLabelFocus","useFocus","usePress","useSelectContext","useSelectTrigger","forwardedRef","options","asChild","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","ariaDescribedBy","ariaDescribedByProp","onPress","consumerOnPress","onPressIn","consumerOnPressIn","onPressOut","consumerOnPressOut","onHoverIn","consumerOnHoverIn","onHoverOut","consumerOnHoverOut","onFocus","consumerOnFocus","onBlur","consumerOnBlur","onKeyDown","consumerOnKeyDown","open","setOpen","disabled","contextDisabled","required","contextRequired","invalid","contextInvalid","readOnly","contextReadOnly","triggerId","contentId","triggerRef","activeValue","accessibilityLabel","ariaDescribedByFromField","field","pressProps","isPressed","focusProps","triggerFocused","setTriggerFocused","handlePress","_e","handleKeyDown","e","key","preventDefault","isLabelActive","Boolean","interactionState","hover","focus","active","focusVisible","labelFocusGateRef","current","labelFocusBridge","isOff","isRO","node","shouldMountLabelFocusBridge","inputRef","r","mergedRef","filter","join","ariaProps","role","undefined","id","dataAttrValues","readonly","state","handlers"],"sourceRoot":"../../../src","sources":["select/useSelectTrigger.web.ts"],"mappings":";;AAAA,SACEA,WAAW,EACXC,eAAe,EACfC,OAAO,EACPC,MAAM,EACNC,QAAQ,QAGH,OAAO;AAEd,SACEC,oBAAoB,EACpBC,SAAS,EACTC,qBAAqB,EACrBC,8BAA8B,QAEzB,eAAe;AACtB,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,QAAQ,QAAQ,iCAAiC;AAE1D,SAASC,gBAAgB,QAAQ,WAAW;AAS5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,YAAmC,EACnCC,OAAgC,EACR;EACxB,MAAM;IACJC,OAAO;IACPC,SAAS,EAAEC,aAAa;IACxBC,QAAQ,EAAEC,YAAY;IACtBC,SAAS,EAAEC,aAAa;IACxBC,cAAc,EAAEC,kBAAkB;IAClCC,UAAU,EAAEC,cAAc;IAC1BC,eAAe,EAAEC,mBAAmB;IACpCC,OAAO,EAAEC,eAAe;IACxBC,SAAS,EAAEC,iBAAiB;IAC5BC,UAAU,EAAEC,kBAAkB;IAC9BC,SAAS,EAAEC,iBAAiB;IAC5BC,UAAU,EAAEC,kBAAkB;IAC9BC,OAAO,EAAEC,eAAe;IACxBC,MAAM,EAAEC,cAAc;IACtBC,SAAS,EAAEC;EACb,CAAC,GAAG7B,OAAO;EAEX,MAAM;IACJ8B,IAAI;IACJC,OAAO;IACPC,QAAQ,EAAEC,eAAe;IACzBC,QAAQ,EAAEC,eAAe;IACzBC,OAAO,EAAEC,cAAc;IACvBC,QAAQ,EAAEC,eAAe;IACzBC,SAAS;IACTC,SAAS;IACTC,UAAU;IACVC,WAAW;IACXC,kBAAkB;IAClBhC,eAAe,EAAEiC;EACnB,CAAC,
|
|
1
|
+
{"version":3,"names":["useCallback","useLayoutEffect","useMemo","useRef","useState","composeEventHandlers","mergeRefs","useFormControlContext","useReportFormControlLabelFocus","useFocus","usePress","useSelectContext","FIELD_STATES","useSelectTrigger","forwardedRef","options","asChild","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","ariaDescribedBy","ariaDescribedByProp","onPress","consumerOnPress","onPressIn","consumerOnPressIn","onPressOut","consumerOnPressOut","onHoverIn","consumerOnHoverIn","onHoverOut","consumerOnHoverOut","onFocus","consumerOnFocus","onBlur","consumerOnBlur","onKeyDown","consumerOnKeyDown","open","setOpen","disabled","contextDisabled","required","contextRequired","invalid","contextInvalid","readOnly","contextReadOnly","triggerId","contentId","triggerRef","activeValue","accessibilityLabel","ariaDescribedByFromField","field","pressProps","isPressed","focusProps","triggerFocused","setTriggerFocused","handlePress","_e","handleKeyDown","e","key","preventDefault","isLabelActive","Boolean","interactionState","hover","focus","active","focusVisible","labelFocusGateRef","current","labelFocusBridge","isOff","isRO","node","shouldMountLabelFocusBridge","inputRef","r","mergedRef","filter","join","ariaProps","role","undefined","id","fieldState","dataAttrValues","readonly","state","handlers"],"sourceRoot":"../../../src","sources":["select/useSelectTrigger.web.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputRoot.d.ts","sourceRoot":"","sources":["../../../src/input/InputRoot.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAOpD,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"InputRoot.d.ts","sourceRoot":"","sources":["../../../src/input/InputRoot.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAOpD,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAS7D,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC;AAE7C,eAAO,MAAM,SAAS,kGA6FrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelectTrigger.d.ts","sourceRoot":"","sources":["../../../src/select/useSelectTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"useSelectTrigger.d.ts","sourceRoot":"","sources":["../../../src/select/useSelectTrigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelectTrigger.web.d.ts","sourceRoot":"","sources":["../../../src/select/useSelectTrigger.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,YAAY,EAElB,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"useSelectTrigger.web.d.ts","sourceRoot":"","sources":["../../../src/select/useSelectTrigger.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,YAAY,EAElB,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAS5B;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,EACnC,OAAO,EAAE,uBAAuB,GAC/B,sBAAsB,CA6NxB;AAED,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdx-ui/primitives",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.92",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"module": "lib/module/index.js",
|
|
6
6
|
"react-native": "src/index.ts",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@react-stately/checkbox": "3.7.4",
|
|
61
61
|
"@react-stately/radio": "3.12.0",
|
|
62
62
|
"@react-stately/toggle": "3.9.4",
|
|
63
|
-
"@cdx-ui/utils": "0.0.1-beta.
|
|
63
|
+
"@cdx-ui/utils": "0.0.1-beta.92"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@types/react": "*",
|
package/src/CLAUDE.md
CHANGED
|
@@ -20,6 +20,7 @@ Root primitives emit `data-*` attributes for the interaction state they own and
|
|
|
20
20
|
|
|
21
21
|
- **Root** — emits + provides context. Always.
|
|
22
22
|
- **Sub-slot** — does not subscribe, does not emit. Opt in only when the styled layer (or the slot's own behavior) demonstrably reacts to the state.
|
|
23
|
+
- **Native compound conditions** — when the styled layer needs two or more interaction states combined on native (Uniwind evaluates only the last `data-[]` condition in a chain), the primitive derives a single compound-state string via a module-scope lookup table and emits it through `dataAttributes({...})` **in parallel** with the individual booleans. Canonical example: `InputRoot.tsx`'s `FIELD_STATES` → `data-field-state` (`idle` / `invalid` / `focused` / `focused-invalid`). See `docs/internal/practices/data-attributes.md` § "Compound state on native".
|
|
23
24
|
|
|
24
25
|
Pointlessly emitting on every sub-slot multiplies bridge writes (native) and DOM attribute writes (web) for no consumer benefit. A sub-slot that calls `useButtonContext()` becomes a subscriber — every interaction re-renders it even when nothing visually changes.
|
|
25
26
|
|
|
@@ -76,6 +77,7 @@ Each concrete primitive is a `forwardRef` component that hardcodes its default R
|
|
|
76
77
|
- **`I*Props` convention** — public prop types are aliased with `I` prefix (e.g., `IButtonProps`), exported from `types.ts`.
|
|
77
78
|
- **`Interface*Props` pattern** — the full interface (e.g., `InterfaceButtonProps`) extends the appropriate RN base type (`PressableProps`, `ViewProps`, etc.) with interaction state booleans (`isHovered`, `isActive`, `isFocused`, `isFocusVisible`, `isDisabled`); re-exported as `I*Props`.
|
|
78
79
|
- **`dataAttributes()` helper** — always use the helper from `../utils/dataAttributes` to emit `data-*` props; it handles platform differences (native vs web).
|
|
80
|
+
- **Derived compound-state attributes** — when the styled layer needs a native compound condition, derive a single compound-state string via a module-scope lookup table and emit it via `dataAttributes({...})` alongside the individual booleans. `InputRoot.tsx`'s `FIELD_STATES` → `data-field-state` is the canonical example.
|
|
79
81
|
- **`mergeDataAttributes(...sources)` helper** — when a primitive Root receives data attrs through `props` from its styled layer (e.g. `data-slot`) AND emits its own data attrs (e.g. interaction state), combine them via `mergeDataAttributes(props, dataAttributes({...}))`. A plain `{...dataAttributes({...})} {...props}` spread chain wipes out one side on web — `dataAttributes` returns `{ dataSet }`, so back-to-back spreads replace each other. The merge helper preserves both. `ButtonRoot.tsx` shows the canonical pattern.
|
|
80
82
|
- **`composeEventHandlers`** from `@cdx-ui/utils` — merge consumer handlers with internal handlers; never silently override.
|
|
81
83
|
- **`forwardRef`** on every component — refs forwarded to the underlying host element.
|
package/src/input/InputRoot.tsx
CHANGED
|
@@ -8,6 +8,13 @@ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
|
8
8
|
import { InputProvider } from './context';
|
|
9
9
|
import type { IInputRootProps, InputContext } from './types';
|
|
10
10
|
|
|
11
|
+
const FIELD_STATES = {
|
|
12
|
+
'false:false': 'idle',
|
|
13
|
+
'false:true': 'invalid',
|
|
14
|
+
'true:false': 'focused',
|
|
15
|
+
'true:true': 'focused-invalid',
|
|
16
|
+
} as const;
|
|
17
|
+
|
|
11
18
|
export type InputRootProps = IInputRootProps;
|
|
12
19
|
|
|
13
20
|
export const InputRoot = forwardRef<ComponentRef<typeof View>, InputRootProps>(
|
|
@@ -76,6 +83,9 @@ export const InputRoot = forwardRef<ComponentRef<typeof View>, InputRootProps>(
|
|
|
76
83
|
|
|
77
84
|
const Comp = asChild ? Slot : View;
|
|
78
85
|
|
|
86
|
+
const fieldState =
|
|
87
|
+
FIELD_STATES[`${resolvedFocused ? 'true' : 'false'}:${resolvedInvalid ? 'true' : 'false'}`];
|
|
88
|
+
|
|
79
89
|
return (
|
|
80
90
|
<InputProvider value={contextValue}>
|
|
81
91
|
<Comp
|
|
@@ -91,6 +101,7 @@ export const InputRoot = forwardRef<ComponentRef<typeof View>, InputRootProps>(
|
|
|
91
101
|
readonly: resolvedReadOnly,
|
|
92
102
|
required: resolvedRequired,
|
|
93
103
|
focusVisible: resolvedFocusVisible,
|
|
104
|
+
fieldState,
|
|
94
105
|
}),
|
|
95
106
|
)}
|
|
96
107
|
>
|
|
@@ -20,6 +20,13 @@ import { useHover, usePress } from '@react-native-aria/interactions';
|
|
|
20
20
|
import type { InteractionState } from '../types';
|
|
21
21
|
import { useSelectContext } from './context';
|
|
22
22
|
|
|
23
|
+
const FIELD_STATES = {
|
|
24
|
+
'false:false': 'idle',
|
|
25
|
+
'false:true': 'invalid',
|
|
26
|
+
'true:false': 'focused',
|
|
27
|
+
'true:true': 'focused-invalid',
|
|
28
|
+
} as const;
|
|
29
|
+
|
|
23
30
|
export interface UseSelectTriggerOptions {
|
|
24
31
|
asChild?: boolean;
|
|
25
32
|
isHovered?: boolean;
|
|
@@ -63,6 +70,7 @@ export interface SelectTriggerDataAttrValues {
|
|
|
63
70
|
invalid: boolean;
|
|
64
71
|
readonly: boolean;
|
|
65
72
|
state: 'open' | 'closed';
|
|
73
|
+
fieldState: string;
|
|
66
74
|
}
|
|
67
75
|
|
|
68
76
|
export interface SelectTriggerHandlers {
|
|
@@ -282,6 +290,11 @@ export function useSelectTrigger(
|
|
|
282
290
|
disabled,
|
|
283
291
|
};
|
|
284
292
|
|
|
293
|
+
const fieldState =
|
|
294
|
+
FIELD_STATES[
|
|
295
|
+
`${interactionState.focus ? 'true' : 'false'}:${contextInvalid ? 'true' : 'false'}`
|
|
296
|
+
];
|
|
297
|
+
|
|
285
298
|
const dataAttrValues: SelectTriggerDataAttrValues = {
|
|
286
299
|
hover: interactionState.hover,
|
|
287
300
|
focus: interactionState.focus,
|
|
@@ -292,6 +305,7 @@ export function useSelectTrigger(
|
|
|
292
305
|
invalid: !!contextInvalid,
|
|
293
306
|
readonly: !!contextReadOnly,
|
|
294
307
|
state: open ? 'open' : 'closed',
|
|
308
|
+
fieldState,
|
|
295
309
|
};
|
|
296
310
|
|
|
297
311
|
const handlers: SelectTriggerHandlers = {
|
|
@@ -27,6 +27,13 @@ import type {
|
|
|
27
27
|
UseSelectTriggerReturn,
|
|
28
28
|
} from './useSelectTrigger';
|
|
29
29
|
|
|
30
|
+
const FIELD_STATES = {
|
|
31
|
+
'false:false': 'idle',
|
|
32
|
+
'false:true': 'invalid',
|
|
33
|
+
'true:false': 'focused',
|
|
34
|
+
'true:true': 'focused-invalid',
|
|
35
|
+
} as const;
|
|
36
|
+
|
|
30
37
|
/**
|
|
31
38
|
* Web variant — drops `useHover` and `useFocusRing` per the trigger-prune todo:
|
|
32
39
|
* neither emitted attribute has a consumer in `selectTriggerVariants`, and the
|
|
@@ -212,6 +219,11 @@ export function useSelectTrigger(
|
|
|
212
219
|
disabled,
|
|
213
220
|
};
|
|
214
221
|
|
|
222
|
+
const fieldState =
|
|
223
|
+
FIELD_STATES[
|
|
224
|
+
`${interactionState.focus ? 'true' : 'false'}:${contextInvalid ? 'true' : 'false'}`
|
|
225
|
+
];
|
|
226
|
+
|
|
215
227
|
const dataAttrValues: SelectTriggerDataAttrValues = {
|
|
216
228
|
focus: interactionState.focus,
|
|
217
229
|
active: interactionState.active,
|
|
@@ -220,6 +232,7 @@ export function useSelectTrigger(
|
|
|
220
232
|
invalid: !!contextInvalid,
|
|
221
233
|
readonly: !!contextReadOnly,
|
|
222
234
|
state: open ? 'open' : 'closed',
|
|
235
|
+
fieldState,
|
|
223
236
|
};
|
|
224
237
|
|
|
225
238
|
const handlers: SelectTriggerHandlers = {
|