@bookjane2/bookjane-design-library 9.0.32 → 9.0.34

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.
Files changed (30) hide show
  1. package/lib/components/BKJDropdownMenu/BKJDropdownMenu.d.ts.map +1 -1
  2. package/lib/components/BKJDropdownMenu/BKJDropdownMenu.js +1 -1
  3. package/lib/components/BKJDropdownMenu/BKJDropdownMenu.js.map +1 -1
  4. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.d.ts.map +1 -1
  5. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.js +5 -4
  6. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.js.map +1 -1
  7. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.stories.d.ts +2 -0
  8. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.stories.d.ts.map +1 -1
  9. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.stories.js +30 -0
  10. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.stories.js.map +1 -1
  11. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.styled.d.ts +1 -1
  12. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.styled.d.ts.map +1 -1
  13. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.styled.js +6 -1
  14. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.styled.js.map +1 -1
  15. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.test.d.ts +2 -0
  16. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.test.d.ts.map +1 -0
  17. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.test.js +126 -0
  18. package/lib/components/BKJEllipsisMenu/BKJEllipsisMenu.test.js.map +1 -0
  19. package/lib/components/BKJMenu/BKJMenu.js +1 -1
  20. package/lib/components/BKJMenu/BKJMenu.js.map +1 -1
  21. package/lib/components/BKJMenuItem/BKJMenuItem.d.ts.map +1 -1
  22. package/lib/components/BKJMenuItem/BKJMenuItem.js +20 -2
  23. package/lib/components/BKJMenuItem/BKJMenuItem.js.map +1 -1
  24. package/lib/components/BKJMenuItem/BKJMenuItem.stories.js +2 -2
  25. package/lib/components/BKJMenuItem/BKJMenuItem.stories.js.map +1 -1
  26. package/lib/components/BKJMenuItem/BKJMenuItem.test.d.ts +2 -0
  27. package/lib/components/BKJMenuItem/BKJMenuItem.test.d.ts.map +1 -0
  28. package/lib/components/BKJMenuItem/BKJMenuItem.test.js +155 -0
  29. package/lib/components/BKJMenuItem/BKJMenuItem.test.js.map +1 -0
  30. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BKJDropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/BKJDropdownMenu/BKJDropdownMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAKvE,OAAO,EAAE,EAAE,EAA+D,MAAM,OAAO,CAAC;AAKxF,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,qBAAqB,CAuHrD,CAAC"}
1
+ {"version":3,"file":"BKJDropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/BKJDropdownMenu/BKJDropdownMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAKvE,OAAO,EAAE,EAAE,EAA+D,MAAM,OAAO,CAAC;AAKxF,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,qBAAqB,CAyHrD,CAAC"}
@@ -77,6 +77,6 @@ export const BKJDropdownMenu = ({ children, label, listRightLeftOffset = 0, ...b
77
77
  return (_jsxs(Fragment, { children: [_jsxs(BKJButton, { ...buttonProps, ref: mergeRefs([buttonRef, setButtonElement]), onMouseOver: () => setOpen(true), onClick: (e) => {
78
78
  buttonProps.onClick && buttonProps.onClick(e);
79
79
  setOpen(false);
80
- }, children: [_jsx("div", { children: label }), _jsx(BKJIcon, { color: "White", iconName: isOpen ? 'ArrowUp' : 'ArrowDown' })] }), isOpen && targetElement && (_jsx(Portal, { targetElement: targetElement, children: _jsx(BKJDropdownMenuWrapper, { ...popperProps, ref: mergeRefs([dropdownRef, setDropdownElement]), onClick: () => setOpen(false), children: children }) }))] }));
80
+ }, children: [_jsx("div", { children: label }), _jsx(BKJIcon, { color: "White", iconName: isOpen ? 'ArrowUp' : 'ArrowDown' })] }), isOpen && targetElement && (_jsx(Portal, { targetElement: targetElement, children: _jsx(BKJDropdownMenuWrapper, { role: "menu", "aria-label": "Menu", ...popperProps, ref: mergeRefs([dropdownRef, setDropdownElement]), onClick: () => setOpen(false), children: children }) }))] }));
81
81
  };
82
82
  //# sourceMappingURL=BKJDropdownMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJDropdownMenu.js","sourceRoot":"","sources":["../../../src/components/BKJDropdownMenu/BKJDropdownMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BKJDropdownMenu.js","sourceRoot":"","sources":["../../../src/components/BKJDropdownMenu/BKJDropdownMenu.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BKJEllipsisMenu.d.ts","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;AAQ7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAyBhE,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,qBAAqB,CASrD,CAAC"}
1
+ {"version":3,"file":"BKJEllipsisMenu.d.ts","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;AAQ7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAoChE,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,qBAAqB,CAcrD,CAAC"}
@@ -5,12 +5,13 @@ import { Flex } from '../Flex/index.js';
5
5
  import { BKJEllipsisMenuUIStateProvider, useBKJEllipsisMenuUIStateContext, } from './BKJEllipsisMenu.context.js';
6
6
  import { BKJEllipsisMenuIconWrapper } from './BKJEllipsisMenu.styled.js';
7
7
  import { BKJEllipsisMenuDropdown } from './BKJEllipsisMenuDropdown.js';
