pixel-react 1.21.67 → 1.21.68
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/AudioPlayer/AudioPlayer.js +1 -1
- package/lib/components/AudioPlayer/AudioPlayer.js.map +1 -1
- package/lib/components/AudioPlayer/__tests__/AudioPlayer.test.d.ts +1 -0
- package/lib/components/AudioPlayer/__tests__/AudioPlayer.test.js +68 -0
- package/lib/components/AudioPlayer/__tests__/AudioPlayer.test.js.map +1 -0
- package/lib/components/Button/__tests__/Button.test.d.ts +1 -0
- package/lib/components/Button/__tests__/Button.test.js +45 -0
- package/lib/components/Button/__tests__/Button.test.js.map +1 -0
- package/lib/components/Button/types.d.ts +2 -2
- package/lib/components/CardPanel/CardPanel.js +3 -1
- package/lib/components/CardPanel/CardPanel.js.map +1 -1
- package/lib/components/CardPanel/__tests__/CardPanel.test.d.ts +1 -0
- package/lib/components/CardPanel/__tests__/CardPanel.test.js +36 -0
- package/lib/components/CardPanel/__tests__/CardPanel.test.js.map +1 -0
- package/lib/components/Drawer/Drawer.js +4 -3
- package/lib/components/Drawer/Drawer.js.map +1 -1
- package/lib/components/Drawer/__tests__/Drawer.test.d.ts +1 -0
- package/lib/components/Drawer/__tests__/Drawer.test.js +48 -0
- package/lib/components/Drawer/__tests__/Drawer.test.js.map +1 -0
- package/lib/components/Editor/Editor.d.ts +7 -1
- package/lib/components/Editor/Editor.js +29 -345
- package/lib/components/Editor/Editor.js.map +1 -1
- package/lib/components/Editor/__tests__/beautify.test.d.ts +1 -0
- package/lib/components/Editor/__tests__/beautify.test.js +15 -0
- package/lib/components/Editor/__tests__/beautify.test.js.map +1 -0
- package/lib/components/Editor/beautify.d.ts +1 -0
- package/lib/components/Editor/beautify.js +40 -0
- package/lib/components/Editor/beautify.js.map +1 -0
- package/lib/components/Editor/useVariableDropdown.d.ts +17 -0
- package/lib/components/Editor/useVariableDropdown.js +252 -0
- package/lib/components/Editor/useVariableDropdown.js.map +1 -0
- package/lib/components/Excel/ExcelFile/ExcelFileComponents/ColumnIndicator.d.ts +1 -1
- package/lib/components/Excel/ExcelFile/ExcelFileComponents/areModelsEqual.js +0 -1
- package/lib/components/Excel/ExcelFile/ExcelFileComponents/areModelsEqual.js.map +1 -1
- package/lib/components/Icon/Icon.js +15 -2
- package/lib/components/Icon/Icon.js.map +1 -1
- package/lib/components/Icon/__tests__/Icon.test.d.ts +1 -0
- package/lib/components/Icon/__tests__/Icon.test.js +66 -0
- package/lib/components/Icon/__tests__/Icon.test.js.map +1 -0
- package/lib/components/Icon/types.d.ts +2 -1
- package/lib/components/Input/Input.js +13 -10
- package/lib/components/Input/Input.js.map +1 -1
- package/lib/components/Input/__tests__/Input.test.d.ts +1 -0
- package/lib/components/Input/__tests__/Input.test.js +45 -0
- package/lib/components/Input/__tests__/Input.test.js.map +1 -0
- package/lib/components/Input/types.d.ts +2 -1
- package/lib/components/MultiSelect/Dropdown.js +3 -4
- package/lib/components/MultiSelect/Dropdown.js.map +1 -1
- package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/lib/components/MultiSelect/MultiSelect.js +17 -6
- package/lib/components/MultiSelect/MultiSelect.js.map +1 -1
- package/lib/components/MultiSelect/MultiSelectTypes.d.ts +2 -2
- package/lib/components/MultiSelect/__tests__/MultiSelect.test.d.ts +1 -0
- package/lib/components/MultiSelect/__tests__/MultiSelect.test.js +30 -0
- package/lib/components/MultiSelect/__tests__/MultiSelect.test.js.map +1 -0
- package/lib/components/MultiSelect/dropdownTypes.d.ts +3 -0
- package/lib/components/Select/Select.js +14 -7
- package/lib/components/Select/Select.js.map +1 -1
- package/lib/components/Select/__tests__/Select.test.d.ts +1 -0
- package/lib/components/Select/__tests__/Select.test.js +33 -0
- package/lib/components/Select/__tests__/Select.test.js.map +1 -0
- package/lib/components/Select/components/Dropdown.js +3 -3
- package/lib/components/Select/components/Dropdown.js.map +1 -1
- package/lib/components/Select/components/types.d.ts +1 -0
- package/lib/components/Select/components/types.js.map +1 -1
- package/lib/components/Select/types.d.ts +2 -2
- package/lib/components/Table/Table.js +3 -3
- package/lib/components/Table/Table.js.map +1 -1
- package/lib/components/Table/Types.d.ts +8 -0
- package/lib/components/Table/__tests__/Table.test.d.ts +1 -0
- package/lib/components/Table/__tests__/Table.test.js +26 -0
- package/lib/components/Table/__tests__/Table.test.js.map +1 -0
- package/lib/components/Table/components/SortableRow.js +2 -3
- package/lib/components/Table/components/SortableRow.js.map +1 -1
- package/lib/components/Table/components/TableHeader.js +3 -3
- package/lib/components/Table/components/TableHeader.js.map +1 -1
- package/lib/components/Table/components/VirtualizedRows.js +1 -1
- package/lib/components/Table/components/VirtualizedRows.js.map +1 -1
- package/lib/components/TableTreeFn/Components/TableBody.js +1 -1
- package/lib/components/TableTreeFn/Components/TableBody.js.map +1 -1
- package/lib/components/TableTreeFn/Components/TableCell.js +1 -1
- package/lib/components/TableTreeFn/Components/TableCell.js.map +1 -1
- package/lib/components/TableTreeFn/Components/TableHead.js +2 -2
- package/lib/components/TableTreeFn/Components/TableHead.js.map +1 -1
- package/lib/components/TableTreeFn/Components/TableRow.js +1 -1
- package/lib/components/TableTreeFn/Components/TableRow.js.map +1 -1
- package/lib/components/TableTreeFn/TableTreeFn.js +2 -2
- package/lib/components/TableTreeFn/TableTreeFn.js.map +1 -1
- package/lib/components/TableTreeFn/__tests__/TableTreeFn.test.d.ts +1 -0
- package/lib/components/TableTreeFn/__tests__/TableTreeFn.test.js +17 -0
- package/lib/components/TableTreeFn/__tests__/TableTreeFn.test.js.map +1 -0
- package/lib/components/TableTreeFn/types.d.ts +8 -0
- package/lib/index.d.ts +30 -8
- package/lib/index.js +8 -8
- package/lib/styles.css +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -3
|
@@ -107,7 +107,7 @@ const AudioPlayer = ({ duration, currentTime, isPlaying = false, onPlayPause = (
|
|
|
107
107
|
break;
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
|
-
return (_jsxs("div", { className: `ff-audio-player ${className}`, style: style, "aria-disabled": disabled, tabIndex: disabled ? -1 : 0, role: "group", "aria-label": "Audio player", onKeyDown: handleKeyDown, children: [_jsx("button", { type: "button", className: "ff-audio-play-btn", onClick: onPlayPause, disabled: disabled, "aria-label": isPlaying ? 'Pause' : 'Play', children: isPlaying ? (_jsxs("span", { className: "ff-audio-pause-shape", children: [_jsx("span", { className: "ff-audio-pause-bar" }), _jsx("span", { className: "ff-audio-pause-bar" })] })) : (_jsx(Icon, { name: "play", width: 8, height: 8, cursorType: "pointer", withPadding: false, className: "ff-audio-play" })) }), _jsx(Typography, { fontSize: 8, className: "ff-audio-time", children: formatTime(currentTime) }), _jsxs("div", { className: "ff-audio-seek-wrap", children: [_jsx("div", { className: "ff-audio-seek-track" }), _jsx("div", { className: "ff-audio-seek-fill", style: { width: `${progressPercent}%` } }), _jsx("input", { type: "range", className: "ff-audio-seek", min: 0, max: duration || 0, step: 1, value: currentTime, disabled: disabled, onChange: handleSeek, "aria-label": "Seek" })] }), _jsx(Typography, { fontSize: 8, className: "ff-audio-time", children: formatTime(duration) }), _jsx(Icon, { name: "speaker", onClick: disabled ? () => { } : onMuteToggle, disabled: disabled, withPadding: false, className: `ff-audio-speaker-icon${isMuted ? ' ff-audio-speaker-muted' : ''}`, cursorType: "pointer" }), _jsx("div", { className: "ff-audio-more-wrap", ref: moreRef, children: _jsx(MenuOption, { iconName: "more", options: resolvedMenuOptions, onOptionClick: handleMenuOptionClick, dropdownPlacement: "bottomLeft", displayCard: true, disabled: disabled, iconSize: 12 }) }), isSpeedMenuOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "ff-audio-speed-overlay", onClick: () => setIsSpeedMenuOpen(false) }), _jsx("div", { className: "ff-audio-speed-menu", style: { top: speedMenuPosition.top, left: speedMenuPosition.left }, ref: speedMenuRef, tabIndex: -1, role: "listbox", "aria-label": "Playback speed", onKeyDown: handleSpeedMenuKeyDown, children: SPEED_OPTIONS.map((speed, index) => {
|
|
110
|
+
return (_jsxs("div", { className: `ff-audio-player ${className}`, style: style, "aria-disabled": disabled, tabIndex: disabled ? -1 : 0, role: "group", "aria-label": "Audio player", onKeyDown: handleKeyDown, children: [_jsx("button", { type: "button", className: "ff-audio-play-btn", onClick: onPlayPause, disabled: disabled, "aria-label": isPlaying ? 'Pause' : 'Play', children: isPlaying ? (_jsxs("span", { className: "ff-audio-pause-shape", children: [_jsx("span", { className: "ff-audio-pause-bar" }), _jsx("span", { className: "ff-audio-pause-bar" })] })) : (_jsx(Icon, { name: "play", width: 8, height: 8, cursorType: "pointer", withPadding: false, className: "ff-audio-play" })) }), _jsx(Typography, { fontSize: 8, className: "ff-audio-time", children: formatTime(currentTime) }), _jsxs("div", { className: "ff-audio-seek-wrap", children: [_jsx("div", { className: "ff-audio-seek-track" }), _jsx("div", { className: "ff-audio-seek-fill", style: { width: `${progressPercent}%` } }), _jsx("input", { type: "range", className: "ff-audio-seek", min: 0, max: duration || 0, step: 1, value: currentTime, disabled: disabled, onChange: handleSeek, "aria-label": "Seek", "aria-valuetext": formatTime(currentTime) })] }), _jsx(Typography, { fontSize: 8, className: "ff-audio-time", children: formatTime(duration) }), _jsx(Icon, { name: "speaker", onClick: disabled ? () => { } : onMuteToggle, disabled: disabled, withPadding: false, className: `ff-audio-speaker-icon${isMuted ? ' ff-audio-speaker-muted' : ''}`, cursorType: "pointer", "aria-label": isMuted ? 'Unmute' : 'Mute' }), _jsx("div", { className: "ff-audio-more-wrap", ref: moreRef, children: _jsx(MenuOption, { iconName: "more", options: resolvedMenuOptions, onOptionClick: handleMenuOptionClick, dropdownPlacement: "bottomLeft", displayCard: true, disabled: disabled, iconSize: 12 }) }), isSpeedMenuOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "ff-audio-speed-overlay", onClick: () => setIsSpeedMenuOpen(false) }), _jsx("div", { className: "ff-audio-speed-menu", style: { top: speedMenuPosition.top, left: speedMenuPosition.left }, ref: speedMenuRef, tabIndex: -1, role: "listbox", "aria-label": "Playback speed", onKeyDown: handleSpeedMenuKeyDown, children: SPEED_OPTIONS.map((speed, index) => {
|
|
111
111
|
const isSelected = speed === playbackRate;
|
|
112
112
|
const isHighlighted = index === highlightedSpeedIndex;
|
|
113
113
|
return (_jsx("button", { type: "button", role: "option", "aria-selected": isSelected, className: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioPlayer.js","sourceRoot":"","sources":["../../../src/components/AudioPlayer/AudioPlayer.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AudioPlayer.js","sourceRoot":"","sources":["../../../src/components/AudioPlayer/AudioPlayer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render, screen, fireEvent } from '@testing-library/react';
|
|
3
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
4
|
+
import AudioPlayer from '../AudioPlayer';
|
|
5
|
+
// Mock the Icon component to simplify testing since AudioPlayer heavily uses it
|
|
6
|
+
vi.mock('../../Icon', () => {
|
|
7
|
+
return {
|
|
8
|
+
default: ({ name, onClick, 'aria-label': ariaLabel, tabIndex }) => (_jsxs("span", { "data-testid": `icon-${name}`, onClick: onClick, "aria-label": ariaLabel, tabIndex: tabIndex, children: ["Icon: ", name] }))
|
|
9
|
+
};
|
|
10
|
+
});
|
|
11
|
+
// Mock Typography and MenuOption for simplicity
|
|
12
|
+
vi.mock('../../Typography', () => ({ default: ({ children }) => _jsx("span", { children: children }) }));
|
|
13
|
+
vi.mock('../../MenuOption', () => ({ default: ({ options, onOptionClick }) => (_jsx("button", { "data-testid": "mock-menu-more", onClick: () => onOptionClick(options[1]), children: "More" })) }));
|
|
14
|
+
describe('AudioPlayer Component', () => {
|
|
15
|
+
it('renders playback controls correctly', () => {
|
|
16
|
+
render(_jsx(AudioPlayer, { duration: 100, currentTime: 0 }));
|
|
17
|
+
// Play button
|
|
18
|
+
const playBtn = screen.getByRole('button', { name: /play/i });
|
|
19
|
+
expect(playBtn).toBeInTheDocument();
|
|
20
|
+
// Seek slider
|
|
21
|
+
const seekSlider = screen.getByRole('slider', { name: /seek/i });
|
|
22
|
+
expect(seekSlider).toBeInTheDocument();
|
|
23
|
+
// Speaker icon (mocked as button)
|
|
24
|
+
const speakerBtn = screen.getByTestId('icon-speaker');
|
|
25
|
+
expect(speakerBtn).toBeInTheDocument();
|
|
26
|
+
});
|
|
27
|
+
it('toggles play/pause state via click', () => {
|
|
28
|
+
const handlePlayPause = vi.fn();
|
|
29
|
+
render(_jsx(AudioPlayer, { duration: 100, currentTime: 0, onPlayPause: handlePlayPause }));
|
|
30
|
+
const playBtn = screen.getByRole('button', { name: /play/i });
|
|
31
|
+
fireEvent.click(playBtn);
|
|
32
|
+
expect(handlePlayPause).toHaveBeenCalledTimes(1);
|
|
33
|
+
});
|
|
34
|
+
it('updates aria-valuetext on seek slider for screen readers', () => {
|
|
35
|
+
// 90 seconds should format to 01:30 by default
|
|
36
|
+
render(_jsx(AudioPlayer, { duration: 200, currentTime: 90 }));
|
|
37
|
+
const seekSlider = screen.getByRole('slider', { name: /seek/i });
|
|
38
|
+
expect(seekSlider).toHaveAttribute('aria-valuetext', '01:30');
|
|
39
|
+
});
|
|
40
|
+
it('toggles aria-label on speaker icon when muted', () => {
|
|
41
|
+
const { rerender } = render(_jsx(AudioPlayer, { duration: 100, currentTime: 0, isMuted: false }));
|
|
42
|
+
let speakerBtn = screen.getByTestId('icon-speaker');
|
|
43
|
+
expect(speakerBtn).toHaveAttribute('aria-label', 'Mute');
|
|
44
|
+
rerender(_jsx(AudioPlayer, { duration: 100, currentTime: 0, isMuted: true }));
|
|
45
|
+
speakerBtn = screen.getByTestId('icon-speaker');
|
|
46
|
+
expect(speakerBtn).toHaveAttribute('aria-label', 'Unmute');
|
|
47
|
+
});
|
|
48
|
+
it('handles keyboard shortcuts (Space, M, Arrows)', () => {
|
|
49
|
+
const handlePlayPause = vi.fn();
|
|
50
|
+
const handleMuteToggle = vi.fn();
|
|
51
|
+
const handleSeek = vi.fn();
|
|
52
|
+
render(_jsx(AudioPlayer, { duration: 100, currentTime: 50, onPlayPause: handlePlayPause, onMuteToggle: handleMuteToggle, onSeek: handleSeek }));
|
|
53
|
+
const playerGroup = screen.getByRole('group', { name: /audio player/i });
|
|
54
|
+
// Space to play/pause
|
|
55
|
+
fireEvent.keyDown(playerGroup, { key: ' ' });
|
|
56
|
+
expect(handlePlayPause).toHaveBeenCalledTimes(1);
|
|
57
|
+
// M to mute
|
|
58
|
+
fireEvent.keyDown(playerGroup, { key: 'm' });
|
|
59
|
+
expect(handleMuteToggle).toHaveBeenCalledTimes(1);
|
|
60
|
+
// ArrowRight to seek forward
|
|
61
|
+
fireEvent.keyDown(playerGroup, { key: 'ArrowRight' });
|
|
62
|
+
expect(handleSeek).toHaveBeenCalledWith(55); // default seek step is 5
|
|
63
|
+
// ArrowLeft to seek backward
|
|
64
|
+
fireEvent.keyDown(playerGroup, { key: 'ArrowLeft' });
|
|
65
|
+
expect(handleSeek).toHaveBeenCalledWith(45);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=AudioPlayer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioPlayer.test.js","sourceRoot":"","sources":["../../../../src/components/AudioPlayer/__tests__/AudioPlayer.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,gFAAgF;AAChF,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;IACzB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAO,EAAE,EAAE,CAAC,CACtE,+BACe,QAAQ,IAAI,EAAE,EAC3B,OAAO,EAAE,OAAO,gBACJ,SAAS,EACrB,QAAQ,EAAE,QAAQ,uBAEX,IAAI,IACN,CACR;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gDAAgD;AAChD,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAO,EAAE,EAAE,CAAC,yBAAO,QAAQ,GAAQ,EAAE,CAAC,CAAC,CAAC;AACjG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAO,EAAE,EAAE,CAAC,CACjF,gCACc,gBAAgB,EAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAGjC,CACV,EAAC,CAAC,CAAC,CAAC;AAEL,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,KAAC,WAAW,IAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,GAAI,CAAC,CAAC;QAEvD,cAAc;QACd,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAEpC,cAAc;QACd,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAEvC,kCAAkC;QAClC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,CAAC,UAAU,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,KAAC,WAAW,IAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,eAAe,GAAI,CAAC,CAAC;QAErF,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,+CAA+C;QAC/C,MAAM,CAAC,KAAC,WAAW,IAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,GAAI,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,KAAC,WAAW,IAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,GAAI,CAAC,CAAC;QAC5F,IAAI,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAEzD,QAAQ,CAAC,KAAC,WAAW,IAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,GAAI,CAAC,CAAC;QACxE,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE3B,MAAM,CACJ,KAAC,WAAW,IACV,QAAQ,EAAE,GAAG,EACb,WAAW,EAAE,EAAE,EACf,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,UAAU,GAClB,CACH,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QAEzE,sBAAsB;QACtB,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAEjD,YAAY;QACZ,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAElD,6BAA6B;QAC7B,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB;QAEtE,6BAA6B;QAC7B,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render, screen, fireEvent } from '@testing-library/react';
|
|
3
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
4
|
+
import Button from '../Button';
|
|
5
|
+
describe('Button Component', () => {
|
|
6
|
+
it('renders correctly with default props', () => {
|
|
7
|
+
render(_jsx(Button, { variant: "primary", label: "Click Me" }));
|
|
8
|
+
const button = screen.getByRole('button', { name: /click me/i });
|
|
9
|
+
expect(button).toBeInTheDocument();
|
|
10
|
+
expect(button).not.toBeDisabled();
|
|
11
|
+
});
|
|
12
|
+
it('handles onClick events', () => {
|
|
13
|
+
const handleClick = vi.fn();
|
|
14
|
+
render(_jsx(Button, { variant: "primary", label: "Submit", onClick: handleClick }));
|
|
15
|
+
const button = screen.getByRole('button', { name: /submit/i });
|
|
16
|
+
fireEvent.click(button);
|
|
17
|
+
expect(handleClick).toHaveBeenCalledTimes(1);
|
|
18
|
+
});
|
|
19
|
+
it('does not trigger onClick when disabled', () => {
|
|
20
|
+
const handleClick = vi.fn();
|
|
21
|
+
render(_jsx(Button, { variant: "primary", label: "Submit", disabled: true, onClick: handleClick }));
|
|
22
|
+
const button = screen.getByRole('button', { name: /submit/i });
|
|
23
|
+
expect(button).toBeDisabled();
|
|
24
|
+
fireEvent.click(button);
|
|
25
|
+
expect(handleClick).not.toHaveBeenCalled();
|
|
26
|
+
});
|
|
27
|
+
it('renders left and right icons correctly', () => {
|
|
28
|
+
render(_jsx(Button, { variant: "primary", label: "Icon Button", iconName: "play", iconPosition: "left" }));
|
|
29
|
+
const button = screen.getByRole('button', { name: /icon button/i });
|
|
30
|
+
expect(button).toBeInTheDocument();
|
|
31
|
+
});
|
|
32
|
+
it('supports native ARIA attributes', () => {
|
|
33
|
+
render(_jsx(Button, { variant: "primary", label: "Icon Button", "aria-label": "Close dialog", "aria-expanded": "true" }));
|
|
34
|
+
const button = screen.getByRole('button', { name: /close dialog/i });
|
|
35
|
+
expect(button).toHaveAttribute('aria-expanded', 'true');
|
|
36
|
+
});
|
|
37
|
+
it('handles keyboard activation (Enter/Space)', () => {
|
|
38
|
+
const handleClick = vi.fn();
|
|
39
|
+
render(_jsx(Button, { variant: "primary", label: "Keyboard", onClick: handleClick }));
|
|
40
|
+
const button = screen.getByRole('button', { name: /keyboard/i });
|
|
41
|
+
button.focus();
|
|
42
|
+
expect(button).toHaveFocus();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=Button.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.test.js","sourceRoot":"","sources":["../../../../src/components/Button/__tests__/Button.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
1
|
+
import { ReactNode, ButtonHTMLAttributes } from 'react';
|
|
2
2
|
import { DynamicObj } from '../CreateVariable/types';
|
|
3
|
-
export interface ButtonProps {
|
|
3
|
+
export interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onSubmit' | 'type'> {
|
|
4
4
|
/**
|
|
5
5
|
* Variant of the button
|
|
6
6
|
*/
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from 'react';
|
|
2
3
|
import './CardPanel.scss';
|
|
3
4
|
import Typography from '../Typography';
|
|
4
5
|
import classNames from 'classnames';
|
|
5
6
|
const CardPanel = ({ headerLabel, children, className = '', style, contentStyle, headerActions, headerHeight = '32px', }) => {
|
|
6
|
-
|
|
7
|
+
const titleId = useId();
|
|
8
|
+
return (_jsxs("div", { className: classNames('ff-card-panel', className), style: style, role: "region", "aria-labelledby": headerLabel ? titleId : undefined, children: [_jsxs("div", { className: "ff-card-panel-header", style: { height: headerHeight }, children: [_jsx(Typography, { as: "div", id: titleId, fontWeight: "semi-bold", color: "var(--brand-color)", children: headerLabel }), headerActions && (_jsx("div", { className: "ff-card-panel-header-actions", children: headerActions }))] }), _jsx("div", { className: "ff-card-panel-body", style: contentStyle, children: children })] }));
|
|
7
9
|
};
|
|
8
10
|
export default CardPanel;
|
|
9
11
|
//# sourceMappingURL=CardPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardPanel.js","sourceRoot":"","sources":["../../../src/components/CardPanel/CardPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,UAAU,MAAM,YAAY,CAAC;AAGpC,MAAM,SAAS,GAAG,CAAC,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,YAAY,GAAG,MAAM,GACN,EAAE,EAAE;IACnB,OAAO,CACL,
|
|
1
|
+
{"version":3,"file":"CardPanel.js","sourceRoot":"","sources":["../../../src/components/CardPanel/CardPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,UAAU,MAAM,YAAY,CAAC;AAGpC,MAAM,SAAS,GAAG,CAAC,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,YAAY,GAAG,MAAM,GACN,EAAE,EAAE;IACnB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,OAAO,CACL,eACE,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE,SAAS,CAAC,EACjD,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,QAAQ,qBACI,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,aAElD,eAAK,SAAS,EAAC,sBAAsB,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,aACnE,KAAC,UAAU,IAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAC,WAAW,EAAC,KAAK,EAAC,oBAAoB,YAChF,WAAW,GACD,EAEZ,aAAa,IAAI,CAChB,cAAK,SAAS,EAAC,8BAA8B,YAAE,aAAa,GAAO,CACpE,IACG,EAEN,cAAK,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE,YAAY,YACpD,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import { describe, it, expect } from 'vitest';
|
|
4
|
+
import CardPanel from '../CardPanel';
|
|
5
|
+
import Button from '../../Button';
|
|
6
|
+
describe('CardPanel Component', () => {
|
|
7
|
+
it('renders the header label and children correctly', () => {
|
|
8
|
+
render(_jsx(CardPanel, { headerLabel: "Test Header", children: _jsx("div", { "data-testid": "child-content", children: "Content" }) }));
|
|
9
|
+
const header = screen.getByText('Test Header');
|
|
10
|
+
expect(header).toBeInTheDocument();
|
|
11
|
+
const child = screen.getByTestId('child-content');
|
|
12
|
+
expect(child).toBeInTheDocument();
|
|
13
|
+
});
|
|
14
|
+
it('renders header actions when provided', () => {
|
|
15
|
+
render(_jsx(CardPanel, { headerLabel: "Header", headerActions: _jsx(Button, { variant: "primary", label: "Action Button" }), children: "Content" }));
|
|
16
|
+
const actionButton = screen.getByRole('button', { name: /action button/i });
|
|
17
|
+
expect(actionButton).toBeInTheDocument();
|
|
18
|
+
});
|
|
19
|
+
it('applies the region role for accessibility', () => {
|
|
20
|
+
render(_jsx(CardPanel, { headerLabel: "Accessible Region", children: "Content" }));
|
|
21
|
+
const region = screen.getByRole('region');
|
|
22
|
+
expect(region).toBeInTheDocument();
|
|
23
|
+
});
|
|
24
|
+
it('automatically maps aria-labelledby to the header ID', () => {
|
|
25
|
+
render(_jsx(CardPanel, { headerLabel: "Dynamic Label Region", children: "Content" }));
|
|
26
|
+
const region = screen.getByRole('region');
|
|
27
|
+
// React Testing library computes the accessible name by resolving aria-labelledby
|
|
28
|
+
expect(region).toHaveAccessibleName('Dynamic Label Region');
|
|
29
|
+
});
|
|
30
|
+
it('does not have aria-labelledby if headerLabel is not provided', () => {
|
|
31
|
+
render(_jsx(CardPanel, { headerLabel: "Header", children: "Content" }));
|
|
32
|
+
const region = screen.getByRole('region');
|
|
33
|
+
expect(region).not.toHaveAttribute('aria-labelledby');
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=CardPanel.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardPanel.test.js","sourceRoot":"","sources":["../../../../src/components/CardPanel/__tests__/CardPanel.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CACJ,KAAC,SAAS,IAAC,WAAW,EAAC,aAAa,YAClC,6BAAiB,eAAe,wBAAc,GACpC,CACb,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,KAAC,SAAS,IACR,WAAW,EAAC,QAAQ,EACpB,aAAa,EAAE,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,eAAe,GAAG,wBAGvD,CACb,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CACJ,KAAC,SAAS,IAAC,WAAW,EAAC,mBAAmB,wBAE9B,CACb,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CACJ,KAAC,SAAS,IAAC,WAAW,EAAC,sBAAsB,wBAEjC,CACb,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,kFAAkF;QAClF,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CACJ,KAAC,SAAS,IAAC,WAAW,EAAC,QAAQ,wBAEnB,CACb,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { createPortal } from 'react-dom';
|
|
|
3
3
|
import Button from '../Button/Button.js';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import './Drawer.scss';
|
|
6
|
-
import { useContext, useEffect, useRef, useState } from 'react';
|
|
6
|
+
import { useContext, useEffect, useRef, useState, useId } from 'react';
|
|
7
7
|
import Icon from '../Icon';
|
|
8
8
|
import useEscapeKey from '../../hooks/keyboardevents/useEscKeyEvent.js';
|
|
9
9
|
import { ThemeContext } from '../ThemeProvider/ThemeProvider.js';
|
|
@@ -12,6 +12,7 @@ import useClickOutside from '../../hooks/useClickOutside.js';
|
|
|
12
12
|
import { cleanAllTooltips } from './../../utils/cleanAllTooltips/cleanAllTooltips';
|
|
13
13
|
const Drawer = ({ isOpen = true, children = 'Drawer content area', onClose = () => { }, onBackButtonClick = () => { }, title = 'drawer', primaryButtonProps = {}, secondaryButtonProps = {}, leftPrimaryButtonProps = {}, leftSecondaryButtonProps = {}, showEditButton = false, showTransition = true, onEdit = () => { }, onCollapse = () => { }, overlay = false, isFooterRequired = true, footerContent = null, size = 'medium', _isExpanded = false, isBackButtonVisible = false, _isCloseModalButtonVisible = true, showHeader = true, isScrollBar = true, backButtonIcon, onCloseIconClick, customHeader, customFooter, leftTertiaryButtonProps = {}, rightTertiaryButtonProps = {}, zIndex, top = '89px', height, width, right = '5px', overflow, isClickOutside, ignoreRefs, noHeaderBorder = false, direction = 'right', }) => {
|
|
14
14
|
const containerRef = useRef(null);
|
|
15
|
+
const titleId = useId();
|
|
15
16
|
useClickOutside(containerRef, () => {
|
|
16
17
|
cleanAllTooltips();
|
|
17
18
|
const openDrawers = document.querySelectorAll('.ff-drawer');
|
|
@@ -110,13 +111,13 @@ const Drawer = ({ isOpen = true, children = 'Drawer content area', onClose = ()
|
|
|
110
111
|
: { right: right ?? '5px' }),
|
|
111
112
|
overflow,
|
|
112
113
|
transition: `all ${transitionDuration} ease-in-out`,
|
|
113
|
-
}, children: [showHeader && (_jsx("div", { className: classNames('ff-drawer-header', {
|
|
114
|
+
}, role: "dialog", "aria-modal": "true", "aria-labelledby": title ? titleId : undefined, children: [showHeader && (_jsx("div", { className: classNames('ff-drawer-header', {
|
|
114
115
|
'ff-custom-header': customHeader,
|
|
115
116
|
'no-header-border': noHeaderBorder,
|
|
116
117
|
}), style: { zIndex: computedZIndex }, children: customHeader ? (_jsx("div", { className: classNames('ff-custom-header', {
|
|
117
118
|
'no-header-border': noHeaderBorder,
|
|
118
119
|
}), children: customHeader })) : (_jsxs("div", { className: "ff-drawer-action-section", children: [_jsxs("div", { className: "ff-action-button", children: [showEditButton && (_jsxs("button", { className: "ff-expand-collapse-button", onClick: onEdit, children: [_jsx(Icon, { name: "logo", height: 16, width: 16 }), "Edit"] })), _isExpanded && (_jsx(Tooltip, { title: isExpanded ? 'Minimize' : 'Maximize', placement: "bottom", children: _jsx("div", { className: "ff-expand-collapse-button", onClick: toggleExpand, children: _jsx(Icon, { name: isExpanded ? 'maximize_tree' : 'minimize_tree', height: 16, width: 16, hoverEffect: true, cursorType: "pointer" }) }) })), isBackButtonVisible &&
|
|
119
|
-
(backButtonIcon || (_jsx(Tooltip, { title: "Back", children: _jsx(Icon, { name: "back_icon", height: 16, width: 16, hoverEffect: true, onClick: onBackButtonClick }) }))), title && _jsx("div", { className: "ff-drawer-title", children: title })] }), _isCloseModalButtonVisible && (_jsx("div", { className: "ff-close-icon", children: _jsx(Tooltip, { title: "Close", children: _jsx(Icon, { name: "drawer_icon_close", onClick: onCloseIconClick || onClose, height: 16, width: 16, color: "var(--tabs-label-active-color)", cursorType: "pointer" }) }) }))] })) })), _jsxs("div", { className: classNames({
|
|
120
|
+
(backButtonIcon || (_jsx(Tooltip, { title: "Back", children: _jsx(Icon, { name: "back_icon", height: 16, width: 16, hoverEffect: true, onClick: onBackButtonClick }) }))), title && _jsx("div", { className: "ff-drawer-title", id: titleId, children: title })] }), _isCloseModalButtonVisible && (_jsx("div", { className: "ff-close-icon", children: _jsx(Tooltip, { title: "Close", children: _jsx(Icon, { name: "drawer_icon_close", onClick: onCloseIconClick || onClose, height: 16, width: 16, color: "var(--tabs-label-active-color)", cursorType: "pointer" }) }) }))] })) })), _jsxs("div", { className: classNames({
|
|
120
121
|
'ff-drawer-body-with-scroll': isScrollBar,
|
|
121
122
|
'ff-drawer-body': !isScrollBar,
|
|
122
123
|
'no-footer': !isFooterRequired,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/components/Drawer/Drawer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,eAAe,CAAC;AACvB,OAAO,EAAM,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/components/Drawer/Drawer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render, screen, fireEvent } from '@testing-library/react';
|
|
3
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
4
|
+
import Drawer from '../Drawer';
|
|
5
|
+
describe('Drawer Component', () => {
|
|
6
|
+
it('renders correctly when isOpen is true', () => {
|
|
7
|
+
render(_jsx(Drawer, { isOpen: true, title: "Test Drawer", children: _jsx("div", {}) }));
|
|
8
|
+
// Since Drawer renders in a portal, it will be attached to document.body
|
|
9
|
+
const dialog = screen.getByRole('dialog');
|
|
10
|
+
expect(dialog).toBeInTheDocument();
|
|
11
|
+
// Check for title
|
|
12
|
+
const title = screen.getByText('Test Drawer');
|
|
13
|
+
expect(title).toBeInTheDocument();
|
|
14
|
+
});
|
|
15
|
+
it('sets the correct ARIA attributes for a modal dialog', () => {
|
|
16
|
+
render(_jsx(Drawer, { isOpen: true, title: "Accessible Drawer", children: _jsx("div", {}) }));
|
|
17
|
+
const dialog = screen.getByRole('dialog');
|
|
18
|
+
// Test modal status
|
|
19
|
+
expect(dialog).toHaveAttribute('aria-modal', 'true');
|
|
20
|
+
// Test aria-labelledby links to the title id
|
|
21
|
+
const titleElement = screen.getByText('Accessible Drawer');
|
|
22
|
+
expect(dialog).toHaveAttribute('aria-labelledby', titleElement.id);
|
|
23
|
+
});
|
|
24
|
+
it('triggers onClose when Escape key is pressed', () => {
|
|
25
|
+
const handleClose = vi.fn();
|
|
26
|
+
render(_jsx(Drawer, { isOpen: true, onClose: handleClose, children: _jsx("div", {}) }));
|
|
27
|
+
// Simulate escape key on document
|
|
28
|
+
fireEvent.keyDown(document, { key: 'Escape', code: 'Escape' });
|
|
29
|
+
expect(handleClose).toHaveBeenCalled();
|
|
30
|
+
});
|
|
31
|
+
it('triggers primary button action when Enter key is pressed', () => {
|
|
32
|
+
const handlePrimaryClick = vi.fn();
|
|
33
|
+
render(_jsx(Drawer, { isOpen: true, primaryButtonProps: { label: 'Primary', onClick: handlePrimaryClick }, children: _jsx("div", {}) }));
|
|
34
|
+
fireEvent.keyDown(document, { key: 'Enter', code: 'Enter' });
|
|
35
|
+
expect(handlePrimaryClick).toHaveBeenCalled();
|
|
36
|
+
});
|
|
37
|
+
it('does not trigger primary action on Enter if disabled', () => {
|
|
38
|
+
const handlePrimaryClick = vi.fn();
|
|
39
|
+
render(_jsx(Drawer, { isOpen: true, primaryButtonProps: {
|
|
40
|
+
label: 'Primary',
|
|
41
|
+
onClick: handlePrimaryClick,
|
|
42
|
+
disabled: true,
|
|
43
|
+
}, children: _jsx("div", {}) }));
|
|
44
|
+
fireEvent.keyDown(document, { key: 'Enter', code: 'Enter' });
|
|
45
|
+
expect(handlePrimaryClick).not.toHaveBeenCalled();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=Drawer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.test.js","sourceRoot":"","sources":["../../../../src/components/Drawer/__tests__/Drawer.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import type { editor as MonacoEditorType } from 'monaco-editor';
|
|
1
2
|
import { EditorProps } from './types';
|
|
2
3
|
import './Editor.scss';
|
|
3
|
-
|
|
4
|
+
export interface EditorRef {
|
|
5
|
+
getEditorInstance: () => MonacoEditorType.IStandaloneCodeEditor | null;
|
|
6
|
+
focus: () => void;
|
|
7
|
+
beautify: () => void;
|
|
8
|
+
}
|
|
9
|
+
declare const Editor: import("react").ForwardRefExoticComponent<EditorProps & import("react").RefAttributes<EditorRef>>;
|
|
4
10
|
export default Editor;
|