@bookjane2/bookjane-design-library 9.0.27 → 9.0.29
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/components/BKJAvatar/BKJAvatar.d.ts.map +1 -1
- package/lib/components/BKJAvatar/BKJAvatar.js +2 -2
- package/lib/components/BKJAvatar/BKJAvatar.js.map +1 -1
- package/lib/components/BKJAvatar/BKJAvatar.stories.d.ts +10 -0
- package/lib/components/BKJAvatar/BKJAvatar.stories.d.ts.map +1 -1
- package/lib/components/BKJAvatar/BKJAvatar.stories.js +34 -2
- package/lib/components/BKJAvatar/BKJAvatar.stories.js.map +1 -1
- package/lib/components/BKJAvatar/BKJAvatar.test.d.ts +2 -0
- package/lib/components/BKJAvatar/BKJAvatar.test.d.ts.map +1 -0
- package/lib/components/BKJAvatar/BKJAvatar.test.js +55 -0
- package/lib/components/BKJAvatar/BKJAvatar.test.js.map +1 -0
- package/lib/components/BKJAvatar/BKJAvatar.types.d.ts +1 -0
- package/lib/components/BKJAvatar/BKJAvatar.types.d.ts.map +1 -1
- package/lib/components/BKJChip/BKJChip.stories.d.ts +5 -0
- package/lib/components/BKJChip/BKJChip.stories.d.ts.map +1 -1
- package/lib/components/BKJChip/BKJChip.stories.js +37 -0
- package/lib/components/BKJChip/BKJChip.stories.js.map +1 -1
- package/lib/components/BKJChip/BKJChip.test.d.ts +2 -0
- package/lib/components/BKJChip/BKJChip.test.d.ts.map +1 -0
- package/lib/components/BKJChip/BKJChip.test.js +96 -0
- package/lib/components/BKJChip/BKJChip.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BKJAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"BKJAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0B/C,CAAC"}
|
|
@@ -3,8 +3,8 @@ import { useCallback } from 'react';
|
|
|
3
3
|
import { BKJIcon } from '../index.js';
|
|
4
4
|
import { BKJImage } from '../BKJImage/index.js';
|
|
5
5
|
import { PendingSignUpIcon, ImageContainer } from './BKJAvatar.styled.js';
|
|
6
|
-
export const BKJAvatar = ({ src, fontSize = 24, fallbackAvatarColor, showPendingSignUp = false, ...rest }) => {
|
|
6
|
+
export const BKJAvatar = ({ src, alt = '', fontSize = 24, fallbackAvatarColor, showPendingSignUp = false, ...rest }) => {
|
|
7
7
|
const FallbackLoadingComponent = useCallback(() => _jsx(BKJIcon, { color: fallbackAvatarColor, fontSize: fontSize, iconName: "Avatar", ...rest }), [fallbackAvatarColor, fontSize, rest]);
|
|
8
|
-
return (_jsxs(ImageContainer, { children: [_jsx(BKJImage, { alt:
|
|
8
|
+
return (_jsxs(ImageContainer, { children: [_jsx(BKJImage, { alt: alt, src: src || '', LoadingComponent: FallbackLoadingComponent, FallbackComponent: FallbackLoadingComponent, variant: 'Round', ...rest }), showPendingSignUp && _jsx(PendingSignUpIcon, { iconName: "PendingSignup", ...rest })] }));
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=BKJAvatar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BKJAvatar.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,SAAS,GAA8B,CAAC,EACO,GAAG,EACH,QAAQ,GAAG,EAAE,EACb,mBAAmB,EACnB,iBAAiB,GAAG,KAAK,EACzB,GAAG,IAAI,EACR,EAAE,EAAE;IAC7D,MAAM,wBAAwB,GAAG,WAAW,CAC1C,GAAG,EAAE,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,QAAQ,KAAK,IAAI,GAAI,EAC7F,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,CACtC,CAAC;IAEF,OAAO,CACL,MAAC,cAAc,eACb,KAAC,QAAQ,IACP,GAAG,
|
|
1
|
+
{"version":3,"file":"BKJAvatar.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,SAAS,GAA8B,CAAC,EACO,GAAG,EACH,GAAG,GAAG,EAAE,EACR,QAAQ,GAAG,EAAE,EACb,mBAAmB,EACnB,iBAAiB,GAAG,KAAK,EACzB,GAAG,IAAI,EACR,EAAE,EAAE;IAC7D,MAAM,wBAAwB,GAAG,WAAW,CAC1C,GAAG,EAAE,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,QAAQ,KAAK,IAAI,GAAI,EAC7F,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,CACtC,CAAC;IAEF,OAAO,CACL,MAAC,cAAc,eACb,KAAC,QAAQ,IACP,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,IAAI,EAAE,EACd,gBAAgB,EAAE,wBAAwB,EAC1C,iBAAiB,EAAE,wBAAwB,EAC3C,OAAO,EAAE,OAAO,KACZ,IAAI,GACR,EACD,iBAAiB,IAAI,KAAC,iBAAiB,IAAC,QAAQ,EAAC,eAAe,KAAK,IAAI,GAAI,IAC/D,CAClB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { StoryFn } from '@storybook/react';
|
|
1
2
|
import { IBKJAvatarProps } from './BKJAvatar.types.js';
|
|
2
3
|
declare const _default: {
|
|
3
4
|
title: string;
|
|
@@ -9,6 +10,12 @@ declare const _default: {
|
|
|
9
10
|
type: string;
|
|
10
11
|
};
|
|
11
12
|
};
|
|
13
|
+
alt: {
|
|
14
|
+
name: string;
|
|
15
|
+
control: {
|
|
16
|
+
type: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
12
19
|
width: {
|
|
13
20
|
name: string;
|
|
14
21
|
control: {
|
|
@@ -37,4 +44,7 @@ declare const _default: {
|
|
|
37
44
|
};
|
|
38
45
|
export default _default;
|
|
39
46
|
export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJAvatarProps>;
|
|
47
|
+
export declare const AdjacentToName: StoryFn<IBKJAvatarProps>;
|
|
48
|
+
export declare const Standalone: StoryFn<IBKJAvatarProps>;
|
|
49
|
+
export declare const WithPendingSignUp: StoryFn<IBKJAvatarProps>;
|
|
40
50
|
//# sourceMappingURL=BKJAvatar.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BKJAvatar.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BKJAvatar.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKpD,wBAyCE;AAQF,eAAO,MAAM,OAAO,2GAKlB,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CAOnD,CAAC;AASF,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,eAAe,CAI/C,CAAC;AASF,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,eAAe,CAItD,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { BKJAvatar } from './BKJAvatar.js';
|
|
3
3
|
import { BKJThemeProvider } from '../../providers/BKJThemeProvider/index.js';
|
|
4
|
+
const SAMPLE_AVATAR_SRC = 'https://s3.amazonaws.com/bjk2-0/sandbox/user/avatar/15605/small_8153694F-2098-49BE-A135-4C2B9EBA3DFA.jpg';
|
|
4
5
|
export default {
|
|
5
6
|
title: 'Basic Elements/BKJAvatar',
|
|
6
7
|
component: BKJAvatar,
|
|
@@ -11,6 +12,12 @@ export default {
|
|
|
11
12
|
type: 'text',
|
|
12
13
|
},
|
|
13
14
|
},
|
|
15
|
+
alt: {
|
|
16
|
+
name: 'Alt Text',
|
|
17
|
+
control: {
|
|
18
|
+
type: 'text',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
14
21
|
width: {
|
|
15
22
|
name: 'Width',
|
|
16
23
|
control: {
|
|
@@ -39,9 +46,34 @@ export default {
|
|
|
39
46
|
};
|
|
40
47
|
const Template = ({ ...rest }) => (_jsx(BKJThemeProvider, { children: _jsx(BKJAvatar, { ...rest }) }));
|
|
41
48
|
export const Default = Template.bind({
|
|
42
|
-
src:
|
|
49
|
+
src: SAMPLE_AVATAR_SRC,
|
|
43
50
|
width: '20px',
|
|
44
51
|
height: '20px',
|
|
45
52
|
fallbackAvatarColor: 'Grey3',
|
|
46
53
|
});
|
|
54
|
+
export const AdjacentToName = (args) => (_jsx(BKJThemeProvider, { children: _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8 }, children: [_jsx(BKJAvatar, { ...args }), _jsx("span", { children: "Jane Smith" })] }) }));
|
|
55
|
+
AdjacentToName.args = {
|
|
56
|
+
src: SAMPLE_AVATAR_SRC,
|
|
57
|
+
alt: '',
|
|
58
|
+
width: '40px',
|
|
59
|
+
height: '40px',
|
|
60
|
+
fallbackAvatarColor: 'Grey3',
|
|
61
|
+
};
|
|
62
|
+
export const Standalone = (args) => (_jsx(BKJThemeProvider, { children: _jsx(BKJAvatar, { ...args }) }));
|
|
63
|
+
Standalone.args = {
|
|
64
|
+
src: SAMPLE_AVATAR_SRC,
|
|
65
|
+
alt: 'Jane Smith',
|
|
66
|
+
width: '40px',
|
|
67
|
+
height: '40px',
|
|
68
|
+
fallbackAvatarColor: 'Grey3',
|
|
69
|
+
};
|
|
70
|
+
export const WithPendingSignUp = (args) => (_jsx(BKJThemeProvider, { children: _jsx(BKJAvatar, { ...args }) }));
|
|
71
|
+
WithPendingSignUp.args = {
|
|
72
|
+
src: SAMPLE_AVATAR_SRC,
|
|
73
|
+
alt: 'Jane Smith (pending signup)',
|
|
74
|
+
width: '40px',
|
|
75
|
+
height: '40px',
|
|
76
|
+
fallbackAvatarColor: 'Grey3',
|
|
77
|
+
showPendingSignUp: true,
|
|
78
|
+
};
|
|
47
79
|
//# sourceMappingURL=BKJAvatar.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BKJAvatar.stories.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,eAAe;IACb,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE;QACR,GAAG,EAAE;YACH,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;aACd;SACF;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;aAChB;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAA6B,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAC1D,KAAC,gBAAgB,cACf,KAAC,SAAS,OAAK,IAAI,GAAI,GACN,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IACnC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"BKJAvatar.stories.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,MAAM,iBAAiB,GACrB,0GAA0G,CAAC;AAE7G,eAAe;IACb,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE;QACR,GAAG,EAAE;YACH,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,GAAG,EAAE;YACH,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;aACb;SACF;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;aACd;SACF;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;aAChB;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAA6B,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAC1D,KAAC,gBAAgB,cACf,KAAC,SAAS,OAAK,IAAI,GAAI,GACN,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IACnC,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,CAChE,KAAC,gBAAgB,cACf,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aAC3D,KAAC,SAAS,OAAK,IAAI,GAAI,EACvB,wCAAuB,IACnB,GACW,CACpB,CAAC;AACF,cAAc,CAAC,IAAI,GAAG;IACpB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,CAC5D,KAAC,gBAAgB,cACf,KAAC,SAAS,OAAK,IAAI,GAAI,GACN,CACpB,CAAC;AACF,UAAU,CAAC,IAAI,GAAG;IAChB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,CACnE,KAAC,gBAAgB,cACf,KAAC,SAAS,OAAK,IAAI,GAAI,GACN,CACpB,CAAC;AACF,iBAAiB,CAAC,IAAI,GAAG;IACvB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,6BAA6B;IAClC,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,IAAI;CACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BKJAvatar.test.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { renderAndCheckA11y, renderWithTheme } from '../../test-utils/index.js';
|
|
3
|
+
import { BKJAvatar } from './BKJAvatar.js';
|
|
4
|
+
describe('BKJAvatar', () => {
|
|
5
|
+
describe('Accessibility (FR-008)', () => {
|
|
6
|
+
it('decorative default — no alt prop, axe-clean', async () => {
|
|
7
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJAvatar, { src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
|
|
8
|
+
expect(axeResults).toHaveNoViolations();
|
|
9
|
+
});
|
|
10
|
+
it('informative — alt="Jane Smith", axe-clean', async () => {
|
|
11
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJAvatar, { alt: "Jane Smith", src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
|
|
12
|
+
expect(axeResults).toHaveNoViolations();
|
|
13
|
+
});
|
|
14
|
+
it('fallback path — no src triggers BKJIcon fallback rendering, axe-clean', async () => {
|
|
15
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJAvatar, { width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
|
|
16
|
+
expect(axeResults).toHaveNoViolations();
|
|
17
|
+
});
|
|
18
|
+
it('showPendingSignUp={true} — indicator overlay, axe-clean', async () => {
|
|
19
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJAvatar, { src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3", showPendingSignUp: true }));
|
|
20
|
+
expect(axeResults).toHaveNoViolations();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('Behavioural contracts (FR-009)', () => {
|
|
24
|
+
// DOM-selector exception (Constitution §VII): aria-hidden / empty-alt elements are
|
|
25
|
+
// AT-tree-invisible by definition and have no Testing Library role query. Same
|
|
26
|
+
// exception applied in WEB-4841 BKJIcon's tests.
|
|
27
|
+
it('(a) <img> carries alt="" when no alt prop is passed', () => {
|
|
28
|
+
const { container } = renderWithTheme(_jsx(BKJAvatar, { src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
|
|
29
|
+
const img = container.querySelector('img');
|
|
30
|
+
expect(img).not.toBeNull();
|
|
31
|
+
expect(img.getAttribute('alt')).toBe('');
|
|
32
|
+
});
|
|
33
|
+
it('(b) <img> carries consumer-supplied string when alt="Jane Smith" passed', () => {
|
|
34
|
+
const { container } = renderWithTheme(_jsx(BKJAvatar, { alt: "Jane Smith", src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
|
|
35
|
+
const img = container.querySelector('img');
|
|
36
|
+
expect(img).not.toBeNull();
|
|
37
|
+
expect(img.getAttribute('alt')).toBe('Jane Smith');
|
|
38
|
+
});
|
|
39
|
+
it('(c) fallback BKJIcon renders with aria-hidden="true" (verifies WEB-4841 inheritance)', () => {
|
|
40
|
+
const { container } = renderWithTheme(_jsx(BKJAvatar, { width: "40px", height: "40px", fallbackAvatarColor: "Grey3" }));
|
|
41
|
+
const svg = container.querySelector('svg');
|
|
42
|
+
expect(svg).not.toBeNull();
|
|
43
|
+
expect(svg.getAttribute('aria-hidden')).toBe('true');
|
|
44
|
+
});
|
|
45
|
+
it('(d) PendingSignup indicator renders with aria-hidden="true" when showPendingSignUp=true', () => {
|
|
46
|
+
const { container } = renderWithTheme(_jsx(BKJAvatar, { src: "https://example.com/jane.jpg", width: "40px", height: "40px", fallbackAvatarColor: "Grey3", showPendingSignUp: true }));
|
|
47
|
+
const svgs = container.querySelectorAll('svg');
|
|
48
|
+
// Indicator is rendered after the BKJImage subtree; last SVG in the tree.
|
|
49
|
+
const indicator = svgs[svgs.length - 1];
|
|
50
|
+
expect(indicator).not.toBeUndefined();
|
|
51
|
+
expect(indicator.getAttribute('aria-hidden')).toBe('true');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=BKJAvatar.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BKJAvatar.test.js","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BKJAvatar.types.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,iBAAiB,CAAC;CACxC"}
|
|
1
|
+
{"version":3,"file":"BKJAvatar.types.d.ts","sourceRoot":"","sources":["../../../src/components/BKJAvatar/BKJAvatar.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,iBAAiB,CAAC;CACxC"}
|
|
@@ -19,4 +19,9 @@ declare const _default: {
|
|
|
19
19
|
};
|
|
20
20
|
export default _default;
|
|
21
21
|
export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
|
|
22
|
+
export declare const Decorative: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
|
|
23
|
+
export declare const WithRemoveButton: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
|
|
24
|
+
export declare const DisabledRemoveButton: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
|
|
25
|
+
export declare const RedVariant: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
|
|
26
|
+
export declare const LegacyDisabledSuppression: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJChipProps>;
|
|
22
27
|
//# sourceMappingURL=BKJChip.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BKJChip.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;AAEhD,wBAiBE;AAQF,eAAO,MAAM,OAAO,yGAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"BKJChip.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;AAEhD,wBAiBE;AAQF,eAAO,MAAM,OAAO,yGAAoB,CAAC;AAKzC,eAAO,MAAM,UAAU,yGAAoB,CAAC;AAK5C,eAAO,MAAM,gBAAgB,yGAAoB,CAAC;AAOlD,eAAO,MAAM,oBAAoB,yGAAoB,CAAC;AActD,eAAO,MAAM,UAAU,yGAAuB,CAAC;AAK/C,eAAO,MAAM,yBAAyB,yGAAoB,CAAC"}
|
|
@@ -24,4 +24,41 @@ export const Default = Template.bind({});
|
|
|
24
24
|
Default.args = {
|
|
25
25
|
variant: 'Purple',
|
|
26
26
|
};
|
|
27
|
+
export const Decorative = Template.bind({});
|
|
28
|
+
Decorative.args = {
|
|
29
|
+
variant: 'Purple',
|
|
30
|
+
};
|
|
31
|
+
export const WithRemoveButton = Template.bind({});
|
|
32
|
+
WithRemoveButton.args = {
|
|
33
|
+
variant: 'Purple',
|
|
34
|
+
onClose: () => undefined,
|
|
35
|
+
closeAriaLabel: 'Remove Filter Pill',
|
|
36
|
+
};
|
|
37
|
+
export const DisabledRemoveButton = Template.bind({});
|
|
38
|
+
DisabledRemoveButton.args = {
|
|
39
|
+
variant: 'Purple',
|
|
40
|
+
onClose: () => undefined,
|
|
41
|
+
closeAriaLabel: 'Remove Filter Pill',
|
|
42
|
+
closeButtonDisabled: true,
|
|
43
|
+
};
|
|
44
|
+
const RedTemplate = ({ ...props }) => (_jsx(BKJThemeProvider, { children: _jsx(BKJChip, { ...props, children: "Active" }) }));
|
|
45
|
+
export const RedVariant = RedTemplate.bind({});
|
|
46
|
+
RedVariant.args = {
|
|
47
|
+
variant: 'Red',
|
|
48
|
+
};
|
|
49
|
+
export const LegacyDisabledSuppression = Template.bind({});
|
|
50
|
+
LegacyDisabledSuppression.args = {
|
|
51
|
+
variant: 'Purple',
|
|
52
|
+
onClose: () => undefined,
|
|
53
|
+
};
|
|
54
|
+
LegacyDisabledSuppression.parameters = {
|
|
55
|
+
docs: {
|
|
56
|
+
description: {
|
|
57
|
+
story: 'Demonstrates the legacy `<div onMouseDown>` close-icon rendering retained for the WEB-4818 disabled-pill-dropdown tab-stop-suppression mechanism. ' +
|
|
58
|
+
'`BKJPillDropdown` deliberately omits `closeAriaLabel` when `disabled={true}` so chip remove buttons are removed from the tab order while their visual close-icon affordance is preserved. ' +
|
|
59
|
+
'**Standalone consumers (outside the BKJPill* family) MUST supply `closeAriaLabel` whenever `onClose` is provided** so the focusable, keyboard-accessible `<button>` rendering is used. ' +
|
|
60
|
+
'See [WEB-4818](https://bookjane.atlassian.net/browse/WEB-4818) for the rationale; see [WEB-4844](https://bookjane.atlassian.net/browse/WEB-4844) for the audit ticket that locks in this dual-path contract.',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
};
|
|
27
64
|
//# sourceMappingURL=BKJChip.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BKJChip.stories.js","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAe;IACb,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;aACf;YACD,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;SAC1B;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI;aACd;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAA2B,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CACzD,KAAC,gBAAgB,cACf,KAAC,OAAO,OAAK,KAAK,4BAAuB,GACxB,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,IAAI,GAAG;IACb,OAAO,EAAE,QAAQ;CAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"BKJChip.stories.js","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAe;IACb,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;aACf;YACD,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;SAC1B;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI;aACd;SACF;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAA2B,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CACzD,KAAC,gBAAgB,cACf,KAAC,OAAO,OAAK,KAAK,4BAAuB,GACxB,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,IAAI,GAAG;IACb,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IAChB,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClD,gBAAgB,CAAC,IAAI,GAAG;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;IACxB,cAAc,EAAE,oBAAoB;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtD,oBAAoB,CAAC,IAAI,GAAG;IAC1B,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;IACxB,cAAc,EAAE,oBAAoB;IACpC,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAEF,MAAM,WAAW,GAA2B,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CAC5D,KAAC,gBAAgB,cACf,KAAC,OAAO,OAAK,KAAK,uBAAkB,GACnB,CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/C,UAAU,CAAC,IAAI,GAAG;IAChB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3D,yBAAyB,CAAC,IAAI,GAAG;IAC/B,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;CACzB,CAAC;AACF,yBAAyB,CAAC,UAAU,GAAG;IACrC,IAAI,EAAE;QACJ,WAAW,EAAE;YACX,KAAK,EACH,oJAAoJ;gBACpJ,4LAA4L;gBAC5L,yLAAyL;gBACzL,8MAA8M;SACjN;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BKJChip.test.d.ts","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
3
|
+
import { computeAccessibleName } from 'dom-accessibility-api';
|
|
4
|
+
import { renderAndCheckA11y, renderWithTheme } from '../../test-utils/index.js';
|
|
5
|
+
import { BKJChip } from './BKJChip.js';
|
|
6
|
+
describe('BKJChip — jest-axe states (FR-007)', () => {
|
|
7
|
+
it('a) decorative — no onClose, axe-clean', async () => {
|
|
8
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Purple", children: "Filter Pill" }));
|
|
9
|
+
expect(axeResults).toHaveNoViolations();
|
|
10
|
+
});
|
|
11
|
+
it('b) with-remove-button — onClose + closeAriaLabel, axe-clean', async () => {
|
|
12
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove Filter Pill", children: "Filter Pill" }));
|
|
13
|
+
expect(axeResults).toHaveNoViolations();
|
|
14
|
+
});
|
|
15
|
+
it('c) disabled-remove-button — closeButtonDisabled, axe-clean', async () => {
|
|
16
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove Filter Pill", closeButtonDisabled: true, children: "Filter Pill" }));
|
|
17
|
+
expect(axeResults).toHaveNoViolations();
|
|
18
|
+
});
|
|
19
|
+
it('d) red-variant — Red variant, axe-clean', async () => {
|
|
20
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Red", children: "Active" }));
|
|
21
|
+
expect(axeResults).toHaveNoViolations();
|
|
22
|
+
});
|
|
23
|
+
it('e) WEB-4818 legacy-path — onClose without closeAriaLabel, axe-clean', async () => {
|
|
24
|
+
const { axeResults } = await renderAndCheckA11y(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), children: "Filter Pill" }));
|
|
25
|
+
expect(axeResults).toHaveNoViolations();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('BKJChip — behavioural contracts (FR-008)', () => {
|
|
29
|
+
it('a) decorative chips render zero <button> elements and contribute zero tab stops', async () => {
|
|
30
|
+
const user = userEvent.setup();
|
|
31
|
+
const { container, getByRole } = renderWithTheme(_jsxs(_Fragment, { children: [_jsx("button", { children: "before" }), _jsx(BKJChip, { variant: "Purple", children: "Filter Pill" }), _jsx("button", { children: "after" })] }));
|
|
32
|
+
expect(container.querySelectorAll('button')).toHaveLength(2);
|
|
33
|
+
const beforeBtn = getByRole('button', { name: 'before' });
|
|
34
|
+
const afterBtn = getByRole('button', { name: 'after' });
|
|
35
|
+
beforeBtn.focus();
|
|
36
|
+
await user.tab();
|
|
37
|
+
expect(document.activeElement).toBe(afterBtn);
|
|
38
|
+
});
|
|
39
|
+
it('b) <button type="button"> with aria-label when closeAriaLabel is supplied', () => {
|
|
40
|
+
const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove Filter Pill", children: "Filter Pill" }));
|
|
41
|
+
const btn = container.querySelector('button[type="button"]');
|
|
42
|
+
expect(btn).not.toBeNull();
|
|
43
|
+
expect(btn).toHaveAttribute('aria-label', 'Remove Filter Pill');
|
|
44
|
+
expect(computeAccessibleName(btn)).toBe('Remove Filter Pill');
|
|
45
|
+
});
|
|
46
|
+
it('c) closeButtonDisabled sets button.disabled === true and Tab skips it', async () => {
|
|
47
|
+
const user = userEvent.setup();
|
|
48
|
+
const { container, getByRole } = renderWithTheme(_jsxs(_Fragment, { children: [_jsx("button", { children: "before" }), _jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove Filter Pill", closeButtonDisabled: true, children: "Filter Pill" }), _jsx("button", { children: "after" })] }));
|
|
49
|
+
const chipBtn = container.querySelector('button[type="button"]');
|
|
50
|
+
expect(chipBtn).not.toBeNull();
|
|
51
|
+
expect(chipBtn.disabled).toBe(true);
|
|
52
|
+
const beforeBtn = getByRole('button', { name: 'before' });
|
|
53
|
+
const afterBtn = getByRole('button', { name: 'after' });
|
|
54
|
+
beforeBtn.focus();
|
|
55
|
+
await user.tab();
|
|
56
|
+
expect(document.activeElement).toBe(afterBtn);
|
|
57
|
+
});
|
|
58
|
+
it('d) Enter and Space fire onClose on a focused enabled close button', async () => {
|
|
59
|
+
const user = userEvent.setup();
|
|
60
|
+
const onClose = jest.fn();
|
|
61
|
+
renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: onClose, closeAriaLabel: "Remove Filter Pill", children: "Filter Pill" }));
|
|
62
|
+
await user.tab();
|
|
63
|
+
expect(document.activeElement?.tagName).toBe('BUTTON');
|
|
64
|
+
await user.keyboard('{Enter}');
|
|
65
|
+
expect(onClose).toHaveBeenCalledTimes(1);
|
|
66
|
+
await user.keyboard(' ');
|
|
67
|
+
expect(onClose).toHaveBeenCalledTimes(2);
|
|
68
|
+
});
|
|
69
|
+
it('d) Enter and Space do NOT fire onClose on a disabled close button', async () => {
|
|
70
|
+
const user = userEvent.setup();
|
|
71
|
+
const onClose = jest.fn();
|
|
72
|
+
const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: onClose, closeAriaLabel: "Remove Filter Pill", closeButtonDisabled: true, children: "Filter Pill" }));
|
|
73
|
+
const btn = container.querySelector('button[type="button"]');
|
|
74
|
+
btn.focus();
|
|
75
|
+
await user.keyboard('{Enter}');
|
|
76
|
+
await user.keyboard(' ');
|
|
77
|
+
expect(onClose).toHaveBeenCalledTimes(0);
|
|
78
|
+
});
|
|
79
|
+
it('e) WEB-4818 legacy-path: onClose without closeAriaLabel renders <div>, no <button>', () => {
|
|
80
|
+
const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), children: "Filter Pill" }));
|
|
81
|
+
expect(container.querySelector('button')).toBeNull();
|
|
82
|
+
});
|
|
83
|
+
it('f) inner CloseBold svg is aria-hidden on focusable-path branch', () => {
|
|
84
|
+
const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), closeAriaLabel: "Remove", children: "Filter Pill" }));
|
|
85
|
+
const svg = container.querySelector('svg');
|
|
86
|
+
expect(svg).not.toBeNull();
|
|
87
|
+
expect(svg.getAttribute('aria-hidden')).toBe('true');
|
|
88
|
+
});
|
|
89
|
+
it('f) inner CloseBold svg is aria-hidden on legacy-path branch (WEB-4841 inheritance)', () => {
|
|
90
|
+
const { container } = renderWithTheme(_jsx(BKJChip, { variant: "Purple", onClose: jest.fn(), children: "Filter Pill" }));
|
|
91
|
+
const svg = container.querySelector('svg');
|
|
92
|
+
expect(svg).not.toBeNull();
|
|
93
|
+
expect(svg.getAttribute('aria-hidden')).toBe('true');
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=BKJChip.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BKJChip.test.js","sourceRoot":"","sources":["../../../src/components/BKJChip/BKJChip.test.tsx"],"names":[],"mappings":"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"}
|