8
- const Component = ({ triggerRef, children }) => {
8
+ const Component = ({ triggerRef, ariaLabel, consumerProps, children }) => {
9
9
  const { toggleMenu, isOpen } = useBKJEllipsisMenuUIStateContext();
10
- return (_jsxs(Fragment, { children: [_jsx(BKJEllipsisMenuIconWrapper, { onClick: toggleMenu, children: _jsx(Flex, { ref: triggerRef, height: "38px", minHeight: "38px", justifyContent: "center", alignItems: "center", children: _jsx(BKJIcon, { iconName: "Ellipsis" }) }) }), isOpen && triggerRef.current && (_jsx(BKJEllipsisMenuDropdown, { triggerRef: triggerRef, children: children }))] }));
10
+ return (_jsxs(Fragment, { children: [_jsx(BKJEllipsisMenuIconWrapper, { ref: triggerRef, ...consumerProps, type: "button", "aria-label": ariaLabel, "aria-haspopup": "menu", "aria-expanded": isOpen, onClick: toggleMenu, children: _jsx(Flex, { height: "38px", minHeight: "38px", justifyContent: "center", alignItems: "center", children: _jsx(BKJIcon, { iconName: "Ellipsis" }) }) }), isOpen && triggerRef.current && (_jsx(BKJEllipsisMenuDropdown, { triggerRef: triggerRef, children: children }))] }));
11
11
  };
12
- export const BKJEllipsisMenu = ({ children, ...props }) => {
12
+ export const BKJEllipsisMenu = ({ children, 'aria-label': ariaLabelProp, ...rest }) => {
13
13
  const triggerRef = useRef(null);
14
- return (_jsx(BKJEllipsisMenuUIStateProvider, { children: _jsx(Component, { ...props, triggerRef: triggerRef, children: children }) }));
14
+ const ariaLabel = ariaLabelProp === undefined ? 'More options' : ariaLabelProp;
15
+ return (_jsx(BKJEllipsisMenuUIStateProvider, { children: _jsx(Component, { triggerRef: triggerRef, ariaLabel: ariaLabel, consumerProps: rest, children: children }) }));
15
16
  };
16
17
  //# sourceMappingURL=BKJEllipsisMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJEllipsisMenu.js","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,SAAS,GAA6B,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,gCAAgC,EAAE,CAAC;IAClE,OAAO,CACL,MAAC,QAAQ,eACP,KAAC,0BAA0B,IAAC,OAAO,EAAE,UAAU,YAC7C,KAAC,IAAI,IACH,GAAG,EAAE,UAAiB,EACtB,MAAM,EAAC,MAAM,EACb,SAAS,EAAC,MAAM,EAChB,cAAc,EAAC,QAAQ,EACvB,UAAU,EAAC,QAAQ,YAEnB,KAAC,OAAO,IAAC,QAAQ,EAAC,UAAU,GAAG,GAC1B,GACoB,EAC5B,MAAM,IAAI,UAAU,CAAC,OAAO,IAAI,CAC/B,KAAC,uBAAuB,IAAC,UAAU,EAAE,UAAU,YAAG,QAAQ,GAA2B,CACtF,IACQ,CACZ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA8B,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACnF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CACL,KAAC,8BAA8B,cAC7B,KAAC,SAAS,OAAK,KAAK,EAAE,UAAU,EAAE,UAAU,YACzC,QAAQ,GACC,GACmB,CAClC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"BKJEllipsisMenu.js","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,SAAS,GAIV,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1D,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,gCAAgC,EAAE,CAAC;IAClE,OAAO,CACL,MAAC,QAAQ,eACP,KAAC,0BAA0B,IACzB,GAAG,EAAE,UAAiB,KAClB,aAAa,EACjB,IAAI,EAAC,QAAQ,gBACD,SAAS,mBACP,MAAM,mBACL,MAAM,EACrB,OAAO,EAAE,UAAU,YAEnB,KAAC,IAAI,IACH,MAAM,EAAC,MAAM,EACb,SAAS,EAAC,MAAM,EAChB,cAAc,EAAC,QAAQ,EACvB,UAAU,EAAC,QAAQ,YAEnB,KAAC,OAAO,IAAC,QAAQ,EAAC,UAAU,GAAG,GAC1B,GACoB,EAC5B,MAAM,IAAI,UAAU,CAAC,OAAO,IAAI,CAC/B,KAAC,uBAAuB,IAAC,UAAU,EAAE,UAAU,YAAG,QAAQ,GAA2B,CACtF,IACQ,CACZ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA8B,CAAC,EACzD,QAAQ,EACR,YAAY,EAAE,aAAa,EAC3B,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;IAC/E,OAAO,CACL,KAAC,8BAA8B,cAC7B,KAAC,SAAS,IAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,YACzE,QAAQ,GACC,GACmB,CAClC,CAAC;AACJ,CAAC,CAAC"}
@@ -6,4 +6,6 @@ declare const _default: {
6
6
  };
7
7
  export default _default;
8
8
  export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJEllipsisMenuProps>;
9
+ export declare const WithCustomLabel: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJEllipsisMenuProps>;
10
+ export declare const OpenedByDefault: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, IBKJEllipsisMenuProps>;
9
11
  //# sourceMappingURL=BKJEllipsisMenu.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJEllipsisMenu.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;;;;;;AAEhE,wBAIE;AAaF,eAAO,MAAM,OAAO,iHAA2B,CAAC"}
1
+ {"version":3,"file":"BKJEllipsisMenu.stories.d.ts","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.stories.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;;;;;;AAEhE,wBAIE;AAaF,eAAO,MAAM,OAAO,iHAA2B,CAAC;AAehD,eAAO,MAAM,eAAe,iHAA0C,CAAC;AAsBvE,eAAO,MAAM,eAAe,iHAA0C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { userEvent, within } from '@storybook/test';
2
3
  import { BKJMenuItem } from '../BKJMenuItem/index.js';
3
4
  import { Flex } from '../Flex/index.js';
4
5
  import { BKJEllipsisMenu } from './BKJEllipsisMenu.js';
@@ -12,4 +13,33 @@ const BKJMenuTemplate = () => {
12
13
  };
13
14
  export const Default = BKJMenuTemplate.bind({});
14
15
  Default.args = {};
16
+ const BKJMenuTemplateWithCustomLabel = () => {
17
+ return (_jsx(Flex, { flexDirection: "row-reverse", width: "100%", children: _jsxs(BKJEllipsisMenu, { "aria-label": "Row actions for shift 12345", children: [_jsx(BKJMenuItem, { children: "Export CSV" }), _jsx(BKJMenuItem, { children: "Export XLSX" })] }) }));
18
+ };
19
+ export const WithCustomLabel = BKJMenuTemplateWithCustomLabel.bind({});
20
+ WithCustomLabel.args = {};
21
+ WithCustomLabel.parameters = {
22
+ docs: {
23
+ description: {
24
+ story: 'Renders BKJEllipsisMenu with a consumer-supplied `aria-label`. The default `"More options"` is overridden by the prop value. Use this pattern when the row context (e.g., "Row actions for shift 12345") gives screen-reader users more useful information than a generic label.',
25
+ },
26
+ },
27
+ };
28
+ const BKJMenuTemplateOpenedByDefault = () => {
29
+ return (_jsx(Flex, { flexDirection: "row-reverse", width: "100%", children: _jsxs(BKJEllipsisMenu, { children: [_jsx(BKJMenuItem, { children: "Export CSV" }), _jsx(BKJMenuItem, { children: "Export XLSX" })] }) }));
30
+ };
31
+ export const OpenedByDefault = BKJMenuTemplateOpenedByDefault.bind({});
32
+ OpenedByDefault.args = {};
33
+ OpenedByDefault.play = async ({ canvasElement }) => {
34
+ const canvas = within(canvasElement);
35
+ const trigger = await canvas.findByRole('button', { name: 'More options' });
36
+ await userEvent.click(trigger);
37
+ };
38
+ OpenedByDefault.parameters = {
39
+ docs: {
40
+ description: {
41
+ story: 'Renders BKJEllipsisMenu in the open state via a play function. Use this story to verify the Storybook a11y addon reports zero violations with the menu-popup mounted via Portal. The trigger has `aria-expanded="true"` after the play function fires.',
42
+ },
43
+ },
44
+ };
15
45
  //# sourceMappingURL=BKJEllipsisMenu.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJEllipsisMenu.stories.js","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAe;IACb,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,eAAe,GAAmC,GAAG,EAAE;IAC3D,OAAO,CACL,KAAC,IAAI,IAAC,aAAa,EAAC,aAAa,EAAC,KAAK,EAAC,MAAM,YAC5C,MAAC,eAAe,eACd,KAAC,WAAW,6BAAyB,EACrC,KAAC,WAAW,8BAA0B,IACtB,GACb,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEhD,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"BKJEllipsisMenu.stories.js","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,eAAe;IACb,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,eAAe,GAAmC,GAAG,EAAE;IAC3D,OAAO,CACL,KAAC,IAAI,IAAC,aAAa,EAAC,aAAa,EAAC,KAAK,EAAC,MAAM,YAC5C,MAAC,eAAe,eACd,KAAC,WAAW,6BAAyB,EACrC,KAAC,WAAW,8BAA0B,IACtB,GACb,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEhD,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;AAElB,MAAM,8BAA8B,GAAmC,GAAG,EAAE;IAC1E,OAAO,CACL,KAAC,IAAI,IAAC,aAAa,EAAC,aAAa,EAAC,KAAK,EAAC,MAAM,YAC5C,MAAC,eAAe,kBAAY,6BAA6B,aACvD,KAAC,WAAW,6BAAyB,EACrC,KAAC,WAAW,8BAA0B,IACtB,GACb,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;AAC1B,eAAe,CAAC,UAAU,GAAG;IAC3B,IAAI,EAAE;QACJ,WAAW,EAAE;YACX,KAAK,EACH,kRAAkR;SACrR;KACF;CACF,CAAC;AAEF,MAAM,8BAA8B,GAAmC,GAAG,EAAE;IAC1E,OAAO,CACL,KAAC,IAAI,IAAC,aAAa,EAAC,aAAa,EAAC,KAAK,EAAC,MAAM,YAC5C,MAAC,eAAe,eACd,KAAC,WAAW,6BAAyB,EACrC,KAAC,WAAW,8BAA0B,IACtB,GACb,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;AAC1B,eAAe,CAAC,IAAI,GAAG,KAAK,EAAE,EAAE,aAAa,EAAkC,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5E,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AACF,eAAe,CAAC,UAAU,GAAG;IAC3B,IAAI,EAAE;QACJ,WAAW,EAAE;YACX,KAAK,EACH,wPAAwP;SAC3P;KACF;CACF,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const BKJEllipsisMenuIconWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
1
+ export declare const BKJEllipsisMenuIconWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {
2
2
  ref?: any;
3
3
  }>> & string;
4
4
  //# sourceMappingURL=BKJEllipsisMenu.styled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJEllipsisMenu.styled.d.ts","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.styled.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B;UAAsB,GAAG;YAW/D,CAAC"}
1
+ {"version":3,"file":"BKJEllipsisMenu.styled.d.ts","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.styled.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B;UAAyB,GAAG;YAgBlE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import styled from 'styled-components';
2
- export const BKJEllipsisMenuIconWrapper = styled.div `
2
+ export const BKJEllipsisMenuIconWrapper = styled.button `
3
3
  min-height: 38px;
4
4
  height: 38px;
5
5
  width: 38px;
@@ -7,6 +7,11 @@ export const BKJEllipsisMenuIconWrapper = styled.div `
7
7
  display: flex;
8
8
  justify-content: center;
9
9
  align-items: center;
10
+ border: none;
11
+ background: none;
12
+ padding: 0;
13
+ font: inherit;
14
+ color: inherit;
10
15
  &:hover {
11
16
  cursor: pointer;
12
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BKJEllipsisMenu.styled.js","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.styled.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,CAAe;;;;;;;;;;;CAWlE,CAAC"}
1
+ {"version":3,"file":"BKJEllipsisMenu.styled.js","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.styled.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAe;;;;;;;;;;;;;;;;CAgBrE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BKJEllipsisMenu.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BKJEllipsisMenu.test.d.ts","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
4
+ import { axe } from 'jest-axe';
5
+ import { renderAndCheckA11y, renderWithTheme } from '../../test-utils/index.js';
6
+ import { BKJMenuItem } from '../BKJMenuItem/index.js';
7
+ import { BKJEllipsisMenu } from './BKJEllipsisMenu.js';
8
+ describe('BKJEllipsisMenu trigger structural contract (FR-001 / FR-002)', () => {
9
+ it('renders the trigger as a real <button> element with type="button"', () => {
10
+ renderWithTheme(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
11
+ const trigger = screen.getByRole('button', { name: 'More options' });
12
+ expect(trigger.tagName).toBe('BUTTON');
13
+ expect(trigger).toHaveAttribute('type', 'button');
14
+ });
15
+ });
16
+ describe('BKJEllipsisMenu trigger keyboard activation (FR-001 / FR-009 (vi)–(vii))', () => {
17
+ it('opens the menu when Enter is pressed on the focused trigger', async () => {
18
+ const user = userEvent.setup();
19
+ renderWithTheme(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
20
+ const trigger = screen.getByRole('button', { name: 'More options' });
21
+ trigger.focus();
22
+ expect(document.activeElement).toBe(trigger);
23
+ expect(trigger).toHaveAttribute('aria-expanded', 'false');
24
+ await user.keyboard('{Enter}');
25
+ expect(trigger).toHaveAttribute('aria-expanded', 'true');
26
+ });
27
+ it('opens the menu when Space is pressed on the focused trigger', async () => {
28
+ const user = userEvent.setup();
29
+ renderWithTheme(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
30
+ const trigger = screen.getByRole('button', { name: 'More options' });
31
+ trigger.focus();
32
+ expect(trigger).toHaveAttribute('aria-expanded', 'false');
33
+ await user.keyboard(' ');
34
+ expect(trigger).toHaveAttribute('aria-expanded', 'true');
35
+ });
36
+ it('is reachable via Tab from a sibling element', async () => {
37
+ const user = userEvent.setup();
38
+ renderWithTheme(_jsxs(_Fragment, { children: [_jsx("button", { "data-testid": "sibling", children: "Sibling" }), _jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) })] }));
39
+ const sibling = screen.getByTestId('sibling');
40
+ sibling.focus();
41
+ expect(document.activeElement).toBe(sibling);
42
+ await user.tab();
43
+ const trigger = screen.getByRole('button', { name: 'More options' });
44
+ expect(document.activeElement).toBe(trigger);
45
+ });
46
+ });
47
+ describe('BKJEllipsisMenu accessible-name resolution (FR-003 / FR-004)', () => {
48
+ it('applies aria-label="More options" by default when no prop is supplied', () => {
49
+ renderWithTheme(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
50
+ const trigger = screen.getByRole('button', { name: 'More options' });
51
+ expect(trigger).toHaveAttribute('aria-label', 'More options');
52
+ });
53
+ it('honours consumer-supplied aria-label override', () => {
54
+ renderWithTheme(_jsx(BKJEllipsisMenu, { "aria-label": "Row actions for shift 12345", children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
55
+ const trigger = screen.getByRole('button', { name: 'Row actions for shift 12345' });
56
+ expect(trigger).toHaveAttribute('aria-label', 'Row actions for shift 12345');
57
+ });
58
+ it('passes empty-string aria-label through verbatim (does not fall back to default)', () => {
59
+ const { container } = renderWithTheme(_jsx(BKJEllipsisMenu, { "aria-label": "", children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
60
+ const trigger = container.querySelector('button');
61
+ expect(trigger).not.toBeNull();
62
+ expect(trigger).toHaveAttribute('aria-label', '');
63
+ });
64
+ });
65
+ describe('BKJEllipsisMenu Ellipsis icon decorative inheritance (WEB-4841 / SC-011)', () => {
66
+ it('renders the inner <svg> with aria-hidden="true" (inherited from BKJIcon default)', () => {
67
+ const { container } = renderWithTheme(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
68
+ const svg = container.querySelector('button svg');
69
+ expect(svg).not.toBeNull();
70
+ expect(svg).toHaveAttribute('aria-hidden', 'true');
71
+ });
72
+ });
73
+ describe('BKJEllipsisMenu axe-clean accessible-name states (FR-009 axe sweep)', () => {
74
+ it('reports zero axe violations with the default aria-label and the menu closed', async () => {
75
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
76
+ expect(axeResults).toHaveNoViolations();
77
+ });
78
+ it('reports zero axe violations with a consumer-supplied aria-label and the menu closed', async () => {
79
+ const { axeResults } = await renderAndCheckA11y(_jsx(BKJEllipsisMenu, { "aria-label": "Row actions for shift 12345", children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
80
+ expect(axeResults).toHaveNoViolations();
81
+ });
82
+ });
83
+ describe('BKJEllipsisMenu trigger menu-popup state ARIA (FR-002 / Clarification Q4)', () => {
84
+ it('carries aria-haspopup="menu", aria-expanded="false", and NO aria-controls when closed', () => {
85
+ renderWithTheme(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
86
+ const trigger = screen.getByRole('button', { name: 'More options' });
87
+ expect(trigger).toHaveAttribute('aria-haspopup', 'menu');
88
+ expect(trigger).toHaveAttribute('aria-expanded', 'false');
89
+ expect(trigger).not.toHaveAttribute('aria-controls');
90
+ });
91
+ it('flips aria-expanded to "true" after the trigger is clicked, and STILL has no aria-controls', async () => {
92
+ const user = userEvent.setup();
93
+ renderWithTheme(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
94
+ const trigger = screen.getByRole('button', { name: 'More options' });
95
+ expect(trigger).toHaveAttribute('aria-expanded', 'false');
96
+ await user.click(trigger);
97
+ expect(trigger).toHaveAttribute('aria-haspopup', 'menu');
98
+ expect(trigger).toHaveAttribute('aria-expanded', 'true');
99
+ expect(trigger).not.toHaveAttribute('aria-controls');
100
+ });
101
+ it('reports zero axe violations with the menu open (default aria-label)', async () => {
102
+ const user = userEvent.setup();
103
+ const { container } = renderWithTheme(_jsx(BKJEllipsisMenu, { children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
104
+ const trigger = screen.getByRole('button', { name: 'More options' });
105
+ await user.click(trigger);
106
+ const axeResults = await axe(container);
107
+ expect(axeResults).toHaveNoViolations();
108
+ });
109
+ });
110
+ describe('BKJEllipsisMenu consumer override exclusion (FR-006)', () => {
111
+ it('silently overrides consumer-supplied type / aria-haspopup / aria-expanded / onClick', async () => {
112
+ const user = userEvent.setup();
113
+ const consumerOnClick = jest.fn();
114
+ const Adversarial = BKJEllipsisMenu;
115
+ renderWithTheme(_jsx(Adversarial, { type: "submit", "aria-haspopup": "dialog", "aria-expanded": true, onClick: consumerOnClick, "aria-label": "Custom", children: _jsx(BKJMenuItem, { children: "Export CSV" }) }));
116
+ const trigger = screen.getByRole('button', { name: 'Custom' });
117
+ expect(trigger).toHaveAttribute('type', 'button');
118
+ expect(trigger).toHaveAttribute('aria-haspopup', 'menu');
119
+ expect(trigger).toHaveAttribute('aria-expanded', 'false');
120
+ expect(trigger).toHaveAttribute('aria-label', 'Custom');
121
+ await user.click(trigger);
122
+ expect(consumerOnClick).not.toHaveBeenCalled();
123
+ expect(trigger).toHaveAttribute('aria-expanded', 'true');
124
+ });
125
+ });
126
+ //# sourceMappingURL=BKJEllipsisMenu.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BKJEllipsisMenu.test.js","sourceRoot":"","sources":["../../../src/components/BKJEllipsisMenu/BKJEllipsisMenu.test.tsx"],"names":[],"mappings":"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"}
@@ -15,6 +15,6 @@ export const BKJMenu = forwardRef(({ isMenuOpen, closeMenu, children, className,
15
15
  }
16
16
  return null;
17
17
  });
18
- return (_jsx(Fragment, { children: isMenuOpen && children && (_jsx(MenuWrapper, { ref: ref, className: className, ...props, children: buildChildren })) }));
18
+ return (_jsx(Fragment, { children: isMenuOpen && children && (_jsx(MenuWrapper, { role: "menu", "aria-label": "Menu", ref: ref, className: className, ...props, children: buildChildren })) }));
19
19
  });
20
20
  //# sourceMappingURL=BKJMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJMenu.js","sourceRoot":"","sources":["../../../src/components/BKJMenu/BKJMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAM,QAAQ,EAAa,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,CAAC,MAAM,OAAO,GAAsB,UAAU,CAClD,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAe,EAAE;IAC7E,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAgB,EAAE,EAAE;QACtE,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAwB;gBACjC,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC/C,SAAS,EAAE,CAAC;gBACd,CAAC;aACF,CAAC;YACF,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,QAAQ,cACN,UAAU,IAAI,QAAQ,IAAI,CACzB,KAAC,WAAW,IAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,KAAM,KAAK,YACnD,aAAa,GACF,CACf,GACQ,CACZ,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"BKJMenu.js","sourceRoot":"","sources":["../../../src/components/BKJMenu/BKJMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAM,QAAQ,EAAa,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,CAAC,MAAM,OAAO,GAAsB,UAAU,CAClD,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAe,EAAE;IAC7E,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAgB,EAAE,EAAE;QACtE,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAwB;gBACjC,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC/C,SAAS,EAAE,CAAC;gBACd,CAAC;aACF,CAAC;YACF,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,QAAQ,cACN,UAAU,IAAI,QAAQ,IAAI,CACzB,KAAC,WAAW,IAAC,IAAI,EAAC,MAAM,gBAAY,MAAM,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,KAAM,KAAK,YACjF,aAAa,GACF,CACf,GACQ,CACZ,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BKJMenuItem.d.ts","sourceRoot":"","sources":["../../../src/components/BKJMenuItem/BKJMenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CAqB7C,CAAC"}
1
+ {"version":3,"file":"BKJMenuItem.d.ts","sourceRoot":"","sources":["../../../src/components/BKJMenuItem/BKJMenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CAgD7C,CAAC"}
@@ -1,6 +1,24 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { MenuItemWrapper } from './BKJMenuItem.styled.js';
3
- export const BKJMenuItem = ({ onClick, disabled, width, borderRadius, children, justifyContent, padding, }) => {
4
- return (_jsx(MenuItemWrapper, { borderRadius: borderRadius, width: width, disabled: disabled, onClick: onClick, justifyContent: justifyContent, padding: padding, children: children }));
3
+ export const BKJMenuItem = ({ onClick, disabled, width, borderRadius, children, justifyContent, padding, role, tabIndex, onKeyDown, ...rest }) => {
4
+ const computedRole = role ?? 'menuitem';
5
+ const computedTabIndex = tabIndex ?? (disabled ? -1 : 0);
6
+ const handleKeyDown = (event) => {
7
+ onKeyDown?.(event);
8
+ if (event.defaultPrevented)
9
+ return;
10
+ if (disabled)
11
+ return;
12
+ if (event.key === 'Enter' || event.key === ' ') {
13
+ event.preventDefault();
14
+ onClick?.(event);
15
+ }
16
+ };
17
+ const handleClick = (event) => {
18
+ if (disabled)
19
+ return;
20
+ onClick?.(event);
21
+ };
22
+ return (_jsx(MenuItemWrapper, { role: computedRole, tabIndex: computedTabIndex, "aria-disabled": disabled ? true : undefined, borderRadius: borderRadius, width: width, disabled: disabled, onClick: handleClick, onKeyDown: handleKeyDown, justifyContent: justifyContent, padding: padding, ...rest, children: children }));
5
23
  };
6
24
  //# sourceMappingURL=BKJMenuItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJMenuItem.js","sourceRoot":"","sources":["../../../src/components/BKJMenuItem/BKJMenuItem.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,CAAC,MAAM,WAAW,GAA0B,CAAC,EACjD,OAAO,EACP,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,OAAO,GACR,EAAe,EAAE;IAChB,OAAO,CACL,KAAC,eAAe,IACd,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,YAEf,QAAQ,GACO,CACnB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"BKJMenuItem.js","sourceRoot":"","sources":["../../../src/components/BKJMenuItem/BKJMenuItem.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,CAAC,MAAM,WAAW,GAA0B,CAAC,EACjD,OAAO,EACP,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAe,EAAE;IAChB,MAAM,YAAY,GAAG,IAAI,IAAI,UAAU,CAAC;IACxC,MAAM,gBAAgB,GAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,CAAC,KAAoC,EAAQ,EAAE;QACnE,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO;QACnC,IAAI,QAAQ;YAAE,OAAO;QACrB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC,KAA8C,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAiC,EAAQ,EAAE;QAC9D,IAAI,QAAQ;YAAE,OAAO;QACrB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,eAAe,IACd,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,gBAAgB,mBACX,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC1C,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,KACZ,IAAI,YAEP,QAAQ,GACO,CACnB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { BKJMenuItem } from './BKJMenuItem.js';
3
3
  export default {
4
4
  title: 'Basic Elements/BKJMenuItem',
@@ -6,7 +6,7 @@ export default {
6
6
  };
7
7
  const onClickMenuItem = () => { };
8
8
  const BKJMenuItemTemplate = () => {
9
- return (_jsxs(_Fragment, { children: [_jsx(BKJMenuItem, { onClick: onClickMenuItem, children: "menu item length" }), _jsx(BKJMenuItem, { onClick: onClickMenuItem, children: "menu item length" }), _jsx(BKJMenuItem, { onClick: onClickMenuItem, children: "menu item length" }), _jsx(BKJMenuItem, { disabled: true, onClick: onClickMenuItem, children: "menu item length" })] }));
9
+ return (_jsxs("div", { role: "menu", "aria-label": "Demo menu", children: [_jsx(BKJMenuItem, { onClick: onClickMenuItem, children: "menu item length" }), _jsx(BKJMenuItem, { onClick: onClickMenuItem, children: "menu item length" }), _jsx(BKJMenuItem, { onClick: onClickMenuItem, children: "menu item length" }), _jsx(BKJMenuItem, { disabled: true, onClick: onClickMenuItem, children: "menu item length" })] }));
10
10
  };
11
11
  export const Default = BKJMenuItemTemplate.bind({});
12
12
  //# sourceMappingURL=BKJMenuItem.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BKJMenuItem.stories.js","sourceRoot":"","sources":["../../../src/components/BKJMenuItem/BKJMenuItem.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,eAAe;IACb,KAAK,EAAE,4BAA4B;IACnC,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,MAAM,eAAe,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAEjC,MAAM,mBAAmB,GAA+B,GAAG,EAAE;IAC3D,OAAO,CACL,8BACE,KAAC,WAAW,IAAC,OAAO,EAAE,eAAe,iCAAgC,EACrE,KAAC,WAAW,IAAC,OAAO,EAAE,eAAe,iCAAgC,EACrE,KAAC,WAAW,IAAC,OAAO,EAAE,eAAe,iCAAgC,EACrE,KAAC,WAAW,IAAC,QAAQ,QAAC,OAAO,EAAE,eAAe,iCAEhC,IACb,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"BKJMenuItem.stories.js","sourceRoot":"","sources":["../../../src/components/BKJMenuItem/BKJMenuItem.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,eAAe;IACb,KAAK,EAAE,4BAA4B;IACnC,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,MAAM,eAAe,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAEjC,MAAM,mBAAmB,GAA+B,GAAG,EAAE;IAC3D,OAAO,CACL,eAAK,IAAI,EAAC,MAAM,gBAAY,WAAW,aACrC,KAAC,WAAW,IAAC,OAAO,EAAE,eAAe,iCAAgC,EACrE,KAAC,WAAW,IAAC,OAAO,EAAE,eAAe,iCAAgC,EACrE,KAAC,WAAW,IAAC,OAAO,EAAE,eAAe,iCAAgC,EACrE,KAAC,WAAW,IAAC,QAAQ,QAAC,OAAO,EAAE,eAAe,iCAEhC,IACV,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BKJMenuItem.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BKJMenuItem.test.d.ts","sourceRoot":"","sources":["../../../src/components/BKJMenuItem/BKJMenuItem.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,155 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { fireEvent, screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
4
+ import { renderAndCheckA11y, renderWithTheme } from '../../test-utils/index.js';
5
+ import { BKJMenuItem } from './BKJMenuItem.js';
6
+ const renderInsideMenu = (children) => (_jsx("div", { role: "menu", "aria-label": "Test menu", children: children }));
7
+ describe('BKJMenuItem', () => {
8
+ describe('Accessibility (FR-007 jest-axe sweep)', () => {
9
+ it('(a) enabled + onClick + children is axe-clean', async () => {
10
+ const { axeResults } = await renderAndCheckA11y(renderInsideMenu(_jsx(BKJMenuItem, { onClick: () => { }, children: "Open" })));
11
+ expect(axeResults).toHaveNoViolations();
12
+ });
13
+ it('(b) disabled + children is axe-clean', async () => {
14
+ const { axeResults } = await renderAndCheckA11y(renderInsideMenu(_jsx(BKJMenuItem, { disabled: true, children: "Delete" })));
15
+ expect(axeResults).toHaveNoViolations();
16
+ });
17
+ it('(c) enabled without onClick is axe-clean', async () => {
18
+ const { axeResults } = await renderAndCheckA11y(renderInsideMenu(_jsx(BKJMenuItem, { children: "Read-only" })));
19
+ expect(axeResults).toHaveNoViolations();
20
+ });
21
+ it('(d) consumer tabIndex override is axe-clean', async () => {
22
+ const { axeResults } = await renderAndCheckA11y(renderInsideMenu(_jsx(BKJMenuItem, { tabIndex: -1, children: "Open" })));
23
+ expect(axeResults).toHaveNoViolations();
24
+ });
25
+ it('(e) consumer role override is axe-clean', async () => {
26
+ // role="menuitemcheckbox" requires aria-checked per ARIA spec; consumer is
27
+ // expected to supply it. Verifies that the consumer-override path doesn't
28
+ // surface BKJMenuItem-attributable axe violations on top of the consumer's
29
+ // own ARIA contract.
30
+ const { axeResults } = await renderAndCheckA11y(renderInsideMenu(_jsx(BKJMenuItem, { role: "menuitemcheckbox", "aria-checked": false, children: "Toggle" })));
31
+ expect(axeResults).toHaveNoViolations();
32
+ });
33
+ });
34
+ describe('Behavioural contracts (FR-008)', () => {
35
+ describe('Role and ARIA attributes (US1)', () => {
36
+ it('(a) enabled render → wrapper carries role="menuitem", tabIndex=0, no aria-disabled', () => {
37
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { children: "Open" })));
38
+ const item = screen.getByRole('menuitem', { name: 'Open' });
39
+ expect(item).toHaveAttribute('tabindex', '0');
40
+ expect(item).not.toHaveAttribute('aria-disabled');
41
+ });
42
+ it('(i-role) consumer-supplied role overrides default', () => {
43
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { role: "menuitemcheckbox", children: "Toggle" })));
44
+ const item = screen.getByRole('menuitemcheckbox', { name: 'Toggle' });
45
+ expect(item).toBeInTheDocument();
46
+ });
47
+ });
48
+ describe('Keyboard activation (US2)', () => {
49
+ it('(e) Enter on focused enabled wrapper calls onClick once', async () => {
50
+ const user = userEvent.setup();
51
+ const onClick = jest.fn();
52
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { onClick: onClick, children: "Open" })));
53
+ const item = screen.getByRole('menuitem', { name: 'Open' });
54
+ item.focus();
55
+ expect(item).toHaveFocus();
56
+ await user.keyboard('{Enter}');
57
+ expect(onClick).toHaveBeenCalledTimes(1);
58
+ });
59
+ it('(f) Space on focused enabled wrapper calls onClick once and calls preventDefault', async () => {
60
+ const user = userEvent.setup();
61
+ const onClick = jest.fn();
62
+ const onKeyDown = jest.fn();
63
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { onClick: onClick, onKeyDown: onKeyDown, children: "Open" })));
64
+ const item = screen.getByRole('menuitem', { name: 'Open' });
65
+ item.focus();
66
+ await user.keyboard(' ');
67
+ expect(onClick).toHaveBeenCalledTimes(1);
68
+ // React 17 SyntheticEvent persists post-chain; the consumer's onKeyDown
69
+ // received the same event object that the built-in handler later mutated
70
+ // via preventDefault. Reading defaultPrevented from mock.calls after the
71
+ // await observes the post-built-in state.
72
+ expect(onKeyDown).toHaveBeenCalledTimes(1);
73
+ expect(onKeyDown.mock.calls[0][0].defaultPrevented).toBe(true);
74
+ });
75
+ it('(j) consumer onKeyDown runs first and preventDefault short-circuits built-in activation', async () => {
76
+ const user = userEvent.setup();
77
+ const onClick = jest.fn();
78
+ const consumerKeyDown = (event) => {
79
+ if (event.key === 'Enter')
80
+ event.preventDefault();
81
+ };
82
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { onClick: onClick, onKeyDown: consumerKeyDown, children: "Open" })));
83
+ const item = screen.getByRole('menuitem', { name: 'Open' });
84
+ item.focus();
85
+ await user.keyboard('{Enter}');
86
+ expect(onClick).not.toHaveBeenCalled();
87
+ });
88
+ });
89
+ describe('Disabled state (US3)', () => {
90
+ it('(b) disabled render → wrapper carries role="menuitem", tabIndex=-1, aria-disabled="true"', () => {
91
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { disabled: true, children: "Delete" })));
92
+ const item = screen.getByRole('menuitem', { name: 'Delete' });
93
+ expect(item).toHaveAttribute('aria-disabled', 'true');
94
+ expect(item).toHaveAttribute('tabindex', '-1');
95
+ });
96
+ it('(g-Enter) Enter on focused disabled wrapper does NOT call onClick', async () => {
97
+ const user = userEvent.setup();
98
+ const onClick = jest.fn();
99
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { disabled: true, onClick: onClick, children: "Delete" })));
100
+ const item = screen.getByRole('menuitem', { name: 'Delete' });
101
+ item.focus();
102
+ await user.keyboard('{Enter}');
103
+ expect(onClick).not.toHaveBeenCalled();
104
+ });
105
+ it('(g-Space) Space on focused disabled wrapper does NOT call onClick', async () => {
106
+ const user = userEvent.setup();
107
+ const onClick = jest.fn();
108
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { disabled: true, onClick: onClick, children: "Delete" })));
109
+ const item = screen.getByRole('menuitem', { name: 'Delete' });
110
+ item.focus();
111
+ await user.keyboard(' ');
112
+ expect(onClick).not.toHaveBeenCalled();
113
+ });
114
+ it('(h) programmatic click on disabled wrapper does NOT call onClick (defence-in-depth per FR-005)', () => {
115
+ // userEvent v14 respects CSS pointer-events:none and refuses to fire the
116
+ // click (throws). The CSS already blocks real user clicks. This test
117
+ // verifies the JS-handler guard via fireEvent.click which bypasses CSS —
118
+ // covering the programmatic-click path that FR-005 was added to defend.
119
+ const onClick = jest.fn();
120
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { disabled: true, onClick: onClick, children: "Delete" })));
121
+ const item = screen.getByRole('menuitem', { name: 'Delete' });
122
+ fireEvent.click(item);
123
+ expect(onClick).not.toHaveBeenCalled();
124
+ });
125
+ });
126
+ describe('Focusability (US4)', () => {
127
+ it('(c) userEvent.tab() from document.body lands on enabled wrapper', async () => {
128
+ const user = userEvent.setup();
129
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { children: "Open" })));
130
+ await user.tab();
131
+ const item = screen.getByRole('menuitem', { name: 'Open' });
132
+ expect(item).toHaveFocus();
133
+ });
134
+ it('(d) userEvent.tab() does NOT land on disabled wrapper', async () => {
135
+ const user = userEvent.setup();
136
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { disabled: true, children: "Delete" })));
137
+ await user.tab();
138
+ const item = screen.getByRole('menuitem', { name: 'Delete' });
139
+ expect(item).not.toHaveFocus();
140
+ });
141
+ it('(i-tabIndex) consumer-supplied tabIndex overrides default', () => {
142
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { tabIndex: -1, children: "Open" })));
143
+ const item = screen.getByRole('menuitem', { name: 'Open' });
144
+ expect(item).toHaveAttribute('tabindex', '-1');
145
+ });
146
+ it('(i-tabIndex disabled override) consumer tabIndex={0} on disabled item is honoured', () => {
147
+ renderWithTheme(renderInsideMenu(_jsx(BKJMenuItem, { tabIndex: 0, disabled: true, children: "Delete" })));
148
+ const item = screen.getByRole('menuitem', { name: 'Delete' });
149
+ expect(item).toHaveAttribute('tabindex', '0');
150
+ expect(item).toHaveAttribute('aria-disabled', 'true');
151
+ });
152
+ });
153
+ });
154
+ });
155
+ //# sourceMappingURL=BKJMenuItem.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BKJMenuItem.test.js","sourceRoot":"","sources":["../../../src/components/BKJMenuItem/BKJMenuItem.test.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bookjane2/bookjane-design-library",
3
- "version": "9.0.32",
3
+ "version": "9.0.34",
4
4
  "main": "./lib/index.js",
5
5
  "typings": "./lib/index.d.ts",
6
6
  "engines": {