@mrshmllw/smores-react 9.10.0-crumbs-add-size-to-BadgeList.1 → 9.10.0-crumbs-improve-BadgeList-and-Badge.1
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/dist/Badge/Badge.d.ts
CHANGED
@@ -6,10 +6,10 @@ export declare enum BadgeSize {
|
|
6
6
|
Lg = "40px"
|
7
7
|
}
|
8
8
|
export type BadgeProps = {
|
9
|
+
src: string | JSX.Element;
|
9
10
|
borderColour?: Color;
|
10
11
|
size?: BadgeSize;
|
11
|
-
src: string;
|
12
12
|
disabled?: boolean;
|
13
13
|
zIndex?: number;
|
14
14
|
};
|
15
|
-
export declare function Badge({ borderColour, size, src, disabled, zIndex }: BadgeProps): React.JSX.Element;
|
15
|
+
export declare function Badge<T extends BadgeProps>({ borderColour, size, src, disabled, zIndex, }: BadgeProps): React.JSX.Element;
|
package/dist/Badge/Badge.js
CHANGED
@@ -8,12 +8,16 @@ export var BadgeSize;
|
|
8
8
|
BadgeSize["Lg"] = "40px";
|
9
9
|
})(BadgeSize || (BadgeSize = {}));
|
10
10
|
// TODO: add box-shadow transition
|
11
|
-
|
12
|
-
|
11
|
+
// TODO: add fallback image when image doesn't load - use a marshal?
|
12
|
+
export function Badge({ borderColour = 'lollipop', size = BadgeSize.Lg, src, disabled, zIndex, }) {
|
13
|
+
if (typeof src === 'string') {
|
14
|
+
return (React.createElement(Container, { "$borderColour": theme.colors[borderColour], "$size": size, "$src": src, "$disabled": disabled, "$zIndex": zIndex }));
|
15
|
+
}
|
16
|
+
return (React.createElement(Container, { "$borderColour": theme.colors[borderColour], "$size": size, "$disabled": disabled, "$zIndex": zIndex, "$src": null }, src));
|
13
17
|
}
|
14
18
|
const Container = styled.div((props) => {
|
15
19
|
return css `
|
16
|
-
background-image: url(${props.$src});
|
20
|
+
background-image: ${props.$src ? `url(${props.$src})` : 'none'};
|
17
21
|
background-position: center;
|
18
22
|
background-size: cover;
|
19
23
|
height: ${props.$size};
|
@@ -21,17 +25,17 @@ const Container = styled.div((props) => {
|
|
21
25
|
border-radius: 50%;
|
22
26
|
overflow: hidden;
|
23
27
|
transition: box-shadow 0.2s ease-in-out;
|
24
|
-
|
25
|
-
|
26
|
-
filter: ${props.$disabled ? "contrast(0.5)" : "none"};
|
28
|
+
border: 2px solid ${props.$borderColour};
|
29
|
+
filter: ${props.$disabled ? 'contrast(0.5)' : 'none'};
|
27
30
|
z-index: ${props.$zIndex || 0};
|
28
31
|
|
29
32
|
${!props.$disabled &&
|
30
33
|
css `
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
34
|
+
&:hover {
|
35
|
+
cursor: pointer;
|
36
|
+
box-shadow: 0 0 0px 5px #f0f0f0;
|
37
|
+
}
|
38
|
+
`}
|
39
|
+
`;
|
36
40
|
});
|
37
41
|
//# sourceMappingURL=Badge.js.map
|
package/dist/Badge/Badge.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../src/Badge/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,
|
1
|
+
{"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../src/Badge/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAc,MAAM,UAAU,CAAA;AAE5C,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,wBAAW,CAAA;IACX,wBAAW,CAAA;AACb,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAUD,kCAAkC;AAClC,oEAAoE;AACpE,MAAM,UAAU,KAAK,CAAuB,EAC1C,YAAY,GAAG,UAAU,EACzB,IAAI,GAAG,SAAS,CAAC,EAAE,EACnB,GAAG,EACH,QAAQ,EACR,MAAM,GACK;IACX,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,CACL,oBAAC,SAAS,qBACO,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,WAClC,IAAI,UACL,GAAG,eACE,QAAQ,aACV,MAAM,GACf,CACH,CAAA;IACH,CAAC;IAED,OAAO,CACL,oBAAC,SAAS,qBACO,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,WAClC,IAAI,eACA,QAAQ,aACV,MAAM,UACT,IAAI,IAET,GAAG,CACM,CACb,CAAA;AACH,CAAC;AAUD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAiB,CAAC,KAAK,EAAE,EAAE;IACrD,OAAO,GAAG,CAAA;wBACY,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM;;;cAGpD,KAAK,CAAC,KAAK;aACZ,KAAK,CAAC,KAAK;;;;wBAIA,KAAK,CAAC,aAAa;cAC7B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM;eACzC,KAAK,CAAC,OAAO,IAAI,CAAC;;MAE3B,CAAC,KAAK,CAAC,SAAS;QAClB,GAAG,CAAA;;;;;KAKF;GACF,CAAA;AACH,CAAC,CAAC,CAAA"}
|
@@ -9,9 +9,10 @@ export type BadgeListBadge = BadgeProps & {
|
|
9
9
|
};
|
10
10
|
type Props = {
|
11
11
|
size?: BadgeProps['size'];
|
12
|
+
limit?: number;
|
12
13
|
badges: Omit<BadgeListBadge, 'zIndex'>[];
|
13
14
|
};
|
14
|
-
export declare function BadgeList({ badges }: Props): React.JSX.Element;
|
15
|
+
export declare function BadgeList({ badges, limit, size }: Props): React.JSX.Element;
|
15
16
|
type WithTooltipProps = {
|
16
17
|
badge: BadgeListBadge;
|
17
18
|
};
|
@@ -3,28 +3,49 @@ import { Badge } from '../Badge/Badge';
|
|
3
3
|
import { Box } from '../Box';
|
4
4
|
import styled from 'styled-components';
|
5
5
|
import { Tooltip } from '../Tooltip';
|
6
|
-
|
6
|
+
import { Text } from '../Text';
|
7
|
+
import { theme } from '../theme';
|
8
|
+
export function BadgeList({ badges, limit, size }) {
|
7
9
|
const badgeZIndexMax = badges.length * 10 + 10;
|
8
|
-
|
10
|
+
const limitExcess =
|
11
|
+
// TODO: off by one adjustments work, just hard to read, refactor for human eyes 👁️👄👁️
|
12
|
+
limit && (badges.length + 1 > limit ? badges.length - limit + 1 : 0);
|
13
|
+
return (React.createElement(Container, { flex: true },
|
14
|
+
badges.slice(0, limit ? limit - 1 : undefined).map((badge, index) => (React.createElement(WithTooltip, { key: typeof badge.src === 'string' ? badge.src : index, badge: { ...badge, zIndex: badgeZIndexMax - index * 10, size } }))),
|
15
|
+
limitExcess !== undefined && Boolean(limitExcess) && (React.createElement(Badge, { borderColour: "oatmeal", size: size, src: React.createElement(ExcessBadge, { excess: limitExcess }), zIndex: badgeZIndexMax, disabled: true }))));
|
9
16
|
}
|
17
|
+
function ExcessBadge({ excess }) {
|
18
|
+
return (React.createElement(ExcessBadgeContainer, null,
|
19
|
+
React.createElement(Text, { typo: "caption", style: { fontWeight: 'bold' } },
|
20
|
+
"+",
|
21
|
+
excess)));
|
22
|
+
}
|
23
|
+
const ExcessBadgeContainer = styled.div `
|
24
|
+
display: flex;
|
25
|
+
align-items: center;
|
26
|
+
place-content: center;
|
27
|
+
width: 100%;
|
28
|
+
height: 100%;
|
29
|
+
background-color: ${theme.colors.oatmeal};
|
30
|
+
pointer-events: none;
|
31
|
+
`;
|
10
32
|
const WithTooltip = ({ badge: { tooltip, ...badge } }) => {
|
11
33
|
if (tooltip) {
|
12
34
|
return (React.createElement("div", { style: { zIndex: badge.zIndex } },
|
13
35
|
React.createElement(Tooltip, { position: tooltip.position ?? 'bottom', title: tooltip?.title, content: tooltip.content },
|
14
|
-
React.createElement(Badge, {
|
36
|
+
React.createElement(Badge, { ...badge }))));
|
15
37
|
}
|
16
|
-
return React.createElement(Badge, {
|
38
|
+
return React.createElement(Badge, { ...badge });
|
17
39
|
};
|
18
40
|
const Container = styled(Box) `
|
19
41
|
& > * {
|
20
|
-
transition: margin
|
21
|
-
margin-right: -
|
42
|
+
transition: margin 0.2s ease-in-out;
|
43
|
+
margin-right: -15px;
|
22
44
|
}
|
23
45
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
}
|
46
|
+
& > *:hover:not(:first-child) {
|
47
|
+
margin-left: 10px;
|
48
|
+
margin-right: 0px;
|
28
49
|
}
|
29
50
|
`;
|
30
51
|
//# sourceMappingURL=BadgeList.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BadgeList.js","sourceRoot":"","sources":["../../src/BadgeList/BadgeList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAmB,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;
|
1
|
+
{"version":3,"file":"BadgeList.js","sourceRoot":"","sources":["../../src/BadgeList/BadgeList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAmB,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAchC,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAS;IACtD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAA;IAC9C,MAAM,WAAW;IACf,yFAAyF;IACzF,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtE,OAAO,CACL,oBAAC,SAAS,IAAC,IAAI;QAEZ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACpE,oBAAC,WAAW,IACV,GAAG,EAAE,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EACtD,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,cAAc,GAAG,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,GAC9D,CACH,CAAC;QAED,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CACpD,oBAAC,KAAK,IACJ,YAAY,EAAC,SAAS,EACtB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,oBAAC,WAAW,IAAC,MAAM,EAAE,WAAW,GAAI,EACzC,MAAM,EAAE,cAAc,EACtB,QAAQ,SACR,CACH,CACS,CACb,CAAA;AACH,CAAC;AAMD,SAAS,WAAW,CAAC,EAAE,MAAM,EAAoB;IAC/C,OAAO,CACL,oBAAC,oBAAoB;QACnB,oBAAC,IAAI,IAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;;YAC9C,MAAM,CACH,CACc,CACxB,CAAA;AACH,CAAC;AAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;sBAMjB,KAAK,CAAC,MAAM,CAAC,OAAO;;CAEzC,CAAA;AAMD,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAoB,EAAE,EAAE;IACzE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;YAClC,oBAAC,OAAO,IACN,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,EACtC,KAAK,EAAE,OAAO,EAAE,KAAK,EACrB,OAAO,EAAE,OAAO,CAAC,OAAO;gBAExB,oBAAC,KAAK,OAAK,KAAK,GAAI,CACZ,CACN,CACP,CAAA;IACH,CAAC;IAED,OAAO,oBAAC,KAAK,OAAK,KAAK,GAAI,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;;;;;;;;;;CAU5B,CAAA"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@mrshmllw/smores-react",
|
3
|
-
"version": "9.10.0-crumbs-
|
3
|
+
"version": "9.10.0-crumbs-improve-BadgeList-and-Badge.1",
|
4
4
|
"main": "./dist/index.js",
|
5
5
|
"description": "Collection of React components used by Marshmallow Technology",
|
6
6
|
"keywords": [
|