@cdx-ui/primitives 0.0.1-beta.44 → 0.0.1-beta.46
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/index.js +9 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/link/context.js +11 -0
- package/lib/commonjs/link/context.js.map +1 -0
- package/lib/commonjs/link/createLink.js +28 -14
- package/lib/commonjs/link/createLink.js.map +1 -1
- package/lib/commonjs/link/index.js +13 -0
- package/lib/commonjs/link/index.js.map +1 -1
- package/lib/commonjs/select/createSelectIcon.js +3 -1
- package/lib/commonjs/select/createSelectIcon.js.map +1 -1
- package/lib/commonjs/utils/dataAttributes.js +6 -25
- package/lib/commonjs/utils/dataAttributes.js.map +1 -1
- package/lib/commonjs/utils/domDataAttributes.js +34 -0
- package/lib/commonjs/utils/domDataAttributes.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/link/context.js +5 -0
- package/lib/module/link/context.js.map +1 -0
- package/lib/module/link/createLink.js +29 -15
- package/lib/module/link/createLink.js.map +1 -1
- package/lib/module/link/index.js +1 -0
- package/lib/module/link/index.js.map +1 -1
- package/lib/module/select/createSelectIcon.js +3 -1
- package/lib/module/select/createSelectIcon.js.map +1 -1
- package/lib/module/utils/dataAttributes.js +4 -22
- package/lib/module/utils/dataAttributes.js.map +1 -1
- package/lib/module/utils/domDataAttributes.js +30 -0
- package/lib/module/utils/domDataAttributes.js.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/link/context.d.ts +10 -0
- package/lib/typescript/link/context.d.ts.map +1 -0
- package/lib/typescript/link/createLink.d.ts.map +1 -1
- package/lib/typescript/link/index.d.ts +2 -0
- package/lib/typescript/link/index.d.ts.map +1 -1
- package/lib/typescript/link/types.d.ts +1 -0
- package/lib/typescript/link/types.d.ts.map +1 -1
- package/lib/typescript/select/createSelectIcon.d.ts.map +1 -1
- package/lib/typescript/utils/dataAttributes.d.ts +4 -10
- package/lib/typescript/utils/dataAttributes.d.ts.map +1 -1
- package/lib/typescript/utils/domDataAttributes.d.ts +15 -0
- package/lib/typescript/utils/domDataAttributes.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/link/context.tsx +10 -0
- package/src/link/createLink.tsx +41 -23
- package/src/link/index.tsx +2 -0
- package/src/link/types.ts +1 -0
- package/src/select/createSelectIcon.tsx +2 -1
- package/src/utils/dataAttributes.ts +4 -25
- package/src/utils/domDataAttributes.ts +32 -0
package/lib/commonjs/index.js
CHANGED
|
@@ -5,7 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
var _exportNames = {
|
|
7
7
|
OverlayInsetsProvider: true,
|
|
8
|
-
dataAttributes: true
|
|
8
|
+
dataAttributes: true,
|
|
9
|
+
domDataAttributes: true
|
|
9
10
|
};
|
|
10
11
|
Object.defineProperty(exports, "OverlayInsetsProvider", {
|
|
11
12
|
enumerable: true,
|
|
@@ -19,6 +20,12 @@ Object.defineProperty(exports, "dataAttributes", {
|
|
|
19
20
|
return _dataAttributes.dataAttributes;
|
|
20
21
|
}
|
|
21
22
|
});
|
|
23
|
+
Object.defineProperty(exports, "domDataAttributes", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () {
|
|
26
|
+
return _domDataAttributes.domDataAttributes;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
22
29
|
var _avatar = require("./avatar");
|
|
23
30
|
Object.keys(_avatar).forEach(function (key) {
|
|
24
31
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -213,4 +220,5 @@ Object.keys(_radio).forEach(function (key) {
|
|
|
213
220
|
});
|
|
214
221
|
});
|
|
215
222
|
var _dataAttributes = require("./utils/dataAttributes");
|
|
223
|
+
var _domDataAttributes = require("./utils/domDataAttributes");
|
|
216
224
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_avatar","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_button","_chip","_checkbox","_dialog","_field","_form","_input","_otpInput","_link","_listItem","_overlay","_select","_switch","_tile","_progress","_radio","_dataAttributes"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_avatar","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_button","_chip","_checkbox","_dialog","_field","_form","_input","_otpInput","_link","_listItem","_overlay","_select","_switch","_tile","_progress","_radio","_dataAttributes","_domDataAttributes"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useLinkInteractionContext = exports.LinkInteractionProvider = void 0;
|
|
7
|
+
var _utils = require("@cdx-ui/utils");
|
|
8
|
+
const [LinkInteractionProvider, useLinkInteractionContext] = (0, _utils.createContext)('LinkInteractionContext');
|
|
9
|
+
exports.useLinkInteractionContext = useLinkInteractionContext;
|
|
10
|
+
exports.LinkInteractionProvider = LinkInteractionProvider;
|
|
11
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_utils","require","LinkInteractionProvider","useLinkInteractionContext","createContext","exports"],"sourceRoot":"../../../src","sources":["link/context.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQO,MAAM,CAACC,uBAAuB,EAAEC,yBAAyB,CAAC,GAC/D,IAAAC,oBAAa,EAAuB,wBAAwB,CAAC;AAACC,OAAA,CAAAF,yBAAA,GAAAA,yBAAA;AAAAE,OAAA,CAAAH,uBAAA,GAAAA,uBAAA","ignoreList":[]}
|
|
@@ -9,6 +9,7 @@ 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 _dataAttributes = require("../utils/dataAttributes");
|
|
12
|
+
var _context = require("./context");
|
|
12
13
|
var _useLink = require("./useLink");
|
|
13
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
@@ -20,6 +21,7 @@ const createLink = ({
|
|
|
20
21
|
isPressed: isPressedProp,
|
|
21
22
|
isFocused: isFocusedProp,
|
|
22
23
|
isFocusVisible: isFocusVisibleProp,
|
|
24
|
+
isVisited: isVisitedProp,
|
|
23
25
|
href,
|
|
24
26
|
onPress,
|
|
25
27
|
action,
|
|
@@ -50,24 +52,36 @@ const createLink = ({
|
|
|
50
52
|
action,
|
|
51
53
|
webProps
|
|
52
54
|
});
|
|
55
|
+
const hover = isHoveredProp || isHovered;
|
|
56
|
+
const visited = isVisitedProp ?? false;
|
|
57
|
+
const focusVisible = isFocusVisibleProp || isFocusVisible;
|
|
58
|
+
const interactionState = (0, _react.useMemo)(() => ({
|
|
59
|
+
hover,
|
|
60
|
+
visited,
|
|
61
|
+
focusVisible
|
|
62
|
+
}), [hover, visited, focusVisible]);
|
|
53
63
|
const interactionAttrs = (0, _dataAttributes.dataAttributes)({
|
|
54
|
-
hover
|
|
64
|
+
hover,
|
|
55
65
|
focus: isFocusedProp || isFocused,
|
|
56
66
|
active: isPressedProp || isPressed,
|
|
57
|
-
focusVisible
|
|
67
|
+
focusVisible,
|
|
68
|
+
visited
|
|
58
69
|
});
|
|
59
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.LinkInteractionProvider, {
|
|
71
|
+
value: interactionState,
|
|
72
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
|
|
73
|
+
ref: ref,
|
|
74
|
+
...interactionAttrs,
|
|
75
|
+
...linkProps,
|
|
76
|
+
...props,
|
|
77
|
+
onPressIn: (0, _utils.composeEventHandlers)(props?.onPressIn, pressProps.onPressIn),
|
|
78
|
+
onPressOut: (0, _utils.composeEventHandlers)(props?.onPressOut, pressProps.onPressOut),
|
|
79
|
+
onHoverIn: (0, _utils.composeEventHandlers)(props?.onHoverIn, hoverProps.onHoverIn),
|
|
80
|
+
onHoverOut: (0, _utils.composeEventHandlers)(props?.onHoverOut, hoverProps.onHoverOut),
|
|
81
|
+
onFocus: (0, _utils.composeEventHandlers)((0, _utils.composeEventHandlers)(props?.onFocus, focusProps.onFocus), focusRingProps.onFocus),
|
|
82
|
+
onBlur: (0, _utils.composeEventHandlers)((0, _utils.composeEventHandlers)(props?.onBlur, focusProps.onBlur), focusRingProps.onBlur),
|
|
83
|
+
children: children
|
|
84
|
+
})
|
|
71
85
|
});
|
|
72
86
|
});
|
|
73
87
|
exports.createLink = createLink;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_utils","_focus","_interactions","_dataAttributes","_useLink","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createLink","Root","forwardRef","children","isHovered","isHoveredProp","isPressed","isPressedProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","href","onPress","action","webProps","props","ref","focusProps","useFocus","focusRingProps","useFocusRing","pressProps","usePress","hoverProps","useHover","linkProps","useLink","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_utils","_focus","_interactions","_dataAttributes","_context","_useLink","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createLink","Root","forwardRef","children","isHovered","isHoveredProp","isPressed","isPressedProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isVisited","isVisitedProp","href","onPress","action","webProps","props","ref","focusProps","useFocus","focusRingProps","useFocusRing","pressProps","usePress","hoverProps","useHover","linkProps","useLink","hover","visited","focusVisible","interactionState","useMemo","interactionAttrs","dataAttributes","focus","active","jsx","LinkInteractionProvider","value","onPressIn","composeEventHandlers","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","exports"],"sourceRoot":"../../../src","sources":["link/createLink.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "LinkInteractionProvider", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _context.LinkInteractionProvider;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "LinkProvider", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
|
@@ -21,7 +27,14 @@ Object.defineProperty(exports, "useLink", {
|
|
|
21
27
|
return _useLink.useLink;
|
|
22
28
|
}
|
|
23
29
|
});
|
|
30
|
+
Object.defineProperty(exports, "useLinkInteractionContext", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _context.useLinkInteractionContext;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
24
36
|
var _createLink = require("./createLink");
|
|
37
|
+
var _context = require("./context");
|
|
25
38
|
var _LinkProvider = require("./LinkProvider");
|
|
26
39
|
var _useLink = require("./useLink");
|
|
27
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_createLink","require","_LinkProvider","_useLink"],"sourceRoot":"../../../src","sources":["link/index.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_createLink","require","_context","_LinkProvider","_useLink"],"sourceRoot":"../../../src","sources":["link/index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AAEA,IAAAG,QAAA,GAAAH,OAAA","ignoreList":[]}
|
|
@@ -19,7 +19,8 @@ const createSelectIcon = BaseIcon => /*#__PURE__*/(0, _react.forwardRef)((props,
|
|
|
19
19
|
const {
|
|
20
20
|
required,
|
|
21
21
|
invalid,
|
|
22
|
-
readOnly
|
|
22
|
+
readOnly,
|
|
23
|
+
open
|
|
23
24
|
} = (0, _context.useSelectContext)();
|
|
24
25
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(BaseIcon, {
|
|
25
26
|
ref: ref,
|
|
@@ -32,6 +33,7 @@ const createSelectIcon = BaseIcon => /*#__PURE__*/(0, _react.forwardRef)((props,
|
|
|
32
33
|
required,
|
|
33
34
|
invalid,
|
|
34
35
|
readonly: readOnly,
|
|
36
|
+
state: open ? 'open' : 'closed',
|
|
35
37
|
slot: 'select-icon'
|
|
36
38
|
}),
|
|
37
39
|
...props
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_dataAttributes","_context","_jsxRuntime","createSelectIcon","BaseIcon","forwardRef","props","ref","hover","focus","active","disabled","focusVisible","useSelectTriggerContext","required","invalid","readOnly","useSelectContext","jsx","dataAttributes","readonly","slot","exports"],"sourceRoot":"../../../src","sources":["select/createSelectIcon.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAAsE,IAAAG,WAAA,GAAAH,OAAA;AAE/D,MAAMI,gBAAgB,GAAQC,QAAgC,iBACnE,IAAAC,iBAAU,EAAC,CAACC,KAAU,EAAEC,GAAS,KAAK;EACpC,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,MAAM;IAAEC,QAAQ;IAAEC;EAAa,CAAC,GAAG,IAAAC,gCAAuB,EAAC,CAAC;EAClF,MAAM;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;
|
|
1
|
+
{"version":3,"names":["_react","require","_dataAttributes","_context","_jsxRuntime","createSelectIcon","BaseIcon","forwardRef","props","ref","hover","focus","active","disabled","focusVisible","useSelectTriggerContext","required","invalid","readOnly","open","useSelectContext","jsx","dataAttributes","readonly","state","slot","exports"],"sourceRoot":"../../../src","sources":["select/createSelectIcon.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAAsE,IAAAG,WAAA,GAAAH,OAAA;AAE/D,MAAMI,gBAAgB,GAAQC,QAAgC,iBACnE,IAAAC,iBAAU,EAAC,CAACC,KAAU,EAAEC,GAAS,KAAK;EACpC,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,MAAM;IAAEC,QAAQ;IAAEC;EAAa,CAAC,GAAG,IAAAC,gCAAuB,EAAC,CAAC;EAClF,MAAM;IAAEC,QAAQ;IAAEC,OAAO;IAAEC,QAAQ;IAAEC;EAAK,CAAC,GAAG,IAAAC,yBAAgB,EAAC,CAAC;EAEhE,oBACE,IAAAhB,WAAA,CAAAiB,GAAA,EAACf,QAAQ;IACPG,GAAG,EAAEA,GAAI;IAAA,GACL,IAAAa,8BAAc,EAAC;MACjBZ,KAAK;MACLC,KAAK;MACLC,MAAM;MACNC,QAAQ;MACRC,YAAY;MACZE,QAAQ;MACRC,OAAO;MACPM,QAAQ,EAAEL,QAAQ;MAClBM,KAAK,EAAEL,IAAI,GAAG,MAAM,GAAG,QAAQ;MAC/BM,IAAI,EAAE;IACR,CAAC,CAAC;IAAA,GACGjB;EAAK,CACX,CAAC;AAEN,CAAC,CAAC;AAACkB,OAAA,CAAArB,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -3,30 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* Native: individual `data-*` props consumed by Uniwind.
|
|
11
|
-
* Web (.web.ts): a `dataSet` object consumed by React Native Web.
|
|
12
|
-
*
|
|
13
|
-
* Boolean values serialize to `"true"` / `"false"` strings.
|
|
14
|
-
* String values pass through as-is.
|
|
15
|
-
* Undefined values are omitted.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
function camelToKebab(str) {
|
|
19
|
-
return str.replaceAll(/[A-Z]/g, ch => `-${ch.toLowerCase()}`);
|
|
20
|
-
}
|
|
21
|
-
function dataAttributes(attrs) {
|
|
22
|
-
const result = {};
|
|
23
|
-
for (const key in attrs) {
|
|
24
|
-
const value = attrs[key];
|
|
25
|
-
if (value === undefined) {
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
result[`data-${camelToKebab(key)}`] = typeof value === 'boolean' ? String(value) : value;
|
|
6
|
+
Object.defineProperty(exports, "dataAttributes", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _domDataAttributes.domDataAttributes;
|
|
29
10
|
}
|
|
30
|
-
|
|
31
|
-
|
|
11
|
+
});
|
|
12
|
+
var _domDataAttributes = require("./domDataAttributes");
|
|
32
13
|
//# sourceMappingURL=dataAttributes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_domDataAttributes","require"],"sourceRoot":"../../../src","sources":["utils/dataAttributes.ts"],"mappings":";;;;;;;;;;;AAMA,IAAAA,kBAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.domDataAttributes = domDataAttributes;
|
|
7
|
+
/**
|
|
8
|
+
* Produces `data-*` DOM attribute props for use on raw HTML elements (e.g. `<button>`).
|
|
9
|
+
*
|
|
10
|
+
* Unlike `dataAttributes`, which has a platform-specific `.web.ts` sibling that returns a
|
|
11
|
+
* `dataSet` object for React Native Web components, this file has no platform variant.
|
|
12
|
+
* The bundler therefore always resolves to this single implementation, making it safe to
|
|
13
|
+
* import from `.web.tsx` host components that render native DOM elements directly.
|
|
14
|
+
*
|
|
15
|
+
* Boolean values serialize to `"true"` / `"false"` strings.
|
|
16
|
+
* String values pass through as-is.
|
|
17
|
+
* Undefined values are omitted.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
function camelToKebab(str) {
|
|
21
|
+
return str.replaceAll(/[A-Z]/g, ch => `-${ch.toLowerCase()}`);
|
|
22
|
+
}
|
|
23
|
+
function domDataAttributes(attrs) {
|
|
24
|
+
const result = {};
|
|
25
|
+
for (const key in attrs) {
|
|
26
|
+
const value = attrs[key];
|
|
27
|
+
if (value === undefined) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
result[`data-${camelToKebab(key)}`] = typeof value === 'boolean' ? String(value) : value;
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=domDataAttributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["camelToKebab","str","replaceAll","ch","toLowerCase","domDataAttributes","attrs","result","key","value","undefined","String"],"sourceRoot":"../../../src","sources":["utils/domDataAttributes.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,YAAYA,CAACC,GAAW,EAAU;EACzC,OAAOA,GAAG,CAACC,UAAU,CAAC,QAAQ,EAAGC,EAAE,IAAK,IAAIA,EAAE,CAACC,WAAW,CAAC,CAAC,EAAE,CAAC;AACjE;AAEO,SAASC,iBAAiBA,CAC/BC,KAA4C,EACpB;EACxB,MAAMC,MAA8B,GAAG,CAAC,CAAC;EACzC,KAAK,MAAMC,GAAG,IAAIF,KAAK,EAAE;IACvB,MAAMG,KAAK,GAAGH,KAAK,CAACE,GAAG,CAAC;IACxB,IAAIC,KAAK,KAAKC,SAAS,EAAE;MACvB;IACF;IACAH,MAAM,CAAC,QAAQP,YAAY,CAACQ,GAAG,CAAC,EAAE,CAAC,GAAG,OAAOC,KAAK,KAAK,SAAS,GAAGE,MAAM,CAACF,KAAK,CAAC,GAAGA,KAAK;EAC1F;EACA,OAAOF,MAAM;AACf","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OverlayInsetsProvider","dataAttributes"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,SAAS;AAEvB,SAASC,cAAc,QAAQ,wBAAwB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["OverlayInsetsProvider","dataAttributes","domDataAttributes"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,SAAS;AAEvB,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,iBAAiB,QAAoC,2BAA2B","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","LinkInteractionProvider","useLinkInteractionContext"],"sourceRoot":"../../../src","sources":["link/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,eAAe;AAQ7C,OAAO,MAAM,CAACC,uBAAuB,EAAEC,yBAAyB,CAAC,GAC/DF,aAAa,CAAuB,wBAAwB,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { forwardRef } from 'react';
|
|
3
|
+
import React, { forwardRef, useMemo } from 'react';
|
|
4
4
|
import { composeEventHandlers } from '@cdx-ui/utils';
|
|
5
5
|
import { useFocusRing, useFocus } from '@react-native-aria/focus';
|
|
6
6
|
import { useHover, usePress } from '@react-native-aria/interactions';
|
|
7
7
|
import { dataAttributes } from '../utils/dataAttributes';
|
|
8
|
+
import { LinkInteractionProvider } from './context';
|
|
8
9
|
import { useLink } from './useLink';
|
|
9
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
11
|
export const createLink = ({
|
|
@@ -15,6 +16,7 @@ export const createLink = ({
|
|
|
15
16
|
isPressed: isPressedProp,
|
|
16
17
|
isFocused: isFocusedProp,
|
|
17
18
|
isFocusVisible: isFocusVisibleProp,
|
|
19
|
+
isVisited: isVisitedProp,
|
|
18
20
|
href,
|
|
19
21
|
onPress,
|
|
20
22
|
action,
|
|
@@ -45,24 +47,36 @@ export const createLink = ({
|
|
|
45
47
|
action,
|
|
46
48
|
webProps
|
|
47
49
|
});
|
|
50
|
+
const hover = isHoveredProp || isHovered;
|
|
51
|
+
const visited = isVisitedProp ?? false;
|
|
52
|
+
const focusVisible = isFocusVisibleProp || isFocusVisible;
|
|
53
|
+
const interactionState = useMemo(() => ({
|
|
54
|
+
hover,
|
|
55
|
+
visited,
|
|
56
|
+
focusVisible
|
|
57
|
+
}), [hover, visited, focusVisible]);
|
|
48
58
|
const interactionAttrs = dataAttributes({
|
|
49
|
-
hover
|
|
59
|
+
hover,
|
|
50
60
|
focus: isFocusedProp || isFocused,
|
|
51
61
|
active: isPressedProp || isPressed,
|
|
52
|
-
focusVisible
|
|
62
|
+
focusVisible,
|
|
63
|
+
visited
|
|
53
64
|
});
|
|
54
|
-
return /*#__PURE__*/_jsx(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
return /*#__PURE__*/_jsx(LinkInteractionProvider, {
|
|
66
|
+
value: interactionState,
|
|
67
|
+
children: /*#__PURE__*/_jsx(Root, {
|
|
68
|
+
ref: ref,
|
|
69
|
+
...interactionAttrs,
|
|
70
|
+
...linkProps,
|
|
71
|
+
...props,
|
|
72
|
+
onPressIn: composeEventHandlers(props?.onPressIn, pressProps.onPressIn),
|
|
73
|
+
onPressOut: composeEventHandlers(props?.onPressOut, pressProps.onPressOut),
|
|
74
|
+
onHoverIn: composeEventHandlers(props?.onHoverIn, hoverProps.onHoverIn),
|
|
75
|
+
onHoverOut: composeEventHandlers(props?.onHoverOut, hoverProps.onHoverOut),
|
|
76
|
+
onFocus: composeEventHandlers(composeEventHandlers(props?.onFocus, focusProps.onFocus), focusRingProps.onFocus),
|
|
77
|
+
onBlur: composeEventHandlers(composeEventHandlers(props?.onBlur, focusProps.onBlur), focusRingProps.onBlur),
|
|
78
|
+
children: children
|
|
79
|
+
})
|
|
66
80
|
});
|
|
67
81
|
});
|
|
68
82
|
//# sourceMappingURL=createLink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","composeEventHandlers","useFocusRing","useFocus","useHover","usePress","dataAttributes","useLink","jsx","_jsx","createLink","Root","children","isHovered","isHoveredProp","isPressed","isPressedProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","href","onPress","action","webProps","props","ref","focusProps","focusRingProps","pressProps","hoverProps","linkProps","
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useMemo","composeEventHandlers","useFocusRing","useFocus","useHover","usePress","dataAttributes","LinkInteractionProvider","useLink","jsx","_jsx","createLink","Root","children","isHovered","isHoveredProp","isPressed","isPressedProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isVisited","isVisitedProp","href","onPress","action","webProps","props","ref","focusProps","focusRingProps","pressProps","hoverProps","linkProps","hover","visited","focusVisible","interactionState","interactionAttrs","focus","active","value","onPressIn","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur"],"sourceRoot":"../../../src","sources":["link/createLink.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/link/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createLink","LinkProvider","useLink"],"sourceRoot":"../../../src","sources":["link/index.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,SAASC,OAAO,QAAQ,WAAW","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createLink","LinkInteractionProvider","useLinkInteractionContext","LinkProvider","useLink"],"sourceRoot":"../../../src","sources":["link/index.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,uBAAuB,EAAEC,yBAAyB,QAAQ,WAAW;AAE9E,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,SAASC,OAAO,QAAQ,WAAW","ignoreList":[]}
|
|
@@ -15,7 +15,8 @@ export const createSelectIcon = BaseIcon => /*#__PURE__*/forwardRef((props, ref)
|
|
|
15
15
|
const {
|
|
16
16
|
required,
|
|
17
17
|
invalid,
|
|
18
|
-
readOnly
|
|
18
|
+
readOnly,
|
|
19
|
+
open
|
|
19
20
|
} = useSelectContext();
|
|
20
21
|
return /*#__PURE__*/_jsx(BaseIcon, {
|
|
21
22
|
ref: ref,
|
|
@@ -28,6 +29,7 @@ export const createSelectIcon = BaseIcon => /*#__PURE__*/forwardRef((props, ref)
|
|
|
28
29
|
required,
|
|
29
30
|
invalid,
|
|
30
31
|
readonly: readOnly,
|
|
32
|
+
state: open ? 'open' : 'closed',
|
|
31
33
|
slot: 'select-icon'
|
|
32
34
|
}),
|
|
33
35
|
...props
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","dataAttributes","useSelectContext","useSelectTriggerContext","jsx","_jsx","createSelectIcon","BaseIcon","props","ref","hover","focus","active","disabled","focusVisible","required","invalid","readOnly","readonly","slot"],"sourceRoot":"../../../src","sources":["select/createSelectIcon.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,gBAAgB,EAAEC,uBAAuB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtE,OAAO,MAAMC,gBAAgB,GAAQC,QAAgC,iBACnEP,UAAU,CAAC,CAACQ,KAAU,EAAEC,GAAS,KAAK;EACpC,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,MAAM;IAAEC,QAAQ;IAAEC;EAAa,CAAC,GAAGX,uBAAuB,CAAC,CAAC;EAClF,MAAM;IAAEY,QAAQ;IAAEC,OAAO;IAAEC;
|
|
1
|
+
{"version":3,"names":["forwardRef","dataAttributes","useSelectContext","useSelectTriggerContext","jsx","_jsx","createSelectIcon","BaseIcon","props","ref","hover","focus","active","disabled","focusVisible","required","invalid","readOnly","open","readonly","state","slot"],"sourceRoot":"../../../src","sources":["select/createSelectIcon.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,gBAAgB,EAAEC,uBAAuB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtE,OAAO,MAAMC,gBAAgB,GAAQC,QAAgC,iBACnEP,UAAU,CAAC,CAACQ,KAAU,EAAEC,GAAS,KAAK;EACpC,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,MAAM;IAAEC,QAAQ;IAAEC;EAAa,CAAC,GAAGX,uBAAuB,CAAC,CAAC;EAClF,MAAM;IAAEY,QAAQ;IAAEC,OAAO;IAAEC,QAAQ;IAAEC;EAAK,CAAC,GAAGhB,gBAAgB,CAAC,CAAC;EAEhE,oBACEG,IAAA,CAACE,QAAQ;IACPE,GAAG,EAAEA,GAAI;IAAA,GACLR,cAAc,CAAC;MACjBS,KAAK;MACLC,KAAK;MACLC,MAAM;MACNC,QAAQ;MACRC,YAAY;MACZC,QAAQ;MACRC,OAAO;MACPG,QAAQ,EAAEF,QAAQ;MAClBG,KAAK,EAAEF,IAAI,GAAG,MAAM,GAAG,QAAQ;MAC/BG,IAAI,EAAE;IACR,CAAC,CAAC;IAAA,GACGb;EAAK,CACX,CAAC;AAEN,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,28 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Produces
|
|
4
|
+
* Produces `data-*` props for native platforms (consumed by Uniwind).
|
|
5
|
+
* Web (.web.ts): returns a `dataSet` object consumed by React Native Web instead.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
* Web (.web.ts): a `dataSet` object consumed by React Native Web.
|
|
8
|
-
*
|
|
9
|
-
* Boolean values serialize to `"true"` / `"false"` strings.
|
|
10
|
-
* String values pass through as-is.
|
|
11
|
-
* Undefined values are omitted.
|
|
7
|
+
* Delegates to `domDataAttributes` so the conversion logic has a single source of truth.
|
|
12
8
|
*/
|
|
13
|
-
|
|
14
|
-
function camelToKebab(str) {
|
|
15
|
-
return str.replaceAll(/[A-Z]/g, ch => `-${ch.toLowerCase()}`);
|
|
16
|
-
}
|
|
17
|
-
export function dataAttributes(attrs) {
|
|
18
|
-
const result = {};
|
|
19
|
-
for (const key in attrs) {
|
|
20
|
-
const value = attrs[key];
|
|
21
|
-
if (value === undefined) {
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
result[`data-${camelToKebab(key)}`] = typeof value === 'boolean' ? String(value) : value;
|
|
25
|
-
}
|
|
26
|
-
return result;
|
|
27
|
-
}
|
|
9
|
+
export { domDataAttributes as dataAttributes } from './domDataAttributes';
|
|
28
10
|
//# sourceMappingURL=dataAttributes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["domDataAttributes","dataAttributes"],"sourceRoot":"../../../src","sources":["utils/dataAttributes.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,iBAAiB,IAAIC,cAAc,QAAQ,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Produces `data-*` DOM attribute props for use on raw HTML elements (e.g. `<button>`).
|
|
5
|
+
*
|
|
6
|
+
* Unlike `dataAttributes`, which has a platform-specific `.web.ts` sibling that returns a
|
|
7
|
+
* `dataSet` object for React Native Web components, this file has no platform variant.
|
|
8
|
+
* The bundler therefore always resolves to this single implementation, making it safe to
|
|
9
|
+
* import from `.web.tsx` host components that render native DOM elements directly.
|
|
10
|
+
*
|
|
11
|
+
* Boolean values serialize to `"true"` / `"false"` strings.
|
|
12
|
+
* String values pass through as-is.
|
|
13
|
+
* Undefined values are omitted.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
function camelToKebab(str) {
|
|
17
|
+
return str.replaceAll(/[A-Z]/g, ch => `-${ch.toLowerCase()}`);
|
|
18
|
+
}
|
|
19
|
+
export function domDataAttributes(attrs) {
|
|
20
|
+
const result = {};
|
|
21
|
+
for (const key in attrs) {
|
|
22
|
+
const value = attrs[key];
|
|
23
|
+
if (value === undefined) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
result[`data-${camelToKebab(key)}`] = typeof value === 'boolean' ? String(value) : value;
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=domDataAttributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["camelToKebab","str","replaceAll","ch","toLowerCase","domDataAttributes","attrs","result","key","value","undefined","String"],"sourceRoot":"../../../src","sources":["utils/domDataAttributes.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,YAAYA,CAACC,GAAW,EAAU;EACzC,OAAOA,GAAG,CAACC,UAAU,CAAC,QAAQ,EAAGC,EAAE,IAAK,IAAIA,EAAE,CAACC,WAAW,CAAC,CAAC,EAAE,CAAC;AACjE;AAEA,OAAO,SAASC,iBAAiBA,CAC/BC,KAA4C,EACpB;EACxB,MAAMC,MAA8B,GAAG,CAAC,CAAC;EACzC,KAAK,MAAMC,GAAG,IAAIF,KAAK,EAAE;IACvB,MAAMG,KAAK,GAAGH,KAAK,CAACE,GAAG,CAAC;IACxB,IAAIC,KAAK,KAAKC,SAAS,EAAE;MACvB;IACF;IACAH,MAAM,CAAC,QAAQP,YAAY,CAACQ,GAAG,CAAC,EAAE,CAAC,GAAG,OAAOC,KAAK,KAAK,SAAS,GAAGE,MAAM,CAACF,KAAK,CAAC,GAAGA,KAAK;EAC1F;EACA,OAAOF,MAAM;AACf","ignoreList":[]}
|
|
@@ -17,4 +17,5 @@ export * from './progress';
|
|
|
17
17
|
export * from './radio';
|
|
18
18
|
export type { InteractionState } from './types';
|
|
19
19
|
export { dataAttributes } from './utils/dataAttributes';
|
|
20
|
+
export { domDataAttributes, type DomDataAttributeValue } from './utils/domDataAttributes';
|
|
20
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface LinkInteractionState {
|
|
2
|
+
hover: boolean;
|
|
3
|
+
visited: boolean;
|
|
4
|
+
focusVisible: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const LinkInteractionProvider: import("react").FunctionComponent<{
|
|
7
|
+
children: import("react").ReactNode;
|
|
8
|
+
value: LinkInteractionState;
|
|
9
|
+
}>, useLinkInteractionContext: () => LinkInteractionState;
|
|
10
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/link/context.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAO,uBAAuB;;;IAAE,yBAAyB,4BACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLink.d.ts","sourceRoot":"","sources":["../../../src/link/createLink.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createLink.d.ts","sourceRoot":"","sources":["../../../src/link/createLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,UAAU,GAAI,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,UAAU;IAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;CAAE,yEA+E1F,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { createLink } from './createLink';
|
|
2
|
+
export { LinkInteractionProvider, useLinkInteractionContext } from './context';
|
|
3
|
+
export type { LinkInteractionState } from './context';
|
|
2
4
|
export { LinkProvider } from './LinkProvider';
|
|
3
5
|
export type { LinkConfig } from './LinkProvider';
|
|
4
6
|
export { useLink } from './useLink';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -30,6 +30,7 @@ export interface ILinkProps extends PressableProps {
|
|
|
30
30
|
isHovered?: boolean;
|
|
31
31
|
isFocused?: boolean;
|
|
32
32
|
isFocusVisible?: boolean;
|
|
33
|
+
isVisited?: boolean;
|
|
33
34
|
/**
|
|
34
35
|
* HTML anchor attributes applied only on web. Ignored on native platforms.
|
|
35
36
|
* `target`, `rel`, and `download` are forwarded via react-native-web's `hrefAttrs`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/link/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACvE;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACtE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC1D"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/link/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACvE;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACtE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSelectIcon.d.ts","sourceRoot":"","sources":["../../../src/select/createSelectIcon.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAG,UAAU,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"createSelectIcon.d.ts","sourceRoot":"","sources":["../../../src/select/createSelectIcon.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAG,UAAU,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,yGAuBjE,CAAC"}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Produces
|
|
2
|
+
* Produces `data-*` props for native platforms (consumed by Uniwind).
|
|
3
|
+
* Web (.web.ts): returns a `dataSet` object consumed by React Native Web instead.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
* Web (.web.ts): a `dataSet` object consumed by React Native Web.
|
|
6
|
-
*
|
|
7
|
-
* Boolean values serialize to `"true"` / `"false"` strings.
|
|
8
|
-
* String values pass through as-is.
|
|
9
|
-
* Undefined values are omitted.
|
|
5
|
+
* Delegates to `domDataAttributes` so the conversion logic has a single source of truth.
|
|
10
6
|
*/
|
|
11
|
-
|
|
12
|
-
export declare function dataAttributes(attrs: Record<string, DataAttributeValue>): Record<string, string>;
|
|
13
|
-
export {};
|
|
7
|
+
export { domDataAttributes as dataAttributes } from './domDataAttributes';
|
|
14
8
|
//# sourceMappingURL=dataAttributes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/dataAttributes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dataAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/dataAttributes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Produces `data-*` DOM attribute props for use on raw HTML elements (e.g. `<button>`).
|
|
3
|
+
*
|
|
4
|
+
* Unlike `dataAttributes`, which has a platform-specific `.web.ts` sibling that returns a
|
|
5
|
+
* `dataSet` object for React Native Web components, this file has no platform variant.
|
|
6
|
+
* The bundler therefore always resolves to this single implementation, making it safe to
|
|
7
|
+
* import from `.web.tsx` host components that render native DOM elements directly.
|
|
8
|
+
*
|
|
9
|
+
* Boolean values serialize to `"true"` / `"false"` strings.
|
|
10
|
+
* String values pass through as-is.
|
|
11
|
+
* Undefined values are omitted.
|
|
12
|
+
*/
|
|
13
|
+
export type DomDataAttributeValue = boolean | string | undefined;
|
|
14
|
+
export declare function domDataAttributes(attrs: Record<string, DomDataAttributeValue>): Record<string, string>;
|
|
15
|
+
//# sourceMappingURL=domDataAttributes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domDataAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/domDataAttributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAMjE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB"}
|
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.46",
|
|
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.46"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@types/react": "*",
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createContext } from '@cdx-ui/utils';
|
|
2
|
+
|
|
3
|
+
export interface LinkInteractionState {
|
|
4
|
+
hover: boolean;
|
|
5
|
+
visited: boolean;
|
|
6
|
+
focusVisible: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const [LinkInteractionProvider, useLinkInteractionContext] =
|
|
10
|
+
createContext<LinkInteractionState>('LinkInteractionContext');
|
package/src/link/createLink.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import React, { forwardRef } from 'react';
|
|
1
|
+
import React, { forwardRef, useMemo } from 'react';
|
|
2
2
|
import { composeEventHandlers } from '@cdx-ui/utils';
|
|
3
3
|
import { useFocusRing, useFocus } from '@react-native-aria/focus';
|
|
4
4
|
import { useHover, usePress } from '@react-native-aria/interactions';
|
|
5
5
|
import { dataAttributes } from '../utils/dataAttributes';
|
|
6
|
+
import { LinkInteractionProvider } from './context';
|
|
6
7
|
import { useLink } from './useLink';
|
|
7
8
|
import type { ILinkProps } from './types';
|
|
8
9
|
|
|
@@ -15,6 +16,7 @@ export const createLink = <RootT, R = unknown>({ Root }: { Root: React.Component
|
|
|
15
16
|
isPressed: isPressedProp,
|
|
16
17
|
isFocused: isFocusedProp,
|
|
17
18
|
isFocusVisible: isFocusVisibleProp,
|
|
19
|
+
isVisited: isVisitedProp,
|
|
18
20
|
href,
|
|
19
21
|
onPress,
|
|
20
22
|
action,
|
|
@@ -38,34 +40,50 @@ export const createLink = <RootT, R = unknown>({ Root }: { Root: React.Component
|
|
|
38
40
|
webProps,
|
|
39
41
|
});
|
|
40
42
|
|
|
43
|
+
const hover = isHoveredProp || isHovered;
|
|
44
|
+
const visited = isVisitedProp ?? false;
|
|
45
|
+
const focusVisible = isFocusVisibleProp || isFocusVisible;
|
|
46
|
+
|
|
47
|
+
const interactionState = useMemo(
|
|
48
|
+
() => ({
|
|
49
|
+
hover,
|
|
50
|
+
visited,
|
|
51
|
+
focusVisible,
|
|
52
|
+
}),
|
|
53
|
+
[hover, visited, focusVisible],
|
|
54
|
+
);
|
|
55
|
+
|
|
41
56
|
const interactionAttrs = dataAttributes({
|
|
42
|
-
hover
|
|
57
|
+
hover,
|
|
43
58
|
focus: isFocusedProp || isFocused,
|
|
44
59
|
active: isPressedProp || isPressed,
|
|
45
|
-
focusVisible
|
|
60
|
+
focusVisible,
|
|
61
|
+
visited,
|
|
46
62
|
});
|
|
47
63
|
|
|
48
64
|
return (
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
composeEventHandlers(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
composeEventHandlers(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
<LinkInteractionProvider value={interactionState}>
|
|
66
|
+
<Root
|
|
67
|
+
ref={ref}
|
|
68
|
+
{...interactionAttrs}
|
|
69
|
+
{...linkProps}
|
|
70
|
+
{...(props as RootT)}
|
|
71
|
+
onPressIn={composeEventHandlers(props?.onPressIn, pressProps.onPressIn)}
|
|
72
|
+
onPressOut={composeEventHandlers(props?.onPressOut, pressProps.onPressOut)}
|
|
73
|
+
onHoverIn={composeEventHandlers(props?.onHoverIn, hoverProps.onHoverIn)}
|
|
74
|
+
onHoverOut={composeEventHandlers(props?.onHoverOut, hoverProps.onHoverOut)}
|
|
75
|
+
onFocus={composeEventHandlers(
|
|
76
|
+
composeEventHandlers(props?.onFocus, focusProps.onFocus),
|
|
77
|
+
focusRingProps.onFocus,
|
|
78
|
+
)}
|
|
79
|
+
onBlur={composeEventHandlers(
|
|
80
|
+
composeEventHandlers(props?.onBlur, focusProps.onBlur),
|
|
81
|
+
focusRingProps.onBlur,
|
|
82
|
+
)}
|
|
83
|
+
>
|
|
84
|
+
{children}
|
|
85
|
+
</Root>
|
|
86
|
+
</LinkInteractionProvider>
|
|
69
87
|
);
|
|
70
88
|
},
|
|
71
89
|
);
|
package/src/link/index.tsx
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { createLink } from './createLink';
|
|
2
|
+
export { LinkInteractionProvider, useLinkInteractionContext } from './context';
|
|
3
|
+
export type { LinkInteractionState } from './context';
|
|
2
4
|
export { LinkProvider } from './LinkProvider';
|
|
3
5
|
export type { LinkConfig } from './LinkProvider';
|
|
4
6
|
export { useLink } from './useLink';
|
package/src/link/types.ts
CHANGED
|
@@ -32,6 +32,7 @@ export interface ILinkProps extends PressableProps {
|
|
|
32
32
|
isHovered?: boolean;
|
|
33
33
|
isFocused?: boolean;
|
|
34
34
|
isFocusVisible?: boolean;
|
|
35
|
+
isVisited?: boolean;
|
|
35
36
|
/**
|
|
36
37
|
* HTML anchor attributes applied only on web. Ignored on native platforms.
|
|
37
38
|
* `target`, `rel`, and `download` are forwarded via react-native-web's `hrefAttrs`.
|
|
@@ -5,7 +5,7 @@ import { useSelectContext, useSelectTriggerContext } from './context';
|
|
|
5
5
|
export const createSelectIcon = <T,>(BaseIcon: React.ComponentType<T>) =>
|
|
6
6
|
forwardRef((props: any, ref?: any) => {
|
|
7
7
|
const { hover, focus, active, disabled, focusVisible } = useSelectTriggerContext();
|
|
8
|
-
const { required, invalid, readOnly } = useSelectContext();
|
|
8
|
+
const { required, invalid, readOnly, open } = useSelectContext();
|
|
9
9
|
|
|
10
10
|
return (
|
|
11
11
|
<BaseIcon
|
|
@@ -19,6 +19,7 @@ export const createSelectIcon = <T,>(BaseIcon: React.ComponentType<T>) =>
|
|
|
19
19
|
required,
|
|
20
20
|
invalid,
|
|
21
21
|
readonly: readOnly,
|
|
22
|
+
state: open ? 'open' : 'closed',
|
|
22
23
|
slot: 'select-icon',
|
|
23
24
|
})}
|
|
24
25
|
{...(props as T)}
|
|
@@ -1,28 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Produces
|
|
2
|
+
* Produces `data-*` props for native platforms (consumed by Uniwind).
|
|
3
|
+
* Web (.web.ts): returns a `dataSet` object consumed by React Native Web instead.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
* Web (.web.ts): a `dataSet` object consumed by React Native Web.
|
|
6
|
-
*
|
|
7
|
-
* Boolean values serialize to `"true"` / `"false"` strings.
|
|
8
|
-
* String values pass through as-is.
|
|
9
|
-
* Undefined values are omitted.
|
|
5
|
+
* Delegates to `domDataAttributes` so the conversion logic has a single source of truth.
|
|
10
6
|
*/
|
|
11
|
-
|
|
12
|
-
type DataAttributeValue = boolean | string | undefined;
|
|
13
|
-
|
|
14
|
-
function camelToKebab(str: string): string {
|
|
15
|
-
return str.replaceAll(/[A-Z]/g, (ch) => `-${ch.toLowerCase()}`);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function dataAttributes(attrs: Record<string, DataAttributeValue>): Record<string, string> {
|
|
19
|
-
const result: Record<string, string> = {};
|
|
20
|
-
for (const key in attrs) {
|
|
21
|
-
const value = attrs[key];
|
|
22
|
-
if (value === undefined) {
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
result[`data-${camelToKebab(key)}`] = typeof value === 'boolean' ? String(value) : value;
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
7
|
+
export { domDataAttributes as dataAttributes } from './domDataAttributes';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Produces `data-*` DOM attribute props for use on raw HTML elements (e.g. `<button>`).
|
|
3
|
+
*
|
|
4
|
+
* Unlike `dataAttributes`, which has a platform-specific `.web.ts` sibling that returns a
|
|
5
|
+
* `dataSet` object for React Native Web components, this file has no platform variant.
|
|
6
|
+
* The bundler therefore always resolves to this single implementation, making it safe to
|
|
7
|
+
* import from `.web.tsx` host components that render native DOM elements directly.
|
|
8
|
+
*
|
|
9
|
+
* Boolean values serialize to `"true"` / `"false"` strings.
|
|
10
|
+
* String values pass through as-is.
|
|
11
|
+
* Undefined values are omitted.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export type DomDataAttributeValue = boolean | string | undefined;
|
|
15
|
+
|
|
16
|
+
function camelToKebab(str: string): string {
|
|
17
|
+
return str.replaceAll(/[A-Z]/g, (ch) => `-${ch.toLowerCase()}`);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function domDataAttributes(
|
|
21
|
+
attrs: Record<string, DomDataAttributeValue>,
|
|
22
|
+
): Record<string, string> {
|
|
23
|
+
const result: Record<string, string> = {};
|
|
24
|
+
for (const key in attrs) {
|
|
25
|
+
const value = attrs[key];
|
|
26
|
+
if (value === undefined) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
result[`data-${camelToKebab(key)}`] = typeof value === 'boolean' ? String(value) : value;
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|