@xanui/ui 1.1.20 → 1.1.22
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/Badge/index.d.ts +7 -0
- package/Badge/index.js +80 -47
- package/Badge/index.js.map +1 -1
- package/Badge/index.mjs +82 -49
- package/Badge/index.mjs.map +1 -1
- package/Input/index.d.ts +33 -7
- package/Input/index.js +31 -22
- package/Input/index.js.map +1 -1
- package/Input/index.mjs +33 -24
- package/Input/index.mjs.map +1 -1
- package/Menu/index.js +5 -3
- package/Menu/index.js.map +1 -1
- package/Menu/index.mjs +5 -3
- package/Menu/index.mjs.map +1 -1
- package/Portal/index.js +1 -1
- package/Portal/index.js.map +1 -1
- package/Portal/index.mjs +1 -1
- package/Portal/index.mjs.map +1 -1
- package/Select/index.d.ts +6 -0
- package/Select/index.js +7 -8
- package/Select/index.js.map +1 -1
- package/Select/index.mjs +8 -9
- package/Select/index.mjs.map +1 -1
- package/package.json +2 -2
package/Badge/index.d.ts
CHANGED
|
@@ -6,8 +6,15 @@ type BadgeProps<T extends TagComponentType = "div"> = Omit<TagProps<T>, "baseCla
|
|
|
6
6
|
color?: useBreakpointPropsType<UseColorTemplateColor>;
|
|
7
7
|
placement?: useBreakpointPropsType<"left-top" | "left-bottom" | "right-top" | "right-bottom">;
|
|
8
8
|
visible?: useBreakpointPropsType<boolean>;
|
|
9
|
+
disableTransition?: boolean;
|
|
10
|
+
disableSpace?: boolean;
|
|
9
11
|
slotProps?: {
|
|
10
12
|
transition?: Omit<TransitionProps, "open">;
|
|
13
|
+
content?: Omit<TagProps<"span">, "children">;
|
|
14
|
+
};
|
|
15
|
+
refs?: {
|
|
16
|
+
content?: React.Ref<any>;
|
|
17
|
+
transition?: React.Ref<any>;
|
|
11
18
|
};
|
|
12
19
|
};
|
|
13
20
|
declare const Badge: React.ForwardRefExoticComponent<Omit<BadgeProps<TagComponentType>, "ref"> & React.RefAttributes<any>>;
|
package/Badge/index.js
CHANGED
|
@@ -6,71 +6,104 @@ var React = require('react');
|
|
|
6
6
|
var core = require('@xanui/core');
|
|
7
7
|
|
|
8
8
|
const Badge = React.forwardRef((_a, ref) => {
|
|
9
|
-
var { children, content } = _a, rest = tslib.__rest(_a, ["children", "content"]);
|
|
10
|
-
let [_b] = core.useInterface("Badge", rest, {}), { color, placement, visible, slotProps } = _b, props = tslib.__rest(_b, ["color", "placement", "visible", "slotProps"]);
|
|
9
|
+
var { children, content, refs } = _a, rest = tslib.__rest(_a, ["children", "content", "refs"]);
|
|
10
|
+
let [_b] = core.useInterface("Badge", rest, {}), { color, placement, visible, slotProps, disableTransition, disableSpace } = _b, props = tslib.__rest(_b, ["color", "placement", "visible", "slotProps", "disableTransition", "disableSpace"]);
|
|
11
11
|
color !== null && color !== void 0 ? color : (color = "danger");
|
|
12
12
|
visible !== null && visible !== void 0 ? visible : (visible = true);
|
|
13
13
|
placement !== null && placement !== void 0 ? placement : (placement = "right-top");
|
|
14
|
+
disableTransition !== null && disableTransition !== void 0 ? disableTransition : (disableTransition = false);
|
|
15
|
+
disableSpace !== null && disableSpace !== void 0 ? disableSpace : (disableSpace = false);
|
|
14
16
|
const _p = {};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
_p.placement = placement;
|
|
21
|
-
if (visible)
|
|
22
|
-
_p.visible = visible;
|
|
17
|
+
_p.content = content;
|
|
18
|
+
_p.color = color;
|
|
19
|
+
_p.placement = placement;
|
|
20
|
+
_p.visible = visible;
|
|
21
|
+
_p.disableTransition = disableTransition !== null && disableTransition !== void 0 ? disableTransition : false;
|
|
23
22
|
const p = core.useBreakpointProps(_p);
|
|
24
23
|
content = p.content;
|
|
25
24
|
color = p.color;
|
|
26
25
|
placement = p.placement;
|
|
27
26
|
visible = p.visible;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
let
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
else if (content.toString().length > 2) {
|
|
36
|
-
pos = -8;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
27
|
+
disableTransition = p.disableTransition;
|
|
28
|
+
const isReactElement = React.isValidElement(content);
|
|
29
|
+
let template = core.useColorTemplate(color, "fill");
|
|
30
|
+
let _css = {
|
|
31
|
+
position: "absolute",
|
|
32
|
+
};
|
|
33
|
+
let translate = '';
|
|
39
34
|
switch (placement) {
|
|
40
|
-
case "left-top":
|
|
41
|
-
_css = { top: content ? pos : 0, left: content ? pos : 0 };
|
|
42
|
-
break;
|
|
43
|
-
case "left-bottom":
|
|
44
|
-
_css = { bottom: content ? pos : 0, left: content ? pos : 0 };
|
|
45
|
-
break;
|
|
46
35
|
case "right-top":
|
|
47
|
-
_css =
|
|
36
|
+
_css.top = 0;
|
|
37
|
+
_css.right = 0;
|
|
38
|
+
if (!disableSpace) {
|
|
39
|
+
translate = "translate(50%, -50%)";
|
|
40
|
+
}
|
|
48
41
|
break;
|
|
49
42
|
case "right-bottom":
|
|
50
|
-
_css =
|
|
43
|
+
_css.bottom = 0;
|
|
44
|
+
_css.right = 0;
|
|
45
|
+
if (!disableSpace) {
|
|
46
|
+
translate = "translate(50%, 50%)";
|
|
47
|
+
}
|
|
48
|
+
break;
|
|
49
|
+
case "left-top":
|
|
50
|
+
_css.top = 0;
|
|
51
|
+
_css.left = 0;
|
|
52
|
+
if (!disableSpace) {
|
|
53
|
+
translate = "translate(-50%, -50%)";
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
case "left-bottom":
|
|
57
|
+
_css.bottom = 0;
|
|
58
|
+
_css.left = 0;
|
|
59
|
+
if (!disableSpace) {
|
|
60
|
+
translate = "translate(-50%, 50%)";
|
|
61
|
+
}
|
|
51
62
|
break;
|
|
52
63
|
}
|
|
53
|
-
if (
|
|
54
|
-
_css.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
if (disableTransition) {
|
|
65
|
+
_css.transform = translate;
|
|
66
|
+
}
|
|
67
|
+
if (!isReactElement) {
|
|
68
|
+
if (content !== undefined) {
|
|
69
|
+
_css.minWidth = 16;
|
|
70
|
+
_css.height = 16;
|
|
71
|
+
_css.p = .8;
|
|
72
|
+
_css.px = .4;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
_css.width = 8;
|
|
76
|
+
_css.height = 8;
|
|
77
|
+
}
|
|
59
78
|
}
|
|
60
79
|
else {
|
|
61
|
-
|
|
62
|
-
_css.height = 8;
|
|
80
|
+
template = {};
|
|
63
81
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
82
|
+
const _badge = jsxRuntime.jsx(core.Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.content, { ref: refs === null || refs === void 0 ? void 0 : refs.content, component: 'span', baseClass: 'badge-content', sxr: {
|
|
83
|
+
position: "absolute",
|
|
84
|
+
zIndex: 1,
|
|
85
|
+
radius: 2,
|
|
86
|
+
display: 'flex',
|
|
87
|
+
justifyContent: "center",
|
|
88
|
+
alignItems: 'center',
|
|
89
|
+
fontWeight: 500,
|
|
90
|
+
fontSize: 11,
|
|
91
|
+
userSelect: "none",
|
|
92
|
+
pointerEvents: "none",
|
|
93
|
+
lineHeight: 1,
|
|
94
|
+
} }, template.primary, _css, { children: typeof content === 'number' ? (content >= 100 ? "99+" : content) : content }));
|
|
95
|
+
return (jsxRuntime.jsxs(core.Tag, Object.assign({}, props, { position: "relative", display: "inline-block", baseClass: 'badge', ref: ref, children: [!disableTransition ? (jsxRuntime.jsx(core.Transition, Object.assign({ open: content !== undefined && visible }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.transition, { variant: () => {
|
|
96
|
+
return {
|
|
97
|
+
from: {
|
|
98
|
+
opacity: 0,
|
|
99
|
+
transform: `scale(0) ${translate}`.trim(),
|
|
100
|
+
},
|
|
101
|
+
to: {
|
|
102
|
+
opacity: 1,
|
|
103
|
+
transform: `scale(1) ${translate}`.trim(),
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}, ref: refs === null || refs === void 0 ? void 0 : refs.transition, children: _badge }))) : jsxRuntime.jsx(jsxRuntime.Fragment, { children: (content !== undefined && visible) && _badge }), children] })));
|
|
74
107
|
});
|
|
75
108
|
|
|
76
109
|
module.exports = Badge;
|
package/Badge/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/Badge/index.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, UseColorTemplateColor, useColorTemplate, useBreakpointPropsType, useBreakpointProps, TransitionProps } from '@xanui/core';\n\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/Badge/index.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, Transition, useInterface, UseColorTemplateColor, useColorTemplate, useBreakpointPropsType, useBreakpointProps, TransitionProps } from '@xanui/core';\n\nexport type BadgeProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"baseClass\" | \"content\"> & {\n content?: useBreakpointPropsType<number | ReactElement>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n placement?: useBreakpointPropsType<\"left-top\" | \"left-bottom\" | \"right-top\" | \"right-bottom\">;\n visible?: useBreakpointPropsType<boolean>;\n disableTransition?: boolean;\n disableSpace?: boolean;\n slotProps?: {\n transition?: Omit<TransitionProps, \"open\">;\n content?: Omit<TagProps<\"span\">, \"children\">;\n },\n refs?: {\n content?: React.Ref<any>;\n transition?: React.Ref<any>;\n };\n}\n\nconst Badge = React.forwardRef(<T extends TagComponentType = \"div\">({ children, content, refs, ...rest }: BadgeProps<T>, ref: React.Ref<any>) => {\n let [{ color, placement, visible, slotProps, disableTransition, disableSpace, ...props }] = useInterface<any>(\"Badge\", rest, {})\n color ??= \"danger\"\n visible ??= true\n placement ??= \"right-top\"\n disableTransition ??= false\n disableSpace ??= false\n\n const _p: any = {}\n\n _p.content = content\n _p.color = color\n _p.placement = placement\n _p.visible = visible\n _p.disableTransition = disableTransition ?? false\n\n const p: any = useBreakpointProps(_p)\n\n content = p.content\n color = p.color\n placement = p.placement\n visible = p.visible\n disableTransition = p.disableTransition\n\n const isReactElement = React.isValidElement(content);\n\n let template: any = useColorTemplate(color, \"fill\")\n let _css: any = {\n position: \"absolute\",\n }\n\n let translate = ''\n\n switch (placement) {\n case \"right-top\":\n _css.top = 0;\n _css.right = 0;\n if (!disableSpace) {\n translate = \"translate(50%, -50%)\";\n }\n break;\n case \"right-bottom\":\n _css.bottom = 0;\n _css.right = 0;\n if (!disableSpace) {\n translate = \"translate(50%, 50%)\";\n }\n break;\n case \"left-top\":\n _css.top = 0;\n _css.left = 0;\n if (!disableSpace) {\n translate = \"translate(-50%, -50%)\";\n }\n break;\n case \"left-bottom\":\n _css.bottom = 0;\n _css.left = 0;\n if (!disableSpace) {\n translate = \"translate(-50%, 50%)\";\n }\n break;\n }\n\n if (disableTransition) {\n _css.transform = translate\n }\n\n if (!isReactElement) {\n if (content !== undefined) {\n _css.minWidth = 16\n _css.height = 16\n _css.p = .8\n _css.px = .4\n } else {\n _css.width = 8\n _css.height = 8\n }\n } else {\n template = {}\n }\n\n const _badge = <Tag\n {...slotProps?.content}\n ref={refs?.content}\n component='span'\n baseClass='badge-content'\n sxr={{\n position: \"absolute\",\n zIndex: 1,\n radius: 2,\n display: 'flex',\n justifyContent: \"center\",\n alignItems: 'center',\n fontWeight: 500,\n fontSize: 11,\n userSelect: \"none\",\n pointerEvents: \"none\",\n lineHeight: 1,\n }}\n {...template.primary}\n {..._css}\n >\n {typeof content === 'number' ? (content >= 100 ? \"99+\" : content) : content}\n </Tag>\n\n return (\n <Tag\n {...props}\n position=\"relative\"\n display=\"inline-block\"\n baseClass='badge'\n ref={ref}\n >\n {\n !disableTransition ? (<Transition\n open={content !== undefined && visible}\n {...slotProps?.transition}\n variant={() => {\n return {\n from: {\n opacity: 0,\n transform: `scale(0) ${translate}`.trim(),\n },\n to: {\n opacity: 1,\n transform: `scale(1) ${translate}`.trim(),\n },\n }\n }}\n ref={refs?.transition}\n >\n {_badge}\n </Transition>) : <>{(content !== undefined && visible) && _badge}</>\n }\n\n {children}\n </Tag>\n )\n})\n\nexport default Badge\n\n"],"names":["__rest","useInterface","useBreakpointProps","useColorTemplate","_jsx","Tag","_jsxs","Transition","_Fragment"],"mappings":"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"}
|
package/Badge/index.mjs
CHANGED
|
@@ -1,74 +1,107 @@
|
|
|
1
1
|
import { __rest } from 'tslib';
|
|
2
|
-
import { jsxs,
|
|
2
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { useInterface, useBreakpointProps, useColorTemplate, Tag } from '@xanui/core';
|
|
4
|
+
import { useInterface, useBreakpointProps, useColorTemplate, Tag, Transition } from '@xanui/core';
|
|
5
5
|
|
|
6
6
|
const Badge = React.forwardRef((_a, ref) => {
|
|
7
|
-
var { children, content } = _a, rest = __rest(_a, ["children", "content"]);
|
|
8
|
-
let [_b] = useInterface("Badge", rest, {}), { color, placement, visible, slotProps } = _b, props = __rest(_b, ["color", "placement", "visible", "slotProps"]);
|
|
7
|
+
var { children, content, refs } = _a, rest = __rest(_a, ["children", "content", "refs"]);
|
|
8
|
+
let [_b] = useInterface("Badge", rest, {}), { color, placement, visible, slotProps, disableTransition, disableSpace } = _b, props = __rest(_b, ["color", "placement", "visible", "slotProps", "disableTransition", "disableSpace"]);
|
|
9
9
|
color !== null && color !== void 0 ? color : (color = "danger");
|
|
10
10
|
visible !== null && visible !== void 0 ? visible : (visible = true);
|
|
11
11
|
placement !== null && placement !== void 0 ? placement : (placement = "right-top");
|
|
12
|
+
disableTransition !== null && disableTransition !== void 0 ? disableTransition : (disableTransition = false);
|
|
13
|
+
disableSpace !== null && disableSpace !== void 0 ? disableSpace : (disableSpace = false);
|
|
12
14
|
const _p = {};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
_p.placement = placement;
|
|
19
|
-
if (visible)
|
|
20
|
-
_p.visible = visible;
|
|
15
|
+
_p.content = content;
|
|
16
|
+
_p.color = color;
|
|
17
|
+
_p.placement = placement;
|
|
18
|
+
_p.visible = visible;
|
|
19
|
+
_p.disableTransition = disableTransition !== null && disableTransition !== void 0 ? disableTransition : false;
|
|
21
20
|
const p = useBreakpointProps(_p);
|
|
22
21
|
content = p.content;
|
|
23
22
|
color = p.color;
|
|
24
23
|
placement = p.placement;
|
|
25
24
|
visible = p.visible;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
let
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
else if (content.toString().length > 2) {
|
|
34
|
-
pos = -8;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
25
|
+
disableTransition = p.disableTransition;
|
|
26
|
+
const isReactElement = React.isValidElement(content);
|
|
27
|
+
let template = useColorTemplate(color, "fill");
|
|
28
|
+
let _css = {
|
|
29
|
+
position: "absolute",
|
|
30
|
+
};
|
|
31
|
+
let translate = '';
|
|
37
32
|
switch (placement) {
|
|
38
|
-
case "left-top":
|
|
39
|
-
_css = { top: content ? pos : 0, left: content ? pos : 0 };
|
|
40
|
-
break;
|
|
41
|
-
case "left-bottom":
|
|
42
|
-
_css = { bottom: content ? pos : 0, left: content ? pos : 0 };
|
|
43
|
-
break;
|
|
44
33
|
case "right-top":
|
|
45
|
-
_css =
|
|
34
|
+
_css.top = 0;
|
|
35
|
+
_css.right = 0;
|
|
36
|
+
if (!disableSpace) {
|
|
37
|
+
translate = "translate(50%, -50%)";
|
|
38
|
+
}
|
|
46
39
|
break;
|
|
47
40
|
case "right-bottom":
|
|
48
|
-
_css =
|
|
41
|
+
_css.bottom = 0;
|
|
42
|
+
_css.right = 0;
|
|
43
|
+
if (!disableSpace) {
|
|
44
|
+
translate = "translate(50%, 50%)";
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
case "left-top":
|
|
48
|
+
_css.top = 0;
|
|
49
|
+
_css.left = 0;
|
|
50
|
+
if (!disableSpace) {
|
|
51
|
+
translate = "translate(-50%, -50%)";
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
case "left-bottom":
|
|
55
|
+
_css.bottom = 0;
|
|
56
|
+
_css.left = 0;
|
|
57
|
+
if (!disableSpace) {
|
|
58
|
+
translate = "translate(-50%, 50%)";
|
|
59
|
+
}
|
|
49
60
|
break;
|
|
50
61
|
}
|
|
51
|
-
if (
|
|
52
|
-
_css.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
62
|
+
if (disableTransition) {
|
|
63
|
+
_css.transform = translate;
|
|
64
|
+
}
|
|
65
|
+
if (!isReactElement) {
|
|
66
|
+
if (content !== undefined) {
|
|
67
|
+
_css.minWidth = 16;
|
|
68
|
+
_css.height = 16;
|
|
69
|
+
_css.p = .8;
|
|
70
|
+
_css.px = .4;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
_css.width = 8;
|
|
74
|
+
_css.height = 8;
|
|
75
|
+
}
|
|
57
76
|
}
|
|
58
77
|
else {
|
|
59
|
-
|
|
60
|
-
_css.height = 8;
|
|
78
|
+
template = {};
|
|
61
79
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
80
|
+
const _badge = jsx(Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.content, { ref: refs === null || refs === void 0 ? void 0 : refs.content, component: 'span', baseClass: 'badge-content', sxr: {
|
|
81
|
+
position: "absolute",
|
|
82
|
+
zIndex: 1,
|
|
83
|
+
radius: 2,
|
|
84
|
+
display: 'flex',
|
|
85
|
+
justifyContent: "center",
|
|
86
|
+
alignItems: 'center',
|
|
87
|
+
fontWeight: 500,
|
|
88
|
+
fontSize: 11,
|
|
89
|
+
userSelect: "none",
|
|
90
|
+
pointerEvents: "none",
|
|
91
|
+
lineHeight: 1,
|
|
92
|
+
} }, template.primary, _css, { children: typeof content === 'number' ? (content >= 100 ? "99+" : content) : content }));
|
|
93
|
+
return (jsxs(Tag, Object.assign({}, props, { position: "relative", display: "inline-block", baseClass: 'badge', ref: ref, children: [!disableTransition ? (jsx(Transition, Object.assign({ open: content !== undefined && visible }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.transition, { variant: () => {
|
|
94
|
+
return {
|
|
95
|
+
from: {
|
|
96
|
+
opacity: 0,
|
|
97
|
+
transform: `scale(0) ${translate}`.trim(),
|
|
98
|
+
},
|
|
99
|
+
to: {
|
|
100
|
+
opacity: 1,
|
|
101
|
+
transform: `scale(1) ${translate}`.trim(),
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}, ref: refs === null || refs === void 0 ? void 0 : refs.transition, children: _badge }))) : jsx(Fragment, { children: (content !== undefined && visible) && _badge }), children] })));
|
|
72
105
|
});
|
|
73
106
|
|
|
74
107
|
export { Badge as default };
|
package/Badge/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/Badge/index.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, useInterface, UseColorTemplateColor, useColorTemplate, useBreakpointPropsType, useBreakpointProps, TransitionProps } from '@xanui/core';\n\
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/Badge/index.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\nimport { Tag, TagProps, TagComponentType, Transition, useInterface, UseColorTemplateColor, useColorTemplate, useBreakpointPropsType, useBreakpointProps, TransitionProps } from '@xanui/core';\n\nexport type BadgeProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"baseClass\" | \"content\"> & {\n content?: useBreakpointPropsType<number | ReactElement>;\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n placement?: useBreakpointPropsType<\"left-top\" | \"left-bottom\" | \"right-top\" | \"right-bottom\">;\n visible?: useBreakpointPropsType<boolean>;\n disableTransition?: boolean;\n disableSpace?: boolean;\n slotProps?: {\n transition?: Omit<TransitionProps, \"open\">;\n content?: Omit<TagProps<\"span\">, \"children\">;\n },\n refs?: {\n content?: React.Ref<any>;\n transition?: React.Ref<any>;\n };\n}\n\nconst Badge = React.forwardRef(<T extends TagComponentType = \"div\">({ children, content, refs, ...rest }: BadgeProps<T>, ref: React.Ref<any>) => {\n let [{ color, placement, visible, slotProps, disableTransition, disableSpace, ...props }] = useInterface<any>(\"Badge\", rest, {})\n color ??= \"danger\"\n visible ??= true\n placement ??= \"right-top\"\n disableTransition ??= false\n disableSpace ??= false\n\n const _p: any = {}\n\n _p.content = content\n _p.color = color\n _p.placement = placement\n _p.visible = visible\n _p.disableTransition = disableTransition ?? false\n\n const p: any = useBreakpointProps(_p)\n\n content = p.content\n color = p.color\n placement = p.placement\n visible = p.visible\n disableTransition = p.disableTransition\n\n const isReactElement = React.isValidElement(content);\n\n let template: any = useColorTemplate(color, \"fill\")\n let _css: any = {\n position: \"absolute\",\n }\n\n let translate = ''\n\n switch (placement) {\n case \"right-top\":\n _css.top = 0;\n _css.right = 0;\n if (!disableSpace) {\n translate = \"translate(50%, -50%)\";\n }\n break;\n case \"right-bottom\":\n _css.bottom = 0;\n _css.right = 0;\n if (!disableSpace) {\n translate = \"translate(50%, 50%)\";\n }\n break;\n case \"left-top\":\n _css.top = 0;\n _css.left = 0;\n if (!disableSpace) {\n translate = \"translate(-50%, -50%)\";\n }\n break;\n case \"left-bottom\":\n _css.bottom = 0;\n _css.left = 0;\n if (!disableSpace) {\n translate = \"translate(-50%, 50%)\";\n }\n break;\n }\n\n if (disableTransition) {\n _css.transform = translate\n }\n\n if (!isReactElement) {\n if (content !== undefined) {\n _css.minWidth = 16\n _css.height = 16\n _css.p = .8\n _css.px = .4\n } else {\n _css.width = 8\n _css.height = 8\n }\n } else {\n template = {}\n }\n\n const _badge = <Tag\n {...slotProps?.content}\n ref={refs?.content}\n component='span'\n baseClass='badge-content'\n sxr={{\n position: \"absolute\",\n zIndex: 1,\n radius: 2,\n display: 'flex',\n justifyContent: \"center\",\n alignItems: 'center',\n fontWeight: 500,\n fontSize: 11,\n userSelect: \"none\",\n pointerEvents: \"none\",\n lineHeight: 1,\n }}\n {...template.primary}\n {..._css}\n >\n {typeof content === 'number' ? (content >= 100 ? \"99+\" : content) : content}\n </Tag>\n\n return (\n <Tag\n {...props}\n position=\"relative\"\n display=\"inline-block\"\n baseClass='badge'\n ref={ref}\n >\n {\n !disableTransition ? (<Transition\n open={content !== undefined && visible}\n {...slotProps?.transition}\n variant={() => {\n return {\n from: {\n opacity: 0,\n transform: `scale(0) ${translate}`.trim(),\n },\n to: {\n opacity: 1,\n transform: `scale(1) ${translate}`.trim(),\n },\n }\n }}\n ref={refs?.transition}\n >\n {_badge}\n </Transition>) : <>{(content !== undefined && visible) && _badge}</>\n }\n\n {children}\n </Tag>\n )\n})\n\nexport default Badge\n\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
package/Input/index.d.ts
CHANGED
|
@@ -1,23 +1,49 @@
|
|
|
1
|
-
import React, { ReactElement
|
|
1
|
+
import React, { ReactElement } from 'react';
|
|
2
2
|
import { TagComponentType, TagProps, useBreakpointPropsType, UseColorTemplateColor } from '@xanui/core';
|
|
3
3
|
|
|
4
|
-
type InputProps<T extends TagComponentType = "
|
|
4
|
+
type InputProps<T extends TagComponentType = "div"> = Omit<TagProps<T>, "size" | "color"> & {
|
|
5
|
+
value?: string;
|
|
6
|
+
type?: TagProps<'input'>['type'];
|
|
7
|
+
name?: string;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
readOnly?: boolean;
|
|
10
|
+
autoFocus?: boolean;
|
|
11
|
+
autoComplete?: string;
|
|
12
|
+
onFocus?: (e: React.FocusEvent<any>) => void;
|
|
13
|
+
onBlur?: (e: React.FocusEvent<any>) => void;
|
|
14
|
+
onChange?: (e: React.ChangeEvent<any>) => void;
|
|
15
|
+
onInput?: (e: React.FormEvent<any>) => void;
|
|
16
|
+
onKeyDown?: (e: React.KeyboardEvent<any>) => void;
|
|
17
|
+
onKeyUp?: (e: React.KeyboardEvent<any>) => void;
|
|
18
|
+
rows?: useBreakpointPropsType<number>;
|
|
19
|
+
minRows?: useBreakpointPropsType<number>;
|
|
20
|
+
maxRows?: useBreakpointPropsType<number>;
|
|
21
|
+
fullWidth?: boolean;
|
|
5
22
|
startIcon?: useBreakpointPropsType<ReactElement>;
|
|
6
23
|
endIcon?: useBreakpointPropsType<ReactElement>;
|
|
7
24
|
iconPlacement?: useBreakpointPropsType<"start" | "center" | "end">;
|
|
8
25
|
focused?: boolean;
|
|
9
26
|
color?: useBreakpointPropsType<Omit<UseColorTemplateColor, "default">>;
|
|
10
|
-
containerRef?: MutableRefObject<HTMLDivElement | undefined>;
|
|
11
27
|
variant?: useBreakpointPropsType<"fill" | "outline" | "text">;
|
|
12
28
|
error?: boolean;
|
|
13
29
|
helperText?: useBreakpointPropsType<string>;
|
|
14
30
|
multiline?: boolean;
|
|
15
31
|
size?: useBreakpointPropsType<"small" | "medium" | "large">;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
32
|
+
refs?: {
|
|
33
|
+
rootContainer?: React.Ref<"div">;
|
|
34
|
+
startIcon?: React.Ref<ReactElement>;
|
|
35
|
+
endIcon?: React.Ref<ReactElement>;
|
|
36
|
+
inputContainer?: React.Ref<"div">;
|
|
37
|
+
input?: React.Ref<'input' | 'textarea'>;
|
|
38
|
+
helperText?: React.Ref<"div">;
|
|
39
|
+
};
|
|
19
40
|
slotProps?: {
|
|
20
|
-
|
|
41
|
+
rootContainer?: Omit<TagProps<"div">, "children">;
|
|
42
|
+
startIcon?: Omit<TagProps<'div'>, "children">;
|
|
43
|
+
endIcon?: Omit<TagProps<'div'>, "children">;
|
|
44
|
+
inputContainer?: Omit<TagProps<"div">, "children">;
|
|
45
|
+
helperText?: Omit<TagProps<"div">, "children">;
|
|
46
|
+
input?: Partial<TagProps<T>>;
|
|
21
47
|
};
|
|
22
48
|
};
|
|
23
49
|
declare const Input: React.ForwardRefExoticComponent<Omit<InputProps<TagComponentType>, "ref"> & React.RefAttributes<any>>;
|
package/Input/index.js
CHANGED
|
@@ -5,12 +5,11 @@ var tslib = require('tslib');
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var core = require('@xanui/core');
|
|
8
|
-
var index = require('../Text/index.js');
|
|
9
8
|
|
|
10
9
|
const Input = React.forwardRef((_a, ref) => {
|
|
11
10
|
var _b, _c, _d;
|
|
12
|
-
var { value } = _a, props = tslib.__rest(_a, ["value"]);
|
|
13
|
-
let [_e, theme] = core.useInterface("Input", props, {}), { startIcon, endIcon, iconPlacement,
|
|
11
|
+
var { value, refs } = _a, props = tslib.__rest(_a, ["value", "refs"]);
|
|
12
|
+
let [_e, theme] = core.useInterface("Input", props, {}), { startIcon, endIcon, iconPlacement, color, name, placeholder, type, readOnly, autoFocus, autoComplete, onFocus, onBlur, onChange, onKeyDown, onKeyUp, focused, disabled, variant, error, helperText, multiline, size, rows, minRows, maxRows, fullWidth, slotProps } = _e, rest = tslib.__rest(_e, ["startIcon", "endIcon", "iconPlacement", "color", "name", "placeholder", "type", "readOnly", "autoFocus", "autoComplete", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp", "focused", "disabled", "variant", "error", "helperText", "multiline", "size", "rows", "minRows", "maxRows", "fullWidth", "slotProps"]);
|
|
14
13
|
const _p = {};
|
|
15
14
|
if (startIcon)
|
|
16
15
|
_p.startIcon = startIcon;
|
|
@@ -43,18 +42,21 @@ const Input = React.forwardRef((_a, ref) => {
|
|
|
43
42
|
rows = p.rows;
|
|
44
43
|
minRows = p.minRows;
|
|
45
44
|
maxRows = p.maxRows;
|
|
46
|
-
ref !== null && ref !== void 0 ? ref : (ref = React.useRef(null));
|
|
47
45
|
iconPlacement !== null && iconPlacement !== void 0 ? iconPlacement : (iconPlacement = multiline ? "end" : "center");
|
|
48
46
|
if (!value)
|
|
49
47
|
iconPlacement = 'center';
|
|
50
48
|
const [_focused, setFocused] = React.useState(false);
|
|
51
|
-
const conRef = React.useRef(null);
|
|
52
49
|
let _focus = focused || _focused;
|
|
50
|
+
const inputRef = React.useRef(null);
|
|
51
|
+
const inputMergeRef = core.useMergeRefs(inputRef, refs === null || refs === void 0 ? void 0 : refs.input);
|
|
53
52
|
React.useEffect(() => {
|
|
54
|
-
if (
|
|
55
|
-
|
|
53
|
+
if (autoFocus) {
|
|
54
|
+
setTimeout(() => {
|
|
55
|
+
var _a;
|
|
56
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
57
|
+
}, 100);
|
|
56
58
|
}
|
|
57
|
-
}, [
|
|
59
|
+
}, [autoFocus]);
|
|
58
60
|
let _rows = React.useMemo(() => {
|
|
59
61
|
if (rows)
|
|
60
62
|
return rows;
|
|
@@ -100,18 +102,18 @@ const Input = React.forwardRef((_a, ref) => {
|
|
|
100
102
|
}
|
|
101
103
|
};
|
|
102
104
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
return (jsxRuntime.jsxs(core.Tag, Object.assign({ width: fullWidth ? "100%" : undefined }, rest, { ref: ref, baseClass: 'input-root', classNames: {
|
|
106
|
+
'input-full-width': fullWidth || false,
|
|
107
|
+
'input-focused': _focus,
|
|
108
|
+
'input-error': error || false,
|
|
109
|
+
[`input-variant-${variant}`]: true,
|
|
110
|
+
[`input-size-${size}`]: true,
|
|
111
|
+
}, children: [jsxRuntime.jsxs(core.Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.rootContainer, { ref: refs === null || refs === void 0 ? void 0 : refs.rootContainer, baseClass: 'root-container', sxr: {
|
|
112
|
+
width: "100%",
|
|
110
113
|
display: "flex",
|
|
111
114
|
flexDirection: "row",
|
|
112
115
|
alignItems: iconPlacement === 'center' ? iconPlacement : `flex-${iconPlacement}`,
|
|
113
116
|
flexWrap: "nowrap",
|
|
114
|
-
// minWidth: 100,
|
|
115
117
|
transitionProperty: "border, box-shadow, background",
|
|
116
118
|
bgcolor: error ? "danger.soft.primary" : variant === "fill" ? "background.secondary" : "background.primary",
|
|
117
119
|
border: variant === "text" ? 0 : "1px solid",
|
|
@@ -119,13 +121,14 @@ const Input = React.forwardRef((_a, ref) => {
|
|
|
119
121
|
borderRadius: 1,
|
|
120
122
|
px: 1,
|
|
121
123
|
py: .5,
|
|
122
|
-
},
|
|
124
|
+
}, disabled: disabled || false }, _size, { height: multiline ? "auto" : _size.height, minHeight: _size.height, children: [startIcon && jsxRuntime.jsx(core.Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.startIcon, { ref: refs === null || refs === void 0 ? void 0 : refs.startIcon, flex: "0 0 auto", sxr: {
|
|
123
125
|
height: "100%",
|
|
124
126
|
alignItems: 'center',
|
|
125
127
|
justifyContent: "center",
|
|
126
128
|
display: "flex",
|
|
127
129
|
color: error ? "danger.primary" : "text.secondary",
|
|
128
|
-
}, baseClass: "input-start-icon", children: startIcon }), jsxRuntime.jsx(core.Tag, { flex: 1, sxr: {
|
|
130
|
+
}, baseClass: "input-start-icon", children: startIcon })), jsxRuntime.jsx(core.Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.inputContainer, { ref: refs === null || refs === void 0 ? void 0 : refs.inputContainer, baseClass: 'input-container', flex: 1, sxr: {
|
|
131
|
+
width: "100%",
|
|
129
132
|
display: "flex",
|
|
130
133
|
alignItems: "center",
|
|
131
134
|
flex: 1,
|
|
@@ -138,7 +141,7 @@ const Input = React.forwardRef((_a, ref) => {
|
|
|
138
141
|
"box-shadow": `0 0 0px 1000px ${variant === "fill" ? theme.colors.background.secondary : theme.colors.background.primary} inset`,
|
|
139
142
|
transition: "background-color 5000s ease-in-out 0s"
|
|
140
143
|
}
|
|
141
|
-
}, children: jsxRuntime.jsx(core.Tag, Object.assign({ component: multiline ? 'textarea' : 'input' }, multiprops,
|
|
144
|
+
}, children: jsxRuntime.jsx(core.Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.input, { ref: inputMergeRef, baseClass: 'input', component: multiline ? 'textarea' : 'input' }, multiprops, { sxr: {
|
|
142
145
|
border: 0,
|
|
143
146
|
outline: 0,
|
|
144
147
|
bgcolor: "transparent",
|
|
@@ -147,19 +150,25 @@ const Input = React.forwardRef((_a, ref) => {
|
|
|
147
150
|
height: multiline ? "auto" : _size.height + "px!important",
|
|
148
151
|
width: "100%",
|
|
149
152
|
maxHeight: 200,
|
|
150
|
-
}, value: value,
|
|
153
|
+
}, value: value, onChange: onChange, onFocus: (e) => {
|
|
151
154
|
focused !== null && focused !== void 0 ? focused : setFocused(true);
|
|
152
155
|
onFocus && onFocus(e);
|
|
153
156
|
}, onBlur: (e) => {
|
|
154
157
|
focused !== null && focused !== void 0 ? focused : setFocused(false);
|
|
155
158
|
onBlur && onBlur(e);
|
|
156
|
-
} })) }), endIcon && jsxRuntime.jsx(core.Tag, { flex: "0 0 auto", sxr: {
|
|
159
|
+
}, onKeyDown: onKeyDown, onKeyUp: onKeyUp, name: name, placeholder: placeholder, type: type, readOnly: readOnly, autoComplete: autoComplete })) })), endIcon && jsxRuntime.jsx(core.Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.endIcon, { ref: refs === null || refs === void 0 ? void 0 : refs.endIcon, flex: "0 0 auto", sxr: {
|
|
157
160
|
height: "100%",
|
|
158
161
|
alignItems: 'center',
|
|
159
162
|
justifyContent: "center",
|
|
160
163
|
display: 'flex',
|
|
161
164
|
color: error ? "danger.primary" : "text.secondary",
|
|
162
|
-
}, baseClass: "input-end-icon", children: endIcon })] })), helperText && jsxRuntime.jsx(
|
|
165
|
+
}, baseClass: "input-end-icon", children: endIcon }))] })), helperText && jsxRuntime.jsx(core.Tag, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.helperText, { ref: refs === null || refs === void 0 ? void 0 : refs.helperText, baseClass: "input-helper-text", sxr: {
|
|
166
|
+
color: error ? "danger.primary" : "text.primary",
|
|
167
|
+
fontSize: "small",
|
|
168
|
+
lineHeight: "text",
|
|
169
|
+
fontWeight: 'text',
|
|
170
|
+
pl: .5,
|
|
171
|
+
}, children: helperText }))] })));
|
|
163
172
|
});
|
|
164
173
|
|
|
165
174
|
module.exports = Input;
|