@patternfly/react-core 6.3.1-prerelease.14 → 6.3.1-prerelease.16
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/CHANGELOG.md +12 -0
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/Content/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/TimePicker/package.json +1 -1
- package/dist/dynamic/components/Timestamp/package.json +1 -1
- package/dist/dynamic/components/Title/package.json +1 -1
- package/dist/dynamic/components/ToggleGroup/package.json +1 -1
- package/dist/dynamic/components/Toolbar/package.json +1 -1
- package/dist/dynamic/components/Tooltip/package.json +1 -1
- package/dist/dynamic/components/TreeView/package.json +1 -1
- package/dist/dynamic/components/Truncate/package.json +1 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
- package/dist/dynamic/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
- package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
- package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/AnimationsProvider/AnimationsProvider/package.json +1 -0
- package/dist/dynamic/helpers/AnimationsProvider/package.json +1 -0
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/styles/package.json +1 -1
- package/dist/dynamic-modules.json +6 -0
- package/dist/esm/components/Alert/AlertGroup.d.ts +2 -13
- package/dist/esm/components/Alert/AlertGroup.d.ts.map +1 -1
- package/dist/esm/components/Alert/AlertGroup.js +33 -38
- package/dist/esm/components/Alert/AlertGroup.js.map +1 -1
- package/dist/esm/components/Alert/AlertGroupInline.d.ts.map +1 -1
- package/dist/esm/components/Alert/AlertGroupInline.js +3 -1
- package/dist/esm/components/Alert/AlertGroupInline.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.d.ts +4 -19
- package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelector.d.ts +2 -9
- package/dist/esm/components/DualListSelector/DualListSelector.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelector.js +6 -16
- package/dist/esm/components/DualListSelector/DualListSelector.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js +3 -1
- package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
- package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
- package/dist/esm/components/Form/FormFieldGroupExpandable.js +3 -1
- package/dist/esm/components/Form/FormFieldGroupExpandable.js.map +1 -1
- package/dist/esm/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
- package/dist/esm/components/Form/InternalFormFieldGroup.js +3 -1
- package/dist/esm/components/Form/InternalFormFieldGroup.js.map +1 -1
- package/dist/esm/components/Menu/MenuContainer.d.ts +4 -17
- package/dist/esm/components/Menu/MenuContainer.d.ts.map +1 -1
- package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.js +3 -1
- package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts +4 -25
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Tabs/OverflowTab.d.ts +4 -25
- package/dist/esm/components/Tabs/OverflowTab.d.ts.map +1 -1
- package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
- package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeView.js +3 -1
- package/dist/esm/components/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.js +3 -1
- package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.d.ts +76 -0
- package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.d.ts.map +1 -0
- package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.js +83 -0
- package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.js.map +1 -0
- package/dist/esm/helpers/AnimationsProvider/index.d.ts +2 -0
- package/dist/esm/helpers/AnimationsProvider/index.d.ts.map +1 -0
- package/dist/esm/helpers/AnimationsProvider/index.js +2 -0
- package/dist/esm/helpers/AnimationsProvider/index.js.map +1 -0
- package/dist/esm/helpers/Popper/Popper.d.ts +24 -20
- package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/esm/helpers/Popper/Popper.js.map +1 -1
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/index.js +1 -0
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/js/components/Alert/AlertGroup.d.ts +2 -13
- package/dist/js/components/Alert/AlertGroup.d.ts.map +1 -1
- package/dist/js/components/Alert/AlertGroup.js +33 -37
- package/dist/js/components/Alert/AlertGroup.js.map +1 -1
- package/dist/js/components/Alert/AlertGroupInline.d.ts.map +1 -1
- package/dist/js/components/Alert/AlertGroupInline.js +3 -1
- package/dist/js/components/Alert/AlertGroupInline.js.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.d.ts +4 -19
- package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelector.d.ts +2 -9
- package/dist/js/components/DualListSelector/DualListSelector.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelector.js +7 -16
- package/dist/js/components/DualListSelector/DualListSelector.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js +3 -1
- package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
- package/dist/js/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
- package/dist/js/components/Form/FormFieldGroupExpandable.js +3 -1
- package/dist/js/components/Form/FormFieldGroupExpandable.js.map +1 -1
- package/dist/js/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
- package/dist/js/components/Form/InternalFormFieldGroup.js +3 -1
- package/dist/js/components/Form/InternalFormFieldGroup.js.map +1 -1
- package/dist/js/components/Menu/MenuContainer.d.ts +4 -17
- package/dist/js/components/Menu/MenuContainer.d.ts.map +1 -1
- package/dist/js/components/Menu/MenuContainer.js.map +1 -1
- package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/js/components/SearchInput/SearchInput.js +3 -1
- package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/js/components/Select/Select.d.ts +4 -25
- package/dist/js/components/Select/Select.d.ts.map +1 -1
- package/dist/js/components/Select/Select.js.map +1 -1
- package/dist/js/components/Tabs/OverflowTab.d.ts +4 -25
- package/dist/js/components/Tabs/OverflowTab.d.ts.map +1 -1
- package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
- package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeView.js +3 -1
- package/dist/js/components/TreeView/TreeView.js.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.js +3 -1
- package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/js/helpers/AnimationsProvider/AnimationsProvider.d.ts +76 -0
- package/dist/js/helpers/AnimationsProvider/AnimationsProvider.d.ts.map +1 -0
- package/dist/js/helpers/AnimationsProvider/AnimationsProvider.js +89 -0
- package/dist/js/helpers/AnimationsProvider/AnimationsProvider.js.map +1 -0
- package/dist/js/helpers/AnimationsProvider/index.d.ts +2 -0
- package/dist/js/helpers/AnimationsProvider/index.d.ts.map +1 -0
- package/dist/js/helpers/AnimationsProvider/index.js +5 -0
- package/dist/js/helpers/AnimationsProvider/index.js.map +1 -0
- package/dist/js/helpers/Popper/Popper.d.ts +24 -20
- package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/js/helpers/Popper/Popper.js.map +1 -1
- package/dist/js/helpers/index.d.ts +1 -0
- package/dist/js/helpers/index.d.ts.map +1 -1
- package/dist/js/helpers/index.js +1 -0
- package/dist/js/helpers/index.js.map +1 -1
- package/dist/umd/assets/{output-BRqYjXqq.css → output-BEUrWWW0.css} +13708 -13708
- package/dist/umd/react-core.min.js +3 -3
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +2 -2
- package/src/components/Alert/AlertGroup.tsx +59 -63
- package/src/components/Alert/AlertGroupInline.tsx +3 -1
- package/src/components/Alert/__tests__/AlertGroup.test.tsx +55 -4
- package/src/components/Dropdown/Dropdown.tsx +4 -20
- package/src/components/Dropdown/examples/Dropdown.md +2 -2
- package/src/components/DualListSelector/DualListSelector.tsx +32 -39
- package/src/components/DualListSelector/DualListSelectorTreeItem.tsx +3 -1
- package/src/components/DualListSelector/__tests__/DualListSelector.test.tsx +28 -0
- package/src/components/Form/FormFieldGroupExpandable.tsx +3 -1
- package/src/components/Form/InternalFormFieldGroup.tsx +3 -1
- package/src/components/Form/__tests__/FormFieldGroupExpandable.test.tsx +30 -0
- package/src/components/Menu/MenuContainer.tsx +4 -17
- package/src/components/Menu/examples/Menu.md +3 -3
- package/src/components/SearchInput/SearchInput.tsx +3 -1
- package/src/components/SearchInput/__tests__/SearchInput.test.tsx +52 -0
- package/src/components/Select/Select.tsx +4 -26
- package/src/components/Select/examples/Select.md +1 -1
- package/src/components/Tabs/OverflowTab.tsx +4 -26
- package/src/components/Tabs/examples/Tabs.md +27 -27
- package/src/components/TreeView/TreeView.tsx +3 -1
- package/src/components/TreeView/TreeViewListItem.tsx +3 -1
- package/src/components/TreeView/__tests__/TreeView.test.tsx +28 -0
- package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +1 -1
- package/src/helpers/AnimationsProvider/AnimationsProvider.tsx +104 -0
- package/src/helpers/AnimationsProvider/__tests__/AnimationsProvider.test.tsx +157 -0
- package/src/helpers/AnimationsProvider/index.ts +1 -0
- package/src/helpers/Popper/Popper.tsx +25 -20
- package/src/helpers/index.ts +1 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import '@testing-library/jest-dom';
|
|
3
|
+
import { AnimationsProvider, useAnimationsConfig, useHasAnimations } from '../AnimationsProvider';
|
|
4
|
+
|
|
5
|
+
// Test component that uses the useAnimationsConfig hook
|
|
6
|
+
const TestConfigComponent = () => {
|
|
7
|
+
const { hasAnimations } = useAnimationsConfig();
|
|
8
|
+
return <div data-testid="config">{hasAnimations ? 'animations-enabled' : 'animations-disabled'}</div>;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
// Test component that uses the useHasAnimations hook with a local prop
|
|
12
|
+
const TestHasAnimationsComponent = ({ hasAnimations: hasAnimationsProp }: { hasAnimations?: boolean }) => {
|
|
13
|
+
const hasAnimations = useHasAnimations(hasAnimationsProp);
|
|
14
|
+
return <div data-testid="has-animations">{hasAnimations ? 'animations-enabled' : 'animations-disabled'}</div>;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
test('renders children correctly', () => {
|
|
18
|
+
render(
|
|
19
|
+
<AnimationsProvider config={{ hasAnimations: true }}>
|
|
20
|
+
<div data-testid="child">Test Child</div>
|
|
21
|
+
</AnimationsProvider>
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
expect(screen.getByTestId('child')).toBeInTheDocument();
|
|
25
|
+
expect(screen.getByTestId('child')).toHaveTextContent('Test Child');
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('provides explicit config', () => {
|
|
29
|
+
render(
|
|
30
|
+
<AnimationsProvider config={{ hasAnimations: false }}>
|
|
31
|
+
<TestConfigComponent />
|
|
32
|
+
</AnimationsProvider>
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
expect(screen.getByTestId('config')).toHaveTextContent('animations-disabled');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('provides animations enabled config', () => {
|
|
39
|
+
render(
|
|
40
|
+
<AnimationsProvider config={{ hasAnimations: true }}>
|
|
41
|
+
<TestConfigComponent />
|
|
42
|
+
</AnimationsProvider>
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
expect(screen.getByTestId('config')).toHaveTextContent('animations-enabled');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test('provides animations disabled config', () => {
|
|
49
|
+
render(
|
|
50
|
+
<AnimationsProvider config={{ hasAnimations: false }}>
|
|
51
|
+
<TestConfigComponent />
|
|
52
|
+
</AnimationsProvider>
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
expect(screen.getByTestId('config')).toHaveTextContent('animations-disabled');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
test('useAnimationsConfig returns default config when no provider', () => {
|
|
59
|
+
render(<TestConfigComponent />);
|
|
60
|
+
|
|
61
|
+
expect(screen.getByTestId('config')).toHaveTextContent('animations-disabled');
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('useHasAnimations uses context when no local prop provided', () => {
|
|
65
|
+
render(
|
|
66
|
+
<AnimationsProvider config={{ hasAnimations: true }}>
|
|
67
|
+
<TestHasAnimationsComponent />
|
|
68
|
+
</AnimationsProvider>
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test('useHasAnimations uses local prop when provided (true)', () => {
|
|
75
|
+
render(
|
|
76
|
+
<AnimationsProvider config={{ hasAnimations: false }}>
|
|
77
|
+
<TestHasAnimationsComponent hasAnimations={true} />
|
|
78
|
+
</AnimationsProvider>
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test('useHasAnimations uses local prop when provided (false)', () => {
|
|
85
|
+
render(
|
|
86
|
+
<AnimationsProvider config={{ hasAnimations: true }}>
|
|
87
|
+
<TestHasAnimationsComponent hasAnimations={false} />
|
|
88
|
+
</AnimationsProvider>
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-disabled');
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
test('useHasAnimations works without provider', () => {
|
|
95
|
+
render(<TestHasAnimationsComponent />);
|
|
96
|
+
|
|
97
|
+
expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-disabled');
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
test('useHasAnimations with local prop and no provider', () => {
|
|
101
|
+
render(<TestHasAnimationsComponent hasAnimations={true} />);
|
|
102
|
+
|
|
103
|
+
expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test('works in app-level scenario with multiple components', () => {
|
|
107
|
+
// Simulate realistic app-level usage
|
|
108
|
+
const MockApp = () => (
|
|
109
|
+
<div>
|
|
110
|
+
<header>
|
|
111
|
+
<TestConfigComponent />
|
|
112
|
+
</header>
|
|
113
|
+
<main>
|
|
114
|
+
<TestHasAnimationsComponent />
|
|
115
|
+
<TestHasAnimationsComponent hasAnimations={false} /> {/* Component override */}
|
|
116
|
+
</main>
|
|
117
|
+
</div>
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
render(
|
|
121
|
+
<AnimationsProvider config={{ hasAnimations: true }}>
|
|
122
|
+
<MockApp />
|
|
123
|
+
</AnimationsProvider>
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
const configs = screen.getAllByTestId('config');
|
|
127
|
+
const hasAnimationsComponents = screen.getAllByTestId('has-animations');
|
|
128
|
+
|
|
129
|
+
expect(configs[0]).toHaveTextContent('animations-enabled'); // Header uses provider
|
|
130
|
+
expect(hasAnimationsComponents[0]).toHaveTextContent('animations-enabled'); // Main uses provider
|
|
131
|
+
expect(hasAnimationsComponents[1]).toHaveTextContent('animations-disabled'); // Component override
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
test('handles dynamic context changes', () => {
|
|
135
|
+
const TestComponent = ({ hasAnimations }: { hasAnimations: boolean }) => (
|
|
136
|
+
<AnimationsProvider config={{ hasAnimations }}>
|
|
137
|
+
<TestConfigComponent />
|
|
138
|
+
<TestHasAnimationsComponent />
|
|
139
|
+
</AnimationsProvider>
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
const { rerender } = render(<TestComponent hasAnimations={true} />);
|
|
143
|
+
|
|
144
|
+
// Initially animations enabled
|
|
145
|
+
expect(screen.getByTestId('config')).toHaveTextContent('animations-enabled');
|
|
146
|
+
expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
|
|
147
|
+
|
|
148
|
+
// Change to disabled
|
|
149
|
+
rerender(<TestComponent hasAnimations={false} />);
|
|
150
|
+
expect(screen.getByTestId('config')).toHaveTextContent('animations-disabled');
|
|
151
|
+
expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-disabled');
|
|
152
|
+
|
|
153
|
+
// Change back to enabled
|
|
154
|
+
rerender(<TestComponent hasAnimations={true} />);
|
|
155
|
+
expect(screen.getByTestId('config')).toHaveTextContent('animations-enabled');
|
|
156
|
+
expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
|
|
157
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './AnimationsProvider';
|
|
@@ -47,24 +47,8 @@ const getOppositePlacement = (placement: Placement): any =>
|
|
|
47
47
|
export const getOpacityTransition = (animationDuration: number) =>
|
|
48
48
|
`opacity ${animationDuration}ms cubic-bezier(.54, 1.5, .38, 1.11)`;
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* Trigger reference element to which the popper is relatively placed to.
|
|
53
|
-
*/
|
|
54
|
-
trigger?: React.ReactNode;
|
|
55
|
-
/**
|
|
56
|
-
* A reference to the trigger reference element that can be passed instead of or along
|
|
57
|
-
* with the trigger prop. When passed along with the trigger prop, the div element that
|
|
58
|
-
* wraps the trigger will be removed.
|
|
59
|
-
*/
|
|
60
|
-
triggerRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
|
|
61
|
-
/** The popper (menu/tooltip/popover) element */
|
|
62
|
-
popper: React.ReactElement<any>;
|
|
63
|
-
/**
|
|
64
|
-
* Reference to the popper (menu/tooltip/popover) element.
|
|
65
|
-
* Passing this prop will remove the wrapper div element from the popper.
|
|
66
|
-
*/
|
|
67
|
-
popperRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
|
|
50
|
+
/** Properties of Popper that can be used to customize its behavior. */
|
|
51
|
+
export interface PopperOptions {
|
|
68
52
|
/** popper direction */
|
|
69
53
|
direction?: 'up' | 'down';
|
|
70
54
|
/** popper position */
|
|
@@ -81,8 +65,6 @@ export interface PopperProps {
|
|
|
81
65
|
appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
|
|
82
66
|
/** z-index of the popper element */
|
|
83
67
|
zIndex?: number;
|
|
84
|
-
/** True to make the popper visible */
|
|
85
|
-
isVisible?: boolean;
|
|
86
68
|
/**
|
|
87
69
|
* Map class names to positions, for example:
|
|
88
70
|
* {
|
|
@@ -179,6 +161,29 @@ export interface PopperProps {
|
|
|
179
161
|
preventOverflow?: boolean;
|
|
180
162
|
}
|
|
181
163
|
|
|
164
|
+
/** Extends PopperOptions */
|
|
165
|
+
export interface PopperProps extends PopperOptions {
|
|
166
|
+
/**
|
|
167
|
+
* Trigger reference element to which the popper is relatively placed to.
|
|
168
|
+
*/
|
|
169
|
+
trigger?: React.ReactNode;
|
|
170
|
+
/**
|
|
171
|
+
* A reference to the trigger reference element that can be passed instead of or along
|
|
172
|
+
* with the trigger prop. When passed along with the trigger prop, the div element that
|
|
173
|
+
* wraps the trigger will be removed.
|
|
174
|
+
*/
|
|
175
|
+
triggerRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
|
|
176
|
+
/** The popper (menu/tooltip/popover) element */
|
|
177
|
+
popper: React.ReactElement<any>;
|
|
178
|
+
/**
|
|
179
|
+
* Reference to the popper (menu/tooltip/popover) element.
|
|
180
|
+
* Passing this prop will remove the wrapper div element from the popper.
|
|
181
|
+
*/
|
|
182
|
+
popperRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
|
|
183
|
+
/** True to make the popper visible */
|
|
184
|
+
isVisible?: boolean;
|
|
185
|
+
}
|
|
186
|
+
|
|
182
187
|
export const Popper: React.FunctionComponent<PopperProps> = ({
|
|
183
188
|
trigger,
|
|
184
189
|
popper,
|
package/src/helpers/index.ts
CHANGED