@kaizen/components 1.50.0 → 1.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Button/GenericButton/GenericButton.cjs +89 -82
- package/dist/cjs/Button/GenericButton/GenericButton.module.scss.cjs +2 -1
- package/dist/cjs/ButtonGroup/ButtonGroup.cjs +4 -4
- package/dist/cjs/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.cjs +2 -2
- package/dist/cjs/GuidanceBlock/GuidanceBlock.cjs +2 -2
- package/dist/cjs/KaizenProvider/KaizenProvider.cjs +1 -1
- package/dist/cjs/KaizenProvider/subcomponents/OptionalIntlProvider/OptionalIntlProvider.cjs +11 -2
- package/dist/cjs/MultiSelect/subcomponents/MultiSelectToggle/MultiSelectToggle.cjs +1 -2
- package/dist/cjs/RichTextEditor/RichTextEditor/subcomponents/ToggleIconButton/ToggleIconButton.cjs +2 -2
- package/dist/cjs/Table/Table.cjs +2 -2
- package/dist/cjs/Tabs/subcomponents/Tab.cjs +20 -14
- package/dist/cjs/TitleBlockZen/TitleBlockZen.cjs +1 -1
- package/dist/cjs/__overlays__/Focusable/v3/Focusable.cjs +33 -0
- package/dist/cjs/__overlays__/Focusable/v3/Focusable.module.scss.cjs +6 -0
- package/dist/cjs/__overlays__/Tooltip/v1/Tooltip.module.scss.cjs +21 -0
- package/dist/cjs/__overlays__/Tooltip/v1/index.cjs +8 -0
- package/dist/cjs/__overlays__/Tooltip/v3/OverlayArrow.cjs +32 -0
- package/dist/cjs/__overlays__/Tooltip/v3/OverlayArrow.module.scss.cjs +7 -0
- package/dist/cjs/__overlays__/Tooltip/v3/Tooltip.cjs +59 -0
- package/dist/cjs/__overlays__/Tooltip/v3/Tooltip.module.scss.cjs +8 -0
- package/dist/cjs/__overlays__/Tooltip/v3/TooltipTrigger.cjs +24 -0
- package/dist/cjs/__utilities__/ReversedColors/v3/ReversedColors.cjs +23 -0
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/overlaysV1.cjs +4 -0
- package/dist/cjs/overlaysV2.cjs +4 -0
- package/dist/cjs/overlaysV3.cjs +15 -0
- package/dist/cjs/reactAriaComponentsV3.cjs +11 -0
- package/dist/cjs/reactAriaV3.cjs +11 -0
- package/dist/cjs/utilitiesV3.cjs +5 -0
- package/dist/cjs/utils/mergeClassNames.cjs +33 -0
- package/dist/esm/Button/GenericButton/GenericButton.mjs +90 -82
- package/dist/esm/Button/GenericButton/GenericButton.module.scss.mjs +2 -1
- package/dist/esm/ButtonGroup/ButtonGroup.mjs +1 -1
- package/dist/esm/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.mjs +1 -1
- package/dist/esm/GuidanceBlock/GuidanceBlock.mjs +1 -1
- package/dist/esm/KaizenProvider/KaizenProvider.mjs +1 -1
- package/dist/esm/KaizenProvider/subcomponents/OptionalIntlProvider/OptionalIntlProvider.mjs +11 -2
- package/dist/esm/MultiSelect/subcomponents/MultiSelectToggle/MultiSelectToggle.mjs +1 -2
- package/dist/esm/RichTextEditor/RichTextEditor/subcomponents/ToggleIconButton/ToggleIconButton.mjs +1 -1
- package/dist/esm/Table/Table.mjs +1 -1
- package/dist/esm/Tabs/subcomponents/Tab.mjs +21 -15
- package/dist/esm/TitleBlockZen/TitleBlockZen.mjs +1 -1
- package/dist/esm/__overlays__/Focusable/v3/Focusable.mjs +24 -0
- package/dist/esm/__overlays__/Focusable/v3/Focusable.module.scss.mjs +4 -0
- package/dist/esm/__overlays__/Tooltip/v1/Tooltip.module.scss.mjs +19 -0
- package/dist/esm/__overlays__/Tooltip/v1/index.mjs +6 -0
- package/dist/esm/__overlays__/Tooltip/v3/OverlayArrow.mjs +24 -0
- package/dist/esm/__overlays__/Tooltip/v3/OverlayArrow.module.scss.mjs +5 -0
- package/dist/esm/__overlays__/Tooltip/v3/Tooltip.mjs +46 -0
- package/dist/esm/__overlays__/Tooltip/v3/Tooltip.module.scss.mjs +6 -0
- package/dist/esm/__overlays__/Tooltip/v3/TooltipTrigger.mjs +16 -0
- package/dist/esm/__utilities__/ReversedColors/v3/ReversedColors.mjs +14 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/overlaysV1.mjs +1 -0
- package/dist/esm/overlaysV2.mjs +1 -0
- package/dist/esm/overlaysV3.mjs +4 -0
- package/dist/esm/reactAriaComponentsV3.mjs +1 -0
- package/dist/esm/reactAriaV3.mjs +1 -0
- package/dist/esm/utilitiesV3.mjs +1 -0
- package/dist/esm/utils/mergeClassNames.mjs +25 -0
- package/dist/styles.css +19 -16
- package/dist/types/Button/GenericButton/GenericButton.d.ts +2 -1
- package/dist/types/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/dist/types/Container/Container.d.ts +1 -1
- package/dist/types/Content/Content.d.ts +1 -1
- package/dist/types/DateInput/DateInput/DateInput.d.ts +1 -1
- package/dist/types/DatePicker/subcomponents/DateInputField/DateInputField.d.ts +1 -1
- package/dist/types/Filter/FilterButton/subcomponents/FilterButtonBase/FilterButtonBase.d.ts +1 -1
- package/dist/types/Filter/FilterDatePicker/subcomponents/DateInputField/DateInputField.d.ts +1 -1
- package/dist/types/GuidanceBlock/GuidanceBlock.d.ts +1 -1
- package/dist/types/KaizenProvider/subcomponents/OptionalIntlProvider/OptionalIntlProvider.d.ts +2 -2
- package/dist/types/Notification/subcomponents/GenericNotification/GenericNotification.d.ts +1 -1
- package/dist/types/Select/Select.d.ts +3 -3
- package/dist/types/__future__/Select/Select.d.ts +2 -2
- package/dist/types/__future__/Select/subcomponents/SelectToggle/SelectToggle.d.ts +2 -2
- package/dist/types/__overlays__/Focusable/v3/Focusable.d.ts +6 -0
- package/dist/types/__overlays__/Focusable/v3/index.d.ts +1 -0
- package/dist/types/__overlays__/Tooltip/v1/index.d.ts +8 -0
- package/dist/types/{Tooltip → __overlays__/Tooltip/v1}/utils/isSemanticElement.d.ts +2 -2
- package/dist/types/__overlays__/Tooltip/v2/index.d.ts +1 -0
- package/dist/types/__overlays__/Tooltip/v3/OverlayArrow.d.ts +7 -0
- package/dist/types/__overlays__/Tooltip/v3/Tooltip.d.ts +32 -0
- package/dist/types/__overlays__/Tooltip/v3/TooltipTrigger.d.ts +19 -0
- package/dist/types/__overlays__/Tooltip/v3/index.d.ts +2 -0
- package/dist/types/__overlays__/v1.d.ts +1 -0
- package/dist/types/__overlays__/v2.d.ts +1 -0
- package/dist/types/__overlays__/v3.d.ts +2 -0
- package/dist/types/__react-aria-components__/index.d.ts +1 -0
- package/dist/types/__react-aria__/index.d.ts +1 -0
- package/dist/types/__utilities__/ReversedColors/v3/ReversedColors.d.ts +7 -0
- package/dist/types/__utilities__/ReversedColors/v3/index.d.ts +1 -0
- package/dist/types/__utilities__/v3.d.ts +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/utils/getNodeText.d.ts +1 -2
- package/dist/types/utils/mergeClassNames.d.ts +8 -0
- package/package.json +8 -3
- package/src/Button/Button/Button.module.scss +33 -23
- package/src/Button/GenericButton/GenericButton.tsx +135 -91
- package/src/Button/utils/_mixins.scss +1 -1
- package/src/ButtonGroup/ButtonGroup.tsx +1 -1
- package/src/ButtonGroup/_docs/ButtonGroup.stickersheet.stories.tsx +1 -1
- package/src/Filter/FilterButton/FilterButtonRemovable/FilterButtonRemovable.tsx +1 -1
- package/src/GuidanceBlock/GuidanceBlock.tsx +1 -1
- package/src/KaizenProvider/KaizenProvider.tsx +5 -7
- package/src/KaizenProvider/subcomponents/OptionalIntlProvider/OptionalIntlProvider.tsx +14 -4
- package/src/MultiSelect/subcomponents/MultiSelectToggle/MultiSelectToggle.tsx +1 -1
- package/src/Notification/subcomponents/GenericNotification/GenericNotification.tsx +1 -1
- package/src/RichTextEditor/RichTextEditor/subcomponents/ToggleIconButton/ToggleIconButton.tsx +1 -1
- package/src/Table/Table.tsx +1 -1
- package/src/Tabs/_docs/Tabs.stories.tsx +1 -1
- package/src/Tabs/subcomponents/Tab.tsx +27 -21
- package/src/TitleBlockZen/TitleBlockZen.module.scss +0 -14
- package/src/TitleBlockZen/TitleBlockZen.tsx +1 -1
- package/src/TitleBlockZen/_docs/TitleBlockZen.stories.tsx +54 -0
- package/src/__overlays__/Focusable/v3/Focusable.module.scss +3 -0
- package/src/__overlays__/Focusable/v3/Focusable.tsx +37 -0
- package/src/__overlays__/Focusable/v3/_docs/ApiSpecification.mdx +38 -0
- package/src/__overlays__/Focusable/v3/_docs/Focusable.stories.tsx +24 -0
- package/src/__overlays__/Focusable/v3/index.ts +1 -0
- package/src/{Tooltip → __overlays__/Tooltip/v1}/Tooltip.module.scss +1 -1
- package/src/__overlays__/Tooltip/v1/_docs/Tooltip.mdx +139 -0
- package/src/{Tooltip → __overlays__/Tooltip/v1}/_docs/Tooltip.stickersheet.stories.tsx +1 -1
- package/src/{Tooltip → __overlays__/Tooltip/v1}/_docs/Tooltip.stories.tsx +2 -2
- package/src/__overlays__/Tooltip/v1/index.ts +7 -0
- package/src/{Tooltip → __overlays__/Tooltip/v2}/_docs/Tooltip.mdx +2 -4
- package/src/__overlays__/Tooltip/v2/_docs/Tooltip.stories.tsx +49 -0
- package/src/__overlays__/Tooltip/v2/index.ts +1 -0
- package/src/__overlays__/Tooltip/v3/OverlayArrow.module.scss +43 -0
- package/src/__overlays__/Tooltip/v3/OverlayArrow.tsx +34 -0
- package/src/__overlays__/Tooltip/v3/Tooltip.module.scss +67 -0
- package/src/__overlays__/Tooltip/v3/Tooltip.tsx +101 -0
- package/src/__overlays__/Tooltip/v3/TooltipTrigger.tsx +30 -0
- package/src/__overlays__/Tooltip/v3/_docs/ApiSpecification.mdx +163 -0
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.docs.stories.tsx +203 -0
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.mdx +182 -0
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.spec.stories.tsx +219 -0
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.stickersheet.stories.tsx +46 -0
- package/src/__overlays__/Tooltip/v3/_docs/Tooltip.stories.tsx +72 -0
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_anatomy.png +0 -0
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_placement.png +0 -0
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_trigger_1.png +0 -0
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_trigger_2.png +0 -0
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_trigger_3.png +0 -0
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_variant.png +0 -0
- package/src/__overlays__/Tooltip/v3/_docs/assets/tooltip_when_to_use.png +0 -0
- package/src/__overlays__/Tooltip/v3/index.ts +2 -0
- package/src/__overlays__/v1.ts +1 -0
- package/src/__overlays__/v2.ts +2 -0
- package/src/__overlays__/v3.ts +2 -0
- package/src/__react-aria-components__/index.ts +1 -0
- package/src/__react-aria__/index.ts +1 -0
- package/src/__utilities__/ReversedColors/v3/ReversedColors.tsx +20 -0
- package/src/__utilities__/ReversedColors/v3/index.ts +1 -0
- package/src/__utilities__/v3.ts +1 -0
- package/src/index.ts +1 -1
- package/src/types/cssVariables.d.ts +7 -0
- package/src/utils/mergeClassNames.ts +32 -0
- package/v1/overlays/package.json +5 -0
- package/v2/overlays/package.json +5 -0
- package/v3/overlays/package.json +5 -0
- package/v3/react-aria/package.json +5 -0
- package/v3/react-aria-components/package.json +5 -0
- package/dist/cjs/Tooltip/Tooltip.module.scss.cjs +0 -21
- package/dist/esm/Tooltip/Tooltip.module.scss.mjs +0 -19
- package/dist/types/AvatarGroup/_docs/example-data.d.ts +0 -8
- package/dist/types/BrandMoment/_docs/ExampleHeaders.d.ts +0 -3
- package/dist/types/Calendar/_docs/controls/defaultMonthControls.d.ts +0 -2
- package/dist/types/Calendar/_docs/controls/weekStartsOnControls.d.ts +0 -2
- package/dist/types/DatePicker/_docs/controls/datePickerLocaleControls.d.ts +0 -2
- package/dist/types/DatePicker/_docs/controls/disabledDayMatchersControls.d.ts +0 -2
- package/dist/types/Filter/FilterBar/context/types.d.ts +0 -28
- package/dist/types/Filter/FilterDatePicker/_docs/controls/disabledDaysControls.d.ts +0 -2
- package/dist/types/Filter/FilterDatePicker/_docs/controls/validationControls.d.ts +0 -2
- package/dist/types/Filter/FilterDateRangePicker/_docs/controls/disabledDaysControls.d.ts +0 -2
- package/dist/types/Filter/FilterDateRangePicker/_docs/controls/validationControls.d.ts +0 -2
- package/dist/types/Filter/FilterMultiSelect/_docs/MockData.d.ts +0 -10
- package/dist/types/Filter/FilterSelect/_docs/mockData.d.ts +0 -6
- package/dist/types/Filter/_docs/controls/renderTriggerControls.d.ts +0 -2
- package/dist/types/Menu/_docs/MenuContentExample.d.ts +0 -8
- package/dist/types/Menu/_docs/examples.d.ts +0 -11
- package/dist/types/Modal/_docs/controls.d.ts +0 -11
- package/dist/types/MultiSelect/MultiSelect.d.ts +0 -23
- package/dist/types/MultiSelect/subcomponents/MultiSelectOptions/MultiSelectOptions.d.ts +0 -13
- package/dist/types/Tooltip/index.d.ts +0 -1
- package/dist/types/Workflow/_docs/controls/controls.d.ts +0 -2
- package/dist/types/Workflow/_docs/controls/index.d.ts +0 -1
- package/dist/types/__future__/Select/_docs/mockData.d.ts +0 -6
- package/dist/types/__future__/Select/types.d.ts +0 -22
- package/dist/types/__future__/Workflow/_docs/controls/controls.d.ts +0 -2
- package/dist/types/__future__/Workflow/_docs/controls/index.d.ts +0 -1
- package/src/Tooltip/index.ts +0 -1
- /package/dist/cjs/{Tooltip → __overlays__/Tooltip/v1}/Tooltip.cjs +0 -0
- /package/dist/cjs/{Tooltip → __overlays__/Tooltip/v1}/subcomponents/AppearanceAnim.cjs +0 -0
- /package/dist/cjs/{Tooltip → __overlays__/Tooltip/v1}/utils/isSemanticElement.cjs +0 -0
- /package/dist/esm/{Tooltip → __overlays__/Tooltip/v1}/Tooltip.mjs +0 -0
- /package/dist/esm/{Tooltip → __overlays__/Tooltip/v1}/subcomponents/AppearanceAnim.mjs +0 -0
- /package/dist/esm/{Tooltip → __overlays__/Tooltip/v1}/utils/isSemanticElement.mjs +0 -0
- /package/dist/types/{Tooltip → __overlays__/Tooltip/v1}/Tooltip.d.ts +0 -0
- /package/dist/types/{Tooltip → __overlays__/Tooltip/v1}/subcomponents/AppearanceAnim.d.ts +0 -0
- /package/src/{Tooltip → __overlays__/Tooltip/v1}/Tooltip.spec.tsx +0 -0
- /package/src/{Tooltip → __overlays__/Tooltip/v1}/Tooltip.tsx +0 -0
- /package/src/{Tooltip → __overlays__/Tooltip/v1}/_variables.scss +0 -0
- /package/src/{Tooltip → __overlays__/Tooltip/v1}/subcomponents/AppearanceAnim.spec.tsx +0 -0
- /package/src/{Tooltip → __overlays__/Tooltip/v1}/subcomponents/AppearanceAnim.tsx +0 -0
- /package/src/{Tooltip → __overlays__/Tooltip/v1}/utils/isSemanticElement.spec.tsx +0 -0
- /package/src/{Tooltip → __overlays__/Tooltip/v1}/utils/isSemanticElement.tsx +0 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { Meta, StoryObj } from "@storybook/react"
|
|
3
|
+
import { expect, userEvent, waitFor, within } from "@storybook/test"
|
|
4
|
+
import isChromatic from "chromatic"
|
|
5
|
+
import { Button, IconButton } from "~components/Button"
|
|
6
|
+
import { AddIcon } from "~components/Icon"
|
|
7
|
+
import { Tab, TabList, TabPanel, TabPanels, Tabs } from "~components/Tabs"
|
|
8
|
+
import { Text } from "~components/Text"
|
|
9
|
+
import { Tag } from "~components/__future__/Tag"
|
|
10
|
+
import { Focusable } from "~components/__overlays__/v3"
|
|
11
|
+
import { Tooltip, TooltipTrigger } from "../index"
|
|
12
|
+
|
|
13
|
+
const meta = {
|
|
14
|
+
title: "Overlays/Tooltip/v3/Tests",
|
|
15
|
+
component: Tooltip,
|
|
16
|
+
parameters: {
|
|
17
|
+
layout: "centered",
|
|
18
|
+
},
|
|
19
|
+
args: {
|
|
20
|
+
defaultOpen: isChromatic(),
|
|
21
|
+
},
|
|
22
|
+
argTypes: {
|
|
23
|
+
// eslint-disable-next-line camelcase
|
|
24
|
+
UNSTABLE_portalContainer: {
|
|
25
|
+
control: false,
|
|
26
|
+
table: { disable: true },
|
|
27
|
+
},
|
|
28
|
+
triggerRef: { control: false },
|
|
29
|
+
},
|
|
30
|
+
} satisfies Meta<typeof Tooltip>
|
|
31
|
+
|
|
32
|
+
export default meta
|
|
33
|
+
|
|
34
|
+
type Story = StoryObj<typeof meta>
|
|
35
|
+
|
|
36
|
+
export const OnButton: Story = {
|
|
37
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
38
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
39
|
+
<Button label="Button" />
|
|
40
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
41
|
+
</TooltipTrigger>
|
|
42
|
+
),
|
|
43
|
+
play: async ({ canvasElement, step }) => {
|
|
44
|
+
const canvas = within(canvasElement.parentElement!)
|
|
45
|
+
const button = canvas.queryByRole("button") || canvas.getByRole("link")
|
|
46
|
+
|
|
47
|
+
await step("Hover shows", async () => {
|
|
48
|
+
await userEvent.unhover(button)
|
|
49
|
+
await userEvent.hover(button)
|
|
50
|
+
await waitFor(() => expect(canvas.getByRole("tooltip")).toBeVisible())
|
|
51
|
+
expect(button).toHaveAttribute(
|
|
52
|
+
"aria-describedby",
|
|
53
|
+
canvas.getByRole("tooltip").id
|
|
54
|
+
)
|
|
55
|
+
await userEvent.unhover(button)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
await step("Focus shows", async () => {
|
|
59
|
+
await userEvent.tab() // focus
|
|
60
|
+
await waitFor(() => expect(canvas.getByRole("tooltip")).toBeVisible())
|
|
61
|
+
await userEvent.tab() // unfocus
|
|
62
|
+
await waitFor(() => expect(canvas.queryByRole("tooltip")).toBeNull())
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
await step("Escape closes", async () => {
|
|
66
|
+
await userEvent.tab() // focus
|
|
67
|
+
await userEvent.keyboard("{Escape}")
|
|
68
|
+
await waitFor(() => expect(canvas.queryByRole("tooltip")).toBeNull())
|
|
69
|
+
await userEvent.tab() // unfocus
|
|
70
|
+
})
|
|
71
|
+
},
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export const OnLink: Story = {
|
|
75
|
+
...OnButton,
|
|
76
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
77
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
78
|
+
<Button label="Button" href="#" />
|
|
79
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
80
|
+
</TooltipTrigger>
|
|
81
|
+
),
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export const OnButtonWithDesc: Story = {
|
|
85
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
86
|
+
<>
|
|
87
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
88
|
+
<IconButton
|
|
89
|
+
label="(TESTING) Add label"
|
|
90
|
+
icon={<AddIcon role="presentation" />}
|
|
91
|
+
primary
|
|
92
|
+
aria-describedby="blah"
|
|
93
|
+
/>
|
|
94
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
95
|
+
</TooltipTrigger>
|
|
96
|
+
<Text variant="body" id="blah" classNameOverride="p-4">
|
|
97
|
+
This is target of aria-describedby
|
|
98
|
+
</Text>
|
|
99
|
+
</>
|
|
100
|
+
),
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export const OnIconButton: Story = {
|
|
104
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
105
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
106
|
+
<IconButton
|
|
107
|
+
label="Add something"
|
|
108
|
+
icon={<AddIcon role="presentation" />}
|
|
109
|
+
primary
|
|
110
|
+
// Negate the aria description (added by RAC) as it should be the
|
|
111
|
+
// same as the accessible name, therefore no need to duplicate it
|
|
112
|
+
aria-describedby={null}
|
|
113
|
+
/>
|
|
114
|
+
<Tooltip {...args}>Add something</Tooltip>
|
|
115
|
+
</TooltipTrigger>
|
|
116
|
+
),
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export const OnDisabledButton: Story = {
|
|
120
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
121
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
122
|
+
<Button label="Button" disabled />
|
|
123
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
124
|
+
</TooltipTrigger>
|
|
125
|
+
),
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export const OnCustomButtonAnchor: Story = {
|
|
129
|
+
name: "On Button with custom <a>",
|
|
130
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
131
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
132
|
+
<Button
|
|
133
|
+
label="Button"
|
|
134
|
+
component={props => (
|
|
135
|
+
// eslint-disable-next-line jsx-a11y/anchor-is-valid
|
|
136
|
+
<a {...props} href="#" style={{ padding: "0 1rem" }}>
|
|
137
|
+
Custom Link
|
|
138
|
+
</a>
|
|
139
|
+
)}
|
|
140
|
+
/>
|
|
141
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
142
|
+
</TooltipTrigger>
|
|
143
|
+
),
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export const OnCustomButton: Story = {
|
|
147
|
+
...OnButton,
|
|
148
|
+
name: "On Button with custom <button>",
|
|
149
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
150
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
151
|
+
<Button
|
|
152
|
+
label="Button"
|
|
153
|
+
component={props => <button type="button" {...props} />}
|
|
154
|
+
/>
|
|
155
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
156
|
+
</TooltipTrigger>
|
|
157
|
+
),
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export const OnCustomFocusableElement: Story = {
|
|
161
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
162
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
163
|
+
<Focusable>
|
|
164
|
+
<Tag>Non-interactive element</Tag>
|
|
165
|
+
</Focusable>
|
|
166
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
167
|
+
</TooltipTrigger>
|
|
168
|
+
),
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export const OnTabs: Story = {
|
|
172
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
173
|
+
<Tabs>
|
|
174
|
+
<TabList aria-label="Tabs">
|
|
175
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
176
|
+
<Tab>Tab 1</Tab>
|
|
177
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
178
|
+
</TooltipTrigger>
|
|
179
|
+
</TabList>
|
|
180
|
+
<TabPanels>
|
|
181
|
+
<TabPanel classNameOverride="p-24 font-family-paragraph">
|
|
182
|
+
Tab content
|
|
183
|
+
</TabPanel>
|
|
184
|
+
</TabPanels>
|
|
185
|
+
</Tabs>
|
|
186
|
+
),
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export const Placement: Story = {
|
|
190
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
191
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
192
|
+
<Button label="Button" />
|
|
193
|
+
<Tooltip {...args} placement="top" shouldFlip={false}>
|
|
194
|
+
Placement top
|
|
195
|
+
</Tooltip>
|
|
196
|
+
<Tooltip {...args} placement="end" shouldFlip={false}>
|
|
197
|
+
Placement end
|
|
198
|
+
</Tooltip>
|
|
199
|
+
<Tooltip {...args} placement="bottom" shouldFlip={false}>
|
|
200
|
+
Placement bottom
|
|
201
|
+
</Tooltip>
|
|
202
|
+
<Tooltip {...args} placement="start" shouldFlip={false}>
|
|
203
|
+
Placement start
|
|
204
|
+
</Tooltip>
|
|
205
|
+
</TooltipTrigger>
|
|
206
|
+
),
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export const ReversedColors: Story = {
|
|
210
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
211
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
212
|
+
<Button label="Button" />
|
|
213
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
214
|
+
</TooltipTrigger>
|
|
215
|
+
),
|
|
216
|
+
parameters: {
|
|
217
|
+
reverseColors: true,
|
|
218
|
+
},
|
|
219
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { Meta, composeStories } from "@storybook/react"
|
|
3
|
+
import { ReversedColors } from "~components/__utilities__/v3"
|
|
4
|
+
import { StickerSheetStory } from "~storybook/components/StickerSheet"
|
|
5
|
+
import { mergeClassNames } from "~utils/mergeClassNames"
|
|
6
|
+
import * as testStories from "./Tooltip.spec.stories"
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
title: "Overlays/Tooltip/v3/Tests",
|
|
10
|
+
parameters: {
|
|
11
|
+
chromatic: { disable: false },
|
|
12
|
+
controls: { disable: true },
|
|
13
|
+
},
|
|
14
|
+
} satisfies Meta
|
|
15
|
+
|
|
16
|
+
const Stories = composeStories(testStories)
|
|
17
|
+
|
|
18
|
+
export const Standard: StickerSheetStory = {
|
|
19
|
+
name: "Sticker Sheet (Default)",
|
|
20
|
+
render: args => (
|
|
21
|
+
<div className="grid gap-x-128 gap-y-128 grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
|
|
22
|
+
{Object.values(Stories).map((Story, index) => (
|
|
23
|
+
<div
|
|
24
|
+
key={index}
|
|
25
|
+
className={mergeClassNames(
|
|
26
|
+
"flex items-center justify-center min-h-[10rem]",
|
|
27
|
+
Story.parameters.reverseColors ? "bg-purple-700" : ""
|
|
28
|
+
)}
|
|
29
|
+
>
|
|
30
|
+
<ReversedColors isReversed={!!Story.parameters.reverseColors}>
|
|
31
|
+
<Story {...args} defaultOpen={true} />
|
|
32
|
+
</ReversedColors>
|
|
33
|
+
</div>
|
|
34
|
+
))}
|
|
35
|
+
</div>
|
|
36
|
+
),
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const StickerSheetRTL: StickerSheetStory = {
|
|
40
|
+
...Standard,
|
|
41
|
+
name: "Sticker Sheet (RTL)",
|
|
42
|
+
parameters: {
|
|
43
|
+
...Standard.parameters,
|
|
44
|
+
textDirection: "rtl",
|
|
45
|
+
},
|
|
46
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, { FunctionComponent } from "react"
|
|
2
|
+
import { Meta, StoryObj } from "@storybook/react"
|
|
3
|
+
import isChromatic from "chromatic"
|
|
4
|
+
import { Button } from "~components/Button"
|
|
5
|
+
import { Tag } from "~components/__future__"
|
|
6
|
+
import { Focusable } from "~components/__overlays__/v3"
|
|
7
|
+
import { Tooltip, TooltipTrigger } from "../index"
|
|
8
|
+
import * as testStories from "./Tooltip.spec.stories"
|
|
9
|
+
|
|
10
|
+
const meta = {
|
|
11
|
+
title: "Overlays/Tooltip/v3",
|
|
12
|
+
component: Tooltip,
|
|
13
|
+
parameters: {
|
|
14
|
+
layout: "centered",
|
|
15
|
+
},
|
|
16
|
+
args: {
|
|
17
|
+
defaultOpen: isChromatic(),
|
|
18
|
+
},
|
|
19
|
+
subcomponents: { TooltipTrigger } as Record<string, FunctionComponent<any>>,
|
|
20
|
+
argTypes: {
|
|
21
|
+
// eslint-disable-next-line camelcase
|
|
22
|
+
UNSTABLE_portalContainer: {
|
|
23
|
+
control: false,
|
|
24
|
+
table: { disable: true },
|
|
25
|
+
},
|
|
26
|
+
triggerRef: { control: false },
|
|
27
|
+
},
|
|
28
|
+
} satisfies Meta<typeof Tooltip>
|
|
29
|
+
|
|
30
|
+
export default meta
|
|
31
|
+
|
|
32
|
+
type Story = StoryObj<typeof meta>
|
|
33
|
+
|
|
34
|
+
export const Playground: Story = {
|
|
35
|
+
render: ({ defaultOpen: _, isOpen, ...args }) => (
|
|
36
|
+
<TooltipTrigger defaultOpen={true} isOpen={isOpen}>
|
|
37
|
+
<Button label="Button" />
|
|
38
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
39
|
+
</TooltipTrigger>
|
|
40
|
+
),
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const OnButton: Story = { ...testStories.OnButton, play: undefined }
|
|
44
|
+
export const OnLink: Story = { ...testStories.OnLink, play: undefined }
|
|
45
|
+
export const OnIconButton: Story = {
|
|
46
|
+
...testStories.OnIconButton,
|
|
47
|
+
play: undefined,
|
|
48
|
+
}
|
|
49
|
+
export const Placement: Story = {
|
|
50
|
+
...testStories.OnButton,
|
|
51
|
+
play: undefined,
|
|
52
|
+
args: { placement: "end" },
|
|
53
|
+
}
|
|
54
|
+
export const OnTabs: Story = {
|
|
55
|
+
...testStories.OnTabs,
|
|
56
|
+
play: undefined,
|
|
57
|
+
}
|
|
58
|
+
export const OnCustomFocusableElement: Story = {
|
|
59
|
+
render: ({ defaultOpen, isOpen, ...args }) => (
|
|
60
|
+
<TooltipTrigger defaultOpen={defaultOpen} isOpen={isOpen}>
|
|
61
|
+
<Focusable>
|
|
62
|
+
<Tag>Non-interactive element</Tag>
|
|
63
|
+
</Focusable>
|
|
64
|
+
<Tooltip {...args}>Tooltip content</Tooltip>
|
|
65
|
+
</TooltipTrigger>
|
|
66
|
+
),
|
|
67
|
+
play: undefined,
|
|
68
|
+
}
|
|
69
|
+
export const OnReversed: Story = {
|
|
70
|
+
...testStories.ReversedColors,
|
|
71
|
+
play: undefined,
|
|
72
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Tooltip/v1"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "react-aria-components"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "react-aria"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { ReactNode } from "react"
|
|
2
|
+
|
|
3
|
+
export type ReversedColorsProps = {
|
|
4
|
+
children: ReactNode
|
|
5
|
+
isReversed?: boolean
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const ReversedColorsContext = React.createContext<boolean>(false)
|
|
9
|
+
|
|
10
|
+
export const useReversedColors = (): boolean =>
|
|
11
|
+
React.useContext(ReversedColorsContext)
|
|
12
|
+
|
|
13
|
+
export const ReversedColors = ({
|
|
14
|
+
children,
|
|
15
|
+
isReversed = true,
|
|
16
|
+
}: ReversedColorsProps): JSX.Element => (
|
|
17
|
+
<ReversedColorsContext.Provider value={isReversed}>
|
|
18
|
+
{children}
|
|
19
|
+
</ReversedColorsContext.Provider>
|
|
20
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ReversedColors"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ReversedColors/v3"
|
package/src/index.ts
CHANGED
|
@@ -56,8 +56,8 @@ export * from "./Tile"
|
|
|
56
56
|
export * from "./TimeField"
|
|
57
57
|
export * from "./TitleBlockZen"
|
|
58
58
|
export * from "./ToggleSwitch"
|
|
59
|
-
export * from "./Tooltip"
|
|
60
59
|
export * from "./utils"
|
|
61
60
|
export * from "./VisuallyHidden"
|
|
62
61
|
export * from "./Well"
|
|
63
62
|
export * from "./Workflow"
|
|
63
|
+
export * from "./__overlays__/Tooltip/v1"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import classnames from "classnames"
|
|
2
|
+
|
|
3
|
+
type ClassNameValue = string | number | boolean | undefined | null
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Helper to merge classnames together with support for functions that receive state (render props).
|
|
7
|
+
* This is useful when working with react-aria-components which have a feature where you can pass a function that receives state and returns a classname.
|
|
8
|
+
* https://react-spectrum.adobe.com/react-aria/styling.html#render-props
|
|
9
|
+
*/
|
|
10
|
+
export const mergeClassNames = <
|
|
11
|
+
ClassNameTypes extends Array<ClassNameValue | ((state: any) => string)>,
|
|
12
|
+
>(
|
|
13
|
+
...classNames: ClassNameTypes
|
|
14
|
+
): (() => string) extends ClassNameTypes[number]
|
|
15
|
+
? (state: any) => string
|
|
16
|
+
: string => {
|
|
17
|
+
const containsFunction = classNames.some(
|
|
18
|
+
className => typeof className === "function"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
// "as any" is used because TS is not smart enough to know that containsFunction means that ClassNameType doesn't extend Function
|
|
22
|
+
if (!containsFunction)
|
|
23
|
+
return classnames(...(classNames as ClassNameValue[])) as any
|
|
24
|
+
|
|
25
|
+
// "as any" is used because TS is not smart enough to know that containsFunction means that ClassNameType doesn't extend Function
|
|
26
|
+
return ((state: any) =>
|
|
27
|
+
classnames(
|
|
28
|
+
...(classNames.map(className =>
|
|
29
|
+
typeof className === "function" ? className(state) : className
|
|
30
|
+
) as ClassNameValue[])
|
|
31
|
+
)) as any
|
|
32
|
+
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var styles = {
|
|
4
|
-
"tooltip": "Tooltip-module_tooltip__NMZ65",
|
|
5
|
-
"tooltipContent": "Tooltip-module_tooltipContent__7vVkT",
|
|
6
|
-
"default": "Tooltip-module_default__lCIk7",
|
|
7
|
-
"informative": "Tooltip-module_informative__cgZuq",
|
|
8
|
-
"positive": "Tooltip-module_positive__xe7nM",
|
|
9
|
-
"cautionary": "Tooltip-module_cautionary__xoU2V",
|
|
10
|
-
"highlight": "Tooltip-module_highlight__bmY0r",
|
|
11
|
-
"arrow": "Tooltip-module_arrow__fL2PX",
|
|
12
|
-
"arrowInner": "Tooltip-module_arrowInner__knDLR",
|
|
13
|
-
"arrowMain": "Tooltip-module_arrowMain__KidE0",
|
|
14
|
-
"arrowShadow": "Tooltip-module_arrowShadow__Se33a",
|
|
15
|
-
"displayInline": "Tooltip-module_displayInline__HkfUK",
|
|
16
|
-
"displayBlock": "Tooltip-module_displayBlock__WswRy",
|
|
17
|
-
"displayInlineBlock": "Tooltip-module_displayInlineBlock__d6X3l",
|
|
18
|
-
"displayFlex": "Tooltip-module_displayFlex__DZdVc",
|
|
19
|
-
"displayInlineFlex": "Tooltip-module_displayInlineFlex__quEIM"
|
|
20
|
-
};
|
|
21
|
-
module.exports = styles;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
var styles = {
|
|
2
|
-
"tooltip": "Tooltip-module_tooltip__NMZ65",
|
|
3
|
-
"tooltipContent": "Tooltip-module_tooltipContent__7vVkT",
|
|
4
|
-
"default": "Tooltip-module_default__lCIk7",
|
|
5
|
-
"informative": "Tooltip-module_informative__cgZuq",
|
|
6
|
-
"positive": "Tooltip-module_positive__xe7nM",
|
|
7
|
-
"cautionary": "Tooltip-module_cautionary__xoU2V",
|
|
8
|
-
"highlight": "Tooltip-module_highlight__bmY0r",
|
|
9
|
-
"arrow": "Tooltip-module_arrow__fL2PX",
|
|
10
|
-
"arrowInner": "Tooltip-module_arrowInner__knDLR",
|
|
11
|
-
"arrowMain": "Tooltip-module_arrowMain__KidE0",
|
|
12
|
-
"arrowShadow": "Tooltip-module_arrowShadow__Se33a",
|
|
13
|
-
"displayInline": "Tooltip-module_displayInline__HkfUK",
|
|
14
|
-
"displayBlock": "Tooltip-module_displayBlock__WswRy",
|
|
15
|
-
"displayInlineBlock": "Tooltip-module_displayInlineBlock__d6X3l",
|
|
16
|
-
"displayFlex": "Tooltip-module_displayFlex__DZdVc",
|
|
17
|
-
"displayInlineFlex": "Tooltip-module_displayInlineFlex__quEIM"
|
|
18
|
-
};
|
|
19
|
-
export { styles as default };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { AvatarGroupAvatarProps, AvatarList } from "../AvatarGroup";
|
|
2
|
-
export declare const EXAMPLE_USER_1: AvatarGroupAvatarProps;
|
|
3
|
-
export declare const EXAMPLE_USER_2: AvatarGroupAvatarProps;
|
|
4
|
-
export declare const EXAMPLE_USER_3: AvatarGroupAvatarProps;
|
|
5
|
-
export declare const EXAMPLE_USER_4: AvatarGroupAvatarProps;
|
|
6
|
-
export declare const EXAMPLE_USER_5: AvatarGroupAvatarProps;
|
|
7
|
-
export declare const EXAMPLE_USER_6: AvatarGroupAvatarProps;
|
|
8
|
-
export declare const AVATARS: AvatarList;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { FilterAttributes, FilterIsUsableWhen, FiltersValues } from "../types";
|
|
2
|
-
export type MappedFilters<ValuesMap extends FiltersValues> = {
|
|
3
|
-
[K in keyof ValuesMap]: FilterAttributes<ValuesMap, K>;
|
|
4
|
-
};
|
|
5
|
-
export type FilterStateEditableAttributes = {
|
|
6
|
-
isOpen: boolean;
|
|
7
|
-
};
|
|
8
|
-
export type InternalFilterState<ValuesMap extends FiltersValues, Id extends keyof ValuesMap> = {
|
|
9
|
-
id: Id;
|
|
10
|
-
name: string;
|
|
11
|
-
isRemovable: boolean;
|
|
12
|
-
isUsableWhen?: FilterIsUsableWhen<ValuesMap>;
|
|
13
|
-
isUsable: boolean;
|
|
14
|
-
isOpen: boolean;
|
|
15
|
-
value?: never;
|
|
16
|
-
isActive?: never;
|
|
17
|
-
};
|
|
18
|
-
export type FilterBarStateFilters<ValuesMap extends FiltersValues> = {
|
|
19
|
-
[K in keyof ValuesMap]: InternalFilterState<ValuesMap, K>;
|
|
20
|
-
};
|
|
21
|
-
export type FilterBarState<ValuesMap extends FiltersValues> = {
|
|
22
|
-
hasUpdatedValues: boolean;
|
|
23
|
-
filters: FilterBarStateFilters<ValuesMap>;
|
|
24
|
-
activeFilterIds: Set<keyof ValuesMap>;
|
|
25
|
-
values: Partial<ValuesMap>;
|
|
26
|
-
dependentFilterIds: Set<keyof ValuesMap>;
|
|
27
|
-
};
|
|
28
|
-
export type ActiveFiltersArray<ValuesMap extends FiltersValues> = Array<FilterAttributes<ValuesMap>>;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ItemType } from "../types";
|
|
2
|
-
export declare const mockItems: ItemType[];
|
|
3
|
-
export declare const departmentDemographicValues: {
|
|
4
|
-
demographicValueId: string;
|
|
5
|
-
label: string;
|
|
6
|
-
}[];
|
|
7
|
-
export declare const locationDemographicValues: {
|
|
8
|
-
demographicValueId: string;
|
|
9
|
-
label: string;
|
|
10
|
-
}[];
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { SelectItem } from "../types";
|
|
2
|
-
export declare const singleMockItems: SelectItem[];
|
|
3
|
-
export declare const groupedMockItems: SelectItem[];
|
|
4
|
-
export declare const mixedMockItemsDisabled: SelectItem[];
|
|
5
|
-
export declare const mixedMockItemsUngroupedFirst: SelectItem[];
|
|
6
|
-
export declare const mixedMockItemsUnordered: SelectItem[];
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
type MenuContentExampleProps = {
|
|
2
|
-
isShortList?: boolean;
|
|
3
|
-
};
|
|
4
|
-
/**
|
|
5
|
-
* This is an mocked example of a Menu's children using all of the subcomponents.
|
|
6
|
-
*/
|
|
7
|
-
export declare const MenuContentExample: ({ isShortList, }: MenuContentExampleProps) => JSX.Element;
|
|
8
|
-
export {};
|